(57)【特許請求の範囲】
【請求項１】
タッチスクリーンと、
タッチ操作により触れられた、前記タッチスクリーン上の領域を検出する検出手段と、
検出された前記領域の位置を水平方向と垂直方向にそれぞれ補正するための水平補正情報と垂直補正情報とを記憶する記憶手段と、
検出された前記領域の前記位置を、前記水平補正情報と前記垂直補正情報を用いて補正する補正手段と、
補正された前記位置に基づき、前記タッチ操作の対象のグラフィカルユーザインタフェイスオブジェクトが前記タッチスクリーン上で占める領域を特定する特定手段と、
第１のタッチ操作と、前記第１のタッチ操作を取り消す取り消し操作と、第２のタッチ操作が順に行われると、前記第１のタッチ操作および前記第２のタッチ操作に応じてそれぞれ特定された第１のオブジェクト領域および第２のオブジェクト領域、ならびに、前記第１のタッチ操作および前記第２のタッチ操作に応じてそれぞれ検出されて位置が補正された第１の接触領域および第２の接触領域の間の幾何学的関係に応じて、前記水平補正情報を更新するか、前記垂直補正情報を更新するか、前記水平補正情報と前記垂直補正情報の双方を更新するか、それとも、前記水平補正情報と前記垂直補正情報のどちらも更新しないかを決定し、決定にしたがい動作する更新手段
を備える情報処理装置。
【請求項２】
前記第１の接触領域と前記第２の接触領域同士が所定の基準に照らして近くにあるとき、前記更新手段は、前記水平補正情報を更新するか否かということと、前記垂直補正情報を更新するか否かということを、前記第１のタッチ操作に対する前記第２のタッチ操作の方向であって前記幾何学的関係に基づいて判定される方向と、前記第２のオブジェクト領域の大きさに基づいて決定し、
前記第１の接触領域と前記第２の接触領域同士が前記所定の基準に照らして遠くに離れているとき、前記更新手段は、前記水平補正情報と前記垂直補正情報のどちらも更新しない
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１の接触領域と前記第２の接触領域同士が前記所定の基準に照らして近くにあり、かつ、前記第１のタッチ操作に対して前記水平方向に近い方向で前記第２のタッチ操作が行われたか否かを判定するための水平配置条件を、前記第１のオブジェクト領域と前記第２のオブジェクト領域と前記第１の接触領域と前記第２の接触領域が満たしている、という第１の場合において、前記更新手段は、前記水平補正情報を更新するか否かを、前記第２のオブジェクト領域の前記水平方向の幅に基づいて決定し、前記垂直補正情報は更新せず、
前記第１の接触領域と前記第２の接触領域同士が前記所定の基準に照らして近くにあり、かつ、前記第１のタッチ操作に対して前記垂直方向に近い方向で前記第２のタッチ操作が行われたか否かを判定するための垂直配置条件を、前記第１のオブジェクト領域と前記第２のオブジェクト領域と前記第１の接触領域と前記第２の接触領域が満たしている、という第２の場合において、前記更新手段は、前記垂直補正情報を更新するか否かを、前記第２のオブジェクト領域の前記垂直方向の高さに基づいて決定し、前記水平補正情報は更新しない
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記第１の場合において、前記更新手段は、
前記第２のオブジェクト領域の前記幅が、前記第１の接触領域と前記第２の接触領域の一方または双方の前記水平方向の幅に応じて決められる第１の閾値以下ならば、前記水平補正情報を更新し、
前記第２のオブジェクト領域の前記幅が、前記第１の閾値を超えるならば、前記水平補正情報を更新せず、
前記第２の場合において、前記更新手段は、
前記第２のオブジェクト領域の前記高さが、前記第１の接触領域と前記第２の接触領域の一方または双方の前記垂直方向の高さに応じて決められる第２の閾値以下ならば、前記垂直補正情報を更新し、
前記第２のオブジェクト領域の前記高さが、前記第２の閾値を超えるならば、前記垂直補正情報を更新しない
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記第１の接触領域と前記第２の接触領域同士が前記所定の基準に照らして近くにあり、かつ、前記第１のオブジェクト領域と前記第２のオブジェクト領域と前記第１の接触領域と前記第２の接触領域が前記水平配置条件も前記垂直配置条件も満たさない、という第３の場合において、前記更新手段は、前記水平補正情報と前記垂直補正情報を更新するか否かを、前記第２のオブジェクト領域の前記幅と前記高さに基づいて決定する
ことを特徴とする請求項３または４に記載の情報処理装置。
【請求項６】
前記更新手段は、
前記水平補正情報をどれくらい更新するかを、前記水平方向における前記第２の接触領域の位置に基づいて決定し、
前記垂直補正情報をどれくらい更新するかを、前記垂直方向における前記第２の接触領域の位置に基づいて決定する
ことを特徴とする請求項１から５のいずれか１項に記載の情報処理装置。
【請求項７】
タッチスクリーンを有するコンピュータに、
タッチ操作により触れられた、前記タッチスクリーン上の領域を検出し、
検出した前記領域の位置を水平方向と垂直方向にそれぞれ補正するための水平補正情報と垂直補正情報を記憶装置から読み出し、
検出した前記領域の前記位置を、前記水平補正情報と前記垂直補正情報を用いて補正し、
補正した前記位置に基づき、前記タッチ操作の対象のグラフィカルユーザインタフェイスオブジェクトが前記タッチスクリーン上で占める領域を特定し、
第１のタッチ操作と、前記第１のタッチ操作を取り消す取り消し操作と、第２のタッチ操作が順に行われると、前記第１のタッチ操作および前記第２のタッチ操作に応じてそれぞれ特定した第１のオブジェクト領域および第２のオブジェクト領域、ならびに、前記第１のタッチ操作および前記第２のタッチ操作に応じてそれぞれ検出して位置を補正した第１の接触領域および第２の接触領域の間の幾何学的関係に応じて、前記水平補正情報を更新するか、前記垂直補正情報を更新するか、前記水平補正情報と前記垂直補正情報の双方を更新するか、それとも、前記水平補正情報と前記垂直補正情報のどちらも更新しないかを決定し、
決定にしたがい動作する
ことを含む処理を実行させるための入力制御プログラム。
【請求項８】
タッチスクリーンを有する情報処理装置が、
タッチ操作により触れられた、前記タッチスクリーン上の領域を検出し、
検出した前記領域の位置を水平方向と垂直方向にそれぞれ補正するための水平補正情報と垂直補正情報を記憶装置から読み出し、
検出した前記領域の前記位置を、前記水平補正情報と前記垂直補正情報を用いて補正し、
補正した前記位置に基づき、前記タッチ操作の対象のグラフィカルユーザインタフェイスオブジェクトが前記タッチスクリーン上で占める領域を特定し、
第１のタッチ操作と、前記第１のタッチ操作を取り消す取り消し操作と、第２のタッチ操作が順に行われると、前記第１のタッチ操作および前記第２のタッチ操作に応じてそれぞれ特定した第１のオブジェクト領域および第２のオブジェクト領域、ならびに、前記第１のタッチ操作および前記第２のタッチ操作に応じてそれぞれ検出して位置を補正した第１の接触領域および第２の接触領域の間の幾何学的関係に応じて、前記水平補正情報を更新するか、前記垂直補正情報を更新するか、前記水平補正情報と前記垂直補正情報の双方を更新するか、それとも、前記水平補正情報と前記垂直補正情報のどちらも更新しないかを決定し、
決定にしたがい動作する
ことを特徴とする入力制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タッチスクリーンを用いた入力に関する。
【背景技術】
【０００２】
近年、タッチスクリーンを有する装置が広く利用されている。タッチスクリーンを介した入力に関する様々な研究も行われている。【０００３】
例えば、重複して押された複数キーの周辺または表示画面全体を拡大させる入力装置が提案されている。また、利用者のタッチパネルへの接触位置と、正規のソフトウェアキーボード上のボタン位置との誤差を自動補正する入力装置も提案されている。さらに、タッチスクリーンが使用されているときに、操作部画像と有効領域との相対関係をリアルタイムに補正することができる構造の、スクリーン駆動装置も提案されている。ほかにも、指のタッチ位置がタッチＵＩ（User Interface）の有効領域から外れたときの誤動作を防止するための方法も提案されている。【０００４】
また、ある情報処理装置は、表示部の表示画面上での指示操作位置をタッチパネルにより検出する。そして、情報処理装置は、「指示操作位置に表示される表示選択項目に対する選択が、ユーザの所望した正しい選択先であるか否か」を、選択後におけるユーザの操作状況から判別する。上記選択が正しい選択先でない場合、情報処理装置は、上記指示位置を、誤った指示位置として記憶する。そして、情報処理装置は、正しい選択先の表示選択項目が表示される位置と、誤った指示位置として記憶された表示位置との差分を、補正データとして記憶する。【０００５】
何らかの入力操作の後に行われる取り消し操作を考慮に入れる技術も提案されている。
例えば、ある画像形成装置は以下のように動作する。ユーザが、タッチパネルに入力してから所定の期間内にリセットボタンを押し下げると、画像形成装置は、タッチパネルの入力を待つ。そして、入力があったとき、画像形成装置は、「当該入力は、前回入力が行われたボタンの隣のボタンに対して行われたのか否か」を判断する。隣のボタンが押し直された場合には、画像形成装置は、一時記憶していた補正情報を消去し、リセットボタンの後に入力されたボタンの補正情報を記憶する。【０００６】
また、情報入力装置におけるキャリブレーションを精度よく、かつ的確な頻度で自律的に実行可能とするための、次のような技術も提案されている。【０００７】
複数の第１画像のうちの１つが第１機会に認識され、次いで到来する第２機会において第２画像が認識される場合があり得る。ここで、複数の第１画像は、情報入力を行うために用いられる画像であり、第２画像は、情報入力を取り消すために用いられる画像である。【０００８】
上記の場合、情報入力装置は、第２機会に次いで到来する第３機会において指定された画像が、第１機会において認識された画像と操作画像の中において隣り合うものであるか否かを判定する。肯定判断がなされた場合、情報入力装置は、第１機会において認識された画像と第３機会において認識された画像の相互の位置関係を示すデータと、肯定判断の累積回数を示すデータと、を記録する。そして、累積回数が所定数に達した場合に、情報入力装置は、位置関係を示すデータに基づいて、位置検出手段から出力される電気信号に対して与えるべき補正値を設定する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平１０−４９３０５号公報
【特許文献２】特開２００８−２４２９５８号公報
【特許文献３】特開２００７−３１０７３９号公報
【特許文献４】特開２０１０−１２８５０８号公報
【特許文献５】特開２００９−９３３６８号公報
【特許文献６】特開２００５−２３８７９３号公報
【特許文献７】特開２０１１−１０７８６４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
タッチスクリーンを有する情報処理装置のユーザビリティを向上させるためには、タッチ操作に応じて検出される領域の位置を補正することが有益である。しかし、補正に使われる補正情報が不適切に固定または更新されると、ユーザビリティはあまり向上しない。場合によっては、補正情報が不適切に固定または更新されることが原因で、むしろユーザビリティが悪化するおそれさえある。補正情報を適切に設定するための技術は発展途上であり、ユーザビリティを向上させる余地がまだ残っている。【００１１】
本発明は、１つの側面では、タッチスクリーンを有する情報処理装置のユーザビリティを向上させることを目的とする。
【課題を解決するための手段】
【００１２】
一態様による情報処理装置は、タッチスクリーン、検出手段、記憶手段、補正手段、特定手段、および更新手段を備える。【００１３】
前記検出手段は、タッチ操作により触れられた、前記タッチスクリーン上の領域を検出する。前記記憶手段は、検出された前記領域の位置を水平方向と垂直方向にそれぞれ補正するための水平補正情報と垂直補正情報とを記憶する。【００１４】
前記補正手段は、検出された前記領域の前記位置を前記水平補正情報と前記垂直補正情報を用いて補正する。前記特定手段は、補正された前記位置に基づき、前記タッチ操作の対象のグラフィカルユーザインタフェイスオブジェクトが前記タッチスクリーン上で占める領域を特定する。【００１５】
第１のタッチ操作と、前記第１のタッチ操作を取り消す取り消し操作と、第２のタッチ操作が順に行われると、前記更新手段は、以下のように動作する。すなわち、前記更新手段は、前記水平補正情報を更新するか、前記垂直補正情報を更新するか、前記水平補正情報と前記垂直補正情報の双方を更新するか、それとも、前記水平補正情報と前記垂直補正情報のどちらも更新しないかを決定し、決定にしたがい動作する。【００１６】
前記更新手段は、第１のオブジェクト領域および第２のオブジェクト領域、ならびに、第１の接触領域および第２の接触領域の間の幾何学的関係に応じて、前記決定を行う。なお、前記第１のオブジェクト領域および前記第２のオブジェクト領域は、前記第１のタッチ操作および前記第２のタッチ操作に応じてそれぞれ特定された領域である。また、前記第１の接触領域および前記第２の接触領域は、前記第１のタッチ操作および前記第２のタッチ操作に応じてそれぞれ検出されて位置が補正された領域である。
【発明の効果】
【００１７】
タッチスクリーンを有する情報処理装置のユーザビリティが向上する。
【図面の簡単な説明】
【００１８】
【図１】端末装置のブロック構成図である。
【図２】第１のタッチ操作と、取り消し操作と、第２のタッチ操作による変化の２つの例を示す図である。
【図３】ＧＵＩオブジェクトの大きさと、ユーザの指がタッチスクリーンに接触する領域の大きさとの間の、相対的な関係について説明する図である。
【図４】コンピュータのハードウェア構成図である。
【図５】補正ＤＢのデータ形式について複数の例を示す図である。
【図６】タッチ操作の検出と座標の補正に関する座標通知処理のフローチャートである。
【図７】補正ＤＢの管理に関して行われる監視処理のフローチャートである。
【図８】補正ＤＢ更新処理のフローチャートである。
【図９】座標系を説明するとともに、２つのＧＵＩオブジェクトの配置に関する複数の例を説明する図である。
【図１０】第１のタッチ操作に対してどの方向で第２のタッチ操作が行われたかを示す角度θについて説明する図である。
【発明を実施するための形態】
【００１９】
以下、実施形態について、図面を参照しながら詳細に説明する。
まず、図１を参照して、端末装置の概要を説明する。次に、図２〜３を参照して、一連のタッチ操作の例や、タッチ操作により触れられる領域の大きさに関して説明する。続いて、図４を参照して、端末装置を実現するハードウェアの例を説明する。
【００２０】
その後、図５を参照して、補正に使われるデータの具体例を説明する。その後、図６〜１０を参照して、端末装置の動作について詳しく説明する。最後に、その他の実施形態および各種実施形態による効果を説明する。
【００２１】
さて、図１は、端末装置のブロック構成図である。図１の端末装置１０は、タッチスクリーン１１を有し、１つ以上のアプリケーション１２を実行する。また、端末装置１０は、位置検出部１３、補正ＤＢ（database）１４、補正管理部１５、および操作検出部１６を有する。
【００２２】
端末装置１０は、一種の情報処理装置である。端末装置１０は、具体的には、デスクトップＰＣ（Personal Computer）、ラップトップＰＣ、タブレットＰＣ、スマートフォン、メディア・プレイヤ、携帯型ゲーム機、携帯電話などの種々の装置のいずれであってもよい。端末装置１０は、後述の図４のコンピュータ２０であってもよい。
【００２３】
タッチスクリーン１１は、出力装置であるディスプレイと、入力装置（具体的にはポインティングデバイス）であるタッチパネルを組み合わせた装置である。ディスプレイ上の位置と、ポインティングデバイスにより指し示される位置との間の位置合わせ（alignment）が適切になされていることが好ましい。
【００２４】
しかし、仮に位置合わせが不十分であったとしても、後述の水平補正情報と垂直補正情報を用いた補正（correction）により、ディスプレイ上の位置と、ポインティングデバイスにより指し示される位置との差は、補償される。ある観点から見れば、水平補正情報と垂直補正情報を用いた補正により、ユーザの入力の癖が補償されるだけでなく、出力装置であるディスプレイと、入力装置であるタッチパネルとの間の位置のずれも、補償される。したがって、以下では説明の簡単化のために、ディスプレイ上の位置と、ポインティングデバイスにより指し示される位置とを区別せずに、単に「位置」または「タッチスクリーン１１上の位置」などと言う。
【００２５】
アプリケーション１２の種類は特に限定されない。端末装置１０は、複数のアプリケーション１２を実行してもよい。
【００２６】
位置検出部１３は、タッチ操作により触れられた、タッチスクリーン１１上の領域を検出する。例えば、ユーザが指でタッチスクリーン１１に触れると、位置検出部１３は、指が触れた領域を検出する。タッチ操作は、例えば、シングルタップ操作であってもよい。タッチ操作の他の例は、ロングタップ操作、ダブルタップ操作、フリック操作などである。
【００２７】
位置検出部１３は、具体的には、タッチ操作により触れられた領域の位置と大きさを検出してもよい。例えば、位置検出部１３は、タッチ操作により触れられた領域の形状を、近似的に所定の形状と見なしてもよい。
【００２８】
所定の形状は、円、楕円、矩形などであってもよい。例えば、所定の形状が矩形の場合、位置検出部１３は、タッチ操作により実際に触れられた領域のバウンディング・ボックス（bounding box）を、「タッチ操作により触れられた領域」として検出してもよい。
【００２９】
ある領域のバウンディング・ボックスとは、当該領域を含み、かつ、水平方向に延びる辺と垂直方向に延びる辺で囲われた、最小の矩形のことである。なお、特に断らない限り、水平方向および垂直方向とは、タッチスクリーン１１の平面内における水平方向および垂直方向のことである。
【００３０】
位置検出部１３は、領域の位置と大きさだけでなく、さらに領域の形状を検出してもよい。
逆に、位置検出部１３は、領域の位置のみを検出してもよい。この場合、位置検出部１３は、近似的に、「位置が検出された領域の大きさは、所定の大きさである」と見なしてもよい。上記所定の大きさは、予め記憶されている１つ以上の値により定まるものとする。
【００３１】
上記１つ以上の値とは、例えば、平均的な指の大きさを示す１つ以上の定数であってもよい。上記１つ以上の値は、例えば、円の直径を示す１つの値でもよく、正方形の１辺の長さを示す１つの値でもよく、幅と高さを示す２つの値でもよい。
【００３２】
あるいは、端末装置１０のユーザは、予め、ユーザに固有の上記１つ以上の値を端末装置１０に登録するための、特別なタッチ操作を行ってもよい。この場合、位置検出部１３は、特別なタッチ操作により触れられたタッチスクリーン１１上の領域の大きさを検出し、検出した大きさを示す１つ以上の値を、記憶装置に記憶する。位置検出部１３は、その後は、個々のタッチ操作によって実際に触れられた領域の大きさを検出する処理を省略してよい。つまり、位置検出部１３は、タッチ操作のたびに領域の大きさを実際に検出する代わりに、記憶した上記１つ以上の値を用いてもよい。
【００３３】
実際の領域の大きさが検出されるにせよ、領域が所定の大きさを持つものと近似的に見なされるにせよ、位置検出部１３は、タッチ操作により触れられた領域の、位置と大きさを補正管理部１５に出力することができる。位置検出部１３は、タッチ操作により触れられたタッチスクリーン１１上の領域を検出する検出手段の一例である。
【００３４】
さて、補正ＤＢ１４は、水平補正情報と垂直補正情報を記憶する。水平補正情報と垂直補正情報は、位置検出部１３により検出された領域の位置を、水平方向と垂直方向にそれぞれ補正するための情報である。領域の位置の補正（correction）とは、換言すれば、位置の調整（adjustment）であり、位置の校正（calibration）である。
【００３５】
１つの値が水平補正情報として使われてもよいし、複数の条件に対応する複数の値を水平補正情報が含んでいてもよい。同様に、１つの値が垂直補正情報として使われてもよいし、複数の条件に対応する複数の値を垂直補正情報が含んでいてもよい。いずれにせよ、補正ＤＢ１４は、水平補正情報と垂直補正情報を記憶する記憶手段の一例である。水平補正情報と垂直補正情報の詳細は、図５とともに後述する。
【００３６】
補正管理部１５は、位置検出部１３により検出された領域の位置を、水平補正情報と垂直補正情報を用いて補正する。つまり、補正管理部１５は、補正ＤＢ１４から水平補正情報と垂直補正情報を読み出し、水平補正情報と垂直補正情報を用いて領域の位置を補正する。そして、補正管理部１５は、補正した位置を、アプリケーション１２と操作検出部１６に通知する。補正管理部１５は、領域の大きさをさらにアプリケーション１２と操作検出部１６の一方または双方に通知してもよい。
【００３７】
あるいは、補正管理部１５は、補正した位置を直接的にはアプリケーション１２にのみ通知してもよい。この場合、操作検出部１６は、補正管理部１５からアプリケーション１２への通知をフックすることにより、補正された位置の情報を取得してもよい。同様に、操作検出部１６は、補正管理部１５からアプリケーション１２への通知をフックすることにより、領域の大きさを示す情報を取得してもよい。
【００３８】
以上説明したように、補正管理部１５は、検出された領域の位置を補正する補正手段の一例である。以下では説明の便宜上、位置検出部１３によって検出されて補正管理部１５によって位置が補正された領域を、「接触領域（contact area）」ともいう。接触領域は、「タッチ操作により触れられた」と見なされる領域である。
【００３９】
操作検出部１６は、補正された位置（すなわち接触領域の位置）に基づき、タッチ操作の対象（target）のＧＵＩ（Graphical User Interface）オブジェクトがタッチスクリーン１１上で占める領域を特定（identify）する。以下では説明の便宜上、ＧＵＩオブジェクトがタッチスクリーン１１上で占める領域を「オブジェクト領域（object area）」ともいう。
【００４０】
なお、処理負荷の軽減のため、操作検出部１６は、タッチ操作の対象のＧＵＩオブジェクトが実際にタッチスクリーン１１で占める領域のバウンディング・ボックスを、オブジェクト領域として特定してもよい。タッチ操作の対象のＧＵＩオブジェクトが矩形以外の形である場合、バウンディング・ボックスをオブジェクト領域として特定することで、処理負荷が軽減される。
【００４１】
ＧＵＩオブジェクトは、「ＧＵＩ部品（GUI component）」、「ＧＵＩウィジェット（GUI widget）」、「ウィジェット」、「ＧＵＩコントロール（GUI control）」、「コントロール」などとも呼ばれる。ＧＵＩオブジェクトの例は、例えば、リンクテキスト（つまり、ハイパーリンクが埋め込まれた文字列）、ボタン（例えば、ハイパーリンクが埋め込まれた画像）、ラジオボタン、チェックボックス、スライダ、ドロップダウンリスト、タブ、メニューなどである。
【００４２】
例えば、あるボタンがタッチスクリーン１１で占める領域内に接触領域が位置しているとき、操作検出部１６は、当該あるボタンをタッチ操作の対象として特定してもよい。つまり、操作検出部１６は、当該あるボタンがタッチスクリーン１１で占めるオブジェクト領域を特定してもよい。操作検出部１６は、特定したオブジェクト領域を補正管理部１５に通知する。
【００４３】
なお、アプリケーション１２で使われる各ＧＵＩオブジェクトは、アプリケーション１２により、適宜のＡＰＩ（Application Programming Interface）を介して、タッチスクリーン１１上にレンダリングされる。操作検出部１６は、例えば、ＧＵＩオブジェクトのレイアウトを取得するための既存のＡＰＩを用いて実現されてもよい。操作検出部１６は、ＡＰＩを介して、各ＧＵＩオブジェクトの位置と大きさを認識することができる。例えば、各ＧＵＩオブジェクトの位置は、各ＧＵＩオブジェクトを代表する点（例えば、中心点または左上端の点など）の位置により表されてもよい。
【００４４】
例えば、操作検出部１６は、１つ以上のＧＵＩオブジェクトそれぞれの位置を、ＡＰＩを介して認識してもよい。そして、操作検出部１６は、認識した各位置に基づいて、補正管理部１５から通知された位置に最も近いＧＵＩオブジェクト（つまり接触領域に最も近いＧＵＩオブジェクト）を調べてもよい。操作検出部１６は、接触領域から、接触領域に最も近いＧＵＩオブジェクトまでの距離が閾値以下のとき、接触領域に最も近いＧＵＩオブジェクトを、タッチ操作の対象として特定してもよい。
【００４５】
以上説明したように、操作検出部１６は、タッチ操作の対象のＧＵＩオブジェクトがタッチスクリーン１１上で占める領域を特定する特定手段の一例である。
【００４６】
さらに、操作検出部１６は、アプリケーション１２を監視することにより、タッチ操作に応じたアプリケーション１２上の操作を検出する。端末装置１０がタッチスクリーン１１以外の入力装置（例えばハードウェアボタンやキーボードなど）を有する場合は、操作検出部１６は、さらに、入力装置からの入力に応じたアプリケーション１２上の操作も検出する。
【００４７】
例えば、アプリケーション１２がウェブブラウザであり、ユーザがウェブページ内のリンクテキストをタップしたとする。この場合、タッチ操作（すなわちタップ操作）に応じて、位置検出部１３が、指の触れた領域を検出し、補正管理部１５が当該領域の位置を補正する。そして、アプリケーション１２は、補正された位置に基づいて、「リンクテキストがタップされた」と認識し、リンクテキストに埋め込まれたハイパーリンクが示すウェブページへのジャンプを実行する。
【００４８】
よって、この場合、「タッチ操作に応じたアプリケーション１２上の操作」とは、具体的には、現在タッチスクリーン１１に表示されているウェブページから別のウェブページへのジャンプである。したがって、この場合、操作検出部１６は、アプリケーション１２を監視することで、「ジャンプ」という操作を検出する。
【００４９】
また、ユーザがその後、ウェブブラウザの「戻る（Back）」ボタンをタップしたとする。この場合も、タッチ操作に応じて、位置検出部１３が、指の触れた領域を検出し、補正管理部１５が当該領域の位置を補正する。その結果、アプリケーション１２は、「戻る」ボタンがタップされたことを認識し、前のウェブページに戻る処理を実行する。
【００５０】
よって、この場合、「タッチ操作に応じたアプリケーション１２上の操作」とは、具体的には、現在タッチスクリーン１１に表示されているウェブページから、前のウェブページに戻る操作である。換言すれば、この場合のアプリケーション１２上の操作は、直前の操作を取り消す（cancel）ための取り消し操作である。取り消し操作は、換言すれば、アンドゥ（undo）操作である。
【００５１】
また、端末装置１０がキーボードを有している場合には、いくつかの所定のキーボードショートカットが設定されていてもよい。例えば、所定のキーが押されると、現在タッチスクリーン１１に表示されているウェブページから、前のウェブページに戻る操作が行われるように、ウェブブラウザが設定されていてもよい。操作検出部１６は、このような所定のキーの押下に応じたアプリケーション１２上の操作も、検出する。
【００５２】
別の例として、アプリケーション１２が階層化メニューを持つ場合もあり得る。この場合、現在の階層よりも上の階層に戻るための所定のＧＵＩオブジェクトに対するタッチ操作が行われると、操作検出部１６は、「取り消し操作が行われた」と検出してもよい。
【００５３】
もちろん、無効な領域（つまり、アプリケーション１２に何らかの処理を実行させるためのＧＵＩオブジェクトが何も配置されていない領域）上でタッチ操作が行われた場合は、アプリケーション１２は、何も処理を実行しない。つまり、補正管理部１５から通知された補正後の位置が無効な領域内にある場合、アプリケーション１２は、何も処理を実行しない。この場合、操作検出部１６も、アプリケーション１２上の操作を何も検出しない。
【００５４】
操作検出部１６は、アプリケーション１２上で操作を検出すると、操作を検出したことを補正管理部１５に通知する。この通知は、補正ＤＢ１４の更新の管理のために使われる。
【００５５】
具体的には、補正管理部１５は、上記のように位置の補正を行うだけでなく、補正ＤＢ１４の更新も管理している。その管理のために、補正管理部１５は、操作検出部１６からの通知を利用する。
【００５６】
より具体的には、補正管理部１５は、「第１のタッチ操作と、第１のタッチ操作を取り消す取り消し操作と、第２のタッチ操作が順に行われたか否か」を、操作検出部１６からの通知に基づいて判断する。換言すれば、補正管理部１５は、「第１のタッチ操作と、第１のタッチ操作を取り消す取り消し操作と、第２のタッチ操作」という特定の操作シーケンスが実行されたか否かを監視する。なお、説明の簡単化のため、ユーザがタッチ操作を取り消すために行う操作のことも「取り消し操作」といい、ユーザが行った取り消し操作に応じてアプリケーション１２が前の操作を取り消すために実行する操作のことも「取り消し操作」という。
【００５７】
第１のタッチ操作と、第１のタッチ操作を取り消す取り消し操作と、第２のタッチ操作が順に行われると、補正管理部１５は、水平補正情報を更新するか、垂直補正情報を更新するか、双方を更新するか、それとも、どちらも更新しないかを決定する。より具体的には、第２のタッチ操作が行われた後、ある時間以内には第２のタッチ操作を取り消す取り消し操作が行われなかった場合、補正管理部１５は、以下に示す４つの方針のいずれを採用するのかを決定する。そして、補正管理部１５は、決定にしたがって動作する。
【００５８】
・水平補正情報を更新し、垂直補正情報を更新しない、という方針。
・垂直補正情報を更新し、水平補正情報を更新しない、という方針。
・水平補正情報と垂直補正情報の双方を更新する、という方針。
・水平補正情報と垂直補正情報のどちらも更新しない、という方針。
【００５９】
具体的には、補正管理部１５は、以下の４つの領域の間の幾何学的関係に応じて、上記４つの方針のいずれを採用するのかを決める。
【００６０】
・第１のタッチ操作に応じて操作検出部１６により特定されたオブジェクト領域。以下では「第１のオブジェクト領域」ともいう。
・第２のタッチ操作に応じて操作検出部１６により特定されたオブジェクト領域。以下では「第２のオブジェクト領域」ともいう。
・第１のタッチ操作に応じて、位置検出部１３により検出されて補正管理部１５により位置が補正された接触領域。以下では「第１の接触領域」ともいう。
・第２のタッチ操作に応じて、位置検出部１３により検出されて補正管理部１５により位置が補正された接触領域。以下では「第２の接触領域」ともいう。
なお、２つ以上の領域間の幾何学的関係には、例えば、以下のような種々の関係がある。
・領域同士の位置関係（例えば、２つの領域間の距離や、２つの領域を代表する点同士の間の距離や、ある１つの領域を基準として別の領域が位置する方向に関する関係など）。
・領域間での、大きさ（例えば、幅、高さ、またはその双方）に関する関係。
・領域同士の重なりに関する関係（例えば、２つの領域が少なくとも部分的には互いに重なるか否か、２つの領域がどれくらい大きく重なっているか、などについての関係）。
【００６１】
具体的にどのような幾何学的関係に基づいて、どのようにして補正管理部１５が決定を下すのかについては、図８〜１０とともに後述する。なお、上記４つの領域間の幾何学的関係には、上記４つの領域同士の間の直接的な関係だけでなく、元の領域の位置および／または大きさに応じて定まる派生的な領域に関する、間接的な関係もあり得る。例えば、４つの領域のうち２つの領域が重なっている第１の重なり領域と、残りの２つの領域が重なっている第２の重なり領域との間の位置関係も、４つの領域の間の幾何学的関係の例である。
【００６２】
ところで、補正管理部１５は、上記のとおり補正手段の一例である。さらに、補正管理部１５は、上記４つの領域の間の幾何学的関係に応じて、水平補正情報を更新するか、垂直補正情報を更新するか、双方を更新するか、それとも、どちらも更新しないかを決定し、決定にしたがって動作する更新手段の一例でもある。
【００６３】
図２は、第１のタッチ操作と、取り消し操作と、第２のタッチ操作による変化の２つの例を示す図である。図２に示す例Ｅ１と例Ｅ２は、いずれも、アプリケーション１２がウェブブラウザである場合の例である。
【００６４】
例Ｅ１において、タッチスクリーン１１にはアプリケーション１２のウィンドウが表示されており、ウィンドウ内には、ウェブページＰ１とツールバーが表示されている。ツールバーは「戻る」ボタンＢＢと「進む」ボタンＦＢを含む。
【００６５】
ウェブページＰ１内には３つのＧＵＩオブジェクト（具体的には３つのボタンＢ１〜Ｂ３）が表示されている。ボタンＢ１〜Ｂ３は、それぞれ、タッチスクリーン１１上でオブジェクト領域Ｇ１〜Ｇ３を占める。
【００６６】
また、以下では説明の簡単化のため、接触領域とオブジェクト領域はいずれも矩形であるものとする。例えば、位置検出部１３は、タッチ操作により実際に触れられた領域のバウンディング・ボックスを検出してもよい。また、操作検出部１６は、タッチ操作の対象のＧＵＩオブジェクトが実際に占める領域のバウンディング・ボックスを検出してもよい。
【００６７】
ユーザが第１のタッチ操作を行うと、第１のタッチ操作により触れられた領域が、位置検出部１３により検出され、検出された領域の位置が、補正管理部１５により補正される。こうして位置が補正された領域が、接触領域Ｃ１である。接触領域Ｃ１は、オブジェクト領域Ｇ１とＧ２の双方と重なっているが、接触領域Ｃ１とオブジェクト領域Ｇ１の重なりの方が、接触領域Ｃ１とオブジェクト領域Ｇ２の重なりより大きい。別の観点から述べれば、接触領域Ｃ１は、オブジェクト領域Ｇ２よりもオブジェクト領域Ｇ１に近い。
【００６８】
補正管理部１５は、接触領域Ｃ１の位置をアプリケーション１２に通知する。例Ｅ１では、補正管理部１５から通知された位置に基づいて、アプリケーション１２は、ボタンＢ１を第１のタッチ操作の対象のＧＵＩオブジェクトとして特定する。
【００６９】
その結果、ステップＳ１０に示すように、アプリケーション１２は、ボタンＢ１に対応づけられた操作を実行する。すなわち、ステップＳ１０でアプリケーション１２は、ボタンＢ１に埋め込まれたハイパーリンクにより指定されるウェブページＰ２を読み込み、ウェブページＰ２をウィンドウ内に表示する。
【００７０】
一方、操作検出部１６も、接触領域Ｃ１の位置を認識する。上述のとおり、補正管理部１５が直接的に接触領域Ｃ１の位置を操作検出部１６に通知してもよいし、補正管理部１５からアプリケーション１２への通知を、操作検出部１６がフックしてもよい。
【００７１】
いずれにせよ、操作検出部１６は、接触領域Ｃ１の位置（すなわち、補正管理部１５からアプリケーション１２へ通知された位置）に基づいて、第１のタッチ操作の対象のＧＵＩオブジェクトが占めるオブジェクト領域を特定する。つまり、操作検出部１６は、オブジェクト領域Ｇ１を特定する。操作検出部１６は、例えば既存のＡＰＩを利用することで、接触領域Ｃ１の位置にボタンＢ１が配置されていること（あるいは、接触領域Ｃ１に最も近いＧＵＩオブジェクトがボタンＢ１であること）を認識してもよい。また、操作検出部１６は、ＡＰＩを介して、ボタンＢ１が占めるオブジェクト領域Ｇ１を認識してもよい。
【００７２】
さらに、操作検出部１６は、アプリケーション１２を監視する。よって、上記のようにしてステップＳ１０でウェブページＰ１からウェブページＰ２へのジャンプがアプリケーション１２により実行されると、操作検出部１６は、当該ジャンプを検出する。こうして検出されるジャンプは、換言すれば、アプリケーション１２上の操作のうち、特定されたオブジェクト領域Ｇ１に配置されているボタンＢ１に対応づけられた操作である。
【００７３】
ジャンプを検出すると、操作検出部１６は、ジャンプの検出を補正管理部１５に通知する。つまり、操作検出部１６は、「第１のタッチ操作に応じて、ウェブページＰ１からウェブページＰ２へのジャンプという操作が、アプリケーション１２上で実行された」ということを、補正管理部１５に通知する。この通知の際、操作検出部１６は、特定したオブジェクト領域Ｇ１の位置と大きさも補正管理部１５に通知する。
【００７４】
ところで、ユーザがもともとボタンＢ１ではなくボタンＢ２をタップするつもりだった場合、ユーザは、ウェブページＰ２を見て、自分が意図した操作が実行されなかったことに気づく。よって、ユーザは、第１のタッチ操作を取り消すための取り消し操作を行う。具体的には、ユーザは、「戻る」ボタンＢＢをタップする。
【００７５】
「戻る」ボタンＢＢに対するタップ操作に関しても、位置検出部１３による位置の検出、および補正管理部１５による位置の補正が行われる。そして、補正管理部１５から接触領域の位置がアプリケーション１２に通知され、アプリケーション１２は、「戻る」ボタンＢＢがタップされたことを認識する。その結果、ステップＳ１１でアプリケーション１２は、ウェブページＰ２からウェブページＰ１へ戻る処理を実行し、ウィンドウには再びウェブページＰ１が表示される。
【００７６】
一方、操作検出部１６は、アプリケーション１２の監視を続けているので、ステップＳ１１でのアプリケーション１２上の操作も検出する。つまり、操作検出部１６は、ステップＳ１０で検出したジャンプを取り消す処理がアプリケーション１２上で実行されたことを検出する。
【００７７】
操作検出部１６は、検出結果を補正管理部１５に通知する。つまり、操作検出部１６は、「ユーザによる取り消し操作に応じて、ウェブページＰ２からウェブページＰ１へ戻る操作が、アプリケーション１２上で実行された」ということを、補正管理部１５に通知する。
【００７８】
ユーザは、再び表示されたウェブページＰ１上で、第２のタッチ操作を行う。具体的には、例Ｅ１では、ユーザはボタンＢ２をタップすることを意図して、第２のタッチ操作を行う。
【００７９】
第２のタッチ操作により触れられた領域が、位置検出部１３により検出され、検出された領域の位置が、補正管理部１５により補正される。こうして位置が補正された領域が、接触領域Ｃ２である。
【００８０】
補正管理部１５は、接触領域Ｃ２の位置をアプリケーション１２に通知する。図２に示すように、接触領域Ｃ２はオブジェクト領域Ｇ１よりもオブジェクト領域Ｇ２に近い。そのため、アプリケーション１２は、ボタンＢ２を第２のタッチ操作の対象のＧＵＩオブジェクトとして特定する。
【００８１】
その結果、ステップＳ１２に示すように、アプリケーション１２は、ボタンＢ２に対応づけられた操作を実行する。すなわち、ステップＳ１２でアプリケーション１２は、ボタンＢ２に埋め込まれたハイパーリンクにより指定されるウェブページＰ３を読み込み、ウェブページＰ３をウィンドウ内に表示する。
【００８２】
一方、操作検出部１６も、接触領域Ｃ２の位置を認識する。そして、操作検出部１６は、接触領域Ｃ２の位置に基づいて、第２のタッチ操作の対象のＧＵＩオブジェクトが占めるオブジェクト領域として、オブジェクト領域Ｇ２を特定する。
【００８３】
また、操作検出部１６はアプリケーション１２を監視しているので、ステップＳ１２でのウェブページＰ１からウェブページＰ３へのジャンプを検出する。ジャンプを検出すると、操作検出部１６は、ジャンプの検出を補正管理部１５に通知する。つまり、操作検出部１６は、「第２のタッチ操作に応じて、ウェブページＰ１からウェブページＰ３へのジャンプという操作が、アプリケーション１２上で実行された」ということを、補正管理部１５に通知する。この通知の際、操作検出部１６は、特定したオブジェクト領域Ｇ２の位置と大きさも補正管理部１５に通知する。
【００８４】
補正管理部１５は、以上のようなステップＳ１０、Ｓ１１、Ｓ１２での操作検出部１６からの通知により、「第１のタッチ操作、第１のタッチ操作を取り消すための取り消し操作、第２のタッチ操作」という一連の操作が順に行われたことを検出する。検出に応じて、補正管理部１５は、水平補正情報を更新するか否か、および、垂直補正情報を更新するか否かを決定する。
【００８５】
具体的には、補正管理部１５は、オブジェクト領域Ｇ１、オブジェクト領域Ｇ２、接触領域Ｃ１、および接触領域Ｃ２の間の幾何学的関係に応じて、決定を下す。詳しくは図８とともに後述するが、例Ｅ１では、補正管理部１５は、水平補正情報を更新し、垂直補正情報を更新しない。なぜなら、補正管理部１５は、「ユーザは、ボタンＢ２（つまり、水平方向においてボタンＢ１の近くにあり、かつ、水平方向の幅が狭いボタン）をタップすることを意図して、第１のタッチ操作を行った」と推測するからである。詳しくは図８とともに後述するとおり、この推測は、具体的には、以下のことに基づく。
【００８６】
・接触領域Ｃ１と接触領域Ｃ２が重なっているので、接触領域Ｃ１と接触領域Ｃ２は十分に近い。
・第１のタッチ操作に対する第２のタッチ操作の方向は、水平方向に近い。
・オブジェクト領域Ｇ２の水平方向の幅は、指の幅（例えば、接触領域Ｃ１の幅、接触領域Ｃ２の幅、または両者の平均値により表される幅）よりも狭い。
【００８７】
ところで、ユーザが触れようと意図したのではないＧＵＩオブジェクトが、第１のタッチ操作の対象のＧＵＩとして特定されてしまった場合以外にも、ユーザが取り消し操作を行う場合があり得る。具体的には、以下のような場合があり得る。
【００８８】
・ユーザが触れようと意図したＧＵＩオブジェクトが、第１のタッチ操作の対象のＧＵＩとして、正しく特定された。
・アプリケーション１２が、第１のタッチ操作に応じた処理を実行した。
・ユーザは、アプリケーション１２の実行結果に満足しなかった。
【００８９】
以上のようにアプリケーション１２の振る舞いが期待はずれだった場合にも、ユーザは取り消し操作を行う可能性がある。
【００９０】
この場合、「第１のタッチ操作、取り消し操作、第２のタッチ操作」という操作シーケンスは、「現在の水平補正情報と垂直補正情報は、まだ十分に適切な状態には至っていない」ということを示唆するものではない。よって、この場合は、補正管理部１５は、水平補正情報も垂直補正情報も更新しないことが望ましい。
【００９１】
例Ｅ２は、水平補正情報も垂直補正情報も更新しないことが望ましい場合の例である。例Ｅ１と同様に、タッチスクリーン１１にはアプリケーション１２のウィンドウが表示されており、ウィンドウ内には、ウェブページＰ１とツールバーが表示されている。
【００９２】
ユーザが第１のタッチ操作を行うと、第１のタッチ操作により触れられた領域が、位置検出部１３により検出され、検出された領域の位置が、補正管理部１５により補正される。こうして位置が補正された領域が、接触領域Ｃ３である。接触領域Ｃ３は、オブジェクト領域Ｇ３と重なっている。
【００９３】
補正管理部１５は、接触領域Ｃ３の位置をアプリケーション１２に通知する。通知に基づき、アプリケーション１２は、ボタンＢ３を第１のタッチ操作の対象のＧＵＩオブジェクトとして特定する。
【００９４】
その結果、ステップＳ２０に示すように、アプリケーション１２は、ボタンＢ３に対応づけられた操作を実行する。すなわち、ステップＳ２０でアプリケーション１２は、ボタンＢ３に埋め込まれたハイパーリンクにより指定されるウェブページＰ４を読み込み、ウェブページＰ４をウィンドウ内に表示する。
【００９５】
一方、操作検出部１６も、接触領域Ｃ３の位置を認識する。そして、操作検出部１６は、接触領域Ｃ３の位置に基づいて、第１のタッチ操作の対象のＧＵＩオブジェクトが占めるオブジェクト領域として、オブジェクト領域Ｇ３を特定する。
【００９６】
また、操作検出部１６はアプリケーション１２を監視しているので、ステップＳ２０でのウェブページＰ１からウェブページＰ４へのジャンプを検出する。ジャンプを検出すると、操作検出部１６は、ジャンプの検出を補正管理部１５に通知する。この通知の際、操作検出部１６は、特定したオブジェクト領域Ｇ３の位置と大きさも補正管理部１５に通知する。
【００９７】
さて、ユーザは、表示されたウェブページＰ４を見て、期待はずれに感じることがある。この場合、ユーザは、より満足のいくウェブページを求めて、「戻る」ボタンＢＢをタップすることがある。
【００９８】
「戻る」ボタンＢＢに対するタップ操作に関しても、位置検出部１３による位置の検出、および補正管理部１５による位置の補正が行われる。そして、補正管理部１５から接触領域の位置がアプリケーション１２に通知され、アプリケーション１２は、「戻る」ボタンＢＢがタップされたことを認識する。その結果、ステップＳ２１でアプリケーション１２は、ウェブページＰ４からウェブページＰ１へ戻る処理を実行し、ウィンドウには再びウェブページＰ１が表示される。
【００９９】
一方、操作検出部１６は、アプリケーション１２の監視を続けているので、ステップＳ２１でのアプリケーション１２上の操作も検出する。つまり、操作検出部１６は、ステップＳ２０で検出したジャンプを取り消す処理がアプリケーション１２上で実行されたことを検出する。そして、操作検出部１６は、検出結果を補正管理部１５に通知する。
【０１００】
ユーザは、再び表示されたウェブページＰ１上で、第２のタッチ操作を行う。具体的には、例Ｅ２では、ユーザはボタンＢ２をタップすることを意図して、第２のタッチ操作を行う。
【０１０１】
第２のタッチ操作により触れられた領域が、位置検出部１３により検出され、検出された領域の位置が、補正管理部１５により補正される。こうして位置が補正された領域が、接触領域Ｃ４である。
【０１０２】
補正管理部１５は、接触領域Ｃ４の位置をアプリケーション１２に通知する。図２に示すように、接触領域Ｃ４はオブジェクト領域Ｇ１よりもオブジェクト領域Ｇ２に近く、接触領域Ｃ４の中心はオブジェクト領域Ｇ２の内部に位置している。そのため、アプリケーション１２は、ボタンＢ２を第２のタッチ操作の対象のＧＵＩオブジェクトとして特定する。
【０１０３】
その結果、ステップＳ２２に示すように、アプリケーション１２は、ボタンＢ２に対応づけられた操作を実行する。すなわち、ステップＳ２２でアプリケーション１２は、例Ｅ１におけるステップＳ１２と同様に、ウェブページＰ３をウィンドウ内に表示する。
【０１０４】
一方、操作検出部１６も、接触領域Ｃ４の位置を認識する。そして、操作検出部１６は、接触領域Ｃ４の位置に基づいて、第２のタッチ操作の対象のＧＵＩオブジェクトが占めるオブジェクト領域として、オブジェクト領域Ｇ２を特定する。
【０１０５】
また、操作検出部１６はアプリケーション１２を監視しているので、ステップＳ２２でのウェブページＰ１からウェブページＰ３へのジャンプを検出する。ジャンプを検出すると、操作検出部１６は、ジャンプの検出を補正管理部１５に通知する。この通知の際、操作検出部１６は、特定したオブジェクト領域Ｇ２の位置と大きさも補正管理部１５に通知する。
【０１０６】
補正管理部１５は、以上のようなステップＳ２０、Ｓ２１、Ｓ２２での操作検出部１６からの通知により、「第１のタッチ操作、第１のタッチ操作を取り消すための取り消し操作、第２のタッチ操作」という一連の操作が順に行われたことを検出する。検出に応じて、補正管理部１５は、水平補正情報を更新するか否か、および、垂直補正情報を更新するか否かを決定する。
【０１０７】
詳しくは図８とともに後述するが、例Ｅ２では、補正管理部１５は、水平補正情報も垂直補正情報も更新しない。なぜなら、接触領域Ｃ３と接触領域Ｃ４が離れているからである。
【０１０８】
接触領域Ｃ３と接触領域Ｃ４が離れているので、補正管理部１５は、「ユーザは、ボタンＢ３をタップすることを意図して第１のタッチ操作を行い、ボタンＢ２をタップすることを意図して第２のタッチ操作を行った」と推測する。つまり、補正管理部１５は、「ユーザは、異なる意図をもって第１のタッチ操作と第２のタッチ操作を行った」と推測する。この場合、水平補正情報および／または垂直補正情報の更新は、かえってユーザビリティの低下を招くおそれがあるので、補正管理部１５は、水平補正情報も垂直補正情報も更新しない。
【０１０９】
続いて、図３を参照して、ＧＵＩオブジェクトの大きさと、ユーザの指がタッチスクリーンに接触する領域の大きさとの間の、相対的な関係について説明する。
【０１１０】
図３にはウェブページＰ１０とＰ２０が例示されている。ウェブページＰ１０には、５つのＧＵＩオブジェクト（具体的にはリンクテキストＬ１０〜Ｌ１４）が含まれ、ウェブページＰ２０にも５つのＧＵＩオブジェクト（具体的にはリンクテキストＬ２０〜Ｌ２４）が含まれる。以下では、リンクテキストを単にリンクともいう。リンクＬ１０〜Ｌ１４とＬ２０〜Ｌ２４がタッチスクリーン１１上で占める領域は、図３では、オブジェクト領域Ｇ１０〜Ｇ１４とＧ２０〜Ｇ２４として示されている。
【０１１１】
図３の例では、オブジェクト領域Ｇ１１〜Ｇ１４は互いに近くにある。具体的には、オブジェクト領域Ｇ１１とＧ１２は水平方向に隣接しており、オブジェクト領域Ｇ１３とＧ１４も水平方向に隣接している。また、オブジェクト領域Ｇ１１とＧ１３は垂直方向に隣接しており、オブジェクト領域Ｇ１２とＧ１４も垂直方向に隣接している。オブジェクト領域Ｇ１１とＧ１４は斜めの方向において近く、オブジェクト領域Ｇ１２とＧ１３も斜めの方向において近い。しかし、オブジェクト領域Ｇ１０は、他のオブジェクト領域Ｇ１１〜Ｇ１４とは離れている。
【０１１２】
より具体的には、２つの領域同士が近いか否かは、ユーザの指がタッチスクリーン１１に接触する領域の大きさ（より正確には、タッチ操作に応じて位置検出部１３が認識する領域の大きさ）を基準にして判断される。図３には、ユーザの指がタッチスクリーン１１に接触する領域の大きさを示すために、接触領域Ｃ１０が例示されている。
【０１１３】
接触領域Ｃ１０は、オブジェクト領域Ｇ１０より大きい。よって、ユーザがリンクＬ１０をタップしようとすると、ユーザの指はオブジェクト領域Ｇ１０からはみ出てしまう。
【０１１４】
しかし、ユーザがリンクＬ１０をタップしようとした場合に、他のリンク（例えば、リンクＬ１０に最も近いリンクＬ１４）がタッチ操作の対象のＧＵＩオブジェクトとして特定されてしまうほどには、接触領域Ｃ１０は大きくない。換言すれば、接触領域Ｃ１０の大きさを基準にすると、オブジェクト領域Ｇ１０は、他のオブジェクト領域Ｇ１１〜Ｇ１４のいずれからも十分に離れている。
【０１１５】
他方、接触領域Ｃ１０の大きさを基準にすると、オブジェクト領域Ｇ１１〜Ｇ１４は、互いに十分に近い。接触領域Ｃ１０は、単にオブジェクト領域Ｇ１１〜Ｇ１４の各々よりも大きいだけでなく、ユーザがタップしようとしたリンク以外のリンクがタッチ操作の対象のＧＵＩオブジェクトとして特定されてしまうほどに大きい。
【０１１６】
例えば、ユーザがリンクＬ１１をタップしようとしてタッチスクリーン１１に触れると、もちろん、「ユーザの意図どおりに、オブジェクト領域Ｇ１１が、タッチ操作の対象のＧＵＩオブジェクトとして特定される」という可能性もある。しかし、接触領域Ｃ１０はオブジェクト領域Ｇ１１より大きいので、「ユーザの意図しないリンクが、タッチ操作の対象のＧＵＩオブジェクトとして特定される」という可能性もある。
【０１１７】
例えば、接触領域Ｃ１０の大きさ（具体的には水平方向の幅）を基準とすると、オブジェクト領域Ｇ１２は、水平方向において十分にオブジェクト領域Ｇ１１に近い。また、接触領域Ｃ１０の大きさ（具体的には垂直方向の高さ）を基準とすると、オブジェクト領域Ｇ１３は、垂直方向においてに十分にオブジェクト領域Ｇ１１に近い。同様に、接触領域Ｃの大きさ（具体的には幅と高さ）を基準とすると、オブジェクト領域Ｇ１４は、水平方向と垂直方向の双方において十分にオブジェクト領域Ｇ１１に近い。そのため、ユーザがリンクＬ１１をタップしようとしてタッチスクリーン１１に触れると、オブジェクト領域Ｇ１２〜Ｇ１４のいずれかが、タッチ操作の対象のＧＵＩオブジェクトとして特定されてしまうことも、大いにあり得る。
【０１１８】
以上の例示から分かるように、オブジェクト領域が大きいか否かは、接触領域の大きさを基準にして判断される。また、２つの領域同士が近いか否かも、接触領域の大きさを基準にして判断される。
【０１１９】
ここで、ウェブページＰ１０との対比のために、ウェブページＰ２０の例を参照する。ウェブページＰ２０内のオブジェクト領域Ｇ２０〜Ｇ２４のレイアウトは、ウェブページＰ１０内のオブジェクト領域Ｇ１０〜Ｇ１４のレイアウトと相似である。
【０１２０】
また、ウェブページＰ２０上には、ユーザの指がタッチスクリーン１１に接触する領域の大きさ（より正確には、タッチ操作に応じて位置検出部１３が認識する領域の大きさ）を示すために、接触領域Ｃ２０が例示されている。
【０１２１】
ウェブページＰ１０とＰ２０は、同じ大きさでもよいし、違う大きさでもよい。いずれにせよ、ある領域が大きいか否かは、接触領域の大きさとの相対比較により判断され、２つの領域同士が近いか否かも、接触領域の大きさを基準に判断される。したがって、ウェブページＰ１０とＰ２０の間には、以下のような違いがある。
【０１２２】
ウェブページＰ１０では、オブジェクト領域Ｇ１０〜Ｇ１４の各々が、接触領域Ｃ１０よりも小さい。それに対し、ウェブページＰ２０では、オブジェクト領域Ｇ２０〜Ｇ２４の各々が、接触領域Ｃ２０よりも大きい。よって、例えば、ユーザがリンクＬ２１をタップしようとしてタッチスクリーン１１に触れる場合、ユーザの意図に反して他のリンクがタッチ操作の対象のＧＵＩオブジェクトとして特定される可能性は、無視して差し支えない。
【０１２３】
また、ウェブページＰ１０では、接触領域Ｃ１０の大きさを基準にすると、オブジェクト領域Ｇ１１〜Ｇ１４が互いに近くにある。ウェブページＰ１０において、接触領域Ｃ１０の大きさを基準にして、他のオブジェクト領域から十分に離れているのは、オブジェクト領域Ｇ１０のみである。よって、ウェブページＰ１０では、ユーザがタッチしようと意図していないリンクが、タッチ操作の対象のＧＵＩオブジェクトとして特定される蓋然性は、比較的高い。
【０１２４】
それに対し、ウェブページＰ２０では、接触領域Ｃ２０の大きさを基準にすると、オブジェクト領域Ｇ２０〜Ｇ２４は、互いに十分に離れている。よって、ウェブページＰ２０では、ユーザがタッチしようと意図していないリンクが、タッチ操作の対象のＧＵＩオブジェクトとして特定される蓋然性は、無視して差し支えないほどに低い。
【０１２５】
例えば、オブジェクト領域Ｇ２１とＧ２２の間隔の幅は、接触領域Ｃ２０の幅よりは狭い。しかし、リンクＬ２１をタップしようとするユーザが、わざわざリンクＬ２１の右端付近の紛らわしい位置に触れることは考えにくい。また、オブジェクト領域Ｇ２１とＧ２２の中心同士の距離は、接触領域Ｃ２０の幅よりも十分に大きい。
【０１２６】
よって、「ユーザがリンクＬ２１をタッチしようと意図したのに、タッチ操作の対象のＧＵＩオブジェクトとしてリンクＬ２２が特定されてしまう」といった蓋然性は、無視して差し支えないほどに低い。つまり、接触領域Ｃ２０の大きさを基準にすると、オブジェクト領域Ｇ２１とＧ２２は十分に離れている。同様に、オブジェクト領域Ｇ２１はオブジェクト領域Ｇ２３やＧ２４からも十分に離れている。
【０１２７】
以上、ウェブページＰ１０とＰ２０に関して例示したように、領域の大きさや、領域間の距離は、本実施形態では、接触領域の大きさに基づいて判断される。
【０１２８】
続いて、図４を参照して、図２の端末装置１０を実現するためのハードウェアの例を説明する。上記のとおり、端末装置１０は、例えば、デスクトップＰＣ、ラップトップＰＣ、タブレットＰＣ、スマートフォン、メディア・プレイヤ、携帯型ゲーム機、携帯電話などの種々の装置のいずれであってもよい。ある観点から見れば、これら種々の装置は、いずれも、コンピュータの一種である。つまり、端末装置１０は、図４のようなコンピュータ２０により実現されてもよい。
【０１２９】
コンピュータ２０は、ＣＰＵ（Central Processing Unit）２１とチップセット２２を有する。コンピュータ２０内の各種コンポーネントは、バスとチップセット２２を介してＣＰＵ２１に接続される。具体的には、チップセット２２には、メモリ２３、タッチスクリーン２４、および不揮発性記憶装置２５が接続される。
【０１３０】
また、コンピュータ２０は、タッチスクリーン２４以外の入力装置２６をさらに有していてもよい。コンピュータ２０は、ネットワーク３０を介して他の装置との間でデータを送受信するための通信インタフェイス２７を、さらに有していてもよい。コンピュータ２０は、記憶媒体４０のリーダ／ライタ２８をさらに有していてもよい。なお「リーダ／ライタ」とは「リーダおよびライタ」の意味である。入力装置２６、通信インタフェイス２７、およびリーダ／ライタ２８も、チップセット２２に接続されていてよい。
【０１３１】
ＣＰＵ２１は、シングルコアまたはマルチコアのプロセッサである。コンピュータ２０は、２台以上のＣＰＵ２１を有してもよい。メモリ２３は、例えばＤＲＡＭ（Dynamic Random Access Memory）である。ＣＰＵ２１は、プログラムをメモリ２３にロードし、メモリ２３をワーキングエリアとしても利用しながら、プログラムを実行する。
【０１３２】
ＣＰＵ２１が実行するプログラムの一例は、アプリケーション１２である。ＣＰＵ２１が実行するプログラムの他の例は、ＯＳ（Operating System）、デバイスドライバ、ファームウェアなどである。図２の補正管理部１５と操作検出部１６は、ＣＰＵ２１により実現されてもよい。
【０１３３】
タッチスクリーン２４は、図２のタッチスクリーン１１に対応する。タッチスクリーン２４は、タッチ位置を検出するためのセンサとして使われる多数の回路素子を含む。タッチスクリーン２４は、もちろん、出力装置としてのディスプレイも含む。タッチスクリーン２４は、例えば、抵抗膜方式のタッチスクリーン（resistive touchscreen）でもよいし、静電容量方式のタッチスクリーン（capacitive touchscreen）でもよいし、その他の技術を利用したタッチスクリーンでもよい。
【０１３４】
例えば、ＣＰＵ２１は、タッチスクリーン２４から出力される信号に基づいて、ユーザが触れたタッチスクリーン２４上の領域の位置を検出してもよい。実施形態によっては、ＣＰＵ２１は、領域の大きさをさらに検出してもよいし、領域の形状をさらに検出してもよい。
【０１３５】
ＣＰＵ２１は、所定のプログラム（例えば、領域検出用のファームウェア、および／または、タッチスクリーン２４のデバイスドライバ）を実行することで、ユーザが触れたタッチスクリーン２４上の領域の位置などを検出してもよい。つまり、図２の位置検出部１３は、ＣＰＵ２１により実現されてもよい。位置検出部１３は、ハードウェア回路とＣＰＵ２１との組み合わせにより実現されてもよい。
【０１３６】
不揮発性記憶装置２５は、例えば、ＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid-State Drive）、またはその組み合わせでもよい。不揮発性記憶装置２５として、さらにＲＯＭ（Read-Only Memory）が使われてもよい。図２の補正ＤＢ１４は、不揮発性記憶装置２５に記憶されていてもよく、不揮発性記憶装置２５からメモリ２３にコピーされて、メモリ２３に記憶されていてもよい。
【０１３７】
入力装置２６は、例えば、キーボード、ハードウェアスイッチ、ハードウェアボタン、マウスなどである。例えば、特定のアプリケーション１２上での取り消し操作に、ある特定のキー（または２つ以上の特定のキーの組み合わせ）が割り当てられていてもよい。
【０１３８】
通信インタフェイス２７は、具体的には、ネットワーク３０の種類に応じた回路である。コンピュータ２０が２種類以上の通信インタフェイス２７を有していてもよい。
【０１３９】
通信インタフェイス２７は、例えば、有線ＬＡＮ（Local Area Network）インタフェイスでもよいし、無線ＬＡＮインタフェイスでもよい。より具体的には、通信インタフェイス２７は、ＮＩＣ（Network Interface Card）でもよい。オンボード型のネットワークインタフェイスコントローラが、通信インタフェイス２７として使われてもよい。通信インタフェイス２７は、物理層の処理を行う「ＰＨＹチップ」と呼ばれる回路と、ＭＡＣ（Media Access Control）副層の処理を行う「ＭＡＣチップ」と呼ばれる回路を含んでいてもよい。
【０１４０】
３ＧＰＰ（Third Generation Partnership Project）、ＬＴＥ（Long Term Evolution）、ＷｉＭＡＸ（Worldwide Interoperability for Microwave Access）などの無線通信規格にしたがった無線通信回路が、通信インタフェイス２７として使われてもよい。なお、「ＷｉＭＡＸ」は登録商標である。
【０１４１】
記憶媒体４０は、例えば、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスクでもよいし、光磁気ディスクでもよいし、磁気ディスクでもよい。不揮発性の半導体メモリ（例えば、メモリカードやＵＳＢ（Universal Serial Bus）メモリスティックなど）が記憶媒体４０として使われてもよい。
【０１４２】
リーダ／ライタ２８は、具体的には、ディスクドライブ装置でもよいし、メモリカード用のカードリーダ／ライタであってもよい。あるいは、ＵＳＢポートと接続されたＵＳＢコントローラが、リーダ／ライタ２８として使われてもよい。
【０１４３】
ＣＰＵ２１が実行する各種のプログラムは、予め不揮発性記憶装置２５にインストールされていてもよい。プログラムは、ネットワーク３０から通信インタフェイス２７を介してダウンロードされて不揮発性記憶装置２５に記憶されてもよい。プログラムは、記憶媒体４０に記憶されていてもよい。記憶媒体４０に記憶されたプログラムは、リーダ／ライタ２８により読み取られて不揮発性記憶装置２５にコピーされてもよい。
【０１４４】
メモリ２３、不揮発性記憶装置２５、および記憶媒体４０は、いずれも、コンピュータ読み取り可能な有形の（tangible）記憶媒体の例である。これらの有形な記憶媒体は、信号搬送波のような一時的な（transitory）媒体ではない。
【０１４５】
続いて、図５を参照して、図２の補正ＤＢ１４のデータ形式について、いくつかの例を説明する。補正ＤＢ１４は、図５に示す補正ＤＢ１４ａ〜１４ｅのいずれかのようなデータ形式のＤＢあってもよいし、他の形式のＤＢであってもよい。
【０１４６】
なお、以下では説明の便宜上、水平方向の座標軸をＸ軸とし、垂直方向の座標軸をＹ軸とする。具体的には、後述の図９に示すように、タッチスクリーン１１の左上端を原点とする。
【０１４７】
タッチスクリーン１１内の位置は、Ｘ座標とＹ座標により表される。例えば、位置検出部１３による位置の検出は、具体的には、Ｘ座標とＹ座標の検出である。補正管理部１５は、Ｘ座標とＹ座標を補正し、補正後のＸ座標とＹ座標をアプリケーション１２に通知する。
【０１４８】
また、以下では、Ｘ方向（つまり水平方向）の補正値を「ΔＸ」と表記し、Ｙ方向（つまり垂直方向）の補正値を「ΔＹ」と表記する。補正値ΔＸは水平補正情報の例であり、補正値ΔＹは垂直補正情報の例である。
【０１４９】
補正ＤＢ１４ａは、１つの補正値ΔＸと１つの補正値ΔＹを記憶するＤＢである。図５には、ΔＸ＝３かつΔＹ＝−２の場合が例示されている。
【０１５０】
補正ＤＢ１４ａが使われる場合、補正管理部１５は、位置検出部１３が検出したＸ座標の値に補正値ΔＸを足すことで、Ｘ座標を補正する。また、補正管理部１５は、位置検出部１３が検出したＹ座標の値に補正値ΔＹを足すことで、Ｙ座標を補正する。
【０１５１】
補正ＤＢ１４ｂは、複数のエントリを持つ。各エントリは、タッチスクリーン１１内のブロックを識別するためのＸ座標とＹ座標のペアと、補正値ΔＸと、補正値ΔＹを含む。
【０１５２】
例えば、０以上の整数ｉとｊに対して、条件（１）を満たす（Ｘ，Ｙ）の範囲が１つのブロックとして定義されてもよい。条件（１）におけるＮｘとＮｙは定数である。
Ｎｘ・ｉ≦Ｘ＜Ｎｘ・（ｉ＋１）  かつ  
Ｎｙ・ｊ≦Ｙ＜Ｎｙ・（ｊ＋１）                （１）
【０１５３】
条件（１）により定義されるブロックが、（Ｎｘ・ｉ，Ｎｙ・ｊ）というＸＹ座標により識別されてもよい。図５には、Ｎｘ＝６４かつＮｙ＝６４の場合に使われる補正ＤＢ１４ｂが例示されている。補正ＤＢ１４ｂ中に例示されている３つのエントリは、以下のことを示す。
【０１５４】
・「６４≦Ｘ＜１２８かつ１９２≦Ｙ＜２５６」という条件により定義されるブロックに対応する補正値ΔＸは、−１である。このブロックに対応する補正値ΔＹは、４である。
・「６４≦Ｘ＜１２８かつ２５６≦Ｙ＜３２０」という条件により定義されるブロックに対応する補正値ΔＸは、０である。このブロックに対応する補正値ΔＹは、３である。
・「１２８≦Ｘ＜１９２かつ２５６≦Ｙ＜３２０」という条件により定義されるブロックに対応する補正値ΔＸは、２である。このブロックに対応する補正値ΔＹは、３である。
【０１５５】
補正ＤＢ１４ｂが使われる場合、補正管理部１５は、位置検出部１３が検出したＸ座標とＹ座標で示される位置が属するブロックに対応する補正値ΔＸとΔＹを使って、Ｘ座標とＹ座標を補正する。例えば、位置検出部１３が（Ｘ，Ｙ）＝（１００，２００）というＸＹ座標を検出した場合、補正管理部１５は、補正値ΔＸとΔＹとして、−１と４という値を用いる。よって、この場合、補正管理部１５は、補正後のＸ座標の値を９９（＝１００−１）と算出し、補正後のＹ座標の値を２０４（＝２００＋４）と算出する。
【０１５６】
補正ＤＢ１４ｃも、複数のエントリを持つ。各エントリは、以下のフィールドを含む。
・タッチスクリーン１１内のブロックを識別するためのＸ座標とＹ座標。
・ＧＵＩオブジェクトの幅と高さの範囲を指定するための２つの値（例えば幅の上限値と高さの上限値）。
・上記ＧＵＩオブジェクトの種類。
・補正値ΔＸと補正値ΔＹ。
【０１５７】
補正ＤＢ１４ｂと比べると、補正ＤＢ１４ｃには３つのフィールドが追加されている。補正ＤＢ１４ｃも、Ｎｘ＝６４かつＮｙ＝６４の場合に関する例である。
【０１５８】
補正ＤＢ１４ｃには、５つのエントリが例示されている。これら５つのエントリは、どれも、位置検出部１３により検出された位置が「３２０≦Ｘ＜３８４かつ１２８≦Ｙ＜１９２」という条件により定義されるブロックに属している場合に使われる補正値ΔＸとΔＹを決めるためのエントリである。より詳しくは、これら５つのエントリは、以下のことを示す。
【０１５９】
・位置検出部１３により検出された位置が、上記ブロックに属しており、かつ、幅が１２以下で高さが１２以下のラジオボタンが配置された領域内に含まれている場合、補正値ΔＸ＝２と補正値ΔＹ＝−３が使われる。
・位置検出部１３により検出された位置が、上記ブロックに属しており、かつ、幅が３６以下で高さが１２以下のリンクテキストが配置された領域に含まれている場合、補正値ΔＸ＝２と補正値ΔＹ＝−２が使われる。
・位置検出部１３により検出された位置が、上記ブロックに属しており、かつ、幅が３６より大きく７２以下で高さが１２以下のリンクテキストが配置された領域に含まれている場合、補正値ΔＸ＝０と補正値ΔＹ＝−２が使われる。
・位置検出部１３により検出された位置が、上記ブロックに属しており、かつ、幅が３６以下で高さが２４以下のドロップダウンリストが配置された領域に含まれている場合、補正値ΔＸ＝１と補正値ΔＹ＝−３が使われる。
・位置検出部１３により検出された位置が上記ブロックに属しており、かつ、当該検出された位置には、何のＧＵＩオブジェクトも配置されていない場合、補正値ΔＸ＝１と補正値ΔＹ＝−２が使われる。
【０１６０】
補正ＤＢ１４ｃが使われる場合、補正管理部１５は、位置検出部１３が検出したＸ座標とＹ座標で示される位置が属するブロックを特定する。また、補正管理部１５は、位置検出部１３が検出した位置（つまり位置検出部１３が検出したＸＹ座標により示される点）を含む領域を占めるようなＧＵＩオブジェクトがあるか否かを、操作検出部１６に問い合わせる。操作検出部１６は、問い合わせに答える。
【０１６１】
具体的には、補正管理部１５から通知されるＸＹ座標が示す点を含む領域を占めるようなＧＵＩオブジェクトがある場合、操作検出部１６は、当該ＧＵＩオブジェクトの幅と高さと種類を補正管理部１５に通知する。逆に、上記のようなＧＵＩオブジェクトがない場合、操作検出部１６は、上記のようなＧＵＩオブジェクトがないことを補正管理部１５に通知する。
【０１６２】
操作検出部１６がＧＵＩオブジェクトの幅と高さと種類を補正管理部１５に通知した場合、補正管理部１５は、上記のように特定したブロックと、操作検出部１６から通知された幅と高さと種類との組み合わせに対応するエントリを探す。そして、補正管理部１５は、見つかったエントリの補正値ΔＸと補正値ΔＹを用いる。
【０１６３】
逆に、上記のようなＧＵＩオブジェクトがないことを操作検出部１６が補正管理部１５に通知した場合、補正管理部１５は、上記のように特定したブロックに対応するエントリのうちで、幅と高さと種類のフィールドに無効な値が設定されているエントリを探す。そして、補正管理部１５は、見つかったエントリの補正値ΔＸと補正値ΔＹを用いる。
【０１６４】
続いて、補正ＤＢ１４ｄについて説明する。補正ＤＢ１４ｄも複数のエントリを持つ。各エントリは、アプリケーションを識別する識別情報と、補正値ΔＸと、補正値ΔＹを含む。補正ＤＢ１４ｄ中に例示されている２つのエントリは、以下のことを示す。
【０１６５】
・「ウェブブラウザ」というアプリケーション名で識別されるアプリケーション１２上でタッチ操作が行われた場合には、補正値ΔＸ＝−３と補正値ΔＹ＝２が使われる。
・「音楽プレイヤ」というアプリケーション名で識別されるアプリケーション１２上でタッチ操作が行われた場合には、補正値ΔＸ＝−５と補正値ΔＹ＝−１が使われる。
【０１６６】
補正ＤＢ１４ｄが使われる場合、補正管理部１５は、タッチ操作の対象のアプリケーション１２を特定し、特定したアプリケーション１２に対応する補正値ΔＸとΔＹを使って、Ｘ座標とＹ座標を補正する。補正管理部１５は、位置検出部１３により検出されたＸ座標とＹ座標を用いて、例えばＯＳまたは適宜のＡＰＩを介して、タッチ操作の対象のアプリケーション１２を特定してもよい。
【０１６７】
補正ＤＢ１４ｅも、複数のエントリを持つ。各エントリは、タッチスクリーン１１内のブロックを識別するためのＸ座標とＹ座標のペアと、補正値ΔＸと、補正値ΔＹと、カウンタを含む。補正ＤＢ１４ｂと比べると、補正ＤＢ１４ｅにはカウンタが追加されている。
【０１６８】
カウンタは、補正管理部１５が補正値ΔＸおよび／または補正値ΔＹを更新する際に、更新後の補正値ΔＸおよび／または補正値ΔＹを計算するために使われる。カウンタを利用した計算については、図８とともに後述する。
【０１６９】
カウンタの値は、当該カウンタを含むエントリに関して、補正値ΔＸおよび／または補正値ΔＹを更新する処理が今までに行われた回数を示す。実施形態によっては、補正ＤＢ１４ｅのようなエントリごとに１つのカウンタの代わりに、エントリごとに２つのカウンタが使われてもよい。つまり、補正値ΔＸが今までに更新された回数を示す第１のカウンタと、補正値ΔＹが今までに更新された回数を示す第２のカウンタが使われてもよい。
【０１７０】
カウンタは、位置検出部１３が検出した位置を補正管理部１５が補正する際には使われない。よって、補正ＤＢ１４ｅが使われる場合、補正管理部１５は、補正ＤＢ１４ｂが使われる場合と同様にして、位置の補正を行う。
【０１７１】
なお、補正ＤＢ１４ａが使われる場合、補正値ΔＸの初期値として０が設定されていてもよく、補正値ΔＹの初期値として０が設定されていてもよい。補正ＤＢ１４ｂ〜１４ｅのように複数のエントリを含む形式の補正ＤＢ１４が使われる場合、各エントリにおいて、補正値ΔＸの初期値として０が設定されていてもよく、補正値ΔＹの初期値として０が設定されていてもよい。
【０１７２】
また、複数のエントリを含む形式の補正ＤＢ１４が使われる場合、初期状態では、必ずしもすべてのエントリが存在していなくてもよい。例えば、補正値ΔＸとΔＹを決めるために補正管理部１５が補正ＤＢ１４を検索する際に、検索条件に合うエントリが見つからなかった場合、補正管理部１５が、検索条件に合う新規エントリを補正ＤＢ１４に追加してもよい。補正管理部１５は、新規エントリの補正値ΔＸとΔＹをともに０に初期化してもよい。
なお、図５に例示した補正ＤＢ１４ａ〜１４ｅ以外の形式の補正ＤＢ１４が使われてもよい。
【０１７３】
例えば、補正ＤＢ１４ｃから、ブロックを識別するためのＸ座標とＹ座標のフィールドが省略されてもよい。補正ＤＢ１４ｃから幅と高さのフィールドが省略されてもよいし、あるいは、補正ＤＢ１４ｃから種類のフィールドが省略されてもよい。
【０１７４】
逆に、補正ＤＢ１４ｄに、ブロックを識別するためのＸ座標とＹ座標のフィールドが追加されてもよい。補正ＤＢ１４ｄに、ＧＵＩオブジェクトの幅と高さを示すフィールドが追加されてもよいし、ＧＵＩオブジェクトの種類を示すフィールドが追加されてもよいし、幅と高さと種類のフィールドすべてが追加されてもよい。換言すれば、ＧＵＩオブジェクト、アプリケーション、またはその両者の組み合わせにより示される機能ごとに、補正値ΔＸとΔＹが定義されていてもよい。
【０１７５】
補正ＤＢ１４ｂと１４ｃの上記の例では、タッチスクリーン１１内の複数のブロックの大きさが一定である。よって、補正ＤＢ１４ｂや１４ｃでは、ブロックを識別するためのフィールドは、Ｘ座標とＹ座標のフィールドだけで十分である。しかし、実施形態によっては、互いに異なる大きさのブロックが定義されてもよい。例えば、タッチスクリーン１１内の各ブロックは、ブロックの左上隅の頂点のＸ座標およびＹ座標、ブロックの幅、ならびにブロックの高さの組み合わせにより、識別されてもよい。もちろん、複数のブロックの間で、ブロックの幅と高さの一方のみが可変であってもよい。例えば、補正ＤＢ１４ｂと１４ｃのいずれも、ブロックを識別するためのフィールドとして、Ｘ座標とＹ座標のフィールドだけでなく、ブロックの幅と高さの一方または双方のフィールドをさらに有するように、変形されてもよい。
【０１７６】
また、補正ＤＢ１４ｅに例示したようなカウンタのフィールドは、他のどの形式の補正ＤＢ１４に追加されてもよい。カウンタのフィールドは、例えば、補正ＤＢ１４ａ、１４ｃ、１４ｄのいずれに追加されてもよい。
【０１７７】
端末装置１０が姿勢センサを有する場合、端末装置１０の姿勢を示すフィールドが補正ＤＢ１４の各エントリに含まれていてもよい。この場合、補正管理部１５は、例えば所定のＡＰＩを介して、端末装置１０の姿勢を示す姿勢情報を取得し、取得した姿勢情報に対応するエントリを補正ＤＢ１４において探す。そして、補正管理部１５は、見つかったエントリの補正値ΔＸとΔＹを使って補正を行う。姿勢情報として、例えば、ピッチ角とロール角の組み合わせが使われてもよい。
【０１７８】
以上、様々に例示したように、補正ＤＢ１４は、単に１つの補正値ΔＸと１つの補正値ΔＹのみを記憶していてもよいし、決められた複数の条件のそれぞれに対応して、水平補正情報と垂直補正情報を記憶していてもよい。上記の決められた複数の条件を、以下では「複数の補正条件」ともいう。１つの補正条件は、図５の例では、補正ＤＢ１４中の１つのエントリに対応する。
【０１７９】
複数の補正条件は、例えば、タッチスクリーン１１上のどこが触れられたかに関する複数の位置的条件であってもよい。補正ＤＢ１４ｂ、１４ｃ、および１４ｅでは、各位置的条件が、ブロックを識別するためのＸ座標とＹ座標のフィールドにより表されている。もちろん、上記のとおり、ブロックを識別するために、ブロックの幅と高さの一方または双方のフィールドがさらに使われてもよい。つまり、各位置的条件が、Ｘ座標とＹ座標のフィールドと、さらに、ブロックの幅と高さの一方または双方のフィールドにより表されてもよい。
【０１８０】
複数の補正条件は、例えば、タッチスクリーンの姿勢に関する複数の姿勢条件であってもよい。例えば、各姿勢条件は、ピッチ角の範囲とロール角の範囲の組み合わせにより表されてもよい。
【０１８１】
複数の補正条件は、例えば、どのアプリケーションを対象としてタッチ操作が行われたのかに関する複数のアプリケーション条件であってもよい。補正ＤＢ１４ｄでは、各アプリケーション条件が、アプリケーションの識別情報により表されている。
【０１８２】
複数の補正条件は、例えば、位置検出部１３が検出する領域と少なくとも一部が重なる領域を占めるＧＵＩオブジェクトの属性に関する複数のオブジェクト条件であってもよい。ＧＵＩオブジェクトの属性は、例えば、幅、高さ、種類、またはそのうち２つ以上の組み合わせにより表されてもよい。補正ＤＢ１４ｃでは、各オブジェクト条件が、幅と高さと種類の組み合わせにより表されている。
【０１８３】
もちろん、複数の補正条件は、複数の位置的条件と、複数の姿勢条件と、複数のアプリケーション条件と、複数のオブジェクト条件のうちの、２種類以上の条件の組み合わせにより表される複数の条件であってもよい。いずれにせよ、補正ＤＢ１４が複数の補正条件のそれぞれに対応して補正値ΔＸと補正値ΔＹを記憶している場合、補正管理部１５は、複数の補正条件のうちの満たされている補正条件に対応する補正値ΔＸとΔＹを用いて補正を行う。
【０１８４】
また、詳しくは図８〜１０とともに後述するとおり、「第１のタッチ操作と取り消し操作と第２のタッチ操作」という操作シーケンスに応じて、補正管理部１５が補正値ΔＸおよび／または補正値ΔＹを更新する場合がある。補正値ΔＸを更新する場合、補正管理部１５は、具体的には、複数の補正条件のうち、第１のタッチ操作の際に満たされていた特定の補正条件に対応する補正値ΔＸを更新する。同様に、補正値ΔＹを更新する場合、補正管理部１５は、具体的には、上記特定の補正条件に対応する補正値ΔＹを更新する。
【０１８５】
続いて、図６〜８のフローチャートおよび図９〜１０を参照して、端末装置１０の動作についてさらに詳しく説明する。
【０１８６】
図６は、座標通知処理のフローチャートである。座標通知処理は、タッチ操作の検出と座標の補正に関する処理であり、ユーザがタッチ操作を行うたびに実行される。
【０１８７】
ステップＳ１０１で位置検出部１３が、タッチ操作により触れられた領域を検出する。位置検出部１３は、タッチ操作により触れられた領域の位置のみを検出してもよい。この場合、位置検出部１３は、タッチ操作により触れられた領域の大きさを、予め記憶されている１つ以上の値により定まる大きさだと見なす。あるいは、位置検出部１３は、領域の位置と大きさを検出してもよいし、領域の位置と大きさと形状を検出してもよい。
【０１８８】
以下では説明の簡単化のため、位置検出部１３は、タッチ操作により触れられた領域のバウンディング・ボックスを検出するものとする。また、後述の図９に示すように、タッチスクリーン１１の左上端をＸＹ座標系の原点とする。位置検出部１３の検出したバウンディング・ボックスは、条件（２）を満たす範囲であるものとする。
Ｘｓ≦Ｘ≦Ｘｅ  かつ  Ｙｓ≦Ｙ≦Ｙｅ      （２）
【０１８９】
位置検出部１３は、検出した領域を示す座標（Ｘｓ，Ｙｓ）および（Ｘｅ，Ｙｅ）を、補正管理部１５に通知する。換言すれば、位置検出部１３は、検出した領域の位置と大きさを補正管理部１５に通知する。位置検出部１３は、座標（Ｘｓ，Ｙｓ）および（Ｘｅ，Ｙｅ）を補正管理部１５に通知することにより、検出した領域の位置を示す座標（Ｘｃ，Ｙｃ）と、検出した領域の幅Ｗと、検出した領域の高さＨを、補正管理部１５に通知する（式（３）〜（６）を参照）。
Ｘｃ＝（Ｘｓ＋Ｘｅ）／２      （３）
Ｙｃ＝（Ｙｓ＋Ｙｅ）／２      （４）
Ｗ＝Ｘｅ−Ｘｓ                （５）
Ｈ＝Ｙｅ−Ｙｓ                （６）
【０１９０】
すると、ステップＳ１０２で補正管理部１５は、Ｘ方向の補正値ΔＸとＹ方向の補正値ΔＹを補正ＤＢ１４から取得する。ステップＳ１０２の処理の詳細は、補正ＤＢ１４のデータ形式による。
【０１９１】
例えば、補正管理部１５は、補正ＤＢ１４ａから補正値ΔＸとΔＹを読み取ってもよい。補正管理部１５は、座標（Ｘｃ，Ｙｃ）が属するブロックに対応する補正値ΔＸとΔＹを、補正ＤＢ１４ｂまたは１４ｅから読み取ってもよい。
【０１９２】
補正管理部１５は、座標（Ｘｃ，Ｙｃ）を含む領域を占めるようなＧＵＩオブジェクトがあるか否かを操作検出部１６に問い合わせ、問い合わせに対する応答に応じた補正値ΔＸとΔＹを、補正ＤＢ１４ｃから読み取ってもよい。補正管理部１５は、タッチ操作の対象のアプリケーション１２を特定し、特定したアプリケーション１２に対応する補正値ΔＸとΔＹを補正ＤＢ１４ｄから読み取ってもよい。
【０１９３】
なお、補正ＤＢ１４ｂまたは１４ｅにおいて、座標（Ｘｃ，Ｙｃ）が属するブロックに対応する補正値ΔＸとΔＹが未登録の場合（つまり当該ブロックに対応するエントリがない場合）、補正管理部１５は、補正値ΔＸとΔＹをそれぞれ０と見なす。同様に、補正ＤＢ１４ｃまたは１４ｄにおいて、上記のような条件に合う補正値ΔＸとΔＹが未登録の場合にも、補正管理部１５は、補正値ΔＸとΔＹをそれぞれ０と見なす。
【０１９４】
以上のように条件に合うエントリが見つからない場合、補正管理部１５は、新規エントリを補正ＤＢ１４に追加する。新規エントリにおける補正値ΔＸとΔＹは、いずれも０に初期化される。
【０１９５】
もちろん、登録されている補正値ΔＸがたまたま０である可能性もある。同様に、登録されている補正値ΔＹがたまたま０である可能性もある。
【０１９６】
続いて、ステップＳ１０３で補正管理部１５は、補正後の座標（Ｘｃ＋ΔＸ，Ｙｃ＋ΔＹ）を算出する。実施形態によっては、補正管理部１５は、補正値ΔＸが０か否かを判断してもよく、補正値ΔＸが０でない場合にのみ「Ｘｃ＋ΔＸ」という加算を実行してもよい。同様に、補正管理部１５は、補正値ΔＹが０か否かを判断してもよく、補正値ΔＹが０でない場合にのみ「Ｙｃ＋ΔＹ」という加算を実行してもよい。
【０１９７】
そして、ステップＳ１０４で補正管理部１５は、補正後の座標（Ｘｃ＋ΔＸ，Ｙｃ＋ΔＹ）をアプリケーション１２と操作検出部１６に通知する。すると、座標通知処理が完了する。
【０１９８】
なお、補正管理部１５は、ステップＳ１０４で補正後の座標（Ｘｃ＋ΔＸ，Ｙｃ＋ΔＹ）をアプリケーション１２だけに通知してもよい。操作検出部１６は、アプリケーション１２への通知をフックすることにより、補正後の座標（Ｘｃ＋ΔＸ，Ｙｃ＋ΔＹ）を認識することができる。
【０１９９】
実施形態によっては、補正管理部１５は、ステップＳ１０３で、座標（Ｘｓ＋ΔＸ，Ｙｓ＋ΔＹ）と（Ｘｅ＋ΔＸ，Ｙｅ＋ΔＹ）を算出してもよい。そして、補正管理部１５は、ステップＳ１０４で、座標（Ｘｓ＋ΔＸ，Ｙｓ＋ΔＹ）と（Ｘｅ＋ΔＸ，Ｙｅ＋ΔＹ）をアプリケーション１２と操作検出部１６に通知してもよい。
【０２００】
なお、補正管理部１５は、後述の図８の補正ＤＢ更新処理のために、位置検出部１３により検出された位置と、補正後の位置と、領域の大きさとを直接的または間接的に示す情報を、例えばメモリ２３上に記憶する。例えば、補正管理部１５は、ステップＳ１０２で取得した補正値ΔＸおよびΔＹと、補正後の座標（Ｘｃ＋ΔＸ，Ｙｃ＋ΔＹ）と、幅Ｗと、高さＨをメモリ２３に記憶してもよい。別の例として、補正管理部１５は、座標（Ｘｃ，Ｙｃ）と（Ｘｓ＋ΔＸ，Ｙｓ＋ΔＹ）と（Ｘｅ＋ΔＸ，Ｙｅ＋ΔＹ）をメモリ２３に記憶してもよい。
【０２０１】
座標（Ｘｓ＋ΔＸ，Ｙｓ＋ΔＹ）と（Ｘｅ＋ΔＸ，Ｙｅ＋ΔＹ）で表される領域は、図１〜２に関して説明した「接触領域」である。換言すれば、接触領域は、座標（Ｘｃ＋ΔＸ，Ｙｃ＋ΔＹ）で表される位置にある、幅Ｗ・高さＨの領域である。
【０２０２】
座標通知処理の完了後、アプリケーション１２は、座標（Ｘｃ＋ΔＸ，Ｙｃ＋ΔＹ）に応じて動作する。例えば、座標（Ｘｃ＋ΔＸ，Ｙｃ＋ΔＹ）が示す位置が、無効な領域（例えば、リンクテキスト以外の通常のテキストが書かれている領域や、ハイパーリンクの埋め込まれていない通常の画像の領域など）に属している場合、アプリケーション１２は何もしない。よって、この場合、操作検出部１６は、アプリケーション１２上の何の操作も検出しない。
【０２０３】
逆に、アプリケーション１２に何らかの処理を実行させるためのＧＵＩオブジェクトが占める領域内に、座標（Ｘｃ＋ΔＸ，Ｙｃ＋ΔＹ）が属している場合、アプリケーション１２は、上記「何らかの処理」を実行する。例えば、以下の３つの条件が成り立つ場合には、アプリケーション１２は、図２のウェブページＰ１からウェブページＰ４へのジャンプを実行する。そして、このジャンプは、操作検出部１６により検出される。
【０２０４】
・アプリケーション１２がウェブブラウザである。
・アプリケーション１２が図２のウェブページＰ１を表示しているときに、補正管理部１５が座標（Ｘｃ＋ΔＸ，Ｙｃ＋ΔＹ）をアプリケーション１２に通知した。
・座標（Ｘｃ＋ΔＸ，Ｙｃ＋ΔＹ）はオブジェクト領域Ｇ３の内部である。
さて、以上説明した座標通知処理とは独立して、補正ＤＢ１４の管理に関する補正ＤＢ管理処理が実行される。補正ＤＢ管理処理は、以下のことを含む。
・「第１のタッチ操作と取り消し操作と第２のタッチ操作」という特定の操作シーケンスが行われたか否かを監視すること。
・特定の操作シーケンスを検出したら、「補正値ΔＸのみを更新するか、補正値ΔＹのみを更新するか、補正値ΔＸとΔＹの双方を更新するか、それとも補正値ΔＸとΔＹのどちらも更新しないのか」を決定すること。
・補正ＤＢ１４の更新に関して、上記決定にしたがって動作すること。
【０２０５】
補正ＤＢ管理処理の具体的な実装は、実施形態に応じて様々であってよい。例えば、アプリケーション１２がウェブブラウザである場合、補正管理部１５は、ウェブブラウザが表示する個々のウェブページごとに別々のプロセスを実行することにより、特定の操作シーケンスを監視してもよい。図７は、ウェブページごとに行われる監視処理のフローチャートである。また、補正管理部１５は、例えば図８のフローチャートにしたがって、補正ＤＢ１４の更新に関する決定を下し、決定にしたがって動作してもよい。
【０２０６】
以下に、図７と図８のフローチャートについて説明する。アプリケーション１２がウェブページを読み込んでウィンドウ内に表示するたびに、補正管理部１５は、当該ウェブページに関して図７の監視処理の実行を開始する。図８の補正ＤＢ更新処理は、特定の操作シーケンスの検出に応じて、図７のステップＳ２０８から呼び出される。
【０２０７】
なお、以下では説明の便宜上、「第１のタッチ操作と取り消し操作と第２のタッチ操作」という特定の操作シーケンスの起点である可能性があるウェブページとして監視されるウェブページを、「対象ウェブページ」という。ある時点では、アプリケーション１２（つまりウェブブラウザ）のウィンドウ内に現在表示されているウェブページ自体が、対象ウェブページである。しかし、詳しくは後述するとおり、現在表示されているのとは別のウェブページが、対象ウェブページである場合もある。
【０２０８】
さて、アプリケーション１２があるウェブページを読み込み、このウェブページをウィンドウ内に表示すると、このウェブページに関して補正管理部１５が図７の監視処理を開始する。つまり、この場合、新たにウィンドウ内に表示されたウェブページが対象ウェブページである。
【０２０９】
例えば、アプリケーション１２が新たなウェブページを表示すると、操作検出部１６が新たなウェブページの表示を検出する。検出に応じて、操作検出部１６は、新たなウェブページが表示されたことを補正管理部１５に通知する。すると、補正管理部１５は、通知に応じて、上記新たなウェブページに関して図７の監視処理を開始する。この場合、上記新たなウェブページが対象ページである。
【０２１０】
ステップＳ２０１で補正管理部１５は、対象ウェブページ内のいずれかのＧＵＩオブジェクト上でのタッチ操作が検出されるまで待つ。なお、ステップＳ２０１の時点では、対象ウェブページは、現在表示されているウェブページである。
【０２１１】
上述したとおり、ユーザが無効な領域でタッチ操作を行うこともあり得る。よって、タッチ操作が必ずアプリケーション１２上の操作を引き起こすとは限らない。一方、タッチ操作に応じて図６の座標通知処理が行われ、その結果としてアプリケーション１２上で何らかの操作が行われると、アプリケーション１２上の操作が操作検出部１６により検出される。そして、操作検出部１６は、検出結果を補正管理部１５に通知する。
【０２１２】
よって、ステップＳ２０１で補正管理部１５は、具体的には、操作検出部１６からの通知を待つ。操作検出部１６からの通知は、操作検出部１６が特定したオブジェクト領域を示す情報を含む。補正管理部１５は、操作検出部１６から通知を受けると、オブジェクト領域を示す情報を、例えばメモリ２３上に記憶する。
【０２１３】
ところで、操作検出部１６から補正管理部１５への通知は、アプリケーション１２上での操作が検出されたときに行われる。また、アプリケーション１２上の操作は、タッチ操作が検出されたときに検出される。そして、タッチ操作のたびに図６の座標通知処理が行われ、接触領域の座標が得られている。
【０２１４】
つまり、あるタッチ操作に応じて特定されたオブジェクト領域には、当該オブジェクト領域に対応する接触領域が存在する。そして、当該オブジェクト領域に対応する接触領域とは、具体的には、上記あるタッチ操作に応じて検出され位置が補正された接触領域のことである。
【０２１５】
補正管理部１５は、オブジェクト領域を示す情報だけでなく、当該オブジェクト領域に対応する接触領域を示す情報も、例えばメモリ２３上に記憶する。図６の座標通知処理に関して説明したとおり、タッチ操作が行われるたびに、補正管理部１５は、位置検出部１３により検出された位置と、補正後の位置と、領域の大きさとを直接的または間接的に示す情報を、例えばメモリ２３上に記憶している。例えば、補正管理部１５は、座標通知処理の際に接触領域に関して記憶した上記情報を、ステップＳ２０１での検出に応じて、オブジェクト領域を示す情報と対応づけてもよい。
【０２１６】
オブジェクト領域と接触領域の対応関係を管理するために、補正管理部１５と操作検出部１６は、適宜の識別情報（例えば、タッチ操作が検出された時刻のタイムスタンプ、またはシーケンス番号など）を利用してもよい。例えば、補正管理部１５からアプリケーション１２および操作検出部１６への通知と、操作検出部１６から補正管理部１５への通知に、識別情報が含まれていてもよい。
【０２１７】
補正管理部１５は、対象ウェブページ内のいずれかのＧＵＩオブジェクト上でのタッチ操作が検出されたことを、操作検出部１６からの通知に基づいて認識すると、ステップＳ２０２で以下のように動作する。
【０２１８】
補正管理部１５は、次のウェブページの監視を開始する。なおここで「次のウェブページ」とは、タッチ操作に応じてアプリケーション１２が新たにウィンドウ内に表示したウェブページのことである。したがって、ステップＳ２０２の時点でウィンドウに表示されているウェブページは、「次のウェブページ」であり、「対象ウェブページ」ではない。
【０２１９】
より具体的には、補正管理部１５は、対象ウェブページに関する監視処理とは別に、次のウェブページに関する監視処理をステップＳ２０２で開始する。例えば、補正管理部１５は、ステップＳ２０２で、次のウェブページに対応する新たなプロセスを生成することにより、次のウェブページに関する監視処理を開始してもよい。
【０２２０】
また、補正管理部１５は、ステップＳ２０２で、対象ウェブページに関するタイマを設定する。例えば、補正管理部１５は、「３秒」などの所定の時間をタイマに設定してもよい。タイマに設定される時間の長さは、定数でもよいし、動的に学習される値であってもよいし、ユーザによって指定される値であってもよい。以下では説明の便宜上、タイマには所定の時間が設定されるものとする。補正管理部１５は、タイマに設定した時間の間、対象ウェブページ用のプロセスをスリープさせてもよい。
【０２２１】
例えば、図２の例Ｅ１において、ウェブページＰ１が対象ウェブページであるとする。ユーザがタッチ操作を行い、タッチ操作に応じて図６の座標通知処理が行われると、接触領域Ｃ１が認識されるとともに、ステップＳ１０のジャンプが実行される。その結果、ウェブページＰ２が表示される。
【０２２２】
このとき、操作検出部１６は、オブジェクト領域Ｇ１を特定し、ジャンプを検出する。そして、操作検出部１６は、オブジェクト領域Ｇ１を示す座標を補正管理部１５に通知するとともに、ジャンプを検出したことを補正管理部１５に通知する。操作検出部１６は、ウェブページＰ１（つまり、タッチ操作が行われたウェブページ）を識別する識別情報をさらに補正管理部１５に通知してもよい。識別情報は、例えばＵＲＩ（Uniform Resource Identifier）であってもよい。
【０２２３】
すると、補正管理部１５は、対象ウェブページ（つまりウェブページＰ１）内のＧＵＩオブジェクト上でのタッチ操作が検出されたことを認識する。よって、補正管理部１５は、ステップＳ２０２で、次のウェブページ（つまりウェブページＰ２）に関する監視処理を開始するとともに、ウェブページＰ１に関してタイマを設定する。
【０２２４】
別の例として、図２の例Ｅ２において、ウェブページＰ１が対象ウェブページであるものとする。この場合、ステップＳ２０のジャンプが行われると、ステップＳ２０２で補正管理部１５は、次のウェブページ（つまりウェブページＰ４）に関する監視処理を開始するとともに、ウェブページＰ１に関してタイマを設定する。
【０２２５】
その後、ステップＳ２０３で補正管理部１５は、所定時間以内に取り消し操作（例えば、「戻る」ボタンＢＢに対するタップ操作）が行われたか否かを判断する。ここでの「所定時間」とは、ステップＳ２０２でタイマに設定された時間である。つまり、補正管理部１５は、第１のタッチ操作が行われてから所定時間以内に、第１のタッチ操作を取り消すための取り消し操作が行われたか否かを判断する。
【０２２６】
対象ウェブページ上で第１のタッチ操作が行われてから所定時間以内に取り消し操作が行われた場合、対象ウェブページに関する監視処理は、ステップＳ２０４へと進む。ステップＳ２０４の時点では、対象ウェブページが再度アプリケーション１２のウィンドウ内に表示されている。
【０２２７】
逆に、対象ウェブページ上で第１のタッチ操作が行われてから所定時間が経過しても取り消し操作が行われなかった場合（すなわち、タイムアウトが生じた場合）、対象ウェブページに関する監視処理は終了する。なお、第１のタッチ操作に応じて表示されたウェブページ（つまり、ステップＳ２０２に関して説明した「次のウェブページ」）に関する監視処理の実行は、継続される。
【０２２８】
例えば、図２の例Ｅ１で、対象ウェブページがウェブページＰ１だとする。また、上記のように第１のタッチ操作に応じてステップＳ１０のジャンプが実行された後、所定時間以内には取り消し操作（つまり「戻る」ボタンＢＢに対するタッチ操作）が行われなかったとする。
【０２２９】
この場合、補正管理部１５は、ウェブページＰ１に関する監視処理を終了する。なぜなら、「第１のタッチ操作の実行から所定時間以内には取り消し操作が行われない」という事実は、「ユーザが触ろうと意図したＧＵＩオブジェクトが、タッチ操作の対象として正しく特定された」ということを示唆するからである。よって、この場合、補正管理部１５は、補正ＤＢ１４を更新することなく、対象ウェブページに関する監視処理を終了する。
【０２３０】
しかし、補正管理部１５は、ウェブページＰ２（つまり現在表示されているウェブページ）に関する監視処理は継続する。なぜなら、ウェブページＰ２上でこれからタッチ操作が行われ、そのタッチ操作を取り消すための取り消し操作がさらに行われ、その後、ウェブページＰ２上で再度タッチ操作が行われる可能性があるからである。
【０２３１】
なお、所定時間よりも長い時間が経過してからウェブページＰ２上で取り消し操作が行われることもあり得る。この場合は、取り消し操作に応じてウェブページＰ１が再度表示されたときに、補正管理部１５がウェブページＰ１に関する監視処理を新たに開始する。
【０２３２】
以下に、ステップＳ２０３の判断のさらなる詳細について例示する。
取り消し操作は、現在表示されているウェブページ上で行われる。ステップＳ２０３の時点で表示されているウェブページは、対象ウェブページとは異なる。例えば、図２の例Ｅ１において、対象ウェブページがウェブページＰ１であり、ウェブページＰ２が現在表示されている場合、ウェブページＰ２に対して取り消し操作が行われる。
【０２３３】
取り消し操作が行われると、操作検出部１６が取り消し操作を検出する。そして、操作検出部１６は、取り消し操作を検出したことを補正管理部１５に通知する。このとき、操作検出部１６は、取り消し操作が行われたウェブページ（つまり現在表示されているウェブページ）を識別する識別情報を、補正管理部１５に通知してもよい。
【０２３４】
補正管理部１５は、操作検出部１６からの通知を受け取ると、取り消し操作が行われたことを認識する。例えば、上記のように各ウェブページごとに補正管理部１５が別々のプロセスで監視処理を実行する場合、補正管理部１５は、操作検出部１６からの通知に応じて以下のように動作してもよい。
【０２３５】
補正管理部１５は、取り消し操作が行われたウェブページに関するプロセスから、親プロセスを起こす（あるいは親プロセスにシグナルを送る）。ステップＳ２０２の説明から分かるように、親プロセスは、取り消し操作が行われたウェブページの直前に表示されていたウェブページに関するプロセスである。そして、補正管理部１５は、取り消し操作が行われたウェブページに関するプロセスを終了する。
【０２３６】
例えば、図２の例Ｅ１においてウェブページＰ２上で「戻る」ボタンＢＢがタップされた場合、補正管理部１５は、ウェブページＰ２に関するプロセスから、ウェブページＰ１に関するプロセスを起こす。また、この場合、補正管理部１５は、ウェブページＰ２に関するプロセスを終了させる。
【０２３７】
なお、より正確には、第１のタッチ操作から所定時間が経過した後に取り消し操作が行われた場合は、ウェブページＰ１に関するプロセスは既にタイムアウトして終了している。つまり、この場合、ウェブページＰ１に関するスリープ中のプロセスは存在しない。よって、この場合、補正管理部１５は、ウェブページＰ１に関するスリープ中のプロセスを起こす代わりに、新たにウェブページＰ１に関するプロセスを生成し、開始する。
【０２３８】
一方、補正管理部１５は、上記の親プロセスにおいてステップＳ２０３の判断を実行する。つまり、補正管理部１５は、取り消し操作に応じて起こされた（あるいは取り消し操作に応じてシグナルを受け取った）プロセスにおいて、ステップＳ２０３の判断を実行する。
【０２３９】
例えば、図２の例Ｅ１において、ステップＳ１０のジャンプから所定時間以内にウェブページＰ２上で取り消し操作が行われたとする。この場合、補正管理部１５は、ウェブページＰ１に関するプロセス中の、起床後のステップＳ２０３において、「所定時間以内に取り消し操作が行われた」と判断する。つまり、親プロセスがステップＳ２０２で設定した時間が経過する前に、親プロセスが子プロセスから起こされた場合には、親プロセスのステップＳ２０３で「所定時間以内に取り消し操作が行われた」と判断される。
【０２４０】
もちろん、以上説明したステップＳ２０３の詳細は、実装の一例にすぎない。実施形態に応じて適宜他の実装方法が採用されてよい。しかし、いずれにせよ、第１のタッチ操作の実行から所定時間以内に取り消し操作が行われると、ステップＳ２０４で補正管理部１５は、再び対象ウェブページに関するタイマを設定する。
【０２４１】
ステップＳ２０４でタイマに設定される時間は、ステップＳ２０２で設定される時間と同じでもよいし、異なっていてもよい。また、タイマに設定される時間の長さは、定数でもよいし、動的に学習される値であってもよいし、ユーザによって指定される値であってもよい。以下では説明の便宜上、タイマには所定の時間が設定されるものとする。
【０２４２】
ところで、図７の監視処理とは独立して、ユーザがタッチ操作を行うたびに図６の座標通知処理が実行される。よって、ステップＳ２０４の実行後、補正管理部１５は、操作検出部１６から通知を受ける可能性がある。
【０２４３】
具体的には、第２のタッチ操作に応じて図６の座標通知処理が行われ、その結果としてアプリケーション１２上で何らかの操作が行われ、アプリケーション１２上の操作が操作検出部１６により検出される、という場合がある。この場合、操作検出部１６は、検出結果を補正管理部１５に通知する。操作検出部１６からの通知は、操作検出部１６が特定した第２のオブジェクト領域を示す情報を含む。
【０２４４】
補正管理部１５は、操作検出部１６からの通知によって、対象ウェブページ上での第２のタッチ操作を認識する。また、補正管理部１５は、操作検出部１６から通知を受けると、第２のオブジェクト領域を示す情報を、例えばメモリ２３上に記憶する。ステップＳ２０１での第１のタッチ操作の検出に応じた動作と同様に、補正管理部１５は、第２のタッチ操作の検出に応じて、第２のオブジェクト領域に対応する第２の接触領域を示す情報も、例えばメモリ２３上に記憶する。
【０２４５】
以上のように、補正管理部１５は、操作検出部１６から通知を受ける可能性がある。よって、ステップＳ２０５で補正管理部１５は、取り消し操作から所定時間以内に対象ウェブページ内のいずれかのＧＵＩオブジェクト上でのタッチ操作が検出されたか否かを判断する。つまり、補正管理部１５は、第１のタッチ操作を取り消すための取り消し操作が行われてから所定時間以内に、第２のタッチ操作が行われたか否かを、操作検出部１６からの通知の有無に基づいて判断する。ここでの「所定時間」とは、ステップＳ２０４でタイマに設定された時間である。
【０２４６】
取り消し操作が行われてから所定時間以内に対象ウェブページ上で第２のタッチ操作が行われた場合、対象ウェブページに関する監視処理は、ステップＳ２０６へと進む。つまり、ステップＳ２０４で設定されたタイマがタイムアウトする前に、操作検出部１６が第２のタッチ操作に関する検出結果を補正管理部１５に通知すれば、補正管理部１５は、次にステップＳ２０６を実行する。
【０２４７】
例えば、図２の例Ｅ１において、対象ウェブページがウェブページＰ１だとする。また、ステップＳ１１に示す取り消し操作から所定の時間以内に、第２のタッチ操作が行われたとする。この場合、操作検出部１６は、オブジェクト領域Ｇ２を特定し、ステップＳ１２のジャンプを検出する。そして、操作検出部１６は、アプリケーション１２上での操作を検出したこと、および、オブジェクト領域Ｇ２を表す情報を、補正管理部１５に通知する。
【０２４８】
したがって、この場合、補正管理部１５は、操作検出部１６からの通知に基づいて、「第１のタッチ操作、取り消し操作、第２のタッチ操作」という特定の操作シーケンスが実行されたことを認識する。ただし、第２のタッチ操作を取り消すための第２の取り消し操作がさらにこれから行われる可能性もある。仮に第２の取り消し操作が行われた場合、取り消された第２のタッチ操作を含む上記操作シーケンスに基づいて補正ＤＢ１４を更新することは、不適切である。よって、補正管理部１５は、補正ＤＢ１４の不適切な更新を防ぐために、後述のステップＳ２０６〜Ｓ２０７を実行する。
【０２４９】
逆に、第１のタッチ操作を取り消すための取り消し操作が行われてから所定時間が経過しても、対象ウェブページ上で第２のタッチ操作が行われない場合もあり得る。つまり、ステップＳ２０４で設定されたタイマがタイムアウトする場合もあり得る。この場合、対象ウェブページに関する監視処理は、ステップＳ２０５からステップＳ２０１へと戻る。理由は以下のとおりである。
【０２５０】
仮に、ユーザが触れようと意図したＧＵＩオブジェクトとは異なるＧＵＩオブジェクトが、第１タッチ操作の対象として特定されたとする。この場合、ユーザは、第１のタッチ操作を行う時点で既に、どのＧＵＩオブジェクトに触れるつもりなのか、意思を固めている。よって、この場合、取り消し操作から第２のタッチ操作までの時間は短いと想定される。
【０２５１】
逆の観点から言えば、取り消し操作から第２のタッチ操作までの時間が長い場合は、「ユーザが第１のタッチ操作のやり直しのために第２のタッチ操作を行った」という蓋然性は低い。つまり、取り消し操作から第２のタッチ操作までの時間が長い場合は、「ユーザは、第１のタッチ操作と第２のタッチ操作を、別々の意図を持って行った」という蓋然性が高い。よって、取り消し操作から第２のタッチ操作までの時間が長い場合に補正ＤＢ１４を更新することは、不適切である。そのため、ステップＳ２０４で設定されたタイマがタイムアウトした場合には、監視処理はステップＳ２０５からステップＳ２０１へと戻る。
【０２５２】
なお、補正管理部１５は、ステップＳ２０４においてタイマに設定した時間の間、対象ウェブページ用のプロセスをスリープさせてもよい。タイムアウトによってプロセスが起床した場合、監視処理はステップＳ２０５からステップＳ２０１へ戻る。逆に、タイムアウトの前に、操作検出部１６からの通知に応じてプロセスが起こされた場合、監視処理はステップＳ２０５からステップＳ２０６へ進む。
【０２５３】
さて、補正管理部１５は、対象ウェブページ内のいずれかのＧＵＩオブジェクト上での第２のタッチ操作が検出されたことを、操作検出部１６からの通知に基づいて認識すると、ステップＳ２０６で以下のように動作する。なお、ステップＳ２０６〜Ｓ２０７のさらなる詳細については、ステップＳ２０２〜Ｓ２０３と類似なので説明を省略する。
【０２５４】
ステップＳ２０６で、補正管理部１５は、次のウェブページの監視を開始する。なおここで「次のウェブページ」とは、第２のタッチ操作に応じてアプリケーション１２が新たにウィンドウ内に表示したウェブページのことである。したがって、ステップＳ２０６の時点でウィンドウに表示されているウェブページは、「次のウェブページ」であり、「対象ウェブページ」ではない。
【０２５５】
例えば、図２の例Ｅ１において、対象ウェブページがウェブページＰ１だとする。また、ステップＳ１１に示す取り消し操作から所定の時間以内に、第２のタッチ操作が行われ、第２のタッチ操作に応じてステップＳ１２のジャンプが実行されたとする。この場合、ステップＳ２０６での「次のウェブページ」はウェブページＰ３である。
【０２５６】
また、補正管理部１５は、ステップＳ２０６で、対象ウェブページに関するタイマを設定する。ステップＳ２０６でタイマに設定される時間は、ステップＳ２０２および／またはＳ２０４で設定される時間と同じでもよいし、異なっていてもよい。タイマに設定される時間の長さは、定数でもよいし、動的に学習される値であってもよいし、ユーザによって指定される値であってもよい。以下では説明の便宜上、タイマには所定の時間が設定されるものとする。補正管理部１５は、タイマに設定した時間の間、対象ウェブページ用のプロセスをスリープさせてもよい。
【０２５７】
続いて、ステップＳ２０７で補正管理部１５は、所定時間以内に取り消し操作が行われたか否かを判断する。ここでの「所定時間」とは、ステップＳ２０６でタイマに設定された時間である。つまり、補正管理部１５は、第２のタッチ操作が行われてから所定時間以内に、第２のタッチ操作を取り消すための取り消し操作が行われたか否かを判断する。
【０２５８】
対象ウェブページ上で第２のタッチ操作が行われてから所定時間以内に、次のウェブページ上で取り消し操作が行われた場合、対象ウェブページに関する監視処理は、ステップＳ２０７からステップＳ２０１へ戻る。監視処理がステップＳ２０１に戻った時点では、対象ウェブページが再度アプリケーション１２のウィンドウ内に表示されている。
【０２５９】
逆に、対象ウェブページ上で第２のタッチ操作が行われてから所定時間が経過しても取り消し操作が行われなかった場合（すなわち、タイムアウトが生じた場合）、補正管理部１５はステップＳ２０８の補正ＤＢ更新処理を行う。つまり、補正管理部１５は、短い期間内に「第１のタッチ操作、取り消し操作、第２のタッチ操作」という特定の操作シーケンスが行われたことを確認すると、補正ＤＢ更新処理を行う。
【０２６０】
補正ＤＢ更新処理の詳細は図８〜１０とともに後述する。ステップＳ２０８の補正ＤＢ更新処理が終了すると、対象ウェブページに関する図７の監視処理も終了する。なお、第２のタッチ操作に応じて表示されたウェブページ（つまり、ステップＳ２０６に関して説明した「次のウェブページ」）に関する監視処理の実行は、継続される。
【０２６１】
例えば、図２の例Ｅ１において、対象ウェブページがウェブページＰ１であるものとし、ステップＳ１２のジャンプから所定時間以内には取り消し操作が行われなかったものとする。この場合、補正管理部１５はステップＳ２０８の補正ＤＢ更新処理を行う。
【０２６２】
具体的には、補正管理部１５は、以下の４つの領域の情報を使って、図８のフローチャートにしたがって補正ＤＢ更新処理を行う。第１と第２のタッチ操作の検出に関して説明したように、補正管理部１５は、以下の４つの領域を示す情報を、例えばメモリ２３上に記憶している。
【０２６３】
・第１のタッチ操作に応じて図６のステップＳ１０１で検出され、ステップＳ１０３で位置が補正された、接触領域Ｃ１。
・第１のタッチ操作に応じて操作検出部１６が特定した、オブジェクト領域Ｇ１。
・第２のタッチ操作に応じて図６のステップＳ１０１で検出され、ステップＳ１０３で位置が補正された、接触領域Ｃ２。
・第２のタッチ操作に応じて操作検出部１６が特定した、オブジェクト領域Ｇ２。
【０２６４】
なお、各領域を示す情報は、具体的には、例えば、領域の中心点のＸＹ座標と、領域の幅と、領域の高さの組み合わせであってもよい。あるいは、各領域を示す情報は、例えば、領域の左上端の点のＸＹ座標と、領域の右下端の点のＸＹ座標の組み合わせであってもよい。
【０２６５】
また、アプリケーション１２がウェブブラウザ以外である場合にも、補正管理部１５は、図７を適宜変形したフローチャートにしたがって、「第１のタッチ操作、取り消し操作、第２のタッチ操作」という操作シーケンスを監視することができる。
【０２６６】
図８は、補正ＤＢ更新処理のフローチャートである。図８に関する説明においては、適宜、図９と図１０も参照する。図９は、座標系を説明するとともに、２つのＧＵＩオブジェクトの配置に関する複数の例を説明する図である。図１０は、第１のタッチ操作に対してどの方向で第２のタッチ操作が行われたかを示す角度θについて説明する図である。
【０２６７】
以下では、第１のタッチ操作に対応する接触領域とオブジェクト領域を、それぞれ「第１の接触領域」と「第１のオブジェクト領域」という。また、第２のタッチ操作に対応する接触領域とオブジェクト領域を、それぞれ「第２の接触領域」と「第２のオブジェクト領域」という。
【０２６８】
説明の便宜上、第１の接触領域と第２の接触領域は、それぞれ条件（７）と（８）により表される領域であるものとする。図９の例Ｅ３は、第１の接触領域の４隅のＸＹ座標と、Ｘ軸と、Ｙ軸を示す。条件（７）と（８）の中の「Ｘｔ０」等の値は、現在の補正ＤＢ１４内の情報に基づいて補正管理部１５が補正を行うことにより得られた値であることに注意されたい。
Ｘｔ０≦Ｘ≦Ｘｔ１
かつ  Ｙｔ０≦Ｙ≦Ｙｔ１      （７）
Ｘｕ０≦Ｘ≦Ｘｕ１
かつ  Ｙｕ０≦Ｙ≦Ｙｕ１      （８）
【０２６９】
また、説明の便宜上、第１のオブジェクト領域と第２のオブジェクト領域は、それぞれ条件（９）と（１０）により表される領域であるものとする。
Ｘ１０≦Ｘ≦Ｘ１１
かつ  Ｙ１０≦Ｙ≦Ｙ１１      （９）
Ｘ２０≦Ｘ≦Ｘ２１
かつ  Ｙ２０≦Ｙ≦Ｙ２１      （１０）
【０２７０】
さて、図７に示したように、補正管理部１５は、「第１のタッチ操作、取り消し操作、第２のタッチ操作」という特定の操作シーケンスを検出すると、図８の補正ＤＢ更新処理を開始する。補正ＤＢ更新処理では、補正管理部１５は、補正値ΔＸを更新するか否か、および、補正値ΔＹを更新するか否かを決定し、決定したとおりに動作する。
【０２７１】
まず、ステップＳ３０１で補正管理部１５は、第１と第２の接触領域が互いに近いか否かを判断する。例えば、補正管理部１５は、以下のように第１と第２の接触領域の重なりに基づいて判断を下してもよい。
【０２７２】
・第１の接触領域の少なくとも一部と、第２の接触領域の少なくとも一部が重なっているとき（つまり、条件（１１）が成り立つとき）、第１と第２の接触領域は互いに近い。
Ｘｔ０≦Ｘｕ１  かつ  Ｘｔ１≧Ｘｕ０  かつ
Ｙｔ０≦Ｙｕ１  かつ  Ｙｔ１≧Ｙｕ０            （１１）
・第１と第２の接触領域がまったく重なっていないとき（つまり、条件（１１）が成り立たず、条件（１１）の対偶である条件（１２）が成り立つとき）、第１と第２の接触領域は遠く離れている。
Ｘｔ０＞Ｘｕ１  または  Ｘｔ１＜Ｘｕ０  または
Ｙｔ０＞Ｙｕ１  または  Ｙｔ１＜Ｙｕ０          （１２）
【０２７３】
例えば、図２の例Ｅ１では、接触領域Ｃ１とＣ２が部分的に重なっている。よって、補正管理部１５は、「接触領域Ｃ１とＣ２が互いに近い」と判断する。逆に、例Ｅ２では、接触領域Ｃ３とＣ４はまったく重なっていない。よって、補正管理部１５は、「接触領域Ｃ３とＣ４は遠く離れている」と判断する。
【０２７４】
あるいは、ステップＳ３０１で補正管理部１５は、第１と第２の接触領域自体の重なりではなく、拡大された第１と第２の接触領域同士の重なりに基づいて判断を下してもよい。
【０２７５】
例えば、Ｘ方向のマージンを定める適宜の正の値をｗとし、Ｙ方向のマージンを定める適宜の正の値をｈとする。第１の接触領域の周囲に幅ｗ・高さｈで設定される第１のマージン領域と、第１の接触領域自体との和（union）が、拡大された第１の接触領域である。同様に、第２の接触領域の周囲に幅ｗ・高さｈで設定される第２のマージン領域と、第２の接触領域自体との和が、拡大された第２の接触領域である。
【０２７６】
補正管理部１５は、拡大された第１と第２の接触領域同士の重なりに基づいて、具体的には以下のように判断を下してもよい。
【０２７７】
・拡大された第１の接触領域の少なくとも一部と、拡大された第２の接触領域の少なくとも一部が重なっているとき（つまり、条件（１３）が成り立つとき）、第１と第２の接触領域は互いに近い。
Ｘｔ０−ｗ≦Ｘｕ１＋ｗ  かつ
Ｘｔ１＋ｗ≧Ｘｕ０−ｗ  かつ
Ｙｔ０−ｈ≦Ｙｕ１＋ｈ  かつ  
Ｙｔ１＋ｈ≧Ｙｕ０−ｈ    （１３）
・拡大された第１と第２の接触領域がまったく重なっていないとき（つまり、条件（１３）が成り立たないとき）、第１と第２の接触領域は遠く離れている。
【０２７８】
なお、上記の値ｗとｈは、定数であってもよいし、第１の接触領域と第２の接触領域の一方または双方の大きさに基づく値であってもよい。例えば、第１と第２の接触領域の幅の平均値と、１未満の所定の値（例えば０．１など）との積が、Ｘ方向のマージンを定める値ｗとして使われてもよい。値ｈも、類似の方法で定義されてよい。
【０２７９】
あるいは、ステップＳ３０１で補正管理部１５は、第１の接触領域を代表する点と、第２の接触領域を代表する点との間の距離に基づいて、判断を下してもよい。第１の接触領域を代表する点は、例えば、第１の接触領域の重心（centroid）であってもよい。同様に、第２の接触領域を代表する点は、第２の接触領域の重心であってもよい。つまり、補正管理部１５は、閾値Ｄを用いて、以下のように判断を下してもよい。
【０２８０】
・第１の接触領域の重心と第２の接触領域の重心との間の距離が、閾値Ｄ以下であるとき（つまり、条件（１４）が成り立つとき）、第１と第２の接触領域は互いに近い。
【数１】
0006028861.tif 000002
・第１の接触領域の重心と第２の接触領域の重心との間の距離が、閾値Ｄを超えるとき（つまり、条件（１４）が成り立たないとき）、第１と第２の接触領域は遠く離れている。
【０２８１】
閾値Ｄは、具体的には、第１と第２の接触領域の一方または双方の大きさ（例えば、幅、高さ、面積、またはこれらの２つ以上の組み合わせ）に基づく値である。
【０２８２】
あるいは、ステップＳ３０１で補正管理部１５は、第１と第２の接触領域の重なりの面積など、その他の基準に基づいて判断を下してもよい。いずれにせよ、ステップＳ３０１で補正管理部１５は、第１と第２の接触領域が所定の基準に照らして近くにあるか否かを判断する。
【０２８３】
そして、第１と第２の接触領域が所定の基準に照らして遠くに離れているとき、補正管理部１５は、補正値ΔＸも補正値ΔＹも更新せずに、図８の補正ＤＢ更新処理を終える。例えば、図２の例Ｅ２では、接触領域Ｃ３とＣ４が遠くに離れているので、補正管理部１５は、補正値ΔＸも補正値ΔＹも更新しない。
【０２８４】
逆に、第１と第２の接触領域が所定の基準に照らして近くにあるとき、補正管理部１５は、補正値ΔＸを更新するか否かということを、第１のタッチ操作に対する第２のタッチ操作の方向と、第２のオブジェクト領域の大きさ（例えば幅）に基づいて決める。また、第１と第２の接触領域が所定の基準に照らして近くにあるとき、補正管理部１５は、補正値ΔＹを更新するか否かということを、第１のタッチ操作に対する第２のタッチ操作の方向と、第２のオブジェクト領域の大きさ（例えば高さ）に基づいて決める。
【０２８５】
具体的には、補正管理部１５は、ステップＳ３０１で「第１と第２の接触領域が互いに近い」と判断すると、ステップＳ３０２で、第１のタッチ操作に対する第２のタッチ操作の方向を示す角度を算出する。当該方向の具体的な定義は、実施形態に応じて様々であってよい。当該方向は、図１０では角度θにより表される。角度θは、「どの方向にそってタッチ操作がやり直されたのか」を示す角度の一例である。
【０２８６】
ここで、図１０を参照して角度θについて説明する。角度θは、Ｘ軸を基準として、−９０°から９０°までの範囲で表される角度である。
【０２８７】
図１０には、角度θの絶対値｜θ｜が０°に近い例Ｅ１１と、絶対値｜θ｜が中くらいの例Ｅ１２と、絶対値｜θ｜が９０°に近い例Ｅ１３が示されている。なお、「絶対値｜θ｜が０°に近いか、中くらいか、それとも９０°に近いか」ということは、０°より大きく９０°より小さい適宜の２つの閾値により、定義される。例えば、２つの閾値が２０°と７０°の場合の定義を以下に例示する。
【０２８８】
・０°≦｜θ｜＜２０°ならば、絶対値｜θ｜が０°に近い（すなわち、角度θは、Ｘ方向に近い方向を示す）。
・２０°≦｜θ｜≦７０°ならば、絶対値｜θ｜が中くらいである（すなわち、角度θは、Ｘ方向にもＹ方向にも近くない、斜めの方向を示す）。
・７０°＜｜θ｜≦９０°ならば、絶対値｜θ｜が９０°に近い（すなわち、角度θは、Ｙ方向に近い方向を示す）。
【０２８９】
２つの閾値は、実施形態に応じて適宜選ばれてよいが、２つの閾値の和は９０°である。また、上記の例では絶対値｜θ｜は３つに分類されているが、実施形態によっては、絶対値｜θ｜は２つに分類されてもよい。例えば、以下のような定義が採用されてもよい。以下の定義が採用される場合は、後述のステップＳ３０８とＳ３０９が図８のフローチャートから削除される。
【０２９０】
・０°≦｜θ｜＜４５°ならば、絶対値｜θ｜が０°に近い（すなわち、角度θは、Ｘ方向に近い方向を示す）。
・４５°≦｜θ｜≦９０°ならば、絶対値｜θ｜が９０°に近い（すなわち、角度θは、Ｙ方向に近い方向を示す）。
【０２９１】
以下では説明の便宜上、第１のオブジェクト領域と第１の接触領域が重なる領域を「第１の重なり領域」という。また、第２のオブジェクト領域と第２の接触領域が重なる領域を「第２の重なり領域」という。
【０２９２】
角度θは、第１の重なり領域を代表する点と、第２の重なり領域を代表する点とを結ぶ直線が、水平方向（つまりＸ方向）となす角度である。例えば、第１の重なり領域を代表する点は、第１の重なり領域の重心であってもよく、第２の重なり領域を代表する点は、第２の重なり領域の重心であってもよい。
【０２９３】
例Ｅ１１には、第１と第２のオブジェクト領域Ｇ５１とＧ５２が、２つの白い矩形により示されている。また、第１と第２の接触領域Ｃ５１とＣ５２が、２つの網点パターンの矩形により示されている。そして、第１のオブジェクト領域Ｇ５１と第１の接触領域Ｃ５１が重なる領域である、第１の重なり領域Ｏ１が、斜線パターンの矩形により示されている。同様に、第２のオブジェクト領域Ｇ５２と第２の接触領域Ｃ５２が重なる領域である、第２の重なり領域Ｏ２も、斜線パターンの矩形により示されている。
【０２９４】
例Ｅ１１における角度θは、第１の重なり領域Ｏ１の重心と第２の重なり領域Ｏ２の重心を結ぶ直線Ｄ１が、Ｘ軸となす角である。
【０２９５】
補正管理部１５は、第１のオブジェクト領域Ｇ５１の４隅の点のＸＹ座標と、第１の接触領域Ｃ５１の４隅の点のＸＹ座標から、第１の重なり領域Ｏ１の重心のＸＹ座標を算出することができる。補正管理部１５は、第２のオブジェクト領域Ｇ５２の４隅の点のＸＹ座標と、第２の接触領域Ｃ５２の４隅の点のＸＹ座標から、第２の重なり領域Ｏ２の重心のＸＹ座標を算出することができる。
【０２９６】
よって、補正管理部１５は、第１の重なり領域Ｏ１の重心のＸＹ座標と、第２の重なり領域Ｏ２の重心のＸＹ座標から、逆三角関数を用いて角度θを算出することができる。例Ｅ１１の角度θは、Ｘ方向に近い方向を示している。
【０２９７】
また、例Ｅ１２には、第１と第２のオブジェクト領域Ｇ５３とＧ５４、第１と第２の接触領域Ｃ５３とＣ５４、第１と第２の重なり領域Ｏ３とＯ４が示されている。例Ｅ１２における角度θは、第１の重なり領域Ｏ３の重心と第２の重なり領域Ｏ４の重心を結ぶ直線Ｄ３が、Ｘ軸となす角である。
【０２９８】
例Ｅ１２においても、補正管理部１５は、例Ｅ１１と同様の方法により、角度θを算出することができる。例Ｅ１２の角度θは、中くらいの角度である。つまり、角度θは、Ｘ方向にも近くなく、Ｙ方向にも近くないような、斜めの方向を示している。
【０２９９】
また、例Ｅ１３には、第１と第２のオブジェクト領域Ｇ５５とＧ５６、第１と第２の接触領域Ｃ５５とＣ５６、第１と第２の重なり領域Ｏ５とＯ６が示されている。例Ｅ１３における角度θは、第１の重なり領域Ｏ５の重心と第２の重なり領域Ｏ６の重心を結ぶ直線Ｄ５が、Ｘ軸となす角である。
【０３００】
例Ｅ１３においても、補正管理部１５は、例Ｅ１１と同様の方法により、角度θを算出することができる。例Ｅ１３の角度θは、Ｙ方向に近い方向を示している。
【０３０１】
以上のように、第１のタッチ操作に対する第２のタッチ操作の方向は、本実施形態では、第１と第２の重なり領域に基づいて判断される。換言すれば、第１のタッチ操作に対する第２のタッチ操作の方向は、単に第１と第２の接触領域だけに基づいて判断されるのではなく、第１と第２のオブジェクト領域にも基づいて判断される。第１のタッチ操作に対する第２のタッチ操作の方向を、第１と第２の重なり領域同士の幾何学的関係（具体的には位置関係）に基づいて判断することには、以下のような利点がある。
【０３０２】
第１のタッチ操作においてユーザが触れようと意図していたＧＵＩオブジェクトの近くに配置されている別のＧＵＩオブジェクトが、第１のタッチ操作の対象として特定される場合がある。この場合、ユーザは、取り消し操作と第２のタッチ操作を行うであろう。
【０３０３】
この場合、ある観点から見れば、第１の重なり領域は、「ユーザの狙いがどのようにはずれてしまったのか」を反映している。また、この場合、ある観点から見れば、第２の重なり領域は、「ユーザの本来の意図がどのようにして正しく解釈されたのか」を反映している。
【０３０４】
よって、補正管理部１５は、単に第１と第２の接触領域だけに基づく角度を算出するのではなく、第１と第２の重なり領域に基づいて角度θを算出することで、より精密に、第１のタッチ操作に対する第２のタッチ操作の方向を認識することができる。しかし、実施形態によっては、補正管理部１５は、角度θの代わりに、例えば、第１の接触領域の重心と第２の接触領域の重心を結ぶ直線がＸ軸となす角を用いてもよい。
【０３０５】
ここで、図８の説明に戻る。補正管理部１５は、ステップＳ３０２で角度θを算出した後、ステップＳ３０３で、「角度θが示す方向が、水平に近いか、垂直に近いか、それとも水平にも垂直にも近くない斜めの方向なのか」を判断する。例えば、図１０に関して例示したように、２つの閾値が２０°と７０°である場合、補正管理部１５は、以下のように動作する。
【０３０６】
０°≦｜θ｜＜２０°ならば、補正管理部１５は、「角度θが示す方向は水平に近い」と判断し、次にステップＳ３０４を実行する。７０°＜｜θ｜≦９０°ならば、補正管理部１５は、「角度θが示す方向は垂直に近い」と判断し、次にステップＳ３０６を実行する。２０°≦｜θ｜≦７０°ならば、補正管理部１５は、「角度θが示す方向は斜めの方向である」と判断し、次にステップＳ３０８を実行する。
【０３０７】
ステップＳ３０４、Ｓ３０６、Ｓ３０８のいずれにおいても、補正管理部１５は、第２のオブジェクト領域の大きさに基づいて、補正ＤＢ１４を更新するか否かを決定する。ここで、なぜ第２のオブジェクト領域の大きさに基づく決定が好ましいのかを説明するために、図９の例Ｅ４〜Ｅ１０を参照する。例Ｅ４〜Ｅ６は、補正ＤＢ１４を更新することが好ましい場合の例であり、例Ｅ７〜Ｅ１０は、補正ＤＢ１４を更新することが好ましくない場合の例である。
【０３０８】
例Ｅ４には、第１のオブジェクト領域Ｇ３１と、第２のオブジェクト領域Ｇ３２と、第１の接触領域Ｃ３１が示されている。第２の接触領域は省略されている。
【０３０９】
例Ｅ５には、第１のオブジェクト領域Ｇ３３と、第２のオブジェクト領域Ｇ３４と、第１の接触領域Ｃ３３が示されている。第２の接触領域は省略されている。
【０３１０】
例Ｅ６には、第１のオブジェクト領域Ｇ３５と、第２のオブジェクト領域Ｇ３６と、第１の接触領域Ｃ３５と、第２の接触領域Ｃ３６が示されている。
【０３１１】
例Ｅ７には、第１のオブジェクト領域Ｇ３７と、第２のオブジェクト領域Ｇ３８と、第１の接触領域Ｃ３７と、第２の接触領域Ｃ３８が示されている。
【０３１２】
例Ｅ８には、第１のオブジェクト領域Ｇ３９と、第２のオブジェクト領域Ｇ４０と、第１の接触領域Ｃ３９が示されている。第２の接触領域は省略されている。
【０３１３】
例Ｅ９には、第１のオブジェクト領域Ｇ４１と、第２のオブジェクト領域Ｇ４２と、第１の接触領域Ｃ４１が示されている。第２の接触領域は省略されている。
【０３１４】
例Ｅ１０には、第１のオブジェクト領域Ｇ４３と、第２のオブジェクト領域Ｇ４４と、第１の接触領域Ｃ４３が示されている。第２の接触領域は省略されている。
【０３１５】
例Ｅ４とＥ８は、第１のオブジェクト領域に対して水平方向に第２のオブジェクト領域がある、という点において類似である。しかし、例Ｅ４とＥ８は、ユーザの指が触れる領域を基準にした相対的な第２のオブジェクト領域の大きさという点で異なる。
【０３１６】
具体的には、例Ｅ４では、ユーザの指が触れる領域の幅（例えば第１の接触領域Ｃ３１の幅）よりも、第２のオブジェクト領域Ｇ３２の幅の方が狭い。それに対し、例Ｅ８では、ユーザの指が触れる領域の幅（例えば第１の接触領域Ｃ３９の幅）よりも、第２のオブジェクト領域Ｇ４０の幅の方が広い。つまり、オブジェクト領域Ｇ４０は、ユーザの指を基準にすると、水平方向に十分に大きい。
【０３１７】
よって、ユーザは、もともとオブジェクト領域Ｇ４０に触れようと意図しているならば、オブジェクト領域Ｇ４０と重なり、かつ、オブジェクト領域Ｇ３９とは重ならないような領域に、容易に触れることができる。換言すれば、ユーザがもともとオブジェクト領域Ｇ４０に触れようと意図していた場合に、接触領域Ｃ３９のような紛らわしい領域にユーザが触れてしまう蓋然性は低い。したがって、仮に「第１のタッチ操作、取り消し操作、第２のタッチ操作」という特定の操作シーケンスが検出され、かつ、第１の接触領域Ｃ３９と不図示の第２の接触領域が互いに近くにあるとしても、例Ｅ８では、補正ＤＢ１４を更新することは望ましくない。
【０３１８】
逆に、例Ｅ４では、ユーザの指を基準にすると、オブジェクト領域Ｇ３２は、水平方向に小さい。よって、例Ｅ４では、たとえユーザがオブジェクト領域Ｇ３２に触れようと意図している場合でも、接触領域は、オブジェクト領域Ｇ３２をはみ出てしまう。その結果、接触領域Ｃ３１のような紛らわしい領域（つまり、ユーザが触ろうと意図していないオブジェクト領域Ｇ３１と部分的に重なっている領域）にユーザが触れてしまう蓋然性が、十分にある。したがって、「第１のタッチ操作、取り消し操作、第２のタッチ操作」という特定の操作シーケンスが検出され、かつ、第１の接触領域Ｃ３１と不図示の第２の接触領域が互いに近くにあるならば、例Ｅ４では、補正ＤＢ１４を更新することが望ましい。
【０３１９】
さて、例Ｅ５とＥ９は、第１のオブジェクト領域に対して垂直方向に第２のオブジェクト領域がある、という点において類似である。しかし、例Ｅ５とＥ９は、ユーザの指が触れる領域を基準にした相対的な第２のオブジェクト領域の大きさという点で異なる。
【０３２０】
具体的には、例Ｅ５では、ユーザの指が触れる領域の高さ(例えば第１の接触領域Ｃ３３の高さ）よりも、第２のオブジェクト領域Ｇ３４の高さが低い。それに対し、例Ｅ９では、ユーザの指が触れる領域の高さ(例えば第１の接触領域Ｃ４１の高さ）よりも、第２のオブジェクト領域Ｇ４２の高さの方が高い。つまり、オブジェクト領域Ｇ４２は、ユーザの指を基準にすると、垂直方向に十分に大きい。
【０３２１】
よって、ユーザは、もともとオブジェクト領域Ｇ４２に触れようと意図しているならば、オブジェクト領域Ｇ４２と重なり、かつ、オブジェクト領域Ｇ４１とは重ならないような領域に、容易に触れることができる。換言すれば、ユーザがもともとオブジェクト領域Ｇ４２に触れようと意図していた場合に、接触領域Ｃ４１のような紛らわしい領域にユーザが触れてしまう蓋然性は低い。したがって、仮に「第１のタッチ操作、取り消し操作、第２のタッチ操作」という特定の操作シーケンスが検出され、かつ、第１の接触領域Ｃ４１と不図示の第２の接触領域が互いに近くにあるとしても、例Ｅ９では、補正ＤＢ１４を更新することは望ましくない。
【０３２２】
逆に、例Ｅ５では、ユーザの指を基準にすると、オブジェクト領域Ｇ３４は、垂直方向に小さい。よって、例Ｅ５では、たとえユーザがオブジェクト領域Ｇ３４に触れようと意図している場合でも、接触領域は、オブジェクト領域Ｇ３４をはみ出てしまう。その結果、接触領域３３のような紛らわしい領域（つまり、ユーザが触ろうと意図していないオブジェクト領域Ｇ３３と部分的に重なっている領域）にユーザが触れてしまう蓋然性が、十分にある。したがって、「第１のタッチ操作、取り消し操作、第２のタッチ操作」という特定の操作シーケンスが検出され、かつ、第１の接触領域Ｃ３３と不図示の第２の接触領域が互いに近くにあるならば、例Ｅ５では、補正ＤＢ１４を更新することが望ましい。
【０３２３】
さて、例Ｅ６とＥ７とＥ１０は、第１のオブジェクト領域に対して斜めの方向に第２のオブジェクト領域がある、という点において類似である。また、例Ｅ６とＥ７は、ユーザの指が触れる領域を基準にすると、第２のオブジェクト領域の大きさが相対的に小さい、という点においても類似である。他方、例Ｅ１０は、ユーザの指が触れる領域を基準にすると、第２のオブジェクト領域の大きさが相対的に大きい、という点において、例Ｅ６およびＥ７とは異なる。
【０３２４】
具体的には、例Ｅ６では、ユーザの指が触れる領域の幅（例えば接触領域Ｃ３５とＣ３６のいずれか一方の幅、または、両者の幅の平均値）よりも、第２のオブジェクト領域Ｇ３６の幅が狭い。また、例Ｅ６では、ユーザの指が触れる領域の高さ（例えば接触領域Ｃ３５とＣ３６のいずれか一方の高さ、または、両者の高さの平均値）よりも、第２のオブジェクト領域Ｇ３６の高さが低い。同様に、例Ｅ７でも、ユーザの指が触れる領域よりも、第２のオブジェクト領域Ｇ３８の方が、幅が狭く、高さが低い。
【０３２５】
それに対し、例Ｅ１０では、ユーザの指が触れる領域の幅（例えば接触領域Ｃ４３の幅）よりも、第２のオブジェクト領域Ｇ４４の幅の方が広い。また、例Ｅ１０では、ユーザの指が触れる領域の高さ（例えば接触領域Ｃ４３の高さ）よりも、第２のオブジェクト領域Ｇ４４の高さの方が高い。つまり、オブジェクト領域Ｇ４４は、ユーザの指を基準にすると、水平方向にも垂直方向にも十分に大きい。
【０３２６】
よって、ユーザは、もともとオブジェクト領域Ｇ４４に触れようと意図しているならば、オブジェクト領域Ｇ４４と重なり、かつ、オブジェクト領域Ｇ４３とは重ならないような領域に、容易に触れることができる。換言すれば、ユーザがもともとオブジェクト領域Ｇ４４に触れようと意図していた場合に、接触領域Ｃ４３のような紛らわしい領域にユーザが触れてしまう蓋然性は低い。したがって、仮に「第１のタッチ操作、取り消し操作、第２のタッチ操作」という特定の操作シーケンスが検出され、かつ、第１の接触領域Ｃ４３と不図示の第２の接触領域が互いに近くにあるとしても、例Ｅ１０では、補正ＤＢ１４を更新することは望ましくない。
【０３２７】
逆に、例Ｅ６では、ユーザの指を基準にすると、オブジェクト領域Ｇ３６は、水平方向にも垂直方向にも小さい。よって、例Ｅ６では、たとえユーザがオブジェクト領域Ｇ３６に触れようと意図している場合でも、接触領域は、オブジェクト領域Ｇ３６をはみ出てしまう。その結果、接触領域Ｃ３５のような紛らわしい領域（つまり、ユーザが触ろうと意図していないオブジェクト領域Ｇ３５と部分的に重なっている領域）にユーザが触れてしまう蓋然性が、十分にある。また、例Ｅ６では、第１と第２の接触領域Ｃ３５とＣ３６が互いに近くにある。したがって、「第１のタッチ操作、取り消し操作、第２のタッチ操作」という特定の操作シーケンスが検出された場合、例Ｅ６では、補正ＤＢ１４を更新することが望ましい。
【０３２８】
例Ｅ７では、ユーザの指を基準にすると、オブジェクト領域Ｇ３８は、水平方向にも垂直方向にも小さい。よって、たとえユーザがオブジェクト領域Ｇ３８に触れようと意図している場合でも、接触領域は、オブジェクト領域Ｇ３８をはみ出てしまう。しかし、例Ｅ７のように第１と第２の接触領域Ｃ３７とＣ３８が離れている場合、「ユーザが、オブジェクト領域Ｇ３８に触れようとしていたのに、第１のタッチ操作の際に第１の接触領域Ｃ３７に触れてしまった」という蓋然性は低い。よって、例Ｅ７では、補正ＤＢ１４を更新しないことが望ましい。そして、本実施形態では、図８のステップＳ３０１において、補正管理部１５が「第１と第２の接触領域Ｃ３７とＣ３８が所定の基準より遠く離れている」と判断するので、例Ｅ７では補正ＤＢ１４が更新されない。
【０３２９】
以上の図９に関する説明から分かるように、補正ＤＢ１４を更新するか否かについての判断は、第１のオブジェクト領域の大きさではなく、第２のオブジェクト領域の大きさに基づくことが好ましい。
【０３３０】
ここで図８の説明に戻る。ステップＳ３０３の後、補正管理部１５は、「取り消し操作と第２のタッチ操作が行われた理由は、第１のタッチ操作でユーザが触れようと意図していなかったＧＵＩオブジェクトが第１のタッチ操作の対象として特定されたことなのか否か」を推測する。そして、推測の結果に応じて、補正管理部１５は、補正ＤＢ１４を更新するか否かを決める。図９の例Ｅ４〜Ｅ１０から分かるように、この推測には、第２のオブジェクト領域の大きさを使うことが有益である。
【０３３１】
具体的には、ステップＳ３０４で補正管理部１５は、接触領域の幅を基準として、第２のオブジェクト領域の幅が狭いか否か（つまり２回目に触れられたＧＵＩオブジェクトの幅が狭いか否か）を判断する。
【０３３２】
例えば、条件（１５）が成り立つとき、補正管理部１５は、「第２のオブジェクト領域の幅が狭い」と判断してもよい。つまり、条件（１５）が成り立たないとき、補正管理部１５は、「第２のオブジェクト領域の幅が広い」と判断してもよい。条件（１５）は、「第２のオブジェクト領域の幅が、第１の接触領域の幅以下であり、かつ、第２の接触領域の幅以下である」という条件である。
Ｘｔ１−Ｘｔ０≧Ｘ２１−Ｘ２０  かつ
Ｘｕ１−Ｘｕ０≧Ｘ２１−Ｘ２０          （１５）
【０３３３】
あるいは、条件（１５）の代わりに、条件（１６）〜（１９）のいずれかが使われてもよい。第１と第２の接触領域の幅はほぼ同じであると想定されるので、条件（１６）〜（１９）も、条件（１５）とほぼ同程度に妥当である。
Ｘｕ１−Ｘｕ０≧Ｘ２１−Ｘ２０            （１６）
｛（Ｘｔ１−Ｘｔ０）＋（Ｘｕ１−Ｘｕ０）｝／２
≧Ｘ２１−Ｘ２０                    （１７）
Ｘｔ１−Ｘｔ０≧Ｘ２１−Ｘ２０            （１８）
Ｘｔ１−Ｘｔ０≧Ｘ２１−Ｘ２０  または
Ｘｕ１−Ｘｕ０≧Ｘ２１−Ｘ２０          （１９）
【０３３４】
ステップＳ３０４が実行されるのは、角度θが示す方向が水平方向（つまりＸ方向）に近い場合である。そして、角度θが示す方向がＸ方向に近い場合とは、換言すれば、Ｘ方向に近い方向での誤操作が検出された場合である。
【０３３５】
図９の例Ｅ４とＥ８から理解されるように、第２のオブジェクト領域の幅が広い場合には（例えば例Ｅ８では）、「Ｘ方向に近い方向での誤操作が行われた」という蓋然性は低い。つまり、第２のオブジェクト領域の幅が広い場合には、「ユーザは、第１と第２のタッチ操作を、異なる意図のもとに行った」と推定される。
【０３３６】
よって、第２のオブジェクト領域の幅が広い場合は、補正ＤＢ１４を更新することは望ましくない。したがって、補正管理部１５は、ステップＳ３０４で「第２のオブジェクト領域の幅が広い」と判断した場合には、補正ＤＢ１４を更新せずに、図８の補正ＤＢ更新処理を終える。
【０３３７】
逆に、第２のオブジェクト領域の幅が狭い場合には（例えば例Ｅ４では）、「Ｘ方向に近い方向での誤操作が行われた」という蓋然性が高い。つまり、第２のオブジェクト領域の幅が狭い場合には、「ユーザは、第１と第２のタッチ操作を、同じ意図のもとに行った」と推定される。
【０３３８】
よって、第２のオブジェクト領域の幅が狭い場合は、Ｘ方向（つまり、誤操作が行われた方向に近い方向）に関する補正値ΔＸを更新することが望ましい。したがって、補正管理部１５は、ステップＳ３０４で「第２のオブジェクト領域の幅が狭い」と判断した場合には、ステップＳ３０５で補正値ΔＸを更新する。
【０３３９】
しかし、ステップＳ３０５で補正管理部１５は、補正値ΔＹは更新しない。なぜなら、Ｙ方向は、誤操作の方向（つまり角度θにより示される方向）とは遠いからである。換言すれば、ステップＳ３０５では、「現在の補正値ΔＹが不適切だ」と推定するに足る十分な証拠がないので、補正管理部１５は、補正値ΔＹを更新しない。
【０３４０】
ステップＳ３０５での補正値ΔＸの更新の具体的方法には、２つの観点から種々のバリエーションがある。１つ目の観点は、補正ＤＢ１４のデータ形式であり、２つ目の観点は、重みづけである。
【０３４１】
図５に例示したように、補正ＤＢ１４のデータ形式は様々である。補正ＤＢ１４ａが使われる場合、補正値ΔＸは１つだけなので、補正管理部１５はこの補正値ΔＸを更新する。しかし、補正ＤＢ１４ｂ〜１４ｅのように、補正ＤＢ１４が複数の補正条件に対応する複数のエントリを含む場合もある。この場合、補正管理部１５は、複数の補正条件のうち、第１のタッチ操作の際に満たされていた条件に対応する補正値ΔＸを更新する。
【０３４２】
図６と図７に関して説明したとおり、メモリ２３には、第１のタッチ操作に応じて位置検出部１３により検出された領域の位置を直接的または間接的に示す情報が、第１のオブジェクト領域を示す情報とともに記憶されている。よって、補正管理部１５は、第１のタッチ操作に応じて位置検出部１３により検出された領域の位置のＸＹ座標を、第１の接触領域に関してメモリ２３に記憶している情報を用いて、認識することができる。
【０３４３】
つまり、補正管理部１５は、メモリ２３に記憶している情報を用いることにより、式（２０）と（２１）により表されるＸＹ座標（Ｘｔ，Ｙｔ）を認識することができる。
Ｘｔ＝（Ｘｔ０＋Ｘｔ１）／２−ΔＸ        （２０）
Ｙｔ＝（Ｙｔ０＋Ｙｔ１）／２−ΔＹ        （２１）
【０３４４】
式（２０）中の補正値ΔＸは、第１のタッチ操作が行われたときに補正管理部１５が使った補正値であり、補正管理部１５がこれから更新しようとする補正値でもある。また、式（２１）中の補正値ΔＹは、第１のタッチ操作が行われたときに補正管理部１５が使った補正値である。しかし、上述のとおり、ステップＳ３０５では、補正値ΔＹは更新されない。
【０３４５】
例えば、補正ＤＢ１４ｂまたは１４ｅが使われる場合、補正管理部１５は、以上のようにして認識したＸＹ座標（Ｘｔ，Ｙｔ）が属するブロックに対応するエントリの補正値ΔＸを更新する。
【０３４６】
補正ＤＢ１４ｃが使われる場合、補正管理部１５は、以上のようにして認識したＸＹ座標（Ｘｔ，Ｙｔ）を用いて、操作検出部１６に問い合わせを行う。そして、補正管理部１５は、認識したＸＹ座標（Ｘｔ，Ｙｔ）と問い合わせの結果との組み合わせに対応するエントリの補正値ΔＸを更新する。
【０３４７】
補正ＤＢ１４ｄが使われる場合、補正管理部１５は、第１のタッチ操作が行われたアプリケーション１２に対応するエントリの補正値ΔＸを更新する。
【０３４８】
なお、補正管理部１５は、第２のタッチ操作に応じて位置検出部１３により検出された領域の位置のＸＹ座標も、第２の接触領域に関してメモリ２３に記憶している情報を用いて、認識することができる。つまり、補正管理部１５は、式（２２）と（２３）のＸＹ座標（Ｘｕ，Ｙｕ）を認識することもできる。式（２２）と（２３）の中の補正値ΔＸとΔＹは、第２のタッチ操作が行われたときに補正管理部１５が使った補正値である。
Ｘｕ＝（Ｘｕ０＋Ｘｕ１）／２−ΔＸ        （２２）
Ｙｕ＝（Ｙｕ０＋Ｙｕ１）／２−ΔＹ        （２３）
【０３４９】
次に、上記の２つ目の観点について説明する。
Ｘ方向における第２の接触領域の位置と、Ｘ方向における第１の接触領域の位置との差ｄＸは、式（２４）のとおりである。差ｄＸは、式（２５）のように算出されてもよい。
ｄＸ＝Ｘｕ−Ｘｔ                                  （２４）
ｄＸ＝（Ｘｕ０＋Ｘｕ１）／２−（Ｘｔ０＋Ｘｔ１）／２    （２５）
【０３５０】
補正ＤＢ１４ｂ、１４ｃ、１４ｅのように、位置的条件に応じて補正値ΔＸとΔＹが定義されている場合、式（２０）と（２２）の補正値ΔＸは同じとは限らない。同様に、式（２１）と（２３）の補正値ΔＹは同じとは限らない。
【０３５１】
よって、場合によっては、式（２５）により算出される差ｄＸは、式（２４）の差ｄＸと完全には一致しない。つまり、場合によっては、式（２５）により算出される差ｄＸは、式（２４）の差ｄＸの近似値である。しかし、第１と第２の接触領域は互いに近いので、式（２５）により式（２４）は良く近似される。よって、補正管理部１５は、式（２４）にしたがって差ｄＸを算出してもよいし、式（２５）にしたがって差ｄＸを算出してもよい。
【０３５２】
補正管理部１５は、具体的には、式（２６）のように補正値ΔＸを更新してもよい。式（２６）において、右辺の「ΔＸ」は現在の補正値ΔＸを示し、左辺の「ΔＸ」は更新後の新たな補正値ΔＸを示す。
ΔＸ＝ΔＸ＋ｄＸ            （２６）
【０３５３】
補正管理部１５は、正の係数αを用いて、式（２７）にしたがって補正値ΔＸを更新してもよい。式（２７）において、右辺の「ΔＸ」は現在の補正値ΔＸを示し、左辺の「ΔＸ」は更新後の新たな補正値ΔＸを示す。
ΔＸ＝ΔＸ＋α・ｄＸ        （２７）
【０３５４】
係数αは定数でもよい。係数αは、差ｄＸに依存する値でもよい。例えば、差ｄＸに対して単調減少する係数αが使われてもよい。補正ＤＢ１４ｅのようにカウンタを含む補正ＤＢ１４が使われる場合、係数αは、カウンタの値に依存する値（例えば、カウンタの値に対して単調減少する値）でもよい。
【０３５５】
なお、図５に関して説明したように、補正値ΔＸ用の第１のカウンタと、補正値ΔＹ用の第２のカウンタがあってもよい。その場合、係数αは、第１のカウンタの値に依存する値であってもよい。
【０３５６】
カウンタを含む補正ＤＢ１４が使われる場合、補正管理部１５は、ステップＳ３０５で、更新対象の補正値ΔＸを含むエントリのカウンタの値を１だけインクリメントする。カウンタの初期値は０である。
【０３５７】
係数αが１の場合は式（２６）に対応する。係数αが１未満の場合は、補正値ΔＸは、漸次、最適値に近づいてゆくと期待される。逆に、係数αが１より大きい場合は、補正値ΔＸは、振動しながら、最適値に収束してゆくと期待される。
【０３５８】
以上のように、ステップＳ３０５での補正値ΔＸの更新の具体的方法は、様々であってよい。また、式（２６）と（２７）以外の式にしたがって補正管理部１５が補正値ΔＸを更新してもよい。
【０３５９】
いずれにせよ、補正管理部１５は、補正値ΔＸをどれくらい更新するかを、第２の接触領域のＸ方向の位置に基づいて決定する。ステップＳ３０５での補正値ΔＸの更新後、補正管理部１５は図８の補正ＤＢ更新処理を終える。
【０３６０】
さて、ステップＳ３０６で補正管理部１５は、接触領域の高さを基準として、第２のオブジェクト領域の高さが低いか否か（つまり２回目に触れられたＧＵＩオブジェクトの高さが低いか否か）を判断する。
【０３６１】
例えば、条件（２８）が成り立つとき、補正管理部１５は、「第２のオブジェクト領域の高さが低い」と判断してもよい。つまり、条件（２８）が成り立たないとき、補正管理部１５は、「第２のオブジェクト領域の高さが高い」と判断してもよい。条件（２８）は、「第２のオブジェクト領域の高さが、第１の接触領域の高さ以下であり、かつ、第２の接触領域の高さ以下である」という条件である。
Ｙｔ１−Ｙｔ０≧Ｙ２１−Ｙ２０  かつ
Ｙｕ１−Ｙｕ０≧Ｙ２１−Ｙ２０                （２８）
【０３６２】
あるいは、条件（２８）の代わりに、条件（２９）〜（３２）のいずれかが使われてもよい。第１と第２の接触領域の高さはほぼ同じであると想定されるので、条件（２９）〜（３２）も、条件（２８）とほぼ同程度に妥当である。
Ｙｕ１−Ｙｕ０≧Ｙ２１−Ｙ２０                  （２９）
｛（Ｙｔ１−Ｙｔ０）＋（Ｙｕ１−Ｙｕ０）｝／２
≧Ｙ２１−Ｙ２０                      （３０）
Ｙｔ１−Ｙｔ０≧Ｙ２１−Ｙ２０                  （３１）
Ｙｔ１−Ｙｔ０≧Ｙ２１−Ｙ２０  または
Ｙｕ１−Ｙｕ０≧Ｙ２１−Ｙ２０                （３２）
【０３６３】
ステップＳ３０６が実行されるのは、角度θが示す方向が垂直方向（つまりＹ方向）に近い場合である。そして、角度θが示す方向がＹ方向に近い場合とは、換言すれば、Ｙ方向に近い方向での誤操作が検出された場合である。
【０３６４】
図９の例Ｅ５とＥ９から理解されるように、第２のオブジェクト領域の高さが高い場合には（例えば例Ｅ９では）、「Ｙ方向に近い方向での誤操作が行われた」という蓋然性は低い。つまり、第２のオブジェクト領域の高さが高い場合には、「ユーザは、第１と第２のタッチ操作を、異なる意図のもとに行った」と推定される。
【０３６５】
よって、第２のオブジェクト領域の高さが高い場合は、補正ＤＢ１４を更新することは望ましくない。したがって、補正管理部１５は、ステップＳ３０６で「第２のオブジェクト領域の高さが高い」と判断した場合には、補正ＤＢ１４を更新せずに、図８の補正ＤＢ更新処理を終える。
【０３６６】
逆に、第２のオブジェクト領域の高さが低い場合には（例えば例Ｅ５では）、「Ｙ方向に近い方向での誤操作が行われた」という蓋然性が高い。つまり、第２のオブジェクト領域の高さが低い場合には、「ユーザは、第１と第２のタッチ操作を、同じ意図のもとに行った」と推定される。
【０３６７】
よって、第２のオブジェクト領域の高さが低い場合は、Ｙ方向（つまり、誤操作が行われた方向に近い方向）に関する補正値ΔＹを更新することが望ましい。したがって、補正管理部１５は、ステップＳ３０６で「第２のオブジェクト領域の高さが低い」と判断した場合には、ステップＳ３０７で補正値ΔＹを更新する。
【０３６８】
しかし、ステップＳ３０７で補正管理部１５は、補正値ΔＸは更新しない。なぜなら、Ｘ方向は、誤操作の方向（つまり角度θにより示される方向）とは遠いからである。換言すれば、ステップＳ３０７では、「現在の補正値ΔＸが不適切だ」と推定するに足る十分な証拠がないので、補正管理部１５は、補正値ΔＸを更新しない。
【０３６９】
ステップＳ３０７での補正値ΔＹの更新の具体的方法には、２つの観点から種々のバリエーションがある。１つ目の観点は、補正ＤＢ１４のデータ形式であり、２つ目の観点は、重みづけである。
【０３７０】
１つ目の観点は、ステップＳ３０５に関して説明したとおりである。補正管理部１５は、補正ＤＢ１４のデータ形式に応じて、適宜の方法により、更新対象の補正値ΔＹを特定する。つまり、補正管理部１５は、更新対象の補正値ΔＹを含むエントリを特定する。
【０３７１】
２つ目の観点について以下に説明する。
Ｙ方向における第２の接触領域の位置と、Ｙ方向における第１の接触領域の位置との差ｄＹは、式（３３）のとおりである。差ｄＹは式（３４）のように算出されてもよい。式（３３）と（３４）は、式（２４）と（２５）と類似しているので、詳しい説明は、省略する。
ｄＹ＝Ｙｕ−Ｙｔ                                  （３３）
ｄＹ＝（Ｙｕ０＋Ｙｕ１）／２−（Ｙｔ０＋Ｙｔ１）／２    （３４）
【０３７２】
補正管理部１５は、具体的には、式（３５）のように補正値ΔＹを更新してもよい。式（３５）において、右辺の「ΔＹ」は現在の補正値ΔＹを示し、左辺の「ΔＹ」は更新後の新たな補正値ΔＹを示す。
ΔＹ＝ΔＹ＋ｄＹ            （３５）
【０３７３】
補正管理部１５は、正の係数βを用いて、式（３６）にしたがって補正値ΔＹを更新してもよい。係数αと同様に、係数βは、１より小さくてもよいし、１より大きくてもよい。式（３６）において、右辺の「ΔＹ」は現在の補正値ΔＹを示し、左辺の「ΔＹ」は更新後の新たな補正値ΔＹを示す。
ΔＹ＝ΔＹ＋β・ｄＹ        （３６）
【０３７４】
係数βは定数でもよい。例えば、係数αとβが同じ定数でもよい。係数βは、差ｄＹに依存する値でもよい。例えば、差ｄＹに対して単調減少する係数βが使われてもよい。補正ＤＢ１４ｅのようにカウンタを含む補正ＤＢ１４が使われる場合、係数βは、カウンタの値に依存する値（例えば、カウンタの値に対して単調減少する値）でもよい。
【０３７５】
なお、図５に関して説明したように、補正値ΔＸ用の第１のカウンタと、補正値ΔＹ用の第２のカウンタがあってもよい。その場合、係数βは、第２のカウンタの値に依存する値であってもよい。
【０３７６】
カウンタを含む補正ＤＢ１４が使われる場合、補正管理部１５は、ステップＳ３０７で、更新対象の補正値ΔＹを含むエントリのカウンタの値を１だけインクリメントする。カウンタの初期値は０である。
【０３７７】
以上のように、ステップＳ３０７での補正値ΔＹの更新の具体的方法は、様々であってよい。また、式（３５）と（３６）以外の式にしたがって補正管理部１５が補正値ΔＹを更新してもよい。
【０３７８】
いずれにせよ、補正管理部１５は、補正値ΔＹをどれくらい更新するかを、第２の接触領域のＹ方向の位置に基づいて決定する。ステップＳ３０７での補正値ΔＹの更新後、補正管理部１５は図８の補正ＤＢ更新処理を終える。
【０３７９】
さて、ステップＳ３０８で補正管理部１５は、接触領域の幅と高さを基準として、第２のオブジェクト領域が幅においても高さにおいても小さいのか否か（つまり２回目に触れられたＧＵＩオブジェクトが幅においても高さにおいても小さいのか否か）を判断する。具体的には、補正管理部１５は、ステップＳ３０４と同様にして、第２のオブジェクト領域の幅が狭いか否かを判断する。また、補正管理部１５は、ステップＳ３０６と同様にして、第２のオブジェクト領域の高さが低いか否かを判断する。
【０３８０】
ステップＳ３０８が実行されるのは、角度θが示す方向が、Ｘ方向にもＹ方向にも近くない場合である。そして、角度θが示す方向が、Ｘ方向にもＹ方向にも近くない場合とは、換言すれば、斜めの方向（つまり、Ｘ成分とＹ成分の一方を無視することが不適切であるような方向）での誤操作が検出された場合である。この場合、Ｘ方向とＹ方向の双方について考慮することが望ましい。
【０３８１】
図９の例Ｅ６とＥ１０から理解されるように、第２のオブジェクト領域の高さと幅の少なくとも一方が大きい場合には（例えば例Ｅ１０では）、「斜めの方向での誤操作が行われた」という蓋然性は低い。つまり、第２のオブジェクト領域の高さと幅の少なくとも一方が大きい場合には、「ユーザは、第１と第２のタッチ操作を、異なる意図のもとに行った」と推定される。
【０３８２】
よって、第２のオブジェクト領域の高さと幅の少なくとも一方が大きい場合には、補正ＤＢ１４を更新することは望ましくない。したがって、補正管理部１５は、ステップＳ３０８で「第２のオブジェクト領域の高さと幅の少なくとも一方が大きい」と判断した場合には、補正ＤＢ１４を更新せずに、図８の補正ＤＢ更新処理を終える。
【０３８３】
逆に、第２のオブジェクト領域が幅においても高さにおいても小さい場合には（例えば例Ｅ６では）、「斜めの方向での誤操作が行われた」という蓋然性が高い。つまり、第２のオブジェクト領域が幅においても高さにおいても小さい場合には、「ユーザは、第１と第２のタッチ操作を、同じ意図のもとに行った」と推定される。
【０３８４】
よって、第２のオブジェクト領域が幅においても高さにおいても小さい場合には、補正値ΔＸとΔＹの双方を更新することが望ましい。したがって、補正管理部１５は、ステップＳ３０８で「第２のオブジェクト領域が幅においても高さにおいても小さい」と判断した場合には、ステップＳ３０９で補正値ΔＸとΔＹの双方を更新する。補正値ΔＸの更新はステップＳ３０５と同様であり、補正値ΔＹの更新はΔ３０７と同様である。ステップＳ３０９での補正値ΔＸとΔＹの更新後、補正管理部１５は図８の補正ＤＢ更新処理を終える。
【０３８５】
ところで、本発明は上記実施形態に限られるものではない。上記の説明においてもいくつかの変形について説明したが、上記実施形態は、さらに例えば下記の観点から様々に変形することもできる。上記および下記の変形は、相互に矛盾しない限り、任意に組み合わせることが可能である。
【０３８６】
上記実施形態におけるいくつかの処理は、閾値との比較を含む。閾値との比較は、実施形態により「比較対象の数値が、閾値を超えるか否か」を判断する処理でもよいし、「比較対象の数値が、閾値以上か否か」を判断する処理でもよい。例示した種々の不等式において、「≦」が「＜」に適宜置き換えられてもよく、逆に、「＜」が「≦」に適宜置き換えられてもよい。
【０３８７】
また、上記の説明では様々な用途の閾値を例示したが、各閾値の具体的な値は、実施形態に応じて適宜任意に決められてよい。
【０３８８】
上記の説明では、主に、各領域がバウンディング・ボックスにより表される例を説明した。しかし、矩形以外の形状で領域が表されてもよい。
【０３８９】
矩形以外の形状の領域が使われる場合、領域同士の重なりの検出には、領域間の衝突に関する適宜の衝突判定アルゴリズムが利用可能である。例えばコンピュータ・グラフィックスの分野において、種々の衝突判定アルゴリズムが知られている。
【０３９０】
例えば、補正管理部１５は、第１と第２の接触領域が重なっているか否かを、適宜の衝突判定アルゴリズムにしたがって判断してもよい。補正管理部１５は、接触領域とオブジェクト領域が重なる重なり領域を特定するために、適宜の重なり検出アルゴリズムを利用してもよい。矩形以外の形状の領域の重心を求めるための適宜のアルゴリズムが利用されてもよい。
【０３９１】
また、図１の端末装置１０を実現するためのハードウェアは、図４のような汎用的なコンピュータ２０には限られない。汎用的なＣＰＵ２１の代わりに、ＡＳＩＣ（Application-Specific Integrated Circuit）などの専用ハードウェア回路、および／または、ＦＰＧＡ（Field Programmable Gate Array）などのリコンフィギュラブル（reconfigurable）回路が使われてもよい。もちろん、専用ハードウェア回路および／またはリコンフィギュラブル回路が、汎用的なＣＰＵ２１とともに使われてもよい。
【０３９２】
コンピュータ２０が使われる場合も、位置検出部１３、補正管理部１５、および操作検出部１６の各々が、ファームウェア、ＯＳ、デバイスドライバなどの種々の階層のうちのどの階層に実装されるかということは、実施形態に応じて様々であってよい。また、上記実施形態では、補正管理部１５が座標の補正と補正情報の更新の両方を行うが、実施形態によっては、座標の補正を行うモジュールと、補正情報の更新を行うモジュールが分離されていてもよい。
【０３９３】
続いて、以上のように様々に変形され得る各種実施形態の共通点について説明する。
図８のステップＳ３０１に例示されるように、第１と第２の接触領域が所定の基準に照らして遠くに離れているとき、補正ＤＢ１４は更新されない。逆に、第１と第２の接触領域が所定の基準に照らして近くにある場合、補正管理部１５は、「補正ＤＢ１４を更新するか否か」ということを、第１のタッチ操作に対する第２のタッチ操作の方向と、第２のオブジェクト領域の大きさに基づいて決める。以上のような補正管理部１５の振る舞いは、以下のような考察に基づく。
【０３９４】
「第１のタッチ操作と、第１のタッチ操作を取り消す取り消し操作と、第２のタッチ操作」という特定の操作シーケンスが実行される理由として、少なくとも２つの理由が考えられる。
【０３９５】
第１の理由は、「第１のタッチ操作においてユーザが触れようと意図していたＧＵＩオブジェクトの近くに配置されている別のＧＵＩオブジェクトが、第１のタッチ操作の対象として特定されたから」という理由である。この場合、アプリケーション１２は、ユーザの意図とは異なる振る舞いをする。
【０３９６】
そこで、ユーザは、第１のタッチ操作を取り消すために取り消し操作を行い、その後、本来の意図を実現するために第２のタッチ操作を行う。例えば、図２の例Ｅ１は、第１の理由に起因して取り消し操作と第２のタッチ操作が行われる例である。
【０３９７】
第２の理由は、「実際のアプリケーション１２の振る舞いが、ユーザを満足させるものではなかったから」という理由である。例えば、図２の例Ｅ２は、第２の理由に起因して取り消し操作と第２のタッチ操作が行われる例である。
【０３９８】
第１のタッチ操作においてユーザが触れようと意図していたＧＵＩオブジェクト自体が、第１のタッチ操作の対象として特定されることがある。この場合、ユーザが第１のタッチ操作によってアプリケーション１２に与えた指示どおりに、アプリケーション１２は振る舞う（例えば例Ｅ２のステップＳ２０）。しかし、実際のアプリケーション１２の振る舞いが、ユーザを満足させるものではない可能性もある。例えば、例Ｅ２において、ユーザは、ウェブページＰ４をちらっと見ただけで、「このウェブページは自分が期待していたようなウェブページではない」と思う可能性がある。
【０３９９】
以上のように、実際のアプリケーション１２の振る舞いが期待はずれのことがあり得る。この場合、ユーザは、第１のタッチ操作を取り消すために取り消し操作を行い、その後、より満足な結果を得るための試みとして、第２のタッチ操作を行うことがある。
【０４００】
ところで、第１の理由に起因して取り消し操作と第２の操作が行われた場合には、補正値ΔＸおよび／または補正値ΔＹの更新によって、ユーザビリティが向上すると期待される。
【０４０１】
しかし、第２の理由に起因して取り消し操作と第２のタッチ操作が行われた場合には、「現在の補正値ΔＸと補正値ΔＹが不適切である」と推定するに足る十分な証拠はない。よって、この場合は、補正管理部１５は、補正値ΔＸとΔＹを更新しないことが望ましい。なぜなら、この場合、もし補正管理部１５が補正値ΔＸおよび／または補正値ΔＹを更新してしまうと、過剰な（または不適切な）更新によって、かえってユーザビリティが低下するおそれがあるからである。
【０４０２】
そこで、補正管理部１５は、取り消し操作と第２のタッチ操作が第１と第２の理由のどちらに起因して行われたのかを推測する。そして、推測に基づいて、補正管理部１５は、補正値ΔＸを更新することが好ましいか否か、および、補正値ΔＹを更新することが好ましいか否かを判断する。例えば、図８のステップＳ３０１〜３０４、Ｓ３０６、Ｓ３０８のようにして推測が行われてもよい。
【０４０３】
例えば図２の例Ｅ２や図９の例Ｅ７のように、第１と第２の接触領域が所定の基準に照らして遠くに離れているときは、「第１の理由に起因して取り消し操作と第２の操作が行われた」という蓋然性は低い。つまり、第１と第２の接触領域が所定の基準に照らして遠くに離れているときは、「第２の理由に起因して取り消し操作と第２の操作が行われた」という蓋然性が高い。よって、この場合、補正管理部１５は、上記のとおり、補正値ΔＸも補正値ΔＹも更新しない。
【０４０４】
逆に、第１と第２の接触領域が所定の基準に照らして近くにあるとき、「第１の理由に起因して取り消し操作と第２の操作が行われた」という可能性もあり、「第２の理由に起因して取り消し操作と第２の操作が行われた」という可能性もある。よって、第１の接触領域と第２の接触領域同士が所定の基準に照らして近くにあるとき、補正管理部１５は、２つの可能性のどちらがより尤もらしいかを判断する。
【０４０５】
この判断には、上記のとおり、第１のタッチ操作に対する第２のタッチ操作の方向と、第２のオブジェクト領域の大きさが使われる。例えば、図８の例では、第１のタッチ操作に対する第２のタッチ操作の方向がステップＳ３０２〜Ｓ３０３で判断され、第２のオブジェクト領域の大きさはステップＳ３０４、Ｓ３０６、およびＳ３０８で判断される。第１のタッチ操作に対する第２のタッチ操作の方向は、具体的には、第１のオブジェクト領域と第２のオブジェクト領域と第１の接触領域と第２の接触領域の間の幾何学的関係に基づいて判定される方向である。
【０４０６】
以下では説明の便宜上、「第１のタッチ操作に対して、Ｘ方向に近い方向で第２のタッチ操作が行われたか否か」を判定するための条件を、「水平配置条件」という。また、「第１のタッチ操作に対して、Ｙ方向に近い方向で第２のタッチ操作が行われたか否か」を判定するための条件を、「垂直配置条件」という。
【０４０７】
水平配置条件と垂直配置条件は排他的である。水平配置条件と垂直配置条件は、実施形態に応じて適宜定義されてよい。
【０４０８】
実施形態によっては、水平配置条件が満たされる場合と、垂直配置条件が満たされる場合と、いずれも満たされない場合、という３つの場合が存在するように、水平配置条件と垂直配置条件が定義されてもよい。角度θの絶対値｜θ｜に関する２つの閾値（例えば２０°と７０°）が使われる図８の例は、このように３つの場合が存在する例である。
【０４０９】
実施形態によっては、水平配置条件が満たされる場合と、垂直配置条件が満たされる場合、という２つの場合だけが存在するように、水平配置条件と垂直配置条件が定義されてもよい。例えば、図８の変形例として例示したように、１つの閾値（例えば４５°）のみを用いて、角度θの絶対値｜θ｜が２つに分類されてもよい。
【０４１０】
以下では説明の便宜上、「第１と第２の接触領域が所定の基準に照らして近くにあり、かつ、第１のオブジェクト領域と第２のオブジェクト領域と第１の接触領域と第２の接触領域が水平配置条件を満たしている」という場合を「第１の場合」という。一方、「第１と第２の接触領域が所定の基準に照らして近くにあり、かつ、第１のオブジェクト領域と第２のオブジェクト領域と第１の接触領域と第２の接触領域が垂直配置条件を満たしている」という場合を「第２の場合」という。
【０４１１】
また、「第１と第２の接触領域が所定の基準に照らして近くにあり、かつ、第１のオブジェクト領域と第２のオブジェクト領域と第１の接触領域と第２の接触領域が水平配置条件も垂直配置条件も満たさない」という場合を「第３の場合」という。第３の場合が存在するか否かは、上記のとおり、水平配置条件と垂直配置条件の定義に依存する。
【０４１２】
第１の場合において、補正管理部１５は、補正値ΔＸを更新するか否かを第２のオブジェクト領域の幅に基づいて決定し、補正値ΔＹは更新しない。具体的には、補正管理部１５は、第２のオブジェクト領域の幅が、第１と第２の接触領域の一方または双方の幅に応じて決められる第１の閾値以下ならば、補正値ΔＸを更新する。しかし、補正管理部１５は、第２のオブジェクト領域の幅が、第１の閾値を超えるならば、補正値ΔＸを更新しない。
【０４１３】
以上のような第１の場合の具体例は、図８のステップＳ３０４〜Ｓ３０５に例示されている。また、上記第１の閾値は、例えば、以下のいずれの値であってもよいし、他の適宜の値であってもよい。
【０４１４】
・第１の接触領域の幅と第２の接触領域の幅のうちの最小値（式（１５）に相当）。
・当該最小値と、１に近い所定の係数（例えば、０．９から１．１程度の係数）との積。
・第２の接触領域の幅（式（１６）に相当）。
・第２の接触領域の幅と、１に近い所定の係数との積。
・第１の接触領域の幅と第２の接触領域の幅の平均値（式（１７）に相当）。
・当該平均値と、１に近い所定の係数との積。
・第１の接触領域の幅（式（１８）に相当）。
・第１の接触領域の幅と第２の接触領域の幅のうちの最大値（式（１９）に相当）。
・当該最大値と、１に近い所定の係数との積。
【０４１５】
第２の場合において、補正管理部１５は、補正値ΔＹを更新するか否かを第２のオブジェクト領域の高さに基づいて決定し、補正値ΔＸは更新しない。具体的には、補正管理部１５は、第２のオブジェクト領域の高さが、第１と第２の接触領域の一方または双方の高さに応じて決められる第２の閾値以下ならば、補正値ΔＹを更新する。しかし、補正管理部１５は、第２のオブジェクト領域の高さが、第２の閾値を超えるならば、補正値ΔＹを更新しない。
【０４１６】
以上のような第２の場合の具体例は、図８のステップＳ３０６〜Ｓ３０７に例示されている。また、上記第２の閾値は、例えば、以下のいずれの値であってもよいし、他の適宜の値であってもよい。
【０４１７】
・第１の接触領域の高さと第２の接触領域の高さのうちの最小値（式（２８）に相当）。
・当該最小値と、１に近い所定の係数（例えば、０．９から１．１程度の係数）との積。
・第２の接触領域の高さ（式（２９）に相当）。
・第２の接触領域の高さと、１に近い所定の係数との積。
・第１の接触領域の高さと第２の接触領域の高さの平均値（式（３０）に相当）。
・当該平均値と、１に近い所定の係数との積。
・第１の接触領域の高さ（式（３１）に相当）。
・第１の接触領域の高さと第２の接触領域の高さのうちの最大値（式（３２）に相当）。
・当該最大値と、１に近い所定の係数との積。
【０４１８】
第３の場合があり得るか否かは、上記のように水平配置条件と垂直配置条件の定義に依存する。例えば、角度θの絶対値｜θ｜に関して１つの閾値のみが使われる場合、第３の場合は存在せず、図８のステップＳ３０８〜Ｓ３０９は削除される。しかし、水平配置条件と垂直配置条件の定義によっては、図８のように、第３の場合が存在し得る。
【０４１９】
第３の場合において、補正管理部１５は、補正値ΔＸとΔＹを更新するか否かを、第２のオブジェクト領域の幅と高さに基づいて決定する。具体的には、補正管理部１５は、以下の２つの条件がともに成り立つとき、補正値ΔＸとΔＹの双方を更新する。
【０４２０】
・第２のオブジェクト領域の幅が、第１と第２の接触領域の一方または双方の幅に応じて決められる第３の閾値以下である。
・第２のオブジェクト領域の高さが、第１と第２の接触領域の一方または双方の高さに応じて決められる第４の閾値以下である。
【０４２１】
逆に、第３の場合において、以下の２つの条件のうち少なくとも一方が成り立つとき、補正管理部１５は、補正値ΔＸも補正値ΔＹも更新しない。
【０４２２】
・第２のオブジェクト領域の幅が第３の閾値を超える。
・第２のオブジェクト領域の高さが第４の閾値を超える。
【０４２３】
なお、第３の閾値は、例えば、第１の閾値に関して例示した上記の値のいずれであってもよいし、その他の適宜の値であってもよい。第４の閾値は、例えば、第２の閾値に関して例示した上記の値のいずれであってもよいし、その他の適宜の値であってもよい。
【０４２４】
ところで、各領域はバウンディング・ボックスにより表されてもよいし、矩形以外の形状で表されてもよい。矩形以外の形状が使われる場合、上述のとおり、適宜の衝突判定アルゴリズムが利用されてもよい。
【０４２５】
水平配置条件と垂直配置条件の各々は、第１のオブジェクト領域と第２のオブジェクト領域と第１の接触領域と第２の接触領域の間の幾何学的関係に基づいて定義されることが好ましい。水平配置条件と垂直配置条件の具体的定義は、例えば、領域の形状に応じた定義であってもよい。
【０４２６】
例えば、「第１のオブジェクト領域と第２のオブジェクト領域と第１の接触領域と第２の接触領域が水平配置条件を満たすか否か」ということは、以下の２点を結ぶ直線が水平方向となす角度によって定まっていてもよい。同様に、「第１のオブジェクト領域と第２のオブジェクト領域と第１の接触領域と第２の接触領域が垂直配置条件を満たすか否か」ということも、以下の２点を結ぶ直線が水平方向となす角度によって定まっていてもよい。しかし、実施形態によっては、水平配置条件と垂直配置条件の他の定義が採用されてもよい。
【０４２７】
・第１のオブジェクト領域と第１の接触領域が重なる第１の重なり領域（例えば、図１０の第１の重なり領域Ｏ１、Ｏ３、Ｏ５など）を代表する点。
・第２のオブジェクト領域と第２の接触領域が重なる第２の重なり領域（例えば、図１０の第２の重なり領域Ｏ２、Ｏ４、Ｏ６など）を代表する点。
【０４２８】
ある領域を代表する点は、例えば、領域の重心でもよい。上記２点を結ぶ直線が水平方向となす角度の具体例は、図１０の角度θである。図８〜１０の例では、以下のように２つの閾値を用いて水平配置条件と垂直配置条件が定義される。
【０４２９】
・−９０°から９０°までの範囲内で示される角度θの絶対値｜θ｜が、第５の閾値（例えば２０°）より小さいとき、水平配置条件が満たされる。
・第５の閾値より大きく９０°より小さい第６の閾値（例えば７０°）よりも、絶対値が｜θ｜が大きいとき、垂直配置条件が満たされる。
・絶対値が｜θ｜が第５の閾値以上であり、かつ、第６の閾値以下であるとき、水平配置条件も垂直配置条件も満たされない。
【０４３０】
最後に、上記の種々の実施形態による効果を説明する。
ユーザは、タッチスクリーン１１上でのジェスチャ（すなわちタッチ操作）により、端末装置１０を操作することができる。しかし、例えば以下のような場合には、ミスタッチ（すなわち誤操作）が発生し得る。
【０４３１】
・タッチスクリーン１１が小さいために、個々のＧＵＩオブジェクトが小さく表示される場合。
・タッチスクリーン１１の大きさによらず、もともとＧＵＩオブジェクトが小さい場合。
【０４３２】
タッチスクリーン１１やＧＵＩオブジェクトが十分に大きいのか、それとも小さいのかは、タッチ操作に使われる物体（例えば、ユーザの指やペンなど）の大きさによる。
【０４３３】
誤操作は、ユーザの意図しない操作である。よって、誤操作の発生は、ユーザビリティの低下を招く。したがって、誤操作を減らすことが好ましい。
【０４３４】
上記の各種実施形態では、補正ＤＢ１４の水平補正情報と垂直補正情報が学習される。そして、時間の経過につれて、水平補正情報と垂直補正情報は、次第に、ユーザのタッチ操作の癖によく適合した状態となる。よって、上記の各種実施形態によれば、誤操作を減らすことができる。
【０４３５】
また、上記の各種実施形態は、種々のアプリケーションに適用可能である。例えば、あるアプリケーションでは、いくつかのＧＵＩオブジェクトが疎らにレイアウトされた特定のパターンの画面だけが用いられるかもしれない。しかし、別のアプリケーション（例えばウェブブラウザなど）では、ＧＵＩオブジェクトの大きさやレイアウトは任意であるかもしれない。上記の各種実施形態は、ＧＵＩオブジェクトの大きさやレイアウトによらず適用可能である。
【０４３６】
例えば、次のような比較例が考えられる。個々のＧＵＩオブジェクトが占める領域よりもマージンの分だけ大きい領域が、ＧＵＩオブジェクトに対するタッチ操作の有効領域として定められてもよい。残りの領域は無効領域である。
【０４３７】
有効領域に対してタッチ操作が行われると、アプリケーションがタッチ操作に応じた処理を行う。いくつかのＧＵＩオブジェクトが疎らにレイアウトされた特定のパターンの画面だけが用いられる特定のアプリケーションでは、有効領域同士が重ならないようにすることができる。
【０４３８】
本比較例においては、有効領域に近く、かつ、無効領域に含まれるような位置でタッチ操作が行われた場合が、誤操作と見なされてもよい。そして、この場合に、補正情報が更新されてもよい。上記のような特定のアプリケーションでは、上記のような有効領域に基づく更新方法により、ユーザビリティを改善させることも可能である。
【０４３９】
しかし、以上説明した比較例の方法は、ＧＵＩオブジェクトが密にレイアウトされ得るアプリケーションに適用された場合、それほど有効には働かない。なぜなら、ＧＵＩオブジェクトが密にレイアウトされていると、タッチスクリーン１１の全体または大部分が、有効領域で覆われてしまう（したがって、無効領域がないか、あるいは、無効領域が極めて小さい）ためである。よって、ＧＵＩオブジェクトが密にレイアウトされていると、補正情報がうまく更新されない（すなわち、ユーザビリティが向上しない）おそれが高い。
【０４４０】
一方、ＧＵＩオブジェクトが密にレイアウトされている画面こそ、まさに誤操作を誘発しやすい画面であり、ユーザビリティを向上させたい画面である。よって、たとえＧＵＩオブジェクトが密にレイアウトされていても、端末装置が補正情報をうまく学習することができることが望ましい。
【０４４１】
上記の各種実施形態によれば、たとえＧＵＩオブジェクトが密にレイアウトされていても、端末装置１０が補正ＤＢ１４内の水平補正情報と垂直補正情報をうまく学習することができる。
【０４４２】
なぜなら、補正ＤＢ１４を更新するか否かを判断するためのトリガとして、取り消し操作を含む特定の操作シーケンス（つまり、「第１のタッチ操作、取り消し操作、第２のタッチ操作」という操作シーケンス）が検出されるからである。取り消し操作は、ＧＵＩオブジェクトのレイアウトによらず検出可能である。つまり、上記実施形態では、誤操作の可能性を見落とすおそれが低い。このことは、上記比較例において「ＧＵＩオブジェクトが密にレイアウトされているので、無効領域が存在せず（または極めて小さく）、そのためトリガが検出されない」というおそれが高いのと対照的である。
【０４４３】
一方、取り消し操作は、誤操作以外の原因に起因して行われる可能性もある。しかし、上記の各種実施形態によれば、「誤操作以外の原因に起因して取り消し操作と第２のタッチ操作が行われた」という蓋然性が高い場合は、補正ＤＢ１４が更新されない。よって、上記の各種実施形態によれば、不適切な更新（あるいは過剰な更新）を避けることができる。具体的には、以下のような場合に補正ＤＢ１４の更新が回避される。よって、上記の各種実施形態によれば、不適切な更新によるノイズを避けることができる。
【０４４４】
・第１と第２の接触領域が所定の基準に照らして遠くにある場合。
・第１のタッチ操作が行われてから、所定時間より長い時間が経過した後に、取り消し操作が行われた場合。
・取り消し操作が行われてから、所定時間より長い時間が経過した後に、第２のタッチ操作が行われた場合。
・第２のタッチ操作が行われてから、所定時間以内に、第２のタッチ操作を取り消すための第２の取り消し操作が行われた場合。
・第１のタッチ操作に対する第２のタッチ操作の方向に応じた所定の方向（具体的には、Ｘ方向、Ｙ方向、またはその両方向）において、接触領域の大きさを基準にすると、第２のオブジェクト領域が十分に大きい場合。
【０４４５】
ところで、以上のように不適切な更新を防ぐことは、水平補正情報と垂直補正情報の精度を高めるうえで有効である。不適切な更新を防ぐことは、さらに、不適切な更新による処理負荷（例えば、ＣＰＵ２１による算術演算の処理負荷、メモリアクセスおよび／またはディスクアクセスの負荷など）を減らすうえでも有効である。つまり、上記の各種実施形態には、不必要な高負荷を避けつつ、精度の良い水平補正情報と垂直補正情報を学習する効果がある。
【０４４６】
例えば、図９の例Ｅ８ではオブジェクト領域Ｇ３９とＧ４０が非常に密に配置されているが、オブジェクト領域Ｇ４０に触ろうとしたユーザが接触領域Ｃ３９に触れてしまう蓋然性は低い。なぜなら、オブジェクト領域Ｇ４０の幅は十分に広いからである。上記の各種実施形態では、例えばこのような考察に基づいて、補正ＤＢ１４の不要な更新（換言すれば、過剰で不適切な更新）が回避されている。
【０４４７】
また、上記の各種実施形態によれば、第１と第２のタッチ操作にそれぞれ対応する第１と第２のオブジェクト領域が、操作検出部１６によって動的に特定される。また、第１と第２の接触領域も、当然、第１と第２のタッチ操作に応じて動的に特定される領域であり、静的に決まった領域ではない。したがって、第１の接触領域、第２の接触領域、第１のオブジェクト領域、および第２のオブジェクト領域の間の幾何学的関係は、静的な関係ではなく動的な関係である。
【０４４８】
上記の各種実施形態によれば、動的な上記幾何学的関係に応じて、補正管理部１５が、補正値ΔＸのみを更新するのか、補正値ΔＹのみを更新するのか、補正値ΔＸとΔＹの双方を更新するのか、それとも、補正値ΔＸとΔＹのどちらも更新しないのかを決める。したがって、ＧＵＩオブジェクトの大きさ、形状、レイアウト等が予め静的に定まっていない場合にも、上記の各種実施形態は好適に適用可能である。
【０４４９】
例えば、比較例として、ＧＵＩオブジェクトの大きさ、形状、レイアウト等が事前に決まっていることを前提とた方法も考えられる。具体的には、事前に決まっているＧＵＩオブジェクトの大きさ等に基づく固定の閾値を使って、距離や大きさの判定を行う方法が考えられる。
【０４５０】
このような比較例と比べると、上記の各種実施形態は、適用可能性が広く、柔軟性に優れている。なぜなら、上記の各種実施形態では、距離や大きさの判定において、静的に予め決められたＧＵＩオブジェクトの大きさ等に基づく所定の固定閾値ではなく、接触領域の大きさが基準として使われるからである。ＧＵＩオブジェクトの大きさ、形状、レイアウト等が事前には不明であっても、上記の各種実施形態によれば、補正情報の適切な更新が実現される。接触領域の大きさ自体も動的に位置検出部１３により検出される場合には特に、更新補正値ΔＸとΔＹの精度が高まる。
【０４５１】
また、上記の各種実施形態では、補正管理部１５が、第１のタッチ操作に対する第２のタッチ操作の方向を考慮する。当該方向は、ある観点から見れば、誤操作の方向である。また、当該方向は、第１のタッチ操作におけるユーザの意図を反映している、とも見なせる。よって、ある観点から見れば、補正管理部１は、第１のタッチ操作におけるユーザの意図を推測している、とも見なせる。補正管理部１５は、推測に基づいて、「補正値ΔＸのみを更新するのが好ましいか、補正値ΔＹのみを更新するのが好ましいか、それとも、補正値ΔＸとΔＹの双方を更新するのが好ましいか」を決める。
【０４５２】
誤操作の方向を考慮することは、補正値ΔＸとΔＹを精度よく学習するうえで効果的である。換言すれば、誤操作の方向を考慮することは、不適切な更新を避けるうえで効果的である。
【０４５３】
例えば、図８の角度θが示す方向がＸ方向に近い場合、第１と第２の接触領域のＹ方向における位置の差（例えば式（３３）または（３４）で表される差ｄＹ）は、誤操作に起因する差というより、むしろ、偶発的な差である蓋然性が高い。よって、図８の角度θが示す方向がＸ方向に近い場合、偶発的な差ｄＹに応じて補正値ΔＹを更新することは、あまり好ましくない。
【０４５４】
そのため、上記の各種実施形態では、ステップＳ３０５で補正管理部１５は、補正値ΔＸのみを更新しており、補正値ΔＹを更新しない。つまり、ステップＳ３０５で補正管理部１５は、誤操作の特徴を表すＸ方向の差ｄＸを考慮する一方で、Ｙ方向の偶発的な差ｄＹは無視する。
【０４５５】
逆に、ステップＳ３０７で補正管理部１５は、誤操作の特徴を表すＹ方向の差ｄＹを考慮する一方で、Ｘ方向の偶発的な差ｄＸを無視する。なお、角度θが、Ｘ方向にもＹ方向にも近くない斜めの方向を示す場合、差ｄＸと差ｄＹの双方が誤操作の特徴を表す。よって、ステップＳ３０９で補正管理部１５は、差ｄＸと差ｄＹの双方を考慮する。
【０４５６】
ところで、上記の各種実施形態には、ユーザを邪魔しない（つまり、ユーザに煩わしさを感じさせない）という利点もある。
【０４５７】
例えば、比較例として、第１のタッチ操作の次に取り消し操作が行われたときに、ユーザに対してメニューを表示する方法が考えられる。具体的には、当該メニューは、第１のオブジェクト領域の近傍にある他の１つ以上のＧＵＩオブジェクトの中から１つをユーザに選択させるためのものである。例えば、メニューは拡大表示されてもよい。
【０４５８】
ところが、例えば図２の例Ｅ２のように、誤操作以外の原因でユーザが取り消し操作を行うこともある。上記の比較例によれば、ユーザが誤操作をしていないときにも、ユーザにとって不要なメニューが表示されてしまう。つまり、上記の比較例はユーザを煩わせてしまう。しかし、上記の各種実施形態は、ユーザを邪魔しないので優れている。
【０４５９】
また、別の比較例として、第１の接触領域が２つ以上のＧＵＩオブジェクトと少なくとも部分的に重なっている場合に、第１の接触領域の近傍を拡大表示する方法も考えられる。しかし、第１の接触領域が２つ以上のＧＵＩオブジェクトと少なくとも部分的に重なっている場合に常に誤操作が生じるわけではない。よって、この比較例のような拡大表示はユーザを煩わせてしまう。しかし、上記の各種実施形態は、ユーザを邪魔しないので優れている。
【０４６０】
以上のように、上記の各種実施形態は、ユーザビリティ（換言すれば操作性）を向上させるうえでの様々な優れた効果を奏する。ユーザビリティの向上は、作業効率の向上につながるので、有益である。
【符号の説明】
【０４６１】
１０  端末装置
１１、２４  タッチスクリーン
１２  アプリケーション
１３  位置検出部
１４、１４ａ〜１４ｅ  補正ＤＢ
１５  補正管理部
１６  操作検出部
２０  コンピュータ
２１  ＣＰＵ
２２  チップセット
２３  メモリ
２５  不揮発性記憶装置
２６  入力装置
２７  通信インタフェイス
２８  リーダ／ライタ
３０  ネットワーク
４０  記憶媒体
Ｂ１〜Ｂ３  ボタン
ＢＢ  「戻る」ボタン
Ｃ１〜Ｃ４、Ｃ１０、Ｃ２０、Ｃ３１、Ｃ３３、Ｃ３５〜Ｃ３９、Ｃ４１、Ｃ４３、Ｃ５１〜Ｃ５６  接触領域
Ｄ１、Ｄ３、Ｄ５  直線
Ｅ１〜Ｅ１３  例
ＦＢ  「進む」ボタン
Ｇ１〜Ｇ３、Ｇ１０〜Ｇ１４、Ｇ２０〜Ｇ２４、Ｇ３１〜Ｇ４４、Ｇ５１〜Ｇ５６  オブジェクト領域
Ｌ１０〜Ｌ１４、Ｌ２０〜Ｌ２４  リンク
Ｏ１〜Ｏ６  重なり領域
Ｐ１〜Ｐ４、Ｐ１０、Ｐ２０  ウェブページ
【図１】
0006028861.tif 000003
【図２】
0006028861.tif 000004
【図３】
0006028861.tif 000005
【図４】
0006028861.tif 000006
【図５】
0006028861.tif 000007
【図６】
0006028861.tif 000008
【図７】
0006028861.tif 000009
【図８】
0006028861.tif 000010
【図９】
0006028861.tif 000011
【図１０】
0006028861.tif 000012