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

at_husky 68 views 43 slides Aug 27, 2025
Slide 1
Slide 1 of 43
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43

About This Presentation

生成AIはモデリングが得意という話です


Slide Content

生成 AI とモデルベース開発 2025/07/25 田中 @v iew5 llc 第1回モデル指向開発技術研究会 1

本日のメニュー はじめに 事例(今でも出来ること) Gemini 先生とのやりとり(事例をネタにした考察) 最後に 2

はじめに 皆様も日々いろいろな場面で生成 AI を活用されていることと思います。 私の場合は、ふとしたことから「生成 AI がモデルベース開発にも使えるのでは」と思ったため「生成 AI はモデルベース開発の枠組みの中でどのような使い方ができるのか」ということを追求する様になりました。今日はその入り口の話を中心にしたいと思います。 知人の書いた「まだ適用は難しい」という論文 * も読みましたが、いろいろ試して実際に出来ることを目の前にすると「これは無視できない」と感じました。 内容的に、皆様と比べるとレベルが低いかもしれませんが、第1回研究会ということで、事例と考察をご紹介します。 3 On the assessment of generative AI in modeling tasks: an experience report with ChatGPT and UML *

事例: UML UML の事例です( ©️ 長瀬さん) 業務フローとして右のアクティビティ図を作成したとします。 この PDF ファイルを生成 AI に渡し、ユースケース図・ユースケース記述を作成してもらいました。 4

事例: UML 5

事例: UML ## ユースケース記述 ( ユースケース記述形式 ) **システム名 :** オンライン注文システム ** 1. 注文商品を選択する ( UC01)** *   ** アクター :** 顧客 *   **目的 :** 顧客が Web サイト上で注文する商品を決定する。 *   **事前条件 :** 顧客は Web サイトにアクセスしている。 *   **主要なシーケンス :**     1. 顧客は Web サイトにアクセスする。     2. 顧客は商品カタログを参照する ( UC02) 。    3. 顧客は注文する商品を選択する。 *   **事後条件 :** 顧客は注文する商品を決定した。 *   **拡張シーケンス :**    *   ** 3 a.** 顧客が商品を検索する。        *   システムは検索結果を表示する。 *   **注記 :**   このユースケースは、商品カタログを参照する UC02 と密接に関連している。 6 ** 2. 商品カタログを確認して選択する ( UC02)** *   ** アクター :** 顧客 *   **目的 :** 顧客が利用可能な商品カタログを閲覧し、商品情報を確認する。 *   **事前条件 :** 顧客は Web サイトにアクセスしている。 *   **主要なシーケンス :**     1. 顧客は Web サイトにアクセスする。     2. 顧客は商品カタログを表示する。     3. 顧客は商品情報を確認する。 *   **事後条件 :** 顧客は商品カタログの内容を理解した。 *   **拡張シーケンス :**    *   ** 3 a.** 顧客が特定のカテゴリの商品を表示する。    *   ** 3 b.** 顧客が商品の詳細情報を表示する。 以下省略

事例: UML 7 更に、ユースケース記述に基づき基本的なコード生成を見せてくれました(詳細は省略) Java ソースコード Java テストコード プラットフォームを変更しても同様に基本的なコードを生成してくれました(同上) Python 環境 各種フロントエンドフレームワーク( React 等) コード自体は参考程度のものかもしれませんが、開発者にとっての最初の一歩として参考になります。

サンプル実装 8 https://tourmaline-cactus-240ef4.netlify.app/ UML の事例でとりあげたアクティビティ図を PDF 形式で Bolt.new という生成 AI に 渡し、サンプル実装を依頼した結果です。 *定型パターンのせいか、当方は一切コードを書いていません。 このサイトは一週間程度で消滅すると思います

9

10

11

12

13 事例: UML :まとめ

