Railsとは何? わかりやすく解説 Weblio辞書 (original) (raw)

Ruby on Rails

Railsアプリケーションデフォルトページ
開発元 Rails Core Team
最新版 8.0.1 / 2024年12月13日 (2か月前) (2024-12-13)[1]
リポジトリ github.com/rails/rails
プラットフォーム クロスプラットフォーム
種別 Webアプリケーションフレームワーク
ライセンス MIT License
公式サイト rubyonrails.org
テンプレートを表示

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

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

哲学

Railsの基本理念は「同じことを繰り返さない」(DRY:Don't Repeat Yourself)と「設定より規約」(CoC:_Convention over Configuration_)である。

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

歴史

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

2004年の登場以後、Ruby on Railsのコンセプトは他のフレームワークにも大きな影響を与えている。Ruby on Railsの影響を受けたフレームワークとしては、PHPCakePHPSymfonyPerlCatalystgroovyGrailsNode.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

作者 エズラ・シグモントビクス
開発元 ヤフーダ・カッツ
最新版 1.1.2[3] / 2010年6月17日 (14年前) (2010-06-17)
リポジトリ github.com/rails/rails
プログラミング言語 Ruby
対応OS クロスプラットフォーム
種別 Webアプリケーションフレームワーク
ライセンス MIT License
公式サイト www.merbivore.com
テンプレートを表示

Merb(Mongrel(英語版)とErbの造語[4])とは、2008年12月23日にRuby on Rails 3.0のリリースの一環として[5]Rails Webフレームワークに統合された[6]Webアプリケーションフレームワークである。

特徴

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

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

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

モジュラリティ

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

関連項目

脚注

出典

  1. ^Rails Version 8.0.1 has been released!”. rubyonrails.org (December 13, 2024). 2025年1月23日閲覧。
  2. ^ 重複したコードを書かない意味もある
  3. ^ https://github.com/merb/merb/wiki
  4. ^ Zygmuntowicz, Ezra (18 Oct 2006), “ANN: Merb, Mongrel+Erb”, osdir.com, http://osdir.com/ml/lang.ruby.mongrel.general/2006-10/msg00105.html
  5. ^ Ruby on Rails 3.0 Release Notes
  6. ^ a b Boone, Paul (18 Sept 2008), “Rails/Merb performance comparison (on mongrel, jruby, tomcat, glassfish)”, mindbucket.com, http://www.mindbucket.com/2008/09/18/rails-merb-performance-comparison-on-mongrel-jruby-tomcat-glassfish/
  7. ^ Zygmuntowicz, Ezra (23 Dec 2008), Merb *is* Rails, http://brainspl.at/articles/2008/12/23/merb-is-rails
  8. ^ Hansson, David Heinemeier (23 Dec 2008), “Merb gets merged into Rails 3!”, weblog.rubyonrails.org, http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3/
  9. ^ Katz, Yehuda (23 Dec 2008), “Rails and Merb Merge”, yehudakatz.com, http://yehudakatz.com/2008/12/23/rails-and-merb-merge/
  10. ^ merb-core gem dependencies, (23 mar 2010), http://rubygems.org/gems/merb-core
  11. ^ merb gem dependencies, (23 mar 2010), http://rubygems.org/gems/merb

外部リンク

Ruby
実装 MRI / YARV IronRuby JRuby MacRuby(英語版) MagLev(英語版mruby mruby/c Rubinius(英語版) RubyMotion(英語版
IDE Komodo(英語版NetBeans RadRails RubyMine(英語版
アプリケーション Capistrano Chef Hiki Homebrew irb Joruri mobileimap Puppet Rake Redmine RSpec(英語版RubyGems Sass tDiary 影舞 島根県CMS
ライブラリフレームワーク AspectR eRuby (RHTML) Merb Padrino Cocoa (API)RubyCocoa Ruby on Rails Shoes Sinatra Star Ruby QtRuby
サーバソフトウェア mod_ruby(英語版) Mongrel(英語版Phusion Passenger (mod_rails/mod_rack) Rack(英語版WEBrick
その他 Document format RubyKaigi Rubyアソシエーション Rubyライセンス まつもとゆきひろ
カテゴリ コモンズ ウィキブックス