ドメイン駆動設計(DDD)ってなに?第7回:ユビキタス言語ってなに?「みんなで同じ地図を見る」ってことかも

2025.06.27 09:00
2025.06.24 08:55
ドメイン駆動設計(DDD)ってなに?第7回:ユビキタス言語ってなに?「みんなで同じ地図を見る」ってことかも

DDDを調べていると、ちょこちょこ出てくる「ユビキタス言語(Ubiquitous Language)」という単語。
聞いたことはあるけど、正直「なんとなく用語集?」くらいにしか思ってませんでした。

でもちゃんと調べてみたら、これがけっこう重要で――というか、DDDっぽい設計の“土台”みたいな存在なんだなってことがわかってきたので、メモしておきます!

ユビキタス言語って何者?

ざっくり言うと、

「開発チーム・現場担当・営業など、関わる人全員が同じ言葉で話そうぜ!」

という共通語ルールのことらしいです。

たとえば、こんなズレってあるある

  • 営業「ユーザーが登録した情報をキャンセルできるようにしてほしい」
  • 開発「登録って、仮登録のこと?それとも本登録?」
  • 現場「え、キャンセルって削除じゃなくて、取り消しボタンの表示ってことでは?」

こういう「同じ単語でも人によって指してる意味が違う問題」をなくすために、
“このプロジェクトではこの言葉はこういう意味!”って明示しておこうぜというのがユビキタス言語。

コードにも現場用語を使う

DDDでは、このユビキタス言語をドメインモデル(クラス名、メソッド名)にそのまま使うのが特徴だそうです。たとえば、、

$order->cancel()

この cancel() という操作、現場の人が「キャンセルって言ってたからそうした」ではなく、

「このプロジェクトでは“キャンセル”とは、出荷前なら取り消し処理をしてステータスを◯にすることです」

意味が決まってる
それをそのままコードに落とし込むから、あとから見た人にも意味がブレにくい

でも、ただの命名ルールとは違うの?

ちょっと違うっぽいです。

  • 命名ルール → 開発者同士の「読みやすさ」重視
  • ユビキタス言語 → 開発者と非エンジニア(現場)も同じ言葉で話すための“橋”

つまり、システムと現場が地続きになるように、言葉でつなぐルールみたいなイメージでした。

まとめ

調べてみて思ったのは、ユビキタス言語って「使う言葉を決めるだけ」じゃなくて、「わかってる人同士になる仕組み」なんだな、ということでした。

  • 「キャンセルって、削除のこと?非表示のこと?」みたいなモヤモヤが減る
  • コードにも意味がのるので、変更に強くなる
  • 現場との認識ズレが減る(これ地味に一番ありがたい)

DDDっぽい設計のなかでも、実は一番じわじわ効いてくるやつかもしれません。

次回は、これまで書いてきた内容をふりかえって、「DDDって結局どういう設計の考え方だったんだっけ?」という【まとめ編】を書けたらいいなと思ってます!

→ 続き:「まとめ編:DDDってなに?建物たとえで振り返る」に続きます!(予定)