1. はじめに:混乱を解きほぐす「2つのDDD」
IT業界で「DDD」という言葉を聞いたとき、専門家によって全く異なるものを想像することがあります。まずは、私たちが取り組むべき「DDD」がどちらであるかを明確に定義しましょう。
今回解説するのは、開発のエンジンをドキュメントに据える「ドキュメント駆動開発」です。
| 項目 | Document Driven Development (ドキュメント駆動開発) | Domain Driven Design (ドメイン駆動設計) |
| 略称 | DDD | DDD |
| 焦点 | 開発プロセス・対話・記録 | ソフトウェア内部の設計構造 |
| 目的 | ドキュメントを「正」とし、AIと人間の認識を同期して開発を加速させる。 | 複雑なビジネスルールをコードの構造に正しく反映させる。 |
| 初心者のイメージ | 完璧な「地図(指示書)」を描き、AIという自動運転車を走らせる手法。 | 建物そのものの「骨組み」を、実際の業務ルールに合わせて頑丈に作る手法。 |
略語の整理ができたところで、本ドキュメントの主役である「ドキュメント駆動開発(DDD)」がAIの力でどう進化したのかを見ていきましょう。
--------------------------------------------------------------------------------
2. 現代の魔法:AI-Native DDD(AIネイティブ・ドキュメント駆動開発)とは
従来のドキュメント駆動開発は「記録」が目的になりがちで、書類の更新が負担となる課題がありました。しかし、AIネイティブな時代において、ドキュメントは単なる記録ではなく「AIを動かす高純度の燃料」へと進化しました。
ここでは、「コードはドキュメントの副産物である」という哲学が中心となります。AI-Native DDDがもたらす3つのパラダイムシフトを確認しましょう。
- 人間は「意思決定」に集中する 人間が自らコードを打つ時間は最小限になります。役割は「何をしたいか」という意図の言語化と、AIの提案を「承認・決定」することに移行します。
- ドキュメントはAIへの「指示書」である ドキュメントは、AIにプロジェクトの背景、目的、ルールを深く理解させるための「構造化されたプロンプト」として機能します。
- コードより先に「Issue(課題)」を正とする とりあえずコードを書くのではなく、まずGitHubのIssueに「何を完了とみなすか(完了定義)」を記述します。これがAIの自律走行を支える航海図になります。
この魔法を実現するためには、適切な道具(AIツール)の使い分けが不可欠です。
--------------------------------------------------------------------------------
3. 最強の布陣:AIツールチェーンの役割分担事典
AI-Native DDDでは、3つの主要ツールを「アナリスト」「アーキテクト」「エンジニア」という役割で見立てて連携させます。
① NotebookLM:知能のルツボ・アナリスト
- 役割(メタファー): 膨大な情報を整理し、エッセンスを抽出する「超優秀な分析官」。
- 得意なこと: 会議の録音データや断片的なメモから構造を抽出すること。複数のドキュメントを統合して、スライド構成やレポートを作成します。
- 具体的なアウトプット: 構造化されたPRD(製品要求仕様書)、インフォグラフィック、プレゼン資料案。
- 対比: NotebookLMが「情報を合成」するのに対し、後述のCodexは「論理を検証」します。
② Codex:論理の探求者・アーキテクト
- 役割(メタファー): 設計の矛盾を徹底的に突く「厳格な校閲者(インターロゲーター:尋問官)」。
- 得意なこと: ドキュメントを読み込み、「データが空の場合は?」「NULLを許容しますか?」といった、人間が落としがちな論理の穴への逆質問。
- 具体的なアウトプット: Q&Aログ、補完された詳細要件定義。
- 専門家の視点: Codexは単なるヘルパーではありません。仕様を攻撃して堅牢にする「論理のゲートキーパー」です。
③ Claude Code:自律実装エージェント・エンジニア
- 役割(メタファー): 指示を受けて実際に手を動かし、完遂させる「超高速なプログラマー」。
- 得意なこと: 確定した仕様から設計図(ER図、API定義)を生成し、実際のコーディングからテスト実行まで自律的に行うこと。
- 具体的なアウトプット: ソースコード、GitHub Issue、Unitテスト結果、更新されたREADME.md。
道具の役割を理解したら、それらが連携して流れる「開発の5つのステップ」を辿ってみましょう。
--------------------------------------------------------------------------------
4. 開発のライフサイクル:5つのフェーズと成果物
AI-Native DDDのワークフローは、以下の「インフィニティ・ループ(無限の循環)」を辿ります。
1. 抽出 (Extraction)
- Input: 打ち合わせの音声録音、断片的なメモ。
- Action: AIで文字起こしし、NotebookLMで構造化。
- Output: プロジェクトの背景・目的が整理されたドキュメント。
2. 審議 (Refinement)
- Input: ステップ1の構造化ドキュメント。
- Action: Codexが「境界条件(データが空のとき、例外発生時など)」を人間に質問し、仕様を研磨。
- Output: エッジケースまで網羅された完璧な仕様書。
3. 設計と分解 (Decomposition)
- Input: 確定した仕様。
- Action: Claude CodeがDB設計やAPI定義を作成。それらをGitHub Issueへ分解。
- Output: ER図、API仕様書、Acceptance Criteria(AC:完了定義)付きのIssue。
- Specialist's Tip: AC(完了定義)が不明確だと、AIは「いつ作業を止めていいか」がわからず失敗します。ACの明記は必須です。
4. 自律実装と検証 (Implementation)
- Input: 登録されたIssue。
- Action: Claude CodeがDocker環境でコーディングし、Unitテストを実行。パスするまで自動修正。
- Output: 動作するコード、テスト結果、コミットメッセージ。
5. 昇華 (Sublimation)
- Input: 実装後の全ドキュメント(READMEやdocs/配下)。
- Action: 蓄積された知見を再度NotebookLMに投入し、全体を再構造化。
- Output: 経営層向けのプレゼン資料、デモシナリオ。
- 循環の鍵: これが「インフィニティ・ループ」です。現場の実装結果が、次のビジネス判断の「燃料」として再利用されます。
このサイクルの鍵は、常に人間とAIが「今の状況」を同期していることにあります。
--------------------------------------------------------------------------------
5. AIとのシンクロニシティ:『今の状況を教えて』の威力
開発者がVS Codeを起動した際、最初に行うべきは「今の状況を教えて」とAIに問いかけることです。
同期のロジック
この魔法のフレーズに対し、AIは以下のロジックで回答を構成します。
- 指示書の読み込み:
.claudercやinstructions.mdに記された「状況報告ガイドライン」を参照。 - ステータスのスキャン:
docs/progress-status.mdを読み取り、現在地を把握。 - ドキュメントの整合性確認:
docs/配下の最新設計と、現在のソースコードに乖離がないかを確認。 - Issueの把握: オープンなIssueから、次に取り組むべきタスクを特定。
これにより、人間は「どこまでやったか」を思い出すコストから解放され、即座に重要な意思決定に戻ることができます。
--------------------------------------------------------------------------------
6. 実践の基盤:モダンな技術スタックとディレクトリ構成
AI-Native DDDを支えるのは、シンプルかつ堅牢な環境です。
技術スタック
- OS/環境: Windows (WSL2)
~/projects/ - 仮想化: Docker (Nginx, PHP-FPM, MySQL, phpMyAdmin)
- バックエンド: Laravel 12 (PHP 8.3+) / MySQL 8.4
- フロントエンド: Vue.js (Vite)
- ポート指定: App: 8021 / DB: 3321(開発環境の衝突回避のため)
推奨ディレクトリ構成
AIが「情報の置き場所」を迷わないよう、docs/ 配下を厳格に管理します。
project-root/
├── .clauderc # 「今の状況を教えて」の応答ルール
├── docs/
│ ├── requirements/ # 常に「正」となる設計図
│ │ ├── data-model.md # DB設計・ER図
│ │ ├── api-definition.md # APIエンドポイント
│ │ ├── calculation.md # 見積計算ロジック
│ │ └── industry-presets.md # 業界別プリセット定義
│ ├── progress-status.md # 現在の進捗状況(AIが最初に読むファイル)
│ └── architecture/ # システム全体図
├── docker/ # コンテナ設定 (MySQL 8.4等)
├── src/ # Laravel 12 / Vue.js のソース
└── README.md # プロジェクトの顔・AIの入り口
--------------------------------------------------------------------------------
7. まとめ:AI-Native DDDがもたらす未来
AI-Native DDDを採用することで、開発者は「コードの書き手」から「知恵の指揮者」へと進化します。この手法は、属人化を排除し、誰がいつ参加しても即座に最高のパフォーマンスを発揮できる環境を作ります。
最後に、私たちが明日から意識すべき「開発マニフェスト」を掲げます。
AI-Native DDD 開発マニフェスト 「私たちはコードだけを書くのではない。AIが読み、人間が理解し、未来の自分が感謝する『生きた知識(ドキュメント)』を構築しているのだ。」
明日から意識すべき3つのポイント
- ドキュメントを「燃料」と捉える AIの精度が低いときは、ドキュメント(燃料)の質を疑いましょう。
- 実装の前にIssueとACを定義する 「何をもって完了か」というゴールを、AIに教えてから走らせましょう。
- 常に「今の状況」を同期する 開発の終わりには必ずドキュメントを更新し、次回の「今の状況を教えて」に備えましょう。