Ruby on railesのMVCとモデルの役割を知ろう!
Ruby on railesでは、MVCというアーキテクチャが出てきます。
MVCを学ぶとモデルという言葉が出てきて、いったい何をするものなのって疑問に思いますよね。
僕も最初どういったものなのか全然わからなかったです。
そこで、ここではモデルについて分かりやすく説明していきます。
もくじ
モデルって何?
そもそもMVCは、モデル、ビュー、コントローラーの3つの機能があります。
ビューとコントローラーは別の記事で説明しているので、下記にリンクを貼ってるのでそちらを見てください。
さて、モデルは簡単に言うとデータベースとのやり取りをする機能です。
ユーザーからのリクエストを受けて、それをコントローラーが処理して、必要なデータをコントローラーからモデルへと指示がきます。
コントローラーから指示を受けて、モデルはデータベースから必要なデータを取得して渡すことが基本的な役割です。
イメージとして分かりやすいのは、モデルはデータベースという倉庫を管理している人です。
そもそもデータベースって何?
モデルを学ぶと必ずデータベースという言葉が出てきます。
データベースの役割は重要なので、まずデータベースから説明していきます。
データベースとは、特定の条件に当てはまるデータを複数集めて、その集めたデータを使いやすいように整理した情報の集合体です。
上の図はイメージです。
データベースには、テーブルと呼ばれている小部屋が沢山あって、その小部屋にデータが収納されています。
小部屋は、それぞれジャンル分けされている箱があって、その箱がカラムと呼ばれている箱と、箱の中身がレコードと呼ばれているとイメージしてください。
モデルは指示を受けたときに、この箱からデータを取得しています。
モデルの役割
データベースは、どういうものなのか分かりましたか?
ここからは、モデルの具体的な役割について説明していきます。
モデルは、コントローラーから指示を受けて、必要なデータをデータベースから取得して、そのデータをコントローラーへ渡すというのは説明しました。
もっと深堀りしていくと、モデルはデータベースからデータを取得する以外にも役割があります。
データの更新や削除、データの新規作成もモデルの役割です。
データベースのテーブル毎にモデルがあります。ユーザーからのリクエストによって、データを書き込んだり、書き換えたりできるのはモデルだけです。
モデルの処理について
ここからは、モデルの処理について簡単に説明していきます。
モデルには、ActiveRecordというのがあります。
ActiveRecordは、O/Rマッピングの機能を提供するライブラリです。
O/Rマッピングは、データベースとオブジェクト指向プログラミング言語の間の非互換なデータを変換する方法で、ActiveRecordでは、テーブルに対応するモデル毎にアプリケーションのデータとロジックを実装していきます。
データの永続化に関する処理の多くは、ActiveRecordが担当してくれるので、単純なプログラムのコードを書く量はわずかで済みます。
基本的にプログラムがモデルに追加することが多いコードとしては、クラスの値の検証や他モデルとの連携があります。
まとめ
- コントローラーから指示を受けて、モデルはデータベースとのやり取りをする
- モデルの役割は、データの取得や更新、削除、新規作成など
今回は、MVCの機能の1つであるモデルについて説明しました。
モデルはどういう役割をしているのか分かりましたか?
モデルとデータベースの関係を知ることで、データの流れが分かることができます。