mcpField
U
ubiquitous-language

ubiquitous-language

github.com/dedalus-erp-pas開発116 回インストール
リポジトリ

ubiquitous-language について

会話からドメイン用語を抽出し、`UBIQUITOUS_LANGUAGE.md` に統一用語集として保存するスキルです。医療分野とフランス語・英語の併記を重視し、曖昧さの整理や定義の統一を支援します。

主な機能

  1. 01会話からドメイン用語を抽出
  2. 02曖昧さや同義語を特定
  3. 03標準用語の候補を提示
  4. 04仏英併記の用語集を作成
  5. 05用例の対話を追加
  6. 06実行を重ねて用語集を更新

活用シーン

  1. 01医療プロジェクトの用語統一
  2. 02標準間で異なる用語の整理
  3. 03チーム共通のドメイン用語集の維持

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dedalus-erp-pas/foundation-skills --skill ubiquitous-language

インストール後、Claude Code で/ubiquitous-languageを入力して読み込まれたか確認します。

詳細

ユビキタス言語

現在の会話からドメイン用語を抽出して体系化し、一貫性のある用語集としてローカルファイルに保存します。

ヘルスケアドメインへの対応

正確なドメイン用語を使うことで、コストのかかる誤解を防げるヘルスケアの現場で、特に有用なスキルです。ヘルスケアシステムでは、類似の概念にそれぞれ異なる用語を持つ複数の標準(HL7v2、FHIR、HPK、IHE プロファイル)が併用されています。たとえば、FHIR の「patient encounter」、HL7v2 の「ADT event」、HPK の「venue」は、重なり合いながらも異なる概念を指す場合があります。早い段階でユビキタス言語を体系化することで、臨床現場で高いコストとリスクを伴うバグ、仕様の乖離、統合エラーを防げます。

バイリンガル対応(フランス語/英語)

チーム内では主にフランス語を使いますが、ヘルスケアドメインの標準(HL7、FHIR、IHE)やDDDの文献では英語の用語が使われます。用語集には両方の言語を記載します。

  • 標準用語は、その概念についてチームがより自然に使う言語に基づいて選びます
  • 各定義にフランス語の用語欄を設け、チームメンバーが言語間の対応を確認できるようにします
  • 標準で英語の用語が定められている場合(例:「Encounter」、「Observation」、「MessageHeader」)、標準の英語用語を標準用語とし、フランス語の同義語を記載します

手順

  1. 会話を読み、ドメインに関係する名詞、動詞、概念を探します
  2. 次の問題を特定します。
    • 同じ単語が異なる概念に使われている(曖昧さ)
    • 同じ概念に異なる単語が使われている(同義語)
    • 曖昧な用語や意味が広すぎる用語
    • 確立されたヘルスケア標準と矛盾する用語
  3. 用語の選択を明確にした、標準用語集を提案します
  4. 以下の形式で、作業ディレクトリに UBIQUITOUS_LANGUAGE.md を作成します
  5. 会話内に要約を出力します

出力形式

次の構成で UBIQUITOUS_LANGUAGE.md を作成します。

# Ubiquitous Language

## Patient lifecycle

| Term | Terme français | Definition | Aliases to avoid |
|------|---------------|-----------|-----------------|
| **Encounter** | Rencontre / Venue | A single interaction between a patient and a healthcare provider, bounded by admission and discharge | Visit, stay, séjour, passage |
| **Admission** | Admission | The act of formally registering a patient for an encounter | Check-in, entrée |

## Clinical concepts

| Term | Terme français | Definition | Aliases to avoid |
|------|---------------|-----------|-----------------|
| **Observation** | Observation | A single clinical measurement or finding recorded during an encounter | Result, measure, mesure, donnée |
| **Prescription** | Prescription | A clinician's order for medication, treatment, or diagnostic test | Order, ordonnance (when referring to the act, not the document) |

## Relationships

- An **Encounter** belongs to exactly one **Patient**
- A **Prescription** is issued during one **Encounter** but may be fulfilled across multiple **Encounters**
- An **Observation** is always recorded within one **Encounter**

## Example dialogue

> **Dev:** "When a **Patient** arrives, do we create an **Encounter** immediately?"
> **Domain expert:** "Yes — the **Admission** triggers the creation of an **Encounter**. But note that pre-admission paperwork does not constitute an **Encounter**; it is handled separately."
> **Dev:** "And if the **Patient** is transferred to another unit?"
> **Domain expert:** "That is still the same **Encounter**. A transfer changes the location, not the **Encounter** itself. A new **Encounter** only begins if the **Patient** is discharged and readmitted."
> **Dev:** "So the HL7 ADT^A02 transfer message updates the **Encounter**, it doesn't create a new one?"
> **Domain expert:** "Exactly."

## Flagged ambiguities

- "séjour" was used to mean both **Encounter** (a clinical interaction) and a hospital stay (a period of time) — prefer **Encounter** for the clinical concept and **Hospitalization** for the administrative period.
- "venue" in HPK context refers to the location-bound encounter, while "venue" in everyday French means something different entirely — always use **Encounter** in code and documentation.

ルール

  • 明確な判断を示す。 同じ概念に複数の単語が使われている場合は、最適なものを選び、避けるべき別名としてほかの単語を記載します。
  • 矛盾を明示する。 会話内で用語が曖昧に使われている場合は、「曖昧さの指摘」セクションで取り上げ、明確な推奨事項を示します。
  • 定義は簡潔にする。 1文以内とします。その用語が何であるかを定義し、何をするかは説明しません。
  • 関係性を示す。 用語名は太字にし、明らかな場合は多重度を示します。
  • ドメイン用語のみを含める。 ドメイン固有の意味を持つ場合を除き、一般的なプログラミング用語(配列、関数、エンドポイントなど)は含めません。
  • 自然なまとまりごとに、用語を複数の表に分ける。 サブドメイン、ライフサイクル、関係者などで自然に分類できる場合は、グループごとに見出しと表を設けます。すべての用語がひとつのまとまったドメインに属する場合は、表をひとつにして構いません。無理に分類する必要はありません。
  • 会話例を書く。 開発者とドメインエキスパートの短いやり取り(3~5往復)を作成し、用語同士の関係が自然にわかるようにします。関連する用語の境界を明確にし、正確な用語の使い方を示してください。
  • フランス語の用語を含める。 すべての表の行に「フランス語の用語」列を設けます。標準用語がすでにフランス語の場合は、同じ用語を繰り返すか「同一」と記載します。
  • ヘルスケア標準に準拠する。 HL7、FHIR、IHE、HPKで定義されている用語は、標準の正式な綴りと大文字・小文字の表記を優先します。必要に応じて定義に出典となる標準を記載します。

再実行

同じ会話で再度呼び出された場合:

  1. 既存の UBIQUITOUS_LANGUAGE.md を読み込みます
  2. 以降の会話から新しい用語を取り込みます
  3. 理解が深まった場合は定義を更新します
  4. 変更した項目に「(更新)」、新しい項目に「(新規)」を付けます
  5. 新たな曖昧さを改めて指摘します
  6. 新しい用語を取り込んで会話例を書き直します

出力後の指示

ファイルを書き込んだ後、次のように伝えてください。

UBIQUITOUS_LANGUAGE.md を作成/更新しました。今後はこれらの用語を一貫して使用します。この言葉遣いから外れていたり、追加すべき用語に気付いたりした場合は、お知らせください。

コメント