これまでのドメイン駆動設計
今日から第四部。第一部から第三部まで何を読んできたかちょっと復習
第一部:ドメインモデルを機能させる
ドメイン駆動設計の基礎。その概念や設計・実装する上で必要なことを説明しています。
ドメイン駆動設計では慣れたこれまでの設計(トランザクションスクリプトな設計)の考え方から離れて、マインドから変えていかなくてはいけない。
モデルと実装を結びつけること。コミュニケーションを重視し、ユビキタス言語を構築すること、ドメインエキスパートとの会話から知識を噛み砕いてモデルにしていくことなどが説明されています。
第二部:モデル駆動設計の構成要素
ドメインと技術的な要素を切り離すことから始まり、関連・エンティティ・値オブジェクト・モジュール・集約などの構成要素がテーマ。
第三部:より深い洞察へ向かうリファクタリング
ドメインについての深い理解をとらえたモデルをいかに見つけ出すかがテーマ。
暗黙的な概念を明示的にするテクニックや、しなやかな設計にしていくためのリファクタリングなどが説明されています。
戦略的設計
最終第四部はモデリングプロセスをスケールアップさせるための原則がテーマ
三部までの違いは、複数のチーム・複数のシステムが関わったり、政治が入り組むことが多いところでの判断が必要になること。
サブシステムを含めたシステム全体でモデルを統一するということは夢のまた夢で非現実。
大きすぎ、扱いにくい、重複や矛盾が紛れ込む。
いかに統合してかつ、モジュール性を実現するか。その戦略が三部のテーマです。
モデルとしては、概念的なコア(システムの「ビジョン」をとらえるモデル)にいかに集中するかが大事なテーマになってきます。
これらを解決するための3つのキーワード。それが、コンテキスト、蒸留、大規模な構造です。
コンテキスト
上記でいうモジュール性をどの範囲で適用するか、その境界を明示的にし、いかに整合性を維持していくかがテーマ。
蒸留
ドメインにおいて、周辺的な重要でない問題への努力を減らし、最も付加価値の高い箇所へ注力していく。
各サブシステムを含め、それぞれで適切な視点で、焦点を合わせ、システムで最も重大な部分に努力を向け、ビジョンを失わないようにしていく。
サブシステムが複数あるような大きなシステムでは、このコアンドメインの設計が役に立つものになっていきます。
大規模な構造
このキーワードは、システム全体にわたって、適用できる設計要素やパターンがテーマ。システム全体にわたる包括的なテーマとなる。
明日からはこれらを詳細に読んでいきます。