書き捨てのプログラムにGroovyを使う

先日PythonをChocolatey経由でインストールしなおしたら、いくつかのPythonスクリプトが動作しなくなった。
ゲームで使用するダミー画像を大量に、かつ色や文字を変えて出力というプログラムで、使えないと色々困る。
これはChocolateyが悪いわけではなく、再インストールの時に画像処理用のライブラリを入れなおしてなかったから。

インストール出来ない。
そういえば前回もそんなことがあって、古いPythonを入れたりなんだり、苦労した様な気がしてきた。

なんかめんどいからRubyで書きなおすか…と思ったけど、これまた上手くいかない。
そもそもRubyでRMagickのインストールが上手く行かなかったから、一応は動作したPython+PILで書いていたということを思い出した。
Ruby+minimagickは動いたけど、拡大縮小は出来ても文字入れが出来ないので条件を満たしていない。

安定して動くバージョンを探せばそのうち使えるようになるだろうけど、それを何かあるたびにやると考えたらとてもめんどくさい気持ちになってきたので、それ以外の解決策を考えた結果、最近ちょっと勉強してたGroovyが使えるんじゃないか?と思い至った。

言語的には色々省略出来るJava。もしくはRubyっぽく書けるJavaといった感じ。
ライブラリなどはJava用の物が全て使える。
GradleやGrapesの仕組みが面白そうだったから勉強していたけど、インストールしてあるからすぐ使えるわけだし、実戦投入しちゃいけないという理由はない。
Javaにだって画像処理ライブラリぐらいあるだろうし。

というわけで、顔グラフィックの量産プログラムを書いた。



face_base.pngを読み込み、左上にファイル名を書き加えたファイルを1番から10番まで名前をつけて保存という、良く使うパターン。
やってる中身はJavaで書く場合と同じだけど、動的型だから変数宣言とか無しで、ループ構文も簡潔に。
そして一番肝心なことはクラスを作らなくていいところ。ネームスペースも当然要らない。
今回は使ってないけど正規表現も標準装備で、今時のスクリプト言語風に書ける。

ライブラリは標準の物だけで足りたので、インストールに苦労するということはなかったけど、もっと複雑な画像処理が必要になって別のライブラリを使うとしても問題ない。
Grapesというライブラリの自動ダウンロード機構がGroovyに搭載されているので、ダウンロードしろと書いておくだけで、事前の準備は不要。
(ただJMagickに関しては別途インストールしたImageMagickに依存するから、多言語と同じトラブルが発生する)

書き捨てだから例外処理もしてないし、サンプルコードをコピペしたりしたから無駄もあるけど、一応短くは書けている。
動作速度も普通。めちゃくちゃ速くもないけど、気になるほど遅くもない。

理想としてはcreateGraphicsのくだりやNew Fileのところををなくして、もっとさっぱり書きたい所だけど、思ったよりも良い感じに動いているので、しばらくはGroovyを雑用の主力言語として使っていこうと思う。
posted by unaunagi at 2013/07/05 17:29 | Comment(0) | TrackBack(0) | デジタル>プログラム | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/368385323
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。