考察ノート:Claude Code on the webでMDA(Model Driven Architecture)をvibe codingして、20年まえの修士レベル論文を検証。
以前の、記事で、MDAを題材に、macro tree transducerを vibe codingした。
元ネタは、自分の20年弱前の社会人ドクターのサブテーマ論文、「MDAフレームワークのEDA分野への適用」であった。これを最新の生成AIであるClaude CodeやChatGPTを使ってどこまで同程度の議論ができるのか・検証してみる。
MDAとは
MDAとは、「モデル駆動の開発」ということで、 データのモデルやメタモデルなどの、メタオブジェクトの定義から、各種情報やプログラムを出力する技術であり、例えばメタ情報に基づくデータ変換という枠組みでは、以下の様になる。

ここで、
M1: いわゆるデータ
M2:データのメタな情報、すなわちモデル
M3:モデルのメタな情報、データからするとメタメタなモデル
ここでTabとあるのが、データの変換ルールであり、これはデータのメタ情報すなわち、モデルの言葉を使ってモデルが記述される。
すなわち、このメタ情報をつかったルールを宣言的に定義すれば、モデルAモデルBに準拠したいかなるデータもこのルールを解釈するエンジンにより変換ができる。この変化ルールと変換エンジンを生成するのが、モデル駆動のアプローチである。
MDAに基づくデータ変換を、生成AI時代に読み替える
20年まえにはモデルに基づく変換ルールのをつかった変換の自動化などを、QVTやATLなど、eclipse系の変換自動化の仕組みを使って確かめてみた。
さあ、いまは、生成AIの時代、このルール自体、いや変換プログラム自体を生成AIで生成できるのではないか?
というわけで、Claude Code on the webでこれをやってみた。用意したのは、ソースのモデルmanufacturing-ontology.ttlと、ターゲットのモデルght-report-ontology.ttlである。これらはRDF(Resource Description Format)として定義したものである。
これらを放り込んで、

Claude Codeへの指示、instructions.mdは、

このようにとても単純んなものだ、
MDAをやれ、
モデルは*ttlで与えたよ、
データはモデル準拠のjsonにしてね、
ルールベースにして、いろいろなソースデータに対応するんだよ。
という単純なもの。
Claude Code on the webでvibe coding開始

早速理解してくれた、モデルを読んで、"Perfect"にongologyを理解したらしくて、変換プログラム?を作ると、いやルールを作ってほしんだけど。

出来上がったのは、json変換プログラム。

いやそうじゃない、ということで、俺はルールベースの変換が欲しかったんだと文句をいう。
The output seems programmatically translate the data. I need external rule which is declarative, and the translation program read the rule to translate the data. So that the translation program may be reused for other models.
そして、反応は、、

"You're absolutely right!"だって、いや、分ってなかったのか、"proper MDA approach"って言っているし分ってるんだろうな?
なんかできたらしい。

利用方法をみると、

変換ルールは、yamlで記述され、これを読んでデータを変換するrule_engine.pyが提供。
変換もしているし、caluculationすなわち、変換の途中に計算もしている。偉いね。

ルールエンジンは、ルールを読んで変換をしている模様。

このように、Claude Code on the webを使うことによって、MDAに基づくデータ変換を、自動(コード生成で)に行うことができた。これが今風ね。
Macro Tree Transducerで実現できる?
古の論文では、MDAによるデータ変換を、いわゆる木から木の変換であるとして、これをMacro Tree Transducerで理論的には形式化できるとおっしゃっていた。

すなわち、MTTを用いてモデル変換が構成できることを検証していた。
そして、Claude Code on the webを用いて、Macro Tree Transducerもどきを実装した。
さあ、この実装をベースに、「MTTを用いてモデル変換が構成できる」ってのがどこまで妥当か?今風ということで、これをChatGPTに聞いてみる。
いまから、MDAに基づくデータ変換についての事例が、あるMacro Tree Transducerの実装でも同様に実現できるかどうかを知りたい。
★データ変換の事例は、ソースのモデル(manufacturing-ontology.ttl)、ターゲットのモデル(ghg-report-ontology.ttl)、変換ルール(transformation_rules.yaml)である。
★Macro Tree Transducerの実装は、MTT_THEORY.mdを見てほしい。
# Macro Tree Transducer (MTT) 理論と実装
<略>
どうやら、概略としてはできる様だ。

しかし、現在の実装のままだと問題もあって、

そうか、JOINみたいなのは、トップダウンでの単一パスなので実現できない。。当然推論とかもできない。。
ルールの自動変換については、単純マッピング、条件付きマッピングは可能であるが、集約に難ありと。。

感想
20年も前の、修士レベルのレポートは、Claude CodeやChatGPTを使えば、検証や実装をふくめて、すべてAIで、出来そうな感じである。
こりゃ、今の学生さんは大変だなあ、いや、もっと先に進むってこと??
