iPhone 3Gが発表されたことで、日本でもiPhoneからWebアプリケーションにアクセスできるようになった。こうなってくるとより優れたユーザエクスペリエンスの実現のために、WebアプリケーションやWebページをiPhone対応にカスタマイズさせたくなる。もっとも重要なポイントのひとつは、これまでマウスイベントとして処理していた内容を指によるタッチイベントに変更することだ。1ポイントを指し示すマウスと異なり、iPhoneのタッチでは2箇所までポインティングが可能で、それらを組み合わせて回転や大小化指示を実施できる。

そこでNeil Roberts氏がSitePenに公開したドキュメントTouching and Gesturing on the iPhoneを紹介したい。同氏は開発と実験を通じてこの新しいイベント処理をわかりやすくまとめている。新しいAPIに対する同氏の困惑も含めて話がまとめられており、従来のマウスイベントからどういった違いがあるのか理解しやすい内容にまとまっている。iPhone対応のイベント処理を記述するにあたって有益な情報だ。

詳しくはTouching and Gesturing on the iPhoneを参考にしてほしい。概要を説明すると次のとおり。まず新しいイベントとしてtouch*が導入されている。

  • touchstart - 指を新しくスクリーンに触れた場合に生成されるイベント
  • touchend - スクリーンから指を離した場合に生成されるイベント
  • touchmove - 指をスクリーンに触れている間にスライドさせた場合に生成されるイベント
  • touchcancel - イベントがシステムによってキャンセルされた場合に生成されるイベント (システムによる介入時に使われるとみられる)

さらにイベントオブジェクトごとに次のリストを保持している。リストにはタッチしているポインティング情報が保持されている。

  • touches - スクリーンに触れている指ごとの情報
  • targetTouches - touchesと似た情報を保持しているものの同じノード内で開始されたタッチ情報に限定
  • changedTouches - そのときイベントが発生した指のタッチ情報

リストにはclientX、clientY、screenX、screenY、pageX、pageY、target、identifierなどの属性が含められている。つまり、イベントから直接属性値を取ってくるのではなく、イベントからリストを取り出し、そこから属性値を取ってきて処理を記述することになる。ここまで理解したらあとはサンプルコードを読んだ方が理解が早いだろう。

Touching and Gesturing on the iPhoneにはサンプルコードも記載されているので参考にしてみるとよさそうだ。iPhoneからアクセスすると動作するサンプルページも用意されている。

iPhoneに限らず、ノートPCのタッチパネルでも同様の機能が提供されるようになるなど、複数のポインティングデバイスに対応したプログラミングを実施する機会は今後増えることになるとみられる。X.Orgの次期バージョンとなるX.Org 7.4でも複数のポインタの同時使用を可能にするマルチポインタX(MPX)の導入が予定されている。複数ポインティングに対応したプログラミングが広く普及するのはこれからになるだろうが、開発者は一度同記事を読むなどして内容を検討しておくといいだろう。