AIに複数手のかかる仕事をさせるとき、先に全体の段取りを決めてから動くか、1手ずつその場で考えるかで進め方が分かれます。前者がPlan-and-Executeです。
差が出るのは、途中で失敗したときです。6手の仕事の4手目で失敗する場面を数えたところ、やり直しが3手と6手に分かれました。
全体の手順を先に書き出し、そのとおりに実行します。考える工程と動く工程を分けるのが要点です。
Plan-and-Executeは、先に全体の計画を立て、あとはその計画に沿って実行するだけにする進め方です。名前のとおり、計画(Plan)と実行(Execute)を分けています。
最初の工程では、仕事の内容を読んで手順を書き出します。ここではまだ何も実行しません。次の工程で、書き出した手順を上から順に実行していきます。
分ける理由は明快で、手順を考えながら動くと、間違った方向に進んでいることに気づきにくいためです。Anthropicも、調査と計画を実装から分けることで、間違った問題を解いてしまうのを避けられると述べています。
同じ文書では、いきなりコードを書き始めさせると間違った問題を解くコードができうるとも指摘されています。手を動かし始めてしまうと、方向の誤りが表に出るのが遅くなるためです。
人の仕事でも似た経験があるはずです。とりあえず着手して、半分ほど進んだところで前提が違ったと気づく。あの手戻りを構成として避けようとしたのがこの進め方になります。
工程が分かれていると、実行の前に計画だけを人が確認できます。Anthropicの文書でも、詳細な実装計画を作らせてから進めるやり方が案内されています。危ない操作を含む仕事では、この確認の場が効いてくるでしょう。人の承認を挟む構成はHITLの記事で扱っています。
Separate research and planning from implementation to avoid solving the wrong problem.原文Claude Code Docs「Best practices for Claude Code」 この内容の有効期限2027-02-17
前提を置いて手数を数えました。途中失敗時のやり直しは3手と6手に、呼び出し回数の合計は10回と24回に分かれます。
Plan-and-Executeで何が変わるのかを、数えて確かめました。題材は6手かかる仕事の4手目で失敗する場面です。
先に断っておくと、これはモデルを動かした実測ではありません。前提を置いて手数を数え上げた計算です。前提はコードに書いてあり、そこを変えれば結果も変わります。
const TASK_STEPS = 6; // 全体で6手かかる仕事
const FAIL_AT = 4; // 4手目で失敗する
// 先に計画を立てる: 計画は1回。失敗したら該当ステップから再開できる
function planFirst() {
const redoSteps = TASK_STEPS - FAIL_AT + 1; // 4手目から最後まで
return { planCalls: 1, stepCalls: TASK_STEPS, redoSteps, canResume: true };
}
// 1手ずつ進める: 毎回次を考える。失敗したら文脈が壊れて最初から
function stepByStep() {
return { planCalls: 0, stepCalls: TASK_STEPS * 2, redoSteps: TASK_STEPS, canResume: false };
}
6手の仕事で、4手目に失敗したとき 構成 計画 実行 失敗時のやり直し 途中再開 先に計画を立てる 1回 6回 3手 可 1手ずつ進める 0回 12回 6手 不可 最後まで成功した場合の呼び出し: 7回 と 12回 失敗して再実行した場合の合計: 10回 と 24回
やり直しの量が倍違います。計画がある側は失敗した4手目から再開できるので、残りの3手だけをやり直せば済みます。
計画が外に書き出されているためです。どの手まで終わったかが分かるので、続きから再開できます。
1手ずつ考える構成では、次に何をするかが会話の流れの中にしかありません。ですから途中で止まるとどこまで進んだかを復元できず、最初からやり直しになります。
失敗しない場合でも、呼び出し回数は7回と12回で差がつきました。1手ずつ考える構成では、各手で「次に何をするか」を考える分の呼び出しが上乗せされるためです。
計画を外に書き出しておくと、失敗した手から再開できる。
Letting Claude jump straight to coding can produce code that solves the wrong problem.原文Claude Code Docs「Best practices for Claude Code」 この内容の有効期限2027-02-17
手順が始める前に書き出せるかどうかで決まります。書き出せないなら、計画そのものが無駄になります。
ここまでの数字だけを見るとPlan-and-Executeが有利ですが、その前提には「計画どおり進む」が含まれています。
先に立てた計画は、実行の途中で状況が変わっても更新されません。在庫があるつもりで立てた段取りは、在庫が0だと分かってもそのまま次の手に進んでしまいます。
この弱点は結果を見ながら進める構成の裏返しで、ReActパターンの記事では実際に「在庫0の商品に明日発送します」と答える例を扱っています。
4番目に注意してください。書き出せない手順を無理に計画させると、当てずっぽうの段取りができるだけです。
実装上の落とし穴がひとつあります。会話の履歴が上限に達すると古い部分から削られるため、最初に立てた計画が消えることがあります。
対策は単純で、計画を会話の外に保存しておくことです。ファイルでも記録用の領域でもかまいません。実行のたびに読み直せる場所に置いてください。
手順が書き出せない仕事に計画を立てさせても、当てずっぽうが増えるだけ。
Ask Claude to create a detailed implementation plan.原文Claude Code Docs「Best practices for Claude Code」 この内容の有効期限2027-02-17
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る