Extensible Webとは?
W3Cの標準化担当者・Web開発者が支持を表名している、「Extensible Web」という概念をご存知でしょうか? Extensible Webとは、一言で表すと、標準化組織であるW3Cとブラウザベンダだけでなく、 Web開発者も巻き込んでWebの未来を拡張していこう、という考え方のことです。
本記事では、Extensible Webの登場背景、その内容について紹介いたします。
登場の背景
これまでのWebの新機能は、長い年月をかけてブラウザベンダによって開発されてきました。 そのため、多くの場合、Web開発者がブラウザへフィードバックをするには、 まずブラウザ側の機能実装を待つ必要がありました。
しかし近年、Webの開発者が先導して、ブラウザの新機能へ影響を与えるケースが出てきています。
例えば、querySelector
や、Object.observe
が具体例です。
これらの例は、以下のフィードバックループによって生まれてきています:
- Web開発者が自身が必要とするユースケースに沿ってAPI(ライブラリ)をデザインする
- Web開発者は、他の開発者が作成するAPIと切磋琢磨し、自身のAPIを洗練させていく
- 洗練された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のプラットフォームの設計原理として、 以下の点を提言しています:
(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 の議論模様を紹介いたします。