TDD Boot Camp 札幌 2.0 に登壇させていただきました

6/4,5 の2日間開催された「TDD Boot Camp 札幌 2.0」に登壇させていただきました。札幌で二回目の TDDBC 開催です。参加くださった皆様、そして主催してくださった id:shuji_w6e さん、ありがとうございました。二回目も、素晴らしいイベントになったと思います。


当日の #tddbc タグのまとめはこちらです
http://togetter.com/li/144153


今回の TDDBC は2日間二部構成のコースをややアレンジして行われました

一日目午前その1
@shuji_w6e さんによる導入講演
一日目午前その2
TDDBC サポートスタッフの方々による自己紹介 LT
一日目午前その3
TDD についての講演
一日目午前その4
肉さん、オム子さんによるペアプロについてのデモ
一日目午後その1
各言語に分かれての TDD or レガシーコード改善実習(コーディング道場乱取り版)
一日目午後その2
各チームによる発表とふりかえり
一日目夜
懇親会
二日目午前
まったりと自習モード
二日目午後
ソフトウェア開発の三本柱(バージョン管理、テスト、自動化)実習


前回一月に私が札幌に来て TDDBC 札幌に登壇させていただいてから、そんなに日を空けずに二回目の TDDBC 開催になりました。一都市で二回目の開催を行うのは札幌が最初になりましたね。実は TDDBC 札幌 2.0 の前に "1.5" が開催されていて、札幌では都合四回目の TDDBC になるのだそうです。札幌のコミュニティに TDD の文化が根付きつつあるということを感じ、嬉しかったです。


今回は前回より人数を増やし、賑やかに行われました。各言語毎にサポートしてくださるスタッフも加わり、非常に頼もしかったです。また今回は学生さんも含めた若い参加者の方も多く、道外からの参加者もいました。この二点は非常に嬉しいものでした。


TDDBC の報告のたびにこの blog に書いていて恐縮ですが、 TDDBC は開発の楽しさ、ペアプロ/TDD/コードレビューの楽しさ、そしてレガシーコードとの戦い方を伝え広めていけるようなイベントにしたいと考えています。TDDBC は「やりたい」と手をあげれば始められるイベントです。このようなイベントをこれからも続けていきたいと考えています。

今後の TDDBC の予定

現時点で、以下の開催が決定、もしくは企画されています

  • 仙台 (デブサミ東北の1トラックとして 7/2 開催。募集はまだです)
  • 東京1.5 (7/9 開催)
  • 横浜 (11/5 開催予定)
  • 大阪 (9月頃に企画中)
  • 新潟 (企画中)
  • 岡山 (企画中)
  • 四国 (企画中)

TDDBC の開催、運営に関しては今回の主催者の id:shuji_w6e さんが詳しいエントリを書いてくださっています。TDDBC の開催に興味のある方は是非ご一読ください。

以下 140 字形式で個人の感想を記してゆきます(随時書き足します)

  • 4sq でいつもどおり恵庭にチェックインしたら mayor になってしまった
  • 東北大の学生さんが仙台から参加してくださったのは嬉しかった
  • 北大の学生さんも含め、 Twitter 上で知り合った(と思われる)若い参加者の方々が賑やかにペアプロしている姿を見るのはとても楽しい
  • ついに男子校状態を脱却した! (北陸以来)
  • @shuji_w6e さんのプレゼンは綺麗でやや嫉妬を覚える
  • @giginet さん(TDDBC 歴代最年少サポートスタッフ)の LT (やる夫 & 阿部さん)に美味しいところを持っていかれた感
  • コードを書きながらいろいろ説明が必要だったため、やはり TDD やレガシーコード改善のデモは私自身が行うべきだったかなと思った
  • レガシーコード改善の演習はバランスが難しく、毎回悩ましい
  • 毎回とても盛り上がるため、レビューの時間をきちんと取っておくことが大事。
  • C++ チームの方の「テストがあると安心して攻められる」という感想が嬉しかった
  • @ayumin さんがコードを書くところを見るのは初めてだったが、見事 Ruby チームを引っ張っていた。コードが書けるスーツかっこいい
  • チームは人数順に Java, Python, Smalltalk, Ruby, C++ だったと思う
  • Smalltalk は6人。再び無双状態に。
  • "「目に映る全てのものはメッセージ」は Smalltalk の本質を捕らえている" by @sumim さん
  • message = selector + argument (で合っていますか? → 合っているとのこと)
  • protocol はメソッドのカテゴリのようなものだが、期待される役割としては Java における interface のように理解する方が良い
  • 「仮実装はテストのテスト」と sumim さんに伝えることができた
  • Python 組も多く、同じく無双状態になった
  • 「若者の emacs 離れ」を食い止めるべくベテラン勢がんばる
  • 二日目の SCM は Mercurial が最大派閥に(Java 組 & Python 組)
  • Java 組は Bitbucket + Jenkins を使っていた
  • 二日目の ruby 組のトリオプログラミング(あえて open class を使いまくった)は私自身も勉強になり面白かった
  • 二日目の ruby 組は emacs + git + rspec + guard-rspec でやりました
  • 二つのファイル(本のリストと参加者のリスト)から抽選で当選者を当てるワンライナーruby で書くとこうかしたという話をちょっとした IO.readlines("books.txt").map(&:chomp).zip(IO.readlines("attendees.txt").shuffle.map(&:chomp)) どうかなぁ
  • Python 組が Jython を使って Java のレガシーコード(テストの無いコード)に対する仕様化テスト(Characterization Test)を書いていました。テストの形で既存の動きを写し取れれば、 Python による動く仕様書ができあがるわけで、良いアイデアだと思いました
  • しかし Jython の起動速度が遅く、 TDD のリズムを妨げかねないという意見が出ました。確かに遅いです。で、起動速度を GroovyServ で改善できたりしないだろうかと Twitter で @nobeans さんに無茶ぶりしたらエントリを書いてくださいました。やはり劇的に起動速度が速くなったようです。流石 GroovyServ かっこいい!
  • Python 組はかなり仲良くなり次の日に北大祭に行ったりカラオケに行ったりしたみたいで、なによりです。
  • ruby 組は一日目から autotest や guard-rspec を使っていて、 Continuous Testing の考え方が浸透してきていることを感じました
  • TDDで大事なのはリファクタリングであると強調してみた
  • 今回レビューは最後の発表のみだったが、中休みでレビューを入れるべきだっただろうか。どちらがいいだろう
  • 前回ヒートテックで灼熱地獄を経験したので今回は T シャツで講演したら「軽装ですね」「札幌なめんな」という風味のコメントをいただきました。ちなみに一日目は上からジャケットを羽織っただけで大丈夫でした。二日目は途中でヒートテックを着ました。
  • ディスプレイが豊富にあったのが素晴らしかったです。事前の周知とスタッフワークのおかげだと思います。
  • emacs-lisp でのペアプロが実現できなかったのが少し残念
  • 今回は emacs 使いが意外と多かったような気がします(目立っていただけかも)
  • SCM に関しては、 Java,PythonMercurial, Ruby は Git とはっきり分かれていた印象
  • 一日目の @ayumin さん、二日目の Java チームがやっていたように、github や bitbucket に push したら Twitter に post するようにすると盛り上がって良いですね
  • 今回も修了証としてグリーンバンドを配りました
  • 手持ちのグリーンバンドが全部なくなってしまったので、また発注しなければ…