事例: Xtext :シナリオを作成させる シナリオ タイトル : 診療記録へのアクセスと治療同意 場所 : 大規模病院内にある専門の腫瘍クリニック、スミス医師の診察室。室内には机、椅子が 2 脚、コンピュータがあり、落ち着いた雰囲気。 登場人物 スミス医師 ( Dr. Smith) — 乳がん専門医 アレックス ( Alex) — 最近乳がんと診断された患者 会話 スミス医師 : 「おはようございます、アレックスさん。本日はお越しいただきありがとうございます。初期検査と画像結果に目を通しましたので、今後の治療方針についてご相談したいと思います。」 アレックス : 「おはようございます、スミス先生。少し緊張していますが、お話を伺う準備はできています。」 … 14 スミス医師 : 「不安に感じるのは当然です。安心して治療を受けていただくために、まずアレックスさんの 過去の検査結果や医療歴を含む診療記録全体へアクセスさせていただきたい のですが、ご同意いただけますか?」 アレックス : 「はい、もちろんです。それが大切なことは理解しています。」 … スミス医師 : 「 治療を進めるには、今お話しした内容をまとめた同意書に署名していただく必要があります 。ごゆっくりお読みいただき、ご質問があれば何でもお聞きください。」 アレックス : 「ありがとうございます、スミス先生。しっかり読んで確認します。」(アレックスが同意書を読み、質問し、それに対して医師が丁寧に回答。アレックスは 治療プランに同意し署名 。) 備考 [治療プラン] や [想定されるリスクの一覧] は患者個々の状況に応じて記入・説明する。 実務では、電子カルテシステムへのアクセス権限付与や、治療同意書の法的要件に従った取り扱いが必要。

事例: 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." } 15 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" } }

事例: 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; 16 逐語的なやり取り ─────────────────────────── * / 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

Gemini 先生とのやりとり: Q1 (Why?) 私はソフトウェアやシステムのモデリングの仕事をしています。 あなたは、モデリングの専門家です。 これまで色々なモデル関連の質問を試しましたが、どうも 生成 AI は、抽象化、インスタンス化、メタモデリング、などが得意 のように思えます。  これはどういう理由によるものでしょうか? 生成 AI システムの設計方針と関連するのでしょうか? 20

Gemini 先生とのやりとり: A1 はい、そのご認識は非常に的確です。生成 AI 、 特に大規模言語モデル( LLM ) が抽象化、インスタンス化、メタモデリングといった概念を得意とするのは、偶然ではなく、その設計思想と学習メカニズムに深く根差しています。 ソフトウェアやシステムのモデリング専門家でいらっしゃるご質問者様に向けて、その理由を解説します。 結論:なぜ得意なのか? 一言で言えば、 生成 AI の根幹技術が「データからパターンと関係性を抽出し、それを基に新たなデータを生成する」ことだから です。 これは、モデリングにおける抽象化、インスタンス化、メタモデリングのプロセスと本質的に同じ構造をしています。 AI は人間のように「理解」しているわけではありません。膨大なテキストやコードのデータの中にある、単語や概念間の統計的な関係性(パターン)を、高次元のベクトル空間で表現・学習しています。この能力が、モデリングの各プロセスと非常に相性が良いのです。 21

Gemini 先生とのやりとり: A1 抽象化 ( Abstraction) 🧠 モデリングにおける抽象化は、個別の事象から共通の性質を抜き出して、より一般的な概念(クラスやコンポーネントなど)を定義する行為です。 AI の仕組み 生成 AI は、例えば「犬」「猫」「鳥」という単語が「ペット」「飼う」「鳴く」といった文脈で頻繁に登場することを学習します。これにより、 AI の内部では「犬」「猫」「鳥」が「動物」という、より抽象的な概念の近くに配置されます。 AI は、 class User {...} 、 class Product {...} 、 class Order {...} のようなコードを無数に学習することで、「 class [ 名前 ] { [ 属性 ] } 」という 抽象的な構文パターンそのもの を捉えます。 つまり AI にとっての抽象化とは、 膨大な具体例から共通する統計的パターンを抽出する プロセスであり、まさにその学習方法そのものなのです。 22

