スペック駆動開発(SDD)が「ウォーターフォール回帰」かどうかは、仕様を先に書くかでは決まりません。
決め手は、SDDが 反復ループとして運用されているか、そして仕様が 検証(テスト/契約/CI)に接続されているかです。
「ウォーターフォール回帰」批判の本質
SDDへの批判は「仕様を先に書くのが嫌」という単純な話ではなく、次の“失敗パターン”への警戒が本体です。
- 承認ゲート化
仕様や設計のFIXが工程の関門になり、変更が止まる(固定化された工程になる) - ドキュメント肥大化
仕様・設計・タスクが増殖し、読むこと/整合を取ることが主作業になる - doc rot(陳腐化)
仕様が更新されずコードと乖離し、「結局コードだけが真実」に戻る - 偽の安心
“仕様があるから大丈夫”という期待が、実際は逸脱やテスト欠如で裏切られる - 二重レビュー
仕様内の擬似コードと実装の両方をレビューする羽目になり、レビューコストが増える
marmelab は、SDDがこの方向へ戻り得る(重い文書先行へ見える)点を批判しています。
Spec-Driven Development (SDD) revives the old idea of heavy documentation before coding
この批判が当たる現場は確かにあります。重要なのは”SDDそのもの”ではなく、運用設計がこの失敗パターンに陥るかどうかです。
アジャイルは「ドキュメント不要」ではない
アジャイルは「包括的ドキュメントに価値がない」と言っていません。優先順位の話です。
That is, while there is value in the items on the right, we value the items on the left more.
つまり争点は「書く/書かない」ではなく、「何を、どの粒度で、何のために残すか」です。
SDDがウォーターフォール化する条件
前述の“失敗形”を運用として踏むと、SDDは実質ウォーターフォールになります。
- 仕様・設計のFIXが工程ゲートになり、実装開始が遅延する
- 仕様が肥大化して更新が追いつかず、陳腐化する
- 仕様が検証に接続されず、逸脱が統合される
- 仕様が「読むための説明」に寄り、実装とテストの唯一の根拠にならない
ここまで来ると、批判の矛先は「SDD」ではなく「その運用」です。
「AIで作って早く学べ」という潮流と、スケール時のボトルネック
「仕様を整えるより、AIで作って動かし、フィードバックで収束させるほうが速い」というスタイルは、少なくとも“簡単なアイデア”や“探索”で強く支持されています。
marmelab は「実装が安いなら、小さく作って収束するのが最速」という立場を明示しています。
When implementing simple ideas is cheap, building in small increments is the fastest way to converge toward a good product.
また、 “vibe coding” という呼び名で、自然言語でAIに任せて試行錯誤する開発スタイルが広く流通しました。
There’s a new kind of coding I call ‘vibe coding,’ where you fully give in to the vibes, embrace exponentials, and forget that the code even exists.
一方で、プロジェクトがスケールし、仕様の精密さや整合(I/F、例外、非機能、変更影響)が求められるほど、次のデメリットが顕在化します。
- AIが“それっぽく補完”して仕様から逸脱しやすくなる
- 逸脱を検出するためのフィードバック往復が増える
- 結果として、人間の評価・修正指示が増え、人間作業がボトルネックになる
この「生成が速いほど検証が支配的になる」という構図は、IT Revolution でも明確に述べられています。
If verification and validation are your constraints, generating more code faster does nothing to improve overall productivity.
また、そもそもエージェントは指示を完全に守らないケースがあり得る、という観測もあります。
I frequently saw the agent ultimately not follow all the instructions.
つまり「AIで速く作って回す」運用は、スケールに伴い“人間の評価が増える方向”へ転びやすい。
ここに対して「反復ループを壊さずに、往復コストを抑える」ための設計として、AI時代のSDDが出てきます。
SDDを反復ループとして捉える
SDDをウォーターフォールに見せないために重要なのは、SDDを「順序工程」ではなく、学習のサイクルとして扱うことです。
この図のポイントは、検証から仕様へ戻る矢印です。
この戻り矢印が運用に入っていないと、SDDは簡単に“固定された工程”へ劣化します。
SDDがアジャイルを補強する条件
上のループに沿って、SDDの要点だけを最小化すると、ウォーターフォール化を避けたまま効果を出しやすくなります。
仕様は完成品ではなく更新対象
- 仕様は、検証で得た学びで更新される前提にする
- 仕様のFIXを工程ゲートにしない(戻る矢印を消さない)
仕様は最小でよい
長文説明を目指さず、AIが外しやすいポイントに寄せます。
- 境界(スコープ)
- 例外
- 不変条件
- 非ゴール
- 用語・参照ID(機械追跡できる形)
仕様は検証に接続する
“仕様があるから大丈夫”ではなく、逸脱が統合されないようにします。
- 受入テスト/契約テスト/CIで逸脱を検出する
- 重要な制約は「文章」だけでなく「検査可能な定義資産」に落とす(例:OpenAPI+契約テスト)
判断は履歴化する
- 却下案の蒸し返しや再採用を減らすために、意思決定ログ(ADR等)を持つ
仕様をアジャイル成果物に寄せる理由
「ウォーターフォール的仕様書が嫌われる」根本は、形式そのものより、サイクルを回しづらいという運用の副作用です。
一方、アジャイル由来の成果物(US/AC/examples、契約、テスト、ADR等)は、現場の手癖として
- 更新しながら進める
- 検証とセットで扱う
- 小さく運ぶ
に馴染みがあります。つまり「アジャイル成果物に寄せる」は、単なる見た目の問題ではなく、
- SDDを工程ゲート化しにくい形へ誘導し
- 反復ループ(検証→仕様更新)を自然に維持し
- チームの既存運用とのフィット感を保ったまま受け入れやすくする
という効果があります。
批判への回答:SDDは「工程を増やすこと」ではなく、対話コストの資産化である
ここで扱っている批判の中心は、だいたい次の2つに集約できます。
- 「SDDはドキュメント作業を増やす。実装が遅くなる」
- 「ドキュメントが工程ゲートになり、書けるまで実装へ進めなくなる(ウォーターフォール化する)」
この2点に対して、私の回答はこうです。
SDDが増やすのは“新しい作業”ではなく、既に払っているコストの再利用性
AIに自然言語で実装を依頼し、AIが探索し、計画を立てて、人間がそれをチェックしてステアリングする。
この流れ自体は、SDDを採用しなくても、AI開発をやる限りほぼ避けられません。
SDDは、その過程で生じる意図・判断・制約・例外・学びを、使い捨てにせず資産として残し、再利用可能にする発想です。
言い換えると、SDDの狙いは「ドキュメントを書くために実装を止める」ことではなく、どうせ発生する対話・検討コストを毎回リセットしないことにあります。
「工程ゲート化」への拒否感があるなら、成果物の形を変えるべき
「ドキュメントが増える」こと自体よりも、アレルギーの根にあるのは多くの場合、
- 仕様書・設計書のFIXが工程ゲートになり
- それが完了しないと実装に着手できない
という運用です。
だからこそ、検証と更新に馴染むアジャイル成果物(US/AC/examples、契約、テスト、ADR等)へ寄せることが、SDDの受け入れやすさを上げます。
それは単なる“見た目”ではなく、成果物がもともと 更新前提・検証前提で扱われるため、SDDが工程ゲート化する方向に倒れにくいからです。
SDDの開発速度がフィードバックループを超えるフェーズ
ここで答えておきたい疑問は、「結局、SDDを取り入れるとリリーススピードは上がるのか?」です。
結論は、プロジェクトのスケール・複雑度・要求精密さが上がるほど、SDDの方が優位になりやすい、です。
理由は単純で、規模が上がるほど「AIが仕様から逸脱する頻度」と「その逸脱を人間が検出・修正する往復回数」が増え、結果として人間の評価作業がボトルネック化するからです。
SDDは、最小の仕様と検証(テスト/契約/CI)を接続することで、往復の回数を抑える方向に効きます。
下図は、その関係をイメージとしてグラフ化したものです。
- 横軸:プロジェクトのスケール/複雑度/要求精密さ
- 縦軸:リリーススピード(相対)
- Vibe Coding:小規模では速いが、右に行くほど急激に低下
- SDD:初期コストはあるが、低下は緩やか
- どこかで交差し、以降はSDDが上回る
この図は「どちらが常に正しいか」を示すものではありません。
ただ、スケールが上がるほど“AIが間違える”コストが支配的になり、そこに対して仕様と検証の接続で往復を減らすSDDが効力を発揮しやすい、という論点を可視化しています。
まとめ
SDDがウォーターフォール回帰かどうかは、手順の見た目では決まりません。
- 検証から仕様へ戻る矢印が運用に入っているか
- 仕様が最小で、検証可能資産に接続しているか
- 承認ゲート化・肥大化・陳腐化を避けているか
この条件を満たす限り、SDDは「ウォーターフォールの復活」ではなく、AI時代の反復開発を成立させる設計になり得ます。
参考
- Agile Manifesto
https://agilemanifesto.org/ - marmelab: Spec-Driven Development: The Waterfall Strikes Back
https://marmelab.com/blog/2025/11/12/spec-driven-development-waterfall-strikes-back.html - Ars Technica: vibe coding(Karpathyの発言)
https://arstechnica.com/ai/2025/03/is-vibe-coding-with-ai-gnarly-or-reckless-maybe-some-of-both/ - IT Revolution: The revenge of QA...
https://itrevolution.com/articles/the-revenge-of-qa-how-ai-code-generation-is-exposing-decades-of-process-debt/ - Martin Fowler: SDD tools exploration
https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html