ユビキタス言語
ユビキタス言語とは
ユビキタス言語は、業務に詳しい人と開発者が、会話・資料・画面・コードで一貫して使う、ドメインモデルに基づいた言葉です。
最初に用語集を完成させて固定するものではありません。具体例を話し、実装し、言葉の違和感に気づくたびに、ドメインモデルと一緒に更新します。
ユビキタス言語の特徴
- ドメインモデルに基づく
- 業務で重要な概念、関係、ルールを表す言葉を使います。
- 会話とコードの両方で使う
- 用語集に記録するだけでなく、会議、仕様、画面、テスト、クラスやメソッドの名前で使います。
- 理解とともに変わる
- 新しい例外や認識の違いが見つかったら、言葉とドメインモデルを見直します。
具体例で整理する
フットサルNOWの参加者募集を例にします。主催者が募集を公開し、参加希望者が申込期限までに参加を申請すると、その場で参加が確定します。
この会話から「募集」「参加申請」「申込期限」「参加確定」という言葉が見つかります。名詞だけでなく、「申請する」「確定する」のような操作や状態も、ドメインモデルを理解するための言葉です。
- 「参加申請」と「参加確定」は同じか
- キャンセル待ちの人も「参加者」と呼ぶか
- 申込期限ちょうどの時刻には申し込めるか
定義だけでなく具体例と判断が分かれる場面を出すと、同じ言葉から別の状態を想像していないか確認できます。答えが決まらない場合は、無理に定義せず、確認が必要な問いとして残します。
用語集で記録する
話し合って分かった内容は、後から確かめられるように業務用語集へ記録します。用語集はユビキタス言語そのものではなく、チームが現在どのように理解しているかを共有するための道具です。
- 言葉
- 募集
- 現在の意味
- 主催者が開催日時、場所、定員、申込期限を決め、参加者を募るもの。
- 具体例・ルール
- 定員10人の募集を公開する。
- コード上の名前
- RecruitmentEntity
- 言葉
- 参加申請
- 現在の意味
- 参加希望者が、参加したい募集に対して行う操作。
- 具体例・ルール
- 申込期限までに参加を申請する。
- コード上の名前
- requestParticipation()
- 言葉
- 申込期限
- 現在の意味
- 募集へ参加を申し込める最後の日時。
- 具体例・ルール
- 期限を過ぎた申請は受け付けない。
- コード上の名前
- participationRequestDeadline
すべての言葉を網羅する必要はありません。認識が分かれやすい言葉、重要な業務ルールを含む言葉、コードの設計に影響する言葉から記録します。
会話・画面・コードで使う
記録した言葉を、実際の会話、仕様、画面、テスト、コードで使います。コードを英語で書く場合も、業務上の意味と対応する名前を選びます。
意味がずれている例
会話では「参加申請」、画面では「予約」、コードでは join() と呼び、申請中なのか確定済みなのか分からない。
対応が分かる例
会話と画面では「参加申請」、コードでは requestParticipation() と表し、「参加確定」と区別する。
言葉を更新する
業務に詳しい人が「その言い方はしない」と感じたり、一つの言葉が複数の意味で使われていると気づいたりしたら、言葉を見直します。用語集だけを直すのではなく、具体例、ドメインモデル、画面、コードも一緒に確認します。
同じ言葉でも仕事の範囲によって意味が異なるなら、全社共通の定義へ無理に統一しません。意味の違いが一貫して現れる場所は、Bounded Contextの境界を考える手がかりになります。
目指すのは用語集の完成ではなく、仕事への理解が、会話とドメインモデルとコードに同じ意味で表れている状態です。
この内容を書くときに確認した情報
原典、著者による説明、実践者の資料を分けて確認しています。
Eric Evans · original-reference
DDD Reference — Definitions and Pattern Summaries最終確認: 2026-08-08
Martin Fowler · practitioner-article
Ubiquitous Language最終確認: 2026-08-08