本発明の実施形態の例について説明する。本明細書では、実施形態の一例として、電子機器10について説明する。電子機器10は、携帯情報端末(タブレット型コンピュータを含む)や、携帯電話機(スマートフォンを含む)などである。
[ハードウェア構成]
図1は、電子機器10のハードウェア構成を示す図である。同図で示すように、電子機器10は、制御部11、記憶部12、タッチスクリーン13、及び姿勢センサ群14を有している。
制御部11は、例えば、少なくとも1つのマイクロプロセッサを有している。制御部11は、記憶部12に保存されたプログラムやデータに従って処理を実行する。記憶部12は、主記憶部及び補助記憶部を含む。例えば、主記憶部はRAMなどの揮発性メモリであり、補助記憶部は、ハードディスクやフラッシュメモリなどの不揮発性メモリである。
タッチスクリーン13は、表示部13a及びタッチセンサ13bを有している。表示部13aは、例えば、液晶表示部や、有機EL表示部などである。タッチセンサ13bは、例えば抵抗膜方式のセンサや静電容量方式のセンサなどであり、タッチスクリーン13に触れたユーザの指の位置に応じた信号を出力する。
姿勢センサ群14は、電子機器10の姿勢に応じた信号を出力するセンサを含む。姿勢センサ群14は、例えば3軸加速度センサ14Aを有する。3軸加速度センサ14Aは、直交する3方向、具体的には、タッチスクリーン13の縦方向、横方向、及び法線方向(図7A参照)において電子機器10に作用している加速度に応じた信号を出力する。センサ14Aからの信号は、ローパスフィルタを介して制御部11に入力されてもよい。制御部11は、加速度センサ14Aからの信号に基づいて3方向の加速度を検知し、例えば、その加速度から重力方向に対して直交する面(水平面)に対する電子機器10の傾斜を検知する。
姿勢センサ群14は、加速度センサ14Aに加えて、3軸ジャイロセンサ14Bや、3軸磁気センサ14Cを有してもよい。3軸ジャイロセンサ14Bは、タッチスクリーン13の縦軸Ay(図7A参照)を中心とする電子機器10の角速度と、タッチスクリーン13の横軸Ax(図7A参照)を中心とする電子機器10の角速度と、タッチスクリーン13の法線方向(図7A参照)に沿った軸を中心とする電子機器10の角速度に応じた信号を出力する。制御部11は、これらの値を時間積分することにより、電子機器10の傾斜(水平面に対する傾斜)を検知できる。3軸磁気センサ14Cは、地磁気に応じた信号を出力する。制御部11は、3軸磁気センサ14Cの出力に基づいて、例えば、重力方向に対して直交する平面における電子機器10の向きを検知できる。
電子機器10は、有線通信又は無線通信用の通信インタフェースを含み、例えば、ネットワークを介してデータ通信を行う通信部15を有している。制御部11が実行するプログラムや、制御部11が利用するデータは、サーバ装置100(例えば、WEBサーバ装置)からネットワークを介して電子機器10に供給されるようにしてもよい。
[電子機器の姿勢とタッチ操作領域]
タッチスクリーン13には、ユーザのタッチ操作(選択操作)を受け付ける領域が表示される。本明細書において、この領域を「タッチ操作領域」と称する。タッチ操作領域には、例えば、ユーザが選択可能な1又は複数の選択候補が表示される。選択候補は、ユーザが選択可能な項目(メニュー)や、文字入力を受け付ける複数のキーなどである。選択候補は、タッチスクリーン13に表示されるボタン(例えば、ページの「閉じ」を指示するボタン)や、特定の機能(プログラム)が対応づけられた画像(アイコン)であってもよい。
図2Aは電子機器10を右手で操作する様子を示す図である。図2Bは右手で操作される電子機器10の姿勢を示す図である。図3は、左手で操作される電子機器10の姿勢を示す図である。図4A〜図4Dは、タッチ操作領域Mが表示される位置を示す図である。図5はタッチ操作領域Mの移動を説明するための図である。
ユーザが電子機器10を片手で操作する場合、タッチ操作領域Mに親指を伸ばすことが求められる。ところが、例えば図2Aで示されるように右手で電子機器10を操作する場合、手のサイズや電子機器のサイズによっては、タッチスクリーン13の左領域に表示されるタッチ操作領域Mに親指が届きにくいことがある。反対に左手で電子機器10を操作する場合には、タッチスクリーン13の右領域に表示されるタッチ操作領域Mに親指が届きにくいことがある。
また、ユーザは、片手で電子機器10を操作する場合、電子機器10の右側と左側とを手で保持するのではなく、電子機器10の裏面を指で支えることがある。この場合、電子機器10は、水平面hに対して傾斜した姿勢で、支えられることが多い。例えば、右手で電子機器10を操作する場合、電子機器10は、図2Bで示されるように、水平面hに対して右側が下がった姿勢で支えられる場合が多い。反対に左手で電子機器10を操作する場合、図3で示されるように、ユーザは、左側が下がった姿勢で電子機器10を支えることが多い。
そこで、電子機器10においては、ユーザが右手で電子機器を操作していると推定される場合、具体的には、水平面hに対して電子機器10の右側が下がった姿勢にある場合、タッチ操作領域Mは図4Aで示されるようにタッチスクリーン13に規定されている右位置に表示される。反対に、ユーザが左手で電子機器を操作していると推定される場合、具体的には、水平面hに対して電子機器10の左側が下がった姿勢にある場合、タッチ操作領域Mは、図4Bで示されるようにタッチスクリーン13に規定されている左位置に表示される。
また、電子機器10では、タッチ操作領域Mの移動も許容されている。例えば、右位置に配置されているタッチ操作領域M(図5の(1))を、図5の(2)で示されるように左位置に向けて移動させることができる。また、電子機器10では、右位置に配置されているタッチ操作領域M(図5の(1))を、図5の(3)で示されるように右位置と左位置との間の位置に移動させることができる。つまり、電子機器10では、ユーザにとって望ましい任意の位置に向けて、タッチ操作領域Mをタッチスクリーン13の横方向に移動させることができる。これによって、手のサイズやタッチスクリーン13のサイズによらず、各ユーザにとって適した位置にタッチ操作領域を表示できる。なお、図5で示す例とは異なり、タッチ操作領域Mのサイズや初期位置によっては、タッチ操作領域Mを右位置から更に右方に移動したり、タッチ操作領域Mを左位置から更に左方に移動できてもよい。
タッチスクリーン13には同時に複数のタッチ操作領域が表示されてもよい。この場合、全てのタッチ操作領域が、電子機器10の姿勢に応じて右位置に表示されたり、左位置に表示されてよい。また、全てのタッチ操作領域がタッチスクリーン13の横方向において移動可能であってもよい。これとは異なり、予め規定される一部のタッチ操作領域(例えば、使用頻度の高い領域)だけが電子機器10の姿勢に応じて右位置(又は左位置)に表示されてよい。また、予め規定される一部のタッチ操作領域(例えば、使用頻度の高い領域)だけがタッチスクリーン13の横方向において移動可能であってもよい。
[制御部で行う処理]
図6で示すように、制御部11は、その機能として、姿勢検知部11Aと、操作検知部11Bと、表示制御部11Cと、位置選択部11Dと、位置更新部11Eとを有している。表示制御部11Cは、位置選択部11Dによって選択された位置や、位置更新部11Eによって更新された位置にタッチ操作領域Mを表示する。各部の機能は、制御部11を構成するマイクロプロセッサが、記憶部12に格納されているプログラムを実行することによって実現される。
なお、電子機器10がネットワークを介してデータ通信を行う通信部を有している場合、以降で説明する機能(処理)の一部は、電子機器10がネットワークを介して接続されるサーバ装置100において実行されてよい。この場合、電子機器10とサーバ装置100が、タッチスクリーン13の表示を制御する表示システムを構成する。一方、以降で説明する機能(処理)の全てが電子機器10において実行される場合、サーバ装置100は表示システムの要素でなくてよい。
[姿勢検知部]
姿勢検知部11Aは、姿勢センサ群14の出力を利用して電子機器10の姿勢を検知する。より具体的には、姿勢検知部11Aは、重力方向に対して垂直な水平面に対する電子機器10の傾斜を検知する。図7A及び図7Bは、制御部11による電子機器10の傾斜検知を説明するための図である。姿勢検知部11Aは、水平面hに対する電子機器10の傾斜として、例えば、水平面hに対する、タッチスクリーン13の横軸Axの傾斜を検知する。(横軸Axは、タッチスクリーン13の横方向に沿った軸である。
姿勢検知部11Aは、例えば、加速度センサ14Aの出力を利用する。例えば、姿勢検知部11Aは、加速度センサ14Aの出力に基づいて横方向の加速度Fx(図7B参照)を取得し、この加速度Fxに基づいて、水平面hに対する横軸Axの傾斜を表す値を取得する。横軸Axの傾斜を表す値は、例えば、水平面hに対する横軸Axに対する角度θx(図7B参照)である。これとは異なり、水平面hに対する横軸Axの傾斜を表す値としては、重力方向に対するタッチスクリーン13の横軸Axの角度や、横方向の加速度Fx自体を利用できる。姿勢検知部11Aが利用するセンサは、加速度センサ14Aだけに限られず、例えばジャイロセンサ14Bを利用してもよい。
なお、電子機器10は、図4A及び図4Bで示す姿勢(縦姿勢)ではなく、縦姿勢から90度だけ回転した横姿勢(図13A及び図13Bで示す姿勢)で使用されてもよい。この場合、タッチ操作領域Mの位置は、タッチスクリーン13の縦方向において離れている2つの位置(上位置と下位置)とから選択される。この場合、姿勢検知部11Aは、加速度センサ14Aの出力に基づいて縦方向の加速度を取得し、この加速度に基づいて、水平面hに対する縦軸Ayの傾斜を表す値を取得する。縦軸Ayの傾斜を表す値は、例えば、水平面hに対する縦軸Ayに対する角度である。これとは異なり、水平面hに対する縦軸Ayの傾斜を表す値としては、重力方向に対するタッチスクリーン13の縦軸Ayの角度や、縦方向の加速度自体を利用できる。
[位置選択部]
位置選択部11Dは、互いに離れている少なくとも2つの位置から、水平面hに対する電子機器10の傾斜に基づいて、タッチ操作領域Mを表示する位置を選択する。例えば、位置選択部11Dは、横方向において離れている右位置と左位置とから、電子機器10の傾斜に基づいて、タッチ操作領域Mを表示する位置を選択する。具体的には、位置選択部11Dは、水平面hに対するタッチスクリーン13の横軸Axの傾斜に基づいて、タッチ操作領域Mが表示される位置を選択する。電子機器10の傾斜によって左位置より右位置が低くなる場合、位置選択部11Dは右位置を選択する。反対に、電子機器10の傾斜によって右位置より左位置が低くなる場合、位置選択部11Dは左位置を選択する。
水平面hに対する横軸Axの傾斜を表す値として、位置選択部11Dは、例えば、姿勢検知部11Aが算出する角度θx(水平面hに対するタッチスクリーン13の横軸Axの角度、図7B参照)を利用する。横軸Axの角度θx(図7B参照)が正である場合、或いは、正の閾値より大きい場合に、位置選択部11Dは、右位置と左位置のうちの一方(例えば、左位置)を選択する。反対に、横軸Axの角度θxが負である場合、又は負の閾値よりも小さい場合、位置選択部11Dは右位置と左位置のうちの他方(例えば、右位置)を選択する。横軸Axの傾斜を表す値として位置選択部11Dが利用する値は、角度θxではなく、横方向の加速度Fx自体でもよいし、タッチスクリーン13の横軸Axと重力方向との間の角度であってもよい。
図4A及び図4Bで示されるように、右位置は、例えば、横方向におけるタッチスクリーン13の中心を通り且つ縦方向に沿っている中心線C1の右側に規定される位置であり、左位置は中心線C1の左側に規定される位置である。タッチ操作領域Mは部分的に中心線C1に重なっていてもよい。図4A及び図4Bの例とは異なり、右位置と左位置の双方が、中心線C1の右側(又は左側)に規定されてもよい。この場合、タッチ操作領域Mの位置は、中心線C1よりも右側(又は左側)の領域内で選択されることとなる。この場合でも、タッチ操作領域Mの位置が固定されている場合に比して、親指による操作性を向上できる。
表示制御部11Cが複数のタッチ操作領域を選択的に表示する場合、複数のタッチ操作領域のそれぞれについて右位置と左位置とが予め規定されていてよい。この場合、第1のタッチ操作領域について規定された右位置(又は左位置の)と、第2のタッチ操作領域について規定された右位置(又は左位置)は、異なっていてよい。こうすることで、例えばタッチ操作領域のサイズや使用頻度に適した位置に、それらを表示できる。
位置選択部11Dは、タッチスクリーン13に対してなされた所定のタッチ操作に応じて検知された横軸Axの傾斜に基づいて、タッチ操作領域Mを表示する位置を選択する。
このタッチ操作の一例は、上述した姿勢検知部11A及び位置選択部11Dを実現するプログラム(以下において、本件アプリケーションソフトウェアと称する)の起動を、制御部11のオペレーティングシステムに対して指示するタッチ操作である。例えば、本件アプリケーションソフトウェアに対応づけられたアイコンがタッチスクリーン13に表示されている場合、このアイコンに対するタッチ操作が上述した所定のタッチ操作に該当する。この場合、本件アプリケーションソフトウェアの起動に応じて、姿勢検知部11Aが電子機器10の傾斜(水平面hに対する横軸Axの傾斜)を検知し、位置選択部11Dは、この検知された傾斜に基づいてタッチ操作領域Mを表示する位置を選択する。このような位置選択部11Dによると、本件アプリケーションソフトウェアを起動した直後の画面(例えば、アプリケーションソフトウェアの初期画面)において、タッチ操作領域Mが電子機器10の傾斜に応じた位置に表示されることとなる。このことによって、本件アプリケーションソフトウェアの使用開始時からユーザにとって好ましい位置にタッチ操作領域Mが表示されることとなり、本件アプリケーションソフトウェアの操作性を向上できる。
表示制御部11Cは、第1画面と、タッチ操作領域Mを含む第2画面とを選択的に表示してよい。例えば、表示制御部11Cは、第1画面の表示を終了した後に、第2画面を表示してよい。第1画面は、例えば本件アプリケーションソフトウェアの初期画面であり、第2画面は、例えば、初期画面の次に表示される画面である。タッチ操作領域Mの位置を選択する処理のきっかけとなる所定のタッチ操作は、第1画面から第2画面への変更を指示するタッチ操作であってもよい。すなわち、第1画面から第2画面への変更を指示するタッチ操作に応じて、姿勢検知部11Aが電子機器10の傾斜(水平面hに対する横軸Axの傾斜)を検知し、位置選択部11Dは、この検知された傾斜に基づいてタッチ操作領域Mを表示する位置を選択してよい。そして、表示制御部11Cは、第2画面において選択された位置に、タッチ操作領域Mを表示してよい。この処理によれば、タッチ操作領域Mを表示する直前の電子機器10の姿勢(傾斜)に基づいて、タッチ操作領域Mの位置が選択されることとなる。
電子機器10がネットワークを介してサーバ装置100に接続されている場合、姿勢検知部11Aと表示制御部11Cは制御部11に実装され、位置選択部11Dはサーバ装置100の制御装置に実装されてもよい。この場合、姿勢検知部11Aが算出する電子機器10の傾斜がサーバ装置100に送信され、位置選択部11Dは受信した電子機器10の傾斜に基づいてタッチ操作領域Mを表示する位置を選択してよい。その後、サーバ装置100はその選択された位置の情報を電子機器10に送信し、表示制御部11Cは、選択された位置にタッチ操作領域Mを表示してよい。
さらに他の例として、電子機器10がネットワークを介してサーバ装置100に接続されている場合、表示制御部11Cは制御部11に実装され、姿勢検知部11Aと位置選択部11Dはサーバ装置100の制御装置に実装されてもよい。この場合、電子機器10の制御部11は姿勢センサ群14の出力をサーバ装置100に送信し、姿勢検知部11Aは受信した姿勢センサ群14の出力に基づいて電子機器10の傾斜を算出し、位置選択部11Dは算出された電子機器10の傾斜に基づいてタッチ操作領域Mを表示する位置を選択してよい。その後、サーバ装置100はその選択された位置の情報を電子機器10に送信し、表示制御部11Cは、選択された位置にタッチ操作領域Mを表示してよい。
電子機器10がネットワークを介してサーバ装置100に接続されている場合、制御部11はそのサーバ装置100に対して第1画面のデータと、タッチ操作領域Mを含む第2画面のデータとを要求してもよい。制御部11のこのような処理は、制御部11に実装されているWebブラウザによって実現され得る。サーバ装置100は、第1画面のデータと第2画面のデータとに加えて、姿勢検知部11Aのプログラムと位置選択部11Dのプログラムと表示制御部11Cのプログラムとを電子機器10に送信してもよい。第1画面のデータと第2画面のデータは、例えば、HTML(HyperText Markup Language)で記述されたデータである。姿勢検知部11Aのプログラムと位置選択部11Dのプログラムと表示制御部11Cのプログラムは、例えば、JavaScript(登録商標)で記述される。制御部11は受信したプログラムを実行して姿勢検知部11Aと位置選択部11Dと表示制御部11Cとして機能する。すなわち、制御部11は、姿勢センサ群14の出力に基づいて電子機器10の傾斜を算出し、位置選択部11Dは算出された電子機器10の傾斜に基づいてタッチ操作領域Mを表示する位置を選択してよい。そして、表示制御部11Cは、第2画面において選択された位置に、タッチ操作領域Mを表示してよい。
さらに他の例として、制御部11がサーバ装置100に対して第1画面のデータと、タッチ操作領域Mを含む第2画面のデータとを要求したときに、サーバ装置100は、例えば、HTML(HyperText Markup Language)で記述される第1画面のデータと第2画面のデータとに加えて、例えばJavaScriptで記述される姿勢検知部11Aのプログラムと表示制御部11Cのプログラムとを電子機器10に送信してもよい。一方、位置選択部11Dはサーバ装置100の制御装置に実装されてもよい。この場合、姿勢検知部11Aが算出する電子機器10の傾斜がサーバ装置100に送信され、位置選択部11Dは受信した電子機器10の傾斜に基づいてタッチ操作領域Mを表示する位置を選択する。その後、サーバ装置100はその選択された位置の情報を電子機器10に送信し、表示制御部11Cは、選択された位置にタッチ操作領域Mを有する第2画面を表示してよい。
さらに他の例として、制御部11がサーバ装置100に対して第1画面のデータと、タッチ操作領域Mを含む第2画面のデータとを要求したときに、サーバ装置100は、例えば、HTML(HyperText Markup Language)で記述される第1画面のデータと第2画面のデータとに加えて、例えばJavaScriptで記述される表示制御部11Cのプログラムを電子機器10に送信してもよい。一方、姿勢検知部11Aと位置選択部11Dはサーバ装置100の制御装置に実装されてもよい。この場合、電子機器10の制御部11は姿勢センサ群14の出力をサーバ装置100に送信し、姿勢検知部11Aは受信した姿勢センサ群14の出力に基づいて電子機器10の傾斜を算出し、位置選択部11Dは算出された電子機器10の傾斜に基づいてタッチ操作領域Mを表示する位置を選択してよい。その後、サーバ装置100はその選択された位置の情報を電子機器10に送信し、表示制御部11Cは、選択された位置にタッチ操作領域Mを有する第2画面を表示してよい。
[操作検知部]
操作検知部11Bは、タッチ操作領域Mの移動のきっかけとなる操作、言い換えると、タッチ操作領域Mの位置の固定解除のきかっけとなる操作を検知する。電子機器10において、操作検知部11Bが検知する操作は、シェイク操作である。シェイク操作は、例えば電子機器10を所定の方向に振る動作である。所定の方向は例えば、タッチスクリーン13の横方向である。この場合、操作検知部11Bは、加速度センサ14Aの出力によって、タッチスクリーン13の横方向に作用する加速度を検知し、この加速度に基づいてシェイク操作を検知する。
図8は、シェイク操作を検知する処理の例を説明するための図である。ユーザがシェイク操作をすると、電子機器10に作用する加速度は、同図で示すように上昇と下降とを繰り返す。操作検知部11Bは、加速度センサ14Aによって検知される加速度の時系列変化に基づいて単位シェイク操作を検知する。そして、単位シェイク操作の回数が所定の期間(判定期間T)内に2以上の閾値に達したときに、操作検知部11Bはシェイク操作がなされたと判断する。
単位シェイク操作は、例えば、所定の期間(単位判定期間Tu)内で発生する、閾値よりも大きな揺れである(単位判定期間Tu<判定期間T)。操作検知部11Bは、例えば、加速度の時系列変化に基づいて単位判定期間Tu内での極小Pmin及び/又は極大Pmaxを検知し、極小Pmin及び/又は極大Pmaxを利用して電子機器10の揺れを判断する。例えば、極小Pminと極大Pmaxとの差ΔFsが閾値よりも大きい場合に、操作検知部11Bはその揺れを単位シェイク操作と判断する。他の例として、極小Pminが負の閾値よりも小さく、極大Pmaxが正の閾値よりも大きい場合に、操作検知部11Bは単位シェイク操作が生じたと判断してもよい。
操作検知部11Bが利用する加速度は、必ずしもタッチスクリーン13の横方向に作用する加速度でなくてもよい。例えば、操作検知部11Bはタッチスクリーン13の縦方向に作用する加速度を検知し、この加速度に基づいてシェイク操作を検知してもよい。この場合でも、操作検知部11Bは、縦方向の加速度の時系列変化に基づいて、単位シェイク操作を検知し、単位シェイク操作の回数が判定期間T内に2以上の閾値に達したときに、操作検知部11Bはシェイク操作がなされたと判断してよい。
[位置更新部]
位置更新部11Eは、シェイク操作が検知された場合に、図5で例示されるようにタッチスクリーン13に表示されているタッチ操作領域Mの位置を電子機器10の姿勢に応じた方向に移動する。これによると、片手だけの簡単な操作でユーザが望む方向にタッチ操作領域Mの位置を動かすことができる。
電子機器10の姿勢とは、例えば姿勢検知部11Aによって検知される電子機器10の傾斜、すなわち、水平面hに対するタッチスクリーン13の横軸Axの傾斜である。したがって、位置更新部11Eは、水平面hに対する横軸Axの傾斜に応じた方向に、タッチ操作領域Mを移動する。ユーザが電子機器10の右側を下げると、位置更新部11Eは、タッチ操作領域Mを右方に移動し、ユーザが電子機器10の左側を下げると、位置更新部11Eは、タッチ操作領域Mを左方に移動する。
位置更新部11Eは、タッチ操作領域Mを表示する位置を更新する処理を、所定の周期(例えば、タッチスクリーン13の表示を更新する周期)で繰り返し実行する。位置更新部11Eは、タッチ操作領域Mの現在の位置と、タッチ操作領域Mの速度とに基づいて、タッチ操作領域Mの次回の位置を算出する。以下では、現在の位置から次回の位置を算出する1回の処理を「位置更新処理」と称する。このような位置更新処理を繰り返し実行することによって、タッチスクリーン13に表示されているタッチ操作領域Mは、右方又は左方に徐々に移動することとなる。
位置更新部11Eは、水平面hに対する電子機器10の傾斜(具体的には、水平面hに対する横軸Axの傾斜)に基づいて、タッチ操作領域Mの速度を算出してよい。例えば、電子機器10の傾斜が大きくなるに従って、タッチ操作領域Mの速度は高くなってもよい。こうすることで、下り坂を転がる物のようにタッチ操作領域Mが移動するので、本件アプリケーションソフトウェアの直感的な操作性を向上できる。タッチ操作領域Mの速度は、繰り返し実行される位置更新処理のそれぞれにおいて検知される電子機器10の傾斜に基づいて、算出されてよい。こうすることで、タッチ操作領域Mの移動中に電子機器10の傾斜が変わると、それに応じてタッチ操作領域Mの速度も変わる。
位置更新部11Eは、タッチスクリーン13に規定される擬似的な摩擦に基づいて、タッチ操作領域Mの速度を算出してもよい。ここで「摩擦」とは、例えば、タッチ操作領域Mの速度を下げる方向に作用する加速度であり、タッチ操作領域Mの移動に対する抵抗として機能する。位置更新部11Eは、タッチスクリーン13に規定される摩擦と、電子機器10の傾斜(具体的には、水平面hに対する横軸Axの傾斜)とに基づいて、タッチ操作領域Mの速度を算出してよい。こうすれば、ユーザは、例えば電子機器10の傾斜を小さくすることで、タッチ操作領域の移動に対する抵抗を相対的に大きくでき、タッチ操作領域Mの速度を下げることができるので、望む位置にタッチ操作領域Mを止めることができる。
タッチスクリーン13には、摩擦を得るための擬似的な摩擦係数が規定されていてもよい。摩擦、摩擦係数、及びタッチ操作領域の加速度は、例えば次式で表される。
摩擦=G×cos(θx)×μ
加速度=G×sin(θx)−G×cos(θx)×μ
ここで「G」は重力加速度であり、「θx」は水平面hに対する横軸Axの角度であり、「μ」は摩擦係数である。位置更新部11Eは、この加速度を利用して、タッチ操作領域Mの速度を算出できる。
摩擦或いは摩擦係数は、タッチスクリーン13上の位置(座標)に応じて決められてもよい。例えば、位置更新部11Eは、摩擦又は摩擦係数とタッチスクリーン13上の位置(座標)とを対応づけるマップを参照し、タッチ操作領域Mの現在の位置に対応する摩擦又は摩擦係数を取得してよい。そして、位置更新部11Eは、取得した摩擦又は摩擦係数と電子機器10の傾斜とに基づいてタッチ操作領域Mの速度を算出してよい。このようなマップは記憶部12に格納される。このような処理によると、タッチ操作領域Mの速度は、タッチ操作領域Mが表示されている位置(座標)に依拠することとなる。その結果、例えば、タッチ操作領域Mの位置として適した位置では、摩擦又は摩擦係数を高くすることで、タッチ操作領域Mの速度を低くでき、その位置にタッチ操作領域Mが止まりやすくなる。例えば、タッチ操作領域Mが右位置から左方に移動する場合、タッチ操作領域Mが左位置に近づくに従って、タッチ操作領域Mの速度を低くできる。
図9は、このようなマップの例を示す図である。右位置と左位置とに対応する領域E2では相対的に高い摩擦係数が規定され、その他の領域E1では相対的に低い摩擦係数が規定されている。このような摩擦係数によると、タッチ操作領域Mが右位置又は左位置に近づくに従って、タッチ操作領域Mの速度が低くなる。また、領域E1においても摩擦係数が設定されているので、ユーザは、タッチ操作領域Mの移動中に電子機器10の傾斜を調整することによって、右位置と左位置との間の位置にタッチ操作領域Mを止めることができる。領域E1に規定されている摩擦係数は0であってもよい。
位置更新部11Eの処理は、ここで説明する例に限られない。例えば、タッチスクリーン13に規定される摩擦係数は、図9で示す例とは異なり、タッチスクリーン13上に位置(座標)に応じて連続的に変化してもよい。
さらに他の例では、摩擦係数は、タッチスクリーン13の全域において均一でもよい。この場合、位置更新部11Eは、図9で例示するマップを参照することなく、一定の摩擦係数と電子機器10の傾斜とに基づいて、タッチ操作領域Mの速度を算出してよい。
また、表示制御部11Cが複数のタッチ操作領域や複数の画面を表示する場合、複数のタッチ操作領域及び/又は複数の画面のそれぞれについて、摩擦係数(又は、摩擦係数を規定するマップ)が設けられてよい。
さらに他の例では、タッチ操作領域Mの速度は、タッチスクリーン13上の位置に依らず、一定であってもよい。この場合、位置更新部11Eは、タッチ操作領域Mが右位置又は左位置に達したときに、タッチ操作領域Mの移動を停止してもよい。これによると、位置更新部11Eが実行する処理を簡単化できる。
[位置更新処理の終了]
位置更新部11Eは、予め定められた停止条件が成立したときに、位置更新処理を終了し、タッチ操作領域Mを停止する。停止条件の一例は、タッチ操作領域Mの速度が閾値より低くなることである。停止条件の他の例は、タッチ操作領域Mが右位置又は左位置に達することである。
位置更新部11Eは、停止条件が成立したときにタッチ操作領域Mを停止し、そのときのタッチ操作領域Mの位置を記憶部12に記録する。位置選択部11Dは、次回にタッチ操作領域Mを表示するときや、新たなタッチ操作領域を表示するときに、それらを記憶部12に格納した位置に表示する。こうすることによって、タッチ操作領域を移動する作業が必要となる頻度を低減できる。
通常状態において(言い換えると、シェイク操作が検知される前において)、タッチ操作領域Mの位置は定位置に固定されている。シェイク操作が検知されると、タッチ操作領域Mの位置の固定が解除され、タッチ操作領域Mの移動が許容される。停止条件が成立すると、シェイク操作が再び検知されるまで、タッチ操作領域Mの位置は移動後の位置に固定される。
[処理のフロー]
図10は、制御部11が実行する処理の例を説明するためのフロー図である。この処理は、本件アプリケーションソフトウェアの起動指示が制御部11のオペレーティングシステムに対してなされたときに開始する。
本件アプリケーションソフトウェアの起動指示がなされると、位置選択部11Dが、タッチ操作領域Mを表示する位置についての選択処理を実行する(S101)。この選択処理によって、タッチスクリーン13の右位置と左位置とから、電子機器10の傾斜(水平面hに対するタッチスクリーン13の横軸Axの傾斜)に応じた位置が選択される。選択処理の詳細は、後において図11を参照しながら詳説する。タッチ操作領域Mの位置が選択されると、表示制御部11Cは、本件アプリケーションソフトウェアの初期画面において選択された位置に、タッチ操作領域Mを表示する(S102)。
次に、操作検知部11Bはシェイク操作がなされたか否かを判断する(S103)。上述したように、操作検知部11Bは、加速度センサ14Aの出力によって検知される加速度の時系列変化に基づいて単位シェイク操作を検知し、その単位シェイク操作の回数が2以上の閾値に達したときに、シェイク操作がなされた判断する。シェイク操作がなされた場合、位置更新部11Eは、電子機器10の傾斜に応じた方向にタッチ操作領域Mを移動する(S104)。タッチ操作領域Mの移動に係る処理は、後において図13を参照しながら詳説する。タッチ操作領域Mの移動が完了すると、位置更新部11Eは、移動後の位置を記憶部12に記憶させる(S105)。
次に、表示制御部11Cは、表示すべき新たなタッチ操作領域があるか否かを判断する(S106)。表示すべき新たなタッチ操作領域がある場合、表示制御部11Cは、記憶部12に記憶させた位置に、その新たなタッチ操作領域を表示する(S107)。
制御部11は、本件アプリケーションソフトウェアの終了指示を受けたか否かを判断する(S108)。この終了指示を受けた場合、制御部11は本件アプリケーションソフトウェアによる処理を終了する。一方、終了指示を未だ受けていない場合、制御部11はS103に戻り、以降の処理を再び実行する。
また、S103の処理において、シェイク操作がなされていない場合には、タッチ操作領域Mの移動に係るS104及びS105の処理を実行することなく、S106の処理を実行する。また、S106において、新たなタッチ操作領域がない場合には、S107の処理を行うことなく、本件アプリケーションソフトウェアの終了指示が生じたか否かを判断する(S108)。
図11は、図10のフロー図におけるS101で示される、タッチ操作領域Mを表示する位置についての選択処理の例を示すフロー図である。
姿勢検知部11Aは、加速度センサ14Aの出力を取得し(S201)、加速度センサ14Aの出力に基づいて、水平面hに対するタッチスクリーン13の横軸Axの傾斜を検知する(S202)。姿勢検知部11Aは、横軸Axの傾斜を表す値として、例えば、水平面hと横軸Axとの間の角度θx(図7B参照)を、横方向の加速度Fx(図7B参照)と重力加速度とに基づいて算出する。
位置選択部11Dは、横軸Axの傾斜を表す値と閾値とを比較する。例えば、位置選択部11Dは、まず、角度θxが正の閾値Th(+)より大きいか否かを判断する(S203)。ここで、角度θxが閾値Th(+)よりも大きい場合、位置選択部11Dは、右位置と左位置のうちの一方(例えば、左位置)を、タッチ操作領域Mを表示する位置として選択する(S204)。一方、角度θxが閾値Th(+)よりも大きくない場合、位置選択部11Dは、角度θxが負の閾値Th(−)よりも小さいか否かを判断する(S205)。ここで、角度θxが閾値Th(−)よりも小さい場合、位置選択部11Dは、右位置と左位置のうちの他方(例えば、右位置)を、タッチ操作領域Mを表示する位置として選択する(S206)。一方、角度θxが閾値Th(−)よりも小さくない場合、すなわち、角度θxの絶対値が閾値Thよりも小さい場合、位置選択部11Dは、タッチ操作領域Mを表示する位置として予め定められた位置を選択する(S207)。
予め定められた位置は、例えば、右位置であってよい。一般的に、右利きのユーザが多いので、予め定められた位置として右位置を設定することによって、多くのユーザにとって望ましい位置にタッチ操作領域Mが表示されることとなる。予め定められた位置の他の例は右位置と左位置との間の位置であってもよい。予め定められた位置は、本件アプリケーションソフトウェアの前回の動作において、タッチ操作領域が表示される位置として、記憶部12に最後に記録された位置であってもよい。
S204、S206、及びS207の処理においてタッチ操作領域を表示する位置が選択されると、位置選択部11Dは選択した位置を記憶部12に記録する(S208)。これにより、制御部11の処理は、図10で示すS102に戻る。
なお、タッチスクリーン13の横軸Axの傾斜を表す値は、必ずしも角度θxでなくてもよい。この値は、例えば、タッチスクリーン13の横方向に作用する加速度Fx自体であってもよい。この場合、位置選択部11Dは、S203において加速度Fxと正の閾値とを比較し、S205において加速度Fxと負の閾値とを比較してよい。さらに他の例として、タッチスクリーン13の横軸Axの傾斜を表す値として、横軸Axと重力方向との角度が利用されてもよい。この場合、横軸Axと重力方向との角度が閾値(閾値<π/2)より小さい場合、位置選択部11Dは、右位置と左位置のうちの一方を選択し、横軸Axと重力方向との角度が閾値(閾値>π/2)より大きい場合、位置選択部11Dは、右位置と左位置のうちの他方を選択してよい。
図12は、図10のS104で示されるタッチ操作領域Mの移動に係る処理の例を示すフロー図である。図11のS301からS307で示される処理(位置更新処理)は、S308において停止条件が成立したと判断されるまで、所定の周期Tcで繰り返し実行される。また、以下の説明において、(i−1)、(i)、(i+1)は、これらが付されている速度Vや加速度aが算出された位置更新処理を表す。例えば、速度V(i−1)は前回の位置更新処理で算出された速度Vであり、速度V(i)は今回の位置更新処理で算出された速度Vである。
図10で示すS103においてシェイク操作が検知されると、位置更新部11Eは、図9で例示するマップを参照し、タッチ操作領域Mの現在の位置X(i)での摩擦係数μ(i)を取得する(S301)。また、位置更新部11Eは、加速度センサ14Aの出力を取得し(S302)、その出力に基づいて、タッチスクリーン13の横軸Axと水平面hとの角度θxを算出する(S303)。位置更新部11Eは、角度θxと摩擦係数μ(i)とに基づいてタッチ操作領域Mの加速度a(i)を算出する(S304)。加速度a(i)は、例えば、次の式から算出され得る。
a(i)=G×sin(θx)−G×cos(θx)×μ(i) ・・・式(1)
ここで「G」は重力加速度である。
また、位置更新部11Eは、タッチ操作領域Mの速度V(i)を算出する(S305)。速度V(i)は、例えば、前回の位置更新処理(前回のS304)で算出された加速度a(i−1)と、周期Tcと、前回の位置更新処理(前回のS305)で算出された速度V(i−1)とに基づいて算出され得る。速度V(i)は、例えば、次の式から算出され得る。
V(i)=V(i−1)+a(i−1)×Tc ・・・式(2)
位置更新部11Eは、現在の位置X(i)と速度V(i)とに基づいて、次にタッチ操作領域Mを表示すべき位置X(i+1)を算出する(S306)。位置更新部11Eは、現在の位置X(i)と速度V(i)と加速度a(i)とに基づいて、次にタッチ操作領域Mを表示すべき位置X(i+1)を算出してもよい。位置X(i+1)は、例えば、次の式から算出され得る。
X(i+1)=X(i)+V(i)×Tc+[a(i)^2]/2 ・・・式(3)
位置更新部11Eは、位置X(i+1)にタッチ操作領域Mを表示する(S307)。そして、位置更新部11Eは、予め定めた停止条件が成立したか否かを判断する(S308)。停止条件は、例えば、タッチ操作領域Mの速度V(i)が閾値より低くなることである。停止条件の他の例は、タッチ操作領域Mが右位置又は左位置に達することである。停止条件が未だ成立していない場合、位置更新部11Eは、算出した位置X(i+1)を現在の位置X(i)とし、算出した速度V(i)を前回の速度V(i−1)とし、算出した加速度a(i)を前回の加速度a(i−1)とした上で(S309)、S301に戻り、以降の処理を再び実行する。
一方、S308において停止条件が成立している場合には、位置更新部11Eは位置更新処理を終了し、図11のフロー図で示した処理(S105)に戻る。
[第2の例]
なお、電子機器10は、図4A及び図4Bで示す姿勢(縦姿勢)だけでなく、図13A及び図13Bで示す姿勢(縦姿勢から90度だけ回転した姿勢)で使用されてもよい。この場合、タッチ操作領域Mの位置は、これらの図で示すように、タッチスクリーン13の縦方向において離れている2つの位置(右上位置と右下位置)とから選択されてもよい。
電子機器10は、図14A及び図14Bで示すように、電子機器10の上下が逆さになる姿勢(逆姿勢)で使用されてもよい。このとき、タッチスクリーン13に表示される画面(文字や画像)は逆さに表示されてよい。すなわち、タッチスクリーン13に表示される画面の向きは電子機器10に対してロックされていてよい。このような場合でも、タッチ操作領域Mはユーザの手に近い位置に表示されるとよい。すなわち、電子機器10が順姿勢にあるときにタッチスクリーン13の下部に表示されるタッチ操作領域(図4A及び図4Bで例示されるタッチ操作領域M)の位置は、電子機器10が逆姿勢にある場合、図14A及び図14Bで示すように、タッチスクリーン13の右上位置と左上位置とから選択されるとよい。
さらに他の例として、電子機器10が図15で示す縦姿勢で使用されている場合においても、電子機器10の傾斜に応じた斜め方向(左上方向や左下方向など)で離れている2つの位置からタッチ操作領域Mは選択されてよいし、タッチ操作領域Mは電子機器10の傾斜に応じた斜め方向で移動可能であってよい。図15において、符号Mpで表される破線の領域は、タッチ操作領域Mの候補位置である。
さらに他の例として、電子機器10が縦姿勢で使用されている場合においても、2つよりも多くの位置からタッチ操作領域Mは選択されてよい。例えば、図16で示すように、タッチスクリーン13の右側の領域Maと左側の領域Mbのうち電子機器10の傾斜に応じた領域が選択され、さらにその選択された領域のなかで、電子機器10の傾斜に応じた縦方向での位置に、タッチ操作領域Mは表示されてよい。
図13A、図13B、図14A、図14B、図15、図16で示す表示や、上述したタッチ操作領域Mの斜め方向での移動を可能とするために制御部11が実行する処理の例を、第2の例として説明する。以下では、これまで説明した制御部11の処理とは異なる点を中心にして説明する。第2の例による制御部11の処理について説明のない事項には、図3乃至図12を参照しながら説明した事項が適用されてよい。
[姿勢検知部]
姿勢検知部11A(図6参照)は、電子機器10の傾斜として、例えば、水平面hに対するタッチスクリーン13の横軸Axの傾斜に加えて、水平面hに対するタッチスクリーン13の縦軸Ay(図7A参照)の傾斜を検知する。(縦軸Ayは、タッチスクリーン13の縦方向に沿った軸である。)
姿勢検知部11Aは、例えば、加速度センサ14Aの出力によって検知される縦方向の加速度に基づいて、縦軸Ayの傾斜を表す値を取得する。この値は、横軸Axの傾斜を表す値と同様に、水平面hに対する縦軸Ayに対する角度でもよいし、重力方向に対する縦軸Ayの角度でもよいし、縦方向の加速度でもよい。
[位置選択部]
位置選択部11D(図6参照)は、例えば、タッチスクリーン13に規定されている4つの位置(具体的には、右上位置、右下位置、左上位置、及び左下位置)から、水平面hに対する横軸Axの傾斜と水平面hに対する縦軸Ayの傾斜とに基づいて、タッチ操作領域Mを表示する位置を選択する。右上位置と左上位置は、それぞれ右下位置と左下位置から縦方向における上側に離れた位置である。右上位置と右下位置は、それぞれ左上位置と左下位置から右方に離れた位置である。
右上位置は、図13A、図14Aで例示するように、例えば、縦方向に沿っている中心線C1の右側に規定され、且つ横方向に沿っている中心線C2の上側に規定される位置である。右下位置は、図15で示されるように、例えば、縦方向に沿っている中心線C1の右側に規定され、且つ横方向に沿っている中心線C2の下側に規定される位置である。左上位置は、図15で示されるように、例えば、縦方向に沿っている中心線C1の左側に規定され、且つ横方向に沿っている中心線C2の上側に規定される位置である。左下位置は、例えば、縦方向に沿っている中心線C1の左側に規定され、且つ横方向に沿っている中心線C2の下側に規定される位置である。タッチ操作領域Mは、中心線C1及び/又は中心線C2に、部分的に重なっていてもよい。
なお、これら4つの位置は、ここで説明した例に限られない。右上位置、右下位置、左上位置、及び左下位置の全てが中心線C1の右側(又は左側)に規定されてもよい。この場合、タッチ操作領域Mの位置は、中心線C1よりも右側(又は左側)の領域内で選択されることとなる。同様に、右上位置、左上位置、右下位置、及び左下位置の全てが中心線C2の上側(又は下側)に規定されてもよい。この場合、タッチ操作領域Mの位置は、中心線C2よりも上側(又は下側)の領域内で選択されることとなる。これらの場合でも、タッチ操作領域Mの位置が固定されている場合に比して、親指による操作性を向上できる。
電子機器10の傾斜によって、その左側(左上位置及び左下位置)より右側(右上位置及び右下位置)が低くなり、右下位置よりも右上位置が低くなる場合、位置選択部11Dは、タッチ操作領域Mを表示する位置として、右上位置を選択する。つまり、横方向と縦方向とにおいて水平面hに対する4つの位置の高さを比較したときに、横方向と縦方向の双方において他の3つの位置よりも低くなる位置を、位置選択部11Dはタッチ操作領域Mを表示する位置として選択する。
他の例として、位置選択部11D(図6参照)は、図16で示されるように、タッチスクリーン13の右側の領域Maと左側の領域Mbのうち、水平面hに対する横軸Axの傾斜に応じた領域を選択し、さらにその選択された領域のなかで、水平面hに対する横軸Ayの傾斜に応じた縦方向での位置を選択してもよい。
図17は、図10のフロー図におけるS101で示される、タッチ操作領域Mを表示する位置についての選択処理の変形例を示すフロー図である。ここでは、4つの位置(右上位置、左上位置、右下位置、及び左下位置)から、タッチ操作領域Mを表示する位置を選択する例について説明する。
姿勢検知部11Aは、加速度センサ14Aの出力を取得し(S401)、加速度センサ14Aの出力に基づいて、水平面hに対する横軸Axの傾斜と、水平面hに対する縦軸Ayの傾斜とを検知する(S402)。具体的には、姿勢検知部11Aは、水平面hに対する横軸Axの傾斜を表す値として、例えば水平面hと横軸Axとの間の角度θx(図7B参照)を算出し、水平面hに対する縦軸Ayの傾斜を表す値として、例えば水平面hと縦軸Ayとの間の角度θyを算出する。
次に、位置選択部11Dは、角度θxが正の閾値Th(+)より大きいか否かを判断する(S403)。ここで、角度θxが閾値Th(+)よりも大きい場合、位置選択部11Dは、例えば、タッチ操作領域Mを表示する位置の候補として、右側の2つの位置と左側の2つの位置のうち一方(例えば、左上位置と左下位置)を選択する(S404)。一方、角度θxが閾値Th(+)よりも大きくない場合、位置選択部11Dは、角度θxが負の閾値Th(−)よりも小さいか否かを判断する(S405)。ここで、角度θxが閾値Th(−)よりも小さい場合、位置選択部11Dは、タッチ操作領域Mを表示する位置の候補として、右側の2つの位置と左側の2つの位置のうち他方(例えば、右上位置と右下位置)を選択する(S406)。角度θxが閾値Th(−)よりも小さくない場合、すなわち、角度θxの絶対値が閾値Thよりも小さい場合、位置選択部11Dは、タッチ操作領域Mを表示する位置の候補として、予め定められた2つの位置を選択する(S407)。
予め定められた2つの候補は、例えば、右上位置と右下位置であってよい。一般的に、右利きのユーザが多いので、予め定められた候補として右上位置と右下位置とを選択することによって、多くのユーザにとって望ましい位置にタッチ操作領域Mが表示されることとなる。予め定められた候補の他の例は、右上位置と左上位置との間の位置と、右下位置と左下位置との間の位置であってもよい。
次に、位置選択部11Dは、算出した角度θyが正の閾値Th(+)より大きいか否かを判断する(S408)。ここで、角度θyが閾値Th(+)よりも大きい場合、位置選択部11Dは、例えば、上述した処理(S404、S406、S407)においてタッチ操作領域Mを表示する位置の候補として選択された2つの位置のなかから、下側の位置と上側の位置のうちの一方(例えば、下側に規定される右下位置又は左下位置)を選択する(S409)。一方、角度θyが閾値Th(+)よりも大きくない場合、位置選択部11Dは、角度θyが負の閾値Th(−)よりも小さいか否かを判断する(S410)。角度θyが閾値Th(−)よりも小さい場合、位置選択部11Dは、例えば、上述した処理(S404、S406、S407)においてタッチ操作領域Mを表示する位置の候補として選択された2つの位置のなかから、下側の位置と上側の位置のうちの他方(例えば、上側に規定される右上位置又は左上位置)を選択する(S411)。一方、角度θyが閾値Th(−)よりも小さくない場合、すなわち、角度θyの絶対値が閾値Thよりも小さい場合、位置選択部11Dは、タッチ操作領域Mを表示する位置の候補として、予め定められた位置を選択する(S412)。
予め定められた位置は、例えば、タッチ操作領域Mを表示する位置の候補として選択された2つの位置のうち下側の位置である。例えば、タッチ操作領域Mを表示する位置の候補として右上位置と右下位置とが選択されている場合、S412においては、右下位置が選択される。他の例として、タッチ操作領域Mを表示する位置の候補として、右上位置と左上位置との間の位置と、右下位置と左下位置との間の位置が選択されている場合には、S412においては右下位置と左下位置との間の位置が選択されてよい。
S409、S411、及びS412の処理においてタッチ操作領域を表示する位置が選択されると、位置選択部11Dは選択した位置を記憶部12に記憶させる(S413)。
制御部11が実行する処理は、図17で示す例に限られない。例えば、タッチスクリーン13の横軸Axの傾斜を表す値は、必ずしも角度θxでなくてもよい。この値は、例えば、タッチスクリーン13の横方向に作用する加速度Fx自体であってもよい。この場合、位置選択部11Dは、S403、S405において加速度Fxと閾値とを比較してよい。同様に、縦軸Ayの傾斜を表す値は、必ずしも角度θyでなくてもよい。この値は、例えば、タッチスクリーン13の縦方向に作用する加速度自体であってもよい。この場合、位置選択部11Dは、S408、S410において縦方向の加速度と閾値とを比較してよい。さらに他の例として、タッチスクリーン13の横軸Axの傾斜を表す値として、横軸Axと重力方向との角度が利用されてもよい。また、タッチスクリーン13の縦軸Ayの傾斜を表す値として、縦軸Ayと重力方向との角度が利用されてもよい。
また、タッチ操作領域Mを表示する位置の候補として、右側又は左側の2つの位置を選択する処理(S404、S406、S407)に代えて、横軸Axの傾斜と閾値とを比較する処理(S403及びS405)に続けて、縦軸Ayの傾斜と閾値とを比較する処理(S408及びS410)が実行されてもよい。
[位置更新部]
この第2の例においても、タッチ操作領域Mは、シェイク操作をきっかけとして移動可能であってよい。すなわち、タッチ操作領域Mは、現在これが表示されている位置(例えば、右下位置)から、電子機器10の傾斜に応じた方向に移動可能であってよい。この場合、位置更新部11Eは、所定の周期Tcで繰り返し実行する位置更新処理を、タッチスクリーン13の横方向と縦方向のそれぞれについて実行してよい。
図18は、第2の例による位置更新処理において算出される速度を説明するための図である。この図で示すように、位置更新部11Eは、1回の位置更新処理において、タッチスクリーン13の横方向におけるタッチ操作領域Mの速度Vxと、横方向における現在の位置(座標X(i))とに基づいて、横方向における次回の位置(座標X(i+1))を算出してよい。また、位置更新部11Eは、1回の位置更新処理において、タッチスクリーン13の縦方向におけるタッチ操作領域Mの速度Vyと、縦方向における現在の位置(座標Y(i))とに基づいて、縦方向における次回の位置(座標Y(i+1))を算出してよい。このような位置更新処理によって、タッチスクリーン13に表示されているタッチ操作領域Mを、現在これが表示されている位置から、電子機器10の傾斜に応じた任意の方向に動かすことができる。
タッチ操作領域Mの速度Vx、Vyのそれぞれは、姿勢検知部11Aによって検知される電子機器10の傾斜に依拠してよい。例えば、位置更新部11Eは、水平面hに対する横軸Axの傾斜に基づいて横方向の速度Vxを算出し、水平面hに対する縦軸Ayの傾斜に基づいて縦方向の速度Vyを算出してもよい。こうすることで、下り坂を転がる物のようにタッチ操作領域Mが移動するので、本件アプリケーションソフトウェアの直感的な操作性を向上できる。
位置更新部11Eは、タッチスクリーン13に規定される擬似的な摩擦に基づいて、タッチ操作領域Mの速度Vx、Vyを算出してもよい。より具体的には、位置更新部11Eは、水平面hに対する横軸Axの傾斜と摩擦とに基づいて、タッチ操作領域Mの速度Vxを算出し、水平面hに対する縦軸Ayの傾斜とに基づいて摩擦と、タッチ操作領域Mの速度Vxを算出してよい。こうすれば、ユーザは、例えば電子機器10の傾斜を小さくすることで、タッチ操作領域の移動に対する抵抗を相対的に大きくでき、タッチ操作領域Mの速度を下げることができるので、横方向及び縦方向のいずれについても、ユーザが望む位置(座標)にタッチ操作領域Mを止めることができる。
タッチスクリーン13には、摩擦を得るための擬似的な摩擦係数が規定されていてもよい。摩擦、及び摩擦係数は、例えば次式で表される。
横方向の摩擦=G×cos(θx)×μ ・・・式(4a)
縦方向の摩擦=G×cos(θy)×μ ・・・式(4b)
ここで「G」は重力加速度であり、「θx」は水平面hに対する横軸Axの角度であり、「θy」は水平面hに対する横軸Axの角度であり、「μ」は摩擦係数である。
摩擦或いは摩擦係数は、タッチスクリーン13上の位置(座標)に応じて決められてもよい。例えば、位置更新部11Eは、摩擦又は摩擦係数とタッチスクリーン13上の位置(座標)とを対応づけるマップを参照し、タッチ操作領域Mの現在の位置に対応する摩擦又は摩擦係数を取得してよい。そして、位置更新部11Eは、取得した摩擦又は摩擦係数と電子機器10の傾斜とに基づいてタッチ操作領域Mの速度Vx、Vyを算出してよい。
図19は、このようなマップの例を示す図である。タッチ操作領域Mが表示され得る4つの位置に対応する領域E2では相対的に高い摩擦係数が規定され、その他の領域E1では相対的に低い摩擦係数が規定されている。このような摩擦係数によると、タッチ操作領域Mが右上位置、右下位置、左上位置、又は左下位置に近づくに従って、タッチ操作領域Mの速度が低くなる。また、領域E1においても摩擦係数が設定されているので、ユーザは、タッチ操作領域Mの移動中に電子機器10の傾斜を調整することによって、これら4つの位置の間の任意の位置にタッチ操作領域Mを止めることができる。領域E1に規定されている摩擦係数は0であってもよい。
図20は、図10のS104で示される、タッチ操作領域Mの移動に係る処理の変形例を示すフロー図である。図20で示す処理は、タッチスクリーン13の縦方向の位置、速度、及び加速度を算出する点で図12のフロー図で示す処理とは相違し、その他の点では同じである。
シェイク操作が検知されると、位置更新部11Eは、図19で例示するマップを参照し、タッチ操作領域Mの現在の位置(X(i)、Y(i))での摩擦係数μ(i)を取得する(S501)。また、位置更新部11Eは、加速度センサ14Aの出力を取得し(S502)、その出力に基づいて、タッチスクリーン13の横軸Axと水平面hとの角度θxと、縦軸Ayと水平面hとの角度θyとを算出する(S503)。位置更新部11Eは、角度θxと摩擦係数μ(i)とに基づいてタッチ操作領域Mの加速度ax(i)を算出し、角度θyと摩擦係数μ(i)とに基づいてタッチ操作領域Mの加速度ay(i)を算出する(S504)。加速度ax(i)、ay(i)の算出には、例えば次式を利用できる。
ax(i)=G×sin(θx)−G×cos(θx)×μ(i) ・・・式(5a)
ay(i)=G×sin(θy)−G×cos(θy)×μ(i) ・・・式(5b)
また、位置更新部11Eは、タッチ操作領域Mの速度Vx(i)、Vy(i)を算出する(S505)。速度Vx(i)は、例えば、前回の位置更新処理(前回のS504)で算出された加速度ax(i−1)と、周期Tcと、前回の位置更新処理(前回のS505)で算出された速度Vx(i−1)とに基づいて算出され得る。同様に、速度Vy(i)は、例えば、前回の位置更新処理(前回のS504)で算出された加速度ay(i−1)と、周期Tcと、前回の位置更新処理(前回のS505)で算出された速度Vy(i−1)とに基づいて算出され得る。速度Vx(i)、Vy(i)の算出には、例えば次式を利用できる。
Vx(i)=Vx(i−1)+ax(i−1)×Tc ・・・式(6a)
Vy(i)=Vy(i−1)+ay(i−1)×Tc ・・・式(6b)
位置更新部11Eは、横方向における現在の位置X(i)と速度Vx(i)とに基づいて、次にタッチ操作領域Mを表示すべき位置X(i+1)を算出し、縦方向における現在の位置Y(i)と速度Vy(i)とに基づいて、次にタッチ操作領域Mを表示すべき位置Y(i+1)を算出する(S506)。次の位置(X(i+1)・Y(i+1))の算出には、例えば次式を利用できる。
X(i+1)=X(i)+Vx(i)×Tc+[ax(i)^2]/2 ・・・式(7a)
Y(i+1)=Y(i)+Vy(i)×Tc+[ay(i)^2]/2 ・・・式(7b)
このように、S505の処理とS506の処理とによって、横方向におけるタッチ操作領域Mの速度及び位置を算出し、縦方向におけるタッチ操作領域Mの速度及び位置を算出するので、タッチスクリーン13に沿った斜め方向(例えば、左上方向や左下方向など)にタッチ操作領域Mを移動させることができる。
位置更新部11Eは、位置(X(i+1)、Y(i+1))にタッチ操作領域Mを表示する(S507)。そして、位置更新部11Eは、予め定めた停止条件が成立したか否かを判断する(S508)。ここで、停止条件は、例えば、タッチ操作領域Mの速度Vx(i)・Vy(i)のそれぞれが閾値より低くなることである。停止条件の他の例は、タッチ操作領域Mが右下位置、左下位置、右上位置、左上位置のいずれかに達することである。
停止条件が未だ成立していない場合、位置更新部11Eは、算出した位置(X(i+1)、Y(i+1))を現在の位置(X(i)、Y(i))とし、算出した速度Vx(i)、Vy(i)を前回の速度Vx(i−1)、Vy(i−1)とし、算出した加速度ax(i)、ay(i)を前回の加速度a(i−1)、ay(i−1)とした上で(S509)、S501に戻り、以降の処理を再び実行する。一方、S508において停止条件が成立している場合には、位置更新部11Eは位置更新処理を終了し、図10のフロー図で示した処理(S105)に戻る。
なお、水平面hに対する横軸Axの傾斜は、上述したように、横軸Axの方向において電子機器10に作用する加速度で表されてもよい。また、水平面hに対する縦軸Ayの傾斜は、上述したように、縦軸Ayの方向において電子機器10に作用する加速度で表されてもよい。この場合、タッチ操作領域Mの加速度ax(i)・ay(i)は、電子機器10に作用する加速度で算出されてもよい。例えば、式(5a)及び式(5b)に替えて以下の式が利用されてもよい。
ax(i)=Gx−kx×μ(i) ・・・式(8a)
ay(i)=Gy−ky×μ(i) ・・・式(8b)
式(8a)と式(8b)とにおいて、GxとGyは、それぞれ、横方向において電子機器10に作用する加速度と、縦方向において電子機器10に作用する加速度である。係数kxと係数kyは、加速度Gx・Gyが大きくなるに従って小さくなる値である。したがって、加速度Gx・Gyが小さくなるに従って、摩擦係数μ(i)の影響が相対的に大きくなり、タッチ操作領域Mの加速度ax(i)・ay(i)は小さくなる。タッチ操作領域Mの速度や位置の算出には、上述した式(6a)〜式(7b)が利用されてよい。
[まとめ]
以上説明したように、制御部11は、その機能として、重力方向に対して垂直な水平面hに対する電子機器10の傾斜を、電子機器10に搭載されたセンサ14Aの出力を利用して検知する姿勢検知部11Aと、タッチスクリーン13に対するタッチ操作を受け付ける領域であるタッチ操作領域Mを表示する位置を選択する位置選択部11Dとを有している。位置選択部11Dは、タッチスクリーン13の横方向において離れている右位置と左位置とから、水平面hに対する横軸Axの傾斜に基づいて、タッチ操作領域Mを表示する位置を選択する。これによると、電子機器10を片手で操作する場合に、ユーザの直感的な動作でタッチ操作領域Mを適切な位置に表示できる。
以上説明したように、制御部11は、その機能として、電子機器10に対してなされたシェイク操作を検知する操作検知部11Bと、電子機器10の姿勢を検知する姿勢検知部11Aと、タッチスクリーン13に対するタッチ操作を受け付ける領域であってタッチスクリーン13に表示されているタッチ操作領域Mを、シェイク操作が検知された場合に、電子機器10の姿勢に応じた方向に移動する位置更新部11Eとを有している。これによると、片手だけで可能な簡単な操作でユーザが望む方向にタッチ操作領域を移動できる。
[変形例]
なお、本開示で提案する電子機器、プログラム、及び電子機器の制御方法は、これまで説明した電子機器10で実現されている例に限られない。
例えば、位置選択部11Dを有する制御部11において、位置更新部11Eは設けられていなくてもよい。反対に、位置更新部11Eを有する制御部11において、位置選択部11Dは設けられていなくてもよい。この場合、タッチ操作領域Mは、最初は予め規定された位置(例えば、右位置、右下位置、右上位置)に表示されてよい。
また、位置選択部11Dの処理において、水平面hに対する軸Ax、Ayの傾斜と比較する閾値は必ずしも利用されていなくてもよい。この場合、例えば、水平面hに対する軸Ax、Ayの傾斜を表す値の符号(+と−)とに応じて、タッチ操作領域Mを表示する位置が選択されてよい。
また、摩擦や、摩擦係数、電子機器10の傾斜を利用してタッチ操作領域Mの速度を算出する処理は、シェイク操作を検知しない電子機器において実行されてもよい。すなわち、摩擦や、摩擦係数、電子機器10の傾斜を利用してタッチ操作領域Mの速度を算出する処理は、シェイク操作とは独立して実行されてもよい。