NeuralOS
GuideIntermediate

コードではなくスペックを書け · GitHub Spec Kit によるスペック駆動開発

AIで何かを作る人のほとんどが繰り返す、ある一つのパターンがある。最初はAIに話しかけ、コードが現れ、動作し、まるで魔法だ。だが5つ目か6つ目の機能あたりで、その魔法は崩れる。小さな変更を頼むと別の何かが壊れ、「忘れちゃったから」とログインの仕組みを3回目の説明をするはめになり、翌日プロジェクトを開くとファイルの半分がなぜ存在するのか思い出せない。根本の問題はAIが愚かなことではない。**意図の記憶がなく、空白を埋めるたびに毎回違う推測をする**からだ。スペック駆動開発(Spec-Driven Development)は、バイブコーディングの順番をひっくり返す。AIが一行も書く前に、スペック——アプリが何をすべきかを、あなた自身の言葉で——を書き、そのドキュメントが唯一の信頼できる情報源(single source of truth)になる。そこからエージェントがプラン → タスク → コードを生成し、その途中にあなたのチェックポイントが入る。このガイドでは、それを自分のエージェント内のコマンドとしてインストールするツール(GitHub Spec Kit、無料・オープンソース)、実際の4フェーズのフロー、正確なコマンド、そしてプログラマーにならずにあらゆるプロジェクトをスペックファーストで始めるためのたった一つのマスタープロンプトを紹介する。

Jul 19, 202614 min
これは誰のためのもの?
「これを作って」とAIに頼んで、結局フランケンシュタインを生み出してしまう人のために。各機能が前のものの上にパッチを当てただけで、誰も——あなたもAIも——アプリが何をするはずだったのか覚えておらず、変更するたびに遠くの何かが壊れる。AIが猛スピードで進むのに行き先が定まっていないと感じたことがあるなら、これはあなたのためのものだ。プログラマーである必要はない。必要なのはスペック(仕様)の書き方を学び、残りをエージェントに任せることだ。Claude Code、Copilot、Cursor、Gemini、そして他30以上のエージェントで機能する。

その瞬間 · 「やりたいことを伝える」だけでは足りなくなるとき

最初のうちバイブコーディングは魔法だ。AIに話しかけ、画面が現れ、動作し、拍手する。だが——ほぼ必ず5つ目か6つ目の機能あたりで——魔法が崩れる瞬間が来る。小さな変更を頼むと、触ってもいない別の何かが壊れる。ログインの動くべき仕組みを、「忘れちゃったから」と3回目の説明をする。翌日プロジェクトを開くと、ファイルの半分がなぜ存在するのか自分でもわからない。それがその瞬間だ。会話が信頼できる情報源として足りなくなり、金魚並みの記憶しかないチャットよりも堅牢な何かが必要になるときだ。

スペック駆動開発(Spec-Driven Development、略してSDD)は、まさにそこで生まれる。考え方はほとんど失礼なほど単純だ。AIが一行のコードを書く前に、アプリが何をすべきかを書く——明確に、整理して、ファイルに保存する。そのドキュメント、スペックが、唯一の信頼できる情報源になる。そしてエージェントはそこから、プラン → タスクのリスト → コードを生成する。その順番で。途中にあなたのチェックポイントを挟んで。

たとえ · レンガより先に設計図
職人に「その角から始めて、様子を見ながらやろう」と言って家を建てる人はいない。まず設計図がある。壁、配管、窓がどこに来るか。職人はレンガを積むのが超一流だ——あなたのAIがコードを書くのが超一流なのと同じように——だが設計図がなければ、それぞれが即興で進め、家は歪む。バイブコーディングは設計図なしで建てることだ。SDDはまず設計図を描くことだ。そしてここでの設計図は死んだPDFではない。実行可能だ——エージェントがそれを読み、そこから直接建てる。

痛み · フランケンシュタインはどこから来るのか

問題はAIが愚かなことではない。AIには意図の記憶がないことだ。各メッセージで、そのメッセージにとっての最善の判断をするが、あなたが何を、なぜ作っているのかの全体像を持っていない。あなたはその全体像を頭の中に持っている——だが頭はエージェントが読めるドキュメントではない。だからAIは空白を推測で埋め、毎回違う推測をする。あるときはカートが税を保存し、別のときは保存しない。あるときはユーザーがプロフィールを編集でき、別のときはリファクタリングでその機能が消える。誰も嘘をついていない。ただ単に何が正しいかを定めた契約が一度も存在しなかっただけだ。

