Web ComponentsとHTMLのセマンティクスと自分の将来予測

  • Custom Elements W3C Editor's Draft 18 June 2014を元に書いた。
  • 昔、関連仕様のどこかで今回と似た話を見た記憶が有るんだけど、どこにあったか忘れたので、改めて自分の解釈として書いてみる。

Custom Elementで既存の要素を拡張する

Web ComponentsのCustom Elementは独自の要素を定義することができるのだけど、新要素の導入以外にも、実際には既存の要素を拡張するという使い方ができる。

ElementRegistrationOptionsの、extendsプロパティというのがそう。

specの例では以下のようにp要素を拡張している(引用):

document.registerElement('x-foo', {
    prototype: Object.create(HTMLParagraphElement.prototype, {
        firstMember: {
            get: function() { return "foo"; },
            enumerable: true,
            configurable: true
        },
        // specify more members for your prototype.
        // ...
    }),
    extends: 'p'
});

var foo = document.createElement('p', 'x-foo');
<p is="x-foo">Paragraph of amazement</p>

セマンティクスとの兼ね合い

this element does not introduce a new tag (like the custom tag elements do)とあるように、type extensionsと呼ばれる既存要素の拡張では、新規の要素を導入するのではなく、既存の要素を拡張することになる。よって、要素のセマンティクスも引き継がれることになる(と解釈している)ので、構造化文書としてHTMLを記述する上では、安易に新しい要素を定義しない方が良いように思う。

また、要素が本来持つ機能・ないし支援技術サポートをそのまま引き継げることになるので、ちょっと見た目を弄る(CSSを組み合わせたパーツ)ようなものであっても同様だろう。もっとも、Shadow DOMと組み合わせてDOMイベントなどの制御を考えだすと逆に魔窟かもしれないが。

この辺り、実装がどのようになっているかは把握していないし、現行のWeb Components関連仕様全てを詳細に把握しているわけではないので、間違いがあったら御容赦願いたいです。

Web Components (Custom Element)の個人的な将来予測(雑感)

Web Componentsが流行した先の未来予測として、「コンポーネント化の仕組みが整備されることで、大コンポーネント時代のような時代が訪れるのではないか」という将来予測がある。それは概ね正しく、かつて一世を風靡したjQuery Pluginの百花繚乱時代がより洗練されて帰ってくるようなものなのだろう(コンポーネントのショーケースの到来については、興味も無いし、まだ始まったばかりなので言及しない)。

ただ、その一方で、それはjQuery Pluginが歩んだ負の道筋も同じように繰り返すのではないかとも予測している。今度こそ良貨が悪貨を駆逐するのかもしれないが、自分はその方面にはあまり期待をしていない。jQuery Pluginという歴史と、JavaScriptという文化圏がコンポーネント足りうる小粒のライブラリの決定版を生み出すことができずに、結局はフレームワーク頼みとなっている現状を振り返ると、そびえたつゴミの山は再び作られるのではないか。そうしたゴミの山の悉くは、実装もクソでAPIもクソでアクセシビリティとかも無考慮で、使用法を理解するよりも再発明した方が時間の節約なものの方が多いのではないか、WAI-ARIAもWCAGも全てが捨ておかれ、美しいエコシステムは到来せず、一部の泊のついたフレームワーク一門を使うか、自分で使うか、という何も変わらない世界が来るのではないかと悲観的になる。

Web Componentsの価値は、全てがグローバル空間に剥き出しだった断片が、コンポーネントとして整然と利用可能になるインフラストラクチャが構築されることにこそあり、端的に言えばShadow DOMのイベントのリターゲティングにこそあるという事実がもたらされるのだと考えれば、それだけで十分で、文化圏のエコシステムがまた破滅したとしても、問題ないのかもしれない。