GitHub Spec Kitで仕様駆動開発を体験する

はじめに

GitHubが2025年9月2日に発表したSpec Kitは、仕様駆動開発(Spec-Driven Development)を支援する新しいオープンソースツールキットとなっている。

従来の開発では、要求仕様から直接コードを書き始めることが多く、プロンプトに依存した「vibe-coding」になりがちだった。Spec Kitは、仕様を「実行可能」にすることで、開発意図自体をソフトウェア開発の中核に据え、開発時間を短縮し、プロンプトエンジニアリングの負担を軽減した、AIコーディングエージェントとの協調開発を可能にする。

GitHubの公式ブログでは「Build high-quality software faster」というスローガンで、製品シナリオに集中し、差別化されていないコードの記述を減らすことを目指している。

今回は、Spec Kitを使ってTODOアプリを作成し、実際の仕様駆動開発ワークフローを体験してみる。

環境

Windows 11 Professional
WSL2 (Ubuntu 24.04 LTS)
Python 3.11+
uv 0.4+
Git
GitHub Copilot (VS Code)
→使用したモデル: Claude Sonnet 4

Spec Kitとは

仕様駆動開発の概念

Spec-Driven Developmentは、従来のコード中心の開発アプローチを根本的に転換する。公式ドキュメントによれば、以下のように説明されている。

For decades, code has been king. Specs were scaffolding that got built and then discarded once the real work (coding) began.
何十年もの間、コードが王様だった。仕様は実際の作業(コーディング)が始まると構築・破棄される足場に過ぎなかった

しかし、Spec-Driven Developmentでは異なるアプローチを取る。

Spec-Driven Development (SDD) inverts this power structure. Specifications don’t serve code—code serves specifications. The (Product Requirements Document-Specification) PRD isn’t a guide for implementation; it’s the source that generates implementation. Technical plans aren’t documents that inform coding; they’re precise definitions that produce code. This isn’t an incremental improvement to how we build software. It’s a fundamental rethinking of what drives development.
仕様駆動開発(SDD)は、この力関係を逆転させる。仕様はコードに仕えるのではなく、コードが仕様に仕える。PRD(製品要求仕様書)は実装のガイドではなく、実装を生成するソースである。技術計画書はコーディングを知らせる文書ではなく、コードを生成する正確な定義である。これはソフトウェアの構築方法に対する段階的改善ではない。開発を駆動するものについての根本的な再考である。

引用元: Complete Spec-Driven Development Methodology

コア原則

Spec Kitのコア原則は以下の要素で構成される。

  • 意図駆動開発
    「how」の前に「what」を仕様で定義
  • リッチな仕様作成
    ガードレールと組織原則を使用
  • 多段階の改良
    プロンプトからの一発生成ではなく段階的な洗練
  • 高度なAIモデル能力
    仕様解釈のための先進的AI機能への依存

開発フェーズ

Spec Kitでは、開発を3つの主要フェーズに分けて考える。

フェーズ種類説明
0-to-1 DevelopmentGreenfield開発高レベル要求から本格運用アプリケーションまでを生成
Creative Exploration並行実装多様なソリューション探索、複数技術スタック・アーキテクチャ対応
Iterative EnhancementBrownfield近代化機能の反復追加、レガシーシステム近代化

参考: Development Phases - GitHub Spec Kit

開発ワークフロー

Spec Kitでは以下の4段階のワークフローで開発を進める。

🎯 Specify
仕様作成

📋 Plan
計画作成

📝 Tasks
タスク分解

⚙️ Implement
実装と検証

✅ 完成

「何を」「なぜ」作るかを記述

技術的な実装計画を生成

実装可能な小さなタスクに分解

エージェントがタスクを実装

  1. Specify(仕様作成)
    「何を」「なぜ」作るかを記述
  2. Plan(計画作成)
    技術的な実装計画を生成
  3. Tasks(タスク分解)
    実装可能な小さなタスクに分解
  4. Implement(実装と検証)
    エージェントがタスクを実装

