Railsといえば、コマンドをニサン発たたけばCRUD機能が出来上がることで有名です。でもやっぱり、いろいろ作りこんでいくと、他のフレームワークと同じように、プログラミング、プログラミング、プログラミング・・・
しかし、作業を進めるために習得しなければならないのは、Ruby言語だけです。ココがすばらしい。
シンプルさと、優秀なリファレンス
JavaでWebアプリを作るときは、JSPやTaglib、TLDなどのXML類、他にもEJB、JNDI、Strutsなど、習得しなければならない仕様が多すぎます。作り終えるためには、いったい何冊の本を読まなければいけないだろう!?
一方、Railsは、すべてRuby言語とAPIだけで構成されているので、
RailsのAPIリファレンスだけ傍においてれば、全部解決します。
ちなみに、このブログサイトを作るためのツールを検討する際に、以下のRailsクローンも触ってみましたが、複数プロダクトの寄せ集めだったりして(テンプレート言語が独自のものだったり)、リファレンスを集めるのも大変でした。まだまだ未整備だということを鑑みても、Railsより使いやすいツールになるのだろうか?
ActionView::Helpers
erubyは、Ruby版のHTMLテンプレート言語です。とはいっても、ただ単に、HTMLの中にRubyコードを埋め込みできるだけの簡単な仕様。Railsが提供しているActionView::Helpersは、erubyに埋め込んで、HTML(正確にはeruby)を生成するメソッド群です。
例えば、
<%= text_field("post", "title", "size" => 20) %>
こう書けば、
<input type="text" name="post[title]" size="20" value="値" />
こうなる。text_fieldメソッドが、HTML文字列を返す。ただそれだけの仕組みです。
ここで議論になるでしょう。「再利用性は?」「デザイナーとロジックの分業は?」などなど。でも、JSPだって、いくらタグライブラリを駆使しても実現できなかったのですから、Railsだけを責めても始まりません。
Railsは全般的に、
中途半端な折衷案を捨てて、プログラマに大きな利益を与えています。この潔さがいい。もしRailsが、変なマークアップ言語でHTMLを作るような仕組みだったら、私は使ってないだろうと思います。
・・・Javaで作るときも、これマネしよ。
メタプログラミング
メタプログラミングも、Rubyの言語仕様だけで実現できます。
class Girl
private :weight?
end
このprivateは、Javaなどの言語に慣れてる人は「宣言」だと思いがちですが、Rubyでは「メソッド」です。なので、
class Girl
himitsu :weight?
end
でもいいんですね。
Railsでは、この言語仕様をフル活用していて、実にさまざまな機能や制御を、一発で設定できます。
class Girl
before_filter :login_required, :target => :marry_me?
has_many :boyfriends
end
ここでも「設定は外出しにしなきゃだめでしょ!」という意見がでると思います。私の意見では、設定ファイルに業務ロジックを書いている(EntityBeanはそうですね)くらいなら、こっちの方がスマートです。
Javaは、後付でソースコードと設定ファイルの融合(XDocletやアノテーション)を企てましたが、それもまた、覚えなければならない仕様を増やす結果になりました。
でも・・
なんだか、Java批判みたいな文章になってしまいましたが、だからといって、すべてのタイプのアプリケーションがRailsでうまくいくとは言ってないので、そこのところ、よろしくお願いします。私も、10人体制の開発でRails(というか、スクリプト言語)を使う自信はありません。