モジュールと標準ライブラリ

INPUT · スライド

1つのファイルがふくらんでいく

01 / 06

ずっと1つのファイルに書いてきた

ここまでのプログラムは、いつも1つのファイルの中で完結していた。短いうちは、それがいちばん楽だよね。

でも実際のプログラムは1ファイルには収まらない。関数が10個、クラスが3つ、データの用意に判定に表示…と積み上がっていく。数千行のファイルは、書いた本人でも目的の場所を見つけられないんだ。

02 / 06

全部入りのファイルを見てみる

下は「値段のデータ」「合計の計算」「画面への表示」が同居している例。まだ10行ほどだけど、もう役割が3つ混ざっているのが分かるかな。

短いうちは、混ざっていても読める。困るのはここからだよ。

nedans = [120, 80, 250]goukei = 0for n in nedans:    goukei += nfor n in nedans:    print(f"- {n}円")print(f"ごうけい{goukei}円")

実行結果

- 120円
- 80円
- 250円
ごうけい450円

03 / 06

困るのは書くときじゃなく、直すとき

大きいファイルがつらくなるのは、あとから手を入れるときだよ。

  • 直したい場所を探すのに、関係ないコードまで目を通すことになる
  • 似た名前をつけてしまい、うっかり前の変数を上書きする
  • ほかのプログラムでも使いたい処理があっても、まるごとコピーするしかない

書いた本人でも、1週間たてば忘れている。ファイルが大きいほど、思い出すのに時間がかかるんだ。

04 / 06

行数ではなく役割で切る

では、どこで切ればいいんだろう。「100行を超えたら切る」ではなくて、役割で切るのがコツだよ。さっきの例なら3つに分けられるね。

  • データ … 値段そのもの
  • 計算 … 合計を出す処理
  • 表示 … 画面に出す処理

まずは関数に分けてみる。名前を読めば中身が想像できるところまで分けられたら十分だよ。

def goukei(nedans):    kotae = 0    for n in nedans:        kotae += n    return kotaedef hyouji(nedans):    for n in nedans:        print(f"- {n}円")nedans = [120, 80, 250]hyouji(nedans)print(f"ごうけい{goukei(nedans)}円")

実行結果

- 120円
- 80円
- 250円
ごうけい450円

05 / 06

コピーは2か所直すはめになる

合計を出す処理は、買い物でも、テストの点数でも使える。でも1つのファイルに書きこんでしまうと、ほかのプログラムで使うにはコピーするしかない。

コピーは楽だけれど、まちがいが見つかったときに両方を直さないといけない。片方だけ直して食いちがうのが、いちばん見つけにくいバグだよ。

「1か所に置いて、どこからでも呼ぶ」ができれば、この悩みはまるごと消える。

06 / 06

タブが2枚に増える

ここからの演習では、エディタの上にファイルのタブが2枚並ぶよ。タップで切り替えられる。

実行ボタンを押したときに動きはじめるのは、いつも main.py のほう。もう1枚は、次のレッスンで中身をうつす置き場だよ。いまは空のままでいい。

まずは main.py の中で、役割ごとの関数に分ける練習をしよう。切り分けさえできていれば、ファイルを分けるのはすぐ終わるからね。