連載
» 2011年02月23日 00時00分 公開

Ruby on Rails3で学ぶWeb開発のキホン(1):MVCとRailsの基本構成を学ぼう (2/3)

[大場寧子, 河野十行, 鳥井雪,株式会社万葉]

MVCの効用

 MVCはもともと、Smalltalkにおいて、GUIのアプリケーションを作るために考案されました。

 ビューは、もっともユーザーに近い部分を担当するので、さまざまなバリエーションや変更が想定されます。デバイス(スマートフォンかPCか携帯か)、ユーザーの属性(年齢、性別、言語など)によって、求められるものが異なるからです。Webアプリケーションにおいても、ユーザーの性質やデバイスによって、求められるレスポンスの内容は大きく変わってきます。

 一方、モデルはアプリケーションの根幹になるデータ構造とロジックを受け持つので、ビューのようにデバイスやユーザーによる影響は受けにくいのですが、代わりに、データの種類が増えたり、業務の流れが変わったりした場合には変更の必要が生じます。

 また、コントローラーをモデルから分離することで、ユーザーとのインターフェイスの種類(例えばWeb)に依存した処理をモデルから排除し、モデルの再利用性を高めることができます。

 このように、MVCでは変更の生じる背景や再利用のためのスコープが異なる要素を分離することで、各所の変更の影響を最小限に抑え、メンテナンスをしやすくすることができるのです。

Railsを使うために必要な環境

 Railsアプリケーションを開発するには、Ruby、RubyGems、Railsが必要です。もしも複数のバージョンのRubyで開発を行うのであれば、RVMも入れるとよいでしょう(注:RVMはWindowsでは使えません)。RubyとRubyGemsのインストール方法は、お使いのOSによって異なりますが、本記事では割愛します。RVMについてはサイト(http://rvm.beginrescueend.com/)を参照してください。

 Railsをインストールするには、gemのコマンドを次のように入力します。

> gem i rails

 こうすることで、最新の(リリース版の)Railsが依存パッケージごとインストールされます。

Railsアプリケーションの構造

 Railsアプリケーションを作るには、railsコマンドを使ってアプリケーションの枠組みを作成します。例えば store という名前のアプリケーションを作るには、アプリケーションディレクトリを作りたい親ディレクトリから、次のコマンドを実行します。

> rails new store

 すると、次のようなログがずらりと出力され、親ディレクトリの下に store というディレクトリが作られます。このディレクトリの下にstoreアプリケーションの構成ファイルが格納されます。

> rails new store
      create
      create  README
      create  Rakefile
      create  config.ru
      create  .gitignore
      create  Gemfile
      create  app
      create  app/controllers/application_controller.rb
      ...

 Railsでは、アプリケーションの構成ファイルをどのように整理するかの標準的なスタイルが決められています。これは、Railsの重要な特徴のひとつです。これにより、Railsを知っている技術者は、自分が作ったRailsアプリケーションでなくても、あるいは初めて参加するプロジェクトであっても、どこにどのようなファイルがあるかを簡単に推測することができ、迷わずに開発やメンテナンスを行うことができるのです。また、初めてプロジェクトを立ち上げる際にも、ファイルの格納場所のポリシーをいちいち決めて周知するといった手間をかけずに済みます。

 それでは、Railsにおいて各種のファイルがどのように整理されるかを見ていきましょう。

 作成したばかりのアプリケーションディレクトリ以下は、次のようなディレクトリ構成になっています。

store            … アプリケーションのルートディレクトリ
  app            … MVCに関わるアプリケーションの中心的なコード
    controllers  … コントローラークラス
    helpers      … ヘルパーモジュール(ビュー用のヘルパーメソッド)
    mailers      … メール用のコントローラー
    models       … モデルクラス
    views        … テンプレート類
      layouts    … テンプレートに適用するレイアウト
  config         … 設定ファイル類
    environments … 開発、テスト、本番運用といった環境ごとの設定
    initializers … アプリケーション起動時に実行したいファイル
    locales      … 国際化に関するリソース
  db             … データベースに関するファイル
  doc            … rdocなどのドキュメント
  lib            … アプリケーションが使うライブラリコード全般
  log            … アプリケーションが出力するログ
  public         … Webの静的なコンテンツ
  script         … ユーティリティースクリプト
  test           … Railsのデフォルトの自動テストに関するファイル
  tmp            … 一時ファイル
  vendor         … アプリケーション外部に由来するコード
    plugin       … Railsプラグイン
Railsのディレクトリ構成と、各ディレクトリに含まれるもの

 特に重要なのはapp以下の controllers、models、viewsで、この中には、あらかじめ次のファイルが用意されます。

app/controllers/application_controller.rb
 アプリケーションのWebコントローラーのスーパークラスであるApplicationControllerが定義されています。基本的には、アプリケーション内すべてのWebコントローラーがこのクラスを継承します。

app/helpers/application_helper.rb
 ApplicationControllerに対応するビュー用のヘルパーモジュールです。すべてのビューで使うような汎用的なヘルパーメソッドを追加する場所として利用できます。

app/views/layouts/application.html.erb
 ApplicationControllerに対応するレイアウトファイルで、いわばデフォルトのレイアウトを表します。

 Railsを使った開発では、主にこの3つのディレクトリの下に、前述のMVCにのっとって、新たなクラスやテンプレートを追加していきます。なお、appのほかにアプリケーションのコードを格納する場所としては、libとconfig/initializersがあります。前者は汎用的なコード置き場として位置づけられ、後者はアプリケーション起動時に必ず実行したいコードの置き場として使われます。

Copyright © ITmedia, Inc. All Rights Reserved.

編集部からのお知らせ

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。