(58)【調査した分野】(Int.Cl.,DB名)
前記複数のアイテムは前記入力領域において縦に並び、各アイテムは横長である、又は、前記複数のアイテムは前記入力領域において横に並び、各アイテムは縦長である、請求項1に記載の生成方法。
ステップ(a)において、前記コンピュータは、前記入力領域の各アイテムのはみ出し位置の背景を、該アイテムの他の領域の背景と異ならせる、請求項1に記載の生成方法。
ステップ(a)において、前記コンピュータは、各アイテムのはみ出し位置へ視線を誘導するためのアニメーションを用いたインジケータの描画データを更に生成し、及び、ステップ(b)において、前記コンピュータは、前記インジケータの描画データを更に出力する、請求項1に記載の生成方法。
前記コンピュータは、タブレット型コンピュータ、ノート型コンピュータ、スマートフォン、又はPersonalDigital Assistants(PDA)である、請求項1に記載の生成方法。
【背景技術】
【0002】
近年、タッチインターフェースを搭載したディスプレイを有するモバイル端末やタブレット型端末において、画面の精細化が進んでいる。
【0003】
このような状況において画面に多くの情報を表示しようとすると、リストボックスやメニューなどのウィジェットサイズが必然的に小さくなる。
【0004】
特に、リストボックスのようなユーザ選択可能な複数のアイテムが並ぶ入力領域は、短冊状の各アイテムの形状がより細くなるため、円形に近い指のタッチポイント形状と合わなくなり操作がしにくくなる。このことはFitt’s Lawからも認められる。
【0005】
Fitt’s Lawとは、
図3に示す地点Aから対象オブジェクトBまでポインタを移動する際の作業完了時間 (みなし難易度) が、(AB間の距離 D)/(移動方向におけるBの奥行き S)の関数で表せる、という法則である。該法則は、各種UIにおいて幅広く当てはまる。リストボックスの各アイテムは横長である (即ち、Dに比べてSがかなり小さい) ため、操作がしにくい、との結論が得られる。
【0006】
タッチパネルの誤操作を防止する従来技術として、例えば特許文献1〜3及び非特許文献1が存在する。
【0007】
特許文献1は、文字、図形などで入力内容が表示される複数のボタン、あるいは複数の項目を含むメニューが表示される表示モニタと、表示モニタ画面上に設けられ、ボタンやメニューに対応して設定されたタッチエリアが押圧されたとき、対応する押圧信号を出力するタッチパネルと、ボタンやメニューのうちの押圧頻度の高いボタンやメニューを検出する頻度検出手段と、押圧頻度の高いボタンやメニューについて、それらが表示されてから拡大表示開始されるまでの時間を算出する拡大表示開始時間算出手段と、ボタンやメニューが表示されたとき、押圧頻度が高いと判定されているボタンやメニューについては、拡大表示開始時間にそのタッチエリアを拡大するタッチエリア制御手段とを備えるタッチパネル装置を開示する。
【0008】
特許文献2は、表示画面に選択ボタンを表示し、該表示画面上に配設されたタッチパネル上の指のタッチ座標を検知することにより押下げられた選択ボタンを判定するタッチパネル制御装置であって、前記表示画面に複数の選択ボタンを表示した状態で、前記タッチパネルが指でタッチされたとき、タッチ座標の周辺にある選択ボタンを、各選択ボタンがフル表示されるように再配列して拡大表示し、その後タッチパネルが改めて指でタッチされたとき、タッチ座標にある選択ボタンが押下げられたものと判定することを特徴とする、タッチパネル制御装置を開示する。
【0009】
特許文献3は、表示パネルとタッチパネルとからなる画像表示装置において、複数の画像を個々の画像に隣接させて一覧表示する第1の表示モードと、上記複数の画像の中から、上記タッチパネルによって選択された1つを拡大表示する第2の表示モードと、上記第1の表示モードにおいて、上記タッチパネルが操作された時に、上記タッチパネル操作位置に相当する複数の画像を、上記第1の表示モードより離散的に表示する第3の表示モードに移行させる制御を行う表示制御部を具備する、画像表示装置を開示する。
【0010】
非特許文献1は、リストの要素が大量にあったときに魚眼式リストにするMozilla Firefox(登録商標)のアドオンを紹介し、注目するアイテムを拡大表示しつつ、その他のアイテムについては注目アイテムから遠ざかるほどに小さく表示するFisheye Menu#2の画面表示を公開している。
【発明を実施するための形態】
【0031】
以下、本発明を実施するための形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。なお、実施の形態の説明の全体を通じて同じ要素には同じ番号を付している。
【0032】
図1は、本発明を実施するためのコンピュータ100の例示的なハードウェア構成を示す。
図1において外部記憶装置114やROM106は、オペレーティング・システムと協働してCPU102に命令を与え、本発明を実施するためのユーザ選択可能な複数アイテムが並ぶ入力領域の生成プログラムのコードや各種データを記録することができる。そして外部記憶装置114やROM106に格納された複数のコンピュータ・プログラムは各々RAM104にロードされることによってCPU102により実行される。なお、外部記憶装置114は、SCSIコントローラなどのコントローラ(図示しない)を経由してバス108へ接続されている。コンピュータ・プログラムは圧縮し、また複数に分割して複数の媒体に記録することもできる。
【0033】
コンピュータ100はまた、視覚データをユーザに提示するための表示装置116を含む。表示装置116は、グラフィックスコントローラ(図示しない)を経由してバス108へ接続されており、タッチ・スクリーンを含むことができる。コンピュータ100は、通信インタフェース118を介してネットワークに接続し、他のコンピュータ等と通信を行うことが可能である。
【0034】
上記説明した構成要素は例示であり、そのすべての構成要素が本発明の必須構成要素となるわけではない。同様に本発明を実施するためのコンピュータ100は、キーボードやマウスのような入力デバイス、スピーカー等の他の構成要素を含むことも可能であることは言うまでもない。
【0035】
なお、コンピュータ100は一般的なパーソナル・コンピュータ・アーキテクチャを採用するものとして説明したが、例えば、デスクトップ型の他、ラップトップ型やタブレット型のパーソナル・コンピュータ、或いはPDA(Personal Digital Assistant)、スマートフォン、デジタル・カメラ、ゲーム・システムなど、様々なタイプのコンピュータ・システムを採用することができる。また、より高いデータ処理能力や可用性を求めて、CPU41やHDD44等を多重化することができる。
【0036】
次に
図2を参照して、本発明を実施するためのコンピュータ100の例示的なソフトウェア構成を示す。コンピュータ100のソフトウェア構成は、基本的な機能を提供するオペレーティング・システム(OS)200と、OS200の機能を利用するアプリケーション210と、アプリケーション210により利用され、アプリケーション210の一部として動作する複数のプログラム部品を含むライブラリ205とを備えている。例えば、OS200としては、一般的な商用又はオープンソースのオペレーティング・システムを採用することができる。好ましくは、本発明の実施形態に係るユーザ選択可能な複数アイテムが並ぶ入力領域の生成システムの機能は、ライブラリに含まれるプログラム部品(例えば、リストボックス、コンボボックス、及びテーブル等)に実装する。これらソフトウェア200〜210は、RAM104上にロードされ、CPU102等により実行される。以下では、本発明を実装するライブラリ205に含まれるプログラム部品を単にライブラリ205という。
【0037】
本発明は、リストボックスやコンボボックスのようなユーザ選択可能な複数のアイテムが並ぶ入力領域を表示する際に、個々のアイテムサイズを動的に変更するのではなく、入力領域の生成時にアイテムの形状を一部拡張することで、アイテム選択時の操作性を向上させる。まず、本発明をリストボックスに適用した場合を例に、
図4A〜
図4Dを参照しつつ本発明の概要を説明する。
【0038】
図4Aは、短冊状のアイテムが縦に並んだ従来のリストボックスを示す。
図4Aに示すように、横長のアイテムが縦に並ぶリストボックスは一般に右側のスペースが空いていることが多い。そこで本発明はこの右側の空いたスペースを利用し、
図4B〜
図4Dに示すように、各アイテムの領域を、隣接するアイテムの右側の領域の一部と統合して拡張する。より具体的には、隣接する複数のアイテムの各々が互いに横長の他方の領域に一部はみ出すように拡張する。これによって、拡張部分に円形に近い指のタッチポイント領域を確保することが可能となり、アイテム選択時の操作性の向上を図ることができる。
【0039】
ここで互いに領域を一部統合する隣接する複数のアイテムの数は、2以上の任意の正の整数であってよい。以下の説明では、統合するアイテム数を統合単位とも呼称する。
図4Bに示すリストボックスの統合単位は2であり、
図4Cに示すリストボックスの統合単位は3である。統合単位は、リストボックスの全アイテムに渡って同じである必要はなく、例えば、5行のリストボックスにおいて最初2行を統合し、残り3行を統合する等のように複数の統合単位を採用してもよい。
【0040】
このように統合単位は自由に決定することが可能であるが、統合単位として大きな数を採用するほど、
図4Dに示すように、長いラベルの一部が表示できずにカットされる可能性が高くなる。そこで本発明では、カットされた部分の長さを動的計画法におけるコストと、また、統合単位を動的計画法における選択肢と、それぞれうまく関連付けすることにより、コスト最小化問題としてリストボックスの全アイテムに渡る最適な統合単位の組み合わせ(又は配列ともいう)を決定する。決定方法の詳細は
図8を参照して後述する。以下では、複数のアイテムは入力領域において縦に並び、各アイテムは横長であるとして本発明を説明する。しかしながら、本発明は、入力領域において複数アイテムが横に並び、各アイテムが縦長である場合にも同様に適用可能であることは、当業者に容易に理解されよう。
【0041】
本発明の詳細な説明に入る前に、前準備として本明細書において使用する記号の意味を
図5〜
図6を参照して説明する。
【0042】
図5は、入力領域500に縦に並ぶユーザ選択可能な複数のアイテム502〜508を示す。
図5に示すように、記号hはアイテムの高さを、wはアイテムの幅を示す。また記号tは、本発明によって隣接するアイテムにはみ出すように拡張される領域の高さを、記号dはその幅を示す。なお、隣接するアイテムが2つ存在する場合(アイテム504は、隣接する2つのアイテム502、506を有する)、隣接アイテムそれぞれに対して高さtだけ拡張する。一方、隣接するアイテムが1つのみ存在する場合(アイテム502は、隣接する1のアイテム504のみを有する)、その1つのアイテムに対して高さ2tの拡張を行う。ユーザは拡張された領域を利用してアイテムを容易に選択できるようになるので、以下ではtを選択領域拡張高、dを選択領域拡張幅、ハイライト表示された矩形領域510〜516を各アイテムの選択領域と、それぞれ呼称する。
【0043】
図6は、各アイテム600〜606のラベル表示域608〜614を示す。ここでラベル表示域とは、ラベルを表示可能なアイテム内の領域をいう。本来アイテムは、その幅w全てをラベル表示のために利用することができる。しかし本発明では、隣接するN個(ここでNは統合単位を示す正の整数)のアイテムは、選択領域を作り出すため互いの領域にはみ出しあう。このため、本発明ではアイテム幅wのうち最大で(N×d)長の領域がラベル表示に使用できなくなる(アイテム602参照)。なお、本明細書全体において×は乗算を表す。N=1のとき、ラベル表示域の幅はwである。N≧2では、ラベル表示域の幅は上のアイテムから順に、w0+d、w0、w0+d、…、w0+(N-2) ×dとなる。但し、w0=w-N×d である。なお、
図6に示す例では、選択領域は上のアイテムから順に、向かって左から右へずらしているが、これとは逆に下のアイテムから順に、向かって左から右へずらしてもよいことは言うまでもない。この場合、ラベル表示域の幅は下のアイテムから順に、w0+d、w0、w0+d、…、w0+(N-2) ×dとなる。なお、ラベル表示域の幅は、カットされるラベル長を算出するために使用され、カットされるラベル長は、コスト最小化問題として最適な統合単位の組み合わせを求める際に用いられる。
【0044】
次に
図7を参照して、本発明の実施形態に係るユーザ選択可能な複数アイテムが並ぶ入力領域の生成システム700の機能を説明する。生成システム700は、取得部702と、パラメータ決定部704と、統合単位決定部706と、入力領域生成部708とを含む。
【0045】
取得部702は、生成システム700を呼び出すアプリケーション210から、入力としてラベルテキストの配列と、アイテムの幅w及び高さhとを取得する。取得部702は、取得したラベルテキストの配列から、ラベル長の配列を求める。なお、アイテムの幅w及び高さhは、定数としてライブラリ205の作成者によって予め所定の値が設定されていてもよい。
【0046】
パラメータ決定部704は、選択領域拡張高tと、選択領域拡張幅dと、統合単位として使用可能な最大の値N
maxとを決定する。そのためにパラメータ決定部704はまず取得部702から、アイテムの幅w及び高さhを受け取り、また、以下の定数を用いる。
選択領域はみ出し比率:r(0<r<0.5)
選択領域縦横比率条件:α(0<α<1)
ラベル表示域比率条件:β(0.5≦β<1)
非統合アイテムコスト:c(0<c)
ここでカッコ内は、定数の値として設定し得る範囲の一例を示す。これら定数は、ライブラリ205の作成者によって予め設定されていてよい。或いは、取得部702が、カッコ内の範囲内の定数の値をアプリケーション210から受け取るようにしてもよい。
【0047】
上記定数をより詳細に説明すると、選択領域はみ出し比率rは、アイテムの高さhに対するはみ出し量、即ち、選択領域拡張高tの割合を決める定数である。選択領域縦横比率条件αは、選択領域の高さ(h+2t)に対する幅dの割合を条件づける定数である。ラベル表示域比率条件βは、アイテム幅wに対する最短のラベル表示域w0の割合を条件づける定数である。なお、w0 = w-d×N
maxである。非統合アイテムコストcは、アイテムを統合により一部拡張しない場合にペナルティとして後述する統合コストに追加するコストである。統合しないアイテムをなるべく避けることが好ましいことから、非統合アイテムコストcには大きな値を設定することが好ましい。
【0048】
パラメータ決定部704は、選択領域拡張高tと、選択領域拡張幅dと、使用可能な最大の統合単位N
maxとを、次の条件を満たすように決定する。
t = h ×r
d ≧(h+2t) ×α
w0 ≧ w×β
なお、上記条件だけでは、選択領域拡張幅dと使用可能な最大の統合単位N
maxの値は一意に決まらない。ライブラリ205の作成者は、パラメータ決定部704が一意に値を決定できるように、予め決定のための方針をアルゴリズムとして与えたり、アプリケーション210の作成者が取得部702を介して条件式を設定できるようにしておいてよい。そのようなアルゴリズムや条件式は、例えば、「(ユーザがタッチしやすいように)条件内で選択領域拡張幅dをできるだけ大きく取る」というものであってよい。
【0049】
パラメータ決定部704はまた、アイテム統合数の選択肢の集合(以下、opt={自然数の集合}、又は単にoptと表記する)を決定する。但し、各選択肢opt_iはN
maxを超えない。アイテムの統合数の選択肢のパターンは次の3つのいずれにかに分類できる。
- 常に一定のアイテム数
例:opt={3}、意味は常に3アイテムずつ統合
- いくつかの選択肢から選択
例:opt={2,3}、意味は2アイテム又は3アイテムずつ統合
- 統合しないアイテムの存在を許可する
例:opt={1,2,3}、意味は統合しないか、2又は3アイテムのいずれかのアイテム数単位で統合
【0050】
なお、ライブラリ205の作成者はoptを自動決定する際の方針を予め与えておく。例えばライブラリ205の作成者は、式opt={N
max-1, N
max} を予めアルゴリズムとして与えておいてよい。或いは、取得部702が、opt情報をアプリケーション210から受け取るようにしておいてもよい。
【0051】
統合単位決定部706は、パラメータ決定部704から、選択領域拡張幅dとoptを、取得部702からラベル長の配列をそれぞれ受け取り、これら情報を使って、入力領域の各アイテムについて、optの選択肢の中から最適な統合単位を決定する。入力領域の全アイテムに渡る統合単位の最適な組み合わせの決定は、上述したように、隣接する複数のアイテムの統合によりカットされるラベル長を動的計画法におけるコストと、また、統合単位を動的計画法における選択肢と、それぞれ関連付け、コスト最小化問題として解いてよい。なお、optの選択肢が1つである場合、統合単位決定部706はその1の選択肢を出力するのみである。
【0052】
一例として、統合単位決定部706は、optの選択肢opt_iについて、そのコストを、次のopt_iアイテムを統合することにより各アイテムにおいてカットされたラベル長のopt_iアイテムに渡る和とすることができる。そして統合単位決定部706は、入力領域における各統合のコストを足し合わせたものを上記入力領域における統合コストとし、該統合コストが最小となるように統合単位の組み合わせ(配列)を決定してよい。統合単位決定部706による処理の更なる詳細は、
図8を参照して後述する。
【0053】
なお、上述したように、統合しないアイテムをなるべく避けることが好ましいことから、opt_i=1の場合のコストは大きな値とするのが好ましく、統合単位決定部706は、そのような非統合アイテムコストcをパラメータ決定部706から受け取る。また、統合単位決定部706は、入力領域の後ろのほうのアイテムにおいて、選択可能な選択肢がない場合に、opt内のいずれの選択肢よりも小さい値を選択してよい(ルール1)。但しその場合、上記統合コストにペナルティとなる値を足し合わせてもよい。更に統合単位決定部706は、統合単位として所定数以上の異なる数を選んだ場合に、上記統合コストにペナルティとなる値を足し合わせてもよい(ルール2)。
【0054】
入力領域生成部708は、統合単位決定部706が決定した統合単位の配列と、パラメータ決定部704が決定した選択領域拡張高tと選択領域拡張幅dとを、それぞれ取得して、複数のアイテムが縦に並ぶ入力領域の描画データを生成する。このとき入力領域生成部708は、取得した統合単位の配列に従って、それぞれの統合単位で隣接する複数のアイテムが互いに横長の他方の領域に一部はみ出すように、上記入力領域の描画データを生成する。
【0055】
入力領域生成部708は、生成した入力領域の描画データを所定の記憶領域に格納し、OS200又はOS200のGUIフレームワークが、ユーザの操作に応じて上記所定の記憶領域から可視領域の描画データを読み出して、表示装置116の画面上に表示できるようにする。
【0056】
ここで
図10A〜10Dを参照して、本発明を適用したリストボックスの画面表示の例を説明する。
図10Aや
図10Cに示すように、入力領域生成部708は、入力領域の各アイテムのはみ出し部分の境界線を曲線としてよい。また、
図10Bや
図10Dに示すように、入力領域生成部708は、入力領域の各アイテムの背景を、隣接するアイテム間で異ならせたり、各アイテムのはみ出し位置の背景を、該アイテムの他の領域の背景と異ならせたりしてよい。
【0057】
次に
図11A及び11Bを参照して、本発明を適用したリストボックスとともに表示するインジケータの例を説明する。これは、各アイテム内に選択領域があることを認知しやすくさせるためであり、入力領域内においてアニメーションを用いてよい。例えば
図11Aに示すように、入力領域生成部708は、矢印の中のグラデーションが左から右に動くアニメーションの描画データを更に生成してよい。また、
図11Bに示すように、入力領域生成部708は、丸などの図形(または図形の色のみ) が左から右に動くアニメーションの描画データを更に生成してよい。
【0058】
次に
図8及び
図9を参照して、本発明の実施形態に係るユーザ選択可能アイテムの表示システム700の動作を説明する。
【0059】
図8は、統合単位決定部706による統合単位の配列決定処理の流れを示すフローチャートである。上述したように、本実施例では動的計画法を用いて統合単位の配列を決定する。アイテム数Nの入力領域における最適な統合単位の配列を決定するためには、「入力領域の先頭からn個のアイテムに限定した統合単位の配列の最適解」をn=1からn=Nまで、順に求めていけばよい。
【0060】
統合単位の配列の決定処理を開始する際に、統合単位決定部706は入力として、統合単位の最大値N
max (N
max≦N)と、アイテム統合数の選択肢の集合optと、統合コスト関数 cを取得する。ここで、opt = [opt_1, ...,opt_L]であり、optの要素数をL (L≧1)とする。各opt_iについて 1≦opt_i≦N
maxが成り立ち、値の重複はないものとする。また、i番目のアイテムからj番目のアイテムまでを統合する際のコストを c(i,j) で表わす (ただし1≦i≦j≦N
max)。なお、c(i,j)の値は、後述するステップ802においてその都度算出してよい。該コストは、上述したように、i番目のアイテムからj番目の各アイテムにおいてカットされたラベル長の和とすることができる。各アイテムにおいてカットされたラベル長は、取得部702によって求められた各アイテムのラベル長から、該アイテムのラベル表示域の長さ(幅)を差し引くことによって求められる。各アイテムのラベル表示域の長さ(幅)は
図6を参照して説明したとおりである。
【0061】
統合単位決定部706はまた、統合単位の配列の決定するその途中、中間結果として、先頭のアイテムからn番目のアイテムまでの最小統合コストCopt(n)と、先頭のアイテムからn番目のアイテムまでの最小統合コストを与える統合方法Mopt(n)とを求める。但し、1≦n≦Nである。また、Mopt(n)は長さM個の配列であって、[(i_1, j_1), (i_2,j_2),…, (i_M, j_M)]の形式を取り、k番目(1≦k≦M)の配列の要素(i_k, j_k)は、i_k番目のアイテムからj_k番目のアイテムまでを統合することを意味する。i_1=1, j_M=nであり、各kについて、i_k≦j_kであり、各k’ (1≦k’≦M-1)について、i_k’ + 1 = j _ (k’ + 1)である。これらは配列の要素における数字の並びが昇順になっているための条件である。
【0062】
最終的に統合単位決定部706が出力すべきは、n=NのときのMoptの値、即ち、先頭のアイテムからN番目の後尾のアイテムまでの最小統合コストを与える統合方法Mopt(N)である。以下
図8に示すフローチャートに従って、統合単位の配列の決定処理を説明する。
【0063】
図8に示すフローチャートにおいて処理はステップ800で開始し、統合単位決定部706は、nに値1を設定する。続いて統合単位決定部706は、アイテム統合数の選択肢opt_iの中で、式Copt(n-opt_i) +c(n-opt_i +1,n)の値を最も小さくする選択肢を探し出し、その最小の値をCopt(n)に設定すると共に(ステップ802)、最小の値を与える選択肢をopt_i*に設定する(ステップ804)。
【0064】
続いて統合単位決定部706は、配列Mopt(n)に、式Mopt(n-opt_i*) +(n-opt_i* +1,n)の値を設定する(ステップ806)。続いて統合単位決定部706は、nの値に1を加え(ステップ808)、式n>Nが成り立つか否かを判定する(ステップ810)。成り立つと判定した場合(ステップ810:YES)、処理はステップ812に進み、統合単位決定部706はMopt(N)を出力する。一方、成り立たないと判定した場合(ステップ810:NO)、処理はステップ802へ戻り、統合単位決定部706は一連の処理を繰り返す。
【0065】
以下に統合単位決定部706による処理の擬似コードを示す。
【0066】
import java.util.ArrayList;
import java.util.List;
public class MergeCalculator {
// type of a pair
public class Pair {
public int i;
public int j;
public Pair(int i, int j) {
this.i = i;
this.j = j;
}
}
// type of a cost function
private interface CostFunc {
public int apply(int i, int j);
}
public List<Pair> compute(int N, int Nmax, List<Integer> opt, CostFunc c) {
List<List<Pair>> Mopt = new ArrayList<List<Pair>>();
List<Integer> Copt = new ArrayList<Integer>();
for (int n = 1; n <= N; n++) { // 1. in the flowchart
int minCost = Integer.MAX_VALUE;
int opti_star = 0; // opti*
for (int opti : opt) { // 2-a.
int cost = Copt.get(n - opti) + c.apply(n - opti + 1, n);
if (cost < minCost) {
minCost = cost;
opti_star = opti; // 2-b.
}
}
// 2-c.
List<Pair> Moptn = new ArrayList<Pair>(Mopt.get(n - opti_star));
Moptn.add(new Pair(n - opti_star + 1, n));
Mopt.set(n, Moptn);
}
return Mopt.get(N);
}
}
【0067】
次に5行のリストボックスを例に、具体的に統合単位の配列を求める。なお、i番目のアイテムからj番目のアイテムまでを統合する際のコストc(i,j)は、次のように算出されるものとする。c(1,2) = c(4,5) =20、c(2,3) = 25、c(3,4) = 30、c(3,5) = 40、c(1,3) = 50、c(i,i) = 100。
【0068】
例1: 2行統合に固定、即ち、opt={2}の場合
統合方法は一意であり、2行、2行、1行のパターンしかない。最後の1行にはルール1が適用される(コストは 20+30+100 =150) 。
例2:2行または3行から選択、即ち、opt={2,3}の場合
動的計画法により2行、3行のパターンで統合するのがコスト最小 (20+40=60 < 70=50+20)である。なお、ルール1により2行、2行、1行のパターンの統合も可能であるがコスト大となる (150)。同じ理由から3行、1行、1行のパターンも排除される(250)。
例3: 2行統合だが、統合しない行を許す、即ち、opt={1,2}の場合
動的計画法により、2行、1行、2行のパターンの統合コストが最小である (コストは20+100+20=140)。
【0069】
図9は、本発明の実施形態によるユーザ選択可能アイテムの表示処理の流れの一例を示すフローチャートある。
図9に示すユーザ選択可能アイテムの表示処理はステップ900で開始し、取得部702は、アプリケーション210から、ラベルテキストの配列などの入力情報を取得する。取得部702は、取得したラベルテキストの配列からラベル長の配列を算出する。続いて、パラメータ決定部704は、アイテムの幅w及び高さhと、所定の複数の定数を用いて、選択領域拡張高tと、選択領域拡張幅dと、統合単位として使用可能な最大の値N
maxと、更に、統合単位の選択肢の集合optを決定する(ステップ902)。
【0070】
続いて、統合単位決定部706は、パラメータ決定部704から、選択領域拡張幅dとoptを、取得部702からラベル長の配列をそれぞれ受け取り、これら情報を使って、入力領域の各アイテムについて、optの選択肢の中から最適な統合単位を決定する(ステップ904)。統合単位決定部706による統合単位配列の決定処理は、
図8を参照して詳細に説明したとおりである。
【0071】
続いて入力領域生成部708は、複数のアイテムのうち少なくとも一部のアイテムについて、隣接する複数のアイテムの各々が互いに横長の他方の領域に一部はみ出すように、入力領域の描画データを生成する(ステップ906)。このとき入力領域生成部708は、統合単位決定部706が決定した統合単位の配列から順に値を取り出し、該値が示すアイテム数ごとにアイテムを統合して各アイテムの領域を一部拡張させていく。
【0072】
続いて入力領域生成部708は、生成した入力領域の描画データを所定の記憶領域に格納し(ステップ908)、OS200又はOS200のGUIフレームワークが、ユーザの操作に応じて所定の記憶領域から可視領域の描画データを読み出し、表示装置116の画面上に表示できるようにする。そして処理は終了する。
【0073】
以上、実施形態を用いて本発明の説明をしたが、本発明の技術範囲は上記実施形態に記載の範囲には限定されない。上記の実施形態に、種々の変更又は改良を加えることが可能であることが当業者に明らかである。例えば、上記では日本語や英語のように左から右へ横書きする場合を例に説明したが、書字方向が右から左の場合はアイテムの左側のスペースが空くため、選択領域が左側に確保されるように各アイテムの境界を拡張する。また、本発明の適用対象は、リストボックスに限定されず、ユーザ選択可能な複数のアイテムが並ぶ入力領域であれば、本発明は、
図12A、
図12Bに示すように、テーブルやコンボボックス等の他のオブジェクトに適用可能である。なお、テーブルでは各列のセルを統合する。従って、そのような変更又は改良を加えた形態も当然に本発明の技術的範囲に含まれる。
【0074】
なお、特許請求の範囲、明細書、及び図面中において示した装置、システム、プログラム、及び方法における動作、手順、ステップ、及び段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り任意の順序で実現しうることに留意すべきである。また、前の処理の出力を後の処理で用いる場合でも、前の処理と後の処理の間に他の処理が入ることは可能である場合があること、又は間に他の処理が入るように記載されていても前の処理を後の処理の直前に行うよう変更することも可能である場合があることも留意されたい。特許請求の範囲、明細書、及び図面中の動作フローに関して、便宜上「まず、」、「次に、」、「続いて、」等を用いて説明したとしても、この順で実施することが必須であることを必ずしも意味するとは限らない。