モデリング技術体系

Created: 2026-08-03 Updated: 2026-08-17

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

SimpleModelingは、個別技術ではなく、モデルの構成要素、目的別のモデル化、実現経路という役割を軸にモデリング技術を整理します。Object Modeling、Knowledge Modeling (知識モデリング)Literate Modelingは三つの構成要素を整備し、Domain Modeling (ドメイン・モデリング)Use Case Modeling (ユースケース・モデリング)Application Modelingはその構成要素を目的別に組織します。Model Realizationは、承認済みモデルを実装と実行へ接続します。これは技術カタログではなく、各技術の依存関係と利用方法を定める方法論上の枠組みです。

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

動画を見る

記事の全体像

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

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

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

第3回では、その経路で何をモデル化し、既存のソフトウェア工学技術をどこへ配置するかを定めます。本稿は、以降のObject、Knowledge、Literateの各Modeling、目的別のDomain、Use Case、Applicationの各Modeling、およびModel Realizationの役割と依存関係を定める理論記事です。

Knowledge SystemとMethodology

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

Knowledge System Software Development Methodology

目的

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

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

判断

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

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

指針

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

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

SimpleModelingSoftware 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 Model、Knowledge Model文芸モデルを隣接する三つの楕円として置き、その中央に一つのDomain領域を重ねます。Domain領域とObject Modelの重なりは形式構造、Knowledge Modelとの重なりは知識構造と根拠、文芸モデルとの重なりは自然言語による文脈、意図、自由構造の寄与を示します。これらの重なりを、目的と関心に応じた問題領域の一つのViewとして読むのがDomain Modelです。

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

Application Modelの構成

Application Modelも三つと並ぶ第四の構成要素ではありません。Use Caseをどの参加者、責務 (Responsibility)協調 (Collaboration)、相互作用、状態遷移、Event (イベント)、Service、Operation (操作)によって実現するかというPurposeとConcernに応じて、Object Model、Knowledge Model、Literate Modelから必要な要素を組織した適用モデルです。

Application Modelingでは、Literate ModelUse Case Scenario (ユースケースシナリオ)からUse Case Realization Modelを構成します。Collaborationは参加者、Role、責務の構造を示し、Interaction (モデル上の相互作用)は具体的な実行例を示します。その対応をStateMachine (状態機械)Event、Service、Operationへ落とし込み、実行可能な部分をCMLへ接続します。この意味の構成とレビューがApplication Modelingであり、その後にCMLからプログラムと実行基盤へ進む経路はModel Realizationです。

接続点としての用語集

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

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

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

2D上の要素 意味

隣接する三つの楕円

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

重ねた一つのDomain楕円

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

三つの混色された重なり

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

Glossaryのリング

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

構成の中央

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

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

品質属性

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

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

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

方法論上の設計判断

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

設計判断 意味

モデリングを中心にする

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

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

Object、Knowledge、Literate Modelingを三つの構成要素、Domain、Use Case、Applicationの各Modelingを目的別の適用モデルの構成、Model Realizationを承認済みモデルから実行可能成果物への接続として配置します。

用語でモデルを接続する

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

MethodologyとProcessを分ける

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

役割で技術を選ぶ

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

モデルに構造を与える

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

品質属性を横断的に扱う

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

抽象と実現を接続する

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

既存技術の位置付け

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

たとえば、GoFやPEAAはObject Modelingで責務協調を設計するために使い、DDDDomain Modelingで問題領域の概念と境界を構成するために使います。Use Case RealizationInteractionStateMachineApplication Modelingでシナリオを動的構造へ対応付けます。CQRSやSagaはApplication ModelingModel Realizationの境界で、モデル上の意味と実装方式を分けて位置付けます。Knowledge GraphやRDFKnowledge Modelingで生成AIが参照する知識を構造化します。

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

モデルから実現へ

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

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

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

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

この体系が定めるもの

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

モデルはRealityそのものではなく、PurposeとConcernに応じたViewとして構成されます。各モデルとモデリング活動 (Activity)に共通するこの理論は、次回のView-Based Modelingで扱います。その後、Object、Knowledge、Literateの三つの構成要素、Domain、Use Case、Applicationの各Modeling、Model Realizationを順に説明します。

SimpleModelingの立場

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

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

次回

モデリング技術体系は、Object Model、Knowledge 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などを用いて、業務上の意味とソフトウェア設計を接続するための原則、パターン、プラクティスの集合です。

モデル (Model)

Modelとは、対象を特定のPurposeとConcernに基づいて選択し、理解、判断、検証、構築に利用できる形で表した抽象です。対象そのものではなく、目的に必要な要素、関係、意味を保持する表現です。

文芸モデリング (Literate Modeling)

Undefined

実現関係 (Realization)

Undefined

オブジェクト (Object)

