第13章


ウインドウ


ウインドウは、アプリケーション及びデータとの、閲覧及びやりとりのための枠組みを提供します。

開発者の視点から見ると、Mac OS Xのウインドウには多くの種類があります。

ユーザはこれらをすべて【(特に区別せず)】ウインドウとしてみなすでしょう。ですが、さまざまな種類のウインドウの間にある、ふるまい(重なり合い、拡大/縮小、しまう)と外見(タイトルバーの有無)の差異が、Macintoshユーザ体験に寄与しています。

利用できるウインドウのさまざまな種類や、一般的なウインドウのふるまい、そしてウインドウの、それぞれの種類ごとに特有のふるまいを、あなたが理解することが大切です。

この章は、始めにさまざまな種類のウインドウを紹介し、次に書類、アプリケーション、ユーティリティの各ウインドウの外見とふるまいに着目します。

ダイアログと警告の各ウインドウは、こうした標準のウインドウに対するガイドラインに加えて、独自のガイドラインを持つ、特殊な種類のウインドウです。これらは「ダイアログ」(207ページ)にて詳細を述べています。明確に記載されている場合を除いて、ダイアログはウインドウと同様にふるまう必要がある点に注意してください。

ウインドウの種類

開発者やデザイナーとしてのあなたは、ウインドウの主要な四つの種類を認識する必要があります。

これらのふるまいは一般的には同じですが、その間には重要な違いがあります。

  • 書類ウインドウは、ファイル単位のユーザデータを格納しています。人々が作成し、記録した内容への表示を提示します。

    書類がウインドウよりも大きければ、ウインドウは書類の内容の一部を表示して、ほかの領域へスクロールする能力をユーザに提供します。

  • アプリケーションウインドウは、書類単位ではないアプリケーションの主要なウインドウです。

    これらのウインドウは、標準的なアクアウインドウの外見と機能、もしくは(まれに)磨いた金属風の外見を使用することができます。

  • ユーティリティウインドウは、ほかのウインドウ上に浮かんでおり、ユーザが書類を開いている間に用いて作業することができる、ツールやコントロールを提供します。

    (パレットとも呼ばれる)ユーティリティウインドウは、「ユーティリティウインドウ」(202ページ)にて、より詳細に述べられています。

  • ダイアログと警告表示は、ユーザからの応答を要求します。

    これらは「ダイアログ」(207ページ)で述べられています。

これらのウインドウの種類のそれぞれの例を、図 13-1で示します。

図 13-1 ウインドウの四つの種類

書類ウインドウ
ユーティリティウインドウ
アプリケーションウインドウ
ダイアログウインドウ

Carbon:Carbon User Experience Documentationの、Handling Carbon Windows and Controlsを参照してください。

Cocoa:Cocoa User Experience Documentationの、Window Programming Guide for Cocoaを参照してください。

ウインドウの外見

書類、アプリケーション、ユーティリティのいずれのウインドウも、最低限持っている必要があるのは…

  • タイトルバー。(たとえば、ツールパレットのように)ウインドウが実際のタイトルを持たないとしても、ユーザがウインドウを移動できるように、ウインドウはタイトルバーを持つ必要があります。
  • 閉じるボタン。ユーザがウインドウを消去するための、一貫した手段を持つために必要です。

加えて、標準的な書類ウインドウは、アプリケーションウインドウや、ユーティリティウインドウが持たないことがある、以下の属性を持ちます。

  • 水平、または垂直スクロールバー、もしくは(ウインドウの内容のすべてが見えていなければ)その両方。
  • しまうボタン、拡大/縮小ボタン
  • 代理アイコン(書類が保存されて以降)
  • 書類のタイトル
  • サイズ変更コントロール
  • ツールバーコントロール

これらの要素は、図 13-2の、それぞれの正しい位置で示されています。

(垂直スクロールバーの正しい位置は、図 13-22(200ページ)で見ることができます)

図 13-2 標準的なウインドウの部品

閉じる、しまう、拡大/縮小ボタン 代理アイコン ウインドウタイトル タイトルバー
ツールバーコントロール
スクロールバー
スクローラ
サイズ変更コントロール

タイトルバー

すべてのウインドウはタイトルバーを持つ必要があります。ウインドウがタイトルを持たないとしてもです(これは極めてまれな例外とすべきです)。

ウインドウタイトル

書類ウインドウは、閲覧されている書類の名前を表示する必要があります。

アプリケーションウインドウは、アプリケーションの名前を表示します。

ユーティリティウインドウは、そのウインドウを適切に説明するタイトルを表示します。

もし、ウインドウの内容が変化するかもしれないのであれば、現在の文脈を反映するためにタイトルを変更するのが適切でしょう。たとえば、Keynoteのインスペクタでは、ウインドウのタイトルは、選択されているペインを反映して変化します。

もし、タイトルの中でひとつ以上の項目を表示する必要があれば、両側に空白を加えた全角ダッシュ【em dash】( — )で区切りましょう。たとえば、Mailのメイン表示ウインドウは、現在選択されているメッセージ受信箱と、もしあれば、選択されたフォルダを表示します。

もし、そのウインドウ自体でメッセージを見られていたら、メッセージのタイトルが表示されることに注意してください。

ウインドウタイトルにパス名を表示しないでください。

書類のタイトルを表示するときは、表示名を使用して、ユーザが拡張子を表示することを選択していたら、拡張子を表示してください。

タイトルバーのボタン

書類、アプリケーションの各ウインドウは、常に活性の閉じるボタンと、しまうボタンを表示します(閉じるボタンと、しまうボタンが何をするかの詳細は、「ウインドウを閉じる」(196ページ)と「ウインドウをしまう、広げる」(195ページ)を参照)。

もし、ウインドウの大きさを調節できる場合は、拡大/縮小ボタンを含めてください。拡大/縮小ボタンの動作についての情報は、「ウインドウをサイズ変更する、拡大縮小する」(195ページ)にあります。

ユーティリティウインドウは、常に活性の閉じるボタンを表示しますが、活性のしまうボタンを表示することはありません。

もし、ボタンが活性でなければ、これらは非活性状態で、【無効なボタンを非表示にするのではなく、】とにかくすべて表示する必要があります。

例外はユーティリティウインドウで、ボタンを一つだけ、すなわち閉じるボタンだけを表示することが許容されます。

警告表示と、モード式ダイアログは、これらのボタンをいずれも含みません。

ウインドウ内でツールバーが利用できるのであれば、タイトルバーにツールバーコントロールを含める必要があります(「ツールバー」(184ページ)を参照)。

図 13-3 標準的なウインドウのためのタイトルバーボタン

(チェックマーク)
警告表示とモード式ダイアログのみ

(一時停止マーク)

閉じるボタンで変更を示す

書類に保存されていない変更があるときは、閉じるボタンは点を表示する必要があります。

図 13-4 「保存されていない変更有り」状態の閉じるボタン

点は、この書類に
保存されていない変更が
あることを示します。

Carbon:SetWindowModified関数で点を表示してください。

Cocoa:アプリケーションがNSDocumentを基にしていれば、点は自動的に現れます。もしくは、NSWindowクラスのsetDocumentEdited:メソッドを使用してください。

代理アイコン

書類ウインドウは、書類が初めて保存された時点から、タイトルバーに代理アイコンが加えられます。短い間、代理アイコンを押し続けた後で、ユーザは対応するファイルシステムのオブジェクトを操作しているかのように、代理アイコンを操作することができます。

たとえば、あなたは書類の代理アイコンを、電子メールのメッセージにドラッグすることで、書類を電子メールのメッセージに添付することができます。

図 13-5 代理アイコンがほかのアプリケーションにドラッグされる様子

1.ユーザが代理アイコンをクリックする
2.代理アイコンが書類アイコンに変化する
3.ユーザは代理アイコンをほかのアプリケーションへドラッグする。
4.書類が新しいアプリケーションへコピーされる。

代理アイコンは、書類とファイルシステムオブジェクトの状態が同一である限り、その通常の状態で現れます。

書類に保存されていない変更があるときは、その代理アイコンは淡色表示されます。図 13-6における、保存された変更のある書類に対比して、保存されていない変更のある書類の代理アイコンの間の違いに注意してください。

図 13-6 変更が保存された書類、保存されていない書類の代理アイコン

保存されていない変更を示すために淡色表示されます。

タイトル、または代理アイコンをCommand-クリックすることで、書類のパスを図示するポップアップメニューを表示します。図13-7(183ページ)に示すとおり、書類のパスには、書類自身と、それを含んでいる、ユーザのホームディレクトリがあるボリュームまでの、すべてのフォルダを表示します。Mac OS Xは複数ユーザ環境であるため、混乱を避けるために書類の完全なパスを表示することは、特に重要です。

図 13-7 代理アイコンをCommand-クリックすることで開かれる、書類パスのポップアップメニュー

apples.rif【ファイル名】
書類
kathryn【ユーザ名】
ユーザ
Tiger【ボリューム名】
【ちなみに、実際に試したところ、ボリューム名の上にコンピュータ名が表示される場合もあるようだ。】

ツールバー

ツールバーは、ユーザに最も頻繁に使用するコマンドへの即座のアクセスを与えるために有効です。ツールバー内の項目は、いずれもメニューコマンドとしても利用できなければいけません。

独立したウインドウにある、アプリケーション全般から利用できるツールバーは、ツールパレットとも呼ばれます。詳細は、「ユーティリティウインドウ」(202ページ)を参照してください。

このセクションでは、ほかの内容と共にウインドウの一部であるツールバーについて説明します。

あなたの提供するツールバーの一式は、デフォルトのウインドウの大きさに合わせる必要があります。ユーザはツールバーにどの項目が現れるか、どの順に現れるかをカスタマイズできる必要があります。

デフォルト設定として、ツールバーは、アイコンと文字列のラベルを表示すべきです。ユーザはアイコンのみ、もしくは文字列のみを表示するように、変更できる必要があります。

あなたはこれらの選択肢を、表示メニューの「ツールバーをカスタマイズ」コマンドで提供することができます。

ユーザがツールバーの項目を選択したとき、その項目が選択されたことを示すために、押された状態を保つか、現在の状態を示すためにアイコン自体を変更するかの、どちらかを行う必要があります。

【前者はiTunesのシャッフル再生ボタン、後者は再生/一時停止ボタンなどのことか?】

ツールバー項目は、クリック透過に対応することができます。すなわち、ユーザは項目を含んでいるウインドウが非活性のときに、項目を活性化できるという意味です。あなたは、ツールバー項目のどの部分集合に対してもクリック透過に対応することを選択できます。これがどんなときに適切と思われるかのガイドラインは、「クリック透過」(198ページ)を参照してください。

もし、あなたのアプリケーションが、ほかの内容と共に、ウインドウの一部としてツールバーを使用しているのであれば、図 13-8に示すとおり、ツールバーを表示/非表示するためのコントロールをウインドウのタイトルバーに含めてください。

また、あなたはツールバーを表示/非表示するためのコマンドも、表示メニューに配置する必要があります(「表示メニュー」(169ページ)を参照)。

図 13-8 ツールバーコントロール

ツールバーの
表示/非表示コントロール

ツールバーのためのアイコンデザインについての詳細は、「ツールバーアイコン」(137ページ)を参照してください。

Carbon:HIToolBarCreate関数でツールバーを作成してください。詳細は、Carbon User Experience Documentationの、HIToolbar Programming Guideを参照してください。

Cocoa:NSToolbarクラスでツールバーを作成してください。

ドロワー

ドロワー【引き出し】は、親ウインドウから滑り出す子ウインドウであり、ユーザは親ウインドウが開いている間、開いたり閉じたり(表示/非表示)することができます。

ドロワーは、常時見えている必要のない、頻繁に利用されるコントロールを含む必要があります。

ドロワーの内容は、その親ウインドウの内容と密接な関係があるべきです。

ドロワーは、もし、その親ウインドウが磨かれた金属風であれば、自動的にその磨かれた金属風の外見を継承します(「磨かれた金属風ウインドウ」(187ページ))。

図 13-9 親ウインドウの隣に開いたドロワー

Carbon:ドロワーは、CreateNewWindow関数とkDrawerWindowClass定数を用いて作成し、SetDrawerParent【関数】を用いて、その親ウインドウと関連付けてください。また、The Carbon Window Managerも、その他のドロワー関連の関数を提供します。

Cocoa:ドロワーの対応は、NSDrawerクラスを通して利用できます。

ドロワーの用途

ドロワーは、かなり頻繁に利用される必要があるものの、常時見えている必要はないというコントロールのためだけに使用してください(この基準は、ユーティリティウインドウの、いつでもメインウインドウが最前面の層で見えており、利用できる必要がある、というものに比べてのものです)。

ドロワーの用途の例としては、お気に入り一覧へのアクセス、受信箱ドロワー(Mailアプリケーション)、ブラウザのブックマークがあります。

