IPA


開発成果一覧へ

 



2006年度上期 未踏ソフトウェア創造事業  採択案件評価書


 




1.担当PM

   千葉 滋 (東京工業大学大学院 情報理工学研究科 助教授)




2.採択者氏名

開発代表者

伊尾木 将之 (日本アイ・ビー・エム株式会社 インダストリーソリューションズ)

共同開発者

なし




3.プロジェクト管理組織


 日本エンジェルズ・インベストメント株式会社




4.委託金支払額


  4,500,000




5.テーマ名


 テストケースから擬似クラスを自動生成する「KikainekoMocker」の開発




6.関連Webサイト


 http://kikainekomocker.hp.infoseek.co.jp/




7.テーマ概要


 近年、開発の容易性などを高める技術として擬似クラスを活用する手法が注目されています。擬似クラスとは、モックやスタブ、ドライバなどの名前で知られる「実装は正しくないが、見かけ上は正しいクラス」のことで、主に開発・テストを容易にするために用いられる手法です。
ですが擬似クラスはその有用を認識されながらも、擬似クラスを作成するという作業が概して高コストな作業となってしまいやすく、現場では積極的に活用されるにはいたっていません。
この問題を解決するために、SCTSimulated-Class by Tests)というテストコードから擬似クラスを自動生成する手法を提唱しています。そしてまた、SCTを実現するツールとして「KikainekoMocker」を開発しており、現在オープンソースとして公開しています。
本プロジェクトでは、このKikainekoMockerの機能拡張・およびWebサイトやドキュメントの充実を図ることを目的とします。
KikainekoMocker
を用いると、テストを書くだけで、擬似とは言え実際に動作する実装が手に入れることができます。この点を上手く用いることによって、新たな利点を享受でき、迅速且つ堅牢な開発を促進できるようになります。また、この手法はTDDTest-Driven Development:テスト駆動開発)と親和性が高いことも知られています。
KikainekoMoker
の機能充実と普及によって、世界の開発者が賢く楽をすることを目標とします。




8.採択理由


 疑似クラス (Mock) は、テスト等の局面で、今やソフトウェア開発にかかせないものになっている。これを自動生成するために提案者が開発した Kikaineko Mocker の完成度は現状でも十分高く、本事業の支援によってさらに完成度を上げ、ドキュメントを充実させれば、ソフトウェア開発の現場に広く普及する可能性がある。よって採択が適切と判定した。

 




9.開発目標


 擬似クラスを簡便に自動生成するツールKikainekoMockerを開発する。擬似クラスとは、システム開発を効率的に行うために近年よく使われるようになってきた手法の一つである。擬似クラスとは、実装は正しくないが、振る舞いのみを見る限り正しいように見えるクラスのことであり、モックやスタブの名前で知られている。この擬似クラスを利用することによって、開発中のクラスに未実装のクラスへの依存関係や、環境に依存したクラスへの依存関係などがあっても、動作テストをおこなうことができるようになる。擬似クラスの利用が有効であることは広く知られているが、擬似クラスの作成自体にコストが掛かってしまうことが多く、結果として現実の開発現場では広く用いられるに至っていない。本プロジェクトは、擬似クラスをそのテストケースから自動生成するツールを開発することで、擬似クラスの利用を普及させることを目標とする。テストケースは、擬似クラスの作成の有無にかかわらず必要なものなので、擬似クラス生成専用になんらかの記述が必要となる従来の類似ツールより、KikainekoMocker は開発者に受け入れやすいと考える。




10.進捗概要


プロジェクト開始時点で KikainekoMockerがすでにある程度実利用可能な状態であったこともあり、当初開発は順調に進んだ。ただ中間報告会の時期には、当初必要とされた機能はほぼ実装し終わってしまい、残りの開発期間をどうするか再考しなければならなかった。考慮の結果、残りの開発期間は Java 5 での文法拡張への対応、C# 言語への対応、ドキュメントや web サイトの整備に費やされた。

 




11.成果


擬似クラス自動生成ツール KikainekoMocker を現実の開発現場で利用できる品質に高め、オープンソースソフトウェアとして下記サイトから公開した。

 

http://kikainekomocker.sandbox.seasar.org/

 

本プロジェクト期間中の開発成果は以下のとおりである。

 

KikainekoMocker の機能強化

 

標準クラスパス以外のクラスファイルのロード機能、例外を投げる擬似クラスへの対応、static メソッドへの対応、for 文等の制御構文への対応、多次元配列対応、すべてのプリミティブ型への対応、擬似クラスの戻り値を局所変数へ保存するテストメソッドへの対応、などの機能を実装した。

 

この他にも、これまでテストクラスに課していた制限の緩和、JUnit 4 形式のテストケースへの対応、Java 5 で導入された generics、拡張 for 文、オートボクシング、可変長引数、static インポートへの対応をおこなった。

 

C# KikainekoMocker の開発

 

本プロジェクト開始以前 Java KikainekoMocker と同等の機能しかもたないが、C# 版の KikainekoMocker を開発した。

 

・ドキュメントの整備

 

KikainekoMocker web サイトを刷新し、ドキュメントを整備した。KikainekoMocker とは何か、その使い方、どのように動作しているのか、エラーになった場合の対処法などについて解説した。また英文のドキュメントも作成した。

 




12.プロジェクト評価


今日の開発ではほぼ必ず書くといってよいテストケースのプログラムから、擬似クラスを自動生成してしまうというアイデアは秀逸である。またKikainekoMockerの実装方法も高度であり、テストケースとして書かれたJava プログラムを構文解析し、擬似的に実行することでテスト対象のクラスの振る舞いを推測するというものである。開発者に高い技術力がなければ、このようなソフトウェアの開発は不可能であり、これだけの内容のソフトウェアを短期間で作り上げた能力は高く評価できる。ただ、今回のプロジェクトでは、途中で予定していた機能をほぼ作り終えてしまい、残りの開発期間の間、少し目標を失って試行錯誤していた感があったのが残念である。

 




13.今後の課題


KikainekoMocker
のアイデアは非常に秀逸であるが、秀逸であるがゆえに、一般の開発者にその意義をわかってもらい、KikainekoMockerを日々の開発に活かしてもらうのは必ずしも容易ではないだろう。KikainekoMockerのさらなる完成度の向上はもちろんのこと、普及のため様々な紹介活動やパイロットプロジェクトの実施などがかかせない。今後ともKikainekoMocker の開発を続け、是非、このソフトウェアを一般に普及させてほしい。

 



  ページトップへ   

 

 




  Copyright(c) Information-technology Promotion Agency, Japan. All rights reserved 2004