ソフト開発のコンパイルからテストまでを自動化し、1日に複数回実施することで品質改善や納期短縮を目指す「継続的インテグレーション(CI)」が注目を集めている。米国を拠点に活動し、世界的に最も人気が高いCIツール「Jenkins」を開発した川口耕介氏は、開発の動機は“怒り”だったと明かす。

Jenkinsが実現するCIとはどのようなものですか。

 ソフトウエア開発プロセスを改善するための取り組みです。プロセスのなかには、単なる反復作業がたくさん存在します。ソースコードのコンパイルなどによって実行可能なファイルを作成するビルドやテスト、品質検査などです。

 人間はそもそも反復作業が得意ではありません。人間が不得意な作業は極力ツールに代行させて、開発者が設計やプログラミングに集中するのが望ましい姿でしょう。これがCIの狙いです。

ビルドツールを補完

 CIという概念自体は1990年代末に、アジャイル開発手法の一つであるエクストリームプログラミングから生まれました。結合テストを頻繁に実施することで、プログラムの品質改善を図るというのが本来のCIの定義です。現在では、開発プロセスにおける省力化作業全般をCIと呼んでいます。

CIツールは「Ant」などのビルドツールと何が違うのですか。

(写真:加藤 康)

 ビルドツールとCIツールは、相互に補完するものです。ビルドツールは、ソースコードのコンパイルからテストまでのビルドの作業を人間の代わりに実行します。CIツールは、ビルドツールを「いつ」「どこで」実行するかを決めて、その実行結果を記録し、人間にフィードバックするものです。

 ソースコード管理システムが管理対象としているソースコードに変更が加わると、Jenkinsがそれを察知して、ビルドツールなどを実行します。作業中に異常が発生した場合に、開発者に通知するのもJenkinsの役割です。分散ビルドにも対応しており、Jenkinsのサーバーを増やせば、ビルドにかかる時間を短縮できます。

どのような企業がJenkinsを使っているのでしょうか。

 例えばドイツテレコムが、携帯電話機のファームウエア開発にJenkinsを使っています。

 Jenkinsは、Java開発で有名なコンサルティング会社による調査や、開発ツール「Eclipse」のコミュニティーによる調査などで、最も人気の高いツールに選ばれました。CIツールとしてはほかに、OSS(オープンソースソフトウエア)の「CruiseControl」や、米IBMの商用ツール「Rational Build Forge」などがあります。