Jenkins はオープンソースの継続的インテグレーション(CI)サーバです。CIサーバは最近普及しつつあるソフトウェア開発習慣・方法論の一つで、狭義にはビルド・テストの実行や品質検査を常時継続的に実行していくというものです。これによって、幾つかの具体的なメリットが得られます。
- 最新の変更によって生じた予期せぬ問題を早期に発見し、ソフトウェアの品質向上に貢献する
- ソフトウェア開発者がコーディングやデバッグなどの真に知的な作業に集中することができる
- 品質検査の結果などチーム全体で結果を共有できる作業に、個人個人が無駄に繰り返し実行するのを避ける
- サーバでもできる作業に手元の計算機を使わない。手元の計算機はIDEなどの対話的な作業に注力させる
- 品質検査などの結果をチーム内やマネージャーと共有することでプロジェクトの見える化が進む
元々CIはこのようにビルド・テストの実行といった狭い分野にフォーカスしていましたが、最近では、汎用の自動化プラットフォームとして、バックアップ・リリース・デプロイメントなどのスクリプト可能な作業をなんでもやらせる事も広義のCIに含んでよいと思います(Continuous Deploymentなどと呼ばれる事もあります)。今までは、こうした作業は担当者が個人の計算機上でスクリプトとして記述することが普通でしたが、ちょうど開発者がIDEとは切り離された誰にでも実行可能なビルドスクリプトの利便性に気づいたように、担当者の個人の環境を離れて誰にでも見え、修正でき、実行できるような形に書く事で、属人性と環境依存性を排除することができます。
Jenkinsは筆者が数年来開発に従事しているオープンソースのCIサーバです。元々は一人で書き始めたのですが、今はのべ数百人の開発者が開発に関わる大規模なソフトウェアプロジェクトに成長しました。認知度も高く、O'Reilly Open-Source Awardを受賞したり、Eclipseのユーザーコミュニティ調査でもここ数年目覚ましく普及が進んでおり、もっとも普及しているCIサーバです。アメリカ及びヨーロッパでは非常に普及が進んでおり、筆者が日本人な事もあって、日本にも活発なコミュニティが存在し、定期的な勉強会の開催やメールにより情報交換などが行われています。
Jenkinsが普及した理由は幾つかあると思いますが、一つは、インストール及び設定がGUIから簡単に行えるという点と、もう一つは高い拡張性とそれによって可能になった豊富なプラグインとが挙げられます。
今回は、InfoQの御厚意により、このJenkinsを数回の記事に分けて紹介していきます。
■お知らせ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
川口氏による「Jenkinsによる継続的インテグレーション」講座 申込み受付中!
【今なら早期割引価格】
10月14日(金) 場所:新宿
詳しくは >> http://www.mamezou.com/training/jenkins.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━