(57)【特許請求の範囲】
【請求項１】
タッチパネルへタッチしたまま移動する操作の軌跡における複数のタッチ位置を取得する取得手段と、
前記取得手段で取得した前記複数のタッチ位置に基づく判定条件を用いて、前記操作による操作方向を判定する判定手段と、
前記判定手段によって判定された操作方向に応じて、該操作方向に対して予め設定された動作を行うように制御する制御手段と、
前記判定手段によって判定された操作方向を記録するように制御する記録制御手段と、
前記記録制御手段によって記録された操作方向に基づいて、前記判定条件を、該記録された操作方向が判定された前記操作のタッチが離された後のタッチ操作の操作方向を判定するために変更する変更手段とを有することを特徴とする情報処理装置。
【請求項２】
前記判定手段は、前回の前記操作でのタッチの終了後に特定の時間が経過する前に再びタッチパネルへタッチしたまま移動する操作があった場合には前記記録された操作方向に基づいて前記変更手段で変更された前記判定条件を用いて操作方向を判定し、前回の前記操作でのタッチの終了後に特定の時間が経過した後にタッチパネルへタッチしたまま移動する操作があった場合には、前記変更手段によって変更されていない前記判定条件を用いて操作方向を判定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記変更手段は、前記記録された操作方向と平行な方向が、他の方向と比べて前記判定手段で操作方向として判定されやすくなるように前記判定条件を変更することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記変更手段は、前記記録された操作方向と平行な方向が、他の方向と比べて前記判定手段で操作方向として判定され難くなるように前記判定条件を変更することを特徴とする請求項１または２に記載の情報処理装置。
【請求項５】
前記変更手段は、前記記録された操作方向と同じ方向が、他の方向と比べて前記判定手段で操作方向として判定されやすくなるように前記判定条件を変更することを特徴とする請求項１または２に記載の情報処理装置。
【請求項６】
前記変更手段は、前記記録された操作方向と同じ方向が、他の方向と比べて前記判定手段で操作方向として判定され難くなるように前記判定条件を変更することを特徴とする請求項１または２に記載の情報処理装置。
【請求項７】
前記変更手段は、前記記録された操作方向と同じ方向の操作に応じた動作と、該操作方向と反対の方向の操作に応じた動作とが、同じ機能に関して増減関係あるは昇降関係となっている場合には、記録された操作方向と平行な方向が、他の方向と比べて前記判定手段で操作方向として判定されやすくなるように前記判定条件を変更し、
前記記録された操作方向に対する操作に応じた動作と、該操作方向と反対の操作方向に対する操作に応じた動作とが、同じ機能に関して増減関係あるは昇降関係となっていない場合には、記録された操作方向と同じ方向が、他の方向と比べて前記判定手段で操作方向として判定されやすくなるように前記判定条件を変更することを特徴とする請求項１または２に記載の情報処理装置。
【請求項８】
前記情報処理装置の動作モードが第１のモードである場合には前記変更手段による変更を行い、前記情報処理装置の動作モードが第２のモードである場合には前記変更手段による変更を行わないことを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記第２のモードは、どの操作方向に応じた動作も同一の表示対象の表示部分を変更する動作であるモードと、どの操作方向に応じた動作も増減関係あるは昇降関係となっていない動作モードとの少なくとも一方を含むことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
タッチパネルからの入力に応じた制御を行う情報処理装置の制御方法であって、
タッチパネルへタッチしたまま移動する操作の軌跡における複数のタッチ位置を取得する取得ステップと、
前記取得ステップで取得した前記複数のタッチ位置に基づく判定条件を用いて、前記操作による操作方向を判定する判定ステップと、
前記判定ステップによって判定された操作方向に応じて、該操作方向に対して予め設定された動作を行うように制御する制御ステップと、
前記判定ステップによって判定された操作方向を記録するように制御する記録制御ステップと、
前記記録制御ステップによって記録された操作方向に基づいて、前記判定条件を、該記録された操作方向が判定された前記操作のタッチが離された後のタッチ操作の操作方向を判定するために変更する変更ステップと
を有することを特徴とする情報処理装置の制御方法。
【請求項１１】
コンピュータを、請求項１乃至９のいずれか１項に記載された情報処理装置の各手段として機能させるためのプログラム。
【請求項１２】
コンピュータを、請求項１乃至９のいずれか１項に記載された情報処理装置の各手段として機能させるためのプログラムを格納したコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はタッチパネルでの操作により動作を制御可能な情報処理装置に関するものである。
【背景技術】
【０００２】
近年、表示部にタッチパネルを備え、直感的な操作が可能となったデジタル機器が登場している。このような機器では、タッチパネルで構成される表示画面上に置かれているボタンアイコンに対するタッチ操作で、ボタンアイコンに割り当てられた機能を実行させるものが一般的に用いられている。また、タッチパネルを指やペンで触れたまま移動した際のタッチ位置の軌跡に基づいた制御も行われている。
【０００３】
タッチ位置の軌跡に基づいた制御として、特許文献１には、タッチパネル上の指の移動に追随して表示部に表示させたイメージをスクロールさせ、タッチパネルから指を離した時から、スクロール速度を徐々に減少させ、スクロールを停める技術が開示されている。
【０００４】
特許文献２には、表示装置の水平方向の辺に対するタッチパネルへのタッチ位置の軌跡の角度を検出し、その角度が予め設定された角度以内であれば水平方向へ画像をスクロールさせることが開示されている。また、表示装置の垂直方向の辺に対するタッチパネルへのタッチ位置の軌跡の角度も検出し、その角度が予め設定された角度以内であれば垂直方向へ画像をスクロールさせることが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開昭６３−１７４１２５号公報
【特許文献２】特開２００５−４４０３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら従来は、タッチ位置の軌跡の角度に基づいて操作方向を判定して制御を行う際、判定され得る複数の操作方向に対して均等に設定された条件で操作方向を判定し、各操作方向に割り当てられた制御を実行していた。そのため、ユーザのタッチ操作が曖昧な角度で行われた場合、ユーザの意図しない方向に割り当てられた制御が実行される誤動作を生じる場合があった。例えば図７に示すように、ユーザが指７０１で始点７０３から終点７０４に向かって軌跡７０５の通りに円弧状にタッチパネル７０２上をなぞる操作を行った場合を考える。この場合、ユーザは上から下へ向かう下方向への操作を行ったものと考えられる。しかし、始点７０３付近においてはタッチ位置の軌跡は上から下へ向かう成分よりも左から右へ向かう成分のほうが大きくなっているため、装置は左から右へ向かう右方向への操作であると判定し、右方向へ割り当てられた制御が実行されてしまう場合があった。
【０００７】
そこで本発明では、上記課題に鑑み、タッチパネルへのタッチ位置の軌跡に基づいた制御において、ユーザが意図した操作をより的確に認識できるようにした情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明の情報処理装置は、
タッチパネルへタッチしたまま移動する操作の軌跡における複数のタッチ位置を取得する取得手段と、
前記取得手段で取得した前記複数のタッチ位置に基づく判定条件を用いて、前記操作による操作方向を判定する判定手段と、
前記判定手段によって判定された操作方向に応じて、該操作方向に対して予め設定された動作を行うように制御する制御手段と、
前記判定手段によって判定された操作方向を記録するように制御する記録制御手段と、前記記録制御手段によって記録された操作方向に基づいて、前記判定条件を、該記録された操作方向が判定された前記操作のタッチが離された後のタッチ操作の操作方向を判定するために変更する変更手段と
を有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、タッチパネルへのタッチ位置の軌跡に基づいた制御において、ユーザが意図した操作をより的確に認識することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明の情報処理装置１００の構成ブロック図である。
【図２】本発明の第１の実施形態におけるＧＵＩ画面の表示例である。
【図３】本発明の第１の実施形態におけるＣＰＵの処理を表すフローチャートである。
【図４】本発明の第２の実施形態におけるＧＵＩ画面の表示例である。
【図５】本発明の第２の実施形態におけるＣＰＵの処理を表すフローチャートである。
【図６】本発明を適用した例としてのビデオカメラの外観図である。
【図７】操作方向が誤判定される恐れのあるタッチ操作の例を説明する図である。
【発明を実施するための形態】
【００１１】
以下、図を参照しながらこの発明による装置、方法の形態について説明する。
【００１２】
＜ハードウェア＞
図１は、本発明の各実施形態を適用可能な情報処理装置１００の構成を示す。
図１において、内部バス１１１に対してＣＰＵ１０１、フラッシュメモリ１０２、ＲＡＭ１０３、表示制御部１０４、ディスプレイ１０５、入力部１０７、入力部１０７に含まれるタッチパネル１０６、ドライブ装置１０８および通信Ｉ／Ｆ１１０が接続される。内部バス１１１に接続される各部は、内部バス１１１を介して互いにデータのやりとりを行うことができるようにされている。
【００１３】
フラッシュメモリ１０２は、不揮発メモリであり、画像データやその他のデータ、ＣＰＵ１０１が動作するための各種プログラムなどが格納される。ＲＡＭ１０３は、揮発性のワークメモリである。ＣＰＵ１０１は、例えばフラッシュメモリ１０２に格納されるプログラムに従い、ＲＡＭ１０３をワークメモリとして用いて、この情報処理装置１００の各部を制御する。なお、ＣＰＵ１０１が動作するためのプログラムは、フラッシュメモリ１０２に格納されるのに限られず、例えば図示されないＲＯＭやハードディスクに予め記憶しておいてもよい。
【００１４】
入力部１０７は、ユーザ操作を受け付け、操作に応じた制御信号を生成し、ＣＰＵ１０１に供給する。例えば、入力部１０７は、ユーザ操作を受け付ける入力デバイスとして、キーボードといった文字情報入力デバイスや、マウスやタッチパネル１０６といったポインティングデバイスなどを有する。なお、タッチパネル１０６は、例えば平面的に構成された入力部に対して接触された位置に応じた座標情報が出力されるようにした入力デバイスである。ＣＰＵ１０１は、入力デバイスに対してなされたユーザ操作に応じて入力部１０７で生成され供給される制御信号に基づき、プログラムに従いこの情報処理装置１００の各部を制御する。これにより、情報処理装置１００に対し、ユーザ操作に応じた動作を行わせることができる。
【００１５】
表示制御部１０４は、ディスプレイ１０５に対して画像を表示させるための表示信号を出力する。例えば、表示制御部１０４に対して、ＣＰＵ１０１がプログラムに従い生成した表示制御信号が供給される。表示制御部１０４は、この表示制御信号に基づき表示信号を生成してディスプレイ１０５に対して出力する。例えば、表示制御部１０４は、ＣＰＵ１０１が生成する表示制御信号に基づき、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を構成するＧＵＩ画面をディスプレイ１０５に対して表示させる。
【００１６】
タッチパネル１０６はディスプレイ１０５と一体的に構成される。例えば、タッチパネル１０６を光の透過率がディスプレイ１０５の表示を妨げないように構成し、ディスプレイ１０５の表示面の上層に取り付ける。そして、タッチパネル１０６における入力座標と、ディスプレイ１０５上の表示座標とを対応付ける。これにより、恰もユーザがディスプレイ１０５上に表示された画面を直接的に操作可能であるかのようなＧＵＩを構成することができる。
【００１７】
ドライブ装置１０８は、ＣＤやＤＶＤ、メモリーカードといった外部記憶媒体１０９が装着可能とされ、ＣＰＵ１０１の制御に基づき、装着された外部記憶媒体１０９からのデータの読み出しや、当該外部記憶媒体１０９に対するデータの書き込みを行う。通信インターフェイス（Ｉ／Ｆ）１１０は、ＣＰＵ１０１の制御に基づき、ＬＡＮやインターネットといったネットワーク１２０に対する通信を行う。
【００１８】
なお、ＣＰＵ１０１はタッチパネル１０６への以下の操作を検出できる。タッチパネルを指やペンで触れたこと（以下、タッチダウンと称する）。タッチパネルを指やペンで触れている状態であること（以下、タッチオンと称する）。タッチパネルを指やペンで触れたまま移動していること（以下、ムーブと称する）。タッチパネルへ触れていた指やペンを離したこと（以下、タッチアップと称する）。タッチパネルに何も触れていない状態（以下、タッチオフと称する）。これらの操作や、タッチパネル上に指やペンが触れている位置座標は内部バス１１１を通じてＣＰＵ１０１に通知され、ＣＰＵ１０１は通知された情報に基づいてタッチパネル上にどのような操作が行なわれたかを判定する。ムーブについてはタッチパネル上で移動する指やペンの移動方向についても、位置座標の変化に基づいて、タッチパネル上の垂直成分・水平成分毎に判定できる。またタッチパネル上をタッチダウンから一定のムーブを経てタッチアップをしたとき、ストロークを描いたこととする。素早くストロークを描く操作をフリックと呼ぶ。フリックは、タッチパネル上に指を触れたままある程度の距離だけ素早く動かして、そのまま離すといった操作であり、言い換えればタッチパネル上を指ではじくように素早くなぞる操作である。所定距離以上を、所定速度以上でムーブしたことが検出され、そのままタッチアップが検出されるとフリックが行なわれたと判定できる。また、所定距離以上を、所定速度未満でムーブしたことが検出された場合はドラッグが行なわれたと判定するものとする。タッチパネル１０６は、抵抗膜方式や静電容量方式、表面弾性波方式、赤外線方式、電磁誘導方式、画像認識方式、光センサ方式等、様々な方式のタッチパネルのうちいずれの方式のものを用いても良い。
＜第１の実施形態＞
第１の実施形態では、水平方向、垂直方向のフリック操作によってそれぞれ異なる方向へ画像のスクロールを行う場合に、連続したフリック操作に対しては前回方向と同じ方向を操作方向として判定しやすくする例を述べる。
【００１９】
図２（ａ）〜（ｃ）は第１の実施形態におけるディスプレイ１０５へのＧＵＩの表示例である。図２（ａ）〜（ｃ）において、図中左上に示した座標系が示すとおり、左から右をＸ正方向、右から左をＸ負方向、上から下をＹ正方向、下から上をＹ負方向とする。また、Ｘ正負方向を水平方向、Ｙ正負方向を垂直方向と称する。図２（ａ）は、フラッシュメモリ１０２内などに保存されている画像を、その撮影日毎に並べたものである。垂直方向には同一の日に撮影された画像が手前から奥行き方向を模したＹ負方向に行くに従って撮影時刻の新しい画像となるように並べられており、ここでは画像列と呼ぶ。水平方向には、左側から右側に行くに従って、撮影日時の新しい画像列となるように並べられている。また、日付表示２０４は中央の画像列の撮影日時を示す表示である。日付表示２０４は中央に配列された画像列である画像列２０１が２００９年１１月７日に撮影された画像を並べた画像列であることを表している。従って画像列２０２は２００９年１１月７日より前のある日に撮影された画像を並べた画像列であり、画像列２０３は２００９年１１月７日より後のある日に撮影された画像を並べた画像列である。
【００２０】
この画面でタッチパネル１０６によりフリック操作を行った場合、ＣＰＵ１０１はその方向を判別し、次のような制御を行う。上にフリックを行った場合には中央の画像列に表示されている画像を奥行き方向に一枚スクロールさせ、下にフリックを行った場合には逆に手前方向に一枚スクロールさせる。つまり、上にフリックを行った場合は中央列の画像列内でのより新しい画像を表示する操作となり、下にフリックを行った場合はより古い画像を表示する操作となる。また、左にフリックを行った場合には画像列を左に一列スクロールさせ、右にフリックを行った場合には画像列を右に一列スクロールさせる。つまり、左にフリックを行った場合はこれまで中央列に表示していた画像列より新しい日付の画像列を中央列に表示し、右にフリックを行った場合はこれまで中央列に表示していた画像列より古い日付の画像列を中央列に表示する。
【００２１】
図２（ｂ）は図２（ａ）の画面の状態から左にフリックを行った場合にディスプレイ１０５に表示される画面である。図２（ｂ）では、図２（ａ）で中央列に表示されていた２００９年１１月７日の画像列２０１が左に一列移動し、かわりに画像列２０３が中央に表示されている。
【００２２】
図２（ｃ）は図２（ａ）の画面の状態から下にフリックを行った場合にディスプレイ１０５に表示される画面である。中央の画像列２０１に含まれる画像のうち、図２（ａ）で最下段に表示されていた画像が表示されなくなり、画像列２０１の中段に表示されていた画像が画像列２０１の下段に、画像列２０１の上段に表示されていた画像が画像列２０１の中段に表示されている。
【００２３】
このようにタッチパネル上をフリックする方向によって機器の動作が決定される場合、従来では前述した図７のようにユーザの意図と実際のタッチパネル上のフリックの軌跡の方向が異なる場合が発生する。その場合、ユーザの意図とは異なる動作が実行されてしまうこととなる。特に同じ操作を連続して素早く行う場合においては、一回目のフリック操作は方向を意識していても、回数を重ねる毎に徐々にユーザが操作する方向が乱れてしまうことが多い。これに対し本実施の形態では、連続したフリック操作では前回のフリック方向と同じ方向をフリック方向として判定しやすくすることで、ユーザの意図した方向をより的確に判定するように制御する。ここで、フリック方向とは、ユーザが行ったフリック操作に基づいて情報処理装置１００が判定する操作方向であるものとし、情報処理装置１００はフリック方向に割り当てれれた動作を実行するものとする。以下では、これを実現する処理をフローチャートを用いて説明する。
【００２４】
図３は第１の実施形態におけるフリック方向の判定処理のフローチャートである。このフローチャートにおける各処理は、ＣＰＵ１０１がフラッシュメモリ１０２に記録されたプログラムをＲＡＭ１０３に展開して実行することにより実現される。
【００２５】
図３の処理は、入力部１０７に含まれる操作部の操作などによって、図２（ａ）の表示を行うモードへの移行が指示されると開始される。
Ｓ３０１では、ＣＰＵ１０１はまず初期表示を行う。フラッシュメモリ１０２から表示すべき画像を読み出し、ディスプレイ１０５に前述した図２（ａ）のように画像を配列して表示させる。
【００２６】
Ｓ３０２では、ＲＡＭ１０３に保持され、フリック操作の速度の累積をするための変数ＩＸ，ＩＹを、初期値として０にセットする。変数ＩＸ，ＩＹについては後述する。
【００２７】
Ｓ３０３で、ＣＰＵ１０１はタッチパネル１０６が指やペンなどで触れられた状態であるか否か、すなわちタッチオンであるか否かを判定する。ここでの判定は、タッチオフからタッチオンとなったか否かの判定であるので、実質タッチダウンがあったか否かの判定である。タッチオンであればＣＰＵ１０１はＳ３０４へ処理を進め、そうでなければＳ３２８へ処理を進める。
【００２８】
Ｓ３０４で、ＣＰＵ１０１はタッチパネル１０６でタッチオンとなっているタッチ位置の座標を取得し、ＲＡＭ１０３に（Ｘ１，Ｙ１）として記録する。
【００２９】
Ｓ３０５では、一定時間経過するまで待つ。ここでＣＰＵ１０１が一定時間の経過を待つのは、Ｓ３０２でのタッチオン検出時から次にタッチオンを検出するまでの間に時間をおくことによって、その間のタッチパネル入力座標の変化からムーブの速度を算出するためである。  ここでの一定時間は数十〜数百ｍｓｅｃ程度である。一定時間経過後、ＣＰＵ１０１はＳ３０６へ処理を進める。
【００３０】
Ｓ３０６では、Ｓ３０３と同様に、ＣＰＵ１０１はタッチオンであるか否かを判定する。タッチオンであればＣＰＵ１０１はＳ３０７へ処理を進め、そうでなければフリック操作あるいはドラッグ操作は行われていなかったことを示し、Ｓ３２６へ進む。
【００３１】
Ｓ３０７で、ＣＰＵ１０１はタッチパネル１０６でタッチオンとなっているタッチ位置の座標を取得し、ＲＡＭ１０３に（Ｘ２，Ｙ２）として記録する。これによって、（Ｘ１，Ｙ１）と合わせてタッチパネル１０６にタッチしたまま移動する操作における複数のタッチ位置を取得したこととなる。
【００３２】
Ｓ３０８で、ＣＰＵ１０１はＳ３０４、Ｓ３０７で取得した座標情報をもとに、タッチオン状態でのタッチ位置の移動における水平方向の速度と垂直方向の速度を算出する。水平方向の速度はＸ２−Ｘ１、垂直方向の速度はＹ２−Ｙ１で算出することができる。算出した速度は、それぞれＶＸ、ＶＹという変数としてＲＡＭ１０３に格納する。なお、正確な速度はＸ２−Ｘ１、Ｙ２−Ｙ１をＳ３０５で待つ一定時間でそれぞれ除算することで求まるので、速度をそのように算出してももちろん良い。ただしＳ３０５で待つ時間を一定時間としているため、除算してもしなくてもＸ方向の速度とＹ方向の速度の比較や、時間的に異なるある時点の速度と他の時点の速度との比較においては影響がない。そのため本実施の形態では時間で除算することを省略している。その後、ＣＰＵ１０１はＳ３０９へ処理を進める。
【００３３】
Ｓ３０９で、ＣＰＵ１０１は後述するＳ３２５でスタートしたタイマーがタイムアウトして０となっているか否かを判定する。このタイマーは、最後に左右方向へ画像列のスクロールあるいは上下方向への画像のスクロールを行ってからの経過時間を判定するためのタイマーであり、０であれば前回のスクロール動作から一定時間以上経過していると判断され、Ｓ３１０へ処理を進める。そうでなければ前回のスクロール動作からの経過時間が一定時間未満であると判断され、Ｓ３１１へ処理を進める。
【００３４】
Ｓ３１０で、ＣＰＵ１０１は後述するＳ３１４での判断に使用する変数Ａと変数Ｂのどちらにも１を格納する。この変数Ａ、変数Ｂはそれぞれ水平方向、垂直方向の速度の重み付けを変更するための変数であり、これらの値が１より大きくなるほど、フリック方向をそれぞれ水平方向、垂直方向と判定しやすくなる。その後、ＣＰＵ１０１はＳ３１４へ処理を進める。
【００３５】
一方、Ｓ３１１では、ＣＰＵ１０１はＲＡＭ１０３に記憶されている前回操作のフリック方向（前回判定された方向）を読み出し、前回のフリック方向が水平方向であるか否かを判定する。前回のフリック方向が水平方向であればＳ３１２へ、そうでなければ前回のフリック方向は垂直方向であるとみなしＳ３１３へ処理を進める。
【００３６】
Ｓ３１２では、ＣＰＵ１０１は後述するＳ３１４での判断に使用する変数Ａに２を、変数Ｂに１を格納する。この結果、後述するＳ３１４でフリック方向を水平方向と判定しやすくなる。その後、ＣＰＵ１０１はＳ３１４へ処理を進める。
Ｓ３１３では、ＣＰＵ１０１は後述するＳ３１４での判断に使用する変数Ａに１を、変数Ｂに２を格納する。この結果、後述するＳ３１４でフリック方向を垂直方向と判定しやすくなる。その後、ＣＰＵ１０１はＳ３１４へ処理を進める。
【００３７】
Ｓ３１４では、ＣＰＵ１０１は、Ｘ方向の速度成分の絶対値に重み付けの変数Ａを乗算した値である｜ＶＸ｜×Ａと、Ｙ方向の速度成分の絶対値に重み付けの変数Ｂを乗算した値である｜ＶＹ｜×Ｂの大きさを比較し、どちらが大きいかを判定する。｜ＶＸ｜と｜ＶＹ｜はそれぞれタッチパネル１０６にタッチしたまま移動する操作による複数のタッチ位置に基づいた値である。従って｜ＶＸ｜×Ａ≧｜ＶＹ｜×Ｂというフリック方向の判定条件は、タッチパネル１０６にタッチしたまま移動する操作による複数のタッチ位置に基づいた条件である。｜ＶＸ｜×Ａが｜ＶＹ｜×Ｂ以上であれば、Ｓ３１５へ処理を進め、そうでなければＳ３２０へ処理を進める。
【００３８】
Ｓ３１５では、ＣＰＵ１０１はＲＡＭ１０３に保持している変数ＩＸにＩＸ×０．９＋ＶＸを格納する。ここでＩＸは、水平方向へのフリックの速度を累積するための変数である。これまでの累積値に対して０．９を乗算しているのは、速度が小さい場合には累積値が減少していくようにし、遅い速度でフリックと判定してしまわないようにするためである。その後、ＣＰＵ１０１はＳ３１６へ処理を進める。
【００３９】
Ｓ３１６で、ＣＰＵ１０１は｜ＩＸ｜があらかじめ決められたフリック閾値より大きいか否かを判定し、大きければ水平方向へのフリックが為されたと判断してＳ３１７へ処理を進め、そうでなければＳ３２７へ進む。ここで｜ＩＸ｜はＩＸの絶対値を表す。
【００４０】
Ｓ３１７で、ＣＰＵ１０１はタッチオンであるか否かを判定する。タッチオンであればＣＰＵ１０１はＳ３１７でタッチオンでなくなるのを待ち（すなわちタッチアップされるのを待ち）、タッチオンでなければＣＰＵ１０１はＳ３１８へ処理を進める。これは、タッチアップの時点まで画像列のスクロール動作をしないようにするためである。
【００４１】
Ｓ３１８で、ＣＰＵ１０１はＩＸに累積した水平方向への速度成分が右向き（正の値）であるか左向き（負の値）であるかによって、表示制御部１０４に制御信号を送る。具体的には、ＩＸに累積した水平方向への速度成分が右向きであれば画像列を右方向へ一列スクロールするように、左向きであれば画像列を左方向へ一列スクロールするように表示制御部１０４へ制御信号を送る。その結果、表示制御部１０４は右方向あるいは左方向へ画像列を一列スクロールする映像を生成し、ディスプレイ１０５へ出力する。その後、ＣＰＵ１０１はＳ３１９へ処理を進める。
【００４２】
Ｓ３１９で、ＣＰＵ１０１は水平方向へ画像列をスクロールさせたことをＲＡＭ１０３に書込み、記憶させる（記録制御）。その後、ＣＰＵ１０１はＳ３２５へ処理を進める。
【００４３】
一方Ｓ３２０では、ＣＰＵ１０１は変数ＩＹにＩＹ×０．９＋ＶＹを格納する。ここでＩＹは、垂直方向へのフリックの速度を累積するための変数である。Ｓ３１５と同様に、これまでの累積値に対して０．９を乗算することによって、遅い速度でフリックと判定することのないようにしている。その後、ＣＰＵ１０１はＳ３２１へ処理を進める。
【００４４】
Ｓ３２１で、ＣＰＵ１０１は｜ＩＹ｜があらかじめ決められたフリック閾値より大きいか否かを判定し、大きければ垂直方向へのフリックが為されたと判断してＳ３２２へ処理を進め、そうでなければＳ３２７へ進む。ここで｜ＩＹ｜はＩＹの絶対値を表す。
【００４５】
Ｓ３２２で、ＣＰＵ１０１はタッチオンであるか否かを判定する。タッチオンであればＣＰＵ１０１はＳ３２２でタッチオンでなくなるのを待ち（すなわちタッチアップされるのを待ち）、タッチオンでなければＣＰＵ１０１はＳ３２３へ処理を進める。これは、タッチアップの時点まで画像列に含まれる画像のスクロール動作をしないようにするためである。
【００４６】
Ｓ３２３で、ＣＰＵ１０１はＩＹに累積した垂直方向への速度成分が上向き（負の値）であるか下向き（正の値）であるかによって、表示制御部１０４に制御信号を送る。具体的には、上向きであれば中央の画像列の画像を奥行き方向へ一枚スクロールするように表示制御部１０４へ制御信号を送り、下向きであれば中央の画像列の画像を手前方向へ一枚スクロールするように表示制御部１０４へ制御信号を送る。その結果、表示制御部１０４は中央の画像列における画像を奥方向あるいは手前方向へ一枚スクロールする映像を生成し、ディスプレイ１０５へ出力する。その後、ＣＰＵ１０１はＳ３２４へ処理を進める。
【００４７】
Ｓ３２４で、ＣＰＵ１０１は垂直方向へ中央の画像列の画像をスクロールさせたことをＲＡＭ１０３に書込み、記憶させる（記録制御）。その後、ＣＰＵ１０１はＳ３２５へ処理を進める。
【００４８】
Ｓ３２５で、ＣＰＵ１０１は最後に左右方向への画像列のスクロールあるいは上下方向への画像のスクロールを行ってから、予め定められた時間Ｔが経過したか否かの判定をするためのタイマーをスタートする。このタイマーは時間Ｔが経過すると値が０になるものとする。その後、ＣＰＵ１０１はＳ３２６へ処理を進める。
【００４９】
Ｓ３２６で、ＣＰＵ１０１は一定時間経過するまで待つ。この一定時間はタッチパネルの状態をサンプリングするための周期であって、前述の時間Ｔとは異なる。一定時間経過後、ＣＰＵ１０１はＳ３０２へ処理を戻し、次のタッチオン状態から新たにフリックの判定を行うためＩＸとＩＹを初期化して、処理を繰り返す。
【００５０】
一方、Ｓ３２７は、タッチオンは継続しているもののフリックと判定されるほどのタッチ位置の移動は無かった場合である。Ｓ３２７でＣＰＵ１０１は引き続きタッチ位置の移動の速度を計測するため、新たなＸ１にその時点でのＸ２を、新たなＹ１にその時点でのＹ２を格納し、Ｓ３０５に処理を戻す。
【００５１】
上述の図３のフローチャートの処理によれば、Ｓ３１９あるいはＳ３２４で前回判定されたフリック方向を記憶しておく。そして前回のフリック操作から一定時間以内にフリック操作が行われた場合（Ｓ３０９でＮｏの場合）には、記憶されている前回フリック方向と同じ軸方向（平行な方向）に判定されやすいように、Ｓ３１２あるいはＳ３１３でフリック方向の判定条件を変更している。これは、ユーザが同じ軸方向に連続したフリック操作を行う場合には、反復動作となる分素早い操作が可能であると考え、フリック操作の間隔が短ければ、それは前回のフリック操作と同じ軸方向に操作された可能性が高いとみなすためである。逆に、連続して同じ軸方向にフリック操作を行う場合と比べて、フリックの方向を別の軸に変化させる場合にはその操作の間隔が長くなることが予想される。これはユーザが指の動きを変化させなければならないことと、指の動きを変化させることをユーザが意識することによる。このためＳ３０９で前回のフリック操作から時間Ｔが経過したと判定した場合は、Ｓ３１０で重み付け変数を均等な値とし、前回のフリック方向に関わらず、今回のフリック方向の判定条件をＸ軸方向とＹ軸方向とで均等にしている。すなわち、前回のフリック操作でのタッチの終了後に時間Ｔが経過する前に再度フリック操作があった場合のみ、前回のフリック方向に基づいてフリック判定条件を変更している。前回のフリック操作でのタッチの終了後に時間Ｔが経過した後にフリック操作があった場合には前回のフリック方向に基づいた重み付けは行わない。
【００５２】
以上説明した第１の実施形態によれば、連続的な素早いフリック操作の最中にユーザの操作方向が乱れてしまっても、ユーザの意図と異なる動作が実行される可能性を低減することが可能となる。
＜第２の実施形態＞
前述した第１の実施形態では、連続したフリック操作に対し正負に関わらず同じ軸方向が操作方向として判定されやすくする例を述べた。これに対し第２の実施形態では、連続したフリック操作に対し、前回のフリック方向と同じ軸方向で、前回のフリック方向と正負が同じ方向のみが今回の操作方向として判定されやすくした例を述べる。
【００５３】
図４に、第２の実施形態におけるディスプレイ１０５のＧＵＩ画面の表示例を示す。第２の実施形態では、水平方向のフリック操作によって画像をスクロールさせ、上方向へのフリック操作によって画像を削除でき、下方向へのフリック操作によって画像をプロテクトできる操作態様とする。図４の表示例では、画像が水平方向に並べて表示されており、タッチパネル１０６に対して右にフリックする操作で画像を右方向にスクロールすることができ、左にフリックする操作で画像を左方向にスクロールすることができる。また、上下方向にはそれぞれの方向へのフリック操作に対応する動作が表示され、上方向へのフリック操作をすると中央の画像が削除され、下方向へのフリック操作をすると画像がプロテクトされることを明示している。
【００５４】
本実施形態のＧＵＩでは、左右方向のフリックは両方とも画像のスクロールであり、スクロール方向が違うだけで動作の性質は同じである。一方、上下方向のフリックによって実行される動作については上方向が画像の削除、下方向が画像のプロテクトであり、それぞれの動作の性質が大きく異なる。従ってユーザが連続的に短時間で垂直方向のフリック操作を反対方向へ変更する可能性は低い。そのため、本実施形態では第１の実施形態と違い前回上方向にフリックされた場合には上方向だけ、前回下方向にフリックされた場合には下方向だけ、それぞれの方向にフリック方向が判定されやすくするようにその判定条件を変更する。
【００５５】
以下では、これを実現する処理をフローチャートを用いて説明する。
【００５６】
図５は第２の実施形態におけるフリック方向の判定処理である。このフローチャートにおける各処理は、ＣＰＵ１０１がフラッシュメモリ１０２に記録されたプログラムをＲＡＭ１０３に展開して実行することにより実現される。なお、図５の処理の多くは前述した図３の処理と同様であり、図５のＳ５０１〜Ｓ５２２と図３のＳ３０１〜Ｓ３２２、図５のＳ５２５〜Ｓ５２７と図３のＳ３２５〜Ｓ３２７は同様であるので説明を省略する。図５において図３と異なる部分は、Ｓ５１１でＮｏと判定された場合にＳ５３１〜Ｓ５３３の処理を行う点と、Ｓ５２２でＮｏと判定された場合にＳ５３４〜Ｓ５３８の処理を行う点のみであるので、この部分について説明する。
【００５７】
図５の処理において、Ｓ５１１では、ＣＰＵ１０１はＲＡＭ１０３に記憶されている前回のフリック方向を読み出し、前回のフリック方向が水平方向であるか否かを判定する。前回のフリック方向が水平方向であればＳ５１２へ、そうでなければ前回のフリック方向は垂直方向の正方向（下方向）あるいは負方向（上方向）であるとみなしＳ５３１へ処理を進める。
【００５８】
Ｓ５３１では、ＣＰＵ１０１はＲＡＭ１０３に記憶されている前回のフリック方向が、上方向であるか否かを判定する。なお、前回上方向へのフリックと判定されたという情報は前回のフリック操作に係る処理で後述するＳ５３６の処理を行った場合に記録されている。前回のフリック方向が上方向である場合にはＳ５３２へ進み、前回のフリック方向が垂直方向のうち上方向ではない、すなわち下方向である場合にはＳ５３３へ進む。
【００５９】
Ｓ５３２では、ＣＰＵ１０１はＳ５０８で算出した垂直方向の速度成分ＶＹが上方向への速度なのか、すなわちＶＹが負の値であるか否かを判定する。上方向への速度であれば垂直方向の速度成分が前回のフリック方向と同じ方向であるため、今回のフリック操作によるフリック方向を前回のフリック方向である上方向だと判定しやすくするようＳ５１３へ処理を進める。Ｓ５３２でＶＹが上方向への速度でないと判定された場合には、前回フリック方向とは同軸上の逆方向である、下方向への速度である。この場合は今回のフリック操作によるフリック方向を前回のフリック方向である上方向だと判定しやすくする必要はないのでＳ５１０へ処理を進め、判定条件に重み付けをしない。
【００６０】
Ｓ５３３では、ＣＰＵ１０１はＳ５０８で算出した垂直方向の速度成分ＶＹが下方向への速度なのか、すなわちＶＹが正の値であるか否かを判定する。下方向への速度であれば垂直方向の速度成分が前回のフリック方向と同じ方向であるため、今回のフリック操作によるフリック方向を前回のフリック方向である下方向だと判定しやすくするようＳ５１３へ処理を進める。Ｓ５３３でＶＹが下方向への速度でないと判定された場合には、前回フリック方向とは同軸上の逆方向である、上方向への速度である。この場合は今回のフリック操作によるフリック方向を前回のフリック方向である上方向だと判定しやすくする必要はないのでＳ５１０へ処理を進め、判定条件に重み付けをしない。
【００６１】
Ｓ５１３では、今回のフリック操作のＹ方向の速度成分が前回フリック方向と同じ方向であるため、ＣＰＵ１０１はＳ５１４での判断に使用する変数Ａに１を、変数Ｂに２を格納する。これによって、今回のフリック操作において多少Ｘ方向への速度の方がＹ方向の速度よりも大きくとも、今回のフリック方向が、前回のフリック方向と同じ方向と判定される可能性を上げている。
【００６２】
一方、Ｓ５２２でタッチオンでないと判定されると、Ｓ５３４で、ＣＰＵ１０１はＩＹに累積した垂直方向への速度成分が上向き（負の値）であるかを判断し、そうであればＳ５３５へ処理を進め、そうでなければ下向きの速度成分であり、Ｓ５３７へ処理を進める。
【００６３】
Ｓ５３５で、ＣＰＵ１０１はディスプレイ１０５の中央に表示している画像をフラッシュメモリ１０２のファイル管理情報を変更することで削除する。その後、ＣＰＵ１０１はＳ５３６へ処理を進め、ＣＰＵ１０１は上方向へのフリック操作を受け付けたこと（フリック方向を上と判定したこと）をＲＡＭ１０３に書込み、記憶させる。その後、ＣＰＵ１０１はＳ５２５へ処理を進める。
【００６４】
Ｓ５３７では、ＣＰＵ１０１はディスプレイ１０５の中央に表示している画像をプロテクトする。具体的には中央に表示している画像を書込み禁止状態にするためフラッシュメモリ１０２のファイル管理情報を変更する。その後、ＣＰＵ１０１はＳ５３８へ処理を進め、下方向へのフリック操作を受け付けたこと（フリック方向を下と判定したこと）をＲＡＭ１０３に書込み、記憶させる。その後、ＣＰＵ１０１はＳ５２５へ処理を進める。
【００６５】
以上説明した第２の実施形態では、同じ軸方向における異なる２方向へのフリック操作に、互いに関連のない異なる機能を割り当てている。そして連続したフリック操作に対し、前回のフリック方向と同じ軸方向で、前回のフリック方向と正負が同じ方向のみが今回の操作方向として判定されやすくしている。これによって、ユーザの意図とは異なる動作が実行されるのをより確実に防ぐことができる。
【００６６】
なお、第２の実施形態では、Ｘ軸方向（水平方向）については、第１の実施形態と同様に、連続したフリック操作に対し正負に関わらず同じ軸方向がフリック方向として判定されやすくしている。これは、同じＸ軸方向における異なる２方向へのフリック操作に、互いに関連する、あるいは同質といえる左スクロールと右スクロールが割り当てられており、このような動作は正負を頻繁に切り替えて連続的に行われると考えられるためである。同様に、互いに関連する、あるいは同質といえる動作には、例えば出力される音量の増減、各種設定値や各種処理パラメータ値の増減、動画や音楽の再生位置の送り／戻し等、同じ機能に関して増減関係や昇降関係にある複数の動作が挙げられる。
以上説明したように、上述の各実施形態によれば、タッチパネルへのタッチ位置の軌跡に基づいた制御において、前回の操作内容に基づいて、ユーザが意図した操作をより的確に認識することが可能となる。
なお、上述の各実施形態におけるフリック方向の判定条件の重み付けを、情報処理装置１００の動作モードに応じて行ってもよい。たとえば、第１の実施形態や第２の実施形態のように、Ｘ軸方向とＹ軸方向へのフリック操作に互いに異なる動作が割り当てられているモードである場合には上述のようにフリック方向の判定条件への重み付けを前回のフリック方向に応じて変える。一方、画像を拡大表示する拡大表示モードで、上下左右のフリック操作にそれぞれ上下左右へ拡大領域を変更するためのスクロールが割り当てられていた場合には、前回のフリック方向に関わらずフリック方向の判定条件の重み付けを行わないようにすると好適である。すなわち、情報処理装置１００の動作モードが第１のモードである場合には操作方向の判定条件の重み付けを行い、前記情報処理装置の動作モードが第２のモードである場合には操作方向の判定条件の重み付けを行わない。４方向へのフリック操作によってそれぞれ異なる方向へのスクロールを行える場合、ユーザが頻繁に意図した方向を変化させる場合が多いと考えられるＧＵＩである。そのため、フリック方向の判定条件を前回のフリック方向に基づいて変更してしまうとかえってユーザの操作を妨げる結果となってしまう可能性がある。従ってこのような動作モードでは前回のフリック方向に関わらず操作方向の判定条件の重み付けを行わないようにする。同様に４方向へのフリック操作によってそれぞれ異なる方向へのスクロールが行える動作モードとしては、地図画像を表示して表示している部分を変更可能なモードがある。これらのモードはいずれも、同一の表示対象の表示部分を変更する動作である。また、どのフリック方向に応じた動作も増減関係あるいは昇降関係となっていない動作モードについても、ユーザが頻繁に意図した方向を変化させる場合が多いと考え、操作方向の判定条件の重み付けを行わないものとしても良い。
【００６７】
更に、図３および図５の例では、前回のフリック方向が判定されやすいようにフリック方向の判定条件を変更したが、逆に、前回のフリック方向が判定されにくいようにフリック方向の判定条件を変更してもよい。ユーザが連続して同じ方向にフリック操作を行う場合、反復動作によって同じ方向へ指またはペンを動かすことに体が慣れる。その直後に、異なる方向を意図してフリック操作を行った場合、異なる方向へ指またはペンを動かしたつもりでも慣れのためにはっきりと異なる方向へフリック操作できない可能性があると考えられるためである。このような場合を鑑み、前回のフリック方向とは異なる方向をフリック方向として判定しやすくすることで、完全に前回と異なる方向へフリック操作できなかったとしても、前回までと異なるフリック方向であると判定することができる。前回のフリック方向とは異なる方向をフリック方向として判定しやすくするには、前述の図３のＳ３１２において、変数Ａを１、変数Ｂを２とし、Ｓ３１３において変数Ａを２、変数Ｂを１とするように実施の形態を変更すれば良い。また、前述の図５の処理においてはＳ５１２において変数Ａを１、変数Ｂを２、Ｓ５１３において変数Ａを２、変数Ｂを１とするように実施の形態を変更すればよい。このようにしても、ユーザが意図した操作をより的確に認識することが可能である。
【００６８】
なお、上述した実施形態においては、本発明を情報処理装置１００に適用した場合を例にして説明したが、これはこの例に限定されない。すなわち、本発明はパーソナルコンピュータやＰＤＡ、携帯電話端末や携帯型の画像ビューワ、プリンタ装置に設けられたディスプレイ、デジタルフォトフレームなど、タッチパネルを用いた制御が可能な情報処理装置であれば適用可能である。タッチパネルをもちいたデジタルカメラやデジタルビデオカメラにも適用可能である。
【００６９】
デジタルビデオカメラや携帯電話端末のように、本体部に対して表示部が移動可能に取り付けられている機器に本発明を適用する場合は、表示部の位置に応じて、フリック方向の判定条件の重み付けを行うか否かを切り替えるものとしてもよい。本願の情報処理装置１００の一例としてのこのような機器として、図６（ａ）〜（ｃ）にデジタルビデオカメラの外観図を示す。図６（ａ）〜（ｃ）のデジタルビデオカメラは、本体部６０２に対して、表示部６０１が接続部６０４を介して回動可能に取り付けられている。本体部６０２にはレンズや撮像素子などの撮像部と、把持部６０３が備えられている。文字６０５に示す「Ｆ」の文字は、図６において表示部の向きを示すために便宜的に表示部６０１の固定位置に印刷されているものとする。図６（ａ）は表示部６０１を閉じた閉状態であり、ディスプレイ１０５は本体部６０２に対向しているため露出していない。図６（ｂ）は図６（ａ）の閉状態から、表示部６０１を回動方向６０６の方向に９０度回転させて開いた状態である。ディスプレイ１０５（タッチパネル１０６が一体的に設けられている）が露出されており、視認および操作が可能である。図６（ｃ）は、図６（ｂ）の状態から、回動方向６０６の回転軸とは垂直な回転軸回りの回動方向６０７の方向に表示部６０１を１８０度回転させ、更に回転方向６０６の９０度閉じる方向へ回転させた状態である。この状態でもディスプレイ１０５（タッチパネル１０６が一体的に設けられている）が露出されており、視認および操作が可能である。また、表示部６０１を、図６（ｂ）の状態から更に回動方向６０６の開く方向へ９０度回転させた位置、すなわち図６（ａ）の状態から回動方向６０６の開く方向へ１８０度開いた位置（以下、位置Ｄと称する）とすることも可能である。ＣＰＵ１０１は、表示部６０１がこれらの位置のうちどのような位置になっているかを識別可能であるものとする。図６（ｂ）のような状態では、ユーザは把持部６０３において片手で本体部６０２を把持するため、もう片方の手でタッチパネル１０６に対する操作を行うこととなる。この場合、もう片方の手で、表示部６０１のうち、接続部６０４と反対側を把持するとともに、その手の指でタッチすることが多いと考えられる。そのため、意図した方向にフリック操作を行ったつもりでも、図７で前述したような円弧を描くようなあいまいな軌跡となる可能性が高い。従って、ＣＰＵ１０１が、表示部６０１が図６（ｂ）の位置にあると判定した場合には図３あるいは図５の処理を適用し、フリック判定の条件式に、直前のフリック方向に基づく重み付けを行うものとする。表示部６０１が位置Ｄであったときも同様である。一方、表示部６０１が図６（ｃ）の位置にある場合には、タッチパネル１０６を操作する手は表示部６０１のうち接続部６０４と反対側を把持するわけではないと考えられる。従ってＣＰＵ１０１が、表示部６０１が図６（ｃ）の位置にあると判定した場合は、ユーザは意図した方向に正しくフリック操作を行えるものと考え、図３、図５の処理のような重み付けは行わず、前回のフリック方向に関わらず変数Ａ，Ｂ共に１としてもよい。なお、図６で説明した例はデジタルビデオカメラに限られるものではなく、本体部に対して表示部が移動可能に取り付けられているものであれば、スライド式や回動式に関わらず適用可能なものである。すなわち、折りたたみ可能な携帯電話端末やバリアングルの表示部を備えたデジタルカメラにも適用可能である。
【００７０】
以上、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。上述の実施形態の一部を適宜組み合わせてもよい。
【００７１】
＜他の実施形態＞
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムコードを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【図１】
0005506375.tif 000002
【図２】
0005506375.tif 000003
【図３】
0005506375.tif 000004
【図４】
0005506375.tif 000005
【図５】
0005506375.tif 000006
【図６】
0005506375.tif 000007
【図７】
0005506375.tif 000008