モデル駆動開発m2tプラグイン製作者インタビュー (前半)

astah*のユーザーさんが、モデル駆動開発でも活用できるソースコード生成プラグインを開発されました。

mr.hosoai

細合さん

groovyのテンプレートを利用して、astah*で描いたクラス図、ステートマシン図を対象にソースコードを生成できるプラグインです。
この「モデル駆動開発m2tプラグイン」は、製品サイトよりダウンロードできます。

そこで、プラグイン作者の細合晋太郎さんに、プラグイン開発の経緯、他のコード生成プラグインとの違い、プラグイン開発で苦労したことなど、お話を伺いました。

 

Q: 今回プラグインを作成しようと思ったきっかけは?

気軽にコード生成を試せるUMLエディタが欲しいと思ったのが始まりです。Eclipseには、いくつかコード生成のための枠組みがあるのですが、肝心のエディタがいまいち書きづらいため、描き心地のよいastah*でコード生成が行えないか検討しました。
既存のコード生成のプラグインがあるものの、少し扱いづらく、もう少し気軽にコード生成を試せるツールが欲しくなり自作することになりました。また「LED-Camp」(LED-Campについてのお話はインタビュー後半で)という組込み分野の若手技術者向け短期合宿でMDDに関する講義を行っているのですが、そこでも使えるようにいろいろと機能追加を行いました。

 

Q: 既存のコード生成プラグインは、どの点が扱いづらかったですか?

anycode_plugin

any<code/>プラグイン(無償)

出た当時のany<code/>プラグイン (フランスのastah*ユーザー Joseさん作)を触っていて、少し手を入れにくいなと感じていたのですが、今はマニュアル等揃っていますね。私のプラグインも、ソースコードの手段はほぼ同じ(astahモデルをgroovyテンプレートに渡す)で、方向性が少し違う程度かと思います。

ステレオタイプに応じてテンプレートを選択する機能や、ステートマシン等のクラス図以外のモデルを参照する機能が欲しかったのですが、テンプレートで実現するのは少々面倒なため、プラグイン側でできるように新たに作ることにしました。また、未実装ですがテンプレートエンジンの切り替えや、テンプレートを記述する際のサポート機能も追加していきたいと考えています。

 

Q: プラグインを自作するに当たって、苦労したことなどありましたか?

「なんでもできるけど難しいツール」か「できることは決まっているけど柔軟性のないツール」か、ユーザが欲しいのはどちらだろう?と悩んでいたのですが、結局自分が欲しいものを作ろう!と割り切りました。

当初は、生成のプロセスもgroovyのスクリプトとして触れるようにしていたのですが、テンプレート毎にプロセスを定義するのでは煩雑となってしまいます。
現在は、プラグイン内でいくつかのパターンのプロセスに分け、ユーザにはステレオタイプに応じてテンプレートを変えるのか、プロジェクト共通のファイルを生成するのか、といった選択をする形としています。

Astahm2tSetting

ソースコード出力設定画面 (細合さんのGithubより)

オープンソースですので、それ以上にカスタマイズしたい場合は、コードに手を入れて貰えればと思います。また要望をメール(shintaro.hosoai@gmail.com)で頂ければ、できるだけ取り入れたいと思います。

 

Q: any<code/>プラグイン作者のJoseさんも、Bitbucketで直接ユーザーさんと繋がってプラグインを改良していますね。細合さんは、このモデル駆動開発プラグイン、どのような方に使ってほしいですか?

同じようなコードを繰り返し書いているなぁと感じている方、普段モデルをよく書かれている方にはぜひ使ってみて欲しいです。折角作ったモデルをもっと活用して貰えれば、と思いますので。
テンプレートの作成は結構大変なのですが、うまく作成できれば、掛かった工数はすぐに自動生成で取り戻せると思います。
まだまだ荒削りで使いにくいところもあるプラグインですが、一度触って頂けると幸いです。
現在クラス図とステートマシン図を対象としていますが、「他の図からコード生成をしてみたい」「現在用意されているテンプレート以外の言語でも扱ってみたい」という方が居られましたら、お気軽にご相談ください。(shintaro.hosoai@gmail.com)

m2tplug-in-download-button

インタビュー後半は、こちら

Advertisements

One thought on “モデル駆動開発m2tプラグイン製作者インタビュー (前半)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s