ISO704 Terminology work — Principles and methodsとドメインモデル

本記事は[弁護士ドットコム Advent Calendar 2019](https://qiita.com/advent-calendar/2019/bengo4com)の22日目の記事です．

# はじめに

[ISO704 Terminology  work — Principles  and methods](https://www.iso.org/standard/38109.html)（以下，ISO704）という国際標準があります。
ISO704は、人間間のコミュニケーションのための概念と用語の明確化と標準化を目的とした国際標準です。

本記事では，ISO704に記述されている概念の中で特にモデリングという観点において，筆者が重要だと感じた概念について簡単にご紹介し，考察します．

# お断り

筆者の理解に基づいて言語化しているため，表現の正しさや内容の妥当性は保証いたしません．
あくまで，ざっくりと理解していただき議論の種やなにかのきっかけになることを期待して本記事を執筆しています．

# 本記事でお伝えしたいこと

本記事でお伝えしたいことは，**「ISO704にはドメインモデリングするにあたって役に立つことがしっかり記述された国際標準なので，読んでみるとなにか役に立つかも」**ということです．

これを伝えるためにいろいろ書いていますが，この記事を読まずにいきなりISO704を読んでいただければ目的は達成されます．

# 重要だと思われる概念

筆者がモデリングという観点において重要だと感じたのは，以下の3つの概念です．

- Object
- Concept
- Concept system

## Object

Objectは **知覚または想像されるもの** として定義され，
以下の3つに大別されます．

- 物質的，具象的（concrete or material）なもの
- 抽象的，非物質的(immaterial or abstract)なもの
- 純粋に架空(purely imaginary)なもの

Object は Property によって記述・識別されます．

## Concept

Concept は特定のコンテキストやフィールド内の Object の mental representations です．

コミュニケーションにおいて， 世界中のあらゆる Object は区別されて名前があるわけではなく，概念化(conceptualization)と呼ばれる観察や抽象化のプロセスによって Object は Class に分類されます．この Class に対応する知識の単位が Concept です．

Concept は以下に示すような，さまざまな形式のコミュニケーションで表現されます．

- 自然言語（名称や定義など）
- 人工言語（コードや数式など）
- マルチメディア（写真，図，アイコンなど）
- 人体（表情，手話など）

Concept は Concept 自身が持つ Characteristic によって説明，識別されます．

Concept を形成する上で， Object の Property や Object の集合に共通する Property に着目して抽象化が行われるため， Property が Concept を構成する 特性（Characteristics）と扱われていくためです．したがって， Characteristic は Property を抽象化したものを表します．

### General Concept と Individual Concept

Concept は General Concept と Individual Concept の2つに分類されます．

General Concept は，**共通する Property を持つ Object の集合**に対応する Concept のことで， term や symbol で表現されます．

Individual Concept は， **単一のエンティティとみなされた単一の Object** もしくは,**単一のエンティティとみなされたユニークなエンティティの構成を扱う Object** に対応する Concept のことで， appellation や symbol で表現されます．

appellation と term によって， General concept と Individual concept は明確に区別されます．

## Concept system

Concept system は， **Concept 間の関係に基づいて構造化された Concept の集合**を表します．

Concept を Concept system として構造化するには， Concept を生み出した Subject filed を念頭に置き，対象とするユーザの期待と目的を考慮して構築する必要があります．

Concept system は以下の6つのことをおこないます．

- Subject field の専門知識に基づき， Concept と Concept 間の関係をモデリングする
- Concept 間の関係を明確にする
- 統一，標準化された terminology のための基礎を形成する
- Subject field と言語を横断した Concept と Designation の比較分析を促進する
- 定義の作成を促進する
- Terminological resource[^2] を構築しながら， 関連のある全ての Concept の包含を促進する

[^2]: text or data resource consisting of terminological entries

# 考察

ISO704では， Subject filed という表現が何度も（50回くらい）出現します．Subject filed について明確に説明はされていませんが， 
> a particular subject field, such as legal terminology

であったり，

> a particular field of knowledge (i.e. a subject field)

とあることから，何らかの主題を持った領域を表すものであり， `Subject field = Domain` と考えることができそうです．

上記のように考えると，Concept system は Concept を生み出した Subject field，すなわち Domain を念頭に置いて構築されたものであるため， `Concept system = Domain model` と考えられます．

ユースケース駆動開発実践ガイドでは， Domai model について以下のように説明しています．

> ドメインモデルとは、本質的にはプロジェクトの用語集だと言って差し支えありません。つまり、プロジェクトで実際に使われているすべての単語を収録した「ライブ」辞書です。しかしドメインモデルは、たんなるプロジェクトの用語集よりもはるかに優れています。というのも、それぞれの単語間の関係がグラフィカルに表現されているからです。実際には、ドメインモデルは異なるクラス（ドメインオブジェクト）の関係を線で示したシンプルなクラス図です。ドメインモデルは、ドメインクラス間の汎化（is a）関係や集約（has a）関係を表現しています。
> 
ダグ・ローゼンバーグ,マット・ステファン. ユースケース駆動開発実践ガイド (Japanese Edition) (Kindle の位置No.1333-1338). Kindle 版. 

エリック・エヴァンスのドメイン駆動設計では，以下のように Domain model について説明しています．

>ドメインモデルは、ソフトウェアプロジェクトにおける共通言語のコアとなることができる。モデルとは、プロジェクトに携わる人々の頭の中で構築された概念の集まりであり、ドメインについての洞察を反映した、用語と概念間の関係性からできている。こうした用語と相互関係は、そのドメイン用にあつらえた言語のセマンティクスを提供するのであり、同時に、技術的な開発ができるくらい正確でもある。

> Eric Evans. エリック・エヴァンスのドメイン駆動設計 (Japanese Edition) (Kindle の位置No.1100-1104). Kindle 版. 

どちらの Domain model も， Concept system の説明と捉えても問題なさそうです．

ISO704は，ドメインモデルの構築方法について記述された国際標準と考えられそうです．

# おわりに

本記事では，ISO704に記述された概念の中から，モデリングに関連するであろう概念を筆者が属人的に抽出し紹介しました．
また，紹介した概念の一つである Concept system は ドメインモデルを表現していると考えられ，ISO704はドメインモデルの構築方法について記述された国際標準だと考察しました．

今回紹介は割愛しましたが， Concept 間の関係の種類についてや Concept をどのように定義し呼称するのかについても記述されており，大変参考になるものでした．モデリングに関心のある方はぜひ一度読んでみてはいかがでしょうか．