- AIコーディングツールの使い方を根本的に再構成し、コードを書く前に必ず明示的な計画レビュー段階を経るワークフローを提示
- 核心原則は**「計画が承認される前にはClaudeにコードを書かせない」**ことで、これにより構造的な統制と効率的なトークン利用を実現
- 全体のプロセスはResearch → Plan → Annotation → Todo List → Implementation → Feedbackの循環構造で進行
- 各段階で**Markdown文書(research.md, plan.md)**を中心に協業し、注釈と修正の過程を繰り返して完成度を高める
- この方式はAIの実行力と人間の判断力を分離・結合し、複雑なシステムでも安定して一貫した結果を得ることに重点を置く
全体ワークフローの概要
- 約9か月間Claude Codeを主な開発ツールとして使う中で、一般的な「プロンプト入力 → コード生成 → 修正の反復」という方式ではなく、計画と実行を分離した体系的な手順を構築
- Claudeがコードを書く前に、必ず**作成者がレビュー・承認した計画文書(plan.md)**に基づいてのみ実行させる
- このアプローチは不要な試行錯誤を減らし、アーキテクチャの決定権を維持し、トークン使用量に対する品質を最大化する
Phase 1: Research
- すべての作業は深いコードベース分析から始まる
- Claudeに特定フォルダや機能を「深く読み(detailed, intricacies)」分析するよう指示
- 結果は必ず**
research.mdファイル**に記録させる
- この文書はClaudeの理解度を検証する**レビュー面(review surface)**として機能し、誤解があればこの段階で修正する
- 誤ったリサーチは誤った計画と実装につながるため、最もコストの高い失敗要因を事前に遮断する
- 例として、キャッシュ層の無視、ORMルールの未反映、重複ロジックの生成といった問題を防ぐ
Phase 2: Planning
- リサーチをレビューした後、Claudeに**詳細な実装計画(plan.md)**を書かせる
- 実際のコードスニペット、修正するファイルパス、トレードオフなどを含める
- 組み込みのplanモードではなく、直接管理できるMarkdownファイルを使う
- オープンソースの**参照実装(reference implementation)**を一緒に提供すると、Claudeの計画品質が大きく向上する
- 計画文書そのものより重要なのは、その後の注釈(Annotation)サイクルである
Annotation Cycle
- 作成者はplan.mdを開き、自分でインライン注釈を追加する
- 誤った前提の修正、アプローチの却下、ドメイン知識の追加など
- 例: 「これはPATCHであるべき」「キャッシュは不要」「visibilityフィールドはリスト単位に移動」など
- その後Claudeに「注釈を反映して文書を更新するが、まだ実装はしないこと」と指示する
- この注釈-更新サイクルを1〜6回繰り返し、
don’t implement yetという指示で早期実行を防ぐ
- Markdown文書は**共有可能な状態(state)**として機能し、対話型の指示よりも明確で構造的
- 反復を通じて、一般的な計画が実際のシステムに完全に合った仕様へと進化する
Todo Listの作成
- 実装前に、Claudeに**詳細な作業一覧(todo list)**を追加させる
- 各段階の細かなタスクを含めて進捗を追跡
- Claudeが完了項目に印を付けるため、長時間のセッションでも状態を把握しやすい
Phase 3: Implementation
- すべての決定が確定した後、標準化されたプロンプトで実行を指示
- 「すべてのタスクを完了するまで止まらないこと」「不要なコメント禁止」「any/unknown型禁止」「継続的に型チェックを実行すること」など
- この命令は計画をそのまま実行する機械的な段階であり、創造的な判断はすでに終わっている状態
- 計画なしですぐに実装すると誤った前提の上にコードを積み上げることになるため、
don’t implement yetルールが重要な安全装置となる
Implementation中のフィードバック
- 実行中は作成者が監督者の役割に切り替わる
- フィードバックは短く明確に伝える: 「この関数が抜けている」「adminアプリに移動」など
- フロントエンド修正時には「wider」「2px gap」のような短文指示やスクリーンショットを活用
- 既存コードの参照を頻繁に使い、一貫したUI/UXを維持する
- 誤った方向に進んだ場合はgit revertして範囲を縮小して再試行し、段階的な修正より効果的
主導権を握り続ける
- Claudeに完全な自律権を与えず、最終決定は常に人間が下す
- Claudeの提案の一部だけを選ぶ、または修正・削除し、技術選択を再定義する
- 例: 「1つ目はPromise.allを使う」「4つ目と5つ目は無視」
- 「ダウンロード機能を削除」「関数シグネチャは変更禁止」「特定ライブラリのメソッドを使う」など
- Claudeは機械的な実行、人間は判断と優先順位の決定を担当する
Single Long Sessions
- リサーチから実装までを1つの長いセッションで連続して実施
- セッション中、Claudeは継続的に文脈を蓄積し、auto-compactionにより十分なコンテキストを維持
- plan.mdはセッション全体を通して完全な形で保持され、いつでも参照可能
核心の要約
- 「深く読み、計画を書き、注釈で磨いたあと、一気に実行せよ。」
- 複雑なプロンプトやシステム指示がなくても、思考(Thinking)とタイピング(Typing)を分離した規律あるパイプラインで高品質を確保
- Researchは無知な変更を防ぎ、Planは誤った変更を防ぎ、Annotationは人間の判断を注入する
- 最終実行はすべての決定が確定した後に自動化された手順として行われ、効率的な協業構造を完成させる
4件のコメント
私も似たような問題をずっと経験しています。チャットベースだけでAIと協業すると、作業単位の分解(WBS)、進捗、意思決定の記録が曖昧になってしまうんですよね。
計画ファイルをそのままリポジトリ内に入れておいて、その計画を実行することで生じた適用内容を保存するようにすると、コンテキストがかなり維持されるんですよね。
この内容はClaudeだけに限った話ではなく、汎用的にほかのCLIベースのAIサービスにも適用できそうですね。
Hacker News の意見
本当の核心は「計画するかしないか」ではなく、モデルがコードとして固まる前に 前提を表に出させること
LLM は文法よりも、アーキテクチャや制約条件のような 見えない前提 で失敗する。だから文書化された計画が、その前提をデバッグできる表面になってくれる
printf()を1行入れたら Heisenbug が消えるようなもの「深く」「詳細に」といった言葉を使わないと Claude が表面的に読んでしまう、という話があるけれど、正直なぜそうなるのか 直感的に理解しにくい
私は3種類の文書タイプと2種類のスキルで構成された仕組みを使っている
Specs はプロジェクトの静的な設計文書、Plans は LLM が生成した実行計画、Working memory ファイルは進行状況を追跡する。
Gemini Pro の planner skill で新しい計画を作り、Codex の implementer skill で実行する。
こうするとコンテキストが軽く集中しやすいため効率が高い。Codex/Gemini の $20 プランでも十分な速さで進められる
計画文書に直接 コメントを残すアイデア が新鮮に感じられる。もしそのコメントを別途保存したり、あとで見直せるように管理する方法があるのか気になる
このアプローチにはいくつか気に入らない点がある
第一に、一度にすべてのコードを生成する ビッグバン方式 は、理解しにくい巨大なコードの塊を作ってしまう。段階ごとに計画して実行するほうがよいと思う。
第二に、フィードバックを与えても ナレッジベースを更新しない点 が惜しい。エラーの原因を記録して、次回は繰り返さないようにすべきだ。
最後にテストへの言及がない。テスト駆動開発 (TDD) を少しでも含めるべき。AI 支援開発がこうした方法論とどう融合していくのか興味深い
このワークフローは実は Anthropic が推奨する Claude Code の標準的なやり方。ただし欠点は、計画が完璧でなければ最初からやり直しになること
だから私は デザイン → 計画 → 実行 を複数のバッチに分けて進めている。1,500行以下の計画単位に分けると、複雑さを管理しやすい。
自分の 3万 LOC のアプリには 10万行の計画がある。一度に作るのは不可能だ
私は plan.md の代わりに 実行可能なスキャフォールドと検証ループ を中心に作業している
Kolibri Tickets という実際の決済システムを AI と一緒に構築した。核心は、モデルに素早くコードを書かせることではなく、検証ループを設計すること だ
こうすると「速度の錯覚」ではなく、実際により速くデプロイできる。Plan 文書は共有状態を保つ1つの方法であり、検証可能なハーネス も別の方法だ
私は Claude Code を 講義準備用 に使っている
Quarto で講義ノートを書き、Claude にそれを Slidev スライド に変換させる。その後、スライドに「これは2枚に分ける」「ここに画像を追加」などのコメントを書いてフィードバックする。
こうした コメントベースのフィードバック は非常に強力だ。トークン距離や文脈維持に大きく役立つ
# この部分を X に変えるのような形で?すでに Amazon の Kiro、Google の Antigravity、GitHub の Spec Kit、OpenSpec のようなツールが、こうした機能を提供している
AI 支援コーディングで最も高くつく失敗は文法エラーではなく、部分的には動くがシステム全体を壊す実装 だ
だから私は初期段階で brief.md を追加し、問題定義、目標指標、機能中止の基準などを明記する。こうするとビジネス目標と技術実装がずれるコストを減らせる