
2026/02/22 9:29
**Claude コードの使い方:計画と実行の分離**
RSS: https://news.ycombinator.com/rss
要約▶
日本語訳:
記事は約9か月の経験に基づくClaude Codeを使用するための規律あるワークフローを提示しています。研究、計画、および実行を分離し、各フェーズが進む前に承認済みのマークダウンアーティファクトを生成することを強調しています。
- リサーチ (research.md) – Claude は対象フォルダーを徹底的にスキャンし、ユーザーが検証しなければならない詳細レポートを作成します。表面的な読み込みは推奨されません。
- 計画 (plan.md) – コードスニペット、ファイルパス、トレードオフ、および説明を含む別のマークダウン計画が用意されます。組み込みのプランモードは拒否され、この編集可能なドキュメントが採用されます。
- 注釈サイクル – ユーザーはエディタで計画をレビューし、インラインメモや制約を追加して「まだ実装しない」ガード付きで再送します。このサイクルは計画が完全に受理されるまで繰り返されます。
- 実行 – 実装前に詳細なTODOリストが計画に追加されます。その後、著者は固定プロンプト「implement it all…」を発行し、Claude にすべてを実行させ、計画内の完了状況を更新させ、不必要なコメントや未知のタイプを避け、型チェックを継続的に実行させます。
- 修正 – 実行中にユーザーは簡潔な修正(多くの場合単一文)を提供します。フロントエンドでの修正にはスクリーンショットや既存パターンへの参照が含まれる場合があります。
- 制御と永続性 – 著者はアーキテクチャ的なコントロールを決して手放しません。Claude の提案を評価し、必要に応じて変更またはスキップします。3つのフェーズすべてが単一の長時間セッションで行われ、計画ファイルは自動圧縮を通じて保持され、主要な参照として機能します。
マークダウンファイルを共有可変状態として維持することで、このアプローチはノイズの多いチャットインタラクションを減らし、追跡性を向上させ、大規模プロジェクト全体で一貫したインターフェースを保ちます。
本文
私は Claude Code を主な開発ツールとして使い始めて約 9 ヶ月が経ちました。私が確立したワークフローは、AI コーディングツールを利用するほとんどの人々とは根本的に異なります。
ほとんどの開発者は「プロンプトを入力し、時にはプランモードを使い、エラーを修正して繰り返す」だけです。より「ターミナル志向」の人たちは、ラルフ・ループや MCP(マイクロサービス・チェーン)、ガストウンズ(当時流行っていたもの?)などを組み合わせて作業します。どちらの方法も、非 trivial な何かに取り掛かると散らかったまま崩れてしまいます。
コア原則
Claude にコードを書かせる前に、必ず書面で計画をレビューして承認してください。
プランニングと実行の分離は、私が最も重視することです。これによって無駄な労力を防ぎ、アーキテクチャ決定をコントロールし、コードに直接飛び込むよりもトークン使用量を抑えつつ大幅に良い結果を得られます。
フローチャート
flowchart LR R[リサーチ] --> P[プラン] P --> A[アノテーション] A -->|1〜6回繰り返し| A A --> T[TODO リスト] T --> I[実装] I --> F[フィードバック & 反復]
フェーズ 1:リサーチ
すべての有意義なタスクは、深く読み込む指示から始まります。
Claude にコードベースの該当部分を徹底的に理解させるよう求めます。そして、発見内容は必ず Markdown ファイルに書き留めさせます―チャットで口頭要約するだけではありません。
例:
- 「このフォルダを深く読み込み、仕組みや機能、すべての特異性を理解してください。完了したら、
に詳細レポートを書いてください。」research.md - 「通知システムを詳しく調査し、その細部まで把握して、通知がどのように動作するかをすべて含むリサーチ文書を作成してください。」
- 「タスクスケジューリングフローを確認し、潜在的なバグを探します。確実にバグは存在します。バグがすべて見つかるまで調査を続けてください。完了したら、
に詳細レポートを書いてください。」research.md
言葉遣いが重要です。「深く」「細部まで」「複雑さ」「すべてを通じて」などの語句が無いと Claude はざっくり読んでしまいます。書面(
research.md)は私のレビュー対象です。リサーチが誤っていると、プランも実装も誤ります。
フェーズ 2:プランニング
リサーチを確認したら、別 Markdown ファイルに詳細な実装計画を書かせます。
例:
- 「新機能
を作り、システムが<name>
を達成できるようにします。<ビジネスアウトカム>
に実装方法を詳細に記述し、コードサンプルも含めてください。」plan.md - 「リストエンドポイントはオフセットではなくカーソルベースのページングをサポートする必要があります。実現手段について詳細なプランを書いてください。変更提案前にソースファイルを読み込み、実際のコードベースに基づいた計画を立ててください。」
生成されるプランは必ず以下を含みます:
- アプローチの詳細説明
- 実際の変更点を示すコードスニペット
- 変更対象ファイルパス
- 考慮事項とトレードオフ
私は Claude Code の組み込みプランモードではなく、独自に作成した
.md プランファイルを使用します。これにより完全な制御が可能で、エディタで編集でき、実際の成果物として永続化されます。
アノテーションサイクル
これは私のワークフローで最も特徴的な部分です。ここで最大の価値を提供します。
flowchart TD W[Claude が plan.md を書く] --> R[I はエディタでレビュー] R --> N[I はインラインノートを追加] N --> S[Claude に文書へ戻すよう送信] S --> U[Claude がプランを更新] U --> D{満足?} D -->|いいえ| R D -->|はい| T[TODO リスト要求]
Claude が計画を書いたら、エディタで開いてインラインノートを直接文書に追加します。仮定の修正、アプローチの拒否、制約の追加、Claude が持っていないドメイン知識の提供などです。
例:
- 「
をマイグレーションに使用し、raw SQL は使わないでください」drizzle:generate - 「これは PATCH ではなく PUT にしてください」
- 「このセクションは完全に削除してください。キャッシュは不要です」
- 「キューコンシューマーはすでにリトライを処理しているので冗長なリトライロジックは削除してください」
- 「visibility フィールドはアイテム単位ではなく、リスト自体に設定する必要があります」
その後、Claude に「文書に数点のノートを追加しました。すべてのノートに対応し、文書を更新してください。ただしまだ実装は行わないでください」と指示します。
このサイクルは 1〜6 回繰り返されます。「まだ実装しない」という明確なガードが不可欠です。さもなくば Claude は計画が十分だと判断した瞬間にコードを書き始めてしまいます。
TODO リスト
実装を開始する前に、必ず詳細なタスク分解を要求します:
「プランにすべてのフェーズと個別タスクを含む詳細な todo リストを追加してください。まだ実装は行わないでください。」
これによりチェックリストが生成され、実装中の進捗管理に役立ちます。Claude はタスク完了時に項目をマークし、いつでもプランを見れば現状を確認できます。
フェーズ 3:実装
プランが整ったら、実装コマンドを発行します。このプロンプトはセッションを通じて再利用しています:
「すべて実装してください。タスクやフェーズごとに完了したらプランドキュメントにマークしてください。すべてのタスク・フェーズが完了するまで停止しないでください。不要なコメントや JSDoc は追加せず、
や未知の型は使わないでください。常に型チェックを実行して、新たな問題を導入していないか確認してください。」any
この単一プロンプトにはすべてが詰まっています:
- 「すべて実装」 – 計画通り全作業を行う
- 「完了マーク」 – プランは進捗の真実源
- 「停止しない」 – 確認待ちで中断しない
- 「不要コメント禁止」 – コードをクリーンに保つ
- 「
禁止」 – 厳格な型付け維持any - 「常時型チェック」 – 問題を早期発見
「実装してください」と言うと、すべての決定は既に行われ検証済みです。実装は機械的であり、創造性はアノテーションサイクルに集中します。
実装中のフィードバック
Claude が計画を実行している間、私の役割は建築家から監督へとシフトします。プロンプトは短くなります。
flowchart LR I[Claude が実装] --> R[I はレビュー/テスト] R --> C{正しい?} C -->|いいえ| F[簡潔修正] F --> I C -->|はい| N{追加タスクはあるか?} N -->|はい| I N -->|いいえ| D[完了]
例:
- 「
関数を実装していませんでした」deduplicateByTitle - 「設定ページをメインアプリに作ったが、管理アプリであるべきです。移動してください」
ビジュアル上の問題にはスクリーンショットを添付したり、「もっと広く」「まだ切れている」「2px の隙間がある」といった最小限の変更点を説明します。既存コードを常に参照し:
「このテーブルはユーザー一覧と同じ見た目で、ヘッダー・ページネーション・行密度も同じにしてください。」
何か問題が発生したら Git の変更をリセットして再スコープします:
「すべて元に戻しました。今はリストビューだけをもっとミニマルにしたいです。他は何もしません」
コントロールを保つ
Claude に実行を委譲しても、何が構築されるかについて完全な自律権を与えることはありません。大部分の指示は
plan.md で行います。
flowchart TD P[Claude が変更案を提案] --> E[I は各項目を評価] E --> A[そのまま受け入れる] E --> M[アプローチを修正] E --> S[スキップ/削除] E --> O[技術的選択を上書き] A & M & S & O --> R[実装範囲の最終調整]
提案から必要なものだけを抜粋し、スコープを絞り、既存インターフェースを保護し、必要に応じて技術選択を上書きします。Claude は機械的実行のみ担当し、判断は私が行います。
単一長時間セッション
リサーチ・プランニング・実装を別々のセッションで分けず、1 つの長いセッション内で完結させます。例えば、フォルダの深読みから始めて、3 回のアノテーションサイクルを経て、すべての実装を一連で行います。
コンテキストウィンドウが満杯になった場合、Claude の自動圧縮機能が必要な情報だけ残しつつ継続できるようにします。プラン文書は完全性を保ったまま保持されます。
ワークフローを一言で
深く読む → 計画を書く → それが正しいまでアノテーションする → Claude にすべて実行させ、型チェックを継続しながら進める。
これだけです。魔法のプロンプトや複雑なシステム指示、巧妙なハックは不要で、思考と入力を分離した厳格なパイプラインにすぎません。