yohei-y:weblog

XML と REST/Web サービス関連の話題が中心の weblog です

2006-03-21

カミングアウト。

Tim Bray の WS-Crossroads から REST 関連のブログエントリが凄いことになってます。 Tim のエントリはガートナーの group VP で chief fellow な Daryl Plummer の Web Services At A Crossroads という記事を受けてのもの。 Plummer の文章はツッコミどころがあるものの、いいこといっているのも事実だと。

Tim のエントリは最後の段落がとてもいいです。

Speaking for myself, not for Sun, I think that we ought to be pouring resources and investment into tooling and developer support around simple XML/HTTP/REST technologies. You know, the standardized ones that work today.

これを受けたのがマイクロソフトの Don Box です。 まず Going Down To The Crossroads... というエントリで、 Tim の上記の段落を受けて、マイクロソフトの環境・ツールがどれくらい HTTP/XML/REST をサポートしているかをまとめてくれています。

さらに Don の次のエントリでは HTTP, XML, REST, and $100 と題して、もし $100 あったら、HTTP/XML/REST 関係の開発の何にどれくらいを費やしてほしいか、の意見を求めています。 このコメントやトラックバックが面白いんですが、Dare Obasanjo の反応がまじめにいいです。 いわく $40 を IE での XML サポート強化(E4Xとか)に、$30 を WCF での RESTful サービスサポートに、 $20 が C# と VB.NET での XLinq サポート、最後の $10 は W3C じゃない XML 技術(RELAX NG や Schematron)のサポートと。

その後はlesscord での勝利宣言(いくつか心配もありますが)があったり、 Mix06ビルゲイツが "We need microformats" と言ったり、時代が確実に動いているという感じですね。

最後に僕もいちおうカミングアウトしておこうかな。

I'm a Restafarian.

ラベル: , ,

2006-03-04

REST ってやっぱり難しいかも。

前のエントリでこんなことを書いたばかりだけれど、REST ってやっぱりどうよ、という気分になったので久々に blog を更新してみる。

ただただしさんのおれだったらフォト蔵APIをこうするを読んで、僕が del.icio.us に書いた感想は

+1。ID == URI ですよね。Cool URI は名詞であるべき、というのは強調したい。「日本REST協会」入りたくないなー(笑)。みんな休んでそう

というもの。たださんのエントリでは URI と書くべきところが ID になっててちょっと気になったり、「作法」は「アーキテクチャ」じゃなくて「アーキテクチャスタイル」だ、とか思ったのだけれど、でも本筋としては納得の内容だった。

しかし、たださんのエントリの、たかはしさんmizzy さんのコメントを読んでうーんと唸ってしまった。

僕にはお二人の言いたいことがわかる。んで両方間違っていないと思う。

たとえばたかはしさんの言うとおり、RoyF の元論文では GET/POST/PUT/DELETE を使えなんて一言も書いてないわけで。そうじゃなくて単に Uniform Interface が重要だよ、というだけの話。

でも今回のフォト蔵 API に関して言えば、Uniform Interface の間違った使い方をしちゃっているので、ちゃんと RESTful に設計するなら HTTP の GET/POST/PUT/DELETE をたださんが指摘したように使うのがまっとうな方法だとも思う。

mizzy さんのコメントの最後

ここでたださんが言っているRESTというのは、正確には「RESTアーキテクチャスタイルのアーキテクチャであるHTTPを利用したAPI」のことだと思われますので、アーキテクチャの話に絞って問題ないかと思います。

というのは重要で、問題の根源はここにある気がする。異なる次元の別の話(アーキテクチャスタイルの話、HTTP の話、Web API 設計の話)が全部 REST という名前の下で行われていうので、混乱してしまう。これは僕にも一因があって、これまでのこの blog のエントリでも上記をごっちゃで使ってしまっている。

言葉を正確に使おうとすると非常にメンドウなので、僕自身の文章力ではなんともならないのだけれど、ここではせめてそれぞれの次元がどう違うのかを下記に列挙しておきたい。

REST アーキテクチャスタイル
RoyF の元論文に基くアーキテクチャスタイルについての議論。 ここでは HTTP のメソッドがどうしたという話は原則関係ない。 REST アーキテクチャスタイルを基にした Web アプリのアーキテクチャを設計する段で、 たとえば GET/POST/PUT/DELETE を使うのがいいのか、 GET と POST だけを使えばいいのか、という議論もありえる。 このレベルの話を、下記の偶然 REST っぽい Web API に適用してもあまり意味がない。 プログラミング初心者にいきなり最先端のデザインパターンの話を聞かせるようなもの。
偶然 REST っぽい Web API
いわゆる XML を HTTP でやりとりしますよ的な API を REST API と呼んでいるケース。 この場合の REST という言葉は非常に矮小化されてしまっていて、 僕としてはこれは POX over HTTP と呼びたい。 個人的には正直あんまり興味なし。
Restful Web サービス
RoyF の論文はそこらの××な(自己規制)博士論文の1万倍凄いんだが、 それでもやっぱり脇が甘いところもあるし古くなっちゃってるところもある。 それに REST アーキテクチャスタイルを実装(アーキテクチャ)に落そうとすると とたんに色々な問題が出てきて、そう単純な話では済まないのも事実。 一方で2000年以降、このような設計・実装の議論はずっとされてきて、進化してる。 実際にいろいろな試みがなされていて、Paul Prescod の経験則とか Mark Baker の蘊蓄とか、すごく蓄積されている。 たとえば POST は新規作成とか URI は名詞でとかいう話はより実装に近い話。 APP(AtomPP) はここでの重要な成果の一つ。
その他にも REST にまつわる現在進行形の議論はたくさんあって、 たとえば OOP と REST とか SOA/WS-* と REST とか Ajax と REST とか XML vs YAML vs JSON とか階層化ファイルシステムと単一階層モデルとか microformats と REST とか。まさに Web 2.0 が表現するアルファギークの気分の中でフワフワ浮いているような話題なんだけれど、この話題、まだ体系的に言語化/文書化されてないので 現在進行形の文脈を共有している人とじゃないと議論できない。 僕が今一番興味があるのはここ。

実は今 REST の入門記事を某誌向けに書いているんだけど、 この原稿でも上記の次元の異る REST が無意識にまざってしまっていて、 困ったなあと思っていたりする。締切も近いしどうするかなあ。

ラベル: