search
LoginSignup
4

More than 1 year has passed since last update.

posted at

updated at

Ruby on Rails - MVCモデルとRESTアーキテクチャ

はじめに

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(削除)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4