実験的目標

GitHubはSpec Kitを通じて以下の実験的目標を掲げている

技術非依存性(Technology Independence)

  • 多様な技術スタックでのアプリケーション作成
  • 特定技術・言語・フレームワークに依存しないプロセスの検証

エンタープライズ制約(Enterprise Constraints)

  • ミッションクリティカルなアプリケーション開発の実証
  • 組織制約(クラウドプロバイダー、技術スタック、エンジニアリング慣行)の組み込み
  • エンタープライズデザインシステムとコンプライアンス要件のサポート

ユーザー中心開発(User-centric Development)

  • 異なるユーザーコホートと好みに対応したアプリケーション構築
  • vibe-codingからAIネイティブ開発まで様々な開発アプローチのサポート

創造的・反復プロセス(Creative & Iterative Processes)

  • 並行実装探索の概念検証
  • 堅牢な反復機能開発ワークフローの提供
  • アップグレードと近代化タスクを扱うプロセスの拡張

Spec Kitのインストール

前提条件

公式ドキュメントに記載されている前提条件

前提条件の確認とインストール

# Python 3.11+の確認
python3 --version
# uvのインストール
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.cargo/env
# Gitの確認
git --version

Spec Kitの初期化

# プロジェクトディレクトリの作成
mkdir ~/spec-kit-demo
cd ~/spec-kit-demo
# Spec Kitでプロジェクトを初期化
uvx --from git+https://github.com/github/spec-kit.git specify init todo-app
spec-kit-01

実行すると、使用するコーディングエージェントの選択を求められる。 今回は GitHub Copilotを選択する。

? Which agent would you like to use?
❯ GitHub Copilot
  Claude Code  
  Gemini CLI
spec-kit-02

GitHub Copilotを選択すると、todo-appフォルダが作成され、以下のファイル構造が生成される。

todo-app/
├── .github/
│   └── prompts/
│       ├── specify.prompt.md        # 仕様作成用のプロンプトテンプレート
│       ├── plan.prompt.md           # 技術計画作成用のプロンプトテンプレート  
│       └── tasks.prompt.md          # タスク分解用のプロンプトテンプレート
├── memory/
│   ├── constitution.md              # プロジェクトの制約・原則・技術標準
│   └── constitution_update_checklist.md  # 制約更新時のチェックリスト
├── scripts/
│   ├── common.sh                    # 共通スクリプト関数
│   ├── setup-plan.sh               # 計画段階のセットアップスクリプト
│   ├── create-new-feature.sh       # 新機能作成の自動化スクリプト
│   └── update-agent-context.sh     # エージェントコンテキスト更新スクリプト
└── templates/
    ├── spec-template.md             # 仕様書作成のテンプレート
    ├── plan-template.md             # 技術計画書のテンプレート
    ├── tasks-template.md            # タスクリストのテンプレート
    └── agent-file-template.md       # エージェント向けファイルのテンプレート

各ディレクトリの役割

  • .github/prompts/: AIエージェントが各段階で使用するプロンプトテンプレート
    • 仕様作成、技術計画、タスク分解の各段階で適切な質問と形式を提供
  • memory/: プロジェクトの記憶・制約管理
    • 技術標準、組織原則、エンタープライズ制約を保持
  • scripts/: 開発ワークフローの自動化
    • Spec Kitの各段階を効率的に実行するためのシェルスクリプト
  • templates/: ドキュメント作成の標準化
    • 一貫性のある仕様書・計画書・タスクリストを作成するための雛形
spec-kit-03

TODOアプリの仕様作成

プロジェクトディレクトリに移動

cd todo-app

VS Codeでプロジェクトを開く

code .

仕様の作成(Specify)

GitHub CopilotのChatで/specifyコマンドを使用して仕様を作成する。公式ブログでは「Focus on the “what” and “why” of your project, not the technical details」と述べている。

実際の例:TODOアプリを作成する場合

/specify 

シンプルで使いやすいTODOアプリを作成したい。

