モデリング技術体系

Created: 2026-08-03

ソフトウェア工学には、GoF、PEAA、DDD、CQRS、Knowledge Graphなど、多くの有用な技術があります。しかし、技術を集めて分類するだけでは、どの場面で何を使い、どのように実行可能ソフトウェアへつなぐかは決まりません。

SimpleModelingは、個別技術ではなく、モデルの構造、対象、知識、実行に対する役割を軸にモデリング技術を整理します。Object Modeling (オブジェクト・モデリング)Domain Modeling (ドメイン・モデリング)Execution Modeling (実行モデリング)Knowledge Modelingは同じ階層に並ぶ独立領域ではありません。これは技術カタログではなく、各技術の依存関係と利用方法を定める方法論上の枠組みです。

本稿では、このモデリング技術体系が固定する設計判断、Object Model (オブジェクト・モデル)Knowledge Model (知識モデル)文芸モデル (literate model)に一つのDomain領域を重ねてDomain Model Viewを構成する関係、品質属性 (Quality Attribute)の扱いを説明します。

記事の全体像

第3回の全体像: 隣接するObject ModelKnowledge Model文芸モデルに一つのDomain領域を重ね、混色された重なりをGlossary (用語集)のリングで接続して、目的と関心に応じた一つのDomain Model Viewを構成する方法論上の関係を示します。 summary ja

シリーズにおける位置付け

第1回では、AIの登場によってDomain Modelが実装への実現経路を持つworking abstractionとなり、モデリングが開発の新しいチョークポイントになることを説明しました。第2回では、SimpleModelingがCML (Cozy Modeling Language)、Cozy、AI、TextusによってKnowledgeからExecutable Softwareへ至る経路をどのように構成してきたかを整理しました。

第3回では、その経路で何をモデル化し、既存のソフトウェア工学技術をどこへ配置するかを定めます。本稿は、以降のObject ModelingDomain ModelingExecution ModelingKnowledge Modelingの役割と依存関係を定める理論記事です。

Knowledge SystemとMethodology

既存技術を整理することと、開発方法を定めることは異なります。

Knowledge System Software Development Methodology

目的

既存の知識や技術を収集し、整理し、分類します。

開発で採用する技術を選択し、具体的な進め方を定めます。

判断

どの技術を使うかは利用者に委ねます。

重要な設計判断、技術の役割、利用方法を定めます。

指針

技術を理解するための地図を提供します。

実践者が設計と開発を進めるための指針を提供します。

SimpleModelingはSoftware Development Methodology (ソフトウェア開発方法論)です。知識体系に含まれる技術を網羅するのではなく、モデリング中心の開発に必要な技術を選択し、相互の役割と実現経路を定めます。

したがって、Knowledge SystemからMethodologyへの関係は、収集、整理、選択、実践という四つの同格な工程を並べたものではありません。Knowledge Systemが技術の候補と理解の地図を提供し、Methodologyがその知識に対して「何を採用し、何の役割を与え、どう使うか」を判断します。さらにDevelopment Process (開発プロセス)は、Methodologyが定めた変換や判断をプロジェクトで運用する工程です。Agile、Iterative、Stagedなどの進め方をMethodologyそのものから分離することで、同じ方法論を異なるプロジェクトへ適用できます。

Domain Modelの構成

以前のSimpleModelingでは、Domain ModelObject Modelの一部として扱っていました。Knowledge Modeling文芸モデルを併用する現在のDomain Modelは、三つのモデル全体を束ねたものではありません。図では、Object ModelKnowledge Model文芸モデルを隣接する三つの楕円として置き、その中央に一つのDomain領域を重ねます。Domain領域とObject Modelの重なりは形式構造、Knowledge Modelとの重なりは知識構造と根拠、文芸モデルとの重なりは自然言語による文脈、意図、自由構造の寄与を示します。これらの重なりを、目的と関心に応じた問題領域の一つのViewとして読むのがDomain Modelです。

重なりを示す混色は装飾ではありません。Domain Modelが各モデルから何を受け取るかを、元のモデルの色とDomain領域の色の組み合わせで区別します。一方、重ならない部分は各モデルの全体がDomain Modelへ取り込まれるわけではないことを示します。

接続点としての用語集

一つのDomain領域とObject ModelKnowledge Model文芸モデルとの重なりは、同じ問題領域の概念を異なる形式で表します。重なりの間で概念の意味や同一性がずれると、一つのDomain Model Viewとして読むことができません。

用語集は、用語の名称、意味、境界、同義語、識別子を管理します。各モデルとの重なりに現れる概念を共通の用語へ対応付けることで、形式構造、知識構造、文芸的な語りをまたいで概念の同一性と意味を接続します。InfographicでGlossaryを矢印や後続工程ではなくリングとして描くのは、この接続が三つの重なりを同時に囲み、一つのViewとして整合させる働きだからです。

三つのモデル、Domain領域との重なり、用語集による接続は、固定順序で一度だけ確定するものではありません。Objectの構造化、知識の整理、文書による説明、実行の具体化で見つかった不足や矛盾を用語集と各モデルへ戻し、目的と関心に照らしてViewを反復的に更新します。

