DDD(Domain-Driven Design)はビジネスの複雑さをコードに反映させる設計アプローチ。エンティティ・値オブジェクト・集約・境界づけられたコンテキストの概念をわかりやすく解説します。
ドメイン駆動設計(DDD: Domain-Driven Design)とは、ビジネスのルール・制約・概念(ドメイン)をコードに正確に反映させる設計アプローチです。Eric Evansが2003年に著した「Domain-Driven Design」(通称ブルーブック)が原典で、複雑なビジネスロジックを持つシステムの保守性・拡張性を高めることを目的としています。
大きなドメインを意味のある単位(コンテキスト)に分割する概念です。例えばECサイトなら「注文」「在庫」「決済」「配送」などのコンテキストに分けて、それぞれで「商品」の定義が異なっていてもOKとします。マイクロサービスアーキテクチャとの相性が良く、「1つのBounded Context = 1つのマイクロサービス」として設計することが多いです。
DDDはドメイン(ビジネスロジック)の設計手法・パターン集です。クリーンアーキテクチャはシステムの依存関係の方向を定めるアーキテクチャパターンです。多くの現場でDDDのパターンをクリーンアーキテクチャの層構造の中で実装するという組み合わせが使われます。
いいえ。DDDはビジネスロジックが複雑なシステムに効果的ですが、単純なCRUDアプリや小規模プロジェクトには過剰です。設計の複雑さとチームの学習コストを考慮して採用判断してください。
原典はEric Evans著「Domain-Driven Design」(通称ブルーブック)ですが難解なため、松岡幸一郎著「ドメイン駆動設計入門」(ボトムアップDDD)が日本語入門書として人気があります。実装例付きで理解しやすいです。
ITエンジニア向け転職サービス2強を並行利用するのが最も効果的です。
※どちらも完全無料。登録だけで市場価値を確認できます。