単体テストの数を増やすために、研修を企画
寺尾氏は今後追加される新規コードにテストを書いてもらうことから始めることにした。
そのために寺尾氏が企画したのは、「JUnit dojo」というオンラインハンズオン形式の研修コンテンツ。1回30~60分という限られた時間で10~20名ごとに実施し、合計40人の開発者が研修を受講した。
まず、JUnit dojoマインド編としてt_wada氏の「TDD Boot Camp 2020 Online #1基調講演/ライブコーディング」の鑑賞会を実施。次にJUnit dojo基礎編として単体テストの基本的な書き方を習得するハンズオン形式の研修を行った。
この2つの研修を実施したことで、単体テストのメリットを理解し、新規コードに単体テストを書く人が増えたという。だがそれでも脱レガシーはできなかった。なぜならレガシーコードに対して単体テストが書けなかったからだ。
「リファクタリングを実施するにはテストが必要だが、テストを書くためにはリファクタリングが必要」というレガシーコードのジレンマを克服するための方法論として、寺尾氏が新たに企画したのがJUnit dojo実践編。これは、レガシーコードに単体テストを書くための実践的なスキルを習得するための研修だ。「研修内容が比較的高度になるため、全員を対象とするのではなく、各チームから1~2名を募って実施しました」(寺尾氏)
そして受講した人にJUnitのエバンジェリストになってもらい、各チームにレガシーコードの単体テストを書くスキルを広めてもらうことにしたのだ。この研修用コンテンツはGitHubで公開されている。興味のある人はぜひ、チェックしてほしい。
実践編を実施したことで、レガシーコードにも単体テストが書けるという認識ができ、「気軽に単体テストにチャレンジする人が増えてきた」と寺尾氏は語る。
開発者の意識が変わったことで、開発組織にも次のような変化が起こった。dojo参加者が講師役となり、JUnit dojoの再放送が行われたり、単体テストの勉強会がチームで開催されていたり、単体テストを書きやすくするための共通モックが整備されたりしたという。さらに他プロダクトまで噂が広がり、単体テストの環境が各プロダクトに整備され、実務で単体テストを書いていく定期的な活動「JUnit部」が発足した。開発者からも「テストを書くのが楽しい」「リファクタリングできそう」「JUnitでテストを書くことで、問い合わせの回答がしやすくなった」など、嬉しい声がたくさん寺尾氏の元に届いているという。
単体テストを書く人が増えていることは、数値でも明らかとなっている。「JUnit部が発足したことで書く人が増え、現在は月150件超えるペースで単体テストが作成されている」(寺尾氏)
現在のWorks Human Intelligenceの開発組織は、単体テストを書くのはもちろん、その上でロジックをリファクタリングすることも当たり前のように行われるようになっているという。
「当社のプロダクトはソースコードが数百万行と巨大なので、全コードに単体テストを書くことは難しい。だが、戦略的にテストを書いていくことでリファクタリングが進んでいくと考えている。時間はかかるが必ず脱レガシーを達成し、変化に強い製品開発体制を整えていきたい」
最後にこう力強く語り、寺尾氏はセッションを締めた。