MVCはもともと、Smalltalkにおいて、GUIのアプリケーションを作るために考案されました。
ビューは、もっともユーザーに近い部分を担当するので、さまざまなバリエーションや変更が想定されます。デバイス(スマートフォンかPCか携帯か)、ユーザーの属性(年齢、性別、言語など)によって、求められるものが異なるからです。Webアプリケーションにおいても、ユーザーの性質やデバイスによって、求められるレスポンスの内容は大きく変わってきます。
一方、モデルはアプリケーションの根幹になるデータ構造とロジックを受け持つので、ビューのようにデバイスやユーザーによる影響は受けにくいのですが、代わりに、データの種類が増えたり、業務の流れが変わったりした場合には変更の必要が生じます。
また、コントローラーをモデルから分離することで、ユーザーとのインターフェイスの種類(例えばWeb)に依存した処理をモデルから排除し、モデルの再利用性を高めることができます。
このように、MVCでは変更の生じる背景や再利用のためのスコープが異なる要素を分離することで、各所の変更の影響を最小限に抑え、メンテナンスをしやすくすることができるのです。
Railsアプリケーションを開発するには、Ruby、RubyGems、Railsが必要です。もしも複数のバージョンのRubyで開発を行うのであれば、RVMも入れるとよいでしょう(注:RVMはWindowsでは使えません)。RubyとRubyGemsのインストール方法は、お使いのOSによって異なりますが、本記事では割愛します。RVMについてはサイト(http://rvm.beginrescueend.com/)を参照してください。
Railsをインストールするには、gemのコマンドを次のように入力します。
> gem i 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プラグイン
特に重要なのは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.