ドメイン駆動設計概論

ドメインとは

ドメインとは、アプリケーションが対象とする「領域」のことで、業務系のアプリケーションであれば事業活動や業務内容そのもの。

ドメイン駆動設計

ドメイン駆動設計は、事業活動の存続と発展に貢献することを目的として、事業の変化とともに成長と進化を続けるアプリケーションを開発するための設計方法である。

業務アプリケーションであれば、事業環境や顧客動向の変化に伴って調整される業務プロセスや業務ルールにアプリケーションを追随させていく必要がある。このような絶え間ないアプリケーションの変更をやりやすくするための考え方がドメイン駆動設計である。

ドメイン駆動設計には、「ソフトウェアの複雑さは事業活動の複雑さに起因する」という考え方があるが、「本質的な(事業活動の)複雑さ」以外の「偶発的な(実装によって生じる)複雑さ」を抑えるように設計することが重要になる。

基本的に、ドメイン駆動設計はアジャイル開発とオブジェクト指向プログラミングを前提としている。

ドメインモデル

ドメイン駆動設計の核となる概念がドメインモデルで、ドメインモデルは事業活動の複雑さの要点を整理して簡略化し、事業活動をモデル化したものである。

ドメインモデルは抽出した業務知識をかみ砕き、コミュニケーションを円滑にし、モデルと実装を結びつけるために使われる。この説明だけだと分かりづらいため、ドメイン駆動設計の概念図を次に示す。

Notion Image

ドメイン駆動設計では、まず共通言語(ユビキタス言語)を定義し、それを用いてコミュニケーションし、ドメインモデルの作成、アプリケーションの設計・実装を行う。ドメインモデルを作成し、ビジネスルールをコード上にそのまま表現(マッピング)することにより、事業活動とアプリケーションの設計・実装が直接的に強く結びつき、事業の変化とともにアプリケーションを成長させていくことが可能になる。

以上が、ドメイン駆動設計の概論である。ドメイン駆動設計は難解で長くなるため、詳細については参考資料などを参照されたい。

参考資料


著者画像

ゆうき

2018/04からITエンジニアとして活動、2021/11から独立。主な使用言語はPython, TypeScript, SAS, etc.