ドロワーは、ウインドウに付随し、滑り出すという点でシートとやや似ていますが、交換することのできない二つの要素があります。

シートは第一に、「シートを使用するとき」(209ページ)で説明されているとおり、モード式ダイアログを置き換えることを意図していますが、ドロワーは付加機能を提供することを意図しています。

シートが開いたとき、それがウインドウの中心となり、ウインドウの内容を覆い隠します。ドロワーが開いたとき、親ウインドウのすべては今までどおり見えており、利用できます。

ドロワーの用途のいくつかは、ソース一覧の用途と似ています。ソース一覧を使用するときの情報は、「ソース一覧」(186ページ)を参照してください。

ドロワーのふるまい

ユーザは、一般的にはボタンをクリックするか、コマンドを選択することでドロワーの表示や非表示を行います。

もし、ドロワーが有効なドロップの対象を含んでいれば、ユーザが適切なオブジェクトをドロワーの現れる場所へドラッグしたときにも、あなたはドロワーを開きたくなることでしょう。

ドロワーが開閉するとき、その親ウインドウの裏から、左、右、下へと滑りながら現れます。

あなたは、親ウインドウのデフォルト位置を、そのドロワーが画面外に隠れることなく、完全に開くことができると保障する必要があります。

もし、ユーザが親ウインドウを画面の端に移動してからドロワーを開いたら、ドロワーはウインドウの空間が空いている側に開く必要があります。もし、ユーザがウインドウを、どの方向にも空間が無いほど大きくしたら、ドロワーは画面外に開きます。

閉じたドロワーが親ウインドウの背面に隠れるという錯覚を作り出すために、開いたドロワーはその親ウインドウよりも小さくすべきです。親ウインドウが縦にサイズ変更されたときは、ドロワーの高さが親ウインドウの高さを越えないことを保障するために、必要に応じて、開いているドロワーをサイズ変更します(ドロワーが親ウインドウより短い分には構いません)。

この錯覚は、ドロワーの内側の境界線が親ウインドウによって隠され、適宜、親ウインドウの影がドロワーの上に見えることによって、さらに補強されます。

ユーザは、開いているドロワーを、その外側の境界線をドラッグすることでサイズ変更することができます。ドロワーがどれだけサイズ変更できるのかは、ドロワーの内容によって決まります。もし、ユーザが大幅に—内容のほとんどが覆い隠されてしまう位置まで—リサイズしたら、ドロワーは素直に閉じるべきです。

たとえば、ドロワーがスクロールする一覧を格納していた場合、ユーザは一覧の端を覆い隠すまで、ドロワーをサイズ変更できる必要があります。しかし、もしユーザが、一覧の項目を判別するのが難しくなるほどドロワーを小さくしたら、ドロワーは閉じるべきです。

もし、ユーザがドロワーに新しい大きさを設定したら(それが可能であれば)、新しい大きさは、次回ドロワーが開かれたときにも使用される必要があります。

ドロワーは、親ウインドウが非活性となったり、ウインドウが閉じられ、次に再び開かれたときも、その状態(開閉の)を保っている必要があります。

開いたドロワーを持つ親ウインドウがしまわれたら、ドロワーは閉じる必要があります。ウインドウが再び活性化されたときは、ドロワーは再び開かれる必要があります。

ドロワーは、その意図する用途に対して適切であれば、いかなるコントロールも格納することができます。「標準の大きさのコントロールを配置する」(289ページ)に記載されるとおり、通常の配置ガイドラインに従ってください。

ドロワーは親ウインドウの一部として考えてください。親ウインドウにフォーカスがあるときに、ドロワーのコントロールを淡色表示してはいけませんし、逆もまた同様です。

フルキーボードアクセスがオンのとき、ドロワーの内容は、ユーザがTabを押して選択することのできる、ウインドウの構成要素に含める必要があります。

ソース一覧

ソース一覧は、移動できる分割バーで区切られた、ウインドウの領域であり、ユーザにデータ間を移動するための手段を提供します(分割バーの詳細は、「分割表示」(277ページ)を参照してください。)。

ソース一覧は、iTunesやFinderのように、データが第一の意味としてアプリケーション内での移動を表すときに使用してください。

ウインドウの主要部分の中で、それに従って動作するソース一覧内のオブジェクトを、ユーザは選択します。

ソース一覧は、通常、書類ウインドウではなく、アプリケーションウインドウの中で使用されます。iTunesのプレイリスト、iPhotoのライブラリ、Finderのサイドバーは、いずれもソース一覧の例です。

図 13-10 Finderのサイドバーはソース一覧です

データそのものをまとめるために用いる、文脈依存のコントロールを除いて、ソース一覧にコントロールを置いてはいけません。あなたはソース一覧の下に、追加、削除、そしてソース一覧の中の項目についての情報を得るためのコントロールを含めることができます。

もし、その他のコントロールを加える必要があれば、ソース一覧の代わりにドロワーを使用することを検討してください。

磨かれた金属風ウインドウ

ウインドウは、Mac OS Xにおいて、二つの異なる外見を持ちます。まず、これまでの例のほとんどの中で示したとおりの、標準的なデフォルトの外見があります。また、図 13-11に示す、磨かれた金属風の外見が利用できます。

見境無く磨かれた金属風の外見を使用してはいけません。特に、あなたのアプリケーションを単に目立たせるために、磨かれた金属風の外見を使用しないでください。

代わりに、「デザイン工程」(25ページ)と「ヒューマンインタフェースデザイン」(39ページ)に従い、ユーザの心のモデルを反映することで、あなたのアプリケーションを差別化しましょう。

磨かれた金属風の外見は、ある種のアプリケーションに対してはうまく作用しますが、大抵のアプリケーションは、この外見を使用すると、見た目が重すぎると感じられます。

たとえば、iSyncのアプリケーションウインドウに対して、これはうまく作用します(図 13-11)。iSyncは、あなたのデジタルハブを管理する手助けをするからです【後述する3番目のケース、周辺機器と共有するデータの管理インタフェースにあたるという理由】。

一方、磨かれた金属風の外見は、テキストエディットの書類ウインドウ(図 13-12)ではうまく作用しません。テキストエディットは書類単位だからです。

図 13-11 磨かれた金属風アプリケーションウインドウ

図 13-12 書類ウインドウの金属風と標準版

(チェックマーク)
(一時停止マーク)

あなたが磨かれた金属風ウインドウを使用できるのは、あなたのアプリケーションが…

  • 情報を案内するためにソース一覧を提供する、単一ウインドウアプリケーションである場合—たとえば、iTunesやFinder
  • おなじみの物理的な装置を再現しようと試みている場合—たとえば、計算機やDVDプレイヤー
  • カメラ等の、デジタル周辺機器のためのインタフェース、もしくは、デジタル周辺機器と共有されるデータを管理するためのインタフェースを提供する場合—たとえば、iPhotoやiSync

あなたが、磨かれた金属風ウインドウを使うべきでないのは、あなたのアプリケーションが…

  • 複数ウインドウのアプリケーションである場合—たとえば、Interface Builder
  • 書類単位のアプリケーションである場合—たとえば、テキストエディット

磨かれた金属風ウインドウの外見は、メインアプリケーションウインドウ、及び、基準を満たすその他のウインドウ—たとえば、iTunesのイコライザウインドウ—に対して使用してください。

環境設定やその他のダイアログのような、補助的なウインドウには使用しないでください。

Finderがしているように、一つのアプリケーションの中で、標準アクアウインドウと、磨かれた金属風ウインドウを混在させることは許容できます。

図 13-13 標準と、磨かれた金属風版のウインドウを混在させる

もし、磨かれた金属風ウインドウにドロワーやツールバーがあれば、これらは自動的に磨かれた金属風の外見を継承します。

ユーザは、(タイトルバーだけではなく)磨かれた金属風の表面のどこでもドラッグすることで、金属風ウインドウを移動させることができます。

Carbon:MacWindows.hで定義されるウインドウの種類を使用してください。

Cocoa:タイトルのあるウインドウにはNSTexturedBackgroundWindowMaskを適用してください。丸い角を持たない、境界線のないウインドウを使用することは避けてください。

ウインドウのふるまい

このセクションでは、あなたはどのようにしてウインドウを開き、配置し、サイズ変更をして、閉じる必要があるかについて述べています。またユーザがウインドウとやり取りする際に、これらはどのようにふるまう必要があるかについてのガイドラインを提供します。

ウインドウを開く

あなたのアプリケーションは、ユーザが以下のうちいずれかを行ったときにウインドウを開く必要があります…

  • Finderにおいて、あなたのアプリケーションによって対応されている書類のアイコンをダブルクリックしたとき
  • あなたのアプリケーションアイコンをダブルクリックしたとき
  • Finderにおいて、書類を選択してから、ファイルメニューから「開く」を選択したとき

    (または、Finderにおいて、書類を選択してから、Command-Oを押したとき)

  • 開くダイアログの中からファイルを選択したとき
  • 開いているウインドウが無いときに、Dockのアプリケーションアイコンをクリックしたとき

ユーザが既存の書類を開いたときは、必ず、ファイル名拡張子の表示/非表示についてのユーザの環境設定を反映した、表示名をそのタイトルにしてください。書類のタイトルにパス名を表示してはいけません。

新規ウインドウには、「新規ウインドウに名前を付ける」(191ページ)で説明するとおりに、名前をつける必要があります。

いくつかのウインドウの内容は、ユーザの選択に応じて変化します。たとえば、ユーザがMail環境設定ウインドウの上段のアイコンの一つをクリックしたとき、ウインドウの下段の表示は変化します。

システム環境設定の「ディスプレイ」のような、特定のウインドウは、タブコントロールを用いてペインを切り替えます(「タブ表示」(279ページ)を参照)。

変更できるペインがあるウインドウは、アプリケーションが開いている限りは、前回の状態で再び開き、ユーザが終了したときは、デフォルト表示に戻る必要があります。

ツールバーのあるウインドウにおいて、もしツールバーが、複数の可能な表示の部分集合(お気に入り)を表すのであれば、デフォルト状態は特定のペインではなく、ツールバーの下に選択肢のすべてを示す必要があります。【Mac OS X10.3までのシステム環境設定のツールバーを参照。】

もし、ツールバーが可能な選択肢のすべてを表示するのであれば、ウインドウのデフォルト状態はユーザが最後に選択した、いずれかのペインを表示する必要があります。

たとえば、システム環境設定が開いたとき、可能な選択肢のすべてが見えています。しかし、Mail環境設定が開いたとき、それはユーザが最後に選択したペインを表示します。

図 13-14 デフォルト状態のシステム環境設定

新規ウインドウに名前を付ける

もし、あなたのアプリケーションが書類単位でなければ、あなたのアプリケーションの名前をウインドウのタイトルとして使用してください。もし、あなたのアプリケーションに短縮名があれば、それをタイトルとして使用してください。

新規書類ウインドウには「名称未設定」【"untitled"】と名前を付けてください。小文字のままにしておくことで、ウインドウは名前を持たないことがより明確になり、人々に書類を保存することを促します。

もし、ユーザが最初の名称未設定ウインドウを保存する前に、「新規」を再び選択したら、第二のウインドウには「名称未設定 2」【"untitled 2"】のように名前を付けてください。

ウインドウのタイトルに数字を加えるのは、開いている名称未設定ウインドウが複数あるときだけにしてください。ユーザがほかの新規ウインドウを開いた後であっても、最初の名称未設定ウインドウに「1」を付け加えてはいけません。

図 13-15 名称未設定ウインドウの連続に対する適切なタイトル

名称未設定
名称未設定 2
名称未設定 3
【ちなみに、テキストエディットでは「名称未設定」の後に、半角スペース、半角数字が付加された。】

ユーザが保存したり閉じたりして、すべての名称未設定ウインドウを消去したら、次の新規書類は「名称未設定」、その次は「名称未設定 2」といったようにやり直す必要があります。

図 13-16 ウインドウタイトルの正しい例、正しくない例

(チェックマーク) 最初の新規ウインドウには、「名称未設定」を使用してください。

(一時停止マーク) "Untitled"のように、大文字始まりにしてはいけません。

(一時停止マーク) 最初の新規ウインドウには、数字を加えてはいけません。

(一時停止マーク) タイトルを空欄のままにしてはいけません。

ウインドウを配置する

あなたのアプリケーションがウインドウを表示しているときはいつでも、どこに置くか、どれだけ大きくするか、あなたが決める必要があります。

新規書類ウインドウは、水平位置の中央に開いて、できるだけ多く、書類の内容を表示する必要があります。

書類ウインドウの天辺は、メニューバー(もしくは、アプリケーションのツールバーが開いていて、メニューバーの下に配置されていたら、そのツールバー)に突き当たる必要があります。それ以降のウインドウは、右に20ピクセル、下に20ピクセルの位置に開く必要があります。確実に、新規ウインドウとDockが重なる部分がないようにしてください。

