1
生成 AI とモデルベース開発
2025/07/25
田中 @view5 llc
第1回モデル指向開発技術研究会
2
本日のメニュー
• はじめに
• 事例(今でも出来ること)
• Gemini 先生とのやりとり(事例をネタにした考察)
• 最後に
3
はじめに
• 皆様も日々いろいろな場面で生成 AI を活用されていることと思います。
• 私の場合は、ふとしたことから「生成 AI がモデルベース開発にも使えるのでは」と思っ
たため「生成 AI はモデルベース開発の枠組みの中でどのような使い方ができるのか」と
いうことを追求する様になりました。今日はその入り口の話を中心にしたいと思います。
• 知人の書いた「まだ適用は難しい」という論文 * も読みましたが、いろいろ試して実際に
出来ることを目の前にすると「これは無視できない」と感じました。
• 内容的に、皆様と比べるとレベルが低いかもしれませんが、第1回研究会ということで、
事例と考察をご紹介します。
On the assessment of generative AI in modeling tasks:
an experience report with ChatGPT and UML
*
4
事例: UML
• UML の事例です( ©️長瀬さん)
• 業務フローとして右のアクティビティ図
を作成したとします。
• この PDF ファイルを生成 AI に渡し、
ユースケース図・ユースケース記述を作
成してもらいました。
5
事例: UML
6
事例: UML
• ## ユースケース記述 ( ユースケース記述形式 )
** システム名 :** オンライン注文システム
**1. 注文商品を選択する (UC01)**
* ** アクター :** 顧客
* ** 目的 :** 顧客が Web サイト上で注文する商品を決定する。
* ** 事前条件 :** 顧客は Web サイトにアクセスしている。
* ** 主要なシーケンス :**
1. 顧客は Web サイトにアクセスする。
2. 顧客は商品カタログを参照する (UC02) 。
3. 顧客は注文する商品を選択する。
* ** 事後条件 :** 顧客は注文する商品を決定した。
* ** 拡張シーケンス :**
* **3a.** 顧客が商品を検索する。
* システムは検索結果を表示する。
* ** 注記 :** このユースケースは、商品カタログを参照する UC02 と密接に関連している。
**2. 商品カタログを確認して選択する (UC02)**
* ** アクター :** 顧客
* ** 目的 :** 顧客が利用可能な商品カタログを閲覧し、商品情報を確認す
る。
* ** 事前条件 :** 顧客は Web サイトにアクセスしている。
* ** 主要なシーケンス :**
1. 顧客は Web サイトにアクセスする。
2. 顧客は商品カタログを表示する。
3. 顧客は商品情報を確認する。
* ** 事後条件 :** 顧客は商品カタログの内容を理解した。
* ** 拡張シーケンス :**
* **3a.** 顧客が特定のカテゴリの商品を表示する。
* **3b.** 顧客が商品の詳細情報を表示する。
以下省略
7
事例: UML
• 更に、ユースケース記述に基づき基本的なコード生成を見せてくれました(詳細は省略)
• Java ソースコード
• Java テストコード
• プラットフォームを変更しても同様に基本的なコードを生成してくれました(同上)
• Python 環境
• 各種フロントエンドフレームワーク( React 等)
• コード自体は参考程度のものかもしれませんが、開発者にとっての最初の一歩として参考
になります。
8
サンプル実装
https://tourmaline-cactus-240ef4.netlify.app/
UML の事例でとりあげたアク
ティビティ図を PDF 形式で
Bolt.new という生成 AI に渡
し、サンプル実装を依頼した
結果です。
*定型パターンのせいか、当方は
一切コードを書いていません。
このサイトは一週間程度で消滅すると思います
9
10
11
12
13
事例:
UML :まとめ
業務フロー(アクティビティ図)からユース
ケース図・ユースケース記述を生成し、更に
コード生成やテストケース・テストコード生成
も可能です(精度は別ですが)。
業務シナリオや要求仕様やこのようなシステム
を設計したいという文章(主にテキストですが、
Excel シートなども可能)を入力にする
と、 Class 図はじめ種々の UML 図を導き出せる
可能性があります。
業務フローがしっかりしていれば、サンプル実
装をしてくれる生成 AI もありますので、古い言
葉かもしれませんが “ Demo or Die” という意味
で利用できます。
14
事例: Xtext :シナリオを作成させる
• シナリオ
• タイトル : 診療記録へのアクセスと治療同意
場所 : 大規模病院内にある専門の腫瘍クリニック、スミス医師の診察
室。室内には机、椅子が 2 脚、コンピュータがあり、落ち着いた雰囲
気。
• 登場人物
• スミス医師 (Dr. Smith) — 乳がん専門医
• アレックス (Alex) — 最近乳がんと診断された患者
• 会話
• スミス医師 :
「おはようございます、アレックスさん。本日はお越しいただきあり
がとうございます。初期検査と画像結果に目を通しましたので、今後
の治療方針についてご相談したいと思います。」
• アレックス :
「おはようございます、スミス先生。少し緊張していますが、お話を
伺う準備はできています。」
…
• スミス医師 :
「不安に感じるのは当然です。安心して治療を受けていただくため
に、まずアレックスさんの過去の検査結果や医療歴を含む診
療記録全体へアクセスさせていただきたいのですが、ご同意
いただけますか?」
• アレックス :
「はい、もちろんです。それが大切なことは理解しています。」
…
• スミス医師 :
「治療を進めるには、今お話しした内容をまとめた同意書
に署名していただく必要があります。ごゆっくりお読みいた
だき、ご質問があれば何でもお聞きください。」
• アレックス :
「ありがとうございます、スミス先生。しっかり読んで確認しま
す。」(アレックスが同意書を読み、質問し、それに対して医師が
丁寧に回答。アレックスは治療プランに同意し署名。)
備考
[治療プラン] や [想定されるリスクの一覧] は患者個々の状況に応じ
て記入・説明する。
実務では、電子カルテシステムへのアクセス権限付与や、治療同意書の法
的要件に従った取り扱いが必要。
15
事例: Xtext :モデルとして記述させる
scenario BreastCancerTreatment {
setting "Dr. Smith's office, a specialized oncology clinic within a large hospital."
participants { Doctor DrSmith Patient Alex }
interactions {
DrSmith: "Good morning, Alex. Thank you for coming in today. I've reviewed your initial tests and scans."
Alex : "Good morning, Dr. Smith. I'm a bit nervous, but I'm ready to hear what you suggest."
DrSmith: "It's normal to be anxious. To tailor your treatment, do I have your permission to access your complete health record?"
Alex : "Yes, of course. I understand why that's important."
DrSmith: "Thank you. Your privacy is our top priority. Now, let me explain the treatment options."
DrSmith: "Considering your diagnosis, the most effective approach is surgery followed by chemotherapy and radiation therapy."
Alex : "What kind of outcomes can we expect from this treatment?"
DrSmith: "The goal is to remove the cancer and reduce recurrence, but there are risks we need to discuss."
DrSmith: "To proceed, please review and sign this consent form outlining everything we've discussed."
Alex : "Thank you, Dr. Smith. I'll read through the consent form carefully."
DrSmith: "Thank you, Alex. We'll schedule your treatment to begin as soon as possible."
}
consents {
consent request by DrSmith : "Access to complete health record"
consent grant by Alex : "Access to complete health record"
consent sign by Alex : "Treatment plan consent form"
}
treatmentPlan "Surgery + Chemotherapy + Radiation Therapy"
risks {
"Nausea"
"Hair loss"
"Infection"
"Fatigue"
}
}
16
事例: Xtext :文法を生成させる
grammar org.example.health.HealthScenario with org.eclipse.xtext.common.Terminals
generate healthScenario "http://www.example.org/healthScenario"
/* ルート要素 ───────────────────────────────── */
Scenario:
'scenario' name=ID '{'
'setting' setting=STRING
'participants' '{' participants+=Participant+ '}'
'interactions' '{' interactions+=Interaction+ '}'
('consents' '{' consents+=Consent+ '}')?
('treatmentPlan' plan=STRING)?
('risks' '{' risks+=Risk+ '}')?
'}';
/* 参加者 ────────────────────────────────────── */
Participant:
role=Role name=ID;
enum Role:
Doctor | Patient | Nurse | Staff;
逐語的なやり取り ─────────────────────────── */
Interaction:
speaker=[Participant] ':' content=STRING ;
/* 同意取得のイベント ───────────────────────── */
Consent:
'consent' action=ConsentAction 'by' speaker=[Participant] ':' description=STRING ;
enum ConsentAction:
request | grant | sign ;
/* リスク列挙 ───────────────────────────────── */
Risk:
description=STRING ;
17
裏話:本例 は下の論文検討段階で使用したもの
https://link.springer.com/article/10.1007/s10270-024-01243-4
18
事例:まとめ
UML の事例から
• UML 言語をかなりの程度理解しているように見える(パ
ターンマッチングかもしれないが)
• アクティビティ図からユースケース図へのモデル変換をそれ
なりにこなした
• ユースケース記述も作成した
• 実行プラットフォームに合わせたコード生成をしてみせた
(含:テストケース・テストコード)
Xtext の事例から
• 自然言語で書かれたシナリオを生成分析し、メタモデル
( Xtext 文法)をかなりのレベルで作成し、その文法に基づ
き、シナリオをテキスト型モデルとして表現した
以上より
• 実際に出来ることから、生成 AI はモデルベース開発と相性
が良さそうという印象を持つに至った。 しかし
• そこで、生成 AI 自身に質問してみることにした
Why?
Gemini 先生とのやりとり
• 「生成 AI はモデルベース開発と相性が良いので
は?」という疑問について、生成 AI 自身はどう
説明するのか試してみました。
• 生成 AI のなかでも Gemini とのやりとりを紹
介する理由は、その回答がこのスライドに適し
たものだと思ったためです。
• ChatGTP の o3 にも同じ質問を投げ、もう少し
本格的な回答も得ています(深く詳細になるの
でスライド向きではなかった、ということで
す)。
19
20
Gemini 先生とのやりとり: Q1 (Why?)
• 私はソフトウェアやシステムのモデリングの仕事をしています。 あなたは、モデリング
の専門家です。 これまで色々なモデル関連の質問を試しましたが、どうも生成 AI は、
抽象化、インスタンス化、メタモデリング、などが得意のように思えます。 これはどう
いう理由によるものでしょうか? 生成 AI システムの設計方針と関連するのでしょう
か?
21
Gemini 先生とのやりとり: A1
• はい、そのご認識は非常に的確です。生成 AI 、特に大規模言語モデル( LLM )が抽象化、イ
ンスタンス化、メタモデリングといった概念を得意とするのは、偶然ではなく、その設計思想
と学習メカニズムに深く根差しています。
• ソフトウェアやシステムのモデリング専門家でいらっしゃるご質問者様に向けて、その理由を
解説します。
• 結論:なぜ得意なのか?
• 一言で言えば、生成 AI の根幹技術が「データからパターンと関係性を抽出し、それを基に
新たなデータを生成する」ことだからです。これは、モデリングにおける抽象化、インスタ
ンス化、メタモデリングのプロセスと本質的に同じ構造をしています。
• AI は人間のように「理解」しているわけではありません。膨大なテキストやコードのデータの中にあ
る、単語や概念間の統計的な関係性(パターン)を、高次元のベクトル空間で表現・学習しています。
この能力が、モデリングの各プロセスと非常に相性が良いのです。
22
Gemini 先生とのやりとり: A1
• 抽象化 (Abstraction) 🧠
• モデリングにおける抽象化は、個別の事象から共通の性質を抜き出して、より一般的な概念(クラ
スやコンポーネントなど)を定義する行為です。
• AI の仕組み
• 生成 AI は、例えば「犬」「猫」「鳥」という単語が「ペット」「飼う」「鳴く」といった文脈で頻
繁に登場することを学習します。これにより、 AI の内部では「犬」「猫」「鳥」が「動物」という、
より抽象的な概念の近くに配置されます。 AI は、 class User {...} 、 class Product {...} 、 class
Order {...} のようなコードを無数に学習することで、「 class [ 名前 ] { [ 属性 ] } 」という抽象的な
構文パターンそのものを捉えます。
• つまり
• AI にとっての抽象化とは、膨大な具体例から共通する統計的パターンを抽出するプロセス
であり、まさにその学習方法そのものなのです。
23
Gemini 先生とのやりとり: A1
• インスタンス化 (Instantiation) 📝
• インスタンス化は、抽象的なモデル(クラスなど)から具体的な実例(オブジェクト)を生成する行為です。
• AI の仕組み
• AI は抽象的なパターンを学習済みのため、「オンライン書店システムのクラス図を作って」と指
示されると、学習した「クラス図」という抽象パターンと、「オンライン書店」という文脈で頻
出する「本」「顧客」「注文」といった概念を結びつけます。そして、それらを組み合わせ、最
も " ありえそうな " (確率的に尤もらしい)具体的なクラス図をインスタンスとして生成します。
• つまり
• AI にとってのインスタンス化とは、学習済みの抽象パターンに、与えられたコンテキス
ト(指示)を当てはめて、具体的な出力を生成することであり、これもまた得意中の得意
なタスクです。
24
Gemini 先生とのやりとり: A1
• メタモデリング (Metamodeling)
️ 🏛️
• メタモデリングは、モデリング言語そのものを定義する、つまり「モデルのモデル」を作ることです。例えば、
UML のメタモデルは、「クラスとは何か」「属性とは何か」「関連とは何か」といったルールを定義します。
• AI の仕組み
• これは非常に興味深い点です。生成 AI は、 UML で書かれた図の説明、 PlantUML のコード、 Mermaid の
コード、さらには UML の仕様書に関するテキストデータまで学習しています。これにより、モデリング言語
の「文法」や「構成要素間のルール」自体をパターンとして学習します。例えば、「クラスは属性と操作を持
つ」「関連は 2 つのクラスをつなぐ」といった UML メタモデルのルールは、 AI にとっては非常に強力で一貫
したパターンとして認識されます。
• つまり
• AI は、モデルの記述ルール(メタモデル)そのものを、データセット全体を貫く普遍的なパターンとし
て抽出しているのです。だからこそ、特定のモデリング言語(例 : UML, SysML, ArchiMate )のルール
に沿ったモデルを生成したり、モデル間の変換を提案したりすることが可能なのです。
25
Gemini 先生とのやりとり: A1
• 生成 AI の設計思想との関連
• ご指摘の通り、これは生成 AI の設計思想と密接に関連しています。
• トランスフォーマー・アーキテクチャ (Transformer Architecture):
• 現在の生成 AI の主流であるトランスフォーマーモデルは、自己注意機構 (Self-Attention
Mechanism) を持っています。これにより、文章中のある単語が、他のどの単語と強く関連し
ているかを効率的に学習できます。この「関係性に着目する」という性質が、エンティティ間
の関連や依存関係を記述するモデリングタスクに極めて有効に働きます。
• 確率的・生成的な性質 (Probabilistic & Generative Nature):
• AI は決定論的なプログラムではなく、次にくる単語やトークンを確率的に予測して文章を生成します。こ
の「最もそれらしいものを生成する」という性質が、「この要件なら、こういうモデルが " ありえそ
う " だ」という、人間の設計者が行う思考プロセスと似た結果を生み出します。
26
Gemini 先生とのやりとり: A1
• まとめ
• 生成 AI がモデリングの抽象的な概念を得意に見せるのは、 AI の「膨大なデータから統
計的なパターンと関係性を見つけ出し、それに基づいて新たなものを生成す
る」という基本原理が、モデリングという行為の「現実世界を抽象化し、ルー
ル(メタモデル)に従って構造を記述し、具体的な設計(インスタンス)に落
とし込む」というプロセスと、驚くほど親和性が高いためです。
• それは意図的に「メタモデリングが得意な AI 」として設計されたわけではなく、言語という
究極の抽象システムを扱えるようにした結果、その能力がモデリングという分野で応用できる
ようになった、という ** 創発的な特性( Emergent Property ) ** と捉えるのが最も近いで
しょう。
27
Gemini 先生とのやりとり: Q2
• そうだとすると、生成 AI は、モデルベースソフトウェア開発やモデルベースソフトウェ
アエンジニアリングの世界で有用な機能を提供できるはずです。どの段階でどういう機能
が提供できるのか、整理して教えて下さい。
28
Gemini 先生とのやりとり: A2
• はい、おっしゃる通り、生成 AI はモデルベースソフトウェア開発( MBSD )やモデル
ベースシステムズエンジニアリング( MBSE )のあらゆる段階で強力な支援機能を提供で
きます。
• それは単なる夢物語ではなく、既に行われ始めている実践です。開発ライフサイクルの各
段階で、生成 AI がどのように貢献できるかを整理しました。
29
Gemini 先生とのやりとり: A2
• MBSD/MBSE の各フェーズと生成 AI の役割
• 要求分析・定義フェーズ 🧐
• このフェーズの目的は、顧客の要求を正確に把握し、曖昧さをなくすことです。生成 AI は自然言語処理能
力を活かして、人間とモデルの世界を繋ぐ通訳として機能します。
• 自然言語要求の解析とモデル化 :
• 顧客の要求仕様書(自然言語の文章)を読み込ませ、「この要求は曖昧です」「この 2 つの要求は矛
盾している可能性があります」といった曖昧性・矛盾点の指摘をさせることができます。さらに、その
内容から SysML の要求図や UML のユースケース図の初期モデル(テキスト記述形式の
PlantUML など)を自動生成します。
• 要求の精緻化 :
• 「ログイン機能について、考えられる異常系のシナリオをリストアップして」といった指示で、考慮漏れ
になりがちな要求を網羅的に洗い出す手助けをします。
30
Gemini 先生とのやりとり: A2
• 設計(モデリング)フェーズ ✍️
• ここが最も生成 AI の能力が発揮される段階です。設計者の「思考パートナー」として活躍します。
• モデル生成・リファインメント :
• 「 EC サイトの基本アーキテクチャをコンポーネント図で示して」といった大まかな指示から、たたき台と
なるモデルを瞬時に生成します。また、既存のモデルに対して「このクラスに必要そうな属性とメソッドを提案し
て」「このシーケンス図を完成させて」といった対話的な指示で、モデルを詳細化(リファインメント)できます。
• モデル変換と複数ビューの同期 :
• 例えば、クラス図の構造を基に「このクラス図に対応する API のエンドポイント一覧を OpenAPI 形式で生成して」と
いった、異なるビュー(表現)への変換が可能です。これにより、各モデル間の整合性を保ちやすくなりま
す。
• デザインパターンの適用 :
• 「この部分に Observer パターンを適用したい」と指示すれば、関連するクラスやインターフェースのモデル構造をパ
ターンに沿って自動で生成・修正してくれます。
31
Gemini 先生とのやりとり: A2
• 実装(コード生成)フェーズ 💻
• モデルからコードを生成する MBSD の中核機能ですが、生成 AI はこれをさらに強力にします。
• 高品質なコード生成 :
• 従来のコードジェネレータが画一的なコードを生成しがちだったのに対し、生成 AI は「 Python の FastAPI
フレームワークに最適化されたコードを生成して」といった、特定の言語やフレームワークの " お作法
" に沿った、より実践的なコードを生成できます。
• " 糊付け " コードの生成 :
• モデル化されたコンポーネント同士を接続するためのインターフェース実装やデータ変換といった「糊付け
( Glue )」コードの生成も得意です。
• 構成ファイルの生成 :
• モデルの構成情報から、 Dockerfile や docker-compose.yml 、 Kubernetes のマニフェストファイルといっ
たデプロイ関連の構成ファイルを自動生成することも可能です。
32
Gemini 先生とのやりとり: A2
• 検証・妥当性確認( V&V )フェーズ ✅
• テスト工程の自動化と効率化に大きく貢献します。
• テストケース生成 :
• 要求モデルや振る舞いモデル(状態マシン図、アクティビティ図)から、正常系・異常
系のテストシナリオやテスト条件を網羅的に生成します。 BDD (振る舞い駆動開発)で使
われる Gherkin 形式での出力も可能です。
• テストコード生成 :
• 生成されたテストケースを基に、 JUnit や pytest といった具体的なテストフレームワーク用
のテストコードを自動生成します。また、モデルのインターフェース定義からテスト用の
モックやスタブのコードを生成することもできます。
33
Gemini 先生とのやりとり: A2
• 5. 保守・進化フェーズ
️ 🛠️
• 既存システムの理解や変更作業を支援します。
• リバースモデリング :
• レガシーシステムのソースコードを解析させ、その構造や振る舞いを表すモデル(例 : ク
ラス図やシーケンス図)を生成させることができます。これにより、ドキュメントのないシステ
ムの理解が格段に容易になります。
• 影響分析 :
• 「このクラスの仕様を変更した場合、影響を受ける可能性のある他のコンポーネントやテ
ストケースをリストアップして」といった指示で、変更に伴う影響範囲の特定を支援します。
• ドキュメント生成 :
• モデルの内容を解釈し、人間が読んで分かりやすい形式の設計ドキュメントを自動生成します。モデルが更新
されれば、ドキュメントも追随して更新できるため、ドキュメントの陳腐化を防ぎます。
34
Gemini 先生とのやりとり: A2
• このように、生成 AI は MBSD/MBSE の単なるツールではなく、開発プロセス全体に
知的な自動化をもたらし、設計者を反復的な作業から解放する「共同作業
者」「アシスタント」としての役割を担うことができます。これにより、開
発者はより創造的で本質的な設計活動に集中できるようになるでしょう。
35
Gemini 先生とのやりとり: Q3
• MBSD/MBSE には多くの手法がありますが、その中でドメイン特化型言語を用いるものが
あります。生成 AI と同じように、テキストを中心に扱うテキスト型 DSL というものがあ
り、その代表的なものが Xtext です。生成 AI を Xtext を用いたモデルベース開発の中で活
かそうとすると、どの段階でどういうことが出来ますか?
By The Eclipse Foundation -
http://www.eclipse.org/Xtext, Public Domain,
https://en.wikipedia.org/w/index.php?
curid=36462492
36
Gemini 先生とのやりとり: A3
• はい、非常に鋭いご指摘です。テキストベースの DSL を扱う Xtext と生成 AI は、テキス
トを中心とした親和性が極めて高く、両者を組み合わせることでモデルベース開発を劇的
に進化させられます。
• Xtext がもたらす ** 「形式的で厳密な構造(骨格)」と、生成 AI がもたらす「柔軟で文
脈に応じた意味の解釈(肉付け)」 ** は、理想的な補完関係にあります。
• Xtext を用いた開発プロセスにおいて、生成 AI が活躍できる段階と具体例を整理します。
37
Gemini 先生とのやりとり: A3
• DSL の設計・定義フェーズ 🧠
• Xtext 開発の最初のステップは、 DSL の文法( Grammar )を .xtext ファイルに定義することで
す。
• 文法生成の支援 :
• 作りたい DSL の具体例(こんなテキストを書きたい)をいくつか AI に提示し、「この構文を実現
するための Xtext の文法を生成して」と指示します。完璧ではないにせよ、文法定義のたたき台
を素早く得ることができ、 DSL 開発の初期コストを大幅に下げられます。
私の経験( ChatGTP ):
シナリオを示し「これを Xtext モデルとして表現して」と依
頼すると、それなりのテキスト型モデルが提示される。その後
「このモデルの Xtext 文法を提示して」と依頼すると、文法規
定も提示された。
38
Gemini 先生とのやりとり: A3
• モデル記述フェーズ ✍️
• ここが最も生成 AI の強みが活きる段階です。開発者は DSL でモデルを記述しますが、 AI はその強力なアシスタントに
なります。
• 自然言語からのモデル生成(最重要) :
• これが最も革新的な使い方です。設計者が「スロットル開度とエンジン回転数からトルクを計算するコンポーネント」
と自然言語で書くと、 AI がそれを解釈して、定義された DSL の構文に沿ったテキスト(モデル)を生成します。これに
より、 DSL の正確な構文を完全に覚えなくても、高速にモデリングを進められます。
• 対話的なモデルの精緻化(リファインメント) :
• 既存の DSL モデルの一部を示し、「この状態マシンに、タイムアウト処理を追加して」といった指示を出すと、 AI が差
分を理解し、追記・修正すべき DSL コードを提案します。これは、 Xtext 標準のコンテンツアシスト(入力補完)を遥
かに超える能力です。
• 再利用可能なパターンの適用 :
• 「この部分に、弊社の標準的なエラー処理パターンを適用して」のように、よく使われる設計パターンや定型的な記述
を AI に指示するだけで、 DSL コードとして展開させることができます。
39
Gemini 先生とのやりとり: A3
• モデル検証フェーズ ✅
• Xtext は文法エラーや型チェックなどの形式的な検証( Validation )を得意とします。 AI は、そ
れとは異なる「定性的」な検証を追加します。
• ベストプラクティスや設計品質のレビュー :
• 形式的には正しいモデルに対し、「この設計は複雑すぎないか?」「弊社の設計ガイドラインに
沿っているか?」といった、ルール化しにくい設計品質や保守性に関する観点からのフィード
バックを生成させます。これは、熟練設計者によるレビューを模擬するものです。
40
Gemini 先生とのやりとり: A3
• コード / 成果物生成フェーズ 🚀
• Xtext のジェネレータ(通常は Xtend で記述)はモデルからコードを生成します。 AI はこの生成
プロセスをより柔軟で強力なものにします。
• ジェネレータテンプレートの高度化 :
• 従来のテンプレートエンジンでは困難だった、文脈に応じた自然なコメントの自動生成や、特定
のライブラリの慣習に合わせたイディオマティックなコードの生成が可能になります。 Xtend の
ジェネレータから AI の API を呼び出すことで、これを実現します。
• 多様な成果物の生成 :
• ソースコードだけでなく、そのモデルを解説する Markdown 形式のドキュメント、構成を視覚化
するための PlantUML や Mermaid のコードなど、多様な成果物をオンデマンドで生成させること
ができます。
41
Gemini 先生とのやりとり: A3
• 結論として、 Xtext を用いた開発において、生成 AI は「人間(自然言語)と厳密な DSL
モデルとの間の翻訳者・対話者」として振る舞います。 Xtext でシステムの「不変のルー
ル」を固めつつ、その上で AI の柔軟性を活用することで、モデルベース開発の生産性と
品質を飛躍的に向上させることが可能です。
• また、一部の拡張機能では、機能するのに Gemini アプリ アクティビティが必要です。
これは、 Gemini アプリ アクティビティで有効にできます。
42
Gemini 先生とのやりとり:まとめ
• これら回答に、結構納得できる部分があったのではないでしょうか。
• 納得できるならモデルベース開発に生成 AI を活用してみましょう。
• また、この Q&A を参考に、皆様の状況に応じた Q&A を試みたり、 Answer にある内容で使えそ
うなところを利用したり、更に深めたりして頂ければ、と思います。
• なお:
• 同じ質問を ChatGTP/Claude/Gemini/Perplexity 等に投げかけた結果、この Gemini 2.5 Pro の回答
が簡潔でポイントをついていると思い、このスライドに取り上げました。皆様が普段使われている生
成 AI が Gemini 以外のものであれば、是非同じ質問を投げかけて結果を吟味してください。
• Deep Research 機能を使って調査レポートを作成できたりします。多面的に調査してくれますが、
長文になり、ポイントが良く分からないこともあります。一度スライドの中に用意しましたが最終的
にドロップすることにしました。
43
最後に
• この集まり(研究会)をどんなものにしたいのか(目的、 open/closed etc. )、初回の本日
( extension の時間帯も含め)話し合っておくのが良いかと思います。
• 生成 AI の使い方は色々ありますが
• 能力の高い LLM に適切な質問を投げかけるのが一つの有効な使い方かと思います。
• レビュー能力が高いのは知られていますので、人が何か作業をした後に必ず生成 AI にレビューして貰う、とい
うのも一つの有効な使い方かと思います。
• ネットアクセスによる情報流出が気になる場合には(機能的な制限がありますが)ローカル LLM という選択肢
もあります。
• なお、 100% 実現できなければ 0% と同じ、という態度をとる方がいますが、テキストから始めてある程度の
成果物を得られるのであれば、” jump-start” ではないでしょうか。
• 生成 AI 分野の技術進展速度は、 Java が登場してきた頃と比べても一桁早く感じます。
• ある意味「当分ネタは尽きない」かもしれませんが、ハルシネーションや誤った情報の拡散もあるので、地に
足のついた議論になるような取り組みが必要だと思います。
Google NotebookLM にこのページのデータを渡し会話形式で約 5 分の音声データにして貰いました

