BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース ウェブの定義

ウェブの定義

原文(投稿日:2014/12/07)へのリンク

IETF HTTP Working Groupの議長を務めるMark Nottingham氏はウェブとは何か?という問いに答えようとしている。氏の言う通り、誰もが使っているウェブについての簡単に答えられそうな問いだが、実際はかなり難しい。氏は次のように書く。

長い間、ウェブの最も受け入れられている定義はすべてがURLを持っているということでした。これは、“情報システムとしてのウェブ”という見方です。長い間、ウェブには3つの柱があると言われてきました。識別子、フォーマット、プロトコルの3つです。URLは最も普遍的で安定しています。

残念なことに、この見方には限界がある。例えば、この見方を採用すればWS-*もウェブだが、多くの人が、この点について議論している。また、ほとんどのRESTfulサービスはURLを持ち、HTTPの利点を活用しているので、この定義に当てはまるが、WS-*もRESTfulもブラウザで活用されているとは言えない。

[...] せいぜいXMLやJSONでバイナリオブジェクトを取得するくらいで、リンクは使いません。例外はありますが(ハイパーメディアAPIを使おうとしている人たち)、あくまで例外です。

それゆえ、別の狭い定義が生まれる。つまり、ブラウザでできるあらゆること、という定義だ。この定義には、URLを持っているすべてが含まれるのは明らかだが、ブラウザを除外してしまうとURL、HTTP、HTMLを使うものを排除してしまう。

“ブラウザでできるあらゆること”という見方は、ウェブプラットフォームと言われるものに進化しています。[...] そしてウェブプラットフォームという見方は、W3Cでも中心的な考え方です。W3Cではウェブをプラットフォームに転換して、脅威と競争できるようにしようとしています。つまり、iOSとAndroidと競争できるようにしようとしているのです。

しかし、Mark氏が指摘するように、この定義は万人に当てはまるものではない。

Mark氏はRoy氏の考えに賛同しており、ブラウザを使っていないユーザにとっても便利なのがウェブであると考えている。一方、ウェブプラットフォームが興味深いのは、互換性と標準について考える場合だ。

それゆえ、ウェブを“プラットフォーム”と考えると、さまざまな疑問が吹き上がってくるのです。

例えば、標準の拡張ポイントの定義は普通、何らかの形式の調整が必要だ。例えば、IETFのレジストリの利用だ。しかし、ウェブプラットフォームの中心的なコンポーネントがブラウザと考えると...

[...] レジストリも名前空間も必要ありません。仕様がブラウザの実装を正確に反映しているのであれば、仕様を変更すればいいだけです。となると、ブラウザが支配するウェブでは、ブラウザ以外のソフトウエアはブラウザの挙動から離れられません。離れてしまうと互換性の問題が生まれ、ソフトウエアとしての価値が下がってしまうからです。従って、ブラウザは型にはまったやり方で進化し、仕様の中でどのように動作しているか文書化されます。面倒なレジストリは必要ないのです。

氏が指摘するように、これは、WebCryptoの仕様で実践されている。どのアルゴリズムが有効かを文書化しているのだ。ブラウザの開発者は互換性と相互運用性を実現したいので、仕様に忠実に実装する。それゆえ、この方法はうまくいくので、他のブラウザ起因の仕様やAPIでもうまくいくと考えられる。しかし、自体が明確でない場合は問題が起こる。例えば、

例えば、HTTP-landでは、クローラやテストツールのようなユーザエージェントはブラウザをまねしようとしていますが、他はブラウザと関係しようとしません。リンクの関連は幅広く使われているので、HTML5の仕様を変えることはできません。したがって、ウィキを使います。そして、IETFの仕様でもまったく同じことを議論しています

Mark氏によれば、ブラウザにフォーカスしてウェブを考えると面白い解決策が生まれるのは、バージョニングだ。現在、多くのブラウザの実装がリリースサイクルを短くしており、自動で更新するようになっている。それゆえ、特定のバージョンのHTMLをリリースするのは、役に立たない。現時点で何が実装されているかが重要になるからだ。

これによって、仕様は“生きている標準”となります [...] 例えば、頻繁に更新されるドキュメントは、ドキュメントの自然な進化の過程で更新されるだけでなく、バグ修正やサンプルの改善、ウェブの実際の姿の反映などでも更新されるようになります。

しかし、この方法の場合、ブラウザ以外の関係者にとって不都合が起こる。

例えば、政府の方針に従う条件を定義したい場合、うまくいきません。ドキュメントを参照するのも問題を含むようになります。

ひとつの仕様ですべてを満たすことはできない。Mark氏は、この"ウェブでの"バージョニングに対するアプローチはケースバイケースで行われるようになると考えている。HTTPなどのバージョニングは注意深く行われるだろう。しかし、HTMLなどについてはそうではないはずだ。興味深いことにW3Cはドキュメントのある"期間"の仕様を参照したいというユーザのために、生きた標準のスナップショットを公開する方向に動いているように思われる。もちろん、これは破壊的な(互換性のない)変更の扱い方について問題を引き起こす。

HTMLの場合は、そのような仕様は参照しないか、参照して互換性の問題に対処するのどちらかが対処方法です。APIの変更のような他のケースの場合、新しい名前でリリースすることで、互換性の問題が起きないようにできます。新しいものの仕様は“生きている"ということを念頭に置く必要があります。

このウェブの定義はブラウザにとってどのような意味があるのだろうか。Mark氏が説明するように、ブラウザは長い間、ウェブの支配的なクライアントであった。

[...] 今、私たちは電話テレビ自動車など多くのものがウェブの一部になりつつあります。より多くのデバイスをウェブの一部にしようとする圧力、そして、中国やインドでの従来とは違うブラウザの出現によって、“ブラウザに従う”というモデルが成り立つかどうかわかりません。

氏が言うように、ウェブとは何かという問いは単純で、誰もが答えを知っていると考えているが現実は少々違う。ウェブが進化するにつれ、HTTPのようなプロトコルやブラウザがさらに変化し、モバイルやモノのインターネットから影響を受ける。 "ウェブ上の"ものも"ウェブとは何か"という問いも変わらざるを得ないだろう。

この記事に星をつける

おすすめ度
スタイル

BT