第3章


ヒューマンインタフェースデザイン


よい製品デザインは、人とコンピュータの相互作用のための、変わることのない原則の数々を具現しています。

この章は、あなたの製品をデザインする際の検討のために、これらの原則を提示します。また、国際的な互換性とユニバーサルアクセスのために検討すべき点を指摘します。

個々のユーザインタフェースの構成要素と、それをあなたのアクア準拠のユーザインタフェースにどのように組み立てるかの詳細情報は、第3部「アクア インタフェース」(87ページ)の各章を参照してください。

ヒューマンインタフェースデザイン原則

このセクションは、エレガントで、効率的で、直感的な、アクア準拠のユーザインタフェースをデザインするために、決定的な鍵となる原則を提示します。しばしば開発者には見逃されますが、これらの原則はアップルが数十年前にはじめて出版したときと同じ程度に、今日においても妥当なものです。事実、Mac OS Xのユーザインタフェースのデザインはこれらによって運用されています。

隠喩

あなたのアプリケーションの概念と機能を伝えるために隠喩を用いることで、人々が持っている世界についての知識という利点を活用しましょう。 隠喩は、ある作業についての、ユーザの心のモデルにおける構成部品といえます。具体的で、なじみ深い考えを表す隠喩を用いて、ユーザがコンピュータ環境に一通りの既成概念を当てはめることができるように、隠喩は明白なものとしましょう。

たとえば、Mac OS Xは文書の記録のためにファイルとフォルダの隠喩を用いています。人々は自分達のハードディスクを、書類入れを管理するときのようなやりかたで管理できます。他の隠喩の例としては、iTunesプレイリストとiPhotoアルバムがあり、これらは実世界の曲目や写真アルバムを表現しています。Dashboard widgetもユーザにその目的を即座に伝える効果があるので、それ自身が行う作業の隠喩とするのもよいでしょう。(Dashboard widgetのデザインガイドラインは、「Dashboard」(64ページ)を参照)

隠喩は、ある要素の使いかたを示唆する必要がありますが、隠喩の実態に制限する必要はありません。隠喩の示唆する使いかたと、隠喩に対応して拡張する、コンピュータの能力との間のバランスをとることが大切です。たとえば、ユーザがゴミ箱に入れる項目の数は、物理的なクズかごに入る項目の数に制限されることはありません。

ユーザの心のモデルを反映せよ

ユーザはあらかじめ、あなたのソフトウェアが可能にする作業を描いた心のモデルを持っています。このモデルは、実世界での経験、他のソフトウェアでの経験、そしてコンピュータにおける一般原則の組み合わせから生じます。

たとえば、ユーザは手紙を書いて送るという実世界での経験があり、大多数のユーザは電子メールアプリケーションを用いて、電子メールを書き、送信したことがあります。これに基づいて、ユーザは新しい手紙を作成する、受取人を選ぶ、手紙を送る能力といった、特定の既成概念を含む、この仕事の概念モデルを持っています。

ユーザの心のモデルを無視した、ユーザの既成概念にまるで一致していない電子メールアプリケーションは、使いづらい上に不快なものです。これはユーザが既に持っている知識と経験の上に作り上げられておらず、ユーザになじみの無い概念モデルを押し付けるようなアプリケーションだからです。

あなたのアプリケーションのユーザインタフェースをデザインする前に、あなたのアプリケーションが助けとなる作業のユーザの心のモデルを発見してみましょう。概念上の作業の構成要素を表している、そのモデルに特有の隠喩を認識してください。

手紙を書くという例で言えば、隠喩には手紙、郵便受け、封筒が含まれるでしょう。写真撮影に関わる作業の心のモデルにおいては、隠喩には写真、カメラ、アルバムが含まれるでしょう。

作業の構成要素についてユーザが想定していることを、あなたのウインドウ配置における構成、および作業の流れ、メニューとツールバーの構成、そしてユーティリティウインドウの使いかたに反映するように努力してください。

適切な心のモデルを明確に、直感的なユーザインタフェースへと反映するやりかたの優れた例としては、iTunesアプリケーションが挙げられます。アップルは音楽再生と音楽コレクションの管理で結びつけられた、人々の心のモデルを反映するようにiTunesをデザインしました。散らかっていないウインドウに、iTunesは個々の楽曲、プレイリスト、そして再生および検索コントロールを、曲を中心とした配置で表示します。

最も大きいペイン【区画】はプレイリストとコレクションを表示し、曲名、アーティスト、アルバムといった区分で明確に並べ替えができます。

小さいペインはプレイリストとコレクションを表示し、これらはちょうど、Finderのサイドバー内のディスクとフォルダアイコンが、ファイル、フォルダ、アプリケーションの表示を制御するように、現在表示される楽曲の一覧を制御します。

よく目立つ再生コントロールは、ラジオ、CDプレイヤー、iPodの同様のスイッチのように見えます。

検索欄はFinder、Mail、その他の数えきれないアクア準拠のアプリケーションにおける検索欄と一致しています。

iTunesのユーザインタフェースは、ユーザになじみのない概念に適応するよう強制するのではなく、綿密に定義された心のモデルを反映しているので、初心者ユーザであってもiTunesは直感的で簡単に使えることが解るでしょう。

あなたのユーザの持つ心のモデルが、あなたのアプリケーションのユーザインタフェースのデザインに浸透していなければいけません。それがあなたのアプリケーションのウインドウの配置、ツールバー上のアイコンとコントロールの選択と構成、そしてユーティリティウインドウの機能性を性格付けている必要があります。

