仕様駆動でAIエージェントに実装させる — SPEC.mdを書いて新セッションで作らせる
大きめの機能は「仕様を固める会話」と「実装する会話」を分けると手戻りが減ります。SPEC.mdをエージェントに書かせ、クリーンな新セッションで実装させる3ステップを解説します。
- spec-driven
- claude-code
- planning
- workflow
- ai-agent
- 情報確認
- 参考リンク
- 2件
- 更新性
- 長く使える
- 読了目安
- 約5分
仕様・料金・提供範囲が変わりやすいテーマは、公開日・更新日・情報確認日を分けて管理します。 導入前には必ず記事末尾の一次情報と公式ドキュメントで最新状況を確認してください。
結論
大きめの機能をAIエージェントに作らせるなら、「仕様を固める会話」と「実装する会話」を分けてください。曖昧なまま書かせると、放棄した設計案や脱線がコンテキストに残り、エージェントが古い前提のまま実装して手戻りが増えます。まずエージェントにあなたを面接させて SPEC.md に意図を言語化させ、次にクリーンな新セッションでその SPEC.md だけを渡して実装させる。検証手段(テスト・期待出力)を最初から仕様に含めるのが要点です。
なぜ仕様と実装を分けるのか?
理由は2つ、コンテキストの汚染と、意図の言語化です。
1つの会話の中で「どう作るか」を議論しながら同時に書かせると、検討して捨てた案・脱線・途中で変えた前提が、すべてコンテキストウィンドウに残り続けます。Claude Code の公式ベストプラクティスも、コンテキストウィンドウは速く埋まり、埋まるほど指示が無視されてミスが増える、という制約を中心課題として挙げています。設計の試行錯誤でウィンドウを使い切った状態から実装に入ると、最初に決めたはずの方針をエージェントが取りこぼしやすくなります。
もう1つは、人間側の意図がそもそも言語化されていない問題です。頭の中の「だいたいこんな感じ」のまま実装させると、エージェントは欠けた仕様を勝手に補完します。その補完がズレていれば手戻りです。仕様を先に文章へ落とすと、曖昧な部分が実装より前に表面化し、安く直せます。
ステップ1: エージェントに自分を面接させて SPEC.md を書かせる
最初の会話のゴールは、コードではなく SPEC.md という1枚の仕様書です。ここでいきなり「SPEC.md を書いて」と頼むと、欠けた前提を勝手に埋めた仕様が出てきます。代わりに、エージェントに質問役をやらせます。
これから新機能 X を作りたい。まだ実装しないでほしい。仕様を確定させるために、不明点を一通り質問して。特に次を埋めたい:- ゴールと非ゴール(何を作り、何を作らないか)- 入力 / 出力と、エラー時の挙動- 既存コード(対象ファイルの絶対パス)との整合- 完了の定義(どうなったら完成か / 検証方法)質問が出尽くしたら、合意した内容を SPEC.md にまとめて。エージェントの深掘り質問にあなたが答えていくと、頭の中で曖昧だった箇所が会話の中で1つずつ潰れます。これは公式の Common workflows が示す「まず計画を立てさせ、合意してから実装に入る」流れと同じ発想です。仕様にはコード例(関数シグネチャ、期待するレスポンス形)を1つでも入れておくと、実装段階の解釈ブレがさらに減ります。
出来上がった SPEC.md は必ず人間が読み、ゴール・非ゴール・完了の定義に過不足がないか確認します。ここを通したものだけを次のステップへ渡します。
ステップ2: 新セッション(クリーンなコンテキスト)で実装させる
SPEC.md が固まったら、実装は別の新しいセッションで始めます。理由は前のセクションで述べたとおり、設計議論で埋まっていない状態のコンテキストから実装に入るためです。
- ステップ1仕様を固める会話エージェントに面接させ、ゴール・非ゴール・検証方法を SPEC.md に言語化して確定する
- ステップ2実装する会話(新セッション)クリーンなコンテキストで SPEC.md と対象ファイルだけを渡し、計画→実装→コミットを回す
- ステップ3検証して決定を残す仕様内の検証手段で挙動を確認し、確定した方針を ADR とメモリへ接続する
新セッションでは、渡す情報を実装に必要なものだけに絞ります。
@SPEC.md に従って実装して。触ってよいファイル: src/feature/x.ts, src/feature/x.test.ts触らないファイル: それ以外まず計画を提示して、合意したら実装。完了したら SPEC.md の検証方法で確認まで。SPEC.md をリポジトリにコミットしておけば、@SPEC.md のように参照でき、別の日・別のマシンからでも同じ前提で再開できます。会話履歴に依存しないのが利点です。Codex のような別エージェントへ実装を委譲する場合も、自己完結した SPEC.md がそのままハンドオフ契約になります。
ステップ3: 検証手段を最初から仕様に添える
SPEC.md には「どうなったら完成か」を、エージェント自身が確認できる形で書きます。これが仕様駆動の効果を最大化する核心です。
公式ベストプラクティスは、Claude が自分で結果を検証できる手段(テスト・スクリーンショット・期待出力)を最初から渡すことを「最大レバレッジ」と表現しています。検証手段がないと、あなたが唯一のフィードバックループになり、エージェントの出力が増えるほど見直し時間がリニアに膨らみます。
仕様には、たとえば次のような検証セクションを入れておきます。
## 検証方法(完了の定義)- `npm test src/feature/x.test.ts` がすべて green- 入力 [{id: 1}] に対し、出力が {count: 1, ok: true} になる- 不正入力(空配列)では 400 を返す期待する入出力を具体例で固定しておくと、エージェントは実装後に自分でテストを回して差分を埋められます。人間のレビューは「仕様どおりか」の確認に集中でき、往復が減ります。
ADR・メモリと接続して決定を残す
仕様駆動の会話で確定した「なぜこの設計にしたか」は、実装が終わると蒸発しがちです。後から別の判断に効く決定(構造・難逆性のあるもの)は、ADR として残します。ADR は変更履歴ではなく、判断の理由を非同期で共有するための制御面です。
繰り返し参照する作法(命名規約、テスト方針、対象ファイルの境界など)は、プロジェクトのメモリや指示ファイルに書いておくと、次の SPEC.md を書く会話が短くなります。仕様駆動・ADR・メモリは、いずれも「同じ議論を二度しない」ための仕組みとしてつながっています。
よくある質問
Q. なぜ仕様を固める会話と実装する会話を分けるのですか? 同じセッションで設計の試行錯誤と実装を混ぜると、放棄した案や脱線がコンテキストに残り、エージェントが古い前提のまま実装してしまうからです。仕様を SPEC.md に確定させ、新しいクリーンなセッションでそれだけを渡すと、判断のブレと手戻りが減ります。
Q. SPEC.md はどうやって書かせると質が上がりますか? いきなり書かせず、まずエージェントに「自分を面接させる」のが有効です。ゴール・非ゴール・入出力・エラー時の挙動・既存コードとの整合を質問させ、あなたが答えてから SPEC.md に落とします。曖昧な箇所が会話の中で先に潰れるので、実装段階の出戻りが少なくなります。
Q. 実装を新セッションで始める具体的な利点は? コンテキストウィンドウが設計議論で埋まっていない状態から始められることです。公式ガイドもコンテキスト管理を中心課題として挙げており、実装に必要な情報だけ(SPEC.md と対象ファイル)を載せた方が、指示が無視されにくくミスが減ります。
Q. 検証手段は最初から渡すべきですか? はい。テスト・期待出力・再現コマンドなど、エージェントが自分で結果を確認できる手段を SPEC.md に含めておくと、あなたが唯一のフィードバックループになる事態を避けられます。これは公式が「最大レバレッジ」と呼ぶ手法です。
Q. 小さな修正でも仕様駆動にすべきですか? いいえ。typo 修正やログ追加のように差分を1文で説明できる変更では、SPEC.md を書くオーバーヘッドの方が大きくなります。複数ファイルにまたがる、方針が不確か、触り慣れていないコードのいずれかに当てはまる時だけ使い分けてください。
関連記事
一次情報・参考リンク
関連して読む
- · 参考リンク 5件
Claude Opus 5の実力:Fable級を半額で使えるのか
Claude Opus 5の実力、料金、Fable 5・Sonnet 5との違い、Claude CodeとAPIの移行注意点を、Anthropic公式情報から実務目線で解説します。
- · 参考リンク 2件
ハーネスを60行で自作する: Claude Codeの中身を理解する最短ルート
Claude Codeの正体である「ハーネス」をPython約60行で自作し、エージェントループ・ツール実行・ガードレールの仕組みをコードで理解します。写経して動かせる最小実装付き。
- · 参考リンク 5件
国会の情報を AI エージェントから引く——houan-mcp の7つの実用ユースケース
Claude Desktop / Claude Code / Cursor から国会会議録と議案情報を出典付きで引ける @codeagentjp/houan-mcp の使いどころを、記者・法務・研究者・市民目線で7つのユースケースに整理します。答弁検索、法案ウォッチ、大臣発言の時系列追跡まで。