ざっくりしたWebを支える技術 第1部 Web概論 第3章 REST webアーキテクチャー
webのアーキテクチャースタイルはREST
アーキテクチャースタイルとは複数のアーキテクチャー(下図参照)に共通する性質、様式、作法あるいは流儀など指す。webサービス全体の調和を乱さぬようRESTの約束事を守ることが重要。
抽象化レベル ↓↓↓ | webでの例 ↓↓↓
-------------------------------------------------------------------------------------
(親) アーキテクチャースタイル | REST
-------------------------------------------------------------------------------------
(子) アーキテクチャ | ブラウ,サーバ,プロキシ,HTTP,URIなど
--------------------------------------------------------------------------------------
(孫) 実装 | Firefox, googleChrome, safariなど
--------------------------------------------------------------------------------------
RESTにおける重要な概念、リソースとは?
一言で言うとweb上に存在する名前を持ったありとあらゆる情報。
例)Railsチュートリアル第5章, Yahoo! JAPANの路線検索, あなたのブログトップページ
人間の場合、同姓同名の名前の知り合いが存在しても区別はできるがプログラムの場合字体が全く同じだと区別できない。
では、どんな状況でもプログラムが区別可能な<名前>とは何か?
それはURIである。URIはそれぞれ一意でなくてはいけない。
https://railstutorial.jp/chapters/filling_in_the_layout?version=5.0#cha-filling_in_the_layout
具体的なRESTのアーキテクチャースタイルとは?
RESTは以下6つのアーキテクチャースタイルを組み合わせた複合アーキテクチャースタイルである。
1 クライアント/サーバー:ユーザーインターフェースと処理を分離する。
サーバーはデータストレージとしての機能だけを提供すればいい。
2 ステートレスサーバー :サーバー側でアプリケーション状態を持たない。
ただしサーバー側で状態を管理したい場合、cookieを使ったセッション管理がある。(ステートフル)
3 キャッシュ :クライアントとサーバーの通信回数を減らす。
一度取得したリソースをクライアント側で使い回す方式。
4 統一インタフェース :インターフェースを固定する。
HTTPで統一することでクライアントとサーバーの実装の独立性が向上する。
5 階層化システム :システムを階層に分離する。
クライアントからするとサーバーもプロキシも同じインターフェースで接続できるので接続先を気にする必要はない。(インターフェースをHTTPで統一しているから。)
6 コードオンデマンド :プログラムをクライアント側で実行する。
JavascriptやFlashなどをクライアントプログラムに新しい機能として追加できる。
まとめ
webはRESTと言うアーキテクチャースタイルがあったからこそここまで大きくなった。
WebサービスやWebAPIがRESTfulになると、Webは全体としてよりよくなっていく。