テスト駆動開発 (TDD) の第一人者、和田卓人(@t_wada)さんによる社内エンジニア向けセミナーが行われました!

こんにちは!Meggyです。2017年6月9日(金)、ヌーラボのエンジニア向けに、 和田 卓人 さん( @t_wada さん)による テスト駆動開発 のセミナー・ペアプログラミング実習が行われました!

日本のテスト駆動開発( 以下、TDD ) の第一人者である和田さんによるセミナーとあって、エンジニア陣はわくわく。当日は、福岡オフィスと京都・東京オフィスをオンラインで繋ぎ開催しました。

テスト駆動開発テスト駆動開発の第一人者、和田卓人(@t_wada)さん登場!

テスト駆動開発 ( TDD :test-driven development ) とは、「①まず最初に、各機能に必要なテストを書き、②最低限の実装を行なったあとで、③コードを洗練させていく」開発手法のこと。コードを書いた後にテストを書くのではなく、まず最初に失敗するテストを書き、そのテストに通る最小限の実装を行なう。そしてリファクタリングする、という流れです。

テスト駆動開発TDDと黄金の回転。和田さんは小ネタがお好きです。

リファクタリングを阻害する要因は、堕落・焦燥・恐怖。面倒がってリファクタリングを行わなかったり、機能が壊れてしまうのではという恐怖から、削除すべき重複を見逃してしまうこともあります。 TDD の流れにならい、先にテストを行っていれば、安心してリファクタリングを行うことができますね。

テスト駆動開発セミナーを聞きながらコードを書くメンバーも!

 

「プログラマの不安をコントロールするためのテスト」「テストコードをドキュメント代わりにする、ただし、将来引き継ぐ人のためにテストのリファクタリングも必要」というお話があると、参加したエンジニアメンバーも「なるほど!」と頷いていました。

 

テスト駆動開発セミナーが終わると、ペアプログラミング実習。

和田さんのセミナーが終わると、次は和田さんから課題を頂いての TDD 体験演習タイムです。二人一組となり、与えられた課題を TDD で開発します。使う言語は自由です。

テスト駆動開発与えられた課題。

ヌーラボのエンジニアメンバーも早速取り掛かります。

演習中、和田さんからのツッコミも入ります。


今回参加したヌーラボのエンジニアは、日常業務で携わっているプロダクトが異なります。 JavaScript が得意なメンバーもいれば、 Scala や Ruby に強みを持ったメンバーもおり、様々です。普段のチームでは関わる機会も多くないメンバーと一緒に、「どの言語で書きます?」という質問から始まるペアプログラミングは、とても新鮮なものでした。

今回はさらに、 TDD を実践しなければならないため、「そうだ、先にテストだ!」といった調子で開発が進んでいきます。

最後に、3チームから「何の言語でどんな風に実装したか」という発表が行われました。

まずは Ruby を使ったペア。

==を拡張、バージョンの数字チェックを配列操作(map)+anyで一気にチェック。

続いて Scala ペア。

「equalsはtoStringの比較でよかったのでは?」との質問が会場から起こりました。

最後は Java チーム。

和田さんからは、「hashCodeもオーバーライドしよう」というツッコミが入りました。すごく細かいところまで見てくれているのに驚き!

それぞれのチームへの質問や指摘も盛り上がり、演習時間も終了となりました。

最後はあのポーズで集合写真!

集合写真(福岡オフィスメンバーのみ)

非常に内容の濃いセミナーと演習。あっという間に時間が過ぎてしまい、まだまだお話を聞き足りないメンバーは、演習後も和田さんに直接質問に行くなど、ヌーラボのエンジニアにとって学びの多いとても貴重な機会でした。

セミナー終了後、カフェスペースでの一幕。

セミナー後は、参加していない方々にも共有したい質疑応答が多く行われていました!

Q.「テストを書けば品質は上がるか?」
A.「テストで品質評価はできるけど「テストを書く」だけで品質は上がらない」

Q. 「テストをするレイヤーは?」
A. 「 全レイヤーはつらい。モデルとEnd to Endテストがよい。」

また、参加したメンバーからは、

「思ったよりテストコード書かなくて良いんだなぁという気づきがあった。大量のテストで網羅するようなイメージだったから。」

「これまで、割とテスト書きっぱなしで大量に書いちゃっていたなーって反省した。」

「雑談で真剣な相談ができて本当に楽しかった。」

といった感想の声が挙がっていました。

改めて 和田さん、本当にありがとうございました! TDD を実業務に活かし、プロダクトの品質向上を図っていきたいと思いました。

また、ヌーラボでは今後も、外部からスピーカーをお招きした勉強会やイベントを開催していく予定です。興味がある方は、引き続きヌーラボのブログTwitterFacebook を確認してみてくださいね。

開発メンバー募集中

より良いチームワークを生み出す

チームの創造力を高めるコラボレーションツール

製品をみる