矢倉 眞隆

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

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

W3CTPACという大きなイベントも終了し、またホリデーシーズンに入ったこともあり、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標準

  • 12月3日付けで、CSS ShapesがCSS WGよりLast Callとして公開されました。大きな変更はTPACでのF2Fにて決定された構文の変更が仕様書に反映されたことでしょうか。
  • 12月3日付けで、High Resolution Time Level 2の草案がWeb Performance WGより初公開にしてLast Callというすっとんだかたちで公開されました。Level 2での機能追加は今のところWeb Workersでのサポートとなっています。
  • 12月5日付けで、CSS Object Modelの草案がCSS WGより公開されました。カスケードされた後のスタイルや利用されるスタイルといったスタイルを取得するインターフェースや、CSSOMとしてセーフな値にするCSS.excape()メソッドなどが新たに定義されています。
  • 12月10日付けで、DOM Parsing and SerializationがWebApps WGよりLast Callとして公開されました。innerHTMLinsertAdjacentHTML()を定義する仕様です。
  • 12月12日付けで、Performance TimelineUser Timingが勧告されました。
  • 12月17日付けで、Pointer LockがWebApps WGより勧告候補として公開されました。
  • 12月17日付けで、Input Method Editor APIの草案がWebApps WGより公開されました。IMEの候補ウインドウを描画するAPIが削除されたほか、Microsoftが提案したイベントやインターフェースが追加されました。

週間PVランキング

新着記事

Powered byNTT Communications

tag list

アクセシビリティ イベント エンタープライズ デザイン ハイブリッド パフォーマンス ブラウザ プログラミング マークアップ モバイル 海外 高速化 Angular2 AngularJS Chrome Cordova CSS de:code ECMAScript Edge Firefox Google Google I/O 2014 HTML5 Conference 2013 html5j IoT JavaScript Microsoft Node.js Polymer Progressive Web Apps React Safari SkyWay TypeScript UI UX W3C W3C仕様 Webアプリ Web Components WebGL WebRTC WebSocket WebVR