はじめに

MVCアーキテクチャの全体像をイメージできるようになりましたか?
MVCアーキテクチャで中心的な役割を果たすのは「コントローラー」です。
コントローラーはブラウザからのリクエストを受け取り、ビューやモデルと連携して結果をブラウザに返します。
このため、まずはコントローラーの動作を理解するところから始めるべきでしょう。
この記事では、Ruby初心者の方向けに、Ruby on Railsのコントローラーの扱い方についてお伝えしていきます。
MVCアーキテクチャの各要素をひとつずつ理解していきましょう。

コントローラーの役割

ウェブアプリケーションは、ブラウザを介して利用します。
ブラウザは、ウェブアプリのURLにアクセスし、そこでURLに対応したコントローラーが呼び出されることになります。
コントローラーは、モデル(データ)を取得し、ビュー(ページ)と組み合わせてブラウザに結果を返します。
これが、基本的な一連の流れです。
まずは、学習のために新しいプロジェクトを作成しましょう。

新しいプロジェクトを作成する

ここでは、例として学生名簿を管理するウェブアプリを作ります。
前回の記事でも取り上げましたが、Ruby on Railsでは”railsコマンド”を使ってプロジェクトテンプレートを作成できます。
任意のディレクトリで、次のコマンドを入力して下さい。

rails new students_list

このコマンドでは、プロジェクト名に”students_list”を指定して、新しいプロジェクトを作成しています。
たくさんのディレクトリとファイルが生成されましたね。
この時点で、すでにウェブアプリとして実行可能な状態になっています。
次のコマンドを入力して、うまく動作するか確認してみましょう。

cd students_list
rails server

このコマンドでは、プロジェクトディレクトリに移動してRailsに組み込まれている開発用のウェブサーバーを起動しています。
コマンドによって表示されるURL(例:http://localhost:3000/)にブラウザからアクセスしてみましょう。
正しくデフォルトページが表示されればOKです。

スキャフォールディングを利用する

プロジェクトを作成できたところで、コントローラーの作成に入っていきましょう。
ここでは、手作業でコントローラーファイルを作成するのではなく、「スキャフォールディング(足場)」機能を使って、コントローラーファイルを自動生成します。
次のコマンドを入力して下さい。

rails generate scaffold Student no:string name:string age:int

このコマンドでは、モデルとして”Student”という名前を指定してスキャフォールディングを実行しています。
同時に3つの属性を指定していますが、こちらはモデルの話になるので次回の連載にて説明します。
このコマンドひとつで、関連するコントローラー・モデル・ビューのファイルが自動生成されました。
”app”ディレクトリ内の”controllers”、”models”、”views”ディレクトリを確認してみましょう。
いくつかのファイルが追加されていることが確認できますね。

生成されたコントローラーを見てみよう

それでは、生成されたコントローラーファイルを見てみましょう。
”app/controllers”ディレクトリにある” students_controller.rb”ファイルを開いて下さい。
Railsのコントローラーは、「ApplicationController」のサブクラスとして定義します。
クラスとして、” StudentsController”が定義されていますね。
そして、その中にいくつかのメソッドが定義されていることがわかります。
これは「アクション」と呼ばれるものです。
アクションは、特定のURLとHTTPメソッド(GET/POST/PUT/DELETEなど)がリクエストされたときに実行されるメソッドです。
ファイル中に、コメントとしてURLの例が記述されていますので、確認してみましょう。
既定では、コントローラー名がURLに含まれます。
これはこのまま使うこともできますし、”config”ディレクトリ内の” routes.rb”ファイルを編集することで変更することも可能です。
次回は、このコントローラーで使用されているモデルについて見ていきましょう。

まとめ

Ruby on Railsのコントローラーについて理解できましたか?
コントローラーは、MVCアーキテクチャで中心的役割を果たします。
次の要素に進む前に、しっかり理解しておきましょう。
また、”railsコマンド”を使ってスキャフォールディングを行う方法を学びました。
Railsでは、コマンドを利用して多くのファイルを自動生成できるので、積極的に利用してみましょう。
次回は、MVCアーキテクチャのモデルについて説明します。