コンテンツにスキップ

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, ソフトウェア設計