Dockについての詳細は、「Dock」(56ページ)を参照してください。

書類ではないウインドウ、環境設定については、図 13-17に示すとおり、新規のウインドウは水平位置の中央に開きます。

垂直位置は視覚的に中央に来るようにする必要があります。ウインドウの底辺からDockの天辺(画面の下にあった場合)までの距離は、メニューバーの底辺からウインドウの天辺までの距離の、およそ2倍とすべきです。

それ以降のウインドウは、右に20ピクセル、下に20ピクセルずらします。確実に、新規ウインドウとDockが重なる部分がないようにしてください。

図 13-17 書類ではない新規ウインドウの、「視覚的中央」配置

水平位置は中央に配置

もし、ユーザがウインドウの初期の大きさや位置を変更したら、次回に関連付けられたファイルやウインドウ(単一ウインドウアプリケーションの場合)が開かれたときも、ユーザの選択を維持してください。

もし、ユーザが書類ウインドウを、開き、移動し、閉じて、ほかの変更を加えなかった場合は、新しいウインドウ位置を保存しますが、ファイルの更新日時を変更してはいけません。

ウインドウを再び開く前には、書類が最後に開かれたときと同一ではないことがある、ユーザのモニタ設定に合わせて、必ずその大きさと状態を調節してください。

ウインドウの以前の位置(ウインドウの左上隅の位置)と、可能であれば、その大きさを維持するように試みてください。

もし、両方とも再現することができなければ、位置を保ったままウインドウの大きさを縮小してください。それも不可能な場合は、同一モニタ上に留めるように試みて、必要な内容ができるだけ見えるようにウインドウを開いて、前述のとおりに、新規ウインドウを開く際のガイドラインに従ってください。

たとえば、もし、ユーザがアスペクト比の広いディスプレイ上に、書類を画面いっぱいの大きさで開き、次にそのファイルをディスプレイの小さなコンピュータ上で開いた場合は、書類は大きいディスプレイで保存された大きさではなく、小さいディスプレイの大きさで開くべきです。

適切なウインドウの大きさについての詳細は、「ウインドウをサイズ変更する、拡大縮小する」(195ページ)を参照してください。

複数のディスプレイを持つコンピュータ上では、最初の新規ウインドウは、メニューバーのある画面の視覚的な中央に表示してください。もし、ユーザがこの最初のウインドウを移動しなければ、追加されるウインドウは、それぞれの直前のウインドウの右下に表示してください。もし、ユーザがウインドウを移動したら、追加されるウインドウは、図 13-18に示すとおり、最前面のウインドウの、最も大きい部分を含む画面に表示してください。

たとえば、ユーザがウインドウを作成して、それを第二のモニタへと完全にドラッグし、そこで新規ウインドウを作成した場合は、第二の画面上に新規ウインドウを表示してください。

もし、画面上の空間が十分にあれば、それ以降のウインドウは、最前面のウインドウの右下に表示してください。画面上の空間が不十分であれば、それ以降のウインドウは、もともとの視覚的な中央位置から始まって表示し、さらに追加されるウインドウはわずかに右下にずらして表示を繰り返します。

もし、ユーザが、ウインドウを第二のモニタ上に完全に移動してから、単一モニタのシステム上で開いた場合は、可能であれば、ウインドウの以前の大きさを尊重してください。

図 13-18 複数モニタシステム上での適切な新規ウインドウの配置(ユーザが最初のウインドウを、複数の画面にかかるように移動した場合)

もし、ユーザがいくつかのウインドウを複数モニタシステム上で開いたら、ユーザが作業をしている画面上に、それぞれの直前のウインドウの右下に、新しいウインドウを配置し続けてください。

モニタの間にかかるようにウインドウを開いてはいけません。ウインドウの初期位置は、常に単一の画面に収まる必要があります。

ウインドウを移動する

ユーザは、タイトルバー、もしくは、磨かれた金属風ウインドウの場合は境界線のどこでも、ドラッグすることでウインドウを移動します。ユーザのドラッグに応じて、ウインドウとその内容の全体が移動します。

非活性ウインドウをドラッグする間、Commandキーを押し続けることで、ウインドウを活性化せずに移動させることができます。

あなたのアプリケーションは、ユーザが、ウインドウを再配置できない位置へ移動することを、決して許可すべきではありません。

ウインドウをサイズ変更する、拡大縮小する

あなたのアプリケーションは、最小、及び最大のウインドウの大きさを決定します。これらの大きさは、ディスプレイの解像度と、あなたのインタフェースの制約を基準としてください。

書類ウインドウについては、内容をできるだけ多く、もしくは、ページのような、合理的な単位で表示するように試みてください。

また、あなたのアプリケーションは、標準状態と呼ばれる、ウインドウの初期の大きさと位置についての値を設定します。

標準状態はできるだけ大きくすべきだと思い込んではいけません。モニタによっては、ウインドウの実用的な大きさよりもはるかに大きいことがあります。あなたのアプリケーションが作成する種類の書類で作業するために最適な、そして書類の内容をできるだけ多く表示するような、標準状態を選択してください。

ユーザはウインドウの標準の大きさと位置を変更できませんが、あなたのアプリケーションは適切なときに標準状態を変更できます。たとえば、ワードプロセッサは、ページ設定ダイアログで明示された幅で書類を表示するために十分な、標準の大きさと位置を定義することができます。

ユーザは、(右下角にある)サイズ変更コントロールをドラッグすることで、ウインドウの大きさを変更します。ユーザのドラッグに応じて、ウインドウ内の見えている内容の量も変化します。ウインドウの左上角は同じ場所に留まります。実際のウインドウの内容は、常に表示されています。

もし、ユーザがウインドウの大きさか位置を、最低7ピクセル変更したら、新しい大きさと位置は、ユーザ状態となります。

ユーザは、標準状態と、ユーザ状態の間を、拡大/縮小ボタン【zoom button】をクリックすることで、交互に切り替えることができます。

ユーザ状態にあるウインドウの拡大/縮小ボタンをユーザがクリックしたとき、あなたのアプリケーションはまず、標準状態の適切な大きさを決定する必要があります。次に、ウインドウを標準の大きさにできて、なおかつ、ウインドウ全体を画面上に保つことができるように、ウインドウを最小限、移動してください。

拡大/縮小ボタンは、それがユーザの設定した最後の状態である場合を除き、ウインドウが画面全体を覆い尽くすことを引き起こすべきではありません。

複数のモニタを持つユーザが、ウインドウを拡大/縮小したとき、標準状態はウインドウの最も大きい部分を含むモニタ上とする必要があります。メニューバーの存在するモニタである必要はありません。

このことが意味しているのは、もし、ユーザがウインドウをモニタ間で移動したら、標準状態におけるウインドウの位置は、異なるモニタ上で、いくつも存在することができるということです。

いかなるウインドウのための標準状態も、常に単一のモニタに完全に収まらなければいけません。

ウインドウを拡大/縮小したとき、確実にDockに重ならないようにしてください。Dockについての詳細は、「Dock」(56ページ)を参照してください。

ウインドウをしまう、広げる

ユーザがウインドウをしまうボタン【以下、しまうボタンと表記】をクリックしたとき、タイトルバーをダブルクリックしたとき、Command-Mを押したとき、ウインドウはDockへしまわれます。

ウインドウのアイコンは、ユーザがクリックするまで、もしくは、しまわれたのがアプリケーションの唯一開いているウインドウであった場合は、ユーザがDockのアプリケーションアイコンをクリックするまで、Dockに留まります。

Dockの詳細は、「Dock」(56ページ)を参照してください。

Dockのアプリケーションアイコンをクリックすることは、常にウインドウ—書類、もしくは、ほかの適切なウインドウ—を活性にするという結果をもたらす必要があります。

ユーザがDockアイコンをクリックしたときに、何も開いていない書類単位アプリケーションでは、新規の、名称未設定ウインドウを開く必要があります。

アプリケーションが開いている間、Dockアイコンにはその下に目印【三角形】がつきます。

ユーザがDockにある、開いているアプリケーションのアイコンをクリックしたとき、アプリケーションは活性化して、しまわれていない開いているウインドウはすべて、手前に移動します。しまわれている書類ウインドウはDockに留まります。

もし、ユーザがDockアイコンをクリックしたときに、しまわれていないウインドウが無ければ、最後にしまわれたウインドウが広がり、活性化する必要があります。

開いている書類が無ければ、アプリケーションは新規ウインドウを開く必要があります。

(もし、あなたのアプリケーションが書類単位でなければ、アプリケーションのメインウインドウを表示してください)

ウインドウを閉じる

ユーザは以下の手段でウインドウを閉じることができます…

  • ファイルメニューから「閉じる」を選択する
  • Command-Wを押す
  • 閉じるボタンをクリックする

ユーザが書類ウインドウを閉じるときに、あなたのアプリケーションがすべきことは…

ほとんどの場合、書類単位ではないアプリケーションは、メインウインドウが閉じられたときに終了すべきです。たとえば、システム環境設定は、ユーザがウインドウを閉じたら終了します。

けれども、もし、アプリケーションがメインウインドウが閉じられたときに、何らかの機能を継続して実行するのであれば、メインウインドウが閉じられたときに実行し続けるのは適切でしょう。たとえば、iTunesはユーザがメインウインドウを閉じたときも再生を継続します。

ウインドウの重ね合わせ

各アプリケーションウインドウ、書類ウインドウは、異なるアプリケーションの書類が間に挟まることもある、独自の層に存在しています。

ウインドウをクリックすることで、ほかのウインドウの重なり順を乱すことなく、それを手前に移動させることができます。

重ね合わせにおける、ウインドウの深さは、ウインドウが最後に利用されたのがいつであるかによって決まります。

ユーザが非活性の書類をクリックしたとき、または、ウインドウメニューから書類を選択したときは、その書類だけを、それと開いているユーティリティウインドウがあれば、手前に移動させる必要があります。

ユーザは、Dockのアプリケーションアイコンをクリックするか、そのアプリケーションのウインドウメニューから「すべてを手前に移動」を選択することで、あるアプリケーションのすべてのウインドウを手前に移動させることができます。

これらの動作は、そのアプリケーションの開いているウインドウのすべてを、画面上の位置、大きさ、アプリケーション内での重なり順を保ったまま、手前に移動させる必要があります。詳細は、「ウインドウメニュー」(171ページ)を参照してください。

ユーティリティウインドウは、常に同じ層、天辺の層にあります。これらは、各々のアプリケーションが活性のときだけ表示され、アプリケーション内のすべての書類ウインドウの上に浮かんでいます。

ユーザは、Command-`(抑音アクセント)とCommand-Shift-`(抑音アクセント)を用いることで、すべての開いている書類ウインドウを、順方向、または逆方向に巡回することができます。

フルキーボードアクセスがオンのときは、Control-F4とShift-Control-F4を用いて、すべてのウインドウを巡回することができます。

メインウインドウ、キーウインドウ、非活性ウインドウ

ウインドウは、どのようにしてユーザがこれらとやり取りするのかを基にして、さまざまな姿をとります。ユーザの意識の焦点となる、最前面の書類ウインドウ、またはアプリケーションウインドウは、メインウインドウとして参照されます。

メインウインドウは、しばしばキーウインドウでもあります。 キーウインドウとは、キーボード、マウス、その他入力装置を問わず、ユーザ入力を受け付けるウインドウのことです。

しかし、メインウインドウが常にキーウインドウとは限りません。メインウインドウがユーザの意識の焦点でありながら、メインウインドウ以外のウインドウが入力装置のフォーカスを得る場合も、よくあることです。

たとえば、ある人がインスペクタ、検索ダイアログ、フォントパネル、カラーパネルを使用しているとき、書類はメインウインドウであり、その他のウインドウはキーウインドウとなります。

もし、メインウインドウとキーウインドウが異なるウインドウであれば、これらのタイトルバーの外見によって互いに区別されます。

メインウインドウとキーウインドウは、共に活性ウインドウです。

活性ウインドウのコントロールは色がついており、対する非活性ウインドウのコントロールは色がついていないという点で、活性ウインドウは非活性ウインドウに対して、視覚的に明らかです。

非活性ウインドウとは、ユーザが開いたものの、前面にいないウインドウのことです。

メインウインドウとキーウインドウは、常に前面であり、コントロールには常に色がついています。

図 13-19における、メインウインドウ、キーウインドウ、非活性ウインドウの間の、視覚的な違いに注意してください。

図 13-19 メインウインドウ、キーウインドウ、非活性ウインドウ

非活性ウインドウ
メインウインドウ
キーウインドウ

クリック透過

クリック透過を提供する項目とは、はじめにウインドウを活性にするためにクリックし、次に項目をクリックするのではなく、ユーザが非活性ウインドウ上にある項目を一度クリックすれば活性化できるという項目のことです。