Gemini 先生とのやりとり: A1 インスタンス化 ( Instantiation) 📝 インスタンス化は、抽象的なモデル(クラスなど)から具体的な実例(オブジェクト)を生成する行為です。 AI の仕組み AI は抽象的なパターンを学習済みのため、「オンライン書店システムのクラス図を作って」と指示されると、学習した「クラス図」という抽象パターンと、「オンライン書店」という文脈で頻出する「本」「顧客」「注文」といった概念を結びつけます。そして、それらを組み合わせ、最も " ありえそうな " (確率的に尤もらしい)具体的なクラス図を インスタンスとして生成 します。 つまり AI にとってのインスタンス化とは、 学習済みの抽象パターンに、与えられたコンテキスト(指示)を当てはめて、具体的な出力を生成する ことであり、これもまた得意中の得意なタスクです。 23

Gemini 先生とのやりとり: A1 メタモデリング ( Metamodeling) 🏛️ メタモデリングは、モデリング言語そのものを定義する、つまり「モデルのモデル」を作ることです。例えば、 UML のメタモデルは、「クラスとは何か」「属性とは何か」「関連とは何か」といったルールを定義します。 AI の仕組み これは非常に興味深い点です。生成 AI は、 UML で書かれた図の説明、 PlantUML のコード、 Mermaid のコード、さらには UML の仕様書に関するテキストデータまで学習しています。これにより、 モデリング言語の「文法」や「構成要素間のルール」自体をパターンとして学習 します。例えば、「クラスは属性と操作を持つ」「関連は 2 つのクラスをつなぐ」といった UML メタモデルのルールは、 AI にとっては非常に強力で一貫したパターンとして認識されます。 つまり AI は、 モデルの記述ルール(メタモデル)そのものを、データセット全体を貫く普遍的なパターンとして抽出 しているのです。だからこそ、特定のモデリング言語(例 : UML, SysML , ArchiMate ) のルールに沿ったモデルを生成したり、モデル間の変換を提案したりすることが可能なのです。 24

Gemini 先生とのやりとり: A1 生成 AI の設計思想との関連 ご指摘の通り、これは生成 AI の設計思想と密接に関連しています。 トランスフォーマー・アーキテクチャ ( Transformer Architecture): 現在の生成 AI の主流であるトランスフォーマーモデルは、自己注意機構 ( Self-Attention Mechanism) を持っています。これにより、文章中のある単語が、他のどの単語と強く関連しているかを効率的に学習できます。この「関係性に着目する」という性質が、エンティティ間の関連や依存関係を記述するモデリングタスクに極めて有効に働きます。 確率的・生成的な性質 ( Probabilistic & Generative Nature): AI は決定論的なプログラムではなく、次にくる単語やトークンを確率的に予測して文章を生成します。この「最もそれらしいものを生成する」という性質が、「この要件なら、こういうモデルが " ありえそう " だ」という、人間の設計者が行う思考プロセスと似た結果を生み出します。 25

Gemini 先生とのやりとり: A1 まとめ 生成 AI がモデリングの抽象的な概念を得意に見せるのは、 AI の「膨大なデータから統計的なパターンと関係性を見つけ出し、それに基づいて新たなものを生成する」という基本原理が、モデリングという行為の「現実世界を抽象化し、ルール(メタモデル)に従って構造を記述し、具体的な設計(インスタンス)に落とし込む」というプロセスと、驚くほど親和性が高いためです。 それは意図的に「メタモデリングが得意な AI 」 として設計されたわけではなく、言語という究極の抽象システムを扱えるようにした結果、その能力がモデリングという分野で応用できるようになった、という**創発的な特性( Emergent Property )** と捉えるのが最も近いでしょう。 26

Gemini 先生とのやりとり: Q2 そうだとすると、 生成 AI は、モデルベースソフトウェア開発やモデルベースソフトウェアエンジニアリングの世界で有用な機能を提供できるはず です。どの段階でどういう機能が提供できるのか、整理して教えて下さい。 27

