« 2006年7月 | トップページ | 2006年10月 »

2006年8月

2006/08/19

【感想】RubyOnRails 勉強会@関西とデータモデリング

デスマーチ・プロジェクトに束の間の休日ができたので、RubyOnRails 勉強会@関西に初参加してきた。
Ruby勉強会@関西と同じく、女子学生や女性エンジニアも多くて、華やかな雰囲気で、講演も甘辛だった。
僕はRubyOnRails初心者なので、聞きやすかった。

聴講の目的は、もちろん渡辺さんの「アジャイルにデータモデリング」。
「何故、RubyにDOAの第一人者の渡辺さんがいるの?」みたいな。

【1】RubyOnRailsに、複合キー(複数の識別子)を持つテーブルはない!?

渡辺さんのお話は、業務システムとデータモデリングの関係から始まり、テーブルの項目の関数従属性の説明と演習まで、というとても初心者向けの講義。

懇親会で業務に携わっていると言うエンジニアの女性が、
「私はRailsのインストール方法も知らない初心者だが、渡辺さんが話した関数従属性や正規化の話はとても基本的な話です」
と言っていたのが印象的だった。
後で聞いたら、Rails開発者は、データモデリングに詳しくないらしい。

RubyOnRailsで驚きなのが、複合キーを持つDAOは作れないという話。
渡辺さんは、在庫テーブルのように、品目CDと倉庫NOを主キーに持つテーブルが作れないのは痛い、と言っていたがまさにその通り。
そのために、変換テーブルを用意して、N対Nで関係付けるようにするとか話が出ていたが、大丈夫か?

【2】ActiveRecordから覗けるJavaとRubyの違い

かずひこさんとあゆさんの初心者レッスンで、ActiveRecordの説明と演習があり、とても分かりやすかった。
ActiveRecordとは、RubyOnRails用のORマッピングそのもの。

Javaに例えるなら、HibernateやSpringと同じ感覚で使える。
SQLをRubyで操作しているのと同じ感覚だった。

面白かったのは、irbを使ってActiveRecordを実演したデモ。
PersonオブジェクトとPeopleテーブルにデータをCRUDしただけなのだが、画面上半分はirbのコマンド操作で、画面下半分は実行ログで、SQLそのものが吐き出されていた。
つまり、PLSQLのようなバッチ処理を1行おきにデバッグしている感覚と同じで、感心してしまった。
ストアドプロシージャのデバッグは普通は使い物にならないから、スクリプト言語のRubyでSQLを代用する発想は面白い。

また一つ気になったのは、InsertとUpdateが同じ操作で使えること。
Javaの普通のDAOならば、Insert用マネージャとUpdate用マネージャはクラスが異なるため、意識して使い分けないといけないが、ActiveRecordならば、Rubyのオブジェクトをsaveする操作だけでいい。

【3】RubyOnRailsの弱点と可能性

DOAをやっている人から見れば、【1】のような弱点がある限り、RubyOnRailsは多分、実用的ではない。
モデリングとは、データ構造を明確に定義するのが基本だから、モデラーさんから見ると頼りないのかもしれない。

でも、ORマッピングをここまで簡単に自動生成できる環境はすごく魅力的。

モデリングは大事だけれども、データ構造(クラス図、ER図)を作っただけではシステムは動かない。
データ構造を操作する処理を入れるためにORマッピングが必要だけれども、今まで、ORマッピングがどのオブジェクト指向言語でもクリティカルポイントになっていた。
ORマッピングは、Javaをやっている人ならいつもこの箇所で開発の半分を浪費してしまうブラックボックスみたいな無駄な作業。

Rubyなら、スクリプト言語という利点も生かし、SQLをデバッグする感覚で作れてしまう。
From Java to Rubyという本が既に売られているようだが、今後、この流れが少しずつ発展していくような気がする。

【余談】
かずひこさんが、RubyOnRailsの本を紹介していました。
表紙の機関車の意味は何でしょう?


| | コメント (2) | トラックバック (0)

« 2006年7月 | トップページ | 2006年10月 »