サイトの目的

Created: 2025-07-21

SimpleModeling (シンプルモデリング).org は、モデリングを中心としたソフトウェア開発の技術情報サイトです。

文芸モデル駆動開発 (LMDD, Literate Model-Driven Development) (Literate Model (モデル)-Driven Development) を軸に、以下のような関連技術に関する知識体系と実践情報を提供します。

また文芸モデル駆動開発と生成AIを組み合わせることにより、次世代の開発方法論の構築・普及を目指しています。

本サイトの3つの目的

  • ソフトウェア開発のエキスパートになる早道を提供すること - 文芸モデル駆動開発による一貫した開発方法論を示すこと - AI駆動開発を支える技術基盤を提供すること

以下、それぞれの目的について詳しく説明します。 == エキスパートへの早道

SimpleModeling.org では、以下の分野における統一的な知識体系と実践パターンを提供します。

これらの技術はソフトウェアの設計・実装・運用を支える中核技術であり、モデル駆動やAI支援との親和性も高く、将来性のある領域です。

当サイトでは、これらの技術を実務に活かすための再利用可能な知見やツールを体系的に紹介し、開発者が、最短ルートで実力を身につけられるよう支援します。

文芸モデル駆動開発

文芸モデル駆動開発は、自然言語と構造化記述を組み合わせたCML (Cozy Modeling Language)(Cozy Modeling Language)によりモデルを表現し、そこから自動生成されたコードをカスタマイズしてアプリケーションを構築する開発手法です。

開発ステップ

  1. CML による文芸モデル (Literate Model)の記述 2. Cozy によるドメイン・コンポーネントの自動生成 3. コンポーネント (Component)のカスタマイズ 4. アプリケーションへの組み込み・実行 === モジュール構成

文芸モデル駆動開発は、以下の4つのモジュールで構成されます。

CML (Cozy Modeling Language)

文芸モデルを自然言語+構造化テキストで記述するための言語

Cozy

CML からプログラムを自動生成するモデルコンパイラ

SimpleModelingLib

Scala / Cats ベースのクラスライブラリ。文芸モデル駆動開発に必要な基本機能を提供

Cloud-Native Component Framework

コンポーネント単位でクラウド・ネイティブ・アプリケーションを構築するための実行基盤

文芸モデル駆動開発の活用

本サイトでは文芸モデル駆動開発がテーマの一つとなっています。

  • モデル駆動開発の採用による開発効率の向上 - モデル駆動開発によるAI駆動開発への基盤の確立

同時にモデリング技術の解説を文芸モデル駆動開発と並行して行なっているのはモデリング技術解説の具体的なベースとなるからです。

モデリング技術の解説では、基本データ型 (Type)やエラー・システムなどの基盤が定まっていないと、汎用的ではあるものの具体的な実装に落とせるものとは少し距離のあるモデルになりがちです。

この問題に対応するため、プログラミングによる実装のための基盤を定義した上で、モデリングの技術解説を行います。

この基盤として文芸モデル駆動開発の実行基盤を使用します。

またAI駆動開発を考える上でも、プログラミング層よりもモデリング層の抽象度でAIとの連携を考えた方が適切な場合も多いと思われます。

この観点でも文芸モデル駆動開発をベースに議論を進めていきます。

AI駆動開発の基盤提供

SimpleModeling.orgでは、開発の各ステージにおいてAIによる支援を活用できるように、以下のような情報構造と連携手段を整備しています。

CML : 人とAIの橋渡し

SimpleModeling.orgでは、ソフトウェア開発における文脈情報をAIに学習させることで、最小限の指示で正確なコード生成や設計補助が可能になることを目指します。

CMLで記述された文芸モデルは以下の特徴 (Feature)を持ちます。

  • 人間にとって理解しやすい自然言語ベースの記述 - コンピュータにとって処理可能な構造化データ形式 - AIにとって学習しやすい両面性を持つモデル記述

現実世界のさまざまな情報からAIの支援によってCMLを作成することで、CMLを入力としたモデル駆動開発を進めることができます。

BoK(知識体系)

AI駆動開発を行うために開発者とAIが共有する知識の文脈をSimpleModelingではBoK (Body of Knowledge)(Body of Knowledge)と呼びます。

SimpleModeling.orgサイトが提供する情報そのものが文芸モデル駆動開発BoKになっています。

SimpleModelingの知識体系であるBoKは、AIに文脈や用語の意味、構造的背景を教えるための重要な情報資源です。

開発者がWebページとして読む情報を、AIは文芸モデル駆動開発を進めるための文脈を記述したプロンプト (Prompt)として学習することができます。

動作基盤

Cozyが生成するプログラムの動作基盤は以下のものから構成されます。

Programming Environment

Scala/Catsによるオブジェクト指向&関数型プログラミング基盤

SimpleModelingLib

文芸モデル駆動開発の実行基盤を提供するライブラリ

Cloud Native Component Framework

クラウド・ネイティブ機能を実現するコンポーネント・フレームワーク

