Rick-Brick
Spec-Driven Development 入門 — AI駆動開発で仕様書が最重要になった理由

はじめに — 「Vibe Coding」の蜜月が終わった

2025年初頭、OpenAI共同創業者のAndrej Karpathyが「Vibe Coding」という概念を提唱した。AIに感覚的なプロンプトを投げ、生成されたコードをほぼそのまま受け入れる開発スタイルだ。当初は生産性革命として歓迎されたが、その楽観は長続きしなかった。

研究データが示す現実は厳しい。Veracodeの2025年調査では、AIが生成したコードの45%にセキュリティ脆弱性が含まれることが判明した。CodeRabbitによる470件のオープンソースPRの分析では、AI共同執筆コードは人間が書いたコードより**「主要な問題」が1.7倍多く**、誤設定は75%多く、セキュリティ脆弱性は2.74倍多かった。さらに逆説的なことに、熟練した開発者はAIコーディングツールを使うと19%生産性が低下するという調査結果も出た(本人たちは24%向上すると予測していたにもかかわらず)。

この「Vibe Codingの二日酔い」とも呼ばれる状況を生み出した根本原因は何か。そして解決策として台頭してきた**Spec-Driven Development(SDD)**とはどのようなパラダイムなのか。本記事では論文・企業事例・実践知を交えながら詳しく解説する。


Vibe Codingが失敗する構造的理由

「心が読めないAI」問題

GitHubのブログはこの問題を端的に表現している:「LLMはパターン補完には優れるが、心を読むことはできない」。

AIコーディングアシスタントに「ログイン機能を作って」と言えば、何らかのログイン機能は生成される。しかしそれがOAuth 2.0を使うのか、セッション管理はどうするのか、既存のDBスキーマに合っているのか、セキュリティ要件はどう満たすのか——これらを明示しなければ、AIは「それっぽいコード」を補完するだけだ。

Shadow Bug問題と幻覚ループ

Vibe Codingが生み出す問題は二種類に大別できる。

一つはShadow Bug(正しく見えるが深刻な脆弱性を含むコード)だ。コードは動くし、テストも通る。しかし特定の条件下でSQLインジェクションが発生したり、認証バイパスが可能だったりする。問題が表面化するのは本番環境に入ってからというケースが多い。

もう一つは幻覚ループだ。複数のAIエージェントが協調するマルチエージェントシステムでは、あるエージェントの誤った出力を別のエージェントが正しいと判断し、互いの誤りを強化し合う悪循環が生じる。仕様書という「正解の参照点」がなければ、この連鎖を断ち切ることができない。

コンテキスト喪失とアーキテクチャの非一貫性

AIとの会話はセッションごとにコンテキストがリセットされる。前回「認証はJWTで実装する」と決めたことを次のセッションのAIは知らない。複数回の会話や複数のAIエージェントが関わる場合、全体のアーキテクチャ設計が散らばり、ある部分はRESTで、別の部分はGraphQLで——という統一性のないシステムができあがる。


Spec-Driven Developmentとは何か

定義と基本原則

Spec-Driven Development(SDD)は、明確な仕様書(Spec)をAIへの「契約」として定義し、その契約に基づいてAIにコードを生成させる開発パラダイムだ。

Thoughtworksはこれを次のように説明している:「SDDは明確な要件仕様をプロンプトとして使用し、AIエージェントが実行可能なコードを生成するパラダイム。仕様書には外部動作(入出力マッピング、事前条件/事後条件、不変条件、制約、インターフェース型)を明示的に定義する」。

計画に1時間投資することで後の10時間の手戻りを節約できる」(Thoughtworks)という原則は、AI駆動開発においてこそ最も強く適用される。

Vibe Coding vs SDDの比較

側面Vibe CodingSpec-Driven Development
情報の主な担体会話・プロンプト仕様書ファイル
コンテキストの持続性セッション内のみ永続(ファイルとして保存)
設計判断の記録なし(暗黙)明示的に文書化
AIへの指示都度プロンプト仕様書を参照させる
レビューの対象コード仕様書(先)→ コード(後)
スケール個人・小規模チーム・本番システム

