kariadの戯言

思ったこととか感じたこととか何か書きます

TDDBC Tokyo 2018-9に参加しました

9/30に開催されたTDD Boot Camp 2018-9に参加しました。

tddbc.connpass.com

一言で感想を言うと、非常に満足度の高いイベントでした。

一応前職でTDDで開発していたこともあったのですが、最近あまりやれていなかったのと、 厳密にTDDを理解して実践できていたかと言うとそんなことはなかったのでよりTDDを理解するために参加しました。

午前

@yattomさんによる基調講演から始まりました。

TDDとはと言う基本的な説明から、途中でライブコーディングによるデモもあったりしました。 ライブコーディングではTDDでTAや参加者にペアの相方を担当してもらいながら計算機と素因数分解についてデモしていました。

いくつか印象的だった話を書きます。

  • 仮実装によってプロダクトコードでテストコードの正しさを確認する

テストコードに関わらずテストに必ずつきまとう、「テストそのものの正しさ」について言及しています。 実際、自分もテストコードが間違っていてテストは成功していたけど実はバグがあったという経験があります... 最小限の実装によってテストが成功することで、テストの正しさを確認するプロセスがTDDには組み込まれているのはとても素晴らしいと感じました。

  • TDDはあくまでも開発手法であってテスト手法ではない

TDDやったからといってテストがすごいできるわけではないし(世の中にはTDDをテスト手法にまで昇華させた人もいるとか) TDDやったからバグがなくなるというわけでもないのはすごく納得しました。なぜなら網羅的に書くことが目的でもないから。
アジャイルテストの4象限http://jasst.jp/archives/jasst10n/pdf/S2.pdfに書いてある部分のうち TDDがカバーする範囲はチームを支援するテストが中心になる。Checking=既知の確認とTesting=未知の探索の考え方。 TDDではプロダクションコードを書くためにCheckingのツールとしてテストを書くので、Testingは別にちゃんとやりましょうねということだと思いました。

ランチ

ランチにはSwiftを選択した参加者とSwift担当TAのみんなで食べに行きました。
まずは全員で自己紹介後各々話をしたのですが、それがまたとても濃い内容でした。 特に今回SwiftのTAとして参加してくださっていた@Kuniwakさんはみんなの相談にのっていてご飯を食べるのを忘れていたほど...!

午後

お待ちかねのTDD実践タイム。お題は自動販売機の実装でした。 今回自分は@shizさんとペアを組ませていただきました。
二人でTODOを作成して、小さなステップを踏んでRed→Green→Refactorのサイクルを実践して行きます。 もうとにかく楽しくてあっという間に時間が過ぎ去って行きました。(もっともっとやっていたかった!!) 特にサイクルがクルクル回っている時は気持ちが良くて最高に楽しかったです。

今回はTDDという要素以外にもペアプログラミングという要素もありました。 実はペアプログラミングも以前仕事でやっていたこともあったのですが、やはり良いなと再実感しました。
自分がコードを書くときには声を出して自分の考えを伝えながら書くことで自身での理解も深まりますし、相手の考え方もわかってそういう方法もあるのか!という気づきの機会も与えてくれました。

途中レビューという形で他のチームの発表をいくつか聞くこともできました。 他のペアもみんな得るものが多かったのか楽しそうに発表されていました。 仕事でペアプログラミングというのもいいのでしょうが、こうした場で普段と違う人とペアプログラミングを実施するというのがとてもいいなと感じました。 会社も場合によっては職種も異なる相手(発表されたペアで開発エンジニアとテストエンジニアというペアがありました)とペアを組んで一つのことに取り組むのはとても勉強になると感じています。

コードを書くにあたっては、自分は結構型で縛ることでテストしなくていいことはテストしなくてもいいようにしたいと思っているのでそこは意識して書いて行きました。
自動販売機の課題でもコインをenumで表現することで101円といったイレギュラーの投入を型レベルで防いだりという感じです。

課題の最後まで行くことはできませんでしたが、とても濃密な時間でした。

懇親会

懇親会では突発モブプロが始まったりもしていました。

他のSwift参加者ともたくさん話せてとても楽しく過ごすことができました。 (生ハムも美味しかったです)

感想まとめ

TDDBCは控えめにいっても最高のイベントでした。まだ参加されていない方はぜひ一度参加してみて欲しいです。 運営のみなさま、TAのみなさま、そして参加者のみなさまも本当にありがとうございました。

TDDは開発の一部分だけにでも取り入れることはできるので、社内でも興味ある人に教えて行きたいと思っています。 まずはじめに10月から一緒にiOS開発を行う方がいるのですが、その方とはまず一回TDDでペアプログラミングをしてみようと思います。

また、社内にキッチンがありそこでたまにイベントを開催しているのですが、キッチンTDDみたいなイベントを開催して みんなでご飯作って食べながらわいわいモブプロ or ペアプロTDDができたらいいなとも考えています。

これからもTDDやって行くぞーーーー!

とりあえずみなさんまずはテスト駆動開発読みましょう。

テスト駆動開発

テスト駆動開発