すごい広島 #6 でテスト駆動開発の読書

Share

すごい広島とは 広島のエンジニアやウェブデザイナーが毎週集まって、 もくもくしたり Hackしたり 読書したり する場所です。

先週は欠席したので、今週は第6回でした。

「テスト駆動開発による組み込みプログラミング――C言語とオブジェクト指向で学ぶアジャイルな設計」という本を読み始めました。

原著 Test Driven Development for Embedded C のページからサンプルコードをダウンロードして、make しながら読み進めました。

組み込みの開発はするかも知れないし、しないかも知れないのですが、NVDA に組み込まれている eSpeak や libLouis のようなライブラリも、一種の組み込みソフトウェアとしてとらえています。

この本で使われているツールは UnityCppUTest なのですが、ダウンロードしたサンプルコードの中にどちらも入っていました。
VisualStudio のプロジェクトファイルも入っているのですが、Cygwin か Mingw で make all するほうがしっくりきます。
著者は Eclipse の CDT で、ファイルを保存したときに自動的にテストが走るようにしているそうです。。

著者のJames W. Grenningさんの講演は5月にアジャイルジャパン広島サテライトに参加して拝聴しました。講演の内容はプログラミングというよりも開発者の文化とか理念のお話でしたが、そのときにこの本が紹介されたのを、今頃になって思い出したのです。

今日読んだのは最初の100ページくらいなのですが、テスト駆動開発の「王道」がきっちり実践されているので驚いています。
C言語を教える大学の情報系カリキュラムで、アルゴリズムと並行してこういう実践をさせたら、すごいことになるんじゃないかと思ったり。。

オブジェクト指向開発とかテスト駆動とかいう話は、たいていプログラミング言語と結びついて語られるわけです。そして、この本は、C言語でアプリケーションそのものをオブジェクト指向的に書いたりはしないようです。でも、テスト駆動開発に必要なエッセンスを、素材であるC言語で、どう実践したらいいのか、見せてくれます。
しかも、律儀に、テストを書く、失敗させる、コードを書く、成功する、という繰り返しを読者にしつこく提示します。

テスト駆動は「何を使うか」ではなくて「いかに実践するか」なのだなあと改めて思いました。
ツールの仕様だけを覚えても、思想やスキルは身につかないということですね。。
この本の面白いところは、バージョン管理ツールについて一切言及がないところです。
これだけテスト駆動を実践すると、どこでコミットするかとかブランチを切るかとか、普通はやるんですけど。。
ただ「継続的インテグレーション」の説明の中で、バージョン管理ツールとのつながりそのものは語られているので、おそらく、話題を発散させないためにわざと削ったのだと思えてきました。

そんなわけで「C言語をカッコよく使いこなしてみたい」と思わせてくれる本です。