エリック・エヴァンスのドメイン駆動設計の第1部を読んだ理解をまとめる。

第1部 ドメインモデルを機能させる

ドメインとは、ソフトウェアが対象とする問題領域のこと。

モデルとは、問題を解決するために情報を簡略化・抽象化した知識の表現形式のこと。

ドメインモデルとは、そのままドメインをモデル化したものということになる。

ドメイン駆動設計におけるモデルの有用性

ドメイン駆動設計の特徴は以下の3点である。

  1. ドメインモデルが、チームメンバ全員が使用する言語の基盤となる
  2. ドメインモデルは、ドメイン知識をエンジニアとドメインエキスパートが協働して作り上げる
  3. ドメインモデルと実装が密接に結びつくことによってソフトウェアに確実に反映される

ドメイン駆動設計とは、ドメインモデルを共通言語の基盤とし、ドメインモデルをコードやコミュニケーションと一体化させ、ドメインモデルを反復的に深化させる設計手法である。

ソフトウェアの核心

ソフトウェアの核心は、ドメインに関係した問題をユーザのために解決することである。 技術志向のエンジニアはドメインに関係する問題は好まず、スキルを発揮できる技術的な問題を好むが、ソフトウェアの核心にある複雑さに正面から立ち向かい、ドメインを学び、モデリングを行わなければ的外れなソフトウェアを作ってしまう危険性がある。 ソフトウェアの核心にある複雑さに立ち向かうことは非常に高度な設計スキルを養う機会があり、その設計技術を身に着ければ価値のあるエンジニアとなる。