54 ポイント 投稿者 xguru 2025-09-15 | 9件のコメント | WhatsAppで共有
  • Spec-Driven Development: 従来の開発では補助手段だった 仕様書(Spec)実行可能な仕様 へと昇格させ、仕様から直接 動作する実装 を生成しようとするアプローチ
    • コード中心だった慣行を転換し、まず 何を・なぜ を定義し、その後で どのように を具体化する 意図中心の開発 を強調
    • 中核となるアイデアは、仕様を通じて一貫した成果物を作り、反復作業を 自動化 して、開発者が製品上の課題に集中できるよう支援すること
  • Spec Kitは、このように 仕様実行可能な成果物 に変換し、実装の自動化を支援するツール群
  • インストール後、/specify何を/なぜ を記述し、/planスタック/アーキテクチャ を宣言し、/tasks作業単位 を生成
  • 目標は、組織が 差別化されない共通コード の作成から離れ、製品シナリオ に集中できるようにすることであり、仕様主導の方式を通じて品質と速度の両方を高めようとする実験的フレームワーク

中核思想: Core philosophy

  • 意図中心の開発 により 何を を先に据え、どのように は後から具体化する 仕様優先 の思考法
  • ガードレール と組織的な原則を備えた 豊かな仕様 を作成し、一度きりのコード生成 ではなく 多段階の精緻化 プロセスを経る
  • 高度なAIモデル の解釈能力に 積極的に依存 し、仕様を実行可能な結果へ変換する活用法を志向

Spec Kitを用いた仕様主導プロセス

  • Spec Kit は、仕様をエンジニアリングプロセスの中心に据え、実装、チェックリスト、作業分解を主導し、開発者は主に指示役を担う
    • コーディングエージェントが大半の作成作業を担当
  • プロセスは 4段階 で構成され、各段階に明確なチェックポイントがあり、現在の作業が完全に検証されるまで次の段階へ進まない
  • Specify段階: 高水準の説明を与えると、コーディングエージェントが詳細な仕様を生成し、これは技術スタックではなくユーザージャーニー、体験、成功指標に焦点を当てる
    • ユーザーが誰なのか、どの問題を解決するのか、どのように相互作用するのか、重要な結果は何か、などをマッピング
    • これはユーザー理解に応じて進化する 生きたアーティファクト の形を取る
    広告
  • Plan段階: 望ましいスタック、アーキテクチャ、制約条件を与えると、コーディングエージェントが包括的な技術計画を生成
    • 会社標準の技術、レガシーシステム統合、コンプライアンス、性能目標などを含む
    • 複数の計画バリエーションを要求して比較でき、社内ドキュメントを与えればアーキテクチャパターンを直接統合
  • Tasks段階: 仕様と計画に基づいて、コーディングエージェントが作業を小さくレビュー可能なチャンクに分解
    • 各作業は独立して実装・テスト可能で、AIが作業を検証・追跡できるよう設計される
    • たとえば「認証を構築する」ではなく「メール形式を検証するユーザー登録エンドポイントを作成する」のように具体的
  • Implement段階: コーディングエージェントが作業を1つずつ、または並列で処理し、開発者は焦点の絞られた変更をレビュー
    • 仕様が何を構築するか、計画がどう構築するか、作業が何に取り組むかを示す
  • 各段階で開発者は振り返りと精緻化を行い、仕様が意図を捉えているか、計画が現実の制約を考慮しているか、欠落やエッジケースがないかを確認する 検証役 を担う

エージェンティックワークフローでのSpec Kitの使い方

  • Spec Kitは GitHub Copilot, Claude Code, Gemini CLI のようなコーディングエージェントと連携し、簡単なコマンド列を通じてエージェントを指示し、アーティファクトを生成
    • これにより曖昧なプロンプトを明確な意図へ変換し、信頼性高く実行する
    広告
  • プロジェクト初期化後、/specify コマンドで高水準プロンプトを与えると、コーディングエージェントがプロジェクト全体の仕様を生成し、プロジェクトの「何」と「なぜ」に焦点を当てる
  • /plan コマンドで高水準の技術的方向性を与えると、コーディングエージェントがアーキテクチャと制約を尊重した詳細計画を生成
  • /tasks コマンドで仕様と計画を実行可能な作業一覧へ分解し、コーディングエージェントがそれを基にプロジェクト要件を実装

