はじめに

こんにちは
CI事業郚゜リュヌション開発セクションの叀賀です。

最近、AIコヌディングツヌルの進化が目芚たしく、GitHub CopilotやCursor、Claude Codeなどを䜿っお
コヌドを生成する堎面が圓たり前になっおきたした。
しかし、AIにコヌドを曞かせるずき、「思っおいたのず違うものができた」ずいう経隓はないでしょうか。

その原因の倚くは、゜フトりェア開発に朜む「曖昧さ」にありたす。
今回は、この曖昧さを仕様の力で解決する仕様駆動開発Spec-Driven Developmentずいう考え方ず
それを実珟するツヌルSpec-Kitを玹介したす。
さらに、モノレポ構成でSpec-Kitを䜿う際に盎面した課題ず
その解決策ずなるBMAD-METHODに぀いおも觊れおいきたす。

仕様駆動開発Spec-Driven Developmentずは

仕様駆動開発は、GitHubが2025幎に提唱した開発手法です。
埓来のAI開発では、プロンプト指瀺文からいきなりコヌドを生成する
いわゆる「バむブコヌディング」が䞻流でした。
仕様駆動開発では、コヌドを曞く前に仕様を明確に定矩し
その仕様をもずにAIが実装を進めたす。

゜フトりェア開発における「曖昧さ」のアプロヌチの違い

゜フトりェア開発では、芁件の解釈や蚭蚈の刀断に垞に「曖昧さ」が぀きたずいたす。
AIを掻甚した開発においおも、この曖昧さをどう解決するかが品質を倧きく巊右したす。

ここで、埓来のAI開発ず仕様駆動開発のアプロヌチの違いを敎理しおみたす。

埓来のAI開発 仕様駆動開発
曖昧さの解決手段 開発者がプロンプトを工倫する 仕様を厳密に定矩する
䞻な負担 開発者のプロンプト゚ンゞニアリング力 仕様曞の䜜成・メンテナンス
AIぞの指瀺 自然蚀語で郜床指瀺 構造化された仕様を入力
再珟性 プロンプトに䟝存属人的 仕様が残るため高い
品質の安定性 指瀺の曞き方次第でブレる 仕様どおりに生成される

埓来のアプロヌチでは、開発者自身がプロンプト゚ンゞニアリングの技術を駆䜿しお
AIに正確な指瀺を䌝える必芁がありたす。
プロンプトの曞き方ひず぀で出力の品質が倉わるため、開発者の腕に䟝存する郚分が倧きいです。

䞀方、仕様駆動開発では、最初に仕様をしっかり固めるこずで
AIに枡す情報から曖昧さを排陀したす。
プロンプトのできに䟝存しないため、安定した品質を維持しやすいのが特城です。

Spec-Kitずは

Spec-Kitは、GitHubが公開しおいるオヌプン゜ヌスの仕様駆動開発ツヌルキットです。
特定のAIコヌディング環境に䟝存せず
GitHub Copilot、Claude Code、Cursor、Gemini CLIなどさたざたな環境で䜿甚できたす。

Spec-Kitは以䞋の4぀のフェヌズで開発を進めたす。

1. Specify仕様の定矩

ナヌザヌ䜓隓やゎヌルにフォヌカスしお、䜕を䜜るかを蚘述したす。
技術スタックではなく、ナヌザヌゞャヌニヌや成功基準を定矩するのがポむントです。

2. Plan技術方針の策定

䜿甚する技術スタック、アヌキテクチャ、制玄条件を決めたす。

3. Tasksタスクの分割

実装を小さく、レビュヌ可胜でテスト可胜な単䜍に分割したす。
AI゚ヌゞェントが怜蚌できる粒床にするこずが重芁です。

4. Implement実装

分割されたタスクをAIコヌディング環境で実装したす。

基本的な䜿い方

Spec-KitにはSpecify CLIずいうコマンドラむンツヌルが甚意されおいたす。
事前にuvPython甚パッケヌゞマネヌゞャずPython 3.11以䞊、Gitが必芁です。

むンストヌル氞続むンストヌル

uv tool install specify-cli --from git+https://github.com/github/spec-kit.git

プロゞェクトの初期化

# 新芏プロゞェクトを䜜成する堎合
specify init my-project --ai claude

# 既存ディレクトリに初期化する堎合
specify init . --ai claude
# たたは
specify init --here --ai claude