Objectとは、Classまたは他のClassifierによって分類され、構造、State、Behaviorを持ち得るInstanceです。Objectは、同じClassifierの他のInstanceと区別して参照できる個体として扱われます。

アプリケーション・モデリング (Application Modeling)

アプリケーション・モデリング(Application Modeling)とは、ユースケースをアプリケーションが実現する振る舞いとして具体化し、アプリケーション・モデルを構成する活動です。ユースケースシナリオから、参加者、役割、責務、協調、相互作用、状態遷移、イベント、サービス、操作への対応を明らかにします。

ユースケース (Use Case)

UMLにおけるUse Caseは、対象システムがActorまたは他の利害関係者に観測可能な価値あるResultをもたらすために実行するActionの集合を定めるModel Elementです。

シンプルモデリング (SimpleModeling)

SimpleModelingは、KnowledgeからDomain Modelを構成し、CMLで形式化し、CozyとAIによって実行可能ソフトウェアへ実現し、Textus上で動作させる、モデリング中心のソフトウェア開発方法論と技術体系です。

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

Undefined

ビュー (View)

Viewとは、Modelを特定のPurposeとConcernに応じて選択し、理解、判断、検証、利用できる形で投影した表現です。ViewはModelの一部を見せるものであり、元のModelとは別に意味を所有しません。

知識モデリング (Knowledge Modeling)

Undefined

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

Undefined

ユースケース・モデリング (Use Case Modeling)

ユースケース・モデリング(Use Case Modeling)とは、Actor、Goal、Use Case、Scenario、Outcomeを用いて、システムに対する利用者や外部主体の意図をユースケース・モデルとして構成する活動です。

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

Undefined

品質属性 (Quality Attribute)

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

文芸モデル (Literate Model)

Undefined

用語集 (Glossary)

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

Cozy Modeling Language (CML)

CML(Cozy Modeling Language)は、オブジェクト・モデルのうち、プログラム生成と実行へ接続する実行可能モデルを記述するSimpleModelingの形式モデリング言語です。

Cozy

Cozyは、CMLと各種DSLで記述されたModelを解析し、プログラム、設定、文書などの実現成果物へ変換するSimpleModelingのツールチェーンです。

Textus

Textusは、SimpleModelingによって実現されたソフトウェアを動作させるための実行基盤です。アプリケーションに共通する実行、運用、連携の機構を提供します。

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

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

開発プロセス (Development Process)

Undefined

協調 (Collaboration)

UMLにおけるCollaborationは、専門化された機能を担う参加要素のRoleが共同して、目的とする機能を達成する構造を記述するClassifierです。

イベント (Event)

UMLにおけるEventは、Behaviorの実行中に発生し得る出来事を記述するものです。EventのOccurrenceを受け取ることで、StateMachineのTransitionなどのBehaviorが起動されます。

責務 (Responsibility)

Responsibilityとは、ObjectまたはRoleが、何を知り、判断し、行い、守るべきかを表す義務です。構造上の情報だけでなく、規則とBehaviorの所有を定めます。

操作 (Operation)

UMLにおけるOperationは、関連するBehaviorを呼び出すための名前、型、Parameter、Constraintを定めるClassifierのBehavioral Featureです。Operationは呼び出し契約を定め、MethodなどのBehaviorがその実現を担います。

ユースケースシナリオ (Use Case Scenario)

Undefined

モデル上の相互作用 (Interaction)

Undefined

状態機械 (StateMachine)

UMLにおけるStateMachineは、Eventの発生によって起動されるTransitionでStateのグラフをたどり、システム要素のevent-driven Behaviorを表すBehaviorです。

同一性 (Identity)

Identityとは、値やStateが変化しても、ある対象を他の対象と区別し、時間を通じて同じ対象として追跡するための同一性です。IdentifierはIdentityを表現または参照する値であり、Identityそのものと同義ではありません。

識別子 (Identifier)

Identifierとは、Identityを持つ対象または相関対象を参照し、他の対象から区別するために使用する値です。IdentifierはIdentityを表現できますが、対象が時間を通じて同じ対象であるというIdentityの意味そのものではありません。

セキュリティ (Security)

Securityとは、情報と機能を正当な権限に従って保護し、不正な閲覧、利用、変更、破壊、否認を防ぐ性質です。Confidentiality、Integrity、Authenticity、AccountabilityなどのConcernを含みます。

制約 (Constraint)

UMLにおけるConstraintは、一つ以上のModel ElementのSemanticsの一部を宣言するため、自然言語または機械可読言語で表した条件または制限です。評価結果はBooleanであり、評価は副作用を持ちません。

性能 (Performance)

Performanceとは、指定された条件と資源のもとで、システムが処理時間、応答時間、Throughput、容量などの時間的要求を満たす性質です。

実行制御 (Execution Control)

Undefined

型 (Type)

Undefined

RDF

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

活動 (Activity)

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