ようやく邦訳版がでますのでリンクだけ更新しておきます。
実践ドメイン駆動設計 (Object Oriented Selection)
- 作者: ヴァーン・ヴァーノン,高木正弘
- 出版社/メーカー: 翔泳社
- 発売日: 2015/03/17
- メディア: 大型本
- この商品を含むブログ (1件) を見る
Implementing Domain-Driven Design
- 作者: Vaughn Vernon
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 2013/02/16
- メディア: ハードカバー
- この商品を含むブログを見る
DDD の全体像
DDD の柱である Ubiquitous Language は単一の Bounded Context 内において適用されます。 Bounded Context の中では、明確な Ubiquitous Language にて戦略的にソフトウェアがモデル化される必要があり、ドメインモデルの思考法を注意して適用していく必要があります。
Strategic Modeling
Bounded Context は、ドメインモデルが適用できる概念上の境界線となります。 これはチームの共通言語となり、慎重に設計されたソフトウェア・モデルを表現するコンテクストを提供します。この様子を図 G.1 に示します。
戦略的な設計を経験した結果、図 G.2 に示す Context Mapping パターンが協調動作に必要だと分かるでしょう。 Bounded Context 同士の関係をコンテキストのマップが表現します。
Architecture
Context Mapping を通して相互作用する新しい Bounded Context や既存のものは、新しいスタイルの Architecture を適用することが必要な場合があります。戦略的に戦術的に設計されたドメインモデルはアーキテクチャ的に中立であることは特に重要です。 それぞれのモデルを囲み Bounded Context をホストする強力なアーキテクチャスタイルが Hexagonal で、これによりサービス指向であったり、REST や イベントドリブンのスタイルが促進されます。 図 G.3 に Hexagonal アーキテクチャを示します。
DDDに基づいた重要なモデルを慎重に構築することよりも、アーキテクチャについてより重要視してしまう場合があります。アーキテクチャは重要ではありますが、どちらがより大きなビジネス的な価値があるか、どちらが長く生き延びるかを考えて、正当な優先事項を見定めなければなりません。
Tactical Modeling
Bounded Context の中で DDD を構成する戦術的なパターンで最も重要なパターンの1つは 図 G.4 に示す Aggregate です。
Aggregate は1つの Entity または 複数のエンティティ と Value Objects の一群を生涯に渡って首尾一貫した処理を集約します。 この集約を効果的にモデル化することは非常に重要であり、DDDの構成要素としても良く知られたテクニックの1つとなります。 Aggregate インスタンスは Repository を使って集約対象とともに永続化され、その後で検索されたりします。この様子は前述の図 G.4 で見ることができます。
Entity や Value Objects の活動として自然に思えないビジネス上の操作は、図 G.5 に示すステートレスな Services を使います。
ドメインの中で起きる重要な出来事を表すには Domain Events を使います。Domain Events はいくつかの異なる方法でモデル化することができます。いくつかの集約に対するコマンド操作の結果として発生する出来事を捕捉した場合、図 G.6 で表されるように、集約(Aggregate)自身がイベントを発行します。
あまり重要視されることが少ないですが、正しく Modules を設計することはとても重要です。簡単に考えるなら、Modules は Java のパッケージや C# の名前空間と考えてください。 Ubiquitous Language によらずに、機械的に(機能的に)モジュールを設計をしてしまうと、これは有害にしかならないことを覚えておいてください。 図 G.7 に Modules がどのように選択的にドメインオブジェクトを含む制約を課すかを示します。
もちろん DDD の実践はこれだけではありません。それはあなたの前にあるこの本の中にあります。この本が DDD の実践の旅の良いガイドとなるでしょう。それでは旅行を楽しみましょう。
図とかコピペしてしまいまして、怒られたら消します。
で、目次構成は
Chapter 1: Getting Started with DDD
Chapter 2: Domains, Subdomains, and Bounded Contexts
Chapter 3: Context Maps
Chapter 4: Architecture
Chapter 5: Entities
Chapter 6: Value Objects
Chapter 7: Services
Chapter 8: Domain Events
Chapter 9: Modules
Chapter 10: Aggregates
Chapter 11: Factories
Chapter 12: Repositories
Chapter 13: Integrating Bounded Contexts
Chapter 14: Application
Appendix A: Aggregates and Event Sourcing: A+ES
てな感じです。