クリック透過は、非活性ウインドウを閉じる、サイズ変更する、そして、ファイルをコピーする、移動するといった作業を行ううえで、大きな効果をもたらします。

けれども、多くの場合において、クリック透過は、ある項目を意図せずクリックしたユーザを混乱させることがあります。

クリック透過は、コントロールのクラスの属性ではありません。

ツールバー項目を含む、あらゆるコントロールは、多くの文脈においてクリック透過に対応することができますが、あるコントロールを使用しているときに、同じコントロールのクリック透過を使用不能にできることは、特定の文脈においてぶち壊しとなる、もしくは、取り返すことが難しくなることがあります。

非活性ウインドウにおいて、クリック透過を提供しない項目は、使用不能状態で現れる必要があります。

図 13-20 クリック透過に対応したコントロールを持つ非活性ウインドウ

このウインドウの
すべてのコントロールは、
クリック透過に対応しています。

単一ウインドウにおいては、あなたは項目のどの部分集合に対してもクリック透過を提供することができます。あなたはすべての項目についてクリック透過に対応するか、もしくは一切対応しないかの間から選択する必要はありません。

ウインドウが非活性の間に、ユーザはどの項目を活性化したがるだろうかということを発見するために、あなたのウインドウ内のコントロールを調査しましょう。

どの項目をクリック透過に対応させるべきでないか、あなたが判断する指針として、以下のガイドラインに従ってください。

このような項目や動作に対して、クリック透過を提供しないでください…

  • 有害となる可能性があり、ユーザに取り消すことを許可しない

    (たとえば、Mailの「削除」ボタン)

  • 取り消すことが難しい、もしくは不可能である

    (Mailの「送信」ボタンのように)

  • ユーザにどんな動作が行われるのかを告げずに、ダイアログを消去する

    (たとえば、保存ダイアログの「保存」ボタンは、既存のファイルを上書きして、自動的にダイアログを消去します)

  • ユーザを現在の文脈から連れ去ってしまう

    (たとえば、Finderのカラムで新しい項目を選択することは、Finderウインドウの対象を変化させることがあります)

これらの状況のいずれかにおけるクリックは、動作を発生させずに、対象を含むウインドウを手前に移動させる必要があります。

図 13-21 クリック透過に対応しない非活性ウインドウの削除ボタン

このボタンは、
ユーザデータを
破壊する可能性があるので、
クリック透過に対応しません。

一般的に、たとえそのコマンドが絶対にデータの破壊をもたらすとしても、実行する前に確認の反応を提供するコマンドに対しては、あなたはクリック透過を実装することができます。

たとえば、動作を実行する前にユーザが取り消すか確認するための能力を、あなたが確実に提供するのであれば、「削除」ボタンにクリック透過を提供しても構いません。

たとえば、アカウント環境設定の「ユーザを削除」ボタンも、実行前に確認ダイアログを提供するので、クリック透過を提供します。

もし、あなたが確認の反応を提供しない項目に対して、クリック透過を実装したいのであれば、実行された後でユーザが動作を取り消すことが、どのくらい難しくなるかについて検討してください。

たとえば、Mailでは、「削除」ボタンは最初に反応を提供せず、有害となる可能性のある動作であり、取り消すことが難しいため、クリック透過を提供しません。

Mailの「新規」ボタンは、結果的に起こる動作が有害でなく、取り消すことが簡単なので、クリック透過が有効です。

Carbon:クリック透過は、デフォルトではオフです。あなたは、特定のコントロールに対して、クリック透過を明示的に有効化しなければいけません。デフォルトのふるまいが正しいふるまいであると仮定してはいけません。上記ガイドラインを確実に適用してください。

Cocoa:クリック透過は、デフォルトではオンです。あなたは、特定のコントロールに対して、クリック透過を明示的に無効化しなければいけません。デフォルトのふるまいが正しいふるまいであると仮定してはいけません。上記ガイドラインを確実に適用してください。

【CarbonとCocoaで逆なので要注意。】

ウインドウをスクロールする

人々は、現在のウインドウに納まるよりも大きな、書類や一覧の領域を見るために、スクロールバーを使用します。

活性ウインドウだけがスクロールできます。

ウインドウは水平スクロールバー、垂直スクロールバー、その両方を持つことも、どちらも持たないこともできます。また、ひとつ以上のスクロールバーを持つウインドウは、右下角に、サイズ変更コントロールを持ちます。

図 13-22 スクロールバーの要素

スクロールバー
スクローラ
スクロールトラック【軌道】
スクロールアロー【矢印】

スクローラは、内容がどれだけ見えているかを反映した大きさをとります。スクローラが小さいほど、そのときユーザが見える内容は少なくなります。

スクローラは、書類全体における、ウインドウ内に見えている部分の、相対的な位置を表しています。

もし、ウインドウ内で、書類の内容が完全に見えていたら、スクロールバーはスクローラを含みません。

非活性ウインドウのスクロールバーは、非活性の外見を持ちます。図 13-21(199ページ)を参照してください。

単一の表示を含む、ほとんどの書類ウインドウ(たとえば、スクロールする文字列や表)については、ウインドウのふちとスクロールバーの間に空白を明示しません。

ユーザは、以下のようにしてスクロールバーを使用することができます…

  • スクローラをドラッグする。この方法は通常、書類のあちこちを移動するための最速の手段です。ウインドウの内容は、ユーザがスクローラをドラッグするのに応じて、「即時」に変化します。
  • スクロールアローをクリックする。これは、「この方向に隠れている書類の先を見せてくれ」という意味になります。スクローラは矢印の方向に移動します。

    スクロールアローをクリックするたびに、内容は一単位移動します。一単位が何に相当するかは、あなたのアプリケーションが決定します。たとえば、ワードプロセッサでは、クリックごとに文字列を一行移動するでしょうし、スプレッドシートは一行、もしくは一列移動することができます。

    滑らかなスクロール効果を保障するために、書類全体を通して、同じ大きさの単位を定めてください。

  • スクロールトラックをクリックする、もしくは押し続ける。

    クリックは、ユーザのアピアランス環境設定での選択に応じて、書類をウインドウいっぱい(デフォルトの場合)か、ポインタのホットスポットまで、進めます。

    「ウインドウいっぱい」とは、ウインドウの高さ、もしくは幅から、ユーザの文脈を保つために重複する、最低一単位分を引いた大きさのことです。

    【長文を読んでいるような場合に、完全に1画面(ウインドウ)分スクロールしてしまうと、ユーザが現在位置を見失ってしまうため、既に見えていた部分を少し残しておくという意味。たぶん。】

    この重複部分の単位は、スクロールアローの一単位と等しくすべきです(たとえば、文字列の1行分、アイコンの一列分、画像の一部分)。

    また、Page UpとPage Downキーも、書類の表示をウインドウいっぱい移動します。

    スクロールトラックを押し続けることで、スクローラがポインタの位置にたどり着くまで(もしくはユーザがマウスボタンを離すまで)、ウインドウいっぱい分の書類を連続して表示します。

ウインドウのスクロールバーの領域には、コントロールを加えないのが最善です。もしあなたが、この領域にひとつ以上のコントロールを加えたら、人々がコントロール同士を区別して、正しいものをクリックすることは難しくなるでしょう。

スクロール領域への許容できるコントロールの追加としては、分割バーや、たとえば現在のページを示す、状態バーが含まれます。

ウインドウのコントロールが、使いやすく、分かりやすいことを保障するためには、あなたの機能の大部分をメニューの中にコマンドとして配置するのが最善です。もし、あなたが機能への付加的なアクセスを、本当に提供したいのであれば、ボタン付のパレットのような、ユーティリティウインドウを作成することを検討してください。

ユーザの生産性に著しく有益である、頻繁に使用される機能だけを、最優先のインタフェースへ昇格させるべきです。

ほかのウインドウと共存し、画面空間の使用量を最小限にする必要があるユーティリティウインドウは、小型、またはミニ版スクロールバーを使用できる可能性があります。

もし、ウインドウに小型、またはミニ版スクロールバーがあった場合、そのウインドウの内容領域の中にある、ほかのすべてのコントロールも、小型版である必要があります。

詳細は、「小型及びミニ版コントロールを使用する」(299ページ)を参照してください。

自動スクロール

ほとんどの場合、ユーザはスクロールを制御できる状態にいる必要があります。

あなたのアプリケーションは、自動スクロールをこれらの場合において行わなければなりません。

  • あなたのアプリケーションが、結果的に新しい選択範囲を作成したり、挿入ポイントを移動するといった操作を行うとき(たとえば、ユーザが文字列を検索し、あなたのアプリケーションがその位置を特定したとき)、新しい選択範囲を示すために、書類をスクロールしてください。
  • ウインドウ内に見えていない位置で、ユーザがキーボードから情報を入力したとき(たとえば、あるページ上に挿入ポイントがあって、ユーザがほかのページへ移動した場合)、新しい情報を取り込んで、表示するために、書類を自動スクロールしてください。

    あなたのアプリケーションがスクロールする距離を決定します。

  • ユーザが選択範囲を広げるため、マウスボタンを押し続けている間に、ウインドウの端を過ぎてポインタを移動したときは、ポインタの移動した方向に書類をスクロールしてください。
  • ユーザが何かを選択して、新しい位置へとスクロールし、そこで選択範囲に対して操作を行おうと試みたとき、あなたのアプリケーションがその操作を行う前に、選択範囲が表示されるように、スクロールしてください。

あなたのアプリケーションが書類を自動的にスクロールするときはいつでも、必要な量だけ書類を移動してください。つまり、ユーザが操作を行った後で選択範囲の一部が表示されるのであれば、全くスクロールしません。

もし、あなたのアプリケーションが、選択範囲を明らかにするために一方向にだけスクロールできるのであれば、両方にスクロールしないでください。【縦方向・横方向のどちらかだけにしろという意味か?】

選択範囲に向かって自動スクロールするとき、文脈の中に選択範囲を示すように試みてください。選択範囲が、全体を表示するには大きすぎるときは、選択範囲で画面を埋め尽くしてしまう代わりに、いくらか文脈を示すのは良い考えでしょう。

ユーティリティウインドウ

ユーティリティウインドウはアプリケーション固有、またはシステム全般のどちらかです。アプリケーション固有のユーティリティウインドウは、アプリケーションが非活性化されたときに非表示となります。

カラーウインドウ、フォントウインドウといった、システム全般のユーティリティウインドウは、開いているすべてのウインドウの天辺に浮かびます。

あなたは、コントロールや活性書類ウインドウに作用する設定を提示するために、ツールパレットのような、モードのないユーティリティウインドウを作製することができます。

ユーティリティウインドウは、極めて重要なコントロールや、ユーザの作業の文脈において、常時利用できる情報を保持するために有効です。

けれども、ユーティリティウインドウは画面空間を占有するので、あなたがモードなしダイアログ(ユーザが設定を変更するとダイアログを閉じる)を用いることで、もしくは、ウインドウの枠に少数の適切なコントロールを加えることで、要求に応えることができるときは、ユーティリティウインドウを使用しないでください。

ユーザは一度にいくつかのユーティリティウインドウを開くことができます。これらは書類ウインドウの天辺に浮かびます。ユーザが書類を活性化したとき、そのアプリケーションのユーティリティウインドウは、ユーザがユーティリティウインドウを開いたときにどの書類が活性だったかに関係なく、すべて手前に移動する必要があります。

あなたのアプリケーションが非活性のとき、そのユーティリティウインドウは隠れる必要があります。

ユーティリティウインドウは、書類のようにウインドウメニューに一覧表示されるべきではありませんが、あなたはウインドウメニューの中に、すべてのユーティリティウインドウを表示するか、隠すためのコマンドを置くことができます。

図 13-23 ユーティリティウインドウ

ユーティリティウインドウはタイトルをもつことができます。タイトルを付けられていないユーティリティウインドウも、ウインドウをドラッグするためにタイトルバー領域を持つ必要があります。

ユーザはユーティリティウインドウをしまう必要はないでしょう。なぜなら、必要なときにだけ表示され、アプリケーションが非活性のときは非表示だからです。このため、しまうボタンは常に無効です。

ユーティリティウインドウは、閉じるボタンと拡大/縮小ボタンをもつ必要があります。もしくは、あなたがユーザに拡大/縮小ボタンを使わせたくないのであれば、閉じるボタンだけとします。これらの設定は、図 12-23で示されます。

Carbon:どのコントロールが見えるのか、ChangeWindowAttributes関数で明示してください。

図 13-24 ユーティリティウインドウコントロール

(チェックマーク)
(一時停止マーク)

ユーティリティウインドウのデザインについての詳細は、「小型及びミニ版コントロールを使用する」(299ページ)を参照してください。

Carbon:ユーティリティウインドウは、kUtilityWindowClassを用いて利用できます。

Cocoa:NSNonactivatingPanelMaskを使用してください。

インスペクタウインドウ

