【ハウツー】

JavaだってRubyに負けちゃいない - JavaでもRails クイックスタートGrails

    後藤大地  [2006/07/20]

    Javaの世界においてホットな話題といえばスクリプト言語。このなかでもJava言語と近い文法をもつGroovyはJavaデベロッパにとって親しみやすいだろう。このGroovyを使い、Ruby on Rails(以降、RoR)に触発されたフレームワークとしてGrailsが開発された。JavaOneにおいてOracleがサポートを表明するなど、エンタープライズでの利用も進みそうだ。本稿ではGrailsを使って小さなアプリケーションを作ってみる。

    Grails 0.2 登場

    The Grails teamは14日(米国時間)、Grailsの最新版となるGrails 0.2を公開している。Grailsは、Groovyを使ってRoRとよく似たWebアプリケーションシステムの開発環境を提供するツール。GroovyはJavaで実装され、Javaに近い文法を持つスクリプト言語で、JSR-241として標準化が進められている。

    Grails 0.2は0.1に対する改善版リリース。新しい機能として次の機能を備えている。

    • GORMにおけるヒエラルキごとのテーブル継承マッピングのサポート
    • Quartzジョブスケジューリングのサポート
    • プロトタイプとともに動作可能なアダプティブAjaxタグの導入

    使いかたはGrails 0.1ととくにかわらず、RoRのように使うことができる。

    インストール

    まずGrailsをインストールする。ここではGrails 0.2を使う。すでに新しいバージョンがでている場合などは、ドキュメントを参考にしつつ、適宜読み替えて作業してほしい。インストールといっても、ダウンロードしてきたファイルを展開して、適切に環境変数を設定するだけ。設定すべき環境変数は表1のとおり。設定内容はプラットフォームに応じて書き換える。

    表1 環境変数

    環境変数設定例
    JAVA_HOME/usr/local/jdk1.5.0
    GRAILS_HOME/pathto/grails-0.2
    PATH${GRAILS_HOME}/bin:${PATH}

    LinuxやFreeBSDといったUNIXプラットフォームで実行する場合は、さらに少なくとも表2のファイルに実行権限を与える必要がある。

    表2 実行ファイルに権限を付与(UNIXプラットフォーム)

    ファイル操作
    ${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のようにすると簡単だ。

    プロンプト1 antスクリプトを変更(UNIXプラットフォーム)

    % lv ${GRAILS_HOME}/ant/bin/ant > t
    % cat t > ${GRAILS_HOME}/ant/bin/ant

    Mac OS Xでの動作確認はおこなっていないが、UNIXプラットフォームと同じ操作方法で準備できるだろう。grails(1)コマンドが実行できれば準備完了だ。

    Hello Grails!

    Grailsがインストールできたら、さっそくGrailsを使ってみる。Grailsにはアプリケーションサーバ(Jetty)も組み込み向けのデータベース(HSQLDB)も同梱されているため、簡単なデモアプリケーションを作成するくらいならそのまま使うことができる。

    まず、デモアプリケーションを作成してもよいディレクトリに移動して、プロンプト2のようにコマンドを実行する。途中でプロジェクト名の入力を求められるので入力する。ここでは「GrailsTest」と入力している。

    プロンプト2 GrailsTest Webアプリケーションの作成

    % grails create-app

    プロンプト2の操作で必要になるいくつかのディレクトリとファイルが自動生成される。もし組み込みで用意されているHSQLDB以外の外部データベースを使いたければ、「プロジェクト名/grails-app/conf/ApplicationDataSource.groovy」ファイルを編集すればいい。ただしその場合は、データベースへの接続ドライバを「プロジェクト名/libs」へコピーしておく必要があることに注意したい。

    次にドメインクラスを作成する。ドメインクラスとはパーシステントの対象となるクラスのことで、永続化したいオブジェクトのクラスを作成する。プロンプト3のように実行すると、ドメインクラスの名前の入力を求められるので入力する。ここでは「Message」と入力している。ドメインクラスは「プロジェクト名/doman/ドメインクラス名.groovy」のようなファイルで作成されるため、データベーステーブルの項目を増やしたい場合は随時インスタンス変数を追加してやればいい。最初からデータを追加したい場合は、「プロジェクト名/conf/ApplicationBootStrap.groovy」のinit内部でインスタンスを生成して保存するようにすればいい。

    プロンプト3 ドメインクラスの作成

    % cd /pathto/GrailsTest/
    % grails create-domain-class

    次はプロンプト4のようにコントロールクラスを生成する。ここでも名前の入力を求められるので、対応するドメインクラス名を入力する。つまりここなら「Message」だ。「プロジェクト名/controllers/MessageController.groovy」というファイルが生成されるので、リスト1のように編集しておきたい。サンプルとしてはScaffoldingが動けば十分だ。

    プロンプト4 コントロールクラスの作成

    % cd /pathto/GrailsTest/
    % grails create-controller

    リスト1 MessageController.groovyを編集

    class MessageController {
            def scaffold = Message
    }

    ここまでできたら、プロンプト5のようにして作成したサンプルを実行する。「http://localhost:8080/GrailsTest/message/list」にアクセスすることでサンプルを体験することができる。

    プロンプト5 作成したWebアプリケーションを実行

    % cd /pathto/GrailsTest/
    % grails run-app

    GrailsはRoRとよく似ている。最初から必要になるすべてのコンポーネントが用意されているため、導入がとても簡単であり、しかもJavaテクノロジが使われているなど、Javaデベロッパにとって扱いやすいプロダクトだ。

    図1 Grailsで作成したサンプルアプリケーション動作例 – データベースとのコンテンツ管理が動いている様子がわかる

    Grailsがもたらすもの - Javaへスクリプト言語の簡潔さを付与

    Grails 0.2には最初から2つのサンプルアプリケーションが付属している。扱いかたはREADME.txtにまとまっているので、ぜひ実行してみてほしい。Grailsがどういった機能を提供できるかよくわかるだろう。

    図2 Grails サンプル – recipes

    図3 Grails サンプル –simple-cms

    RoRが衝撃的なのは、短時間で済む開発時間と、ソースコードを自動生成してあとは生成したコードを変更するといったアプローチだった。たしかにこの方法は素早いし、特定の用途においてはきわめて高い開発効率を発揮することができる。インタフェースをベースとし、フレームワーク中心で駆動するJavaに比べて、なんとも自由な世界に思われたものだ。

    しかしGrailsを使うことで、JavaのAPIや機能はそのまま引き継ぎ、RoRが実現しているスクリプトの機能を実現することができる。Grails自身の作り込みはまだまだこれからといったところだが、スクリプト言語の可能性をJavaの世界に提示するには十分すぎるプロダクトのようにおもわれてならない。Webアプリケーションシステムの可能性を検討するにおいて、一度は検討しておきたいプロダクトだ。

    関連記事

    関連サイト

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン