Experts.jp日本に、もっとエキスパートを。(3)TPACという大きなイベントも終了し、またホリデーシーズンに入ったこともあり、12月のW3Cはとても静か...と思いきや、結構な数の仕様に更新ありました。Workersの今後について議論されるなど、思ったよりも動きのある12月でした。Workersが削除されることを取り上げました。Workersの実装が乏しく、2つ以上の実装という勧告への要件を満たせないという懸念を受けてのアクションです。29より利用可能となります)。WGのメーリングリストで交わされています。議論の中で実はPrestoも実装していたという話も出てきて、こないだの話はなんだったのだろう感が否めません。いえ、この議論が出てきたのはその実装状況が不明だった、テストスイートによる検証がなされていなかったなど、現状把握を誰も行っていなかったことに起因します。Workersのテストスイートを実行するよう要請したことで、実装状況と相互運用性の状況がわかりつつあります。Workers自体の問題に移行しているようです。2仕様への希望も出ました。channelsなど別の機能も求められているようです。冬休みに入ったためか議論が止まってしまい、今後は以前不透明です。Workersについて明るいニュースだったのではないでしょうか。Viewの草案が公開されました。ViewはCSS関連のオブジェクトモデルのうち、ブラウザやシステムに関わるプロパティを定義する仕様です。古くからあるclientWidthやgetBoundingClientRect()、比較的最近ではmatchMedia()などが定義されています。今回の草案の見どころは、window.devicePixelRatioとスムーズスクロール関連の機能が定義されたことでしょうか。Displayが登場するよりもずっと前の2006年に実装されています)。他のベンダーも追従し、最近ではIE11でも実装されました。Viewではブラウザのズームとピンチズームの概念も導入され、さらにdevicePixelRatioがブラウザズームの影響を受けると定義されました。Tridentの挙動に沿ったものですがWebKitの実装はそうではなく、Appleはこの定義に反対しています(WebKitではブラウザのズームにも、画面解像度の変更においてもdevicePixelRatioの値が変化しません)。スムーズスクロール機能は現在、JavaScriptライブラリやスニペットを使って実装されていますが、タイマーを使ってちまちまscrollTo()をするものであまり効率が良い感じがしません。今回の草案では新たにscroll-behaviorプロパティというCSSプロパティが定義されました。smoothと指定すれば、対応する実装がネイティブのスムーズスクロールを利用するよう支持できます。ほかにも、新たなメソッドmoveTo()、moveBy()、resizeTo()、resizeBy()の導入や、resizeイベントとscrollイベントが定義されたりなど盛りだくさんです。Koch氏が、devicePixelRatioやズーム、screen関連のDOMプロパティについてコメントを寄せました。デスクトップのページズームはdevicePixelRatioに影響させるすべきでないなど、今の流れと正反対の意見を唱えており、ちょっとした議論になりました。Viewはもともとあまり互換性のなかったデスクトップブラウザ間の挙動を、なんとか合わせるために策定が始まりました。viewportやデバイスピクセル比などモバイルからもたらされた概念が関わり、さらにはブラウザのバグなどもあり混沌としています。今回の議論は、そういった概念の整理に加え、現在出回っているモバイルブラウザの挙動と、プラットフォームとしてどうあるべきかという仕様の方向が異なっていることも背景にありそうです。デバイスピクセル比については、ほかにもresolution媒体特性が返す小数点の位がとる幅について議論されています。WG、WHATWGに、仕様の断片化についてアドバイスをしていました。MeiertCSSはモジュール化というアプローチで策定されていますが、氏は以前より機能が増えすぎていることを問題視していました。CSSモジュールだけではなく、WHATWG仕様の一部やHTML仕様、SVGでもセレクタやプロパティが定義されてることに触れ、見通しの悪さも指摘しています。5.1と細かなバリエーションがあります。氏は触れていませんが、拡張仕様やHTML仕様が参照するいくつかのDOM仕様も含めると、HTML関連仕様も数がかなり多くなりそうです。Meiert氏は、実装する方においては都合がよいかもしれないが、開発者は複数の仕様の違いに戸惑うことを問題視しています。仕様の断片化についてはW3Cの勧告プロセスにあるのではないかと思いますが、たしかに仕様の分割が頻繁で、どの機能がどこにあるのかがわからなくなることしばしばと思います。ElementsについてAppleよりコメントが寄せられました。Componentsの独自の要素を定義するための仕組みを用意します。要素を定義するためのメソッドはこれまでdocument.register()という名前でしたが、registerという単語1語の名前が汎用的すぎるといったコメントが寄せられました。document.register()こういった名前に関する指摘は自転車小屋の議論に陥りやすく、W3Cで過去に起こった同様の議論でもあまりいい解決を見たことがありません。Googleなどベンダーの開発者からのフィードバックもあり、それなりに思慮深い話になった感じがします。結果として、仕様はdocument.registerElement()を使うことになりました。Chromeの実装も変更されています。Callとして公開されました。大きな変更はTPACでのF2Fにて決定された構文の変更が仕様書に反映されたことでしょうか。Callというすっとんだかたちで公開されました。Workersでのサポートとなっています。WGより公開されました。カスケードされた後のスタイルや利用されるスタイルといったスタイルを取得するインターフェースや、CSSOMとしてセーフな値にするCSS.excape()メソッドなどが新たに定義されています。Callとして公開されました。innerHTMLやinsertAdjacentHTML()を定義する仕様です。Timingが勧告されました。WGより勧告候補として公開されました。WGより公開されました。IMEの候補ウインドウを描画するAPIが削除されたほか、Microsoftが提案したイベントやインターフェースが追加されました。