インスペクタは、ユーザに選択範囲の属性を見えるようにするユーティリティウインドウです。また、これらはしばしば、こうした属性を変更するための手段を提供します。Xcode、Keynote、Finderは、いずれもインスペクタを使用しています。

インスペクタは現在の選択範囲を元に、動的に更新される必要があります。

あなたのアプリケーションにおいて、あなたはインスペクタと情報ウインドウの両方を提供することができます。なぜなら、ある場合には、ほかの項目が選択されたときに文脈が変化する一つのウインドウ(インスペクタ)がより有効であり、ほかの場合には一度に一つ以上の項目の属性を見れること(情報ウインドウ)がより有効なことがあるからです。

複数のインスペクタウインドウと、情報ウインドウは、同時に開くことができます。

情報ウインドウの詳細は、「情報ウインドウ」(205ページ)を参照してください。

図 13-25 インスペクタウインドウ

情報ウインドウ

情報ウインドウの機能は、選択範囲の変化に応じて動的に更新されないという点を除き、インスペクタと似ています。情報ウインドウは、フォーカスがほかの項目へ移った後であっても、ウインドウが開かれたときに選択されていた項目の属性を示します。

図 13-26は、デスクトップフォルダに対する情報ウインドウの例を示します。

図 13-26 情報ウインドウ

ダイアログタイトルバー

また、アプリケーションに対する情報ウインドウは、アプリケーションのバージョンを表示します。情報ウインドウ、アバウトウインドウ(次項で説明します)、そしてFinderにおけるアプリケーションの表示は、確実に同じバージョン情報を提供してください。

アバウトウインドウ

アバウトウインドウ【アバウト=略歴】、またの名をアバウトボックスは、あなたのアプリケーションのバージョンと著作権情報を格納する、情報ウインドウの一種です。これは、ユーザが開いたまま、アプリケーションのほかの作業を行えるように、モードなしウインドウとする必要があります。

あなたは、常にアバウトウインドウを提供し、アプリケーションメニューから利用できるようにする必要があります。

最低限、あなたのアプリケーションのアバウトウインドウに必要なのは…

  • タイトルのないタイトルバーを持つこと
  • 移動できること
  • 唯一活性であるウインドウコントロールとして、閉じるボタンを含むこと
  • アプリケーションのブランドを表示すること
  • アプリケーションの【短縮名ではない】完全な名称と、バージョン数を含むこと(バージョン数は、アプリケーションの情報ウインドウ、Finderで表示されるものと同じバージョン数である必要があります)

また、技術サポートの連絡先情報と同様に、アプリケーションが何をするかの短い説明文や、著作権情報といった文字列の提供も、推奨されます。

もし、あなたのアバウトウインドウから、あなたのウェブサイトを訪れたり、あなたの会社へ連絡するための便利な手段をユーザに提供したいのであれば、これらの作業を行うボタンを必ず作成してください。

クリック可能なURLや、電子メールアドレスを【文字列として】提供しないでください。なぜなら、これらは動作と関連付けられているということが、必ずしも明確ではないからです。

もちろん、あなたの会社の連絡先情報のほとんどは、あなたのヘルプ書類の最初のページで提供するのが最善です(ヘルプメニュー項目の詳細は、「ヘルプメニュー」(172ページ)を参照してください)。

図 13-27 アバウトウインドウの例

アプリケーションタイトル
Lucida Grande Bold 14ポイント

アプリケーションアイコン
64 x 64ピクセル

アプリケーションの説明
小型システムフォント
11ポイント Lucida Grande Regular
左揃え

アプリケーションバージョン
ラベルフォント
10ポイント Lucida Grande Regular

著作権情報
ラベルフォント
10ポイント Lucida Grande Regular

アバウトウインドウ(もしくはスプラッシュ画面)は、製品のブランド要素を配置する適切な場所です。これらを書類ウインドウやダイアログに置くことは避けてください。

Carbon:デフォルトのアバウトウインドウを提供するために、HIAboutBoxを使用してください。あなたのアプリケーションのInfo.plistファイルで、あなたは個別の設定を指定できます。

Cocoa:アバウトウインドウは、Application Kitによって自動的に提供されます。あなたのアプリケーションのInfo.plistファイルに関連情報を設定してください。

フォントウインドウとカラーウインドウ

Mac OS Xは、ユーザがフォントや色を選択するための、標準的なウインドウを含んでいます。もしあなたが、ユーザがフォントや色を設定するための手段を必要とするのであれば、あなたの独自のウインドウを作成する代わりに、これらの標準ウインドウを使用してください。この方法によって、ユーザはおなじみの作業を成し遂げるために、新たなやり方を学習する必要がなくなります。

これらのウインドウを実装することにより、あなたは正しいユーティリティウインドウのふるまいを手に入れます。

ダイアログ

ダイアログとは、ユーザからの反応を引き出すためにデザインされたウインドウのことです。多くのダイアログ—たとえば、印刷ダイアログ—は、ユーザに一度に多くの反応を返すことを可能にします。

警告表示【アラート】とは、システムやアプリケーションが、ユーザに情報を伝達する必要があるときに現れるダイアログです。警告表示は、エラーの状態についてのメッセージを提供したり、状況や動作の危険性について、ユーザに警告します。

ダイアログとのやり取りにキーボードを使用する場合についての詳細は、「キーボードフォーカスと移動」(101ページ)を参照してください。

ダイアログの配置の仕方についての、個別のデザイン情報は、「配置の例」(289ページ)を参照してください。

Carbon:実装のための情報は、Carbon User Experience Documentationの、Handling Carbon Windows and Controls and Dialog Manager Referenceを参照してください。

Cocoa:Cocoa User Experience Documentationの、Dialogs and Special Panels and Window Programming Guide for Cocoaを参照してください。

ダイアログの種類と用途

Mac OS Xのアプリケーションは、これらの種類のダイアログを使用することができます…

  • モードなし。書類ウインドウとやり取りしている間も、ユーザがダイアログで設定を変更することを可能にします。多くのワードプロセッサにおける検索ウインドウは、モードなしダイアログの例です。

    モードなしダイアログはタイトルバーコントロール(閉じる、しまう、拡大/縮小ボタン)を持ちます。

  • 書類単位のモード式。特定の書類の内部で、ユーザがほかに何かを行うことから遠ざけます。ユーザは同じアプリケーションのほかの書類、またはほかのアプリケーションに切り替えることができます。

    書類単位のモード式ダイアログは、「書類単位のモード式ダイアログ(シート)」(208ページ)で述べられている、シートにする必要があります。

  • アプリケーション単位のモード式。ダイアログの持ち主であるアプリケーションの内部で、ユーザがほかに何かを行うことから遠ざけます。ユーザはほかのアプリケーションに切り替えることができます。

    ほとんどのアプリケーション単位のモード式ダイアログは、標準タイトルバーコントロール(閉じる、しまう、拡大/縮小)を持ちません。ユーザはこれらのダイアログを、「OK」や「キャンセル」といった押しボタンをクリックすることにより消去します。

    図 13-37(218ページ)の開くダイアログのような、ユーザがコマンドを選択した結果現れる、アプリケーション単位のモード式ダイアログは、そのコマンドに見合ったタイトルを表示する必要があります。

警告表示は、書類単位のモード式、またはアプリケーション単位のモード式とすることができます。

もし、エラー状態や通知が、単一の書類に適用されるのであれば、警告表示は書類単位のモード式(シート)とするべきです。例として、図 13-41(222ページ)の「変更内容を保存」警告表示を参照してください。

もし、警告表示が、アプリケーション全体の状態、もしくは、そのアプリケーションに属する、一つ以上の書類やウインドウに適用されるのであれば、警告表示はアプリケーション単位のモード式とするべきです。

複数の保存されていない書類に対する、「変更内容を確認」警告表示(図 13-43(224ページ))と、書類単位ではないアプリケーションのための「変更内容を保存」警告表示(図 13-42(223ページ))は、共にアプリケーション単位のモード式です。

書類単位のモード式ダイアログ(シート)

シートは、特定の書類やウインドウに付随したモード式ダイアログであり、ユーザが、ダイアログの内容が適用されるウインドウがどれなのかを見失わないことを保障します。シートは出てきたウインドウに付随しているため、独自のタイトルを持ちません。

ダイアログが、そのふさわしいウインドウに付随し続ける機能は、ユーザがMac OS Xのウインドウ重ね合わせモデル(「ウインドウの重ね合わせ」(196ページ)を参照)の利点を完全に得ることを助けます。

また、シートは、システムがアプリケーションに「乗っ取られた」感覚を与えずに、ユーザがダイアログを消去する前に、ほかの作業を行うことを可能にします。

あなたは、Mac OS Xのほかのダイアログと同様にシートを配置します。

図 13-28 「変更内容を保存」警告表示:書類単位のモード式ダイアログを表示するためのシートの使用例

「閉じる前に、この書類の変更内容を保存しますか?」    (警告文)
「保存しないと、変更内容は失われます。」    (参考文)
「保存しない」       「キャンセル」「保存」    (ボタン)
【日本語文面はテキストエディットの例を使用】

Carbon:あなたは、シートの作成、表示、イベント処理、閉じることに対して反応することができます。その他のシートのふるまい、たとえばシートが表示、消去されるときのアニメーションなどは、Window Managerによって自動的に処理されます。

Cocoa:あなたは、シートの読み込み、表示、閉じることに対して反応することができます。シートが表示されている間は、ちょうどほかのウインドウと同じように、イベントはApplication Kitによって処理されます。その他のシートのふるまい、たとえばシートが表示、消去されるときのアニメーションなどは、Application Kitによって自動的に処理されます。

シートのふるまい

シートは、ウインドウのタイトルバーから出てくるように見えるアニメーションで表示されます。シートが、画面端の近くのウインドウ上に開き、シートが付随するウインドウよりも広いとき、シートはウインドウを画面端から移動させます。シートが消去されると、ウインドウは以前の位置に戻ります。

一つのウインドウに対して、一度に一つだけ、シートを開くことができます。シートは消去されるまで、そのウインドウへのその他のいかなる操作も防止します。

もし、ユーザがシートに応答を返したときに、その書類への別のシートを開く必要があれば、第二のシートを開く前に、最初のシートは閉じます。

活性の書類ウインドウ上のシートは、(必要であれば)すべての活性ユーティリティウインドウを覆う(その上に現れる)必要があります。けれども、ユーザがシートを開いたまま、同じアプリケーションの別の書類をクリックしたら、非活性ウインドウとそのシートは、すべての開いているユーティリティウインドウの後ろに回る必要があります。

同一の書類に対して複数のウインドウを可能とするアプリケーション(ユーザが同時に、書類の異なる部分を見ることができるように)では、シートは適切ではありません。この状況においては、アプリケーション単位のモード式ダイアログを用いて、あるウインドウへの変更が、アプリケーション内のほかのウインドウにも作用することを明確にしてください。

タブブラウザのように、複数の書類を、単一のウインドウに、異なるときに表示するアプリケーションでは、表示内の現在の書類にのみ適用されるのであっても、シートは適切です。

これはなぜかというと、単一ウインドウの状況では、表示するための別の書類を選択するときに、ユーザは【現在前面にある】表示とそのシートを、後で処理するために【背面に】移動することができないからです。

むしろ、ユーザは表示するための別の書類を選択するときに、表示の内容を実質消去します。このため、ユーザは異なる書類を選択する前に、まず現在の表示上にある【(付随している)】シートを消去する必要があります。

シートを使用するとき

ユーザがダイアログとやり取りしてから、作業を進める前に消去するときは、書類に対して特有のダイアログとしてシートを使用しましょう。

シートを使用するときの例としては…

  • 保存や印刷のような、特定の書類に限定した活動のための、モード式ダイアログ。
  • 書類を作成しない、単一ウインドウアプリケーションに特有のモード式ダイアログ。

    たとえば、単一ウインドウのユーティリティプログラムは、ユーザから使用許諾同意の受諾を要求するために、シートを使うことができます。

  • 一般的に、作業を進める前にユーザによって消去される、その他のウインドウ固有のダイアログ。

    もし、あなたがほかのダイアログをモードなしダイアログとしてデザインするとしても、あるダイアログを、モード式ダイアログとしてウインドウに付随させることで利益があるときは、シートを使用してください。

シートを使用すべきでないとき

以下の状況ではシートを使用してはいけません…

  • いくつかのウインドウに適用されるダイアログに対して。シートは、特定のダイアログがただ一つのウインドウと関連付けられているときにのみ、使用してください。
  • ユーザが適用された変更の効果を監視できるように、開いたままにしておくべきダイアログにおける、モードのない操作に対して。そのような作業(たとえば、検索と置換操作)は、ユーティリティウインドウ、もしくはドロワーのような、モードなしダイアログがより適当です。
  • タイトルバーを持たないウインドウに対して。シートは、明確に定義された、視覚的な端から出てくる必要があります。
  • シートの中で要求される情報を満たすために必須である、ウインドウ内の情報を、ユーザが必要とするであろう場合。
