第三回Jenkins勉強会に参加しました。あるいはZFRは次のムーブメントを起こすか

まとめwikiはこちら

発表の内容は他の方がまとめていたり、wikiに資料がアップされていたりするので、
それ以外の部分を中心に。

勉強会の内容について

  • HudsonがOracleからeclipse
    • 収束しそうでなかなか収束しない。早く落ち着きたいですね。
  • Rails3のCIツール、BigTunaが気になる。
    • 自分もほとんどコンソールしか使わないので。railsの小さいプロジェクトならこっちの方が楽なのかもしれない。
  • 稲川淳二は持ちネタなんでしょうか?
  • 最近Jenkins Remote APIを実験的に触っていたのでhudson-remote-apiの存在は衝撃
    • 自分も似たようなのをjQueryプラグインで書きたいので参考にする

ZFRが気になる

@の発表にあったZFRがとても印象に残った。元ネタはこれなのだろうか?
Zero Feature Release - The First Iteration

Zero Feature Releaseは、はじめに機能を持たないソフトウェアをリリースし徐々に機能を作りこんでいく開発手法らしい。
記事のタイトルから読み取れるように、Agileな開発手法において最初のイテレーションで行うことが想定されているようだ。

これとCIを組み合わせるのはとても面白いのでは?と思う。

CIを使うことでゼロ機能リリースは「やる意味のある」作業になる

ゼロ機能リリースを職場でやろうとする。もっとも大きい関門は「それ、なんの意味があんの?」という周囲の反応だろう。
実際は意味がある。

  • 進捗の可視化がしやすくなる
  • 全体のボリューム・ゴールが明確化される
  • 小規模リリースが可能になる

だが、初見でその価値を理解できる人はそんなに多く無いだろう(僕もたぶん無理)。
だがCIを使っている現場なら話は別だ。

ゼロ機能リリースを行うことで、プロジェクトのはじめから製品全体の継続的インテグレーションが行えるようになる。

これならCIを使っているほとんどの人に通じる明確なメリットとなる。
つまりCIをセットにすることでゼロ機能リリースが誰にでもわかる「意味のある作業」になるのではないかと思う。

ゼロ機能リリースを意識することでCIジョブのテンプレート化が進む

いくらメリットがあるとしても、直接価値を産まないゼロ機能リリースに割ける時間は限られているだろう。
@wadatkaも発表で話していたけれど、アプリやジョブの構成にテンプレート化が必要になってくるはずだ。

テンプレート化にも良い面/悪い面があると思うが、個人的には個別カスタマイズしてリリースするソフトウェアについては
テンプレート化を意識してジョブを設計するべきだと考えている。

個別カスタマイズしてリリースする場合は複数のビルド環境を構築して様々なリリースバージョンを同時にテストすることが
多いだろう。この時にテンプレート化が意識されたジョブだと、既存のジョブをコピーしてパラメーターをちょっといじるだけで
すぐに新しい環境を構築する事ができる。

ゼロ機能リリースを意識することでジョブのテンプレート化が進めば、同時に複数環境を構築しやすいジョブができてくるはずだ。

ZFRは次のムーブメントをおこすか?

ZFRはCIと結びつくことで強力な開発手法になる可能性を秘めているように感じる。
現在、テストファーストやチケットファーストなどの開発手法が世の中を席巻しているが、
そのひとつに「ビルドファースト」が加わる日が来るのではないかと妄想してしまう。