TOP
>
システム開発
> はじめに
徹底比較!!Ruby on Rails vs Javaフレームワーク
第6回:RailsとGrailsの比較(前編)
著者:
アスタリクス 大西 正太
2006/10/18
1
2
3
次のページ
はじめに
前回までで、一通りJavaフレームワークとRailsの比較をしてきました。本連載の最後の比較は、少し趣向を変えてGroovy上に作成されたRailsライクなフレームワークGrailsとRailsの比較をしていきます。
Grailsとは
GrailsはGroovy(Java公式仕様として策定が進められている、JavaVM上で動作するスクリプト言語)上で動作するRailsライクなフレームワークです。当初、Groovy on Railsという名称で作成が進められていたことからもわかるように、Railsに強く影響を受けていることが公言されています(後にRails作者の要請により改名)。
Groovyは豊富なJavaライブラリの利用が可能な上、言語設計自体もRubyの影響を受けているためRailsライクなフレームワークと相性がよいと考えられます。
Grailsに関する情報源には次のサイトがあります。
本家ページ
http://grails.codehaus.org/
日本語訳ドキュメント
http://docs.codehaus.org/display/GRAILS/Japanese+Home
なお、今回はGrails 0.2系を取り扱います。
アーキテクチャの比較
図1がRailsとGrailsのアーキテクチャを比較したものです。参考として一般的なJavaEE開発のアーキテクチャも掲載してあります。
図1:Rails、Grails、JavaEEのアーキテクチャ
(画像をクリックすると別ウィンドウに拡大図を表示します)
RailsとGrailsの最大の相違は、Railsはコントローラから直接モデルを扱っているのに対し、Grailsではサービスクラスをはさんでいる点です。
構成が多少冗長になりますが、Webリクエストなどに影響されないサービスクラスによってテスタビリティが高まる効果があります。逆に、GrailsとJavaEEを比べるとDAOなどのクラスは省略され、Railsと同様にドメインモデル自体がDBへのアクセスメソッドを持つ構成(ActiveRecordパターン)となっています。
結論としては、RailsとJavaEEの中間的な位置づけのアーキテクチャであるといえるでしょうか。
ジェネレータの比較
続いて、ソースコードの雛形を自動生成する「ジェネレータ」について比較します。
Grailsでは表1に示したジェネレータコマンドが付属しています。
ジェネレート
対象
Railsコマンド
Grailsコマンド
プロジェクト
rails
プロジェクト名
grails create-app
プロジェクト名
コントローラ
generate controller
コントローラ名
grails create-controller
コントローラ名
モデル
generate model
モデル名
grails create-domain-class
モデル名
MVC全体
generate scaffold
モデル名
grails generate-all
モデル名
表1:RailsとGrailsのジェネレータコマンド
表1をみてもわかるように、Railsとほぼ同様のジェネレータが準備されているといえます。
なお、GrailsではHSQLDBというサーバ立ち上げ不要なJava製の簡易RDBが同梱されており、プロジェクトをジェネレートするとデフォルトで利用設定が完了しています。そのため、データベースサーバの設定さえすることなくアプリケーションを作り始めることが可能です(ただし、実運用に耐えられる製品ではないため、開発が進んだ時点でRDBの切り替え作業が発生します)。
参考として、ジェネレートされたプロジェクトのディレクトリ構成を図2に示します。
図2:Grailsプロジェクトのディレクトリ構成
1
2
3
次のページ
著者プロフィール
株式会社アスタリクス 大西 正太
JavaEEフレームワークの設計構築や開発プロセス策定などの業務を経て、現在は新規ビジネス創生に携わる。Ruby on Rails上に構築したオープンソースのCMS「Rubricks」(
http://rubricks.org/
)のコミッタ。
INDEX
第6回:RailsとGrailsの比較(前編)
はじめに
コントローラ(+サービス)の比較
ビューの比較