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

» 2011年02月23日 00時00分 公開
[大場寧子, 河野十行, 鳥井雪株式会社万葉]

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.

スポンサーからのお知らせPR

Coding Edge 鬮ォ�ェ陋滂ソス�ス�コ闕オ譁溷クキ�ケ譎「�ス�ウ驛「�ァ�ス�ュ驛「譎「�ス�ウ驛「�ァ�ス�ー

髫エ蟷「�ス�ャ髫エ魃会スス�・髫エ蟶キ�」�ッ闖ォ�」

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

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

メールマガジン登録

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