Gemini 先生とのやりとり: A2 はい、おっしゃる通り、生成 AI はモデルベースソフトウェア開発( MBSD ) やモデルベースシステムズエンジニアリング( MBSE ) のあらゆる段階で強力な支援機能を提供できます。 それは単なる夢物語ではなく、 既に行われ始めている実践 です。開発ライフサイクルの各段階で、生成 AI がどのように貢献できるかを整理しました。 28

Gemini 先生とのやりとり: A2 MBSD/MBSE の各フェーズと生成 AI の役割 要求分析・定義フェーズ 🧐 このフェーズの目的は、顧客の要求を正確に把握し、曖昧さをなくすことです。生成 AI は自然言語処理能力を活かして、人間とモデルの世界を繋ぐ通訳として機能します。 自然言語要求の解析とモデル化 : 顧客の要求仕様書(自然言語の文章)を読み込ませ 、「この要求は曖昧です」「この 2 つの要求は矛盾している可能性があります」といった 曖昧性・矛盾点の指摘 をさせることができます。さらに、その内容から SysML の要求図や UML のユースケース図の初期モデル(テキスト記述形式の PlantUML など)を自動生成します。 要求の精緻化 : 「ログイン機能について、考えられる異常系のシナリオをリストアップして」といった指示で、 考慮漏れになりがちな要求を網羅的に洗い出す手助け をします。 29

Gemini 先生とのやりとり: A2 設計(モデリング)フェーズ ✍️ ここが最も生成 AI の能力が発揮される段階です。設計者の「思考パートナー」として活躍します。 モデル生成・リファインメント : 「 EC サイトの基本アーキテクチャをコンポーネント図で示して」といった大まかな指示から、たたき台となるモデルを瞬時に生成します。 また、既存のモデルに対して「このクラスに必要そうな属性とメソッドを提案して」「このシーケンス図を完成させて」といった対話的な指示で、 モデルを詳細化(リファインメント) できます。 モデル変換と複数ビューの同期 : 例えば、クラス図の構造を基に「このクラス図に対応する API のエンドポイント一覧を OpenAPI 形式で生成して」といった、 異なるビュー(表現)への変換が可能です。これにより、各モデル間の整合性を保ちやすくなります。 デザインパターンの適用 : 「この部分に Observer パターンを適用したい」と指示すれば、関連するクラスやインターフェースのモデル構造をパターンに沿って自動で生成・修正してくれます。 30

Gemini 先生とのやりとり: A2 実装(コード生成)フェーズ 💻 モデルからコードを生成する MBSD の中核機能ですが、生成 AI はこれをさらに強力にします。 高品質なコード生成 : 従来のコードジェネレータが画一的なコードを生成しがちだったのに対し、生成 AI は「 Python の FastAPI フレームワークに最適化されたコードを生成して」といった、 特定の言語やフレームワークの " お作法 " に沿った、より実践的なコードを生成できます。 " 糊付け " コードの生成 : モデル化されたコンポーネント同士を接続するためのインターフェース実装やデータ変換といった 「糊付け( Glue )」 コードの生成も得意 です。 構成ファイルの生成 : モデルの構成情報から、 Dockerfile や docker- compose.yml 、 Kubernetes のマニフェストファイルといったデプロイ関連の 構成ファイルを自動生成することも可能 です。 31

Gemini 先生とのやりとり: A2 検証・妥当性確認( V&V ) フェーズ ✅ テスト工程の自動化と効率化に大きく貢献します。 テストケース生成 : 要求モデルや振る舞いモデル(状態マシン図、アクティビティ図)から、正常系・異常系のテストシナリオやテスト条件を網羅的に生成します。 BDD ( 振る舞い駆動開発)で使われる Gherkin 形式での出力も可能です。 テストコード生成 : 生成されたテストケースを基に、 JUnit や pytest といった 具体的なテストフレームワーク用のテストコードを自動生成します。 また、モデルのインターフェース定義からテスト用のモックやスタブのコードを生成することもできます。 32

