[[← 2 節に戻る|Palm OS User Interface Guidelines/4-2]] [[↑4 章トップへ|Palm OS User Interface Guidelines/4]] ---- !!!4-3 メニュー    メニューは、ユーザーが実行可能なコマンドの一覧を表示します(図 4.15 参照)。ユーザーはフォームのタイトルバーかメニューアイコンをタップしてメニューバーを表示し、次にメニューのいずれかからメニューアイテムを選択します。これにより、選択したメニューが実行されます。 !図 4.15 メニューバーとメニュー {{ref_image figure_4.15.gif}} !表 4.3 メニューの詳細 ,指標,値 ,幅,システムにより決定 ,高さ,システムにより決定 ,上端,システムにより決定 ,左端,システムにより決定 ,境界線,太線による矩形 ,内容,コマンドを簡潔に説明する形容詞または動詞   !!システムが定める挙動  メニューバーは、メニューアイコンかフォームのタイトルをタップすると表示されます。  Palm OS は、メニューが表 4.4 に示す挙動を取ることを保証します。 !表 4.4 メニューのデフォルトの挙動 ,操作,挙動 ,メニュー上でペンをドラッグする,ペン直下のメニューアイテムがハイライト表示される ,メニューアイテム上でペンを離す,そのメニューアイテムが選択され、メニューバーとメニューが非表示になる ,メニューバーとメニューの外側でペンを離す,メニューバーとメニューは非表示になり、何も選択されない ,メニュータイトル内でペンを離す(Palm OS 3.5 以降),メニューバーとメニューは選択されるまで表示され続ける ,メニューとメニューバーの外側でペンタップを行なう,メニューおよびメニューバーは非表示になるがイベントは発生しない  メニューはかなりシンプルです。画面スペースが限られているため、Palm OS にはサブメニューという概念がありません。また、メニューはスクロールすることもできません。 !システムは最後に実行されたコマンドを表示する  良く使われるコマンドの実行を簡単にするために、システムは最後にユーザーが選択したメニューアイテムを記憶しています(コマンドストロークに続いてショートカット文字を入力することで実行したメニューアイテムは対象外です)。次にメニューバーが表示されると、前回選択されたメニューアイテムのメニューが表示され、そのメニューアイテムがハイライト表示されます。  システムが最後に実行されたメニューアイテムを記憶するのは、そのフォームが表示されている間だけです。新しいフォームが表示されると、カレントフォームのメニューの記憶は消去されます。このことは、Aboutダイアログなどの新しいフォームを表示するメニューアイテムに関しては、コマンドが記憶されないことを意味します。   !!ルック&フィール  メニューの挙動や外観については、以下のガイドラインに従って下さい。  メニューの幅や高さをコントロールすることはできません。システムは常にメニューの境界線を実行時に決定します。 !メニューはフォーム別に指定が可能  フォームそれぞれに対して、個別にメニューを関連付けることができます。(メニューバーはオプションです。フォームはメニューを必ずしも提供する必要はありません。)アプリケーションのフォームごとに異なるメニューを持つメニューバーを指定することができます。 !About コマンドはオプションメニューで  About ダイアログを表示する About メニューアイテムをオプションメニューで提供して下さい。このメニューは少なくともメインフォームにはなければなりません。アプリケーションにプリファレンスフォームがある場合、Preferences コマンドもオプションメニュー配下になります。 !テキストフィールドには編集メニューが必要  フォームに編集可能なテキストフィールドがある場合、システム標準の編集メニューを提供して下さい。この編集メニューは図 4.16 のようになっている必要があります。最後のメニューアイテムの下であれば、独自のメニューアイテムを追加することができます。 !図 4.16 標準の編集メニュー {{ref_image figure_4.16.gif}} ::NOTE :::最近のハンドヘルドは Graffiti 2 を採用しており、編集メニューの最後のアイテムは“Graffiti 2 Help”になっています。 !メニューは静的  メニューとメニューアイテムは静的にして下さい。使用できない状況でも、グレーアウトしたり薄くするべきではありません。状況に合わせてメニューアイテムを削除したり名前を変更してもいけません。特定のハードウェア機能に依存したメニューを提供していて、そのハンドヘルドで該当機能が利用できない場合、メニューバーが最初に表示される前にメニューアイテムを非表示にします。 !メニューとメニューアイテムの命名  メニューとその内部の要素の命名に関するルールは、デスクトップアプリケーションの場合と同様です。  メニューの名前には、そのメニューに含まれるアイテムの種類を説明する単一の単語を選ぶようにします。いくつかの一般的なメニュー名を以下に示します。 *レコード ── このメニュー配下のアイテムは、選択中のデータベースのレコードに対してアクションを実行します。また、レコードの作成や削除も行ないます。 *編集 ── このメニュー配下のアイテムは、フォーム上のテキストを編集します。 *オプション ── このメニュー配下のアイテムは、アプリケーションの挙動に関する設定を行ないます。  メニューアイテムの名前には、動詞または形容詞を使用します。アイテムがアクションを実行するものであれば、動詞を使用します。アイテムが画面上のオブジェクトの属性を変更するものであれば、形容詞を使用します。場合によっては、名詞を使うこともあります。通常、名詞は同じ名前のダイアログを表示します。例えば “Preferences”などです。Palm OS では、メニュー名を短くしておくことは特に重要です。メニューアイテムには 20 文字程度を使うことができますが、もっと短くするようにして下さい。20 文字では画面の幅いっぱいになってしまうため、フォーム全体が隠れてしまいます。  メニューアイテムや全てのUI要素では、タイトル(の先頭文字)を大文字にします。つまり、アイテム名の重要な単語全てを、本のタイトルの要領で大文字にするのです。例えばノートを追加するメニューアイテムであれば、“Attach note”ではなく“Attach Note”になります。  操作の完了までに追加の情報を入力しなければならないようなメニューアイテムには、省略記号(...)を使用します。一般に、アラートや About、プログレスダイアログ以外のダイアログを表示するアイテムには省略記号をつけるべきです。コマンドボタンと同様に、省略記号文字ではなく3つのピリオドを使用して下さい。 !セパレータでメニューを分類  メニューにたくさんのコマンドが含まれる(経験則としては5個以上の)場合、セパレータを使って関連するコマンドをグループ分けするようにします。図 4.16 に、セパレータを使った編集メニューを示します。この例では、お決まりのカット、コピー、貼り付け、およびアンドゥが、セパレータによってキーボードダイアログや Graffiti ヘルプを表示するコマンドと分けられています。セパレータを使用してメニューアイテムの分類をすることで、ユーザーがインターフェースを理解・学習することを支援できます。図 4.17 を参照して下さい。 !図 4.17 セパレータがあるメニューとないメニュー {{ref_image figure_4.17.gif}} !メニューショートカット  メニューショートカットは、メニューアイテムを選択するもうひとつの方法です。コマンドストローク(左下から右上に向かう対角線)を描いてから、続いて1文字を入力します。  これは、全てのバージョンの Palm OS でサポートされます。Palm OS 3.5 以降では、コマンドツールバーが表示されます。(それより前のバージョンでは、“Command”という文字列だけが表示されます。ショートカットツールバー(図 4.18 参照)には、左側にステータスメッセージが、 右側にボタンがそれぞれ表示されます。コマンド文字を入力した後、ユーザーは文字を入力するか、ショートカットツールバー上のボタンをタップするかを選択できます。どちらのアクションでも、対応するメニューアイテムがステータスメッセージに短時間表示された後、そのコマンドが実行されます。 !図 4.18 メニューショートカットツールバー {{ref_image figure_4.18.gif}}  全てのメニューアイテムにショートカットを用意する必要はありません。多くのユーザーにとって、文字の入力は難しく、ミスをしやすいものです。破壊的なコマンド(削除など)には、ショートカットを用意しない方が良いでしょう。そうすれば、ユーザーが意図せずそれを実行することを避けることができます。破壊的なコマンドに確認アラートが付随するのであれば、ショートカットを割り当てても問題ありません。 ::NOTE :::ショートカットを割り当てる場合、アプリケーション内全体で一意である必要があります。メニュー内で一意なだけではいけません。  2つの異なるメニューアイテムに、ストロークの似通った文字を割り当てるのは避けて下さい。例えば、貼り付けのショートカットは多くのアプリケーションで V ではなく P になっています。この理由のひとつとして、V のストロークはアンドゥのショートカットである U のストロークと間違え易いということがあります。貼り付けをしようとしたユーザーがミスでアンドゥをしてしまうのは不利益になりえます。もうひとつの理由は、多くの Palm ユーザーはハンドヘルドにキーボードを使わず、また多くは文字入力の方法さえ知らないかもしれないということです。キーボードユーザーにとっては、貼り付けのショートカットとしての V は C の隣にあるため覚え易いものです。しかし、タイピングを知らないユーザーにとっては貼り付けのショートカットが V であることに意味はありません。  メニューにショートカットを割り当てる際には、他のアプリケーションで既に割り当てられているショートカットを考慮するようにして下さい。同じメニューアイテムがあるならば、同じショートカットを使うようにします。これによって、システム全体がユーザーにとって使い易くなります。表 4.5 に組込みアプリケーションで使用されている一般的なショートカットを示します。 !表 4.5 一般的なメニューショートカット ,コマンド,ショートカット ,新規レコード,N ,レコード削除,D ,赤外線通信,B ,元に戻す,U ,切り取り,X ,コピー,C ,貼り付け,P ,全て選択,S ,キーボード,K ,Graffiti ヘルプ/Graffiti 2 ヘルプ,G ,プリファレンス,R !ショートカットツールバー上のボタン  より頻繁に使用されるメニューショートカットを、ツールバー上のボタンにすることができます(図 4.19 参照)。ツールバー上に表示されるボタンはユーザーコンテキストに依存します。編集可能フィールドにフォーカスがあれば、Palm OS は切り取り、コピー、貼り付けのためのボタンをショートカットツールバー上に表示します。アンドゥ可能なアクションがあれば、システムはそのためのボタンも表示します。 !図 4.19 ツールバーのボタン {{ref_image figure_4.19.gif}}  ツールバーにボタンを追加するのは、ショートカットを定義したコマンドだけにして下さい。思いつきでツールバーにボタンを追加してはいけません。  ショートカットツールバーに表示するボタンは4個か5個までにして下さい。ボタンの数を制限するのには2つの理由があります。まず第一に、アクションが実行される際に表示されるステータスメッセージのための余地を残しておく必要があります。第二に、ツールバーは短時間しか表示されないことを考慮する必要があります。ユーザーがツールバー上のボタンのそれぞれの意味について、即座に理解できるようになっていなければなりません。ボタンが多過ぎれば、必要とするものを見つけ出せる可能性が減ってしまいます。  前述のとおり、システム自身で4つのボタンを表示する可能性があります(切り取り、コピー、貼り付け、アンドゥ)。別のボタンを表示することがユーザーの利益に適うものであれば、この振舞いを抑止することもできます。  システムには、赤外線通信やレコード削除といったコマンドのためのビットマップが含まれています。アプリケーションがこれらのアクションのいずれかを実行するのであれば、システムのビットマップを使用するべきです。表 4.6 に、システムに含まれるビットマップとそれぞれが表すコマンドを示します。これらを使用する場合、右端から左方向に表 4.6 に示した順で使用するようにして下さい。つまり、BarDeleteBitmap は常にこれらのビットマップの右端に来るべきで、BarInfoBitmap は左端に来るべきということになります。 !表 4.6 システムのショートカットツールバー用ビットマップ ,名前,ビットマップ,コマンド ,BarDeleteBitmap,{{img table_4.6.row01.gif}},レコードの削除 ,BarPasteBitmap,{{img table_4.6.row02.gif}},クリップボードの内容をカーソル位置に貼り付ける ,BarCopyBitmap,{{img table_4.6.row03.gif}},選択文字列のコピー ,BarCutBitmap,{{img table_4.6.row04.gif}},選択内容の切り取り ,BarUndoBitmap,{{img table_4.6.row05.gif}},直前のアクションを元に戻す ,BarSecureBitmap,{{img table_4.6.row06.gif}},セキュリティダイアログの表示 ,BarBeamBitmap,{{img table_4.6.row07.gif}},現在のレコードを赤外線送信 ,BarInfoBitmap,{{img table_4.6.row08.gif}},Info ダイアログの表示(ランチャ)   !!ルールを破る場合  このセクションでは、メニューのガイドラインから外れる一部のアプリケーションについて言及し、ガイドラインに従わないのが適切なケースについて説明します。 !終了コマンドの追加  特定の企業内でのみ使用されるエンタープライズアプリケーションを作成しているのであれば、ユーザーから終了コマンドの追加を強く要求されるかもしれません。これらのユーザーはデスクトップでの作業に慣れており、アプリケーションからアプリケーションへ移動するという Palm ハンドヘルドのやり方に不安を感じるかもしれません。  このような場合には、メニューかコマンドボタンで終了コマンドを提供するのがベストかもしれません。しかしそうする前に、アプリケーションが終了する(つまりシステムがアプリケーションの終了イベントを受け取る)とシステムはそのアプリケーションが起動される前の画面に戻ることをユーザーに知らせておく必要があります。多くのアプリケーションでは、前の画面というのはランチャを意味します。それはランチャが多くのアプリケーションの起動に使われるからです。しかしアプリケーションがハードウェアボタンによって起動された場合、終了時にランチャに戻るとは限りません。  ユーザーが終了コマンドを要望したとしても、アプリケーションは Palm OS の通常の意味で ── つまりハードウェアボタンの押下やアプリケーションアイコンのタップによって ── いつでも終了できるようにデザインしておく必要があります。これをユーザー向けの高度な機能として位置付けるのも良いでしょう。ユーザーは最初は終了コマンドを使うかもしれませんが、いずれはその他のボタンを使うようになるでしょう。  サードパーティアプリケーションとしての広範なディストリビューションを意図したアプリケーションには、終了コマンドを追加してはいけません。 !標準的でないメニュー名  データベース内の単一レコードを操作するようなアイテムが含まれているとしても、そのメニューの名前を“レコード”にする必要は必ずしもありません。かわりに、ユーザーにとってもっと身近な名前にすると良いでしょう。典型的なユーザーは、Palm OS のパラダイムにおける“レコード”や“データベース”といった用語を知らないと考えられます。たとえば、DateBook では“レコード”というメニュー名よりは“イベント”の方が良いかもしれませんし、アドレス帳であれば“連絡先”の方が良いかもしれません。 !メニューアイテムの重複  Date Book アプリケーションでは、コマンドボタンとメニューアイテムを重複させてはならないというルール違反していることに気付くかもしれません(図4.20参照)。 !図 4.20 メニューアイテムの重複 {{ref_image figure_4.20.gif}}  これにより、新しい予定の作成をいくつかの方法で行なえるようになっています。 *時刻の横のフィールドをタップして予定の名前を入力する *入力エリアで文字を入力する(数字を最初に入力した場合はそれを時刻として予定を作成し、英文字で始めた場合は時刻無しの予定を作成する) *新規ボタンをタップし、時刻を選択し、予定の名前を入力する *タイトルバーをタップし、レコードメニューから新規イベントのメニューアイテムを選択し、時刻を選択して名前を入力する *新規イベントのメニューアイテムのショートカットを入力し、時刻を選択して名前を入力する  最初の2つの予定作成方法は、少しばかり隠れたインターフェースです。多くのユーザーは単純に文字入力を始めることで予定を作成できることに気付きますが、全てのユーザーがこの機能にすぐに気付くわけではありません。そのため、コマンドの重複が必要になります。初心者ユーザーは新しい予定の入力方法を知らない可能性が高いため、(メニューアイテムよりも)新規作成コマンドボタンが重要になります。メニューアイテムを作成しても初心者ユーザーがそれを見つけ出すことは期待できません。なぜなら、初心者ユーザーはそもそもメニューについて何も知らないからです。そのため、新規イベントのメニューアイテムとそのショートカットは、まったく使われない可能性のある単純な冗長性ということになります。  一部のアプリケーションデザイナは、コマンドのショートカットを提供する目的でメニューコマンドを重複させます。これはデスクトップアプリケーションでは一般的な慣習ですが、Palmハンドヘルドの多くのユーザーにとっては重要ではありません。コマンドボタンはフォームの一番下に配置され、それはすなわち入力エリアのすぐ上になります。コマンドにボタンがあるならば、メニューのコマンドストロークに続けて文字を入力するよりもボタンをタップする方がより速くて便利です。それに加え、メニューのショートカットを増やすほど、ショートカット文字が重複するリスクが高まります。  ただし、外部キーボードにはメニューのコマンドストロークをシミュレートするキーがあることを覚えておいて下さい。このことは、外部キーボードを持っているユーザーにとってはコマンドボタンよりもショートカットの方が便利であることを意味します。そのため、メニューにまだ余地があるならば、標準的なコマンドでなくてもメニューの重複をさせたいと思うかもしれません。外部キーボードには通常、New、Delete、Details、OK、および Done といった共通的なコマンドボタンのタップをシミュレートするキーが事前に定義されているため、これらのコマンドのショートカットを作成することはそれほど重要ではありません。 ::訳者による注釈 :::Treoなどのキーボード付きデバイスには、上記段落にて言及している「コマンドボタンのタップをシミュレートするキー」はありません。そのため、5-Way Rockerを度外視すれば、一般的なコマンドボタンと等価なメニューショートカットを用意することは重要になりえます。   ---- [[← 2 節に戻る|Palm OS User Interface Guidelines/4-2]] [[↑4 章トップへ|Palm OS User Interface Guidelines/4]]