Javaを使って企業システムなどのソフトウエアを開発する場合,クラスの依存性が問題になることがよくあります。例えば,あるクラス(クラス1)が機能するために別のクラス(クラス2)が必要だとします。この場合,クラス2がまだ実装されていないと,クラス1の動作を確認できません。つまり,クラス2が完成するまでクラス1の開発が止まってしまいます。

 この問題を解決するために使われるのが「モック」と呼ばれる偽のクラスです。モックは,内部のロジックは実装されていませんが,外からは正しく動くように見えます。モックが本物のクラスの振る舞いをまねることで,本物のクラスが未完成でも,それに依存するクラスの開発を進めることができます。

 ただ,モックを手作業でいちいち記述するのは面倒です。そこで,モックの生成ツールが使われることがあります。従来のモック生成ツールは,モックのための特別なコードを記述する必要がありました。利用するには,ソフトの開発者がそのツールのためのコードの書き方を勉強しなければなりません。また,この特別なコードは「資産」として再利用できないため,せっかく手間をかけて記述しても,あとで破棄することになるという問題もあります。

 では,不要になる「特別なコード」ではなく,再利用性の高い「テスト・コード」からモックを生成すればどうでしょう。このような発想から生まれたのが機械猫モッカーです。機械猫モッカーは,Javaのユニットテストのフレームワークとして広く普及しているJUnitのテストケースからモックを自動生成します。

 テスト・コードには,テスト対象がどのように動作すべきかという「仕様」が記述されています。機械猫モッカーは,これを逆手に取ってモックの生成に利用します。テストを仕様とみなすのは,テスト駆動開発(Test-Driven Development:TDD)に通じる考え方であり,実際,機械猫モッカーはTDDの際に用いるのに適しています。

 最初のバージョンが公開されたのは2005年3月です。2005年6月にオープンソース化されました(ライセンスはCPL:Common Public Licence)。また,2006年度上期の「未踏ソフトウェア創造事業」に採択されています。

 機械猫モッカーは,Eclipseのプラグインとして利用できます。インストールは,Eclipseのpluginsフォルダに配置するだけです。プラグインとしてではなく,コマンドラインから利用することも可能です。

テストケースのみ
 テスト対象がないのでテスト失敗(レッド)
テストケース+モック
 モックがテストをクリア(グリーン)
図1●機械猫モッカーを使ってテストケースからモックを生成



機械猫モッカー
ジャンル:モック自動生成ツール
開発:伊尾木将之氏(本体),
   河野広伸氏(プラグイン) 
URL:http://kikainekomocker.hp.infoseek.co.jp/