Imaginantia

思ったことを書きます

入力の次元

「何か」を表すための「何か」として、特に「情報」を表現する「入力デバイス」について、ちょっと考えてみる。

  • 情報の具体例としては、「位置」「角度」「有無」「文字」「色」など。
  • 入力の具体例としては、「マウス」「クリック」「タッチ」「トラッカー」などがある。

情報にも入力にもそれに付随する空間がもちろん存在するが、相変わらずこれは自明なことではない。 考えすぎるとあまりにも長くなってしまうので、特に「文字」と「色」についての話をする。

文字の入力: タッチパネル

最も普及していたキーボードでの入力というのは、本質的に「2通りを並べたもの」である。押した瞬間、そうでないとき。 私達の指は10本あり、微妙に指ごとのタイミングをずらすことで「大量の選択」を時間コストを掛けることなく実現している。

これに対しタッチパネルの提供するものは一般には「位置」と「押下」のみである。特に任意のタイミングで入力がしたいことを考えればマルチタッチの利用はできない。 キーボードとの最大の違いは位置が連続空間に棲んでいることである。キーボードは必然的に離散的な入力を要求していたが、濃度としての空間の大きさはタッチパネルのほうが圧倒的に「大きい」。

しかし今回の目的は文字入力である。すなわち最初から離散的な値を対象としている。これは色や配置などを入力することとは異なり、まず連続空間を離散空間に分割し、確実性を提供する必要性が出てくる。 一般のタッチキーボードで行われる分割方法は、「仮想的なボタンを作る」ことである。disjointな領域群を配置し、それらに「入っているかどうか」で以って「2通り」を生み出す。 だが当然これのみによって得られる情報量は、キーボードに対して劣る。折角の連続空間をうまく活用したいものである。とは言え画面の狭さや指位置の正確性などの問題もあり、例えばひらがな50音をまるごと配置するのはちょっと悩ましい。アルファベット26音でも狭いようにも見える。

その一つの方向性がフリック入力であった。これは最初に「仮想的なボタン」によって12通りを入力させるが、その先は「押下」の2通りに留まるものではなく、時間的変化として変位の方向を以って5通りの入力を行った。タッチパネルから指を離すのはある程度の時間消費であると考えられる為、それを行わずに合計60通りの入力が可能であることは「望ましい」ことである。

さて、これはある一つの空間の連続性の扱い方である。他にも空間の分割の仕方はたくさんあり、考える余地はまだまだ残っている。

それはそれとして、もっと別の入力空間ではどうだろうか?

文字の入力: バーチャル空間

度々言われるバーチャル空間上での文字入力について。私達の提供できる入力空間は、単純には以下である。

  • 頭: 位置と角度
  • 左手: 位置と角度
  • 右手: 位置と角度
  • コントローラの2値入力

連続空間としては18次元ある。しかし、これをすべてを使うわけにはいかない。

例えば位置は、空間に対して絶対的に測量されるため、このまま使うと「立っている位置によって入力する文字が変わる」ことになる。これは望ましくなく、相対的な値を取ることが必要である。

逆に言うと相対的な値というのは非常に入力が行いやすい。何故なら1つの入力によって値を確定させるのではなく、2つの入力を行うことによって空間に冗長性が存在する。「空間に存在する余裕」、というのは入力に関して本質的な概念であると考えていて (個人の感想):

  • 例えば十分大きいボタンが押しやすいのは微小移動が入力に関して影響を与えないことが保証されるから
  • クリックがしやすいのは上下方向の空間情報を2値に圧縮していて、1次元の自由度が実際に存在するから
  • フリックで方向入力がしやすいのは、空間の変位という2次元情報を向きという1次元情報に落としているから

だと思う。そうではない入力システムは恐らくデバイスに対する強い慣れを要求するものである。

