コンテンツにスキップ

仕様書 vs コード vs プロンプト:AI時代の開発ドキュメント戦略【Claude Code対応】

AI時代の開発では、仕様書・コード・プロンプトのどこに情報を置くかで品質が大きく変わる。本稿ではClaude Code/Cursor/Copilotを例に、リスクとフェーズごとに使い分ける実践フレームを提示し、仕様ドリフトを防ぐ具体策をまとめた。

関連ガイドと実装ハンドブック

この記事でわかること

AI時代における仕様管理の3つのアプローチ(仕様ドキュメント・コード中心・プロンプト駆動) リスク・フェーズ・レイヤに応じたハイブリッド運用の指針 Interface / Contract層を活用した仕様ドリフト防止策

目次

Note

目次の各リンクは、見出し記法の揺れでアンカーが生成されないケースがあったため、いったんプレーンテキストにしています(見出し整理後、リンク復活予定)。


この記事のポイント

先に結論を述べる。どれか1つのアプローチに全振りするのはリスクが高い。現実的には、以下のハイブリッド運用が妥当である。

  • 高リスク・長期保守領域 → 仕様ドキュメントを厚めに(A寄り)
  • 内部モジュール・開発速度重視領域 → コード=仕様をベースに(B寄り)
  • 探索・スパイク → プロンプト駆動でフル活用し、残すと決めたものだけA/Bに引き上げる(C寄り)

そのうえで、Interface / Contract層(OpenAPI、Protobuf、GraphQL、型定義など)を「仕様・コード・AIの三者が合流する共通レイヤ」として設計しておくと、仕様ドリフトや責任の所在をコントロールしやすくなる。

ハイブリッド運用のポイント

Interface層を「仕様・コード・AIの共通言語」として設計することで、どのアプローチを採用しても検証可能な契約を維持できる。


3つのアプローチの全体像

アプローチA:仕様ドキュメント回帰派

立場:AIが実装者になるからこそ、仕様をきちんと文字に残さないと危ない。

背景にある前提は以下の通り。

  • 人間の開発者は、チームの暗黙知や過去の経緯を「空気で補完」できた
  • AIはセッションごとにリセットされるため、明示されていない前提を汲み取れない
  • 結果として、仕様を明文化しないと、AIが毎回「ベストプラクティス風に」独自解釈してしまう

この立場が強い領域は、金融・医療・公共などの規制産業、大企業の基幹系・ミッションクリティカルシステム、複数ベンダー・オフショア・長期保守が前提のシステムである。

What(ビジネス要件)をしっかり文章で残し、場合によってはHow(設計方針)まで仕様書に含める。「動くコードがあるだけでは説明責任を果たせない」という世界観である。


アプローチB:コード=仕様派(Living Documentation)

立場:仕様書とコードを二重管理するのは無駄。コードとテストこそが仕様である。

この考え方はAI以前から存在し、以下の動きと相性が良い。

  • BDDのGherkinシナリオ(テスト=仕様)
  • OpenAPI / GraphQL / Protobuf などのスキーマ駆動設計
  • TypeScript / Rust / Go など、型システムの強い言語による「型=契約」志向

AI時代になると、これがさらに加速する。コードを書いたらAIにREADME / ADR / APIドキュメントを自動生成させ、仕様のソース・オブ・トゥルースはコードに一元化する方向である。

この立場が強い領域は、スタートアップ・小規模チーム・プロダクト初期フェーズ、型の強い言語やスキーマツールを活用できる環境である。


アプローチC:プロンプト=仕様派(Prompt-Driven Development)

立場:AIへのプロンプト(指示文)が、そのまま仕様として機能するのではないか。

Claude Code / Cursor / Devin のようなエージェント型ツールでは、以下の流れになる。

  1. 自然言語でタスクを指示する
  2. AIが調査・設計・実装・テストまで一気通貫で行う
  3. プロンプトと対話ログを見れば、「なぜそう実装したか」がある程度追える

プロンプトが従来の仕様書の役割(What/制約の定義)をある程度代替する。

注意点

この「プロンプト=仕様」という概念整理は、界隈で確立した用語というより、現象を捉えるための仮説的なフレームである。ツールチェーンも発展途上であり、現時点ではPoCやスパイク限定と割り切るのが現実的である。


本質的な違い:何をどこで固定するか

3つのアプローチは、「仕様書を書くかどうか」の違いではない。本質的には、どのレイヤの情報を、どの媒体で"固定"するかの違いである。

レイヤを3つに分ける。

レイヤ内容
What何を実現するのか(ビジネス要件、ユーザーストーリー、SLA、制約)
Interface / ContractAPI / イベント / DB スキーマ / 型 といった「検証可能な契約」
How内部設計、アーキテクチャパターン、実装詳細

各アプローチがどのレイヤをどう扱うかを整理すると以下の通り。

レイヤA:仕様ドキュメント回帰B:コード=仕様C:プロンプト=仕様
What仕様書で厚く書くユーザーストーリー+テストケースプロンプトと対話ログ
Interface仕様書+スキーマで管理スキーマ(OpenAPI等)が主役自動生成されたスキーマ/型
How設計書 or サンプリングレビューコードとテストに内包AI の生成コードに内包

重要な点:どのアプローチも、最終的には「Interface / Contract層」を何らかの形で持つ。この層が、人間の仕様とコード、そしてAIのすべてをつなぐ中間言語として機能する。


各アプローチの強みと破綻ポイント

