適当に、つらつらと

日々思った事等を適当に書いていければと。

TDDBC Fukuoka 2013に参加してきました。@1日目

はい。タイトル通り6/15,16とRubyセンターで開催された TDD Boot Campに参加してきました。

1日目は和田さん(id:t-wada)のkeynote講演から始まって 希望言語毎にグループ分け・ペアを決めてのペアプロでのTDD。

keynoteで印象に残った事柄とか

  • バージョン管理を使わない開発は「セーブ無しでRPGをクリアするようなもの」
  • テストはするだけじゃなく、続ける事が重要
  • 自動化して面倒事はシステム側に押し付けると楽だよね
  • 「テスト」の粒度・対象による名称使用が企業、下手したらチームレベルで違う事による混乱
  • TDDのサイクル

とりあえず、TDDのサイクルとして目標をTODOとして切り出していって 1つのTODOに対してテスト→実装→リファクタを繰り返して進めていくって事を Demoとハンズオンで肌で感じれた事が一番の収穫かも。

特に、TODOに切り出す粒度とか。 あんなに(ヘタすると1行毎のレベル)まで切り出してから進めるなんて正直ビックリした。 ハンズオンを経験した後だと、確かに粒度をどんどん細かくして行った方が サイクルも早く回るし(和田さんがkeynoteで言われてた通り)問題等が発生した時の 方針修正とかも素早く行えたので、納得……と言うか体で理解できたんだけど。 ハンズオンが無かったらそこまで理解できていたかどうかw

ハンズオン1日目

1日目はRuby組(これが最大勢力だった。流石福岡?w)に参加してのハンズオン。 他の組は * java * C# * Objectiv-C * JavaScript だったかな?

そして課題は * 郵便番号バリデータ * 数値三桁を許容 * 数値七桁を許容 * 数値三桁 + "-" + 数値四桁を許容 の実装。

ベースサンプルをTDDBCのgithubリポジトリからcloneしてきて ペアを組んで進めて行ったんだけど、最初は方針を決定するだけで一苦労w とりあえず、後の事はあまり考えずに簡単な物から簡単な実装で進めて行く事にしました。 TODOとして切り出した項目毎にテスト→実装を繰り返して、1項目が完了する毎にドライバーを交代 と行った感じで進めて行きました。

途中、考慮漏れに気づいた時とか先に実装をしようとしてペアの方に諌められる事も何度かw うーん。まず実装するって行動をちゃんと自分で制御出来るようにならないと。。。

で、ある程度TODOの消化が進んだらリファクタリングの為にテスト書いてリファクタして と進めて行ってると、スライドの内容に変化が……!!

  • 誰が全て0を許容していいと言った?

な、なんだってーーー!? って感じで追加仕様提示があって焦ったりも。

ただ、最終的にはなんだかんだ言いつつ提示された仕様は全て実装出来て リファクタリングもある程度出来たので良かったかな、と。

ペアプロ&TDDの感想としては * 最初は右往左往に近い状態だったけど、進むにつれてTODO消化速度が明らかに上がっていった * ペアプロ楽しい * ペアプロ疲れる * ペアプロやるとコミュ力上がりそう

後半につれてどんどん速度が上がって余裕が出来てきた事を実感できたのが大きかったかな。 そりゃ確かにコードを書く時間は増えるかもしれないけど、慣れれば慣れる程機能辺りの実装時間は短く感じてくる(実際短くなってた)から面白いなーと。

そしてレビューと振り返り。 各言語チームによるレビューと、KPTでの振り返りをやった後にLT大会が行われての1日目終了。

その後は懇親会があったけど、そっちについてはまた後で書こうと思う。