
こんにちは、サーバーワークスで生成AIの活用推進を担当している針生です。
先日、AI駆動開発ライフサイクル(AI-DLC)についての社内勉強会の様子をブログで公開したところ多くの反響をいただきました。ありがとうございます。
その中で、AI-DLCを実践するツールとして、GitHubのSpec Kitを紹介しました。 今日はこのSpec Kitについて解説したいと思います。
従来の開発と仕様駆動開発(Spec-Driven Development)の違い

従来の開発では、簡単な仕様書を作っても、実際のコーディングが始まると参照されなくなることが多いと思います。コードが正であり、仕様書は形式的なドキュメントに過ぎませんでした。変更があってもドキュメントは更新されず、結果的にコードと仕様書の内容が乖離していきます。
仕様駆動開発(Spec-Driven Development)では、この関係性を逆転させます。仕様書が開発の中心となり、その仕様書から直接コードが生成されます。AIがこの仕様書を理解して具体的なコードに落とし込むため、開発者は「何を作るか」という本質的な部分により多くの時間を使えるようになります。
この開発手法の最大の利点は、要件の明確化と実装の分離です。まず「何を作りたいのか」をしっかり定義し、その後で「どう作るか」を決めるという順序を守ることで、手戻りを減らし、より品質の高いアプリケーションを効率的に作れます。
Spec Kitが提供する開発ワークフロー
Spec Kitは、GitHub Copilot、Claude Code、Gemini CLIなど、主要なAIコーディングアシスタントと連携して動作します。
Kiro CLI(旧 Amazon Q Developer CLI)については、2025年11月21日時点では、カスタム引数を持つスラッシュコマンドをサポートしていないため、Spec Kitとの統合には対応していません。
具体的な開発の流れは、以下のフローチャートの通りです。大きく5つの明確なステップで進み、それぞれに専用のコマンドが用意されているため、AIアシスタントに対して一貫した指示を出せます。

