タッチジェスチャとコンストレイント

December 3, 2015
Manabu Ueno

iOS には、あらかじめいくつかのタッチジェスチャを認識する API が用意されている。

ジェスチャとは、プリミティブな入力イベントの特定の組み合わせをひとつの意味として扱うものだ。例えばパソコンであれば、マウスボタンの押し下げ(マウスダウン)やそれを放すこと(マウスアップ)がプリミティブな入力イベントの例であり、このふたつを連続して一定面積内で行うと、クリックというジェスチャになる。一般的なマウスのジェスチャには他にも、ムーブ、ダブルクリック、ドラッグなどがある。

タッチデバイスではマウスのかわりにタッチイベントが用いられるが、プリミティブな入力としては、例えばタッチの開始や終了がある。指をスクリーンに触れて、それを一定面積内で放すと、タップというジェスチャになる。

iOS では、基本的なジェスチャとして次の7種類が想定されており、これらの動作を検出する API が用意されている。

  • タップ
  • ピンチ
  • ローテーション
  • スワイプ
  • パン
  • スクリーンエッジパン
  • ロングプレス

それぞれには更に、指の本数や、動作の段階(ジェスチャが開始された、継続中、終了した)ごとに処理を変える仕組みが含まれている。

つまりタッチジェスチャは、マウスのジェスチャに比べて、バリエーションが多い。

バリエーションが多いと言っても、例えばダブルクリックがシングルクリックの二連続でできているように、ジェスチャによっては他のジェスチャの組み合わせでできているものもある。例えばスワイプジェスチャは、水平もしくは垂直方向に、一定以上のスピードでパンすることを意味している。

別な言い方をすれば、ある指の動作が、AのジェスチャなのかBのジェスチャなのかという判定は、マウスの場合に比べて、かなり微妙なものになっている。

また、同一画面上で同じ種類のジェスチャが複数の意味で実装されていることも多い。例えば iOS 9 のホーム画面では、水平方向のパンはアイコン一覧のページめくり、下方向へのパンは検索窓の表示、画面下辺付近からの上方向パンはコントロールセンターの表示、画面上部付近から下方向のパンは通知センターの表示、というふうに、いくつものパンジェスチャが実装されている。

複数のジェスチャを同一画面上に実装する場合は、通常、ジェスチャ同士に優先度をつけて、あるジェスチャが発動したら他のジェスチャはキャンセルされるようになっている。ホーム画面の例であれば、下方向へのパン操作が行われた時、それが画面上辺付近から開始されていれば、通知センター表示が優先され、検索ボックス表示の処理はキャンセルされる。

ジェスチャのバリエーションが複雑な分、こういった優先度づけやキャンセル条件などの処理は非常に入り組んだものになりがちだ。操作の示唆が暗黙的な分、ユーザーはうまく操作できないこともあるだろう。

Apple Watch のデジタルタッチ

Apple Watch では、サイドボタンからフレンドを選んでデジタルタッチと呼ばれる特殊なメッセージを送信することができる。

デジタルタッチには三種類のモードがある。スケッチ、タップ、ハートビートだ。スケッチは指で線画を描くもの。タップはスクリーンをトントンと叩くもの。ハートビートは現在の心拍をモニターする。

これらのデジタルタッチは、リアルタイムに相手のウォッチ画面に表示される。タッチデバイスならではの非言語的なインスタントコミュニケーションだ。

デジタルタッチによるやりとりが実際に面白いかは置いておいて、その仕様はよくデザインされていると思う。

Apple Watch ではデザインガイドラインとして、ユーザーに複雑なことはさせるなと謳っている。デジタルタッチを送る時にも、送信ボタンを押したりモード変更の操作をする必要はない。

どのようにモードが決定されるのかというと、指でスクリーンをなぞる(パンジェスチャ)とスケッチモード、指でスクリーンを軽く叩くと(タップジェスチャ)タップモード、二本指でスクリーンを押さえつけると(二本指ロングプレス)ハートビートのモードになる。

このように事前の手続きなしでモードが作られるところがよい。三つが異なるジェスチャなので、判定が混乱せずに済むようになっている。

モードの決定はメッセージを作成する動作と自然に対応しているので、モードレスモードとなっている。

中でもハートビートは秀逸だ。

ハートビートは現在の心拍を継続的に相手に送りつづけるものだから、開始と継続と終了の合図をひとつの動作で行えるように、長押しのジェスチャーを用いるのは自然だ。また、センサーが正しく心拍をモニターするにはウォッチ本体を手首に密着させる必要があるが、二本指でスクリーンを押すという動作がそれを助けている。これがもし一本指だと、パンやタップのジェスチャと誤判定してしまったり、モニタリングに失敗するかもしれない。二本指の長押しという特徴的な動作が他のジェスチャとの明確な区別となっていて、はじめは学習が必要だが、ユーザーにとってのジェスチャの発動させやすさ、システムにとっての判定のしやすさ、そして心拍モニタリングを正確にするための「コンストレイント」になっている。

コンストレイントとは、デザインにおける制限のこと。ユーザーの行動を意図的に制限することで、誤操作を減らしたり有効な使い方を促したりするテクニックだ。

例えば、昔の自動車ではイグニッションキーとエンジンスタートのボタンが別々になっていたという。それだとキーを挿し忘れたままエンジンボタンを押すという操作ミスが起こる。イグニッションキーを刺さなければエンジンスタートの合図が出せないようデザインに制限を持たせることで、問題がなくなった。ユーザーにしてみればキーを使うこととエンジンを動かすことは目的が一致しているので、制約は自然なものとなり、行動が抑制されたような窮屈さは感じない。むしろ合理的であたりまえのデザインだと感じる。

タッチジェスチャは暗黙的でありかつ誤判定しやすいものだが、Apple Watch のデジタルタッチはそれをうまく扱っている。

Comments are closed.