REST編 3


RESTとハイパーメディア

Webはリンクをたどりながら様々なリソースへとアクセスしていきます。
この特徴のことをRESTでは「アプリケーション状態エンジンとしてのハイパーメディア」と呼びます。

アプリケーション状態とは、例えばソーシャルブックマークアプリケーションの利用者が持つ状態のことで、「ブックマーク一覧を表示している」「ブックマークに追加しようとしている」などが状態の具体例だ。
つまり、アプリケーション状態はリンクをたどることで遷移するものだ。

このようにリソースをリンクで接続することで一つのアプリケーションを構成するという考え方は、
「接続性(Connectedness)」という。

RESTと分散システム

RPCなどの分散オブジェクトでは関数をメソッド単位でサーバ側の処理を呼び出すので、呼び出し回数がものすごい量になり、システム全体の性能劣化を引き起こす。
その一方で
RESTに基づいたWebサービスはリンクをたどることでアプリケーションを実現します。
RESTに基づいたWebサービスで扱われるリソースは、RPCの関数でやりとりされるデータよりも粒度は大きいため、性能劣化を抑えることができる。

この性能劣化の問題だけではなく、分散オブジェクトはサーバごとに別々のインターフェースを持ち、個々のインターフェースはプログラムライブラリのインターフェースをベースに開発することが多いという問題がある。これは、機能追加してバージョンアップするたびにメソッドが増えたりメソッドの引数や戻り値が変わったりしてAPIの互換性がなくなってしまう。既存クライアントをすべて同時に更新しなくてはならない。Webのような大規模システムでは非現実的といえる。

その一方で、RESTではHTTPをインターフェースとして固定することでそのような互換性の問題は発生しない。