世界を動かす技術を、日本語で。

クラウドコードの使い方:計画と実行の分離

2026年2月22日原文(boristane.com)

概要

  • Claude Codeを使った独自の開発ワークフローの全体像
  • 計画と実装の完全な分離による品質向上
  • research.md・plan.mdなどマークダウンファイルを活用した共同作業
  • アノテーションサイクルによる反復的な計画修正
  • 実装・フィードバック・進捗管理までの具体的な運用例

Claude Codeを最大活用するためのワークフロー

  • Claude Code を9ヶ月間メイン開発ツールとして利用した独自ワークフロー
  • 一般的なAIコーディングツールの利用法(プロンプト投入→修正→繰り返し)とは一線を画す運用
  • コア原則は「 計画の承認が終わるまでClaudeにコードを書かせない」という徹底した分業
  • 計画(Plan)と実装(Implement)の分離により、無駄な作業の削減・設計のコントロール・トークン消費の最適化を実現

ワークフローフロー図

  • Research → Plan → Annotate(1~6回反復)→ Todo List → Implement → Feedback & Iterate

Phase 1: Research(リサーチ)

  • すべてのタスクは「 深読み指示」から開始
  • Claudeに対象コードベースを徹底的に理解させ、 research.md に詳細な調査結果を書かせる
    • 例:「このフォルダを徹底的に読解し、仕組み・機能・特徴を深く理解した上で、research.mdに学びと発見を詳細に記述」
    • 例:「通知システムの複雑さを深掘りし、notificationの仕組みを全てまとめたresearch.mdを作成」
    • 例:「タスクスケジューリングのバグを全て特定し、詳細な調査レポートを書く」
  • deeply, in great details, intricacies」などの強調ワードを必ず含めることで表面的な読解を防止
  • research.mdは単なる宿題ではなく、「 レビューのための成果物
    • Claudeの理解度を確認・修正し、誤解があれば計画段階の前に修正
    • 誤った調査→誤った計画→誤った実装の連鎖(Garbage in, garbage out)を防止
    • システム全体への影響も考慮した設計ミスの予防

Phase 2: Planning(計画)

  • 調査内容を確認後、 plan.md に詳細な実装計画を書かせる
    • 例:「新機能<概要>を追加したい。plan.mdに詳細な実装計画を書いて」
    • 例:「リストエンドポイントをカーソルベースページネーションに変更したい。plan.mdに具体的な手順を書いて」
    • 例:「必ず現状のコードを読んだ上で計画を立てること」
  • plan.mdには下記を必ず含める
    • アプローチの詳細説明
    • 変更点のコードスニペット
    • 変更対象ファイルパス
    • 注意点・トレードオフ
  • built-in plan modeは使わず、独自のplan.mdを活用
    • エディタで自由に編集・注釈追加可能、永続的な成果物として管理
  • 参考実装がある場合は、関連コードを貼り付け「この実装を参考にplan.mdを書いて」と指示
    • 具体例がある方がClaudeの精度が大幅に向上
  • 計画自体よりも「 その後のアノテーションサイクル」が本質

アノテーションサイクル(Annotation Cycle)

  • Claudeがplan.mdを作成→エディタでインラインノートを追加→Claudeに修正依頼→plan.md更新→満足するまで繰り返し
  • ノート例
    • 「migrationsはdrizzle:generateを使うこと、raw SQLは不可」— Claudeが知らないドメイン知識
    • 「これはPATCH、PUTではない」— 誤った仮定の修正
    • 「このセクションは不要、キャッシュは不要」— 提案の却下
    • 「キューのリトライは既存で対応済み、重複処理は不要」— 理由付きの修正指示
    • 「visibilityフィールドはリスト単位、アイテム単位ではない。スキーマを修正」— 設計全体の方向修正
  • 修正指示には「 まだ実装しないこと」を明記し、計画が完成するまで実装を阻止
  • この反復により、汎用的な計画をプロジェクトに最適化
  • plan.mdはClaudeと自分の「共有・可変な状態」 として機能
    • チャットでの曖昧な指示ではなく、計画書の該当箇所へ直接注釈
    • 全体像を俯瞰しやすく、意思決定の履歴も明確

Todo List(タスクリスト)

  • 実装前に「 詳細なTodoリスト」をplan.mdに追加させる
    • 全フェーズ・全タスクを細分化して列挙
    • 「まだ実装しないこと」を必ず指示
  • このチェックリストが進捗管理の基準
    • Claudeが進捗に応じてタスクを完了マーク
    • 長時間セッションでも進捗が一目瞭然

