TL;DR

ドメインエキスパートが使う日本語の用語を、クラス名や関数名などソースコードの中でもそのまま使うという考え方。日本語をユビキタス言語としてドメインを表現する。

なぜ必要か

ドメインエキスパートが使う言葉とコードの言葉がずれると、翻訳の手間や誤解が生まれる。t_wada さんは、Eric Evans の来日時の発言を次のように紹介している。

Eric Evansも来日時に「ソースコードでも日本語を使え」「ドメインエキスパートがこの言葉を使っているのなら、なぜクラス名にこれを使わない?」と言ってたし、日本語をユビキタス言語としてドメインを表現するのは良いと思います

例

bufferings さんの記事では、PdM が話す言葉を、ドキュメントからプログラムの中まで同じように使っている。

たとえば「薬品」はプログラムの中でもそのまま「Yakuhin」となっている。
バックエンドで変数名などに漢字を使うのは予期せぬ問題にぶつかりそうだから、ローマ字にしてる。
ちなみに、フロントエンドでは日本語コンポーネントを使ってる。ぱっと見て理解できる漢字のすばらしさよ。

日本語プログラミングでGo ドメイン駆動設計に入門してみたも、日本語でドメインを表現した例である。

自分の理解

関数名やクラス名は英語であるべきという固定観念が邪魔をしている。これをチーム全体でどう合意するかが、1 つの壁になりそうだ。ただ、自分が勝手にそう思っているだけかもしれない。PHP を書く人は PHPUnit のテスト関数名を日本語で書くことが多いので、すんなり受け入れられそうだ(偏見)。

設定より規約も邪魔になりそうだ。Ruby on Rails や Laravel よりも、小さいフレームワークのほうが相性が良さそうに思う。

関連

出典