初めまして。中村(@tomomihoge)と申します。
5月よりECナビの中の人になりました。

今回は、先日グリーさんで開催されました勉強会、「PHPでTDD&CIワークショップ」に参加しましたので、そちらについてお話しようと思います。

[概要]

勉強会の大まかな流れは以下の通り。

  1. テスト駆動開発(以下TDD)、継続的統合(以下CI)に関して概念の説明や、周辺の話題に関して座学。
  2. TDD 組と CI 組に分かれて実践形式で演習(ワークショップ)。
  3. 懇親会
なお、私の知識レベルは
  • TDD, CI について概念は抑えてる
  • どんなツールがあるかも知っている(代表的なものくらいは・・多分)
  • テストは書いたり書かなかったり(少なくともテスト・ファーストは実践してない)
  • CI は経験ゼロ
と言ったところです。

こんな状況なので CI ワークショップを選択しました。
実際どんなものか見てみたかったのと、先駆者から実運用する際のアイデアを吸収したかったので。

1. 2. については他の方のレポートを参照していただくとして、私は 3. についてお話しようと思います。

[CI ワークショップ]

ワークショップのスタイルですが、事前に環境をある程度用意して、実践すると言ったものでした。
これは時間圧縮に有効だなと思いました。
一方、事前の環境がバラッバラなので VM 用意してそこからスタート、みたいなのもアリだと思いました。

参加者は15名ほどでしたでしょうか。
全体では50名ほどで、TDD を選択された方が多かったです。

ワークショップの内容はまさに↓こちらの資料の通りです。
PHPでTDD&CIワークショップ、Jenkins + PHP の各種プラグインパート資料

かいつまむとこんな感じ。
  1. 環境作る
  2. サンプルジョブ作って実際に動かして大まかな流れ確認
  3. 各種プラグインとの連携
特に 3. に入ってから実践的な内容を多く聞かせていただきました。
現実(メンテコストの高い既存コード)とどう向き合っていくか、
その中で Jenkins をどう活用しているか、興味深かったです。
  • 閾値を調整して、現在を出発点にする。現状より悪くしない、新しいコードは綺麗に書く。
  • カバレッジは100%が理想だけど、少しずつ増えていけばそれでいい。完璧を目指すより向上を実践する。
とかく「1から始まるプロジェクトなら使えるけど、途中から導入するのは無理ゲー」
と逃げがちな自分には、自省することしきりでした。

[その他]

合間に参加者の開発環境について聞いてみました。
Eclipse が数名、Emacs が 2名、Vim が残り全部でした。
この割合は現職の割合とも類似してます。

また Windows ノートで参加してたのは 3 名程度だったでしょうか。
残りの方達は全て Mac で、Web 系ってこういう感じなんだなーと。
(前職では Windows 一色でした。)

[懇親会]

ワークショップは22:00を超えたあたりで終わったのですが
その後、質疑応答やらなんやらで22:30になっても席を立つ人はまばら。
CI話でご飯三杯いける状態で、懇親会と言う名のアディショナルタイムでした。
私にはこっちの方が気楽でいいですね。

非常に有意義な勉強会でした。
今回 DB のテスト(DB と言うか DAO 層部分)をどうやっているのか聞きそびれてしまったので、次回はそちらも盛り込んでいただけたらなぁ(チラッ
次の機会も是非参加したいです。

会場を提供していただいたグリーさん、CIワークショップ講師の @cactusman さん、@yamashiro さん、ありがとうございました。

※ にしても、記念すべき一回目の投稿がコード1行もなしってお前・・・。次回はもう少しテクニカルな何かを書きます。