🗣️
ユビキタス言語
開発者とドメインエキスパートが共有する、コード・会話・ドキュメントすべてに貫徹させる共通言語
定義
ユビキタス言語(Ubiquitous Language)とは、ドメインエキスパート(業務担当者)と開発者が共同で作り上げ、会話・ドキュメント・コードのあらゆる場面で一貫して使い続ける共通言語。
「ユビキタス(ubiquitous)」は「どこにでも存在する」という意味で、この言語がチームのあらゆる成果物に浸透していることを表す。
なぜ重要か
ドメインエキスパートは「契約」「顧客」「請求」という言葉で話す。開発者は「Contractテーブル」「Userレコード」「Invoiceオブジェクト」という言葉で話す。この翻訳コストが、以下の問題を引き起こす:
- 要件の誤解が発生する
- モデルが業務の現実から乖離していく
- 変更要求のたびに「翻訳」が必要になる
ユビキタス言語を確立することで、ドメインモデルが業務の言葉で直接表現され、翻訳コストがゼロになる。
適用場面
- ドメインエキスパートとのミーティングで出てきた用語をそのままクラス名・メソッド名に使う
- コードレビューで「このクラス名は業務側が使う言葉と一致しているか?」を確認する
- ドキュメント(ADR・仕様書)でも同じ用語で統一する
- 用語に揺れが生じたら即座にチームで議論して合意する
注意点
ユビキタス言語は境界づけられたコンテキスト(Bounded Context)の中でのみ一貫性が保証される。異なるコンテキストでは同じ言葉が異なる意味を持ちうる(例:「顧客」は販売コンテキストでは購入者、サポートコンテキストではチケット発行者)。
出典
実践ドメイン駆動設計(Vaughn Vernon)第1章
- 1. 📐業務ロジックはドメインオブジェクトに書く
- 2. 🏷️区分オブジェクト
- 3. 🧩ドメインオブジェクトへの業務ロジック集約
- 4. 🔒不正な状態を型で表現不可能にする
- 5. 📦ファーストクラスコレクション(コレクションオブジェクト)
- 6. 🔌薄いサービス層パターン(Application Service)
- 7. 🏗️三層分離パターン(ドメイン・アプリケーション・インフラストラクチャ)
- 8. 🎯設計はドメインモデルから始める
- 9. 🗺️ドメインモデル抽出スキル
- 10. 🔨段階的リファクタリング戦略
- 11. 🎯型駆動設計(Type-Driven Design)
- 12. 💎値オブジェクト(Value Object)
- 13. ⚠️プリミティブ執着(Primitive Obsession)
- 14. 🚫状態フラグ・汎用テーブルのアンチパターン
- 15. 🎯DDDはなぜ必要か
- 16. 🗣️ユビキタス言語
- 17. 🔲境界づけられたコンテキスト