「Jenkins」とは、CI(継続的インテグレーション)ツールとして有名な「Hudson」の開発者たちにより開発されているCIツールです。Hudsonは商標上などの問題によりJenkinsと名前を変えて継続することが発表されたので、記憶に残っている方も多いと思います。現在では落ち着いて開発されているようです。
本稿では、今話題のJenkinsの使い方を紹介します。本記事の想定読者は、Java開発を行っている方で、「今までCIを導入していなかったけどこれから導入しよう」「Jenkins(Hudson)は使えそうだけど、難しそうだなぁ」と思っている方を対象としています。本稿を読めば、10分程度でJenkinsを実際に動かして体験できます。最後にも述べますが、もちろん、Java開発以外でも活用できます。
Jenkinsを導入することにより、どのようなことができるようになるのしょうか? Jenkinsの特徴を見ていきましょう。
Jenkinsを利用すると、ソースコードを統合してビルドを自動化できます。人手でコンパイルやデプロイ、テストを行うと、手順漏れが発生したり、統合/テストできる人が特定の人に限られることがありますが、ビルドを自動化しておけば誰でも簡単にビルドできるようになります。
ビルドには、Java開発では、AntやMavenの他、独自のビルドスクリプトやツールも扱えます。
最近では仮想マシン上でテスト環境を構築してテストするケースも増えてきていますが、仮想マシン用のプラグインを導入すれば、仮想マシンを起動し、その上にテスト環境の構築&テストといったことさえできるようになります。
複数の開発者でソフトウェアの開発を進めていると、開発者間でインターフェイスの意識違いが発生し、互いの実装するインターフェイスが不整合なまま開発が進んだり、重大なバグを埋め込んだまま開発が進み、後で手戻りが発生することがあります。
定期的にソースコードを統合、ビルドしコンパイルエラーを発見することにより、ソースコードをきれいな状態に保てます。
コードチェックやカバレッジを取得するプラグインを導入すれば、ビルドごとのコードの統計を見ることができます。
静的チェックの警告が増えてきたので、静的コード解析ツールの利用を徹底したり、カバレッジが下がってきたのでテストコードを強化したり、コードの複雑度が上がってきたのでリファクタリングして保守性を高めたりと、ソースコードの品質管理に役立ちます。
Jenkinsで使えるのは、業務に役立つ有用なプラグインだけではありません。導入して何かが楽になるわけではなくても、開発を楽しくするようなプラグインが提供されています。
例えば、ビルド完了時の背景が変えることができる「Persona」プラグインなどが提供されています。Personaプラグインを利用して、ビルドが失敗したときに部長の怒った顔が表示されたり、成功したときに憧れの派遣のおねーさん(もしくはイケメン社員)を表示するようにしておけば、開発が盛り上がること間違いないでしょう(ただし、社員や協力会社セクハラ行為には注意してください。Jenkinsはオープンソースなので、その辺りは自己責任で……)。
他にも、iPhoneやAndroid用のクライアント、Googleカレンダーとの連携、Twitterとの連携など実に多種多彩なプラグインがあります。
Jenkinsは、プラグイン・アーキテクチャを採用しており、たくさんのプラグインが提供されています。プラグインを利用することにより、さまざまな機能を追加できるようになっています。
上記は、Jenkins単体ではなく、プラグインと組み合わせたときの特徴です。プラグイン・アーキテクチャにより、従来の継続的インテグレーションツールに比べ、より高度なことができるようになっています。
Jenkinsの特徴を理解できたところで、実際にJenkinsをJava開発で利用する際の利用パターンを見ていきましょう。Java開発で利用する際のスタンダードな活用方法を図1に示します。
開発者がリポジトリにコミット、あるいは1時間ごとなどソースコードをビルドする契機を決めておきます。開発者がリポジトリにコミットしたコードをJenkinsが取得し、ビルドやテスト、レポート作成を行います。コード分析、カバレッジの結果を出力するようにしておけば、ビルドごとのコード分析やカバレッジの結果をグラフで見ることができます。
ビルド結果やレポートを見ることにより、正しくビルドされているかどうか、テストがパスしているかどうか、規約通りにコードが記述されているかどうか、バグが存在する可能性のあるコードが含まれていないかどうかをチェックできます。
ある程度の規模の開発では、システムに対し複数のJavaプロジェクトを用いて開発することが多いですが、プロジェクト間の依存関係を定義しておけば、依存するプロジェクトがビルドされたときに自動的にビルドを行うようなことも可能です。
次ページでは、実際にJenkinsを使ってみましょう。
Copyright © ITmedia, Inc. All Rights Reserved.