HTML5Experts.jp

開発者によるWeb標準化を可能とする「Extensible Web」とは?

Extensible Webとは?

W3Cの標準化担当者・Web開発者が支持を表名している、「Extensible Web」という概念をご存知でしょうか? Extensible Webとは、一言で表すと、標準化組織であるW3Cとブラウザベンダだけでなく、 Web開発者も巻き込んでWebの未来を拡張していこう、という考え方のことです。

本記事では、Extensible Webの登場背景、その内容について紹介いたします。

登場の背景

これまでのWebの新機能は、長い年月をかけてブラウザベンダによって開発されてきました。 そのため、多くの場合、Web開発者がブラウザへフィードバックをするには、 まずブラウザ側の機能実装を待つ必要がありました。

しかし近年、Webの開発者が先導して、ブラウザの新機能へ影響を与えるケースが出てきています。 例えば、querySelector や、Object.observe が具体例です。 これらの例は、以下のフィードバックループによって生まれてきています:

  1. Web開発者が自身が必要とするユースケースに沿ってAPI(ライブラリ)をデザインする
  2. Web開発者は、他の開発者が作成するAPIと切磋琢磨し、自身のAPIを洗練させていく
  3. 洗練されたAPIの中から、ブラウザが実装すべき基本的な機能が抽出される(ブラウザがNativeに実装すればパフォーマンスが向上し、かつライブラリのコードも小さくできる)

Webに本当に必要な機能を生み出すためには、 上記のように、ユースケースに沿った実践的なフィードバックループを回すことが重要です。

既にこのプロセスはWeb標準化にも取り込まれています。例をあげると、

ライブラリ例 標準化された例
jQuery querySelector
Ember, AngularJS Object.observe
Sass, Less CSS Variables

といったところが代表的でしょう。例えば、セレクタを用いたDOM操作は jQuery で実践的に有効性が示され、querySelectorとして標準化されました。これにより、jQueryのパフォーマンスは向上し、さらに Zepto.js のような軽量化ライブラリが登場・・・といったWebの好循環を起こしました。

一方、ユースケースの考慮が浅いまま実装されてしまったAPIは、 結果的に実践にそぐわず、憂き目にあってしまうケースが多々見受けられます。(その代表的な例が、Application Cache です)

これまで説明してきたフィードバックループを、 Webを構成するHTML・CSS・JS等の様々な分野で更に展開できるといいのですが、 現在のWebを取り巻く環境では限界があります。なぜならば、
 「Web開発者が、拡張(extend)できるポイントが少ない」
ためです。 例えば、CSSの構文を拡張するのは、既存の拡張ポイント(API)では困難であるため、 そもそもフィードバックループを回しはじめることが出来ません。

Extensible Web Manifest

もし、Web開発者が拡張できるポイントが多くあれば、 言い換えれば、低レベルのAPIがWeb開発者に公開されるとしたら、どうなるでしょうか? Web開発者が実際に必要とするケースに沿って、 さらに多くのAPIやライブラリを開発できるようになります。

このような考え方は、Extensible Web Manifestoにまとめられています。

Extensible Web Manifesto

Extensible Web Manifestoでは、ExtensibleなWebのプラットフォームの設計原理として、 以下の点を提言しています:

(Extensible Web Manifestoより抜粋、意訳)

Focus on adding new low-level capabilities to the web platform that are secure and efficient.

安全で効率的な、新たな低レベル機能をWebのプラットフォームに追加する

Expose low-level capabilities that explain existing features, such as HTML and CSS, allowing authors to understand and replicate them.

既存の機能(HTMLやCSS)が、これら低レベル機能によりどのように実装されるかを示すことで、開発者の理解を促進し、複製を可能とする

Develop, describe and test new high-level features in JavaScript, and allow web developers to iterate on them before they become standardized. This creates a virtuous cycle between standards and developers.

新機能の開発、表現、テストをJavascriptで実施し、標準化の前にWeb開発者が参画できるようにする。これにより、Web開発者と標準化担当者の間で素晴らしいサイクルが実現される

Prioritize efforts that follow these recommendations and deprioritize and refocus those which do not.

上記のような提言に沿った取組みの優先度を高くし、そうでないものは優先度を低くするか、もう一度フォーカスを練り直す

原典ではそれぞれの項目について、更に詳細な記載がありますので、興味のある方は参照ください。

Extensible Webの今後

Extensible Web Manifestoは、標準化団体であるW3C・各種ブラウザベンダ(Google, Mozilla等)・著名ライブラリの開発者が支持を表明しており、今後より具体化していくことが期待されます。

具体的な活動の一部として、フェイスツーフェイスのミーティングも既に開催されています。 そこで次回の記事では、2014年9月11日にドイツ ベルリンで開催された Extensible Web Summit の議論模様を紹介いたします。