【ハウツー】
Javaの世界においてホットな話題といえばスクリプト言語。このなかでもJava言語と近い文法をもつGroovyはJavaデベロッパにとって親しみやすいだろう。このGroovyを使い、Ruby on Rails(以降、RoR)に触発されたフレームワークとしてGrailsが開発された。JavaOneにおいてOracleがサポートを表明するなど、エンタープライズでの利用も進みそうだ。本稿ではGrailsを使って小さなアプリケーションを作ってみる。
The Grails teamは14日(米国時間)、Grailsの最新版となるGrails 0.2を公開している。Grailsは、Groovyを使ってRoRとよく似たWebアプリケーションシステムの開発環境を提供するツール。GroovyはJavaで実装され、Javaに近い文法を持つスクリプト言語で、JSR-241として標準化が進められている。
Grails 0.2は0.1に対する改善版リリース。新しい機能として次の機能を備えている。
使いかたはGrails 0.1ととくにかわらず、RoRのように使うことができる。
まずGrailsをインストールする。ここではGrails 0.2を使う。すでに新しいバージョンがでている場合などは、ドキュメントを参考にしつつ、適宜読み替えて作業してほしい。インストールといっても、ダウンロードしてきたファイルを展開して、適切に環境変数を設定するだけ。設定すべき環境変数は表1のとおり。設定内容はプラットフォームに応じて書き換える。
| 環境変数 | 設定例 |
|---|---|
| JAVA_HOME | /usr/local/jdk1.5.0 |
| GRAILS_HOME | /pathto/grails-0.2 |
| PATH | ${GRAILS_HOME}/bin:${PATH} |
LinuxやFreeBSDといったUNIXプラットフォームで実行する場合は、さらに少なくとも表2のファイルに実行権限を与える必要がある。
| ファイル | 操作 |
|---|---|
| ${GRAILS_HOME}/bin/grails | 実行権限を付与 |
| ${GRAILS_HOME}/ant/bin/ant | 実行権限を付与 |
また、${GRAILS_HOME}/ant/bin/antファイルがWindows改行コードになっているので、UNIXで使うことができる形に変更しておく必要がある。エディタを使って変更したり、awk(1)やsed(1)を使ってもいい。dos2unix(1)といったコマンドでもいいだろう。lv(1)があるならプロンプト1のようにすると簡単だ。
Mac OS Xでの動作確認はおこなっていないが、UNIXプラットフォームと同じ操作方法で準備できるだろう。grails(1)コマンドが実行できれば準備完了だ。
Grailsがインストールできたら、さっそくGrailsを使ってみる。Grailsにはアプリケーションサーバ(Jetty)も組み込み向けのデータベース(HSQLDB)も同梱されているため、簡単なデモアプリケーションを作成するくらいならそのまま使うことができる。
まず、デモアプリケーションを作成してもよいディレクトリに移動して、プロンプト2のようにコマンドを実行する。途中でプロジェクト名の入力を求められるので入力する。ここでは「GrailsTest」と入力している。
プロンプト2の操作で必要になるいくつかのディレクトリとファイルが自動生成される。もし組み込みで用意されているHSQLDB以外の外部データベースを使いたければ、「プロジェクト名/grails-app/conf/ApplicationDataSource.groovy」ファイルを編集すればいい。ただしその場合は、データベースへの接続ドライバを「プロジェクト名/libs」へコピーしておく必要があることに注意したい。
次にドメインクラスを作成する。ドメインクラスとはパーシステントの対象となるクラスのことで、永続化したいオブジェクトのクラスを作成する。プロンプト3のように実行すると、ドメインクラスの名前の入力を求められるので入力する。ここでは「Message」と入力している。ドメインクラスは「プロジェクト名/doman/ドメインクラス名.groovy」のようなファイルで作成されるため、データベーステーブルの項目を増やしたい場合は随時インスタンス変数を追加してやればいい。最初からデータを追加したい場合は、「プロジェクト名/conf/ApplicationBootStrap.groovy」のinit内部でインスタンスを生成して保存するようにすればいい。
次はプロンプト4のようにコントロールクラスを生成する。ここでも名前の入力を求められるので、対応するドメインクラス名を入力する。つまりここなら「Message」だ。「プロジェクト名/controllers/MessageController.groovy」というファイルが生成されるので、リスト1のように編集しておきたい。サンプルとしてはScaffoldingが動けば十分だ。
プロンプト4 コントロールクラスの作成
ここまでできたら、プロンプト5のようにして作成したサンプルを実行する。「http://localhost:8080/GrailsTest/message/list」にアクセスすることでサンプルを体験することができる。
GrailsはRoRとよく似ている。最初から必要になるすべてのコンポーネントが用意されているため、導入がとても簡単であり、しかもJavaテクノロジが使われているなど、Javaデベロッパにとって扱いやすいプロダクトだ。
Grails 0.2には最初から2つのサンプルアプリケーションが付属している。扱いかたはREADME.txtにまとまっているので、ぜひ実行してみてほしい。Grailsがどういった機能を提供できるかよくわかるだろう。
RoRが衝撃的なのは、短時間で済む開発時間と、ソースコードを自動生成してあとは生成したコードを変更するといったアプローチだった。たしかにこの方法は素早いし、特定の用途においてはきわめて高い開発効率を発揮することができる。インタフェースをベースとし、フレームワーク中心で駆動するJavaに比べて、なんとも自由な世界に思われたものだ。
しかしGrailsを使うことで、JavaのAPIや機能はそのまま引き継ぎ、RoRが実現しているスクリプトの機能を実現することができる。Grails自身の作り込みはまだまだこれからといったところだが、スクリプト言語の可能性をJavaの世界に提示するには十分すぎるプロダクトのようにおもわれてならない。Webアプリケーションシステムの可能性を検討するにおいて、一度は検討しておきたいプロダクトだ。
| GroovyによるRuby on Railsライクなフレームワーク - Grails 0.1公開 [2006/3/31] |
| アジレント、ミリ波信号解析ソリューションを発表 [16:54 5/24] |
| NXP、独自のTrench 6テクノロジによる車載用パワーMOSFETファミリを発表 [16:52 5/24] |
| 産総研、光照射で損傷を自己修復できるゲル状スマートマテリアルを開発 [16:49 5/24] |
| アンテナ設置数が半分の33台に到達 - アルマ望遠鏡、2kmの干渉試験も成功 [16:45 5/24] |
| 人工知能実現へ一歩前進!? - NIMS、環境依存型「シナプス素子」を開発 [16:40 5/24] |
|
大阪駅「ギャレ大阪」跡地に約80店舗入居の新商業施設開業へ - JR西日本 [17:48 5/24] ライフ |
|
ネイティブの好むフレーズを集めたビジネス英会話ブック発売 - アルク [17:35 5/24] ライフ |
|
【レポート】【レポート】ネットワークレコーダー「nasne」先行プレビュー - Xperia/Sony Tabletでの使用感を確認!! [17:29 5/24] 携帯 |
|
自分らしさ発見! マイナビ×サンマリエのスペシャルセミナー開催 [17:21 5/24] ライフ |
|
『好きっていいなよ。』、2012年秋にTVアニメ化! スタッフ&キャストを紹介 [17:12 5/24] ホビー |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。