Submit

「目的語 → 動詞」のシンタックスでインタラクションを設計することが GUI において重要であるということは、Apple のガイドラインをはじめ、多くの指南書で説かれていることです。目的語とは多くの場合、処理の対象物のことですから、「名詞 → 動詞」という書き方で同様のことを説明している場合もあります。

とはいえ、実際にパソコンを使っていると、基本的な操作の部分で、「動詞 → 目的語」のシンタックスが結構使われているのです。

まず前にも書いたとおり、アプリケーションの選択という操作はタスク指向です。アプリケーションを選ぶということは、これからやることを選ぶということです。例えばワープロソフトを起動するということは文書編集タスクを選ぶということですし、ウェブブラウザを起動するということはウェブ閲覧タスクを選ぶということです。これは別の言い方をすると、処理対象のデータ集合を選ぶということです。個々のデータオブジェクト(インスタンス)ではなく、データの種類(クラス)を選ぶところから作業を開始しているのです。例えばワープロであればワープロ書類、ウェブブラウザであればウェブページというクラスを選んだことになります。クラスの抽象度や扱える種類の数はアプリケーションによって違いますが、タスクは特定のデータクラスと紐づいていると言えるでしょう。

一方、オブジェクト指向のシンタックスにおけるオブジェクトとは、すなわちあるデータ集合におけるインスタンスとなります。

以前開発が進められていた「OpenDoc」は、パソコンにおける基本的なシンタックスを、タスク指向(アプリケーションにファイルが従属する)からオブジェクト指向(ファイルにアプリケーションが従属する)に転換しようとする試みだったわけですね。

ちなみに、データ集合に対する CRUD のうち、Create Read Update は特定のアプリケーションが行い、Delete(および複製やいくつかのメタデータ変更)はOSのファイルブラウザが行うというのがこれまでのパソコンにおける基本的な役割分担です。ただし iTunes などはファイル管理までもをアプリケーション内で完結させようとしています。

次に、多くのアプリケーションにはメニューに「開く…」という項目があります。これを選ぶと、対象のファイルを選択するダイアログが開きます。つまり「開くモード」に入ります。目的のファイルを選び、ボタンを押すと、ダイアログが閉じて(モードから出て)そのファイルが開かれます。

同様に検索機能も多くの場合タスク指向のシンタックスになっていて、メニューやボタンで「検索…」を選ぶと検索ボックスが現れ、キーワードを入力してボタンを押すと実行されます。

「開く…」も「検索…」も、実行前に気が変わった場合は何らかのキャンセル操作をしなければモードから出ることができません。検索の場合は更に、検索結果を表示するのに通常の一覧ビューを検索結果表示モードに切り替えることが多く、これもまた通常のビューに戻すために何らかのモード終了操作が必要になります。

ユーザーがまずタスクを選択し、何らかの入力操作(コマンド実行の引数となるパラメーター指定)を行い、最後にそれをサブミットすることで処理が実行されるという意味では、「印刷…」や「名前をつけて保存…」もタスク指向のコマンドです。ただしこれらの場合は対象物が現在見ているファイルということで自明なので、オブジェクト指定の操作はありません。

Windows のコントロールパネルやアプリケーションのユーザーオプションでは、このようにパラメーターの指定をメモリにためてサブミットでまとめて処理に投げるという実装がほとんどです。つまりモーダルな操作になっています。だから入力パネルには必ず「OK」と「キャンセル」のボタンがあります。

ところが、Mac の場合はずいぶん事情が違います。あまり語られることがないので Windows ユーザーは知らないのではないかと思いますが、最近の Mac では、そういったモードがほとんど絶滅しつつあります。

これについては、また後日書きます。

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>