アプローチA:仕様ドキュメント回帰派

  • 規制産業・公共・金融など、監査と説明責任が重いドメイン
  • 複数社・複数チームが関わる大規模プロジェクト
  • 長期保守・引き継ぎが前提のシステム
  • スピード低下:仕様の合意・更新に時間がかかる
  • 二重管理コスト:仕様と実装が乖離し、どちらも信用できなくなる
  • 誰も読まない問題:開発者はコードとテストを見てしまい、仕様書は監査用PDFと化す

AI時代の変化として、仕様ドラフトをAIに書かせられるため「ゼロから書く」コストは下がりつつある。一方で、「仕様を誰がレビューして責任を持つか」はむしろ重くなる。


アプローチB:コード=仕様派(Living Documentation)

  • スタートアップ・小規模チーム・プロダクト初期フェーズ
  • TypeScript / Rust / Go / Kotlin など型の強い言語
  • OpenAPI / GraphQL / Protobuf / Prisma などスキーマツールとの組み合わせ
  • ビジネス側への説明不足:「仕様はコードです」と言っても通じない
  • 外部連携・契約上の根拠不足:「GitHubを読んでください」では契約書に載せられない
  • 長期保守時の意図喪失:「なぜこの仕様になっているのか」の背景はコードから復元が難しい

AI時代の変化として、コードからREADME / ADR / APIドキュメントを自動生成する動きで、Bはさらに強くなっている。


アプローチC:プロンプト=仕様派(Prompt-Driven Development)

  • PoC / 実験 / スパイクタスク
  • まだ要件が固まっていない探索フェーズ
  • 1〜2人の個人開発に近い状況
  • プロンプト履歴の分散:どの対話が「最終仕様」なのか分からなくなる
  • トレーサビリティの欠如:「誰がどのプロンプトで何を生成したか」を後から追えない
  • 責任の所在が不明瞭:プロンプトを書いた人・AI・レビューした人のどこに責任があるのか曖昧

現時点での限界として、プロンプトと生成物を一体でバージョン管理し、チームレベルで追跡するツールチェーンはまだ発展途上である。


使い分けの指針:リスク × フェーズ × レイヤ

1つのアプローチに全振りするのは危険である。リスク・フェーズ・レイヤの3軸で「どこにA/B/Cを厚く張るか」を決める。

軸の定義

区分
リスクHigh(法的・大口顧客・金銭大)/ Mid(中口顧客・影響中)/ Low(内部ツール・PoC)
フェーズPoC・スパイク / β・成長 / 本番安定運用 / 長期保守
レイヤWhat / Interface / How

指針マトリクス

条件推奨アプローチ
High × 本番・長期保守 × What・InterfaceA+B:仕様ドキュメント必須+スキーマ連動
Mid × 成長フェーズ × Interface・HowB中心:コード=仕様、スキーマ駆動、最低限のADR
Low × PoC × 全レイヤC中心:プロンプト駆動で速度優先、残すなら後でA/Bに引き上げ

大事なのは、「どのマスにどのアプローチを採用するか」をチームで一度言語化しておくことである。

例として以下のようなポリシーを設定する。

  • 「金融系の本番APIのWhat/InterfaceはA/Bを採る」
  • 「管理画面の内部UIはBだけで行く」
  • 「プロトタイプはCで作り、残すと決めたものだけA/B側に引き上げる」

このレベルのポリシーがあるだけで、「なぜここは仕様を厚く書くのか/書かないのか」の説明がしやすくなる。


チェックポイント:自分たちのチームはどこにいるか

A/B/Cのどこに寄せるべきかを考えるための簡易チェックポイント。

質問1:一番怖いリスクは何か?
  • 監査/訴訟/契約違反 → A寄り
  • スピード低下/市場機会の喪失 → B/C寄り
  • チーム生産性/バーンアウト → B寄り
質問2:今一番詰まっているのはどこか?
  • PRレビューが詰まっている → Interface層を見直す余地
  • 「何を作るか」から迷っている → A or Cで仕様の起点を明確に
  • 「何が仕様か分からない」 → B寄りの逆生成アプローチを検討
質問3:プロダクトのフェーズはどこか?
  • まだ顧客に触らせていない → C多めでよい
  • 売上が立ち、顧客が付いている → A/Bの比率を上げるべき
  • 5年以上保守する前提のコアシステム → A/Interface層への投資はほぼ必須

まとめ

3つのアプローチは互いに排他的ではない。

  • Aだけに振り切ると、現場は重くなりすぎて動けなくなる
  • Bだけに振り切ると、外向きの説明・長期保守・組織間調整で詰まる
  • Cだけに振り切ると、再現性と責任の所在が曖昧になり、本番では危険

現実的な戦略は、リスク・フェーズ・レイヤに応じたハイブリッド運用である。

そのうえで、Interface / Contract層を「仕様(A)・コード(B)・AI(C)が合流する共通レイヤ」として設計しておくことで、仕様ドリフトや責任の所在をコントロールしやすくなる。

1本の「正解アプローチ」を探すよりも、自分たちのプロダクト・組織・リスクに合わせて「どこにA/B/Cを割り当てるか」を決めるフレームとして、この整理が使えれば十分である。

次のステップ

  • チーム内で「どのマスにどのアプローチを採用するか」のポリシーを一度言語化する
  • Interface / Contract層(OpenAPI、型定義、スキーマなど)を設計し、仕様ドリフトを防ぐ
  • 定期的に仕様管理のアプローチを見直し、リスクとフェーズに応じて調整する