自動車業界では、MATLAB/Simulinkをベースとしたモデルベース開発が有望視されています。言うと、適用方法によってはそれなりに工数削減や品質向上が出来ると言う事が実証されてきたからです。一方ではモデルベース開発によって逆に工数が増加してしまうケースもあり、まだまだ課題が山積みです。これは、ユーザー様にとっては課題が山積みと言えますが、私にとっては仕事のネタが山積みとも言えます。このブログでは、そういったモデルベース開発に関わっていく中で思った事について書いていきます。更新日は月曜日+気が向いた日です。yositakeTags:お仕事でMATLAB向けツールを作る場合、m-fileで書く場合が殆どです。m-fileは、小規模なツールを作る分には問題ありませんが、世の中のスクリプト言語たちと比べるとパワー不足が目立ちます。使い捨てツールのつもりで作ったものがバカうけして、いつのまにかお客様の開発を支える重要なインフラになっちゃったやつがあります。(ツール屋さんのお仕事で書いたものとは、ぜんぜん別のものです)このツールには、あの機能をのせたい、この機能をのせたい、という要望がモリモリ来て、いつのまにか、それなりの規模になってしまいました。これ以上、m-fileでメンテナンスをするのは無理!という所まで来てしまったため、脱出先を検討しています。Pythonで、いってみようあれこれ調べて、さんざん迷った挙句、仮決定したのはPythonです。Pythonは、m-fileからの移植する場合、比較的ストレートに移植できます。MATLABの配列から、非0の要素だけ取り出すには、こう書けます。Pythonで書くと、次のようになります。表記方法は違いますが、m-fileで出来る処理が、Pythonでも同じ考え方のまま実現できるというのは心強い限りです。Compilerというツールもありますが、試してはいません。)MATLABとPythonをつなぐツールをPythonに移植するからといって、MATLABがいらなくなる訳ではありません。単なる計算や、ファイルの処理であればPythonで十分ですが、Simulinkモデルが関係するような処理は、MATLABが必須です。そのためには、MATLABからPythonを呼び出せるようにしないといけません。これには、pymexというMATLABとPythonとの橋渡しをしてくれるツールが使えそうです。・MATLABで書かないと仕方がない部分の2つを協調動作させられます。具体的には、pymexを使うことで次の事が実現できます。・MATLABから、Pythonモジュールを呼び出せる(引数つきで)・Pythonからの戻り値を受け取れるポイントは、MATLAB変数と、Python変数の間の変換をしてくれるところにあり、pymexのソースコードの大部分は、その処理に費やされています。このpymexは、基本的にすばらしいツールなのですが、どうやら開発が放棄されてしまっている模様。そのため、Pythonの最新版では動作してくれません。私がやりたい事とは微妙にズレているため、機能拡張も必要です。運がいいことに、これはMITライセンスを採用している模様。著作権表示さえしておけば、勝手に改造したあげく、お客様のプロジェクトに適用しても問題なさそうです。具体的に、このツールにどんな機能を持たせたいのか?それはどういった理由から?といった事は、又の機会に書くことにします。完成品はこちらのブログで公開する予定です。コメントを投稿して頂くには、JavascriptとCookieを有効にしていただく必要がございます。