はじめに
Ruby on Rails チュートリアルを実施しています。
チュートリアル第2章の学びとして、MVCモデルとRESTアーキテクチャを自分なりに解釈し、まとめました。
MVCモデル
MVCとは
MVCとは、ソフトウェアの設計モデルの一つで、機能を「Model」(モデル)、「View」(ビュー)、「Controller」(コントローラ)の三つの役割に分離して実装し、それらが連携して処理を進める方式。
- IT用語辞典 e-Words より引用
多くのWebアプリケーション設計に用いられている手法です。
Ruby on RailsでもMVCモデルをベースとした作りになっています。
Ruby on RailsにおけるMVCの役割
● Model
Controllerの命令を受け、データに関する処理を行い、結果をControllerへ返却します。
処理はデータベースとのやり取り、データ加工、データチェック等です。
● View
Controllerの命令を受け、ブラウザに表示するHTMLを生成し、Controllerへ返却します。
表示に必要な情報はControllerからもらいます。
● Controller
ModelとViewへ処理の命令を行い、リクエストを受けた結果をレスポンスします。
※ ルーティングについて
ブラウザからのリクエストを受けたら、ルーティングにより処理対象のControllerへ振り分けられます。
処理の流れを図解にすると以下のようなイメージになります。
RESTアーキテクチャ
RESTとは
RESTとは、分散システムにおいて複数のソフトウェアを連携させるのに適した設計原則の一つ。2000年にロイ・フィールディング(Roy Fielding)氏が提唱した。狭義には、それをWebシステムに適用したソフトウェアの設計様式を指し、一般にはこの意味で用いられることがほとんどである。
- IT用語辞典 e-Words より引用
一言でいうと、Webの仕組みを実現させるための設計指針です。
詳細は以下のページが参考になりました。
Ruby on RailsにおけるRESTとは
RESTとは、アプリケーションを構成するコンポーネント (ユーザーやマイクロポストなど) を「リソース」としてモデル化することを指します。
これらのリソースは、リレーショナルデータベースの作成/取得/更新/削除 (Create/Read/Update/Delete: CRUD) 操作と、4つの基本的なHTTP requestメソッド (POST/GET/PATCH/DELETE) の両方に対応しています。
- Ruby on Rails チュートリアル より引用
● リソース
ブラウザにURLを入力すると、指定のWebページへアクセスすることになりますが、そのアクセス先をリソースと定義します。
Railsではルーティングを経由し、Controllerを通じて処理が行われる仕組みになっているため、ルーティング以降の構成要素をリソースとして考えます。
● HTTPメソッドとCRUD操作
RESTの設計指針の一つに、リソースのCRUD操作とHTTPメソッドの紐付けを行うといったものがあります。
その紐付けはルーティングにより行われます。具体的には、URLのパスから判断します。
Railsチュートリアルの実践であったユーザー情報へのCRUD操作を例とし、表にすると以下のような内容になります。
HTTPメソッド | URLのパス | アクション | アクション目的 | CRUD操作 |
---|---|---|---|---|
GET | /users | index | 全てのユーザーを表示する | Read(取得) |
POST | /users | create | ユーザーを作成する | Create(作成) |
GET | /users/1 | show | id=1のユーザーを表示する | Read(取得) |
PATCH | /users/1 | update | id=1のユーザーを更新する | Update(更新) |
DELETE | /users/1 | destroy | id=1のユーザーを削除する | Delete(削除) |