きよしこのテスト駆動開発
もうすぐクリスマスですね!みなさん、アドベントカレンダーの進捗どうですか?
僕はクリスマスとは無縁な日々を過ごしているので、アドベントカレンダーのおかげでクリスマス気分を味わえて嬉しいです。
※ この記事は VOYAGE GROUP エンジニアブログ : Advent Calendar 2013 の9日目の記事です。
クリスマスのデート先といえばきらびやかなイルミネーションスポットですが(たぶん)、人がいっぱいいて大変ですよね(想像)。そういう時はイルミネーションを自分で作って、家に飾ればいいんじゃないですかね。
- 用意するもの
- LEDテープ
- Arduino
- ハンダ付けセット
- クリスマスツリー
LEDテープ
今回はフルカラーシリアルLEDテープを使ってイルミネーションを作っていきます。使用したものはスイッチサイエンスさんで販売されているこのLEDテープです。1mの長さで60個のLEDモジュールが連なっています。
モジュールの制御方法ですが、制御線1本でできます。連結されている各モジュールのDINにG,R,Bそれぞれ8bitずつ24bitのデータを送ってあげることで、どんな色に光らせれば良いか教えてあげることができます。「1つ目のモジュールの24bitのバッファがたまったら、次のモジュールにそのデータを渡す」という様にデータが伝送されていき、50μs以上LOWを入力すると全モジュールでデータが確定してLEDへ出力されます。
この制御はArduinoが担当します。なので、制御プログラム(Arduino用語ではスケッチ)を書かないといけませんね。と、ここで重い腰を持ち上げるわけですが、既にLEDを制御する使い勝手の良いライブラリが存在しているので、書く量はそんなにありません。
LEDテープを制御するスケッチが書けたら、あとはハンズで買ってきたクリスマスツリー(1980円)にLEDテープを飾ってあげましょう。こんな感じに激しく光らせることができます。
きれいですね。こんな素敵なクリスマスツリーが部屋にあったら、ロマンチックなムードになること請け合いです。
テスト成功率
まあ、誰も来ない僕の部屋にこんなクリスマスツリーを飾っても虚しいだけなので、もっと別なクリスマスの楽しみ方を見つけましょう。正月が初詣に行くだけではなく、お年玉を貰ったりおせち料理を食べたりするように、クリスマスにもイルミネーションを見る以外の楽しみ方があります。
ということでテスト駆動開発(TDD)の話をしましょう。TDDでは、
- テストが失敗するテストを書く(RED)
- テストが成功するコードを書く(GREEN)
- リファクタリング
というサイクルを繰り返してプログラミングしていきます。
- テストが失敗するテストを書く(RED)
- テストが成功するコードを書く(GREEN)
- リファクタリング
RED, GREEN・・・ 赤・・・緑・・・ 赤、緑といえばクリスマスカラー・・・
「はっ!つまり、TDDはクリスマスにまつわる聖なる行為だったんだよ!」
Ω ΩΩ<「な、なんだってー!」
ならばTDDにも、もう少しクリスマスっぽさが必要ですね。さっきのクリスマスツリーを活用して、テストの成功率をイルミネーションとして可視化したいと思います。
成功率の可視化
まずはテストが失敗することを確認するところから始めましょう。
よし、オールレッドですね。次はテストが通るように修正しました。
成功率100%です!やったね!次はリファクタリングしてみましょうか。
ありゃ、20%にまで下がってしましましたね。
というふうに、クリスマスツリーを眺めながらテスト成功率を知ることができるようになりました!これでクリスマスに清らかな気持ちでTDDできますね。
実装
今回は以下の手順で、成功率を可視化しています。
今回書いたコードはここに置いています。
はい、トンデモ記事でした。みなさん、思い思いのクリスマスを楽しんでくださいね。
明日の #vgadvent2013 は @takkyuuplayer さんです。
※ 本記事は「きよしこのテストカバレッジ」というタイトルでアップロードしていましたが、テストカバレッジは成功失敗に関係なく、テストがどれくらいメインのコードをカバーしているかだよねとご指摘頂いたので「きよしこのテスト駆動開発」に変更しました。