GoogleはChromeでポインタイベントをメインのイベントタイプにしようとしている。これで、Appleを残して、Microsoft、Firefoxと肩を並べたことになる。
ChromeとBlinkのリードを務めているRick Byers氏は昨年、Blink/Chromeはポインタイベント(PE)を実装するつもりはないと発表した。Googleとして、数年間ワーキンググループで活動したにもかかわらず、だ。Byers氏はいくつかの理由を上げている。AppleがPEに反対したことで普及しなさそうだったこと、性能問題、スクロールのときにイベントをハンドルできないこと、などだ。さらにGoogleはPEのポリフィルライブラリをjQuery Foundationに預けている。
しかし、“ポインタイベントに高い価値があると考えているウェブ開発者やフレームワークの作者、ブラウザベンダからフィードバック”を受け、Byers氏はPEをChromeに実装すると発表した。Chromiumの課題のステータスはオープンになっており、Chromium Dashboardは作業が始まっていることを示している。また、Byers氏はMicrosoftのPEのチームと話し合い、性能問題に対処するためAPIの一部の変更をサポートすることを協議している。
私たちはByers氏にインタビューし、この動きについて話を聞いた。
InfoQ: 両方のタイプのイベントをサポートするデバイスに対してはどのように対処するつもりですか。ドキュメントが示しているようにTEをすべてPEに変換するのでしょうか。
RB: もし、PEをサポートするのなら、PEが第一優先のイベント型になります。ポインタイベントがハンドルされないのなら、タッチイベントかマウスイベント、もしくはその両方を発生させるでしょう。幸運なことに、このようなやり方をIEが既存のモバイルウェブとの互換性を保つために費やした努力を通じて知っています。IEの開発者たちは優れた設計を選択したと思います。ほとんどの点で、私たちは彼らの設計を仕様に取り込み、Chromeに実装したいと考えています(もちろん、詳細についてはいくつかの変更を加えることも可能です)。
InfoQ: MicrosoftのJacob Rossi氏はあなたと一緒に、あなたが抱えているかもしれないPEの問題を解決したいと表明しています。しかし、PEの仕様はW3Cの最終推奨の状態になっています。私が知る限り、小さな変更しかできないはずです。この問題にどのように対処するつもりですか。
RB: 新しいPEの仕様を策定し、重要なフィードバックに対応するという動きはすでに始まっています。これは新しいバージョンのPEの仕様のためにしなければならないことをひとつ増やしたに過ぎません(多少大きいですが)。変更がウェブ上の既存のコードと互換性を保つようにするのは、大きなチャレンジですが、互換性と私たちの関心事への対処の間の合理的かつ現実的なトレードオフを見つける方法を手に入れられると考えています。
InfoQ: "タッチ入力のときに、既定ではイベントを捕捉しないというモデルの場合、エンジンに性能上負荷をかけてしまう"のは、なぜでしょうか。
RB: 'move'イベントを受けるDOMノードに違いがあります。タッチの場合、touch-moveのターゲットになるのは、常にtouch-startを受けた要素です(これは"暗黙の捕捉"になります)。マウスと(デフォルトの)ポインタイベントの場合、ターゲットは常にその時点でポインタの下にある要素です。つまり、ブラウザはポインタが移動しているときに常に"ヒットテスト"をして、ポインタの下に何があるのかを探さなければなりません。CSSのレイアウトが複雑な場合、ヒットテストは複雑な処理になり、性能は予測できません。タッチ移動イベントが応答する場合、ブラウザとアプリケーションはイベント毎に16ミリ秒を使って、スムーズな60fpsの体験を保証します。この"フレーム予算"の中の処理を削減するのが、ブラウザエンジン上の最大の性能課題のひとつなのです。例えば、フレーム予算のたった2%をヒットテストが使ったとしても、馬鹿にならないコストが生まれます。開発者が明示的に"捕捉されない"挙動を求めない限り、エンジン側でこのコストを負担するべきではありません。
今や多くのウェブがタッチファーストで設計されています。ユーザを獲得するためには優れたモバイルのUXが重要だと開発者が気づいたからです。新しい入力APIはどんなものであれ、この現実をふまえ、直接操作方式のユーザのインタラクションへの対処を優先した設計にするべきだと思います。
GoogleはPEをChromeに実装する予定。AndroidやWebViewなどあらゆるプラットフォームのChromeに実装される。また、PEはSpartan/IE 10にも実装されている。PEへの反対を示し、態度をかえない大手ブラウザベンダはAppleだけだ。