古きよき時代から来ました、まじめなSE、まじめにSE。 id:bash0C7 です。
先日、テスト駆動開発を座学だけでなく実習形式で手を動かして身につけるイベント、TDD Boot Campの社内版を開催しました。 このエントリーではどういった狙いでどのようなかたちで開催したのかを解説します。
TDD Boot Campとは
TDD Boot Camp(TDDBC) - TDDBC のサイトに下記の説明があります。
TDD Boot Camp(TDDBC) とは、テスト駆動開発(Test Driven Development)について、座学だけでなく、実習形式で手を動かして体得することを目的とするイベントです。
各地のコミュニティの方々が中心となって、全国各地で行われています。
わたしはかつて2010年の 7月10日 TDD Boot Camp名古屋(愛知県) に参加し、そのおかげできちっとしたサイクルでテスト駆動開発をできるようになりました。
ここで得た技術はいまでも生きており、日々実践しています。
社内版のTDDBC
テストコードを書く習慣は今日当たり前になっていますが、テスト駆動開発については名前は聞いたことあってもそのやり方は知らないメンバーが多くいました。そこで、各自がより快適かつスピーディーにプログラミングを進めて、社内の開発パワーを引き上げるために、社内版のTDDBCを企画しました。
参加者は11名で、説明とハンズオン合わせて2時間弱でした。
下記に、資料と、ハンズオンパートで考えたことをまとめましたので、是非みなさんの現場でも実践する際の参考にしてください。
資料
ライセンスはCC-BYです
説明は、id:t-wada 資料を使わせていただきつつ、語りは社内コンテキストに合わせて自分の言葉で語るようにしました。取捨選択した部分も多く細部の正確性に欠けるかもしれませんが、今回は理解しやすさを重視しました。
ハンズオンパートの解説
チュートリアルではトラディショナルなFizzBuzzを取り扱い、ハンズオンでは似たような課題として「朝・昼・夜」判定を行いました。利用言語は事前にアンケートを取り、Ruby、Java、PHP、C#が使われました。
数点よくある罠を仕込んでいます。例えば条件に「11時までが朝」という境界値がぼやけた書き方をしてみることや、「分は問わないから時だけ扱えれば良い」と予め言って整数を引数にとるように仕向けて、26時という追加要件に対応させたのち、「朝は5時半からに変更」と整数を取ってしまった場合にちょっと困ってもらうようにしてます。
いたずらに困らせたかったわけではなく、それらは適切な開発環境とテストコードがあれば十分対応可能なので、テストコードで守られている安心感と変更容易性を感じてもらうのが目的でした。