文芸モデリング
SimpleModelingモデルは、同じ対象の異なる側面を表すオブジェクト・モデル、知識モデル (Knowledge Model)、文芸モデル (Literate Model)(Literate Model)の三つの構成要素から成ります。文芸モデルは、人間が理解できる自然言語を中心に、対象、目的、状況、要求、判断、シナリオ、意図、前提、履歴を表します。ドメイン・モデル (Domain Model)の概念、規則、関係を通常のドキュメントとして説明する文書も、文芸モデルの重要な構成要素です。開発者、非開発者、生成AIが共有し、オブジェクト・モデルや知識モデルでは表現できない、またはそれらへ還元すべきでない情報をモデルの一部として保持します。
ストーリー(story)は、主体、目的、状況、出来事、因果、結果から成る「何が起きるか」という意味内容です。ナラティブ(narrative)は、そのストーリーを特定の視点、目的、文脈から選択、配列、説明した文芸モデルです。具体的な状況から意味を帰納的に理解できるようにします。ユースケース・シナリオは、利用者視点で構成された代表的なナラティブです。
AI以前は、開発者がシナリオを読み解き、分析、設計、実装へ人力で変換していました。AI時代には、要求モデリングの核となるユースケースシナリオを生成AIへ直接入力できます。生成AIがオブジェクト・モデルとCMLを主として生成、更新、管理し、人間は可視化された結果、差分、根拠をレビューして、承認または指摘を生成AIへ返します。要求仕様が人間の解釈対象にとどまらず、人間の意味判断を保ちながらシステム開発を駆動する入力になることが本質的な転換です。
シリーズにおける位置付け
第5回では、オブジェクト・モデルを、開発者、プログラミング言語、実行基盤、生成AIが共有する形式的な構成要素として扱いました。第6回では、知識モデルを、概念、規則、意味関係、根拠を生成AIが探索し、人間へ説明するための構成要素として扱いました。
第7回は文芸モデルを扱います。文芸モデルは、形式構造への補足説明や実装後に作るドキュメントではありません。自然言語で記述した内容そのものがモデルの一部となり、要求、設計、判断、検証、ドキュメント構成の入力になります。
前回の記事: 📄 AI協業を支える知識モデリング
SimpleModelingモデルの文芸的な側面
-
オブジェクト・モデル: 構造と振る舞い (Behavior)を表す、実行可能な形式モデルと実行例です。開発者、プログラミング言語、実行基盤、生成AIが共有します。
-
知識モデル: 概念、規則、意味関係、根拠のつながりを表します。主として生成AIが利用し、人間は生成AIを通して利用します。
-
文芸モデル: 自然言語を中心とする文脈、意図、要求、判断、シナリオを表します。開発者、非開発者、生成AIが共有します。
ストーリーとナラティブ
要求モデリングの核をAI開発で活用する
ユースケース技術は、利用者視点のナラティブによってシステムの振る舞いを記述する要求モデリングの核です。ユースケース・シナリオは、アクターの目的を達成する一つのストーリーを、アクターと対象システムの間で進む出来事、行為、分岐、成功または失敗の結果として構成したナラティブです。
従来、ユースケースシナリオは開発者が読み解き、分析、設計、実装へ変換する要求記述でした。生成AIは、自然言語で記述されたシナリオを直接読み、関係する用語、規則、モデル要素を参照しながら、オブジェクト・モデルとCML (Cozy Modeling Language) を生成、更新、管理できます。
アクターの目的 → ユースケースシナリオ → textus-bokによる知識モデル化 → 生成AIによるオブジェクト・モデルとCMLの生成・更新・管理 → textus-cbd-supportによる可視化・差分・根拠 → 人間によるレビュー → 承認または指摘を生成AIへ返す
ここで「直接入力」とは、シナリオから正しい実装が無条件に自動生成されるという意味ではありません。生成AIがオブジェクト・モデルを管理する一方、人間が要求との対応、意味、影響を確認し、承認または指摘を返すという意味です。これまで開発者の頭の中にあった解釈を、可視化し、追跡し、承認できる協業工程へ変える点に本質的なブレークスルーがあります。
文芸プログラミングから文芸モデルへ
文芸プログラミングは、プログラムと説明を一つの文書で扱い、コンピュータの実行順序ではなく、人間が理解しやすい順序で記述する考え方です。この考え方をモデリングへ適用し、モデル情報と説明を人間が理解できる形で一体的に組織する活動・方法を、文芸モデリング (Literate Modeling)と呼びます。その活動 (Activity)で記述し、組織する対象と成果物が文芸モデルです。
文芸モデルになる条件
自然言語で書かれているだけでは、文書は文芸モデルになりません。少なくとも、何について何のために記述しているかが分かり、内容の意味と識別子 (Identifier)をたどれ、設計、判断、検証のいずれかへ接続できる必要があります。
| 条件 | 確認する問い |
|---|---|
対象と目的 |
何について、何のために記述しているか。 |
意味と識別子 |
どの概念、要求、判断、シナリオを指すか。 |
モデルとの対応 |
どのモデル要素、規則、根拠と関係するか。 |
開発での利用 |
設計、判断、検証、説明のどこで使うか。 |
文芸モデルが表現する内容
| 内容 | 意味 |
|---|---|
対象 |
何について記述しているか。 |
目的 |
何を実現し、理解したいか。 |
状況 |
どの文脈で成り立つか。 |
要求 |
何を満たす必要があるか。 |
判断 |
何を選び、なぜ選んだか。 |
シナリオ |
出来事がどのように進むか。 |
意図 |
形式の背後にある狙い。 |
前提 |
何を既知または有効とするか。 |
履歴 |
理解や判断がどのように変化したか。 |
すべてを一つの文書へ詰め込む必要はありません。目的に必要な内容を選び、関係する用語、知識、オブジェクト・モデル要素へ対応付けます。
開発を方向付ける文芸モデル
ビジョン、ゴール、コンテキストも、開発を方向付ける重要な文芸モデルです。ビジョンは実現したい将来像と存在理由を、ゴールは到達したい結果、優先順位、成功条件を、コンテキストは関係者、対象範囲、環境、制約 (Constraint)、判断の前提を示します。
これらをモデルとして保持すると、要求、アーキテクチャ判断、優先順位、検証結果を、プロジェクトの目的と境界へ照らして確認できます。生成AIも、単独の要求だけでなく、なぜその要求が必要かという文脈を参照して候補を作成できます。
SmartDoxで文脈を共有する
文芸モデルの記述には、フルスペックの基本言語としてSmartDoxを使い、Markdownも利用できます。SmartDoxは、自然言語の読みやすさを保ちながら、見出し、段落、一覧、表、図、用語参照によって文書を組織する記述基盤です。プレーンテキストとして変更を追跡でき、用語集 (Glossary)の識別子を手掛かりに、文芸モデルの記述を他のモデル要素へ接続できます。
SmartDoxで記述しただけで、内容が妥当なモデルになるわけではありません。対象、目的、意味、識別子、根拠、承認状態を組織する必要があります。textus-bokは文芸モデルを知識モデル化して生成AIへ接続します。生成AIはこの文脈を使ってオブジェクト・モデルを生成、更新、管理します。人間はtextus-cbd-supportが提供する可視化、差分、根拠で結果の意味と妥当性を確認し、承認または指摘を生成AIへ返します。
各種ドキュメントの事実の正本
要求仕様、設計説明、レビュー資料、ユーザーガイド、リファレンスマニュアルを、それぞれ独立した正本として開発すると、同じ事実が重複し、更新のたびに不整合が生じます。文芸モデリングでは、背景、目的、要求、判断、シナリオ、前提、履歴を文芸情報の正本として組織し、目的と読者に応じたドキュメントを必要な正本から構成・生成します。
これは、すべてのドキュメントを派生物にするという意味ではありません。ドメイン・モデルの概念、規則、関係を自然言語で説明する文書は、それ自体が文芸モデルの正本となり、他の目的別ドキュメントから参照されます。
-
ユーザーガイド: ユースケースとユースケースシナリオを主な正本とし、利用状況、目的、用語、前提、注意事項を文芸モデルから補います。
-
リファレンスマニュアル: プログラム仕様と実行可能なオブジェクト・モデルを主な正本とし、背景、目的、設計意図、利用文脈を文芸モデルから補います。
-
要求仕様・設計説明: 要求、判断、オブジェクト・モデル、知識モデルを主な正本とし、シナリオ、根拠、前提、履歴を文芸モデルから補います。
生成したドキュメントは、新しい正本ではなく、必要なモデル要素を目的と読者に合わせて構成したビュー (View)です。正本を更新し、一定の組織化規則に従って各ドキュメントを再構成します。
シナリオを実行可能なモデルへ接続する
ユースケースシナリオからCMLへ直接飛ぶと、シナリオのどの記述が、どの参加者、責務 (Responsibility)、操作 (Operation)、イベント (Event)、状態変化に対応するのかを確認できません。SimpleModelingでは、シナリオと実行可能な要素の間に、レビュー可能なユースケース実現モデル (Use Case Realization Model)を置きます。
ユースケースシナリオ → textus-bokによる知識モデル化 → 生成AIによるユースケース実現モデルと実行可能要素の生成・更新 → textus-cbd-supportによる可視化・差分・根拠 → 人間によるレビュー → 承認または指摘を生成AIへ返す → CMLを更新
生成AIは、シナリオから参加者、役割、責務、協調 (Collaboration)、相互作用を抽出し、ユースケース実現モデルと、サービス、操作、イベント、状態機械 (StateMachine)などの実行可能要素を主として生成、更新、管理します。人間は要求の意味と対応が保たれているかを確認し、承認または指摘を生成AIへ返します。この中間モデルによって、AIが行った解釈とオブジェクト・モデルの更新を追跡できます。協調、相互作用、状態機械を使った具体的なアプリケーション・モデリング (Application Modeling)は、第9回で扱います。
注文確定の簡単な例
「注文を確定する」という同じ対象を、三つの構成要素から見ると、それぞれの役割が明確になります。
三つの記述は、用語集の識別子を共通の手掛かりとして対応付けます。textus-bokが文芸モデルを知識モデル化して生成AIへ渡し、生成AIがオブジェクト・モデルを生成、更新、管理します。人間はtextus-cbd-supportを通して、シナリオの目的と結果が実行可能なモデルに保たれているかを確認します。
まとめ
-
ストーリーは何が起きるかという意味内容であり、ナラティブはそれを特定の視点、目的、文脈から構成した文芸モデルです。ビジョン、要求、判断記録、既存仕様、ドメイン・モデルの自然言語による説明文書なども文芸モデルを構成します。
-
文芸モデリングは、自然言語によるモデル情報と説明を、人間が理解できる形で組織する活動・方法です。
-
文芸モデルは、対象、目的、状況、要求、判断、シナリオ、意図、前提、履歴を保持します。
-
textus-bokが文芸モデルを知識モデル化して生成AIへ接続し、生成AIがオブジェクト・モデルを主として生成、更新、管理します。
-
人間はtextus-cbd-supportの可視化、差分、根拠で結果をレビューし、承認または指摘を生成AIへ返します。
-
文芸モデルを事実の正本として組織し、目的別のドキュメントを構成します。
次回
次回の第8回「ドメインモデリング」では、オブジェクト・モデル、知識モデル、文芸モデルから、問題領域の意味、構造、規則、境界をどのように組織するかを扱います。
参照
用語集
- モデル (Model)
-
Modelとは、対象を特定のPurposeとConcernに基づいて選択し、理解、判断、検証、構築に利用できる形で表した抽象です。対象そのものではなく、目的に必要な要素、関係、意味を保持する表現です。
- オブジェクト (Object)
-
Objectとは、Classまたは他のClassifierによって分類され、構造、State、Behaviorを持ち得るInstanceです。Objectは、同じClassifierの他のInstanceと区別して参照できる個体として扱われます。
- シンプルモデリング (SimpleModeling)
-
SimpleModelingは、KnowledgeからDomain Modelを構成し、CMLで形式化し、CozyとAIによって実行可能ソフトウェアへ実現し、Textus上で動作させる、モデリング中心のソフトウェア開発方法論と技術体系です。
- ナラティブ (Narrative)
-
Undefined
- ユースケースシナリオ (Use Case Scenario)
-
Undefined
- ストーリー (Story)
-
Undefined
- オブジェクト・モデル (Object Model)
-
Undefined
- Cozy Modeling Language (CML)
-
CML(Cozy Modeling Language)は、オブジェクト・モデルのうち、プログラム生成と実行へ接続する実行可能モデルを記述するSimpleModelingの形式モデリング言語です。
- ユースケース (Use Case)
-
UMLにおけるUse Caseは、対象システムがActorまたは他の利害関係者に観測可能な価値あるResultをもたらすために実行するActionの集合を定めるModel Elementです。
- ドメイン・モデル (Domain Model)
-
Undefined
- 知識モデル (Knowledge Model)
-
知識モデル(Knowledge Model)とは、SimpleModelingモデルに含まれる概念、意味関係、分類、規則、根拠、出典などを、主として生成AIが参照、探索、関連付け、解釈できる形で構造化したモデルです。
- 文芸モデル (Literate Model)
-
Undefined
- 妥当性確認 (validation)
-
Validation(妥当性確認)とは、システムや機能が利用目的や要求仕様に対して妥当であるかを確認する行為である。
- 振る舞い (Behavior)
-
UMLにおけるBehaviorは、そのContextとなるBehaviored Classifierが時間とともにどのようにStateを変えるかを定める仕様です。可能な実行、創発する振る舞い、または特定の実行例を表せます。
- 文芸モデリング (Literate Modeling)
-
Undefined
- 活動 (Activity)
-
アクティビティスペース内で実行される具体的な行為またはタスク。アルファをより進んだ状態へ移行させるために行われ、通常はワークプロダクトの生成や改良を伴う。
- 識別子 (Identifier)
-
Identifierとは、Identityを持つ対象または相関対象を参照し、他の対象から区別するために使用する値です。IdentifierはIdentityを表現できますが、対象が時間を通じて同じ対象であるというIdentityの意味そのものではありません。
- 制約 (Constraint)
-
UMLにおけるConstraintは、一つ以上のModel ElementのSemanticsの一部を宣言するため、自然言語または機械可読言語で表した条件または制限です。評価結果はBooleanであり、評価は副作用を持ちません。
- 用語集 (Glossary)
-
Glossaryとは、対象領域で使用する用語について、名称、意味、境界、同義語、識別子を管理する知識資源です。関係者が同じ用語を同じ意味で扱うための共通基盤になります。
- ビュー (View)
-
Viewとは、Modelを特定のPurposeとConcernに応じて選択し、理解、判断、検証、利用できる形で投影した表現です。ViewはModelの一部を見せるものであり、元のModelとは別に意味を所有しません。
- イベント (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 Realization Model)
-
UPにおけるUse Case Realizationは、ユースケースの振る舞いを、設計モデル内で協調するモデル要素によってどのように実現するかを記述します。ユースケース実現モデルは、ユースケースのシナリオと、それを実現する参加者、責務、相互作用、操作、結果の対応を表すモデルです。
- 状態 (State)
-
UMLにおけるStateは、ある不変条件が成立している状況をモデル化したものです。Objectの現在のStateによって、受け付けられるEventやOperation、成立するConstraint、次に可能なTransitionが変わります。
- 実現関係 (Realization)
-
Undefined
- 協調 (Collaboration)
-
UMLにおけるCollaborationは、専門化された機能を担う参加要素のRoleが共同して、目的とする機能を達成する構造を記述するClassifierです。
- アプリケーション・モデリング (Application Modeling)
-
アプリケーション・モデリング(Application Modeling)とは、ユースケースをアプリケーションが実現する振る舞いとして具体化し、アプリケーション・モデルを構成する活動です。ユースケースシナリオから、参加者、役割、責務、協調、相互作用、状態遷移、イベント、サービス、操作への対応を明らかにします。
- 状態機械 (StateMachine)
-
UMLにおけるStateMachineは、Eventの発生によって起動されるTransitionでStateのグラフをたどり、システム要素のevent-driven Behaviorを表すBehaviorです。
- ドメイン・モデリング (Domain Modeling)
-
Undefined