Ruby on railsのMVCとコントローラーの役割って何?

プログラム

Ruby on railesで学んでいくと必ず出てくるコントローラーという単語。

コントローラーと言われて、いったい何をコントロールするのってなりますよね。

ここでは、コントローラーというものについて理解していきましょう。

そもそもコントローラーって何?

そもそもRuby on railesでコントーローラーって何をするのと疑問に思いますよね。

そのものズバリ、コントローラーはビューとモデルを操作しているものです。

Ruby on railesでは、MVCというアーキテクチャがあります。

そのアーキテクチャは、機能毎に分けられていて、モデル、ビュー、コントローラーの3つがあり、モデルとビューについては別の記事で説明してるので、そちらを参照してください。

モデルとビューについては下記を見てください。

コントローラーはビューとモデルの仲介をしていて、ユーザーからのリクエストに対してモデルとビューの橋渡し役をしています。

イメージしやすいのは、コントローラーは上司的な役割で部下に仕事を振って統括する立場で、モデルやビューは部下的な役割でコントローラーから振られた仕事をこなしてくという感じで、モデルやビューに指示を出して意思決定をしています

コントローラーの役割

コントローラーについて、どういったものなのかある程度は分かったと思います。

ここでは、より具体的な役割について説明していきます。

前の項目で、コントローラーはモデルやビューの橋渡し役というのを説明しました。

具体的に説明すると、コントローラーは複数あり各コントローラーには複数のアクションが定義されていて、それぞれのアクションを選択して実行します。

複数あるコントローラーを選択するのは、ルーティングという機能があります。

ルーティングという機能は、ユーザーがブラウザを経由した時のURLとコントローラーのアクションを結びつける機能です。

どいうことかというと、ユーザーからのリクエストはURLとして受け取ります。そのURLに対して、複数あるコントローラーに含まれているアクションを選択することです。

コントローラーの一連の流れを説明すると、ユーザーからのリクエストを受けて、そのリクエストをルーティングを介してから、どのコントローラーに含まれているアクションを動かすか選びます。

上の図を見ながらコントローラーについて説明します。

コントローラーのアクションは、モデルが適切な動作をすることでデータベースから欲しいデータを選択してモデルにデータを渡します。

モデルはそのデータをコントローラーへ渡します。

そして、その取得したデータをどの組み合わせでビューに渡すのかを選択してからデータを渡すのがコントローラーの一連の流れです。

まとめると下記のようになります。

  • ユーザーからのリクエストを受けて、コントローラーはモデルに対して適切な動作を求めてからデータを取得する
  • ビューに対して、どの組み合わせで利用するのかを決めてからデータを渡す

コントローラーの処理について

コントローラーの役割は理解できましたか?

ここからは、コントローラーの処理について説明していきます。

コントローラーで処理を実装するのがアクションメソッドと呼ばれるメソッドが処理から実行を担当していて、このアクションメソッドは、ユーザーからのリクエストに対して具体的な処理を決定してから実行します。

コントローラーには、一つ以上はこのアクションを含んでいて、それぞれ関連するアクションをまとめてあるのが、コントローラーと呼ばれているのです

基本的な役割は、ユーザーからのリクエスト情報の処理やモデルの呼び出し、ビューの設定などいろいろあります。

まとめ

  • コントローラーは、ビューとモデルの制御をしている。
  • モデルとやり取りすることでデータを取得する。
  • 取得したデータを、どのビューに渡すかを選択してから渡す。

今回は、MVCの機能の1つであるコントローラーについて説明しました。

コントローラーは、どういったものをコントロールするのか分かりましたか?

コントローラーを知ることで、モデルやビューについても理解が深まるっていくので、よりRuby on railesを知ることができます。