こんにちは!Meggyです。2017年6月9日(金)、ヌーラボのエンジニア向けに、 和田 卓人 さん( @t_wada さん)による テスト駆動開発 のセミナー・ペアプログラミング実習が行われました!
日本のテスト駆動開発( 以下、TDD ) の第一人者である和田さんによるセミナーとあって、エンジニア陣はわくわく。当日は、福岡オフィスと京都・東京オフィスをオンラインで繋ぎ開催しました。
テスト駆動開発 ( TDD :test-driven development ) とは、「①まず最初に、各機能に必要なテストを書き、②最低限の実装を行なったあとで、③コードを洗練させていく」開発手法のこと。コードを書いた後にテストを書くのではなく、まず最初に失敗するテストを書き、そのテストに通る最小限の実装を行なう。そしてリファクタリングする、という流れです。
リファクタリングを阻害する要因は、堕落・焦燥・恐怖。面倒がってリファクタリングを行わなかったり、機能が壊れてしまうのではという恐怖から、削除すべき重複を見逃してしまうこともあります。 TDD の流れにならい、先にテストを行っていれば、安心してリファクタリングを行うことができますね。
「プログラマの不安をコントロールするためのテスト」「テストコードをドキュメント代わりにする、ただし、将来引き継ぐ人のためにテストのリファクタリングも必要」というお話があると、参加したエンジニアメンバーも「なるほど!」と頷いていました。
和田さんのセミナーが終わると、次は和田さんから課題を頂いての TDD 体験演習タイムです。二人一組となり、与えられた課題を TDD で開発します。使う言語は自由です。
ヌーラボのエンジニアメンバーも早速取り掛かります。
今回参加したヌーラボのエンジニアは、日常業務で携わっているプロダクトが異なります。 JavaScript が得意なメンバーもいれば、 Scala や Ruby に強みを持ったメンバーもおり、様々です。普段のチームでは関わる機会も多くないメンバーと一緒に、「どの言語で書きます?」という質問から始まるペアプログラミングは、とても新鮮なものでした。
今回はさらに、 TDD を実践しなければならないため、「そうだ、先にテストだ!」といった調子で開発が進んでいきます。
最後に、3チームから「何の言語でどんな風に実装したか」という発表が行われました。
まずは Ruby を使ったペア。
続いて Scala ペア。
最後は Java チーム。
それぞれのチームへの質問や指摘も盛り上がり、演習時間も終了となりました。
最後はあのポーズで集合写真!
非常に内容の濃いセミナーと演習。あっという間に時間が過ぎてしまい、まだまだお話を聞き足りないメンバーは、演習後も和田さんに直接質問に行くなど、ヌーラボのエンジニアにとって学びの多いとても貴重な機会でした。
セミナー後は、参加していない方々にも共有したい質疑応答が多く行われていました!
Q.「テストを書けば品質は上がるか?」
A.「テストで品質評価はできるけど「テストを書く」だけで品質は上がらない」Q. 「テストをするレイヤーは?」
A. 「 全レイヤーはつらい。モデルとEnd to Endテストがよい。」
また、参加したメンバーからは、
「思ったよりテストコード書かなくて良いんだなぁという気づきがあった。大量のテストで網羅するようなイメージだったから。」
「これまで、割とテスト書きっぱなしで大量に書いちゃっていたなーって反省した。」
「雑談で真剣な相談ができて本当に楽しかった。」
といった感想の声が挙がっていました。
改めて 和田さん、本当にありがとうございました! TDD を実業務に活かし、プロダクトの品質向上を図っていきたいと思いました。
また、ヌーラボでは今後も、外部からスピーカーをお招きした勉強会やイベントを開催していく予定です。興味がある方は、引き続きヌーラボのブログや Twitter 、 Facebook を確認してみてくださいね。