**何を作るか:**
- タスクの追加・編集・削除機能
- タスクの完了状態管理(未完了/完了)
- カテゴリ別タスク分類(仕事、個人、買い物など)
- 期限設定と期限切れアラート
- 検索・フィルタリング機能

**なぜ作るか:**
- 日々のタスク管理を効率化したい
- やるべきことを忘れることを防ぎたい
- 達成感を得られるタスク管理体験を提供する

**誰が使うか:**
- タスク管理をしたい個人ユーザー
- 忙しい会社員や学生
- プロジェクト管理をするチームメンバー

**どのように使われるか:**
- 朝に一日のタスクを確認・追加
- 作業中にタスクの進捗を更新
- 夕方に完了したタスクをチェック
- 週次で振り返りと次週の計画立案

**成功の定義:**
- ユーザーが毎日アプリを使用する
- タスクの完了率が向上する
- 忘れ物やタスクの漏れが減少する

このプロンプトを実行すると、GitHub Copilotがテンプレートを参照して詳細な仕様書を生成し、specs/ディレクトリ以下に保存される。

GitHub Copilotであれば、Agentモードで /specifyコマンドを入力しプロンプトで入力すればよい。

プロンプトログ

プロンプトの指示に従って、新しい機能の仕様作成とブランチ作成を開始します。

まず、create-new-feature.sh スクリプトを実行して、新しいブランチと仕様ファイルを作成します。


cd /home/kbushi/workspace/todo-apps-with-spec-kit/todo-app && scripts/create-new-feature.sh --json "シンプルで使いやすいTODOアプリを作成したい。**何を作るか:**- タスクの追加・編集・削除機能- タスクの完了状態管理(未完了/完了)- カテゴリ別タスク分類(仕事、個人、買い物など)- 期限設定と期限切れアラート- 検索・フィルタリング機能**なぜ作るか:**- 日々のタスク管理を効率化したい- やるべきことを忘れることを防ぎたい- 達成感を得られるタスク管理体験を提供する**誰が使うか:**- タスク管理をしたい個人ユーザー- 忙しい会社員や学生- プロジェクト管理をするチームメンバー**どのように使われるか:**- 朝に一日のタスクを確認・追加- 作業中にタスクの進捗を更新- 夕方に完了したタスクをチェック- 週次で振り返りと次週の計画立案**成功の定義:**- ユーザーが毎日アプリを使用する- タスクの完了率が向上する- 忘れ物やタスクの漏れが減少する"
スクリプトの実行権限がないため、まずスクリプトに実行権限を付与します。


cd /home/kbushi/workspace/todo-apps-with-spec-kit/todo-app && chmod +x scripts/create-new-feature.sh
すべてのスクリプトに実行権限を付与して、再度実行してみます。


