はじめに
近年、GitHub Copilotに代表されるAIコーディングエージェントの進化は目覚ましく、多くの開発者がその恩恵を受けています。しかし、AIに大まかな指示を出すだけでは、一見正しく見えるコードが出力されても、実際には意図通りに動作しない、という経験をした方も少なくないのではないでしょうか。
本稿では、このようなAI開発における課題を解決するためのアプローチとして注目される「仕様駆動開発(Spec-driven development)」と、その実践を強力にサポートする新しいオープンソースツールキットについて解説します。
公式GitHub
GitHub:https://github.com/github/spec-kit
参考記事
- タイトル: Spec-driven development with AI: Get started with a new open source toolkit
- 発行元: GitHub Blog
- 著者: Den Delimarsky
- 発行日: 2025年9月2日
- URL: https://github.blog/ai-and-ml/generative-ai/spec-driven-development-with-ai-get-started-with-a-new-open-source-toolkit/
要点
- AIによるコード生成は、曖昧な指示では期待通りに動作しない「vibe-coding(雰囲気コーディング)」という課題を抱えている。
- この課題の解決策として、最初に明確な「仕様」を定義し、それに基づいて開発を進める「仕様駆動開発」が有効である。
- GitHubが公開した「Spec Kit」は、この仕様駆動開発をAIを用いた開発ワークフローに導入するためのオープンソースのツールキットである。
- Spec Kitは「仕様定義 (Specify)」「計画 (Plan)」「タスク分解 (Tasks)」「実装 (Implement)」の4段階のプロセスを通じて、AIによる開発の精度と一貫性を高める。
詳細解説
AI開発の現状と「vibe-coding」という課題
AIコーディングエージェントに「写真共有機能を追加して」といった大まかな指示を出すと、それらしいコードが生成されます。しかし、そのコードはコンパイルできなかったり、意図した挙動の一部しか満たしていなかったり、あるいは採用したい技術スタックと異なっていたりすることがあります。
GitHubではこの状況を「vibe-coding(雰囲気コーディング)」と表現しています。これは、明確な設計図なしに、雰囲気や感覚でAIに指示を出し、それっぽいコードを得るアプローチです。プロトタイピングには便利ですが、信頼性が求められるアプリケーション開発には向きません。
この問題はAIのコーディング能力が低いからではなく、私たちがAIを「検索エンジン」のように扱っていることに起因します。本来AIは、曖昧さを許さない「非常に文字通りのペアプログラマー」として扱うべき存在なのです。
解決策としての「仕様駆動開発」
そこでGitHubが提案するのが「仕様駆動開発(Spec-driven development)」というアプローチです。これは、従来のようにまずコーディングを始めてからドキュメントを作成するのではなく、最初に「仕様」を定義する開発手法です。
ここでの「仕様」とは、単なる静的なドキュメントではありません。プロジェクトと共に進化し、開発の「信頼できる唯一の情報源(Source of Truth)」となる、実行可能な成果物として扱われます。AIはこの仕様書を契約書のように扱い、コードの生成、テスト、検証を行います。これにより、開発者の推測やAIの誤解が減り、高品質なコードを生み出すことができるのです。
新ツールキット「Spec Kit」による4段階の開発プロセス
「Spec Kit」は、この仕様駆動開発をAIワークフローに持ち込むためのオープンソースツールキットです。GitHub Copilot、Claude Code、Gemini CLIなど、好みのAIツールと組み合わせて利用できます。Spec Kitは、以下の4つの明確なフェーズで開発プロセスを構造化します。
- Specify (仕様定義)
最初に、開発者は「何を」「なぜ」作るのかという、プロジェクトの目的を大まかに記述します。ユーザーは誰で、どんな問題を解決するのか、どのような体験を提供するのか、といった点に焦点を当てます。技術的な詳細には触れません。これを受け、AIが詳細な仕様書を生成します。この仕様書は、プロジェクトが進むにつれて更新されていく生きたドキュメントとなります。 - Plan (計画)
次に、技術的な側面を定義します。開発者は使用したい技術スタック、アーキテクチャ、準拠すべき制約(社内標準やパフォーマンス要件など)をAIに伝えます。すると、AIはそれらの要件を満たす包括的な技術計画を生成します。複数の計画案を比較検討することも可能です。 - Tasks (タスク分解)
AIは、フェーズ1で作成した仕様書とフェーズ2の技術計画をもとに、実装可能な単位の具体的なタスクリストを生成します。「認証機能を構築する」といった大きなものではなく、「メール形式を検証するユーザー登録エンドポイントを作成する」といった、具体的でテスト可能なレベルまで分解されるのが特徴です。 - Implement (実装)
最後に、AIが、分解されたタスクを一つずつ(あるいは並行して)実装します。開発者の役割は、一度に大量のコードを確認することではなく、特定の課題を解決する小さな変更をレビューすることに変わります。仕様、計画、タスクが明確であるため、AIは迷うことなく実装を進めることができます。
このプロセスの重要な点は、各フェーズで人間が必ず介在し、AIの生成物をレビューし、修正を加えることです。AIが成果物を作り、人間がその正しさを保証する、という協力関係が成り立ちます。
Spec Kitの具体的な使い方
Spec Kitは、コマンドラインツールを通じて利用します。セットアップは簡単です。
1.インストールと初期化
まず、以下のコマンドでツールをインストールし、プロジェクトを初期化します。
uvx --from git+[https://github.com/github/spec-kit.git](https://github.com/github/spec-kit.git) specify init <PROJECT_NAME>
2.各フェーズの実行
プロジェクト内で、シンプルなコマンドを使って各フェーズを進めます。
- /specify コマンドで、大まかなプロンプトから仕様書を生成します。
- /plan コマンドで、技術的な方向性を与え、計画書を生成します。
- /tasks コマンドで、仕様と計画からタスクリストを生成します。
この構造化されたワークフローにより、曖昧なプロンプトが、AIが確実に実行できる明確な意図へと変換されるのです。
このアプローチが特に有効な3つのシナリオ
仕様駆動開発は、特に以下の3つの場面で強力な効果を発揮します。
- 新規プロジェクト (Greenfield)
ゼロからプロジェクトを始める際、最初から仕様と計画を明確にすることで、AIが一般的なパターンに流されず、本当に意図した通りのものを構築できます。 - 既存システムへの機能追加
複雑な既存コードに機能を追加する際に最も強力です。新機能の仕様を定義することで、既存システムとの相互作用が明確になります。計画段階でアーキテクチャ上の制約を組み込めば、後付け感のない、一貫性のあるコードを追加できます。 - レガシーシステムの刷新
元の設計思想が失われがちなレガシーシステムを再構築する際に役立ちます。本質的なビジネスロジックを現代的な仕様として抽出し、新しいアーキテクチャを計画することで、AIが技術的負債を引き継ぐことなくシステムを再構築できます。

まとめ
本稿で紹介した「仕様駆動開発」と、それを支援するツールキット「Spec Kit」は、AIを単なるコード生成ツールとしてではなく、開発のパートナーとしてより効果的に活用するための新しいアプローチです。これは、開発の源泉を従来の「コード」から、開発者の「意図」へとシフトさせる大きな変化の始まりと言えるでしょう。
AIによって仕様書が自動的にコードへと変換される未来では、仕様書そのものが最も重要な成果物になります。Spec Kitは、その未来を現実のものにするための重要な一歩です。
このプロジェクトはまだ実験段階であり、今後はVS Codeへの統合や、より使いやすいワークフローの検討などが進められていく予定です。AIとの共同作業を次のレベルへ引き上げるために、この新しい開発スタイルを試してみてはいかがでしょうか。