SDDの4フェーズプロセス

GitHubが2025年9月にリリースしたSpec Kit(MIT License)は、SDDを実践するためのオープンソースツールキットだ。その設計には4つのフェーズが定義されている:

Specify(仕様定義): ユーザージャーニーと成功基準を定義する。AIがrequirements.mdの草案を生成するが、人間がレビューして確定させる。

Plan(技術計画): アーキテクチャ、技術スタック、制約を宣言する。AIがdesign.mdを提案し、人間が判断する。

Tasks(タスク分解): 小さくレビュー可能な作業単位に分割する。AIがtasks.mdを生成する。

Implement(実装): AIエージェントがタスクを実装しながら、人間が各チェックポイントで検証する。

このプロセスの要点は、各フェーズに明示的なチェックポイントがあることだ。「Prompt and Pray(プロンプトして祈る)」から「Specify and Verify(仕様書を書いて検証する)」へのワークフロー転換とも言える。


論文が明らかにしたこと

Beyond the Prompt: Cursor Rulesの実証研究(arXiv:2512.18925)

MicrosoftとGitHubの研究者Shaokang JiangとDaye Namが実施した研究は、401のオープンソースリポジトリにおける.cursorrulesファイルを分析した最初の大規模実証研究だ(MSR 2026発表予定)。

この研究が確立した分類法では、AIコーディングアシスタントへのコンテキスト提供は5つのテーマに分類される:

テーマ内容
Conventionsコードスタイル、命名規則、フォーマット
Guidelinesアーキテクチャパターン、ベストプラクティス
Project Information技術スタック、依存関係、ディレクトリ構造
LLM DirectivesAIへの直接的な行動指示(何をすべきか/しないか)
Examples期待されるコードパターンの具体例

重要な発見は「プロンプトだけでなく、永続的なマシン可読ディレクティブがAIの効果を左右する」ことだ。一時的なプロンプトではなく、.cursorrulesCLAUDE.mdのような永続的なコンテキストファイルこそが、AIコーディングアシスタントの品質を規定する。

Promptware Engineering: 仕様書のライフサイクル管理(arXiv:2503.02400)

「Promptware Engineering」論文は、現在のプロンプト開発が「試行錯誤に依存したプロンプトウェア危機」にあると指摘する(ACM TOSEM採択)。

解決策として提案されるのは、プロンプト(仕様書)を「ソフトウェアアーティファクト」として扱い、以下のライフサイクルで管理することだ:

要件定義 → 設計 → 実装 → テスト → デバッグ → 進化 → デプロイ → 監視

仕様書もコードと同様に「バージョン管理・テスト・継続的改善」の対象として扱わなければならない。

コード生成プロンプトの10のガイドライン(arXiv:2601.13118)

50人の実務者調査を通じて特定されたこの研究の最も興味深い発見は「認識されている有用性と実際の使用頻度は一致しない」ことだ。

実務者は「入出力仕様の明示」や「事前/事後条件の定義」が有用だと知りながら、実際には使っていない。SDDはこの「知っているができていない」ギャップを、ワークフローとして組み込むことで解決しようとする。

マルチエージェントのタスク分解と一貫性保護(arXiv:2511.01149)

「Modular Task Decomposition and Dynamic Collaboration in Multi-Agent Systems」論文は、タスク分解時に制約分析と一貫性保護機構を組み込む手法を提案する。

サブタスク間の矛盾を事前に検出し、マルチエージェント環境での「幻覚ループ」を防ぐ。これはSDDが提唱する「仕様書をエージェント間の共通言語にする」アプローチと直接対応する。


コンテキストエンジニアリング:仕様書のその先へ

プロンプトエンジニアリングから「コンテキストエンジニアリング」へ

Anthropicは2025年9月、「Effective Context Engineering for AI Agents」という記事でこの概念の進化を定義した。

コンテキストエンジニアリングとは「最小限の高信号トークンセットで望ましい結果の可能性を最大化すること」だ。プロンプトエンジニアリングが「人間とLLMの単発対話を最適化する」技術だとすれば、コンテキストエンジニアリングは「エージェントと環境全体の情報フローを設計する」技術だ。

