Chrome Dev Summit 2014 - Polymer - 労働組合の状況

Polymer と Web Components は、昨今非常に話題のトピックです。このエコシステムは急速に進化しているため、デベロッパーが最新の変更をすべて把握することはしばしば困難です。

Chrome Dev Summit での講演で、Polymer チームのエンジニアリング マネージャーである Matt McNulty が、Polymer とは何かを説明し、Polymer 1.0 へのロードマップの概要も説明しています。

Polymer とは

まず、Polymer とは何でしょうか。

Polymer は、ウェブ コンポーネントから要素やアプリを作成するためのライブラリです。Web Components は、デベロッパーが独自のカスタム要素を使って HTML ボキャブラリを拡張できるようにする最先端の新しい標準セットです。

デベロッパーによるアプリケーション構築の迅速化に役立つ Polymer

Web Components はブラウザの新しいプリミティブとして設計されているため、非常に高機能ですがレベルが非常に低く、操作するにはかなりのコードが必要です。

Polymer により Web Components の魅力を高める

Polymer では、構文を「糖化」することにより、ウェブ コンポーネントを簡単に処理できます。記述する必要のあるボイラープレート コードの量が減り、宣言型スタイルが追加されるため、HTML を記述するのと同じくらい簡単に Web Components を作成できます。

ポリマーのテスト

Polymer は、Web Component の標準をポリフィルして、すべてのブラウザに搭載される前に開発者からのフィードバックを得ることができるかどうかの実験として始まりました。多くの開発者が Polymer を使い始めるにつれ、Polymer は単なるポリフィルから、生産性機能(データ バインディング、属性変更ウォッチャー、自動ノード検出など)が満載の実際のライブラリへと変化しました。とはいえ、あらゆるテストで結果が出たのです。では、これをどのように実現したのでしょうか?

Polymer レポートカードの改善が必要です

多くのデベロッパーが、Polymer で Web Components を使用することで表現力や生産性の向上を気に入ったと回答していますが、パフォーマンスや全体的な複雑さに関する懸念も表明しています。

これまでに Polymer が築いてきた自然な緊張感を浮き彫りにしています。ウェブ プラットフォームを前進させる実験でありながら、デベロッパーが信頼できる本番環境に値する何かを生み出すこともできます。

今後予定されている変更

Polymer チームは、開発者が安心して使用できる、よりスリムな本番環境に対応したバージョンを改良することを目標に、ライブラリのすべての機能を入念に確認してきました。

レイヤ

Polymer が一連のレイヤにリファクタリングされました。コア機能は高速かつ無駄のない機能ですが、高度な機能はオプトイン方式です。大部分のユースケースでは、コア機能でデベロッパーのニーズをカバーする必要があります。

ポリマーをレイヤにリファクタリングする

シンプルなデータ バインディング

Polymer のデータ バインディング システムも、パフォーマンスのために大幅に最適化されています。階層型アプローチに沿って、双方向バインディングがオプトインされ、デフォルトは一方向バインディングになりました。また、公開済みのプロパティのタイプが明示的に示され、プロパティの変更時にイベントがトリガーされ、異なるライブラリの要素のやり取りが容易になりました。

データ バインディングが簡素化されました

Leaner Shadow DOM

Shadow DOM のポリフィルは、驚くほど優れたエンジニアリング性能です。包括的で仕様を遵守するよう設計されています。これはプラットフォーム プリミティブを徹底的にテストするために重要ですが、残念ながら Polymer が使用していない機能のパフォーマンスのボトルネックが生じます。

次のリリースでは、Polymer で必要な部分だけをポリフィルする shim スタイルのレイヤを採用するなど、異なるアプローチを取る予定です。

シムのシャドーダムははるかに速い

既存のポリフィルは、ポリマー以外の汎用ウェブ コンポーネントでも引き続き有効です。

webcomponents.org への移行

ポリフィルといえば、それらも新しい家にいます。現在、多くのデベロッパーが、Polymer と Web Components の関係について混乱しています。ウェブ コンポーネントを使用するには、実際にはポリフィルしか必要ないのに、すべての Polymer を使用する必要があると考える人もいます。

この区別を明確にするために、ポリフィルの名前を webcomponents.org に移動し、名前を webcomponents.js に変更しました。

ポリフィルを webcomponents.org に移行

今回の移動は、他のライブラリ作成者が混乱することなくポリフィルを利用できるようにすることを目的としています。Polymer チームは引き続きポリフィルへの貢献を続けていきますが、この変更によって、コミュニティにとってより多くの共有リソースになることを期待しています。

結果

では、これらの変更からどのような結果が得られるでしょうか。

スピード

Chrome では Polymer が 5 倍高速に、Safari では 8 倍の速度になりました。

Safari での Polymer の処理速度が 8 倍に

ファイルサイズ

また、ファイルサイズも 87% 削減され、123 KB から 15 KB(6 KB(gzip で圧縮))になりました。

ポリマーを 87% 小さく

ロードマップ

次のリリースでは、API の互換性を破る変更がいくつかあり、これは新しいバージョン番号(0.8)で示されますが、これは書き換えではないことをはっきりさせたいと考えています。現在のプロジェクトを Polymer 0.5 から 0.8 に移行するのは簡単です。

Polymer チームは、デベロッパーの皆様が今後のリリースをより明確に把握できるよう、ロードマップも作成しています。

Polymer ロードマップ、ベータ版(第 1 四半期)、1.0(第 2 四半期)

現在、0.8 プレビュー版が GitHub のブランチとして公開されています(ただし、まだかなり積極的に開発が進められているため、ドキュメントが不足しています)。0.9 の公式ベータ版は 2015 年第 1 四半期に、1.0 は第 2 四半期中にリリースされる予定です。

テストが終了しました

Polymer の最近の変更により、背後にあるチームは、Web Components があらゆる開発者のスタックの不可欠な部分となるための土台を築いています。Web Components に初めて接する方は、これらの革新的なテクノロジーに目を通し、よく理解する絶好の機会です。すでにコンポーネント(および Polymer)を使って作業している方なら、間違いなく明るい未来が訪れるはずです。すべての最新情報については、Polymer ブログをご覧ください。また、質問やご意見がある場合は、Polymer のメーリング リストに登録してください。ご利用をお待ちしております。