開発段階: Development phases

  • 0-to-1(グリーンフィールド) 段階: 高水準の要件に基づき、仕様生成 → 計画策定 → プロダクション級アプリ 生成の流れを支援
  • 創造的探索 段階: 多様なスタック/アーキテクチャUXパターン並列実装 で実験するプロセスを重視
  • 漸進的改善(ブラウンフィールド) 段階: 機能追加レガシー近代化プロセス適応 を繰り返す 進化型開発

このアプローチがうまく機能する3つのシナリオ

  • グリーンフィールド(zero-to-one): 新規プロジェクト開始時にすぐコーディングせず、事前に仕様と計画を作成して、AIが意図どおりのものを構築するよう保証し、一般的なパターンベースの汎用解ではなく、カスタムな結果を提供
  • 既存システムでの機能開発(N-to-N+1): 複雑なコードベースに機能を追加する際、仕様によって新機能と既存システムの相互作用を明確にし、計画によってアーキテクチャ上の制約をエンコードすることで、ネイティブに感じられるコードを生成
    • これにより継続的な開発をより速く、より安全にし、高度なコンテキストエンジニアリング手法が必要になる場合がある
  • レガシー近代化: レガシーシステムを再構築する際に元の意図が失われている場合、Spec Kitのプロセスで必須のビジネスロジックを現代的な仕様に取り込み、新しいアーキテクチャを計画することで、AIが技術的負債なしに再構築

Prerequisites

  • Linux/macOS または WindowsのWSL2 が必要
  • AIエージェントとして Claude Code, GitHub Copilot, Gemini CLI, Cursor から選択

9件のコメント

 
edunga1 2025-09-18

Copilot Workspaceを思い出しますね。

 
cocofather 2025-09-16

自然言語ベースのAIプログラミングの土台になりそうですね

 
tested 2025-09-15

GitHubのSpec Kitの利点は、GitHub Copilotでも活用できます。
GitHubが作ったものなので当然?かもしれませんが、ほかのツールはClaudeベースのものが多かったですね。

 
skageektp 2025-09-15

Kiro IDEを思い出しますね

 
kandk 2025-09-15

面白いですね。理にかなっている気もします。

 
xguru 2025-09-15

記事の途中にあるSDDの詳細紹介リンクは内容が良いですね。以下はAIで要約してみたものです。

仕様駆動開発(Specification-Driven Development, SDD)

The Power Inversion

  • コード中心でPRD・設計文書が補助していた流れを反転させ、仕様が原本であり、コードは特定の言語・フレームワークで実装される表現物とみなす
    • 仕様と実装の間にある恒久的なギャップは、文書補強や手順強化では解消しにくかったという診断を示す
    • 実行可能な仕様実装計画がコードを生成すれば、ギャップは消え、変換だけが存在する
  • AIは複雑な仕様解釈と実装計画の策定を可能にするが、構造のない生成は混乱を招くため、SDDは精密な構造とガードレールで品質を確保する
  • 保守は仕様を進化させる行為であり、開発意図は自然言語・デザイン資産・中核原則で表現され、コードはラストマイルの位置づけとなる
  • デバッグは誤ったコード修正よりも仕様・実装計画の修正を優先し、リファクタリングは明確さの再構成という意味に再定義される

