W3C、マウス、タッチ、ペン入力などを同一コードで統合的に扱える「Pointer Event」を勧告に。しかしChromeは実装しない方針

2015年3月19日

W3Cは2月24日、マウス、タッチ、ペン入力などを統合的に扱える「Pointer Events」を勧告にしたと発表しました(CSSのpointer-eventsとは別のものです)。

Web標準では、以前からマウスを想定したイベントが用意されており、2013年にはタッチ操作によるイベントを扱う「Touch Event」の標準化も行われました。

fig Pointer Events」のドキュメントから引用

入力手段としてのマウスやタッチ、ペンにはそれぞれ異なる特性があります。マウスの場合にはクリックやダブルクリックがあり、タッチでは同時に複数の指による操作があり、ペンでは筆圧の属性があるといった具合です。

Pointer Eventsはこうしたそれぞれの特性を持つ入力手段を統合的に扱えるようにした仕様です。

Internet Explorer 10は実装済みだが、Chromeは実装をjQueryに任せる

Pointer EventsはW3C勧告になったものの、主要なブラウザでの実装は十分とは言えない状況です。

HTML5のブラウザごとの実装状況を調査しているWebサイト「Can I Use」によると、Pointer Eventsの実装は現時点でInternet Explorer 11で実装されているのみ。Firefoxも標準では使えず、オプションスイッチを切り替えることで利用可能になると説明されています。

fig

そしてChrome(の基となるChromium)では、Pointer Eventsを実装しないことが開発者の議論の末の結論として表明されています

InfoQの記事「jQueryはGoogleからPointer Events Polyfillを引き継ぐ」で、なぜChromeでPointer Eventsを実装せず、Touch Eventsを使うのか、その理由が紹介されているので引用しましょう。

  • Mobile First。 Pointer Eventsは、“desktop-firstの視点”では意味をなすが、Googleはmobile-firstの世界にいると考えている。結果として、“touch eventsはとどまるためにそこにいて”、Web開発者は彼らのためにコーディングを学ぶ必要があり、Chromeはそれをサポートする必要がある。彼らの望みは“クリーンで、タッチをリッスンするだけの既存のネイティブモバイルプラットフォームのように私たちのストーリーを作る”ことである。
  • パフォーマンス。 GoogleによるとPointer Eventsは、ネイティブモバイルとは違い“ヒットテストと二重イベントディスパッチの負荷”にフレームタイムの~2.5%を消費するという。また“pointer move/enter/leave/over/outハンドラーは、ほとんどのコードでタッチイベントを使っていた場合でも、ページのどこにおいてもヒットテストが必要になる。”
  • フィーチャー。“pull-to-refreshやスクロールのためのドラッグバブリングのようなスクロールインタラクションを許可”しないため、Googleは“スクロールのリッチさを犠牲にしたくはない”と主張している。

その代わり、ChromeでもPointer Eventsが使えるようにjQueryがChromeの機能を補完することもすでに表明されています。2014年12月17日付けで、jQueryのブログにポストされた記事「Improving the Pointer Events Polyfill」から。

Today, we’re excited to announce that Google has transferred its Pointer Events polyfill to the jQuery Foundation. This polyfill was originally written by Google’s Polymer team but since Google has chosen to put their Pointer Event implementation on hold, we engaged to ensure that the polyfill is maintained and continues to be a tool developers can use as a path to the eventual native implementation in all browsers.

本日、Pointer Events polyfill(注:pollyfillはWeb専門用語のようなものなので決まった訳語はないのですが補完や代替というような意味です)、GoogleからjQuery Foundationに移管したことを発表します。この補完は当初GoogleのPolymerチームによって開発されていましたが、GoogleはPointer Eventの実装を保留にすることにしたため、私たちがこれを継続し、最終的には開発者がどのブラウザでも使えるようなツールへとしていきます。

Pointer Eventsはもともとマイクロソフトが積極的に標準化を推進してきた一方、Googleはモバイルで主役となるTouch Eventを進化させていきたいと考えているため、このような状況になっているようです。

現状ではこの状況は当面変わらないと思われるため、Internet Explorer専用のWebアプリケーションを開発するのでなければ、Pointer EventsはjQueryを通じて利用するのが一般的になりそうです。

追記:jQueryライブラリではなく、そのままの名前となる「Pointer Events Polyfill」という別のJavaScriptで記述されたライブラリで実装されているようです。上記の記述は誤解しており、お詫びして訂正します。

追記2:4月1日付けで以下の記事を書きました「Chromeが方針を一転。マウス、タッチ、ペン入力などを同一コードで統合的に扱える「Pointer Event」を実装へ

あわせて読みたい

HTML/CSS Web技術 Web標準




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本