Hudsonを使ったアジャイルな開発入門

第2回 Hudson事始め

この記事を読むのに必要な時間:およそ 5 分

ビルド後の処理の設定

さて,ここまででHudsonがビルドをできるようになったので,このビルド結果を開発者にフィードバックすることでフィードバックループを完結させましょう。開発者にビルド結果を通知する方法は色々あるのですが,まずは筆頭の電子メールによる方法を取り上げます。

設定画面に戻って「E-mail通知」を選びます。宛先アドレスとして,開発チームが既に利用しているメーリングリストがある場合はそれを記入するのが一番手っ取り早い方法です。ビルドが失敗するたびにここにメールが送られます。特にビルドが連続して失敗する場合には,Hudsonは新しい通知メールを以前のメールへの返信として送るので,一連のビルドエラーが一まとまりで表示され,後からビルドの失敗の傾向を分析する一助になります。ビルドの失敗をメーリングリストに送る方法はチームが小さいとよく機能するのですが,大きなチームでは「どうせ誰か別な人が問題を修正してくれるだろう」⁠きっと一時的な問題だろう」という風に誰もが考えて結局誰もビルドエラーに注意を払わないという問題が起こりがちです。こうした状況が顕著になってきたら,メーリングリストへ送るよりもむしろ,ビルドを壊した個人にメールを送るようにしたほうが責任が明確になるため,効果的になります。電子メールの送りすぎは狼少年と同じでむしろ開発者へのフィードバックを悪化させる事があるので,メールを送り過ぎないように,しかしビルドの問題が短時間で解決されるように,注意してみてください。

電子メール以外に,インスタントメッセンジャーを用いた通知や,タスクトレイからメッセージをポップアップして通知する方法などもプラグインとして利用可能です。また,IDEを常時開いている環境であればIDEにHudsonプラグインをインストールしてIDEから通知を受け取る方法もあります。

テスト結果の集計

素早いフィードバックと並んで重要なのが,プロジェクトの状態の可視化です。この観点から有用なのは,テスト結果の集計です。もしビルドの一部としてテストが自動実行されるならば,Hudsonを設定してテスト結果のレポートを作成しましょう。ディフォルトではJavaのテストフレームワークではデファクトの JUnit XMLフォーマットに対応しており,これでTestNGのレポートなども読み込むことが出来ます。下のスクリーンショットは,この設定がされたプロジェクトのトップページで,テスト結果の履歴が表示されているのが見えます。赤がテストエラーの数で,時々リグレッションが起こっているのもみてとれます。

画像

Hudson上でテスト結果をみる事の主な利点は,時系列データです。Hudsonは過去のテスト結果も記録しているので,それらと比較することによって,新しいリグレッションに注意を集中させたり,長い間壊れっぱなしになっているテストを識別するのが簡単になります(この種のデータマイニングは色々なポテンシャルがありそうなので,作者としては今後発展させていきたい分野の一つです)⁠下のスクリーンショットは職場のプロジェクトの1つからとったもので,913のテストのうち2つのテストが失敗していることがわかります。+/-0の表示はテストの数にもエラーの数にも増減がないことを表しています。⁠時期」とあるのは「年齢」の誤訳で,この例では過去59回に渡ってこのテストが失敗しつづけていることがわかります。

画像

また,テストの結果をHudson上に記録することによる可視化効果も無視できません。Hudson上にテスト結果が公開されることで,プロジェクトの状態がプロジェクトに直接携わっていない人にも分かりやすくなります。大きなプロジェクトが小さな部品に分解されてそれぞれ担当チームが分かれているような状況では,他のチームのコードが原因でテストが失敗したりすることもままありますから,どのチームの人間でも他のチームのテスト結果をいつでも見られるということはとても有用です。

おわりに

いわゆるアジャイルな開発では,プログラムが動く状態にある事が非常に重視されます。連載二回目となる今回は,ソースコードに変更が加わってから,それを如何に素早くビルドさせ,結果をチームで共有するか,という点を主眼に解説してきました。プログラムを修正しているとどうしてもバグが混入してしまうのが現実ですが,このようにして問題の発生を素早く検出することで,プログラムの質を高く保つのが容易になります。

さて,次回は視野を広げて,ソフトウェアプロジェクトの開発が複数のチームに分かれている場合に,Hudsonを更に有効活用する方法についてみていきます。

著者プロフィール

川口耕介(かわぐちこうすけ)

Sun Microsystems, Inc.のシニアスタッフエンジニア。主としてXMLとのそのスキーマ言語関係の仕事をし,JAXB, JAXP, JAX-WSなどの仕様策定・実装に携わった。仕事の他にも,主にjava.netに多数の趣味のプロジェクトをホストしている。Hudsonは趣味のプロジェクトとして開始したが,今では本業の一部。米国カリフォルニア州在住。

URLhttp://www.kohsuke.org/