Gemini 先生とのやりとり: A2 5. 保守・進化フェーズ 🛠️ 既存システムの理解や変更作業を支援します。 リバースモデリング : レガシーシステムのソースコードを解析させ、その構造や振る舞いを表すモデル(例 : クラス図やシーケンス図)を生成させることができます。 これにより、ドキュメントのないシステムの理解が格段に容易になります。 影響分析 : 「 このクラスの仕様を変更した場合、影響を受ける可能性のある他のコンポーネントやテストケースをリストアップして 」といった指示で、変更に伴う影響範囲の特定を支援します。 ドキュメント生成 : モデルの内容を解釈し、人間が読んで分かりやすい形式の設計ドキュメントを自動生成します。モデルが更新されれば、ドキュメントも追随して更新できるため、ドキュメントの陳腐化を防ぎます。 33

Gemini 先生とのやりとり: A2 このように、生成 AI は MBSD/MBSE の単なるツールではなく、 開発プロセス全体に知的な自動化をもたらし、設計者を反復的な作業から解放する「共同作業者」「アシスタント」としての役割を担うことができます。 これにより、開発者はより創造的で本質的な設計活動に集中できるようになるでしょう。 34

Gemini 先生とのやりとり: Q3 MBSD/MBSE には多くの手法がありますが、その中でドメイン特化型言語を用いるものがあります。生成 AI と同じように、テキストを中心に扱う テキスト型 DSL というものがあり、その代表的なものが Xtext です。生成 AI を Xtext を用いたモデルベース開発の中で活かそうとすると、どの段階でどういうことが出来ますか? 35 By The Eclipse Foundation - http://www.eclipse.org/Xtext, Public Domain, https://en.wikipedia.org/w/index.php?curid=36462492

Gemini 先生とのやりとり: A3 はい、非常に鋭いご指摘です。テキストベースの DSL を扱う Xtext と生成 AI は、テキストを中心とした親和性が極めて高く、両者を組み合わせることでモデルベース開発を劇的に進化させられます。 Xtext がもたらす**「形式的で厳密な構造(骨格)」と、生成 AI がもたらす「柔軟で文脈に応じた意味の解釈(肉付け)」**は、理想的な補完関係にあります。 Xtext を用いた開発プロセスにおいて、生成 AI が活躍できる段階と具体例を整理します。 36

Gemini 先生とのやりとり: A3 DSL の設計・定義フェーズ 🧠 Xtext 開発の最初のステップは、 DSL の文法( Grammar ) を . xtext ファイルに定義することです。 文法生成の支援 : 作りたい DSL の具体例(こんなテキストを書きたい)をいくつか AI に提示し、「この構文を実現するための Xtext の文法を生成して」と指示します。完璧ではないにせよ、文法定義のたたき台を素早く得ることができ、 DSL 開発の初期コストを大幅に下げられます。 37 私の経験( ChatGTP ):   シナリオを示し「これを Xtext モデルとして表現して」と依頼すると、それなりのテキスト型モデルが提示される。その後「このモデルの Xtext 文法 を提示して 」と依頼すると、文法規定も提示された。

Gemini 先生とのやりとり: A3 モデル記述フェーズ ✍️ ここが最も生成 AI の強みが活きる段階です。開発者は DSL でモデルを記述 しますが、 AI はその強力なアシスタントになります。 自然言語からのモデル生成(最重要) : これが最も革新的な使い方です。設計者が「スロットル開度とエンジン回転数からトルクを計算するコンポーネント」と自然言語で書くと、 AI がそれを解釈して、 定義された DSL の構文に沿ったテキスト(モデル)を生成 します。これにより、 DSL の正確な構文を完全に覚えなくても、高速にモデリングを進められます。 対話的なモデルの精緻化(リファインメント) : 既存の DSL モデルの一部を示し、「この状態マシンに、タイムアウト処理を追加して」といった指示を出すと、 AI が差分を理解し、追記・修正すべき DSL コードを提案します。これは、 Xtext 標準のコンテンツアシスト(入力補完)を遥かに超える能力です。 再利用可能なパターンの適用 : 「この部分に、弊社の標準的なエラー処理パターンを適用して」のように、よく使われる設計パターンや定型的な記述を AI に指示するだけで、 DSL コードとして展開させることができます。 38

