うさぎ組

ソフトウェア開発、チームによる製品開発、アジャイル、ソフトウェアテスト

Groovyを勉強するときの手順

なんかプログラミング言語ならどれでも一緒だと思うんだけど、Groovyやるならこうするのがいい。と思ったので。

コードを書くとき

Dumpを使う

いま使いたい変数にどんなものが入っているのかわからない。型がなにでどんなメソッドやフィールドを持っているのか。
そんなときはprintln hoge.dump() をする。

[k1:10, k2:30].each{
  println it.dump()
}

みたいな。
実行するとこんな出力になる。


Assertを使う

dumpと似ているけど、メソッドチェーンになっているときに、どこでどんな値が返ってきているかを確認するのによい。

assert [k1:10, k2:300, a1:100, a2:20].collectEntries {k,v -> [(v):k]}.groupBy {k,v -> v.startsWith "a"}[true] == [100:"a1", 20:"a3"]

みたいな。
実行するとこんな出力になる。

試すときはIDEAのGroovyShell

GroovyConsoleのほうが気軽でいいけど、初心者的にはGroovyShellがいい。理由は補完が効くし、プロジェクトのClassPathがとおっているので、サンプルコードを適当に保存して、そのクラスをGroovyShellで試すとかできる。
IDEAの[Tools]->[GroovyShell]で使える。

コードではなくテストコードを読む

コードがどんな挙動をしているかを調べるならプロダクトコードを読むよりテストコードを読む方が効率がいい。これはどんなソフトウェアでもいえる。
逆にテストコードがその体をなしていないなら、そのプロダクトはテストコードの必要性が低い特性であるか、テストに関して手抜きだとわかる。

副作用があるか調べる

これはOOPだと結構重要なので、使うメソッドが副作用をもっているかどうかはちゃんと調べましょう。ことJavaにおいては副作用を持つメソッドが多いので気をつけましょう。

入門の参考

プログラミングGroovy

個人的には入門はこの書籍を読めばだいたい事足りると思っている。良書。

プログラミングGROOVY

プログラミングGROOVY

Groovy本家サイトを読む

Getting StartとUserGuideくらいを読みましょう。
Groovy - Getting Started Guide
Groovy - User Guide
余裕があればTesting Guideも。
Groovy - Testing Guide
困ったときのAPIリファレンスも
Page Redirection
Page Redirection

Gradle本家サイトを読む

スタートするのはJenkins並に簡単なビルドツールですので。GroovyのUserGuideを読んだあとくらいなら、Gradleのドキュメントを読みながらだいたい出来ると思います。(おれはGradleのTooling APIで遊ぶぞー!とかでなければ。)
Gradle - Build Automation Evolved
Gradle 日本語ドキュメント

基礎の参考

Groovy in Action

はやく第二版出ろ!って思っていますが、なかなか出ませんね。明らかにやる気を感じませんが、日本語書籍でGroovyのMOPとかInterceptorについて触れているのはこちらの書籍ですので、Groovyをちゃんと使いたくなるならぜひ手に入れましょう。現状絶版ですが、ジュンク堂とかでよくみかけます。

Groovyイン・アクション

Groovyイン・アクション

ソースコード

テストコード読んでわからないとか、Groovyのことをもっと知りたくなったらプロダクトコードを読むのがよいです。基礎的な意味では、DGMとかParserとかCompilerとかMOPとかがよいと思います。
困ったときのAPIリファレンスも
Page Redirection
Page Redirection

MethodのInvokeの仕組みやASTを調べる

あくまで個人的にだけど、文法、コンパイラ構文木あたりはかなり重要な基礎だと思っています。
Groovyはinvokeをinterceptする方法がいくつかあったりします。あと、ASTを扱えるのですけど、どうやって組んでいるとか、ASTアノテーションの作り方とか勉強になること結構あります。

Java仕様,JVM仕様

もうここからは逃れられません。
残念なのはGroovyは言語仕様書がメンテされていないことです。なんとかしてほしいものであります。

応用の参考

本家サイトのAdvanced User Guideを読む

現実的にコードを書きたくなるときのスタートしてはここらへんが妥当です。
Groovy - Advanced Usage Guide
CookBook Groovy - Cookbook Examples もいいですし、個人的には id:fumokmm id:uehaj id:bluepapa32 id:nobeans id:kiy0taka らへんがいいな。。。ってあげていこうと思ったのだけど、まとめ的な意味では
id:orangeclover が毎月?まとめてくれている
2012年07月 Groovyist/G*のあれやこれや - みちしるべ】のシリーズが素晴らしい。
あと
Grails Japan:今週のGrails!】もいい。

Spock, Grails, Gradleの実装を調べる

DSLを駆使しているので、GroovyでDSLする第一歩としていいと思う。
Griffonもいいかもしれませんね。


まとめ

まぁここらへんに書いた事正直どうだっていいってことかもしれないけど、一度書いておくと今後役に立つかもしれない!!!ので。


Let's Groovy Life!