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章 — mapfiltersortedkey で抽出と変換をつないだ
  • 第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件、この家計簿に入れてみてください。

生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア
編集 LuaGate編集部