Ruby on Rails: なぜActiveRecordが必要なのか?
2007.10.30
Railsの勉強がしばらくストップしてしまったので、今日はビデオを見てお勉強。Rails Envyの「ActiveRecord Tutorial」は長さも25分とちょうど良いし、「ActiveRecordとはなんぞや」を具体例を交えて簡潔に教えてくれるのでとても良い勉強になる。
英語だが、冒頭の部分を乗り越えればあとはプログラミングの話なので、日本人にもそれほど難しくないはず。念のため、オープニングの部分のみ、超訳しておいた。
ActiveRecordのアイデアは、いったいどこから来たのか?まずは"Active Record"の意味から (ActiveRecordではない点に注意)
"Active Record"とは、デザイン・パターンの一つ。
どうやってデータベースにアクセスするか?
SQLにプログラムから直接アクセスする方法もあるが...ちょっと不便
データベースのテーブルをオブジェクトにマップすればいい
というのが"Active Record"の考え方
このデザイン・パターンを、
PHPに応用したのがCakePHP
Rubyに応用したのがActiveRecordつまり、言い換えれば「ActiveRecordはRubyをSQLに翻訳する仕組み」。
Rubyで u = User.find(1) が、
SQLでは、 SELECT FROM users WHERE (users.`id` = 1) となるRuby: u.first_name = "Joe"
SQL: (まだ何もしない)
Ruby: u.save
SQL: UPDATE users SET `first_name` = 'Joe' WHERE `id` = 1Ruby: u = User.find_by_first_name("Joe")
SQL: SELECT * FROM users WHERE (users.`first_name` = 'Joe') LIMIT 1
しかし、こんなハイクオリティなものが、ちょっとググッただけで簡単に見つかるとは本当に良い時代になったものだ。
【追記】ちなみに、同じ人たちが「Ruby vs. PHP」の論争を「Mac vs. PC」CMのパロディにしたビデオを作っていることを発見したので、ここに貼付けておく。
Comments