Grails

Grails(グレイルズ)は、プログラミング言語 Groovy を使用するオープンソースのWebアプリケーションフレームワークです。Groovy自体がJavaプラットフォーム上で動作するため、Grailsも同様にJava環境で利用できます。このフレームワークは、「設定より規約 (convention over configuration)」というパラダイムを採用し、開発者が詳細な設定に煩わされることなく、アプリケーションの構築に集中できる環境を提供します。

Grails の概要



Grailsは、JavaプラットフォームにおけるWebアプリケーション開発の生産性向上を主な目標として開発されました。具体的には、以下の点が重視されています。

Javaテクノロジーの活用: HibernateSpring Frameworkといった既存のJavaテクノロジーを、シンプルで一貫性のあるインターフェースで再利用できるように設計されています。
一貫性と習得容易性: フレームワーク全体を通して一貫性があり、学習コストを低く抑えることを目指しています。
分かりやすいドキュメント: フレームワークの各部分について、ユーザーが理解しやすいドキュメントを提供しています。
ユーザーの期待に応える: 複雑で理解が難しい分野において、ユーザーが期待する機能を提供します。
強力な機能: 永続性、ビューテンプレート、Webコンポーネント作成、Ajaxサポートなど、Webアプリケーション開発に必要な機能を備えています。
完全な開発環境: Webサーバや自動リソース再ロード機能など、開発に必要なツールを標準で提供します。

Grailsは、習得が容易で、アプリケーションの開発と拡張がしやすいように設計されています。その設計思想は、一貫性と強力な機能のバランスを保つことに重点を置いています。

Grails の高い生産性



Grailsは、従来のJavaによるWeb開発フレームワークと比較して、高い生産性を実現するために、以下の3つの特徴を備えています。

XMLコンフィギュレーション不要



従来のJava Webアプリケーション開発では、環境やフレームワークの設定にXMLファイルを使用することが一般的でした。しかし、XMLによる設定はアプリケーションの規模が大きくなるにつれて複雑化し、開発者の負担となっていました。Grailsでは、XMLファイルによる設定を不要とし、フレームワークが規約に基づいてアプリケーションのコードを解析します。例えば、`grails-app/controllers`フォルダ内のクラス名が`Controller`で終わるものはコントローラとして認識されます。

ただし、設定が全くないわけではなく、データベースやログの設定などは `grails-app/conf` フォルダ内に ConfigSlurper 形式で配置します。

即座に使える開発環境



Grailsは、Webサーバ(Apache Tomcat)やデータベース(H2 Database)を含む完全な開発環境を提供します。これにより、開発者は環境構築に時間を費やすことなく、すぐに開発に取り掛かることができます。`grails run-app` コマンドで内蔵サーバーを起動し、ソースコードの変更は自動的にリロードされます。開発モードでは、初期設定としてH2 Databaseのオンメモリデータベースが使用されます。

本番環境向けには、`grails war`コマンドでWARファイルを作成し、Apache Tomcatなどのアプリケーションサーバーにデプロイします。

Mixin 経由の機能



Grailsは、Mixinを通じてクラスに動的なメソッドを提供します。これにより、クラスを拡張したり、インタフェースを実装したりすることなく、特定の機能を利用できます。例えば、ドメインクラスは、データの保存、削除、検索といった永続化操作を自動化するメソッドを動的に持つようになります。

Webフレームワーク



Grailsは、MVC (Model-View-Controller) パラダイムに基づいて設計されています。ここでは、コントローラとビューについて説明します。モデル(ドメインクラス)については後述します。

コントローラ



Grailsでは、コントローラがWebページの振る舞いを実装します。コントローラは複数のアクションを持ち、それぞれのアクションが特定の処理を行います。例えば、以下のようなコントローラがあります。

groovy
class BookController {
def list() {
[books: Book.list()]
}
}


