R2011b新機能:Simulinkプロジェクト
フォルダーの中には大量の .mdl .m .mat ファイル。管理するのが大変だ!というユーザー向けに、R2011bにてSimulinkプロジェクト機能が追加されました。
ファイルがいっぱいあっても、モデルを作った本人は困りません。しかし、作ったモデルを社内に展開するとなると、なんらかの工夫が必要になります。
正直、個人的には現状でもあまり不便を感じていないのですが、興味半分にどんなものなのか調べてみました。
ちなみに日本語ヘルプには使い方が載っていないので、マニュアルはマスワークス本社のもの(要ログイン)をご参照下さい。
Simulinkプロジェクト機能の概要
SimulinkモデルやMファイル、MATファイルなどを登録しておいて、実行したり、変更を管理したりするためのものです。とにかくファイルを全部管理してくれるモノです。
ショートカット機能
Simulinkモデルが大規模になってくると、ブロックパラメータを直接数値で指定しないで、ワークスペース変数名で指定するようになります。そのワークスペース変数は、MファイルやらMATファイルやらを使ってセットアップします。そうすると、プラントモデルの特性切り替えなどを簡単に行えます。
従来の手法
目のつくところにMファイルやMATファイルを置いておきます。ファイル名に setup とか、○○走行パターンとか、分かりやすい名前をつけておけば、きっとユーザーが勝手にクリックしてくれる・・・はず。
まぁ、たいがいはドキュメントを書いて、「モデル実行前にこういうコマンドを実行しましょう」という注意喚起をする事になると思います。
あとは、Simulinkモデルのモデルプロパティ設定で、「モデルを開いたときに、自動的にこのMファイルを実行しろ」という指定も出来ます。こうすると、ユーザーとしては何もしなくて良いので便利です。
Simulinkプロジェクトの機能
Simulinkプロジェクトを開いた際に、自動的に実行して欲しいMファイルや読み込んで欲しいMATファイルを指定できます。これで、「モデル実行前にはこのMファイルを実行してね」というような説明書きは不要になります。
また、開いた時とかに限らず、好きなタイミングでここから実行することも出来ます。まさにショートカットですね。
新機能の良い点
どのMファイルやMATファイルを実行するべきなのか?が、画面上で一目瞭然なのがグッドです。
ラベル
いっぱいファイルがあると、どのモデルが開発中なんだっけ?とか、このモデルの担当者って誰だっけ?とか分からなくなりがちです。
従来の手法
そもそも、こういった事は管理していないんじゃないかと思います。あえてやるなら、Excelで管理するくらいでしょうか。
あるいは、ファイルのバージョン管理システム(CVSとかSubversionとか)の方で一括管理しているケースもあると思います。
Simulinkプロジェクトの機能
こんな感じに、各モデルやMファイルに対して「ラベル」がつけられます。ラベルの項目としては「状態」「担当者」など好きに作ることが出来、それぞれに対して「開発中」「安定」といった感じの好きなラベルを張れます。
新機能の良い点
ファイルの状態をプロジェクトで一括管理でき、簡単に閲覧・変更できるというのがスッキリしていていい感じです。
ファイル間の依存関係の解析
規模が大きくなってくると、Simulinkモデル1つに全部つめこむ、という事も少なくなってきます。たいがい、「モデルリファレンス」だったり「ライブラリ」だったりの機構を利用して、モデルファイルを分割していきます。Mファイルも同様で、細かいMファイルがいっぱいあって、お互いに呼び出しあったりするようになります。
ここが曖昧なままモデル一式を配布しようとすると、漏れが生じてしまうかも分かりません。
従来の手法
モデルにせよMファイルにせよ、動かそうとしてエラーが出れば「あ、何かファイルが足りないな」という事がわかります。
そもそも、関係ありそうなファイルは1つのフォルダーにまとめておくのが一般的です。ですから、あんまりマジメに依存関係を解析しようという動機もないように思います。
Simulinkプロジェクトの機能
どのファイルがどのファイルに依存しているのか、自動的に解析してくれます。そして、足りないファイルがあれば 赤い× マークで警告してくれます。
新機能の良い点
従来手法の「動かしてエラーが出れば」というのは手っ取り早いのですが・・・いかにも手抜きです。
きちんと依存関係を解析させておけば、安心して配布に必要なファイルがそろっている事が確認できます。1つのフォルダーにまとめておけば心配は減りますが、「絶対に、必要なファイルがそろっているの?フォルダーの外には依存していないの?」と確認するには、やっぱりツールが必要です。
バージョン管理
レガシーコードと同様、モデルにもバージョン管理が必要です。そうでないと、「動いていたバージョン」を上書きしちゃったせいで、どうにもならなくなった!というような事が起きかねません。
従来の手法
バージョンごとにフォルダーを作って、ファイル一式をまるごとコピーしているケースもあるでしょう。
あるいは、市販・フリーのバージョン管理システムをおつかいの場合もあるでしょう。
ちなみに私は、CVS、Subversionを経て、今はMercurialを使用しています。それをTortoiseHgというGUIから使用しているのですが、とても便利で気に入っています。
Simulinkプロジェクトの機能
Subversionが組み込まれていて、コミット(ファイルの変更内容を、システムに登録)、DIFF(以前のバージョンのモデルと、今のモデルとを比較)などが出来るようになっています。
ちなみにDIFFを実行しようとすると、Report Generatorが起動します。
新機能の良い点
バージョン管理のための機能が、プロジェクト管理に統合されているのが良い点です。
将来に期待する点
あえて新機能の良い点ばかりを書いて来ましたが、「これは将来に期待だなー」という点もあります。(まだ出たばかりの機能ですから、あって当然です。)
バージョン管理システムを選びたい
どうやらSubversionが組み込まれちゃってて、他のバージョン管理システムを選べないようになっている感じです。(私の勘違いだったらごめんなさい。ちょっと自信なしです。)
既にバージョン管理システムを使っている場合、あえてSubversionに移行しないといけないというのはツライものです。
Simulinkプロジェクトのバージョン管理システム関連の機能はオフに出来るので、当面は既存のバージョン管理システムのGUIを使い続けるのも手かと。
DIFFツールを選びたい
モデルを比較しようとすると、マスワークス社製のReport Generatorが起動します。まぁデフォルトはこれでいいとして、やっぱり別のツールも起動できるようにして欲しいところです。既にDIFFツールをお持ちの方も多いと思いますので。(個人的には、medini uniteが気に入っています。)
プロジェクトファイルをダブルクリックしたい
ちょっと分かりづらいと思うのですが、たとえばSimulinkモデルを起動しようと思ったら、MDLファイルをダブルクリックしますよね?
ところが、Simulinkプロジェクトの場合、ファイルをダブルクリックしてプロジェクトを起動!という感じにはなっていません。なぜなら、プロジェクトファイル(?)そのものが存在せず、いくつかのフォルダーにXMLファイルが分散されているだけだからです。
ここはダミーでも良いので、Simulinkプロジェクトファイルというものを作って、これをダブルクリックすればプロジェクトが開くよ!という感じになると、モデル一式を配布するときに分かりやすくていい気がします。
まとめ
従来手法と比較して、圧倒的に有利なものは「ラベル」機能です。
それ以外でも見た目はとても気に入っていますが、やっぱりバージョン管理システムを選べないのがネックだなーという感じです。
とはいえSimulinkに標準でついてくる機能です。これで作っておけば、モデル配布先のPCでも間違いなく動作するという事が期待できるわけですから、今のうちに使い慣れておくのもアリでしょう。