第2回 Jenkins勉強会(旧Hudson勉強会)に参加してきた


(写真:大森駅北口)


1週間振りのニフティ@大森、そして昨夜に引き続き連夜の川口さんセッション聴講。
と言うことで、第2回 Jenkins勉強会(旧Hudson勉強会)に参加してきました。

当初この勉強会に関しては、勉強会の存在(発表)を知ったものの時既に遅し(定員達成)、あぁ〜こりゃ諦めるか、UStreamに期待してどっかで観戦するかな〜と思ってた所、開催数日前に『キャンセルしたので今なら空いてます』との有り難いつぶやきメッセージが私の元に。御好意をありがたく頂き、生観戦出来る事になりました。uemuraj (uemuraj)さん、その節はありがとうございました!

通常発表

まずはKohsuke Kawaguchi (kohsukekawa)さんによる『Sun Java EE部隊のJenkins運用例』。

…とあったのですが、当勉強会の対象であるCIサーバ"Jenkins"がこの名前となるに至った、『プロジェクトの名称変更に関する経緯』についてのお話

件の騒動の真相が渦中(?)のど真ん中にいた人物、というかモロにHudson生みの親本人から語られる訳ですから、これは予想外の展開であり嬉しい展開でした。

  • 川口さん個人の経歴について簡単に説明あり。
  • 実はHudsonは川口さん個人の余暇プロジェクトとして始まったものだった。
  • ジャイアニズムな考えの企業(Oracle)に対し、コミュニティの中の人達も『フォークすべき(血を見たい)』派の人達と『妥協の道を探ろう』派に分かれる
  • そもそもオープンソースはどこまでが個人のものか、どこから会社のものになるのかの線引きが難しい
  • オフラインでOracleと交渉を重ねるも、折り合い合わず。さながら米ソ冷戦時代のよう。当事者間で信頼関係を作りきれなかった。最終的に名称変更(Hudson→Jenkins)に踏み切る事に。
  • 名称変更後、開発者の殆どがJenkinsに移る。コアコミット数、ML展開数もJenkinsが圧倒。
  • とある調査では、75%のユーザーが2011年中にJenkinsに移行予定であると言う。
  • まとめ及びアップグレードについての説明。

と大変興味深い内容でした。この時点で当初の持ち時間(20分)の大半を費やしてしまっていた為、自然と時間は延長へ(笑)そのまま当勉強会での発表予定であった『Sun Java EE部隊のJenkins運用例』へと移ります。

どの様に運用していったか、という点についてはエントリ最後のUstream等で確認して頂ければと思います。(^-^;) 運用をしていくにあたり、幾つかの改善すべき点は残りましたが、それ以上の恩恵を得ることが出来たそうです。(インテグレーション後の障害が減った/ビルド記録が残る(野良ビルドが無くなる)/上流下流に関わらず、実行結果を待たずに済むようになり、次の事にさっさと移れるようになった(fire and forgetと表現していました)…等々)

また、こういったツール・活動を展開するにあたっては『トップダウン』ではなく『ボトムアップ』作戦で進めて行ったのが功を奏した、という点にも非常に興味深いものがありました。

  • 誰でも自由に使えるようにした
  • 実際に手を動かして人に見せてみる
  • 既成事実を先に作る
  • 評判を聞き、自然と口伝てで伝わっていく。そうするとマネージャーなど上位の人にも自然と話が通りやすくなる
  • この辺りで、クラスタ単位で自立を促していく。
  • 川口さん一人ではサポートなどにも限界があるので、グループの中で学習意欲の高い若者を丁稚として使い、活動のお手伝いをしてもらう

などの展開を進めて行った結果、GlassFish関連のほぼHudson上で稼働(40ノード以上のクラスタにて)するようになった、と言うお話でした。千里の道も一歩から。徐々に自動化し、いきなり大きな挑戦はしない。仲間を増やしていく。と言った辺りがこういった活動には大事なようです。

名称変更自体が突然のものだったため、まだ無意識にHudsonと発してしまうことが多い事に対しては『鏡の前で10回jenkinsと唱えれば大丈夫』とのコメントもありました(笑) ありましたが、以後のセッション/LTでも皆さん結構『Hudson』とついつい発言してしまうこと多数でしたが…(笑)まぁ発表/LTをなさる方々はそれぞれHudsonに思い入れのある方々でしょうし、やむを得ないのではと思います。(^^ )


次のセッションはさいないぷ (cynipe)さんによる『Jenkins+Maven活用術』。

cynipeさん自身、Java/hudson/Mavenを仕事始めた頃から使っているようで(羨ましい!)、Mavenを使いこなしているcynipeさんの(Hudson/Jenkinsというよりは)Mavenのお話、という体でセッションが進められます。

  • 『Antは読めば分かるんだけれど、みんな自由に書きすぎだ!』『Mavenのように規約が決められている方が理解がしやすい』うん、言われてみれば確かにそういう気もする。
  • そんなにMavenは深入りしてみた訳ではないですが、最初のハードルの高さ(遠さ?)を解決出来る何かがあれば使いやすく・親しみ易くなるのかな。
  • Mavenで行う一部切替(JDBC、モード、GAEのデプロイ設定)処理/全体切替(本番・ローカルのログ切替)処理/新たに追加する処理 のネタに対して、Mavenではこうやって出来るよ!(パラメータのフィルタリング)又はMavenで頑張らなくてもJenkinsでこんなに簡単に出来るよ!(例:Emmaプラグインの導入)など。
  • 『緩やかに規約を与え、CIを回していこう』『枠組みを作ることが重要である』というところ辺りはMavenを運用していく上で外せないポイント。


発表最後は[kiy0taka]さんによる『JenkinsエンジニアのためのGroovy入門』。

前回Hudson勉強会でもモテ系のLTでお話をされていましたが、残念ながら効果は見込めなかったようです…^-^;

  • Groovyの簡単な紹介。
  • Grapeについてのお話。Maven/Ivyベースのモジュール管理機能。アノテーション/メソッド呼び出し/コマンドラインツールなど便利な利用方法あり。
  • GroovyでJenkins管理/JenkinsでGroovyを実行する方法の説明。
  • Jenkinsシステム画面に表示されるJOJO名言がひっじょ〜に気になったw
  • CIではないジョブをGroovyで実行する際の説明。
  • JGGUGの紹介。

LT

  • Lightning (LightningX)さん:『脅迫TracLightningとJenkins
    • HudsonとTrac連携にまつわる川口さんとのやりとりについて、熱いテンションで5分間、畳み掛けておりました…^^;


この日のJenkins説明会、そして前日2/24に参加したGroovy説明会(第15回 G*ワークショップ)共に内容の濃い充実した勉強会で、世界が一気に広がった感はありますね。まだまだ学ぶべきものはある、吸収するネタはある、スキルアップ出来る余白は残されている。オープンな世界だと、こういった可能性がドンドン見つけられるというのが面白いところですね。(ついてくのは大変ではありますが…^-^; )


Jenkins及びGroovy界隈の技術については、より実践で利用出来るように、少しずつ馴染ませていってモノにしていきたいと思います。