随分間が空いてしまいました…。読書会はPart 2の導入の部分まで進めたのですが、その前に Part 1 のおさらいをしてみます。
Part 1 のおさらい
知識のかみ砕き(Knowledge Crunching) (1章)
- ドメインエキスパートとの対話を通じてモデルを洗練し続けること
- 効率的なモデルを作り出すことが可能に
- 単に柔軟で変更に強いだけでなく、要求の変更にまで対応できる
深いモデル (1章)
- ドメインの本質をついた、うまいモデル
- 深いモデルを作る体制まで整えられることが DDD の利点の一つ (だと思っています…)
ユビキタス言語 (2章)
- ドメインエキスパート/開発者/コードが同じ概念を共有すること
- 開発へのドメインエキスパートの参加(オンサイト顧客)が前提
- 効率的な知識のかみ砕きに必要
モデル駆動設計 (3章)
- モデルと一致させながらプログラムを作る
ハンズオンモデラー (3章)
- 設計者も実装に参加する
- 理由1: 実装の制限は参加しないと分かりにくい
- 理由2: 参加しないと設計の背景にある考えが伝わらない
Part 2 The Building Blocks of a Model-Driven Design (モデル駆動設計の構成要素)
Part 2 はプログラムに使われる、基本的なパターンを紹介するパートです。 Part 1 とは違い、実装寄りの話が中心になります。
以下が紹介されています。
- エンティティ
- 値オブジェクト
- サービス
- モジュール
- 集約
- ファクトリー
- リポジトリ
もしかしたら聞いたことのある物が多いかもしれません。実際、このパートで紹介されているパターンは既存の手法を整理し直した物です。「ドメイン駆動設計ならでは」といったものではありません。
一方で、ドメイン駆動設計に限らず汎用的に使えそうな概念がまとまっています。
次回は、これらの基本的なパターンの紹介になる予定です。