加えて、あなたは以下の特徴を実現すべく努力することで、ユーザの心のモデルに対応してください。

  • 親しみ。ユーザの心のモデルは第一に経験を基にしています。可能なときは、ユーザインタフェースの構成要素を拡張してモデルの記号論を反映し、【ユーザの心の】モデルの用語を用いたラベルを表示してください。さらに、適切なところでは、おなじみのMac OS Xのユーザインタフェース構成要素を用いて、データの階層的な集合を検索し、案内するといった標準的な機能を提供しましょう。

    上で述べたように、iTunesアプリケーションはユーザが再生、一時停止、巻き戻しを連想する、よく知られたシンボルを用いた再生コントロールを表示します。さらに、たとえば検索とヘルプを提供するために、iTunesは標準的なアクアユーザインタフェース構成要素を使用します。Mac OS Xユーザは自動的に、そうした標準のユーザインタフェース要素の使いかたを、どのアプリケーションで現れるかに関わらず知っていることになります。

  • 単純さ。作業の心のモデルは、一般的に作業の根本的な構成要素について合理化され、注目しています。与えられた作業に関連する、任意の詳細な点は無数にあるかもしれませんが、基本となる構成要素は、ユーザの注意を細部の機能と奪い合うべきではありません。

    たとえばiTunesアプリケーションにおいては、曲を再生する、プレイリストを選択する、検索するといった基本的な作業の構成要素が目立つ特色とされていますが、これらはディスクを取り出す、プレイリストをシャッフルする、曲のアートワークを表示するといった付加的な作業を行う、簡単にアクセスできるメニュー項目やコントロールで補われています。

  • 利用しやすさ。単純さはつまるところ利用のしやすさです。そのために散らかっていないユーザインタフェースは必須ですが、ユーザの必要とする特定の鍵となる機能と、設定の利用しやすさも同等に重要です。このような構成要素をサブメニューの奥深くに隠したり、コンテキストメニューからのみ利用できるようにすることは避けてください。

    たとえば、iCalアプリケーションは、「カレンダー」メニューに新規カレンダーを「照会」するコマンドと、カレンダーを「公開」するコマンドを持ちます。こうした、簡単にアクセスできるけれど、それほど頻繁に行わない作業は、アプリケーションのメインウインドウ上に専用のコントロールを置くことが認められます。

  • 発見可能性。ユーザインタフェース要素の使いかたについてきっかけを与えることで、ユーザが機能性を発見することの後押しをしましょう。たとえば、ある要素がクリックできるのであれば、その方法を表さなければいけません。さもなくばユーザはそれをクリックしようとすることはないでしょう。アクアコントロールを適切に使用して、不慣れなユーザが見つけることのできないコントロールを作成することを避けましょう。

    アクアのボタンを例にとると、立体的に見えることが、ユーザが物理的な装置に見ることのできるボタン類との類似性を高めています。よくデザインされたツールバーアイコンは、コマンドをユーザに見分けがつくように描写しています。この親しみやすさはユーザに新しいアプリケーションの機能を探索するための自信を与えることでしょう。

    取り消しや回復の難しい動作を行って、発見に水を差してはいけません。この点についての詳細は、「寛容性」(45ページ)を参照してください。

明示的な動作と暗黙の動作

Mac OS Xの操作はいずれも、動作を用いたオブジェクトの操作を伴います。

この操作の最初の段階では、ユーザは求めるオブジェクトを画面上で目視します。

第二の段階では、ユーザはそのオブジェクトを選択もしくは指定します。

最後の段階では、ユーザはメニューコマンドを使用するか、マウスやその他の機器でオブジェクトの直接操作によって動作を行います。

このことはオブジェクトの操作に二つの枠組みを導きます。すなわち、明示的な動作と暗黙の動作です。

明示的な動作は、あるオブジェクトを操作した結果を明確に宣言しています。たとえば、メニューは現在選択されているオブジェクトに対して行うことのできるコマンドを一覧に挙げています。メニューコマンドの名前は、その動作が何であるかを明確に示し、コマンドの現在の状態(淡色表示または使用可能であるか)は、その動作が現在の文脈において有効であるかどうかを示しています。明示的な動作は、与えられたオブジェクトに対してコマンドが実行できるかどうかをユーザが覚える必要はありません。

暗黙の動作は、視覚的なきっかけや文脈を通じて動作の結果を伝えます。ドラッグアンドドロップ操作は暗黙の動作の典型的な例です。あるオブジェクトを別のオブジェクトへドラッグすることは、オブジェクトと、ドラッグ操作により行われる動作との間の関連性を構成します。たとえば、ファイルアイコンをゴミ箱へドラッグすることは、ファイルシステムから根本的なファイルを今すぐ取り除くことを暗示しています。暗黙の動作を明らかにするためには、ユーザは関連するオブジェクト、行われる操作、動作の結果を認識できなければいけません。

あなたのユーザインタフェースをデザインする際には、この二つの枠組みを心に留めておいてください。あなたのアプリケーションの作業におけるユーザの心のモデルを調査し、それぞれの動作の性質がどんなときに適切であるかを判断する指針としてください。

たとえば、Automatorは、ユーザがアクションをワークフローペインの中へドラッグして、これらの間に関係を作り出すときに暗黙の動作に対応しています。Automatorはアクション間の連結点の表示、望ましくない結果の可能性についての警告、入力と出力の種類を提案することで、これらの関係を伝えます。けれども、ユーザに対し特定の情報を与えるように求めるときは、Automatorはチェックボックスや編集可能な文字列入力欄を表示することで、明示的な動作にも対応しています。

直接的な操作

直接的な操作とは、ユーザがコンピュータによって表現されているオブジェクトを制御していることが実感できる、暗黙の動作の一例です。この原則に則り、画面上のオブジェクトは、ユーザがそのオブジェクトに対して動作を行っている間じゅう視認でき、その動作の影響は即座に視認できる必要があります。

たとえば、ドラッグアンドドロップ操作(最も典型的な直接的な操作の例です)を用いて、ユーザはアイコンをある場所から別の場所へドラッグすることでファイルを移動することができ、選択した文字列を直接別の文書へドラッグすることで移動することができます。直接的な操作の別の例としては、ドローアプリケーションにおける画像オブジェクトの大きさの変更や、3次元の風景におけるオブジェクトやカメラ視野の位置設定があります。

直接的な操作は、ユーザがそれを想定していそうなときに対応してください。ユーザに対してデータを操作するためにコントロールの使用を強制することは避けましょう。

たとえば、仮想図書館を管理するようなアプリケーションは、ユーザに本のアイコンを利用者の名前の上にドラッグすることで貸し出すことを許可するでしょう。

