読者です 読者をやめる 読者になる 読者になる

次期Ruby on Rails

EY-Office

Ruby on Rails (以下 Rials)は非常に早い速度で成長するフレームワークですが、次期メジャーバージョン Rails 3 に関する具体的な情報がいろいろと出てきています。先日の Rubykaigi 2009でも、Rails 3の主要開発者の Yehuda Katz が Rails 3に関する発表 を行いました。

Rails 3 の主な目的は、Rails 2のように新しい考え方や機能の追加ではなく、リファクタリング(外部から見た動作を変えずにソースコードの内部構造を整理すること)です。Railsは O/Rマッパー(データベースとのやり取りを行う)のActiveRecordや、テンプレートエンジン(HTMLの生成を行う)の ActionViewや、Webアプリの制御を行う ActionController などにモジュール化されていましたが、それぞれのモジュールの結合が密でした。
Rails 3では 内部を整理し以下を目指しています

  • O/Rマッパーやテンプレートエンジンなどのモジュールを容易に入れ替えられるようにする
  • Webアプリ以外のアプリから ActiveRecord などのモジュールだけを簡単に使えるようにする


RailsRailsが想定してきた環境、例えばRDBを使った新規のWebアプリでは圧倒的な生産性の高さを誇ってきましたが、前回このブログに書いた Google App Engine のような RDBを持たないクラウド環境では、RDBを前提に作られたActiveRecordが使えずに Railsの生産性の高さは発揮できません。また、O/Rマッパーを ActiveRecord 以外のモジュールに置き換えようとすると本来は無関係な ActionView の便利な機能が使えなくなってしまいました。

Railsの後に生まれた Merb というフレームワークRailsに似ていましたが、O/Rマッパーのような各モジュールが簡単に交換可能で DataMapper のようなRDB以外にも対応可能なO/Rマッパーも生まれています。


昨年クリスマスの Rails 3の発表 では Rails 3 は RailsとMerb とのマージだと発表されたいへん話題になりました。しかし、Ruby on Rails 3 は実際にMerbのコードがRailsのコードにマージされるのではなく、考え方・構造がマージされより良い Ruby on Rails になるといった事だったのです。