Grailsは、Java EEで実績のあるSpringフレームワーク、Hibernate (O/Rマッピング) 等をベースにGroovy DSLを活用して実装された、Java環境で効率よくWebアプリケーション開発を行うことができるフルスタックフレームワークだ。

多くのダイナミックフレームワークのように、DRY(Don’t Repeat Yourself)、CoC(設定より規約)という哲学に基づいて実装されている。GrailsでのWeb開発では、主にGroovyを使用したDSL(ドメイン固有言語)で記述する。DSLでプログラムを記述する事によって、その内容から動作に必要な部分は動的に生成される。この実装によってJava環境でのWeb開発の複雑な部分を隠蔽している。

Grailsで主に使用する言語Groovyは、JVM上で稼働するオブジェクト指向型動的スクリプト言語だ。Javaとシームレスに統合されているので、Java開発者にとっては学習コストが少なくてすみ、多くのJava資産も活用できる。

フレームワークのベースがSpringフレームワークであることから、Grailsは言わば形を変えたSpring-MVCであり、Java資産の活用という意味では、既存のSpringビーンを利用したい場合、特に効果を発揮すると言える。

フレームワークの概略図

すぐに始められるWeb開発

Java環境でのWeb開発には、アプリケーションサーバ、データベース、ビルドツールはもちろん、アプリケーションを実装するための様々なライブラリ等が必要だ。さらには、それらのツールを使用するための設定、実装を行うための定義が必要となる。Grailsでは、Web開発に必要なそれらの内容を、素早く簡単に扱えるように提供してくれるので、単純なWeb開発であれば、Grailsを利用することで他に何も準備しなくてもよい。

Grailsで、すぐに使用できる機能をリストしてみた。

  • Hibernate上に構築された、簡単に利用できるオブジェクト・リレーショナル・マッピング(ORM)レイヤー
  • 開発時に活用できる組込HSQLDB(Hibernateに対応しているDBは全て使用可能)
  • 表現豊かなビューテクノロジーGroovy Server Pages(GSP)
  • Spring MVCを利用したコントローラレイヤー
  • ビルドなどを行うコマンドラインスクリプト環境。Groovy版のAnt Gantを使用
  • リロード可能に設定された組込アプリケーションサーバTomcat
  • 組込Springフレームワークによる依存注入(DI)
  • SpringフレームワークのMessageSourceで実装された国際化(i18n)対応
  • Springフレームワークのトランザクション実装によるサービスレイヤーのトランザクション