(57)【要約】  ＧＵＩ環境においてメニュー選択及び量指定の操作をより効率的に行う方法、コンピュータ・プログラム、コンピュータ・システムを提供する。  表示装置とユーザの操作に応じて当該表示装置の表示領域内に表示されるポインタを操作するポインティング装置とを備えるコンピュータ・システムに適用される方法である。その方法は、ユーザからの第１操作を受け付けることに応答して、当該ポインタの位置を第１位置として記憶し、当該第１位置に対応する位置に複数の項目を含む第１メニューを表示するステップと、当該ユーザからの第２操作を受け付けることに応答して、当該ポインタの位置を第２位置として記憶し、当該第１位置と第２位置との距離に応じて当該第１メニューを変更した第２メニューを表示する。
2011024773.tif 000002
【特許請求の範囲】
【請求項１】
表示装置とユーザの操作に応じて当該表示装置の表示領域内に表示されるポインタを操作するポインティング装置とを備えるコンピュータ・システムに適用される方法であり、
ユーザからの第１操作を受け付けることに応答して、当該ポインタの位置を第１位置として記憶するステップと、
当該第１位置に対応する位置に複数の項目を含む第１メニューを表示するステップと、
当該ユーザからの第２操作を受け付けることに応答して、当該ポインタの位置を第２位置として記憶するステップと、
当該第１位置と第２位置との距離に応じて当該第１メニューを変更した第２メニューを表示するステップと
を備える
方法。
【請求項２】
前記第１操作は、前記表示領域内のオブジェクトをポインタで指定する操作である請求項１に記載の方法。
【請求項３】
前記第２メニューの表示領域は、前記第１メニューの表示領域よりも大きい請求項１に記載の方法。
【請求項４】
前記第２メニューの表示領域は、前記第１位置と第２位置との距離が長くなるに従って拡大し、前記第１位置と第２位置との距離が短くなるに従って縮小される請求項１に記載の方法。
【請求項５】
前記第１位置と第２位置との距離が第１閾値を越えることに応答して、前記第２メニュー内の項目を選択可能に表示する請求項１に記載の方法。
【請求項６】
前記第１位置と第２位置との距離が第２閾値を越えることに応答して、前記第２メニューに含まれる項目は、前記第１メニューに含まれる項目に加えて前記第１メニューには含まれない項目が追加される請求項１に記載の方法。
【請求項７】
前記第１メニューに含まれる項目は前記第１メニューに含まれない項目よりも選択頻度が高い請求項６に記載の方法。
【請求項８】
前記第１位置と第２位置との距離が第１閾値を越えることに応答して、前記第１メニューに含まれる項目を選択可能に表示し、
前記第１位置と第２位置との距離が第１閾値よりも大きい第２閾値を越えることに応答して、前記第１メニューに含まれない項目を選択可能に表示する請求項６に記載の方法。
【請求項９】
前記第１位置及び第２位置をそれぞれP1(X1,Y1）、P2(X2,Y2)とし、
前記第２メニューを表示するステップは、
X2-X1の大きさ又はY2-Y1の大きさに応じて当該第１メニューを変更した第２メニューを表示する請求項１に記載の方法。
【請求項１０】
ユーザからの第三操作を受け付けることに応答して、前記第２メニューが含む項目の一つを選択するステップを更に含む
請求項１に記載の方法。
【請求項１１】
前記第１位置及び第２位置をそれぞれP1(X1,Y1）、P2(X2,Y2)とし、
前記第２メニューがY方向に複数の項目を備え、
前記第２メニューを表示するステップは、
X2-X1の大きさに応じて当該第１メニューを変更した第２メニューを表示し、
前記方法は、
ユーザからの第３操作を受け付けることに応答して、Y2-Y1の値に応じて前記複数の項目の一つを選択するステップを更に含む
請求項１に記載の方法。
【請求項１２】
前記第１位置及び第２位置をそれぞれP1(X1,Y1）、P2(X2,Y2)とし、
前記第２メニューがY方向に複数の項目を備え、
前記第２メニューを表示するステップは、
X2-X1の大きさに応じて当該第１メニューを変更した第２メニューを表示し、
前記方法は、
ユーザからの第三操作を受け付けることに応答して、Y2-Y1の値が第３閾値を越えることに応じて前記複数の項目のいずれも選択しないステップを更に含む
請求項１に記載の方法。
【請求項１３】
前記ポインティング・デバイスがボタンを備えたマウスであり、
前記第１操作は当該ボタンを押す操作、前記第２操作は当該ボタンを押したまま当該マウスを移動させる操作、前記第３操作は当該ボタンを離す操作である請求項１０に記載の方法。
【請求項１４】
前記第２メニューが含む複数の項目がそれぞれパラメータ値に対応する請求項１０に記載の方法。
【請求項１５】
前記一つの項目がより下位階層の第３メニューを含み、
当該一つの項目が選択されたことに応答して、当該第３メニューを表示するステップを更に含む請求項１０に記載の方法。
【請求項１６】
前記第１位置及び第２位置をそれぞれP1(X1,Y1）、P2(X2,Y2)とし、
前記第２メニューがY方向に複数の項目を備え、
前記第２メニューを表示するステップは、
X2-X1の大きさに応じて当該第１メニューを変更した第２メニューを表示し、
前記方法は、
ユーザからの第３操作を受け付けることに応答して、Y2-Y1の値に応じて前記複数の項目の一つを選択するステップと、
当該一つの項目がより下位階層の第３メニューを含むことを条件に、当該第３メニューを表示するステップとを更に備える請求項１に記載の方法。
【請求項１７】
前記第３操作は前記ポインタをＸ方向においてP1からP2と逆方向、Ｙ方向においてP1からP2と順方向に移動させる操作であり、
前記第３メニューは前記一つの項目に対してＸ方向においてP1からP2へと逆方向側に表示する請求項１６に記載の方法。
【請求項１８】
前記ポインティング・デバイスがボタンを備えたマウスであり、
前記第１操作は当該ボタンを押す操作、前記第２操作は当該ボタンを押したまま当該マウスをある方向へ移動させる操作、前記第３操作は当該ボタンを押したまま当該マウスを異なる方向へ移動させる操作である請求項１６に記載の方法。
【請求項１９】
表示装置とユーザの操作に応じて当該表示装置の表示領域内に表示されるポインタを操作するポインティング装置とを備えるコンピュータ・システムにおいて実行されるコンピュータ・プログラムであり、
当該コンピュータ・システムに、
ユーザからの第１操作を受け付けることに応答して、当該ポインタの位置を第１位置として記憶するステップと、
当該第１位置に対応する位置に複数の項目を含む第１メニューを表示するステップと、
当該ユーザからの第２操作を受け付けることに応答して、当該ポインタの位置を第２位置として記憶するステップと、
当該第１位置と第２位置との距離に応じて当該第１メニューを変更した第２メニューを表示するステップと
を実行させるコンピュータ・プログラム。
【請求項２０】
表示装置とユーザの操作に応じて当該表示装置の表示領域内に表示されるポインタを操作するポインティング装置と記憶装置と演算制御装置とを備えるコンピュータ・システムであり、
当該演算制御装置は、
ユーザからの第１操作を受け付けることに応答して、当該ポインタの位置を第１位置として記憶装置に記憶させ、
当該第１位置に対応する位置に複数の項目を含む第１メニューを表示装置に表示させ、
当該ユーザからの第２操作を受け付けることに応答して、当該ポインタの位置を第２位置として記憶装置に記憶させ、
当該第１位置と第２位置との距離に応じて当該第１メニューを変更した第２メニューを表示装置に表示させる
ように構成されるコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＧＵＩ環境におけるユーザビリティ向上技術に関し、特に、操作性に優れたメニュー選択をその対象とする。
【背景技術】
【０００２】
従来からＧＵＩ環境におけるユーザビリティ向上を目的として、以下の特許文献１乃至４などの技術が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−９１６４９号公報
【特許文献２】特開２００６−１１３７０５公報
【特許文献３】特開平８−１２３６４７号公報
【特許文献４】特開２０００−３３９４８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一般に、GUIを用いたアプリケーションでは、対象オブジェクトに対してマウスのボタンを押すことにより表示されるメニューを選択しなければならないことは多い。あるオペレーティング・システム上のアプリケーションでは、アイコンなどのオブジェクト上でマウスの右ボタンを押すことによりメニューを表示し、メニュー上の項目をマウスまたはカーソルキーにより選択する。表示されるメニューの項目が少ない場合は操作上の問題も少ないが、アプリケーションによっては数多くの項目が表示されることや複数階層のメニューとして表示されることも多々あり、ユーザにとって利用頻度の高いメニューがメニュー下部や階層内にある場合、必ずしも操作性がよくない。【０００５】
一方、メニュー項目数が多い場合の効率化の問題とは別に、項目選択と同時になんらかの数値的量を与えることが有効である事例が存在する。たとえば、「音量を上げる」「音量を下げる」といった選択項目がある場合を想定したとき、単に「音量を上げる」という選択だけでなく、”どれくらい”いった量（程度）を同時にユーザーがアプリケーションに指示できた方が操作性に優れる。一般的にGUI環境におけるメニュー選択では、選択と同時に量を指示することはできていないため、量の指定の場合は、代表的候補をサブメニューとして出すか、別のUI(Dialog含む)を出すことにより指示させる必要があり、操作効率の面で課題となる。【０００６】
本発明はこのような課題に鑑みてなされたものであり、その目的の一つは、ＧＵＩ環境においてメニュー選択及び量指定の操作をより効率的に行う方法、コンピュータ・プログラム、コンピュータ・システムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明は、表示装置とユーザの操作に応じて当該表示装置の表示領域内に表示されるポインタを操作するポインティング装置と記憶装置と演算制御装置を備えるコンピュータ・システムに適用される方法として把握することができる。この場合、この方法は、演算制御装置が、ポインティング装置を介してユーザからの第１操作を受け付けることに応答して、当該ポインタの位置を第１位置として記憶装置に記憶させるステップと、当該第１位置に対応する位置に複数の項目を含む第１メニューを表示装置に表示させるステップと、ポインティング装置を介して当該ユーザからの第２操作を受け付けることに応答して、当該ポインタの位置を第２位置として記憶装置に記憶させるステップと、当該第１位置と第２位置との距離に応じて当該第１メニューを変更した第２メニューを表示装置に表示させるステップとを備える方法、とすることができる。【０００８】
ここで、第１操作は、表示領域内のオブジェクトをポインタで指定する操作とすることができる。また、第２操作は、当該オブジェクトをポインタでドラッグする操作とすることができる。またメニューの表示領域に着目すると、視認性を高める観点から、第２メニューの表示領域は、第１メニューの表示領域よりも大きく構成することができる。さらに、第２メニューの表示領域は拡大・縮小可能に、すなわち第１位置と第２位置との距離が長くなるに従って拡大し、第１位置と第２位置との距離が短くなるに従って縮小されるように構成することもできる。また第２メニュー内の項目に着目すると、この項目の態様を第１位置と第２位置との距離に応じて変更することもできる。【０００９】
一例としては、小さなメニュー表示時における誤操作を防止する観点から、第１位置と第２位置との距離が第１閾値を上回ることに応答して、第２メニュー内の項目を（選択不能から）選択可能に表示する、言い換えれば、第１位置と第２位置との距離が第１閾値を下回ることに応答して、第２メニュー内の項目を（選択可能から）選択不能に表示することができる。他の一例としては、項目の選択頻度を考慮して、第１位置と第２位置との距離が第２閾値を上回ることに応答して、第２メニューに含まれる項目は、第１メニューに含まれる項目に加えて第１メニューには含まれない項目が追加される、言い換えれば、第１位置と第２位置との距離が第２閾値を下回ることに応答して、第２メニューに含まれる項目は、第１メニューには含まれない項目が削除されるように構成することができる。つまり、第２メニューに含まれ得る項目のうち、第１メニューにも含まれる項目は第１メニューに含まれない項目よりも選択頻度が高いものとすることができる。さらにこれらの例を組み合わせ、第１位置と第２位置との距離が第１閾値を越えることに応答して、第１メニューに含まれる項目を選択可能に表示し、第１位置と第２位置との距離が第１閾値よりも大きい第２閾値を越えることに応答して、第１メニューに含まれない項目を選択可能に表示することもできる。【００１０】
ここで、第１位置と第２位置との距離としては、第１位置及び第２位置をそれぞれP1(X1,Y1）、P2(X2,Y2)とし、P1とP2との平面距離（｜X2-X1｜の二乗と｜Y2-Y1｜の二乗との和の平方根）としてもよいし、｜X2-X1｜や｜Y2-Y1｜で代表させることもできる。｜X2-X1｜で代表させる場合には、（Y2-Y1）の値や大きさに基づいて第２メニューに含まれる（複数の）項目の選択を行うことができる（この例が一般には好適である）。逆に、｜Y2-Y1｜で代表させる（X2-X1）の値や大きさに基づいて第２メニューに含まれる（複数の）項目の選択を行うことができる。前者の例としては、第１位置及び第２位置をそれぞれP1(X1,Y1）、P2(X2,Y2)とし、第２メニューがY方向に複数の項目を備えることを前提として、X2-X1の大きさに応じて当該第１メニューを変更した第２メニューを表示し、ユーザからの第３操作を受け付けることに応答して、Y2-Y1の値に応じて（具体例としては（Y2-Y1）／｜X2-X1｜の値に応じて）前記複数の項目の一つを選択するように構成することができる。さらに、ユーザからの第３操作を受け付けることに応答して、Y2-Y1の値（具体例としては（Y2-Y1）／｜X2-X1｜の値）が第３閾値を越えることに応じて前記複数の項目のいずれも選択しないように構成することもできる。【００１１】
なお、ポインティング・デバイスがボタンを備えたマウスの場合を想定すると、第１操作は当該ボタンを押す操作、第２操作は当該ボタンを押したまま当該マウスを移動させる操作（ドラッグ操作）、第３操作は当該ボタンを離す操作とすることができる。そして、前段落の構成を前提とすると、ドラッグの距離によって第２メニューの大きさが決まり、ドラッグの方向（換言すれば、ドラッグの角度）によって第２メニュー中の選択される項目が決まる。【００１２】
選択される項目としては、非連続な値（例えば、各種コマンド）であってもよいし、連続的な値（例えば、音量等のパラメータ値）であってもよい。【００１３】
さらに、項目がより下位階層の第３メニューを含む場合がある。この場合、第１位置及び第２位置をそれぞれP1(X1,Y1）、P2(X2,Y2)とし、第２メニューがY方向に複数の項目を備え、第２メニューを表示するステップは、X2-X1の大きさに応じて当該第１メニューを変更した第２メニューを表示することを前提として、ユーザからの第３操作を受け付けることに応答して、Y2-Y1の値に応じて複数の項目の一つを選択し、当該一つの項目がより下位階層の第３メニューを含むことを条件に、当該第３メニューを表示するように構成することができる。ここで、第３操作としては、ポインタをＸ方向においてP1からP2へと逆方向、Ｙ方向においてP1からP2へと順方向に移動させる操作とし、第３メニューは一つの項目に対してＸ方向においてP1からP2へと逆方向側に表示することができる。これは、ポインティング・デバイスがボタンを備えたマウスであると想定すると、第１操作は当該ボタンを押す操作（クリック操作）、第２操作は当該ボタンを押したまま当該マウスをある方向へ移動させる操作（ドラッグ操作）、第３操作は当該ボタンを押したまま当該マウスを異なる方向へ移動させる操作（逆ドラッグ操作）とすることができる。【００１４】
本発明は、表示装置とユーザの操作に応じて当該表示装置の表示領域内に表示されるポインタを操作するポインティング装置と記憶装置と演算制御装置を備えるコンピュータ・システムにおいて実行されるコンピュータ・プログラムとして把握することもできる。この場合、コンピュータ・プログラムは、当該コンピュータ・システムに、ユーザからの第１操作を受け付けることに応答して、当該ポインタの位置を第１位置として記憶ステップと、当該第１位置に対応する位置に複数の項目を含む第１メニューを表示するステップと、当該ユーザからの第２操作を受け付けることに応答して、当該ポインタの位置を第２位置として記憶するステップと、当該第１位置と第２位置との距離に応じて当該第１メニューを変更した第２メニューを表示するステップとを実行させるものである。【００１５】
本発明は、表示装置とユーザの操作に応じて当該表示装置の表示領域内に表示されるポインタを操作するポインティング装置と記憶装置と演算制御装置とを備えるコンピュータ・システムとして把握することもできる。この場合、コンピュータ・システムの演算制御装置は、ユーザからの第１操作を受け付けることに応答して、当該ポインタの位置を第１位置として記憶装置に記憶させ、当該第１位置に対応する位置に複数の項目を含む第１メニューを表示装置に表示させ、当該ユーザからの第２操作を受け付けることに応答して、当該ポインタの位置を第２位置として記憶装置に記憶させ、
当該第１位置と第２位置との距離に応じて当該第１メニューを変更した第２メニューを表示装置に表示させる。【００１６】
本発明をこれらコンピュータ・プログラム、コンピュータ・システムとして把握した場合にも、上述した本発明を方法として把握した場合と実質的に同一の技術的特徴を備える事ができるのは当然である。
【発明の効果】
【００１７】
本発明によれば、ＧＵＩ環境においてメニュー選択及び量指定の操作をより効率的に行う方法、コンピュータ・プログラム、コンピュータ・システムを提供することができる。
【図面の簡単な説明】
【００１８】
【図１】本実施形態に係るパーソナル・コンピュータ４の外観図
【図２】パーソナル・コンピュータ４のハードウェア構成を示す機能ブロック図
【図３】パーソナル・コンピュータ４のソフトウェア構成を示す機能ブロック図
【図４】パーソナル・コンピュータ４の動作を説明するフローチャート
【図５】ユーザのマウス４７の操作及びそれに応じてディスプレイ４８の表示領域の状態
【図６】ユーザのマウス４７の操作及びそれに応じてディスプレイ４８の表示領域の状態
【図７】ユーザのマウス４７の操作及びそれに応じてディスプレイ４８の表示領域の状態
【図８】ユーザのマウス４７の操作及びそれに応じてディスプレイ４８の表示領域の状態
【図９】ユーザのマウス４７の操作及びそれに応じてディスプレイ４８の表示領域の状態
【図１０】ユーザのマウス４７の操作及びそれに応じてディスプレイ４８の表示領域の状態
【図１１】ユーザのマウス４７の操作及びそれに応じてディスプレイ４８の表示領域の状態
【図１２】ユーザのマウス４７の操作及びそれに応じてディスプレイ４８の表示領域の状
【発明を実施するための形態】
【００１９】
まず図１乃至図３を参照しつつ、本実施形態に係るパーソナル・コンピュータ（コンピュータ・システム）４のハードウェア構成及びソフトウェア構成を説明する。ここで、図１は本実施形態に係るパーソナル・コンピュータ４の外観図であり、図２はパーソナル・コンピュータ４のハードウェア構成を示す機能ブロック図であり、図３はパーソナル・コンピュータ４のソフトウェア構成を示す機能ブロック図である。
【００２０】
このパーソナル・コンピュータ４のハードウェア構成は、（低速及び高速の）バス４０、バスに接続されるＣＰＵ（演算制御装置）４１、ＲＡＭ（ランダム・アクセス・メモリ：記憶装置）４２、ＲＯＭ（リード・オンリ・メモリ：記憶装置）４３、ＨＤＤ（ハード・ディスク・ドライブ：記憶装置）４４、通信インタフェース４５、入出力インタフェース４６を備えている。さらに、入出力インタフェース４６に接続されるマウス（ポインティング装置）４７、フラット・パネル・ディスプレイ（表示装置）４８、キーボード４９等を備えている。なお、このパーソナル・コンピュータ４は一般的なパーソナル・コンピュータ・アーキテクチャを採用するものとして説明したが、例えば、より高いデータ処理能力や可用性を求めて、ＣＰＵ４１やＨＤＤ４４等を多重化することができる。また、デスクトップ型の他、ラップトップ型やタブレット型のパーソナル・コンピュータ、或いはＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、スマートフォンなど、様々なタイプのコンピュータ・システムを採用することができる。
【００２１】
このパーソナル・コンピュータ４のソフトウェア構成は、基本的な機能を提供するオペレーティング・システム（ＯＳ）５０と、OS５０の機能を利用するアプリケーション・ソフトウェア５１と、マウス４７のドライバ・ソフトウェア５２とを備えている。例えば、オペレーティング・システム（ＯＳ）５０としては、一般的な商用又はオープンソースのオペレーティング・システムを採用することができる。これらのソフトウェアのいずれか、又は複数に後述する本実施態様に係るソフトウェアの機能が実装されており、これらの各ソフトウェア５０乃至５２はRAM４２上にロードされ、CPU４１等により実行される。
【００２２】
次に図４乃至１１を参照しつつ、本実施形態に係るパーソナル・コンピュータ４の動作・機能について説明する。ここで図４はパーソナル・コンピュータ４の動作を説明するフローチャートであり、図５乃至図１１はユーザのマウス４７の操作（図５乃至図１１の各（ｂ）参照）及びそれに応じてフラット・パネル・ディスプレイ（以下、単に「ディスプレイ」という）４８の表示領域の（一部の）状態（図５乃至図１１の各（ａ）参照）を示している。以下、図４のフローチャートに沿って説明する。
【００２３】
ユーザはマウス４７を操作し、ディスプレイ４８の表示領域においてポインタＰを操作する。ここでは、ＸＹ直交座標系で原点として定義される位置（第１位置）Ｐ１（Ｘ１，Ｙ１）にオブジェクトＯが表示されているものとする。図５（ａ）はオブジェクトＯにポインタＰが重なっている状態を示している。この状態で、ユーザがマウス４７の右ボタンをクリックすると（図４のＳ１０１、図６（ｂ）参照）、パーソナル・コンピュータ４はその位置Ｐ１をＲＡＭ４２上に記憶し（図４のＳ１０２参照）、初期メニュー（第１メニュー）１をディスプレイ４８のＰ１に対応する位置（ここでは位置Ｐ１のＸ方向近傍）に表示する（図４のＳ１０３、図６（ａ）参照）。
【００２４】
さらにユーザがマウス４７を操作し、右ボタンを押したままポインタＰを位置Ｐ１から位置Ｐ２（Ｘ２，Ｙ２）へ移動（つまりドラッグ）させると（図４のＳ１０４参照）、位置Ｐ１と位置Ｐ２との関係に応じて、次のような機能が発現される（図４のＳ１０５及びＳ１０６）。
【００２５】
まず、位置Ｐ１と位置Ｐ２とのＸ方向の移動値（Ｘ２−Ｘ１）に応じて、１．メニューが拡大・縮小し、２．メニューに含まれる項目が選択可能・選択不能に切り替わり、３．メニューに含まれる項目が追加・削除（増減）する（図４のＳ１０５参照）。以下、それぞれ図７を参照しつつ説明する。なお、簡単のために、ここでは位置Ｐ１と位置Ｐ２とのＹ方向の移動値（Ｙ２−Ｙ１）は存在しない（ゼロ）として説明する。また、ディスプレイ４８上のＸY座標系と、マウス４７の移動方向を示すｘｙ座標系とは必ずしも一致しない。
【００２６】
１．メニューの拡大・縮小
ユーザがマウス４７をｘ方向にドラッグすると、位置P2に拡大メニュー（第２メニュー）２が表示される。つまり、ポインタが位置Ｐ２Ａ（Ｘ２Ａ，Ｙ２Ａ）に移動されると位置Ｐ２Ａに（位置Ｐ２Ａを実質的に中心として）拡大メニュー２Ａが表示され、ポインタが位置Ｐ２Ｂ（Ｘ２Ｂ，Ｙ２Ｂ）に移動されると位置Ｐ２Ｂに（位置Ｐ２Ｂを実質的に中心として）拡大メニュー２Ｂが表示され、ポインタが位置Ｐ２Ｃ（Ｘ２Ｃ，Ｙ２Ｃ）に移動されると位置Ｐ２Ｃに（位置Ｐ２Ｃを実質的に中心として）拡大メニュー２Ｃが表示され、ポインタが位置Ｐ２Ｄ（Ｘ２Ｄ，Ｙ２Ｄ）に移動されると位置Ｐ２Ｄに（位置Ｐ２Ｄを実質的に中心として）拡大メニュー２Ｄが表示される。ここで、各メニューの大きさ（面積）は、初期メニュー１＜拡大メニュー２Ａ＜拡大メニュー２Ｂ＜拡大メニュー２Ｃ＜拡大メニュー２Ｄの関係があり、位置の関係はＸ２Ａ＜Ｘ２Ｂ＜Ｘ２Ｃ＜Ｘ２Ｄの関係がある。つまり、ポインタＰのＸ方向の移動値が大きくなれば、メニュー（初期メニュー１及び拡大メニュー２）の面積も大きくなる。逆も同様であり、ポインタＰのＸ方向の移動値が小さくなれば、メニュー（初期メニュー１及び拡大メニュー２）の面積も小さくなる。このようにメニューの拡大・縮小が可能となることで、ユーザが所望するサイズのメニューを表示させることができる。
【００２７】
２．項目の選択可能・選択不能の切り替え
ユーザがマウス４７をｘ方向にドラッグすると、位置P2に拡大メニュー（第２メニュー）２が表示されるのは上述の通りであるが、ポインタＰのＸ方向の移動値が閾値（第１閾値）Ｔ１となるまでは、メニュー（初期メニュー１及び拡大メニュー２）に含まれる項目は選択不可であり、メニューも選択不可であることをユーザに対して視覚的に示すように半透明で表示される。ここでは、Ｘ２Ａ＜Ｔ１＜Ｘ２Ｂの関係が存在するため、初期メニュー１、拡大メニュー２Ａはいずれもその項目が選択できず、それを視覚的に示す為にディスプレイ４８には半透明で表示される。一方、拡大メニュー２Ｂ、２Ｃ、２Ｄはいずれもその項目が選択でき、それを示すためにディスプレイ４８には非透明で表示される。逆も同様であり、ポインタＰのＸ方向の移動値が小さくなれば、メニューは選択可能から選択不能となる。このようにメニュー中の項目が選択可能・不能に切り替わることで、比較的メニューが小さく、誤って意図しない項目が選択されてしまうことを防止することができる。
【００２８】
３．メニューに含まれる項目の増減
ユーザがマウス４７をｘ方向にドラッグすると、位置P2に拡大メニュー（第２メニュー）２が表示されるのは上述の通りであるが、ポインタＰのＸ方向の移動値が閾値（第２閾値）Ｔ２を越えると、拡大メニュー２に含まれる項目が増加する。ここでは、Ｘ２Ｃ＜Ｔ２＜Ｘ２Ｄの関係が存在するため、初期メニュー１、拡大メニュー２Ａ、２Ｂ、２Ｃが含む項目Ｉの数は１１個であるのに対し、拡大メニュー２Ｄが含む項目Ｉの数は１３個である。逆も同様であり、ポインタＰのＸ方向の移動値が小さくなれば、メニューが含む項目Ｉの数は（１３個から１１個へ）減少する。ここで、既存の項目の選択頻度は追加される項目の選択頻度よりも高いものとすることが好ましい。なお、選択頻度はユーザにより選択される項目の履歴をパーソナル・コンピュータ４が記憶、演算することで求めることができる。また、ユーザ毎、又はオブジェクトＯ毎に選択頻度を記憶、演算し、それに基づいて既存の項目と追加される項目とを動的に変更してもよい。さらに、項目の増減は二段階に留まらず、多段階としてもよい。このようにメニューに含まれる項目の数が増減することで、メニューの大きさに応じて項目の数が変化し、項目の選択がより容易となる。
【００２９】
つぎに、位置Ｐ１と位置Ｐ２とのＹ方向の移動値（Ｙ２−Ｙ１）に応じて、ポインタＰをメニュー内の一つの項目又はメニュー外の表示領域に表示する（図４のＳ１０６参照）。以下、図７乃至図９を参照しつつ説明する。なお、ポインタＰは斜めにドラッグされるものとして説明する。
【００３０】
ポインタＰとメニューとの位置関係は次のように決定される。すなわち、ポインタＰがＸ方向にのみドラッグされる場合には、ポインタＰは常にほぼメニューの中心に表示される（図７（ａ）参照）。ポインタＰがＸＹ方向にドラッグされる場合には、ポインタＰのＹ座標は位置Ｐ１と位置Ｐ２とのＹ方向の移動値（Ｙ２−Ｙ１）によって、より正確にはドラッグ方向の傾き（Ｙ２−Ｙ１）／｜Ｘ２−Ｘ１｜によって決定される。したがって、ドラッグ方向の傾きが一定の場合（（Ｙ２Ａ−Ｙ１）／｜Ｘ２Ａ−Ｘ１｜＝（Ｙ２Ｂ−Ｙ１）／｜Ｘ２Ｂ−Ｘ１｜＝（Ｙ２Ｃ−Ｙ１）／｜Ｘ２Ｃ−Ｘ１｜）には、ポインタＰは常に拡張メニュー２中の同一の項目Ｉ２を指し示す（図８（ａ）及び図９（ａ）の実線矢印参照）。一方、傾き（Ｙ２−Ｙ１）／｜Ｘ２−Ｘ１｜が閾値（第３閾値）を越える場合には、ポインタＰは拡張メニュー２の外を指し示すこととなる（図９（ａ）の点線矢印参照）。また、このような実装の場合には、ポインタＰのＹ方向の移動量を抑えてユーザビリティを高める為に、メニューの中心により選択頻度の高い項目を配置し、メニューの上側（Ｙ方向）又は下側（マイナスＹ方向）にはより選択頻度の低い項目を配置することが好ましい。
【００３１】
本実施形態では、拡大メニュー２内の項目を選択する操作（第三操作）が二通り存在するため、それぞれについて説明する。
【００３２】
一方の操作は、ポインタＰがメニュー内の選択可能な項目内に存在しているタイミングで（図４のＳ１０８参照）、ユーザがマウス４７の右ボタンを離す場合（図４のＳ１０７参照）である。この場合、そのポインタＰによって指し示されている項目が選択される（図４のＳ１０９参照）。例えば、図９に示す通り、ポインタＰが拡大メニュー２Ｃの項目Ｉ２を指し示している状態でユーザが右ボタンを離した場合、その項目Ｉ２が選択される。逆に、ポインタＰがメニュー内の選択可能な項目内に存在しているタイミングでユーザがマウス４７の右ボタンを離す場合（図４のＳ１０７参照）、具体的には、ポインタＰが初期メニュー１又は拡大メニュー２Ａ内に存在しているタイミング、或いはポインタＰが拡大メニュー２Ｂ、２Ｃ、２Ｄの外に存在しているタイミング（図９（ａ）のＰ２Ｃ‘参照）で右ボタンを離す場合には、その選択は無効となりキャンセルされる（図４のＳ１１０）。
【００３３】
他方の操作は、ユーザがマウス４７の右ボタンを離すことなく、ポインタＰが逆方向（Ｘ方向においてＰ１からＰ２方向と逆方向、Ｙ方向においてＰ１からＰ２方向と順方向）に移動させられる場合である（図４のＳ１１１）。その際、ポインタＰにより指し示されている項目が下位階層のメニューを含まない場合には（図４のＳ１１２参照）、その項目が選択される（図４のＳ１０９）。ポインタＰにより指し示されている項目が下位階層のメニューを含む場合には、下位階層のメニュー（第３メニュー）が表示される（図４のＳ１１３参照）。例えば、ポインタＰにより指し示されている拡大メニュー２Ｃの項目Ｉ２が下位階層のメニューを含む場合には、ポインタＰを逆方向（Ｘ方向においてＰ１からＰ２方向と逆方向、Ｙ方向においてＰ１からＰ２方向と順方向）に移動させることで、項目Ｉ２から下位階層のメニュー３が表示される（図１０参照）。逆に、ユーザがマウス４７の右ボタンを離すことなく、ポインタＰが順方向（Ｘ方向においてＰ１からＰ２方向と逆方向、Ｙ方向においてＰ１からＰ２方向と逆方向）に移動させられる場合には（図４のＳ１１１参照）、選択は行われず、拡大メニュー２が（拡大メニュー２Ｃから２Ｂへと）縮小するのみである（図４のＳ１０５、図１１参照）。
【００３４】
以上、本発明の実施形態について説明した。この実施形態では、メニュー内の項目を選択するものとして説明したが、当該項目がパラメータの数値に対応する場合には、同様にパラメータを選択することもできる。図１２は、音量パラメータを選択する態様を示したものである。同様に、ポインタＰを移動させる傾きにより、所望のパラメータ（音量値）を容易に選択することができる。なお、図１０に示すように、ある項目の下位階層としてあるパラメータを選択可能とする構成を採用することもできる。
【００３５】
なお、本発明は、方法の他、ハードウェア、ソフトウェア、またはハードウェア及びソフトウェアの組み合わせとして実現可能である。例えば、ポインティング・デバイスとしてタッチパネル、タブレットを採用することもできる。ハードウェアとソフトウェアの組み合わせによる実行において、所定のプログラムを有するデータ処理システムにおける実行が典型的な例として挙げられる。かかる場合、該所定プログラムが該データ処理システムにロードされ実行されることにより、該プログラムは、データ処理システムを制御し、本発明にかかる処理を実行させる。このプログラムは、任意の言語・コード・表記によって表現可能な命令群から構成される。そのような命令群は、システムが特定の機能を直接、または１．他の言語・コード・表記への変換、２．他の媒体への複製、のいずれか一方もしくは双方が行われた後に、実行することを可能にするものである。
【００３６】
もちろん、本発明は、そのようなプログラム自体のみならず、プログラムを記録した媒体もその範囲に含むものである。本発明の機能を実行するためのプログラムは、フレキシブル・ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＤＶＤ、ハードディスク装置、ＲＯＭ、ＭＲＡＭ、ＲＡＭ等の任意のコンピュータ読み取り可能な記録媒体に格納することができる。かかるプログラムは、記録媒体への格納のために、通信回線で接続する他のデータ処理システムからダウンロードしたり、他の記録媒体から複製したりすることができる。また、かかるプログラムは、圧縮し、または複数に分割して、単一または複数の記録媒体に格納することもできる。また、様々な形態で、本発明を実施するプログラム製品を提供することも勿論可能であることにも留意されたい。
【００３７】
発明の構成の詳細を説明するものとして、以下に擬似コードを示す。ただし、擬似コードは説明を容易とするため、実装上の詳細は割愛してある。たとえば、マウスを右方向でなく、左方向にドラッグした場合、x方向の移動量が負となるが、この処理を示していない。また移動量が負となった場合のメニューの表示順位（反転して表示するかどうか）についても言及していない。ｘ方法の移動量が負となった場合のメニューの表示順位は、反転させる場合と反転させない場合があるが、アプリケーションにとってより自然な表示順位を選択するものとする。
int MENU_H_USUAL= 24 /* 例：メニュー項目の通常の高さ*/
int MENU_W_USUAL= 60 /* 例：メニュー項目の通常の幅 */
int MIN_FONT_HEIGHT= 6 /* 例：選択可能とする最小のメニュー項目高さ。最小のフォントの高さが目安*/
int X_TO_Y_RATIO= 5 /* 例：x方向に120dot移動したばあい、メニュー項目の高さが24dotとする場合*/
#define POS_CENTER1
#define POS_UPPER2
#define POS_LOWER3
typedef struct {
booleandisplayed
int menuid
int distance
} MENUINFO
main
...
MENUINFO menuinfo[10]/* 仮に最大10階層としている */
GetMouseInfo(&x, &y, &button )/* マウスから座標、ボタン状態を入手 */
if ( button is pressed )
ScalableMenu( x, y, N, pos_center,menuinfo, 0 )
/* menuinfo配列に 選択されたmenuidと各々の選択までの距離(distance)が返される。*/
/* ここでは説明を単純化するために何層までsubmenuが表示・選択されたかの判断ロジックは */
/* 省く。*/
endif
end
ScalableMenu( int x0, inty0, int N, int menu_pos_mode, MENUINFO *menuinfo,int depth )
selectable = false/* 表示メニューが小さいときは選択不可とする。半透明で表示 */
curr_menuid= -1
prev_y = -1
GetMouseInfo(&x, &y, &button )/* マウスから座標、ボタン状態を入手 */
while ( button is notreleased )
menu_h = ( x - x0 ) / X_TO_Y_RATIO/* メニュー項目の高さは x方向の移動量に比例 */
/* ここでは説明を単純化するために、x が x0 より小さくなる */
/* ケースを含めていない。*/
if menu_h == 0/*menu_hが 0の場合は最小のサイズで表示する。この際*/
menu_h = 1/* メニュー項目の高さが x方向の移動量と厳密には比例しない */
selectable = false
elseif ( menu_h < MIN_FONT_HEIGHT ) /*最小表示フォントサイズ以下の場合は読めないので選択不可*/
selectable = false/* としている。慣れたユーザーの場合、選択可としてよい。 */
else
selectable = true
if menu_pos_mode == POS_CENTER
ypos_in_menu = y - ( y0 - menu_h* N / 2 )
else menu_pos_mode = POS_UPPER
ypos_in_menu = y - ( y0 - menu_h* N )
else
ypos_in_menu = y - y0
endif
if ( ypos_in_menu < 0 )/* メニューを上に越えた場合*/
curr_menuid = -1
else
curr_menuid = ypos_in_menu/ menu_h
if curr_menuid >= N/* メニューを下に越えた場合*/
curr_menuid = -1
endif
endif
endif
menu_w = menu_h * MENU_W_USUAL /MENU_H_USUAL
if (menu_h < prev_menu_h)/*x方向に逆に動かしたことを計算結果の menu_h から判断 */
/* １つ前の xと現在の xから判断すると遊びがなくなるため */
/* sub menuがちょっとしたことで表示されてしまうため */
if ( y <= y0 && y < prev_y )
ScalableMenu( x, y, POS_UPPER, menuinfo, depth + 1 )
break
else ( y > y0 &&y > prev_y )
ScalableMenu( x, y, POS_LOWER, menuinfo, depth + 1 )
break
endif
endif
UpdateMenu( selectable, N, menu_h,menu_w, menu_pos_mode) /* メニューを表示・更新。selectableがfalseの場合 */
/* 半透明表示で選択不可を示す */
prev_y = y
prev_menu_h = menu_h
GetMouseInfo( &x, &y, &button )
endwhile
menuinfo[depth ].menuid = curr_menuid
menuinfo[depth ].distance = calculate_distance( x, y, x0, y0 )
return
end
【符号の説明】
【００３８】
４…パーソナル・コンピュータ（コンピュータ・システム）、
４１…ＣＰＵ（演算制御装置）、
４２…ＲＡＭ（ランダム・アクセス・メモリ：記憶装置）、
４３…ＲＯＭ（リード・オンリ・メモリ：記憶装置）、
４４…ＨＤＤ（ハード・ディスク・ドライブ：記憶装置）、
４７…マウス（ポインティング装置）、
４８…フラット・パネル・ディスプレイ、
【図１】
2011024773.tif 000003
【図２】
2011024773.tif 000004
【図３】
2011024773.tif 000005
【図４】
2011024773.tif 000006
【図５】
2011024773.tif 000007
【図６】
2011024773.tif 000008
【図７】
2011024773.tif 000009
【図８】
2011024773.tif 000010
【図９】
2011024773.tif 000011
【図１０】
2011024773.tif 000012
【図１１】
2011024773.tif 000013
【図１２】
2011024773.tif 000014
【国際調査報告】
2011024773.tif 000015
2011024773.tif 000016
2011024773.tif 000017