EY-Office ブログ

EY-Officeの吉田裕美が、まだ Ruby on RailsやiPhone開発を行ってない技術者や技術系マネージャー向けに、技術や教育に付いて書いています。

2009-09-07 次期Ruby on Rails

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 などのモジュールだけを簡単に使えるようにする


Rails は Rails が想定してきた環境、例えば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 を目指すといった事だったのです。