ダウンイベントによるタップ操作の実行

いつからでしょうか、X (旧 Twitter) の iPhone アプリでタイムラインをスクロールしていると、唐突に無関係なウェブページが開いてタイムラインの閲覧が阻害されることがあります。タイムライン上の広告ポストにたまたま指が触れただけで、特にそれをタップしよういう意図がないにもかかわらずリンクが実行されてしまうという挙動です。

ユーザーは、見たいと思っていなかったコンテンツに強制的に誘導され、そのうえ、自分で元のコンテンツに戻る操作をしなければならないので面倒です。広告効果を狙った実装かとは思いますが、ユーザー体験としては問題があるような気がします。

さらにこの実装は、アクセシビリティの観点でも問題であると指摘しておきたいと思います。

W3C 勧告の Web Content Accessibility Guidelines (WCAG) には「2.5.2 ポインタのキャンセル」という達成基準 (レベル A) があります。シングルポインタ操作 (1本指やマウスによる、クリック、タップ、ドラッグ、スワイプなど) は基本的にダウンイベントでは実行しないことが規定されており、つまり「指を画面に下ろした (指が画面に触れた)」ことをもって即、タップを実行しないことが求められています。

そもそもタップという行為は「画面の一点に指を下ろす → そこから指を離す」という一連の動作であり、アップイベント、つまり指が画面から離れたことをもってタップ操作が実行されるのが合理的です。HTML の標準的なコントロール (リンクやボタン) も、アップイベントでクリック / タップが実行されるようになっています。

とりわけスマートフォンなどのタッチインターフェースでは、画面表示をスクロールしたりパンしたりするのに、タップ可能なオブジェクトについ指が触れてしまうことがよくあります。この「つい触れてしまった」瞬間のダウンイベントをもって偶発的に機能が実行されてしまうのを防ぐことが、この達成基準の意図するところです。ユーザーの障害によっては、その後の元に戻す操作が高負荷であったり、あるいは不意にそれまで見ていたコンテンツが消えることで混乱やパニックを引き起こす恐れがあるのです。

X (旧 Twitter) の iPhone アプリにおけるダウンイベントによる広告のタップの実行は、この達成基準に抵触する、実は数少ない事例のひとつです。個人的にはウェブアクセシビリティのトレーニングの場で、格好のアンチパターンとして取り上げていたりするのですが、実際には多くのユーザーがストレスを感じつつ我慢しているのが現状かと思われるので、改善されることを願うばかりです。(ちなみにウェブ版や Android アプリでは、このようなダウンイベントによるタップの実行は確認できませんでした。iOS アプリだけの独自実装なのかなという気がしています。)


なお、Web Content Accessibility Guidelines (WCAG) はウェブコンテンツを対象としたガイドラインであり、モバイルプラットフォームのネイティブアプリに直接適用されるものではありませんが、W3C が出しているグループノート「Guidance on Applying WCAG 2 to Non-Web Information and Communications Technologies (WCAG2ICT)」および「Guidance on Applying WCAG 2.2 to Mobile Applications (WCAG2Mobile)」に準じ、より広く「デジタルアクセシビリティ」という観点から、アプリにおいてもウェブと同等のアクセシビリティが望まれるところです。