以下、本発明の実施形態について図面を参照して詳細に説明する。なお、以下で説明する実施形態は、本発明を実施した場合の一例を示すものであり、これに限るものではない。
<第1の実施形態>
第1の実施形態として、スマートフォン・タブレット端末において複数行の文字列を入力可能な場面での文字入力支援方法の例に挙げて説明する。複数行の文字列を入力可能な場面としては、例えばアプリケーションでメモやメールの文章を作成する場合などである。図1は、本実施形態で説明する情報処理装置100の使用例と表示されるスクリーン画像の例を示している。本実施形態の情報処理装置100は、タッチパネルディスプレイ110と不図示のハードウェアボタンを備えている。情報処理装置100に対するユーザ操作は、タッチパネルディスプレイ110とユーザが操作する指示部との接触を検出することによって行われる。つまり、ユーザはタッチパネルディスプレイ上に表示されるメニューやボタン、ソフトウェアキーボードをユーザがタッチすることによって文字入力や各種操作を行う(タッチ操作)。また、本実施形態でユーザがタッチ操作に利用する指示部の一例としては、ユーザ自身の手指102を挙げて説明する。しかし、スタイラスなどユーザの身体意外を利用したタッチ検出システムに対しても、本実施形態は適用可能である。
図1の画像101は、情報処理装置100のタッチパネルディスプレイ110上に表示されるスクリーン画像の一例である。本実施形態では複数行の文字列を入力する場合について説明するため、画像101には、複数行の文字入力が可能な入力エリア103とQWERTY型のソフトウェアキーボード104が所定の位置に表示されている。また、画像101には情報処理装置100が有する予測変換機能によって予測される変換候補を表示するための変換候補表示エリア105も表示されている。さらに画像101には、画像101上で現在の入力位置を指し示すカーソル107と、入力エリア103内で入力された文字を表示する行を示すカーソル行106が表示されている。カーソル行106とは、その時点で編集対象として注目している文字列を含む行(またはその行自体を含む領域)であって、入力中の文字列106はカーソル行に表示される。入力中の文字列とは、最後に入力され、まだ表記が確定されていない文字(変換の必要の有無、及び変換結果が特定されていない状態の文字)を含む文字列である。本実施形態では、文字入力を行っている間は、カーソル行106はカーソル107を含んでいる。後述するが、文字を入力する位置(編集対象の位置)が確定されていない、あるいは、文字を入力する以外の編集(入力済みの文字の選択など)が行われているという場合は、カーソル行106がカーソル107を含まない場合もある。
なお、本実施例では見た目で分かり易いようにカーソル行106をハイライト表示したが、ハイライトしなくても構わない。また本実施形態の全ての例において、QWERTY型のソフトウェアキーボード104を表示して利用する場合について説明するが、その他への適用も可能である。例えば、本件の文字入力支援方法は、図1の104’で示すような日本語入力に特化したソフトウェアキーボード、もしくはタッチ操作での入力が可能なその他ソフトウェアキーボードにも適用可能である。
本実施形態では、情報処理装置100が生成したスクリーン画像101を描画するための信号がタッチパネルディスプレイ110に出力され、画面に表示された状態からユーザは手指102を用いてタッチ操作を行い、文字入力を開始する。以下、他図を用いて同じものを説明する場合には同一の符号を付し、その説明を省略する。
図2(A)は、本実施形態における情報処理装置100のハードウェア構成の一例を示すブロック図である。同図において、CPU200は、バス203を介して接続する各デバイスを統括的に制御する。オペレーティングシステム(OS)をはじめ、後述するフローチャートに示されるような本発明に係る各処理プログラム、デバイスドライバ等はROM202に記憶されており、RAM201に展開され、CPU200によって適宜実行される。RAM201は、高速にアクセス可能なCPU200の主メモリ、ワークエリア等の一時記憶領域として用いられる。ここでOSおよび各処理プログラム等はストレージ207に記憶されていてもよく、その場合は電源投入時に必要な情報がRAM201に適宜読み込まれる。また、ディスプレイI/F 204は、情報処理装置100で生成されるスクリーン画像をタッチパネルディスプレイ110が出力可能な信号に変換する。なお、本実施形態では、タッチパネルディスプレイ110は情報処理装置100の一部として構成されているが、外部に接続された独立したデバイスであっても本実施形態を適用可能である。入力I/F 205は、タッチセンサを備えたタッチパネルディスプレイ110が検出した該表示部への接触を情報処理装置100が処理可能な情報に変換する。ストレージI/F 206は、ストレージ207へのデータの入出力を行う。
本実施形態では、タッチパネルディスプレイ110は、スマートフォンやタブレットで一般的に用いられている静電容量方式のタッチセンサを想定している。ただし、抵抗膜方式、赤外線方式、超音波方式、音響波方式、振動検出方式等の各種タッチパネルが利用できる。他にも、距離画像センサや、ステレオカメラなどの三次元空間での位置を検出できるもので入力対象面に触れたかどうかを検出し、入力対象面上で定義される位置情報を取得してもよい。また、情報処理装置の表面に接触はしていないが、ある程度近接した状態(ホバー状態)でのユーザの指などの位置情報を検出できる検出手段を用いて得られたホバー状態での位置(ホバー位置)情報を、入力された位置として扱うことも可能である。
ストレージ207には、情報処理装置100が生成、出力するコンテンツやUI(User Interface)の部品となる画像などが格納されているものとする。なお、本実施形態では特にユーザが過去に入力した文字列が入力履歴としてストレージ207に格納されていることを想定している。ストレージ207としては、ディスクデバイスやフラッシュメモリ、ネットワークドライブやUSBドライブなどの大容量記憶装置を使用する。また、複数の記憶装置を並列に接続して構成されていてもよいし、クラウド上のストレージであっても構わない。
図2(B)は、本実施形態における情報処理装置100の機能構成の一例を示すブロック図である。情報処理装置100は、位置取得部300、操作特定部301、保持部302から構成される。さらに、情報処理装置100は、データ取得部303、候補特定部304、表示制御部305から構成される。これらの各機能部は、CPU200が、ROM202に格納されたプログラムをRAM201に展開し、後述する各フローチャートに従った処理を実行することで実現されている。また例えば、CPU200を用いたソフトウェア処理の代替としてハードウェアを構成する場合には、ここで説明する各機能部の処理に対応させた演算部や回路を構成すればよい。
位置取得部300は、タッチパネルディスプレイ110から出力されたタッチ情報を入力として受け付け、そのタッチ情報に基づいてタッチパネルディスプレイ110上での座標を示す位置情報を取得する。タッチ情報には、位置情報に加えて、センサによって情報が検出された時刻、接触が検出されているかあるいはリリース(画面をタッチしていた手指などが離されること)されたかを示すタッチイベントが含まれる。本実施形態では、このうち少なくとも位置情報がRAM201に保持される。
操作特定部301は、RAM201に保持されている位置情報を利用することによって情報処理装置100への各種操作を特定する。本実施形態では、主にソフトウェアキーボードの『各キーの押下』、『文字入力』、および『カーソル位置の移動』の操作が行われたことを特定する。このうち『文字入力』は、必ず『各キーの押下』に伴って検出される操作である。各操作の具体的な特定処理は後述する。
保持部302は、ストレージ207により実現される。保持部302には、操作特定部301によって文字入力操作が行われたと特定された場合、それによって入力された入力文字と、入力文字によって構成された入力文字列が、ユーザの入力履歴として保持される。また、文字入力を支援するために利用する単語やフレーズが辞書として記録されている。保持部302に記録された入力履歴や辞書は、ユーザがソフトウェアキーボードのキーをタッチして文字を入力する度に、データ取得部303によって適宜読み出され、RAM201に保持される。例えば、「S」という入力文字が入力された際に、それが「Shimomaruko」という入力文字列を構成するために用いられた場合、「S」に対応付けて「Shimomaruko」という単語が入力履歴として入力支援用に保持される。なお、日本語の入力の場合は、必ずしも入力文字列の表記の中に入力文字そのものが含まれるとは限らない。例えば、「し」という入力文字が「下丸子で」という漢字の文字列を構成するために用いられた場合、「し」の入力に対応付けて、「下丸子で」という「し」そのものは含まない文字列が、「し」によって構成される文字列の1つとして保持される。
候補特定部304は、操作特定部301によって特定された入力文字とRAM201に保持されているユーザの入力履歴および辞書からユーザがこれから入力するであろうとみなされる文字列の候補を特定する。特定した候補は、変換候補としてRAM201に保持される。または、さらにストレージ207に記憶して蓄積してもよい。
表示制御部305は、操作特定部301で特定された操作に応じて表示を制御する。例えば、操作特定部301で特定された操作が文字入力(ソフトウェアキーボードのキーの押下)であった場合は、押下されたキーに対応する文字をカーソル位置に表示する。さらに、前記キーの押下によって候補特定部304が特定した変換候補がRAM201に存在する場合は、変換候補を変換候補表示エリア105に表示する。
ここで、図3(A)を用いて本件の最も基本となるアイディアについて説明する。図3(A)に示すスクリーン画像101aは、複数行の文字を入力する際の初期画面表示である。つまり、ソフトウェアキーボード104と変換候補表示エリア105、カーソル107を含むカーソル行106が隣接して表示されている。また、スクリーン画像101bは、ソフトウェアキーボードのキーの押下によって『Hello World!』と入力した直後の表示例である。スクリーン画像101bの状態から、さらにソフトウェアキーボードのリターンキーを2回押下し、続けて『Smart Phone & Tablet』と入力した直後の表示はスクリーン画像101cとなる。図3のスクリーン画像101a、101b、101cで示すように、本実施形態の情報処理装置では、カーソル行106は常に入力エリア103の最下部に存在し、入力した文字は上方向にスクロール表示される。つまり、カーソル107およびカーソル行106は移動しない。ここで、本実施形態では、リターンキーが押下された位置を明示するため、スクリーン画像101cにはリターンマーク108が含まれる。ただし、実際の装置の動作においては、リターンマークの表示は省略して構わない。
従来のスマートフォンやタブレット端末で、複数行の文字列が入力可能なアプリケーションを利用する場合、1行目が表示される位置は、入力エリア103の最上部となることが多い。その場合、文字を入力してリターンキーを押下する度にカーソル107を含むカーソル行106は、下方向に移動する。従来の文字入力では、特に最初の文字を入力する場合には、入力エリア103の最上部に表示されるカーソル107とスクリーン画像101の最下部に表示されるソフトウェアキーボード104、もしくは変換候補表示エリア105とが、離れた位置に表示される。この結果、ユーザには、文字を入力する度に視線を上下する必要が生じ、操作性の低下や疲労を感じる場合がある。画面のサイズが大きくなると、カーソル107、ソフトウェアキーボード104、または変換候補表示エリア105の間の距離がより大きくなる。その結果、必要とされる視線の移動距離がさらに大きくなる。
以下で説明する本実施形態の具体的な処理は、特に、視線の上下移動を低減することを目的としている。
図3(B)ならびに図4のフローチャートを用いて、本実施形態における情報処理装置100の処理過程を詳細に説明する。図4は、本実施形態の情報処理装置100が実行する文字入力支援処理の一例を示すフローチャートである。本実施形態では、メモの作成やメール文章の作成など、複数行のテキストを入力・編集するために情報処理装置100が文字入力モードになると図4のフローチャートが開始される。
ステップS100において表示制御部305は、タッチパネルディスプレイ110の表示部に文字を入力するための入力エリア103とソフトウェアキーボード104を表示する。ユーザは表示されたソフトウェアキーボード104をタッチ操作することによって、文字列の入力を開始する。
ステップS101において、位置取得部300は、タッチパネルディスプレイ110から通知される信号に基づいて、表示部に対するユーザの手指102による接触が検出されたか否かの検出を行う。接触が検出されていないと判定される場合(ステップS101でNO)は、ステップS101の処理を所定の周期で繰り返してタッチの入力を待つ。接触が検出されたと判定される場合(ステップS101でYES)は、ステップS102に処理が進む。
ステップS102において、位置取得部300は、タッチパネルディスプレイ110から通知された信号に基づいて、タッチパネルディスプレイ110の表示部上での位置座標を取得する。例えば、タッチパネルディスプレイ110の表示部の左上を原点として、右方向にx軸、下方向にy軸を設定した場合、位置取得部300によってタッチ位置(x、y)を取得し、RAM201に保持する。このとき、位置情報以外の検出時刻やタッチイベントなどのタッチ情報は、各タッチ位置に関連付けて保持しておく。
ステップS103において、操作特定部301は、RAM201に保持されているタッチ位置の位置情報を利用して、タッチ位置が入力エリア103内に存在するか否かを判定する。タッチ位置が入力エリア103内に存在すると判定される場合(ステップS103でYES)、ステップS104に処理が進む。
ステップS104では、操作特定部301は、入力された操作は『カーソルの移動操作』であると特定する。それに応じて表示制御部305は、入力エリア内のタッチ位置にカーソル107を移動する表示制御を行う。そして、ステップS113に処理が移行する。ステップS113の処理については後述する。
一方、ステップS103において、タッチ位置が入力エリア103内に存在しないと判定された場合(ステップS103でNO)は、ステップS105に処理が進む。ステップS105において、操作特定部301は、タッチ位置がソフトウェアキーボード上の任意のキーの表示範囲内か否かを判定する。タッチ位置が任意のキーの表示範囲外である場合(ステップS105でNO)は、操作特定部301は有効な操作は行われなかったと特定し、ステップS101の処理に戻る。タッチ位置が任意のキーの表示範囲内である場合(ステップS105でYES)、ステップS106に進む。
ステップS106では、操作特定部301は、入力された操作は『文字入力』であると特定する。そして、操作特定部301はソフトウェアキーボードの押下されたキーを特定し、特定されたキーに対応する入力文字を示す情報をRAM201に保持する。またこの時、操作特定部301は入力が確定した入力文字をユーザの入力履歴として保持部302に記録する。
ステップS107では、表示制御部305が、最後に生成したスクリーン画像の情報に基づいて、ソフトウェアキーボード104とカーソル行106、ならびに変換候補表示エリア105の3つのエリアが既に近接して表示されているか判定する。前記3つのエリアが近接して表示されていると判定される場合(ステップS107でYES)は、ステップS109の予測変換処理に処理が移行する。ステップS109の予測変換処理については後述する。前記3つのエリアが近接して表示されていないと判定される場合(ステップS107でNO)は、ステップS108に処理が移行する。
ステップS108において、表示制御部305は、ソフトウェアキーボード104とカーソル行106、及び変換候補表示エリア105の3つが近接し合うよう配置されたスクリーン画像を生成し、タッチパネルディスプレイ110に出力する。すなわち、本実施形態では、ソフトウェアキーボード104を用いて文字が入力されたことに応じて、入力中の文字列を、変換候補表示エリア105と、ソフトウェアキーボード104に近づけて表示させる。本実施形態では、表示部の画面内の最下部にソフトウェキーボード104、それに接するように変換候補表示エリア105、さらにそれに接するようにカーソル行106が上下に並んで表示されるように配置する。つまり、画面の下端からソフトウェキーボード104、変換候補表示エリア105、カーソル行106の順に並んだ状態が表示される。本実施形態のステップS108において生成されるスクリーン画像は図3(B)を用いて詳細を後述する。ステップS108の処理が完了するとステップS109に処理が進む。
ここで、ステップS109において実行される本実施形態の予測変換処理を図5のフローチャートを参照して説明する。ステップS109の処理が開始されると、まずステップS200の処理が開始される。ステップS200において、候補特定部304はRAM201に保持されている入力文字に関連する入力履歴および辞書データを、データ取得部303を介して保持部302から取得する。このとき、入力文字に関連する入力履歴および辞書データは、直前までの文字入力に応じて蓄積されているか、あるいは、ストレージ207に記憶された情報から読み出されてRAM201に保持された状態にある。
ステップS201において、候補特定部304は、取得した入力履歴と辞書データを用いて、ユーザが入力する可能性が高いとみなされる文字列の1以上の候補を特定し、予測変換の結果として情報を取得する。取得された1以上の候補の文字列が、ユーザに提示される変換候補である。候補特定部304は、取得された1以上の変換候補をRAM201に保持する。ただし、入力された文字の使用頻度が低い場合や、変換候補が存在しない文字が入力された場合などは、ユーザが入力する可能性が高いとみなされる文字列の1以上の候補が特定されない場合もある。特定された候補が無い場合には、候補がないことを示す情報をRAM201に保持する。あるいは、予測変換処理を中断して図4のメインフローチャートに戻ってよい。
ステップS202において、表示制御部305は、RAM201に保持されている変換候補を変換候補表示エリア105に表示する。具体的には、変換候補表示エリア105内に1以上の変換候補を並べて配置したスクリーン画像を生成し、タッチパネルディスプレイ110に出力する。変換候補がない場合には、変換候補表示エリア105を空の状態で表示する。なお、変換候補が多数存在する場合は、スクロール操作によって変換候補表示エリア105内の表示内容を変更可能としてもよい。
ステップS203において、位置取得部300は、タッチパネルディスプレイ110から通知された信号に基づいて、一定時間の間に表示部への接触があったかを判定する。表示部への接触があったと判定した場合(ステップS203でYES)、ステップS204において、位置取得部300が、タッチパネルディスプレイ110の表示部上での位置座標を取得し、RAM201に保持する。表示部への接触はないと判定された場合(ステップS203でNO)、予測変換処理を終了してメイン処理に戻る。なおステップS203の処理は、ステップS202の処理後一定時間に限らず、変換候補が表示されて続けている間は、常に割り込み処理として実行されてもよい。
ステップS205において、操作特定部301は、RAM201に保持されているタッチ位置の位置情報を利用して、タッチ位置が、変換候補表示エリア105の変換候補が表示された範囲に存在するか否かを判定する。タッチ位置が変換候補表示エリア105の変換候補が表示された範囲内に存在すると判定される場合(ステップS205でYES)、ステップS206に処理が進む。タッチ位置が変換候補表示エリア105の変換候補が表示された範囲内に存在しないと判定される場合(ステップS205でNO)、予測変換処理を終了する。
ステップS206では、表示制御部305が、タッチ位置に基づいて特定された変換候補の文字列をカーソルの位置に挿入するとともに、変換候補表示エリア105に表示されていたその他の変換候補をクリア(非表示)にするようスクリーン画像を更新する。同時に、予測変換処理においてRAM201に保持した情報のうち、タッチされた変換候補以外の情報はクリアする。ステップS206の処理が完了すると、予測変換処理S109は終了し、図4のフローチャートの処理に戻ってステップS110に進む。
ステップS110において、表示制御部305は、RAM201に保持されている情報に基づいて、カーソル107の位置に入力された文字、あるいは文字列を挿入したスクリーン画像を生成し、出力する。ステップS109の予測変換処理において、特定の予測変換候補が選ばれていた場合は、選ばれた変換結果の文字列が表示される。特定の予測変換候補が選ばれていない場合は、入力された文字がそのまま表示される。そして、カーソル位置は、入力された文字あるいは文字列の後に移動する。
ステップS111において、操作特定部301は、それまでの操作に応じて入力され、カーソル行106に表示されている文字の数が、予め定められた1行分の最大文字数を超えたか否かの判定を行う。カーソル行に含まれる文字数が1行の最大文字数を超えていないと判定される場合(ステップS111でNO)は、ステップS113に処理が移行する。カーソル行に含まれる文字数が1行の最大文字数を超えたと判定される場合(ステップS111でYES)は、ステップS112に処理が移行する。
ステップS112において、表示制御部305は、1行の文字数が最大となる文字の直後を改行したスクリーン画像を生成し、出力する。この場合に行われる改行表示は、図3(C)で示す改行とは異なり、リターンキーを入力したことによる改行ではないので、リターンキーマーク108は表示されない。スクリーン画像の制約のためスクリーン画像上でただ単に改行されているに過ぎない。ステップS112の処理が完了すると、ステップ113に処理が進む。
ステップS113において、情報処理装置100は文字入力を終了するか否か(入力モードを終了するか否か)の判断を行う。例えば、図3の各スクリーン画像に示すDoneボタン111の押下を操作特定部301が検出することによって文字入力の終了を検知してもよいし、一定時間文字入力がなされない場合に自動で文字入力モードを終了しても構わない。文字入力を終了しないと判定される場合(ステップS113でNO)は、ステップ101に処理が移行し、タッチが検出される度に、前述した処理を繰り返しながら、文字入力を繰り返す。一方、文字入力を終了したと判定される場合(ステップS113でYES)は図4で示す全ての処理が終了し、情報処理装置100は文字入力モードを終了する。
なお、上述した例では、図4のフローチャートの処理のうちステップS104では、タッチした位置にカーソル107を移動したが、その限りではない。例えば、タッチした箇所に文字・文字列が無い場合、タッチした箇所を含む行の先頭にカーソル107を移動しても構わない。また、タッチした箇所に文字・文字列は無いが、タッチした箇所を含む行に文字・文字列が存在する場合は、その文字・文字列の最後尾にカーソル107を移動してもよいし、文字・文字列の前(行の先頭)にカーソル107を移動しても構わない。
<操作例>
次に、図3(B)を参照して、第1の実施形態に係る情報処理装置100の具体的な操作例を説明する。図3のスクリーン画像101dは、複数の文字列を入力している最中の画面であり、ちょうど『Software Ke』まで入力が完了したことを示している。この時、変換候補表示エリア105には、候補特定部304が特定した変換候補『Key』、『Keyboard』、『Keynote』が表示されている。例えば、ユーザが変換候補のうち『Keyboard』を選択した(ステップS205でYES)とすると、スクリーン画像101eで示すように、カーソル行106には『Software Keyboard』という文字列が入力される(ステップS206)。また、カーソル107の位置は、スクリーン画像101dでの107dの位置からスクリーン画像101eでの107e1の位置へ移動する。
続いて、ユーザが既に入力した文字列『SmartPhone & Tablet』を編集するために、入力エリア103の該当部分(Phoneと&の間)をタッチしたとする(ステップS103でYES)。この時、表示制御部305は、スクリーン画像101eでの、カーソル107e2の位置にカーソルを移動する表示制御を行う(ステップS104)。但し、カーソル行106は移動しない。つまり本実施形態ではこの時、カーソル行106はカーソル107を含んでいない。
カーソルが、位置107e2に表示されている状態で、さらにユーザが文字入力を行った場合に表示されるのが、スクリーン画像101fである。例えば、ユーザがソフトウェアキーボードのUキーをタッチしたとすると、その瞬間に図4のステップS107の判断が行われる。この時、カーソル行106は変換候補表示エリア105ならびにソフトウェアキーボード104と離れて表示されている(ステップS107でNO)。従って、処理は表示制御部305の処理により(ステップS108)、カーソル107を含む行がカーソル行106となるように入力エリア103全体が上下にスクロール表示される。スクリーン画像101fでは、スクリーン画像101eの状態でタッチされた位置107e2を含む行が、カーソル行106に一致するように入力エリア103の内部に表示している文字列をスクロールされている。つまりカーソル行は再びカーソル107を含んだ状態となる。つまり、Uキーを入力したのをきっかけに、入力エリア内の文字列がスクロールした後にカーソル行に表示されている文字列は『SmartPhone U & Tablet』となる。またこの時、カーソル107の位置は107fとなる。
本実施形態では、ユーザが入力エリア103内をタッチしたタイミングではなく、文字入力のためにキーをタッチしたタイミングで入力エリア内の文字列をスクロールし、カーソル行106まで編集対象となるカーソル位置を移動させた。これは、入力エリア103をタッチした段階では、まだ、ユーザが文字入力を目的としているか否かを決定できないためである。例えばユーザは、文字入力を目的としておらず、入力済みの文字列を選択するためや、あるいは、文章全体を大きくスクロールして閲覧するために、入力エリア103をタッチしただけの可能性もある。従って、本実施形態では、文字を入力する意図が示された段階で、カーソル行を基準とするスクロールを実行することで、誤動作を低減しユーザの意図に沿った入力支援を行うことができる。
しかしながら、他のタイミングであっても構わない。例えば、スマートフォンのインカメラ(表示画面側に配置されたカメラ)によってユーザの視線の移動を常に検知し、ユーザの視線の移動が大きい場合だけ、前記隣接表示制御を行ってもよい。大きな視線移動を検知したタイミングで隣接表示制御をおこなうことができれば、ユーザとスクリーン画像の距離が大きい場合は視線の移動が相対的に小さくなるため、隣接表示制御を行わないとった機能も実現可能である。また、スクロールによりカーソルの位置を移動させた後で、文字の編集が行われない時間が一定時間以上続いた場合は、移動させたカーソル位置を基の位置に戻す処理を追加しても構わない。この場合、文字入力が再開されれば再度スクロールをするなど、上記処理を繰り返すような実施形態も実現可能である。
図3で例示したように、ソフトウェアキーボード104、変換候補表示エリア105、カーソル行106は隣接して表示することで、視線の上下移動を低減でき、操作性を低下することなく文字入力を継続できる。文字入力中のユーザは、最も頻繁にタッチするソフトウェアキーボード104を操作するために最適な位置に手を配置している可能性が高い。そこで、本実施形態では、入力支援のために表示され、ソフトウェアキーボード104のキーと同様にタッチの対象となる変換候補表示エリア105は、キーをタッチする手の位置からタッチしやすいように近くに表示される。これにより、入力中に手指を移動させる必要がある移動量も抑えることができ、操作性が向上する。入力エリア103には、カーソル行106の前後にも文章が続くため、ソフトウェアキーボード104、変換候補表示エリア105以外のできるだけ広い面積を割り当てた上でカーソル行106の位置を制御することで、効率的な入力支援が可能となる。従って、図3で例示したように、スクリーン画像下部からソフトウェアキーボード104、変換候補表示エリア105、カーソル行106の順番で隣接して表示した場合が最も視線の上下移動を低減できる。
ただし、本実施形態は、ソフトウェアキーボード104、変換候補表示エリア105、カーソル行106の順に隣接して(接するように)する形態に限られない。例えは、本実施形態で示すソフトウェアキーボード104と比較してソフトウェアキーボードのサイズが小さい(例えば1行程度のサイズである)場合は、ソフトウェアキーボード104と変換候補表示エリア105が逆の順番でも構わない。また、入力エリア103が1行である場合は、カーソル行106(入力エリア103)と変換候補表示エリア105もしくはソフトウェアキーボード104の順番を入れ替えることも可能である。このように、デバイスの設定や大きさに応じて、変換候補表示エリア105と、カーソル行106の順番を入れ替えても構わないし、これら3つが必ずしも接している必要はなく、視線の移動が少ない範囲で近接して(少し離れて)表示されていても構わない。なお、本実施形態では、カーソル行106が1行表示される場合について説明したが、カーソル行106が複数行表示されても構わない。例えば、画面サイズが大きい時、もしくは画面の向きが縦向きから横向きになった時に、カーソル行106を1行から2行に変更して表示しても構わない。
以上、説明したように、本実施形態では、文字入力操作を受け付ける場合に、ソフトウェアキーボード104と変換候補表示エリア105、カーソル行106を隣接して表示する。その結果、文字入力の際にユーザの視線の上下移動を低減できるため、操作性が向上するとともに、ユーザの疲労や認知負荷を低減できる。
<第1の実施形態の変形例1>
第1の実施形態の変形例では、第1の実施形態とは別の入力モードとして、カーソルを入力済みの文字列に合わせるためのUI部品をさらに表示する例を説明する。変形例1では、このようなUI部品を用いることで、入力済みの文字列を編集対象として指定する場合でも、視線や手指の大きな移動を必要としないため、例えば画面サイズが大きい場合でも、操作性が向上するとともに、ユーザの疲労や認知負荷を低減できる。
以下、変形例1について図面を参照して詳細に説明する。なお、第1の実施形態において説明した内容と共通するものについては同番号を付し、適宜説明を省略する。
また、変形例1にかかる情報処理装置100のハードウェア構成、及び機能構成は第1の実施形態に準じる。ただし、変形例1ではカーソル行106の内容を上下にスクロール移動させるためのUI部品が新規に表示される。図7のスクリーン画像101gでは、カーソル行106の先頭部分にハンドル109が表示されている。ハンドル109は、カーソル行106に設けられた「持ち手」のメタファであって、カーソル行106として表示された領域のうち、ハンドル109の上をタッチした状態のときはカーソル行を上下移動させることが可能になる。ハンドル109以外の部分をタッチした場合は、カーソル行106を移動させることはできない。変形例1の操作特定部301は、表示されたハンドル109をタッチされたことに応じて、入力された操作が『ハンドル操作』であると特定する。本実施形態においてハンドル操作とは、カーソル行を、内容をカーソル行の大きさを単位として1つ分(例えば1行分で)上下にスライド移動させる操作である。
変形例1における情報処理装置100の処理過程を図6のフローチャートを参照して説明する。ただし、図4のフローチャートと同じ内容の処理ステップには同じ番号を付し、セル名を省略する。変形例1では、文字入力モードが開始されると、ステップS300において、表示制御部305は、タッチパネルディスプレイ110の表示部に文字を入力するための入力エリア103とソフトウェアキーボード104に加えてハンドル109を表示する。
そして、ステップS103でタッチ位置が入力エリア内ではないと判定された場合、ステップS300において、操作特定部301は、RAM201に保持されているタッチ位置の位置情報を利用して、ハンドル操作が行われたかを判定する。具体的には、タッチ位置の座標が、所定の表示アイテムの表示範囲に含まれるかを判定する。ハンドル操作が行われたと判定される場合(ステップS300でYES)、ステップS300に処理が進む。ハンドル操作ではない判定される場合(ステップS300でNO)、ステップS105に処理が進む。ステップS301では、操作特定部301は、ハンドル操作によって指示されたカーソル行106の移動方向を特定する。それに応じて表示制御部305は、カーソル行106が上下のいずれかに移動し、元に戻る様子を表示するスクリーン画像を生成して出力する。ステップS302では、表示制御部305が、ハンドル操作によって指示された方向に、入力エリア103の内容をカーソル行106の行数の分、スクロールする。すなわち、カーソル行106の中に移動した、入力済みの文字列や空白行が、入力中の文字列とみなされ、変換処理などの編集の対象になる。
なお、図6のフローチャートの例では、第1の実施形態の処理に、ハンドル操作を判定する処理を加えた例として説明しているが、独立したモードとしても構わない。その場合は、ステップS103及びステップS104の処理を省略し、ステップS102でタッチ位置が取得されたことに応じて、ステップS300の処理が実行されるように変形すればよい。また、ユーザが設定によりいずれのモードを使用するかを選択可能としてもよい。後述する変形例についても同様に選択肢となる。
<操作例>
次に具体的な操作例を説明する。まず、図7で示すように、情報処理装置100にスクリーン画像101gが表示されている。入力エリア103にはドキュメント700に示す文字列が入力されているが、ソフトウェアキーボード104、変換候補表示エリア105、カーソル行106を隣接させて表示させているため、入力エリア103の一部が隠れている。隣接表示制御の結果、『Touch Panel』が入力されている行がカーソル行106となっている。つまり文字列『Software Keyboard』は隠れている状態である。
変形例1では、操作特定部301によって『ハンドル操作』であると特定されると、ユーザはハンドル109をタッチした手指を上下に動かすことによって、カーソル行106をカーソル行の高さ分だけ上下に移動できるようになる。この時、例えば図7の矢印701で示す方向にカーソル行を一旦移動させ、元の位置に戻して離すという操作をした場合、操作特定部301は上方向のスクロールが指示されたと解釈する。それに応じ、指示入力エリア103を1行だけ上方向にスクロールする操作が行われたと特定する。その特定結果を受けて、表示制御部305は、入力エリア103を1行だけ上方向にスクロールする表示制御を行う。その結果、情報処理装置100のでは図7のスクリーン画像101hが表示される。つまり、のスクリーン画像101gでは隠れて見えなくなっていた文字列『Software Keyboard』が表示される。
同様に、スクリーン画像101gが表示された状態で、矢印702で示す方向にハンドル109をタッチした指を一旦下方向に移動させて元の位置に戻すという操作は、操作特定部301は入力エリア103を1行下方向のスクロールする指示として解釈される。それに応じ、表示制御部305は入力エリア103を1行だけ下方向にスクロールする表示制御を行う。その結果、情報処理装置100には図7に示されるスクリーン画像101iが表示される。つまり、スクリーン画像101hでカーソル行106に表示されていた文字列『Touch Panel』は、スクロール表示制御によって見えなくなり、カーソル行106には代わりに文字列『And』が表示される。
また、ハンドル109の操作を繰り返したり、あるいは所定以上の時間をかけて入力したりすることによって、入力エリア103に入力されている文字列を連続スクロールしたり、または先頭行もしくは末尾行まで一気にスクロールすることを可能としてもよい。例えば、ハンドル109をタッチした指を、矢印701で示す方向にカーソル行106の高さ分だけ移動し、その状態を所定の時間を維持するという操作を行ったとする。この場合、操作特定部301は入力エリア103を上方向に1行単位で連続的にスクロールすることを指示する操作として特定する。特定結果に応じて、表示制御部305は、ユーザがハンドル109を元の位置に戻すまでの間、入力エリア103を上方向に1行ずつ連続的にスクロールする表示制御を行う。
また、変形例1では、ハンドル109に対して、の矢印702で示す方向のフリック操作が入力されたことに応じて、入力エリア103の先頭行に表示されている文字列をカーソル行106の位置へ一気にスクロールする。ここでフリック操作とは、タッチパネルディスプレイ110上で指を素早く動かしたり弾いたりする操作のことである。この場合、操作特定部301は下方向のフリック操作が行われたと特定し、表示制御部305は、入力エリア103の先頭行に表示されている文字列がカーソル行106の位置に表示されるように入力エリア103を一気にスクロールする表示制御を行う。同様に、入力エリア103の末尾行に表示されている文字列をカーソル行106の位置へ一気にスクロールするためには、ハンドル109を図7の矢印701で示す方向にフリック操作すれば良い。
以上説明したように、変形例1ではカーソル行106の近くに(ユーザの指が容易に届く位置)にハンドル109を表示することで、入力済みの文字列に対する編集を所望とする場合も、視線や指の移動量を抑えることが可能となる。
<第1の実施形態の変形例2>
変形例2では、ユーザが任意の位置にカーソル行106を設定できる例を説明する。以下、変形例2について図8(A)を参照して説明する。なお、第1の実施形態において説明した内容と共通するものについては同番号を付し、適宜説明を省略する。
また、変形例2にかかる情報処理装置100のハードウェア構成、及び機能構成は第1の実施形態に準じる。また、変形例1と同様にカーソル行106の先頭部分にハンドル109を表示する。変形例1との違いはハンドル109を使って入力エリア103内の任意の行位置にカーソル行106を移動できることである。つまり、カーソル行106の位置を変換候補表示エリア105のすぐ上の行だけでなく、2行上もしくは3行上という具合に自由に設定できる。
図8(A)のスクリーン画像101g’では、図7に示した表示例と比較してカーソル行106が1行上に設定されている。この結果、カーソル行106よりも上の行の文字列だけでなく、カーソル行106よりも1行下の文字列まで表示されている。カーソル行106の位置は一度設定した後は再設定するまでは移動しない。また変形例2では、カーソル行106の位置が変更可能となるだけで、その他の機能は第1の実施形態およびその変形例1で説明した内容と同じである。
以上説明したように、変形例2によれば、ユーザが好きな位置にカーソル行106を設定できるようにすることで、カーソル行106の前後に入力された文字を確認しながら文字入力を行うことが可能となる。変形例2で示した方法は、カーソル行前後の文字を確認しながら文字入力を行う場合に有効な方法である。
<第2の実施形態>
第2の実施形態では、上下方向の入力エリア103の位置が固定されて(レイアウトされて)動かせない場合であっても、ソフトウェアキーボード104,変換候補表示エリア105、カーソル行106を近接して表示する方法について説明する。以下、第2の実施形態について図面を参照して詳細に説明する。なお、第1の実施形態において説明したのと共通する内容については同番号を付し、適宜説明を省略する。また、第2の実施形態にかかる情報処理装置100のハードウェア構成、及び機能構成は第1の実施形態に準じる。
図8の(B)、及び図9のフローチャートを用いて、本実施形態における情報処理装置100が実行する処理を説明する。
本実施形態では、WebブラウザのURL入力欄など、位置が固定された所定の入力欄に対して文字入力する例について説明する。例えば、図8(B)のスクリーン画像101jは、Webブラウザを実行中の画面に表示される画像であり、ソフトウェアキーボード104、変換候補表示エリア105、入力エリア103、Webコンテンツ表示エリア800から構成されている。第2の実施形態では入力エリア103は1行であるので、この行がカーソル行106となる。
図9は、本実施形態の情報処理装置100が実行する文字入力支援処理の一例を示すフローチャートである。本実施形態では、WebブラウザのURL入力欄(入力エリア103)をタッチすることによって情報処理装置100が文字入力モードになると、図9のフローチャートが開始される。
第2の実施形態では、ステップS400において、表示制御部305が、タッチパネルディスプレイ110の表示部に、入力エリア103(カーソル行106)の複製802、ソフトウェアキーボード104、変換候補表示エリア105と近接して表示させる。本実施形態では、図8(B)のスクリーン画像101kで示すように、変換候補表示エリア105のすぐ上に入力エリア103(カーソル行106)の複製802を配置する。
ステップS401において、表示制御部305は、表示部において、入力エリア103(カーソル行106)とその複製802を強調して表示させる。本実施形態では、スクリーン画像101kの801で示すように、Webコンテンツ表示エリアをグレーアウトすることによって、入力エリア103(カーソル行106)とその複製802を強調して表示させる。しかし、その限りではない。例えば、入力エリア103(カーソル行106)とその複製802を同じ色のフレームで囲むことによって強調表示しても構わない。ステップS401が完了すると、ステップS101に処理が進む。以降ステップS110までの処理は、第1の実施形態と同一となるので説明を省略する。
ステップS402では、表示制御部305によって、入力エリア103(カーソル行106)とその複製802の表示内容を同期させたスクリーン画像が表示される。つまり、入力エリア103(カーソル行106)に文字を入力すると、その結果が直ちに複製802に反映される。その結果、入力エリア103(カーソル行106)とその複製には常に同じ文字列が表示される。
第2の実施形態では、表示部の画面内の最下部にソフトウェキーボード104、それに接するように変換候補表示エリア105、さらにそれに接するように入力エリア103の複製802が上下に並んで表示されるように配置する。つまり、画面の下端からソフトウェキーボード104、変換候補表示エリア105、入力エリア103の複製802の順に並んだ状態が表示される。これは第1の実施形態と同様、最もタッチされる頻度の高いソフトウェアキーボードの位置を基準にした配置である。
以上、説明したように、本実施形態の方法で入力エリア103の複製を作成すれば、入力エリア103がレイアウトされて動かせない場合であっても、ソフトウェアキーボード104、変換候補表示エリア105、カーソル行106を近接表示できる。従って、ユーザの視線や手指の移動を低減し、操作性を向上させることができる。
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。