m-fileに品質を!

MATLABにおけるプログラミングといったら、なんといっても m-file でしょう。とってもお手軽にかけるいい言語です。

ところが、m-fileの品質確保は、ちょっとした問題です。色々と理由はありますが、一番の問題は「弱い型付け」だと私は思っています。要するに、変数 a が、整数なのか文字列なのかわからない。というより、実行時にしか決まらない。ヒドイのになると、関数の戻り値が、文字列の場合もあれば数値の場合もあるという、便利な反面ちょっと怖い言語なのです。(Simulinkにもそういう傾向ありますね。ま、その話はまたいずれ。)

文句を言っていてもしょうがないので、なんとかしましょう。とは言え、やれる事はほかのプログラミング言語と大差ありません。

品質のためにできること

バージョン管理やコードレビュー

バージョン管理は、まぁ、やりますよね。フリーのツールがごろごろしてますが、私はKilnを愛用してます。これだと、バージョン管理対象のコードに対して、コードレビューまでできます。私が見た限り、一番よく出来てるツールだと思います。(私のような、脳みそ小さい系のエンジニアにも使いこなせるツール、と言ったら良いでしょうか。とにかく簡単に使えるところが気に入ってます。ツールを使うために分厚いマニュアル読めとか、まっぴらごめんですよ!)

diffとマージについては、Simulinkモデルの場合はちょいと手こずりますが、m-fileは単なるテキストなので楽勝です。Beyond compareだろうがなんだろうが、お好きなツールで!

オブジェクト指向の導入

言語がアレなぶん、せめて設計でカバーしないといけません。オブジェクト指向は、関心の分離を実現するのに便利です。

昔は、1メソッド=1ファイルという、とってもステキな仕様でした。そのため、m-fileによる開発は絶対ヤダ!という声をちょくちょく耳にしました。

しかし、R2008からは、 1クラス=1ファイルという一般的な仕様に変わりました。継承や、private/protected/publicメソッドなど、必要と思われる機能はだいたい入っているため安心です。

静的チェック

m-fileは好き勝手に書ける分、注意が必要です。そういう場合には、静的なチェックも有効です。実は、最近のMATLABエディタにはこの機能がついてます。m-fileの編集中に勝手にチェックしてくれるという、とっても優れもの。MathWorksグッジョブ!

編集中に静的解析が行われ、修正案まで出してくれる

動的チェック(単体テスト)

品質保証の最後の砦はテストです。やっぱり、テストしてみなくっちゃいけませんね。

個人的な希望としては、publicメソッドもprivateメソッドもダイレクトにテストでき、なおかつ ステートメントカバレッジ、デシジョンカバレッジなど複数のカバレッジを表示してほしかったのですが・・・さすがに無理でした。

そこで、MATLABの単体テストツール一覧などを参考に、いろいろと試してみる事に。

今回は、R2010bでの動作が目的のため、R2010bで動かないツールは却下です。

まず、いちばん心にヒットしたのはMUnitというツールなのですが、なんと既に公開停止に・・・返す返すも残念。

その他にいろいろと試してみたのですが、R2010bだと動かないツールもちょくちょく。そんなこんなで最終的に落ち着いたのが、MATLAB xUnitです。今回は、これを使用することにします。

つづく

ホントはMATLAB xUnit+カバレッジ測定が動作する様子をご紹介するつもりでしたが、時間切れです。来週くわしくご紹介します。