Renaissance

対象選択のジェスチャが同時にモードの切り替えを意味する場合、モード切り替えの手続きは「目的語 → 動詞」のシンタックスの中に内包されるので、準備作業として意識する必要がありません。例えば現在フォーカスが当たっていないウィンドウでも、その中のコントロールに対してクリックなりのアクションを起こすと、即座にフォーカスがそのウィンドウに切り替わり、コントロールが反応するのです。

ただしこの振る舞いにはデメリットもあります。まず、オーバーラッピングウィンドウのイディオムにおいては、目的のウィンドウの一部もしくは大部分が手前のウィンドウの後ろに隠れてしまっていることが多く、その場合、まずそのウィンドウを手前に持ってくるという純粋なモード切り替えの手続きが必要になることです。後ろにあるウィンドウの中でクリックしたいコントロールが見えているかどうかは運しだいです。運によって操作の手順が変わってしまうというのは気持ち悪いです。

それから、いくつものウィンドウが開いていてデスクトップを埋め尽くしているような場合、不用意なクリックによっていずれかのウィンドウ内のコントロールが意図せず反応してしまうということもよくあります。

これらの問題は、言ってみればモードレスであることの弊害なので、根本的な解決は難しそうです(作業の対象物が書類の束に埋もれていたり、間違えて違う紙に書いてしまうといった失敗は、現実世界でもよく起きることですし)。ただし、フォーカスを変更せずにウィンドウを移動できるようにしたり、完全な多段階アンドゥ機能を実装することで、対症療法的にユーザーのリスクや心理的な負荷を減らすことはできます。実際 Mac ではこの方法がかなり実現されています。

ところで、前回、「オブジェクト指向UIにおいて、オブジェクト選択のジェスチャが同時にモードの切り替えである場合は、モードは問題にならない」と書きましたが、逆に、問題になるモードとはどのようなモードでしょうか。

これは簡単で、「モードから出るために特定の操作が必要である場合」です。いわゆるモーダルダイアログがその典型で、もとの作業に戻るためには、「OK」ボタンを押すといった決められた操作を行う必要があります。これによってユーザーはシステムに対する自由なコントロールを失うわけです。モードレスモード(オブジェクト選択とモード切り替えが一体化している場合)では、モードから出るには単に次の対象オブジェクトを選び直すだけであり、操作は限定されません。

では、なぜモードというものはこんなにも僕を不快にさせるのでしょうか。それは恐らく、「不自然」だからです。

自然の物理世界では、モードというものは存在しないと僕は思います。モードというものは、貨幣と同じで、常に人と人の間での共通認識の上にしか存在しない、誰かの都合で決められた約束事なのです。

自然界においては、各物体は複雑な相互作用の中で勝手に存在しているのであって、何か決まった目的を持っているわけではありません。例えばアレグザンダーのデザインパターンに出てくる「柱」のように、もとは人が屋根を支えるために作ったものだとしても、柱自体はそんなことおかまいなしです。設計が悪かったり風化したりすれば勝手に崩れます。人の方もまた柱の本来の目的には無頓着で、立ち話しながら寄りかかるかもしれないし、身長を記録するかもしれません。そのような行為は、施主にとっては目的外かもしれませんが、行為自体が柱の性質を決定するわけではないのです。単に、柱として役立ちそうな素材と加工方法を選択しているにすぎません。

こういう物理世界の「モードレスネス」が、ユーザーインターフェースの中にも再現されていれば、僕たちはもっと思い通りにコンピュータを使えるのではないかと思うのです。

そもそも GUI というのは、管理主義に対するそういったアンチテーゼを持ったコンセプトだと思います。機械が複雑化して、「コンピュータ=オートメーション」という図式が一般化しつつあった時に、データオブジェクトを人が身体動作によってアナログ感覚で操作するという、一見コンピュータの処理効率を台無しにするような操作方法を編み出したのは、ものすごい革命だと思います。よく GUI の次はタンジブルだとか3Dだとか言う人がいますが、彼等は GUI のインパクトを正しく見ていないのです。この人間復興のパラダイムシフトを超える変革は、そう簡単には訪れないはずです。GUI は、ルネッサンスなのです。

This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>