cd /home/kbushi/workspace/todo-apps-with-spec-kit/todo-app && chmod +x scripts/*.sh
今度は引数を適切にエスケープして実行します。


cd /home/kbushi/workspace/todo-apps-with-spec-kit/todo-app && scripts/create-new-feature.sh --json 'シンプルで使いやすいTODOアプリを作成したい。**何を作るか:**- タスクの追加・編集・削除機能- タスクの完了状態管理(未完了/完了)- カテゴリ別タスク分類(仕事、個人、買い物など)- 期限設定と期限切れアラート- 検索・フィルタリング機能**なぜ作るか:**- 日々のタスク管理を効率化したい- やるべきことを忘れることを防ぎたい- 達成感を得られるタスク管理体験を提供する**誰が使うか:**- タスク管理をしたい個人ユーザー- 忙しい会社員や学生- プロジェクト管理をするチームメンバー**どのように使われるか:**- 朝に一日のタスクを確認・追加- 作業中にタスクの進捗を更新- 夕方に完了したタスクをチェック- 週次で振り返りと次週の計画立案**成功の定義:**- ユーザーが毎日アプリを使用する- タスクの完了率が向上する- 忘れ物やタスクの漏れが減少する'
素晴らしい!スクリプトが正常に実行され、JSONの出力を取得できました。

ブランチ名: 001-todo
仕様ファイルパス: spec.md
次に、仕様テンプレートファイルを読み込んで、仕様の構造を理解します。

spec-template.md の読み取り

テンプレートを確認しました。次に、提供された機能説明を基に仕様ファイルを作成します。

spec.md が作成されました

ファイルがすでに存在するため、既存の内容を確認してから編集します。

spec.md の読み取り

既存のファイルはテンプレートのままです。内容を具体的な仕様に置き換えます。

spec.md+32-4
spec.md+13-5
spec.md+16-11
spec.md+13-13
完了レポート
✅ Spec-Driven Developmentの最初のフェーズが正常に完了しました!

作成結果:
ブランチ名: 001-todo
仕様ファイル: spec.md
作成された仕様の概要:
機能名: 個人向けTODOアプリケーション

主要機能:

タスクの追加・編集・削除
完了状態管理
カテゴリ別分類
期限設定とアラート
検索・フィルタリング
定義されたユーザーシナリオ: 7つの受け入れシナリオと5つのエッジケース

機能要件: 13項目(うち2項目は明確化が必要)

主要エンティティ: Task、Category、User

明確化が必要な点:
アカウント管理の必要性(個人利用 vs マルチユーザー)
データ同期機能(オフライン利用 vs 複数デバイス対応)
次のフェーズへの準備:
仕様書が作成され、新しいブランチ001-todoに切り替わっています。次は計画フェーズ(planning)に進むことができます。

この仕様書は、ビジネスステークホルダー向けに技術詳細を避けてユーザー価値にフォーカスした内容となっており、開発チームが計画を立てるのに十分な情報を提供しています。

これで、specs/001-todo/spec.mdが定義された。

技術的制約の設定

プロジェクト固有の制約をmemory/constitution.mdに追加する。
公式ブログでは「If your company standardizes on certain technologies, this is where you say so. If you’re integrating with legacy systems, have compliance requirements, or have performance targets you need to hit … all of that goes here」と説明している。

# TODOアプリ Constitution

## 基本原則

### I. React + TypeScript技術構成
フロントエンド技術スタック
- フロントエンド: React + TypeScript(Webアプリ)
- バックエンド: Node.js + Express
- データベース: SQLite(ローカル)+ Firebase(同期)
- UI: Material Design準拠

### II. リアルタイム・オフライン優先
リアルタイム同期とオフライン機能を優先
- リアルタイム同期(複数デバイス間)
- オフライン機能(ネットワーク切断時も利用可能)
- 日本語入力対応
- ダークモード対応

### III. セキュリティ・プライバシー保護(必須要件)
セキュリティとプライバシー保護は必須
- タスクデータの暗号化
- ユーザー認証(Google/Apple Sign-in)
- データエクスポート機能(JSON/CSV)
- プライバシー保護(個人データの適切な取り扱い)

### IV. パフォーマンス基準
パフォーマンス要件の厳守
- アプリ起動時間2秒以内
- タスク追加・編集時の応答時間1秒以内
- 1万件のタスクデータでも快適動作
- 同期処理は5秒以内で完了

**バージョン**: 1.0.0 | **制定日**: 2025-09-07 | **最終改定**: 2025-09-07

実装計画の作成

技術計画の生成(Plan)

GitHub Copilot/planコマンドを実行。公式の例を参考にすると以下のとおりである。

TODOアプリの場合は次のようになる。

公式ブログでは「you provide the coding agent with your desired stack, architecture, and constraints, and the coding agent generates a comprehensive technical plan」と説明している。

/plan

以下の技術仕様でTODOアプリを実装してください

**技術スタック:**
- React + TypeScript(Webアプリ)
- Node.js + Express(API)
- SQLite(ローカルデータ)+ Firebase(同期・バックアップ)
- Material-UI(UIコンポーネント)
- React Hook Form(フォーム管理)

**アーキテクチャ:**
- Clean Architecture(レイヤー分離)
- Redux Toolkit(状態管理)
- Custom Hooks(ビジネスロジック分離)
- Repository Pattern(データアクセス層)

**機能的要件:**
- オフライン機能(ネットワーク切断時も利用可能)
- リアルタイム同期(複数デバイス間)
- 日本語入力対応
- レスポンシブデザイン(デスクトップ・モバイル対応)

**パフォーマンス制約:**
- 起動時間2秒以内
- タスク追加・編集時の応答時間1秒以内
- 10,000件のタスクでもスムーズ動作

**セキュリティ要件:**
- ユーザー認証(Google/Apple Sign-in)
- データ暗号化(ローカル・通信)
- データエクスポート機能(プライバシー保護対応)

このコマンドにより、Copilotが詳細な実装計画を生成し、specs/001-todo/plan.mdに保存される。

プロンプトログ

プロンプトの指示に従って、実装計画の作成を開始します。まず、setup-plan.shスクリプトを実行します。


cd /home/kbushi/workspace/todo-apps-with-spec-kit/todo-app && scripts/setup-plan.sh --json
JSONの結果を取得しました。次に、機能仕様を読み込んで分析します。

spec.md の読み取り

次に、constitutional requirementsを理解するため、constitution.mdを読み込みます。

constitution.md の読み取り

次に、実装計画テンプレートを読み込みます。

plan.md の読み取り

テンプレートを確認しました。今度はテンプレートの内容を基に実装計画を作成していきます。まず、テンプレートテキストを実際の機能の詳細で置き換えます。

plan.md+3-3
plan.md+1-1
plan.md+9-9
plan.md+19-19
plan.md+1-1
Phase 0の実行を開始します。research.mdファイルを作成します。

research.md が作成されました

Phase 1の実行を開始します。まず、data-model.mdを作成します。

data-model.md が作成されました

次に、contractsディレクトリとAPIコントラクトを作成します。

contracts が作成されました

api.yaml が作成されました

quickstart.mdファイルを作成します。

quickstart.md が作成されました

Progress Trackingを更新します。

plan.md+6-6
最後にPhase 2のタスク計画アプローチを記述します。

plan.md+35-11
最後に、作成したファイル一覧を確認します。

001-todo の読み取り

contracts の読み取り

完了レポート
✅ 実装計画フェーズが正常に完了しました!

実行結果:
ブランチ: 001-todo
計画ファイル: plan.md
生成された成果物:
Phase 0: Research & Analysis ✅
research.md: 技術スタック決定事項、代替案検討、アーキテクチャパターン詳細
React + TypeScript, Node.js + Express, SQLite + Firebase構成
Clean Architecture + Repository Pattern採用
パフォーマンス・セキュリティ要件への技術的対応策
Phase 1: Design & Contracts ✅
data-model.md: エンティティ設計、リレーションシップ、インデックス設計

User, Category, Task, Subtask エンティティ定義
暗号化対象フィールド、同期・競合解決仕様
contracts/api.yaml: OpenAPI 3.0 完全仕様

認証、ユーザー、カテゴリ、タスク、同期 API定義
全エンドポイント、スキーマ、エラーレスポンス定義
quickstart.md: 開発ガイド、サンプルコード、テストシナリオ

セットアップ手順、使用例、React コンポーネント例
統合テスト、パフォーマンステスト、オフラインテスト仕様
Constitution Check ✅
全項目PASS: 複雑性、アーキテクチャ、テスト、可観測性、バージョニング要件満足
技術的制約対応: 起動2秒、操作1秒、10,000件対応の具体的実装戦略
Phase 2 準備完了 ✅
タスク生成戦略: 推定92-128タスク、10カテゴリ分類
実行順序: TDD原則、依存関係考慮、並列実行最適化
リスク軽減: 外部依存関係早期検証、複雑タスク分割方針
技術仕様統合結果:
提供された技術要件が完全に計画に反映されました:

技術スタック: React + TypeScript, Node.js + Express, SQLite + Firebase
アーキテクチャ: Clean Architecture, Redux Toolkit, Repository Pattern
機能要件: オフライン機能、リアルタイム同期、日本語対応、レスポンシブ
パフォーマンス: 起動2秒、操作1秒、10,000件対応の実装戦略
セキュリティ: Google/Apple認証、データ暗号化、プライバシー保護
次のステップ: /tasks コマンドでタスク生成フェーズに進む準備が整いました。

タスク分解と実装

タスクの分解(Tasks)

/tasksコマンドで実装タスクに分解。公式ブログでは「The coding agent takes the spec and the plan and breaks them down into actual work. It generates small, reviewable chunks」と説明している。

/tasks

仕様と計画に基づいて、TODOアプリを実装可能な小さなタスクに分解してください。
各タスクは独立してレビュー・テスト可能な単位で作成してください。

Copilotが以下のようなタスクリストを生成する。

  1. 基本プロジェクト構成とルーティング設定
  2. データモデル設計(Task、Category、User)
  3. SQLite + Firebaseデータ層実装
  4. タスク入力・編集・削除画面
  5. タスク一覧表示とフィルタリング機能
  6. カテゴリ管理機能
  7. 期限設定とアラート機能
  8. 検索機能
  9. データ同期機能(Firebase)
  10. 設定画面(テーマ、通知等)
  11. セキュリティ実装(認証・暗号化)
  12. データエクスポート機能
  13. パフォーマンス最適化
  14. テスト実装
プロンプトログ

プロンプトの指示に従って、実装計画を実行可能なタスクに分解します。まず、前提条件チェックスクリプトを実行します。


cd /home/kbushi/workspace/todo-apps-with-spec-kit/todo-app && scripts/check-task-prerequisites.sh --json
利用可能なドキュメントを確認します。すべての必要なドキュメントが存在します。まず、タスクテンプレートを読み込みます。

tasks-template.md の読み取り

次に、計画ドキュメントを読み込んで技術スタックと構造を確認します。

plan.md の 1 から 51 行を読み取り

構造決定を確認します。

検索された Structure Decision|Project Structure (**/specs/001-todo/plan.md) のテキスト、結果 6
プロジェクト構造を確認するため、該当セクションを読み込みます。

