こちらはコドモン Advent Calendar 2023の11日目の記事です🎅
こんにちは!コドモンプロダクト開発部の村松です。
コドモンでは1週間につき半日、業務時間を自己学習に使える0.5投資制度があります。
今回は0.5投資制度を使い、チーム内で行ったTDDの輪読会について紹介します!
輪読会スタートの背景
コドモンでは以前、t_wadaさんにレガシーコード改善ワークショップを行っていただきました。
ワークショップをきっかけにTDDへの関心がチーム内でも高まったので、今回の輪読会はTDDをテーマにスタートしました。
輪読会の進め方
輪読会では以下の書籍を使用しました。
テスト駆動開発(TDD)とは「テスト」→「実装」→「リファクタリング」の順に開発を行う手法です。
本書では多国籍通貨を扱うJavaのプログラムを例にとり、TDDのプロセスを体験できるようになっています。コドモンでは主にPHPを使っているため、PHPで写経しながらペアプログラミングでTDDのプロセスを学びました。
本書の後半ではTDDを実践する上でよく使うテクニックやパターンなどが掲載されており、各章持ち回りで発表し、議論しました。
輪読会の頻度は週1回に2時間ほど時間を取り、参加者は任意参加ではありましたが、エンジニアメンバー全員で行っていました。優先度の高いタスクがある際はスキップすることもありましたが、基本的には毎週続けることができました!
輪読会のメリット
輪読会を通してチーム全体でTDDに対する共通認識を持つことができました。 また、一人だとスルーしがちな疑問も知見のある人が拾ってくれるため、一人で読むよりも多くの学びを得ることができます。輪読会を行った結果、学んだことを日々の業務に落とし込み、実践しようとするチーム全体の意識が芽生えました。
チームでの変化
輪読会を通して、チームでの開発業務が向上したのでいくつか紹介します。
テストを先に書くのが当たり前に
TDDの輪読会を通じて、テストを先に書くことが当たり前になりました。以前から意識はありましたが、ペアプロ中に実装から始めることが少なからずありました。 その原因としてはテストを先に書くメリットをしっかり理解していないことにありました。今では輪読会を通して、テストから先に書くことで実装方法が明確になるメリットを体験することができたので、実装から始めることは無くなりました。
小さくテストし、開発サイクルを回す意識
輪読会を通じて小さなステップでテストを書き、開発サイクルを回すことの重要性を知りました。大規模な実装タスクでも小さなテストに分割し、着実に実装を前に進める意識をチームで持てました。開発の進捗が可視化され、実装難易度のコントロールが容易になりました。
問題の言語化と改善
開発がスムーズに進まなかった際、TDDの文脈で何ができていなかったのか言語化し、改善できるようになりました。「このテストは歩幅が大きすぎるから仮実装から始めよう!」など、日々の業務の中で問題に気づき、改善できるようになりました。
todoリストの活用
TDDで多用されるtodoリストを導入し、ペアプロの進捗状況を簡単に共有することができるようになりました。私の所属するチームでは1日に1回のペアチェンジを行なっているため、情報共有に必要な時間を短縮できてとてもメリットを感じています。
おわりに
私自身は技術書の輪読会に参加したのは初めてだったのですが、自分以外の意見や考えも学べ、とても学びの多い輪読会でした🥳 今後もチーム内で輪読会は継続しようと考えています!
最後までお読みいただきありがとうございました!引き続きコドモンのアドベントカレンダーをお楽しみください🎄