このような直接的な操作は、ユーザの作業における心のモデルに対応しているので、ウインドウを開いて、本の題名を選択して、利用者の名前を選択して、「貸し出し」ボタンをクリックする、という手順よりもずっと自然です。(心のモデルの概念についての詳細情報は、「ユーザの心のモデルを反映せよ」(40ページ)を参照)

ユーザによる制御

コンピュータではなく、ユーザが動作を開始して、制御できるようにしましょう。アプリケーションの中には、ユーザに最適と思われる選択肢だけを提供したり、ユーザを詳細な判断を行う必要性から遠ざけることでユーザを補助することを試みるものがあります。この手法は、ユーザではなくコンピュータを制御下に置くので、ユーザインタフェースの初心者ユーザに向けた部分に限っていえば、最適です。あなたの視聴者に最適なユーザ制御の段階を提供しましょう(あなたのアプリケーションに対する視聴者を決定するやり方の詳細は、「あなたの視聴者を熟知せよ」(25ページ)を参照)。

あなたのユーザインタフェースにおいて、どのように適切な段階の詳細さを提供するかについてのいくつかの提案は、「あなたのソフトフェアでの複雑さを管理する」(47ページ)を参照してください。

ユーザに要求される機能を提供すると同時に、彼らを危険から避けることを助ける上で鍵となるのは、取り消しできない動作です。たとえば、ユーザがふとしたことでデータを破壊するかもしれない状況においては、あなたは常に警告を与える必要があります。しかし、ユーザが続行することを選択したのであれば、許可する必要があります。

反応と伝達

反応と伝達は、何か誤りが起きたときに、単に警告を表示するよりもはるかに多くをもたらします。かわりに、適切な反応を提供して、あなたのアプリケーションと伝達できるようにすることで、ユーザに何が起こったのかについてを知らせ続けることを伴います。

ユーザがある動作を開始したときは、あなたのアプリケーションがユーザの入力を受け取り、それを操作していることを示す表示を常に提供しましょう。ユーザはコマンドが実行されたことを知りたいはずです。もしコマンドが実行できないのであれば、なぜできないのか、代わりに何が行われるのかが知りたくなるでしょう。

控えめに使うのであれば、アニメーションはユーザに要求された動作が実行されたことを示す最適な方法のひとつです。たとえば、ユーザがDock内のアイコンをクリックしたとき、アプリケーションが起動中であることをユーザに知らせるために、アイコンが跳ねます。

時には、あなたはアニメーションを用いて、オブジェクトと動作の結果の関係を明確にすることができます。Mac OS Xはアニメーションを用いて、微妙な、しかし明確な伝達を、ユーザとさまざまな方法で行います。

そのうちの少数を挙げると…

  • ユーザがウインドウをしまう【(最小化)】とき、それは単に消えるのではありません。代わりに、滑らかにDockへ滑り込み、次にどこを探せばよいかをユーザに明確に伝えています。
  • シートとウインドウの間の関連性を伝達するために、シートはウインドウのタイトルバーから広がります。
  • ドロワー【(引き出し)】とウインドウの間の関連性を強調するために、ドロワーはウインドウの下から滑り出し、影を表示することで机の引き出しのように見せています。

あなたはこうした繊細なアニメーション効果を用いて、あなたのユーザインタフェースにおける反応を改善させることを検討すべきでしょう。

長い時間がかかるかもしれない操作のために、進行インジケータを用いて、操作にどれだけかかるかについての役に立つ情報を提供しましょう。ユーザが操作にかかる正確な秒数まで知る必要はありませんが、推定値は役に立つでしょう。たとえば、Mac OS Xは「残り約1分」といった宣言を用いておよその時間枠を示します。

これはまた、ある作業を完了するために必要な手順の総数を伝達するためにも役に立つでしょう。たとえば、「850個のファイル中30個目をコピー中」といった文字列を含めることができます。

注:時間のかかる処理の間に、反応を提供することの適切な理由としては、もしあなたのアプリケーションが2秒間イベントへの応答に失敗したら、システムは自動的にあなたのアプリケーションのためのビジーカーソル【(虹色ぐるぐる)】を表示するという点があります。このカーソルを、他の反応もなく目にしたユーザは、あなたのアプリケーションはフリーズしたと考え、強制終了ウインドウを用いて終了するかもしれません。

人々が理解できる、直接的で単純な反応を提供しましょう。たとえば、エラーメッセージはエラーを引き起こした状況(「このディスクには文書を保存する十分な空きがありません。」)、そしてユーザが修正のためにとることのできる行動(「書類を別の場所に保存してみてください」)を正確に記述しなければなりません。有用な警告文の作成の仕方についての詳細は、「よい警告文を書く」(211ページ)を参照してください。

もしあなたのアプリケーションが、ユーザインタフェースを表示する前面プロセスと、アプリケーションのメインタスクの一部、もしくはすべてを行う背面プロセスから構成されているのであれば、ユーザとのすべての伝達を前面プロセスのユーザインタフェースを通して処理することに特別な注意を払ってください。

特に、背面プロセスはユーザが設定の変更を行ったり、情報を埋める必要のあるダイアログやウインドウを決して表示してはいけません。もし背面プロセスがユーザーと伝達する必要があれば、前面アプリケーションを起動するか、手前に移動させるべきです。こうすることが重要なのは、ユーザは背面プロセスが実行中であることを知らない(覚えていない)ので、そこからの伝達を受け取ると混乱することがあるからです。

例として、ユーザインタフェースを表示する前面プロセスと、予定されたバックアップを行う背面プロセスから構成されるバックアップアプリケーションを検討してみましょう。

ユーザはアプリケーションを起動し、バックアップの頻度を設定し、データとバックアップの場所を与え、アプリケーションを終了し、予定通りバックアップが行われることを確信します。もし、いつかバックアップディスクがいっぱいになったら、背面プロセスはすぐにユーザに伝えなければいけません。さもなくばユーザはデータを失ってしまいます。これを行うには、背面プロセスはアプリケーションを起動して、そのDockアイコンを跳ねさせる必要があります。見えないプロセスからの警告を表示する代わりに、見覚えのあるアプリケーションにユーザの注意を引き、ユーザに情報を受け取り、適切な行動をとるための心の準備をさせます。

