7月29日、Jenkinsユーザカンファレンス東京を開催いたしました。今回は規模が大きいためレポートを前後編に分け、前編となる本稿では基調講演を含むメイン会場のさったホールで行われた発表のレポートをお届けします。
カンファレンスの概要
Jenkins勉強会はおかげさまで毎回募集数時間で定員が一杯になる程の好評を博していますが、そのせいで興味のある方すべてに参加していただけない状況を心苦しく思っていました。そこで、今度は大きな会場で定員無制限で皆さんに来てもらいたい!ということで、Jenkins User Conference の東京版という位置付けで、会場提供の法政大学様 と多数のスポンサー様 のご協力のもとにより規模の大きなカンファレンスを開催しました。当日は、3トラック14セッション20名弱の発表者と600名程度の参加者とともに、Jenkinsについての様々な事例発表や先進的な活用例を共有しました。
なお、各発表者の発表資料はセッション一覧ページ にまとめられています。本レポートの補足として参照ください。
Jenkinsプロジェクト現状報告とこれから
カンファレンス冒頭の基調講演では、川口氏 がJenkinsプロジェクトの現情報告とこれからの展望を発表しました。
Jenkinsでは一週間に一度のペースでリリースされていますが、その中で最近活発に改善されているUIのナビゲーション改善をはじめとした、新機能の紹介がありました。また、機能面の改善だけでなく、プロジェクトとして成長していくために必要な運営態勢の整備や、長期サポート(LTS)リリースの導入なども取り入れてきました。発表の最後には、より大規模な環境に適用できるように改善していくと同時に、初心者にとっても容易に導入できるようにしていきたいという展望を話していただきました。
川口氏の個人プロジェクトから始まったJenkinsですが、今では世界各国のユーザやエンジニアを巻き込みながら日々成長しています。ここまでの成長の軌跡を確認できたと同時に、今後の動向も楽しみにさせられる発表でした。
Jenkinsによる自動受け入れテストから継続的デリバリーまで
基調講演後のさったホールでは、Jenkins: The Definitive Guide の作者であるJohn氏 による発表が行われました。
~
まず最初に、なぜ継続的デリバリーが必要かを説明し、その上で受入テストを自動化することの意義について、リリースサイクルの高速化やリスク・コストの軽減という点を踏まえて説明しました。続いて、継続的デリバリーを実現するに当たって、コンパイルやテスト~コード品質の検証~リリース候補の作成~自動デプロイといった、ビルドプロセスを構築するビルドパイプラインについて説明がありました。あわせて、ビルドパイプラインを実現する際に有用なJenkinsの機能やプラグインについて紹介しました。
継続的デリバリーについては、ビルドパイプラインの話も含めて、書籍”継続的デリバリー “に詳しく説明されています。John氏の発表で興味を持たれた方は上記の書籍も合わせて目を通すと、継続的デリバリーについてより理解が深まることと思います。
飛行機を飛ばしながら直す方法教えます:JenkinsとGerritによる継続的デプロイメントの実践
続いては、@jenkinsci の中の人でもあるTyler氏 の発表です。
はじめに、継続的デプロイメントについて”QAチームが不要ということではない”, “ユーザをテスターと考えてはいけない”といった注意点を交えて解説がありました。その上で、Subversionをベースとした運用を行っていたチームを、JenkinsやGit、コードレビューツールであるGerrit を導入して継続的デプロイメントを推し進めてきたという事例を紹介しました。現状では、自動でロールバックをする仕組みやプロダクション環境でのテストはまだ取り入れていないので、今後はそういった点の改善も進めていきたいとのことでした。
継続的なデプロイメントが可能な環境を整えても、レビューという作業は必ず発生します。Gerritのようなツールを有効活用して、レビューが継続的デプロイメント/デリバリーのボトルネックとならないよう整備していく必要があるでしょう。
複雑な多段階ビルドに対処する:事例紹介
Hadoop関連の事業を展開しているCloudera 所属のAndrew氏 は、Jenkinsのジョブを分割した際にどのように対処するかについて発表しました。
Clouderaでの事例紹介ということで、以前は単一ジョブ内で独自のPythonスクリプトを用意してビルドしていたものを、複数のジョブに分割してそれぞれのジョブを連携させるようにしたという説明がありました。これによって、失敗したジョブのみ再度ビルドできるようになったことや、ビルドの並行化によってビルド時間を短縮できたことが改善できたとのことでした。また、分割されたジョブをうまく連携するために、Andrew氏が採用したJenkinsプラグインをいくつか紹介しました。
プロジェクトの初期フェーズでは、複数のジョブを作成するより単一のジョブで構成する方が手軽に設定できるかと思われます。ただし、本発表で説明されたように、単一のジョブだと細かい単位での制御を行いにくくなります。ビルドプロセスが巨大かつ複雑になり過ぎる前に、適切な単位で分割して制御しやすくしておく必要があるでしょう。
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
株式会社富士通研究所の大嶽氏 は、サーバ環境の構築を自動化する試みについて発表しました。
まず、Excelファイルに自然言語とスクリーンショットで記述された環境構築の手順書について、変更があっても更新されないことや実行するまで結果が分からないことといった問題点を指摘していました。続いて、上記の問題点を解決するために、JenkinsとChefを組み合わせた自動化の実現方法についての説明がありました。最後に、自動化された環境構築を高速化するために、必要なバイナリファイルはあらかじめダウンロードしておくことや、何度実行しても同じ結果となるような手順にしておいて(冪等性)途中からでも環境構築を再実行できるようにして構築時間を短縮するといった手法が紹介されました。
当初は8人日かかっていた環境構築が現在では最短で2分となったことによって、チームメンバーの意識も変わっていったと大嶽氏は話していました。自動化や高速化にはこのように、単に工数削減といった定量的なものにとどまらず、メンバーの意識といった定性的なものまで改善しうる可能性があります。最初からすべてを完璧に取り組むことは困難かとは思いますが、できるところから自動化/高速化に着手していくとよいでしょう。
LT大会
カンファレンス最後のセッションは、総勢5名の発表者によるLT大会を行いました。
LT発表では、書籍執筆やFlash開発でJenkinsを利用する話や、開発だけでなく運用時にJenkinsを利用するという話もあり、多岐に渡っていました。また、英語圏でのJenkinsコミュニティがどのように運営されているかを、逐次通訳を交えながら紹介する発表もありました。
LTといえばドラという話もあり、5分経過した発表では無情に鳴り響くドラの音がいいスパイスとなっていました。正午前から6時間近くにわたって開催されたカンファレンスの締めくくりとして、非常に充実したLT大会だったと思います。
後編に続く
前半にあたる本稿では、メイン会場で行われた発表のレポートをお届けしました。後編では、その他の2会場で行われた発表のレポートをお届けします。後日公開いたしますので、公開を楽しみにしていただければと思います。