📝

AI 時代におけるユビキタス言語の重要性

に公開

はじめに

Contrea でエンジニアをしている釜地です。
AI 時代においてユビキタス言語がより重要になったと最近感じたので、その理由と実際の開発現場での例を書いてみます。

ユビキタス言語とは?

「ドメインモデルに基づいて構造化された言語。そのチームの取り組みとソフトウェアを結び付けること
を目的とし、またチームメンバー全員によって使用される。」

引用:https://www.domainlanguage.com/wp-content/uploads/2016/05/DDD_Reference_2015-03.pdf

難しいことは考えずに「チームで共通で使いたい用語集」と捉えても良いとかなと個人的には思っています。(いきなりユビキタス言語を導入しよう!だと少し重いので軽く捉えることも重要。)

ユビキタス言語を導入するメリット

メリットとしては以下の 2 点があると考えています

  1. チーム(AI も含む)の認識齟齬をなくす
  2. チーム(AI も含む)で思考を形つくることができる

チーム(AI も含む)の認識齟齬をなくす

我々は医患連携システムの MediOS を開発しており、その中の 1 つに電子同意書サービスがあるので、これを例に説明します。

機能の 1 つである電子署名があるのですが、言葉(関数)が整理されておらず、以下のようなコードになっていました。
このコードは、電子署名機能を実装しているコードです。

// 署名
function sign(document: Document) {
  // 署名処理
}

function consent(document: Document) {
  // 署名処理
}

// そもそもsignatureは名詞なので関数名としては不適切
function signature(document: Document) {
  // 署名処理
}

このようなコードがある状態だと、LLM による文脈理解も正確になりません。
また、署名というものが「病院側が医療スタッフの名前を書く行為」なのか、「患者さんが同意書に名前を書く行為」なのかがわかりません。

ここに対して以下のように厳密に定義していれば、LLM による文脈理解も正確になります(チームメンバーも理解が深まります)

用語 説明
署名(signature) 患者さんが医療行為について理解し同意したことを法的に証明する行為。システム上では電子署名も含む

チーム(AI も含む)で思考を形つくることができる

チーム開発においても、適切な言葉を共有することで、メンバー全員が同じ認識を持ち、より効果的に問題解決に取り組むことができます。

例えば医療現場では 「インフォームドコンセント」という言葉があります。

この言葉には

  • 十分な説明をし、
  • 患者さんが理解して、
  • 自らの意思で治療に同意する

という意味があります。
この言葉のおかげで我々プロダクトチームは、この概念について認識することができ、どうプロダクトに落とし込むか議論することができます。
これは生成 AI を相手に壁打ちするときにも重要です。

まとめ

これらの用語は、.cursor ファイルや Claude.md などで管理することで、チーム全体で共有し、LLM による文脈理解も正確になります。(偉そうなことを書いていますが、我々も現在整備中です。)

AI 時代だからこそ、人間が使う言葉の精度がより重要になってくると思います。
「言葉を整える」ことから始めて、より効率的な開発体制を築いていきたいです。

宣伝

弊社は動画をはじめとした医療課題を解決するMediOSを運営しております。

現在シリーズAに向けてエンジニアを積極採用中です。

8/8にオフラインにてエンジニアイベントを実施予定です!
ご参加お待ちしています
https://contrea.connpass.com/event/360975/

Contrea Tech Blog

Discussion