任せる/書くの境界
境界は好みではなく検証コストで決まる
ここまでで、任せてうまくいった場面と、自分で書いた方が速かった場面の両方を経験したはずです。今回はその判断を言葉にして基準に変えます。
判断の軸は「難しいかどうか」ではありません。正しさを確かめるのにどれだけかかるかです。
プレーンテキスト
任せる 合っているかを、実行かテストで数秒で確かめられる
書く 合っているかを、確かめるのに読み込みが要る難しい処理でも、入力と出力がはっきりしていればテストで一発で判定できます。逆に簡単な処理でも、正解が自分の頭の中にしか無いものは、返ってきたコードを1行ずつ読むしかありません。
任せてよいもの
次の3つは任せた方が速いです。
プレーンテキスト
形が決まっている 集計、整形、変換
答えが1つに決まる 境界値のテストを書く
量が多い 似た処理を10か所直す共通するのは、期待する結果を先に書けることです。期待値が書けるなら、それはそのままテストになります。テストがあるなら、AI の出力を読まずに判定できます。
自分で書くべきもの
プレーンテキスト
仕様が自分の頭の中にしかない
業務の都合で例外が多い
間違えたときの影響が大きい (お金、削除、外部送信)1つ目が特に多く出ます。おこづかい帳で「食費の中の外食だけ別扱いにしたい」は、あなたの家計の都合です。AI は一般的な家計簿の常識で埋めますが、その常識はあなたのものではありません。指示を書くのに10分かかるなら、自分で書いた方が速い。 これは負けではなく正しい判断です。
中間もある
全部任せるか全部書くかの二択ではありません。よく効く形は次のとおりです。
プレーンテキスト
自分 関数の名前と引数と戻り値を決める、テストを書く
AI 中身を埋める境界の設計だけ自分でやると、任せられる範囲が一気に広がります。境界が決まっていれば、中身が気に入らなくても捨てて頼み直すのが簡単だからです。
演習
中間の形を実際にやります。判定の基準は自分で決め、実装だけを任せます。 カテゴリごとの合計から、支出が多い順に並べたリストを返す関数です。同点のときにどうするかは、あなたが決めて指示に書いてください。決めなければ AI が決めます。
完成条件
- 触ってよいのは kakeibo.py だけです
- 戻り値は [[カテゴリ名, 合計], ...] のリストのリストにしてください
- 同じ金額のときの並び順まで指示に書いてください
- rankCategories 関数の戻り値で採点します