ユビキタス言語【ubiquitous language】

ソフトウェア開発の現場では、同じ概念をエンジニアとビジネス担当者がそれぞれ異なる言葉で呼ぶことが珍しくない。たとえば、業務担当者が「注文」と呼んでいるものを、エンジニアが「オーダーレコード」と呼ぶといった状況である。一つ一つは些細な違いに見えても、こうしたズレが積み重なると要件の誤解や仕様の食い違いが生じ、手戻りやバグの温床となる。
ユビキタス言語はこの問題に対処するための方法論で、技術側とビジネス側の認識をすり合わせ、共通の語彙の体系を定義したものを指す。「ユビキタス」(ubiquitous)とは「どこにでも存在する」を意味するラテン語に由来する英語で、転じて「あらゆる場所で共通に使われる」という意味合いを持つ。
ユビキタス言語では、業務領域(ドメイン)の専門家とエンジニアが対話を重ねながら用語を定め、会議や文書、ソースコードに至るまで、プロジェクト全体で一貫してその言葉を用いる。コード内のクラス名や変数名にも業務用語をそのまま使うことで、設計と業務仕様の乖離を防ぐ狙いがある。
この概念はドメイン駆動設計の提唱者であるエリック・エヴァンス(Eric Evans)が2003年に著した『Domain-Driven Design』(邦題:エリック・エヴァンスのドメイン駆動設計)によって広く知られるようになった。エヴァンスは、言語の不統一がソフトウェアの複雑さを増大させる根本原因のひとつであると指摘し、共通言語の確立をプロジェクト初期から継続的に取り組むべき活動として論じた。
ユビキタス言語は一度決めて終わりではなく、開発が進みビジネス理解が深まるに連れて、更新・洗練されていくものとされる。大規模なシステムでは「境界づけられたコンテキスト」(bounded context)という概念と組み合わせて使われ、サブシステムごとに独立した言語体系を持つ設計手法が用いられることもある。