生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。

  • 1.
    1 生成 AI とモデルベース開発 2025/07/25 田中@view5 llc 第1回モデル指向開発技術研究会
  • 2.
    2 本日のメニュー • はじめに • 事例(今でも出来ること) •Gemini 先生とのやりとり(事例をネタにした考察) • 最後に
  • 3.
    3 はじめに • 皆様も日々いろいろな場面で生成 AIを活用されていることと思います。 • 私の場合は、ふとしたことから「生成 AI がモデルベース開発にも使えるのでは」と思っ たため「生成 AI はモデルベース開発の枠組みの中でどのような使い方ができるのか」と いうことを追求する様になりました。今日はその入り口の話を中心にしたいと思います。 • 知人の書いた「まだ適用は難しい」という論文 * も読みましたが、いろいろ試して実際に 出来ることを目の前にすると「これは無視できない」と感じました。 • 内容的に、皆様と比べるとレベルが低いかもしれませんが、第1回研究会ということで、 事例と考察をご紹介します。 On the assessment of generative AI in modeling tasks: an experience report with ChatGPT and UML *
  • 4.
    4 事例: UML • UMLの事例です( ©️長瀬さん) • 業務フローとして右のアクティビティ図 を作成したとします。 • この PDF ファイルを生成 AI に渡し、 ユースケース図・ユースケース記述を作 成してもらいました。
  • 5.
  • 6.
    6 事例: UML • ##ユースケース記述 ( ユースケース記述形式 ) ** システム名 :** オンライン注文システム **1. 注文商品を選択する (UC01)** * ** アクター :** 顧客 * ** 目的 :** 顧客が Web サイト上で注文する商品を決定する。 * ** 事前条件 :** 顧客は Web サイトにアクセスしている。 * ** 主要なシーケンス :** 1. 顧客は Web サイトにアクセスする。 2. 顧客は商品カタログを参照する (UC02) 。 3. 顧客は注文する商品を選択する。 * ** 事後条件 :** 顧客は注文する商品を決定した。 * ** 拡張シーケンス :** * **3a.** 顧客が商品を検索する。 * システムは検索結果を表示する。 * ** 注記 :** このユースケースは、商品カタログを参照する UC02 と密接に関連している。 **2. 商品カタログを確認して選択する (UC02)** * ** アクター :** 顧客 * ** 目的 :** 顧客が利用可能な商品カタログを閲覧し、商品情報を確認す る。 * ** 事前条件 :** 顧客は Web サイトにアクセスしている。 * ** 主要なシーケンス :** 1. 顧客は Web サイトにアクセスする。 2. 顧客は商品カタログを表示する。 3. 顧客は商品情報を確認する。 * ** 事後条件 :** 顧客は商品カタログの内容を理解した。 * ** 拡張シーケンス :** * **3a.** 顧客が特定のカテゴリの商品を表示する。 * **3b.** 顧客が商品の詳細情報を表示する。 以下省略
  • 7.
    7 事例: UML • 更に、ユースケース記述に基づき基本的なコード生成を見せてくれました(詳細は省略) •Java ソースコード • Java テストコード • プラットフォームを変更しても同様に基本的なコードを生成してくれました(同上) • Python 環境 • 各種フロントエンドフレームワーク( React 等) • コード自体は参考程度のものかもしれませんが、開発者にとっての最初の一歩として参考 になります。
  • 8.
    8 サンプル実装 https://tourmaline-cactus-240ef4.netlify.app/ UML の事例でとりあげたアク ティビティ図を PDF形式で Bolt.new という生成 AI に渡 し、サンプル実装を依頼した 結果です。 *定型パターンのせいか、当方は 一切コードを書いていません。 このサイトは一週間程度で消滅すると思います
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
    14 事例: Xtext :シナリオを作成させる •シナリオ • タイトル : 診療記録へのアクセスと治療同意 場所 : 大規模病院内にある専門の腫瘍クリニック、スミス医師の診察 室。室内には机、椅子が 2 脚、コンピュータがあり、落ち着いた雰囲 気。 • 登場人物 • スミス医師 (Dr. Smith) — 乳がん専門医 • アレックス (Alex) — 最近乳がんと診断された患者 • 会話 • スミス医師 : 「おはようございます、アレックスさん。本日はお越しいただきあり がとうございます。初期検査と画像結果に目を通しましたので、今後 の治療方針についてご相談したいと思います。」 • アレックス : 「おはようございます、スミス先生。少し緊張していますが、お話を 伺う準備はできています。」 … • スミス医師 : 「不安に感じるのは当然です。安心して治療を受けていただくため に、まずアレックスさんの過去の検査結果や医療歴を含む診 療記録全体へアクセスさせていただきたいのですが、ご同意 いただけますか?」 • アレックス : 「はい、もちろんです。それが大切なことは理解しています。」 … • スミス医師 : 「治療を進めるには、今お話しした内容をまとめた同意書 に署名していただく必要があります。ごゆっくりお読みいた だき、ご質問があれば何でもお聞きください。」 • アレックス : 「ありがとうございます、スミス先生。しっかり読んで確認しま す。」(アレックスが同意書を読み、質問し、それに対して医師が 丁寧に回答。アレックスは治療プランに同意し署名。) 備考 [治療プラン] や [想定されるリスクの一覧] は患者個々の状況に応じ て記入・説明する。 実務では、電子カルテシステムへのアクセス権限付与や、治療同意書の法 的要件に従った取り扱いが必要。
  • 15.
    15 事例: Xtext :モデルとして記述させる scenarioBreastCancerTreatment { setting "Dr. Smith's office, a specialized oncology clinic within a large hospital." participants { Doctor DrSmith Patient Alex } interactions { DrSmith: "Good morning, Alex. Thank you for coming in today. I've reviewed your initial tests and scans." Alex : "Good morning, Dr. Smith. I'm a bit nervous, but I'm ready to hear what you suggest." DrSmith: "It's normal to be anxious. To tailor your treatment, do I have your permission to access your complete health record?" Alex : "Yes, of course. I understand why that's important." DrSmith: "Thank you. Your privacy is our top priority. Now, let me explain the treatment options." DrSmith: "Considering your diagnosis, the most effective approach is surgery followed by chemotherapy and radiation therapy." Alex : "What kind of outcomes can we expect from this treatment?" DrSmith: "The goal is to remove the cancer and reduce recurrence, but there are risks we need to discuss." DrSmith: "To proceed, please review and sign this consent form outlining everything we've discussed." Alex : "Thank you, Dr. Smith. I'll read through the consent form carefully." DrSmith: "Thank you, Alex. We'll schedule your treatment to begin as soon as possible." } consents { consent request by DrSmith : "Access to complete health record" consent grant by Alex : "Access to complete health record" consent sign by Alex : "Treatment plan consent form" } treatmentPlan "Surgery + Chemotherapy + Radiation Therapy" risks { "Nausea" "Hair loss" "Infection" "Fatigue" } }
  • 16.
    16 事例: Xtext :文法を生成させる grammarorg.example.health.HealthScenario with org.eclipse.xtext.common.Terminals generate healthScenario "http://www.example.org/healthScenario" /* ルート要素 ───────────────────────────────── */ Scenario: 'scenario' name=ID '{' 'setting' setting=STRING 'participants' '{' participants+=Participant+ '}' 'interactions' '{' interactions+=Interaction+ '}' ('consents' '{' consents+=Consent+ '}')? ('treatmentPlan' plan=STRING)? ('risks' '{' risks+=Risk+ '}')? '}'; /* 参加者 ────────────────────────────────────── */ Participant: role=Role name=ID; enum Role: Doctor | Patient | Nurse | Staff; 逐語的なやり取り ─────────────────────────── */ Interaction: speaker=[Participant] ':' content=STRING ; /* 同意取得のイベント ───────────────────────── */ Consent: 'consent' action=ConsentAction 'by' speaker=[Participant] ':' description=STRING ; enum ConsentAction: request | grant | sign ; /* リスク列挙 ───────────────────────────────── */ Risk: description=STRING ;
  • 17.
  • 18.
    18 事例:まとめ UML の事例から • UML言語をかなりの程度理解しているように見える(パ ターンマッチングかもしれないが) • アクティビティ図からユースケース図へのモデル変換をそれ なりにこなした • ユースケース記述も作成した • 実行プラットフォームに合わせたコード生成をしてみせた (含:テストケース・テストコード) Xtext の事例から • 自然言語で書かれたシナリオを生成分析し、メタモデル ( Xtext 文法)をかなりのレベルで作成し、その文法に基づ き、シナリオをテキスト型モデルとして表現した 以上より • 実際に出来ることから、生成 AI はモデルベース開発と相性 が良さそうという印象を持つに至った。 しかし • そこで、生成 AI 自身に質問してみることにした Why?
  • 19.
    Gemini 先生とのやりとり • 「生成AI はモデルベース開発と相性が良いので は?」という疑問について、生成 AI 自身はどう 説明するのか試してみました。 • 生成 AI のなかでも Gemini とのやりとりを紹 介する理由は、その回答がこのスライドに適し たものだと思ったためです。 • ChatGTP の o3 にも同じ質問を投げ、もう少し 本格的な回答も得ています(深く詳細になるの でスライド向きではなかった、ということで す)。 19
  • 20.
    20 Gemini 先生とのやりとり: Q1(Why?) • 私はソフトウェアやシステムのモデリングの仕事をしています。 あなたは、モデリング の専門家です。 これまで色々なモデル関連の質問を試しましたが、どうも生成 AI は、 抽象化、インスタンス化、メタモデリング、などが得意のように思えます。 これはどう いう理由によるものでしょうか? 生成 AI システムの設計方針と関連するのでしょう か?
  • 21.
    21 Gemini 先生とのやりとり: A1 •はい、そのご認識は非常に的確です。生成 AI 、特に大規模言語モデル( LLM )が抽象化、イ ンスタンス化、メタモデリングといった概念を得意とするのは、偶然ではなく、その設計思想 と学習メカニズムに深く根差しています。 • ソフトウェアやシステムのモデリング専門家でいらっしゃるご質問者様に向けて、その理由を 解説します。 • 結論:なぜ得意なのか? • 一言で言えば、生成 AI の根幹技術が「データからパターンと関係性を抽出し、それを基に 新たなデータを生成する」ことだからです。これは、モデリングにおける抽象化、インスタ ンス化、メタモデリングのプロセスと本質的に同じ構造をしています。 • AI は人間のように「理解」しているわけではありません。膨大なテキストやコードのデータの中にあ る、単語や概念間の統計的な関係性(パターン)を、高次元のベクトル空間で表現・学習しています。 この能力が、モデリングの各プロセスと非常に相性が良いのです。
  • 22.
    22 Gemini 先生とのやりとり: A1 •抽象化 (Abstraction) 🧠 • モデリングにおける抽象化は、個別の事象から共通の性質を抜き出して、より一般的な概念(クラ スやコンポーネントなど)を定義する行為です。 • AI の仕組み • 生成 AI は、例えば「犬」「猫」「鳥」という単語が「ペット」「飼う」「鳴く」といった文脈で頻 繁に登場することを学習します。これにより、 AI の内部では「犬」「猫」「鳥」が「動物」という、 より抽象的な概念の近くに配置されます。 AI は、 class User {...} 、 class Product {...} 、 class Order {...} のようなコードを無数に学習することで、「 class [ 名前 ] { [ 属性 ] } 」という抽象的な 構文パターンそのものを捉えます。 • つまり • AI にとっての抽象化とは、膨大な具体例から共通する統計的パターンを抽出するプロセス であり、まさにその学習方法そのものなのです。
  • 23.
    23 Gemini 先生とのやりとり: A1 •インスタンス化 (Instantiation) 📝 • インスタンス化は、抽象的なモデル(クラスなど)から具体的な実例(オブジェクト)を生成する行為です。 • AI の仕組み • AI は抽象的なパターンを学習済みのため、「オンライン書店システムのクラス図を作って」と指 示されると、学習した「クラス図」という抽象パターンと、「オンライン書店」という文脈で頻 出する「本」「顧客」「注文」といった概念を結びつけます。そして、それらを組み合わせ、最 も " ありえそうな " (確率的に尤もらしい)具体的なクラス図をインスタンスとして生成します。 • つまり • AI にとってのインスタンス化とは、学習済みの抽象パターンに、与えられたコンテキス ト(指示)を当てはめて、具体的な出力を生成することであり、これもまた得意中の得意 なタスクです。
  • 24.
    24 Gemini 先生とのやりとり: A1 •メタモデリング (Metamodeling) ️ 🏛️ • メタモデリングは、モデリング言語そのものを定義する、つまり「モデルのモデル」を作ることです。例えば、 UML のメタモデルは、「クラスとは何か」「属性とは何か」「関連とは何か」といったルールを定義します。 • AI の仕組み • これは非常に興味深い点です。生成 AI は、 UML で書かれた図の説明、 PlantUML のコード、 Mermaid の コード、さらには UML の仕様書に関するテキストデータまで学習しています。これにより、モデリング言語 の「文法」や「構成要素間のルール」自体をパターンとして学習します。例えば、「クラスは属性と操作を持 つ」「関連は 2 つのクラスをつなぐ」といった UML メタモデルのルールは、 AI にとっては非常に強力で一貫 したパターンとして認識されます。 • つまり • AI は、モデルの記述ルール(メタモデル)そのものを、データセット全体を貫く普遍的なパターンとし て抽出しているのです。だからこそ、特定のモデリング言語(例 : UML, SysML, ArchiMate )のルール に沿ったモデルを生成したり、モデル間の変換を提案したりすることが可能なのです。
  • 25.
    25 Gemini 先生とのやりとり: A1 •生成 AI の設計思想との関連 • ご指摘の通り、これは生成 AI の設計思想と密接に関連しています。 • トランスフォーマー・アーキテクチャ (Transformer Architecture): • 現在の生成 AI の主流であるトランスフォーマーモデルは、自己注意機構 (Self-Attention Mechanism) を持っています。これにより、文章中のある単語が、他のどの単語と強く関連し ているかを効率的に学習できます。この「関係性に着目する」という性質が、エンティティ間 の関連や依存関係を記述するモデリングタスクに極めて有効に働きます。 • 確率的・生成的な性質 (Probabilistic & Generative Nature): • AI は決定論的なプログラムではなく、次にくる単語やトークンを確率的に予測して文章を生成します。こ の「最もそれらしいものを生成する」という性質が、「この要件なら、こういうモデルが " ありえそ う " だ」という、人間の設計者が行う思考プロセスと似た結果を生み出します。
  • 26.
    26 Gemini 先生とのやりとり: A1 •まとめ • 生成 AI がモデリングの抽象的な概念を得意に見せるのは、 AI の「膨大なデータから統 計的なパターンと関係性を見つけ出し、それに基づいて新たなものを生成す る」という基本原理が、モデリングという行為の「現実世界を抽象化し、ルー ル(メタモデル)に従って構造を記述し、具体的な設計(インスタンス)に落 とし込む」というプロセスと、驚くほど親和性が高いためです。 • それは意図的に「メタモデリングが得意な AI 」として設計されたわけではなく、言語という 究極の抽象システムを扱えるようにした結果、その能力がモデリングという分野で応用できる ようになった、という ** 創発的な特性( Emergent Property ) ** と捉えるのが最も近いで しょう。
  • 27.
    27 Gemini 先生とのやりとり: Q2 •そうだとすると、生成 AI は、モデルベースソフトウェア開発やモデルベースソフトウェ アエンジニアリングの世界で有用な機能を提供できるはずです。どの段階でどういう機能 が提供できるのか、整理して教えて下さい。
  • 28.
    28 Gemini 先生とのやりとり: A2 •はい、おっしゃる通り、生成 AI はモデルベースソフトウェア開発( MBSD )やモデル ベースシステムズエンジニアリング( MBSE )のあらゆる段階で強力な支援機能を提供で きます。 • それは単なる夢物語ではなく、既に行われ始めている実践です。開発ライフサイクルの各 段階で、生成 AI がどのように貢献できるかを整理しました。
  • 29.
    29 Gemini 先生とのやりとり: A2 •MBSD/MBSE の各フェーズと生成 AI の役割 • 要求分析・定義フェーズ 🧐 • このフェーズの目的は、顧客の要求を正確に把握し、曖昧さをなくすことです。生成 AI は自然言語処理能 力を活かして、人間とモデルの世界を繋ぐ通訳として機能します。 • 自然言語要求の解析とモデル化 : • 顧客の要求仕様書(自然言語の文章)を読み込ませ、「この要求は曖昧です」「この 2 つの要求は矛 盾している可能性があります」といった曖昧性・矛盾点の指摘をさせることができます。さらに、その 内容から SysML の要求図や UML のユースケース図の初期モデル(テキスト記述形式の PlantUML など)を自動生成します。 • 要求の精緻化 : • 「ログイン機能について、考えられる異常系のシナリオをリストアップして」といった指示で、考慮漏れ になりがちな要求を網羅的に洗い出す手助けをします。
  • 30.
    30 Gemini 先生とのやりとり: A2 •設計(モデリング)フェーズ ✍️ • ここが最も生成 AI の能力が発揮される段階です。設計者の「思考パートナー」として活躍します。 • モデル生成・リファインメント : • 「 EC サイトの基本アーキテクチャをコンポーネント図で示して」といった大まかな指示から、たたき台と なるモデルを瞬時に生成します。また、既存のモデルに対して「このクラスに必要そうな属性とメソッドを提案し て」「このシーケンス図を完成させて」といった対話的な指示で、モデルを詳細化(リファインメント)できます。 • モデル変換と複数ビューの同期 : • 例えば、クラス図の構造を基に「このクラス図に対応する API のエンドポイント一覧を OpenAPI 形式で生成して」と いった、異なるビュー(表現)への変換が可能です。これにより、各モデル間の整合性を保ちやすくなりま す。 • デザインパターンの適用 : • 「この部分に Observer パターンを適用したい」と指示すれば、関連するクラスやインターフェースのモデル構造をパ ターンに沿って自動で生成・修正してくれます。
  • 31.
    31 Gemini 先生とのやりとり: A2 •実装(コード生成)フェーズ 💻 • モデルからコードを生成する MBSD の中核機能ですが、生成 AI はこれをさらに強力にします。 • 高品質なコード生成 : • 従来のコードジェネレータが画一的なコードを生成しがちだったのに対し、生成 AI は「 Python の FastAPI フレームワークに最適化されたコードを生成して」といった、特定の言語やフレームワークの " お作法 " に沿った、より実践的なコードを生成できます。 • " 糊付け " コードの生成 : • モデル化されたコンポーネント同士を接続するためのインターフェース実装やデータ変換といった「糊付け ( Glue )」コードの生成も得意です。 • 構成ファイルの生成 : • モデルの構成情報から、 Dockerfile や docker-compose.yml 、 Kubernetes のマニフェストファイルといっ たデプロイ関連の構成ファイルを自動生成することも可能です。
  • 32.
    32 Gemini 先生とのやりとり: A2 •検証・妥当性確認( V&V )フェーズ ✅ • テスト工程の自動化と効率化に大きく貢献します。 • テストケース生成 : • 要求モデルや振る舞いモデル(状態マシン図、アクティビティ図)から、正常系・異常 系のテストシナリオやテスト条件を網羅的に生成します。 BDD (振る舞い駆動開発)で使 われる Gherkin 形式での出力も可能です。 • テストコード生成 : • 生成されたテストケースを基に、 JUnit や pytest といった具体的なテストフレームワーク用 のテストコードを自動生成します。また、モデルのインターフェース定義からテスト用の モックやスタブのコードを生成することもできます。
  • 33.
    33 Gemini 先生とのやりとり: A2 •5. 保守・進化フェーズ ️ 🛠️ • 既存システムの理解や変更作業を支援します。 • リバースモデリング : • レガシーシステムのソースコードを解析させ、その構造や振る舞いを表すモデル(例 : ク ラス図やシーケンス図)を生成させることができます。これにより、ドキュメントのないシステ ムの理解が格段に容易になります。 • 影響分析 : • 「このクラスの仕様を変更した場合、影響を受ける可能性のある他のコンポーネントやテ ストケースをリストアップして」といった指示で、変更に伴う影響範囲の特定を支援します。 • ドキュメント生成 : • モデルの内容を解釈し、人間が読んで分かりやすい形式の設計ドキュメントを自動生成します。モデルが更新 されれば、ドキュメントも追随して更新できるため、ドキュメントの陳腐化を防ぎます。
  • 34.
    34 Gemini 先生とのやりとり: A2 •このように、生成 AI は MBSD/MBSE の単なるツールではなく、開発プロセス全体に 知的な自動化をもたらし、設計者を反復的な作業から解放する「共同作業 者」「アシスタント」としての役割を担うことができます。これにより、開 発者はより創造的で本質的な設計活動に集中できるようになるでしょう。
  • 35.
    35 Gemini 先生とのやりとり: Q3 •MBSD/MBSE には多くの手法がありますが、その中でドメイン特化型言語を用いるものが あります。生成 AI と同じように、テキストを中心に扱うテキスト型 DSL というものがあ り、その代表的なものが Xtext です。生成 AI を Xtext を用いたモデルベース開発の中で活 かそうとすると、どの段階でどういうことが出来ますか? By The Eclipse Foundation - http://www.eclipse.org/Xtext, Public Domain, https://en.wikipedia.org/w/index.php? curid=36462492
  • 36.
    36 Gemini 先生とのやりとり: A3 •はい、非常に鋭いご指摘です。テキストベースの DSL を扱う Xtext と生成 AI は、テキス トを中心とした親和性が極めて高く、両者を組み合わせることでモデルベース開発を劇的 に進化させられます。 • Xtext がもたらす ** 「形式的で厳密な構造(骨格)」と、生成 AI がもたらす「柔軟で文 脈に応じた意味の解釈(肉付け)」 ** は、理想的な補完関係にあります。 • Xtext を用いた開発プロセスにおいて、生成 AI が活躍できる段階と具体例を整理します。
  • 37.
    37 Gemini 先生とのやりとり: A3 •DSL の設計・定義フェーズ 🧠 • Xtext 開発の最初のステップは、 DSL の文法( Grammar )を .xtext ファイルに定義することで す。 • 文法生成の支援 : • 作りたい DSL の具体例(こんなテキストを書きたい)をいくつか AI に提示し、「この構文を実現 するための Xtext の文法を生成して」と指示します。完璧ではないにせよ、文法定義のたたき台 を素早く得ることができ、 DSL 開発の初期コストを大幅に下げられます。 私の経験( ChatGTP ): シナリオを示し「これを Xtext モデルとして表現して」と依 頼すると、それなりのテキスト型モデルが提示される。その後 「このモデルの Xtext 文法を提示して」と依頼すると、文法規 定も提示された。
  • 38.
    38 Gemini 先生とのやりとり: A3 •モデル記述フェーズ ✍️ • ここが最も生成 AI の強みが活きる段階です。開発者は DSL でモデルを記述しますが、 AI はその強力なアシスタントに なります。 • 自然言語からのモデル生成(最重要) : • これが最も革新的な使い方です。設計者が「スロットル開度とエンジン回転数からトルクを計算するコンポーネント」 と自然言語で書くと、 AI がそれを解釈して、定義された DSL の構文に沿ったテキスト(モデル)を生成します。これに より、 DSL の正確な構文を完全に覚えなくても、高速にモデリングを進められます。 • 対話的なモデルの精緻化(リファインメント) : • 既存の DSL モデルの一部を示し、「この状態マシンに、タイムアウト処理を追加して」といった指示を出すと、 AI が差 分を理解し、追記・修正すべき DSL コードを提案します。これは、 Xtext 標準のコンテンツアシスト(入力補完)を遥 かに超える能力です。 • 再利用可能なパターンの適用 : • 「この部分に、弊社の標準的なエラー処理パターンを適用して」のように、よく使われる設計パターンや定型的な記述 を AI に指示するだけで、 DSL コードとして展開させることができます。
  • 39.
    39 Gemini 先生とのやりとり: A3 •モデル検証フェーズ ✅ • Xtext は文法エラーや型チェックなどの形式的な検証( Validation )を得意とします。 AI は、そ れとは異なる「定性的」な検証を追加します。 • ベストプラクティスや設計品質のレビュー : • 形式的には正しいモデルに対し、「この設計は複雑すぎないか?」「弊社の設計ガイドラインに 沿っているか?」といった、ルール化しにくい設計品質や保守性に関する観点からのフィード バックを生成させます。これは、熟練設計者によるレビューを模擬するものです。
  • 40.
    40 Gemini 先生とのやりとり: A3 •コード / 成果物生成フェーズ 🚀 • Xtext のジェネレータ(通常は Xtend で記述)はモデルからコードを生成します。 AI はこの生成 プロセスをより柔軟で強力なものにします。 • ジェネレータテンプレートの高度化 : • 従来のテンプレートエンジンでは困難だった、文脈に応じた自然なコメントの自動生成や、特定 のライブラリの慣習に合わせたイディオマティックなコードの生成が可能になります。 Xtend の ジェネレータから AI の API を呼び出すことで、これを実現します。 • 多様な成果物の生成 : • ソースコードだけでなく、そのモデルを解説する Markdown 形式のドキュメント、構成を視覚化 するための PlantUML や Mermaid のコードなど、多様な成果物をオンデマンドで生成させること ができます。
  • 41.
    41 Gemini 先生とのやりとり: A3 •結論として、 Xtext を用いた開発において、生成 AI は「人間(自然言語)と厳密な DSL モデルとの間の翻訳者・対話者」として振る舞います。 Xtext でシステムの「不変のルー ル」を固めつつ、その上で AI の柔軟性を活用することで、モデルベース開発の生産性と 品質を飛躍的に向上させることが可能です。 • また、一部の拡張機能では、機能するのに Gemini アプリ アクティビティが必要です。 これは、 Gemini アプリ アクティビティで有効にできます。
  • 42.
    42 Gemini 先生とのやりとり:まとめ • これら回答に、結構納得できる部分があったのではないでしょうか。 •納得できるならモデルベース開発に生成 AI を活用してみましょう。 • また、この Q&A を参考に、皆様の状況に応じた Q&A を試みたり、 Answer にある内容で使えそ うなところを利用したり、更に深めたりして頂ければ、と思います。 • なお: • 同じ質問を ChatGTP/Claude/Gemini/Perplexity 等に投げかけた結果、この Gemini 2.5 Pro の回答 が簡潔でポイントをついていると思い、このスライドに取り上げました。皆様が普段使われている生 成 AI が Gemini 以外のものであれば、是非同じ質問を投げかけて結果を吟味してください。 • Deep Research 機能を使って調査レポートを作成できたりします。多面的に調査してくれますが、 長文になり、ポイントが良く分からないこともあります。一度スライドの中に用意しましたが最終的 にドロップすることにしました。
  • 43.
    43 最後に • この集まり(研究会)をどんなものにしたいのか(目的、 open/closedetc. )、初回の本日 ( extension の時間帯も含め)話し合っておくのが良いかと思います。 • 生成 AI の使い方は色々ありますが • 能力の高い LLM に適切な質問を投げかけるのが一つの有効な使い方かと思います。 • レビュー能力が高いのは知られていますので、人が何か作業をした後に必ず生成 AI にレビューして貰う、とい うのも一つの有効な使い方かと思います。 • ネットアクセスによる情報流出が気になる場合には(機能的な制限がありますが)ローカル LLM という選択肢 もあります。 • なお、 100% 実現できなければ 0% と同じ、という態度をとる方がいますが、テキストから始めてある程度の 成果物を得られるのであれば、” jump-start” ではないでしょうか。 • 生成 AI 分野の技術進展速度は、 Java が登場してきた頃と比べても一桁早く感じます。 • ある意味「当分ネタは尽きない」かもしれませんが、ハルシネーションや誤った情報の拡散もあるので、地に 足のついた議論になるような取り組みが必要だと思います。 Google NotebookLM にこのページのデータを渡し会話形式で約 5 分の音声データにして貰いました