Anthropicはコンテキストウィンドウの拡大に伴う「コンテキスト腐敗」現象を警告している。コンテキストが長くなるほど、LLMは後半の情報を正確に想起できなくなるリスクがある。AIに「仕様書全部を読んでください」と渡すだけでは不十分であり、必要な情報を必要なタイミングで提供する設計が重要になる。

推奨される4つの技術

Anthropicが推奨するコンテキスト管理技術は以下の4つだ:

Just-in-Timeリトリーバル: 全仕様書を一度に渡さず、タスクに必要な情報だけを動的に注入する。

会話履歴のコンパクション: 長い会話を要約・圧縮し、コンテキスト品質を維持する。

構造化されたノート取り: 重要な決定・発見を構造化して記録し、後続のAI呼び出しで参照できるようにする。

サブエージェントアーキテクチャ: 専門化したエージェントに分割し、各エージェントのコンテキストを最小化する。

AGENTS.md / CLAUDE.md の設計原則

GitHubの「How to Write a Great agents.md」(2,500以上のリポジトリ分析)は、効果的なコンテキストファイルの6つのコア領域を定義している:

1. コマンド        — ビルド・テスト・リントの実行コマンド
2. テスト          — テスト実行方法と期待される出力
3. プロジェクト構造 — ディレクトリ構成と各ファイルの役割
4. コードスタイル   — フォーマット規約・命名規則
5. Gitワークフロー  — ブランチ戦略・コミットメッセージ規約
6. 境界線          — 常に実行 / 事前確認 / 禁止

ただし注意が必要なのは、2026年にETH Zurichが発表した研究が「LLM生成のコンテキストファイルはタスク成功率に微小なマイナス効果を持つ」と指摘していることだ。コンテキストファイルに書くべきは「ツールや既存コードから推論できない情報のみに限定する」というのが現時点のベストプラクティスとされている。


実践:SDDの仕様書に含めるべき6要素

SDDで作成する仕様書には、以下の6要素が必須とされる:

1. ユーザーストーリーとステークホルダー 「誰が」「何のために」「何を」必要とするかを明確に記述する。

2. 測定可能な成功基準 「パフォーマンスが良くなる」ではなく「LCPが2.5秒以下」のように定量的に定義する。

3. 機能要件と非機能要件 「何をするか」と同時に「何をしないか」(明示的な制約)も記述する。

4. 技術コンテキストと統合ポイント 既存システムとのインターフェース、使用するAPIやライブラリを明記する。

5. 事前条件・事後条件・不変条件 関数・モジュール・システムが満たすべき論理的制約を形式的に定義する。

## ユーザー登録 API(POST /api/users)

### 事前条件
- メールアドレスが未登録であること
- パスワードが8文字以上であること

### 事後条件
- ユーザーがデータベースに保存されている
- 確認メールが送信されている
- レスポンスにJWTが含まれている

### 不変条件
- パスワードはハッシュ化して保存する(平文不可)
- メールアドレスは小文字に正規化する

6. 受け入れテスト 「どうなれば完成か」を検証可能な形で記述する。AIはこれをテストコードの参照点として使う。

「禁止事項」を明示する重要性

Redis作者のantirezが指摘しているように、「良く見えるが悪い解決策についてのヒント」を仕様書に含めることが重要だ。

## 禁止パターン
- グローバル変数の使用(代わりに依存性注入を使う)
- setTimeout での非同期制御(Promiseを使う)
- any 型のキャスト(型推論かunionを使う)
- データベース直接アクセス(必ずリポジトリ層を経由する)

デバッグパラダイムの転換

SDDにおけるデバッグは、コードを修正するのではなく仕様書を修正することを意味する。コードのバグは仕様書のギャップの症状であり、仕様書を修正すれば全ての生成コードに伝播して一貫した修正が行われる。


Anthropicの2026年トレンドレポートが示す未来

Anthropicが2026年1月に発表した「2026 Agentic Coding Trends Report」は、ソフトウェア開発が「GUI以来最大の変革」を迎えていると報告している。

