# 楽しいプログラミング 《第3回》  この季節になると、なんとなく「アリときりぎりす」のお話を思い出します。どちらかというと、土壇場になってアセるタイプですからねぇ。でもね、私はきりぎりすの方が好きです。だって、彼はバイオリンを弾くじゃありませんか。 ## ■ ユーザー・インターフェイス  そんなこんなで、ネタが思いつかないうちに早ひと月。苦しまぎれに今回は、ソフト作りで一番おいしいところ、「ユーザー・インターフェイス」(略してUI)でいってみましょう。
 私がUIについてあれこれ工夫するのが好きなわけは、 - 生来、使い勝手を工夫するのが好きである。 - ユーザーの反応が誠におもしろい。 - その割に頭をひねらなくても書ける。 要するに、作ってて張り合いがあるのね。それだけに、逆に何も考えていないソフトを見ると無性に腹が立ちます。
 ソフトウェアに限らず、「コンシューマーズ・プロダクツ」(一般消費者向け製品)の開発に携わるものは、常に、使う者の立場に立って物作りをしなければなりません。実際、自分が使ってみたくなる様でなくては嘘です。現実には、メーカーサイドのつまらぬご都合主義のために、大事な要素が往々にして切り捨てられていくものですが・・。
 ゆえに、UIの考察の前に、「ユーザー」なるものについてよーく理解しておく事が肝要です。 - ユーザーの趣味・嗜好は千差万別である。 - ユーザーはわがままである。 - それでも文句を言ってくれてるうちが花である。 - 結局、慣れてしまえばこっちのものである。 (なんだか「ユーザー」をそのまま「女性」に置き換えられる気がする・・) それらを踏まえた上で、こちらの取るべき態度は、 - ユーザーの意見はできる限り考慮するが、決してそれに引きずられてはならない。 - 低習熟度のユーザーも配慮するが、彼等の熟達を助成せねばならない。 - ユーザー・カスタマイザブルにして、選択を委ねる。 すなわち、ユーザーの立場は十分考慮するが、あくまで主導権は握っていなくてはならないのです。  それでは、具体的な話に移りましょう。UIをいくつかに分けて見ていきます。 1. キーボード 2. メニュー・システム 3. マウス 4. ヒストリーとアンドゥ 5. 画面デザイン ## 1. キーボード  キーボード・インターフェイスを設計するには、まず、ユーザーにいくつかのタイプがある事を知っておかねばなりません。 - ホームポジション固執派(スタティック派) - カーソルキー依存派(ダイナミック派) - ファンクションキー依存派(ワンフィンガー派?) かく言う私は「カーソルキー依存派」です。編集モードでは、右手はカーソルキー上、左手の小指は[**CTRL**]キー上に位置し、文字入力モードになると、さっと両手の人差し指が[**F**]と[**J**]キーを捜しあてます。いわゆる「自己流」ってやつです。
 要は、3つのタイプがある事を考慮し、その1つまたは2つに偏った操作体系を取ってはならない、という事です。 - ダイヤモンドキーでカーソル移動ができない。 - ファンクションキーでしかコマンドを実行できない。 いずれも落第です。
 もう1つは、特殊キーの使い方に関する一般常識。  ⏎  : 入力の確定。処理の実行。Yes。
 [**ESC**] : キャンセル。メニュー表示。
 [**TAB**] : ウィンドウ間の移動。
 [**Space**]: 次の処理へ進む。ON/OFF
 [**Q**]  : Quit さらにIBM PCでは、  [**F1**]  : ヘルプ
 [**F10**]  : メニュー表示
 [**ALT**]+[**X**]: 強制終了
