Railsに乗れ!

Rubyという言語を知ったきっかけ、そしてこれを自分の道具箱に入れようと思った動機は人それぞれだと思う。しかし、ここ1年の間にRubyを始めた人のほとんどは、きっとRuby on Railsに関心を持ってのことに違いない。俺のようにRakeから入る変人など限られているだろうなぁ。

Ruby on Rails(以下、RoR)は、Rubyで実装されたWebアプリケーション・フレームワークで、とにかく簡単に手早く開発ができることがウリである。そのあまりの簡易さは多くのエンジニアを魅了し、RoRの名前はRubyistの枠を飛び越えてIT業界全体に広がり、実装言語であるRuby知名度をも飛躍的に向上させた。Rubyistになった以上、これを見過ごすことはできない。

ネットでざっと情報を集めたところ、RoRはコードジェネレータやORマッピングライブラリなどのいくつもの便利ツールを集積したもので、慣れると簡単なものであれば1時間もかけずにWebアプリケーションを実装できてしまうという。

オフィシャルサイトでは、たった15分で簡単なblogサイトを作成してしまう、という脅威のデモを見ることができる(要・QuickTime)のだが、すごいわ、これ。とにかく早い。ちょこちょこっと触っただけで、それなりに動くWebアプリが魔法のように出来上がってしまう。さらに驚くべき点は、こうしてあっさりと出来上がった代物が、ちゃんとMVCモデルに則り、Persistence層にはRDBを使用、そしてORマッピングしてある本格的なWebアプリケーションである、というところだ。

俺も実際、Virtual PC 2004 SP1に入れたCentOS上で、こちらの記事を参考にして簡単なBBSっぽいものを作ってみたのだが、MySQLやらのインストールに手間がかかったものの、コーディングには15分もかからなかった。「・・・ほ、ほんとにこれだけでいいんですか?」と思わず敬語になってしまうぐらいびびった。Javaで同じ構造のアプリケーションを作るとなったら、どれほど苦労することか・・・。

RoRの圧倒的な簡単さの秘密は、2つの基本理念にある。

ひとつは『DRY(Don't Repeat Yourself)原則』(同じものを二度書かない)であり、これを守るためにコードの自動生成機能を充実させている。わかりやすいところでは、ORマッピングしたクラスを作るとき、RoRではDBにアクセスしてテーブル情報を取得し、そこから自動生成させる。テーブル設定はDB上にのみ存在させ、他に設定ファイルを作ったりはしない(二度書かない)のだ。

そしていま1つの理念が『Convention over Configuration』(設定よりも規約)だ。RoRでは、各種ファイルの配置から、DB上のテーブルの命名規則と構造にいたるまで、あらゆる点が規約として定められており、これを破るとまともに動かない。その代わり、RoRでは設定ファイルはほとんどない。なぜなら、規約に従っていれば、しかるべきところを見ればそこに必要な情報が書いてあるはずだからだ。削れる自由度は削ることで、開発を簡便にしている。窮屈ではあるが、規約自体は理に適っており、あえて逆らう必要も感じないので、これはこれで良いかと思う。

もっとも、RoRが万能だとは思わない。我々が日頃相手しているわがままな顧客たちの要望に応えるためには、おそらくRoRの規約を破らねばならない場面もあるだろう。それに、スクリプト言語で動いている以上、どうしてもパフォーマンスは落ちてしまう。高度なトランザクション制御を実装できるかもわからない。

俺がRoRをざっと見て思ったことは、「これ、プロトタイピングに最適なんじゃねーだろうか」という点だ。とりあえず動くものを作るには最適の環境だし。とか言っていたら、すでに同じことを考えている人がいた。ちぇっ、みんな考えることは同じか。

それはともかく、RoRは楽しい。ワクワクするし、根底にある理念や、それを徹底的に守った実装には感動すら覚える。もう、仕事で使えるとか使えないとか、そんな話はどうでも良いのである。Ruby on Railsは、プログラミングの楽しさを思い出させてくれる、すごいやつなのだ。