plan.md の 78 から 133 行を読み取り

データモデルからエンティティを確認します。

検索された interface \w+|enum \w+ (**/specs/001-todo/data-model.md) のテキスト、結果 18
APIコントラクトからエンドポイントを確認します。

検索された ^  \/[^:]+: (**/specs/001-todo/contracts/api.yaml) のテキスト、結果 20
quickstart.mdからユーザーストーリーとテストシナリオを確認します。

検索された describe\(|it\(|シナリオ\d+ (**/specs/001-todo/quickstart.md) のテキスト、結果 20
基本仕様のユーザーシナリオも確認します。

検索された Given.*When.*Then (**/specs/001-todo/spec.md) のテキスト、結果 14
分析した情報を基に、tasks.mdファイルを作成します。

tasks.md が作成されました

作成されたファイルの確認をします。

001-todo の読み取り

完了レポート
✅ タスク分解フェーズが正常に完了しました!

実行結果:
ブランチ: 001-todo
タスクファイル: tasks.md
総タスク数: 120個の実行可能タスク
分析した設計ドキュメント:
✅ plan.md: Web application structure (React frontend + Node.js backend)
✅ data-model.md: 5 entities + 3 enums
✅ api.yaml: 18 API endpoints (認証、ユーザー、カテゴリ、タスク、同期)
✅ quickstart.md: 3 integration scenarios + performance tests
✅ spec.md: 7 user acceptance scenarios
タスク分類と構成:
Phase 3.1: Project Setup (6 tasks)
モノレポ構造作成
TypeScript設定、開発環境構築
Phase 3.2: Contract Tests (25 tasks) 🔴 TDD必須
18 API Contract Tests [P] - 全エンドポイント
7 Integration Tests [P] - ユーザーストーリー検証
⚠️ 重要: 実装前に作成し、必ず失敗させる
Phase 3.3: Shared Types (5 tasks)
TypeScript型定義 [P]
バリデーションスキーマ
Phase 3.4: Backend Core (21 tasks)
データベース層、サービス層、API実装
リポジトリパターン、ミドルウェア
Phase 3.5: Frontend Core (26 tasks)
Redux状態管理、React コンポーネント
カスタムフック、ページ実装
Phase 3.6: Advanced Features (12 tasks)
オフライン対応、同期機能
パフォーマンス最適化、セキュリティ
Phase 3.7: Testing & QA (12 tasks)
コンポーネントテスト、E2Eテスト
パフォーマンステスト、負荷テスト
Phase 3.8: Integration & Polish (13 tasks)
Firebase統合、ドキュメント作成
アクセシビリティ、最終調整
並列実行最適化:
[P]マーク: 62タスクが並列実行可能
独立性確保: 異なるファイル、依存関係なし
クリティカルパス: Setup → Tests → Types → Core → Advanced → Polish
TDD原則の徹底:
必須ルール: T007-T031の全テストが実装前に作成され、失敗すること
実装禁止: テストが通る状態での実装着手
検証ポイント: 各フェーズ完了時のコードレビュー
パフォーマンス要件対応:
T104-T107: 10,000件タスク対応、起動2秒以内の専用テスト
T088-T091: 仮想スクロール、バンドル最適化
測定と検証: 各パフォーマンスゲートでの検証必須
成果の特徴:
即座実行可能: 各タスクに具体的ファイルパス指定
独立レビュー: タスク完了ごとのコミット・レビュー可能
スケーラブル: 複数開発者での並列作業対応
品質確保: Constitutional要件(テスト、ログ、バージョニング)完全対応
次のステップ: T001から順次実行開始。TDD原則に従い、必ずテストフェーズ完了後に実装フェーズに進む。

実装の実行(Implement)

各タスクを順次GitHub Copilotに実装してもらう。
公式ブログでは「Your coding agent tackles the tasks one by one (or in parallel, where applicable). But here’s what’s different: instead of reviewing thousand-line code dumps, you, the developer, review focused changes that solve specific problems」と述べている。

以下で実装を進めてもらう。

作成したタスクに従って実装を進めてください。

実装例

生成されるファイル構成例

※長いので割愛…!

Spec Kitの利点と考察

利点

  1. 構造化された開発プロセス
    仕様→計画→タスク→実装の明確な流れ
  2. 意図の明確化
    「what」と「why」を先に決めることでブレを防止
  3. レビュー可能な単位
    小さなタスクに分解されるため品質管理が容易
  4. AIエージェントとの協調
    人間の判断とAIの実装能力の効果的な組み合わせ
  5. 技術非依存
    特定の技術スタックに縛られない汎用的なプロセス

注意点と課題

  1. 初期設定の複雑さ
    テンプレートやプロンプトの理解が必要
  2. エージェント依存
    AIの能力によって成果物の品質が大きく左右される
  3. 学習コスト
    従来の開発フローと異なるため慣れが必要
  4. プロセスの重厚さ
    小規模なプロジェクトには過剰になる可能性

vibe-codingからの脱却

公式ブログで指摘されている「vibe-coding」の問題点を解決する具体例

従来のvibe-coding(問題のあるアプローチ)

# 曖昧なプロンプト
"TODOアプリを作って"

→ 結果:汎用的すぎて実用性に欠ける

Spec-Driven Development(改善されたアプローチ)

# 明確な仕様
1. 日本語入力対応(IME考慮)
2. 期限切れアラート機能
3. カテゴリ別分類(仕事、個人、買い物)
4. オフライン機能(ネットワーク切断時も利用可能)

→ 結果:日本の利用者に最適化された実用的なTODOアプリ

段階的検証の重要性

公式ブログでは「At each phase, you reflect and refine. Does the spec capture what you actually want to build? Does the plan account for real-world constraints?」と強調している。

各段階での検証ポイント

フェーズ検証項目質問例
Specify仕様の妥当性本当に効率的なタスク管理が実現できるか?
Plan技術的制約オフライン機能は技術的に実現可能か?
Tasks実装可能性各タスクは独立してテスト可能か?
Implement品質確認期待通りの動作をするか?

従来開発との比較

項目従来の開発Spec-Driven Development
開始点要求仕様からコード詳細仕様書の作成
計画性実装しながら調整事前の詳細計画
AIとの協調コード補完レベル設計から実装まで
品質管理後追いテスト段階的検証
変更対応リファクタリング仕様レベルから再生成

使用例とユースケース

適用場面

公式ドキュメントでは、Spec-Driven Developmentが特に有効な3つのシナリオを挙げている。

1. Greenfield開発(zero-to-one)

新規プロジェクトの立ち上げ

  • 高レベル要求から本格運用アプリケーションまでを生成
  • 仕様を起点とした目的に沿った実装
  • 技術スタック選択の自由度

2. 機能追加(N-to-N+1)

既存システムへの新機能追加

  • 既存のアーキテクチャ制約を計画段階で反映
  • 自然な統合を目指した設計
  • 段階的な機能拡張

3. レガシー刷新(Legacy modernization)

既存システムの近代化

  • 既存システムのビジネスロジックを仕様として明確化
  • 再実装の支援
  • モダンな技術スタックへの移行

プロジェクト規模と適用範囲

  • 小〜中規模プロジェクト
    個人開発からチーム開発まで対応
  • プロトタイプ開発
    概念検証やMVP(Minimum Viable Product)作成
  • 学習・教育用途
    新技術習得やベストプラクティス学習
  • エンタープライズ開発
    組織制約とコンプライアンス要件を考慮した開発

開発チーム構成

  • ソロ開発者
    AIエージェントとの1対1協調
  • 小規模チーム
    役割分担とレビュープロセスの明確化
  • 大規模組織
    エンタープライズ制約とガバナンスの統合

参考

おわりに

GitHub Spec Kitは、AIコーディングエージェントとの協調による新しい開発アプローチを提供する実験的プロジェクトとなっている。
仕様駆動開発により、曖昧なプロンプトに依存した「vibe-coding」から脱却し、意図を明確にした構造化開発が可能になる。

TODOアプリの作成を通じて、Specify → Plan → Tasks → Implementのワークフローを体験できた。
特に、「何を作るか」を明確にしてから「どう作るか」を決める流れは、従来の開発と比べて品質向上とブレの防止に効果的だった。

AIエージェントとの協調開発が一般化すれば、このような仕様駆動開発のアプローチが標準となる可能性もある。
少なくとも自分の周りでは、各々が個人のプロンプトで実装しているので認識のズレや成果物に差が出ている部分があるので、ここが一貫していくとかなり強力なツールになると考えている。

GitHub Spec Kitは単なる開発ツールではなく、ソフトウェア開発の新しいパラダイムを提示している。
今後のSpec Kitの発展と、仕様駆動開発の普及に注目していき、自分も追従できるようにトレンドを追いかけていこうと思う。

そして、仕様駆動開発を体験して改めて認識したことは、AIの出力は使用者に依存するということであった。
特に、自分の知識がない分野については曖昧だったり、適切な仕様を定義できない部分がある。
そのため、幅広く知識を身に着け、なおかつ技術的な部分に関してもAI任せでやるのではなく、AIとともに自分の知識として身に着けることが大事だなと思っている。
※自分への戒めとして…。

今回、記事で作成したSpec kitのTODO管理アプリは豪華すぎてうまく動かなかった。
なので、もっとシンプルなものを作ってみたが成果物は以下となる。
https://github.com/katsuobushiFPGA/todo-apps-with-spec-kit

Hugo で構築されています。
テーマ StackJimmy によって設計されています。