Phase 3: Implementation(実装)

  • 実装開始時の標準プロンプト例
    • 「implement it all. when you’re done with a task or phase, mark it as completed in the plan document. do not stop until all tasks and phases are completed. do not add unnecessary comments or jsdocs, do not use any or unknown types. continuously run typecheck to make sure you’re not introducing new issues.」
  • ポイント
    • 計画通りに全て実装、一部だけ・途中確認は不要
    • 完了ごとにplan.mdにチェック、進捗はplan.mdが唯一の真実
    • 余計なコメントやany/unknown型禁止、型チェックは常時実行
  • 計画段階で全ての意思決定が済んでいるため、実装は「機械的・退屈」な作業に
    • 創造的判断はAnnotation Cycleで済ませる
    • 計画なしで始めると、誤った仮定に基づく修正地獄に陥りやすい

フィードバックと実装中の修正

  • Claudeが実装中は、ユーザーは「 設計者から監督者」へ役割シフト
  • フィードバックは短く簡潔に
    • 例:「deduplicateByTitle関数が未実装」「settingsページはadmin appで作るべき、main appではない」
  • Claudeはplan.mdとセッション全体の文脈を保持しているため、短い修正指示で十分
  • フロントエンドは特に反復が多い
    • ブラウザで確認→「wider」「まだ切れてる」「2px隙間」など即時修正指示
    • スクリーンショット添付で視覚的な問題を迅速に伝達
    • 既存コードを参照して「usersテーブルと同じ見た目に」など、既存パターンの再利用を指示
  • 大きく方向性がずれた場合は「 gitで巻き戻し・スコープ再設定」が最善
    • 例:「全てリバート。今回はlist viewをよりミニマルにするだけで良い」
  • 修正地獄に陥るより、スコープを狭めてやり直す方が効果的

主導権を握り続ける

  • Claudeに実装を委任しても、「 何を作るかの最終決定権は自分
  • ほとんどの調整・判断はplan.mdで行い、Claudeの自動判断に任せきりにしない
  • Claudeが提案する解決策は「技術的には正しいが、プロジェクトに合わない」場合がある
    • 例:過剰設計、既存APIの互換性崩壊、シンプルな選択肢を無視
  • システム全体の文脈、プロダクトの方向性、エンジニアリング文化など、Claudeにはない背景知識を活かし続けることが重要

Hackerたちの意見

コードが書けない人にはこれで十分に見えるけど、開発者としてちょっと経験がある人には、計画やチェック、プロンプト、オーケストレーションなんて、コードを書くよりもずっと手間がかかるよね。「生産性の結果に関係なく、書いたコードが最も少ない」という勝者は、たぶんAnthropicの銀行口座だけだろうね。

これらのAIコーディング記事は、ほとんどがグリーンフィールド開発についてのように見えるね。でも、プロのソフトウェアを作っている真剣なチームにいるなら、小さなタスクでない限り、AIにまず計画を立てさせることにはまだたくさんの価値があるよ。この投稿はそれをさらに進めて、形式化している。Cursorは計画モードを使って、出力をマークダウンで見直してからビルドする方が、ずっと信頼性が高いと思う。そんなに大きな負担ではないけど、確かに時間がかかるから、文脈の切り替えが多くなることがある。

なんでこんなコメントがたくさんあるのか、全然理解できない。昨日、Claudeにアプリ内のエンティティに対するすべての変更を追跡する監査ログ機能を書かせたんだ。多くのフレームワークではこれが無料でもらえるけど、うちのカスタムセットアップにはないんだ。いい計画を立てるのに5〜10分くらいかかって、その後Claudeが実装やテストに20〜30分かかった。これなら少なくとも1日、下手したら2日はかかってたと思う。他のタブで4〜5のタスクを進めながら、Claudeが機能を生成するのを20〜30分待ってた。生成後には、手動で動作確認をして、ちゃんと動いたよ。それからPRを出す前にコードを見直す必要があった。結局、小さな機能を追加するのに、実際には30〜45分くらいかかったかな。正直言って…ちゃんと使えてるの?AIツールの使い方を学ぶのに、本当に時間を投資した?