環境構築:準備
必要なのは、Pythonのパッケージマネージャーであるuv、Python本体(バージョン3.11以上)、そしてGitです。
Spec Kit本体のインストールは、次のコマンド一つで完了します。
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
インストール後は、新しいプロジェクトを初期化できます。
specify init my-photo-app --ai claude
このコマンドで、プロジェクトディレクトリが作成され、必要な設定ファイルやテンプレートが自動配置されます。既存プロジェクトに導入する場合は、--hereオプションで現在のディレクトリに直接セットアップできます。
ステップ1:プロジェクトの憲章を作る
プロジェクトの初期化後、最初にやるべきことは、プロジェクトの「憲章」を作ることです。これは、プロジェクト全体を通して守るべき基本原則やガイドラインのことで、AIアシスタントが生成するコードの方向性を一貫したものにします。
プロジェクトのルートディレクトリでAIアシスタントを起動すると、/speckit.constitutionというコマンドが使えます。
例えば、こんな風に指示します。
/speckit.constitution このプロジェクトでは、 コードの可読性とメンテナンス性を最優先します。 TypeScriptを必須とし、型安全性を徹底してください。 すべてのコンポーネントには単体テストを書き、 パフォーマンスよりもまず動くコードを書くアプローチを取ります。 ユーザーインターフェースは、アクセシビリティ基準(WCAG 2.1 AA)を満たす必要があります。
この指示に基づいて、AIアシスタントが.specify/memory/constitution.mdを作成します。このファイルは、今後すべての開発フェーズで参照され、AIが生成するコードやアーキテクチャの決定に影響を与え続けます。
ステップ2:作りたいものを言葉で説明する
次は具体的に「何を作りたいのか」を説明します。重要なのは、技術的な話は一切しないということです。ReactだとかVueだとか、そういった技術選定の話は後回しにして、純粋にプロダクトの機能や使い勝手について説明します。
/speckit.specifyコマンドを使って、作りたいアプリケーションの説明を始めます。できるだけ具体的に、そして詳細に説明することが重要です。
例えば、写真管理アプリケーションを作る場合はこう説明します。
/speckit.specify 旅行や日常の写真を整理するための写真管理アプリケーションを作りたいです。 ユーザーは複数のアルバムを作成でき、各アルバムには名前と説明を付けられます。 アルバムは作成日順に自動的にソートされますが、 ドラッグアンドドロップで自由に並び替えることもできます。 アルバムはフラットな構造で、ネストはできません。 各アルバム内では、写真がグリッド状に表示され、クリックすると拡大表示できます。 写真には撮影日、場所、コメントなどのメタデータを付けられます。
AIアシスタントは自動的に仕様書の作成を開始し、Gitで新しいブランチを作成して、.specify/specs/001-photo-managerのようなディレクトリにspec.mdを生成します。この仕様書には、ユーザーストーリー、機能要件、制約事項などが構造化された形式で記述されます。
仕様書が生成されたら、内容をよく確認してください。抜けている部分や曖昧な部分があれば、この段階で追加や修正を行います。
ステップ2.5:曖昧な部分を明確にする
仕様書の初版ができたら、/speckit.clarifyコマンドを使うことを強くお勧めします。このコマンドは、AIアシスタントに仕様書を精査させ、曖昧な部分について構造化された質問をさせるものです。
例えば、次のような質問が返ってくるかもしれません。
「アルバムを削除したとき、中の写真はどうなりますか?完全に削除されますか、それとも未分類の場所に移動しますか?」
これらの質問に答えることで、仕様書の「Clarifications(明確化)」セクションに情報が追加されていきます。技術計画を立てる前にこのステップを経ることで、実装時の手戻りを大幅に減らせます。
ステップ3:技術スタックとアーキテクチャを決める
仕様が明確になったところで、ようやく技術的な話に入ります。/speckit.planコマンドを使って、どんな技術で実装するかを指定します。
例えば、こんな風に指示します。
/speckit.plan フロントエンドはReactとTypeScriptを使用します。 状態管理にはZustandを使い、スタイリングはTailwind CSSを使用します。 データはブラウザのIndexedDBに保存し、静的サイトとしてVercelにデプロイする予定です。
AIアシスタントはplan.mdに全体的な実装計画を、data-model.mdにデータモデルの詳細を記述します。
IndexedDBのスキーマ定義やTypeScriptの型定義などがここに含まれます。
また、research.mdには選択した技術スタックに関する調査結果が記録されます。
この段階で生成されたドキュメントを確認し、過剰に複雑な設計になっていないかチェックすることが重要です。AIアシスタントは時として、必要以上に凝った設計を提案することがあります。憲章で定めた原則に照らし合わせて、本当に必要な技術だけを使うようにAIに指摘することが大切です。
ステップ4:実装タスクに分解する
技術計画が固まったら、/speckit.tasksコマンドを使って、具体的な実装タスクに分解します。
生成されるtasks.mdファイルには、各ユーザーストーリーごとにタスクがグループ化され、実装すべき具体的なファイルパスが指定されます。例えば、「src/components/AlbumCreator.tsxを作成」といった具合です。タスク間の依存関係も明示され、並行して作業できるタスクには[P]というマーカーが付けられます。
このタスクリストは、ただのToDoリストではありません。AIアシスタントが実装を実行する際の具体的な作業手順書として機能します。
ステップ5:AIに実装を任せる
いよいよ最終ステップです。/speckit.implementコマンドを実行すると、AIアシスタントがタスクリストに従って実際のコードを書き始めます。
AIアシスタントは、まずすべての前提条件が整っているかを確認し、タスクを定義された順序で実行します。各タスクの実行中、進捗状況を報告してくれるので、どこまで進んでいるかが分かります。
実装中、AIアシスタントはローカル環境でコマンドを実行することがあります。npm installでパッケージをインストールしたり、npm run buildでビルドを試したりするため、Node.jsやnpmといった必要なツールが事前にインストールされている必要があります。
コードが生成されたら、実際にアプリケーションを起動して動作確認を行います。npm run devでローカルサーバーを立ち上げ、ブラウザで動作を確認してください。ブラウザのコンソールに表示されるエラーや期待と異なる動作があれば、そのエラーメッセージや現象をAIアシスタントに伝えることで修正してもらえます。
品質を高める追加のコマンド
基本的な5ステップに加えて、Spec Kitは品質を高めるための追加コマンドも用意しています。
/speckit.analyzeコマンドは、生成されたすべてのドキュメント間の一貫性をチェックします。仕様書で定義された機能が技術計画で漏れていないか、タスクリストがすべての要件をカバーしているかなどを検証します。
/speckit.checklistコマンドは、カスタムの品質チェックリストを生成します。これは「英語で書かれた単体テスト」のようなもので、「すべてのフォームにバリデーションが実装されているか」「エラー処理が適切に行われているか」といった項目がチェックリストに含まれます。
まとめ
「仕様書を一生懸命書いても、実装が進むとすぐに実態と合わなくなってしまう」 「結局、誰もドキュメントを読まなくなり、コードだけが頼りになる」
多くの開発者が長年抱えてきたこの悩みに対し、Spec Kitは「仕様書からコードを生み出す」というアプローチで、一つの解決策を提示してくれています。
Spec Kitを使うことで、私たちは面倒なボイラープレートの記述や、細かな構文のエラー修正から解放されます。その浮いた時間で、「ユーザーにとって本当に使いやすい機能は何か?」を深く考えることができるようになります。
最初は「仕様を言葉で詳しく説明する」ことに慣れが必要かもしれません。ですが、AIと対話しながらシステムを作り上げていく感覚は、これまでの開発にはない新鮮な楽しさがあると思います。

Google から Nano Banana Pro が登場したので、グラフィックレコーディング風にイラストを生成してもらいました。
参考リンク
GitHub - github/spec-kit: 💫 Toolkit to help you get started with Spec-Driven Development
針生 泰有(執筆記事の一覧)
サーバーワークスで生成AIの活用推進を担当