Open3
DDDを学ぶ

参考図書
- 「ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本」
- 「わかる!ドメイン駆動設計 ~もちこちゃんの大冒険」

DDD(ドメイン駆動設計)とは
特定のドメインにおける知識や経験を重視し、それらをソフトウェアに反映させることを目的とした設計手法
DDDの目的
- ドメインとコードをモデルを通じて繋ぎ、反復的に改善を行うこと
- ソフトウェアに落とし込む知識は選び抜く必要がある。
- 不要な知識を取り込むのではなく、ビジネスにとって重要な概念を取り出してコードへ反映していく。
- ビジネスを深く知り、問題を理解して初めて正しいソフトウェアが作れる。
DDDにおいて行うこと
- 開発者とドメインエキスパートが協力してドメインモデルを作り上げる
- 初めから完璧なドメインモデルを作り上げることは難しいのでイテレーションを回して徐々に改善していく
- そのためDDDをするためには開発がイテレーティブであり、開発者とドメインエキスパートが密接でなければならない
- ドメインモデルをコードに落とし込む
DDDの必要性
- 共通言語を作ることでドメインエキスパートと開発者の間の認識齟齬が減る
- 開発者が業務側の視点も踏まえたソフトウェアを作れるようになる
- ソフトウェアに関する知識の属人化を減らせる
- ドメインを反映したモデルをコードに落とし込むことができれば、コードから業務知識を知ることができる
- これによって知識の属人化をなくしたり、知識の継承がしやすい
- ドメインを反映したモデルをコードに落とし込むことができれば、コードから業務知識を知ることができる

ドメインとは
プログラムを適用する対象領域
ドメインモデリングとは
ドメイン内にある事象や概念を抽象化する作業
現実に存在する「もの」からドメインにおいて重要になる要素を抽出する
ドメインモデルとは
モデリングによって得られたドメインの概念
ドメインオブジェクトとは
ドメインモデルをプログラム上で動作する形に具体化したもの