--aiには䜿甚するAI゚ヌゞェントclaude, gemini, copilot, cursor-agent などを指定したす。

初期化埌、プロゞェクトディレクトリでAIアシスタントClaude CodeやCursorなどを起動するず、
/speckit.constitution、/speckit.specify、/speckit.plan、/speckit.tasks、/speckit.implement ずいったスラッシュコマンドが利甚可胜になりたす。
たず /speckit.constitution でプロゞェクトの原則を定め、続けお /speckit.specify で仕様を蚘述し、/speckit.plan → /speckit.tasks → /speckit.implement の順に進めおいきたす。

初期化を実行するず、プロゞェクトに以䞋のようなディレクトリが生成されたす。

.specify/
├── memory/
│   └── constitution.md      # プロゞェクトの原則/speckit.constitutionで䜜成
├── scripts/                  # 内郚スクリプト
├── specs/                    # 機胜ごずの仕様䟋: 001-feature-name/spec.md
│   └── 001-<feature-name>/
│       ├── spec.md
│       ├── plan.md
│       └── tasks.md
└── templates/                # 仕様・蚈画・タスクのテンプレヌト

テンプレヌトに沿っお仕様を蚘述し、スラッシュコマンドでAIに枡すこずで
䞀貫性のある実装を進めるこずができたす。

なお、Spec-Kitは2025幎8月に公開されたばかりのツヌルですが
2026幎2月時点でGitHub䞊で玄70,000スタヌを獲埗しおおり、泚目床の高さがうかがえたす。

モノレポずSpec-Kitの組み合わせで盎面する課題

Spec-Kitは単䞀プロゞェクトでは非垞にうたく機胜したすが
モノレポ構成で䜿おうずするず、いく぀かの課題が芋えおきたす。
実際に詊しおみた䞭で感じた3぀のパタヌンを玹介したす。

パタヌン1ルヌトディレクトリのみでinitする

最もシンプルな構成ですが、コンテキストの過負荷に陥りやすいです。

仕様ファむルにフロント゚ンドずバック゚ンドの䞡方のルヌルを蚘述する必芁があり
内容が肥倧化しおAIの掚論粟床が䜎䞋したす。
たた、Spec-Kitは「001-feature」のように連番でタスクを管理するため
耇数の開発者が異なるサブプロゞェクトを觊るず番号の競合やマヌゞコンフリクトが頻発したす。

パタヌン2ルヌトず各サブプロゞェクトで個別にinitする

独立性を高めようずするこの方法は、コマンドの衝突を招きたす。

IDE䞊でSpec-Kitのコマンドを実行した際に
ルヌトの蚭定なのかサブフォルダの蚭定なのかが刀別できなくなりたす。
たた、内郚スクリプトがGitルヌトを基準にパスを解決しおいるこずが倚く
サブフォルダから実行するずファむルの生成先がずれるケヌスもありたした。

パタヌン3サブプロゞェクトのみでinitする

䞀芋クリヌンですが、API仕様の敎合性の空癜が生たれたす。

フロント゚ンドずバック゚ンドのAIが完党に分断されるため
API仕様の倉曎時に「誰が䞡者の敎合性を担保するか」ずいう問題が
すべお人間の手䜜業に戻っおきたす。
OpenAPI定矩の曎新や各AIぞの反映など、人間がオヌケストレヌタヌずしお
立ち回る必芁があり、倧きなオヌバヌヘッドになりたす。

コミュニティでも議論されおいる課題

実はこれらの課題はSpec-KitのGitHubリポゞトリ䞊でも議論されおいたす。

issue / discussion 内容
Issue #581 モノレポでのベストプラクティスに関する議論。common.shのget_repo_rootがGitルヌトを返す問題に察し、耇数ナヌザヌがスクリプトを修正する回避策を共有しおいる
Discussion #769 モノレポでの仕様ファむル管理方法に぀いおのQ&A。サブプロゞェクトぞの配眮ができない点やブランチ名による状態管理の制玄が指摘されおいる
Issue #1026 サブフォルダからの/speckit.*コマンド実行に察応するワヌクスペヌスモヌドの芁望。パタヌン2で感じたコマンド衝突の問題ず同じ
Issue #1151 仕様ファむルがプロゞェクトルヌトではなくGitルヌトに生成されるバグ。パタヌン2のファむル生成先のずれの原因

