目標
・ふわっとした理解のDDDについてエヴァンス本を通して体系的に学習する
・各章の要約をアウトプットすることで知識を定着させる
DDDとは?
ドメイン駆動設計とは...
「システムの対象とする業務領域にフォーカスした手法。 ビジネス側・開発側が協力し、共通の言語を用いて背景の認識を合わせながらドメインモデルを作成し、それを基にコードに落とし込んでいくことで、より効果的に課題解決を達成する設計手法」
⚫︎参考文献
【第1部】 ドメインモデルを機能させる
・モデル
問題解決のため対象を抽象化したもの。現実に対する1つの解釈 。
例)地図⇨客観視するために詳細を省いた世界のモデル
・ドメイン
プログラムを適用する対象領域。
例)会計システム⇨金銭や財務がドメイン
・ドメインエキスパート
ドメインの活動に関係する体系的な知識を持っている人。
例)そのソフトウェアのユーザーや、そのビジネス領域に精通している人
・ドメインモデル
ドメインエキスパートが持つ知識を、厳密に構成し選び抜き抽象化させたもの。
ドメインに関する現実の概要を表現したもの。
ドメイン駆動設計におけるモデルの有用性
1. モデルと実装が相互に結びつく
保守や継続的な開発に有効。例えばモデルに変更があったとしてもソースコードの修正範囲は限定される。
2. モデルがチーム内の言語基盤となる
ドメインエキスパートだけでなく、エンジニアチーム内でもモデルの概念をベースとしたコミュニケーションを取ることができる。
自然言語を使ったモデルの改良も期待できる。
3. モデリングプロセスへの適用
上記1,2により得た知識がフィードバックとしてモデルの品質向上を継続させる。
ソフトウェアの革新
ドメインに関係するビジネス課題をユーザーのために解決すること。
ソフトウェアの革新にあるドメインの複雑性に立ち向かい、明快なモデルを作り出すことで
エンジニアはさらに価値ある存在になれる。
【第1章】 知識を噛み砕く
効果的なモデリングの要素
1. モデルと実装を結びつける
イテレーションを通して結びつきを維持する。
2. モデルベースの言語の洗練
モデルから用語を取り出し矛盾なくコミュニケーションできるようにする。
3. 知識豊富なモデルの開発
モデルの要素である、ふるまいと、守るべきルールに関する知識を多角的に捉える。
4. モデルの蒸留
不要な概念を取り除き、モデルの品質を向上させる。
5. ブレインストーミングと実験
スケッチや会話を通してドメインエキスパートとモデルの有用性を検証する。
知識の噛み砕き
ドメインに関する膨大な知識を、ビジネスの詳細を解明するような概念知識(ビジネスの真の原理)として抽象化させること。
「効果的なモデリング」と同義?
継続的学習
ドメインモデリングだけでなく、技術的な知識も同様に向上させることで、
知識の噛み砕きを促進させモデリングのフィードバックループを回すことに繋がる。
知識豊富な設計
知識を噛み砕くことで多角的なドメイン知識を反映したモデルを作ることができる。
名詞を見つけるだけでなく、ふるまいや、ルールをモデルとして表現できるようになる。
深いモデル
最初は役立つモデルでなくても、モデリングのフィードバックループを回すことで問題の核心をつくようなモデルに繋がる。
【まとめ】
DDDの核となる概念の理解や、モデリングの概要を知ることができた。
第2章ではコミュニケーションと言語の使い方について学んでいく。
参考になったらいいねやコメントおまちしています!!