第8週目のPythonミニアプリ発表会を終え、受講生のプログラムは少しずつ長くなってきました。
第9週目は、関数を別のファイルへ分けて呼び出す「モジュール化」を通じて、コードを役割ごとに整理する方法を学びました。
今回の到達点は、ファイル数を増やすことではありません。
どの処理をどこへ置くかを決め、必要な部品を正しく呼び出せる状態にすることです。
一つのファイルに書き続けると何が困るのか
「みんな、先週の発表でコードがちょっと長くなってきたと感じませんでしたか?今日はその“ごちゃごちゃ”をすっきり整理する方法を紹介します」
田中先生
先生は、キッチンの道具を一つの箱へ詰め込むと必要なものを探しにくくなる例を挙げ、プログラムにも整理が必要だと説明しました。
コードが短いうちは、一つのファイルでも全体を追えます。
しかし、入力、計算、表示などの処理が増えると、修正する場所を探しにくくなります。
分割の目安は、単純な行数ではなく処理の役割です。
同じ目的を持つ処理をまとめると、読む人がファイル名から担当範囲を予想しやすくなります。
Pythonのモジュールとは
モジュールとは、関数や変数などをまとめ、ほかのPythonファイルから読み込めるようにしたファイルです。
今回の実習では、第6週目に学んだPythonの関数を別ファイルへ移し、importで呼び出しました。
greeting.pyに関数を置く
def say_hello(name):
print(name + "さん、こんにちは!")
main.pyから関数を呼び出す
import greeting
greeting.say_hello("山田")
import greetingは、greeting.pyをモジュールとして読み込む文です。
続くgreeting.say_helloは、「greetingモジュールにあるsay_hello関数を使う」という関係を表します。
この例を実行すると、次の内容が表示されます。
山田さん、こんにちは!
「うわ、こんな分け方できるんだ!」
「なんかプロっぽい!」
受講生の声
ミニアプリを三つの役割に分ける
次の実習では、先週作ったミニアプリを処理、入出力、実行制御の役割に分けました。
授業で扱った構成は次のとおりです。
| ファイル | 担当する役割 | 置く処理の例 |
|---|---|---|
logic.py |
計算や判定 | 計算処理、診断ロジック |
ui.py |
入力と表示 | 入力の受け取り、メッセージの表示 |
main.py |
実行と制御 | 各モジュールを呼び出し、処理の順序を整える |
この構成では、main.pyがプログラムを開始し、必要に応じてui.pyとlogic.pyの処理を呼び出します。
表示を直すならui.py、計算方法を直すならlogic.pyというように、確認する場所を絞りやすくなります。
「分けるとコードが読みやすくなるし、ミスも減った気がする」
受講生C
ただし、ファイルを分けるだけで読みやすさが決まるわけではありません。
各ファイルの役割が重ならず、名前から中身を想像できることも必要です。
分割後に確認する手順
課題は、自分のプログラムを三つ以上のファイルに整理し、正しく動かすことでした。
「三つ以上」は今回の実習条件であり、どのプログラムにも同じ数が適するという意味ではありません。
main.pyを実行し、分割前と同じ操作ができるか確認する。importで指定した名前と、読み込むファイル名が一致しているか確認する。- 別ファイルへ移した関数を、モジュール名を付けて呼び出せているか確認する。
- 入力、計算、表示の処理が、決めた役割のファイルに収まっているか読み直す。
importでエラーが出たときは、ファイル名、ファイルの置き場所、import文のつづりを一つずつ確認します。
受講生もエラーに苦戦しましたが、原因を直して動作させるところまで取り組みました。
「最初はエラーだらけだったけど、動いた時めっちゃ気持ちいい」
受講生D
モジュール化がチーム開発につながる理由
「モジュール化は“人と一緒に作る”ための準備でもあります。今後チームで開発するとき、こうした分け方ができているかどうかがとても大切になります」
田中先生
役割ごとにコードが分かれていると、変更する範囲や確認する対象を共有しやすくなります。
一人で書いたプログラムを、ほかの人が読める形へ整える練習でもあります。
この学びは、次の第10週目で扱うコードレビューへ続きます。
ほかの人のコードを読み、改善点を伝えるためにも、ファイルと関数の役割が読み取れることが助けになります。
第9週目のまとめ
- モジュールは、関数などをまとめてほかのファイルから読み込めるPythonファイルである。
importを使うと、別ファイルに置いた関数を呼び出せる。- 処理を役割ごとに分けると、読む場所や修正する場所を絞りやすくなる。
- 分割後は、実行結果と
importの関係を一つずつ確認する。
コードを書けるようになった次の段階は、あとから読み、直し、ほかの人と共有できる形へ整えることです。
今回の実習では、関数を動かす技術と、プログラム全体を見通す設計の考え方が結び付きました。
この記事に関連する株式会社greedenの取り組み
コードを役割ごとに分ける学びは、保守しやすいWebシステムづくりの出発点です。
株式会社greedenは、要件定義から設計、実装、テスト、保守と改善まで一気通貫でWebシステム開発を支援します。
