TDDBC 仙台 5 に行ってきた #tddbc

2015/11/14(土) に TDDBC 仙台 5 に行ってきたので忘れないうちに書いておきます。

きっかけ

TDDBC 仙台には 2 年前に TA として参加したんですが昨年は参加してなくて仙台の皆さんにはすっかりご無沙汰してしまっているなと思っていたところで今年もやりますというアナウンスが TL に流れてきた感じでした。

そこでサポート言語の中に Go があることを確認して参加を決めた感じです。 今仕事で Go を使ってるのでもっと慣れておきたかったのと、Go のテスト文化は特殊すぎるので一度 TDDBC で議論してみたかった感じです。

前日と当日朝の様子

前日こんな感じだった僕です。すごく無計画ですね。

しかもちゃっかり花金も満喫してます。

結果がこれです。

というわけで、運営のみなさんや僕とペアを組む予定になっていた方*1には本当にご迷惑をおかけしました。すいません。

慌てて東京駅に向かい新幹線に乗り込んで、何とか午後のコンテンツから参加させてもらいました。

お題

TDDBC 仙台といえば毎回 takehiro_i さんが作成してくれているお題がひとつの楽しみだったりするわけですが、ご多分に漏れず今年もとてもおもしろい課題でした。格子点を扱う課題だったのですが、すでに全文公開されているので詳細は以下を参照してください。

TDD Boot Camp(TDDBC) - TDDBC仙台05/課題

僕も参加者として課題を解いたのですが個人的におもしろいなーと思ったのは以下のあたりでした。

  • 課題が段階的に公開される
    • これは以前の仙台開催のときもそうでしたね。
    • 実装するべきものの全体像がはじめはわからないので TDD のフィードバックループをまわしやすいお題提供のしかただと思います。
  • 早すぎる最適化 v.s. 拡張可能な設計 ファイッ
    • 上記のお題提供のされかたと関係しますけど、全体像がわからないから現状書かれたテストをグリーンにしたあとにどこまでリファクタリングするかというのがペアによって個性が出てたと思います。
    • ある程度抽象化してその抽象化したものに名前をつけて別の型や別のメソッドとしていたり、次の課題以降でどういう拡張があると予想して設計判断をしていたり、逆にグリーンにした後にほとんどリファクタリングせずにほぼベタ書きのままのコードが残っていたり。
    • いろいろな設計判断があっておもしろかったと思いました。
  • 型設計や責務設計の重要性がフィーチャーされやすいテーマ
    • 格子点とその集合をどういう型として設計するかとかそれぞれの責務をどういう風に考えるかというところが重要になる課題だったかと思います。
    • そういう意味で言語の文化や個性がよく出てた気がします。
    • 今回はなかったですが関数型のパラダイムが色濃い言語だったらどうなったのかちょっと興味があります。

で、お前は結局何やってたの

盛大な寝坊 & 遅刻のために本来やろうとしてた Go でのペアに入れなかったのですが、スタッフさんとペアだった JS 組があったのでそこでペアチェンジして ES6 でお題を解いてました。 僕の ES 力が低すぎて若者に迷惑をかけたところもあると思いますけど、TDD 的な視点でいろいろ教えることはできたんじゃないかなーと思います。

とてもモダンな JS 環境で TDD できてテンションあがったのでこの流れでフロントエンドエンジニアを目指すのもいい気がしますね。

懇親会 & LT

終わったあとは会場であるメンバーズさんのオフィスでそのまま懇親会兼LT大会が執り行われました。 和室っぽいスペースがありゆったりとした雰囲気でLT聞いたりディスカッションをしたりできました。

僕も LT しました。思ったより好評でよかったです。

www.slideshare.net

お礼

TDDBC はもう何度も参加してますがそれでも本当に毎回新しい学びがあり、今回も参加してよかったと思います。 スタッフの皆さん、会場を提供していただいたメンバーズさん、本当にありがとうございました。

一応 Go でやってみました

元々は Go で参加するつもりだったので、ペアプロはできませんでしたがソロで自分なりにやってみました。意見募集です。

*1:Goで普通にペアができる予定だったらしい