PHPでTDD&CIワークショップ に参加してきました

勉強会は初めてで敷居が高いもののどうしてもテストがうまく書けなかったのでヒントをもらおうと、勉強会に勉強しに行った素人です。とても勉強になりました。レガシーコードに立ち向かう気力も頂きました。ほんとうにありがとうございました。
以下、TDD等について特にためになったこと。

TDDで行うテストとは

  • プログラマプログラマによるプログラマの為のテスト
  • 軽量
  • インターフェース境界、接合部をテストすべし (○振る舞いのテスト ×手続きのテスト)
  • テストを書くのはプロとしてのたしなみである

TDDはリズムが大事

少しずつ進むのがよい (よく出てくる「インクリメンタルな開発」)
波に乗れると・・・
  • テストが気持ちよく書けている = 多分いいコードになってる
  • 黄金の回転ができている = 良い設計になっていることが多い
ちょっとずつセーブしながらRPGを進めていく感覚
  • すばやく対象に近づいてフィードバックを得ながら、ちょっとずつ、頭で理解しやすいサイズでやる

ライブペアプログラミング

モニターでペアプロでライブコーディングしてくれた方のコーディングがとても良かったです。

  • 頭のなかで考えたことを声に出しながらやる
  • ペアプロ中の発言などをソースのコメントとして書いていくとみんな見やすい
  • エディタは白地に黒文字が見やすい、文字の拡大などの設定は事前に確認しておくとよい
  • てゆかPHPってメソッド名に日本語使えたのかすごい

いざレガシーコードと対峙して

まずはできることから、とにかくやる

やはりとにかくできるところからやっていくといういのが正解っぽいです。とりあえず手を動かさないことにはなにも前に進まないから。
いっぺんにやらなくてもとりあえず趣味の日曜プロジェクトでお試しTDDとか、バグ修正したときにその部分のテストを書いておくとか、写経で勉強するとか、手がかりは必ずあるはず。

http://d.hatena.ne.jp/norry_gogo/20110622/1308716752

最後の@kakutaniさんを囲んでアジャイル周辺の質疑コーナーでは「やればいいんだよ」というメッセージが印象的でした。
指示や許可を待つのではなく、各自で考えて、足元で出来る事をやる!

学ぶべきスキルは他にも

今回のワークショップで扱われた基礎的な手法以外に、実際にレガシーコードと戦うための武器はまだまだ。モックを使ったDB周りのテストや、Seleniumを使ったviewのテストや。
レガシーコードレジスタンスの次回ブートキャンプにご期待ください! といった感じの締めでした。

その他

稲川淳二によるPHPホラーもっともっと聞きたかったです。