TDDBC Online 参加レポート
こんにちは、近藤です!
去る 8月1日(土) 、TDDBC Online #1 に @choc-lucy で参加させていただきました。
遅ればせながら、イベントレポートを残しておきます!
TDDBC とは
TDD Boot Camp(TDDBC) とは、テスト駆動開発(Test Driven Development)について、座学だけでなく、実習形式で手を動かして体得することを目的とするイベントです。
これまで10年以上に渡り、日本各地でそれぞれの地域のコミュニティにより運営されてきました。
( http://devtesting.jp/tddbc/ )
イベントページはこちら
準備日
今回 TDDBC 初のオンライン開催ということで、事前準備を開催2週間前に行いました。
やったこと
Discord のインストール & サーバーへの参加
リモートペアプロデモ
- TA のお二方による、Java を用いたリモートペアプロ&TDDデモ
- チャットでは他のTAさんが質問に答えてくれていました
- これだけで本番かのような満足感がありました。録画しておきたかった!
言語ごとのペア決め
- PHP は4人参加だったので、2ペアにわかれました
ペアごとに環境構築
- 今回は VSCode の LiveShare 機能を使ってコード共有しました
etc…
当日
twada さんによる基調講演
配信のアーカイブはこちらにあります。
TODOリスト作成時のタスク分解の鮮やかさ、初見だと震え上がります。
チャット欄の質疑応答も勉強になるので最低2周は必聴です!
個人的に印象に残っていることは以下の通り。
TODOリストからタスクを選ぶ基準は「重要かつテスト容易性が高い」もの
- 重要なものほどテスト容易性が低い、というのは思い込み!
仮実装(=「ひどい茶番」)を経由することで、テストコードのテストを片付ける
リファクタリングは辞め時も大事
- サイクルを回すたびにチャンスはくるので、1度に時間をかけすぎないほうがいい
-
- ただし、「HTTPステータスが200でそのメッセージはこれで…」のような複数組み合わせが全て成立して意味を成すものなら、複数のAssertionが存在しても良い
ペアプロ&TDD実践
初めてのペアプロ、初めてのTDD……
結論をいえば、ものすごく楽しかったです!
お題はこちらの閉空間でした。
1. ペアプロ & TDD
始めはペアの方と2人して「ナビゲーター」をしている状態だったのが、
交代を経るごとに互いの役割を意識してコーディングできるようになりました!
うっかり2人で沼に向かっていったとき、TAさんが助言をくれていたのも、スムーズに進められた要因かなと思います。
おもしろかったポイント
問題文からTODOリストへ落とし込むタスク分解が難しい
- なかなか「テスト容易性が高い」といえるレベルまで分解できなかった
- ある程度で見切りをつけ、分解できなかったものはまた後で考えましょう、としたのは良かった
- 後半になるにつれ、タスク分解力が向上していった
ペア2人で議論を重ねて合意した設計だったが、仮実装の段階で方針転換した
- 基調講演で「TDDでは設計をし続ける」と言われていたのが実感できました
2. レビュー
中間レビュー2回と最終レビューの計3回、レビューの機会が設けられていました。
この時間にTAさんからのフィードバックをもらったり、他ペアのコードを見たり、そのコードについて議論したりしました。
おもしろかったポイント
他ペアの思考を知れた
- 画面共有して、実際のコードとTODOリストを見せてもらいながら、その思考を説明し合いました
- 「getterのテストをあえて書かなかった」というあるチームの一言で、そもそもテスト対象として考えていなかったことに気づいたり
他言語ペアのコードを見られた
- PHPチームは Ruby, Java チームのコードを見られましたが、言語仕様による設計の違いが出ていておもしろかったです
まとめ
ペアプロもTDDも、言葉として知っていても、懐疑的に構えていた節がありました。
実践した今となっては「すみませんでした!!!」と言いたいです。
設計力は上がるし、品質も向上するし、仕様が1人に留まらないし、いい事だらけです。
ペアプロを1度経験した人間はハマるという言論を何度か見かけましたが、まさにその通り。ハマりました。
仕事のほうは案件状況的に「今からペアプロしましょう」なんて感じではないので、プライベートでの実践を目論んでいます。
TDDは1人で勝手にやっています。たのしー!
ここから輪を広げていけたら最高ですね。がんばります!
以上、近藤によるイベント参加レポートでした!