1年以上前からずっと読んでいる本について書いてみる。

『test driven development for embedded c』

https://amzn.to/3xbczxP

C言語を使った組込み開発でテスト駆動開発をどう実践するかについてかかれた本である。

この本は、印刷された本のみではなくて、電子書籍としても販売されているのが嬉しい。しかも、電子書籍上のURLをクリックすると、その部分のソースをダウンロードできるところが、またなんともいえなく感動的である。

自分は、はじめは通勤中に本をカバンにいれて読んでいたのだけれども、ある日上司に勝手にバックのなかを覗かれて、

『これはなんだ!』

と、エロ本を見つけた先生のようにニヤけながらいわれたのが嫌で、電子書籍を購入した。

(電子書籍はここから)

https://pragprog.com/book/jgade/test-driven-development-for-embedded-c

内容について

はじめはテスト駆動開発のことが述べられているのだが、だんだんと関係ない話題が出てきて、C言語でオブジェクト指向ライクに書くための方法だったりが混じってきて、最後のほうはTDDとはあまり関係なく、いかにして”Clean Code”をかくかということに主眼が移っていくことが、?と!で面白かった。

簡単な要約

  • 序章:TDDってなに?
  • 第1章:Unityを使ってTDDしてみる
  • 第2章:TDD応用編。テストダブル(Test Double)の紹介。ダミーファイルを使ってコンパイルする置換方法(Link-time substitution)、Test Spy、関数ポインタを使った置換方法(Function pointer substitution)、モックオブジェクトの使い方などなど。
  • 第3章いかにしてClean Codeを書くかの説明。そのための手段としてTDDを使いましょうということ。SOLIDの原則、オブジェクト指向ライクなCの書き方、リファクタリング、レガシーコードとの付き合い方などなど。

扱っているテストツールについて

  • Unity
  • CppUTest

の2つが紹介されている。

Unityは軽量なツールなので、結構良かった。

CppTestは、TestSuiteを作成しなくても、自分で作成してくれるところがいいところ。ほかにも、様々なサボートツールがついている(モックオブジェクト作成用のCppUMock、関数ポインタを置き換えるツールUT_PER_SET)ので、便利(これもすべて、書籍のなかでつかいかたは説明されている)

おわりに

仕事がC言語で組込み開発な自分にとっては最上のTDDバイブルだった。年甲斐もなく、ボロボロになるまで読んでいる。スルメイカのように、読めば読むほどに発見があるので、1年たった今でも新鮮だ。

(2013/10/22 追記)

日本語訳がでたようだ。

https://amzn.to/3CJNdbc