昔話-Matlab-Simulink編

昨日、なかなか寝れずに自分の過去の仕事を思い出していた。
新人の頃はパワポと調査が仕事だった。DNの「将来のECU開発の方向性を探る」部署の仕事を受けてお客さんの描く未来が「実現可能である」「効率的になる」「だから予算をくれ」というのの手伝いをする仕事。実現可能性を調査して(実現可能であるという結論は変更できない)、デモ用のソフトやら資料をつくたり。
調査結果を物にしていく工程がそのあとあったのだけれど、これは設計が先輩で自分の物って感じがしなかった。MATLAB-Simulink上で動くエンジンECUのブロック線図を、MATLABが持っているC言語に落とすツールのカスタマイズ・機能拡張で実際にECUに載るソフトに仕立てる、という仕事。モデルベース開発と言って、割と最近でも生き残っているらしく仕事があるみたい。MATLABのReal-Time Workshopというツールの持っているスクリプト言語みたいなものでTLC(Target Language Compiler)という言語でした。
そのあとチョロッとナビのUIを作る手伝い(Windows上にシミュレーターが構築してあって、UIはWindows上で開発できるようになっていた。Cを無理やりオブジェクト指向で動かすコーディングスタイルだった)をして、MATLAB-Simulinkの仕事に戻って今度はブロック線図→プログラムというコアの周りに、IDEをつけるようなことを手伝った。ここでちょっとVisual C++をやって、自分の欲しいツールぐらいは作れる程度になって。ただ、これもお手伝いの範囲は超えられなくて、なんとなく今思うと不完全燃焼。
そのあともMATLAB-Simulinkとのお付き合いは続き、Simulinkのブロック線図をコード生成に都合がいいように書き換えるプログラムなんかを作ってた。M-Fileと言ってインタープリタ言語。BASICとCが混ざったような言語だった。
んで、Stateflow対応があったわけです。MATLAB-Simulinkのブロック図からコードを出す、というのに加えて、MATLAB-Simulinkのアドオン(みたいなもの)のStateflowという状態遷移図ツールからコードを出す機能をカスタマイズして、例えばPSA(プジョーシトロエン)のコーディング規約にあったものを出せるように、という仕事。Real-Time WorkshopはほぼすべてがTLC(テキストファイル)で書かれていたのでカスタマイズもしやすかったのですが、Stateflow CoderはM-File(テキストファイル)で書いてあるものの、本文はdllで作られたものが文字列としてドカーッと渡される形で、解析が進まず悩み「無理っス。どんなものを吐かれるかもわかんないので保証できんです」と言ったら「ソフトはテスト以外の保証なんてできねぇんだからテストさえ通ればそれでいい」とゴリ押され、モヤモヤしながら作ってました。
とは言え、この頃にはある程度ソフト開発手法とかも自分で勉強するようになっていて、ExtremeとかOOとかも身になっていたのか、いい設計ができたと思う。設計書を書く時間が取れなかったので、骨格とコメントだけをガーっと書いたファイルを後輩君たちに渡して、「コメントに書いてあることを実装してくれたら動くのでよろしく」という、今思うとかなり無茶なことをやったり。あ、この辺はあくまでもR&DのRのためのもの(車両に載せるものではなくデモ用)だったのでできたことですからね。
今思うと、この仕事で一皮むけた気がするなぁ。無限にいい物を作りたい本能と、コストとのバランスを考えることの折り合いのつけ方とか、ヒトに理解してもらいやすい設計とか、「仕事」としてのソフト技術者のやり方を初めてやれた気がする。


気が向いたら続きます。