ゆーたんのつぶやき

株式会社ノークリサーチにてIT関連のシニアアナリストとして活動しています。

Ruby on Rails



ここのところJavaの話題ばかりだったので、
たまには他のトピックも書こうと思います。
Java以外の技術で最近気になっているのは
Ruby on Rails」です。
http://www.rubyonrails.com


簡単に言ってしまえばRubyをベースにした
WEBアプリケーション開発フレームワーク
なのですが、開発生産性の高さやその思想
には注目すべきものがあります。
個人的に魅力を感じたのは
1. 使い始めるまでの環境構築が手軽で簡単
2. Generatorでプロジェクトの雛型を生成してくれる
3. Ruby動的言語としての側面の活用
4. Rubyベースで既に存在する各種モジュール
5. TDDの考え方が随所に取り入れられている
といったところです。


まず1.についてはRubyを入れた後、管理ツールである
Gemsを入れれば後はカンタンです。
2.についても事前に作成したテーブルを指定すれば、
対応するクラスを作成し、登録/更新/一覧/削除の一連
MVCモデルコードを自動生成してくれます。
3.についてはオブジェクトのプロパティを参照する
ライブラリを作成するなどといった場合オブジェクト
の型を動的に宣言できるのでDIと似たようなことがで
きます。
4.はActiveRecordを使ってのマッピングが可能です。
1テーブル1オブジェクトのシンプルな対応ではありま
すが、メソッドフックなどもできますし、後で挙げる
ようにテーブルのカラム追加を動的にプログラム側に
反映できたりします。昨今では SQL Injectionなどの
WEBアプリケーションにおける脆弱性回避が重要ですが
こうしたことにも自然と対処できるメリットは大きい
と考えています。Ruby on RailsでのActive Recordは
PoEAAで言うところの「Active Record」に分類される
パターンなので、ドメインモデルとRDB上のスキーム
の差異をマッピングで吸収させることが難しい場合も
あります。その点では「DataMapper」の方が有利では
あります。とはいえ シンプルなWEBアプリケーション
開発を対象とするという前提であれば、ややこしい
マッピング設定ファイルを書く手間がなくなることは
歓迎すべきことではないかと思います。
5.についてはデータベース自体も開発用/テスト用/
本番用と3種用いるようになっており、プロジェクト
を作成するステップの中にテストコードの作成や実行
が盛り込まれています。非常にアジャイルを意識した
フレームワークになっているように感じられます。


基本思想では「コーディングの重複を最小限にする」
XML設定ファイルは使わない」といったポイントが
あるようです。昨今のWEBアプリケーションはとかく
設定ファイル過多になりがちですが、Ruby on Rails
ではコーディング規約でフレームワークの利用規則を
定めるという方針を取っているようです。唯一DB関連
の設定でymlファイルを記述する必要がありますが、
それ以外はコーディングの範囲内でほぼカバーできて
おり、XML設定ファイルを記述する必要はありません。


チュートリアルについては下記に掲載されています。
http://www-06.ibm.com/jp/developerworks/linux/050708/j_l-rubyrails.html
これを読むと、「なんだ、結構コーディングしないと
いけないじゃない」と思ってしまうのですが、以下の
サイトを見に行くと結構インパクトがあります。


Rubyのインストールから始まって、ごく簡単なRails
アプリケーションを作成するまでを画面上で実演して
いるものです。後半ではテーブルにカラムを追加し、
それが動的にコードに自動反映される様子が確認でき
ます。
http://masuidrive.jp/rails/rails_app.html


まだ登場して間もない技術ですし、本格的で複雑なWEB
アプリケーションの開発に何処まで使えるかという点
についてはじっくり見定める必要がありそうですが、
Ruby on Railsの開発作法にしたがうとコーディング
スタイルも統一され、TDDも実践でき、結果としてア
ジャイルな開発工程が実践できる」ということはかなり
期待できるのではないかと感じています。