Simulinkモデルの新形式(R2012aで導入)
まだまだ超絶忙しいため、ちょっとした小ネタを。
Simulinkモデルを保存すると、 .mdl ファイルになります。これは単なるテキストファイルです。ところがR2012aから試験的に、Simulinkモデルの新形式 slx が導入されました。
新モデルと旧モデル
これはR2012aではオプションですが、R2012b以降ではデフォルトになるとの事なので、今のうちに準備しておくのも良いかも分かりません。
今回は、どこにどんな影響があるのか?また、そもそもどうしてマスワークスさんは slx に移行しようとしているのか、私見を書いてみます。
まずは slx を使ってみる
R2012aで slx を使うには、MATLABコマンドプロンプトにて以下のように入力する必要があります。
set_param(0,’ModelFileFormat’,’slx’)
これで、モデルを保存する際には slx が使われるようになります。
(ちなみに元のmdlを使うようにするには次のように入力します。
set_param(0,’ModelFileFormat’,’mdl’)
)
さて、モデルを開いて適当にブロックを配置し、これを保存しようとしますと次のようになります。
保存しようとしている
保存したファイルはこんな感じです。
slxファイル
これ、実はZIPファイルなのです。拡張子を zip に変更して、
zipに変更
展開するとこうなります。
展開したところ
その中にいくつか xml ファイルが出来ていますが、そのうちの1つ「blockdiagram.xml」を開くとこうなっています。
XMLで記述されたモデル
これ、実はR2011b以前にモデルをXMLで保存したときのものと大体おなじです。
(MATLABコマンドウィンドウにて、
save_system(‘モデル名’, ‘exported_file_name.xml’,’ExportToXML’, true)
とすると、モデルをXMLに変換できます。)
slxに移行すると、どんな影響があるのか?
マスワークスさんのサイトで触れられているのは、次の2点です。
モデルを扱うツールへの影響(1)
ツールからモデルファイルを開く場合、「拡張子 mdl 」のファイルを開くようにしている場合が多いかと思います。あるいは、拡張子 mdl のファイルを検索しているツールがあるかも分かりません。
拡張子の変更によって、これらのツールが正しくモデルファイル(拡張子が mdl から slx になった)を認識できなくなるため、ツールの更新が必要になります。
モデルを扱うツールへの影響(2)
mdlはテキストファイルでしたが、slxはバイナリファイル(中身はzip)です。バージョン管理システムなどで、モデルがテキストファイルである事を前提にしている場合には、対応が必要です。
slxに移行すると、さらにどんな影響があるのか?
私見ですが、次のような影響もあるように思います。
モデルを扱うツールへの影響(3)
たとえば medini unite(モデル差分、マージツール。おすすめです)は、mdlファイルの中身を直接解析しています。そのため、slxになってしまうとツールの更新が必要になります。
ただし、slxの本体はxmlなので、従来よりモデル解析が容易になるはずです。そういう意味で、medini uniteのようなモデルを直接解析するツールにとっては追い風のように思います。
将来的に、複数ファイルの埋め込みも可能に?
これは完全に妄想ですが、将来的には slx に複数ファイル(matファイルとか、mファイルとか)を埋め込めるようになるかも分かりません。まさにzipならではの応用です。
なぜマスワークスさんはslxに移行するのか?
これも完全に妄想です。
理由はたくさんあると思うのですが、オプション「Report Generator」に付属のモデル差分機能も1つの要因ではないかと思っています。
モデルを直接解析する medini uniteと違い、Report Generatorでは mdl ファイルをいったん xml ファイルに変換し、そのxmlファイルをベースにモデル比較を行っています。(これには理由があるのですが、ちょっとアレな話なので。ちょっと不便なのですが、とにかく、どうしようもないのです。)
それであれば、モデルファイルのフォーマットをそもそも xml にしてしまえば、モデル差分も簡単になるじゃない!という話が出てきても不思議ではありません。デファクトを握っている会社ならではの戦略です。
(繰り返しますが、完全に妄想であり、単なる憶測です。)