Eclipse M2M変換について

2013年2月22日の夜にEclipse Modeling勉強会を実施し、そこでEclipseのモデル変換の幾つかを説明する機会がありました。題材はATLがよく例題としてプレゼンで使うFamilies to Personsです。私は主にQVTを担当しましたが、事前にATLの動作も確認しましたので、ちょっと感想を書かせて貰います。

動作の検証を行ったのは、Juno版ModelingパッケージにATLとQVToを入れたもの、Indigo版Modelingパッケージにmedini QVTを入れたもの、そしてJuno版のXtextディストリビューションです。他に、エディタしか動作しませんが、EclipseのQVTrとQVTcも入れてみました。

ATLで良く知られている例題(何々家の家族というモデルを、男性と女性の二種類からなる個人モデルに変換)ですのでこれを基準にします。

  • ATL自体のケースについては、メインのルール記述は分かり易いのですが、最初の頃はhelper機能の切り出し方が良く分かりませんでした。研究分野ではかなり使われていますし、最近は管理を地元?ベンダに移管した模様です。
  • QVToは確かに手続き言語的ですが、記述内容はATLとほとんど同じレベルで、特にOCL記述はATLのものがほぼそのまま利用できました。安定して動作するようですし、ATLとの間では比較的容易に相互に移行できそうです。
  • medini QVTはQVT Relationsなので、パターンマッチングの記述箇所に特徴的なところがあります。それでもクエリについてはQVTo同様にATLのOCL記述が(多少違いがありますが)結構近いものになりました。実績もありますので、このスタイルの記述がお好きな方は使えると思います。
  • Xtextといっても変換にはXtendを使います(勉強会当日はまだ完成していませんでしたが、三日後に動くようになりました)。Xtendは軽くJavaをラップしたものなので、変換を実現するクラスもどこかJavaコードの雰囲気が漂っています。このコードだけで動作すれば良いのですが、Xtextの仕組みにのせるため結構面倒なことになってしまいました。結果的に、Xtendでモデル変換も記述できますが(利用者にとっては)専用言語を実装したATL/QVTo/QVTrの方が楽だろう、というのが私の感想です。ただ、見栄え的にXtendの実行結果は面白いので、画像を入れておきます(左側のXtextエディタでFamilyモデルを作成しワークフローを実行すると右側のxmi形式のデータが生成されます)。

Xtend M2M

いずれの場合についてもモデル変換ロジック構築の考え方を説明したものがなく、現状はサンプルから学べという状況です。ユーザガイドやチュートリアルに、こういう考え方で書けば良いというガイドがあれば良いかと思った次第です。

最後に勉強会のサイトは こちら にあり、当日の資料類もそこに置いてあります。

Eclipse M2M変換について

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中