Selection

僕は、オブジェクトの選択がインタラクションの起点となっているようなデザインを「オブジェクト指向のユーザーインターフェース」、タスクの選択が起点となっているものを「タスク指向のユーザーインターフェース」と呼ぶことにしました。オブジェクト指向といっても、プログラミング様式のそれとは実現のための手段が全く違いますが、コトよりもモノを基準にして構造を作るということや、状況の変化に強い(というか文脈が不確定であることを前提にする)ことを重視するという意味で、根本的には同じ価値観を共有していると言えるでしょう。

GUI のポテンシャルを引き出すには、当然オブジェクト指向のユーザーインターフェースが望まれます。しかし、決められた業務を行うためのシステムにおいては、タスク指向にせざるを得ない場合が多いということも分かって来ました。

ぼくはこの「オブジェクト指向」と「タスク指向」の対比について、よく「自動車」と「電車」に例えて説明します。自動車は、目的地までの行程を自由に決定することができ、途中で道を変えるのも行き先を変えるのもドライバーの自由です。一度行った場所に二度目に行く時には、一度目よりももっと効率的なルートを思いつくかもしれません。ドライブという仕事の帰着点は、結局ドライバー自身が「ゴールに着いた」と自覚した場所ということになります。ただし、目的地までのルートをドライバーが全く知らない、もしくは予測しづらい場合には、あっちでもないこっちでもないと迷子になり、結局辿り着けない(ゴールにたどり着いたと自覚できない)かもしれません。一方電車は、最初に選択肢から目的地を選ぶ(電車に乗る)だけで、途中の地理について全くイメージを持っていなくても確実に辿り着くことができます。しかし途中で道を変更することはできませんし、自分なりの工夫で行程を効率化することもできません。どちらを好むかは人によりますが、ひとつ言えることは、GUI というのは本来自動車であるということです。自動車式の作業に向いたユーザーインターフェースなのです。

最近ではパソコン以外にも、携帯電話や複合機やテレビやゲームや券売機などあらゆるデバイスにグラフィカルなユーザーインターフェースが用いられています。けれど、「目的語 → 動詞」というオブジェクト指向のシンタックスが実現できているものは案外少ないのです。それだと、見た目はアイコンやフォルダといったグラフィック表現になっていたとしても、GUI とは言えないと思います。なんちゃって GUI です。

例えば携帯電話のインタラクションでこういうのがよくあります。メールの本文を表示していて、ある文字列をコピーしたいとします。そのためにはまずメニューを開いて「コピー」を選びます。すると「始点を指定してください」といったメッセージが現れ、十字キーでカーソルを移動して始点に持って行き、「確定」ボタンを押します。すると「終点を選択してください」といったメッセージが現れ、また十字キーでカーソルを動かして終点を指定します。これでやっと「コピータスク」が完了します。ペーストする時にも同様の手順を踏みます。これは相当まどろっこしくないですか? 操作のステップごとに「始点選択モード」や「終点選択モード」が発生していて、途中でやめようと思ったら、いちいちモードから出るためのキャンセル操作が必要なのです。

つまりこういうことです。オブジェクト指向のシンタックスを実現するには、「対象選択」の操作をいつでも行えるようになっていないといけないのです。そしてそのためには、対象となるオブジェクトが最初から見えていて、それを指し示すためのポインターがシステムの状態に依存せずに常にフリーになっている必要があるのです。

余談ですが、iPhone には当初コピー&ペーストの機能がありませんでした。これを後から実装するにあたって、いくつかの課題があったと予想します。

まずポインターの自由度についてですが、iPhone におけるポインターはユーザーの指ですから、かなりフリーな状態にあります。ただし指でのタッチ操作では、指し示す対象物を指自体が隠してしまうと同時に、選択範囲の指定という細かい座標移動がしづらいということがあります。また、任意の文字列範囲選択をモードレスに行うためにはドラッグ操作が必要になりますが、iPhone においてドラッグ操作はスクロールを意味しているので使えません。文字列の特定箇所でしばらくタップ&ホールドしてからドラッグを開始するという操作も考えられますが、このジェスチャは「カーソル周辺の拡大表示」に使われてしまっています。

結果的に、完全にモードレスにすることはできず、タップ&ホールド&リリースからのメニュー表示と、ダブルタップでの選択開始という若干手続き的な操作になりました。それでもさすがに「対象選択 → コマンド選択」というオブジェクト指向なシンタックスは崩さないインタラクションを実現しています。また指が対象を隠してしまう問題に対しては、選択ハイライトの両端につまみをつけて、更にドラッグ中にはその周囲を拡大表示するという従来からの表現を再利用することで、なんとか解決しています。

ということで、GUI においては、オブジェクト指向のシンタックスが重要であり、そのためには対象物が最初から見えている必要があり、またポインターは常にフリーでいつでも選択ジェスチャを行えるようになっていなければならず、そうすることでモードを減らすことができる、という方程式が見えてくるのです。

This entry was posted in Uncategorized. Bookmark the permalink.

Comments are closed.