なぜ起きるのか(そしてなぜ時間とともに悪化するのか)
チャットは線形で、忘れる。会話が200行に達すると、最初に決めたことはもうコンテキストウィンドウの外に出ている。AIは最新のわずかな断片からあなたの意図を再構築する——そして再構築するたびに、コピーのコピーのように少しずつ元から離れていく。プロジェクトが大きいほど、劣化は激しい。だからバイブコーディングは1日目には最高に感じ、20日目には絶望的に感じる。AIが悪化しているのではなく、コンテキストが蒸発し、チャットの外に錨が一度もなかったのだ。

これを直さないとどうなるか?世界の終わりではない——ゆっくりした事故だ。ほぼ動くアプリで終わる。他人(や来週のAI)に説明するのが不可能で、修正するたびに別の何かを壊す独自の確率を持つアプリだ。そしてその確率は容赦しない。同じシリーズのあるブログで27%の数学を語った——各ステップで85%成功するエージェントは、8ステップのフローを27%の確率でしか完遂できない(0.85⁸)。成功は加算ではなく乗算されるからだ。手探りで作ることは、脆いステップをまったく同じように連鎖させる。スペックはその脆さの連鎖を断ち切るものだ。AIに、各ステップを検証する固定点を与え、各ステップが前のステップの幸運頼みになるのを防ぐ。

解決策 · 順番をひっくり返す(スペックが先、コードが後)

バイブコーディングではフローはこうだ。話す → コード → (たまに)ドキュメント化する。SDDでは完全にひっくり返る。スペックを書く → プランを立てる → タスクを生成する → コード。ドキュメントは最後に忘れられる残りかすではなく、出発点になる。そしてこれは官僚主義ではない。各フェーズは、エージェントが前のものからほぼ独力で生成するアーティファクトであり、次に進む前にあなたが承認するチェックポイントが挟まる。あなたが指揮し、AIが実行する。

たとえ · 撮影の前に脚本
映画はシーンごとに即興で撮るものではない。まず脚本(何が起きるか)があり、次に撮影計画(どう、どの順で撮るか)があり、次にカット割り(その日のタスク)があり、そこでようやくカメラが回る。脚本を変えれば、それ以外のすべてが連鎖して変わる——整然と。SDDはそれだ。スペックがあなたの脚本、プランが撮影計画、タスクがカット割り、コードが撮影だ。AIは、ついに脚本を手にした優秀な制作チームだ。

ツール · GitHub Spec Kit

このフローを手作業で発明する必要はない。GitHub Spec Kitオープンソースのツールキット——GitHub製、無料、MITライセンス——で、SDDをAIエージェント内の一連のコマンドとしてインストールする。あなたは自然言語でスペックを書き、Spec Kitは構造、チェックポイント、そしてAIがそれをアプリに変えるためのコマンドを提供する。最も急成長したAIツールの一つだ。GitHubで122,000スター、最新の安定版v0.13.02026年7月17日にリリースされた。30以上のエージェントを統合している——Claude Code、GitHub Copilot、Cursor、Gemini CLI、そしてあなたが使うもの。

github/spec-kit
REPO

スペック駆動開発のためのGitHub公式キット。エージェント内にコマンドのフロー(constitution → specify → plan → tasks → implement)をインストールし、即興ではなく実行可能な仕様から構築できるようにする。モデル非依存で、30以上のエージェントで機能する。

PythonMITView on GitHub
モデル非依存、このシリーズの哲学と同じ
Spec Kitはあなたを特定のモデルに縛らない。価値があるのはスペックであり、それはプレーンテキストだ——エージェントの外に存在する。明日ClaudeからGeminiに、あるいはCopilotからCursorに変えても、あなたのスペックは有効なままで、新しいエージェントがそこから構築する。契約はプロバイダーより長く生き残る。それはまさに、ライブラリ全体で繰り返している原則だ。あなたが整理するもの(コンテキスト、記憶、スペック)はあなたのもの。モデルは交換可能だ。

インストール · 2つのコマンドで中に入る

