💫

GitHub spec-kitで始めるSpec-Driven Development入門 - 仕様駆動開発でAI時代の開発を効率化

に公開

はじめに

「何を作るか」は決まっているのに「どう実装するか」で迷ってしまう経験はありませんか?

GitHubが開発したspec-kitは、そうした課題を解決する「Spec-Driven Development(仕様駆動開発)」を実践するためのツールキットです。特にAI開発ツール(Claude Code、GitHub Copilot、Cursorなど)と組み合わせることで、アイデアから実装までのプロセスを大幅に効率化できます。

この記事では、spec-kitの基本概念から実際の使い方まで、初心者向けに解説します。

Spec-Driven Developmentとは?

従来の開発との違い

従来の開発:

アイデア → すぐ実装 → 後から仕様書(書かない場合も)

Spec-Driven Development:

アイデア → 仕様(/specify) → 計画(/plan) → タスク(/tasks) → 実装

重要なのは、「何を(What)」と「なぜ(Why)」を最初に明確化し、「どうやって(How)」は後で決めるという点です。

核となる哲学

  • Intent-driven development: 技術スタックより先に目的と意図を明確にする
  • Rich specification creation: 制約やガードレールを含む豊富な仕様作成
  • Multi-step refinement: 一発生成ではなく段階的な洗練プロセス
  • AI capabilities: 高度なAIモデルとの密な連携

セットアップと前提条件

必要な環境

プロジェクトの初期化

# 基本的な初期化
uvx --from git+https://github.com/github/spec-kit.git specify init my-project

# 現在のディレクトリで初期化
uvx --from git+https://github.com/github/spec-kit.git specify init --here

# AIエージェントを指定して初期化
uvx --from git+https://github.com/github/spec-kit.git specify init my-project --ai claude

システムチェック

# インストール済みツールの確認
uvx --from git+https://github.com/github/spec-kit.git specify check

基本ワークフロー

1. プロジェクト初期化

# プロジェクト作成(Claudeを使用する場合)
uvx --from git+https://github.com/github/spec-kit.git specify init my-app --ai claude

# 作成されるファイル構造
my-app/
├── memory/
│   ├── constitution.md          # 開発憲法
│   └── constitution_update_checklist.md
├── scripts/                     # 自動化スクリプト
├── specs/                       # 仕様ディレクトリ
└── templates/                   # テンプレート
    ├── spec-template.md
    ├── plan-template.md
    └── tasks-template.md

2. AIエージェントの起動

cd my-app

# Claude Codeの場合
claude

# Cursorの場合
cursor .

重要: この時点で /specify, /plan, /tasks, /constitution などのコマンドが利用可能になります。

3. 仕様作成 (/specify)

AIエージェント内で以下のようなプロンプトを実行:

/specify Build an application that can help me organize my photos in separate photo albums. Albums are grouped by date and can be re-organized by dragging and dropping on the main page. Albums are never in other nested albums. Within each album, photos are previewed in a tile-like interface.

重要なポイント:

  • 何を作りたいか、なぜ必要かに焦点を当てる
  • 技術スタックは言及しない
  • できるだけ具体的に記述する

4. 計画立案 (/plan)

仕様が完成したら、技術的な実装計画を策定:

/plan The application uses Vite with minimal number of libraries. Use vanilla HTML, CSS, and JavaScript as much as possible. Images are not uploaded anywhere and metadata is stored in a local SQLite database.

この段階で以下が生成されます:

  • data-model.md: データモデル設計
  • contracts/: API仕様
  • research.md: 技術調査結果
  • quickstart.md: 実装ガイド

5. タスク分解 (/tasks)

具体的な作業項目に分解:

/tasks Create an actionable task list from the plan, breaking it down into implementable steps.

6. 実装

この時点で、AIエージェントが自動的に:

  • 新しいブランチを作成
  • コードの実装を開始
  • 必要なファイル構造を生成

実際の開発例:フォトアルバムアプリ

Step 1: 仕様定義

/specify 
家族の思い出を整理するフォトアルバムアプリを作りたい。

機能要件:
- 写真を日付別のアルバムに自動整理
- アルバムはドラッグ&ドロップで並び替え可能
- 各アルバム内では写真をタイル表示
- ネストしたアルバムは作成しない
- シンプルで直感的な操作性

