GitHub spec-kitで始めるSpec-Driven Development入門 - 仕様駆動開発でAI時代の開発を効率化
はじめに
開発プロジェクトを進める際、「何を作るか」は決まっているのに「どう実装するか」で迷ってしまったり、コードを書き始めてから要件が曖昧だったことに気づいたりした経験はありませんか?
GitHubが提供するspec-kitは、そうした課題を解決する「Spec-Driven Development(仕様駆動開発)」という手法を実践するためのツールです。特にAI開発ツール(GitHub Copilot、Claude、ChatGPTなど)と組み合わせることで、アイデアから実装までのプロセスを大幅に効率化できます。
この記事では、spec-kitの基本概念から実際の使い方まで、初心者向けに解説します。
Spec-Driven Developmentとは?
従来の開発手法の課題
従来の開発では、多くの場合「コードを書くこと」が中心となっていました:
- ざっくりとした要件を聞く
- すぐにコーディングを開始
- 実装しながら仕様を詰める
- 後からドキュメントを書く(もしくは書かない)
この方法では、以下のような問題が発生しがちです:
- 実装の途中で「そもそも何を作りたかったのか」が曖昧になる
- チーム内での認識のずれ
- 完成後に「期待していたものと違う」となる
Spec-Driven Developmentのアプローチ
Spec-Driven Development(仕様駆動開発)は、この順序を逆転させます:
従来: アイデア → すぐ実装 → 後から仕様書
spec-kit: アイデア → 仕様 → 計画 → タスク → 実装
重要なのは、「何を(What)」と「なぜ(Why)」を最初に明確化し、「どうやって(How)」は後で決めるという点です。
spec-kitの主な特徴
1. 意図主導(Intent-driven)
技術的な実装方法よりも、「何を実現したいのか」「なぜそれが必要なのか」を重視します。
2. 段階的な洗練(Multi-step refinement)
一気にコードを書くのではなく、以下の段階を踏みます:
- Spec(仕様): 何を・なぜ
- Plan(計画): どのように・何で
- Tasks(タスク): 具体的な作業項目
- Implementation(実装): コーディング
3. AI活用を前提
GitHub Copilot、Claude、ChatGPTなどのAIツールとの連携を前提として設計されています。
実際の使い方
セットアップ
# spec-kitのインストール
npm install -g @github/spec-kit
# または
gem install spec-kit
基本的なワークフロー
1. プロジェクト初期化
specify init my-project
これでmy-project/
ディレクトリが作成され、以下の構造が生成されます:
my-project/
├── spec/ # 仕様ファイル
├── plan/ # 計画ファイル
└── tasks/ # タスクファイル
2. 仕様の作成
cd my-project
specify new spec "ユーザーがタグで検索できる機能"
AIと連携する場合:
specify new spec "タグ検索機能" --ai gpt-4
3. 計画の生成
specify plan spec/tag-search.md
仕様ファイルから技術スタックやアーキテクチャの計画が生成されます。
4. タスクの分解
specify tasks plan/tag-search-plan.md
GitHub Issue形式のタスクファイルが複数生成されます。
5. 実装
通常の開発プロセスで実装を進めます。GitHub Copilotなどを活用することで効率が向上します。
具体例:タグ検索機能の開発
実際にミニ四駆ギャラリーサイトにタグ検索機能を追加する例で見てみましょう。
1. Spec(仕様)段階
## What(何を実現するか)
- ユーザーが複数のタグを組み合わせてミニ四駆投稿を検索できる機能
- 検索結果は最新投稿順で表示され、ページネーション可能
- 絞り込み条件はURLクエリに反映し、シェアやブックマークが容易
## Why(なぜ必要か)
- 投稿数が増えるにつれ、特定のパーツやテーマを探すニーズが高まっている
- タグで作品を横断的に検索することで回遊率を高める
## ガードレール(制約・原則)
- 検索速度は1秒以内を目標
- スマホ表示でも快適に操作できるUI
- 既存のタグ機能との互換性を保つ
2. Plan(計画)段階
## 技術スタック
- バックエンド: 既存のRails + PostgreSQL環境を利用
- フロントエンド: Turbo + Stimulus で非同期検索
- 検索機能: PostgreSQL + tsvectorで高速化
## データモデル
- 既存のPostモデルのacts_as_taggableを活用
- 複数タグ指定のAND検索をサポートするスコープを追加
## UX設計
- 検索フォーム:チェックボックス式タグ一覧
- 検索結果:無限スクロール対応
- URL: /posts?tags=MA,LED
3. Tasks(タスク)段階
自動生成されたタスクの例:
## モデル層の実装
- [ ] Post.tagged_with(tags, any: false)の複数タグ検索スコープ実装
- [ ] DBインデックス追加(tags.name)で高速化
## コントローラ層の実装
- [ ] PostsController#indexにタグパラメータ対応を追加
## フロントエンド実装
- [ ] タグ選択UIをStimulusで構築
- [ ] Turbo Frameに結果を非同期描画
より大きなアイデアでの活用例
「みんながやりたいことを登録し、共通点を見つけるサービス」のような、まだ形になっていないアイデアでも spec-kit は活用できます。
超上段のアイデアから始める場合
specify new spec "バケットリストを共有してコミュニティを作るサービス" --ai claude
AIが以下のような構造化された仕様を生成してくれます:
- Mission: なぜそのサービスが必要か
- Target Users: 誰に向けたサービスか
- Core Value: サービスの核となる価値
- Success Metrics: 成功指標
そこから段階的に技術的な計画、具体的なタスクへと落とし込んでいけます。
AIツールとの連携
spec-kitは様々なAIツールと組み合わせて使用できます:
ツール | 主な用途 |
---|---|
GitHub Copilot | エディタ内でコードやテストの自動補完 |
Claude / GPT-4 | 仕様ドラフトやプランの初期案生成、要件整理 |
Gemini | 複数案比較、言語ベースの思考支援 |
使い分けのコツ
- 仕様・計画段階: Claude、GPT-4で「ユーザーが求める体験」の言語化支援
- 実装段階: GitHub Copilotで効率的なコード生成
まとめ
spec-kitによるSpec-Driven Developmentは:
✅ 明確な仕様から始めることで、開発の迷いを減らす
✅ 段階的なアプローチで複雑なプロジェクトも整理しやすい
✅ AIツールとの連携で生産性を大幅に向上
✅ チーム共有がしやすい構造化されたドキュメント
特に一人開発やスモールチームでは、「何を作るか」を明文化することで開発効率が劇的に改善します。
まずは小さなプロジェクトで spec-kit を試してみて、Spec-Driven Developmentの効果を実感してみてください。
Discussion