Jakob Neilsen, "Noncommand User Interface"
Communications of the ACM 36, April 1993
コンピュータのユーザインタフェースがCUIからGUIへと表面的には変化しても,「コンピュータが理解できるコマンド群のなかからいくつかを選択して順に実行させる」というCommand主体のインタラクションの中身は変わっていない.コマンドをシェルに打つのがメニューやアイコンの操作に取って代わられただけであり,シェルの動詞-名詞型シンタックス (例: rm sample.txt)が,名詞-動詞シンタックス (テキストのアイコンをクリック/選択して,ゴミ箱へとドラッグ)に変わっただけである.今後は,コマンドベースのインタラクションに変わる,Noncommand User Interface -コンピュータがユーザの意図を推測して必要な操作を行う-が登場するはず... という論文.
Function-oriented なGUI -> Objecte-orientedなGUI -> User-oriented,Task-oriented Interfaceへという流れを予想している.一様なGUIからタスクごとにInteraceを使い分けるというのは,Post-WIMPインタフェースの論文と同じ内容 (というか,こっちが元ネタでしょう).多様なNoncommand User interfaceが共通して持ちうるであろう特徴をUser focus, Computer's role, Interface Control, Syntax, Object visibility, Interaction stream, Bandwidth, Tracking feedback, Turn-taking, Interface-locus, User Programming, Software Packagingの12の項目にまとめている
D.ノーマンと並ぶUsability研究の大家, J.ニールセンの93年の記事.出版からすでに10年以上がたった今でも,提起されている問題点は色あせていない.深い洞察に飛んだ内容で,新しいインタフェースの形を考える上で役に立つことは間違いない. オススメ!
[J.Neilsen Web Site]
- User Focus
今までは,あるタスクに取り組んでいると言うより,コンピュータを使っている!という感じが強かった.タスクごとにインタフェースをつかいわけることでこの問題を解消(GUIでは,覚える手間を省くために統一性が重要だったが,より自然なインタラクションが可能なNoncommad インタフェースでは,多様性が許される.) ある機能を実現するためによけいなコマンド入力が必要なものは× 普通通りの動作/作業から,「派生的に」コンピュータが作動するようなシステムが望ましい.
- Computer's Role
Computers that did what users "said" they wanted から,Computers that did what users actually wanted へ.ユーザが実際に何をしたいのかを推測して,実行する.そのためには,人工知能(といっても,弱いAI)が必要.
- Interface Control
ユーザからコンピュータへのコントロールの委譲,自動化.Post-WIMPインタフェースでも自律性という言葉で言及されていた.ユーザの利用の仕方に応じて,動的にメニューやファイルの配置を変える,あるいはあるデータのセットをまとめる...同様のアイデアは,Anti-Mac interfaceにもあったよな.もう一歩,踏み込んで考えたいところか?
- Syntax
シンタックスによらないナチュラルなインタラクション.といっても,「ナチュラル」といえるのは,その人がすでに技術を持っている場合.だからこそ,人類に共通する技術(視線のコントロール,ジェスチャ,手書き)を使うべき.間違ってもピアノの鍵盤や手話をインタフェースにしてはいけない. (比較: エンゲルバートのコードキー)
- Object Visibility
GUIでは,オブジェクトの可視性(と直接操作)が重要とされてきたが,場合によってはオブジェクトを隠すことが使い勝手の向上につながる (例: 数千のファイルを含んだファイルシステム) 実際のオブジェクトは裏で勝手に操作してくるとありがたい -> コントロールの委譲.ただし,個々のオブジェクトを見たいユーザにはすぐに提示できる,裏で動いているプロセスの状態を簡単に予測できる仕組みが必要.
- Interaction Stream
一つの入力デバイス(典型的にはマウス)からのシーケンシャルなコマンド入力に変わって,複数のデバイスからの並列的な入力をうけるようになる.Buxtonらの両手入力の研究 (「現在のマウスベースのインタフェースは,ナポレオンのため」)や,音声認識とジェスチャを組み合わせた例など.複数の入力が互いに補完しあうような仕組みが望ましい.音楽インタフェースなどと比較すると面白い.
- Bnadwidth
より広帯域のコミュニケーションチャンネルを使うようになる.(入力) マウス,キーボード -> ジェスチャ,音声入力 (出力) スタティックなダイアログボックス ->
VRのステレオ画像
- Tracking Feedback
入出力の連続性.より粒度の細かいインタラクションへ.ユーザの入力している途中も,コンテクストの変化に応じて柔軟なフィードバックを返す(関連: コントロールの委譲,複数の入力ソース).
- Turn-Taking
現在のGUIは,ユーザがなにか入力して,コンピュータがそれに答える,イベント駆動型.こういった相互に代わる代わる主導権を取る一方向的なインタラクションから,相方向のインタラクションへ.前項とも関連が深い.端的な例としては,dynamic queryがある(queryの終了を待たずに,入力されたところまででqueryを開始.50%以上の効率向上がみられるらしい).
- Interface Locus
スクリーンにこだわらない,ユビキタスコンピューティング時代のインタフェース.その後のtangible interfaceの研究につながる示唆がある.
- User Programming
エンドユーザのためのスクリプト言語は,一般的なプログラミング言語との乖離やアプリケーションによってそれぞれ別々の言語を覚えなければならないと言う手間が留.その解決方法の一つは,システムレベルのものを用意すること (AppleScriptはSystem 7からだから,この論文の2年くらい後に生まれたわけですね...).さらにプログラムと実際のインタラクションのギャップを埋めるためには,視覚的な要素をつかうのが望ましい ->ビジュアルプログラミング,例示プログラミング.こうしたエンドユーザのためのプログラミングとその実行 (例示によるプログラミングとその"再生")を有効に利用するには,(プログラミングが完璧ではない限りは)何が起こるかを事前に予測してユーザに提示する「予測フィードバック」の機能が必要.この分野,あまり進んでないですね.
- Software Packaging
オブジェクト指向のコンピュータシステム.アプリケーションを一つの単位として考えるのではなく,より細かい機能単位の組み合わせとして考える.これによって,システムワイドなサービス (例: OS標準のスペルチェッカー),複数の言語への対応などが容易になる.直接インタフェースの話ではないが,今後のシステムを考える上で重要な項目であろう.Mac OS Xではすでに実現されている部分も多い.XMLなどの標準的なフォーマットをシステムの中でうまく使う方法も考えたい.
Posted by naotokui at January 12, 2004 06:42 PM
| トラックバック