対象ユーザー:
- 技術に詳しくない家族メンバー
- スマートフォンでも快適に使用したい

制約:
- オフラインでも動作
- プライバシー重視(写真はローカル保存)

Step 2: 技術計画

/plan 
技術スタック:
- フロントエンド: Vite + vanilla JavaScript
- データベース: SQLite(ローカル)
- UI: CSS Grid + Flexbox
- ファイル処理: File API

制約:
- 外部サービス依存なし
- レスポンシブデザイン必須
- ブラウザサポート: モダンブラウザ

Step 3: タスク生成

/tasks
計画に基づいて以下のタスクに分解してください:

1. プロジェクトセットアップ
2. データベース設計と実装
3. 写真アップロード機能
4. アルバム表示機能
5. ドラッグ&ドロップ実装
6. レスポンシブ対応
7. テスト実装

主要コマンドの詳細解説

/constitution - 開発憲法の管理

プロジェクトの開発憲法を表示・更新できます:

/constitution

このコマンドを実行すると:

  • 現在の memory/constitution.md の内容を表示
  • 必要に応じて憲法の更新提案
  • 開発方針の確認と調整

使用例

/constitution 
このプロジェクトではセキュリティを最重要視し、
すべての外部API呼び出しは暗号化通信のみ使用すること。
また、ユーザーデータはローカルでのみ保存する。

その他の利用可能コマンド

AIエージェント起動後に使用可能な主要コマンド:

  • /specify - 仕様作成・更新
  • /plan - 実装計画の策定
  • /tasks - タスクの生成・分解
  • /constitution - 開発憲法の管理
  • /research - 技術調査(一部エージェント)

開発フェーズと活用シーン

Phase 1: 0-to-1 Development (新規開発)

  • 新しいアイデアをゼロから形に
  • プロトタイプの迅速な構築

Phase 2: Creative Exploration (創造的探求)

  • 複数の実装パターンを並行検討
  • アーキテクチャの比較検証

Phase 3: Iterative Enhancement (反復改善)

  • 既存システムの段階的改善
  • レガシーシステムのモダナイゼーション

実践的なTips

効果的な仕様作成のコツ

  1. 具体的なシナリオを含める
/specify 
レシピ検索アプリ

使用シーン:
- 冷蔵庫の余り物で料理を作りたい主婦
- 食材を写真で撮って検索
- アレルギー情報も考慮した検索結果
  1. 成功指標を明確に
成功の定義:
- 検索精度85%以上
- 検索時間3秒以内
- 月間アクティブユーザー1000人
  1. 制約を明記
制約条件:
- 開発期間3ヶ月
- 予算上限50万円
- 開発者2名体制

AIエージェント選択のガイド

エージェント 得意分野 適用シーン
Claude Code 仕様分析・アーキテクチャ設計 複雑なシステム設計
GitHub Copilot コード生成・リファクタリング 実装フェーズ
Cursor 統合開発環境 エンドツーエンド開発
Gemini CLI 多角的分析・比較検討 意思決定支援

トラブルシューティング

よくある問題と解決法

問題: /specify コマンドが認識されない

# 解決法: AIエージェントが正しく起動されているか確認
cd your-project
claude  # または使用しているエージェント

問題: Git認証エラー (Linux)

# Git Credential Managerの設定
wget https://github.com/git-ecosystem/git-credential-manager/releases/download/v2.6.1/gcm-linux_amd64.2.6.1.deb
sudo dpkg -i gcm-linux_amd64.2.6.1.deb
git config --global credential.helper manager

問題: 生成される仕様が曖昧

# より具体的なプロンプトを使用
/specify [詳細な要求] + [具体的なシナリオ] + [制約条件] + [成功指標]

まとめ

GitHub spec-kitを使ったSpec-Driven Developmentは:

明確な仕様から始めることで開発の迷いを大幅に削減
段階的アプローチで複雑なプロジェクトも体系的に整理
AI連携による生産性の飛躍的向上
チーム共有しやすい構造化されたドキュメント生成

特に一人開発やスモールチームでは、「何を作るか」を明文化することで開発効率が劇的に改善します。

まずは小さなプロジェクトでspec-kitを試し、Spec-Driven Developmentの効果を体感してみましょう。

参考リンク

Discussion