1. Ruby on Railsとは
Quick Start 1章 Ruby on Railsとは
1.1 Ruby on Railsとは
1.2 設計理念
1.3 MVCアーキテクチャ
1.4 ORマッパー
1.1 Ruby on Railsとは
Ruby on Rails(以下Rails)は、MVCアーキテクチャに基づいたWebアプリケーションフレームワークです。
2004年にデンマークのDavid Heinemeier Hansson氏によって最初のバージョンが公開されて以来、開発者に人気のあるフレームワークです。
1.2 設計理念
Railsには、設計理念として、以下の3つがあります。
1. CoC(Convention over Configuration)
和訳すると「設定より規約」。従来のフレームワークのように設定を大量に記述するのではなく、規約にのっとってプログラミングすることで、余計なプログラミングや設定を省くことができます。
例えば、社員クラスを「Employee」とすれば、社員情報を格納するデータベースは複数形である「employees」という名前にします。
この規約にのっとることで、EmployeeクラスとemployeesテーブルのマッピングはRailsで自動的に行うので、開発者はクラスとテーブルを関連付ける設定を記述する必要はありません。
開発者はビジネスロジックなどの本来やるべき部分の開発に、注力することができます。
2. DRY(Don’t Repeat Yourself)
「同じことを繰り返さない」という考え方です。あらゆる情報について、様々な個所に複数記述するのではなく、1か所に記述します。
それにより、変更が生じた際に何か所もコードを修正することがなくなります。
3. REST(Representational State Transfer)
RESTとはWebアプリケーションなどにおける設計概念の一つで、すべてのリソースに一意の識別子(URI)をつけ、そのリソースに対して動作を決めてアクセスします。
Railsでの具体例を挙げると、1番の商品というリソースを表す「/products/1」というURIに対して、HTTPメソッドのGETを使うことで、1番の商品を表示します。
同じURLでHTTPメソッドのPUTを使うことで、1番の商品情報の更新、HTTPメソッドのDELETEを使うことで、1番の商品を削除できます。
RESTの概念にのっとったシステムは、RESTfulといわれます。もちろん、RailsもRESTfulです。
筆者は初めてRailsを使用したとき、ほとんどコードを書くことなく簡単なCRUDシステムができたことに感動しました。
それまでStrutsなど、設定を多く行うフレームワークを利用していたので、設定の煩わしさから解放され、開発効率が上がることも実感できました。
1.3 MVCアーキテクチャ
Railsは、MVCアーキテクチャに基づいています。
ControllerにあたるのがAction Controller、ViewにあたるのはAction View(この2つを合わせて、Action Packといいます)、Modelの役割のうち、データの保持はActive Recordというコンポーネントが担当しています。
大まかな処理の流れは以下の通りです。
- ユーザからのリクエストがあると、該当のAction Controllerが呼び出されます。
- Action Controllerはリクエストに応じて、適切なActive Recordを呼びだします。
- Active Recordは、データベースからデータの参照、更新などを行います。
- Action Controllerは画面表示を行うため、Action Viewを呼び出します。
- Action Viewでは、表示を行います。その際必要に応じて、Active Record内のデータを参照します。
では、Railsで作成した顧客管理システムで、顧客を新規登録する場合の処理の例を上げてみます。
ここでは、それぞれ以下の名前でクラスなどを作成します。
○ リクエストするURL:http://アプリケーションのドメイン/customers/
○ Action Controller:CustomerControllerクラス
○ Active Record:Customerクラス
○ Action View :index.html.erb
○ データベーステーブル名:customers
- ユーザがリクエストすると、CustomerControllerが呼び出されます。
- CustomerControllerでは、顧客一覧を取得するため、Customerを呼びだします。
- Customerでは、customersテーブルからデータを取得し、Customerオブジェクトに格納します。
- Customerでの処理が終わると、CustomerControllerに戻り、顧客一覧を表示する画面であるindex.html.erbを呼び出します。
- index.html.erbでは、Customerオブジェクトに格納されているデータを参照して、画面表示を行います。
これらの処理のほとんどは、規約にのっとって作成していれば、Railsが暗黙のうちに実行します。
1.4 ORマッパー
Active Recordは、ORマッパーです。つまり、Active Recordクラスがデータベースのテーブルに、オブジェクトがレコードに、オブジェクトの属性が各レコードの列に当たります。
ORマッパーでは、クラスとテーブルを紐づける設定ファイルが必要となることが多いですが、Railsでは前述のとおり、規約に従うことで、自動的にテーブルとクラスの紐付を行うことができます。