Tags: resource
REST リソースオリエンテッドな考え方
By MD on May 20, 2008 | In Database | Send feedback »
さて。
"REST"といえば?
今しばし考えてみてください。どのようなイメージを持っていますか?
- WebServiceが面倒くさいし複雑だから、端折って簡単にしたやつ?
- Ruby On Railsみたいなの?
- Ajax?
- Googleっぽい、なんでもURLでアクセスしちゃうやつ?
どうもよく分かっていないので、
まず用語の定義を探ってみましょう。
Representational State Transfer
Representational state transfer (REST) is a style of software architecture for distributed hypermedia systems such as the World Wide Web. The terms “representational state transfer” and “REST” were introduced in 2000 in the doctoral dissertation of Roy Fielding,[1] one of the principal authors of the Hypertext Transfer Protocol (HTTP) specification. The terms have since come into widespread use in the networking community.
Wikipediaではこのように紹介されています。何やら小難しいことが書いてありますが、どうやらHTTPの父が2000年に発表したアイデアのようです。
さらにこのRESTのアイデアを支えるコンセプト、Resourceについての説明が続きます。
REST's central principle: resources
An important concept in REST is the existence of resources (sources of specific information), each of which can be referred to using a global identifier (a URI).
...
For example, a resource which is a circle may accept and return a representation which specifies a center point and radius, formatted in SVG, but may also accept and return a representation which specifies any three distinct points along the curve as a comma-separated list.
「円」というのがリソースの例として挙がっていますが、”リソース”というのは、あんなものが欲しい、こんなものが欲しい、なんでもかんでもリソースと捉えることができます。問題は、それをどうやって表現するか、ですね。そこで、その表現をRepresentationと呼びます。
「円」のリソースの例で言うと、Representationとしてこんなものが挙がっています。
- 中心点と半径
- SVGフォーマット
- CSVファイル(円上の任意の3点を1レコードとする)
「円」が例に挙がっちゃったので若干困りましたが、こんな風に、リソースを、いろんな型で取れるわけです。
それで?
それでは、現実の世界にある、具体的な例を挙げてみましょう。Google Financeでトヨタ自動車という”リソース”を見てみるとこうなっています。
http://finance.google.com/finance?q=NYSE%3ATM
いろいろいじってみてみましょう。
このページでは、トヨタ自動車に関する情報を一挙にまとめています。このように、リソースは、いろんなリソースからできていることが多いです。ここ、大事です。
リソースは、いろんなリソースからできている。
役員データ、現在の株価、株価の推移、関連ニュース、どれもリソースであり、さらにそれらも、いろんなリソースからできています。
ここでいうリソースには、データベースにアクセスして取り出すデータも含まれますが、同じようにリソースとして捉えちゃいます。
つまり、リソースオリエンテッドなわけです。
これって何がすごいの?
さっきWikipediaで見たような定義自体がすごいとは思いませんが、このリソースオリエンテッドな発想、インターネットの揺籃期を生き抜いて、台頭してきていることがすごいんです。
・分かりやすい。使いやすい。
・スケーラビリティがある。
ユーザーから見ても、技術面から見ても、大変優れているわけです。
RPCではなく、リソースの交換。
ウェブの世界では、RESTfullでいきましょう。