<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Spec-Driven Development on KnightLiブログ</title>
        <link>https://knightli.com/ja/tags/spec-driven-development/</link>
        <description>Recent content in Spec-Driven Development on KnightLiブログ</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Mon, 25 May 2026 00:19:14 +0800</lastBuildDate><atom:link href="https://knightli.com/ja/tags/spec-driven-development/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>GitHub Spec Kit とは？仕様駆動開発で AI コーディングを制御する</title>
        <link>https://knightli.com/ja/2026/05/25/github-spec-kit-spec-driven-development/</link>
        <pubDate>Mon, 25 May 2026 00:19:14 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/25/github-spec-kit-spec-driven-development/</guid>
        <description>&lt;p&gt;GitHub の &lt;strong&gt;Spec Kit&lt;/strong&gt; は、AI コーディング向けの新しいツールキットです。目的は、開発者が &lt;strong&gt;Spec-Driven Development&lt;/strong&gt;、つまり仕様駆動開発を実践しやすくすることです。&lt;/p&gt;
&lt;p&gt;解決しようとしている問題はとても明確です。現在の AI コーディングのワークフローは、「会話しながら書く」形に寄りすぎています。人間が大まかなアイデアを渡すと、Agent はすぐにコードを変更し始めます。短期的には速く見えますが、要件の境界、受け入れ基準、技術的なトレードオフ、タスク分解が十分に定着しないことがよくあります。プロジェクトが少し複雑になるだけで、一回限りの vibe coding になりがちです。&lt;/p&gt;
&lt;p&gt;Spec Kit の考え方はその逆です。まず仕様を明確に書き、その後で計画、タスク、実装へ進みます。コードが最初のステップではなく、仕様が最初のステップになります。&lt;/p&gt;
&lt;h2 id=&#34;spec-kit-とは&#34;&gt;Spec Kit とは？
&lt;/h2&gt;&lt;p&gt;Spec Kit は、GitHub がオープンソースで公開している仕様駆動開発のためのツールキットです。&lt;code&gt;specify&lt;/code&gt; CLI、テンプレート、スクリプト、AI coding agent 向けのコマンドを提供し、チームが同じ構造化された成果物を軸に開発を進められるようにします。&lt;/p&gt;
&lt;p&gt;強調しているのは、「AI に質問を減らさせる」ことではありません。AI がコードを書く前に、次の内容を生成し、改善することです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;プロジェクト原則：品質、テスト、体験、性能などに関するチームの制約；&lt;/li&gt;
&lt;li&gt;機能仕様：何を作るのか、なぜ作るのか、ユーザーストーリーと機能要件；&lt;/li&gt;
&lt;li&gt;技術計画：どの技術スタックを使うのか、どう実装するのか、どのようなアーキテクチャ上の判断があるのか；&lt;/li&gt;
&lt;li&gt;タスクリスト：計画を実行可能なステップに分解する；&lt;/li&gt;
&lt;li&gt;実装プロセス：一度に雑に変更するのではなく、タスクに沿って段階的にコードを修正する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この流れによって、AI コーディングは一回のプロンプト芸ではなく、よりエンジニアリング上の協作に近づきます。&lt;/p&gt;
&lt;h2 id=&#34;基本的な利用フロー&#34;&gt;基本的な利用フロー
&lt;/h2&gt;&lt;p&gt;公式 README では、入門の流れがおおよそ次のように示されています。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv tool install specify-cli --from git+https://github.com/github/spec-kit.git@vX.Y.Z
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;specify init my-project --integration copilot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; my-project
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;初期化後、プロジェクトには &lt;code&gt;.specify&lt;/code&gt; ディレクトリ、テンプレート、スクリプト、Agent 連携用のコマンドが生成されます。その後、対応している AI coding agent の中で &lt;code&gt;/speckit.*&lt;/code&gt; コマンドを使い、開発を進めます。&lt;/p&gt;
&lt;p&gt;典型的な順序は次の通りです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.constitution
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.specify
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.clarify
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.plan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.tasks
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.implement
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;/speckit.constitution&lt;/code&gt; はプロジェクト原則を作り、&lt;code&gt;/speckit.specify&lt;/code&gt; はプロダクト要件を記述し、&lt;code&gt;/speckit.clarify&lt;/code&gt; は曖昧な点を補い、&lt;code&gt;/speckit.plan&lt;/code&gt; は技術計画を生成し、&lt;code&gt;/speckit.tasks&lt;/code&gt; はタスクに分解します。最後に &lt;code&gt;/speckit.implement&lt;/code&gt; が実装を実行します。&lt;/p&gt;
&lt;p&gt;これは、Agent に直接「アプリを作って」と頼むのとは大きく違います。Spec Kit では、まず「何を作るのか」と「どう受け入れるのか」を明確にしてから、Agent に手を動かさせます。&lt;/p&gt;
&lt;h2 id=&#34;ai-コーディングの入口を変える&#34;&gt;AI コーディングの入口を変える
&lt;/h2&gt;&lt;p&gt;従来の AI コーディングは、しばしばコードから始まります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;タスク管理アプリを作りたい。実装してほしい。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Spec Kit は、むしろ次のような形です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;まず、このタスク管理アプリのユーザー、シナリオ、機能境界、受け入れ基準、非目標を定義する；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;次に、それらの仕様に基づいて技術方針を選ぶ；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;その後でタスクに分解する；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;最後に段階的に実装する。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;この変化は重要です。AI はコンテキストに基づいて実行するのが得意ですが、コンテキスト自体が緩いと、実行が速いほど方向から外れるのも速くなります。Spec Kit はコンテキストをファイルとテンプレートに変え、要件、計画、タスクをレビュー、修正、バージョン管理できるようにします。&lt;/p&gt;
&lt;p&gt;言い換えると、AI をより「自由」にするのではなく、より明確なエンジニアリング上の軌道で自由に力を発揮させるものです。&lt;/p&gt;
&lt;h2 id=&#34;コアコマンドの理解&#34;&gt;コアコマンドの理解
&lt;/h2&gt;&lt;h3 id=&#34;speckitconstitution&#34;&gt;&lt;code&gt;/speckit.constitution&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;これはプロジェクトの「憲法」です。&lt;code&gt;.specify/memory/constitution.md&lt;/code&gt; を生成または更新し、コード品質、テスト基準、ユーザー体験の一貫性、性能要件、技術判断のルールなど、プロジェクトが長期的に守る原則を記録します。&lt;/p&gt;
&lt;p&gt;このステップは、単一機能の要件ではなく、チームの共通認識を書くのに向いています。&lt;/p&gt;
&lt;h3 id=&#34;speckitspecify&#34;&gt;&lt;code&gt;/speckit.specify&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;これは機能仕様の段階です。何を構築するのか、ユーザーは誰か、どの問題を解決するのか、どのような主要フローがあるのかを記述します。&lt;/p&gt;
&lt;p&gt;公式では、この段階で技術スタックに早く入りすぎないことが特に強調されています。まず what と why を明確にし、それから how を議論します。&lt;/p&gt;
&lt;h3 id=&#34;speckitclarify&#34;&gt;&lt;code&gt;/speckit.clarify&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;これは疑問点を埋める段階です。多くの要件は、最初に書いた時点では穴があります。権限をどう扱うのか、異常状態は何か、データは永続化するのか、境界条件をどう受け入れるのか、といった点です。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/speckit.clarify&lt;/code&gt; の価値は、Agent が仕様内の不確実な点を能動的に見つけ、その回答を仕様ドキュメントへ書き戻すことで、後の手戻りを減らせるところにあります。&lt;/p&gt;
&lt;h3 id=&#34;speckitplan&#34;&gt;&lt;code&gt;/speckit.plan&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;これは技術計画の段階です。ここで初めて、フレームワーク、データベース、アーキテクチャ、API、テスト戦略、制約を明確にしていきます。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/speckit.specify&lt;/code&gt; がプロダクトの言語だとすれば、&lt;code&gt;/speckit.plan&lt;/code&gt; はエンジニアリングの言語です。&lt;/p&gt;
&lt;h3 id=&#34;speckittasks&#34;&gt;&lt;code&gt;/speckit.tasks&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;このステップでは、計画を実行可能なタスクに分解します。良いタスクリストは、Agent が段階的に進められるだけでなく、人間にも各ステップの目的が理解できるものであるべきです。&lt;/p&gt;
&lt;h3 id=&#34;speckitimplement&#34;&gt;&lt;code&gt;/speckit.implement&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;最後に実装へ入ります。Agent は、前段で定着させた仕様、計画、タスクに基づいてコードを修正します。この時点では、巨大な prompt ひとつから要件を推測するのではなく、一連の構造化されたドキュメントの中で実行します。&lt;/p&gt;
&lt;h2 id=&#34;なぜ-ai-コーディングに向いているのか&#34;&gt;なぜ AI コーディングに向いているのか
&lt;/h2&gt;&lt;p&gt;Spec Kit の価値は、特定の魔法のコマンドにあるわけではありません。AI コーディングで失われやすいものを取り戻す点にあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;要件をレビューできる；&lt;/li&gt;
&lt;li&gt;計画を議論できる；&lt;/li&gt;
&lt;li&gt;タスクを追跡できる；&lt;/li&gt;
&lt;li&gt;意思決定にコンテキストがある；&lt;/li&gt;
&lt;li&gt;成果物を Git 履歴に入れられる；&lt;/li&gt;
&lt;li&gt;チームがテンプレートと原則を再利用できる；&lt;/li&gt;
&lt;li&gt;Agent の実装が、一回限りのチャット記録だけに依存しなくなる。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは複雑なプロジェクトで特に有用です。複数人で協作し、長期的に保守し、高い品質が求められるプロジェクトほど、一時的な prompt だけで開発を進めることはできません。&lt;/p&gt;
&lt;h2 id=&#34;extensions-と-presets&#34;&gt;Extensions と Presets
&lt;/h2&gt;&lt;p&gt;Spec Kit には、2種類のカスタマイズ機能もあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Extensions&lt;/strong&gt;：新しいコマンド、新しいテンプレート、外部ツール連携を追加する；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Presets&lt;/strong&gt;：既存の仕様、計画、タスクテンプレートの形式や用語を変える。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;簡単に言えば、新しい能力を追加したいなら Extension、ワークフローのスタイルを変えたいなら Preset です。&lt;/p&gt;
&lt;p&gt;たとえば、チームは Preset によってセキュリティレビュー、コンプライアンス追跡、ドメイン用語、テスト優先のルールを強制できます。また、Extension によって Jira 連携、コードレビュー、プロジェクト健全性チェックなどの新しい段階を追加できます。&lt;/p&gt;
&lt;p&gt;つまり Spec Kit は、すべてのチームを同じフローに閉じ込めようとしているわけではありません。仕様駆動開発のための拡張可能な骨格を提供しているのです。&lt;/p&gt;
&lt;h2 id=&#34;誰に向いているのか&#34;&gt;誰に向いているのか
&lt;/h2&gt;&lt;p&gt;Spec Kit は、次のような場面に向いています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI coding agent で新規プロジェクトのプロトタイプを作る；&lt;/li&gt;
&lt;li&gt;vibe coding を振り返り可能なプロセスに変える；&lt;/li&gt;
&lt;li&gt;AI にコード生成させる前の要件と計画の形式をチームで統一する；&lt;/li&gt;
&lt;li&gt;明確な受け入れ基準とテスト要件が必要なプロジェクト；&lt;/li&gt;
&lt;li&gt;要件、計画、タスク、実装プロセスをすべてバージョン管理に入れたい場合；&lt;/li&gt;
&lt;li&gt;GitHub Copilot、Claude Code、Codex CLI などのツールをチームで活用する方法を探っている場合。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;とても小さな一回限りのスクリプトには、必ずしも向いていません。数行のコードで解決できる問題に対しては、完全な仕様フローは重く感じられるかもしれません。ただし、タスクが複数ページ、複数モジュール、状態管理、権限、データモデル、長期保守に関わり始めると、Spec Kit の構造化による利点ははっきりしてきます。&lt;/p&gt;
&lt;h2 id=&#34;私の理解&#34;&gt;私の理解
&lt;/h2&gt;&lt;p&gt;Spec Kit は、AI コーディングツールの重要な方向転換を示しています。「Agent により速くコードを書かせる」ことから、「Agent をより信頼できる形でソフトウェアエンジニアリングに参加させる」ことへの転換です。&lt;/p&gt;
&lt;p&gt;これまでの AI コーディングは、プロンプトとモデル能力に注目してきました。Spec Kit は、プロセス、成果物、制約により強く注目します。AI がコードを書く速度が上がるほど、仕様、計画、受け入れ基準を省略してはいけないことを思い出させてくれます。&lt;/p&gt;
&lt;p&gt;すでに AI に機能を直接実装させることに慣れているなら、Spec Kit で最初の一手を変えてみる価値があります。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;まず AI に要件を仕様として書いてもらい、その後でコードを書いてもらう。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;この一手は一見遅く見えますが、実際には後から「コードはできたけれど、欲しかったものではない」となる手戻りを減らします。&lt;/p&gt;
&lt;h2 id=&#34;参考リンク&#34;&gt;参考リンク
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/github/spec-kit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github/spec-kit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
