タスクを分割する
大きい依頼はなぜ外れるか
要件も受け入れ条件も書いたのに、返ってきたものが的外れ。この原因は依頼が大きすぎることが多いです。
プレーンテキスト
月次レポート機能を作って。カテゴリ別集計と予算判定と表示整形を含めて。一見すると丁寧ですが、これは3つの仕事です。AI は3つ全部を一度に書き、あなたは3つ全部を一度にレビューすることになります。1つ目の集計の設計が気に入らなければ、その上に乗った2つ目と3つ目も無駄になります。
やり直しの単位が大きいほど、外れたときの損が大きい。 これが分割する理由です。
検証できる単位で切る
切り方の基準は1つだけです。それ単体で動かして確かめられるか。
プレーンテキスト
良い切り方 1 カテゴリ別に集計する関数
2 予算オーバーを判定する関数
3 結果を1行の文字列に整形する関数
悪い切り方 1 前半を書く
2 後半を書く下は途中で動かせません。1が終わった時点で何も確かめられないので、分割した意味がありません。
上なら、1つ目が終わった時点で実行して結果を見られます。おかしければそこで止まります。
順番に依頼する
分けたら、1つずつ頼みます。まとめて3つ渡すと、結局まとめて返ってきます。
プレーンテキスト
1回目 カテゴリ別に集計する関数を作って。(動かして確認)
2回目 その結果を受け取って予算判定する関数を作って。(動かして確認)
3回目 判定結果を1行の文字列にする関数を作って。(動かして確認)各回のあいだに、必ず動かす時間を挟んでください。ここを飛ばすと、分割しているのに一括依頼と同じ危うさになります。
依存の向きを揃える
分けるときは、後のタスクが前のタスクに依存する形にします。逆向きの依存が混ざると、順に進められません。
プレーンテキスト
集計 → 判定 → 整形この向きなら、前が確定してから次に進めます。整形が集計の中身に口を出す設計だと、行ったり来たりが発生します。
練習
今回は3つ目の整形にあたる関数を書きます。前の2回で作った集計と判定の結果を、人が読む1行にします。
区切り文字や並び順、金額の書き方まで指定しないと通りません。小さいタスクほど条件は細かく書けるという感覚をつかんでください。
完成条件
- 触ってよいのは kakeibo.py だけです
- 並び順は合計金額の大きい順です
- 1件は「食費 1200円」の形、区切りは読点だけで、後ろに空白は入れません
- 空の辞書のときは「支出なし」という文字列を返します