Engineering2012年1月26日木曜日Excel帳票駆動開発用ツール「ブックみくらべ」をリリースしました前回、テスト駆動開発について少しお話をしました。今回は、Excel帳票駆動開発のためのツール「ブックみくらべ」をリリースしたので、テスト駆動開発との違いに触れながら帳票駆動開発(弊社造語)のお話をします。ブックみくらべ(ベクターでも公開する予定です)https://bitbucket.org/mozanitworks/books-differenceテスト駆動開発とはテストを行うプログラムを先に作成し、そのテストに通るようにプログラムを書く開発手法のことです。プログラムの修正は、影響範囲を読み切ることが難しく、A、B、Cといった機能があるときに、Aという機能を修正すると、BとやCに想定外のバグが出ることがしばしばあります(参考:バグ修正のための変更の40%が新たなバグを混入させる)。これを防ぐために、A、B、Cのプログラムに自動で動作確認をするプログラムを書きます。Aを修正したときに、Aを確認するだけでなく、A、B、Cのすべてのプログラムを自動で実行し、他に影響がないことを確認します。両者ともに共通することは、自動で確認をするため、修正や変更に強くなることです。テスト駆動開発と帳票駆動開発のちがいテスト駆動開発は、"プログラム"にまちがいがないかを自動で確認する開発手法です。Excel帳票駆動開発は、"帳票"にまちがいがないかを自動で確認する開発手法です。テスト駆動開発は、自動で動作を確認するテストプログラムを書きます。これにより、プログラムレベルの堅牢性は増しますが、テストプログラムを書くコストがかかります。これに対し、帳票駆動開発は、最終的に出力されるExcelの帳票の差分を比較します。現行のプログラムが出力する帳票と修正したプログラムが出力する帳票を自動で差分比較します。比較は、今回のツールを使えば、ワンクリックで終了します。これにより、差分として出力されなかった部分については動作を保証し、差分として出力された部分を確認すれば、修正の確認が完了します。Excel帳票駆動開発は、テスト駆動開発に比べて内部の堅牢性は下がりますが、その分遥かに高速にユーザーに見える部分をテストすることができます。どちらが優れているのかナイフとハンマーがその用途によってその利便性が違うように、用途によって変わります。私が前回テスト駆動開発用ツール「VUnit」をリリースし、今回ブックみくらべをリリースしたのは、相互に足りない部分を補うためです。テスト駆動開発は、たしかに堅牢性が増すのですが、チームやソフトウェアに浸透させるまでに時間がかかります。今あるソフトウェアの規模だと、1年から2年の仕事になると思います。長期的にはこれでも構わないと思うのですが、短期的な面では不満が残ります。そこで、ブックみくらべを作成しました。弊社のソフトウェアはExcelやCSVで帳票を出力する機能がほとんどなので、短期的にもこれで品質向上が望めます。弊社はとても小さなチームです。今のメインクライアントは、複数のベンダーと契約しています。その多くは、とても大きなベンダーで、通常ではとても太刀打ちができません。確認作業なども、マンパワーが足りないため、どうにかして効率化する必要があります。効率化の源泉は、先日お話したアジャイル開発と小さなチームならではの小回りです。使えるツール・手法はどんどんスピード感をもって導入・学習し、なければサクっとつくり、改善する。品質保証に関わる効率の向上は、スピードに直結します。確認やバグ修正、それに付随する手戻りが減り、手が空くことで、より人間的な作業に集中し、新しい機能を開発していくことができるからです。