第0回 モデルベースソフトウェア 開発コミュニティキックオフ「モデルベースソフトウェア開発 Xtextによる自動生成」ビューファイブLCC田中氏
「モデル」:何らかの対象をある観点から見て抽象化し本質的な情報の集まりにしたもの。観点(視点):どのような立ち位置からその対象をモデルとしてとらえるか。
Xtext:Eclipseのプロジェクトで、テキスト型DSL開発フレームワーク。http://www.eclipse.org/Xtext/ 。電子書籍が無料でダウンロードできる。(http://www.beta-publish.com/)
STS:Spring Frameworkで動作するアプリ開発のためのEclipseベースIDE。
Spring Boot:Springアプリケーションを容易に構築できる仕組み。コードを楽にGenerateできる。
http://www.beta-publish.com/
https://eclipse.org/Xtext/documentation.html
準備:STSにEclipse/Xtextをインストール、またはEclipse IDE for Java and DSL DevelopersにSTSをインストール。
インストールすると、Xtextがプロジェクトに登場するので新規で作成。サンプルとして、Greetingという要素を持つ。Run asでSpring Bootで、文法に対応するエディタを作ってくれるので、さらにRun asでspringの何か立ち上がり(Eclipseもう一つ、のような。)そこでJavaのプロジェクトを作成し、test.mydslとかファイル作成し、Hello worldとか書く。元のEclipse画面の中にMyDslGeneratorがあり、コメント化されたサンプルがあるので、コメントをはずし、2つめを再度起動すると、src-genフォルダがあり、greetings.txtができている。ほかにも中にExampleがいろいろ入っている。開くと、AbstractElementがたくさん入っている。パッケージ宣言。Entityやsuper type。
サンプルとしてXbase版 Domain modelを使う。(動画あり。プラグインが組み込まれている。)Application.java。Mmodelというフォルダを追加し……。……。……(--;)> spring bootで動くので、普通のブラウザアプリがローカルに生成される。クラス図程度を与えると即座に動くようになる、と。(……即座……?)
Spring Bootだと、Pivotal Web ServiceのようなPaasにDeploy可能。(Springが動作するなら。)
OperationをXtend言語(Xtextとセットの言語)で記述するとJava code生成。Xtextはテキスト型だが、簡単なダイアグラム生成の仕組みはあり(PlantUML。Eclipse用プラグインあり。簡単なソース(Java)から書き出せる)。CRUIDアプリは「Spring 3入門」の第6章が参考になる。
【Mendix(商用)】
ここまではOSS。ここからは商用の例。モデルベース開発をそれなりに実現している。
欧州を中心に実績のあるEnterprise系業務システムに使えるもの。Mendix Business Modeler。Entityモデル、GUIモデル、ロジックモデル。モデル変換はインタプリタ。専用のプラットフォームがありPaaS、オンプレミスで利用。ロジックはxpass(?)使用。モデルを送り込むことで即実行。
【まとめ】
かつてのMDA時代と比べ、関連技術の広がり、深み、実用性がまし、利用できるツールも増えている。DevOPS自動化含め考える課題。