お問い合わせ
会社概要 ソフトウェア 開発ブログ サポート

« Trackback標準化の件 | メイン | RESTなWebAPIの開発支援ツール »

2006年03月06日

RESTという言葉の誤用について

[ REST/XML Web Service ]

あまり表立って、REST自体の事を詳しく書いてこなかったのですが、実は2003年頃から一歩引いた所からRESTには注目してきました。実際AtomAPIを知ったのもREST繋がりです。

最近、XML開発者の日を境に、RESTというアーキテクチャスタイルが日本でも広まりつつあるのですが、ちょっと誤用が増えてきた気もしないでもありません。

HTTPリクエストを使って、XMLが返ってくるものを何でもRESTと表現されてしまい、結局意味がバラバラで、バズワードのように濫用されるのではという懸念も一部ではあるようです。

実際、誤解を広げかねない説明をしているサービスもあります。 一例を上げると:

「REpresentational State Transferの略語。HTTPリクエストに対してXMLをレスポンスとして返す。********WebサービスはRESTを採用しています。」

HTTPリクエストを使えばRESTというわけではなく、URIとHTTPメソッドを正しく使う事が主眼Uniform Interface が重要であり、また、あまり知られていないのが、POSTのボディやレスポンスのボディは別にXMLである必要性はまったくない、という事です。ブラウザがバイナリチャンクでもステータスコードのみでもOK。XMLはしっかりと規格化されていて汎用性があるフォーマットだから多く利用されるだけです。 (例えばブラウザーが画像(リソース)をGETしてバイナリーで受け取った場合の振る舞いはRESTfullと言える。HTMLのページでも同様。ただ、ブラウザは通常POSTかGETしかしないのが問題。RESTを一言で言うと、本来のWebの用法に従うということ?)

なので、上記のREST定義は誤解を広げかねないと言えます。

ここで行き違いが生じやすいのですが、「POSTとGET、PUT、DELETEなどを使え」、と強制している訳でも、「RESTという言葉を使うな」、といっているわけでもないのです。単に言葉は正しく使いましょう、という事だったりします。 あえてRESTでない手法を選択したのであれば、それはそれで構わないでしょう。しかし、実態は異なるにも関わらずRESTと称するのは健康的ではない、というのが私の考えです。

つまり、 自動車を無理やり線路の上を走らせることが出来たとしても、それを電車とは呼びません。ただ「線路上走行自動車」でしょうか... これに準じて先の定義は、あえて言うなら、RESTでなく、「POX over HTTP」ぐらいにすべきでしょう。

「Web2.0」といった概念を表す言葉とは異なり、RESTアーキテクチャスタイルには、しっかりとした指針(UCIでの論文)があります。もしWebリソースの作成含めてすべてのHTTPリクエストにGETを使っていたら、それは正しくHTTPを利用しているとは言えず、RESTではないでしょう。

ウェブサイトのトップページを指す「ホームページ」が、いつのまにかウェブサイト自体のことを言うようになってしまったりしてますが、RESTという言葉が見当違いのことを指すようになったら、もっと困ってしまいます。私がもっとも懸念するのは、もし誤用が広まると、RESTというアーキテクチャスタイルを採用して健康的なWebAPIを作成しようという人たちが真の恩恵を受けられず、多大な迷惑を被ってしまいかねない、という事だったりします。

また、言葉だけで利点を理解するのは難しい時があります。ですから、実際にAtomAPIを利用するシステムを開発して見ると、本当のRESTと、そのリソースのURIに対し、POSTで新規作成、PUTで更新、という流れがシンプルで効率よく、設計が美しく感じられるようになるのではと思います。特にXML-RPCのような冗長で無駄の多い仕様を同時に実装して見ると、違いが実感出来ます。

関連情報:
REST 入門
REST の日本語リソース
ウィキペディア:REST
AtomAPI解説

変更履歴:
「アーキテクチャー」ー>「アーキテクチャスタイル」
「HTTPメソッドを正しく使う事が主眼」ー>「Uniform Interface が重要」
御免なさいm(_'_)m ビックル飲みまくり... 詳しくはhttp://yohei-y.blogspot.com/2006/03/rest.html

投稿者 BlogWrite担当 : 2006年03月06日 19:20

トラックバック

このエントリーのトラックバックURL:
http://www.witha.jp/b/mt-tb-hate-spam.cgi/366

コメント

はじめまして。いつも参考にさせて頂いております。

「実際にAtomAPIを利用するシステムを開発して見ると…」のくだり、激しく同意です。自分も最近 AtomAPI を利用するシステムを自分で実装してみることによって、RESTがどういうものなのかといったことや、そのシンプルさと美しさがようやく理解できるようになりました。

また、AtomAPIという指針があり、その指針に従って実装することによって、自分でもキレイなAPIを実装できる、ということにも感動しました。最近はAtomAPIマンセーになってます。

投稿者 mizzy : 2006年03月07日 11:16

コメントしてください




保存しますか?