最近、RubyonRailsで簡単なWebアプリを作成しているmacco(まっこ)です。
今回はRubyonRailsの学習を始めたけど、いまいち「Restful」や「リソース」の意味が分からない初心者のかたを対象に、解説していこうと思います。
本解説に入る前にRubyonRailsについて、簡単に説明します。
RubyonRailsとは、Rubyというプログラミング言語がベースとなっているWebアプリケーションフレームワークになります。
RubyonRailsで構築されている国内サイトとして挙げられるのは、料理レシピコミュニティサイトのクックパッド、求人情報ウェブサイトのWantedlyなどがあります。
対象の読者
- RubyonRailsを学習サービス(Progate、ドットインストール、Udemy、paizaなど)で学んでいるが、いまいちRestfulやリソースの意味が理解できない
- RubyonRailsを書籍で勉強している
本記事を読むことで、Restfulの概念やリソースの雰囲気を掴む手助けになれば幸いです。
自己プロフィール
簡単な自己プロフィールを載せておきます。
追加の自己プロフです🐈📌
— macco@アラフォーWeb人間 (@maccoweb) April 23, 2020
▶️最終学歴は高卒
▶️元々パソコン大の苦手
▶️IT系企業入社➡️現在8年目くらい
▶️Webシステムの戦略から要件定義➡️運用保守まで浅く広範囲に経験
▶️音楽が得意ギター好き➡️社会人でライブハウス出演経験
▶️ネコ好き
▶️性格は穏やか系
これからもよろしくお願いします😆✨
Restfulとは

RubyonRailsを学習するうえで、欠かせないのは「Restful」の理解です。
一言でいえば、RESTの原則に従って設計されているサービスやシステムを表現します。
では、RESTとはいったい何でしょうか。
RESTとは
RESTとは様々なソフトウェアと連携するために設計されたルールの1つです。
大まかに以下の4つのルールから成り立っています。
アドレス可能性
1つのリソースに対して指定するURIが用意されること
※リソースについては後述します。
例
ユーザーを一覧で表示するページは「https://test.com/users/index」
ユーザーを新規で登録するページは「https://test.com/users/new」
このように、動作(RubyonRailsではアクションといいます)ごとにURIが割り当てられています。
ステートレス性
通信1つ1つが独立していて、各通信は他通信との関連性がないこと
珈琲ショップでの注文を例に挙げます。
店員「ご注文はいかがなさいますか?」
私「アイスコーヒーのMサイズを1つください」
店員「ミルクはいりますか?」
私「アイスコーヒーのMサイズ1つとミルクはいらないです」
店員「シロップはいりますか?」
私「アイスコーヒーのMサイズ1つとミルクはいらないです、シロップもいらないです」
分かりにくいと思いますので、補足します。
店員と私のやりとりを1通信とします。
全部で3通信行われていますね?
それぞれの通信は他通信との関連性を持たないため、1通信ごとにアイスコーヒーから指定しています。
これをステートレス(状態を持たない)といいます。
持続性
HTMLやJSON、XMLといったハイパーメディアを扱う
使用しているパソコンの設定などに依存せずに、アプリにリクエストすることができます。
また、標準的なデータフォーマットを扱うことで他ソフトウェアとの連携が容易になります。
統一インターフェース
インターフェースが固定されているため、互換性の問題が発生しない
インターフェースとはアプリやサービスの門のようなもので、データの入出力の部分を表します。
復習すると
Restfulは「RESTの原則に従って設計されているアプリやサービス」
RESTは「様々なアプリやサービスと連携するためのルールの1つ」です。
以上RESTの説明でした。
リソースとは

では次に「リソース」について解説していきます。
RubyonRailsでいう「リソース」とは、HTTP経由で操作するデータ群を指します。
例えば、自分の持っている書籍をRubyonRailsアプリで管理したいとしましょう。
以下のデータを例に考えてみます。
テーブル名:books
id | name |
1 | ネットワークを学ぼう |
2 | Rubyを優しく解説 |
これを「booksリソース」と呼びます。
booksリソースに対して、決められたURLを使ってアクセスし、操作することができます。
次にbooksリソースを操作できるURL一覧を以下に記載します。
No. | 内容 | HTTPリクエスト | URL | アクション |
1 | 書籍一覧のページを表示する | GET | /books | index |
2 | 書籍の詳細ページを表示する | GET | /books/id | show |
3 | 書籍の登録ページを表示する | GET | /books/new | new |
4 | 書籍を登録する | POST | /books/create | create |
5 | 書籍の内容を更新するページを表示する | GET | /books/id/edit | edit |
6 | 書籍の内容を更新する | PATCH | /books/id | update |
7 | 書籍を削除する | DELETE | /books/id | delete |
補足説明します。
HTTPリクエストにある「GET」や「POST」というのは、メソッドといいます。
これはアプリ側にどのようなリクエストをするか決めるものです。
例えばページ自体を取得したい場合はGET、何かデータを送りたい場合はPOSTといった感じです。
次にURLにある「id」は、データのidを指しています。
例えば、先ほど参考例に挙げたテーブル名:booksにある「id=1、name=ネットワークを学ぼう」のデータを示す場合は、id=1になります。
最後です。アクションにある「index」や「show」は、原則7つで構成され、それぞれ役割を持っています。
indexはリソースの一覧を表示、showはリソースの詳細といった感じです。
以下にまとめます、リソースとは
- HTTPリクエストのメソッドと7つのアクションによって、データを操作する。
- その操作するデータ群をリソースと呼んでいる。
ということになります。
※ちなみに7つのアクション以外にも、自分独自のメソッドを定義することも可能ですが、必要になったらその都度学んでみてください。
以上でリソースの説明を終わります。
最後に
いかがでしたでしょうか。
このあたりの内容は、色々専門的な知識も必要になったりするので、一度だけではなかなか覚えられないと思います。
しかし、最初は分からなくても継続していけば、だんだんと理解できるようになるのが、プログラミングのいいところです。
ですので、まわりと比較せず、自分で自分の成長を認めてあげてください。
そうすれば、徐々に道は開けてきます。
最後までお付き合い頂きありがとうございました。