Spec Kitはuv、モダンなPythonパッケージマネージャー(速く、ドラマなし)でインストールする。uvがなければ、まずそれをインストールする——一行だ。次にSpec KitのCLIを永続的にインストールし、エージェントを選んでプロジェクトを初期化する。ターミナルにおびえないでほしい。文字通りこれらのコマンドを順に実行するだけで、本当の作業のためにターミナルに戻ることはない(本当の作業はあなたのAIのチャット内で起きる)。

bash
# 1) uv(Pythonパッケージマネージャー)がなければ、まずインストールする:
curl -LsSf https://astral.sh/uv/install.sh | sh

# 2) Spec KitのCLIを永続的にインストールする(安定版を固定して):
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git@v0.13.0

# 3) どのエージェントを選べるか見る(--integration フラグに渡す正確な値):
specify integration list

# 4) エージェントを選んでプロジェクトを初期化する(ここでは例としてCopilot):
specify init mi-proyecto --integration copilot

# 5) 新しいバージョンがあるか確認する(何も変更せず、読むだけ):
specify self check
`--integration` フラグがエージェントを選ぶ
specify init mi-proyecto --integration copilot では、--integration の後の値があなたのツールだ。Spec Kitは30以上の統合を持ち、バージョンごとに変わっていくので、正確な名前を暗記する代わりに、先に specify integration list を実行し、そのリストから使うもの(Copilot、Cursor、Gemini、Claude Codeなど)を選ぶ——注文する前にメニューを頼むようなもので、そうすればない料理を頼むことはない。その init コマンドが、/speckit.* コマンドを配線済みのフォルダをエージェント内に作る。そこから先、すべての作業はターミナルではなく、AIに話しかけることで起きる。

プロトコル · Spec Kitのコマンド、順番通りに

初期化したら、Spec Kitはエージェント内に書き込む一連のスラッシュコマンドを提供する。魔法ではない。それぞれがAIに、フローの次のアーティファクトを生成するよう指示する。順番が重要だ——各ステップが前のステップに支えられるカスケードだからだ。以下がv0.13.0に入っている実際のものだ。

Spec Kitのコマンド(それぞれが何をするか)
`/speckit.constitution` — プロジェクトの侵すべからざる原則を定義する。AIが決して破ってはならないルール(例:「常にユーザー入力を検証する」「機密データをログに残さない」)。他のすべてを統べる憲法だ。
`/speckit.specify`スペック: 何を作りたいか、自然言語で。要件とユーザーストーリー。すべての心臓部だ。
`/speckit.clarify` (任意) — プランを立てる前に、スペックで曖昧に残った点についてAamaがあなたに質問する。早い段階で空白を埋める。
`/speckit.plan`技術プラン: AIがスタック、アーキテクチャ、スペックをどう構築するかを提案する。あなたが承認するか修正する。
`/speckit.tasks` — プランを実行可能なタスクのリストに分解する。順序立てられ、具体的に。カット割りだ。
`/speckit.analyze` (任意) — 構築する前に、スペック、プラン、タスクが互いに一貫しているか確認する。矛盾を狩る。
`/speckit.checklist` — 要件が満たされているか検証するための、オーダーメイドの品質チェックリストを生成する。
`/speckit.implement` — すべてのタスクを実行し、プランに従ってアプリを構築する。ここでついにカメラが回る。
順番は飾りではない
constitutionspec を飛ばして直接 /speckit.implement を実行するのは、ステップを増やしただけのバイブコーディングに戻ることだ。カスケードが機能するのは、各アーティファクトが次を制約するからだ。憲法がプランを縛り、プランがタスクを縛り、タスクがコードを縛る。連鎖を断てば、AIはまた推測に戻る。規律はコマンドを持つことにではなく、チェックポイントを尊重することにある。

実際のフロー · あなたのチェックポイントを伴う4フェーズ

すべてを合わせると、プロジェクトは最初から最後までこう見える。各境界であなたが確認して承認してからAIが進むことに注目してほしい。それがコツだ。AIがブレーキなしに独りで働くのではなく、あなたが制御するチェックポイントの間で独りで働くのだ。

