Python中級 内包表記・高階関数・クラス入門
完成と次のステップ
このレッスンでできるようになること
作り上げた家計簿ツール v2 を振り返り、次にどの方向へ進むかを自分で選べるようになります。
何が変わったか
入門で作った家計簿は、1本のファイルに全部が入っていました。今の姿は次のとおりです。
kakeibo/
__init__.py
models.py Expense クラス
report.py 月次レポート v2 と予算アラート
storage.py JSON での保存と読み込み
main.py
check.py assert による動作チェック道具ごとに、8章ぶんの積み上げを並べると次のようになります。
- 第1章 — 機能を責務でファイルに分けた
- 第2章 — タプルと
Counterで、データの持ち方を選べるようにした - 第3章 — 集計のループを内包表記で書き直した
- 第4章 —
mapやfilter、sortedのkeyで抽出と変換をつないだ - 第5章 — 例外を設計し、どこで投げてどこで捕まえるかを決めた
- 第6章 — CSV から JSON へ、保存の形式を移行した
- 第7章 — 辞書を
Expenseクラスに置き換えた
機能が増えただけではなく、同じ機能をより良い形に書き直したという点が中級の中身です。現場のコードは、書く時間より読む時間と直す時間のほうが長くなります。書き直せることは、書けることと同じくらいの武器になります。
手元でもう一度動かしてみてください
この学習環境ではファイルを1本しか置けませんでした。手元のパソコンに Python を入れて、本当にフォルダを分けて置き直してみると、理解が固まります。
from kakeibo.models import Expense
from kakeibo.report import monthly_report
expenses = [Expense("スーパー", 3200, "食費", "2026-08-01")]
for line in monthly_report(expenses, "2026-08"):
print(line)自分の実際の支出を入れてみるのが一番です。使ってみると、必ず欲しい機能が出てきます。そのときに前のレッスンでやった「入力と出力を先に決める」を思い出してください。
次に進む道
ここから先は、目的によって道が分かれます。
Web 開発へ進む — 家計簿をブラウザから使えるようにする方向です。Flask や FastAPI といった枠組みを使うと、今の report.py の関数をそのまま呼び出す形で画面が作れます。クラスとモジュールで整理してあることが、そのまま効いてきます。
データ分析へ進む — 支出データをもっと深く見る方向です。pandas を使うと、今回 Counter と内包表記で書いた集計が1行で書けます。ただし内側で何をしているかを知らずに使うと、結果の妥当性を判断できません。この8章はその下地です。
自動化へ進む — 銀行やカードの明細を自動で取り込む方向です。第6章の CSV と JSON、第5章の例外設計が土台になります。壊れたデータが来たときにどう振る舞うかを設計できることが、自動化では特に大事になります。
基礎を固める — アルゴリズムやコンピュータサイエンスの理論へ進む道もあります。計算量やデータ構造を知ると、「なぜ Counter は速いのか」といった問いに答えられるようになります。
どの道を選んでも、共通して効いてくるのは今回身に付けた3つです。責務でファイルを分けること、値を返す関数にすること、動作をコードで確かめること。この3つを持っている人が書いたコードは、半年後の自分にも読めます。
お疲れさまでした。まずは今日、自分の支出を1件、この家計簿に入れてみてください。