Ruby on Rails

Ruby on Rails（ルビーオンレイルズ）は、オープンソースのWebアプリケーションフレームワークである。単にRailsあるいはRoRと呼ばれる。その名にも示されているようにRubyで書かれている。またModel View Controller（MVC）アーキテクチャに基づいて構築されている。

実アプリケーションの開発を他のフレームワークより少ないコードで簡単に開発できるよう考慮し設計されている。Railsの公式なパッケージはRubyのライブラリやアプリケーションの流通ルートであるRubyGemsにより配布されている。

 哲学 
Railsの基本理念は「同じことを繰り返さない」（DRY:Don't Repeat Yourself）と「設定より規約」（CoC:Convention over Configuration）である。

「同じことを繰り返さない」というのは、「定義などの作業は一回だけで済ませろ」との意味である重複したコードを書かない意味もある。「設定よりも規約」とは、「慎重に設計された規約（Convention）に従うことにより、設定（Configuration）を不要にする（あるいは軽減する）」ということである。Railsはフルスタックのフレームワークであり、コンポーネントの統合は手動での設定を必要とせず自動で規約に従い行われる。例えば、Ruby on Railsに組み込みのORMライブラリであるActive Recordでは、クラス定義においてデータベースから読み取るべき属性名等を指定する必要はない。Active RecordはRDBMSの表定義から自動的にその情報を取得する。したがって、プログラムとRDBMSの両方にそれを定義するというような冗長な作業を行う必要はない。

 歴史 
Ruby on Railsはデンマークのプログラマであるデイヴィッド・ハイネマイヤー・ハンソンにより、プロジェクト管理ツール "Basecamp" の開発に用いられた知見やコードを抽出し、一般化することにより作成された。

 2004年7月 最初のバージョン公開
 2005年12月13日 バージョン1.0リリース
 2007年12月7日 バージョン2.0リリース
 2010年8月29日 バージョン3.0リリース
 2013年6月27日 バージョン4.0リリース
 2016年6月30日 バージョン5.0リリース
 2019年8月15日 バージョン6.0リリース
 2021年12月15日 バージョン7.0リリース
 2024年11月7日 バージョン8.0リリース

2004年の登場以後、Ruby on Railsのコンセプトは他のフレームワークにも大きな影響を与えている。Ruby on Railsの影響を受けたフレームワークとしては、PHPのCakePHPやSymfony、PerlのCatalyst、groovyのGrails、Node.jsのYEOMANといったものがある。

 RailsのMVCアーキテクチャ 
Rails上のMVCアーキテクチャは次のとおりである（Action Packは、この中のViewとControllerのことを指している）。

 Model 
データベース駆動のMVC WebアプリケーションではModelはRDBMSのテーブルを表すクラスを意味する。RailsではActive Recordを通じてModelクラスを扱う。通常プログラマはActiveRecord::Baseクラスのサブクラスを作る必要がある。そうすることでRDBMSのどのテーブルを使うべきか、どういったカラムを持つべきかを自動的に決定してくれる。

 View 
MVCではViewは表示のためのロジックであり、コントローラクラスからのデータをどのように表示するかを規定している。WebアプリケーションではHTML内に若干のコードを埋め込むことで実現される。

 Controller 
MVCではControllerはRailsのAction Packには含まれるアプリケーションコントローラクラスによって扱われる。WebベースMVCアプリケーションではWebブラウザを操作するユーザによりコントローラのメソッドが起動される。

 Merb 

Merb（とErbの造語）とは、2008年12月23日にRuby on Rails 3.0のリリースの一環としてRuby on Rails 3.0 Release NotesRails Webフレームワークに統合されたWebアプリケーションフレームワークである。

 特徴 
MerbのプロジェクトはRuby on Railsのコントローラースタックにおけるクリーンルーム実装として始められたが、Railsの精神や方法論から派生した数あるアイデアを組み込むまでに成長した。

Merbはコンポーネントにモジュール性を持ち、伸張性のあるAPIデザインや垂直スケーラビリティを有している。MerbはRails以上にフレキシブルで処理が早いフレームワークにしようと考えられていた。

2008年12月23日、Rails3にこれらの機能のほとんどを組み込むことが発表された。

 モジュラリティ 
モデル、ビュー、コントローラーアーキテクチャのコントローラーレイヤーのみを適切に内包するが、Webアプリケーションフレームワーク全体で一斉に動作する技術のより大規模なスイートのための統合ポイントを提供している。Railsとの統合の主なトピックはWebサーバインターフェイス、MVCモデルレイヤー、MVCビューレイヤー、最後にコントローラーエクステンションとアドオンである。また既定のアプリケーションスタックはモデルレイヤーでは、ビューレイヤーではERB、WebサーバレイヤーではとMongrelをそれぞれ組み込んでいる。

 関連項目 
 デイヴィッド・ハイネマイヤー・ハンソン
アジャイルソフトウェア開発
重複コード
オブジェクト関係マッピング

 脚注 

 出典 

 外部リンク 

 Ruby on Rails ガイド


Category:ソフトウェア工学
Category:オープンソースソフトウェア
Category:Rubyでプログラムされた自由ソフトウェア
Category:ウェブアプリケーションフレームワーク
Category:ウェブサイトの構成