エンジニアの役割は「コードを書く人」から「AIエージェントの調整役」へと移行しつつある。しかしレポートは重要な注意点も示す:完全委任可能なタスクは全体の0〜20%程度であり、残りは積極的な監督・検証・人間の判断が必要だ。

2026年の戦略的優先事項として挙げられているのは:

  • マルチエージェント調整の習得
  • 人間-エージェント監視のスケーリング
  • セキュリティアーキテクチャの組み込み

このレポートが示すのは、SDDが単なる「仕様書の書き方」ではなく、AIエージェントと人間が安全に協働するための組織的・技術的インフラであるということだ。


まとめ:仕様書はコードより重要か

SDDが提示する命題は挑発的だ:仕様書こそが最も重要なエンジニアリング成果物である

従来は「コードを書くこと」がエンジニアの主要な仕事だった。AIがコードを書けるようになった世界では、「何を書くべきかを定義すること」こそがエンジニアの核心的な価値になる。

「コードはAIが書ける。しかし『何を作るべきか』を定義するのは、依然として人間の仕事だ」——この認識の転換こそが、AI駆動開発で成功するための第一歩だ。

「計画に1時間投資することで後の10時間の手戻りを節約できる」という原則は、2026年において最もリターンの高い投資法の一つになっている。Vibe Codingの直感的な楽しさは失われるかもしれない。しかしSDDによって、AIが生成したコードへの信頼性と予測可能性を取り戻すことができる。


参考文献

タイトル情報源日付URL
Beyond the Prompt: An Empirical Study of Cursor RulesMSR 2026 / arXiv2025-12-21https://arxiv.org/abs/2512.18925
Promptware Engineering: Software Engineering for Prompt-Enabled SystemsACM TOSEM / arXiv2025-03-04https://arxiv.org/abs/2503.02400
Guidelines to Prompt LLMs for Code GenerationarXiv2026-01-19https://arxiv.org/abs/2601.13118
Modular Task Decomposition and Dynamic Collaboration in Multi-Agent SystemsarXiv2025-11-03https://arxiv.org/abs/2511.01149
Context Engineering for AI Agents in Open-Source SoftwarearXiv2025-10-24https://arxiv.org/abs/2510.21413
Effective Context Engineering for AI AgentsAnthropic Engineering2025-09-29https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents
2026 Agentic Coding Trends ReportAnthropic2026-01-21https://resources.anthropic.com/hubfs/2026%20Agentic%20Coding%20Trends%20Report.pdf
Spec-Driven Development with AI: Get Started with a New Open Source ToolkitGitHub Blog2025-09-02https://github.blog/ai-and-ml/generative-ai/spec-driven-development-with-ai-get-started-with-a-new-open-source-toolkit/
How to Write a Great agents.md: Lessons from Over 2,500 RepositoriesGitHub Blog2025-11-19https://github.blog/ai-and-ml/github-copilot/how-to-write-a-great-agents-md-lessons-from-over-2500-repositories/
Spec-Driven Development: Unpacking One of 2025’s Key New AI-Assisted Engineering PracticesThoughtworks2025-11https://www.thoughtworks.com/en-us/insights/blog/agile-engineering-practices/spec-driven-development-unpacking-2025-new-engineering-practices
My LLM Coding Workflow Going into 2026Addy Osmani2025-12https://addyosmani.com/blog/ai-coding-workflow/
How to Write a Good Spec for AI AgentsAddy Osmani2025-10https://addyosmani.com/blog/good-spec/
Coding with LLMs in the Summer of 2025antirez2025-07https://antirez.com/news/154
Vibe Coding: Pros, Cons, and 2026 ForecastsPVS-Studio2025-12https://pvs-studio.com/en/blog/posts/1338/
The Evidence Against Vibe Coding: What Research Reveals About AI Code QualitySoftwareSeni2026https://www.softwareseni.com/the-evidence-against-vibe-coding-what-research-reveals-about-ai-code-quality/
Spec-Driven Development with AI Coding Agents: The Workflow Replacing “Prompt and Pray”Java Code Geeks2026-03https://www.javacodegeeks.com/2026/03/spec-driven-developmentwith-ai-coding-agents-the-workflow-replacingprompt-and-pray.html