編集(管理者用) | 差分 | 新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴

20040308 -

「ハッカーへの道」バックナンバーに戻る

======================================================================

      ハッカーへの道 
      〜 僕がオープンソースプロジェクトから学んだこと 〜

      2004/03/08 品質を維持するテストツール

      http://popfile.sourceforge.jp/hacker/index.html 

======================================================================


■ 前号のあらすじ

ユーザーインターフェースの翻訳作業を効率良く進めるためにおこなわれてい
る、POPFile の2つの工夫を紹介した。1つはオリジナルのユーザーインターフ
ェースと翻訳されたユーザーインターフェースとの差分を表示して翻訳し忘れ
を防ぐ機能、もう1つは仮想翻訳モードに切り替えてユーザーインターフェース
に吐き出されていないテキストを検出するための機能だ。

このような工夫は後から取ってつけたものではなく、始めから POPFile が英語
以外にも翻訳されることを想定して組み込まれている。つまり始めからターゲ
ットユーザーは世界中の人なのである。


-----今週の目次-------------------------------------------------------

■ 上昇気流のスポット
■ 品質を維持するテストツール
■ 僕の代わりに日本語化をテストしてくれる
■ 次号予告
■ 編集後記

----------------------------------------------------------------------


■ 上昇気流のスポット

僕は一時期少しパラグライダーをやっていたことがある。パラグライダーは上
昇気流に乗ることによって飛び続ける。気流のないところではどんどん下がっ
ていってしまうので、上昇気流があると思われるスポットを見つけ、その場所
に素早く入るのだ。遠くに飛んでいくには、上昇気流のあるスポットを次々と
見つけ、転々としながら飛んでいかなければならない。車に例えれば、上昇気
流のあるスポットはガソリンスタンドのようなものだ。ここで、高度をかせぎ、
つまりエネルギーを貯めて、次のスポットまでこのエネルギーを消費しながら
飛んでいく。

その時のインストラクターが物事を全てパラグライダーに例えて面白いことを
言っていた。僕がちょうど転職を考えていたときだ。上昇気流のあるスポット
に一端入り込めば、その場所に居続ける限りは高度が下がることはない。しか
し、一歩そこを離れれば、高度は下がり始めるので早く次の上昇気流のスポッ
トを見つけなければならない、という話をしてくれた。つまり転職前の会社が
上昇気流のスポットで、そこから動かずじっとしていれば安泰だが、その場所
を離れるということはリスクがあるということを説いてくれたのだ。しかし一
方で、そのリスクを覚悟しないと遠くには行けないのである。

この話を今度はソフトウェアにあてはめてみよう。現在安定して動いているソ
フトウェアに何も手を加えなければ安泰である。上昇気流のスポットにいる状
態だ。しかし、新しい機能をつけよう、バグを直そうと思って、一端手を加え
ると、その修正によって新たなバグが入り込んでしまう可能性がある。今まで
うまく動いていた機能が、修正の悪影響で動かなくなってしまうということが
あるのだ。「触らぬ神に祟りなし」とう言葉がこの状態を良く表している。け
れども、そのリスクを負わないと遠くまで行けないというのはパラグライダー
の話に通ずる。


■ 品質を維持するテストツール

POPFile には、今まで動いていた機能が修正によって動かなくなってしまうと
いうことを防ぐため、自動的にソフトウェアを検査するテストツールが用意さ
れている。

例えば、単純に "Hello!" と表示するだけの機能があったとしよう。テストツ
ールは各機能を呼び出して、実際の結果と本来期待される結果とを比べて合致
していれば OK、異なっていたら NG というテスト結果を出す。この場合、期待
される結果は "Hello!" という表示だ。別の場所で小文字を全て大文字に変換
するという機能を付け加え、どういうわけかそれが "Hello!" を表示する機能
に影響を与えてしまったとすると、実際に表示される結果は "HELLO!" となっ
てしまう。テストツールは、"HELLO!" と "Hello!" とを比べ、一致していない
から NG という結果を返す。小文字を大文字に変換する機能がこれまで正常に
動いていた "Hello!" と表示する機能に何らかの悪影響を与えてしまった、と
いうことが自動的にわかるのだ。

テストツールを動かすと、このように期待される結果と実際に得られる結果と
を比べるという処理を、プログラムの各部分で次々に行っていく。そしてテス
ト結果として、比較の結果とともに、プログラムのソースコードのどの部分は
テストでカバーし、どの部分はカバーしていないかを色分けして表示し、全体
で何パーセントがカバーされたかを報告する。

テストツールについてもう少し詳細が知りたければ、POPFile のドキュメンテ
ーションプロジェクト:

http://popfile.sourceforge.net/cgi-bin/wiki.pl?TestSuite

を参照してもらいたい。


■ 僕の代わりに日本語化をテストしてくれる

新しい機能が POPFile に追加された場合には、その機能をテストする部分を新
たにテストツールに追加しなければならない。POPFile はオープンソースのプ
ロジェクトなので、新しい機能は誰でもパッチという形で提供できる。その際、
その機能をテストするテストツールの一部分も一緒に提供することが奨励され
る。テストツールもオープンなので、学べば誰でも作ることができる。

僕が POPFile に日本語化機能を提供したとき、その日本語化機能をテストする
テストツールの部分も後から作って提供した。だから、テストツールを動かせ
ばいつでも誰でも、僕が提供した部分だけに限り、日本語化の部分がきちんと
動いているのかをテストすることができる。

開発チームがプログラムに変更を加えるたびに、その変更が今まで動いていた
部分に悪影響を与えていないか、テストツールでチェックされる。開発チーム
は US 主導で日本語がわかる人は誰もいないけれど、テストツールはいつも僕
の代わりに日本語化部分をきちんとチェックしてくれているのだ。新しい機能
が追加されるたびに、「日本語化部分をチェックしてくれ」という依頼がいち
いち僕のところに来ることはないのである。

テストの結果が NG だったらどうなるのか?この場合は、新たに変更した部分
が何らかの悪影響を日本語化部分に及ぼしたということである。変更した部分
のどこが悪かったのかを良く調査し、テストの結果が OK になるまでプログラ
ムを修正する。この作業は開発チームの中で完結することもあるだろうし、完
結できなければ日本語化部分を担当した僕に依頼が来るのかもしれない。いず
れにしてもテストの結果がある一定の水準(100%が理想)をクリアしない限りリ
リースされることはない。

新しい機能を提供すると同時に、それをテストする機能も提供するという考え
方は非常に画期的だ。オープンソースのプロジェクトでは誰でもプログラムを
いじることができる。あっちこっち、色んな人がプログラムの各部分に修正を
加えて、一見めちゃくちゃになってしまいそうなのだが、POPFile はこのよう
にして高いクオリティを維持しようとしている。

新しいバージョンの POPFile 0.21.0 のリリースの準備が、この号を書いてい
る間にも着々と進んでいる。書いている時点ではまだテストバージョンだが、
新しい機能が追加されていても今まで動いていた部分はきちんと動いているこ
とが確認できている。


-----次号予告---------------------------------------------------------

POPFile の新しいバージョン 0.21.0 がもうすぐリリースされます。

http://popfile.sourceforge.net

このリリースを記念して次号ではちょっとした特別企画を考えています。楽し
みにしていて下さい。


-----編集後記---------------------------------------------------------

あなたは今上昇気流に乗ってますか?現状に安泰することもままならぬ世の中
ですが、そんな中でも常に上昇気流を探す姿勢を持ち続けたいものです。上昇
気流に乗ることは、チャレンジとリスクの相関関係。リスクに対する防御を固
めて、チャレンジすることによっておのずと成功の確率は高まる。虎穴に入ら
ずんば虎児を得ず。リスク覚悟でチャレンジを挑んで、世の中の不便を解決し
てきたのが人類の歴史ではないか。今人類の歴史を作っているのはぼくたちで
ある。おおいにチャレンジしよう。

(by TOM@jishihaの夢のサポーター1号)


僕はコンピューターには二つの役割があると思っている。1つ目は人間にでき
ないことをやること。超高速に計算して処理することがそれだ。2つ目は人間が
嫌だなあと思うことを代わりにやってくれること。ソフトウェアがうまく動く
かどうかをテストするのは1度目は楽しい作業だ。でも、毎回毎回バージョンが
変わるたびに同じことを繰り返すことはあまり楽しい作業ではない。テストツ
ールはまさにこの2つ目の役割の良い例だ。

(by jishiha)


======================================================================
      ハッカーへの道 
      〜 僕がオープンソースプロジェクトから学んだこと 〜
======================================================================

□ 発行: jishiha (mailto:jishiha@users.sourceforge.jp)
□ 編集: TOM (mailto:tomhigu@yahoo.co.jp)
□ Web サイト: http://popfile.sourceforge.jp/hacker/index.html
□ このメールマガジンは『まぐまぐ!』 http://www.mag2.com/ を利用して
   発行しています。配信中止はこちら http://www.mag2.com/m/0000120581.htm
□ ご意見・ご感想は mailto:jishiha@users.sourceforge.jp まで。

Copyright (C) 2003-2004 Junya Ishihara. All rights reserved.

----------------------------------------------------------------------

「ハッカーへの道」バックナンバーに戻る