Yoshihiko Hyodo 6f06b9514a first commit
2024-11-18 22:21:26 +09:00

124 lines
13 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 楽しいプログラミング 《第3回》
 この季節になると、なんとなく「アリときりぎりす」のお話を思い出します。どちらかというと、土壇場になってアセるタイプですからねぇ。でもね、私はきりぎりすの方が好きです。だって、彼はバイオリンを弾くじゃありませんか。
## ■ ユーザー・インターフェイス
&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列に並べる方が無難でしょう。12、あるいはその両方をどう採用するかは、メニューの総数によります。<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月号」掲載