## 概要 **仕様駆動開発**(Spec-Driven Development / SDD)とは、最初に仕様を定義し、その仕様を唯一の基準(Source of Truth)としてコード・テスト・ドキュメントを生成・更新していく開発手法。従来の「コードが唯一の真実」という考え方から、「仕様書が唯一の真実」へとパラダイムシフトする。 [[AI Agent]] にコード実装を進めさせる際に特に効果的とされており、AI時代の新しいソフトウェア開発手法として注目されている。 ## 開発手法の特徴 仕様駆動開発では以下のような流れで開発を進める: 1. **仕様の作成**: コードを書く前に、実装すべき機能・振る舞い・制約などを明確に文書化 2. **仕様をベースにした実装**: 仕様書を参照しながらコードを実装(人間または[[AI Agent]]が担当) 3. **仕様との整合性チェック**: 実装が仕様通りかを継続的に検証 4. **仕様の更新**: 要件変更時は仕様書を更新し、それに基づいてコードを修正 仕様は実行可能な形式(Executable Specification)で記述されることもあり、アーキテクチャレベルの決定事項となる。 ## メリット ### 開発効率の向上 - **要件の明確化と手戻り削減**: 開発前に仕様を明確にすることで、実装後の大幅な修正を防ぐ - **チーム内の共通認識醸成**: 仕様書が共通言語となり、認識齟齬を減らす ### 保守性・持続性の向上 - **属人化の防止**: 仕様書があることで、新メンバーのオンボーディングが円滑になる - **設計情報の蓄積**: テストコードや設計情報が仕様として残り、将来的な引き継ぎ・改修が容易 ### AI連携の強化 - **AIとの協業が容易**: 明確な仕様があることで、[[AI Agent]]が自律的に実装を進めやすくなる - **品質の予測性向上**: AIが生成するコードの品質を仕様ベースで管理できる ### プロジェクトの透明性 - **進捗の可視化**: 仕様ベースで実装状況を把握しやすい - **設計・開発・ドキュメント・テストの同期**: すべてが仕様を中心に統一される ## デメリット ### 初期コストの増加 - **仕様作成の工数**: 開発開始前に詳細な仕様を書く時間が必要 - **学習コスト**: 仕様記述の方法やツールの使い方を習得する必要がある ### 運用負荷 - **仕様更新の手間**: 要件変更のたびに仕様書を最新に保つ作業が発生 - **メンテナンスの二重管理**: コードと仕様の両方を管理する必要がある ### 品質依存のリスク - **仕様が未熟だと逆効果**: 不完全な仕様では、プロジェクトが破綻したりAIが同じミスを繰り返す可能性 - **レビュー時間の増加**: 仕様とコードの両方をレビューする必要があり、レビュー時間が倍増する場合も ### 適用範囲の限界 - **小規模開発には不向き**: プロトタイプやPoC開発では、仕様作成コストが割に合わない - **既存の大規模コードベースには不向き**: 新規プロジェクトでは効果的だが、既存の大規模システムへの適用は困難 - **UI中心の開発には不向き**: 視覚的な要素が重要な場合、文書ベースの仕様では不十分 ### AIの限界 - **AIが仕様を守らない場合がある**: 実際には、AIエージェントが常に仕様通りに実装するとは限らない - **認知的負荷の増加**: エンジニアにとって新しい複雑性と思考の転換を強いる ## 関連概念 - [[spec-kit]]: GitHubが提供する仕様駆動開発のためのツール - Kiro: 仕様駆動開発をサポートするツール - Tessl: 仕様駆動開発に対応したツール ## 参考資料 - [仕様駆動開発(Spec-Driven Development)とは何か?従来の開発手法との違いから見るAI時代に注目される理由 | 株式会社一創](https://www.issoh.co.jp/tech/details/8740/) - [コードを書く前に"仕様"を書く。AI時代の新潮流「仕様駆動開発」って何?|Tech千一夜|ソフトウェアの作り方チャンネル](https://note.com/techsenichiya/n/n4e8e225f1e70) - [仕様駆動開発の理想と現実、そして向き合い方 - Speaker Deck](https://speakerdeck.com/gotalab555/shi-yang-qu-dong-kai-fa-noli-xiang-toxian-shi-sositexiang-kihe-ifang) - [「仕様駆動開発」を現場に取り入れる際の重要なポイント | AI駆動開発カンファレンス2025秋講演レポート](https://kyrios.jtp.co.jp/blog/aiddcon2025_003) - [Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl](https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html) - [Spec-Driven Development: The Waterfall Strikes Back](https://marmelab.com/blog/2025/11/12/spec-driven-development-waterfall-strikes-back.html) - [Spec-driven development: Unpacking one of 2025's key new AI-assisted engineering practices | Thoughtworks](https://www.thoughtworks.com/en-us/insights/blog/agile-engineering-practices/spec-driven-development-unpacking-2025-new-engineering-practices) - [Diving Into Spec-Driven Development With GitHub Spec Kit - Microsoft for Developers](https://developer.microsoft.com/blog/spec-driven-development-spec-kit)