# 楽しいプログラミング 《第3回》

&emsp;この季節になると、なんとなく「アリときりぎりす」のお話を思い出します。どちらかというと、土壇場になってアセるタイプですからねぇ。でもね、私はきりぎりすの方が好きです。だって、彼はバイオリンを弾くじゃありませんか。

## ■ ユーザー・インターフェイス
&emsp;そんなこんなで、ネタが思いつかないうちに早ひと月。苦しまぎれに今回は、ソフト作りで一番おいしいところ、「ユーザー・インターフェイス」（略してUI）でいってみましょう。<br>　私がUIについてあれこれ工夫するのが好きなわけは、

- 生来、使い勝手を工夫するのが好きである。
- ユーザーの反応が誠におもしろい。
- その割に頭をひねらなくても書ける。

要するに、作ってて張り合いがあるのね。それだけに、逆に何も考えていないソフトを見ると無性に腹が立ちます。<br>　ソフトウェアに限らず、「コンシューマーズ・プロダクツ」（一般消費者向け製品）の開発に携わるものは、常に、使う者の立場に立って物作りをしなければなりません。実際、自分が使ってみたくなる様でなくては嘘です。現実には、メーカーサイドのつまらぬご都合主義のために、大事な要素が往々にして切り捨てられていくものですが・・。<br>　ゆえに、UIの考察の前に、「ユーザー」なるものについてよーく理解しておく事が肝要です。

- ユーザーの趣味・嗜好は千差万別である。
- ユーザーはわがままである。
- それでも文句を言ってくれてるうちが花である。
- 結局、慣れてしまえばこっちのものである。

（なんだか「ユーザー」をそのまま「女性」に置き換えられる気がする・・）
それらを踏まえた上で、こちらの取るべき態度は、

- ユーザーの意見はできる限り考慮するが、決してそれに引きずられてはならない。
- 低習熟度のユーザーも配慮するが、彼等の熟達を助成せねばならない。
- ユーザー・カスタマイザブルにして、選択を委ねる。

すなわち、ユーザーの立場は十分考慮するが、あくまで主導権は握っていなくてはならないのです。

&emsp;それでは、具体的な話に移りましょう。UIをいくつかに分けて見ていきます。

1. キーボード
2. メニュー・システム
3. マウス
4. ヒストリーとアンドゥ
5. 画面デザイン

## １. キーボード
&emsp;キーボード・インターフェイスを設計するには、まず、ユーザーにいくつかのタイプがある事を知っておかねばなりません。

- ホームポジション固執派（スタティック派）
- カーソルキー依存派（ダイナミック派）
- ファンクションキー依存派（ワンフィンガー派？）

かく言う私は「カーソルキー依存派」です。編集モードでは、右手はカーソルキー上、左手の小指は[**CTRL**]キー上に位置し、文字入力モードになると、さっと両手の人差し指が[**F**]と[**J**]キーを捜しあてます。いわゆる「自己流」ってやつです。<br>　要は、3つのタイプがある事を考慮し、その1つまたは2つに偏った操作体系を取ってはならない、という事です。

- ダイヤモンドキーでカーソル移動ができない。
- ファンクションキーでしかコマンドを実行できない。

いずれも落第です。<br>　もう1つは、特殊キーの使い方に関する一般常識。

&emsp;⏎　　：&emsp;入力の確定。処理の実行。Yes。<br>　[**ESC**]　：&emsp;キャンセル。メニュー表示。<br>　[**TAB**]　：&emsp;ウィンドウ間の移動。<br>　[**Space**]：&emsp;次の処理へ進む。ON/OFF<br>
&emsp;[**Q**]　　：&emsp;Quit

さらにIBM PCでは、

&emsp;[**F1**]　　：&emsp;ヘルプ<br>
&emsp;[**F10**]　 ：&emsp;メニュー表示<br>
&emsp;[**ALT**]+[**X**]： 強制終了<br>

この辺は最低限守っておくべきです。

## ２. メニュー・システム
&emsp;アプリケーションの機能が豊富になるにつれ、メニュー・システムの出来不出来が、使い勝手に大きく影響してきます。ここでは少し低レベルの、メニューの表示方式、選択方式等について考えてみましょう。<br>　まず、メニューの表示方式です。

1. 画面最上行にメニュー・バーを表示したプルダウン方式。
2. ファンクションキー駆動型のポップアップ方式。
3. 一太郎のような一覧表示方式。

（3）の方式は、メニューを表示しながら操作したい場合には便利です。しかし、項目を上下左右に並べるため、メッセージの長さにメニューのサイズが影響されるのは問題です。やはりメニューは縦1列に並べる方が無難でしょう。（1）か（2）、あるいはその両方をどう採用するかは、メニューの総数によります。<br>　次に、メニューの選択方法。カーソルキーとリターン、ESCキーを用いた選択方式の他、ホットキーを用いたダイレクト実行も必須です。まちがってもこのホットキーを、「数字キー」などにしないで下さい。<br>　メニューが階層化されている場合、メニュー・カーソルは、最後に選択した位置を保存しておくべきです。<br>　そして、できる事ならば、メニュー・システムはユーザー・カスタマイザブルであるべきです。メッセージはなるべく簡単な方がいい、という人もいれば、とにかく判りやすく、という人もいます。英語にするか、日本語にするか、ホットキーを何にするか。自分の使う機能だけを集めたメニューにしたい、そんな場合もあるでしょう。少なくともプログラム本体とは分離し、いくつかのバラエティを用意してユーザーの選択の幅を持たせるべきです。

