【エンジニア勉強会レポート】TDDBC in GaiaX


初めまして。今年新卒で入社した、プログラマの丹内です。

コブログというブログサービスの運用改善を行っています。

今回は、社内で行われたTDDBCというイベントについて報告します。

TDDBC

 

TDDBC(TDD Boot Camp)とは

 

プログラムの動作を確認するプログラム(テスト)を最初に書き、その後実際に動作するプログラムを書くテスト駆動開発(TDD)に皆で入門しよう!というイベントです。

今回はTDDの第一人者であるt_wadaさんを会社に講師としてお招きして、講義とハンズオンを行いました。

 

TDDBCをなぜ行うのか

 

テストを先に書くTDDとは、テストから書く事によって仕様が明確になり、デバッグ工数が減り、バグの作りこみをある程度抑制することのできる開発手法です。

開発時の一時的な工数増はありますが、バグ検証の工数は大幅に減ると言われています。

このTDDという開発手法でバリバリ書いているチームもありますが、まだまだテストを書いていないチームもあります。

全社的にいきなり実務にTDDを導入することは難しいので、今回はBoot Campという形式で練習を行い、テスト駆動、またはテストを書く文化の導入への第一歩とするため、TDDBCは行われました。

 

当日の様子

 

TDDBC in GaiaXは昼過ぎに開始しました。最初は講師t_wadaさんの講義です。

私個人としては、今年5月のTDDBC in 長岡でも受講していましたが、研修が終わりチーム配属となり、ちょうど3か月業務を行ってからの受講なので、「今ならよく分かる」という内容も非常に多かったです。

講義が終わった後、FizzBuzz問題を題材にしたt_wadaさんによるTDDのデモが行われました。

デモの後は、休憩を挟んで、言語ごとにペアを組みTDDのハンズオン(実際に自分で手を動かして実感する講義形式)です。

最初にt_wadaさんが出そうとしていたお題は、私が前回TDDBCに参加して解き方を知っていたため、別のお題に変更となりました。

“LRU Cache”と呼ばれるデータ操作の仕組みを、テスト駆動で作るというお題です。

ペアごとにTDDを実施して、成果を発表してコードレビューを行いました。

プロダクトコードの設計や、各言語でテストを実装するときに苦労した点などを話し合いました。

 

TDDBCで学んだこと

 

TDDで大切なのは、フットワークの軽さです。テストを書き、テストに通る最小限のプログラムを書き、より良いプログラムになるよう書き換える(リファクタリング)を素早く何回も行うことが重要な要素です。

この参加報告エントリを書いている今の僕がこう思えるのは、「プログラムの設計」と「リファクタリング」、この二点の重要性をTDDBCで学べたからです。

まず「プログラムの設計」について。ハンズオン開始直後、いきなりプログラムを書き始めるのではなく、まず作りたいプログラムの仕様を考えます。当たり前といえば当たり前ですが、実はここがTDDBC最初の関門です。

実装まで深く考えこみすぎるとテスト駆動を早く回せず、メリットを享受することができません。とはいえ、考えないで作り始めると後々になって迷走してしまいます。

実際、ハンズオン前の講義で「考え込みすぎるといけない」と言われて、ハンズオン前半ではあまりよく考えないまま実装に移ってしまったため、都度仕様を考えるため手が止まってしまうことがありました。

 

また、リファクタリングも非常に重要です。最初にテストを書きその後プログラムを書くという流れはすぐに慣れたのですが、どこを・どのように・いつ、リファクタリングするのかということはずっと試行錯誤していたと思います。

ハンズオン前半ではリファクタリングしないまま実装を進めてしまったので、あいだの休み時間に反省し、後半のハンズオンではまずリファクタリングから始めました。結果、後半のハンズオンではテスト作成、プログラム作成、リファクタリングのサイクルを早く回すことができました。

 

TDDを実践するうえでよく用いられるこのような考え方やコツは、実践して体験しなければ理解できません。Boot Campでは試行錯誤を繰り返し失敗できたので、非常に良い経験になりました。

 

どうチームに活かすか

 

私が所属するチームでは、TDDはまだまだ浸透しきっていません。なので、まずはテストを書くメリットと重要性を分かってもらう必要があります。
私が率先して、既存プログラムの構造をテストが書きやすいものにリファクタリングして、テストを日々書いていくところから始めようと思います。
新しく書くコードはテスト駆動で書くようにして、TDDが素晴らしいものであるということを分かってもらえるように頑張ります!

 

今後について

 

今回のTDDBCは、ガイアックスのR&D全体に向けた大規模TDDBCに先立って行われたTA養成講座のようなものでした。

次回もt_wadaさんを講師に迎え、全社的なTDDの導入を行えるように、良いTDDBCを行いたいです!

 

謝辞

講師をお受けくださったt_wadaさん、最初に企画してくださった肥後部長、誠にありがとうございました!


2013-10-15 | Posted in イベント, エンジニア勉強会

関連記事