この辺は最低限守っておくべきです。 ## 2. メニュー・システム  アプリケーションの機能が豊富になるにつれ、メニュー・システムの出来不出来が、使い勝手に大きく影響してきます。ここでは少し低レベルの、メニューの表示方式、選択方式等について考えてみましょう。
 まず、メニューの表示方式です。 1. 画面最上行にメニュー・バーを表示したプルダウン方式。 2. ファンクションキー駆動型のポップアップ方式。 3. 一太郎のような一覧表示方式。 (3)の方式は、メニューを表示しながら操作したい場合には便利です。しかし、項目を上下左右に並べるため、メッセージの長さにメニューのサイズが影響されるのは問題です。やはりメニューは縦1列に並べる方が無難でしょう。(1)か(2)、あるいはその両方をどう採用するかは、メニューの総数によります。
 次に、メニューの選択方法。カーソルキーとリターン、ESCキーを用いた選択方式の他、ホットキーを用いたダイレクト実行も必須です。まちがってもこのホットキーを、「数字キー」などにしないで下さい。
 メニューが階層化されている場合、メニュー・カーソルは、最後に選択した位置を保存しておくべきです。
 そして、できる事ならば、メニュー・システムはユーザー・カスタマイザブルであるべきです。メッセージはなるべく簡単な方がいい、という人もいれば、とにかく判りやすく、という人もいます。英語にするか、日本語にするか、ホットキーを何にするか。自分の使う機能だけを集めたメニューにしたい、そんな場合もあるでしょう。少なくともプログラム本体とは分離し、いくつかのバラエティを用意してユーザーの選択の幅を持たせるべきです。 ## 3. マウス  マウスは、GUI(グラフィック・ユーザー・インターフェイス)には欠かせません。しかし、キャラクタ・インターフェイスにだって、マウスはもっと使われるべきです。究極的には、テキスト入力以外の操作は、ほとんどマウスで行なえるはずです。
 けれども、マウスに対し敬遠しがちな人も少なくありません。その理由はこうです。 - わざわざマウスに手を伸ばすのが面倒。 - いちいちメニューを選ぶより、ホットキーの方が速い。 こうおっしゃる方は、どちらかというと「ホームポジション固執派」に多いようです。「カーソルキー依存派」としては、右手がもう15センチばかり右に動くだけで、それほど面倒とも思えないのです。テンキーが無かったら、さらに移動距離は縮まります。何より、右手だけでボーっと操作できる怠惰な感覚が堪えられません。リモコンだってそうです。片手で操作できなくっちゃ、本当にお手軽とは言えまえん。
 では、マウス・インターフェイスを設計する際の留意点をあげてみましょう。 1. マウスの移動距離に無駄がないか。 2. ダブルクリックを十分活用しているか。 3. 右ボタンを十分活用しているか。 4. クリックorドラッグ。 5. マウスとターゲットの視点。  (1)特に説明の必要はないでしょう。プルダウン・メニュー方式は、この観点からすると、右ボタンを利用したポップアップ・メニュー方式に比べて操作性は多少落ちます。  (2)ダブルクリックは非常に重要です。これをサポートしていないマウス・インターフェイスなど論外とまで言えます。  (3)右ボタンは、キャンセルや、ポップアップ・メニューの表示に使われます。キャンセルの場合は、これはあくまでオプショナルな操作でなくてはなりません。NeXTで2ボタンマウスが採用された事からも伺えるように、右ボタンはもっと積極的に活用されるべきです。  (4)プルダウン・メニューを表示/選択する場合、Macではドラッグ/リリースで選択しますが、初心者にはクリック/ムーブ/クリックで選択させた方がよい、と考える向きもあります。ドラッグだと、メニューをじっくり読んでいる間じゅう、ボタンを押していなくてはなりませんから。Windowsでは、うまくこの両者をサポートしています。アイコンを移動する場合にも同様な事が言えます。  (5)これは、例えばスクローラーを操作する時です。スクローラーは、テキストやメニューをスクロールさせる場合に用いますが、この時視点は、スクロールするテキスト上に位置し、マウス・カーソルは見ていません。このため、スクロールの方向、速度を変えようとしてマウスを動かす度に、いったん視点をマウス・カーソルに戻さねばなりません。こうなると、スクロール操作はぎこちないものになります。NeXTでは矢印ボタンをとなりに並べて、この点幾らか配慮しています。私が以前とった方法は、右ボタンで逆スクロールさせる、というものでした。  マウス・インターフェイスに関しては、別の機会にじっくり考察致します。 ## 4. ヒストリーとアンドゥ  ヒストリーとアンドゥ機能は、アプリケーションの規模が一定のレベルに達した時点で、必ず盛り込まなくてはなりません。これに対するサポートの度合いが、ただのツールか、本当に使えるツールかの判断基準になるでしょう。
 ヒストリー機能に関して1つだけ言っておきたい事があります。それは、「ヒストリーの一覧表示など無くても構わないが、先頭文字列によるサーチは必須である」という事です。 ## 5. 画面デザイン  「顔じゃない、中身で勝負」などという負け惜しみは、ソフトウェアでは通用しません。画面デザインは、ソフトウェアの設計センスを如実に反映するものだからです。画面が美しいソフトがいいソフトとは限りませんが、画面がダサいソフトは、もれなくダサいソフトです。
 それでは、「画面デザインが美しい」とは、どんな観点から言えるのでしょう。 1. 配色がケバケバしくない。 2. 意味のない色分けをしない。 3. その時点で不必要な情報を表示しない。 4. 情報の配置に無駄がない。 5. 情報の重要度を視覚的に明示している。 6. タイトルやコピーライトの表示が無いか、あっても目立たない。 7. 美術的に美しい。 どれもあたりまえの事です。しかし、1とか7は、そのまま開発者の趣味が反映されますから、「なんだこのケバイ画面は」と思っても、実は開発者にとってはジミな画面なのかも知れません。しかし、NeXTの画面を「美しい」と感じない人は、まずいないでしょうから、本当に美しい画面デザインは、万人に受け入れられるはずです。
 「美術的に美しい」というと、ひと頃はMac風のデザインがもてはやされましたが、今はなんと言ってもNeXT風でしょう。あのモノトーン4階調の立体表示には、そそられます。  というわけで、今回はざっくばらんに、UIについて思う事を書いてきました。そう、あと2つばかり言い残しておきます。 - オブジェクトを点滅、あるいは「動かして」注目させる。 - 初めに対象物を選定して、それに対する処理を選択する。 本当にUIは奥が深い。しかし、結局言える事は、  「人間、大概の事には慣れてしまうものである」 (雑誌「**PC POWER** 1992年9月号」掲載)