5/15/2005

Queries vs Methods

先日のパネルの内容を、村田さんがブログでまとめられている。yoheiさんのブログも参照。

で、パネルのハイライトはAdam Bosworthの(いろんな意味で)coolな発言に尽きるんだけど、ランチしてたとき一つわかんなかった(ので発言しそびれた)のが、彼の「Queries vs Methods」の真意。彼はA9のOpenSearchの試みを、Good Exampleとしていて、「何かしゃべれるか?」と聞いてきたのだが、どうも真意を理解していなかったので、あいまいな感じで終わっていた。で、Adamは実際にOpenSearchの話を壇上で一瞬し、ちらっと僕のほうを見て、僕の目から判断して「こりゃダメだ」と思ったらしく、自分で話したのであった。

で、その場で僕はようやく理解した(と思う)。彼のMethodsという言葉に代表されるのは、Strict Syntaxということなんだろうと。例えばGoogle検索というのはQueryの例であるわけだけど、「ReSTという言葉に関してもっとも関連の深いデータを順番に返してちょうだい。あ、ちなみに2ms以内でよろしく。」みたいなことで、Googleは最上のアルゴリズムで最高の結果を返す努力をしていると。ここで、GoogleへのQueryだって、URLに含めるパラメータを間違えて、「&hl=ReST&q=ja」みたいにしちゃったらダメじゃん、というツッコミはもちろん成り立つが、そんなレベルの話じゃないんだよね。

Methodsというのは、パラメータの順序やその明確な意味の事前合意を求めるモノの総称ということなんだろう。そして、重要なポイントはSloppyという言葉だとも思う。彼のいうSloppyなモノとは、要するに無邪気なまでにデータの読み手に解釈をゆだねる姿勢のことなんだと思う。パネルでもあげていたInternet Explorer(彼はv4チームのリードだった)の例:「なんとなくレンダリングできそうなデータが来たら、レンダリングするという方針。Webブラウジングしていて、『このページは読めません!文法が間違っています!』っていうエラー見たことないでしょ?」MethodsはこのSloppyを許さないモノを象徴する言葉だったのだろう。で、OpenSearchにつながるわけだ。RSS 2.0(XML 1.0+Namespaces)のような無制限の拡張を許容する仕組みがあるので、OpenSearch RSSはRSSリーダーにとっては10件のコンテンツに見えるし、OpenSearch Syndicatorにとっては最初の10件の検索結果に見える。(ってなことをあの場で言えればカッコよかったのになー)

村田さんのまとめにあるとおり、AdamはRESTとWS-*双方に、この点に関して厳しい点を与えている(うろ覚えだが、確かWS-*側にFをつけた理由として、SOAPはRESTと同じくらいSloppyなusageを許容するけど、実際のツールと仕様がともに、Methods的な使い方をencourageしているように思えるので、Fにした、と言っていたと思う)。で、このQueries vs Methodsの議論に関しても、AdamはAtomが重要な役割を果たすと思っているように感じた。

余談:ランチでTimとAdamが盛んにAtomの話をしていたんだけど、最初は何の話をしてるのかわかんなかった。Atomのことを「アダム」のように発音するんだもん。なんで君たちはこのひげおやじの名前を連呼しているんだ!とまじめに疑問に思ってた。Dave Winerがどうこうという話でようやく、Atomのことだとピンと来たしだい。ダサ。

4 件のコメント:

miyagawa さんのコメント...

あー面白そう、いきたかったなぁ。

"Atom" と "Adam" の件、ほんとそうですよね。WSDL は Wizdull だし。。その場に Adam がいたらかなり紛らわしさ倍増ですね。実際 Adam API っていう API をジョークで作った人がいたって話こないだ聞きました。

匿名 さんのコメント...

本来のWebサービスはsyntaxではなくsemanticsを重視したプロトコルであると思っている。それが、プログラミング言語とのバインディングやXSDの型との関係でつまらないプロトコルになってしまった。型の重要性と動的タイピングの言語の比較以上の、Webサービスはより抽象度上げるべきだと思います。パターンマッチングがあれば、プロトコルさえいらないはずです。人間のコミュニケーションはそうして成り立っているので。現に、Atomの会話で、コンテキストから逆にsyntaxを推論できているではないですか?

masayh

Fumiaki Yoshimatsu さんのコメント...

そうなんすよ、なのにUDDIはウッディとは言わない!なぜ?

Fumiaki Yoshimatsu さんのコメント...

同感です。昔は僕もそうでしたが、プログラミング言語へのバインディング以外にXML/SOAPの有益なユースケースはないと思ってました。結局のところ、ツールに引っ張られたWebサービスブームは、ツールが変わってくれないと誤解も解けないのだと思います。パネルでもツールの有無がRESTvsSOAPに与える影響がちょっとだけ議論されました。お手軽インターネットプログラミングというだけのWebサービスは、かつての「Socketが楽=インターネット対応プログラミング言語」というJavaの宣伝文句と大差ないですね。SOAPのBodyとHTTPのBody部の意味的違いとかいうことはツールによって抽象化されてしまって、違わなくなってしまってます。「すべての問題は抽象化のレベルを上げれば解決できる」と誰が言ったとか言わないとか。