4フェーズのフローと、各フェーズでのあなたの役割
フェーズ1 · 憲法。 /speckit.constitution を実行し、プロジェクトの黄金のルールを定義する。チェックポイント: それらの原則が正しいことを読んで確認する。一度書けば、常に統べる。
フェーズ2 · 仕様化(と明確化)。 /speckit.specify を実行し、何を作るか記述する。次に /speckit.clarify でAIが質問して曖昧さを潰す。チェックポイント: スペックが空白なく、あなたの望むことを正確に述べている。
フェーズ3 · プランと分解。 /speckit.plan が技術プランを出し、/speckit.tasks がそれをタスクに変え、/speckit.analyze がすべての整合性を検証する。チェックポイント: コードが書かれる前にスタックとタスクを承認する。
フェーズ4 · 実装。 /speckit.implement が構築する。AIがスペックに対してタスクを一つずつ実行する。チェックポイント: /speckit.checklist を使い、構築されたものが要件を満たすか検証する。
たとえ · あなたは監督であって、カメラマンではない
良い制作では、監督はカメラを持たないし金づちも振るわない。脚本を読み、プランを承認し、撮ったシーンを一つずつ確認し、「これはOK、これは撮り直し」と言う。SDDではあなたがそれをする。コードを書かず、構文と格闘せず——チェックポイントでアーティファクトを承認する。AIの全パワーを、重要な地点でのあなたの判断とともに。そのバランスこそ、「AIに独りで働いてほしいが、コントロールは失いたくない」と言うとき、人々が求めているものだ。

習慣 · いつスペックを書き、いつ書かないか

SDDはすべてに使うものではない。一行の変更、ボタンの色、テキスト——それはAIに普通に話しかければ終わりだ。それにスペックを書くのは、絵を掛けるのに建築家の設計図を頼むようなものだ。良い習慣はしきい値を認識することだ。タスクが複数のファイルに触れる、ビジネスルールがある、来週また戻ってくる——そのときこそ、スペックが先だ。そしてそれ以降、新しい大きな機能はすべて衝動からではなくスペックから生まれる。

それが起動する正確な瞬間
実用的なルール: 同じことをAIに2度目に説明している自分に気づいたら、あるいはプロジェクトを開いてなぜあるファイルが存在するのか思い出せないなら——それはスペックが足りなかったというリマインダーだ。自分を責めるな。コードがすでに存在しても、今スペックを書けばいい。Spec Kitは新規プロジェクト(greenfield)にも、すでにぐちゃぐちゃになったもの(brownfield)を整えるのにも同じように役立つ。

マスタープロンプト · スペックファーストでプロジェクトを始める

暗記すべき唯一のプロンプトがここにある。(Spec Kitを初期化済みで)AIに渡して、最初の一分から正しく始めるためのものだ。まず憲法を定め、次にあなたと一緒に足りないものを質問しながらスペックを組み立て、そしてあなたが承認するまでコードを書かないよう指示する。コピーして [角括弧] を埋め、本気のプロジェクトを始めるときにエージェントに貼り付けよう。

AIに貼り付ける · スペック駆動プロジェクトを始めるテキスト
すでに初期化済みのGitHub Spec Kitを使って、このプロジェクトをスペック駆動開発(Spec-Driven Development)で構築します。まだコードは書かないでください。このフローに私と一緒に従い、各チェックポイントで立ち止まって、進む前に私に承認させてください。

私のプロジェクトは: [何を、誰のために作りたいかを3〜5文で記述]。
やってはいけないこと / 私の制約: [例: クレジットカードを保存しない、モバイルで動作する、機密データをログに残さない]。

ステップ1 — 憲法。何よりもまず /speckit.constitution を実行し、このプロジェクトの侵すべからざる原則(セキュリティ、入力検証、一貫性、当てはまるもの)を提案してください。それらを私に見せ、私のOKを待ってください。

ステップ2 — スペック。次に /speckit.specify を実行し、私の記述からスペックを起草してください: 明確な要件とユーザーストーリー。その後 /speckit.clarify を実行し、曖昧さをなくすために必要なすべての質問を私にしてください——推測せず、私に聞いてください。私がスペックは正しいと言うまで進まないでください。

ステップ3 — プランとタスク。スペックが承認されたら /speckit.plan を実行し、スタックとアーキテクチャを提案してください(なぜそれぞれを選んだかを分かりやすく説明して)。次に /speckit.tasks で分解し、/speckit.analyze でスペック、プラン、タスクが矛盾しないか検証してください。すべてを私に見せ、私の承認を待ってください。

ステップ4 — 実装。私が許可したときだけ /speckit.implement を実行して構築してください。終わったら /speckit.checklist を生成し、構築されたものがスペックを満たすか検証してください。

