まさ@ブログ書き込み中

自由に生きるための英語、プログラミング、考えごとについて色々書いています。

【超初心者向け】RailsのRESTfulについてくわしく書きます

f:id:masaincebu:20180825072952j:plain

今回は、Railsの基礎概念として重要なRESTfulについて僕なりの理解を説明していきたいと思います。

 

この記事で想定している読者

  • Rubyの基本はある程度知っている

  • Railsは初心者

  • MVCについては理解している

 

ちなみに、MVCについてはこちらに書いてあるので、MVCモデルについてよく知らない人は3分くらいでサクッとご覧ください。

【超初心者向け】RailsのMVCモデルについてくわしく書きます【コードあり】 - まさ@ブログ書き込み中

 

今回もわかりやすさを重視して説明していくので、正しい情報を伝えるつもりですが、超正確に理解したい人はこの記事の他の文献やサイトをあたってください。

 

RESTfulとは

RESTfulとは、RESTに則っている状態のことです。そのため、RESTfulを理解するためにはRESTという言葉を理解する必要があります。

 

RESTとは「REpresentational State Transfer」の略で、簡単にいうとシステムやアプリケーションを構築するためのアーキテクチャのスタイルの1つです。アーキテクチャとは「設計」という意味です。

 

本来のRESTの意味は複雑なのですが、RailsアプリケーションにおけるRESTを理解するにはこの2つをおさえればいいです。

 

  1. アプリケーションの中で使われる要素を「リソース」としてモデル化する

  2. リソースはCRUD操作と4つのHTTPリクエストメソッドに対応する

 

この2つについてもう少し詳しく見ていきます。

 

アプリケーションの中で使われる要素を「リソース」としてモデル化する

リソースとは「ユーザー」や「ツイート」などのアプリケーションの中で使われる要素のことを指します。

 

「モデル化」の「モデル」とはRailsのMVCのM(モデル)と同じイメージで「ある事象や物事の構造を論理的に形にしたもの」と捉えてもらってOKかと思います。

 

例えばユーザーだと「名前とメールアドレスがあるな」とか、ツイートであれば「一緒に投稿された画像を取得できるな」といったことです。

 

リソースはCRUD操作に4つのHTTPリクエストメソッドが対応する

CRUD操作とはデータベースに対する操作のことで、それぞれCreate(作成)、Read(取得)、Update(更新)、Delete(削除)を指します。

 

RailsアプリのRESTではこのCRUD操作がGET、POST、PATCH、DELETEの4つのHTTPリクエストメソッドに対応します。

 

例えば、デフォルトではGETメソッドはRailsアプリケーションのindexやshow、editアクションに対応し、POSTメソッドはcreateアクション、PATCHメソッドはupdateアクション、DELETEメソッドはdestroyアクションに対応するようになっています。

 

同じメソッドでどのアクションに対応させるかは、URLで決定しています。例えばGETメソッドで"/blogs/4"という風なURLにアクセスすると、IDが4のブログが取得できるという風にです。

 

この概念を理解すると、Railsのルーティングで使えるresourcesメソッドの意味がわかります。

 

ここでは「"blog"というリソースに対してRESTに沿ったルーティングを追加する」ということを宣言しています。

 

この宣言によって、以下のようなルーティングが追加されます。

HTTP動詞 パス コントローラ#アクション 目的
GET /blogs blogs#index ブログの一覧を表示
GET /blogs/new blogs#new ブログを1つ作成するためのHTMLフォームを返す
POST /blogs blogs#create ブログを1つ作成する
GET /blogs/:id blogs#show 特定のブログを表示する
GET /blogs/:id/edit blogs#edit ブログ編集用のHTMLフォームを1つ返す
PATCH/PUT /blogs/:id blogs#update 特定のブログを更新する
DELETE /blogs/:id blogs#destroy 特定のブログを削除する

この表はRails のルーティング | Rails ガイドを参考に作成しました。

 

このように、RailsはリソースのCRUD操作をHTTPリクエストに対応させています。

 

RailsではRESTfulを意識しよう

RailsではRESTアーキテクチャを採用することによって、ルーティングやコントローラーの処理(アクション)の決定などを簡単にしてくれます。

 

実際、ここまで読んだ皆さんも先ほどのRESTfulなルーティングを見た時に「わかりやすいな」と思ったのではないでしょうか。

 

Railsでアプリケーションをつくる際にはこのRESTアーキテクチャに則ること(すなわちRESTfulであること)を意識することでRailsの便利な機能を最大限に発揮できます。

 

Railsの原則の1つとしてConvention over Configuration(CoC)というものがあります。「設定よりも規約」という意味です。

 

Railsには、Rail(レール)に乗っかって開発をするという原則があり、それが効率的に開発をする上で重要だという思想があるわけですね。

 

RESTfulなRailsアプリケーション開発に、今回の記事の内容が役に立てば幸いです。