Software Design 202403
DDD
DDD の概要
DDD の特徴は、複雑な業務ロジックに焦点を合わせること、モデルに基づいて設計すること、リファクタリングを頻繁に行うことの 3 つ。
業務ルールとは、売り上げ最大化とコスト最小化のために、適切な行動を刺激し、不適切な行動を制限する様々なルールのこと。「事業目標を達成するための行動を統制する決めごと」といえる。一方、業務ロジックは、ソフトウェアそのものや、ソフトウェアとして表現された業務ルールといえる。業務ロジックには単純なものもあるが、DDD では複雑なものに注目する。金を生むのはそちらだし、どんどん複雑になっていくものだから。
業務内容や要求を理解するためのモデルを分析モデル、ソフトウェアを実際に作るためのモデルを設計モデルとよぶ。DDD ではこの 2 つを一致させることに価値を置いている。
戦略的設計は、視野を広げてモデルを作るための設計手法。ユビキタス言語、境界づけられたコンテキスト、コンテキストマップ、コアドメインなど。戦術的設計は、複雑な業務ロジックをソフトウェアで表現するための設計手法。エンティティ、値オブジェクト、集約、モジュール、リポジトリなど。
軽量 DDD とは、いいとこ取りをした DDD を指すのではなく、「複雑な業務ロジックに焦点を当てる」ことを放棄して、小手先の戦術(リポジトリがどうとか)だけを猿まねしたようなものを指す。
(あとはちょっと何言ってるかよく分からん)