« Mercurialに取り込まれたコミュニティ由来の機能一覧 | トップページ | groovyでredmineを操作する »

2013/01/13

groovyの可能性

JVM上のスクリプト言語groovyに興味を持ったので、アイデアをラフなメモ書き。
アイデアを書きかけ。

【参考】
書評:プログラミングGroovy - Digital Romanticism

【1】普通のUnixサーバーならば、Javaは当たり前のようにインストール済み。
JVMの最大の利点は、OSに依存せず、一つのプログラムでどこでも動かせること。
Windowsサーバーならbat、Unixサーバならシェルのように使い分けることはあまりしたくないから。
ちょっとしたプログラムをすぐに書いて、どこでも動かせるようにしたい。

本来ならPerlが最強なのだが、Javaが業務系Webシステムで開発言語の筆頭となったからには、JVM上で簡単にスクリプト言語が動かしたい欲求は多い。
JRubyもそうだし、Groovyもそう。
Groovyの使い道をいくつかあげてみる。

【2】ビルドスクリプトで使う。
使い道は、Antの代用。
Antはとても枯れた技術だが、XMLで書くのは面倒だし読みにくい。
Groovyなら、XMLの読み込みも、XML生成も簡単。

実用的な Groovy: XML を作成し、構文解析し、容易に扱う

Groovyで書かれたビルドライブラリGradleを使う方法もある。
また、Jenkins上でGroovyが使えるので、Jenkinsからビルド結果を取得したり、Jenkinsを操作して一連のビルド手順をGroovyで自動化する方法もある。

【3】内部DSLとして使う。

進化するアーキテクチャーと新方式の設計: Groovy で DSL を作成する

実用的な Groovy: Java プログラマーのための DSL としての Groovy

多い使い道としては、既存言語から他の言語へコンバートして自動生成すること。
例えば、Cobolプログラムから、カーソルを取り出して、Javaとのインターフェイスにマッピングすること。

あるいは、細々とした自動化スクリプト。
例えば、ApacheログやTomcatログ、メールサーバーのログから、エラー処理を検知して集計したり、月末にSLAを顧客報告するために、インシデント管理の情報を集計するなど。

あるいは、既存プログラムから、DBスキーマや状態遷移図を生成するなど。

GroovyやRubyのような言語の方が正規表現やファイル操作が強いので、便利なはず。

【4】テスト駆動開発への応用。
TDDはもはや当たり前の概念になったが、振る舞い駆動開発(BDD)へ発展させるアイデアもある。
その時、GroovyのSpockを使えば、RubyのRSpecのように、受入テストケースがそのままプログラムになるように書ける。

気になってたSpockを試してみた - No Programming, No Life

ビルド・リリース自動化への足掛かりとしてのGroovy・Gradle・Spock|サイバーエージェント 公式エンジニアブログ

平鍋さんは、アジャイル開発の観点からソフトウェアの品質特性として、テスト容易性という概念を提唱した。
そのアイデアには、そもそもテストはスクリプト言語のような柔らかい言語の方が向いている、と指摘されていたように思う。
だから、CやJava、あるいはCobolのような硬い言語は、RubyやGroovyなどで自動テストした方が簡単かもしれない。

【5】他のフレームワークへの応用もある。
RailsのGroovy版であるGRails。
Groovyのデスクトップアプリ作成ライブラリであるGriffon。

第31回 Grailsライクにデスクトップアプリケーションを構築する「Griffon」:本格派エンジニアの工具箱|gihyo.jp … 技術評論社

Grailsの基本を知ろう (1/6):CodeZine

プログラミングGROOVY」には、他にも面白そうな使い道が書かれているので、色々試してみる。

|

« Mercurialに取り込まれたコミュニティ由来の機能一覧 | トップページ | groovyでredmineを操作する »

Agile」カテゴリの記事

ソフトウェア」カテゴリの記事

プログラミング」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« Mercurialに取り込まれたコミュニティ由来の機能一覧 | トップページ | groovyでredmineを操作する »