プログラマ的京都生活

2007年11月21日

[][]Groovy!

存在自体は前々から知っていたものの、初めて触りました、Groovy

ただ、思いの他インストールにてこずってしまいました。。結局よく分からなかったんですけどね。。

groovyConsole起動して、実行した時に以下のようなエラーが出たんです。

java.lang.ClassFormatError: org/codehaus/groovy/antlr/parser/GroovyRecognizer

これを解決してやろうと色々しましたが、よく分からず。いきなり挫折しかけましたが、ホームページにはWindows用のInstallerがありました。そっちでインストールすると普通に動きました。ありがとう、インストーラー♪


Ant

antbuild.xmlを定義する時に、if文がたまに必要になるんだけど、XMLでこれを表現するの無理!ま、出来なくはないんだけど、かなり面倒くさい。で、結局javaプログラムを書いた後にbuild.xml上で独自タグを定義してそれを呼び出して。。。とかになる。

普段のjavaプログラムだと別にいいんだけど、こういうときに書くjavaって鬱陶しいんよね。なんかもっさりしてて。スクリプト言語並みの軽さで書けたらなぁ、と思ってたら、「あ、Groovyあるやん!」と思い出したわけ。

ちょっと調べてたら、AntBuilderなるものが最初から組み込まれている!!素晴らしい!!!

<property name="src.dir" value="C:/hoge"/>
<property name="doc.dir" value="E:/doc"/>

<target name="copyText">
  <mkdir dir="${src.dir}/doc" />
  <copy file="${doc.dir}/hoge.txt" todir="${src.dir}/doc" />
</target>

こんなbuild.xmlgroovyで書くと次のようになる。

src_dir = "C:/hoge"
doc_dir = "E:/doc"

def copyText() {
  ant = new AntBuilder();
  ant.mkdir(dir:src_dir + "/doc")
  ant.copy(file:doc_dir + "/hoge.txt", todir:src_dir + "/doc")
}

copyTarget() // 実行

これだけだとbuild.xmlの方が正直好きな感じだけど、if文が自由に使えるのはやっぱり強いと思う。でもって、antで提供されている便利な部品群がそのまま利用できるだなんて♪

もうちょっと使い道を検討します。会社の皆様が賛同してくれると嬉しいけど。