The SDD Workflow in Practice

  • アイデアをAIとの対話的な相互作用でPRDへと洗練し、AIは質問・エッジケース・受け入れ基準を具体化する
    • 要求と設計を連続した活動へ変換し、チーム単位のブランチベースの仕様作業とレビュー・バージョニングを支援する
  • リサーチエージェントがライブラリ互換性、性能、セキュリティ、組織上の制約(DB標準・認証・デプロイ方針)を調査し、仕様へ自動反映する
  • PRDから実装計画を生成して要求と技術判断を追跡可能にマッピングし、AIが矛盾・曖昧さ・欠落を継続的に検証する
  • 仕様・計画が十分に安定したらコード生成を開始するが、初期には探索的生成で実現可能性を検証する
    • ドメイン概念はデータモデルに、ユーザーストーリーはAPIエンドポイントに、受け入れシナリオはテストへと変換される
  • 運用段階のメトリクス・インシデントは仕様を更新して次の再生成に反映され、性能ボトルネックは非機能要件に、脆弱性は全体制約へと昇格する

Why SDD Matters Now

  • AI能力の臨界点: 自然言語仕様から動作するコードを信頼性高く生成でき、実装翻訳の機械的な部分を自動化することで探索と創造性の増幅を支援する
  • 複雑性の爆発的増大: 多数のサービス・フレームワーク・依存関係により意図と実装の整合性維持が難しくなり、SDDの仕様駆動によるアラインメントが必要になる
  • 変化の加速: 頻繁なピボットが起きる状況で、SDDは変更を文書・設計・コードへの手作業伝播ではなく体系的な再生成で処理する
    • 例としてwhat-ifシミュレーションや並行実装を可能にし、意思決定の俊敏性を提供する

Core Principles

  • 仕様=共通言語: 仕様が第一級成果物であり、コードは特定スタックの表現、保守は仕様進化の行為である
  • 実行可能な仕様: 正確・完全・非曖昧なレベルの仕様から動作するシステムを生成する
  • 継続的洗練: 一度きりのゲートではなく常時一貫性検証を行う
  • リサーチに基づくコンテキスト: 性能・セキュリティ・組織制約を継続的に収集して仕様へ注入する
  • 双方向フィードバック: 運用の現実が仕様更新の入力になる
  • 探索のためのブランチング: 同一仕様から性能・保守性・UX・コストなど最適化目標ごとの複数実装生成を支援する

Implementation Approaches

  • 今日の実践では既存ツールの組み合わせと規律の維持が中核であり、次の要素で実装できる
    • 仕様の反復洗練用AIアシスタント
    • 技術コンテキスト収集用リサーチエージェント
    • 仕様→実装変換用コード生成ツール
    • 仕様優先ワークフローに合わせたバージョン管理
    • 仕様文書のAI一貫性分析ベースのチェック
  • 共通原則は仕様を単一の真実の源とし、コードを仕様が要求する成果物として扱う姿勢である

Streamlining SDD with Commands

  • /specify: 機能説明を構造化された仕様へ変換し、自動採番ブランチ作成テンプレートベースのディレクトリ構成を自動化する
  • /plan: 仕様分析 → 憲法準拠レビュー → 技術翻訳データモデル・API契約・テストシナリオ文書化 → クイックスタート検証を生成する
  • /tasks: plan.mdと関連設計を読み、実行可能なタスクリストを出力し、並列可能タスクの表示と安全な並列グルーピングを提供する
  • 例: チャット機能
    • 従来アプローチで約12時間かかる文書作業を、仕様・計画・タスクの自動化で約15分の構成へ短縮する流れの例を示す
    • 成果物として仕様実装計画と根拠API契約・データモデルクイックスタートシナリオtasks.mdブランチでバージョン管理される

The Power of Structured Automation

  • 抜け漏れ防止: テンプレートが非機能要件・エラー処理まで包含する
  • 意思決定の追跡可能性: すべての技術選択が具体的要件と接続される
  • 生きた文書: 仕様がコードを生成するため同期維持が容易になる
  • 迅速な反復: 要求変更時に計画再生成で分・時間単位の対応が可能になる

