RESTについて面接で聞かれたときのために覚えておくRESTの概要

こんにちはMIYACHIN(@_38ch)です。

この記事では、ソフトウェアエンジニアとして転職活動をしている人に向けて、RESTの概念に関して書いていきます。

普段からREST APIを使って開発していたとしても、いざ「RESTって何ですか?」と聞かれても回答に困ってしまうかもしれません。ここら辺が回答できていれば問題ないだろうというポイントを掻い摘んで紹介していきます。

そもそもRESTとは?

RESTはREpresentational State Transferを意味する「アーキテクチャスタイル」です。

開発者のRoy Fieldingが示した、設計原則は主に以下の4つと言われています。

  • セッションなどの状態管理を行わない
  • 情報を操作する命令の体系が予め定義・共有されている
  • すべての情報は汎用的な構文で一意に識別される
  • 情報の内部に、別の情報や(その情報の別の)状態へのリンクを含めることができる

つまり上記の4つを噛み砕いてまとめると、

「セッション管理」などを行わない、「GET, POST, PUT, DELETE」の形で、「ユニークなURL」にリクエストを送り、「JSONやXMLなどの形でレスポンス」を受け取る設計と言えます。

具体的にどんなURLで設計されているかを見てみると以下のような感じです。

[GET] https://miyachin/api/user(ユーザー取得)
[POST] https://miyachin/api/user(ユーザー登録)
[PUT] https://miyachin/api/user(ユーザー情報編集)
[DELETE] https://miyachin/api/user(ユーザー情報削除)

URLの中に、getUserやAddUserなどの動詞が含まれず、エンティティ(user)に対して、何をするかはHTTP Methodで指定しているのがポイントですね。これがユニークなURLといわれる所以です。

RESTのメリットは以下のものが挙げられます。

  • ステートレスにすることで、スケーラビリティが向上
  • シンプル(GET, POST, PUT, DELETE)で一貫性のある設計
  • 標準的なデータフォーマット(JSONなど)を扱うことでほかサービスとの連携が容易になる

ステートレスとは何かに関しては、突っ込まれると辛いので、こちらの記事をチラ見しておきましょう。

対立概念としてのSOAPも覚えておこう

RESTの話をするときによく出てくるSOAPというものがあるので、こちらもさらっと頭の中にいれておきましょう。

SOAPはSimpleObject Access Protocolの略で、こちらもWebAPIの設計思想です。

RESTとの違いは端的に言うと、「リソース(名詞)指向」「サービス(動詞)指向」かということで、つまり、RESTのURLには名詞のみが出てきますが、SOAPの場合はそれが動詞になっていたりします。

さらには、厳密な型チェックや、複雑なデータの入出力という面に関しては、SOAPに軍配が上がるのですが、学習コストや、導入の容易性の面から、そして極め付けは、2000年以降のWeb2.0の流れの中で、AmazonやGoogleなどの企業がRESTの形式でAPIを提供しはじめ、RESTスタイルが多くの人に受け入れられて行くようになりました。

RESTの次にくるGraphQL?

SOAPからRESTの時代になりましたが、RESTにも以下のような課題はあります。
(一部のみを掲載)

  • APIドキュメントの管理がしんどい
  • 1ページ表示するのに、何個もAPIを叩く必要がある

GraphQLはこのような問題を解決してくれるということで注目を浴びています。

とは言え、GraphQLという言葉が聞かれ始めて、それなりの時間が経ちますが、まだまだRESTを採用している会社が多いので、触りの部分だけ覚えておくだけで良いかもしれませんね。

この記事では、RESTの概念について解説しました。

面接前に読み返しておくと、スムーズに選考をパスできるかもしれません