仕様書を先に書くとAIコードが変わる
朝の出汁版(通勤2分)
- ポイント1: 「OpenSpec」は、AIにコードを書かせる前に仕様書(Spec)を先に作ることで、指示のブレや手戻りを減らすアプローチを体系化したOSSで、GitHubで約7万スターを集めている。
- ポイント2: 使う側として知っておくべきは、「まずAIに作らせる」ではなく「まず何を作るかを言語化する」ことがバイブコーディングの精度を上げる本質的な手順である点。
- ポイント3: 触りたい人は、公式リポジトリのREADMEに記載されているSpec定義のテンプレートを自分のLPやツール制作に当てはめるところから始めてみるのがおすすめ。
出汁の素(深読みモード)
「まず作る」より「まず言語化する」がバイブコーディングの精度を上げる
AIにコードを書かせるとき、どこから始めているだろうか。「とりあえずClaude(やCursor)に投げてみる」という入り方は、確かに手軽だが、出てきた結果が微妙だったとき、何度もやり直しが発生しやすい。原因の多くは「自分が何を作りたいのかが、AIに渡す前から曖昧だった」という点にある。
GitHubで約7万スターを集めている「OpenSpec」は、こうした手戻りの構造的な解決策として「Spec-driven development(仕様書駆動開発)」をAIコーディングに持ち込んだOSSだ。従来のソフトウェア開発の世界では、コードを書く前に仕様書(Spec)を作るのは当然の手順だった。OpenSpecはこの考え方を、LLMを使ったコーディング(いわゆるバイブコーディング)に再導入している。
注目したいのは、このアプローチが「開発者向け」だけではない点だ。LP制作、業務ツールの自動化、スクレイパーの構築など、AIに何かを「作らせる」場面であれば、仕様を先に言語化するという手順はそのまま使える。「使う側」として身につけておくと、AIへの投げ方の質が変わる考え方だ。
OpenSpecが体系化している「仕様書の作り方」
OpenSpecのリポジトリに記載されているドキュメントを読むと、Specとして定義すべき要素がテンプレート形式で整理されている。主に含まれるのは「何を作るか(Purpose)」「どう動くか(Behavior)」「何を受け取り何を返すか(Input/Output)」「どんなエラーを扱うか(Edge Cases)」といった項目だ。
ここで興味深いのは、これがコーダー向けの詳細設計書ではなく、「AIが理解できる粒度の指示書」として設計されている点だ。つまり、プログラミングの知識がなくても、作りたいものを言語で整理できれば書ける構造になっている。
たとえばLP制作を例に取ると、「ターゲットは誰か」「訴求の軸は何か」「CTAのテキストはどう決める」「入れるセクションは何順か」といった内容を事前に書き出しておくことが、OpenSpec的な仕様書の作り方に近い。これをAIに渡してから制作を始めると、最初のアウトプットが使い物にならない確率が下がる。
コードAIに長期記憶を持たせるプラグイン登場で紹介したように、AIに文脈を持たせるための仕組みはいろいろ登場しているが、そもそもの「指示の質」を先に上げるというアプローチは、どんなツールと組み合わせても有効だ。
コードが書けなくても使えること、書けると有利になること
「仕様書を先に書く」というアプローチの何が、コードを書けない人にとっても有益なのかを整理しておく。
コードなしでできること:ChatGPTやClaudeを使っているなら、プロンプトの先頭にOpenSpecスタイルのSpec(箇条書きで十分)を書いてから本題を投げるだけで、出力の精度が変わる。「Purpose:」「Behavior:」「Output:」といった見出し付きで整理するだけで、AIが意図を誤解するリスクが減る。
コードが書けると有利になること:OpenSpecはTypeScript向けに設計されており、Spec定義をそのままAIコーディングアシスタント(CursorやGitHub Copilot)に読み込ませる使い方が主眼だ。Spec定義を.spec.tsファイルとして管理することで、プロジェクト全体の設計意図をコードベースに残しておける。ローカルで動くAIコーディング環境、自分で組める時代へのような環境を構築している人なら、ここまで踏み込むと開発の再現性がぐっと高まる。
今日から試せる:自分のプロジェクトにSpec思考を当てはめる
まずはリポジトリにアクセスして、READMEを読むところから始めてほしい。URL:https://github.com/Fission-AI/OpenSpec
「コードは書かないけれど試したい」という場合は、次のフォーマットをChatGPTやClaudeへの指示の冒頭に貼り付けてみるとSpec思考の感覚がつかめる。
Purpose: (何を作りたいか、一文で) Target: (誰のためのものか) Behavior: (どう動くべきか、箇条書きで) Output: (最終的に何が欲しいか) Edge Cases: (避けたいこと、例外)
たとえばLP制作なら「Purpose: 個人向けオンライン講座の申込LPを作る」から始めて、各項目を埋めてからAIに投げてみる。最初のドラフトの質が変わるはずだ。
Cursorを使っていて.spec.tsファイルでの管理まで試したい人は、リポジトリ内のサンプルファイルが参考になる。自分のプロジェクトの構造に合わせて改変して使うのが現実的なスタートラインだ。
Spec思考をAIエージェントと組み合わせるとどうなるか
OpenSpecの考え方は、単発のコード生成だけでなく、複数ステップのタスクを処理するAIエージェントとの相性がいい。ログイン済みブラウザをAIに操作させる新手法のような、AIが自律的に動く仕組みを使っている場合、エージェントに渡す「最初の仕様」の精度が、後続ステップ全体の成否を決める。
Specを先に書いておくことで、エージェントが途中で判断を誤ったときに「どこがずれたか」をSpec定義と照合して特定しやすくなる。デバッグの起点として機能するわけだ。
また、Specをバージョン管理しておくと、「前回うまくいった設定」を再現しやすくなる。プロジェクトをまたいで使い回せるSpec資産が徐々に溜まっていく、という使い方も視野に入れておくといい。
参照ソース
- [GitHub]Fission-AI/OpenSpec→ github.com/Fission-AI/OpenSpec
- [GitHub]fastino-ai/GLiNER2→ github.com/fastino-ai/GLiNER2
- [GitHub]jinchenma94/bazi-skill→ github.com/jinchenma94/bazi-skill
