MENU

『ドメイン駆動設計』第1章 エヴァンス本 まとめ&感想

はじめに

最近エヴァンス本を読み始めました。 理由としては下記の3点です。

  • 職場でDDDを取り入れ始めたけれど、DDDについて断片的な知識しか持っていない。
  • 上記の理由から「DDDとは何なのか」を学んで、自分の中に土台を作りたい。
  • DDDについて論争が起きた時に「何が正しくて何がそうでないのか」自分で判断できるようになりたい。

読みっぱなしだと多分頭に残らないので、自分なりにまとめたり疑問点を下記ながら読み進めていこうと思います。

読み進めるに当たり、しょぼちむさんのエヴァンス本ノートを大いに参考にしています。

100日間かけてエヴァンス本を完読しました(PDF公開) - そこに仁義はあるのか(仮)

基本的には自分が大事だと思ったところ、気になったところだけを書き留めていきます。

序文

根本的には、DDDを駆動している原則は次の3つだけ。

  • コアドメインに集中すること。
  • ドメインの実践者とソフトウェアの実践者による創造的な共同作業を通じて、モデルを探求すること。
  • 明示的な境界付けられたコンテキストの内部で、ユビキタス言語を語ること。

第一部

  • モデル=簡素化
    • 当面の課題を解決する上で関連する側面を抽象化し、それ以外の詳細を無視したもの
  • ドメインモデル =ドメインエキスパートの頭の知識が厳密に構成され、選び抜かれて抽象化されたもの

  • ソフトウェアの核心は、ドメインに関係した問題をユーザーのために解決する能力

    • ドメインが複雑であれば、問題を解決するのは難しい作業になる。その複雑さに立ち向かうためにはドメイン設計に精通することが要求される。

第一章 知識をかみ砕く

知識をかみ砕くことで、チームの持っている知識が価値のあるモデルとして変わることができる。

※ 知識をかみ砕く 言葉はこの後もたびたび出てくる

  • 知識をかみ砕くとは?

    • 開発者とドメインエキスパートがチームとして共同で行うもの
    • 皆が持っている情報(ドメイン・技術に関するもの)をより集めて、大部分の意味を理解できるシンプルな見方を見つけようとする作業

    ※ かみ砕きの具体的な方法は後述されそう

  • ドメインエキスパートと共に知識をかみ砕くことで、モデルはプロジェクトの中を流れ続ける情報を体系化するためのツールになっていく。

    • ドメインにはエンティティだけでなく、ビジネスの活動やルールも含まれる。
    • それらをかみ砕こうとすることでビジネスルールの矛盾をも明らかにできる。
    • そうなると、ルールが明確・具体的になる。不要なものはスコープから除外できる。

気になったこと

  • コミュニケーション という言葉が頻繁に登場するのが印象的だった。 開発者同士、ドメインエキスパートと開発者どちらでもコミュニケーションは重要だと。それは漠然とチームワークの重要性を述べているわけでは決してなくて、チームが知識をかみ砕いて役立つ形にモデルを作り上げるためには必要不可欠という語られ方をしている印象。
  • 知識のかみ砕きを、実際ドメインエキスパートとどのようにやっていくんだろう?

参考