目次


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

Comments

はじめに

世界中で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. MVCフレームワーク
図1. MVCフレームワーク
図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のようなものが実行可能になってしまいます。

リスト1 ActiveRecordによって実行可能なコード
mag = Magazine.new
mag.title = "オープンソースマガジン"
mag.publisher = "ソフトバンククリエイティブ"
mag.save
mag2 = Magazine.find_by_title("オープンソースマガジン")
puts "出版社:#{mag2}" ## => 「出版社:ソフトバンククリエイティブ」と表示される

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

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

Windows環境でのRails

ここでは、「MySQLなどのインストール作業を考えたくない」というライトなWindowsユーザーのために、Windows環境でRailsを簡単に試せるアプリケーションInstant Railsを紹介します。

Instant Railsは、表1のソフトウェア*をまとめて導入してくれる便利なパッケージです。現在はWindows用しかありませんが、将来的にはLinuxや*BSD、Mac OS X用のパッケージもリリースされる予定のようです。

表1. Instant Railsに含まれるソフトウェア
表1. Instant Railsに含まれるソフトウェア
表1. Instant Railsに含まれるソフトウェア

簡単パッケージInstant Rails

Instant Railsを導入する際は、前述のサイトからリンクをたどって最新版アーカイブを取得します。2007年2月末時点での最新版は1.5(InstantRails-1.5-win.zip)です。

実際の導入作業は取得したファイルを適当なフォルダに展開するだけですが、ここで注意すべきは展開場所のフォルダ名です。展開フォルダ名に空白文字が入っていると正しく動作しないので、例えば「C:\InstantRails」などに展開する必要があります。なお、Instant Railsは頻繁にバージョンアップを繰り返しているので、わたしはバージョンの区別のために「InstantRails-1.5」というバージョン番号付きのフォルダ名にしています(図2)。

図2. 取得ファイルを展開したところ
図2. 取得ファイルを展開したところ

メインウインドウでのサーバソフトウェアの管理

それでは、実際にRailsを使ってみましょう。

InstantRails.exeをダブルクリックすると、「Instant Railsのディレクトリが変更されたので、設定ファイルを再生成しますか?」という意味の質問が表示されます。ここで[OK]ボタンをクリックすると、Apache HTTP Server(以下Apache)とMySQLなどの設定ファイルが自動的に書き換えられてメインウインドウが表示されます(図3)。ApacheやMySQLの停止/再起動などは、メインウインドウの[Apache]ボタンや[MySQL]ボタンをクリックして表示されるメニューの中から行います。

図3. Instant Railsの起動
図3. Instant Railsの起動
図3. Instant Railsの起動

Railsアプリケーションの実行

Instant Railsには、実行可能なRailsアプリケーションのサンプルが2つ用意されています。その1つ、Cookbookを実行してみましょう。

Webサーバとして何を利用するか

Instant RailsでRailsアプリケーションを実行するには、以下の2つの方法があります。

  • Mongrelを使って実行する
  • Apacheを使って実行する

Mongrelは、Instant Rails 1.1から追加されたWebサーバツールキットで、それ以前はWEBrickが用いられていました。前者がこのMongrelでRailsアプリケーションを実行する方法です。後者では、ApacheのWindows版でRailsアプリケーションを実行します。さらに、Apacheを利用する場合、一般的にはCGIを使うものとmod_rubyを使うもの、FastCGIを使うもの、SCGIを使うものなど複数の方法がありますが、Instant Railsの標準ではSCGIを使うように設定*されています。

なお、Cookbookは、development環境もproduction環境もtest環境も*、すべて同じデータベースで動くようになっています。テスト環境ではテーブルの中身を作ったり、捨てたりしながら動かすものなので、これと開発環境や本番用の環境が一緒になっているのは少し問題がありますが、テストということで気にせず実行してみましょう。

Mongrelを利用する場合

メインウインドウの左上にある「I」ボタンをクリック*すると、メインメニューが表示されます。この中から[Rails Applications]-[Manage Rails Applications...]を選択すれば、現在登録されているRailsアプリケーションが表示されます(図4)。

図4. Mongrelメインメニュー
図4. Mongrelメインメニュー
図4. Mongrelメインメニュー

あらかじめ登録されているのは、簡単なサンプルであるCookbookと、blogアプリケーションであるtypo*です。CookbookをMongrelで実行するには、Rails Applications画面で「cookbook」にチェックを入れ、[Start with Mongrel]ボタンをクリックします。すると、ruby.exeのコンソールウインドウが開かれ、Mongrelによるサーバの実行ログが表示されます(図5)。これによって、選択したRailsアプリケーションがMongrelで起動されたのが確認できるはずです。

図5. MongrelによるRailsアプリケーションの起動
図5. MongrelによるRailsアプリケーションの起動
図5. MongrelによるRailsアプリケーションの起動

Webブラウザで 「http://localhost:3000/」 にアクセスすれば、リダイレクトされた後、Cookbookのトップページが表示されます(図6)。

図6. Cookbookのトップページ
図6. Cookbookのトップページ
図6. Cookbookのトップページ
Apache(SCGI)を利用する場合

せっかくなので、Apacheによる実行も試してみましょう。

ApacheではVirtualHostでアプリケーションとディレクトリの結びつきを設定しているため、アクセスする際にドメイン名を指定する必要があります。そこで、たとえlocalhostへのアクセスであっても、特定の名前でアクセスできるようにしなければなりません。Cookbookでは「www.mycookbook.com」というドメイン名を指定することになっているので、メインメニューから[Configure]-「Window's Hosts File」を選択して、

127.0.0.1www.mycookbook.com

という行を追加します。すると、「www.mycookbook.com」というホスト名*でlocalhost(127.0.0.1)にアクセスできるようになります。Webブラウザからは、先ほどと同様に「http://www.mycookbook.com/」へアクセスするとCookbookの画面が表示されるはずです。

次回は

さて、いくらRailsが「less code」をキャッチコピーに使っているとはいえ、まったくコードを書かなければ何も起きません。実際にアプリケーションを作るには、コードを書くための環境が必要です。次回は、Rails専用の統合開発環境である「RadRails」を取り上げて、導入から使用法までを解説します。

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

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のソフトウェア

PHPは、MySQL管理ツールphpMyAdminを動作させるためだけにインストールされます。

SCGIを使うように設定

CGIはよほどの制限がある場合以外は使われないのと、mod_ruby(ApacheのRubyモジュール)は標準でメモリが消費されることもあり、一般的にはCGIの起動オーバーヘッドを回避できるFastCGIが好まれています。SCGIは比較的新しい技術で、FastCGIをよりシンプルにしたものです。

development環境もproduction環境もtest環境も

Railsには、アプリケーション実行時の環境として、development、production、testという3つが想定されています。developmentは開発環境で、productionは本番稼働用の環境、testはテスト用の環境です。それぞれ、環境変数RAILS_ENVで指定します(デフォルトはdevelopment)。

「I」ボタンをクリック

Altキーを押すことでも同様にメインメニューが表示されます。

typo

Railsの公式blogでも使われている本格的なツール。導入方法など詳細については今後解説します。

「www.mycookbook.com」というホスト名

このホスト名は実在するため、hostsファイルの設定を間違えると、そちらのサイトへアクセスするので注意が必要です。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Web development, Open source
ArticleID=249446
ArticleTitle=Ruby on Rails究極指南: 第1回 Instant Railsで始めるWindows環境のRails
publish-date=05112007