HTML5Experts.jp

Shared Workers復活?、CSSOM View更新ほか、2013年12月のWeb標準化動向

連載: WEB標準化動向 (3)

TPACという大きなイベントも終了し、またホリデーシーズンに入ったこともあり、12月のW3Cはとても静か…と思いきや、結構な数の仕様に更新ありました。

また、先月ちょっとだけ取り上げたShared Workersの今後について議論されるなど、思ったよりも動きのある12月でした。

Shared Workers復活!?

先月の記事にて、WebApps WGのF2FにてShared Workersが削除されることを取り上げました。これはShared Workersの実装が乏しく、2つ以上の実装という勧告への要件を満たせないという懸念を受けてのアクションです。

しかし12月に入り、FirefoxがShared Workersを有効にしました(Firefox 29より利用可能となります)。

これを受け、Shared Workersを削除する必要があるのかといった議論が、WebApps WGのメーリングリストで交わされています。議論の中で実はPrestoも実装していたという話も出てきて、こないだの話はなんだったのだろう感が否めません。

とはいえ、この議論が出てきたのはその実装状況が不明だった、テストスイートによる検証がなされていなかったなど、現状把握を誰も行っていなかったことに起因します。メーリングリストでは、その後各ベンダーの担当者にWeb Workersのテストスイートを実行するよう要請したことで、実装状況と相互運用性の状況がわかりつつあります。

議論を追うとテストケース自体への問題も指摘されており、Shared Workersが削除されるというよりもWeb Workers自体の問題に移行しているようです。

なお、Web Workersについてはいくつか機能追加の要望もあり、Level 2仕様への希望も出ました。CanvasのImageDataをWorkersで扱うインターフェースなどはすでにWHATWG HTMLで提案中ですが、synchronous message channelsなど別の機能も求められているようです。

冬休みに入ったためか議論が止まってしまい、今後は以前不透明です。とはいえ、実装が増えたことはShared Workersについて明るいニュースだったのではないでしょうか。

CSSOM Viewが更新 ― devicePixelRatio、スムーズスクロール機能が追加

2013年12月17日付けで、CSS WGから新しいCSSOM Viewの草案が公開されました。

CSSOM ViewはCSS関連のオブジェクトモデルのうち、ブラウザやシステムに関わるプロパティを定義する仕様です。古くからあるclientWidthgetBoundingClientRect()、比較的最近ではmatchMedia()などが定義されています。

今回の草案の見どころは、window.devicePixelRatioとスムーズスクロール関連の機能が定義されたことでしょうか。window.devicePixelRatioプロパティはAppleが高解像度モードのためにWebKitに導入した独自拡張で、Retina Displayをはじめ高密度ディスプレイへの対応をする際に使われています(ちなみにこのプロパティ、iPhone 4で初めてRetina Displayが登場するよりもずっと前の2006年に実装されています)。他のベンダーも追従し、最近ではIE11でも実装されました。

今回のCSSOM Viewではブラウザのズームとピンチズームの概念も導入され、さらにdevicePixelRatioがブラウザズームの影響を受けると定義されました。これはGecko, Blink, Tridentの挙動に沿ったものですがWebKitの実装はそうではなく、Appleはこの定義に反対しています(WebKitではブラウザのズームにも、画面解像度の変更においてもdevicePixelRatioの値が変化しません)。

スムーズスクロール機能は現在、JavaScriptライブラリやスニペットを使って実装されていますが、タイマーを使ってちまちまscrollTo()をするものであまり効率が良い感じがしません。 今回の草案では新たにscroll-behaviorプロパティというCSSプロパティが定義されました。scroll-behavior: smoothと指定すれば、対応する実装がネイティブのスムーズスクロールを利用するよう支持できます。

ほかにも、新たなメソッドmoveTo()moveBy()resizeTo()resizeBy()の導入や、resizeイベントとscrollイベントが定義されたりなど盛りだくさんです。

続CSSOM View ― PPK氏によるDPR調査など

ブラウザの互換性調査などで有名なPeter-Paul Koch氏が、devicePixelRatioやズーム、screen関連のDOMプロパティについてコメントを寄せました。デスクトップのページズームはdevicePixelRatioに影響させるすべきでないなど、今の流れと正反対の意見を唱えており、ちょっとした議論になりました。

CSSOM Viewはもともとあまり互換性のなかったデスクトップブラウザ間の挙動を、なんとか合わせるために策定が始まりました。しかしviewportやデバイスピクセル比などモバイルからもたらされた概念が関わり、さらにはブラウザのバグなどもあり混沌としています。今回の議論は、そういった概念の整理に加え、現在出回っているモバイルブラウザの挙動と、プラットフォームとしてどうあるべきかという仕様の方向が異なっていることも背景にありそうです。

なお、デバイスピクセル比については、ほかにもresolution媒体特性が返す小数点の位がとる幅について議論されています。

仕様の断片化にどう対処するか

Jens O. Meiert氏がHTML WG、CSS WG、WHATWGに、仕様の断片化についてアドバイスをしていました。

CSSはモジュール化というアプローチで策定されていますが、氏は以前より機能が増えすぎていることを問題視していました。また、CSSモジュールだけではなく、WHATWG仕様の一部やHTML仕様、SVGでもセレクタやプロパティが定義されてることに触れ、見通しの悪さも指摘しています。

HTMLについても、WHATWG HTMLとW3CのHTML5、それにHTML 5.1と細かなバリエーションがあります。氏は触れていませんが、拡張仕様やHTML仕様が参照するいくつかのDOM仕様も含めると、HTML関連仕様も数がかなり多くなりそうです。

Meiert氏は、実装する方においては都合がよいかもしれないが、開発者は複数の仕様の違いに戸惑うことを問題視しています。仕様の断片化についてはW3Cの勧告プロセスにあるのではないかと思いますが、たしかに仕様の分割が頻繁で、どの機能がどこにあるのかがわからなくなることしばしばと思います。

Custom Elementsのメソッド名が変更

いろんな「今年注目すべきWeb技術」的エントリで、ここ数年取り上げら続けているWeb Componentsですが、そのいち仕様であるCustom ElementsについてAppleよりコメントが寄せられました。Custom Elements仕様はWeb Componentsの独自の要素を定義するための仕組みを用意します。要素を定義するためのメソッドはこれまでdocument.register()という名前でしたが、registerという単語1語の名前が汎用的すぎるといったコメントが寄せられました。

こういった名前に関する指摘は自転車小屋の議論に陥りやすく、W3Cで過去に起こった同様の議論でもあまりいい解決を見たことがありません。しかしながら、今回はApple, Mozilla, Googleなどベンダーの開発者からのフィードバックもあり、それなりに思慮深い話になった感じがします。

結果として、仕様はdocument.registerElement()を使うことになりました。Chromeの実装も変更されています。

その他12月に公開されたWeb標準