## ３. マウス
&emsp;マウスは、GUI（グラフィック・ユーザー・インターフェイス）には欠かせません。しかし、キャラクタ・インターフェイスにだって、マウスはもっと使われるべきです。究極的には、テキスト入力以外の操作は、ほとんどマウスで行なえるはずです。<br>　けれども、マウスに対し敬遠しがちな人も少なくありません。その理由はこうです。

- わざわざマウスに手を伸ばすのが面倒。
- いちいちメニューを選ぶより、ホットキーの方が速い。

こうおっしゃる方は、どちらかというと「ホームポジション固執派」に多いようです。「カーソルキー依存派」としては、右手がもう15センチばかり右に動くだけで、それほど面倒とも思えないのです。テンキーが無かったら、さらに移動距離は縮まります。何より、右手だけでボーっと操作できる怠惰な感覚が堪えられません。リモコンだってそうです。片手で操作できなくっちゃ、本当にお手軽とは言えまえん。<br>　では、マウス・インターフェイスを設計する際の留意点をあげてみましょう。

1. マウスの移動距離に無駄がないか。
2. ダブルクリックを十分活用しているか。
3. 右ボタンを十分活用しているか。
4. クリックorドラッグ。
5. マウスとターゲットの視点。

&emsp;（1）特に説明の必要はないでしょう。プルダウン・メニュー方式は、この観点からすると、右ボタンを利用したポップアップ・メニュー方式に比べて操作性は多少落ちます。

&emsp;（2）ダブルクリックは非常に重要です。これをサポートしていないマウス・インターフェイスなど論外とまで言えます。

&emsp;（3）右ボタンは、キャンセルや、ポップアップ・メニューの表示に使われます。キャンセルの場合は、これはあくまでオプショナルな操作でなくてはなりません。NeXTで2ボタンマウスが採用された事からも伺えるように、右ボタンはもっと積極的に活用されるべきです。

&emsp;（4）プルダウン・メニューを表示／選択する場合、Macではドラッグ／リリースで選択しますが、初心者にはクリック／ムーブ／クリックで選択させた方がよい、と考える向きもあります。ドラッグだと、メニューをじっくり読んでいる間じゅう、ボタンを押していなくてはなりませんから。Windowsでは、うまくこの両者をサポートしています。アイコンを移動する場合にも同様な事が言えます。

&emsp;（5）これは、例えばスクローラーを操作する時です。スクローラーは、テキストやメニューをスクロールさせる場合に用いますが、この時視点は、スクロールするテキスト上に位置し、マウス・カーソルは見ていません。このため、スクロールの方向、速度を変えようとしてマウスを動かす度に、いったん視点をマウス・カーソルに戻さねばなりません。こうなると、スクロール操作はぎこちないものになります。NeXTでは矢印ボタンをとなりに並べて、この点幾らか配慮しています。私が以前とった方法は、右ボタンで逆スクロールさせる、というものでした。

&emsp;マウス・インターフェイスに関しては、別の機会にじっくり考察致します。

## ４. ヒストリーとアンドゥ
&emsp;ヒストリーとアンドゥ機能は、アプリケーションの規模が一定のレベルに達した時点で、必ず盛り込まなくてはなりません。これに対するサポートの度合いが、ただのツールか、本当に使えるツールかの判断基準になるでしょう。<br>　ヒストリー機能に関して1つだけ言っておきたい事があります。それは、「ヒストリーの一覧表示など無くても構わないが、先頭文字列によるサーチは必須である」という事です。

## ５. 画面デザイン
&emsp;「顔じゃない、中身で勝負」などという負け惜しみは、ソフトウェアでは通用しません。画面デザインは、ソフトウェアの設計センスを如実に反映するものだからです。画面が美しいソフトがいいソフトとは限りませんが、画面がダサいソフトは、もれなくダサいソフトです。<br>　それでは、「画面デザインが美しい」とは、どんな観点から言えるのでしょう。

1. 配色がケバケバしくない。
2. 意味のない色分けをしない。
3. その時点で不必要な情報を表示しない。
4. 情報の配置に無駄がない。
5. 情報の重要度を視覚的に明示している。
6. タイトルやコピーライトの表示が無いか、あっても目立たない。
7. 美術的に美しい。

どれもあたりまえの事です。しかし、1とか7は、そのまま開発者の趣味が反映されますから、「なんだこのケバイ画面は」と思っても、実は開発者にとってはジミな画面なのかも知れません。しかし、NeXTの画面を「美しい」と感じない人は、まずいないでしょうから、本当に美しい画面デザインは、万人に受け入れられるはずです。<br>　「美術的に美しい」というと、ひと頃はMac風のデザインがもてはやされましたが、今はなんと言ってもNeXT風でしょう。あのモノトーン4階調の立体表示には、そそられます。

&emsp;というわけで、今回はざっくばらんに、UIについて思う事を書いてきました。そう、あと2つばかり言い残しておきます。

- オブジェクトを点滅、あるいは「動かして」注目させる。
- 初めに対象物を選定して、それに対する処理を選択する。

本当にUIは奥が深い。しかし、結局言える事は、

&emsp;「人間、大概の事には慣れてしまうものである」

（雑誌「**PC POWER** 1992年9月号」掲載）


