ドメイン駆動設計入門①

最近よく聞く、DDDとは?

Domain-DrivenDesignの略で、日本語ではドメイン駆動設計と呼ばれている

ドメイン駆動設計は、エリック・エヴァンス氏が提唱する設計手法。最近、マイクロサービスなど分散アーキテクチャの設計に取り入れられたり、アジャイル開発の設計アプローチの参考にしたりすることが増えている。

ドメイン駆動設計のコンセプト

  • ビジネスの問題を解決するために、ビジネスの理解を深め、ビジネスの表現をする
  • ビジネスとコードを結びつけて、継続的かつ反復的な改良を施せるように枠組みを作ることにより、ソフトウェアをより役立つものにする

ドメイン = プログラムを適用する対象となる業務の領域
重要なのはドメインが何かではなく、ドメインに含まれるものが何か

モデル = 現実の事象あるいは概念を抽象化(簡略化)したもの
膨大な情報の中から要点を抜き出してわかりやすく整理したものがモデルであり、現実をすべて忠実に再現せず、必要に応じて取捨選択する

ドメインモデルを活用する

ソフトウェアが複雑になる原因 = 領域(ドメイン)の複雑さ

ドメインモデルとは
ソフトウエアの対象領域(ドメイン)である事業活動の複雑さの要点を整理して簡略化したもの

ドメインモデルの使い方
・業務知識の要点の整理(考えや課題を表現する)
・関係者が意図を伝えるときの基本語彙(チームメンバーとの共通言語)
・クラス設計の基本構造(モデルと実装コードを結びつける)

ドメインオブジェクト = ドメインモデルをソフトウェアで動作するモジュールとして表現したもの
・ドメインで起こった変化はまずドメインモデルに伝えらる
・ドメインオブジェクトがドメインモデルを忠実に表現していれば、ドメインの変化をコードに伝えることが容易
・ドメインオブジェクトが曖昧さを解決するために、ドメインモデルを見直すこともある

ドメインの概念とドメインオブジェクトはドメインモデルを媒介に繋がり、お互いに影響し合うイテレーティブ(反復的)な開発が実現される

参考本・サイト

参考本

エヴァンス本を読んだことがない人や、読んだことはあるけれども、もう少しやさしい入門書を読みたいと感じている人を対象読者とした解説本
『ドメイン駆動設計入門ボトムアップでわかる! ドメイン駆動設計の基本』
『Software Design 2023年2月号第1特集 ドメイン駆動設計入門』

参考サイト

100日間かけてエヴァンス本を完読した人のBlog
https://syobochim.hatenablog.com/entry/2022/03/04/194646
おすすめポイント:100日の手書きノートをPDFで公開している

ドメイン駆動設計のススメ(AWS Developer Live Show)
手書きノートを見ながら動画で解説
https://www.youtube.com/watch?v=hfrOC5ifgQY
https://www.youtube.com/watch?v=ebvB_VmMk4U
https://www.youtube.com/watch?v=T4niXwK6Zhk
https://www.youtube.com/watch?v=nQvdJh9fZuI



コメント

タイトルとURLをコピーしました