注:背面のみのアプリケーション(顔のないバックグラウンドアプリケーションとも呼ばれます)は、ユーザ見えするアプリケーションと関連付けられていません。ユーザとの伝達が必須のとき、背面のみのアプリケーションは状況を説明する警告を表示できますが、警告表示はユーザに問題を扱うための他のアプリケーション(システム環境設定のような)を案内すべきでしょう。背面のみのアプリケーションについての詳細は、Runtime Configuration Guidelines と、Carbon サンプルアプリケーションの FolderWatchingを参照してください。

一貫性

インタフェースにおける一貫性は、ユーザの知識と技術を、あるアプリケーションから別のへと転用することを可能とします。

アクアインタフェースの標準的な要素を用いて、あなたのアプリケーション内での一貫性を保障し、さらに異なるアプリケーション間の一貫性から利益を得ましょう。

あなたの製品における一貫性について考えるとき、以下の事柄を自問してください…

  • Mac OS Xの標準との一貫性はありますか? たとえば、アプリケーションは予約された、そして推奨されるキーボード同義操作(「キーボードショートカットクイックリファレンス」(309ページ)を参照)を正しい目的で使用していますか?アクア準拠ですか?標準的な作業にMac OS Xが提供する解決策を使用していますか?(これらの解決策の詳細は、「Mac OS Xの技術を使用する」(61ページ)を参照)
  • そのアプリケーション自身の中での一貫性はありますか? ラベルや機能に一貫した用語を使用していますか?アイコンは使用されるたびに同じ事柄を意味していますか?概念はすべてのモジュール間で同様の手段で示されていますか?同じようなコントロールや、その他のユーザインタフェース要素はウインドウやダイアログの同じような位置に配置されていますか?
  • 製品の以前のバージョンとの一貫性はありますか? 用語と意味はリリース間で同じに保たれていますか?基本的な概念は本質的に変化していませんか?
  • 人々の想定事項との一貫性はありますか? 付加的な機能抜きでユーザの要求に合致していますか?ユーザの心のモデルに従っていますか?(この概念の詳細は、「ユーザの心のモデルを反映せよ」(40ページ)を参照)

万人の期待に合わせることは、一貫性において達成することが最も難しい性質ですが、特に、あなたの製品が幅広い専門知識を持つ視聴者に使用されるのであればなおさらです。あなたは目標とする視聴者と、彼らの要求の文脈において、一貫性の要点に注意深く重みをつけることでこの問題を処理することができます。あなたの視聴者をどのように定義するかの詳細は、「あなたの視聴者を熟知せよ」(25ページ)を参照してください。

WYSIWYG(見えるものが手に入る)

印刷、web出版、フィルムへの書き込み、DVD、その他の形式のために、ユーザがデータの書式指定をできるアプリケーションにおいて、ユーザが画面上で見るものと、彼らが受け取る最終的な出力との間に、著しい差異がないようにしてください。

ユーザが文書に変更を加えたら、即座に結果を表示しましょう。ユーザが最終的な出力まで待たなければならなかったり、後で文書がどのように見えるのかを頭の中で計算するようではいけません。必要であればプレビュー機能を使用してください。

人々はあなたのアプリケーションで利用できる機能はすべて見つけることができる必要があります。メニュー内でコマンドを利用可能にすることに失敗して、機能を隠してしまってはいけません。メニューは、人々がコマンド名を覚えておくのではなく、彼らの選択を目で見ることができるように、コマンドの一覧を提示しています。

機能への利用方法をツールバーやコンテキストメニューでのみ提供することは避けてください。なぜなら、ツールバーやコンテキストメニューは隠すことができるので、そこに含まれるコマンドは、メニューバーのメニューからも常に利用できる必要があります。

寛容性

寛容性を取り入れることで、人々にあなたのアプリケーションを探索する後押しをしてください。つまり、大半の動作を簡単に取り消せるようにしてください。人々はシステムに被害を与えたり、自分のデータを危険にさらすことなく、何かを試行できると感じられる必要があります。人々があなたの製品を快適に学習し、使用できると感じられるように、「取り消し」や「最後に保存した状態に戻す」コマンドのような安全網を作ってください。

ユーザが取り返しのつかないデータの消失を引き起こすかもしれない作業を始めるときは、ユーザに警告を行ってください。けれども、もし警告表示が頻繁に現れるようであれば、それは製品にデザイン上の不備があることを意味しているのかもしれません。選択肢が明確に提示され、反応のタイミングがよければ、アプリケーションの使用は比較的エラー知らずになるでしょう。

ユーザへの予期しない一般的な問題と警告表示は、副作用の可能性があります【妙なタイミングでポップアップを出すなという意味?】。ユーザが正しい選択をするための十分な情報を手にしていると感じられるように、幅広い反応とあらゆる場面に応じた伝達を提供しましょう。あなたが提供することのできる、さまざまな種類の反応の概要については、「反応と伝達」(42ページ)を参照してください。

認識の安定感

アクアインタフェースは理解のしやすさ、親しみやすさ、予想できる環境を提供するためにデザインされています。ユーザに視覚的な安定感を与えるために、インタフェースはメニューバー、ウインドウコントロール、その他多くの標準的な画像要素を定義しています。これらの標準的な要素は、どのようにふるまい、それを用いて何をするかをユーザが知っている、ユーザになじみのある環境を提供します。

ユーザに概念上の安定感を与えるために、インタフェースは明確な、限定されたオブジェクトの一式と、これらオブジェクトに対して行うための動作の一式を提供します。たとえば、あるメニューコマンドが、選択されたオブジェクトや、そのオブジェクトの現在の状態には適用しないときは、そのコマンドは省略されるのではなく淡色表示されます。

安定感の認識を伝えることを助けるために、ウインドウの大きさと位置のような、ユーザ変更可能な設定は保存してください。ユーザが、彼、または彼女の画面上の環境を配置するために設定したときには、ユーザが変更するまでその設定を保っておくべきです。