このコントローラには`list`アクションがあり、データベースから全ての本を取得し、ビューに渡します。このコントローラは、`grails create-controller book` コマンドで作成できます。コントローラクラスは作成するだけでGrailsに認識され、`http://ドメイン名/myapp/book/list` にマッピングされます。

コントローラでXMLやを返すことも可能です。

ビュー



Grailsは、GSP (Groovy Server Pages) とJSPをサポートしていますが、GSPの使用が推奨されています。GSPは、Groovyの機能を活用したテンプレートエンジンで、HTMLの中にGroovyのコードを埋め込むことができます。

html






${book.title}



この例では、コントローラから渡された本のリストを表示しています。ビューファイルの命名規則は `grails-app/views/コントローラ名/アクション名.gsp` です。GSPでは `${}` で囲まれた部分で変数やメソッドを利用できます。標準ではエスケープされずに出力されますが、 `grails-app/conf/Config.groovy` で設定を変更することで、HTMLエスケープすることができます。

Ajaxサポート



Grailsは、標準でjQueryをサポートしており、プラグインを通してOpenRico、Prototype、Yahoo! UI libraryなどのAjaxライブラリを利用できます。また、AjaxコードとHTMLを生成するタグライブラリも利用可能です。

ダイナミックタグライブラリ



Grailsは、各種タグライブラリを提供していますが、独自のタグライブラリ(タグリブ)を簡単に作成できます。タグリブはGroovyで記述し、GSPで利用できます。例えば、以下のような日付フォーマット用のタグリブを作成できます。

groovy
class ApplicationTagLib {
def formatDate = { attrs ->
def date = attrs.date
def format = attrs.format
out << date?.format(format)
}
}


このタグリブは、`grails-app/taglib/ApplicationTagLib.groovy` ファイルに追加するか、`grails-app/taglib` ディレクトリに `TagLib.groovy` という名前で保存します。

永続性



モデル(ドメインクラス)



Grailsでは、GORM (Grails Object Relational Mapping) を使用してデータベースにデータを格納します。ドメインクラスは、`grails create-domain-class` コマンドで作成します。例えば、`grails create-domain-class myapp.Book` というコマンドを実行すると、`myapp/Book` というドメインクラスが生成されます。

groovy
package myapp

class Book {
String title
Person author
}


GORMは、このドメインクラスに対応するテーブルを自動的にデータベースに作成します。開発者はSQLをほとんど意識することなく、ドメインクラスのメソッドを通してデータにアクセスできます。

Scaffold



Grailsには、ドメインクラスからコントローラやビューを自動生成するScaffold機能があります。静的Scaffoldと動的Scaffoldの2種類があります。静的Scaffoldは、`grails generate-all myapp.Book` コマンドで生成でき、基本的なCRUD操作をすべて行うことができます。動的Scaffoldは、コントローラに `static scaffold = Book` のように記述することで、CRUD操作をWeb上で提供できます。

GORMのメソッド



GORMで管理されるドメインクラスには、インスタンスメソッドと静的メソッドがあります。

動的インスタンスメソッド: `save()`, `delete()`, `refresh()`, `ident()` などがあります。
動的静的(クラス)メソッド: `count()`, `exists()`, `find()`, `findAll()`, `findBy()`, `findAllBy()`, `findWhere()` などがあります。

古いデータベースモデル



GORMはHibernateを使用しているため、標準のHibernateマッピングファイルを使用することで、既存のデータベースをGORMクラスにマッピングできます。

Javaプラットフォームとの連携



GrailsはJavaプラットフォーム上で動作するため、既存のJavaライブラリやフレームワーク、コードベースとの連携が容易です。特に、Hibernate ORMフレームワークとは透過的な連携が可能です。

まとめ



Grailsは、GroovyをベースにしたWebアプリケーションフレームワークで、高い生産性と開発効率を提供します。設定より規約の原則に基づき、XML設定を排除し、動的メソッドやScaffold機能により、迅速な開発を支援します。HibernateSpring Frameworkとの連携も容易で、既存のJava資産を有効活用できます。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。