警告表示

警告表示は、注目に値する、もしくは、危険性のある状況をユーザに知らせるための、メッセージを表示します。

警告表示はモード式ダイアログです。一つの書類、もしくは単一ウインドウアプリケーションに適用される警告表示は、シートとして表示してください。ガイドラインは「シートを使用するとき」(209ページ)を参照してください。

図 13-29は、警告表示の要素を示します。

図 13-29 標準的な警告表示

タイトルなし
警告文
「"確実にゴミ箱を空にする"を使用して、"ゴミ箱"にある項
目を完全に消去してもよろしいですか?」
参考文
「"確実にゴミ箱を空にする"を選択すると、ファイルを元に戻すことは
できません。」
         「キャンセル」「OK」
アプリケーションアイコン キャンセルボタン 動作ボタン
【日本語文面はFinderの例を使用。
ところで「確実にゴミ箱を空にする」メニューコマンドには省略記号をつけるべきだと思う。】

警告表示の配置についての詳細は、「標準的な警告表示」(297ページ)を参照してください。

警告表示の要素

警告表示は、以下の要素のみを含む必要があります。

  • 警告文。この文字列は、強調された(太字)システムフォントで、警告を呼び出したエラーや状況の、短く、簡単な要約を提供します。これは完全な文章とすべきです。しばしば、これは質問文として現れます。詳細は、「よい警告文を書く」(211ページ)を参照してください。
  • 参考文。この文字列は、小型システムフォントで現れ、状況、その結果、そこから抜け出すための方法について、十分な説明を提供します。たとえば、取り消しできない動作の警告は、参考文の適切な使用例です。

    重要:参考文を省いてはいけません。あなたが直感的であると考えた警告文は、あなたのユーザにとって参考になるには程遠いことがあります。警告文を言い換え、拡張するために、参考文を使用しましょう。

  • 警告に応答するためのボタン。ボタンの名前は、ボタンを押したときにユーザが行う動作と一致している必要があります。たとえば、「消去」、「保存」、「削除」など。

    ダイアログの右端のボタン、すなわち動作ボタンは、警告文を承認するボタンです。動作ボタンは普通、ただし常にではありませんが、デフォルトボタンです。Cocoaのメソッドでは、右端のボタンはデフォルトでなくても、デフォルトボタンとして参照されることに注意してください。詳細は、「ダイアログを消去する」(214ページ)を参照してください。

  • アプリケーションアイコン。Mac OS Xのウインドウ重ね合わせ形式(「ウインドウの重ね合わせ」(196ページ)で説明される)のために、どのアプリケーションが警告表示を行っているかをユーザに明確にするため、アイコンが必要です。

    まれな場合に、あなたの警告表示の中で注意アイコンを表示する必要があれば、図 13-30に示すとおり、アプリケーションアイコンのバッジを加えてください。バッジ付警告表示は、ユーザがソフトウェアのインストールのような作業を行っており、不慮のデータ破壊を起こすことのある、作業の副作用の可能性がある場合にのみ、適切です。

    「保存」や「ゴミ箱を空にする」といった、データを上書きしたり取り除く目的だけの作業のために、注意アイコンを使用してはいけません。注意アイコンの濫用は、その重要性を薄めてしまいます。

    重要:Mac OS 9で使用されていた、「通知」、「注意」、「停止」の警告表示は、Mac OS Xでは使用すべきではありません。

    図 13-30 アプリケーションアイコンのバッジが付いた、注意アイコンを表示する、カスタマイズされた警告表示

Carbon:Carbon User Experience Documentationの、 Dialog Manager Referenceを参照してください。

Cocoa:Cocoa User Experience Documentationの、Dialogs and Special Panelsを参照してください。

よい警告文を書く

よい警告文は、何が警告表示を引き起こしたのか、ユーザはそれについて何ができるのかを、明確に宣言します。ユーザの語彙の範囲で、すべてを表現しましょう。

図 13-31は、有効性に欠ける情報を提供する、警告文の例を示します。

図 13-31 記述不足の警告文

(一時停止マーク)
「ディスクへのファイル書き込みエラー。」

あなたは、図 13-32に示すように、ユーザの語彙の中で問題を説明することで、この警告文を改善させることができます。

図 13-32 改善された警告文

(一時停止マーク)
「ディスクがいっぱいのため
 書類が保存できません。」

警告表示を本当に有用なものにするためには、ユーザが現在の状況について何ができるかに関する提案を提供してください。例え、警告表示がユーザへの通知として働き、全く動作を要求しないのであってもです。

状況を説明するために必要とされるだけの、十分な情報を提供してください。図 13-33は補足情報を加えた警告表示を示します。

図 13-33 十分に記述された警告文

(チェックマーク)
「ディスク"作業"がいっぱいのため
 書類"旅行申し込み"が保存できません。」
「"作業"から書類を削除するか、
 別のディスクへ書類を保存してみてください。」

注:これらの図に示した例は、実際のアプリケーションでは、おそらくシートとなることでしょう。

ダイアログの外見とふるまい

適切なときには、あなたのアプリケーションのダイアログは、コントロールや文字列入力欄にデフォルト値を表示する必要があります。ユーザが一から値を作り出すより、情報を検証できるためです。

ユーザの入力を受け付ける最初の場所—たとえば、文字列入力欄や、一覧—に、選択範囲や挿入ポイントを表示してください。

ユーザに利益があることが明らかなときは、ダイアログ内の固定文字列を選択できるようにすべきです。たとえば、ユーザはエラーメッセージ、シリアル番号、IPアドレスをどこかへペーストするために、コピーできる必要があります。

開くダイアログのように、列【カラム】を表示しており、ユーザがサイズ変更可能なダイアログにおいて、ダイアログが大きくなるにつれて、列も大きくなり、次の列が現れる必要があります。ほかのすべての要素は、同じ大きさのまま、ダイアログの右側、中央、左側に固定されている必要があります。

ダイアログが磨かれた金属風の外見を使用することはありません。すべてのダイアログは、もしあなたのアプリケーションが磨かれた金属風の外見を使用していたとしても、標準的なアクアの外見を使用します。

変更を受け入れる

一般的に、ユーザがダイアログで行ったすべての変更は、即座に効果をあらわす必要があります。

ダイアログにおいて、データの有効性を確認する機会は三つあります…

  1. ユーザがデータを打ち込んだとき
  2. ユーザが(たとえば、Tabを押すことで)データ入力欄の外へ移動したとき
  3. ユーザが変更を適用するためのボタンをクリックしたとき

この三つの状態を、ユーザに対してできるだけ明確に作り出すのは、あなたの責任です。たとえば、チェックボックスとラジオボタンは、即座に更新し、適切な結果を表示します。

いつ、あなたのアプリケーションがユーザ入力のエラーチェックを行うのか、あなたが決める必要があります。

考えられる手法としては…

  • ユーザがある入力欄から次へとタブ移動するのに応じて、入力を評価し、エラーをチェックしてください。ユーザに対して明確でない不備の変更は、彼もしくは彼女が項目間をタブ移動するのに応じて、効果を表します。ユーザはボタンをクリックしていないので、動作の完了に気づきません。
  • ユーザ入力をキューに保存して、ユーザがボタンをクリックしたとき、ダイアログを閉じたとき、ほかのアプリケーションに切り替えたときに、適用してください。

    もし、あなたのアプリケーションがユーザ入力のエラーチェックを行うのを、ユーザがダイアログを消去しようとするまで待つのであれば、【問題があったときに】ユーザにダイアログに戻ることを強制する警告表示を行う必要があるかもしれません。

    もし、あなたがユーザの入力に応じてエラーチェックを行うのであれば、より事前に時間がかかるものの、あなたは無効なデータが入力されたときに、すぐにユーザに警告することができます。

ほとんどの場合、キーを打つたびに入力の有効性を確認するのは、わずらわしく、不必要です。あなたのインタフェースが、自動的に無効な入力を許可しないようにデザインするほうが適切でしょう。たとえば、あなたのアプリケーションは、適宜、小文字を大文字に自動的に変換することができます。

エラーチェックに加えて、あなたはいつユーザ入力を適用するかを決定する必要があります。いくつかの場合、変更は即座に効果を表すことができます。たとえば、Finderウインドウの表示オプションのように。その他の場合では、「適用」ボタンをクリックするといった、ユーザが動作を行うまで待つのが適切でしょう。

複数のペイン(ボタン、タブ、ポップアップニューで選択される)を持つダイアログでは、ユーザがあるペインからほかのへと切り替える際に、データの有効性を確認するのは避けてください。【入力内容が完璧になるまでほかのペインが見れなかったり、ペインを切り替えようとしたら突然警告されるのは不快で不便だからだろう、多分】

最後に、あなたのアプリケーションが、ユーザの入力を元にして、操作を自動的に行う必要があるのか、それとも、たとえばボタンをクリックするなどして、ユーザが操作を開始するべきなのか、あなたが決定する必要があります。

すばやく完了し、数秒以内にユーザに制御を返す操作を自動的に行うことは、許容できます。実行に長い時間のかかる操作については、必要とする推定時間をユーザに警告した上で、ユーザに操作を開始させるのが最善です。

ダイアログを消去する

ダイアログの右下にあるボタンは、いずれもダイアログを消去します。動作を開始するボタンは右端とします。この動作ボタンは、警告文を承認します。キャンセルボタンは、このボタンの左とします。

もし、ダイアログを消去する第三のボタンがあれば、それはキャンセルボタンの左とするべきです。もし、第三のボタンがデータの消失—たとえば、「保存しない」—をもたらすことがあれば、最低でも24ピクセルは「安全な」ボタン(たとえば、「保存」や「キャンセル」)から離して配置してください。

「リセット」のような、ダイアログ自体の内容に影響するボタンは、ダイアログの左端に、ダイアログの本文と揃えて配置し、もしヘルプボタンがあれば、その12ピクセル右とする必要があります。

図 13-34 ダイアログの底辺でのボタン配置

「?」←12→「リセット」       「保存しない」←【24〜】→「キャンセル」「保存」
データ消失をもたらすことのあるボタンは、
「安全な」ボタンから、最低24ピクセル離す必要があります。

普通は、右端のボタンかキャンセルボタンが、デフォルトボタンです。デフォルトボタンは、危険性がなければ、ユーザが最も行いそうな動作を表すボタンとする必要があります。

デフォルトボタンは、ユーザにデフォルトであることを知らせるために、着色されており、明滅します。ユーザがEnterキーかReturnキーを押したとき、あなたのアプリケーションは、あたかもユーザがデフォルトボタンをクリックしたかのように反応する必要があります。

もし、最も行われそうな動作が、たとえばユーザデータの消失を引き起こすといった、危険な動作であれば、デフォルトボタンを使用してはいけません。デフォルトボタンがないときは、ReturnやEnterは何の効果もありません。ユーザは明示的にボタンをクリックする必要があります。

このガイドラインは、ReturnやEnterを押すことで、ユーザの作業に不慮の被害を与えることから、ユーザを保護します。あなたは、「キャンセル」のような、安全なデフォルトボタンの使用を検討することができます。

もし、文字列入力ボックスの中でReturnキーを使用するのであれば、デフォルトボタンを使用しないでください。一つのキーが二つのふるまいを持つことは、ユーザを混乱させることがあり、インタフェースの予想のしやすさを低下させます。

動作ボタン(群)に加えて、キャンセルボタンを搭載するのは良い考えです。このボタンは、コンピュータをダイアログが現れる以前の状態に戻します。つまり、「私の言ったことは忘れてくれ」という意味です。

常に、Command-ピリオドのキーボードショートカットと、Esc(Escape)キーは、キャンセルボタンに割り当ててください。ReturnとEnterに加えて、これらのキーボード同義操作は、アクセラレータキーであり、ユーザがダイアログや警告表示にすばやく応答させるという目的を果たします。

一般的に、ボタンにその他のキーボードショートカットを割り当てるのは良い考えではありません。もし、あなたのアプリケーションで非常に頻繁に使用されるボタンに、キーボードショートカットを割り当てることが有効であると発見したら、「キーボードショートカット」(98ページ)のガイドラインに確実に従ってください。

いくつかの状況では、「適用」ボタンを実装することが適切です—たとえば、複数の文字列属性の効果を、確定する前にユーザに見えるようにするといった場合です。

このような場合、「キャンセル」をクリックすることで、適用された変更をすべて元に戻す必要があります。「キャンセル」は、ユーザが「適用」ボタンをクリックすることで試行した変更を、黙って確定することがあってはいけません。「適用」ボタンの使い方のガイドラインの詳細は、「ダイアログで「適用」ボタンを提供する」を参照してください。

ダイアログで「適用」ボタンを提供する