アプリケーションが特定の作業を実行中であることをユーザに知らせることで、状態や反応を提供することも認識の安定感に役立ちます。

美観の完成

美観の完成は、情報がよくまとめられ、優れた視覚デザインの原則に一致していることを意味します。あなたの製品は長時間眺めていても画面上で快適に見える必要があります。

画像を簡素に保ち、これらが真に使いやすさを高めるときにだけ用いましょう。ウインドウやダイアログに何10個ものアイコンやボタンを詰め込んではいけません。

概念を表すために勝手に決めたシンボルを使用しないでください。これらはユーザを混乱させたり悩ませます。

あなたのウインドウとユーザインタフェース要素のデザインの全体的な配置は、あなたのアプリケーションが行う作業についてのユーザの心のモデルを反映していなければいけません。この概念の詳細は「ユーザの心のモデルを反映せよ」(40ページ)を参照してください。

あなたのユーザインタフェースを実装するときに、高い品質を保証するためにあなたができることはたくさんあります。たとえば…

  • アイコンはすべて最高品質で描画すべきです(アイコンデザインの広範なガイドラインは「アイコン」(131ページ)を参照)。
  • 文字列はすべてアンチエイリアスされるべきです。これはあなたが標準システムフォントを使用したときには自動的に行われます(詳細は「フォント」(121ページ)を参照)
  • フォントの大きさと種類は、あるウインドウ内で一貫しているべきです(あなたが利用できるフォントの大きさとスタイルの詳細は「文字列」(121ページ)を参照)
  • コントロールの大きさは、あるウインドウ内で一貫しているべきです。たとえば、小型と、標準のコントロールを混在させてはいけません(Mac OS Xが供給するコントロールの詳細は「コントロール」(231ページ)を参照)。

画像要素と、ユーザが想定しそうなその要素のふるまいを一致させましょう。標準的な項目の意味やふるまいを変更してはいけません。たとえば…

  • チェックボックスは【(ラジオボタンのような)】相互に排他の選択のためにではなく、常に複数項目の選択のために用いるようにしてください。
  • 押しボタンは「開く」のように、その場で機能するコマンドのために使用してください。
  • 押しボタンをポップアップメニューの表示や、タブとして動作させるために用いることは避けてください。
  • 斜面ボタンをタブとして用いることは避けてください。

モードの排除

できる限り、ユーザが望むことはいつでもできるようにしてください。ユーザをひとつの操作に縛りつけるようなモードを用いて、その操作が完了するまで、何か別の作業を行うことを妨げるのは避けましょう。

Mac OS Xはドロワーとシートを用いて拡張されたモードの排除に対応しています。ドロワーは親ウインドウへの継続したアクセスができる状態のまま、追加機能を提供します。シートは親ウインドウに張り付いたモード式ダイアログであり、アプリケーション単位のモード式ダイアログの用途を置き換えます。ドロワーの詳細は「ドロワー」(184ページ)、シートの詳細は「書類単位のモード式ダイアログ(シート)」(208ページ)を参照してください。

容認できるモードの用途のほとんどは、以下の分類のいずれかに落ち着くでしょう…

  • ユーザがモードを維持するために頻繁に何かを行う必要のある、短期間のモード。例としては、文字列をスクロールするためにマウスボタンを押し続けることや、文字列の選択範囲を広げるためにShiftキーを押し続けることなどがあります。
  • ユーザが続行する前に、異常な状況を正す必要のある警告表示。これらは最小限に留めるようにしてください。
  • そのただひとつの目的が、ユーザを重要な作業の間案内することである、インストーラやアシスタント。

その他のモードは以下のいずれかを行うのであれば容認できます…

  • 実生活において慣れ親しんでいる、それ自体がモードである状況を模倣している場合。たとえば、画像処理アプリケーションにおいてさまざまなツールを選択することは、実生活において物理的な画材を選択することに似ています。
  • 何かに対して、そのふるまいではなく属性だけを変更する場合。例としてはテキスト入力の太字や、下線モードが挙げられます。
  • モード性を強調するために、システムのその他の通常操作のほとんどを封鎖している場合。一例としてはカット、コピー、ペーストを除く、すべてのメニューコマンドを使用不能にするダイアログが挙げられます。

もしアプリケーションがモードを用いるのであれば、現在のモードの明確な視覚的表示がなければいけません。そしてユーザはモードをきわめて簡単に出入りできる必要があります。たとえば、多くの画像処理アプリケーションでは、マウスポインタはユーザの選択した機能(モード)に応じて鉛筆、十字線、絵筆、もしくは消しゴムのような姿をとります。またiPhotoで行っているように、区分されたコントロールもモードを表すために有効です。

あなたのソフトフェアでの複雑さを管理する

簡単に使えるソフトウェアを開発するための最良の手法は、できる限りデザインを単純に保つことです。言い換えると、単純なデザインこそよいデザインであり、最良の道具とはユーザに使っていることすら意識させないものなのです。あなたのユーザのためにアプリケーションのインタフェースを単純化すべく、あなたができることをすればするほど、ユーザの要求に合致した、使って楽しい製品を製造することができるはずです。

あなたのアプリケーションの作業が複雑化するほど、ユーザインタフェースを単純に、なおかつその焦点を保ち続けることがより重要になってきます。あなたのデザインはユーザの心のモデルを反映するようにしてください(この概念の詳細は「ユーザの心のモデルを反映せよ」(40ページ)を参照)。