全プロセスを通じての黄金律: スペックが唯一の信頼できる情報源です。コードの何かがスペックから逸れたら、スペックが勝ちます——または一緒に更新するよう私に知らせてください。決して黙って挙動を変えないでください。
違いを生む一点
ステップ2の「推測せず、私に聞いてください」というフレーズが、プロンプト全体で最も重要だ。それがAIを空白埋め係から協力者に変える。バイブコーディングのバグのほとんどは、あなたが一度も問い直さなかった沈黙した思い込みから生まれる。/speckit.clarify はまさにそのために存在する——それらの思い込みを、コードになる前に明るみに出すのだ。

最も簡単な道 · 何をチャットで、何をコマンドでやるか

迷わないように。ほとんどすべてはAIに話しかけることで起きる。ターミナルに触れるのは一度だけ(インストールと初期化)。/speckit.* はエージェントのチャット内に、他のメッセージと同じように書く。そしてスペックは自分の言葉で書く——コードではない。役割分担はこうだ。

タスクの役割分担
ターミナルで(一度だけ): uv をインストール、specify-cli をインストール、specify integration list でエージェントを確認、specify init mi-proyecto --integration <あなたのエージェント> を実行、そして最新か確認する specify self check。以上——ターミナルには戻らない。
AIとのチャットで(本当の作業): すべてのコマンド /speckit.constitution/speckit.specify/speckit.plan/speckit.tasks/speckit.implement。普通のメッセージとして書く。
自分の言葉で(あなたが貢献するもの): プロジェクトの記述、/speckit.clarify の質問への回答、そして各チェックポイントでの承認。あなたのコードはゼロ。
スペックをgitに保存する: スペックと憲法はテキストファイルだ。コミットしよう。プロジェクトで最も価値ある資産だ——それらから再生成できるコードよりも。
速いと導かれるを混同するな
SDDは最初遅く感じる——すぐにコードを見る代わりに「ドキュメントを書いている」からだ。それは錯覚だ。スペックに投資したその時間が、後でバイブコーディングでやってくる「いや、そうじゃなかった」の5ラウンドを節約する。1キロ目は遅く、2キロ目以降はずっと速く——衝突もなく——進む。本当のスピードは分あたりのコードではなく、週あたりの完成した正しいアプリだ。

これはどこから来たのか(このシリーズの進化)

ライブラリを追ってきたなら、これは目新しくないはずだ——次の段階だ。C-A-Rプロトコルは、バグを送り出さないために構築と監査を分けることを教えた。デザインシステムのリソースは、最初の画面の前にビジュアルのルールを定めることを教えた。両方が同じ一つの考えを共有している。実行する前に契約を決めろ。SDDはその考えを最も純粋な形にする。スペックが契約であり、すべてのアプリ——デザイン、ロジック、挙動——にとって唯一の信頼できる情報源だ。「コンテキストを整理せよ」から「契約を書き、AIにそれを守らせよ」へと進む。

NeuralOSでは、あなたはすでに契約に対して構築している
NeuralOSが内部でどう構築されるかを統べるドクトリンがあり、それはまさにこの哲学だ。フロントエンドが信頼できる情報源。デザインとインターフェースが契約——何が存在すべきで、どう振る舞うか——を定義し、バックエンドはその契約を満たすだけ。決して独りで発明しない。それは実際のプロダクトに適用されたSDDだ。まずユーザーが見て期待するものを仕様化し、それ以外のすべてはそれを満たすために構築される。NeuralOSのオーケストレーターチャットに話しかけてアプリを構築するとき、その契約ファーストの規律が水面下で見えずに働き、あなたが頼んだものがそのまま得られるものになる——コマンドのカスケードを自分で組む必要なしに。
C-A-Rプロトコル · バグなしで構築する
このリソースの兄貴分: 構築と監査を分ける。スペックは何を作るかを教え、C-A-Rは作ったものが正しいことを保証する。
構築する前にデザインシステムを作れ
同じ考えをデザインに適用: 最初の画面の前にビジュアルの契約を定める。スペックとデザインシステムは同じ原則の二つの側面だ。
#spec-driven-development#spec-kit#github#vibe-coding#prompt#アーキテクチャ
Ready to build?

Start building in
under 3 minutes

Join 4,200+ builders. No credit card. Build your first app with AI in minutes.