ドメイン駆動設計をしていますか?
ドメイン駆動設計の要素の一つとして ユビキタス言語 があります。
ユビキタス言語とは、開発者とドメインエキスパートなどシステムの開発に関わる人達全体のコミュニケーションを円滑に、曖昧さをなくすために厳格に定義された共有言語です。
現状、ドメイン駆動設計は広く利用されていると思いますが、ユビキタス言語をどのように管理しているのか、という定番の手法を私は知りません。
たまたま、昨日(2018/10/30)この話になったため、改めて調べてみることにしました。
なお、この記事はユビキタス言語の管理方法が主目的であるため、ドメイン駆動設計やユビキタス言語そのものについては、掘り下げません。
また、私自身は厳格なドメイン駆動設計を実施したことがありません。
そのため、以降の記載については誤りや不足があるかもしれません。指摘をいただけると嬉しいです。
ドメイン駆動開発におけるユビキタス言語の用語管理をどう扱うか、という管理手法に関心があります。
用語管理の必要性
用語の管理シーンと利用シーンを考えてみます。
- 管理シーン
- 作成
- 更新
- 削除
- 利用シーン
- 会話時に参照する
- マニュアルの作成時に参照する
- 設計時に参照する
- プログラミング時に参照する
プログラムは基本的には英語で記述するため、開発時の命名にも活用することを考えると日本語と英語が必要そうに思います。
会話以外で使う場合は辞書からそのまま補完できると嬉しいです。
また、用語の定義や命名が変更されたことを知るためにも変更履歴が管理されていることが好ましいです。
以上のような利用シーンを想定した生産性の高い手法が存在するのでしょうか?
用語管理手法
日本の用語管理
Markdown で管理 - htomine さん
Increments のプロダクトマネージャー兼デザイナーである htomine さんのツイートより。
開発チーム内だと、ユビキタス言語をまとめたファイルをリポジトリの中に置くというのを最近やったよ(docs/glossary.md とか)。新しいワードとか生まれたらそこにPR出して更新する。
— Hiroyuki Tomine (とみね) (@htomine) 2017年5月18日
ドメイン辞書を作成する - hidenorigoto さん
具体的なツールについては不明でした。
海外の用語管理
Confluence で管理
Currently I'm using Confluence for documenting information architecture and ubiquitous language definitions are part of it.
まとめ
結局これぞ、という感じのものは見つかりませんでした。