Gemini 先生とのやりとり: A3 モデル検証フェーズ ✅ Xtext は文法エラーや型チェックなどの形式的な検証( Validation ) を得意とします。 AI は、それとは異なる 「定性的」な検証 を追加します。 ベストプラクティスや設計品質のレビュー : 形式的には正しいモデルに対し、「この設計は複雑すぎないか?」「弊社の設計ガイドラインに沿っているか?」といった、 ルール化しにくい設計品質や保守性に関する観点からのフィードバックを生成 させます。これは、熟練設計者によるレビューを模擬するものです。 39

Gemini 先生とのやりとり: A3 コード / 成果物生成フェーズ 🚀 Xtext のジェネレータ(通常は Xtend で記述)はモデルからコードを生成します。 AI はこの生成プロセスをより柔軟で強力なものにします。 ジェネレータテンプレートの高度化 : 従来のテンプレートエンジンでは困難だった、文脈に応じた自然なコメントの自動生成や、特定のライブラリの慣習に合わせたイディオマティックなコードの生成が可能になります。 Xtend のジェネレータから AI の API を呼び出すことで、これを実現します。 多様な成果物の生成 : ソースコードだけでなく、そのモデルを解説する Markdown 形式のドキュメント、構成を視覚化するための PlantUML や Mermaid のコードなど、多様な成果物をオンデマンドで生成させることができます。 40

Gemini 先生とのやりとり: A3 結論として、 Xtext を用いた開発において、生成 AI は「人間(自然言語)と厳密な DSL モデルとの間の翻訳者・対話者」として振る舞います。 Xtext でシステムの「不変のルール」を固めつつ、その上で AI の柔軟性を活用することで、モデルベース開発の生産性と品質を飛躍的に向上させることが可能です。 また、一部の拡張機能では、機能するのに Gemini アプリ アクティビティが必要です。これは、 Gemini アプリ アクティビティで有効にできます。 41

Gemini 先生とのやりとり:まとめ これら回答に、結構納得できる部分があったのではないでしょうか。 納得できるならモデルベース開発に生成 AI を活用してみましょう。 また、この Q&A を参考に、皆様の状況に応じた Q&A を試みたり、 Answer にある内容で使えそうなところを利用したり、更に深めたりして頂ければ、と思います。 なお: 同じ質問を ChatGTP /Claude/Gemini/Perplexity 等に投げかけた結果、この Gemini 2.5 Pro の回答が簡潔でポイントをついていると思い、このスライドに取り上げました。皆様が普段使われている生成 AI が Gemini 以外のものであれば、是非同じ質問を投げかけて結果を吟味してください。 Deep Research 機能を使って調査レポートを作成できたりします。多面的に調査してくれますが、長文になり、ポイントが良く分からないこともあります。一度スライドの中に用意しましたが最終的にドロップすることにしました。 42

最後に この集まり(研究会)をどんなものにしたいのか(目的、 open/closed etc. )、初回の本日( extension の時間帯も含め)話し合っておくのが良いかと思います。 生成 AI の使い方は色々ありますが 能力の高い LLM に適切な質問を投げかけるのが一つの有効な使い方かと思います。 レビュー能力が高いのは知られていますので、人が何か作業をした後に必ず生成 AI にレビューして貰う、というのも一つの有効な使い方かと思います。 ネットアクセスによる情報流出が気になる場合には(機能的な制限がありますが)ローカル LLM という選択肢もあります。 なお、 100% 実現できなければ 0% と同じ、という態度をとる方がいますが、テキストから始めてある程度の成果物を得られるのであれば、 ”jump-start” ではないでしょうか。 生成 AI 分野の技術進展速度は、 Java が登場してきた頃と比べても一桁早く感じます。 ある意味「当分ネタは尽きない」かもしれませんが、ハルシネーションや誤った情報の拡散もあるので、地に足のついた議論になるような取り組みが必要だと思います。 43 Google NotebookLM にこのページのデータを渡し会話形式で約 5 分の音声データにして貰いました