あなたは、ユーザのデータ表示に影響する、複数の設定を表示するダイアログにおいて、「適用」ボタンを提供することを選択できます。「適用」ボタンは、選択された設定を、変更に確定せずに、ユーザがプレビューできるようにする必要があります。

実現や、取り消しのために、長い時間がかかる操作に対して、「適用」ボタンを使用することについては気をつけてください。これらが処理を中断したり、逆行させることは、ユーザにとって明確ではないことがあります。

保存ダイアログや、簡単にはプレビューできない変更をユーザに行わせるダイアログは、「適用」ボタンを搭載すべきではありません。

「適用」ボタンのクリックは、ダイアログを消去しません。なぜなら、ユーザはプレビューした変更を(「OK」をクリックして)受け入れるか、(「キャンセル」をクリックして)拒否するかを決定する必要があるからです。

「適用」ボタンを、もう一つの「OK」ボタンとして使用してはいけません—ユーザが「OK」を押さずにダイアログを消去したら、プレビューされた変更はすべて破棄される必要があります。

ダイアログを拡張する

しばしばあなたは、ダイアログの中で補足の情報や機能をユーザに提供する必要があるものの、それを常時表示していたくない、という状況に迫られます。

これを行うためには、ダイアログを拡張し、補足情報や機能をユーザに見せるために、あなたは開示コントロールのいずれかを使用します。

もし、あなたが、ユーザにダイアログの主要な情報を詳しく述べた、詳細を見れるようにしたいのであれば、あなたは開示三角形を使用します(開示三角形は階層形式の一覧でも使用されることに注意してください)。

開示三角形はダイアログを拡張し、補足情報と、適切であれば、特別な機能を見せます。

開示三角形によって拡張されたダイアログの例は、図 14-52(273ページ)に示されます。あなたのダイアログでの、開示三角形の使い方についての詳細は、「開示三角形」(272ページ)を参照してください。

もし、あなたが、ダイアログ内のポップアップコマンドやポップダウンメニューで提供される選択対象に、直接関連する、追加の選択肢をユーザに提供したいのであれば、あなたは開示ボタンを使用します。

開示ボタンは、ポップアップメニューやコマンドポップダウンメニュー内に一覧されているものに加えて、選択対象を見せるためにダイアログを拡張します。

追加の選択肢を見せるために開示ボタンで拡張されたダイアログの例は、図 13-40(221ページ)に示しています。あなたのダイアログでの、開示ボタンの使い方についての詳細は、「開示ボタン」(274ページ)を参照してください。

検索ウインドウ

検索ウインドウは、検索対象の項目を特定するためのインタフェースを提供するために、「検索」コマンドへの応答として開かれる、モードなしダイアログです。

その外見は、あなたのアプリケーションの要求に深く依存することができますが、もしあなたのアプリケーションが文字列を扱うのであれば、一貫したユーザ体験を提供するために、図 13-35に図示されるものと同様の検索ウインドウを作りたくなることでしょう。

図 13-35 検索ウインドウ