2D上の要素 意味

隣接する三つの楕円

Object ModelKnowledge Model文芸モデルの全体を示します。互いに置き換えられる箱や、順番に通過する工程ではありません。

重ねた一つのDomain楕円

三つのモデルにまたがる、一つの問題領域への関心範囲を示します。三つの個別な「Domain部分」を後から合流させる表現ではありません。

三つの混色された重なり

形式構造、知識構造と根拠、文脈と意図という各モデルの寄与を示します。

Glossaryのリング

三つの重なりをまたいで概念の同一性と意味を接続します。

構成の中央

目的と関心に応じた問題領域の一つのViewとして、Domain Modelを読み取ります。

この2D構成では、三つのモデルからDomain Modelへ向かう合流矢印はありません。Domain Modelは変換列の末尾に生成される別の箱ではなく、一つのDomain領域と三つのモデルの重なりそのものを、一つの問題領域Viewとして捉えたものです。

品質属性

実用的なソフトウェアには、業務機能だけでなく、Security、Observability、Performance、Resiliency、Availabilityなどの品質属性が必要です。品質属性は、特定のモデルだけが担当するものではありません。Object ModelKnowledge Model文芸モデルDomain Model、実行のモデルで明らかになった要求や制約に対して、横断的に確認する設計課題です。

SimpleModelingでは、Domain Logicとアプリケーション固有のポリシーをアプリケーション側の責務とし、認証、計測、障害対応、実行制御などの共通機構を主にTextus側の責務とします。アプリケーションごとに同じ機構を繰り返し実装するのではなく、必要な品質水準と固有の制約をモデルで明らかにし、実現に共通する部分は実行基盤で提供します。

この分離によって、モデリングは機能の記述だけで終わらず、実際に運用できるソフトウェアへ接続されます。個々の品質属性のモデル化とTextusによる実現方法は、後半の記事で詳しく扱います。

方法論上の設計判断

モデリング技術体系は、技術を分類するだけでなく、SimpleModelingで採用する次の設計判断を固定します。

設計判断 意味

モデリングを中心にする

人間が主に設計する対象をソフトウェアモデルとし、Domain Modelを問題領域に対するworking abstractionとして扱います。

モデリング上の役割を定める

Object Modelingを形式構造、Knowledge Modelingを知識構造、Domain Modelingを一つのDomain領域と三つのモデルの重なりから問題領域Viewを構成する活動Execution Modelingを実行の具体化として配置します。

用語でモデルを接続する

Glossaryのリングによって、Domain領域とObject ModelKnowledge Model文芸モデルとの重なりに現れる概念の意味と同一性を管理します。

MethodologyとProcessを分ける

Methodologyは必要な技術を選び、役割、利用方法、変換体系を定めます。Development Processは、その体系をAgile、Iterative、Stagedなどの進め方で実務に適用します。

役割で技術を選ぶ

流行や包括性ではなく、モデル化対象と目的に対して技術を選択します。

モデルに構造を与える

Object、型、制約、関数などのメタモデルとCMLによって、人間、AI、ツールが解釈できる形にします。

品質属性を横断的に扱う

機能と品質属性を分離し、アプリケーション固有の要求とTextusが提供する共通機構の責務を明確にします。

抽象と実現を接続する

モデルを資料で終わらせず、Cozy、AI、Textusによって実行可能ソフトウェアへ接続します。

既存技術の位置付け

ソフトウェア工学には、対象や目的の異なるさまざまな既存技術があります。SimpleModelingでは、特定の技術を出発点に方法論を組み立てるのではなく、まずモデルの構成、役割、依存関係、実現経路からなる枠組みを定めます。その上で、枠組みの各部分に必要な要素技術を選び、位置付けます。

たとえば、GoFやPEAAはObject Modelingで責務と協調を設計するために使い、DDDDomain Modelingで問題領域の概念と境界を構成するために使います。CQRSやSagaはExecution Modelingで実行と協調を表し、Knowledge GraphやRDFKnowledge Modelingで人間とAIが参照する知識を構造化します。いずれもSimpleModelingの枠組みを構成するために選択する要素技術です。

一つの技術が複数の役割に関係する場合もあります。技術名を一つの箱へ固定するのではなく、どのモデルのどの部分に、何の目的で適用するかを明示することが重要です。

モデルから実現へ

モデルの役割と関係を定義しても、モデルが実装と分離したままでは方法論として不十分です。SimpleModelingでは、Domain Model Viewのうち、Domain領域とObject Modelの重なりが担う形式構造をCMLによって機械処理可能な構造として記述します。CozyはCMLを実行可能ソフトウェアへ変換し、AIはCozyが変換しきれない実装部分を補完します。Textusは得られたソフトウェアを実行します。

Software Models
  ↓  Structured as CML
CML
  ↓  Cozy Transformation + AI Completion
Executable Software
  ↓  Runs on Textus
Execution

一つのDomain領域とObject ModelKnowledge Model文芸モデルとの重なりから構成するDomain Model Viewは、抽象側で何を明らかにするかを定めます。CML、Cozy、AI、Textusは、そのうちObject Modelとの重なりによって形式化された構造を実装と実行へ接続します。モデリング技術体系は、この2Dのモデル構成と一本の実現経路を、一つの方法論の中に配置します。