加えて、効率的なデザインを作成するために、あなたは以下の方法で複雑さを管理することもできます…

  • 段階的な開示によって、最初にもっとも一般的な選択をユーザに提示し、さらにユーザが追加の情報と選択を見ることのできる選択肢を提供します。この技法は、初心者ユーザにあなたのユーザインタフェースを理解しやすくする一方で、熟練ユーザには彼らが必要とする高度な機能を与えます。

    あなたは段階的な開示を開示三角形(「開示三角形」(272ページ参照)を参照)もしくは開示ボタン(「開示ボタン」(274ページ)を参照)を用いて実装することができます。

  • 情報ウインドウやインスペクタウインドウは、追加の情報と設定を、ユーザが隠したり表示させたりすることのできる、独立したウインドウの中に配置することで、ユーザインタフェースの散らかり具合を軽減させます。

    情報ウインドウとインスペクタウインドウの使いかたの詳細は、「情報ウインドウ」(205ページ)と 「インスペクタウインドウ」(204ページ)を参照してください。

  • 環境設定は、ユーザが画面上に見えるものと、ある程度まで、アプリケーションがどう働くかを変更する能力をユーザに与えることで、ユーザインタフェースの複雑さを軽減させます。環境設定を提供することにより、あなたは初心者と熟練ユーザの双方の要求に合わせてアプリケーションを形成することが可能となります。

    役に立つ環境設定の一式をどのように作り出すかの詳細は、「環境設定」(68ページ)を参照してください。

あなたのユーザを念頭に置け

インタフェースデザインの基本的な原則に加えて、あなたの視聴者の要求に配慮してください。

あなたのユーザは英語よりも他の言語のほうがより快適ではないですか?あなたが彼らにデータを提示する方法に影響を及ぼすような、特別な要求【special needs=障碍】を彼らが持っていることはありませんか?以下のセクションはあなたのデザインに影響するかもしれない領域を見極めます。

国際的な互換性

Macintoshシステムソフトウェアは、あなたが地域の、言語の、世界中の筆記形式との互換性を持つことを意図したアプリケーションを作成するときに、あなたが遭遇する複雑な問題に応えるためにデザインされています。あなたのユーザは、あなたの国に住んでいたとしても、他の言語や文化の方がより快適な場合があることを認識しましょう。国際的な互換性は、あなたの開発工程の初めから盛り込むほうが、製品開発が完了した後で記述システムへの対応を組み込もうとするよりもずっと簡単です。詳細は、Getting Started With Internationalizationを参照してください。

国際的に使用されるためのあなたのソフトウェア開発を行う前に、以下のセクションで述べている点について検討してください。

文化的な価値観

目に見えるインタフェース要素は必ず各国語化(つまり、他の言語に翻訳するか、他の国における用途に合わせる)ができるようにしましょう。あなたがユーザインタフェースをデザインするときは常に、世界のさまざまな地域によって色使い、画像、暦、文字列、時刻の表し方が異なる点に配慮してください。特定のオブジェクトやシンボル(電気のコンセントや通貨記号のような)は他の国では異なる外見を持つかもしれませんし、理解されないかもしれません。

画像はあなたのアプリケーションを向上させますが、ある画像が特定の視聴者にとって不快なものとなることがあります。文化は変化する価値と特徴を生き物、植物、静物に当てはめます。たとえば、合衆国においてフクロウは知恵と知識の象徴ですが、中央アメリカではフクロウは妖術と黒魔術を表します。

あなたが世界中に配布することを想定しているソフトウェアでは、季節、祝日、記念日を用いることは避けるのが賢明でしょう。もしあなたが祝日や季節を表す画像を取り入れるのであれば—クリスマスツリー、かぼちゃ、雪のような—、これらを必ず各国語化できるようにしましょう。

世界中でさまざまな暦が時間を示すために用いられています。合衆国とヨーロッパのほとんどはグレゴリオ暦に合わせて時刻を計ります。伝統的なアラビア暦、ユダヤ暦、中国暦は太陽暦ではなく太陰暦です。多くの地域では、仕事と行政のための暦と、宗教上の行事のための別の暦に合わせて時刻が計られています。

Mac OS Xは地域情報環境設定の書式ペインにおいて、こうした情報が表示される方法をユーザが選択したり変更することができます。APIのほとんどは、日付、時刻、そして通貨の単位や寸法のような、数値基準のデータを取得したり整形するときに、これらのアカウントごとの地域環境設定を利用します。そのため、ほとんどの場合、あなたのアプリケーションが整形や変換の作業を行う必要はありません。

地域を区別するデータの扱い方についての詳細は、Internationalization Programming Topicsを参照してください。

また、さまざまな住所の形式に対応することも忘れないでください。住所がすべてあなたの国の形式であると仮定してはいけません。アドレスブックはユーザに複数の国におけるユーザの住所データを記録させます。もしあなたがアドレスブックのデータに対応するか、表示を行うのであれば、さまざまな住所形式と郵便番号情報を扱う用意が必要です。

言語の違い

文字列の翻訳は複雑で繊細な作業です。口語的な言葉遣いや、標準的でない語法、文法は避けましょう。メニューコマンド、ダイアログ、ヘルプの文のための単語は慎重に選んでください。アメリカ英語で書かれた文字列を他の言語に翻訳すると、50%も長くなることがあります。

可能ならば、常に文字列リソースでは完全な文章を用いてください。あなたが複数の文字列をつないで文章を作成するときに、文法上の問題が発生することがあります。

【(ファイル名) + "を" + ("保存" | "印刷 " | "削除") + "します。"
…のような処理はよろしくないという意味か。】

言語が異なると語順がまるっきり異なることがあり、本文の表現は翻訳されたときには無意味です。たとえば、ドイツ語の語順ではしばしば動詞が文章の最後に置かれます。外国語における文字列の取り扱いについての詳細は、Internationalization Programming Topicsを参照してください。

文字列の表示と文字列の編集

各種の筆記形式は、文字送りと行送りの方向、文字セットの大きさ、特定の文字が文脈依存であるかどうかの点が異なります。Mac OS XはUnicode、すなわち世界のほとんどの筆記形式のための単一文字セットに対応しています。Unicodeはプラットフォームによらない文字エンコーディングのための国際標準です。

Cocoaのための文字列の扱いは、完全にUnicodeを基準にしています。Carbon開発者のためには、Unicode文字列操作のための関数セットを用意しています。Unicode対応についての詳細は、Internationalization Unicode Documentationを参照してください。