検索    【(タイトル)】
検索文字列:
置換文字列:
  ■大文字/小文字を無視 ■折り返す 部分一致    (チェックボックス/ポップアップメニュー】
「すべて置き換え」「置き換え」「置き換えて検索」「前へ」「次へ」    (ボタン)
【日本語文面はテキストエディットの例を使用】

Carbon:利用できません。

Cocoa:文字列表示(NSTextView)を表示するCocoaアプリケーションは、編集メニューに「検索」コマンドを搭載すれば、検索機能が手に入ります。

環境設定ウインドウ

環境設定ウインドウは、ユーザが頻繁には変更しない設定を格納する、モードなしウインドウです。

もし、あなたの環境設定に、いくつかの異なるグループがあれば、各項目が主ウインドウの内容を切り替えるような、環境設定ウインドウ内のツールバーを使用することを検討してください。

たとえば、Mac OS Xと共に提供されるいくつかのアプリケーション—Finder、Safari、Mailといった—が、どのように環境設定ウインドウを実装しているか、注意してみてください。

図 13-36 Finder環境設定ウインドウ

サイズ変更コントロールや、拡大/縮小ボタンを搭載することは避けてください。環境設定ウインドウはユーティリティウインドウとすべきではありません。またモードなしとすべきです。

もし、あなたの環境設定ウインドウに切り替え可能なペインがあれば、最後にウインドウが開かれていたときに、ユーザはどのペインを選択していたか、確実に覚えていてください。

【前述の「ウインドウを開く」の説明では、アプリケーション再起動後にはどのペインが選択されていたかを忘れる(デフォルトを選択)ことになっている】

あなたの環境設定ウインドウを表示するためのメニュー項目は、アプリケーションメニュー内に配置し、「環境設定」と表記する必要があります。キーボードショートカットとして、Command-カンマを使用してください。

開くダイアログ

開くダイアログは、ユーザが「開く」コマンドを選択したときか、Command-Oを押したときに現れます。開くダイアログは、アプリケーション単位のモード式です(ユーザはほかのアプリケーションに切り替えることができます)。

もし、あなたが開くダイアログを実装するのであれば、ユーザが最近開いた書類を、ダイアログを通さずに開くことができるように、「最近使った項目を開く」も搭載する必要があります。

図 13-37 開くダイアログ

開くダイアログは、これらの要素を含んでいます…

  • デフォルトのタイトル(「開く」)。あなたは、あなたのアプリケーション名を開くダイアログのタイトルに加える必要があります—たとえば、「テキストエディット:開く」のように。【10.4のテキストエディットでは、単に「開く」だった。】
  • リスト表示、カラム表示において、選択対象の間を後ろや前に移動するための、「戻る」と「進む」ボタン。
  • ユーザが保存するであろう一般的な場所や、最近使った場所(ユーザが書類を開いたり保存した、最近の五つのフォルダ)を含んでいる、ポップアップメニュー。

    あなたのアプリケーションはデフォルト位置を指定します。一般的には、ユーザのホームフォルダ内で既定されたフォルダの一つです。もし、ユーザが別のフォルダを選択したら、ダイアログは次回に現れるときにユーザの選択を「覚えて」いる必要があります。

  • Finderのサイドバーを反映した、ソース一覧。
  • ファイルシステムを移動するための、カラム表示、またはリスト表示。
  • 右下角にあるサイズ変更コントロール。
  • Command-Shift-Gを押すことによる、パス名を指定するための熟練ユーザ向け機能。

    (パス名の区切り文字は"/"であることに注意してください)

あなたは、図 13-38に図示されているように、開くダイアログを、適宜、あなたのアプリケーション向けに拡張することができます。

たとえば、あなたは、ユーザが一覧に現れるファイルの種類で選別できるようにする、ポップアップメニューを搭載することもできます。選別の基準に一致しない項目は淡色表示されるでしょう。

システムは、メニューに並べるための、アプリケーションに対応されているネイティブなファイルの種類の一覧を作成します。あなたは、この一覧にカスタムタイプを付け加え、ダイアログが開くときに表示させるためのデフォルトを指定できます。

あなたは、適用できるファイルの項目をすべて含めるべきですが、デフォルトにする必要はありません。

図 13-38 カスタマイズされた開くダイアログ

開くダイアログは、書類のプレビューに対応する必要があります。また、あなたのアプリケーションが一度に一つ以上の書類を開くことができるのであれば、複数の選択に対応することもできます。

Carbon:Navigation Services for Carbon: An Overviewin Carbon User Experience Documentationを参照してください。

Cocoa:開くダイアログはNSOpenPanelsです。あなたは、一般的にはopenPanelメソッドを呼ぶことで、開くダイアログを表示します。Application File Management in Cocoa File Management Documentationを参照してください。

保存する、閉じる、終了するためのダイアログ

このセクションは、ユーザが書類を初めて保存するとき、書類を閉じるとき、アプリケーションを終了するときに、あなたが使用する標準的なダイアログを説明します。

保存ダイアログ

個々のウインドウの内容を保存するアプリケーション—文字列と画像処理アプリケーションの大半がそうでしょう—は、その保存ダイアログのために、書類単位のシートを使用するべきです。

保存ダイアログは、簡易と拡張の、二つの状態を持ちます。開示ボタンをクリックすることで、これらの状態を交互に切り替えます。ユーザが状態を変更したら、次の保存ダイアログは選択された方の状態で表示する必要があります。

あなたのアプリケーションは、ファイル名全体の一部として、ファイル名拡張子を扱う必要があります。

ユーザはその表示有無を、拡張保存ダイアログにある、「拡張子を隠す」チェックボックスを用いて制御することができます。図 13-15(191ページ)を参照してください。

既存の書類は、ユーザが「別名で保存」を選択し、保存ダイアログで設定を変更しない限り、そのファイル名に拡張子を加えたり、取り除かれたりすることはありません。

簡易保存ダイアログ

簡易保存ダイアログでは、ユーザは名称未設定の書類に変更を保存し、書類に名前をつけたり、名前を変更したり、書類を記録するために頻繁に利用される場所から選択することができます。

図 13-39 簡易(簡略)保存ダイアログ

簡易保存ダイアログは、これらの要素を含んでいます…

  • 書類の名前のための、「別名で保存」文字列入力欄。熟練ユーザはCommand-Shift-Gを押すことで、パス名を入力することができます。

    (パス名の区切り文字は"/"であることに注意してください)

    もし、書類がそれ以前に保存されていなければ、あなたのアプリケーションはこの欄にデフォルト名(「名称未設定」といった)を入れておき、ファイル名を選択された状態にする必要があります。もし、ユーザがファイル名拡張子を表示することを選択していたら、拡張子の部分は選択されません。

    もし、書類が以前に保存されたことがあり、ユーザが「別名で保存」を選択したのであれば、保存ダイアログは「別名で保存」入力欄の書類名を強調表示した状態で開く必要があります。ファイル名拡張子は、(もし表示されていれば)選択されません。

  • 「場所」ポップアップメニューには、マウントされているボリューム、Finderのサイドバーにあるフォルダ、最近使った場所(ユーザが書類を開いたり保存した、最近の五つのフォルダ)が含まれます。

    あなたのアプリケーションはデフォルト位置を指定します。一般的には、ユーザのホームフォルダ内で既定された「書類」フォルダです。もし、ユーザが別のフォルダを選択したら、ダイアログは次回に現れるときにユーザの選択を「覚えて」いる必要があります。

  • 「保存」ボタン(デフォルト)
  • 「キャンセル」ボタン。ダイアログを消去し、アプリケーションを以前の状態に戻します。
  • 開示ボタン。これをクリックすることにより、拡張保存ダイアログを表示します。 (開示ボタンの使い方についての詳細は、「開示ボタン」(274ページ)を参照してください)

あなたが追加するカスタム要素はいずれも、ポップアップメニューと、ダイアログの底辺にあるボタン群の間に設置します。

拡張保存ダイアログ

簡易保存ダイアログとは対照的に、拡張保存ダイアログは、簡易保存ダイアログの「場所」ポップアップメニューで利用できる場所以外にも、ユーザに書類を保存させます。

図 13-40 拡張保存ダイアログ

簡易保存ダイアログの項目に加えて、拡張保存ダイアログは以下の項目を表示します…

  • リスト表示、カラム表示で、選択対象の間を後ろや前に移動するための、「戻る」「進む」ボタン。
  • Finderのサイドバーを反映した、ソース一覧。
  • ファイルシステムを移動するための、カラム表示、またはリスト表示
  • ユーザがそこから選択できる、ファイル形式の一覧を表示する、「ファイル形式」(もしくは、「フォーマット」)ポップアップメニュー。
  • ユーザに新しいフォルダの名前を尋ね、それを作成する、アプリケーション単位のモード式ダイアログを表示する、「新規フォルダ」ボタン。
  • ユーザにファイル名拡張子(たとえば.jpg)を表示するかどうかを制御できるようにする、「拡張子を隠す」チェックボックス。この、「拡張子を隠す」チェックボックスは、デフォルトで選択されている必要があります(つまり、ファイル名拡張子は、ユーザが要求しない限り、ユーザ見えするファイル名には現れるべきではありません)。

    もし、ユーザが特定の書類のチェックボックスの状態を変更したら、次の新規書類は、ユーザがアプリケーションを終了し、開きなおした後であっても、最後にユーザが選択した状態に合わせる必要があります。

    「別名で保存」入力欄のファイル名は、チェックボックスが選択、選択解除されるのに応じて、その場で更新されます。

    ファイル名拡張子を扱うための、あなた独自のオプションを提供することはやめてください。標準の開く/保存ダイアログを使用しましょう。

Carbon:保存ダイアログが呼ばれたときはPreserveSaveFileExtensionフラグを設定し、ファイル名拡張子を隠すためのフラグを設定するためにNavCompleteSaveを使用してください。

もし、あなたが拡張保存ダイアログをカスタマイズするために、その他の要素を追加するのであれば、それらは「キャンセル」と「保存」ボタンの上に現れる必要があります。ダイアログが拡張されたとき、カスタム要素はファイルシステムブラウザ【リスト/カラム表示】と、押しボタン群との間に現れる必要があります。

デフォルトキーボードナビゲーションモードでは、拡張保存ダイアログでTabを押すことで、キーボードフォーカスを「別名で保存」文字列入力欄から、ソース一覧へ、次にカラム表示へ移し、さらに文字列入力欄に戻ります。

保存されていない変更のある書類を閉じる

ユーザが保存されていない変更のある書類を閉じようとしたときは、「変更内容を保存」警告表示を行います。

個々のウインドウの内容を保存するアプリケーション—文字列と画像処理アプリケーションの大半がそうでしょう—は、その「変更内容を保存」警告表示のために、書類単位のシートを使用するべきです。

同一ファイルの複数表示が可能なアプリケーションにおいて、もし、ユーザが「ウインドウを閉じる」の代わりに「ファイルを閉じる」コマンドを選択したら、あなたはシートの代わりにアプリケーション単位のモード式ダイアログを使用する必要があります。

このことは、ユーザの動作は現在の表示内の、見えている部分だけではなく、ファイル全体に作用するという事実を強調します。この状況においては、「変更内容を保存」警告文の「書類」という単語を、「ファイル」に変更してください。

ユーザが「保存」、または「保存しない」をクリックした後で、このファイルの開いている表示をすべて閉じてください。

図 13-41 書類単位のアプリケーション用「変更内容を保存」警告表示

「名称未設定」    (タイトル)
「閉じる前に、この書類の変更内容を保存しますか?」    (警告文)
「保存しないと、変更内容は失われます。」    (参考文)
「保存しない」       「キャンセル」「保存」    (ボタン)
【日本語文面はテキストエディットの例を使用】

「変更内容を保存」シートが開いたとき、書類の閉じるボタンと、ファイルメニューの「閉じる」コマンドは使用できなくなります。ユーザは「変更内容を保存」シートに応答するまで、書類を閉じることができなくなります。

ロックされた、もしくは読み取り専用の書類に保存を試みる

もし、ユーザがロックされた、もしくは読み取り専用の書類を編集し、そこでアプリケーションを終了、もしくは「保存」または「別名で保存」を選択した場合は、標準の「変更内容を保存」警告表示を行ってはいけません。

代わりに、書類は読み取り専用のため保存できない、という旨を説明するシートを表示してください。その際、このシートは、コピーを保存するか、変更を拒否するか、書類の表示や編集を継続するか、の選択肢をユーザに提供する必要があります。

終了操作の際に書類を保存する

ユーザは、終了操作を、保存されていない書類によって中断されることがあります。たとえば、もしユーザが「終了」を選択し、書類に対する保存警告表示(シート)が開いた場合は、ユーザは保存警告表示に応答しなくても、ほかの書類で作業をしたり、別のアプリケーションに切り替えることができます。

開いている書類が、すべて保存されているアプリケーションを、ユーザが終了したときは、即座にすべての書類が閉じて、アプリケーションは終了します。

書類単位ではないアプリケーションを終了する

ユーザが、書類単位ではないが、多数のウインドウを持ち、それらの内容は同時に保存されるようなアプリケーションを終了しようとしたときは、図 13-42に示すような、アプリケーション単位のモード式「変更内容を保存」警告表示を行ってください。

図 13-42 書類単位ではないアプリケーション用「変更内容を保存」警告表示

タイトルなし
「プロジェクト"Apple HIG"の    (警告文)【要確認】
変更内容を保存しますか?」
「保存しないと、変更内容は失われます。」    (参考文)
「保存しない」    「キャンセル」「保存」    (ボタン)
【適当な実例が見あたらない】

保存されていない、複数の書類を開いているアプリケーションを終了する

ユーザが、保存されていない変更のある書類を一つ以上開いている、書類単位のアプリケーションを終了しようとしたときは、図 13-43に示すような、アプリケーション単位のモード式「変更内容を確認」警告表示を行ってください。

図 13-43 ユーザが、保存されていない書類を一つ以上開いている状態で終了したときに現れる、「変更内容を確認」(アプリケーション単位のモード式)警告表示

タイトルなし
「変更内容を保存していない3個の書類があります。終了する前にこれら    (警告文)
の内容変更を確認しますか?」
「書類を確認しないと、すべての変更内容が失われます。」    (参考文)
「変更内容を破棄」 「キャンセル」「変更内容を確認…」    (ボタン)
【日本語文面はテキストエディットの例を使用】

それぞれのボタンに対する適切な動作は以下のとおりです…

  • 「変更内容を破棄」。すべての書類を、変更を保存せずに閉じ、アプリケーションを終了します。
  • 「キャンセル」。「終了」コマンドを取り消します。
  • 「変更内容を確認」。(Dockにしまっているものも含め、)開いている書類をすべて、保存されていない書類を天辺にして、手前に移動します。

    活性の書類は「終了する前に保存」警告表示を行います。もし、ユーザが「保存」をクリックしたら、保存ダイアログが現れます(書類がそれ以前に保存されていなかった場合)。もし、ユーザが「保存しない」をクリックしたら、次の保存されていない書類が、その「終了する前に保存」警告表示と共に手前に来ます。

    もし、ユーザが最後の「終了する前に保存」警告表示を、「保存」または「保存しない」によって消去したら、すべての書類を閉じて、アプリケーションを終了します。

    確認の間に、もしユーザが別の保存されていない書類を活性化したら、その書類は「終了する前に保存」シートを開いて手前に来る必要があります。ほかの書類の「終了する前に保存」シートは開いたままです。

    確認の間に、もしユーザが保存済みの書類を活性化したら、確認の工程は、次に保存されていない書類が活性になったときに再開します。

    もし、終了操作の半ばで、ユーザがDockのアプリケーションアイコンをクリックするか、ウインドウメニューから「すべてを手前に移動」を選択したら、書類は以下の順に現れる必要があります…開いたシートを持つ書類を天辺に、保存されていない書類をその次に、そして保存済みの書類という順です。

    確認工程の間のいつでも、ユーザは終了操作を中断するために、「キャンセル」をクリックすることができます。

    もし、ユーザが確認工程の間に、「終了」コマンドを開始したら、確認工程は図 13-43に示すアプリケーション単位のモード式警告表示と共に、再び開始します。

既存の書類と同名の書類を保存する

もし、ユーザが保存ダイアログの「別名で保存」入力欄に、同じ場所に既に存在している書類の名前を打ち込み、「保存」をクリックしたら、以前の書類を置き換えるか否かをユーザが承認することができる、アプリケーション単位のモード式警告表示を行ってください。

図 13-44 ファイル置き換え承認のための警告表示

タイトルなし
「「フォント見直し」はすでに存在します。    (警告文)
置き換えてもよろしいですか?」
「同じ名前のファイルまたはフォルダが"作業"にすでに    (参考文)
存在します。これを置き換えると現在の内容が上書きされます。」
         「キャンセル」「置き換え」    (ボタン)
【日本語文面はテキストエディットの例を使用】

選択ダイアログ

選択ダイアログは、ユーザに作業の対象となる項目を選択させます。たとえば、ユーザが壊れたエイリアスを開こうとしたときに、「エイリアスを修復する」【要確認】ダイアログが、エイリアスに対して開くための項目をユーザに選択させます。

アプリケーションは一つ以上の選択ダイアログを持つことができますが、一度に開くことができるのは一つだけです。いくつかの状況では、選択ダイアログをシートにするのが適切でしょう。

図 13-45 選択ダイアログ

選択ダイアログは…

  • さまざまなコマンドから開かれることができます。
  • 複数項目の選択に対応することができます。
  • 書類のプレビューに対応します。
  • 右下角にある、サイズ変更コントロールにより、大きさを変更できます。
  • ユーザが一覧に現れるファイルの種類を選別できるようにする、「表示」ポップアップメニューを含むことができます。選別の基準に合わない項目は淡色表示されます。

    システムは、このメニューに並べるための、アプリケーションに対応されているネイティブなファイルの種類の一覧を作成します。あなたは、この一覧にカスタムタイプを付け加え、ダイアログが開くときに表示させるためのデフォルトを指定できます。

    あなたは、適用できるファイルの項目をすべて含めるべきですが、デフォルトにする必要はありません。

ダイアログがシートでなければ、ダイアログのデフォルトのタイトルは「選択」ですが、あなたは作業の名前をこれに含めるべきです。たとえば、ダイアログを呼び出したコマンドが、「画像を選択」であれば、ダイアログのタイトルは「画像を選択」とする必要があります。

また、はじめに「「書類」の背景に表示する画像を選択してください。」というような、導入文を含めてください。

また、役に立つのであれば、「選択」ボタンを、より具体的な表記に変更してください。

デフォルトの場所はユーザのホームフォルダです。もしダイアログが、ボリュームのみを対象としているのであれば、デフォルトの場所はユーザのディレクトリです。【?】

選択対象として適切でないファイルとフォルダは、淡色表示とする必要があります。

注:(保存ダイアログの「場所」ポップアップメニュー内の)「最近使った場所」は、選択ダイアログで選択されたフォルダを記録しません。

Carbon:選択ダイアログは、Navigation Servicesを通して利用できます。詳細は、Carbon User Experience Documentationの、the documentation for Navigation Servicesを参照してください。

Cocoa:開くダイアログ(NSOpenPanelクラス)のバリエーションを使用してください。

印刷するダイアログ

印刷するダイアログには、プリントダイアログ、ファクスダイアログ、ページ設定ダイアログが含まれます。

プリントダイアログ

プリントダイアログにおいて、ユーザの選択肢は、ペインを表示し、印刷ダイアログ機能拡張【printing dialog extensions】(PDEs)で制御される、機能ポップアップメニューを通して提供されます。

PDEsはオペレーティングシステム、プリンタモジュール、そしてアプリケーションによって提供されます。アップルは、いくつかの印刷ペインを提供します。標準的なプリントダイアログを、図 13-46に示します。

図 13-46 プリントダイアログ(書類ウインドウに付随するシート)

機能メニュー

用紙の種類と、印刷品質を選択するための選択肢は、機能ポップアップメニューを通して表示されます。

あなたは、本書を通じて提供されるインタフェースガイドラインと、「標準の大きさのコントロールを配置する」(289ページ)で説明される配置ガイドラインに従うことで、カスタム印刷ペインを作成することができます。

あなたがカスタム印刷機能を実装するのであれば、心に留めておくべきいくつかの特定のガイドラインがあります…

  • 既に機能ポップアップメニューの中にあるメニュー項目と、衝突しないメニュー項目名を選んでください。
  • メニュー項目(ペインの名称)は、ユーザがペインに含まれる選択肢を、簡単に見分けるための指針となる必要があります。
  • あなたが実装する機能は、必ず、あなたのアプリケーションにとって適切なものとしてください。たとえば、逆順に印刷するための選択肢は、あなたのアプリケーションではなく、オペレーティングシステムによって提供されるべきです。(この機能を実装するということは、アプリケーションに、ハードウェアの能力について知ることを要求します)【そのため、適切ではない。】
  • 選択肢の間の、相互依存性をユーザに対して明確にしてください。たとえば、もしユーザが両面印刷を選択したら、透明シートに印刷する選択肢は使用できなくなる必要があります。
  • 頻繁に使用する機能から、より高度な機能を分割してください。ユーザが高度な機能を選択するときは、高度な機能向けコントロールの上に、「高度な設定」のタイトルを付ける必要があります。
  • 適宜、(プリントダイアログの配置ペイン内のプレビューのような)視覚的な反応を提供してください。たとえば、階調コントロールの変更の効果を示すサムネイルは、ユーザが求める設定を決定するために役立ちます。
  • 最低限、書類を開いている間は、書類に対するユーザの印刷環境設定を保存してください。

Carbon:あなたは、ページ設定やプリントダイアログのペインをカスタマイズするために、PDEを記述することができます。詳細は、Printing Documentationの、Extending Printing Dialogsを参照してください。

Cocoa:あなたはNSPageLayout と NSPrintPanel の二つのApplication Kitクラスを用いて、補助表示を実装することができます。

ページ設定ダイアログ

ページ設定ダイアログは、意図する出力用紙の大きさと、プリンタを元にして、書類の縮尺と向きの選択肢を設定するための手段を、ユーザに提供します。このダイアログでの設定内容は、書類と共に保存してください。

図 13-47 ページ設定ダイアログ

ファクスダイアログ

ファクスダイアログは、どのようにしてファクスを送信するかを、ユーザに指定できるようにします。選択肢には、表紙ページ設定、およびダイヤル設定が含まれます。

ユーザが、ユーザのアドレスブックにある名前を打ち込んだときは、ファクスダイアログは登録情報にファクス番号があるかを見て、もしあれば入力欄をその番号で埋めます。

図 13-48 ファクスダイアログ


←第12章:メニュー
→第14章:コントロール