第6回:RailsとGrailsの比較(前編) (1/3)

徹底比較!!Ruby on Rails vs Javaフレームワーク
徹底比較!!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に関する情報源には次のサイトがあります。


   なお、今回はGrails 0.2系を取り扱います。


アーキテクチャの比較

   図1がRailsとGrailsのアーキテクチャを比較したものです。参考として一般的なJavaEE開発のアーキテクチャも掲載してあります。

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に示します。

Grailsプロジェクトのディレクトリ構成
図2:Grailsプロジェクトのディレクトリ構成

1   2  3  次のページ


株式会社アスタリクス 大西 正太氏
著者プロフィール
株式会社アスタリクス  大西 正太
JavaEEフレームワークの設計構築や開発プロセス策定などの業務を経て、現在は新規ビジネス創生に携わる。Ruby on Rails上に構築したオープンソースのCMS「Rubricks」(http://rubricks.org/)のコミッタ。


INDEX
第6回:RailsとGrailsの比較(前編)
はじめに
  コントローラ(+サービス)の比較
  ビューの比較
徹底比較!!Ruby on Rails vs Javaフレームワーク
第1回 O/Rマッピング
第2回 JSFとRailsで比較(前編)
第3回 JSFとRailsで比較(後編)
第4回 DIコンテナとの比較
第5回 テストフレームワーク
第6回 RailsとGrailsの比較(前編)
第7回 RailsとGrailsの比較(後編)
Ruby on Rails入門
第1回 Railsが注目されている理由
第2回 すぐできるアプリケーション作成
第3回 アーキテクチャと検索機能の追加
第4回 Railsでテストをしてみよう
第5回 Ajaxアプリケーションの作成
第6回 プラグインでさらに生産性アップ
第7回 Linux環境で動作させよう

人気記事トップ10

人気記事ランキングをもっと見る