本書は「ドメイン駆動設計」という、ソフトウェア・システムのモデリングおよび設計手法について説明したものである。
ドメイン駆動設計は「ドメイン知識駆動設計」とよぶ方がわかりやすいと思う。
これは、業務のモデリングおよびシステムの設計に、クライアントであるドメインエキスパートと共通の語彙を使ってモデリ
...続きを読むングから設計の詳細までを行おうという手法である。
これによりモデルと実装が乖離することがなく、ドメインエキスパートおよびソフトウェア・エンジニアがつねに対話しながら、彼らの知見を活かしてモデルとシステムを改良し続けられるとしている。これが本書のメインテーマである。
そして、モデルをシンプルにするために、値オブジェクトやimmutableなオブジェクトを使うことを推奨し、コンポーネントの疎結合化、レイヤー化の導入を提案する。これが本書のサブテーマである。
ただし、既存のシステムが存在する場合などでは、全て理想的に行くとは限らないので、その場合の解決・妥協方法について本書の後半で述べられている。
実際にシステムを構築した人でないと後半は漠然としていてわかりにくいが、前半は例を用いて明確に書かれており、それだけでも本書を読む価値はあると思ったので★4つとする。