くりにっき

ドリコムのプリキュアの人です

TDD Boot Camp 横浜 3rd に参加してました #TDDBC

TAとして手伝いに行ったはずがGroovyの人数が足りなくて急遽 id:yamap_55 さんとペアプロをすることになりました。

当日のリポジトリ

https://github.com/sue445/tddbc_yokohama_20131005

ペアプロの流れ

  1. gradleのバージョンが古すぎて gradle idea できなかったのでダウンロード
  2. 題1にとりかかる
  3. 途中までやったところで題2で作ったメソッドを元に題1をやった方がいいと判断し題1を後回しに
  4. 題2が終わって題1に戻る
  5. 題3をすすめる
  6. 題3が終わったところで残り10分だったので ネタで Travis CIと連携させてみることに
  7. 手順は GithubにあるリポジトリをTravis CI連携する手順 #junitbook - くりにっき を参照
  8. 「Github Travis」でググれば2番目に出てくるw f:id:sue445:20131006224543p:plain
  9. githubにpushした後にtravis側でテストが実行されるのに若干時間かかったものの、丁度10分で設定完了

IntelliJ IDEAで日本語テストメソッド名にするとテストが見つからない時の対処法 (Mac Mountain Lion以降)

PC再起動も必要とは思わなかったw

今回初めて知ったGroovyの豆知識

任意のクラスからbooleanへの暗黙的なキャスト

    static boolean isValid(String version) {
        try {
            parse(version)
        }catch(e) {
            false
        }
    }

    static JdkVersion parse(String version) {

Groovyだとreturnが省略できるのはもちろんだけど、 parse の戻り値は JdkVersion だがisValid の戻り値がbooleanなので勝手に

    return parse(version) != null

みたいなことをやってくれてるらしい

正規表現のキャプチャが楽

    static JdkVersion parse(String version) {
        def m = version =~ /^JDK([0-9]+)u([0-9]+)$/
        if(!m) {
            throw new IllegalArgumentException()
        }
        String strFamilyNumber = m[0][1]
        String strUpdateNumber = m[0][2]

rubyperl$1, $2 にはまだ負けるけど、素のJavaでやるのに比べたらすごい簡単

ちなみに似たようなことをJavaでやろうとするとこうなる https://github.com/sue445/kulib/blob/master/src/main/java/net/sue445/kulib/util/RegexUtil.java

as

        jdkVersion.familyNumber = strFamilyNumber as int

familyNumberintstrFamilyNumberString なのですが、Integer.parseInt しなくていいらしい

懇親会のLT

まとめ

Groovy素晴らしい

最後に

id:yamap_55 さんのおかげでGroovyについて初めて知ることが多かったです。ありがとうございます!

参考書籍

プログラミングGROOVY

プログラミングGROOVY