文芸モデル
文芸モデルは、語りと形式構造を一つの生きた文書として統合し、人とAIが共に解釈・分析・進化させることを可能にします。モデリングを「書くこと」と「理解すること」の協働行為へと変え、説明と実行の橋渡しを行います。
文芸モデルの考え方
従来のモデリングでは、構造の記述に主眼が置かれており、設計の意図や理由は別の文書やコメントに分離されてきました。文芸モデル (literate model)はこの分離をなくし、構造(model)と語り(narrative)を同一の文書内で統合します。
これにより、モデルは単なる定義情報ではなく、思考の文脈や判断理由を含んだ語るモデルとして表現されます。AIは語り部分を解析し、モデルの意図や関係性を理解し、再構築することができます。
Literate Programmingとの関係
文芸モデルは、Donald E. Knuthが提唱したLiterate Programming(文芸的プログラミング)の思想をモデリング領域に拡張したものです。Literate Programmingでは、プログラムを人間にとって読みやすい物語として記述し、コードと説明を同一文書で扱います。文芸モデルはこの発想を発展させ、対象をコードからモデルへと移します。
観点 | 文芸的プログラミング | 文芸モデリング |
---|---|---|
対象 |
ソースコード |
モデル構造・設計知識 |
文書形式 |
TeX、noweb、Markdownなど |
SmartDox |
主目的 |
コードの理解と保守 |
モデルとドキュメントの統合 |
出力 |
実行コードと説明文書 |
モデルデータと技術文書 |
読者 |
プログラマ |
モデラー、設計者、AI、ドメイン・エキスパート、ビジネス・オーナー |
文芸モデルは、Literate Programmingを超えてモデリング自体を文芸的活動として再定義します。これにより、文書とモデルを同じソースから生成し、知識を循環的に進化させる新しい記述方法が生まれます。
過去のLiterate Modelingとの違い
「Literate Modeling」という用語は過去にも使用されてきましたが、多くの試みは、モデルをUMLで記述し、コメントや外部の説明文で意味を補うアプローチが主でした。これらはいずれも、モデルを理解しやすくするための文書化手法として位置づけられており、文書そのものをモデル構造として扱うには至っていません。
代表的な研究として、次のようなものがあります。
-
Literate Modelling — Capturing Business Knowledge with the UML(UCL, 1998): UML図をテキスト中に埋め込み、モデルの背景を説明文で補う方式。
-
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を基盤とする主モデリングDSL。SimpleModelingメソッドのオブジェクト関数モデルを記述し、Cozyを通じて成果物を生成。 |
|
ModelDox |
SmartDoxから抽出・再構成された構造化データ。DSLやAI解析の基盤として機能。 |
SmartDox |
文芸的で人が読むための文書言語。ModelDoxの基盤となり、Web/PDF出版を支援。 |
この構成において、SmartDoxは語りと文書構造を提供し、ModelDoxはそれを形式的データに変換します。その上にCMLがドメインモデルを定義し、Cozyがそれを解釈してコード・ドキュメント・設定情報などの成果物を自動生成します。さらに、この基盤を活用することで、ドメイン固有DSLや設計補助DSL、技術仕様DSLなど、さまざまなDSLを構築することも可能です。
このように、SmartDox・ModelDox・CMLは、人間中心の語りと機械中心の生成・解析を一つの文書体系で結びつける、文芸モデリングの基盤を形成しています。
CMLの利用例
CMLは、SmartDoxをメタ言語として利用するDSLです。SmartDoxの節構造や表構造、属性定義をそのままモデル要素として使用し、自然な文章の流れの中にモデル定義を埋め込むことができます。特別な記法や外部モデリングツールを必要とせず、同一の文書が読みやすい説明文であると同時に実行可能なモデルとして機能します。
# Entity
## Person
人を表すエンティティです。アプリケーション内でユーザや担当者などを識別するための基本単位になります。個人の識別子、氏名、年齢などの情報を保持します。
### Attribute
| name | type | mul | description |
|---------+------------+-----+--------------------------------|
| id | identifier | 1 | システム内で一意に識別するためのID |
| name | name | 1 | 個人の氏名 |
| age | age | ? | 年齢。任意項目です |
### Rule
1. idは必ず一意であること
2. nameは空であってはならない
3. ageが設定されている場合、0以上の整数でなければならない
### Description
このエンティティは、アプリケーション全体で共通的に使用される基本的なドメインオブジェクトです。Personは他のエンティティ(OrderやAccountなど)と関連を持ち、作成者、担当者、依頼者といった役割を担います。
また、Personエンティティは外部システムとの同期対象でもあり、IDは内部生成ではなく、外部ディレクトリ(LDAPやIDaaSなど)との連携によって割り当てられる場合があります。
この例では、階層構造(Entity→Person→Attribute)および表のキー・値の定義が自動的にモデルとして解析されます。同時に、周囲の文章がエンティティの目的や意味を人間にわかりやすく説明しています。したがって、この文書は読みやすい説明文であると同時に、形式的なモデルでもあります。
この手法こそが文芸モデリングの本質を体現しています。すなわち、人間による語りと形式的定義を一つのテキストソース内に統合することです。SmartDoxで書かれたすべての記述は、ModelDoxやCMLを通じてAIやCozyのようなツールが解釈し、進化させることができる「生きたモデル」の一部となります。
テキストベースによる協働と知識進化
CMLは、SimpleModelingメソッドで定義されるオブジェクト関数モデル(Object–Functional Model)を記述するためのテキストベースのDSLです。SmartDoxをメタ言語として利用し、自然言語による語りと構造化されたモデル定義を同一文書内に統合し、人とAIの間でシームレスな協働を実現します。
CMLで記述されたモデルは、Cozyによってプログラム、ドキュメント、構成情報などの成果物に自動生成されます。このプロセスでは、文芸的モデリングと実装が直接的に結びつき、文章で書かれた記述がそのまま実行可能な構造へと変換されます。
CMLは完全なテキストベースのDSLであり、特別な編集ツールを必要としません。一般的なテキストエディタで作成・編集できるため、導入と運用が容易です。SmartDox構文に基づいているため、語りと構造の両方をプレーンテキストとして保持でき、Gitのようなバージョン管理システムで文言・構造・意図のすべての変更を追跡することが可能です。これにより、設計知識の透明性・追跡性・共同進化が保証されます。
CMLとCozyが実際のモデリングおよび生成を担うのに対し、SimpleModeling.orgはメソッド全体の知識体系(BoK)として機能します。モデリング、設計、AI協働、開発プロセスに関する概念的・分析的・手続き的知識を整理・公開しています。すべての記事はSmartDoxで記述され、Antoraを通じて展開されており、ドメイン知識の文芸的リポジトリとして進化を続けています。
このエコシステムでは、SmartDoxが表現の媒体を、CMLが形式的なモデリング構文を、Cozyが自動生成機構を担います。これらが連携することで、人間が書いた語りとAIが処理する構造が互いに影響し合い、洗練されていく連続的なフィードバックループが形成されます。テキストベースによるこの協働は、知識・設計・実装が共に進化する持続可能なモデリングを可能にします。
Cozyと生成
Cozyが直接操作するのは、CMLで記述されたモデルです。CMLは、SimpleModelingメソッドにおけるオブジェクト関数モデル(Object–Functional Model)の構造と意味を定義しており、SmartDoxをメタ言語として利用しています。この階層構造(Cozy ⇢ CML ⇢ SmartDox)により、形式的な正確さと文芸的な表現力の両立が実現されます。
CozyはCMLモデルを解釈し、プログラムコード、設計書、設定ファイルなどの成果物を自動生成します。CMLの統一された構文と意味定義によって、モデリング・ドキュメント・生成を一体のプロセスとして扱い、設計と実装の間のギャップを最小化します。
CMLがSmartDoxをメタ言語として採用していることにより、次のような利点が得られます。
この設計によって、CozyはCMLの形式的なモデルデータを直接操作しながら、SmartDoxがもたらす語りの統合性や人とAIの協働性の恩恵を受けます。これにより、Cozyはテキストを構造化された知識として解釈し、記述された意図と実行可能な成果物との橋渡しを行うことができます。
最終的に、Cozyは文芸モデルの中核理念である「書くことがモデリングであり、モデリングが生成につながる」という思想を実現します。
文芸モデル駆動開発の全体像
文芸モデル駆動開発 (LMDD, Literate Model-Driven Development)は、CMLを中心に据えた統合的な開発プロセスです。SmartDox、ModelDox、Cozy、そしてAIを連携させ、設計から生成までを一貫したパイプラインとして結びつけることで、ドキュメント・モデリング・実装がひとつの文芸的プロセスとして共に進化していきます。
CMLはSimpleModelingメソッドにおけるオブジェクト関数モデル(Object–Functional Model)を定義するDSLであり、SmartDoxをメタ言語として利用します。SmartDox文書は語りであると同時に構造化データのソースでもあり、ModelDoxがそこから形式的なモデル構造を抽出します。Cozyはその構造を解釈してコード、ドキュメント、設定情報を生成し、AIは語りと構造の意味的一貫性を解析して整合性を保ちます。
すべての要素がテキストベースで構成されているため、Gitなどのバージョン管理システムで自然言語の記述と形式的モデル定義の両方の変更を一元的に管理できます。これにより、発想から実装に至るまでのモデリングライフサイクル全体を、透明性・再現性・協働性をもって運用することができます。
次の図は、SmartDox、ModelDox、CML、Cozy、AI、Gitがどのように連携して文芸的かつ生成的な開発環境を形成するかを示しています。
このパイプラインこそが文芸モデリングの実現形です。書くことがモデリングとなり、モデリングが生成につながり、生成が知識として循環します。このサイクルを通じて、人の理解とAIの推論がともに進化していきます。
まとめ
文芸モデルは、語りと構造を統合し、人とAIが共に理解し進化させることができる知識表現の形式です。テキストベースの統合的なアプローチにより、ドキュメント・モデリング・実装の間のギャップを埋めます。
SmartDoxを基盤とすることで、文芸モデリングは自然言語による説明と形式的なモデル構造を同一文書内で共存させます。ModelDoxはSmartDoxから構造データを抽出し、CMLは文芸的DSLとしてドメインモデルを定義し、Cozyはそれらのモデルに基づいてソフトウェア成果物を生成します。これらが連携することで、文芸モデル駆動開発の一貫したエコシステムが形成されます。
このエコシステムを通じて、AIは語りを解析し、構造の整合性を検証し、モデルの改良を支援します。テキストベースの文書は、読むことができ、実行でき、進化し続ける「生きた成果物」となります。
本質的に、文芸モデルはソフトウェア開発を「書くこと」「理解すること」「生成すること」が相互に結び付いた連続的なプロセスとして位置づけます。この枠組みにおいて、人とAIは、表現とモデリングの統合的な循環を通じて知識を協働的に洗練させていきます。