Ruby on railesのMVCとモデルの役割を知ろう!

プログラム

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

MVCを学ぶとモデルという言葉が出てきて、いったい何をするものなのって疑問に思いますよね。

僕も最初どういったものなのか全然わからなかったです。

そこで、ここではモデルについて分かりやすく説明していきます。

モデルって何?

そもそもMVCは、モデル、ビュー、コントローラーの3つの機能があります。

ビューとコントローラーは別の記事で説明しているので、下記にリンクを貼ってるのでそちらを見てください。

さて、モデルは簡単に言うとデータベースとのやり取りをする機能です。

ユーザーからのリクエストを受けて、それをコントローラーが処理して、必要なデータをコントローラーからモデルへと指示がきます。

コントローラーから指示を受けて、モデルはデータベースから必要なデータを取得して渡すことが基本的な役割です。

イメージとして分かりやすいのは、モデルはデータベースという倉庫を管理している人です。

そもそもデータベースって何?

モデルを学ぶと必ずデータベースという言葉が出てきます。

データベースの役割は重要なので、まずデータベースから説明していきます。

データベースとは、特定の条件に当てはまるデータを複数集めて、その集めたデータを使いやすいように整理した情報の集合体です。

上の図はイメージです。

データベースには、テーブルと呼ばれている小部屋が沢山あって、その小部屋にデータが収納されています。

小部屋は、それぞれジャンル分けされている箱があって、その箱がカラムと呼ばれている箱と、箱の中身がレコードと呼ばれているとイメージしてください。

モデルは指示を受けたときに、この箱からデータを取得しています

モデルの役割

データベースは、どういうものなのか分かりましたか?

ここからは、モデルの具体的な役割について説明していきます。

モデルは、コントローラーから指示を受けて、必要なデータをデータベースから取得して、そのデータをコントローラーへ渡すというのは説明しました。

もっと深堀りしていくと、モデルはデータベースからデータを取得する以外にも役割があります。

データの更新や削除、データの新規作成もモデルの役割です。

データベースのテーブル毎にモデルがあります。ユーザーからのリクエストによって、データを書き込んだり、書き換えたりできるのはモデルだけです。

モデルの処理について

ここからは、モデルの処理について簡単に説明していきます。

モデルには、ActiveRecordというのがあります。

ActiveRecordは、O/Rマッピングの機能を提供するライブラリです。

O/Rマッピングは、データベースとオブジェクト指向プログラミング言語の間の非互換なデータを変換する方法で、ActiveRecordでは、テーブルに対応するモデル毎にアプリケーションのデータとロジックを実装していきます。

データの永続化に関する処理の多くは、ActiveRecordが担当してくれるので、単純なプログラムのコードを書く量はわずかで済みます。

基本的にプログラムがモデルに追加することが多いコードとしては、クラスの値の検証や他モデルとの連携があります。

まとめ

  • コントローラーから指示を受けて、モデルはデータベースとのやり取りをする
  • モデルの役割は、データの取得や更新、削除、新規作成など

今回は、MVCの機能の1つであるモデルについて説明しました。

モデルはどういう役割をしているのか分かりましたか?

モデルとデータベースの関係を知ることで、データの流れが分かることができます。