気になる開発プロダクツ

第8回Groovy/Grails

筆者は今月、「スクリプティング with Java」を刊行させていただきましたが、その中の特集2で取り上げたのはGroovy 1.1-Beta2Grails 0.6でした。ですが、その後の開発によって、本稿執筆時点ではGroovy 1.1-RC1、Grails 1.0-RC1となり、大幅な改良が加えられました。今回はその改良点を取り上げます。

Groovyとは

Groovyは、Java VM上で動作するスクリプト言語の1つで、JSR241としてJCPに採択されています。Javaに改良を加えた文法と拡張性の高さが特徴で、Java経験者にはとっつきやすい言語といえるでしょう。11月中旬にバージョン1.1のリリースが予定されています。

開発リーダーのGuillaume LaForge氏は、Grails開発リーダーのGraeme Rocher氏らと共にGroovy/Grailsのサポート、コンサルティング、トレーニングなどを手がけるG2One Incという企業を設立し(*1)、VP Technologyというポストに就いています。

主な改良点

1.1-Beta3と、RC1の主な改良点を以下に列挙します。Groovyの文法などについては、Webサイトおよび拙著を参照してください。

●1.1-Beta3の主な改良点(*2)

  • Java 5の列挙型(enum)に対応
  • クロージャの実行方法が指定可能に
  • クロージャとマップの具象クラスへのインターフェースを拡張
  • 新たな演算子(Elvis operator)の導入
  • ExpandoMetaClassにメソッドを追加
  • Antタスクgroovyc内でjavacタスクを利用可能

●1.1-RC1の主な改良点(*3)

  • Groovy Shell(groovysh)からgoコマンドを削除(図1) (注)
  • Beta-3より15%~45%のパフォーマンス改善
  • 単項の+, -, ~演算子が再定義可能
  • metaClassをどのオブジェクトからも取得可能
  • metaClassによるstaticメンバの定義がよりシンプルに
  • Java5対応の改善
このバージョンのGroovy Shellでは、コマンドラインに日本語を入力すると文字化けしてしまいます。ですが、日本語を含んだソースコードをファイルに保存し、groovyコマンドでそれを実行する場合は、問題なく日本語も扱えます。
図1 コマンドラインツールからgoコマンドが削除された
> groovysh
Groovy Shell (1.1-rc-1, JVM: 1.6.0_03-b05)
Type 'help' or '\h' for help.
----------------------------------------------------------------
groovy:000> def sum( n ) {        ← メソッド(関数)の定義
groovy:001>   n * ( n + 1 ) / 2
groovy:002> }
===> null
groovy:000> sum( 10 )             ← すぐに実行できる
===> 55
groovy:000> quit

>

Grailsとは

GrailsはRuby on Railsに影響を受けて開発された、自動生成機能をもったWebアプリケーションフレームワークです。ただしRailsクローンというわけではなく、コマンドやクラスなどは独自のものです。先述の開発リーダーRocher氏はG2OneでCTOを務めています。

Grailsによって構築されるアプリケーションはGroovy + Spring + Hibernateの構成になりますが、必要な設定ファイルも生成されるため、XMLファイルを見ることなく開発を進められます。

ちなみに、Groovyを採用しているアプリケーションフレームワークには、GrailsのほかにProject Zeroがあります。

主な改良点

Grails 1.0-RC1の主な改良点を以下に列挙します。アプリケーションの実装例などはWebサイトや拙著を参照してください。

●1.0-RC1の主な改良点(*4)

  • O/Rマッピング機能(GORM)の改善
  • Filterによるインターセプタの作成
  • タグライブラリで名前空間やBody部の変数を定義
  • URLマッピングで**やレスポンスに応じたマッピングが可能
  • GORMでペシミスティック・ロックやセッションのフラッシュ制御が可能に
  • jndiNameプロパティによるJNDIサポート
  • 設定ファイルを複数指定可能

Groovy/Grails共に、今後も更なる改良が続けられることでしょう。RubyやPythonなどのスクリプト言語も注目される中、どのように発展していくのかが楽しみです。


この連載は今回で最後となりました。しかしライブラリやツールの開発はこれからも変わらず続けられます。それらがやがて新たなムーブメントを起こすきっかけになってくれることを、筆者は信じて止みません。

*1 G2One: The Groovy/Grails Company is born
*2 Groovy 1.1-beta-3 released, RC-1 and 1.1-final around the corner
*3 Groovy 1.1-rc-1 released
*4 Grails 1.0-RC1 Release Notes

おすすめ記事

記事・ニュース一覧