TDD Boot Camp 東京 1.6 に参加してきた
去る 2011年7月31日、かねてより参加したかった、TDDBC (Test-Driven Development Boot Camp) に参加してきました。
phpでTDD&CI ワークショップに参加してきた。 - do_akiの徒然想記 の時の
受けるならもっとしっかりと時間がとれるときに受けてみたい
というのが叶った形になりました。
TDDBC 東京 1.6 の中身については既に素晴らしいまとめ (TDD Boot Camp 東京 1.6に参加してきた #tddbc - Shinya’s Daily Report) がアップされていますので、そちらを参照してください。
このエントリでは、個人的な感想のみを書いています。
会場は ニフティ株式会社さんのセミナールーム。
前日参加した qpstudy (第7回 ITインフラ 本当にあった怖い話 〜絶対に笑えないサーバ24時〜) で肝を冷やしてきた場所でした。
朝10時から18時までということで、始まる前は、ずいぶんと長い時間とってるなぁと思っていたのですが、始まってみるとあっという間で、実習時間は午後まるまる割り当てていたにも関わらず、足りないくらいでした。
C を選択
普段仕事で使っている言語が PHP だったので、PHP を選択したかったのですが、今回の TDDBC ではサポート対象外と言うことで別の言語を選択することになりました。
Java / C / C++ / C# / Ruby / Python / F# / Groovy / JavaScript から選ぶことになっていましたが、
C でのユニットテストというのが想像できなかったので、思わず選択。
後から思うと、 C# も結構使っているので、 C# を選択すれば良かったなぁと。NUnit なら触ったことがありましたし。
とはいえ、 C でのユニットテストという普段じゃ味わえない貴重な経験ができ、とても楽しかったです。LL系言語の拡張モジュールを書く際に役立ちそうです。
PCUnit というユニットテストフレームワーク
ユニットテストフレームワークには、 [twitter:@mayonezudaiou] さんに薦められた PCUnit を使うことにしました。
CUnit ライクな記述ができるらしいのですが、そもそも C言語のユニットテストフレームワークを一切使ったことがなく、C言語自体も、最近はそんなに書いていないので、完全に手探り状態での実習となりました。
結局、理解してしまえば他のユニットテストフレームワークに似た使い勝手なので、そんなに苦労はないのですが、
ただ一点、テストメソッドを記述した後に、別途登録するコードが必要なのが面倒でした。
テストメソッドを書いて、登録し忘れることが何度あったことか。。。
テストが失敗する事を確認するのはTDD の最初の手順なので、順序通りこなしていれば気づけるハズなのですが、
実習を進めていく課程で、それを忘れたり、一気に進めてしまったりすることで、気づけないケースも何度か。
基本は大事ですね。
TDD の実践とペアプロ
TDDBC は、TDD をしっかりと学ぶ良い機会でもあるのですが、それと同じくらい、ペアプログラミングを試せる良い機会でもありました。
ペアプロは今まで一度も実践したことが無かったので、うまくできるか心配だったのですが、思ったよりスムーズに、楽しく進めることができました。
ただ、想像していた以上に疲れるものなんですね。
かなり真剣にやっていたこともあり、 最初の1時間程度で結構疲れがどっとやってきました。
アシスタントとしてC言語卓に付いてくださった [twitter:@tosikawa] さんから、適度に休みながらやると良いというアドバイスをもらえたので、かなり気が楽になりました。
課題については、始める前から言われていたとおり、結局時間内に終わらせることはできませんでした。
(Cだと、元から用意されているものが少ないので、さくっと実装するというのがなかなか難しいのです。)
途中、メモリ領域の確保がうまくいかなかったり(組み込み向けのエミュレータを使っていたので、もともと確保可能なメモリが少なかった)、printf が想定した動きをしなかったり(#include
普段 PHP で開発していると遭遇しないような問題にぶつかって結構時間をとられましたね。
グリーンバンド
TDD はもとより、テストそのものも、普段仕事でやっている開発ではおなざりになりがちです。
だからこそ、TDDBC の修了証とも言えるグリーンバンドは、仕事中付けて常に意識するようにしています。
現代的ソフトウェア開発の三本柱が、バージョン管理、テスティング、自動化 であるというのは和田さんの話の中にありましたが、ほんとにそうだと思います。どれか一つ欠けても成り立たない。
でも、テスティングや自動化はまだまだこれからという部分でもありますので、グリーンバンドをはめて、意識して続けていこうと思います。