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

チュートリアルをすすめる前に、Railsを用いたアプリケーションの構成について簡単に紹介します。

 

MVCアーキテクチャ

RailsはMVC(Model - View - Controller)アーキテクチャを採用しており、アプリケーションを構成するプログラムを役割に応じてModel(モデル)、View(ビュー)、Controller(コントローラー)と呼ばれるコンポーネントに分けて開発します。各コンポーネントの役割について以下に記します。

 

Model(モデル)

Modelは、アプリケーションが扱うデータと、データを操作するための機能を実装するためのコンポーネントです。アプリケーションが扱うデータをリレーショナルデータベースで管理する場合は、テーブルごとにモデルクラスを作成して、テーブルに対する操作やテーブル間のアソシエーション、ビジネスロジックを実装します。

 

View(ビュー)

Viewは、アプリケーションのユーザーインターフェースを実装するためのコンポーネントです。HTMLを用いたWeb画面やJSONを用いたRSSフィードなど多用なフォーマットのインターフェースを実装できます。

 

Controller(コントローラー)

Controllerは、アプリケーション機能の中核を担う処理を実装するためのコンポーネントです。アプリケーションが受け取った要求をModel(モデル)に実装されたビジネスロジックで処理し、View(ビュー)を用いて結果を返却するといった機能を実装します。

 

 

Railsを構成するgemパッケージ

Railsは、以下に記す複数のgemパッケージで構成されています。

  • 各gemパッケージの詳細は、「Ruby on Rails Guides: Getting Started with Rails」などを御覧ください。

  • ※各gemパッケージが依存するgemパッケージは以下では省略します。


  • Action Pack
  • RailsのMVCアーキテクチャを構成するView(ビュー)とController(コントローラー)のための機能と、Webアプリケーションへの要求に対するプログラムのディスパッチやルーティングに関連する機能を提供します。Action Packは、さらに以下のパッケージで構成されています。

 ・Action Controller
 ・Action Dispatch
 ・Action View

  • Active Model
  • RailsのMVCアーキテクチャを構成するModel(モデル)のための機能のうち、アプリケーションでデータを扱うための検証機能やコールバック機能などを提供します。

  •  

  • Active Record
  • RailsのMVCアーキテクチャを構成するModel(モデル)のための機能のうち、リレーショナルデータベースを操作するための機能や、テーブル間のアソシエーションのための機能を提供します。

  •  

  • Active Resource
  • RESTfulなWebサービスを構成したり、外部のWebサービスと連携するための機能を提供します。

  •  

  • Active Support
  • アプリケーション中で使用されるRuby標準ライブラリの拡張機能を提供します。
  •  

    • Action Mailer
    • アプリケーションからのメール送受信に関連する機能を提供します。

    •  

  • Railties
  • アプリケーションのコア機能として各パッケージが提供する機能を連携させるための機能を提供します。

 

 

アプリケーションのディレクトリ構造

Railsを用いたアプリケーションのディレクトリ構造を以下に示します。

 ディレクトリツリー  目的
 RAILS_ROOT
 アプリケーションのルートディレクトリ(任意の名前が指定できます。) 
 ├ app
   Webアプリケーションとしての機能を実現するプログラムを格納する  
 │ ├ controllers       コントローラクラスを格納する
 │ ├ helpers      ヘルパーを格納する
 │ ├ mailers      ActionMailerの実装クラスを格納する
 │ ├ models      モデルクラスを格納する
 │ └ views      ビューファイルを格納する
 ├ config    アプリケーションの設定ファイルを格納する
 ├ db    スキーマ情報、マイグレーションファイルなどを格納する
 ├ doc    RDocなどのドキュメントを格納する
 ├ lib    アプリケーション固有のライブラリを格納する
 ├ log    ログファイルを格納する
 ├ public    公開用ディレクトリ(静的なファイルなどを格納する)
 ├ script    アプリケーションの起動スクリプトなどを格納する
 ├ test    テストコードを格納する
 ├ tmp    一時的なファイルを格納する
 ├ vendoer    Gemパッケージなどを格納する

 

これらのディレクトリ構造と必要最低限のファイルは、Generatorと呼ばれるRailsの自動生成機能を用いて作成できます。

詳しくは続いてのセクション「アプリケーションの土台作成」を御覧ください。