分かりやすさ、使いやすさにはこだわっています。
モデル駆動開発の初学者に使って欲しい。
UMLモデルからC++コードへのマッピング、開発中にモデルとコードが乖離してしまうといった悩みを持つ方にも是非使ってほしい。
悩みを解決する手助けになるかもしれません。
今年1月、Friends of astahの手嶋高明さんが、C++ソースコード生成プラグイン「M+」を開発されました。手嶋さんに、プラグインを開発した経緯や、当プラグインを実際に利用している方々の感想などをお聞きしました。
Q: まずは、自己紹介をお願いします
手嶋高明です。10年間ほど、組込みソフトウェアを対象に、モデル駆動開発の実践や支援を行う業務に携わっていました。現在は、大学院に進学し、システムズエンジニアリングを専攻しています。ソフトウェアだけでなくハードウェア、人、設備なども含めたシステム全体を対象とする問題を解決するためのアプローチや手段を学び、研究に生かしています。
たまに、ボランティアで高校生にモデリングやプログラミングを教えたりもしています。

手嶋様(右上)、ボランティアでプログラミングを教えている生徒、担当の先生
Q: M+プラグイン開発のきっかけを教えてください
ボランティアでモデリングを教えている高校生がモデル駆動開発に取り組んでいて、それを支援するツールとして作りました。モデルからコードを自動生成するモデリングツールやプラグインは既にいくつかあったのですが、高校生にとってはどれも使いこなすのが難しかったようで浸透しませんでした。そこで、高校生でも使いやすいものをと新たにつくりました。また、高校生がastah*を好んで使っていたことから、astah*のプラグインとしました。
Q: astah*を選んでくださりありがとうございます。仕事、勉学の傍らボランティアとは頭が下がります。ボランティア活動のモチベーションは何でしょうか?
当初は「高校生でもモデル駆動開発を実践できるのか?」という興味や関心がモチベーションでした。ボランティアは今年で6年目なのですが、高校生たちは優秀で、今ではETロボコンという社会人も参加する大会で全国3位になるほどです。多少の支援があれば、高校生だけでモデル駆動開発を実践できるまでになっています。
今現在のモチベーションは、ソフトウェアだけでなくハードウェアなども含めたシステム全体を対象に「高校生でもモデルに基づくシステムズエンジニアリングを実践できるのかチャレンジしてみたい」という思いです。簡単ではなく時間もかかると思いますが。
あとは単純ですが、高校生の成長の早さやガッツに触れると、刺激になって楽しいです。高校野球を応援する感覚に近いかもしれません。(笑)
Q: ETロボコンは、弊社社員も実行委員として毎年関わっています。しかし高校生が全国3位とは素晴らしいですね。手嶋さんがastah*を知ったのもETロボコンがきっかけですか?
いいえ。astah*は、十数年前、オブジェクト指向やUMLを学び始めた頃に初めて使いました。当時はJUDEという名前でした。
無償で使えるモデリングツールはとてもありがたかったです。
(※現在も、astah* communityは無償版として提供しております)
astah*は、デザインの良さや直感的な操作感が気に入っています。モデリングツールはいくつか使っていますが、その中でも一番ユーザーフレンドリーなモデリングツールだと感じています。手間をかけずにサッとモデルを描きたい時に重宝しますね。
Q: ありがとうございます。ところで、プラグイン名称「M+」の由来は何でしょうか?
「モデルにプラスの価値を与えたい」という思いを込めました。
このプラグインを使うことで、再利用性や移植性の高い、より良いモデルをつくることに繋がればと思っています。今はソフトウェアのモデルのみ対象としていますが、ゆくゆくは、ハードウェアなども含めたシステム全体を対象とするモデルに対しても価値を与えられるようなプラグインにしたいですね。時間があればですが。。。
Q: プラグイン作成で苦労した点などあれば、教えてください
プラグインの開発環境やAPIのドキュメントは、チェンジビジョンさんがしっかり整備されているので、開発作業する上で苦労はなかったです。
苦労したのは、MDA(Model Driven Architecture)について文献を調べて、MDAの仕組みをどう実現するか(取捨選択やカスタマイズを含め)考えるところでした。
Q: M+プラグインは、どんな人に、どのように活用してほしいですか?
高校生のためにつくったので、分かりやすさや使いやすさにはこだわっています。なので、特に高校生や大学生など、モデル駆動開発の初学者に使ってみてほしいです。
あとは、UMLのモデルをC++のコードにどうマッピングすればよいかわからない、あるいは、開発していると徐々にモデルとコードが乖離してしまう、といった悩みを持つ人にも使ってほしいです。悩みを解決する手助けになるかもしれません。
以下、実際にM+プラグインを使っている聖望学園高等学校 科学部の遠矢さん、岩田さん、久保さん、市村さん、小林さんにお聞きしました。
Q: M+プラグインを使ってみて、どんな効果がありましたか?
1つ目の効果は、モデルとソースコードの乖離がなくなったことです。M+プラグイン導入前は、開発が進むほどモデルとソースコードに乖離が見られていましたが、M+プラグイン導入後は、ソースコードに変更を加える前にモデルに戻って変更し、変更を加えたモデルから再度ソースコードを生成するようになりました。
2つ目の効果は、ソースコードを書く時間が大幅に短縮されたことです。私たちがM+プラグインを使って開発しているETロボコンのプログラムには約30個のクラスがあり、M+プラグインを使用せずにソースコードをすべて手書きすると、当然時間がかかります。また、モデルに記述したことをソースコードに書き写すだけの作業は単調なものなので、チームメイトは気力をなくし、より一層作業に時間がかかります。さらに、人間がソースコードを記述するとどうしてもタイプミスをしてしまうため、ヒューマンエラーが発生しこれもタイムロスの原因となります。一方でM+プラグインを使用した場合には、詳細なアルゴリズムを除いてソースコードは短時間で自動生成されます。これにより単調な作業が減り、タイプミスの心配もなくなるので、結果的にかなり時間が短縮されます。
この結果、これまでより短時間で開発することができました。例えば、ETロボコンで扱うロボットの形が変わっても、一月程度でロボットを動かすことが出来ました。
Q: M+プラグインはどんな人におすすめですか?
UMLを勉強し始めた初心者におすすめです。
プラグインを導入することで開発の効率化につながることはもちろんですが、UMLとソースコードの関係を学習することにも利用できます。UMLのクラスをC++のソースコードにした時どうなるのかを知ることができるからです。
UML学習用の書籍にはソースコードの例を合わせて載せている本もありますが、部分的であり、実際に知りたいところが記載されていないことがあります。このM+プラグインでは、クラスを基に、ルールに従ってソースコードを生成してくれるので、どういったクラスを書くとどのようなソースコードが生成されるのか分かるため、クラスとソースコードを関連付けながら学習することができます。また、関数内の記述はソースコードを生成し直しても消えないため、少しずつソースコードと動作を確認しながらクラスを変更していくこともできます。

インタビュア:上馬
手嶋さん、聖望学園高等学校 科学部の遠矢さん、岩田さん、久保さん、市村さん、小林さん、インタビューにご協力いただき、ありがとうございました。
手嶋さんのモデリングに対する熱い思い、学生さんからは、具体的な効果などお伺いできて、非常に参考になりました。
手嶋さんは、M+プラグイン利用者の声を聞きやすくするため、問合せプラグインへのフィードバックフォームを設けていらっしゃいます。M+ご利用の皆さん、手嶋さんに熱いエールやフィードバックを是非お送りください!
M+プラグインの詳細やダウンロードは、下記画像をクリックしてください。
「“モデルにプラスの価値を与えたい” – C++コード生成プラグイン作者インタビュー」への1件のフィードバック