第1回 Instant Railsで始めるWindows環境のRailsRuby on Rails究極指南(1/2 ページ)

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

» 2007年03月05日 07時00分 公開
[高橋征義,ITmedia]

はじめに

 世界中で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 © ITmedia, Inc. All Rights Reserved.

注目のテーマ