[イベントレポート] t_wadaさんを講師に迎えた、 TDDBC Sendai 7th に参加してきました! #tddbc #sendai
はじめに
おばんです、最近シェルスクリプト書きとDockerに入門した田中です。同時にAWSのECSなんかも絡めて触れてみているのですが、サーバーサイドの世界は自分の知らない賢さやアイデアに溢れていて最高って感じます。
今回は TDDBC Sendai 7th というイベントの参加レポートになります。このイベントを一言で表すならば、「一日TDD漬け!」
講師はTDDの伝道師!「テスト書いてないとかお前それt_wadaの前でも同じこと言えんの?」でおなじみのスタンド、ワイルド・サバンナを使役する@t_wadaさんこと和田卓人さんです。和田さんには先日弊社でもTDDの指導をしていただきました。
会場提供は楽天株式会社仙台支社様!ありがとうございます!
Togetterはこちら。
2017/09/09(土) TDDBC Sendai 7th 自分の会社でもTDDがやりたい #tddbc - Togetterまとめ
基調講演
座学です。内容は以下の記事の 前半は和田卓人さんによるTDD再入門 に記載されていますのでそちらを参照してください。
#TDDBC 仙台はじまりました! まずは和田さんの基調講演から! pic.twitter.com/3KFAGHpX55
— YAMAMOTO Masaki (@nnasaki) 2017年9月9日
— ダンボー田中@iOSDC 前夜祭登壇組 (@ktanaka117) 2017年9月9日
“動くコードに触れるな” の神話 #tddbc #sendai
— Toshiyuki Kawanishi (@tosikawa) 2017年9月9日
静的型付け言語においては、コンパイルエラーもレッドの一種と考える#tddbc #sendai
— ダンボー田中@iOSDC 前夜祭登壇組 (@ktanaka117) 2017年9月9日
TDDデモ
和田さんによるFizzBuzzをTDDで実装するデモが行われました。重要なこととしてまとめられたのは以下の点でした。
- 問題を小さく分割する
- TDDの歩幅(ステップ)を調整する
- テスト -> 仮実装 -> 三角測量 -> 実装
- テスト -> 仮実装 -> 実装
- テスト -> 明白な実装
- テストの構造化とリファクタリング
- 仕様をテストケースに書く(具体的なテストケース名だけでなく。引き継いだ人がわかりやすいように)
- 対称性をもたせる
チーム分け&昼食
Sushi
チーム分けはこちら。言語ごとに分かれて、Swiftチームは3人一組みでやりました。
ひたすらTDD&ペアプロ!
お題はこちら。
TDD Boot Camp(TDDBC) - TDDBC仙台07/課題_2
今回自分が参加したSwiftチームではテスティングフレームワークにBDDで書ける Quick を採用しました。BDDで書けるため、テストの構造化がしやすく読みやすいという利点がある一方で、せっかく構造化したテストケースが実行結果では階層構造で見ることができないという残念な点があることに気付きました。
設計方針として、トランプカードの定義をツーカードポーカーというゲームのロジックと切り離して実装しました。そうすることで基本となるトランプカードがどんなゲームにも対応しやすいようにし、ゲームごとのルールをトランプカードにどう当てはめて考えるかはゲームロジックの役割側で考えるべきだとする方針です。
実装途中のコードですが、以下にアップしてあります。よかったら見てみてください。
コードレビュー
TDDBC Sendai では毎回全てのチームのコードを全員でレビューします。出てきたレビュー観点は以下のようなものです。
- その命名は妥当か?
- 役割わけとして、別な設計指針の方が良いのではないか
- テストケースに現れる「正しいこと」の「正しい」という表現とは?
- テストケースは妥当か?
- テストケースの対称性を担保するためにケースを追加するか、削除するか
など。
懇親会
カラオケボックスで行われるLT大会。オフレコ話だったり、お題になったポーカー問題の続きや出題意図などを聞くことができてとても楽しい会になりました。
成果物
まとめ
お題が秀逸で、言語やテスティングフレームワークは違えど共通して議論を交えることのできる課題設定でした。そして特に魅力的だったのは以下の点です。
- 自分の中にはなかったアイデアをもらえる
- なぜこの実装にしたかの説明をする
- なぜこのテストケースを作ったか/作らなかったかの説明をする
こんなことを大人数で検討・議論しながらコードレビューするのがとても楽しい!これが成り立つレベルの高い参加者の方々とやりとりできるのが楽しい!
TDDに慣れたので、仕事でも取り入れて行ってみようと思いました。準備して開催してくださったスタッフのみなさま、ありがとうございました!