思いっきり意訳です、あしからず。GroovyとJavaは、いとこみたいに近い存在で、構文がとても似ているからJava開発者にとってGroovyを覚えることはとても簡単です。Javaプログラムのほとんどはそのまま、有効なGroovyプログラムなんです!でも、Groovyを学ぶようになるとそのうちにGroovyに用意されている気の利くデフォルト値やGStringなどショートカット記法を使うようになっていくでしょう。この記事では最初にJavaプログラムを取り上げ、それをGroovyに置き換えてゆくプロセスをご紹介します。Worldプログラムから始めることにしましょう。後の方の記事ではより高度な例をご紹介します。これは、会議の席で見たGroovyとJavaの構文がとても近いことを紹介するスライドの何枚かからインスピレーションを得ました。アンドレスさんとポールさんのアイデアに感謝します。こんな感じのJavaプログラムを用意しましょう。}}さて、このハローワールドクラスは、ゲッター/セッターとそれに紐付くprivateフィールド、それからgreet()メソッドがありますね。greet()メソッドは悪名高いハローワールド文字列を返します。それに親しみや憎しみを感じたものですね*1。main()メソッドがクラスをインスタンス化して、挨拶を出力します。Groovy版を見てみましょう。}}そうです、まったく同じプログラムです!馬鹿にしてるわけじゃなくて、Java版とGroovy版はまったく同じだってことです。このプログラムはまだGroovyプログラムとはおせじにも呼べない代物です。読みやすくて簡潔に記述できますよ。それじゃあ、単純なGroovy化*2ステップを適用していってみましょう。最初のステップはセミコロンの削除とpublicキーワードの削除です。Groovyではクラスやメソッドはデフォルトでpubilcなので明示的に指定する必要がないんです。いうことで、こんな感じになります。}}あとは何ができるでしょうか。ここでGroovyの便利な文字列、GStringを使ってみましょう。呼ばれているやつです。Javaで言うところの通常の文字列のようにダブルクォーテーションで囲んだ文字列では、プレースホルダーが使えます。文字列が出力される際に置換されます。手動で文字列結合とかする必要がないんです。${name}"}さらにもう一つ。returnキーワードは省略できます、省略した場合最後に評価された値が返却値となります。これで、greet()メソッドはさらにほんのちょっと短くなりますね。ここまでの内容をまとめてみましょう。プログラムは以下のような感じになりますね。}}getName()メソドとgreet()メソッドはワンライナーですっきりさせました。次はどうしましょうか。Groovyはプロパティをサポートしています。*3だから、ゲッター/セッターとそれに紐付くprivateフィールドはプロパティ化できます。Groovyでは特に可視性を指定せずに単にフィールド宣言するだけでOKです。nameプロパティは単純にStringです。privateフィールドと、それに紐付くゲッター/セッターはGroovyが自動で用意してくれます。ように使えるようになります。