あなたには部分的に同意するけど、コードベースが大きくなると、変更を打ち込むのにも時間がかかるようになるよね。エージェントを使う最良の方法は、変更を書くつもりで考えをまとめて、自分のメモを取りながらエージェントに実行させることだと思う。エージェントは疲れないし、午後4時にミスをすることもないから、品質も落ちない。そして並行処理もできる。これによって、常に高いレベルに留まって「またこの簡単なことをやり直すの?」って悩まされることがなくなる。そうすると、頭の中の文脈が消えて、日中疲れてしまうからね。とはいえ、エージェントが書いたコードは100%見直すべきだよ。自分が「所有」していないコードをコミットすることは許さない。AIを使わせる仕事には絶対に賛成しないし、時には手で全部書きたいと思う。でも、このツールが使えるのは本当に強力だね。

Opus 4.5以降、かなり変わったよね。新しい機能やアイデアについて話すのにLLMがすごく役立つし、Sonnetはコーヒーを飲んでる間に計画を実行するのに最適だよ。

プロジェクトのリサーチや計画をするのは、一般的に役立つことだよね。これ、何年もやってきたけど、いきなりコードを書くよりもずっと良い結果が出てる。これがLLMの利用にもつながるのは当然だよね。

もちろん、アディ・オスマニはコーディングできるよ。彼自身もまず計画を立てることを勧めてるしね。 https://news.ycombinator.com/item?id=46489061

計画を立てたり、確認したり、促したり、調整したりするのは、自分でコードを書くよりもずっと大変だよね。これ!コードベースに慣れたら(すぐに慣れるように努力してるけど)、ほとんどのチケットについては、説明を読んだ時点でだいたいの計画ができてる。実装に関する質問がいくつかあるかもしれないけど、コードベースのどこに情報があるかはわかってるから。あまり具体的なアイデアがない場合は、ホワイトボードを使うかな。こういうメンタルプランのいいところは、ざっくりしたバージョン(スケッチみたいな)から始められること。例えば、新しいUI画面を作るときは、「Hello, world」みたいなプレースホルダーテキストを入れて、ナビゲーションに取り組む。そこが終わったら、データを引っ張ってきて、ビュー・モデルを作るためのマッピング関数を追加していく… 各ステップが確認可能なマイルストーンになるんだ。これを説明するのは、ただコードを書くよりも頭を使う。なぜなら、英語はコンピュータの動作を説明するのに向いてないから(ナビゲーションフローの有限状態機械を自然言語で説明してみて)。僕のメンタルモデルはすでにコードに合わせてあるから、自然言語で解決策を書くのは、わざと曖昧で不明瞭にするようなもんなんだよね。

精神的な負担が少ないからね。テスラのFSDみたいなもんだよ。俺はFSDより運転が上手いけど、ちょっとの間運転を任せるのはいいよね。たとえ最適じゃなくて、10%遅く着くし、後ろの人がちょっとイライラするかもしれないけど。それでも99ドル/月払う価値はあるかな。コードの実装は運転と同じように負担がかかるし、TFAの方法は全体的に開発者にとってストレスが少ないと思う。最終的には手動で修正もできるし、AIコーディングと手動コーディングはどちらか一方じゃないからね。

言葉に注目してみて。「深く」、「詳細に」、「複雑さ」、「すべてを通じて」。これは単なる飾りじゃないよ。これらの言葉がなければ、Claudeはざっと流し読みするだけ。ファイルを読み込んで、関数が何をしているかをサインレベルで見て、次に進むだけ。表面的な読み方は許されないって信号を送る必要があるんだ。これがLLMの動作に関する私の直感には合わない。これが効果的だとは信じているけど、モデルに「もっと深く」読ませることが、LLMが生成する出力にどんな影響を与えるのか、私のメンタルモデルには理解できない。

ソフトウェア開発の今はすごく混沌としてるね。誰も(1)LLMが特定のことをする原因を本当に理解してないし、ただプロンプトが確率を正しい方向に動かしてくれることを祈るしかない。以前は、決定論的な振る舞いや再現性を誇っていた分野だったのに。今は?親が子供に話しかけるようなAGENTS.mdファイルがあって、すべてが太字の大文字で強調されていて、ただそれが十分であることを祈っている(1 大手モデル会社のコアML開発者を除いて)。

乖離があるかもしれないのは、「ユーザーのために最終的な答えを生成すること」と「その答えに必要な情報を調べたり考えたりすること」の間に分離があるからかも。 「深く」と言うことで、ファイルのもっと多くの部分を読むように促している(つまり、実際にreadツールを使ってファイルのより多くの部分を文脈に取り込む)、そして「考える」トークンを生成する(つまり、ユーザーには表示されないが、モデルが自分の考えを洗練させ、答えの質を向上させるために書くトークン)。

Hacker Newsで議論の続きを見る