知らないコードを解説させる
初見のコードは「地図」から作る
他人が書いたコードを渡されたとき、上から順に読むのはいちばん遅いやり方です。先に地図を作ります。AI に頼むと数十秒で出てきます。
プレーンテキスト
このファイルにある関数を一覧にして、それぞれ1行で何をするかを書いてください。
どの関数がどの関数を呼んでいるかも教えてください。呼び出し関係が分かると、どこが入口でどこが部品かが見えます。入口の関数から読めば、細かい部品は必要になったときだけ読めば済みます。
質問は具体的にする
プレーンテキスト
悪い このコードを説明して
良い この関数に空のリストを渡すと何が返りますか
良い 金額が負の数のとき、どこで弾かれますか「説明して」だと、コードをなぞっただけの文章が返ってきます。読めば分かることを日本語にしただけで、理解は進みません。
知りたいのはたいてい境界と例外の振る舞いです。空のとき、1件のとき、想定外の値が来たとき。そこを名指しで聞くと、コードのどこに何が書いてあるかが自然に分かります。
説明を鵜呑みにしない
AI の説明は、もっともらしい嘘を含むことがあります。特に「この関数は入力を検証しています」のような、あってほしい機能は捏造されやすい部類です。
確かめ方は単純で、根拠の行を示させることです。
プレーンテキスト
その説明の根拠になっている行を、そのまま引用してください。引用できないなら、その説明は怪しいと判断します。引用された行を自分で読めば、5秒で真偽が分かります。
理解できたかは直せるかで測る
コードを理解したかどうかは、読んだ感触では測れません。1か所直せたら理解できている、が確実な基準です。
初見のコードに手を入れる順番は次のとおりです。まず地図を作り、次に直す予定の関数だけを詳しく読み、それから小さく直します。いきなり直しはじめると、その関数を誰が呼んでいるかを知らないまま壊します。
今回の演習
他の人が書いたおこづかい帳の集計コードが渡されました。複数の関数が絡んでいます。
まず AI に地図を作らせて、monthly_report が何を返す関数なのかを掴んでください。そのうえで、月の絞り込みが効いていない箇所を1つ直させます。読まずに直そうとすると、どの関数を触ればいいのか分かりません。
完成条件
- 触ってよいのは kakeibo.py だけです
- 先に全体の地図を作らせてから、直す場所を決めてください
- monthly_report 関数の戻り値で採点します