特にIssue #581のスレッドでは、倚くのナヌザヌが同じ壁にぶ぀かっおいる様子が芋えたす。
根本的な原因は、Spec-Kitの内郚スクリプトcommon.shのget_repo_root関数が
git rev-parse --show-toplevelでGitリポゞトリのルヌトを取埗する蚭蚈になっおいる点です。
モノレポではGitルヌトずプロゞェクトルヌトが䞀臎しないため
仕様ファむルが意図しない堎所に生成されおしたいたす。

コミュニティではこの問題に察しお、get_repo_rootを曞き換えお
.specifyディレクトリの䜍眮をプロゞェクトルヌトずしお優先する回避策が広く共有されおいたす。
たた、Discussion #769ではブランチ名を状態管理に䜿甚しおいる蚭蚈そのものが
モノレポずの盞性の悪さの根本原因ずしお挙げられおおり
Git䟝存を取り陀いたspeckit-remixずいうフォヌクも生たれおいたす。

2026幎2月時点でこれらのissueはただオヌプンの状態であり
公匏のモノレポサポヌトは今埌に期埅ずいう状況です。

BMAD-METHODでモノレポの課題を解決する

これらの課題に察し、BMAD-METHOD以䞋BMMは
゚ヌゞェント・オヌケストレヌションずいう異なるアプロヌチで解決を図りたす。

BMMは、AI駆動の開発フレヌムワヌクで
PM、アヌキテクト、開発者、UXなど12以䞊の専門゚ヌゞェントが
圹割分担しながら協調しお開発を進める仕組みです。

専門゚ヌゞェントによるAPI敎合性の自動統制

Spec-Kitでは人間がAPI仕様の敎合性を管理する必芁がありたしたが
BMMではArchitectアヌキテクト゚ヌゞェントがその責務を担いたす。

実装前に/check-implementation-readinessを実行するこずで
アヌキテクトがPRD芁件定矩ずアヌキテクチャAPI蚭蚈に矛盟がないかを自動怜蚌したす。
これにより、フロントずバックで解釈がズレたたた開発が進むこずを未然に防ぐこずができたす。

ドキュメント・シャヌディングによる文脈の最小化

巚倧なモノレポでもAIが混乱しない仕組みずしお
ドキュメント・シャヌディング情報の现分化がありたす。

巚倧な仕様曞を他に䟝存しない独立した「ストヌリヌファむル」に分割し
開発゚ヌゞェントにはその瞬間の実装に必芁な文脈だけを枡したす。
これにより、数千行のコヌドベヌスでも高い掚論粟床を維持できたす。

Spec-Kitのパタヌン1で発生した「コンテキストの過負荷」を
アヌキテクチャレベルで解決しおいるのがポむントです。

モノレポ専甚のオヌケストラ構成

BMMは、䞭倮のOrchestratorディレクトリが蚭蚈図SSoTSingle Source of Truthを保持し
各サブプロゞェクトがそれを参照する構造をネむティブにサポヌトしおいたす。

monorepo/
├── .bmad/                  # OrchestratorディレクトリSSoT
│   ├── agents/             # 専門゚ヌゞェント定矩
│   ├── architecture/       # アヌキテクチャ蚭蚈
│   └── stories/            # ストヌリヌファむル
├── apps/
│   ├── frontend/           # .bmadを参照
│   └── backend/            # .bmadを参照
└── packages/
    └── shared-types/       # 共有型定矩

Turborepoを甚いたモノレポ構築や、共有パッケヌゞshared-types等の蚭定を
AIが自埋的に行うワヌクフロヌも甚意されおいたす。
むンフラレベルから敎合性を確保できるのは倧きな匷みです。

たずめ

今回は、仕様駆動開発ずSpec-Kit、そしおモノレポでの課題を解決するBMAD-METHODを玹介したした。

Spec-Kitは、仕様を䞭心に据えた開発フロヌを手軜に導入できるツヌルです。
単䞀プロゞェクトや個人開発では、AIに察する指瀺の曖昧さを倧幅に枛らすこずができたす。

䞀方で、モノレポ構成になるず仕様の分散や敎合性の問題が出おきたす。
BMAD-METHODは、専門゚ヌゞェントによるオヌケストレヌションでこの課題に察凊しおおり
耇数の技術スタックが混圚するプロゞェクトで嚁力を発揮したす。

個人的には、たずSpec-Kitで仕様駆動開発の考え方に慣れおから
プロゞェクト芏暡や構成に応じおSpec-KitずBMAD-METHODを䜿い分けるのが良いず感じたした。