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の自動生成機能を用いて作成できます。
詳しくは続いてのセクション「アプリケーションの土台作成」を御覧ください。