Ruby on Rails究極指南:第1回 Instant Railsで始めるWindows環境のRails (1/2)

世界中でRubyの人気が急上昇しているが、このきっかけの1つとなったのがWebアプリケーションフレームワークRuby on Rails(Rails)である。本連載では、このRailsの特徴や魅力を余すところなく伝えていく。


はじめに

 世界中でRubyの人気が急上昇しているが、このきっかけの1つとなったのがWebアプリケーションフレームワークRuby on Rails(Rails)である。そこで本連載では、Rails 1.0の特徴を紹介しながら、Windows/Mac OS X環境へ簡単に導入できるInstant RailsやLocomotiveによってRailsの魅力に迫っていきます。また、代表的なフレームワークCatalystとの比較、言語内DSLという概念など、Railsを理解していく上で重要となるポイントについても解説していく予定です。

 まず、今回と次回の2回では、Windows環境でRuby on Railsを簡単に利用するための方法を紹介します。Ruby on Railsの環境としてはInstant Railsを、統合開発環境としてはRadRailsを取り上げます。

Ruby on Railsとその特徴

 David Heinemeier Hansson氏によって作成されたRuby on Rails(以下Rails)は、Rubyで記述されたWebアプリケーションフレームワークです。2005年12月に1.0がリリースされたばかりの比較的新しいものですが、基本的な部分は従来からあるMVCフレームワーク*と共通しています(図1)。しかし、使いやすさという意味では、これまで使われてきたフレームワークとは一線を画す部分があったため、非常に大きな話題になりました。

図1 図1 MVCフレームワーク

 Railsの特徴としてよく挙げられるのは、「DRY」と「Convention Over Configuration」という点です。前者は「Don't Repeat yourself」を省略したもので、「同じことを幾つかの場所に書く」といった重複した記述を避けようという標語です。もともとは『達人プログラマー』という書籍*に書かれている言葉で、これ自体は珍しくない考え方ですが、Railsはその徹底ぶりが顕著です。

 もう1つの特徴である「Convention Over Configuration」は、Railsが広めた標語です。それまではConvention(規約)には重きが置かれず、むしろConfiguration(設定ファイル)の強力さと柔軟さを競っていたフレームワークでしたが、Railsは設定ファイル、特にXMLによる設定ファイルへの敵意を鮮明にしました。Railsのキャッチフレーズの1つである「No XML!」は、JavaのメジャーなフレームワークでXMLが多用されていたことに対するアンチテーゼでもあり、実際にRailsにはXMLの設定ファイルは1つもありません。数少ない設定ファイルでも、データベースの種類やアドレス、IDやパスワードを格納するファイルには、YAML*という非常に簡素なテキストによる記法が使われているほどです。

 設定ファイルの代わりにRailsが重視しているのは規約です。一般的にソフトウェア開発は、各アプリケーションの自由度が非常に高くなっています。ファイルの置き場所やクラス、変数の命名規則といったものを、言語やライブラリのレベルでかっちり規定しているものはほとんどありません。これらには「さまざまな環境でアプリケーションを動かせる」という利点がありますが、多くの場合、過剰な自由度になってしまいます。多人数で開発を行う場合や、開発者と保守担当者が異なる場合には、このような自由度の高さによって、アプリケーション全体での統一性がなくなり、どこに何があり何と何がどのように関係しているのかが分かりにくくなりがちです。こうしたことを避けるため、フレームワークは多くのものを決め打ちにしています。「あらかじめルールが決まっていれば、それ以上悩む必要がなくなる」というわけです。Railsはそれを極端に進めており、多くのものが暗黙のルールとして決められ、それに従う場合には何も書かないまま本番用コードとしてデプロイ*されかねません。

 特に有名なのは、データベースとモデルオブジェクトとのマッピング用ライブラリ*ActiveRecordで、単純なものは「クラス名の定義を書くだけ」という人を食ったようなコードが本当に使われます。例えば、

class Magazine < ActiveRecord::Base

end


のようなコードがあった場合、これだけでリスト1のようなものが実行可能になってしまいます。

