Katsuyaのひとりごと。

怠惰で短期で傲慢なつぶやきを

TDDyyχその38参加記〜RでFizzBuzzってどう解くの?〜

 

イベント概要

下記イベントに参加してきました〜

tddyyx.connpass.com

今回も紀尾井町にあるヤフーさんのLODGEにて開催されました。

 

当日の流れ

ざっくりこんな感じです。

  1. TDD、モブプロの説明
  2. 自己紹介 & チーム決め
  3. チームに分かれて1回目のセッション
  4. ふりかえり & 休憩
  5. 2回目のセッション
  6. ふりかえり

 

TDD、モブプロの説明

speakerdeck.com

特徴的なのは、前の人が書いたテストコードをパスするように実装を書いてリファクタリングして、次のテストコードを書いたら次の人にバトンタッチする、これをグルグル繰り返してTDD+モブプロを実践してることです。

あとはワイワイ会の名の通り、テストが通ったり、想定通りテストが失敗したらみんなで拍手して喜ぶ!ワイワイする!

 

1回目のセッション

全体で8人だったので、4人×2チームに分かれました。

私が参加させていただいたチームではRFizzBuzzの問題を解きました。「知らない言語」×「知ってるお題」の組み合わせパターンです。

cyber-dojoを使ったので環境構築が不要だったのはとても楽でした。

cyber-dojo.org

お題自体はもう何度も解いているものなのですぐに実装を書きたくなってしまう衝動にかられてしまいますが、そこはグッと我慢。TDDのプラクティスである「仮実装」「三角測量」「明白な実装」でステップ・バイ・ステップでテストを書きながら進めました。

Rは大学の講義でちょろっと触った程度なので全く文法などは覚えておらず、チームメンバーの誰一人としてRのことを知らなかったので、みんなして「どうやってfor文書くんだ?」「returnは文じゃなくて関数なのか!」と調べつつ四苦八苦しながら進めたのが面白かったです。

ドライバーとナビゲーターの交代が2周くらいするとチームのリズムができてきて、自然とワイワイするようになってきました。

お題自体は、

  • 数値→文字列変換
  • 3の倍数で"Fizz"に変換
  • 5の倍数で"Buzz"に変換
  • 15の倍数で"FizzBuzz"に変換
  • 1から100まで繰り返す

をテストできたところで時間切れになりました。「表示すること」のテストまではなかなか到達しなかったです。。。

 

中間ふりかえり

一旦みんなで集まってふりかえりをします。

感想や気づいたことなどを言い合うのですが、プログラミング言語・お題・TDD・モブプロ・運営・もし自社に持ち帰るなら...などいろんな視点での感想が聞けて面白かったです。

ふりかえりをしたら、少し休憩。各々ご飯を食べたり飲み物を買ってきたり談笑したりしていました。

1回目のセッションのふりかえりをしてる様子



2回目のセッション

2回目は自分たちの好きなタイミングでゆるゆると始まります。チームは変えても変えなくても良いのですが、私たちは1回目と同じチームでやりました。

次はGoBalanced Parenthesesのお題を解きました。「知ってる言語」×「知らないお題」パターンです。私自身はGoはほとんど触ったことがないですが、チームメンバーに1人有識者がいるので採用しました。

と、ここでアクシデント発生。cyber-dojoが急に重たくなって、ユニットテストタイムアウトし始めました。言語やテスティングフレームワークを変えてもだめ。

仕方なく他の開発環境に移ることにしました。今回選んだのはReplit。

replit.com

テストを実行するために少しだけ環境構築をする必要があり、一瞬苦戦するシーンがあったので、やはりcyber-dojoはTDDyyχで使う上で最適なサービスと感じました。補完もシンタックスハイライトもしてくれないけど。

そんなこんなでお題に取り掛かり始めたのですが、仕様をTodoリスト=テストケースに起こす段階でやや苦戦しました。お題の内容からしてすぐに「(Stackで実装して...)」なんてことを想像できてしまうがゆえに、ステップ・バイ・ステップの最初の一歩をどう記述するかに頭を悩ませました。

結局、Parameterized Testにて [ "(", ")", "()", "()()", "(())" ] あたりをテストしたところで時間切れ。カッコも1種類にしか対応できていませんが、なんとなく序盤のTodoをどう書けばよいのか、その触りの部分の感覚を掴めたとは思います。

 

1日のふりかえり

またみんなで集まってふりかえりをします。1人1枚ずつ紙にコメントを書きました。

 

全体の感想

3〜4回目の参加になりますが、毎度違う学びが得られるのでとても楽しいです。

同じ会社のエンジニアリングマネージャー・スクラムマスター・開発者で一緒に参加されている方々もいて、良いな〜とほっこりしました。

TDDもモブプロも大手を振って自チームに導入しようとするとその意義や費用対効果、リスクなどの説明を用意しないとできなさそうなので、自分一人でできる範囲から導入したり、TDDやモブプロという言葉を使わずにしれっと段階的に開発作業に組み込んだりしていきたいです。