ユビキタス言語の創造
from Introducing Domain-Driven Design
共通言語(ユビキタス言語)を作り、プロジェクト開発者全員で共有する
設計に存在するものは、ドメインエキスパートの メンタルモデル にあるものと同じでなければならない
e.g. ドメインエキスパートが何かを「注文」と呼んでいる
コードの中に Order と呼ばれるものを用意し、同じように振る舞いべきである
ただし、この「注文」は発送部門における定義と請求部門における定義は異なる
ユビキタス言語の創造#6684f90f75d04f0000da4072
ここが日本語だと更に 1 つ変換が挟まるのがネック radish-miyazaki.icon
ドメインに日本語を使う
日本語プログラミングでGo ドメイン駆動設計に入門してみた
逆に、ドメインエキスパートのモデルの中で何かを表現していないものを、設計の中に含めるべきではない。
e.g. OrderFactory、OrderManager、OrderHelper
もちろん コードベース 内に専門用語が出てくることはあるが、設計の一部として公開するのは避けるべき
ユビキタス言語
チーム全員が共有する概念と語彙のセット
ビジネスドメイン の共有 メンタルモデル を定義する言語
ユビキタス という名前が示すように、あらゆる場所で利用するべき
要件、設計、コード
ドメインエキスパート が一方的に指示するのではなく、チーム全員が協力して作成する
静的ではなく、絶えず更新されるもの
すべてのドメインやコンテキストをカバーするユビキタス言語は構築できないことを知っておく
それぞれのコンテキストにはユビキタス言語の「方言」があり、同じ言葉でも意味がことなる
e.g. クラス: CSS と OOP では異なる
無理に同じ意味にすると、要求は複雑になり、重大な設計ミスにつながる可能性も