AI時代のソフトウェア開発 - 文芸モデル駆動アプローチ

浅海 智晴 Created: 2025-11-03

2025年10月31日にBPStudyの「BPStudy#218〜生成AI時代のモデリングとは」で以下の発表を行いました。(Zoomでリモート配信)

  • AI時代のソフトウェア開発 - 文芸モデル駆動アプローチ

たくさんの方にお集まりいただきどうもありがとうございました。

セッション内容

セッションでは、SimpleModeling.org の活動 (Activity)を軸に、以下の観点からご紹介しました。

SimpleModeling開発メソッド

SimpleModeling開発メソッドは、オブジェクト関数モデルを核とする開発体系です。UML (Unified Modeling Language)のメタモデルをベースに、Entity / Value / Event / Rule / Service といった概念をより明確に整理し、文芸モデル (literate model)によるクラウド・アプリケーション構築をターゲットに再構築しています。

このメソッドは、モデリングと生成の間をつなぐ抽象層として機能し、文芸モデル駆動開発の土台となります。

文芸モデル駆動開発

文芸モデル駆動開発は、Literate Programmingの理念をモデリングに拡張した手法です。開発者は自然言語と構造記述を統合した文芸モデルを作成し、それをCML (Cozy Modeling Language)で形式化します。

このモデルはCozyモデルコンパイラを通じて、Scalaなどの実装コード、ドキュメント、API定義に自動変換されます。

人間にとって読みやすく、AIにとっても解析可能なモデル記述をめざしています。

文芸モデル駆動開発とAI

文芸モデル駆動開発は、生成AIとの親和性がきわめて高い手法です。文芸モデルは人間が理解できる自然言語による説明と構造化データを一体化しており、AIが意味を抽出・理解・再構成できる知識単位になっています。

このため、AIがモデルの意図を解釈してコード生成・設計支援を行うだけでなく、モデル全体を知識ベースとして参照し、知識循環 (knowledge circulation)の一部として学習・内化することが可能になります。

このためにSimpleModelingではBoKと呼ばれる文芸モデルによる知識ベースの構築を行う技術を提供しています。

生成AIはこの文芸モデルを「入力可能な知識構造」として扱い、RAG (Retrieval-Augmented Generation (RAG, 検索強化生成)) によるKnowledge Activationを経て、文芸モデルを材料にした説明、設計提案、仕様変換などを行います。

この構造が、SimpleModelingが提唱するAI協調アーキテクチャの基盤です。

BoK

BoKは、文芸モデルを体系的に整理した知識体系です。SmartDox形式の文書群を解析して、モデル・概念・用語の関係を抽出し、HTML文書と同時にAIが検索・参照・内化できる構造化データ(JSON-LD / RDF)として生成します。

このBoKはAIにとっての「Retrieval Knowledge Base (検索知識基盤)」となり、Knowledge Activationを通じてAIの知識生成プロセス(Activation → Assimilation → Promotion)に供給されます。

人間が書いた文芸モデルが、AIが学ぶ知識体系へと変換される仕組みです。

知識駆動開発に向けて

AIの本格的活用を見据えると、従来のプログラミング主導の開発から、モデル主導・知識主導の開発へと移行していく必要があります。

その中核となるのが文芸モデルであり、それを媒介にAIが知識として読み取り、推論や生成に活かせる点が新しい価値です。

長期的には、文芸モデルを通して整理されたBoKがAIに内化され、実装知識(implementation knowledge)概念知識(conceptual knowledge)が融合した協調知識(collaborative knowledge)の形成へと発展していくでしょう。

この協調知識の上に構築される開発スタイルを、SimpleModelingでは知識駆動開発Knowledge-Driven Developmentと呼んでいます。

知識駆動開発はまだ実験段階ですが、その一里塚として文芸モデル駆動開発を確立し、AIとの協調を前提にした新しい開発基盤を探求していきます。

パネル・ディスカッション

第2部では第1部の内容を受けて「生成AI時代のモデリングとは」をテーマに、パネル・ディスカッションを行いました。モデレータの佐藤治夫さん、パネリストの高崎健太郎さん、そしてチャットで質問をお寄せいただいた皆さん、ありがとうございました。

ディスカッションでは、佐藤さんが本スライドの内容を整理した図を作成してくださり、その図をもとに議論が進みました。

特に印象に残ったのは、佐藤さんが今回の文芸モデル駆動開発とAIの体系を「バリューの抽出」という観点から捉えてくださった点です。

今回、スライド用にビジョンとゴールを整理しましたが、SimpleModeling.orgでは Overview セクションの下に次のページが草稿状態で準備されています。

  • vision.dox

  • mission.dox

  • goal.dox

  • values.dox

サイト立ち上げ当初よりもAIへのアプローチがより精緻になってきたこともあり、全体方針を整理しきれていない部分もありますが、できるだけ早い段階でこれらの情報を公開していきたいと考えています。

高崎さんからは、以下の2点の指摘が特に印象に残りました。

  • AI支援

  • エンジニアの活躍する場