Template-Driven Quality

  • 実装詳細の早すぎる流入防止: WHAT/WHYに集中し、HOWを排除するルールで抽象化レベルの維持を促す
  • 不確実性マーカーの強制: [NEEDS CLARIFICATION]マーカーで推測禁止明示的な質問を促す
  • チェックリストベースの自己点検: 完全性・明確性・測定可能な受け入れ基準の確認で品質ゲートを実装する
  • 憲法ゲート: 単純性ゲート(≤3プロジェクト)反抽象化ゲート(フレームワークを直接使用)、**統合優先ゲート(契約・契約テスト先行)など事前段階(-1)**のチェックを適用する
  • 階層化された詳細管理: 過度なコードや詳細はimplementation-details/へ分離して可読性を維持する
  • テスト優先性: 契約→統合→E2E→単体順のファイル生成・テスト優先ルールで検証可能性を確保する
  • 仮定・推測機能の抑制: 推測的機能の禁止段階別の前提条件明示でスコープ管理を強化する

The Constitutional Foundation

  • memory/constitution.md不変原則により、すべての実装を一貫・単純・高品質に保つ開発憲法を採用する
    • Article I: Library-First — すべての機能は独立ライブラリとして始め、モジュール性を確保する
    • Article II: CLI Mandate — すべてのライブラリはテキスト入出力・JSONをサポートするCLIインターフェースを公開し、可観測性テスト容易性を保証する
    • Article III: Test-Firstテスト承認・失敗(red)確認前の実装禁止振る舞い定義優先原則を適用する
    • Articles VII & VIII: 単純性・反抽象化プロジェクト数の最小化フレームワークへの直接的信頼過剰設計を抑制する
    • Article IX: 統合優先テスト実環境に近いテストを優先し、契約テストを実装前提として強制する
  • テンプレートのPhase -1ゲートで憲法準拠をチェックリスト化し、例外はComplexity Tracking明示的な根拠を記録する
  • 改訂手続きを通じて原則の適用方法は進化可能だが、中核哲学は維持される

The Transformation

  • 目標は開発者の置き換えではなく、機械的な翻訳の自動化による人間能力の増幅意図-実装整合性の維持である
  • SDDは仕様がコードを生成するようにし、仕様・リサーチ・コード密接なフィードバックループで共進化する継続的変換を実践する
 
amoplan 2025-09-17

どのAIで整理されたのでしょうか?

 
xguru 2025-09-17

GPT-5でやりました。要約用に自分で整理した、かなり長いプロンプトを使っています。

 
heycalmdown 2025-09-22

コンセプトにはとても共感したので、新規プロジェクトで週末に少し試してみたのですが、思ったほどうまくはいきませんでした。まだ多くの改善が必要そうです。ひとまず大まかな動作はこれまで何度も紹介されているとおり、次のような流れです: 仕様原則の作成 → スペック作成 → タスク作成 → 実装

問題は、

  • constitution.md ファイルは「どう開発するか」に関する中核ガイドですが、「このアプリが最終的に何になるのか」は含まれていません
  • spec.md は1つの機能を説明する文書です
  • 「このアプリは何か」についてのマスター文書はありません
  • GitHubで行われている議論を読んでみると、chain of specs が最終的に source of truth になる、ということのようです。首をかしげたくはなりますが、だいたいの意図は理解できました
  • /specify/tasaks コマンドを通じて多くの文書を成果物として生成するのですが(望んでいた結果です)、そのせいかコンテキストをすぐ消費します(Claude Codeを使用中)
  • いったん実装に入ると、Spec Kitからはしばらく離れて、普段どおりClaude Codeとの対話を通じて実装を仕上げることになります
  • コンテキストを使い切って compaction したり、新しくセッションを開始したりすると、Spec Kitが生成した文書の存在を忘れてしまいます
  • tasks.md に定義された作業を進めていると、先にちゃんと作っていたものを上書きしてしまうこともありますし、バグ修正の過程で新しい機能を作ることもあって、tasks.md からだんだん離れていきます。tasks.md を永続保存する意味がよく分かりません

ひとまず私が出した結論は次のとおりです

  • 最初に考えていたものと違う結果が出ても、ひとまずスペックを最後まで仕上げて、新しいスペックを作りながら少しずつ直していくべきだ
  • 最初のスペックはどうしても大きくなるので、アプリの機能についてはあえて説明せず、ボイラープレートだけ作るほうがよさそうだ
  • PoCレベルで作るときは、Spec Kitは使わないほうがよさそうだ