プログラミング環境にScala/Catsを採用しているのは、プログラミングがベースの数理モデルに近いものであるほど、曖昧さを排除してAIによる支援の精度を上げることができると考えられるためです。

これらの構成要素から提供される各種APIが実行環境に対するDSL (Domain Specific Language)(Domain Specific Language)を構成します。

実行環境のDSLが定まることで、AIはより適切な開発支援を行うことができます。

クラウドプラットフォームとの連携

Cloud Native Component Framework (CNCF)のSPI(Service Provider Interface (インターフェース))に準拠するアダプタを作成することで、アプリケーションをクラウド環境で動作させることができます。

このアダプタの開発にはAIによる自動生成を活用することができます。

図解:AI活用のアーキテクチャ

AI活用のアーキテクチャ
図 1. AI活用のアーキテクチャ

参照

用語集

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

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

モデル (Model)

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

文芸モデル駆動開発 (LMDD, Literate Model-Driven Development)

文芸モデル駆動開発(Literate Model–Driven Development, LMDD) は、自然言語による語りと形式的なモデル構造を統一されたテキスト基盤上で統合するソフトウェア開発手法です。従来のモデル駆動開発(MDD)を拡張し、ドキュメントとモデルを単一の整合的ソースとして扱います。 LMDDでは、開発成果物の記述要素と構造要素をSmartDox言語を用いて同時に表現します。この統合的な表現から、ModelDoxが構造データを抽出し、CML(Cozy Modeling Language)がドメイン固有モデルを定義し、Cozyが実行可能なコード、ドキュメント、構成情報などの成果物を生成します。 人工知能(AI)は、語りの文脈を解析し、構造の整合性を検証し、モデルおよび生成成果物の改良を支援することでLMDDプロセスに関与します。すべての成果物はテキスト形式で表現されるため、トレーサビリティ、バージョン管理、標準的な開発環境との相互運用性が確保されます。 ドキュメント、設計、実装の間に形式的かつ機械可読な関係を定義することにより、LMDDは人間による記述と機械による推論が同一の表現層で機能する、AI支援型モデル駆動開発の基盤を提供します。

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

Undefined

オブジェクト (Object)

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

CBD (Component-Based Development)

CBD(コンポーネント指向開発)は、ソフトウェアを責務・契約・インターフェースを明確に定義したコンポーネント単位で構築・再利用する開発方式です。 コンポーネントは独立性と交換可能性を備え、システムを疎結合に構成することで保守性と再利用性を高めます。 論理モデルでは機能や契約を定義する抽象構造単位として、物理モデルでは実際の実装・デプロイメント単位として扱われます。

Cozy Modeling Language (CML)

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

Cozy

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

コンポーネント (Component)

責務・契約・依存関係を明示的に定義し、再利用可能で交換可能な単位としてカプセル化されたソフトウェア構成要素。論理モデルでは抽象構造単位として、物理モデルでは実装・デプロイメント単位として扱われる。

文芸モデル (Literate Model)

Undefined

Scala

Undefined

型 (Type)

Undefined

エラー (error)

汎用的な表現として用いられる用語。ソフトウェア工学では多義的に使われ、バグや障害全般を指す。SimpleModeling では広義のラベルとして使用し、個別には Mistake・Defect・Fault・Failure・Deviation に整理する。

特徴 (Feature)

UMLにおけるFeatureは、ClassifierのInstanceを特徴付ける構造上または振る舞い上の性質です。AttributeなどのStructural Featureと、OperationなどのBehavioral Featureがあります。

BoK (Body of Knowledge)

SimpleModelingでは文脈共有の核となる知識体系をBoK (Body of Knowledge)と呼んでいます。 BoKの構築は、知識の共有、教育、AIによる支援、自動化、意思決定支援を可能にするための基盤です。

プロンプト (Prompt)

RAGによって取得された知識を、AIモデルの推論プロセスに橋渡しするための構造化指示または文脈表現。 BoKに格納された構造化知識を、モデルが理解し行動・内化できる物語的/命令的形式に変換する。

DSL (Domain Specific Language)

DSL(ドメイン固有言語)は、特定の領域(ドメイン)に特化して設計された言語であり、その分野の概念や構造を直接的かつ簡潔に表現することを目的とします。 一般的な汎用プログラミング言語(GPL)に比べ、DSLは特定ドメインの問題解決や自動生成に適した高い抽象度を持ちます。

インターフェース (Interface)

Undefined

Cloud Native Component Framework (CNCF)

Cloud Native Component Framework(CNCF)は、クラウド・アプリケーションを構成するコンポーネントを、単一かつ一貫した実行モデルで実行するためのフレームワークです。 Component / Service / Operation という構造を中核とし、command、server(REST / OpenAPI)、client、script といった異なる実行形態から、同一の Operation を再利用できることを特徴とします。 ログ、エラー処理、設定、配備といったクラウド・アプリケーションに必要な品質属性をフレームワーク側に集約することで、コンポーネントはドメイン・ロジックの実装に集中できます。 CNCF は、文芸モデル駆動開発および AI 支援開発を前提に、「何を実行するか」と「どのように呼び出すか」を分離するための実行基盤として設計されています。