新しい言語をちょっと触ってみたいな、でもIDEとか整えるのはハードルが高いな、というときは、「cyber-dojo」で試してみることが多い。
様々な言語でTDDを試せる「cyber-dojo」
cyber-dojoは、Webブラウザで利用できるコードエディタ&実行環境で、様々な言語・テスティングフレームワーク、様々なお題でテスト駆動開発を楽しむことができる。
使用したい言語とテスティングフレームワークを選ぶと、実装コードとテストコードのサンプルが用意された状態で開始される。お題を(FizzBuzzなど)を選ぶようにはなっているが、選んだお題に応じて、テストコードが用意されるということはない。したがって、cyber−dojo側で用意されている以外のお題で開発をすることも可能である。
サンプル:ClojureでFizzBuzz
サンプルとして、ClojureでFizzBuzzを書いてみた。
ソースコードをは以下の通り。
(ns fizzbuzz) (defn fizzbuzz [n] (cond (= 0 (mod n 15)) "FizzBuzz" (= 0 (mod n 3)) "Fizz" (= 0 (mod n 5)) "Buzz" :else n )) (ns fizzbuzz-test (:require [clojure.test :refer :all] [fizzbuzz :refer :all])) (deftest fizzbuzz-test (testing "FizzBuzzでは" (testing "3の倍数でも5の倍数でもないとき、その数字を言う" (are [n] (= n (fizzbuzz n)) 1 2)) (testing "3の倍数のとき、Fizzと言う" (are [n] (= "Fizz" (fizzbuzz n)) 3 6 9 12 -3)) (testing "5の倍数のとき、Buzzと言う" (are [n] (= "Buzz" (fizzbuzz n)) 5 10 20 -5)) (testing "15の倍数のとき、FizzBuzzと言う" (are [n] (= "FizzBuzz" (fizzbuzz n)) 15 30 45 -15)) ) )
どんなときに使うか
cyber−dojoは、様々な用途に使うことができる。上のClojureの例がそうであるように、新しい言語を触ってみたいときには、開発環境を用意しなくてもいいし、テストコードのサンプルも見ることができるので便利だ。
また、TDDのワークショップにも便利だ。上で紹介したように単独のユーザーで利用し、同じ画面を複数人で見るモブプログラミング方式で利用することもできるし、グループセッション機能を使えば複数の参加者のコードをチューターが見るというような利用の仕方もできる。
cyber−dojoはブラウザだけで動作するから、参加者全員分の環境を整える必要はないし、参加者が急に増えたときにもPCさえあれば対応できる。限られた時間でワークショップを行いたい時などは、非常に便利だろう。
終わりに
新しい言語を学ぶときは、環境構築がネックになることが非常に多い。cyber−dojoは、そういった際の強い味方になるだろう。また、 言語におけるテストコードの書き方も同時に学ぶことも、実際の業務にその言語を生かそうとするのであれば有意義なことだろう。

- 作者: Stuart Halloway and Aaron Bedra,川合史朗
- 出版社/メーカー: オーム社
- 発売日: 2013/04/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (11件) を見る