【どめいんくどうせっけい】
ドメイン駆動設計(DDD) とは?
最終更新:
💡 「業務の言葉」でコードを書く
ビジネスドメイン(業務領域)の知識を中心にソフトウェアを設計する手法。Eric Evansが提唱。
📌 このページのポイント
- 業務の専門家と開発者が協働し、モデルと言葉を磨く
- ユビキタス言語は、同じコンテキスト内で意味を共有する語彙
- 境界づけられたコンテキストで、モデルの適用範囲と相互関係を明示する
- エンティティ・値オブジェクト・集約などのパターンを、業務に合わせて使う
ユビキタス言語って何?
同じコンテキストの中で、業務の専門家と開発者が意味を共有する言葉だよ。たとえば「注文」を会話・図・コードで同じ意味にそろえる。単にOrderと命名するだけでなく、注文の状態や成立条件も一緒に理解し、モデルに反映するんだ。
あるモデルが通用する範囲だよ。「商品」が販売では価格や説明、物流では重さや配送条件を中心に表される、という例で考えると分かりやすい。境界は部門ごとに機械的に引くものではなく、言葉の意味やモデル、チームの仕事などに合わせて定めるんだ。
コンテキストはサービスの境界を考える手掛かりになるけれど、必ず1つのコンテキストを1つのサービスにする決まりではないよ。1つのアプリの中にも複数のモデルがあり得る。コンテキストマップはモデルやチーム間の関係を示すもので、実行時に通信を中継する装置ではないんだ。
DDDはパターンを全部使うことなの?
📖 おまけ:英語の意味
「Domain-Driven Design」 = ドメイン駆動設計
💬 Domain(領域)に駆動(Driven)される設計。Eric Evansが2003年に書籍で体系化したよ