サイトの目的
SimpleModeling.org は、モデリングを中心としたソフトウェア開発の技術情報サイトです。
文芸モデル駆動開発 (Literate Model-Driven Development (LMDD, 文芸モデル駆動開発)) を軸に、以下のような関連技術に関する知識体系と実践情報を提供します。
-
ドメイン・モデリング
-
オブジェクトと関数の統合
-
コンポーネント指向開発
-
クラウド・ネイティブ・アプリケーション構築
また文芸モデル駆動開発と生成AIを組み合わせることにより、次世代の開発方法論の構築・普及を目指しています。
本サイトの3つの目的
-
ソフトウェア開発のエキスパートになる早道を提供すること
-
文芸モデル駆動開発による一貫した開発方法論を示すこと
-
AI駆動開発を支える技術基盤を提供すること
以下、それぞれの目的について詳しく説明します。 == エキスパートへの早道
SimpleModeling.org では、以下の分野における統一的な知識体系と実践パターンを提供します。
-
ドメイン・モデリング(Domain Modeling)
-
コンポーネント指向開発(Component-Based Development)
-
クラウド・ネイティブ・アプリケーション構築(Cloud-Native Application)
-
オブジェクト・関数統合型プログラミング(Object-Functional Programming)
これらの技術はソフトウェアの設計・実装・運用を支える中核技術であり、モデル駆動やAI支援との親和性も高く、将来性のある領域です。
当サイトでは、これらの技術を実務に活かすための再利用可能な知見やツールを体系的に紹介し、開発者が、最短ルートで実力を身につけられるよう支援します。
文芸モデル駆動開発
文芸モデル駆動開発は、自然言語と構造化記述を組み合わせたCML (Cozy Modeling Language)(Cozy Modeling Language)によりモデルを表現し、そこから自動生成されたコードをカスタマイズしてアプリケーションを構築する開発手法です。
開発ステップ
-
CML による文芸モデル (literate model)の記述
-
Cozy によるドメイン・コンポーネントの自動生成
-
コンポーネント (Component)のカスタマイズ
-
アプリケーションへの組み込み・実行
モジュール構成
文芸モデル駆動開発は、以下の4つのモジュールで構成されます。
文芸モデル駆動開発の活用
本サイトでは文芸モデル駆動開発がテーマの一つとなっています。
-
モデル駆動開発の採用による開発効率の向上
-
モデル駆動開発によるAI駆動開発への基盤の確立
同時にモデリング技術の解説を文芸モデル駆動開発と並行して行なっているのはモデリング技術解説の具体的なベースとなるからです。
モデリング技術の解説では、基本データ型やエラー・システムなどの基盤が定まっていないと、汎用的ではあるものの具体的な実装に落とせるものとは少し距離のあるモデルになりがちです。
この問題に対応するため、プログラミングによる実装のための基盤を定義した上で、モデリングの技術解説を行います。
この基盤として文芸モデル駆動開発の実行基盤を使用します。
またAI駆動開発を考える上でも、プログラミング層よりもモデリング層の抽象度でAIとの連携を考えた方が適切な場合も多いと思われます。
この観点でも文芸モデル駆動開発をベースに議論を進めていきます。
AI駆動開発の基盤提供
SimpleModeling.orgでは、開発の各ステージにおいてAIによる支援を活用できるように、以下のような情報構造と連携手段を整備しています。
CML : 人とAIの橋渡し
SimpleModeling.orgでは、ソフトウェア開発における文脈情報をAIに学習させることで、最小限の指示で正確なコード生成や設計補助が可能になることを目指します。
-
人間にとって理解しやすい自然言語ベースの記述
-
コンピュータにとって処理可能な構造化データ形式
-
AIにとって学習しやすい両面性を持つモデル記述
BoK(知識体系)
AI駆動開発を行うために開発者とAIが共有する知識の文脈をSimpleModelingではBoK (Body of Knowledge)(Body of Knowledge)と呼びます。
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のSPI(Service Provider Interface)に準拠するアダプタを作成することで、アプリケーションをクラウド環境で動作させることができます。
このアダプタの開発にはAIによる自動生成を活用することができます。
参照
用語集
- 文芸モデル駆動開発 (LMDD, Literate Model-Driven Development)
-
文芸モデル駆動開発(Literate Model–Driven Development, LMDD) は、自然言語による語りと形式的なモデル構造を統一されたテキスト基盤上で統合するソフトウェア開発手法です。従来のモデル駆動開発(MDD)を拡張し、ドキュメントとモデルを単一の整合的ソースとして扱います。 LMDDでは、開発成果物の記述要素と構造要素をSmartDox言語を用いて同時に表現します。この統合的な表現から、ModelDoxが構造データを抽出し、CML(Cozy Modeling Language)がドメイン固有モデルを定義し、Cozyが実行可能なコード、ドキュメント、構成情報などの成果物を生成します。 人工知能(AI)は、語りの文脈を解析し、構造の整合性を検証し、モデルおよび生成成果物の改良を支援することでLMDDプロセスに関与します。すべての成果物はテキスト形式で表現されるため、トレーサビリティ、バージョン管理、標準的な開発環境との相互運用性が確保されます。 ドキュメント、設計、実装の間に形式的かつ機械可読な関係を定義することにより、LMDDは人間による記述と機械による推論が同一の表現層で機能する、AI支援型モデル駆動開発の基盤を提供します。
- CBD (Component-Based Development)
-
CBD(コンポーネント指向開発)は、ソフトウェアを責務・契約・インターフェースを明確に定義したコンポーネント単位で構築・再利用する開発方式です。 コンポーネントは独立性と交換可能性を備え、システムを疎結合に構成することで保守性と再利用性を高めます。 論理モデルでは機能や契約を定義する抽象構造単位として、物理モデルでは実際の実装・デプロイメント単位として扱われます。
- CML (Cozy Modeling Language)
-
CMLは、Cozyモデルを記述するための文芸モデル記述言語です。 SimpleModelingにおける分析モデルの中核を担うDSL(ドメイン固有言語)として設計されています。 モデル要素とその関係性を自然言語に近い文体で記述できるよう工夫されており、AIによる支援や自動生成との高い親和性を備えています。 CMLで記述された文芸モデルは、設計モデル、プログラムコード、技術文書などに変換可能な中間表現として機能します。
- 文芸モデル (literate model)
-
文芸モデル(Literate Model)は、モデル構造と自然言語による語り(構造化文書)を統合した「読めるモデル」です。 文芸的プログラミング(Literate Programming)の思想をモデリング領域に拡張し、 構造(モデル)+語り(構造化文書) を一体化することで、人間とAIの双方が理解・操作できる知識表現を実現します。 「Literate Modeling(文芸的モデリング)」という発想自体は、 これまでにも一部の研究者や開発者によって試みられてきました。 しかし、それらは主にドキュメント生成やコード理解の支援にとどまっており、 モデルと言語・語り・AI支援を統合した体系的なモデリング手法として確立されたものではありません。 文芸モデル(Literate Model)は、SimpleModelingがAI時代に向けて新たに体系化・提唱したモデリング概念です。 文芸的モデリングの思想を継承しつつ、 AI協調型の知識循環とモデル生成を可能にする知的モデリング基盤として再構成されています。 文芸モデルは、単なるモデル記述技法ではなく、 人間の思考過程や設計意図を語りとしてモデルに埋め込み、 AIがそれを解析・再構成して設計や生成を支援するための枠組みです。
- コンポーネント (Component)
-
責務・契約・依存関係を明示的に定義し、再利用可能で交換可能な単位としてカプセル化されたソフトウェア構成要素。論理モデルでは抽象構造単位として、物理モデルでは実装・デプロイメント単位として扱われる。
- エラー (error)
-
汎用的な表現として用いられる用語。ソフトウェア工学では多義的に使われ、バグや障害全般を指す。SimpleModeling では広義のラベルとして使用し、個別には Mistake・Defect・Fault・Failure・Deviation に整理する。
- BoK (Body of Knowledge)
-
SimpleModelingでは文脈共有の核となる知識体系をBoK (Body of Knowledge)と呼んでいます。 BoKの構築は、知識の共有、教育、AIによる支援、自動化、意思決定支援を可能にするための基盤です。
- プロンプト (Prompt)
-
RAGによって取得された知識を、AIモデルの推論プロセスに橋渡しするための構造化指示または文脈表現。 BoKに格納された構造化知識を、モデルが理解し行動・内化できる物語的/命令的形式に変換する。
- DSL (Domain Specific Language)
-
DSL(ドメイン固有言語)は、特定の領域(ドメイン)に特化して設計された言語であり、その分野の概念や構造を直接的かつ簡潔に表現することを目的とします。 一般的な汎用プログラミング言語(GPL)に比べ、DSLは特定ドメインの問題解決や自動生成に適した高い抽象度を持ちます。