文芸モデル
文芸モデル (Literate Model)は、語りと形式構造を一つの生きた文書として統合し、人とAIが共に解釈・分析・進化させることを可能にします。モデリングを「書くこと」と「理解すること」の協働行為へと変え、説明と実行の橋渡しを行います。
Literate Programmingとの関係
文芸モデルは、Donald E. Knuthが提唱したLiterate Programming(文芸的プログラミング)の思想をモデリング領域に拡張したものです。Literate Programmingでは、プログラムを人間にとって読みやすい物語として記述し、コードと説明を同一文書で扱います。文芸モデルはこの発想を発展させ、対象をコードからモデルへと移します。
| 観点 | 文芸的プログラミング | 文芸モデリング |
|---|---|---|
対象 |
ソースコード |
モデル構造・設計知識 |
文書形式 |
TeX、noweb、Markdownなど |
SmartDox |
主目的 |
コードの理解と保守 |
モデルとドキュメントの統合 |
出力 |
実行コードと説明文書 |
モデルデータと技術文書 |
読者 |
プログラマ |
モデラー、設計者、AI、ドメイン・エキスパート、ビジネス・オーナー |
過去のLiterate Modelingとの違い
「Literate Modeling」という用語は過去にも使用されてきましたが、多くの試みは、モデルをUMLで記述し、コメントや外部の説明文で意味を補うアプローチが主でした。これらはいずれも、モデルを理解しやすくするための文書化手法として位置づけられており、文書そのものをモデル構造として扱うには至っていません。
代表的な研究として、次のようなものがあります。
-
Literate Modelling — Capturing Business Knowledge with the UML(UCL, 1998): UML図をテキスト中に埋め込み (Embedding)、モデルの背景を説明文で補う方式。
-
Literate programming meets UML(TUGboat, 2003): Literate Programmingの手法をUMLに適用し、TeX上でコードとモデルを統合的に説明。
-
Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML(Jim Arlow & Ila Neustadt, 2003): UMLモデルをパターンと語りで結びつけ、広い読者層に理解可能な形で提示する「Literate Modeling」章を含む。
これらの試みはいずれも、モデルの可読性や説明力を高める点で先駆的でしたが、モデルと語りを別レイヤとして扱い、自然言語の部分を補助的な説明として位置づけていました。教育やDSL関連の分野でも類似の方向性が散見されますが、統合的な文芸モデリングとして体系的に扱った研究は限られているようです。
これに対し、SimpleModelingにおける文芸モデルは、語りと構造を一体化し、文書そのものが構造化されたモデルとして機能する点で本質的に異なります。SmartDoxの節構造や表構造がそのままモデル要素に対応し、自然言語で書かれた語りもAIが解析可能なモデルデータの一部となります。
要するに、従来のLiterate Modelingが「モデルを説明する文書」を志向していたのに対し、文芸モデルは「語ることそのものがモデリングである」という立場に立ちます。
SmartDox・ModelDox・CML
文芸モデルの中心にあるモデリング言語が CMLです。CMLは、SimpleModelingメソッドで定義されるオブジェクト関数モデル(Object–Functional Model)を記述するためのDSLであり、SmartDoxをメタ言語として利用します。これにより、自然言語による語りと構造化されたモデル定義を同一文書内で統合することができます。
CMLで記述されたモデルは、Cozyによってプログラムや設計書などの成果物へと自動生成することができます。これにより、文芸的なモデリングとモデル駆動開発を一つの連続的なプロセスとして扱うことが可能になります。
CMLを支える基盤には、SmartDoxとModelDoxがあります。
SmartDoxは、Markdownに似た軽量構文を持つ構造化ドキュメント言語であり、節構造・表・属性・コードブロックを厳密に扱うことができます。SimpleModeling.org の記事やガイドもすべてSmartDoxで記述されており、HTMLやAsciidocへの変換を経てAntoraによってWeb上で公開されます。また、Asciidoc経由でPDFとして出力することもでき、Webと印刷の両方の出版形式に対応しています。
要するに、SmartDoxは人が読むための文芸的基盤であると同時に、機械が処理可能な構造を兼ね備えた汎用的な文書記述言語です。
一方、ModelDoxはSmartDox文書から構造情報を抽出・再構成した構造層を表します。SmartDoxメタモデルの上位層に位置し、DSLやAI解析ツールなどで利用される構造化データ表現を提供します。すなわち、ModelDoxは人間中心の文書構造を、機械中心のデータモデルへと変換します。
このように、SmartDox・ModelDox・CMLは三層構成によって文芸モデルを支えています。
| 層 | 内容 |
|---|---|
SmartDox/ModelDoxを基盤とする主モデリングDSL。SimpleModelingメソッドのオブジェクト関数モデルを記述し、Cozyを通じて成果物を生成。 |
|
ModelDox |
SmartDoxから抽出・再構成された構造化データ。DSLやAI解析の基盤として機能。 |
SmartDox |
文芸的で人が読むための文書言語。ModelDoxの基盤となり、Web/PDF出版を支援。 |
この構成において、SmartDoxは語りと文書構造を提供し、ModelDoxはそれを形式的データに変換します。その上にCMLがドメインモデルを定義し、Cozyがそれを解釈してコード・ドキュメント・設定情報などの成果物を自動生成します。さらに、この基盤を活用することで、ドメイン固有DSLや設計補助DSL、技術仕様DSLなど、さまざまなDSLを構築することも可能です。
このように、SmartDox・ModelDox・CMLは、人間中心の語りと機械中心の生成・解析を一つの文書体系で結びつける、文芸モデリングの基盤を形成しています。
Person
人を表すエンティティです。アプリケーション内でユーザや担当者などを識別するための基本単位になります。個人の識別子、氏名、年齢などの情報を保持します。
Attribute
| name | type | mul | description | |--------------------------+--------------------------------| | id | identifier | 1 | システム内で一意に識別するためのID | | name | name | 1 | 個人の氏名 | | age | age | ? | 年齢。任意項目です |
Description
このエンティティは、アプリケーション全体で共通的に使用される基本的なドメインオブジェクトです。Personは他のエンティティ(OrderやAccountなど)と関連を持ち、作成者、担当者、依頼者といった役割を担います。
テキストベースによる協働と知識進化
CMLは、SimpleModelingメソッドで定義されるオブジェクト関数モデル(Object–Functional Model)を記述するためのテキストベースのDSLです。SmartDoxをメタ言語として利用し、自然言語による語りと構造化されたモデル定義を同一文書内に統合し、人とAIの間でシームレスな協働を実現します。
CMLで記述されたモデルは、Cozyによってプログラム、ドキュメント、構成情報などの成果物に自動生成されます。このプロセスでは、文芸的モデリングと実装が直接的に結びつき、文章で書かれた記述がそのまま実行可能な構造へと変換されます。
CMLは完全なテキストベースのDSLであり、特別な編集ツールを必要としません。一般的なテキストエディタで作成・編集できるため、導入と運用が容易です。SmartDox構文に基づいているため、語りと構造の両方をプレーンテキストとして保持でき、Gitのようなバージョン管理システムで文言・構造・意図のすべての変更を追跡することが可能です。これにより、設計知識の透明性・追跡性・共同進化が保証されます。
CMLとCozyが実際のモデリングおよび生成を担うのに対し、SimpleModeling.orgはメソッド全体の知識体系(BoK)として機能します。モデリング、設計、AI協働、開発プロセス (Development Process)に関する概念的・分析的・手続き的知識を整理・公開しています。すべての記事はSmartDoxで記述され、Antoraを通じて展開されており、ドメイン知識の文芸的リポジトリとして進化を続けています。
Cozyと生成
Cozyが直接操作するのは、CMLで記述されたモデルです。CMLは、SimpleModelingメソッドにおけるオブジェクト関数モデル(Object–Functional Model)の構造と意味を定義しており、SmartDoxをメタ言語として利用しています。この階層構造(Cozy ⇢ CML ⇢ SmartDox)により、形式的な正確さと文芸的な表現力の両立が実現されます。
CozyはCMLモデルを解釈し、プログラムコード、設計書、設定ファイルなどの成果物を自動生成します。CMLの統一された構文と意味定義によって、モデリング・ドキュメント・生成を一体のプロセスとして扱い、設計と実装の間のギャップを最小化します。
CMLがSmartDoxをメタ言語として採用していることにより、次のような利点が得られます。
文芸モデル駆動開発の全体像
文芸モデル駆動開発 (LMDD, Literate Model-Driven Development)は、CMLを中心に据えた統合的な開発プロセスです。SmartDox、ModelDox、Cozy、そしてAIを連携させ、設計から生成までを一貫したパイプラインとして結びつけることで、ドキュメント・モデリング・実装がひとつの文芸的プロセスとして共に進化していきます。
CMLはSimpleModelingメソッドにおけるオブジェクト関数モデル(Object–Functional Model)を定義するDSLであり、SmartDoxをメタ言語として利用します。SmartDox文書は語りであると同時に構造化データのソースでもあり、ModelDoxがそこから形式的なモデル構造を抽出します。Cozyは その構造を解釈してコード、ドキュメント、設定情報を生成し、AIは語りと構造の意味的一貫性を解析して整合性を保ちます。
すべての要素がテキストベースで構成されているため、Gitなどのバージョン管理システムで自然言語の記述と形式的モデル定義の両方の変更を一元的に管理できます。これにより、発想から実装に至るまでのモデリングライフサイクル全体を、透明性・再現性・協働性をもって運用することができます。
`` `plantuml @startuml skinparam shadowing false skinparam rectangle { BorderColor #555 RoundCorner 8 FontSize 13 } skinparam package { BorderColor #888 BackgroundColor #f9f9f9 FontSize 14 }
title 文芸モデル駆動開発(LMDD)の全体像
package "CML\n(Cozy Modeling Language)\nオブジェクト関数モデルDSL" as CML { package "ModelDox\n構造抽出層" as MD { rectangle "SmartDox\n語り+構造の文芸文書" as SD } }
rectangle "Cozy\n生成フレームワーク" as COZY rectangle "Outputs\n成果物" as OUT { rectangle "Code\nドメイン/アプリ層クラス\nAPIスケルトン" as CODE rectangle "Docs\n設計書・仕様書\nHTML/PDF" as DOCS rectangle "Config\n設定・CI/CD構成" as CONF }
SD -[hidden]→ MD MD -[hidden]→ CML
CML -→ COZY : モデル入力 COZY -→ CODE : コード生成 COZY -→ DOCS : ドキュメント生成 COZY -→ CONF : 設定生成
rectangle "AI\n解析・整合チェック\n生成支援" as AI #e8f4ff AI .. SD : 語りの解析 AI .. MD : 構造整合 AI .. CML : 意味解析 AI .. COZY : 生成支援
rectangle "Git\n履歴管理・レビュー" as GIT #eef7ee GIT .. SD GIT .. CML GIT .. COZY
@enduml ` `` このパイプラインこそが文芸モデリングの実現形です。書くことがモデリングとなり、モデリングが生成につながり、生成が知識として循環します。このサイクルを通じて、人の理解とAIの推論がともに進化していきます。
まとめ
文芸モデルは、語りと構造を統合し、人とAIが共に理解し進化させることができる知識表現の形式です。テキストベースの統合的なアプローチにより、ドキュメント・モデリング・実装の間のギャップを埋めます。
SmartDoxを基盤とすることで、文芸モデリングは自然言語による説明と形式的なモデル構造を同一文書内で共存させます。ModelDoxはSmartDoxから構造データを抽出し、CMLは文芸的DSLとしてドメインモデルを定義し、Cozyはそれらのモデルに基づいてソフトウェア成果物を生成します。これらが連携することで、文芸モデル駆動開発の一貫したエコシステムが形成されます。
このエコシステムを通じて、AIは語りを解析し、構造の整合性を検証し、モデルの改良を支援します。テキストベースの文書は、読むことができ、実行でき、進化し続ける「生きた成果物」となります。
本質的に、文芸モデルはソフトウェア開発を「書くこと」「理解すること」「生成すること」が相互に結び付いた連続的なプロセスとして位置づけます。この枠組みにおいて、人とAIは、表現とモデリングの統合的な循環を通じて知識を協働的に洗練させていきます。
参照
用語集
- モデル (Model)
-
Modelとは、対象を特定のPurposeとConcernに基づいて選択し、理解、判断、検証、構築に利用できる形で表した抽象です。対象そのものではなく、目的に必要な要素、関係、意味を保持する表現です。
- 文芸モデル (Literate Model)
-
Undefined
- アスペクト (Aspect)
-
アスペクト(Aspect)とは、複数のモデル要素や振る舞いを横断して確認する条件、性質、関心事です。品質属性を中心とし、必要に応じて品質属性だけでは表し切れない横断的な条件も含みます。
- 文芸モデリング (Literate Modeling)
-
Undefined
- UML (Unified Modeling Language)
-
オブジェクト指向分析・設計のための統一モデリング言語。クラス図、シーケンス図、ユースケース図などを通じてシステム構造と動作を表現する。UPおよびCBDの基盤言語。
- 埋め込み (Embedding)
-
埋め込み(Embedding)とは、文章、用語、モデル要素などを、その意味上の近さを計算できる数値ベクトルへ変換した表現です。類似検索や候補抽出に利用します。
- DSL (Domain Specific Language)
-
DSL(ドメイン固有言語)は、特定の領域(ドメイン)に特化して設計された言語であり、その分野の概念や構造を直接的かつ簡潔に表現することを目的とします。 一般的な汎用プログラミング言語(GPL)に比べ、DSLは特定ドメインの問題解決や自動生成に適した高い抽象度を持ちます。
- シンプルモデリング (SimpleModeling)
-
SimpleModelingは、KnowledgeからDomain Modelを構成し、CMLで形式化し、CozyとAIによって実行可能ソフトウェアへ実現し、Textus上で動作させる、モデリング中心のソフトウェア開発方法論と技術体系です。
- Cozy Modeling Language (CML)
-
CML(Cozy Modeling Language)は、オブジェクト・モデルのうち、プログラム生成と実行へ接続する実行可能モデルを記述するSimpleModelingの形式モデリング言語です。
- オブジェクト (Object)
-
Objectとは、Classまたは他のClassifierによって分類され、構造、State、Behaviorを持ち得るInstanceです。Objectは、同じClassifierの他のInstanceと区別して参照できる個体として扱われます。
- Cozy
-
Cozyは、CMLと各種DSLで記述されたModelを解析し、プログラム、設定、文書などの実現成果物へ変換するSimpleModelingのツールチェーンです。
- 属性 (Attribute)
-
Attributeとは、ClassifierのInstanceが保持し得る値または参照を表すStructural Featureです。Attributeは名前、Type、Multiplicity、既定値、Constraintなどによって特徴付けられます。
- BoK (Body of Knowledge)
-
SimpleModelingでは文脈共有の核となる知識体系をBoK (Body of Knowledge)と呼んでいます。 BoKの構築は、知識の共有、教育、AIによる支援、自動化、意思決定支援を可能にするための基盤です。
- 開発プロセス (Development Process)
-
Undefined
- 文芸モデル駆動開発 (LMDD, Literate Model-Driven Development)
-
文芸モデル駆動開発(Literate Model–Driven Development, LMDD) は、自然言語による語りと形式的なモデル構造を統一されたテキスト基盤上で統合するソフトウェア開発手法です。従来のモデル駆動開発(MDD)を拡張し、ドキュメントとモデルを単一の整合的ソースとして扱います。 LMDDでは、開発成果物の記述要素と構造要素をSmartDox言語を用いて同時に表現します。この統合的な表現から、ModelDoxが構造データを抽出し、CML(Cozy Modeling Language)がドメイン固有モデルを定義し、Cozyが実行可能なコード、ドキュメント、構成情報などの成果物を生成します。 人工知能(AI)は、語りの文脈を解析し、構造の整合性を検証し、モデルおよび生成成果物の改良を支援することでLMDDプロセスに関与します。すべての成果物はテキスト形式で表現されるため、トレーサビリティ、バージョン管理、標準的な開発環境との相互運用性が確保されます。 ドキュメント、設計、実装の間に形式的かつ機械可読な関係を定義することにより、LMDDは人間による記述と機械による推論が同一の表現層で機能する、AI支援型モデル駆動開発の基盤を提供します。