AI Session Notes - 2026-04-01
DDD とクリーンアーキテクチャの関係
学んだこと
- DDD(ドメイン駆動設計)とクリーンアーキテクチャは別の概念だが、組み合わせて使われることが多い
- DDD は「何をモデリングするか」(設計思想)、クリーンアーキテクチャは「コードをどう配置するか」(アーキテクチャパターン)
- クリーンアーキテクチャの最内層(Entity / Use Case)に DDD の戦術的パターン(Aggregate, Value Object, Domain Service)を配置するのが典型的な組み合わせ方
- 両者は独立して使えるが、組み合わせると「ドメイン層を外部技術から守る」という共通のゴールを強力に実現できる
詳細
DDD の2つのパターン群
- 戦術的パターン: Entity, Value Object, Aggregate, Repository, Domain Service など — コード設計に直結
- 戦略的パターン: 境界づけられたコンテキスト(Bounded Context)、ユビキタス言語 など — チームやシステム境界の設計
クリーンアーキテクチャの層構造
依存関係は外側から内側への一方向のみ(依存性逆転の原則):
[Framework/Driver]
→ [Interface Adapter (Controller, Gateway)]
→ [Use Case (Application Service)]
→ [Entity (DDD の Aggregate, Value Object, Domain Service)]
学習リソース
- 成瀬允宣『ドメイン駆動設計入門』 — DDD の戦術的パターンを C# で丁寧に解説。言語を問わず最初の1冊として最適
- Robert C. Martin『Clean Architecture』 — SOLID 原則から依存性逆転まで体系的に学べる
- Eric Evans『エリック・エヴァンスのドメイン駆動設計』 — 原典。戦略的パターンの理解に必須
- Vaughn Vernon『実践ドメイン駆動設計』 — Evans 本を実装寄りに補完
- 学ぶ順序としては、成瀬本 → Clean Architecture 本 → Evans 本 が効率的
メタ情報
- ツール: Claude Code
- 関連技術: DDD, Clean Architecture, ソフトウェア設計