「AI駆動」ではなく「AI支援」という視点が重要である、というご指摘はまさにその通りです。AIがプロンプト (Prompt)からプログラム全体を自動生成するのではなく、プログラムをコンポーネント (Component)として分割し、エンジニアが制御可能な単位で分割統治を行い、その過程でAIを支援的に活用するアプローチを目指しています。

この方式では、エンジニアが重要な役割を担いながらソフトウェア開発を制御していくため、「エンジニアの活躍する場」が新たに生まれていくことになります。

いずれにしても、AIによってソフトウェア開発の方法論や開発組織が大きく変革していくことは確実です。この変革の時代に、エンジニアとしてどのようなアプローチを取るべきかを考える一助となれば幸いです。

参照

用語集

活動 (Activity)

アクティビティスペース内で実行される具体的な行為またはタスク。アルファをより進んだ状態へ移行させるために行われ、通常はワークプロダクトの生成や改良を伴う。

開発メソッド (Development Method)

開発メソッドとは、ソフトウェアの構造と意味を定義するためのモデルとモデル変換から構成される概念的な枠組みです。 オブジェクト指向設計、ドメイン駆動設計(DDD)、モデル駆動開発(MDD)などが代表的な例です。 開発メソッドは、ソフトウェア開発の「何を」「どのように構造化して」作るかを定義する設計的基盤を提供します。

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

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

BoK (Body of Knowledge)

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

知識駆動開発 (Knowledge-Driven Development)

知識を中心に据え、AI支援とモデリングを統合して進化する開発パラダイム。

UML (Unified Modeling Language)

オブジェクト指向分析・設計のための統一モデリング言語。クラス図、シーケンス図、ユースケース図などを通じてシステム構造と動作を表現する。UPおよびCBDの基盤言語。

文芸モデル (literate model)

文芸モデル(Literate Model)は、モデル構造と自然言語による語り(構造化文書)を統合した「読めるモデル」です。 文芸的プログラミング(Literate Programming)の思想をモデリング領域に拡張し、 構造(モデル)+語り(構造化文書) を一体化することで、人間とAIの双方が理解・操作できる知識表現を実現します。 「Literate Modeling(文芸的モデリング)」という発想自体は、 これまでにも一部の研究者や開発者によって試みられてきました。 しかし、それらは主にドキュメント生成やコード理解の支援にとどまっており、 モデルと言語・語り・AI支援を統合した体系的なモデリング手法として確立されたものではありません。 文芸モデル(Literate Model)は、SimpleModelingがAI時代に向けて新たに体系化・提唱したモデリング概念です。 文芸的モデリングの思想を継承しつつ、 AI協調型の知識循環とモデル生成を可能にする知的モデリング基盤として再構成されています。 文芸モデルは、単なるモデル記述技法ではなく、 人間の思考過程や設計意図を語りとしてモデルに埋め込み、 AIがそれを解析・再構成して設計や生成を支援するための枠組みです。

CML (Cozy Modeling Language)

CMLは、Cozyモデルを記述するための文芸モデル記述言語です。 SimpleModelingにおける分析モデルの中核を担うDSL(ドメイン固有言語)として設計されています。 モデル要素とその関係性を自然言語に近い文体で記述できるよう工夫されており、AIによる支援や自動生成との高い親和性を備えています。 CMLで記述された文芸モデルは、設計モデル、プログラムコード、技術文書などに変換可能な中間表現として機能します。

知識循環 (knowledge circulation)

Knowledge Circulation(知識循環)は、AIと人間のあいだで知識が生成・内化・表現・昇格を繰り返し、再び活性化される循環的プロセスを指します。 この循環は、AIが出力した知識を人間が整理・体系化し、SmartDoxサイトやBoK(Body of Knowledge)に再統合することで形成されます。 結果として、BoK全体が進化し、AIの知識理解と生成能力が継続的に向上します。

検索強化生成 (RAG, Retrieval-Augmented Generation)

生成AIが内部(パラメトリック)知識だけでなく、外部の知識ソースを検索してから応答を生成する技術。 RAGはまずデータベースや知識グラフなどから関連情報を検索し、それを文脈として取り込み、より正確で最新の応答を生成する。

RDF

W3C により標準化された、情報を「主語–述語–目的語」の三つ組(トリプル)で表現するための知識記述モデル。

検索知識基盤 (Retrieval Knowledge Base)

検索知識基盤(Retrieval Knowledge Base, RKB)とは、RAG(検索強化生成)が利用できるように最適化された非パラメトリック知識(Non-parametric Knowledge)の構造化サブセットである。 SmartDox文書・用語集・セマンティックメタデータを索引化して保持し、生成AIが明示的知識を文脈として参照できるようにする。 RAGとの相互作用を通じて、外部明示知識をAI内部の中間知識(Assimilated Knowledge)へと同化させる橋渡しの役割を果たす。

プロンプト (Prompt)

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

コンポーネント (Component)

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

観測記録 (observation, オブザベーション)

Observationは、Phenomenon(現象)の中から記録に値すると判断されたものを保存した記録です。 観測記録はログ、モニタリング、監査、トラブルシューティングの基盤となります。