REST

いまさらながら REST を調べてみた。

「いまさら」というのは下記の REST に関する議論がほとんど 2002 年から 2003 年にかけてされてしまったものであるという意味である。

僕はこれまで誤解していたのだけれど、REST はいわゆる SOAP のカウンターテクノロジーで HTTP+XML を使おうというものではない。日本の一部の人々にはこの点を誤解しているように感じる。

たとえば以下の記事は REST を単なる HTTP+XML で紹介している例である。

http://www.atmarkit.co.jp/fdotnet/vbcheer/vbcheer06/vbcheer06.html

REST を HTTP と XML の文脈で語ろうとするのであれば、少なくとも URI を加える必用があるはずだ。

僕は XML-RPC と REST の違いも良くわかっていなかった。これは REST=HTTP+XML という誤解から生じていた。ちなみにこの両者は全く別のものである。

日本語のサイトで REST について一番わわりやすくまとめているのは sheepman 氏の羊堂本舗であろう。ここと REST の原点である Roy Fielding 氏の博士論文を拾い読みすれば、 REST の基礎がつかめると思う。

http://sheepman.parfait.ne.jp/wiki/REST

ちなみに REST は Fielding 氏のいう Architectural Style の一つであり、特定の実装をさすものではない。URI+HTTP+XML は REST の実装の一つだと考えなくてはならない。URI+HTTP+XML でない REST の実装ももちろんありうるのだ。ただし、最も一般的な REST の実装は URI+HTTP+XML であり、これは Paul Prescod 氏が xml.com などで盛んに啓蒙しているとおりだ。


羊堂本舗以外の日本語のサイトでは、以下の Wiki の RestfulToolkit という記事で OOP と REST の組合せに関する論考まで行われていて興味深い。

http://www.imasy.or.jp/~tai/wiki/?RestfulToolkit

同じ Wiki の以下の記事は、バックグランドが RPC 中心の人々と、SGML, HyperCard, HyTime など文書中心の人々による、方法論・世界観の激突をうまく言い表わしている。

この二つの基本スタンスの差は、インタフェースの解釈が(主に)設計者にあるか、(主に)利用者にあるか、という柔軟性の違いにある。プログラミング的な世界観ではこれは当然設計者にあり、インタフェース設計とは制約を加えてゆくことで誤解なく設計者の思想に従った利用がされるようにすることだったが、一方のドキュメント=データの永続性と流通・再利用を重んじるドキュメント的な世界では、データはただデータであり、それの解釈は利用する側で自由に行える。

これは秀逸な知見であると思う。スキーマ言語における貴族とボヘミアンの衝突に通じるものだろう。根底はみな一緒なのではないか。