仕様の天井:AIコーディング速度がボトルネックをプロダクト発見に移す理由
AIコーディングツールが実装を加速するにつれ、ソフトウェア開発のボトルネックは上流のプロダクト仕様策定に移行します。本記事では「仕様の天井」現象を探り、ステークホルダーとの会話から実行可能な仕様を抽出するツールチェーンを紹介します。
今年の初め、私はStrongDMのレベル5自律型ソフトウェア工場についての「ダークファクトリー」に関する記事を書き、3人のエンジニアが人間の実装介入なしにプロダクションコードを出荷する様子を紹介しました。その記事では、AIコーディング自律性の5つのレベルをマッピングしました。これは、組織が人間主導のコーディングから完全自律までのスペクトラムのどこに位置するかを示す便利な枠組みとなっています。
レベル1:AIアシスト。人間がすべてを駆動し、AIはより速いキーボード。 レベル2:AI生成+人間レビュー。AIがドラフトし、人間がすべてのPRを承認。 レベル3:AI生成+自動化ゲート。AIが書き、テストがレビューし、人間は障害対応。 レベル4:ほぼ自律+エスカレーション。AIがフルループを処理し、人間は新しい問題に対応。 レベル5:完全ダークファクトリー。AIがエンドツーエンドで実行し、人間は目標のみを定義。
現在、ほとんどの組織はレベル2からレベル3の間にあります。GitHub Copilot、Cursor、Claude Code、または内部エージェントパイプラインなど、何らかのAIコーディング支援を導入しており、プルリクエストの速度で生産性の向上を測定しています。StripeのMinionsはレベル2~3で週に1300のPRを出荷しています。これらの数字は印象的で現実的です。
しかし、これらの速度指標が隠しているものがあります。ボトルネックは上流に移行しており、ほとんどのチームはそれに制約されるまで気付かないでしょう。レベルの移行ごとに制約が変わる場所が変わります。レベル1では、ボトルネックはコードを書くことです。実装の2倍または3倍の高速化は、時間がすべてそこに費やされていたため、目に見える利益をもたらします。レベル2(生成+人間レビュー)では、ボトルネックはコードレビューに移ります。人間が検証できるよりも速くコードを生成しているため、チームはリンティング、静的解析、テストゲートなどのレビューチェックを自動化して対応し、レベル3に到達します。レベル3(自動化ゲート)では、ボトルネックは統合とデプロイに移り、生成されたコードをCIで大規模に実行することが制約となります。チームは自動化検証パイプライン、デジタルツイン環境、確率的満足度メトリクスを構築し、レベル4に到達します。
レベル4では、何かが変わります。工場は最小限の人間の介入で実装、テスト、デプロイを処理できます。ボトルネックは初めて上流に移動し、工場に投入する仕様を書く人間にのしかかります。AIエージェントはほぼ何でも構築できますが、それは自律的な実装に十分に正確で、完全で、曖昧さのない文書化された仕様がある場合に限られます。これが「仕様の天井」です。ほとんどの組織はまだレベル2または3にいるため、まだこれに直面していません。現在の仕様スループットがサポートできるコーディング速度の向上を祝っています。しかし、レベル4に向けて上昇するにつれて(すべてのAI加速組織が最終的にそうなる)、制約は「どれだけ速く構築できるか」から「何を構築するかをどれだけ速く定義できるか」にシフトします。
症状は予測可能です。プロダクトマネージャーは急ぎ、仕様は薄くなり、仕様と必要なものとの間にずれが生じ、これまで以上に速く間違ったものを構築したことに静かに気づきます。
この問題の最も洗練された部分は、その解決のための原材料が、ステークホルダーミーティングを行うすべての組織ですでに生成されていることです。デフォルトですべてのプロダクト会話を記録すべきです。テクノロジーは事実上無料です。Zoomの文字起こし、Otter、Fireflies、内蔵の会議録画プラットフォーム、またはデータを自社インフラに保持したい場合はローカルのWhisperインスタンスなどがあります。記録しない場合のコストは桁違いに高くなります。コンテキストの喪失、誤った決定、実際に言われたことに戻れないための要件の漂流です。
ステークホルダーとの1時間の通話は単なる会議の要約ではありません。それは、実際に構築する必要があるものについて組織が生み出す最も密度の高い信号源です。明示された要件、暗黙の制約、延期された決定、逸話に埋もれたエッジケース、共有されているように聞こえるが実際にはそうではない抽象名詞、そのすべてが文字起こしに含まれています。問題は、人間のノートテイキングがその信号のごく一部しか抽出せず、残りは録音に残り事実上失われることです。
私はこの1年、残りの80%を抽出するツールチェーンを構築してきました。これはオープンソースで、私のhermes-profilesとagent-skillsリポジトリにあり、Agent Skillsフォーマットをサポートする任意のAIエージェントプラットフォームで動作します。生の会話から実行可能な仕様までの3つのフェーズに対応する3つのレイヤーがあります。
レイヤー1:プロダクト発見スキル。このスキルは会議の文字起こしを受け取り、構造化された蒸留プロセスを通じて実行します。発言タイプ(欲望の表明、逸話、ルールと制約、回避、かわし)で会話をセグメント化し、言語マーカーを使用して各セグメントから候補となる受け入れ基準(AC)を抽出します。「私たちは[機能]が必要です」は直接ACになり、「Xが発生したときにYが壊れる」は暗黙のAC(苦情の逆)になり、「Xが発生したときを覚えていますか?」は3つの具体的なエッジケース(前、最中、後)にフリーズフレームされます。各ACは出典によって分類されます。SAID要件はステークホルダーからの明示的な発言です。IMPLIED要件はSAID要件が機能するために論理的に必要なものです。INTERPRETED要件は蒸留器がもたらすドメイン知識から来ます。INFERRED要件はギャップと避けられたトピックから導出され、常に未解決の質問として残り、ACにはなりません。その後、クリーンアップパスがあります。「おそらくそれを処理すべき」のような曖昧な言葉(先送りされた決定)や「理想的にはSalesforceと統合する」のような優先順位のないウィッシュリスト項目にフラグを立てます。また、「スケーラブル」「安全」「ユーザーフレンドリー」「効率的」などの抽象名詞を分解します。これらは共通理解のように聞こえますが実際には決してそうではありません。それぞれが要件になる前に、具体的で測定可能なしきい値に分解されます。出力は構造化された要件成果物であり、タイプと信頼レベルによって会話からのすべての発見を整理したドキュメントで、プロダクトマネージャーまたはテクニカルリードがレビューできる状態になっています。
レイヤー2:プロダクトマネージャープロファイル。PMプロファイルは蒸留成果物を消費し、プロダクト要件ドキュメント(PRD)を生成します。問題文、対象ユーザー、適切な「as a / I want / so that」形式のユーザーストーリー、スコープ境界、成功基準、明示的な非目標、未解決の質問を含みます。レイヤーの規律を強制します。概念と原則は適切な抽象度で、実装の詳細を要件として偽装することはありません。出力はアーティファクトピラミッド形式に従います。段階的な開示。ステークホルダーと経営者向けのL1サマリー、プロダクトチーム向けのL2分析、実装者向けの生の証拠を含むL3資料。レイヤー間で情報の損失はありません。
レイヤー3:SDDパイプライン。Spec-Driven Development(SDD)パイプラインはPRDを受け取り、実装可能な仕様を生成します。Given/When/Then形式の受け入れ基準、エッジケースの列挙、測定可能なしきい値を持つ非機能要件、データコントラクト、各移行ポイントでの品質ゲート。SDDパイプラインはツールに依存しません。生成された仕様は、Claude Code、Cursor、Devin、OpenHands、Hermes Agentなど、任意のAIコーディングシステムに入力できます。仕様形式が宛先を定義し、工場が経路を見つけます。
このパイプラインは、ドメインを理解する人々を置き換えるものではありません。それらを増幅します。人間の判断が入る場所は次のとおりです。プロダクト発見スキルは要件蒸留を生成し、プロダクトマネージャーまたはテクニカルリードが進める前にレビューします。PMプロファイルはPRDを生成し、そのPRDが次の会話のアジェンダになります。プロダクトマネージャー、テクニカルアーキテクト、および必要に応じてデータアーキテクトまたはプラットフォームリードが、PRDをどのように実行するかを議論するワーキングセッションです。この会話も記録され、その文字起こしがテクニカルアーキテクトプロファイルに入力されます。スペシャリストプロファイル(データアーキテクチャ、サイトリライアビリティ、セキュリティ)がドメイン固有の成果物を提供し、オーケストレータプロファイルがそれらをまとめ、完全なワークフローを分解して各フェーズを適切なスペシャリストにルーティングします。検証者プロファイルが各移行をゲートします。SDDパイプラインは全体像を取得し、実装可能な仕様を生成します。
重要な洞察:プロセスは人間を決して排除しません。手動文書化の摩擦を取り除き、人間が判断を必要とするものに時間を費やせるようにします。つまり、タイピングではなく意思決定です。