Webを支える技術(REST)

目次

Webを支える技術を読んだので、知識の整理も兼ねて、学んだことをご紹介いたします!

RESTとは

RESTとはWeb全体のアーキテクチャスタイル(システムを設計するための指針)です。
RESTにしたがって個別のWebサービスを作ることで、Webは全体としてより良くなります。
RESTは次の6つを組み合わせたアーキテクチャスタイルになります。

クライアント/サーバ

クライアントはサーバにリクエストを送り、サーバーはそれに対してレスポンスを返します。

クライアントとサーバに分けることで、単一のコンピュータで処理するのではなく、分離して処理できます。そのため、クライアントは色々な種類のデバイスからアクセスできます。
また、データストレージの機能を持つサーバを複数組み合わせることで可用性をあげることができます。

ステートレスサーバ

ステートレス(Stateless)とは状態を持たないという意味です。
ステートレスサーバとは、クライアントのアプリケーション状態をサーバで管理しないことを意味します。
利点はサーバの実装を簡略化できます。また、クライアントのリクエストに応えたあとすぐにサーバの計算機リソースを開放できます。

キャッシュ

一度取得したリソースをクライアント側で再度利用する仕組みです。
サーバとクライアントの通信を減らすことで、効率的に処理できるようになります。

統一インタフェース

統一インタフェースとは、URIで指し示したリソースに対する操作を、統一した限定的なインタフェースで行うアーキテクチャスタイルのことです。

HTTPではGETやPOSTなどの8個のメソッドが定義されています。
限定的にすることで、全体のアーキテクチャがシンプルになり、クライアントとサーバの実装の独立性が向上します。

階層化システム

先ほどの統一インタフェースの利点のひとつに、システム全体が階層化しやすいことがあります。
クライアントとサーバの間にロードバランサを設置して負荷分散したり、
プロキシを設置してアクセスを制限したりします。

コードオンデマンド

プログラムコードをサーバからダウンロードし、クライアントでそれを実行するアーキテクチャスタイルです。

JavaScriptやFlash、Javaアプレットなどが該当します。
利点は、クライアントプログラムに新しい機能を追加することができます。

RESTとはつまり

・クライアント/サーバ : ユーザインタフェースと処理を分離する
・ステートレスサーバ : サーバ側でアプリケーション状態を持たない
・キャッシュ : クライアントとサーバの通信回数と量を減らす
・統一インタフェース : インタフェースを固定する
・階層化システム : システムを階層に分離する
・コードオンデマンド : プログラムをクライアントにダウンロードして実行する

上記のRESTの制約にしたがって、RESTらしいことをRESTfulと呼びます。