mag = Magazine.new

mag.title = "オープンソースマガジン"

mag.publisher = "ソフトバンククリエイティブ"

mag.save

mag2 = Magazine.find_by_title("オープンソースマガジン")

puts "出版社:#{mag2}" ## => 「出版社:ソフトバンククリエイティブ」と表示される


リスト1 ActiveRecordによって実行可能なコード

 その一方で、ルールに従わない場合も簡潔なコードでルールとの違いを記述できるようになっています。おかげで、プログラムが非常にコンパクトになり、しかも設定ファイルがなくても困らないようになっているわけです。この「簡潔なコード」も、Rubyというプログラミング言語の柔軟な構文とセマンティクス*により、単に短いだけではなく、非常に分かりやすいものになっています。

 このような特徴によって、Railsは「それまでのWebアプリケーションフレームワークよりも高い生産性を持つ」と大きな注目を集めているのです。

このページで出てきた専門用語

MVCフレームワーク

MVCはModel、View、Controllerの頭文字で、システムの中でビジネスロジックを担当するモデルと、表示や入出力を担当するビュー、モデルやビューをコントロールするコントローラーで構成されたGUI設計に用いられる概念。詳細は、以下のURLなどを参照。

http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html

http://www.hyuki.com/yukiwiki/wiki.cgi?MVC

『達人プログラマー』という書籍

David Thomas/Andy Hunt著、村上雅章訳、『達人プログラマー』、ピアソンエデュケーション発行、ISBN4-89471-274-1

YAML

YAML Ain't Markup Languageの略で、「読みやすい」、「書きやすい」、「分かりやすい」という特徴を持った、構造化されたデータを表現するためのフォーマット。

http://www.yaml.org/

デプロイ

開発したWebアプリケーションを利用可能な状態にすること。

データベスとモデルオブジェクトとのマッピング用ライブラリ

このマッピング用ライブラリをO/Rマッパーと呼ぶ。

セマンティクス

意味のこと。シンタックスと対になる用語。


       1|2 次のページへ

Copyright© 2010 ITmedia, Inc. All Rights Reserved.




キャリアアップ



エンタープライズ・ピックアップ

news004.jpg 世界で勝つ 強い日本企業のつくり方:利用契約の検討――グローバルクラウドで失敗しないために(前編)
2010年以降、クラウドサービスの利用がさらに加速する。サービスを利用する企業はプロバイダーのデータセンターに預けた自社情報を保護するために、法的な要素を理解しておかなければならない。企業が注意を払うべき法的な検討事項を整理する。

news001.jpg IT投資の新方程式:「Twitter使ってます」――現役MS社員が“社員力”を語る(前編)
マイクロソフトが掲げるプロモーションメッセージ「社員にチカラを。ITで企業力を。(以下、BIEB)」からは、ITで社員の生産性を向上することが業績の拡大につながる、といったニュアンスを感じる。そこで気になるのが「じゃあ、マイクロソフトの社員自身はどうなのよ?」ということ。3人の現役MS社員により実態が明らかになる……?

news010.jpg 産業構造を変えるか:「住宅クラウド」の衝撃
住宅都市工学研究所が進める「住宅クラウド」は、クラウドが企業のIT領域にとどまらず、ビジネスのやり方自体を変える可能性を示している。

news010.jpg オルタナティブな生き方 栗原進さん:ネットでリアルを楽しくしたい
SE出身の企業広報マンでありながら、趣味は落語で憧れの人はインディ・ジョーンズとアナログ全開の栗原さんに、ブログを書く理由やネットからはじまるコミュニケーションについて伺った。

news001.jpg 最強最速アルゴリズマー養成講座:トップクラスだけが知る「このアルゴリズムがすごい」――「探索」基礎最速マスター
プログラミングにおける重要な概念である「探索」を最速でマスターするために、今回は少し応用となる探索手法などを紹介しながら、その実践力を育成します。問題をグラフとして表現し、効率よく探索する方法をぜひ日常に生かしてみましょう。