あなたが提供する国際的な文字列対応のレベルに関わらず、大切なのは以下の点を心に留めておくことです…

  • 文字列はいつも左揃えで左から右に読むとは限りません。
  • 文字列はいつも人に読まれるとは限りません。スクリーンリーダー【(音声読み上げソフトウェア)】を通して音読されるかもしれません。
  • システム及びアプリケーションフォントは変更されるかもしれないので、特定のフォントが表示されると仮定してはいけません。代わりに、あなたのアプリケーションフレームワークが提供する呼び出しを使用してください。
リソース

あなたのアプリケーションのコードを変更する必要なく、各国語化する間に、ユーザ見えする文字列を翻訳できるためには、分割されたリソースファイル内に地域依存の情報を記録することが秘訣です。

ウインドウ配置を作成するときに、文字列の大きさ、位置、方向を検討しましょう。文字列の大きさは言語によって変化します。また、筆記形式に応じて、文字列の方向が変わることがあります。中東の言語のほとんどは右から左へと読みます。ウインドウ内における文字列の位置は、簡単に変更できるようにすべきでしょう。

詳細は、Internationalization Programming TopicsとApple International Technologiesウェブサイト(http://developer.apple.com/intl)を参照してください。

ユニバーサルアクセス性

数百万もの人々が障害や特別な要求を持ち、コンピュータにはそうしたユーザの生産性を向上させるための、大きな期待が寄せられています。合衆国を含む多くの国では、特定の設備は障害を持つユーザへのアクセスを提供するように命じている法律があります。

あなたのデザイン工程の初めからユニバーサルアクセスへの対応を組み込むのは、あなたの実装サイクルの終わりにおいて付け加えるのよりもよい考えです。

あなたが目標とする視聴者の中の、能力の幅広い範囲に向けてデザインすることを考えるときは、視聴者全体の生産性を向上させることを考えましょう。一部の人々の障害を過剰に補おうとしないように気をつけてください。特定の障害への配慮が、障害を持たない人々への重荷を作り出すことがないようにしましょう。

Mac OS Xは、特別な要求のある人々に便宜を図るためにデザインされた、組み込み機能を多数取り揃えています。ユーザはこれらの機能に、システム環境設定のユニバーサルアクセスペインのなかでアクセスすることができます。ひとたび有効化されると、これらの技術はプログラム制御で、あなたのアプリケーションのユーザインタフェースを障害を持つユーザの役に立つ方法で操作します。

重要:あなたのアプリケーションは、あらゆるユーザインタフェース機能をマウスの代わりにキーボードを用いて行う機能や、障害を補助するためにユーザが選択できる環境設定といった、Mac OS Xに組み込まれたアクセシビリティ機能を一切無効にしてはいけません。

あなたのアプリケーションを、システム環境設定のユニバーサルアクセスペインで利用できる補助機能を用いて、確実に試験するようにしてください。

あなたがこれらの機能すべてに適応させる必要のない状況もあるかもしれませんが、そのためには、これらの機能を無効にするようなデザインの決定を下す前に、あなたのユーザ視聴者を完全に理解している必要があります。たとえば、【色を認識できないユーザのために】グレースケールでも動作するような視覚デザインツールを作成するのはきわめて困難でしょうが、あなたはそれでもプログラムのほかの部分を可能な限りアクセスできるように試みるべきです。

Mac OS Xのアクセス性の構造と、あなたのアプリケーションでアクセス性に対応する方法(アクセス有効化と呼ばれる工程です)についてさらに学習するためには、Accessibility Overviewを参照してください。補助技術の詳細は、Mac OS X Technology Overviewを参照してください。

あなたのアプリケーションをデザインする際に、補助技術によって操作される可能性を意識し、障害を持つユーザの体験を損なわないような方法で、機能を実装するようにしてください。

以下のセクションは、障害の主な分類を説明し、あなたにできる特定のデザイン上の解決策と、適応策への提案を提供します。それぞれの分類には幅広い障害の程度があり、多くの人々は複数の障害を兼ね備えているということを心に留めておきましょう。

視覚障害

視覚障害を持つ人々の最大の困難は表示(画面)にまつわるものです。あるユーザは高い明暗比を必要とします。さまざまな文字の大きさを扱うことのできるソフトウェアは、視覚障害を持つ人々を補助することを容易にします。Mac OS X(バージョン10.2以降)は画面の拡大機能をユニバーサルアクセス環境設定で提供します。「配置の例」(289ページ)で提供される配置のガイドラインに従うことは、間隔と並び方の適切な使用を保障することで、視力の低いユーザの助けとなります。

Mac OS Xバージョン10.4では、アップルはMacintoshのための読み上げインタフェースである、VoiceOverを導入しました。VoiceOverはユーザがシステムや、アクセスできるアプリケーションのユーザインタフェースを操縦することを可能にして、ユーザの作業領域とコンピュータ上で発生する、あらゆる活動に対する音声による説明を提供します。あなたのアプリケーションをVoiceOverを用いて試験し、完全にアクセスできることを確実にすべきです。Mac OS Xにおけるアクセス性の詳細は、Accessibility Overviewを参照してください。

色覚の欠損がある人々がいることを心に留めておきましょう。賢明な色使いは、あなたのアプリケーションのユーザインタフェースを向上させることができますが、重要な情報を伝えるために色分けのみに依存するインタフェースを作成しないでください。色分けは文字列、位置、強調表示のような、他の種類の手がかりに対して常に冗長にする必要があります。ユーザの要求に対して適切な色を彼らが選択することを可能にするため、情報を伝達するための色をユーザがさまざまな中から選択できるようにしましょう。

聴覚障害

聴覚障害を持つ人々は、音声出力が通常のボリュームでは聞こえないか、もしくは【大きさに関わらず】まったく聞こえません。ソフトウェアは情報を提供するために、音だけに依存することがあってはいけません。手がかりが音で与えられる場合、同様に視覚的にも利用できる必要があります。

Mac OS Xはシステム警告表示のための標準的な音の手がかりに加えて、ユーザに視覚的な手がかりを指定することを可能としているため、あなたがユーザの注意を引く必要のあるときは必ず標準システム警告表示を使用しましょう。

動作状況を表すために、ハードウェアは機械部分が発する作動音に加えて、視覚的なライト【電源ランプなど】を持つべきです。明示的に音声を生じるハードウェア【電子楽器など】は、外部増幅を容易にする必要があります。たとえば、音声を適切なレベルに増幅できるようにする、外部スピーカやヘッドフォンのジャックを搭載するといったことです。

身体障害

身体障害のある人々は、しばしば付加的なアクセス方法を必要とします。たとえば、人によっては先天的異常、背骨の神経の損傷、手根管症候群のような反復性ストレスによる損傷、もしくは進行性の病気のために、手や腕が使用できないことがあります。こうしたグループの人々は、しばしばコンピュータの入力機器—マウスやキーボードなど—や取り外し式の記憶媒体の扱いに苦労します。

ある人々は同時に複数のキーを押すこと(例としては、多くのキーボードショートカットで必要とされる操作です)が困難です。ユニバーサルアクセス環境設定のキーボードペインでオンにすることができる、スティッキー【粘着】キーを用いることで、ユーザは複数のキーを同時に押す代わりに、連続で押すことができます。

微細運動による動作【fine motor=微細運動⇔gross motor=粗大運動】が難しいユーザは、慣習的なマウスの使いかたができないか、キーボードのふるまいの変更を必要とするでしょう。

キーボード環境設定において、ユーザはキー入力が繰り返されるまでにどれだけ押し続けるかを選択できます。またキーが押され、それが記録されるまでの間の遅延を指定することもできます。加えて、Mac OS Xはユーザに対して、マウスの代わりにキーボードを用いて動作を行うための方法を提供します。フルキーボードアクセスモードがオンのとき、ユーザはキーボードを用いてインタフェース項目へ移動し選択することができます。ユニバーサルアクセス環境設定のマウスペインでオンにすることができるマウスキーは、ユーザにテンキーパッドを用いてドラッグやウインドウのサイズ変更といった作業を行うためにマウスを制御することを可能にします。

あなたのアプリケーションが、キーボードナビゲーション設定を無効にすることのないようにしてください。詳細は、「キーボードショートカットクイックリファレンス」(309ページ)を参照してください。加えて、補助技術が使用するキーボードショートカットを無効にしてはいけません。補助技術が有効の時は、この技術が使用するキーボードショートカットは、あなたのプログラムが定義したものよりも優先されます。

もしあなたがハードウェアをデザインしているのであれば、手や腕の使用に制限があったり、全く使用できない人を妨げるような、身体的な障壁を押し付けることのないようにしてください。たとえば、ラッチ【留め具】のついたディスクドライブは、口にくわえたペンを使ってコンピュータとやり取りしているユーザには、開けることが困難でしょう。

インタフェースを拡張する

このセクションでは、あなたのアプリケーションが既存のものにないユーザインタフェースの要素やふるまいを必要とするときに、いかにしてMac OS Xのユーザインタフェースを拡張するかを説明します。

標準的な要素では合致できない要求が発生したときは、アップルのインタフェースデザイン原則に対応した新しい要素やふるまいを提供する、これらのガイドラインを用いたコントロールのセットを拡張することができます。

このセクションは、ガイドラインを超えることが適切なときを判断する方法、新しいインタフェース要素を作るために既存の要素をどのように使用するか、そしてあなたが追加インタフェース要素をデザインするときに避けるべき事柄についての情報を含んでいます。

既存のインタフェース上に作成せよ

人々は標準的なMac OS Xのユーザインタフェースの一貫性、予想のつくユーザ体験を信頼しています。

他のプラットフォームのユーザインタフェース要素やふるまいをMac OS Xにコピーしてはいけません。なぜなら、これらはなじみのないユーザを混乱させるからです。

もしあなたにMac OS Xのインタフェースを拡張する必要があれば、始めるのに最適な箇所は、定義済みの視覚とふるまいの言語体系です。外見は人々に何を伝えるのか(見て【ルック】)、そして彼らはどのように要素のふるまいを予想するのか(感じる【フィール】)について考えましょう。

視覚的な手がかりは、ポップアップメニュー上の矢印のように、人々が慣れ親しんでいる要素を認識する手助けをします。人々はある種のふるまいと特定の要素を、その外見を基にして関連付けることを学びます。

たとえば、人々は押しボタンをその丸みのある形状で認識し、ボタンが引き起こす動作を見分けるラベルを見ます。この独特の外見は押しボタンをその他の種類の要素から区別しています。人々がボタンをクリックしたとき、彼らはその動作が作用したことを示すために強調表示されることを予期し、その動作は即座に効果をあらわすことを予期します。また人々はボタンをクリックすることは、ダイアログの消去やアクティブな文書の内容領域の変更といった、これに関連した付加的なふるまいをもたらすことを予期しているでしょう。

既存のオブジェクトに新しいふるまいを割り当ててはいけない

あなたが既存のインタフェース部品【ビルディングブロック】を使用するとき、これらを標準的な方法で使用してください。標準的な要素のふるまいは決して変更しないようにしましょう。あなたが新しいふるまいを必要とするときは、そのための新しい要素をデザインしてください。もし要素がさまざまな状況において異なるふるまいをすれば、インタフェースは予想できなくなり、その結果理解し難くなるでしょう。これはあなたのアプリケーションにおけるユーザの信頼に悪影響を及ぼすでしょう。

新しいインタフェース要素は慎重に作り出せ

新しいインタフェース要素を作り出すことに対しては、とても慎重になってください。なぜなら、あなたは不要なな複雑さを持ち込もうとしている恐れがあるからです。新たに導入する要素をCocoaやCarbonが提供する要素へぴったりとはめ込むためには、あなたは極めて大変な作業をこなさなければならないでしょう。加えて、アクアユーザインタフェースが発展し続けるのに合わせて、あなたのカスタム要素は、アクアの変更に適応するために更新する必要があるはずです。

新しいインタフェース要素を実装する前に、あなたが求められる結果を成し遂げるためには、既存の要素やそれらの組み合わせを使うことはどうしてもできないということを確実にしてください。新しい要素が役に立つかどうかを判断するために、使い勝手の試験は必須事項です。


←第2章:優れたソフトウェアの特徴
→第2部:Macintosh体験