Railsのおいしさ
Rails本、簡単なECシステムのサンプルを一通りこなしました。今まで開発していたPHP+Smartyな環境から考えて、Railsの利点などを現時点の印象でまとめてみます。
Railsの何が便利なのか
URIマッピングの自動化
Railsアプリの基本的なマッピングは、「~/コントローラ名/アクション名/パラメータ」となります。普通は.htaccessでrewriteの設定などを書いてやるのですが、Railsはこれを自動で作ってくれます。mod_rewriteの特殊かつ難解な設定を考えなくていいのはありがたい限りです。また、URIとして取得されたGETのパラメータも自動的にパースされてスクリプト内で使用できます。
「~/store/display_cart」というリクエストを与えると、storeコントローラのdisplay_cartメソッドが呼び出されます。そして、ブラウザにはdisplay_cartのテンプレートが表示されます。
この辺りの足回りが最初から用意されているのは非常にありがたいです。
強力なO/Rマッピング
DBと連動するModelを作成する場合、テーブルの定義がそのままオブジェクトに反映されます。
create table products ( id int not null auto_increment, title varchar(100) not null, description text not null, image_url varchar(200) not null, price decimal(10,2) not null, date_available datetime not null, primary key (id) );
といったテーブルを作成した後で、プロンプトから
ruby script/generator model Product
と打つと、テーブルprodutsに紐付いたProductクラスが作成されます。Productオブジェクトは、DBで定義されたプロパティに自由にアクセスできますし、カラムの型に応じたバリデーションも可能です。また、ModelからDBへのアクセスも標準的なものはメソッドが用意されており、SQLを書かなくてもある程度のことはできてしまいます。
MVC間のパラメータ受け渡しの自動化
MVCの設計に当たって、自分がいつも頭を悩ませるのが「Model-Controller間の線引き」と「各層でのパラメータ受け渡し」なのですが、そこが自動化されています。前者についてはフレームワーク上で規定されていれば済む話なので、Rails特有というわけではないでしょう。とは言え、前述のO/Rマッピングとその周辺サポートによって、非常に効率のいい開発が可能です。また、後者はController内で先頭に@を付けた変数を設定すると、それがそのままViewで使える便利設定です。Railsで作ったアプリケーションを見ていると、わりとControllerががんばっているような印象を個人的には受けましたが、記述が簡潔なのでスマートなソースになっています。
他にもフィルタやらヘルパーやら便利な機能が盛りだくさんですが、今のところこの3点が自分的に大当たりでした。生粋のプログラマさんには物足りない部分もあるのかも知れませんが、自分みたいな「デザインもプログラムも効率よくこなしたい」系の人間にはすごくハマるんじゃないでしょうか。