d:id:naoya2k:20170610:p1 でSH-02Fとラブライブスクールアイドルフェスティバル(スクフェス)との相性が悪かった件について書いた。その後たまにスクフェスやアイドルマスターシンデレラガールズ(デレステ)をやっていたのだがどう考えても正しくタップしているつもりなのにMISS判定が出て納得が行かない現象が多発していてその原因を探っていた。
そのうち、特にデレステのほうで、交互連打のようなシチュエーションで頻繁に発生していたMISSの原因について、なんとなく推測がついた。
SH-02Fのタッチパネルは2本の指で交互連打を行うと、片方の指が画面から離れた直後にもう片方の指が画面についた場合に、1本指でスライドしたように入力されるのだ。だから交互連打の譜面が来たら正しくタップしていてもアプリには正しくなく伝わってしまう。
これはタッチパネルの構造上仕方ない面もある。タッチパネルでは周期的に静電容量をスキャンしている(国産の初期のスマートフォンではこの周期が画面の表示の周期と合ってなくて指でなぞる操作をしたときにガタガタしたりするといったような、基本的な設計ができていなかったりしてアホかと思ったものだ)。あるタイミングで左の指の一本の接触だけ検知されていて、次のスキャンのタイミングで右の指が一本だけが接触しているような状態だったら、タッチパネル側からはそれが別の指かどうか判別できなくて、一瞬で指が動いたように見えてしまう。
原理上仕方ない面があるとはいえおそらくSH-02Fのタッチパネルのドライバは短い時間なら指が離された場合でもタッチが継続したと判定するような制御を行っている。静電タッチパネルはノイズに弱く、ある程度そういう制御がないとユーザからすればドラッグ操作の途中で指が外れたような判定をされてしまったり、指をタッチパネルに置いて長押ししているだけなのになぜか連打になったりしてしまう。ハードウェアでのノイズ対策をケチったり軽量化とか防水とかTVアンテナとかのために無理な設計を強いられたりしたしわ寄せなのかもしれないと推測してしまう。
Androidの「開発者向けオプション」の中の「ポインタの位置: 現在のタップデータをオーバーレイ表示する」をONにして確認してみた結果が下記である。
これが二本の指でタッチしたときのスクリーンショットである。この左上側の指と右下の指を交互に連打すると下のようになる。
ちょっと連打するとあっさり間に線が引かれてしまう。これは左上から右下 あるいはその逆に指が動いたと判定されたということだ。交互連打譜面でこれが発生すると当然タップしていないと判定されてMISSになってしまう。これはつらい。もちろんこの交互押下の2本の指の間が十分に離れていればアプリ側でも(急な遠距離の移動は指が変わったと判定するなどで)がんばってスライドとの見分けがつくように判断することも可能かもしれないが、スクフェスとかデレステのように顔アイコンの位置が隣接しているとそれも難しいと思う。
Nexus7 2013で同じことをやってみたがちょっと試したくらいで線が引かれるようなことは全くなかった。前回の現象と異なり、これについては店頭でもすぐに試せそうなのでAndroid端末を選ぶときにはこれを店頭にある端末で確認してからにしようと思った。