Rails 勉強中 #0

Agile Web Development With Rails を読みながら勉強中。

別に perl から ruby へ転向したというわけではなく、フレームワークの実装について勉強しようかな、と。

Rails に触れるのは、るびま 0004 号のRubyOnRails を使ってみる 【第 1 回】のチュートリアルを試して以来なので、およそ1年ぶりですね。この時は scaffold というものにはじめて触れて感動したものでした。

まだ読み始めたばかりで、scaffold からちょっと先に進んだだけなのですが、Validation を Model クラスにやらせる、というのがすごく新鮮。以下の様に、product という商品テーブルに対応した Product クラスに Validation の処理を記述しておくと、フォーム submit した時に入力内容をチェックして、ブラウザにエラー表示してくれます。

class Product < ActiveRecord::Base
  validates_presence_of :title, :description, :image_url
  validates_numericality_of :price
  validates_uniqueness_of :title
  validates_format_of :image_url,
    :with    => %r{^http:.+\.(gif|jpg|png)$}i,
    :message => 'must be a URL for a GIF, JPG, or PNG image'
  protected
  def validate
    errors.add(:price, 'should be positive') unless price.nil? || price >= 0.01
  end
end

PofEAA 本で、ActiveRecord パターンはモデルにドメインロジックを持つ、みたいなことが書かれていたけど、こういうことなのかな。

なんでフレームワークの実装を勉強しようと思ったかというと、API によるデータ提供やフレームワークの整備によって、個人のアイデアを実現する敷居が低くなってきているな、と。そうなると、自分にしか思いつかないアイデアなんてそうそうあるわけではないので、アイデアをいかに素早く実装して公開するかが重要だなぁ、と。そのためにはフレームワーク重要となるわけですが、単に与えられたフレームワークを使うだけではなく、いかに自分の目的や開発手法になじんだフレームワークを作るかが重要になってくるんじゃないかな、とか思ってるわけです。

あと、ライブドアのテクノロジセミナーで、変なあだなで有名な人が次期 Sledge の話をしていて、その開発に貢献できるようになりたいな、と。Sledge によってウェブプログラミングの楽しさを知って、スキルも飛躍的に向上したので、恩返しがしたいですね。