この点でVRChatのクイックメニューは非常に使い勝手が良い。左手と右手の相対位置・相対姿勢によって入力が定まっており、任意のタイミングで左手と右手を「自分の中で決まったある形」に持っていくことでパネル上の位置を確定させることができる。特に角度による表現は位置の移動コストを圧倒的に減少させるものでもあり (振り回せば位置を大きく変化できる)、もう片方の手で細かい位置調整を行えば、「ある位置」の入力をかなりの精度を以って行うことができる。

じゃあどうするべきか、は正直わからない。でもクイックメニュー (と本質的に等価なもの) 以上に使いやすい入力パネルは見たことがない。もうちょっと空間の次元は増やせるとは思うが、まだ考えてない。

空間の形

文字はもともと離散的な空間であると考えられた。今度は色についてちょっと考えてみたい。これは連続的な空間である。特に、3次元。

3次元の入力を以って3次元の入力を行うには先程示した「余裕」が無い。とはいえ目的が連続空間なので、余裕の無さによるつらさ、みたいなものはさほどは無いと考えられる。

FPSゲームはもはや離散的な入力である。最も重要な「敵の頭にカーソルが載るか否か」は2値である。それも極微小な領域でのみ有効。

色の成す空間は様々なものが知られているが、例えばRGBはこれにふさわしいか?というとそうでもない。これは「モニタの気持ち」から生まれる空間であり、私達の行いたい色指定は別にモニタのことを考えていない。 人間の視覚のイメージに近い概念としてはHSVがある。もっと近い空間はまた様々あるが、根本的な変化として「明度」と「色味」の分離があることが重要である。

ちなみにRGBで入力しようとする人は連続空間じゃなくて、3次元ですらない単なる「集合」で認識している場合が多いと思う。

今回はHSV空間で考えるとするが、ここで面白いのは「色相は循環する」ことである。少なくとも「赤と紫が遠い入力方法」は使いにくいだろう。多くのまともな絵を描くためのソフトウェアは色相の循環性を考慮したUIになっている。 また「明度が0のとき、空間は潰れている」ということがある。黒の彩度を変化しても何も変わらず、微調整しようという意思を阻害するものと言える。つまるところ色相を固定したときに残る空間は、四角形ではなく三角形である。これもまたよく知られているUIに取り入れられているものである。

空間の形を直接表現したUIは自然に直感に沿うと思っている。そんなことを考えて作ったのが Just a canvas であった。

Substance Painterのアレとかは特に直感に反したUIの例だと思う。とはいえ目的が「素早い操作」だと思うのであれは良い割り切り方に見える。「慣れろ」って言っているんだと思う。

全ての設計はある目的のためにある。


そうすると文字入力はどうするべきか?という話で少し考えたいことがある。

伝統的なひらがなを行と段に分解する手法は、ほぼ正しい。が、一部間違いがある。別に「だ」は「『た』に濁点をつけたもの」ではないと思う。d音にa音がついたものである。「だ」を「た」に写すのは文字の表記としての都合であり、話し言葉を入力するためのデバイスでそれをする必要はないような気がする。

この話を思った理由は、私のTwitterの過去の入力傾向を見ると「た」行よりも「だ」行のほうが多かったからである。なら最初から「だ」行を入力するべきではないか?

ちなみに人々が「それに慣れてしまったから」というのは理由にならない。入力デバイスは慣れるものであり、キーボードだって折角わけのわからない入力配置にしたのに人類は成長してしまった。

これに関しては多分そのうちなんか作るとおもう。自分で実験するのは結構入力方式に於いてはちょうどいい。

まぁ、他にも考えるべきお話はたくさんある。本当に文字の空間は離散的かとか。いろいろ考えていかなきゃいけない。まだまだ発展の余地はある。

まとめ

  • 連続空間の扱い方はいくらでもある。もっと考えたい。
  • 入力空間に「余裕」があると使いやすい気がする。多少の誤差を認めるということ。次元レベルで在ると尚良い。
  • そういう意味では相対座標による入力は使いやすい気がする。
  • 入力したい情報の成す空間を、直接的に入力方式に反映させたほうがわかりやすいのでは。
  • 入力方法は慣れるもの。