ユビキタス言語

ビジネスドメインの用語と概念を明確に定義する。
Contributed by

Jorge Tudela

Published January 10, 2023
Collection
1

概要

ユビキタス言語とは、ソフトウェア開発プロセスに関わるすべての人の間で、標準的で厳密かつ曖昧性のない言語を構築することです。通常、開発チームとユーザーの間で共通の共有言語となるが、それに限定されるものではありません。プロダクトオーナーやその他のステークホルダーも同様に採用すべきものです。

これはドメイン駆動設計の世界から来ています。これは、エリック・エバンス(Eric Evans)が自身の著書"Domain-Driven Design: Tackling Complexity in the Heart of Software"で2003年に初めて紹介したものです。

メリット

ビジネス・ドメインが非常に複雑な場合、チーム・メンバーやユーザーが、同じコンセプトについて異なる理解をしているという状況がよく見られます。

共通理解の欠如は、開発チームが提供するものの速度と品質に深い影響を及ぼし、また、ユーザーが思い描いていたものが最終的に実装されたものではないため、ユーザーのフラストレーションにつながることもあります。

複雑なドメイン・コンセプトの例:

  • AIモデル開発領域における ”タイム・トラベリング”
  • データエンジニアリングの領域における ”マージ vs ジョイン”

ユビキタス言語の開発には多くの利点があります。

  • ビジネス・ドメインとユーザーをよりよく理解する。
  • 開発プロセスから曖昧さを取り除く。
  • 開発プロセスに関わるすべての人、特に開発者とユーザーの間で共通言語を確立する。

実施方法

ユビキタス言語プラクティスのアウトプットは、用語・概念とその定義の用語集であるべきです。この用語集は、開発者だけでなく、開発プロセスに関わるすべての人が読んだりレビューしたりできるのが理想的です。変更を追跡し、提案することができるgitリポジトリは、そのための理想的な格納場所となるでしょう。

書くよりも描くことが良い場合もあります。平易な言葉よりも図で説明した方が良い概念もあるかもしれません。

ユビキタス言語の開発を始めるために:

  1. 他のプラクティスからドメインの概念を収集し始めます。イベントストーミングは、ビジネスドメインに関連するが、イベントストーミングの参加者全員が等しく理解していない概念を収集し始めるのに最適なプラクティスの候補です。イベントストーミングに限定しないでください。インパクトマッピング共感マッピングのような他のディスカバリープラクティスも良い選択肢です。
  2. それらの概念の定義を策定します。
  3. 開発チーム、ユーザー、POなどとそれらを検証し、フィードバックを求めます。
  4. 反復します ;)

実施例

参考

ユビキタス言語 をチームや顧客、ステークホルダーと実施するにあたりより詳細にお知りになりたい場合は、以下のリンクを参照してください。


Except where noted, content on this site is licensed under a Creative Commons Attribution 4.0 International license. This site is graciously hosted by Netlify