(57)【要約】【課題】スクロール発生時に利用者が編集位置を見失って混乱することを防止することを目的とする。【解決手段】入力キーの操作に基づいて、キー情報を取得する取得手段と、キー情報に基づいて編集中の文字列の文字に付与された第１のオブジェクトを移動させる移動手段と、第１のオブジェクトの位置が予め設定された領域の範囲内に無い場合、編集中の文字列と第１のオブジェクトとをスクロールする表示をするスクロール手段と、を有し、スクロール手段は、入力キーの移動方向と第１のオブジェクトの移動方向とが同じ場合と異なる場合とで異なるスクロール処理を行う。【選択図】図６
2018112927.tif 000002
【特許請求の範囲】
【請求項１】
入力キーの操作に基づいて、キー情報を取得する取得手段と、
前記キー情報に基づいて編集中の文字列の文字に付与された第１のオブジェクトを移動させる移動手段と、
前記第１のオブジェクトの位置が予め設定された領域の範囲内に無い場合、前記編集中の文字列と前記第１のオブジェクトとをスクロールする表示をするスクロール手段と、
を有し、
前記スクロール手段は、前記入力キーの移動方向と前記第１のオブジェクトの移動方向とが同じ場合と異なる場合とで異なるスクロール処理を行う情報処理装置。
【請求項２】
前記スクロール手段は、前記入力キーの移動方向と前記第１のオブジェクトの移動方向とが同じ場合は第１のスクロール処理を行い、前記入力キーの移動方向と前記第１のオブジェクトの移動方向とが異なる場合は第２のスクロール処理を行う請求項１記載の情報処理装置。
【請求項３】
前記第１のスクロール処理は、前記編集中の文字列と前記第１のオブジェクトとを前記入力キーの移動方向にスクロールする処理である請求項２記載の情報処理装置。
【請求項４】
前記第２のスクロール処理は、前記編集中の文字列と前記第１のオブジェクトとをアニメーションでスクロールする処理である請求項２又は３記載の情報処理装置。
【請求項５】
前記第２のスクロール処理は、スクロール後の前記編集中の文字列における前記第１のオブジェクトの位置を示す第２のオブジェクトを表示し、スクロールする処理である請求項２又は３記載の情報処理装置。
【請求項６】
前記第２のオブジェクトは、インジケータである請求項５記載の情報処理装置。
【請求項７】
前記第２のスクロール処理は、スクロールの方向を示す第３のオブジェクトを表示し、スクロールする処理である請求項２又は３記載の情報処理装置。
【請求項８】
前記スクロールの方向を示す第３のオブジェクトは、アイコンである請求項７記載の情報処理装置。
【請求項９】
前記スクロールの方向を示す第３のオブジェクトは、キャレットである請求項７記載の情報処理装置。
【請求項１０】
前記第１のスクロール処理と前記第２のスクロール処理とでは前記第１のオブジェクトの移動量が異なる請求項２記載の情報処理装置。
【請求項１１】
前記スクロール手段は、前記第２のスクロール処理の前記第１のオブジェクトの移動量を、前記第１のスクロール処理の前記第１のオブジェクトの移動量より小さくなるようにする請求項１０記載の情報処理装置。
【請求項１２】
前記第１のオブジェクトは、キャレットである請求項１乃至１１何れか１項記載の情報処理装置。
【請求項１３】
入力キーの操作に基づいて、キー情報を取得する取得手段と、
前記キー情報に基づいて編集中の文字列の文字に付与されたオブジェクトを移動させる移動手段と、
前記オブジェクトの位置が予め設定された領域の範囲内にない場合、前記編集中の文字列と前記オブジェクトとをスクロールする表示をするスクロール手段と、
を有し、
前記スクロール手段は、前記オブジェクトの移動距離が閾値より大きい場合と大きくない場合とで異なるスクロール処理を行う情報処理装置。
【請求項１４】
前記スクロール手段は、前記オブジェクトの移動距離が閾値より大きくない場合は第１のスクロール処理を行い、前記オブジェクトの移動距離が閾値より大きい場合は第２のスクロール処理を行う請求項１２記載の情報処理装置。
【請求項１５】
前記オブジェクトは、キャレットである請求項１３又は１４記載の情報処理装置。
【請求項１６】
情報処理装置が実行する情報処理方法であって、
入力キーの操作に基づいて、キー情報を取得する取得工程と、
前記キー情報に基づいて編集中の文字列の文字に付与された第１のオブジェクトを移動させる移動工程と、
前記第１のオブジェクトの位置が予め設定された領域の範囲内に無い場合、前記編集中の文字列と前記第１のオブジェクトとをスクロールする表示をするスクロール工程と、
を含み、
前記スクロール工程では、前記入力キーの移動方向と前記第１のオブジェクトの移動方向とが同じ場合と異なる場合とで異なるスクロール処理を行う情報処理方法。
【請求項１７】
入力キーの操作に基づいて、キー情報を取得する取得工程と、
前記キー情報に基づいて編集中の文字列の文字に付与されたオブジェクトを移動させる移動工程と、
前記オブジェクトの位置が予め設定された領域の範囲内にない場合、前記編集中の文字列と前記オブジェクトとをスクロールする表示をするスクロール工程と、
を含み、
前記スクロール工程では、前記オブジェクトの移動距離が閾値より大きい場合と大きくない場合とで異なるスクロール処理を行う情報処理方法。
【請求項１８】
コンピュータを、請求項１乃至１５何れか１項記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
近年、機器のＧｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ（以下、ＧＵＩという）は一般的な技術となっている。これらのＧＵＩには、利用者からの操作を取り込み、利用者の求めるテキストを編集するためのエディットボックスというものが存在する。このエディットボックスには、近年では組込機器でも動作するものが存在する。例えば、エディットボックスをデジタルカメラ上に実現し、撮影した画像にコメントを付与することが可能である。
エディットボックスでは、左から右に文字が並ぶＬｅｆｔ  ｔｏ  Ｒｉｇｈｔ言語（以下、ＬＴＲ言語という）への対応に加え、右から左に文字が並ぶＲｉｇｈｔ  ｔｏ  Ｌｅｆｔ言語（以下、ＲＴＬ言語という）のテキストが編集可能なものが存在する。更に、これらが混在したテキストが編集可能なものも存在する。
また、一般的なエディットボックスでは、テキストの編集位置を示すキャレットと呼ばれる識別子を持つ。利用者は、このキャレットを移動させることで、テキストの編集位置を移動させることが可能である。更に、エディットボックスでは、自身の編集領域（編集の指示を受け付けて表示している領域を意味する）よりも長いテキストを編集することが可能である。このとき、利用者は、キャレットを編集領域の端付近に移動させることで、編集対象のテキストを仮想的にずらし（以下、スクロールという）、編集領域に表示されるテキストを変更することが可能である（特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−８５１６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＬＴＲ言語とＲＴＬ言語とが混在したテキストを編集するケースを想定する。日本語や英語といったＬＴＲ言語のテキストにおいては、利用者が入力した「後ろ」方向へのキャレット移動指示は、キャレットが「右」方向に移動することを意味している。しかし、ＲＴＬ言語のテキストでは、「後ろ」方向へのキャレット移動指示は、キャレットが「左」方向に移動することを意味している。これは、キャレットの位置（正確には、キャレットを保持する文字）に応じて、キャレットの「後ろ」の位置が、現在のキャレット位置より「右」なのか「左」なのかが変わるためである。
また、アラビア語のテキストの中に英単語が挿入されたような、ＬＴＲ言語とＲＴＬ言語とのテキストが混在したテキストにおいては、連続した「後ろ」方向へのキャレット移動指示で、利用者の予想に反した位置にキャレットが移動することがある。例えば、連続した「後ろ」方向へのキャレット移動指示で、ＬＴＲ言語テキスト上で連続的に「右」方向にキャレットが進んだ後にＬＴＲ言語とＲＴＬ言語とのテキストのつなぎ目で「左」側位置にあるＲＴＬ言語テキスト位置にキャレットが移動するケースがある。このとき、スクロールにより編集領域に表示される文字が変更されてしまうと、利用者は何が起こったのか、現在編集対象の文字列全体のどこにキャレットが移動したかが瞬時に理解できないという課題があった。
先に示した先行技術は、エディットボックスのスクロールに関する技術ではあるが、このような課題が考慮されていない。
本発明は上記の課題に鑑みてなされたものであり、利用者が編集位置を見失わず混乱しにくくする情報処理装置を提供することを目的とする。また、その方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の情報処理装置は、入力キーの操作に基づいて、キー情報を取得する取得手段と、前記キー情報に基づいて編集中の文字列の文字に付与された第１のオブジェクトを移動させる移動手段と、前記第１のオブジェクトの位置が予め設定された領域の範囲内に無い場合、前記編集中の文字列と前記第１のオブジェクトとをスクロールする表示をするスクロール手段と、を有し、前記スクロール手段は、前記入力キーの移動方向と前記第１のオブジェクトの移動方向とが同じ場合と異なる場合とで異なるスクロール処理を行う。
【発明の効果】
【０００６】
本発明によれば、スクロール発生時に利用者が編集位置を見失って混乱することを防止することができる。
【図面の簡単な説明】
【０００７】
【図１】一般的なエディットボックスを説明した図である。
【図２】スクロールを説明した図である。
【図３】キャレットの動きを説明した図である。
【図４】情報処理装置のハードウェア構成の一例を示す図である。
【図５】情報処理装置のソフトウェア構成の一例を示す図である。
【図６】実施形態１の情報処理装置の情報処理の一例を示すフローチャートである。
【図７】第１のスクロール処理が発生するケースを示した図である。
【図８】第２のスクロール処理が発生するケースを示した図である。
【図９】スクロールをアニメーションで提示する図（その１）である。
【図１０】スクロールをアニメーションで提示する図（その２）である。
【図１１】実施形態２の第２のスクロール処理の一例を示す図である。
【図１２】実施形態３の第２のスクロール処理の一例を示す図（その１）である。
【図１３】実施形態３の第２のスクロール処理の一例を示す図（その２）である。
【図１４】実施形態４の情報処理装置の情報処理の一例を示すフローチャートである。
【図１５】実施形態４の第２のスクロール処理の一例を示す図（その１）である。
【図１６】実施形態４の第２のスクロール処理の一例を示す図（その２）である。
【図１７】実施形態５の第２のスクロール処理の一例を示す図である。
【発明を実施するための形態】
【０００８】
以下、本発明の実施形態について図面に基づいて説明する。
【０００９】
＜実施形態１＞
まずは、一般的なエディットボックスの動作を説明した後に、本発明の説明に入る。
（一般的なエディットボックスの動作）
図１は、一般的なエディットボックスを説明した図である。テキストを編集できるＧＵＩであるエディットボックスは、図１（ａ）のように編集領域１０２を持つ。この編集領域に、編集対象文字列１０１の一部を表示し、利用者はその表示部分に文字の挿入や削除といった編集行為を行うことができる。
エディットボックスの編集領域には、キャレット１０３と呼ばれる編集位置を示す識別子が表示される。キャレットは、利用者に文字の挿入や削除がどの位置に対して行われるかを示すものであり、一般的には、編集領域中に一つだけ表示される。利用者は、このキャレットを「後ろ」位置に移動するキーや「前」位置に移動するキー等を用い、キャレットを求める位置に移動させることができる。また、このキャレットを編集領域の端の領域に移動することで、編集対象文字列をスクロールさせ、編集領域に表示するテキストを続きのテキストに変更することもできる。キャレット１０３は、第１のオブジェクトの一例である。
図１（ｂ）は、実際に利用者に提示される編集領域の見た目１０４である。このように、編集対象文字列の全てが一度に利用者に提示されるわけではなく、その一部が繰り抜かれた形で提示される。図１（ａ）で点線の領域内に示した、編集領域１０２の外部のテキストは、仮想的に示したものであって、実際には、編集領域１０２に表示されたテキストと同時には表示されない。
【００１０】
図２（ａ）、図２（ｂ）はスクロールを説明した図である。エディットボックスには、キャレットの侵入禁止領域２０３、左スクロール時のキャレット移動位置２０２、右スクロール時のキャレット移動位置２０１が定義されている。エディットボックスの編集領域のうち、キャレット侵入禁止領域以外の領域は、予め設定された領域の範囲内の一例である。
例えば、キャレット２０４のようにキャレットがなっていた状態から、右に移動し、キャレット２０５のようにキャレットが移動したとする。このとき、移動先のキャレット位置がキャレット侵入禁止領域２０６内であった場合、キャレットが編集領域内で、キャレット侵入禁止領域内ではない位置となるよう、キャレット及び編集対象文字列２０７を右、又は左にスクロールさせる。このとき、右方向にスクロールさせる場合を「右スクロール」と呼び、スクロール後のキャレット２０９が右スクロール時にキャレット移動位置２０８に来るようにする。
【００１１】
図３は、ＬＴＲ言語（英語）とＲＴＬ言語（アラビア語）とが混在したテキストにおけるキャレットの動きを説明した図である。キャレットがＬＴＲ言語である英語領域にある場合（３０１、３０２、３０３、３０４、３０５）、利用者が行った「後ろ」方向へのキャレットの移動指示により、キャレットは「右」方向に順次移動する。しかし、３０５の状態から更に「後ろ」方向へキャレットを移動させると、キャレットを保持する文字が英語の"ｅ"から英単語（ＬＴＲ言語）の左側に位置するアラビア語の文字に切り替わる（３０６）。これにより、同じ「後ろ」方向へのキャレット移動指示で、キャレットが順次「右」方向に移動していたにも関わらず、急に「左」方向へのスクロールが利用者に提示されることになる。
【００１２】
＜情報処理装置の構成＞
図４は、情報処理装置４００のハードウェア構成の一例を示す図である。情報処理装置４００は、ＣＰＵ４０１、外部記憶装置への入出力Ｉ／Ｆ４０２、ＲＯＭ４０４、ＲＡＭ４０５を含み、これらがバス４０３を介してデータ交換を行う。また、情報処理装置４００外にはディスプレイ４０６及びキーボード４０７を備え、これらのデバイスと情報処理装置４００とがバス４０３を介してデータ交換を行うようにしてもよい。
情報処理装置４００及びディスプレイ４０６、キーボード４０７は、例えばデジタルカメラやスマートフォンといった携帯端末上に実装されてもよい。
ＣＰＵ４０１は、情報処理装置４００全体を制御する。ＲＯＭ４０４は、プログラムや、ＣＰＵ４０１が処理を行う際に必要なデータを保持する。ＲＡＭ４０５は、ＣＰＵ４０１が処理を行う際のワークエリア等として機能する。外部記憶装置への入出力Ｉ／Ｆ４０２は、外部記憶装置への入出力Ｉ／Ｆである。プログラムは、外部記憶装置に記憶されていてもよい。
ＣＰＵ４０１が、ＲＯＭ４０４又は外部記憶装置に記憶されているプログラムをＲＡＭ４０５に読み出し、実行することによって、図５の一部に示される情報処理装置４００のソフトウェア構成及び図６及び図１４のフローチャートの処理が実行される。
【００１３】
図５は、情報処理装置４００のソフトウェア機能構成の一例を示す図である。
キーボードはＱＷＥＲＴＹキーボードでもよいし、カーソルを移動するための最低限のキーのみを備えたものでもよい。また、キーボード４０７は、ソフトウェアで実装されたキーボードでもよい。取得部５０１では、利用者がこれらのキーボード４０７を用いて選択したキー操作情報等を取得する。
取得部５０１で取得したキー操作情報は、キャレット移動部５０２に送られ、ここでキャレットの移動先を決定する。キャレットの移動先が決定されると、その情報はスクロール判定部５０３に送られ、ここでスクロールを行う必要があるかどうかを判定する。そして、スクロールを行う必要があると判定された場合、スクロール方法決定部５０４でどのようなスクロールを行うかを決定する。
スクロール実施部５０７では、スクロール方法決定部５０４で決定したスクロール方法に従って、スクロール処理を行う。そして、そのスクロール処理と、先に決定されたキャレットの移動先の情報を用い、Ｖｉｅｗ更新部５０６ではエディットボックスのＶｉｅｗ情報を更新する。更新されたＶｉｅｗ情報は、出力部５０５に送られ、ここから装置外部のディスプレイ４０６にＶｉｅｗ情報が出力される。
【００１４】
（情報処理装置における情報処理）
ここでは、図６から図１０までを用いて、情報処理装置４００における情報処理を説明する。
図６は、実施形態１の情報処理装置４００の情報処理の一例を示すフローチャートである。例えば、ＣＰＵ４０１は、利用者が文字入力機能を開始した場合に、図６に示すフローチャートの処理を開始する。
Ｓ６０１において、ＣＰＵ４０１は、利用者が行ったキー操作の情報（キー情報）を取得する。そして、Ｓ６０２において、ＣＰＵ４０１は、取得したキー情報に基づいて、キャレットを前後に移動するキーかどうかの判定を行う。例えば、「後へ」や「前へ」等の物理キーが選択された場合、ＣＰＵ４０１は、キャレットの前後移動キーが選択されたと判定する。物理キーは入力キーの一例である。但し、入力キーは、物理キーに限らず、ソフトウェアキー等であってもよい。
ＣＰＵ４０１は、キャレットの前後移動キーが選択されたと判定しなかった場合（Ｓ６０２でＮｏ）、Ｓ６１３に進む。Ｓ６１３において、ＣＰＵ４０１は、取り込まれたキー操作に応じてエディットボックスのＶｉｅｗ情報を更新する。そして、ＣＰＵ４０１は、図６に示すフローチャートの処理を終了する。例えば、「Ａ」というラベルが書かれた物理キーが選択された場合、ＣＰＵ４０１は、現在のキャレット位置に「Ａ」という文字を挿入し、そのＶｉｅｗ情報を表示する。
【００１５】
ＣＰＵ４０１は、キャレットの前後移動キーが選択されたと判定した場合（Ｓ６０２でＹｅｓ）、Ｓ６０３に進む。Ｓ６０３において、ＣＰＵ４０１は、現在のキャレットを保持する文字がＬＴＲ言語の文字かどうかを判定する。ＣＰＵ４０１は、現在のキャレットを持つ文字が英語のようなＬＴＲ言語の文字であると判定した場合（Ｓ６０３でＹｅｓ）、Ｓ６０４に進む。Ｓ６０４において、ＣＰＵ４０１は、先に取り込まれた入力キーが後ろ方向への移動指示かどうか判定する。ＣＰＵ４０１は、後ろ方向への移動指示であると判定した場合（Ｓ６０４でＹｅｓ）、Ｓ６０６に進む。Ｓ６０６において、ＣＰＵ４０１は、キャレットの移動方向は「右」方向と決定する。一方、ＣＰＵ４０１は、入力キーが後ろ方向への移動指示でないと判定した場合（Ｓ６０４でＮｏ）、Ｓ６０７に進む。Ｓ６０７において、ＣＰＵ４０１は、キャレットの移動方向は「左」方向と決定する。
ＣＰＵ４０１は、現在のキャレットを持つ文字がアラビア語のようなＲＴＬ言語の文字であると判定した場合（Ｓ６０３でＮｏ）、Ｓ６０５に進む。Ｓ６０５において、ＣＰＵ４０１は、先に取り込まれた入力キーが後ろ方向への移動指示かどうか判定する。ＣＰＵ４０１は、後ろ方向への移動指示であると判定した場合（Ｓ６０５でＹｅｓ）、Ｓ６０７に進む。Ｓ６０７において、ＣＰＵ４０１は、キャレットの移動方向は「左」方向と決定する。一方、ＣＰＵ４０１は、入力キーが後ろ方向への移動指示でないと判定した場合（Ｓ６０５でＮｏ）、Ｓ６０６に進む。Ｓ６０６において、ＣＰＵ４０１は、キャレットの移動方向は「右」方向と決定する。
ここで決定されたキャレットの移動方向は、現在キャレットを持つ文字種（ＬＴＲ／ＲＴＬ）が連続する場合の推定値である。現在のキャレットを持つ文字がＬＴＲ／ＲＴＬ言語の文字のつなぎ目の場合は、この推定値とは異なる方向にキャレットが移動することがある。
【００１６】
次に、Ｓ６０８において、ＣＰＵ４０１は、編集対象のテキスト、現在のキャレット位置、利用者から指示されたキャレットの前後移動操作を用い、実際のキャレット位置を決定する。そして、Ｓ６０９において、ＣＰＵ４０１は、キャレット移動後のテキストをスクロールする必要があるかどうかを判定する。例えば、移動後のキャレット位置がエディットボックスのキャレット侵入禁止領域にある場合、又は移動後のキャレットが編集領域外にある場合、ＣＰＵ４０１は、スクロールする必要があると判定する。
ＣＰＵ４０１は、スクロールする必要が無いと判定した場合（Ｓ６０９でＮｏ）、Ｓ６１３に進む。Ｓ６１３において、ＣＰＵ４０１は、キャレット位置のみを移動し、エディットボックスのＶｉｅｗ情報を更新する。そして、ＣＰＵ４０１は、図６に示すフローチャートの処理を終了する。一方、ＣＰＵ４０１は、スクロールする必要があると判定した場合（Ｓ６０９でＹｅｓ）、Ｓ６１０に進む。Ｓ６１０において、ＣＰＵ４０１は、実際のスクロールの方向が、先に推定したキャレットの移動方向と同じかどうかを判定する。ＣＰＵ４０１は、スクロールの方向が先に推定したキャレットの移動方向と同じであると判定した場合（Ｓ６１０でＹｅｓ）、Ｓ６１１に進む。Ｓ６１１において、ＣＰＵ４０１は、第１のスクロール処理を実施する。一方、ＣＰＵ４０１は、スクロールの方向が先に推定したキャレットの移動方向と異なると判定した場合（Ｓ６１０でＮｏ）、Ｓ６１２に進む。Ｓ６１２において、ＣＰＵ４０１は、第２のスクロール処理を実施する。そして、Ｓ６１３において、ＣＰＵ４０１は、実施したスクロール処理をＶｉｅｗ情報に反映する。そして、ＣＰＵ４０１は、図６に示すフローチャートの処理を終了する。第１のスクロール処理と第２のスクロール処理とは、異なるスクロール処理の一例である。
【００１７】
図７は、第１のスクロール処理が発生するケースを示した図である。最初、図７（ａ）のような状況であったとする。点線部分は仮想的な編集対象文字列を表しており、実際の利用者の見た目は図７（ｃ）のようになっている。この状況で、利用者がキャレットの「前へ」キーを選択する。すると、キャレットを持つ文字はＲＴＬ言語（アラビア語）の文字であるため、ＣＰＵ４０１は、キャレットは「右」方向に移動すると判定する。そして、実際にキャレットは右方向に移動し、これにより、図７（ｂ）のような右方向へのスクロールが発生する。このときの利用者による見た目は図７（ｄ）のようになる。編集対象文字列が移動し、２０１の右スクロール時のキャレット移動位置にキャレットも移動する。
このように、第１のスクロール処理は、利用者が想定したキャレットの移動方向と、スクロール方向と、が一致した場合に実施するスクロール処理である。つまり、第１のスクロール処理は、編集中の文字列とキャレットとを入力キーの移動方向にスクロールする処理である。この場合、利用者のメンタル・モデル上のキャレット移動方向と実際のスクロール方向とにずれが無いため、先行技術のようなＶｉｅｗ情報を非連続に切り替えるようなスクロール処理を実施しても、利用者はキャレットの位置（編集位置）を見失わず、あまり混乱しない。そのため、このスクロール時に過剰な情報の補佐を行うと、ＵＩの視認性が低下するだけで利点は少ない。
【００１８】
図８は、第２のスクロール処理が発生するケースを示した図である。最初、図８（ａ）のような状況であったとする。実際の利用者の見た目は図８（ｃ）のようになっている。この状況で、利用者がキャレットの「後へ」キーを選択すると、キャレットを持つ文字はＬＴＲ言語（英語の"ｅ"）の文字であるため、利用者はキャレットが「右」方向に移動することを期待する。しかし、実際にキャレットは左方向に移動し、これにより、図８（ｂ）のような左方向へのスクロールが発生する。このときの利用者の見た目は図８（ｄ）のようになる。
このように、第２のスクロール処理は、利用者が想定したキャレットの移動方向とスクロール方向とが一致しない場合に実施するスクロール処理である。このため、ある程度の情報の補佐を行わないと、利用者はスクロール先がどこなのかを瞬時に把握することは困難となる。
例えば、第２のスクロール処理では、ＣＰＵ４０１は、図９、図１０のようにスクロールをアニメーションで提示することで、情報の補佐とすることができる。図９の（ａ）から（ｅ）までは、先に示した図８（ａ）から図８（ｂ）までに至るスクロールをアニメーションで提示した例である。このとき、利用者の見た目としては図１０の（ａ）から（ｅ）までのようになる。例えば、"l"（エル）の文字に注目すると徐々に右に移動している。瞬時にＶｉｅｗ情報を切り替えるのではなく、このようにアニメーションで提示することで、どちらの方向に、どれだけ移動したかを直感的に提示することができる。
【００１９】
＜実施形態２＞
実施形態２では、例えば、図１１（ａ）のような移動キー選択前のＶｉｅｗ情報１１０１から、「後へ」キーを選択して左方向へのスクロールが発生した場合を想定する。その場合、ＣＰＵ４０１は、図１１（ｂ）のように、移動キー選択後のＶｉｅｗ情報１１０２として、インジケータ１１０３を一定時間表示するスクロールを行ってもよい。インジケータ１１０３は、スクロール後の編集中の文字列におけるキャレットの位置を示す第２のオブジェクトの一例である。又は、ＣＰＵ４０１は、図１１（ｃ）のように、移動キー選択後のＶｉｅｗ情報１１０４として、スクロール方向を示すアイコン１１０５を一定時間表示するスクロールを行ってもよい。スクロール方向を示すアイコン１１０５は、スクロールの方向を示す第３のオブジェクトの一例である。ここで、アイコンとは、情報処理装置４００の利用者へ提示する情報を図や絵にして表した画像である。又は、ＣＰＵ４０１は、図１１（ｄ）のように、移動キー選択後のＶｉｅｗ情報１１０６として、スクロール方向を示すキャレット１１０７を一定時間表示するスクロールを行ってもよい。スクロール方向を示すキャレット１１０７は、スクロールの方向を示す第３のオブジェクトの一例である。
このように、本実施形態の処理によれば、第２のスクロール処理として様々なＶｉｅｗ情報を提示できるようになり、機器で採用するＧＵＩに応じて好ましいものを利用することができる。
【００２０】
＜実施形態３＞
これまでの例では、第２のスクロール処理としてスクロール方向を示す情報の補佐を行うものを例示した。しかし、図１２、図１３は、第１のスクロール処理と第２のスクロール処理とで、スクロールの移動量を制御する例を示している。これにより、第２のスクロール処理時には、なるべく元の表示の内容がスクロール後にも残り易くなるため、利用者の混乱を防ぐことができる。
図１２は、本実施形態でのエディットボックスの一例を示す図である。１２０１は第１のスクロール処理における左スクロール時のキャレット移動位置である。また、１２０２は第１のスクロール処理における右スクロール時のキャレット移動位置である。また、１２０３は第２のスクロール処理における左スクロール時のキャレット移動位置である。また、１２０４は第２のスクロール処理における右スクロール時のキャレット移動位置である。また、１２０５はキャレット侵入禁止領域である。これらは利用者に提示するものでは無いが、第１のスクロール処理と第２のスクロール処理とで、スクロール時のキャレット表示位置が異なることがこれまでの実施形態に無い特徴である。図１２に示されるように、ＣＰＵ４０１は、第２のスクロール処理のキャレットの移動量を、第１のスクロール処理のキャレットの移動量より小さくなるように制御している。
【００２１】
図１３は、本実施形態のスクロールの様子を示した図である。例えば、図１３（ａ）のようなキャレット１３０１の位置で、移動キーの「前へ」が選択されたとする。すると、キャレットは左に移動し、キャレットの侵入禁止領域に入ることにより、第１のスクロール処理における右方向のスクロールが発生する。このとき、ＣＰＵ４０１は、図１３（ｂ）のように、第１のスクロール処理における右スクロール時のキャレット移動位置１３０２にキャレット１３０３を移動させることにより、スクロールを実現する。
一方、図１３（ｃ）のようなキャレット１３０４の位置で、移動キーの「後へ」が選択されたとする。すると、キャレットはＬＴＲ言語の"ｅ"に付与されていたため、想定される移動方向は右であるが、実際には左方向への第２のスクロールが発生する。このとき、ＣＰＵ４０１は、図１３（ｄ）のように、第２のスクロール処理における左スクロール時のキャレット移動位置１３０５にキャレット１３０６を移動させることにより、スクロールを実現する。
例えば、第２のスクロール処理におけるスクロール時のキャレット移動位置を、第１のスクロール処理におけるスクロール時のキャレット移動位置よりも外側に設定することで、スクロール前に表示されていた内容がスクロール後にも残る可能性が高くなる。図１３（ｄ）の例では、"ｌｉｆｅ"の"ｆ"まで表示されている。しかし、仮に第２のスクロール処理における左スクロール時のキャレット移動位置が、第１のスクロール処理における左スクロール時のキャレット移動位置と同じであった場合、おそらくスクロール後には"ｆ"は表示から消えてしまうことになる。
このように、本実施形態の処理によれば、利用者が想定したキャレットの移動方向とスクロール方向とが一致しない場合に実施するスクロール時に、なるべく元の表示の内容がスクロール後にも残り易くなるため、利用者の混乱を防ぐことができる。
【００２２】
＜実施形態４＞
これまでの例では、キャレットが付与された文字におけるキャレットの移動方向とスクロールの移動方向とが同じ場合と異なる場合とで、スクロール処理の切り替えを行った。しかし、これ以外の場合にもスクロール処理を切り替えることができる。例えば、ＣＰＵ４０１は、利用者のキャレット移動指示により発生したキャレットの移動距離に応じ、スクロール時の方式を切り替えることができる。キャレットはオブジェクトの一例である。
【００２３】
図１４は、実施形態４の情報処理装置４００の情報処理の一例を示すフローチャートである。例えば、ＣＰＵ４０１は、利用者が文字入力機能を開始した場合に、図６に示すフローチャートの処理を開始する。
Ｓ１４０１において、ＣＰＵ４０１は、利用者が行ったキー操作の情報を取得する。そして、Ｓ１４０２において、ＣＰＵ４０１は、取得したキー情報に基づいて、キャレットを移動するキーかどうかの判定を行う。例えば、「後へ」や「前へ」というラベルが書かれた物理キーが選択された場合、ＣＰＵ４０１は、キャレットの前後移動キーが選択されたと判定する。
ＣＰＵ４０１は、キャレットの前後移動キーが選択されたと判定しなかった場合（Ｓ１４０２でＮｏ）、Ｓ１４０８に進む。Ｓ１４０８において、ＣＰＵ４０１は、取り込まれたキー操作に応じてエディットボックスのＶｉｅｗ情報を更新する。そして、ＣＰＵ４０１は、図１４に示すフローチャートの処理を終了する。例えば、「Ａ」というラベルが書かれた物理キーが選択された場合、ＣＰＵ４０１は、現在のキャレット位置に「Ａ」という文字を挿入し、そのＶｉｅｗ情報を表示する。
一方、ＣＰＵ４０１は、キャレットの前後移動キーが選択されたと判定した場合（Ｓ１４０２でＹｅｓ）、Ｓ１４０３に進む。Ｓ１４０３において、ＣＰＵ４０１は、編集対象のテキスト、現在のキャレット位置、利用者から指示されたキャレットの前後移動操作を用い、実際のキャレット位置を決定する。そして、Ｓ１４０４において、ＣＰＵ４０１は、キャレット移動後のテキストをスクロールする必要があるかどうかを判定する。例えば、移動後のキャレット位置がエディットボックスのキャレット侵入禁止領域にある場合、又は移動後のキャレットが編集領域外にある場合、ＣＰＵ４０１は、スクロールする必要があると判定する。
【００２４】
ＣＰＵ４０１は、スクロールする必要が無いと判定した場合（Ｓ１４０４でＮｏ）、Ｓ１４０８に進む。Ｓ１４０８において、ＣＰＵ４０１は、キャレット位置のみを移動し、エディットボックスのＶｉｅｗ情報を更新する。そして、ＣＰＵ４０１は、図１４に示すフローチャートの処理を終了する。一方、ＣＰＵ４０１は、スクロールする必要があると判定した場合（Ｓ１４０４でＹｅｓ）、Ｓ１４０５に進む。Ｓ１４０５において、ＣＰＵ４０１は、Ｓ１４０３で行ったキャレットの移動距離が設定された閾値より大きいかどうかの判定を行う。例えば、図１５（ａ）のようなキャレット１５０１の位置で「前へ」キーが選択され、図１５（ｂ）のような状態になったとする。このとき、移動後のキャレット１５０２の位置は、編集領域外にあり、そのキャレット移動距離は１５０３のようになる。ＣＰＵ４０１は、このキャレットの移動距離を、例えば１００ピクセル等の閾値と比較し、第１のスクロール処理を適用するか、第２のスクロール処理を適用するかを判定する。
ＣＰＵ４０１は、キャレットの移動距離が閾値より大きくないと判定した場合（Ｓ１４０５でＮｏ）、Ｓ１４０６に進む。Ｓ１４０６において、ＣＰＵ４０１は、第１のスクロール処理を実施する。ＣＰＵ４０１は、この移動距離が閾値より大きいと判定した場合（Ｓ１４０５でＹｅｓ）、Ｓ１４０７に進む。Ｓ１４０７において、ＣＰＵ４０１は、第２のスクロール処理を実施する。例えば、ＣＰＵ４０１は、図１５（ｃ）のように、第２のスクロール処理における右スクロール時のキャレット移動位置１５０４にキャレット１５０５と編集対象文字列とを移動させることで、第２のスクロールとしてもよい。最後に、Ｓ１４０８において、ＣＰＵ４０１は、実施したスクロール処理に応じてＶｉｅｗ情報に反映する。そして、ＣＰＵ４０１は、図１４に示すフローチャートの処理を終了する。
【００２５】
図１６は、このとき利用者に提示するＧＵＩの見た目を示した図である。例えば、図１６（ａ）のようなキャレット１６０１の位置で、移動キーの「後へ」が選択されたとする。すると、キャレットは右に移動し、キャレットの侵入禁止領域に入ることにより、スクロールを行うことになる。その際、ＣＰＵ４０１は、キャレットの移動量を算出する。この場合、キャレットの移動量は"ｉ"の幅分であり、その移動距離は閾値より小さいと判定されたとする。すると、ＣＰＵ４０１は、第１のスクロール処理を採用する。例えば、ＣＰＵ４０１は、図１６（ｂ）のように、第１のスクロール処理における右スクロール時のキャレット移動位置１６０２に移動後のキャレット１６０３を移動させるように、キャレットと編集対象文字列とをスクロールさせる。
一方、図１６（ｃ）のようなキャレット１６０４の位置で、移動キーの「前へ」が選択されたとする。すると、キャレットは右に大きく移動し、キャレットの侵入禁止領域に入ることにより、スクロールを行うことになる。その際、ＣＰＵ４０１は、キャレットの移動量を算出する。この場合、キャレットの移動量は"．Ｔｏｋｙｏ  ｌｉｆｅ"の文字列幅分であり、その移動距離は閾値より大きいと判定されたとする。すると、ＣＰＵ４０１は、第２のスクロール処理を採用する。例えば、ＣＰＵ４０１は、図１６（ｄ）のように、第２のスクロール処理における右スクロール時のキャレット移動位置１６０５に移動後のキャレット１６０６を移動させるように、キャレットと編集対象文字列とをスクロールさせる。
以上により、スクロールを伴うキャレットの移動距離が閾値より大きい場合、なるべく元の表示の内容がスクロール後にも残り易くなる。これにより、スクロール時の利用者の混乱を防ぐことができる。
【００２６】
＜実施形態５＞
これまでの例では、キャレットの移動指示として「前へ」「後へ」を用いてきた。しかし、この２つの移動指示に限定されるものではない。
図１７は、縦書きのエディットボックスを利用した場合の見た目を表した図である。例えば、図１７（ａ）のようなキャレット１７０１の位置で、移動キーの「後へ」が選択されたとする。すると、キャレットは下に移動し、キャレットの侵入禁止領域に入ることにより、スクロールを行うことになる。その際、ＣＰＵ４０１は、キャレットの移動量を算出する。この場合、キャレットの移動量は"へ"の高さ分であり、その移動距離は閾値より小さいと判定されたとする。すると、ＣＰＵ４０１は、第１のスクロール処理を採用する。例えば、ＣＰＵ４０１は、図１７（ｂ）のように、第１のスクロール処理における下スクロール時のキャレット移動位置１７０３に移動後のキャレット１７０２を移動させるように、キャレットと編集対象文字列とをスクロールさせる。
一方、図１７（ａ）のようなキャレット１７０１の位置で、移動キーの「文末へ」が選択されたとする。すると、キャレットは下に大きく移動し、編集領域の外にキャレットが移動することにより、スクロールを行うことになる。その際、ＣＰＵ４０１は、キャレットの移動量を算出する。この場合、キャレットの移動量は平仮名十数文字の高さ分であり、その移動距離は閾値より大きいと判定されたとする。すると、ＣＰＵ４０１は、第２のスクロール処理を採用する。例えば、ＣＰＵ４０１は、図１７（ｃ）のように、第２のスクロール処理における下スクロール時のキャレット移動位置１７０５に移動後のキャレット１７０４を移動させるように、キャレットと編集対象文字列とをスクロールさせる。
以上により、キャレットの移動指示として「文末へ」のような指示であっても、上述した実施形態の処理を適用できることを示した。移動指示は「文末へ」に限定されるものではなく、「文頭へ」でもよく、「特定の文字が次に現れる位置へ」や「編集領域の一つ上へ」といった移動指示でもよい。
【００２７】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給する。そして、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００２８】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではない。
上述した図５に示した情報処理装置４００のソフトウェア構成の一部又は全てを、ハードウェア構成として情報処理装置４００に実装してもよい。
【００２９】
以上、上述した各実施形態の処理によれば、スクロール発生時に利用者が編集位置を見失って混乱することを防止することができる。
【符号の説明】
【００３０】
４００  情報処理装置
４０１  ＣＰＵ
４０４  ＲＯＭ
４０６  ディスプレイ
【図１】
2018112927.tif 000003
【図２】
2018112927.tif 000004
【図３】
2018112927.tif 000005
【図４】
2018112927.tif 000006
【図５】
2018112927.tif 000007
【図６】
2018112927.tif 000008
【図７】
2018112927.tif 000009
【図８】
2018112927.tif 000010
【図９】
2018112927.tif 000011
【図１０】
2018112927.tif 000012
【図１１】
2018112927.tif 000013
【図１２】
2018112927.tif 000014
【図１３】
2018112927.tif 000015
【図１４】
2018112927.tif 000016
【図１５】
2018112927.tif 000017
【図１６】
2018112927.tif 000018
【図１７】
2018112927.tif 000019