ぐるぐるぐる~び~(挨拶) というわけで、プログラム言語 Groovy。
最近、このブログをみてくれている会社の人から仕事でぐる~び~という言葉を聞いたり、帳票作成 Jasper Reports の標準スクリプトが Groovy に設定されていたり、あなたの生活にそっと忍び寄る Groovy。 ぼくも内部的なツールをつくるときや、エクセルからソースを起こすときなんかに大変便利に使っております。 🙂
さて、Groovy の楽なところの一つにランタイムがポータブルであるというところがあげられると思います。 JVM と Groovy の jar がひとつだけあれば動作。 インストールいらないし、埋め込んで executeble jar にしてしまえばもう Groovy であったことすらわかりません。
$ java -jar groovy-all-1.8.0.jar hoge.groovy
カレントに jar 置いておけば、スクリプトファイルもこんなんでコンパイルかかってプログラムが動作してしまいますしとても便利です。
もうひとつ面白いなぁと思うのが、Groovy は Java と同じコメント形式をもちますが、先頭行のシェバングを読み飛ばせること。 というわけで、UNIX 上であれば以下のようにシェルスクリプトっぽい使い方ができるようになっています。
#!/opt/groovy-1.8.0/bin/groovy
println "*Groovy"
new File(".").eachFile {
println it.name
}
これもなかなか便利ですね~。 ちなみに String が拡張されていて外部コマンドもすぐ呼び出せますので UNIX コマンドと合わせ技で、
#!/opt/groovy-1.8.0/bin/groovy
println "*Unix Command"
def command = "ls -l".execute() | "grep ^-".execute()
command.text.eachLine {
println it.split()[7]
}
こんなんもできます。 awk 使えというつっこみはなしで(笑)
Process クラスにオーバーロードかかっていて、パイプが | でかけたりして奥が深い。。
というわけで Ubuntu 生活も java-gnome あたりを使って Groovy ということで。 🙂
loader.groovy。
#!/opt/groovy-1.8.0/bin/groovy
// java-gnome クラスロード
this.getClass().classLoader.rootLoader.addURL(
new File("/usr/share/java/gtk.jar").toURL())
// 本体スクリプト評価
evaluate(new File('notify.groovy'))
notify.groovy。
import org.gnome.gtk.Gtk
import org.gnome.gdk.Pixbuf
import org.gnome.notify.Notify
import org.gnome.notify.Notification
// GTK & NotifyOSD 初期化
Gtk.init([] as String[])
Notify.init("notify.groovy")
// アイコン取得
def pixbuf = new Pixbuf("./torimaki.png", 40, 40, true)
// NotifyOSD 表示設定
def notify = new Notification(
"γ(@ω@)γ "
, "私は不変であることすら破壊する。"神の領域を侵犯し私は私であり続ける。ぐるぐる。"
, null)
notify.setIcon(pixbuf)
// 通知!
notify.show()
loader.groovy で java-gnome の jar を動的クラスロードして実行してみました。 gtk.jar は apt-get install java-gnome あたりで入ります。(パッケージ名ちがったかも)
まぁこのサンプルは "notify-send".execute() でいけたりするのですが、ちょっとしたプログラムの中から gnome を簡単に呼べるのはいろいろ遊べそうですね。 🙂
というわけでそんな Groovy さんですが、日本初(発)の Groovy 本がでるそうです!
Amazon.co.jp: プログラミングGroovy: 関谷 和愛, 上原 潤二, 須江 信洋, 中野 靖治: 本
GroovyはJavaと抜群の親和性を持つハイブリッド言語です。簡潔で強力な記述力と高い柔軟性を持っており、Javaを補完・強化する究極のパートナーになります。 本書はGroovyの基本的な文法を丁寧に説明するほか、Groovy API、Groovy JDK、Grape、メタプログラミング、ASP変換などの応用的な話題もカバーします。また、GrailsをはじめとするGroovyの関連プロダクトについても解説します。
さっそく予約しました~。
あなたのシステムにも Groovy ひとつ、そっといかがでしょうか。 ぐるぐる。