koheitakahashiのブログ

2020.07.01にプログラマーとして生を受けた私が学んだことや、日常について徒然に書いていきます。

RESTとは

はじめに

Fjordbootcampの「Webアプリケーションの基本を理解する」プラクティスを進めているのですが、今日はRESTについて学んだので、自分なりにまとめたいと思います💪

RESTとは

RESTとは、Webアプリケーションの設計思想です。その特徴として以下の6点が挙げられます。

  1. サーバ/クライアントのスタイルであること
  2. ステートレスサーバであること
  3. 統一インターフェースであること
  4. 階層化されたシステムであること
  5. キャッシュを使用すること
  6. コードオンデマンドであること

この6点について、少し詳しく説明していきたいと思います。

1. サーバ/クラアントのスタイルであること

これはどういうことかというと、クライアントとサーバが分離されているということです。

これにより、以下の3つの利点があります。

  • 処理が分離できます

クライアントとサーバの処理が分離でき、ユーザーフェースをクライアントが担い、サーバはデータを保管するという機能だけを担えばよくなります。

  • クライアントが特定のマシンだけでなく、様々なマシンでサーバにアクセスできるようになります

つまりは、マルチプラットフォームが実現できるのです。

  • 複数のサーバを組み合わせて運用できます

2. ステートレスサーバであること

つまり、アプリケーションの状態をサーバは記憶しないということです。

これについてはステートレスとは何かで、とても分かりやすい例が載っております😆

この利点として、リクエストに応じた後、サーバはすぐにそのリソースを他の処理に当てることができるということが挙げられます。

3. 統一インターフェースであること

インターフェースが統一されていると、その多くの人が使いやすくなるという利点があります。

4. 階層化されたシステムであること

これにより、異なるインターフェースを持つレガシーなシステムにも接続することができます。

5. キャッシュを使用すること

キャッシュとは、前回受け取ったリソース情報を記憶しておき、それを使い回すことです。

これにより、通信回数が減りパフォーマンスが向上します。 しかし、古いキャッシュを使いまわすことで、情報の信頼性が損なわれるという欠点もあります。

6. コードオンデマンドであること

コードオンデマンドとは、クライアントがサーバからコードを受け取って、クライアントがコードの処理を行うという形式のことです。

これにより、クライエントが新しい機能を追加していくことができます。 一方で、ネットワーク通信のプロトコルの可視性が低下することがデメリットになります。

どういうことかというと、クライアント側で処理を実行することにより、その処理が見えなくなり、通信が何を意味しているのかということが分かりづらくなるということです。

最後に

以上がRESTという設計思想だと学びました。これらを全て実現することが大事なのではなく、現実とRESTの妥協点を探して、現実に適した設計を行うことが大切なようです。

Webアプリケーションについて、まだ勉強し始めたばかりで分からないことだらけですが、『Webを支える技術』のおかげで大分理解しやすくなりました。

明日も引き続き勉強していきたいです🔥

参考文献

Webを支える技術 ―― HTTP,URI,HTML,そしてREST WEB+DB PRESS plus eBook: 山本 陽平

REST - RESTのうち、統一インターフェースの利点とは|teratail

REST入門 基礎知識 - Qiita

ステートレスとは何か