この接続には品質属性の実現も含まれます。アプリケーションはDomain Logicと固有の要求を保持し、Textusは複数のアプリケーションに共通する品質属性の実現機構を提供します。これにより、モデルから実行可能ソフトウェアへの経路に、運用に必要な品質も組み込まれます。

この体系が定めるもの

本稿で定めるのは、各領域の詳細な技法ではありません。方法論として共有する分類原理、各領域の責務、技術を選ぶ観点、実現経路との接続です。

モデルはRealityそのものではなく、目的と関心に応じたViewとして構成されます。各モデルとモデリング活動 (Activity)に共通するこの理論は、次回のView-Based Modelingで扱います。その後、Object Modelingの構造基盤、Domain Modelingによる統合、Execution Modelingによる具体化、Knowledge Modelingの知識基盤を個別に説明します。

SimpleModelingの立場

SimpleModelingは、新しい技術を一から定義するものではありません。既存のソフトウェア工学技術を、モデリング中心の開発に必要な構成要素として選択し、モデル間の役割、依存関係、実現経路の中へ配置します。

この体系によって、個別技術を詳しく学ぶ前でも、何を明らかにするための技術なのか、開発全体のどこで使うのかを把握できます。実際のシステム構築ではTextus技術のツールとフレームワークを利用し、その過程で各技術の背景と詳細を学べます。

次回

モデリング技術体系は、Object ModelKnowledge Model文芸モデルに一つのDomain領域を重ね、混色された重なりをGlossaryのリングで接続して、目的と関心に応じた一つのDomain Model Viewとして読む関係を整理しました。ただし、同じ対象からどの情報を選び、どの範囲をモデルとして表すかという共通原理は、まだ説明していません。

次回はView-Based Modelingとして、モデルをRealityそのものではなく、目的、関心、Perspectiveに基づくViewとして構成する考え方を説明します。

参照

用語集

ドメイン駆動設計 (DDD, Domain-Driven Design)

Domain-Driven Designとは、複雑な問題領域をDomain Modelによって捉え、Ubiquitous Language、Bounded Context、Aggregateなどを用いて、業務上の意味とソフトウェア設計を接続するための原則、パターン、プラクティスの集合です。

知識モデリング (Knowledge Modeling)

Undefined

ドメイン・モデル (Domain Model)

Undefined

モデリング技術体系 (Modeling Technology System)

Undefined

ドメイン・モデリング (Domain Modeling)

Undefined

オブジェクト・モデリング (Object Modeling)

Undefined

実行モデリング (Execution Modeling)

Execution Modelingとは、要求の受付、処理の契機、状態変化、処理の流れ、ObjectやComponentの協調をモデル化する活動です。システムが何を契機に、どの規則に従って、どのように動作するかを明らかにします。

オブジェクト・モデル (Object Model)

Undefined

品質属性 (Quality Attribute)

Quality Attributeとは、ソフトウェアが機能を実行できることに加えて、どの程度の品質で要求を満たすかを表す特性です。Security、Performance、Availability、Reliability、Resilience、Observability、Maintainabilityなどが含まれます。

知識モデル (Knowledge Model)

Knowledge Modelとは、知識を概念、関係、規則、事例、根拠、出典などによって構造化したモデルです。人間とAIが知識を探索、参照、検証、再利用できる形で表します。

文芸モデル (literate model)

Undefined

用語集 (Glossary)

Glossaryとは、対象領域で使用する用語について、名称、意味、境界、同義語、識別子を管理する知識資源です。関係者が同じ用語を同じ意味で扱うための共通基盤になります。

CML (Cozy Modeling Language)

CMLは、Cozyモデルを記述するための文芸モデル記述言語です。 SimpleModelingにおける分析モデルの中核を担うDSL(ドメイン固有言語)として設計されています。 モデル要素とその関係性を自然言語に近い文体で記述できるよう工夫されており、AIによる支援や自動生成との高い親和性を備えています。 CMLで記述された文芸モデルは、設計モデル、プログラムコード、技術文書などに変換可能な中間表現として機能します。

ソフトウェア開発方法論 (Software Development Methodology)

Software Development Methodologyとは、ソフトウェア開発で使用するモデル、モデル変換、技術、設計原則、判断規則を一つの体系として定める方法論です。何をモデル化し、モデルをどのように構成し、実行可能ソフトウェアへ接続するかを定義します。 一般的な用法では、Software Development MethodologyがDevelopment Processを含む場合もあります。SimpleModelingでは、モデルとモデル変換を定めるMethodologyと、それを開発実務で運用するDevelopment Processを分離して扱います。

開発プロセス (Development Process)

Undefined

活動 (Activity)

アクティビティスペース内で実行される具体的な行為またはタスク。アルファをより進んだ状態へ移行させるために行われ、通常はワークプロダクトの生成や改良を伴う。

RDF

W3C により標準化された、情報を「主語–述語–目的語」の三つ組(トリプル)で表現するための知識記述モデル。