以下、実施の形態について図面を参照して説明する。
図1は、一実施形態に係る電子機器の外観の一例を示す斜視図である。この電子機器は、例えば、ペンまたは指によって手書き入力可能なペン・ベースの携帯型電子機器である。この電子機器は、タブレットコンピュータ、ノートブック型パーソナルコンピュータ、スマートフォン及びPDA等として実現され得る。図1においては、この電子機器がタブレットコンピュータとして実現されている例が示されている。以下の説明では、本実施形態に係る電子機器がタブレットコンピュータとして実現されているものとして説明する。タブレットコンピュータは、タブレットまたはスレートコンピュータとも称される携帯型電子機器である。
図1に示すタブレットコンピュータ10は、本体11とタッチスクリーンディスプレイ12とを備える。本体11は薄い箱型の筐体を有しており、タッチスクリーンディスプレイ12は当該本体の上面に重ね合わせるように取り付けられている。
タッチスクリーンディスプレイ12には、フラットパネルディスプレイと、フラットパネルディスプレイの画面上のペンまたは指の接触位置を検出するように構成されたセンサとが組み込まれている。フラットパネルディスプレイは、例えば、液晶表示装置(LCD)であってもよい。センサとしては、例えば、静電容量方式のタッチパネル、電磁誘導方式のデジタイザ等を使用することができる。以下ではタッチパネル及びデジタイザの2種類のセンサの双方がタッチスクリーンディスプレイ12に組み込まれている場合を説明する。このため、タッチスクリーンディスプレイ12は、指を使用した画面に対するタッチ操作のみならず、ペン100を使用した画面に対するタッチ操作も検出することができる。
ペン100は、例えばデジタイザペン(電磁誘導ペン)であってもよい。ユーザは、ペン100を使用してタッチスクリーンディスプレイ12上で手書き入力操作を行うことができる(ペン入力モード)。ペン入力モードにおいては、画面上のペン100の動きの軌跡、つまり、手書き入力操作によって手書きされるストロークが求められ、これによって手書きにより入力された複数のストロークが画面上に表示される。ペン100が画面に接触されている間のペン100の動きの軌跡が1つのストロークに相当する。複数のストロークが文字、記号等を構成する。手書きされた文字、手書きされた図形、手書きされた表等に対応する多数のストロークの集合が手書き文書を構成する。
本実施形態では、この手書き文書は、イメージデータではなく、各ストロークの軌跡の座標列とストローク間の順序関係とを示す時系列情報(手書き文書データ)として記憶媒体に保存される。ただし、この手書き文書は、イメージデータに基づいて生成されてもよい。時系列情報の詳細については後述するが、当該時系列情報は、複数のストロークが手書きされた順を示し、かつ、複数のストロークにそれぞれ対応する複数のストロークデータを含む。換言すれば、時系列情報は、複数のストロークにそれぞれ対応する時系列のストロークデータの集合を意味する。各ストロークデータは、ある1つのストロークに対応し、このストロークの軌跡上の点それぞれに対応する座標データ系列(時系列座標)を含む。これらストロークデータの並びの順序は、ストロークそれぞれが手書きされた順序に相当する。
タブレットコンピュータ10は、記憶媒体から既存の任意の時系列情報を読み出し、この時系列情報に対応する手書き文書、つまり、この時系列情報によって示される複数のストロークを画面上に表示することができる。時系列情報によって示される複数のストロークも、手書きによって入力される複数のストロークである。
更に、本実施形態に係るタブレットコンピュータ10は、ペン100を使用せずに、指で手書き入力操作を行うためのタッチ入力モードも有している。タッチ入力モードが有効な場合、ユーザは、指を使用してタッチスクリーンディスプレイ12上で手書き入力操作を行うことができる。タッチ入力モードにおいては、画面上の指の動きの軌跡、つまり、手書き入力操作によって手書きされるストロークが求められ、これによって手書きにより入力された複数のストロークが画面上に表示される。
タブレットコンピュータ10は、編集機能を有している。この編集機能は、「消しゴム」ツール、範囲選択ツール、及び他の各種ツール等を用いたユーザによる編集操作に応じて、範囲選択ツールによって選択される表示中の手書き文書内の任意の手書き部分(手書き文字、手書きマーク、手書き図形及び手書き表等)を削除または移動することができる。また、範囲選択ツールによって選択される手書き文書内の任意の手書き部分を、手書き文書を検索するための検索キーとして指定することもできる。また、範囲選択ツールによって選択される手書き文書内の任意の手書き部分に対して、手書き文字認識/手書き図形認識/手書き表認識のような認識処理を実行することもできる。
本実施形態では、手書き文書は、1つまたは複数のページとして管理され得る。この場合、時系列情報(手書き文書データ)を1つの画面に収まる面積単位で区切ることによって、1つの画面に収まる時系列情報のまとまりを1つのページとして記録してもよい。あるいは、ページのサイズを可変できるようにしてもよい。この場合、ページのサイズは1つの画面のサイズよりも大きい面積に広げることができるので、画面のサイズよりも大きな面積の手書き文書を1つのページとして扱うことができる。1つのページ全体をディスプレイに同時に表示できない場合は、そのページを縮小して表示するようにしてもよいし、縦横スクロールによってページ内の表示対象部分を移動するようにしてもよい。
図2は、タブレットコンピュータ10と外部装置との連係動作の一例を示している。タブレットコンピュータ10は、無線LAN等の無線通信デバイスを備えており、パーソナルコンピュータ1との無線通信を実行することができる。更に、タブレットコンピュータ10は、無線通信デバイスを使用してインターネット上のサーバ2との通信を実行することもできる。サーバ2は、オンラインストレージサービス、他の各種クラウドコンピューティングサービスを実行するサーバであってもよい。
パーソナルコンピュータ1は、ハードディスクドライブ(HDD:Hard Disk Drive)のようなストレージデバイスを備えている。タブレットコンピュータ10は、時系列情報(手書き文書データ)をパーソナルコンピュータ1に送信して、パーソナルコンピュータ1のHDDに記録することができる(アップロード)。タブレットコンピュータ10とパーソナルコンピュータ1との間のセキュアな通信を確保するために、通信開始時には、パーソナルコンピュータ1がタブレットコンピュータ10を認証するようにしてもよい。この場合、タブレットコンピュータ10の画面上にユーザに対してIDまたはパスワードの入力を促すダイアログを表示してもよいし、タブレットコンピュータ10のID等を自動的にタブレットコンピュータ10からパーソナルコンピュータ1に送信してもよい。
これにより、タブレットコンピュータ10内のストレージの容量が少ない場合でも、タブレットコンピュータ10が多数あるいは大容量の時系列情報を扱うことが可能となる。
更に、タブレットコンピュータ10は、パーソナルコンピュータ1のHDDに記録されている任意の1以上の時系列情報を読み出し(ダウンロード)、その読み出した時系列情報によって示されるストロークをタブレットコンピュータ10のタッチスクリーンディスプレイ12の画面に表示することができる。この場合、複数の時系列情報それぞれのページを縮小することによって得られるサムネイルの一覧をタッチスクリーンディスプレイ12の画面上に表示してもよいし、これらサムネイルから選ばれた1ページをタッチスクリーンディスプレイ12の画面上に通常サイズで表示してもよい。
更に、タブレットコンピュータ10が通信する先はパーソナルコンピュータ1ではなく、上述したように、ストレージサービス等を提供するクラウド上のサーバ2であってもよい。タブレットコンピュータ10は、時系列情報(手書き文書データ)をインターネットを介してサーバ2に送信して、サーバ2のストレージデバイス2Aに記録することができる(アップロード)。更に、タブレットコンピュータ10は、サーバ2のストレージデバイス2Aに記録されている任意の時系列情報を読み出して(ダウンロード)、その時系列情報によって示されるストロークそれぞれの軌跡をタブレットコンピュータ10のタッチスクリーンディスプレイ12の画面に表示することができる。
このように、本実施形態では、時系列情報が保存される記憶媒体は、タブレットコンピュータ10内のストレージデバイス、パーソナルコンピュータ1内のストレージデバイス、サーバ2のストレージデバイスのいずれであってもよい。
次に、図3及び図4を参照して、ユーザによって手書きされたストローク(文字、図形及び表等)と時系列情報との関係について説明する。図3は、ペン100等を使用してタッチスクリーンディスプレイ12上に手書きされる手書き文書(手書き文字列)の一例を示している。
手書き文書では、一旦手書きによって入力される文字や図形等の上に、更に別の文字や図形等が手書きによって入力されるというケースが多い。図3においては、「A」、「B」及び「C」の手書き文字が、この順番で手書きによって入力され、この後に、手書きの矢印が、手書き文字「A」の近傍に手書きによって入力されている。
手書き文字「A」は、ペン100等を使用して手書きされた2つのストローク(「∧」形状の軌跡、「−」形状の軌跡)によって、つまり、2つの軌跡によって表現される。最初に手書きされる「∧」形状のペン100の軌跡は例えば等時間間隔でリアルタイムにサンプリングされ、これによって「∧」形状のストロークの時系列座標SD11、SD12、…、SD1nが得られる。同様に、次に手書きされる「−」形状のペン100の軌跡も等時間間隔でリアルタイムにサンプリングされ、これによって「−」形状のストロークの時系列座標SD21、SD22、…、SD2nが得られる。
手書き文字「B」は、ペン100等を使用して手書きされた2つのストローク、つまり、2つの軌跡によって表現される。手書き文字「C」は、ペン100等を使用して手書きされた1つのストローク、つまり、1つの軌跡によって表現される。手書きの「矢印」は、ペン100等を使用して手書きされた2つのストローク、つまり、2つの軌跡によって表現される。
図4は、図3の手書き文書に対応する時系列情報200を示している。時系列情報は、複数のストロークデータSD1、SD2、…、SD7を含む。時系列情報200内においては、これらストロークデータSD1、SD2、…、SD7は、これらのストロークが手書きされた順に時系列に並べられている。
時系列情報200において、先頭の2つのストロークデータSD1及びSD2は、手書き文字「A」の2つのストロークをそれぞれ示している。3番目及び4番目のストロークデータSD3及びSD4は、手書き文字「B」を構成する2つのストロークをそれぞれ示している。5番目のストロークデータSD5は、手書き文字「C」を構成する1つのストロークを示している。6番目及び7番目のストロークデータSD6及びSD7は、手書き「矢印」を構成する2つのストロークをそれぞれ示している。
各ストロークデータは、1つのストロークに対応する座標データ系列(時系列座標)、つまり、1つのストローク軌跡上の複数のサンプリング点それぞれに対応する複数の座標を含む。各ストロークデータにおいては、複数のサンプリング点の座標はストロークが書かれた順(サンプリングされた順)に時系列に並べられている。例えば、手書き文字「A」に関しては、ストロークデータSD1は、手書き文字「A」の「∧」形状のストロークの軌跡上の点それぞれに対応する座標データ系列(時系列座標)、つまり、n個の座標データSD11、SD12、…、SD1nを含む。ストロークデータSD2は、手書き文字「A」の「−」形状のストロークの軌跡上の点それぞれに対応する座標データ系列、つまり、n個の座標データSD21、SD22、…、SD2nを含む。なお、座標データの数はストロークデータ毎に異なっていてもよい。ストロークを等時間間隔でサンプリングすると、ストロークの長さが異なっているので、サンプリング点の数も異なる。
各座標データは、対応する軌跡内のある1点のX座標及びY座標を示す。例えば、座標データSD11は、「∧」形状のストロークの始点のX座標(X11)及びY座標(Y11)を示す。SD1nは、「∧」形状のストロークの終点のX座標(X1n)及びY座標(Y1n)を示す。
各座標データは、その座標に対応する点が手書きされた時点(サンプリングタイミング)に対応するタイムスタンプ情報Tを含んでいてもよい。手書きされた時点は、絶対時間(例えば、年月日時分秒)またはある時点を基準とした相対時間のいずれであってもよい。例えば、各ストロークデータに、ストロークが書き始められた絶対時間をタイムスタンプ情報として付加し、更に、ストロークデータ内の各座標データに、当該絶対時間との差分を示す相対時間をタイムスタンプ情報Tとして付加してもよい。
このように、各座標データにタイムスタンプ情報Tが追加された時系列情報を使用することにより、ストローク間の時間的関係をより精度よく表すことができる。図4には示されていないが、各座標データには、筆圧を示す情報(Z)を追加してもよい。
図4で説明したような構造を有する時系列情報200は、個々のストロークの筆跡だけでなく、ストローク間の時間的関係も表すことができる。したがって、この時系列情報200を使用することにより、図3に示すようにたとえ手書き「矢印」の先端部が手書き文字「A」上に重ねてまたは手書き文字「A」に近接して書かれたとしても、当該手書き文字「A」と手書き「矢印」の先端部とを異なる文字または図形として扱うことが可能となる。
更に、本実施形態では、上述したように、手書き文書データは、イメージまたは文字認識結果ではなく、時系列のストロークデータの集合から構成される時系列情報200として記憶されるので、手書き文字の言語に依存せずに手書き文字を扱うことができる。したがって、本実施形態における時系列情報200の構造は、使用言語の異なる世界中の様々な国で共通に使用できる。
図5は、タブレットコンピュータ10のシステム構成を示す図である。図5に示すように、タブレットコンピュータ10は、CPU101、不揮発性メモリ102、主メモリ103、BIOS−ROM104、システムコントローラ105、グラフィクスコントローラ106、無線通信デバイス107及びEC等を備える。また、タブレットコンピュータ10において、図1に示すタッチスクリーンディスプレイ12は、LCD12A、タッチパネル12B及びデジタイザ12Cを備える。
CPU101は、タブレットコンピュータ10内の各種モジュールの動作を制御するプロセッサである。CPU101は、ストローレジデバイスである不揮発性メモリ102から主メモリ103にロードされる各種ソフトウェアを実行する。これらソフトウェアには、オペレーティングシステム(OS)103a及び各種アプリケーションプログラムが含まれている。各種アプリケーションプログラムには、手書きノートアプリケーションプログラム103bが含まれている。以下では、手書き文書データを手書きノートとも称する。
この手書きノートアプリケーションプログラム103bは、上述の手書き文書データを作成及び表示する機能、手書き文書データを編集する機能、所望の手書き部分を含む手書き文書データや、ある手書き文書データ内の所望の手書き部分を検索するための手書き文書検索機能等を有している。
更に、手書きノートアプリケーションプログラム103bは、例えばタブレットコンピュータ10の画面上で入力するストロークを指定するための操作に用いられるユーザインタフェースを表示する機能を有しているものとする。なお、このユーザインタフェースには、例えばストローク(手書き文字列)のフォント、色彩、スタイル(太さ)及びサイズ等を指定するための操作及び後述する手書き入力の候補を指定するための操作に用いられるユーザインタフェース等が含まれる。更に、このユーザインタフェースは、例えば後述する手書きされたストローク(手書き文字列)の入力の確定を指定するための操作及び当該ストロークの入力のキャンセルを指定するための操作に用いられるユーザインタフェース等であってもよい。すなわち、本実施形態において表示されるユーザインタフェースは、ユーザによる手書き入力操作を補助する機能(以下、入力補助機能と表記)を利用するための操作に用いられるユーザインタフェース(以下、入力補助UIと表記)を含む。以下の説明においては、本実施形態において表示されるユーザインタフェースは入力補助UIであるものとして説明するが、当該ユーザインタフェースはユーザによる手書き入力操作時に表示されるものであればよい。
CPU101は、BIOS−ROM104に格納された基本入出力システム(BIOS)も実行する。BIOSは、ハードウェア制御のためのプログラムである。
システムコントローラ105は、CPU101のローカルバスと各種コンポーネント・モジュールとの間を接続するデバイスである。システムコントローラ105には、主メモリ103をアクセス制御するメモリコントローラも内蔵されている。システムコントローラ105は、PCI EXPRESS規格のシリアルバス等を介してグラフィクスコントローラ106との通信を実行する機能も有している。
グラフィクスコントローラ106は、タブレットコンピュータ10のディスプレイモニタとして使用されるLCD12Aを制御する表示コントローラである。グラフィクスコントローラ106によって生成される表示信号はLCD12Aに送られる。LCD12Aは、表示信号に基づいて画面イメージを表示する。LCD12A、タッチパネル12B及びデジタイザ12Cは互いに重ね合わされている。タッチパネル12Bは、LCD12Aの画面上で入力を行うための静電容量式のポインティングデバイスである。指が接触される画面上の接触位置及び当該接触位置の動き等は、タッチパネル12Bによって検出される。また、このタッチパネル12Bによれば、例えば画面上で手書き入力操作が行われる際の当該画面上におけるユーザの手の接触等も検出することができる。デジタイザ12Cは、LCD12Aの画面上で入力を行うための電磁誘導式のポインティングデバイスである。ペン(デジタイザペン)100が接触される画面上の接触位置及び当該接触位置の動き等は、デジタイザ12Cによって検出される。
無線通信デバイス107は、無線LANまたは3G移動通信等の無線通信を実行するように構成されたデバイスである。
EC108は、電力管理のためのエンベデッドコントローラを含むワンチップマイクロコンピュータである。EC108は、ユーザによるパワーボタンの操作に応じてタブレットコンピュータ10を電源オンまたは電源オフする機能を有している。
次に、上述した手書きノートアプリケーションプログラム103bによってユーザに提示されるいくつかの代表的な画面の例を説明する。
図6は、手書きノートアプリケーションプログラム103bのホーム画面の一例を示す。ホーム画面は複数の手書き文書データを扱うための基本画面であり、ノートの管理や、アプリケーション全体の設定を行うことができる。
ホーム画面は、デスクトップ画面領域70と引き出し画面領域71とを含む。デスクトップ画面領域70は、作業中の複数の手書きノートに対応する複数のノートアイコン801〜805を表示するテンポラリ領域である。ノートアイコン801〜805の各々は、対応する手書きノート内のあるページのサムネイルを表示する。デスクトップ画面領域70は、更に、ペンアイコン771、カレンダーアイコン772、スクラップノート(ギャラリー)アイコン773及びタグ(ラベル)アイコン774を表示する。
ペンアイコン771は、表示画面をホーム画面からページ編集画面に切り替えるためのグラフィカルユーザインタフェース(GUI)である。カレンダーアイコン772は、現在の日付を示すアイコンである。スクラップノートアイコン773は、他のアプリケーションプログラムからまたは外部ファイルから取り込んだデータ(スクラップデータまたはギャラリーデータ)を閲覧するためのGUIである。タグアイコン774は、任意の手書きノート内の任意のページにラベル(タグ)を貼り付けるためのGUIである。
引き出し画面領域71は、作成済みの全ての手書きノートを格納するためのストレージ領域を閲覧するための表示領域である。引き出し画面領域71は、全ての手書きノート内のいくつかの手書きノートに対応するノートアイコン80A、80B及び80Cを表示する。ノートアイコン80A、80B及び80Cの各々は、対応する手書きノート内のあるページのサムネイルを表示する。手書きノートアプリケーションプログラム103bは、ペン100または指を使用してユーザによって行われる引き出し画面領域71上のあるジェスチャ(例えば、スワイプジェスチャ等)を検出することができる。このジェスチャ(例えば、スワイプジェスチャ等)の検出に応答して、手書きノートアプリケーションプログラム103bは、引き出し画面領域71上の画面イメージを左方向または右方向にスクロールする。これにより、引き出し画面領域71に任意の手書きノートそれぞれに対応するノートアイコンを表示することができる。
手書きノートアプリケーションプログラム103bは、ペン100または指を使用してユーザによって行われる引き出し画面領域71のノートアイコン上の他のジェスチャ(例えば、タップジェスチャ等)を検出することができる。引き出し画面領域71上のあるノートアイコン上のジェスチャ(例えば、タップジェスチャ等)の検出に応答して、手書きノートアプリケーションプログラム103bは、このノートアイコンをデスクトップ画面領域70の中央部に移動する。そして、手書きノートアプリケーションプログラム103bは、このノートアイコンに対応する手書きノートを選択し、デスクトップ画面の代わりに図7に示すノートプレビュー画面を表示する。図7に示すノートプレビュー画面は、選択された手書きノート内の任意のページを閲覧可能な画面である。
更に、手書きノートアプリケーションプログラム103bは、ペン100または指を使用してユーザによって行われるデスクトップ画面領域70上のジェスチャ(例えば、タップジェスチャ等)も検出することができる。デスクトップ画面領域70の中央部に位置するノートアイコン上のジェスチャ(例えば、タップジェスチャ等)の検出に応答して、手書きノートアプリケーションプログラム103bは、中央部に位置するノートアイコンに対応する手書きノートを選択し、そして、デスクトップ画面の代わりに図7に示すノートプレビュー画面を表示する。
更に、ホーム画面は、メニューを表示することができる。このメニューは、画面の下部、例えば引き出し画面領域71に表示されるノート一覧ボタン81A、ノート作成ボタン81B、ノート削除ボタン81C、検索ボタン81D及び設定ボタン81Eを備える。ノート一覧ボタン81Aは、手書きノートの一覧を表示するためのボタンである。ノート作成ボタン81Bは、新しい手書きノートを作成(追加)するためのボタンである。ノート削除ボタン81Cは、手書きノートを削除するためのボタンである。検索ボタン81Dは、検索画面(検索ダイアログ)を開くためのボタンである。設定ボタン81Eは、アプリケーションの設定画面を開くためのボタンである。
なお、図示しないが、引き出し画面領域71の下にも、戻るボタン、ホームボタン、リーセントアプリケーションボタンが表示される。
図8は、設定ボタン81Eがペン100または指でタップされた際に開かれる設定画面の一例を示す。
この設定画面には、様々な設定項目が表示される。これら設定項目には、「バックアップと復元」、「入力モード(ペンまたはタッチ入力モード)」、「ライセンス情報」及び「ヘルプ」等が含まれる。
ホーム画面においてノート作成ボタン81Bがペン100または指でタップされるとノート作成画面が表示される。ここで、タイトル欄にノートの名前を手書き入力する。なお、ノートの表紙と用紙とを選択することができる。作成ボタンを押すと、新規なノートが作成され、当該作成されたノートは引き出し画面領域71に置かれる。
図7は、上述したノートプレビュー画面の一例を示す。ノートプレビュー画面は、選択された手書きノート内の任意のページを閲覧可能な画面である。ここでは、ホーム画面のデスクトップ画面領域70のノートアイコン801に対応する手書きノートが選択された場合を説明する。この場合、手書きノートアプリケーションプログラム103bは、この手書きノートに含まれる複数のページ901、902、903、904及び905を、これらページ901、902、903、904及び905それぞれの少なくとも一部分が視認可能で、かつ、これらページ901、902、903、904及び905が重なった形態で表示する。
ノートプレビュー画面は、更に、上述のペンアイコン771、カレンダーアイコン772及びスクラップノートアイコン773を表示する。
ノートプレビュー画面は、更に、メニューを画面下部に表示することができる。このメニューは、ホームボタン82A、ページ一覧ボタン82B、ページ追加ボタン82C、ページ編集ボタン82D、ページ削除ボタン82E、ラベルボタン82F、検索ボタン82G及びプロパティ表示ボタン82Hを備える。ホームボタン82Aは、ノートのプレビューを閉じてホーム画面を表示するためのボタンである。ページ一覧ボタン82Bは、現在選択されている手書きノート内のページの一覧を表示するためのボタンである。ページ追加ボタン82Cは、新しいページを作成(追加)するためのボタンである。ページ編集ボタン82Dは、ページ編集画面を表示するためのボタンである。ページ削除ボタン82Eは、ページを削除するためのボタンである。ラベルボタン82Fは、使用可能なラベルの種類の一覧を表示するためのボタンである。検索ボタン82Gは、検索画面を表示するためのボタンである。プロパティ表示ボタン82Hは、このノートのプロパティを表示するためのボタンである。
手書きノートアプリケーションプログラム103bは、ユーザによって行われるノートプレビュー画面上の様々なジェスチャを検出することができる。例えば、あるジェスチャの検出に応答して、手書きノートアプリケーションプログラム103bは、一番上に表示されるべきページを任意のページに変更する(ページ送り、ページ戻し)。また、一番上のページ上で行われるあるジェスチャ(例えば、タップジェスチャ)の検出に応答して、またはペンアイコン771上で行われるジェスチャ(例えば、タップジェスチャ)の検出に応答して、あるいは編集ボタン82D上で行われるあるジェスチャ(例えば、タップジェスチャ)の検出に応答して、手書きノートアプリケーションプログラム103bは、一番上のページを選択し、そしてノートプレビュー画面の代わりに、図9に示すページ編集画面を表示する。
図9に示すページ編集画面は、手書きノート内のページ(手書きページ)の新規作成、及び既存のページの閲覧及び編集が可能な画面である。図7に示すノートプレビュー画面上のページ901が選択された場合には、図9に示すように、ページ編集画面は、ページ901の内容を表示する。
このページ編集画面において、破線で囲まれた矩形の領域500は、手書き可能な手書き入力領域である。手書き入力領域500においては、デジタイザ12Cからの入力イベントは手書きストロークの表示(描画)のために使用され、タップ等のジェスチャを示すイベントとしては使用されない。一方、ページ編集画面における手書き入力領域500以外の領域においては、デジタイザ12Cからの入力イベントはタップ等のジェスチャを示すイベントとしても使用され得る。
タッチパネル12Bからの入力イベントは、手書きストロークの表示(描画)には使用されず、タップ及びスワイプ等のジェスチャを示すイベントとして使用される。
ページ編集画面は、更に、ユーザによって予め登録された3種類のペン501〜503と、範囲選択ペン504、消しゴムペン505とを含むクイックセレクトメニューを手書き入力領域500外の画面上部に表示する。ここでは、黒ペン501、赤ペン502及びマーカー503がユーザによって予め登録されている場合が説明されている。ユーザは、ペン100または指でクイックセレクトメニュー内のあるペン(ボタン)をタップすることにより、使用するペンの種類を切り替えることができる。例えば、黒ペン501がユーザによるペン100または指を使用したタップジェスチャによって選択された状態で、ペン100を用いた手書き入力操作がページ編集画面上で行われると、手書きノートアプリケーションプログラム103bは、ペン100の動きに合わせて黒色のストローク(軌跡)をページ編集画面上に表示する。
クイックセレクトメニュー内の上述の3種類のペンは、ペン100のサイドボタン(図示せず)の操作によっても切り替えることができる。クイックセレクトメニュー内の上述の3種類のペンの各々には、よく使うペンの色やペンの太さの組み合わせを設定することができる。
ページ編集画面は、更に、メニューボタン511、ページ戻し(ノートプレビュー画面に戻る)ボタン512及び新規ページ追加ボタン513を、手書き入力領域500外の画面下部に表示する。メニューボタン511は、メニューを表示するためのボタンである。
このメニューは、例えば、このページをゴミ箱に入れる、コピーやカットしたページの一部を貼り付ける、検索画面を開く、エクスポートサブメニューを表示する、インポートサブメニューを表示する、ページをテキストに変換してメールを送る、ペンケースを表示する等のボタンを表示してもよい。エクスポートサブメニューは、例えば、ページ編集画面上に表示されている手書きページを認識して電子文書ファイル、プレゼンテーションファイル、画像ファイル等に変換する機能、あるいはページを画像ファイルに変換して他のアプリケーションと共有する機能をユーザに選択させる。インポートサブメニューは、例えば、メモギャラリーからメモをインポートする機能、あるいはギャラリーから画像をインポートする機能をユーザに選択させる。ペンケースは、クイックセレクトメニュー内の3種類のペンの各々の色(描画される線の色)及び太さ(描画される線の太さ)を変更可能なペン設定画面を呼び出すためのボタンである。
図10は、検索画面(検索ダイアログ)の例を示す。図10では、図7に示すノートプレビュー画面上で検索ボタン82Gが選択され、当該ノートプレビュー画面上に検索画面(検索ダイアログ)が開かれた場合が説明されている。
検索画面は、検索キー入力領域530、筆跡検索ボタン531、テキスト検索ボタン532、デリートボタン533及び検索実行ボタン534を表示する。筆跡検索ボタン531は、筆跡検索を選択するためのボタンである。テキスト検索ボタン532は、テキスト検索を選択するためのボタンである。検索実行ボタン534は、検索処理の実行を要求するためのボタンである。
筆跡検索においては、検索キー入力領域530は、検索キーとすべき文字列、図形及び表等を手書きするための入力領域として使用される。図10においては、検索キー入力領域530に手書き文字列「Determine」が検索キーとして入力されている。ユーザは、手書き文字列に限らず、手書き図形及び手書き表等を検索キー入力領域530にペン100で手書きすることができる。検索キー入力領域530に手書き文字列「Determine」が検索キーとして入力された状態で検索実行ボタン534がユーザによって選択されると、手書き文字列「Determine」を構成するストローク集合(クエリーストローク集合)を用いて、このクエリーストローク集合に対応するストローク集合を含む手書き文書(ノート)を検索するための筆跡検索が実行される。筆跡検索では、ストローク間のマッチングによって、クエリーストローク集合に類似するストローク集合が検索される。クエリーストローク集合とある別のストローク集合との間の類似度の算出においては、DP(Dynamic Programming)マッチングを使用してもよい。
テキスト検索においては、例えばソフトウェアキーボードが画面上に表示される。ユーザは、ソフトウェアキーボードを操作することによって任意のテキスト(文字列)を検索キーとして検索キー入力領域530に入力することができる。検索キー入力領域530にテキストが検索キーとして入力された状態で検索実行ボタン534がユーザによって選択されると、このテキスト(クエリーテキスト)を表すストローク集合を含む手書きノートを検索するためのテキスト検索が実行される。
筆跡検索/テキスト検索は、全ての手書き文書を対象に実行することもできるし、選択された手書き文書のみを対象に実行することもできる。筆跡検索/テキスト検索が実行されると、検索結果画面が表示される。検索結果画面においては、クエリーストローク集合(またはクエリーテキスト)に対応するストローク集合を含む手書き文書(ページ)の一覧が表示される。なお、ヒットワード(クエリーストローク集合またはクエリーテキストに対応するストローク集合)は、強調表示される。
次に、図11を参照して、タブレットコンピュータ10によって実行される手書きノートアプリケーションプログラム103bの機能構成について説明する。
手書きノートアプリケーションプログラム103bは、手書き文書データを扱うことが可能なWYSIWYGアプリケーションである。この手書きノートアプリケーションプログラム103bは、例えば、表示処理部301、時系列情報生成部302、編集処理部303、ページ保存処理部304、ページ取得処理部305及び作業メモリ401等を備える。表示処理部301は、手書きデータ入力部301A、筆跡描画部301B及びUI表示処理部301Cを含む。
上述したタッチパネル12Bは、「タッチ(接触)」、「移動(スライド)」及び「リリース」等のイベントの発生を検出するように構成されている。「タッチ(接触)」は、画面上のオブジェクト(指)が接触したことを示すイベントである。「移動(スライド)」は、画面上にオブジェクト(指)が接触されている間に接触位置が移動されたことを示すイベントである。「リリース」は、画面からオブジェクト(指)が離されたことを示すイベントである。
上述したデジタイザ12Cも、「タッチ(接触)」、「移動(スライド)」及び「リリース」等のイベントの発生を検出するように構成されている。「タッチ(接触)」は、画面上にオブジェクト(ペン100)が接触したことを示すイベントである。「移動(スライド)」は、画面上にオブジェクト(ペン100)が接触されている間に接触位置が移動されたことを示すイベントである。「リリース」は、画面からオブジェクト(ペン100)が離されたことを示すイベントである。
手書きノートアプリケーションプログラム103bは、手書きページデータの作成、閲覧及び編集を行うためのページ編集画面をタッチスクリーンディスプレイ12上に表示する。
表示処理部301及び時系列情報生成部302は、デジタイザ12Cによって発生される「タッチ(接触)」、「移動(スライド)」または「リリース」のイベントを受信し、これによって手書き入力操作を検出する。「タッチ(接触)」イベントには、接触位置の座標が含まれている。「移動(スライド)」イベントには、移動先の接触位置の座標が含まれている。したがって、表示処理部301及び時系列情報生成部302は、デジタイザ12Cから接触位置の動きの軌跡に対応する座標列を受信することができる。
表示処理部301は、デジタイザ12Cを用いて検出される画面上のオブジェクト(ペン100)の動きに応じて手書きストロークを画面上に表示する。この表示処理部301により画面にペン100が接触している間のペン100の軌跡、つまり、各ストロークの軌跡がページ編集画面上に表示される。
時系列情報生成部302は、デジタイザ12Cから出力される上述の座標列を受信し、この座標列に基づいて、図4において詳述したような構造を有する時系列情報(座標データ系列)を含む手書きデータを生成する。時系列情報生成部302は、生成された手書きデータを作業メモリ401に一時保存する。
編集処理部303は、現在表示中の手書きページを編集するための処理を実行する。すなわち、編集処理部303は、タッチスクリーンディスプレイ12上でユーザによって行われる編集操作及び手書き入力操作に応じて、現在表示中の手書きページに新たなストローク(新たな手書き文字及び新たな手書きマーク等)を追加する処理、表示されている複数のストローク内の1以上のストロークを削除または移動する処理等を含む編集処理を実行する。更に、編集処理部303は、編集処理の結果を表示中の時系列情報に反映するために作業メモリ401内の時系列情報を更新する。
ページ保存処理部304は、作成中の手書きページ上の複数の手書きストロークに対応する複数のストロークデータを含む手書きページデータを記憶媒体402に保存する。記憶媒体402は、例えばタブレットコンピュータ10内のストレージデバイスであってもよいし、例えばサーバ(コンピュータ)2のストレージデバイスであってもよい。
ページ取得処理部305は、記憶媒体402から任意の手書きページデータを取得する。この取得された手書きページデータは、表示処理部301に送られる。表示処理部301は、手書きページデータに含まれる複数のストロークデータに対応する複数のストロークを画面上に表示する。
次に、図11に示す表示処理部301の詳細について説明する。
前述したように、タッチスクリーンディスプレイ12は、画面に対するタッチ操作をタッチパネル12Bまたはデジタイザ12Cで検出する。手書きデータ入力部301Aは、タッチパネル12Bまたはデジタイザ12Cから出力される検出信号を入力するモジュールである。検出信号には、タッチ位置の座標情報(X,Y)が含まれている。このような検出信号を時系列順に入力することによって、手書きデータ入力部301Aは、手書き入力操作に応じた(つまり、手書きで記載される)ストロークに対応するストロークデータを入力する。手書きデータ入力部301Aによって入力されたストロークデータ(検出信号)は、筆跡描画部301Bに供給される。
筆跡描画部301Bは、手書き入力の軌跡(筆跡)を描画してタッチスクリーンディスプレイ12のLCD12Aに表示するモジュールである。筆跡描画部301Bは、手書きデータ入力部301Aからのストロークデータ(検出信号)に基づき、手書き入力の軌跡(筆跡)に対応する線分を描画する。
UI表示処理部301Cは、手書きデータ入力部301Aによって入力されたストロークデータが例えば上述したページ編集画面(上の手書き入力領域500)に対する手書き入力操作に応じたストロークに対応するものである場合に、上述した入力補助UIを表示するモジュールである。
ここで、図12を参照して、ペン100を使用してタッチスクリーンディスプレイ12の画面上で手書き入力操作を行う(つまり、1以上のストロークを手書きで記載する)場合におけるユーザの操作領域の一例について説明する。
図12においては、ユーザがペン100を使用して手書き文字列を横書きで記載する例が示されている。ここでは、手書き文字列を横書きで記載する場合の運筆方向はユーザから見て左から右方向である。なお、言語によっては、運筆方向はユーザから見て右から左方向であっても構わない。
図12に示す領域1001は、タッチスクリーンディスプレイ12上で手書き入力操作を行う際に、ユーザの手が当該タッチスクリーンディスプレイ12上で接触する領域である。
領域1002は、ユーザの手が上記した領域1001に接触している状態で当該ユーザがペン100のペン先を動かすことができる最大の領域(手書き入力可能領域)である。なお、ユーザは領域1002の範囲内で手書き入力操作を行うことは可能であるが、当該領域1002の外周付近(例えば、上部及び下部等)においては、ペン先を動かすことができる最大の距離となってしまうため、手書き入力操作が比較的困難となる。
これに対して、領域1003は、上記した領域1002のうち、手書き入力操作が比較的困難となる領域を除いた領域(つまり、容易に手書き入力操作を行うことが可能な領域)である。すなわち、領域1003は、上記した領域1001にユーザの手が接触している状態において手書きでストロークを記載するのに最適な領域であり、ユーザが操作しやすいと感じられる領域である。
ここで、本実施形態においては、上記した入力補助UIを介して、手書き入力操作を補助する機能を利用することができる。この入力補助UIは、ユーザの操作性を考慮すると、上記した領域1003内に表示することが好ましい。
しかしながら、入力補助UIに対する操作を行う必要がない場合、領域1003内に表示された入力補助UIは、ユーザによる手書き入力操作の妨げとなる可能性が高い。
これに対して、手書き入力操作の妨げとなることを回避するために入力補助UIを例えば領域1003以外の領域1002に表示した場合には、当該入力補助UIに対する操作が困難となる。
そこで、本実施形態において、UI表示処理部301Cは、領域1001にユーザの手が接触している状態において手書き入力操作が行われる領域1003(第1領域)から運筆方向に所定距離(第1距離)離れた位置に入力補助UIを表示するものとする。この入力補助UIの具体的な表示例については後述する。
なお、図11においては図示されていないが、手書きノートアプリケーションプログラム103bは、上記した以外に手書き入力操作に応じた1以上のストロークに基づいて特定されるストローク集合をユーザによる手書き入力の候補として例えばページ編集画面上に表示する候補表示処理部や上述した筆跡検索及びテキスト検索等を実行するための検索処理部等を備える。
以下、本実施形態に係るタブレットコンピュータ10の動作について説明する。ここでは、本実施形態に係るタブレットコンピュータ10によって実行される処理のうち、上述した手書き入力操作時(つまり、手書きでストロークが記載される際)に入力補助UIを表示する処理(以下、入力補助UI表示処理と表記)について主に説明する。
図13のフローチャートを参照して、入力補助UI表示処理の処理手順の一例について説明する。なお、入力補助UI表示処理は、上記したページ編集画面上の手書き入力領域500において手書き入力操作に応じたストロークに対応するストロークデータが入力される際に実行される。
まず、手書きデータ入力部301Aは、ユーザによる手書き入力操作に応じた1以上のストロークに対応するストロークデータを入力する(ブロックB1)。このように手書きデータ入力部301Aによってストロークデータが入力された場合、筆跡描画部301Bは、当該ストロークデータに基づいて、手書き入力操作に応じたストローク(手書き入力の軌跡に対応する線分)を描画する処理を実行する。
なお、このように手書き入力操作が行われることによってストロークデータが入力される場合、ユーザの手はタッチスクリーンディスプレイ12の画面上に接触した状態であるものとする。以下の説明においては、ブロックB1においてストロークデータが入力される際にユーザの手が接触している画面上の点を第1接触点と称する。この第1接触点(の座標)は、上述した図12に示す領域1001等に基づいてタッチスクリーンディスプレイ12に備えられるタッチパネル12Bによって検出可能である。
次に、UI表示処理部301Cは、タッチパネル12Bからの入力イベントに基づいて、タッチスクリーンディスプレイ12の画面上からユーザの手が離れたか否かを判定する(ブロックB2)。
タッチスクリーンディスプレイ12の画面上からユーザの手が離れていないと判定された場合(ブロックB2のNO)、ユーザの手が第1接触点に接触した状態のまま手書き入力操作が継続されているものとして、上述したブロックB1に戻って処理が繰り返される。すなわち、本実施形態においては、タッチスクリーンディスプレイ12の画面上にユーザの手が接触した状態が継続している間は入力補助UIは表示されない(つまり、非表示である)。
ここで、ユーザがペン100を使用して比較的長い文字列(ストローク集合)をタッチスクリーンディスプレイ12の画面上で記載する場合、ユーザは、運筆のために手を一旦当該画面上から離し、次の文字(列)の記載のために再度当該画面上に手を接触させるという動作(以下、運筆動作と表記)を行う場合が多い。
本実施形態においては、このような運筆動作を判別するために、上記したブロックB2においてタッチスクリーンディスプレイ12の画面上からユーザの手が離れたと判定された場合(ブロックB2のYES)、UI表示処理部301Cは、タッチスクリーンディスプレイ12の画面上に再びユーザの手が接触したか否かを判定する(ブロックB3)。
タッチスクリーンディスプレイ12の画面上に再びユーザの手が接触したと判定された場合(ブロックB3のYES)、UI表示処理部301Cは、上記した運筆動作が行われたと判別することができる。以下の説明においては、このような運筆動作が行われた後にユーザの手が接触している画面上の点を第2接触点と称する。この第2接触点(の座標)は、上記した第1接触点と同様に、タッチパネル12Bによって検出可能である。
なお、ユーザの手が一旦画面上から離れた後に当該ユーザの手が再度画面上に接触したとしても、当該ユーザの手の動きは上記した運筆動作によるものではない可能性もある。よって、運筆動作の判別精度を向上させるために、例えば第2接触点の位置が第1接触点から予め定められた距離の範囲内で、かつ、例えば運筆方向にある場合にのみ運筆動作が行われたと判別するようにしてもよい。なお、運筆方向は、ブロックB1において入力されたストロークデータ等から判別することができるものとする。
このように運筆動作が行われたと判別された場合、UI表示処理部301Cは、上述した入力補助UIを表示する位置(入力補助UIの表示位置)を決定する(ブロックB4)。この場合、UI表示処理部301Cは、例えば上記した画面上の第1接触点にユーザの手が接触した状態において手書き入力操作が行われる領域(例えば、図12に示す領域1003)から運筆方向に所定距離離れた位置を入力補助UIの表示位置として決定する。
ここで、図14を参照して、入力補助UIの表示位置の決定処理(以下、第1の決定処理と表記)について詳細に説明する。ここでは、上述した図12と同様の部分には同一参照符号を付して、その詳しい説明を省略する。
図14に示す領域1004は、画面上の領域1001にユーザの手が接触した状態で手書き入力操作が行われた後に、運筆動作により手を移動して手書き入力操作を行う際に当該ユーザの手が接触する領域である。なお、図14において点1001a及び点1004aは、それぞれ上記した第1接触点及び第2接触点を示す。なお、第1接触点1001a及び第2接触点1004aは、それぞれ領域1001及び領域1004の最左端に位置する点とされているが、例えば領域1001及び領域1004の中心等に位置する点であっても構わない。
入力補助UIの表示位置の決定処理において、UI表示処理部301Cは、例えば領域1002(及び領域1003)の最右端に位置する点のX座標(以下、X1座標と表記)を取得する。なお、この領域1002及び領域1003(及びX1座標)は、上記したブロックB1において入力されたストロークデータ(時系列座標)及びタッチパネル12Bによって検出される第1接触点1001aの位置(座標)等から算出されるものとする。
また、UI表示処理部301Cは、第2接触点1004aのX座標(以下、X2座標と表記)を取得する。
次に、UI表示処理部301Cは、領域1003の最下端に位置する点のY座標(以下、Y1座標と表記)及び当該領域1003の最上端に位置する点のY座標(以下、Y2座標と表記)を取得する。
これにより、UI表示処理部301Cは、図14に示すようにX1座標、X2座標、Y1座標及びY2座標に基づいて領域1005を算出する。
この場合、UI表示処理部301Cは、算出された領域1005(内の位置)を、入力補助UIを表示する位置として決定する。なお、入力補助UIの表示位置は、領域1005内であればよいが、当該入力補助UIと当該入力補助UIを介して利用される入力補助機能との関係性または関連性をユーザが判断することができる程度の範囲内にあるものとする。具体的には、入力補助UIを介して利用される入力補助機能が上記した手書き文字列の色彩を変更する機能である場合には、入力補助UIは、例えば領域1003内に記載された手書き文字列の近傍に表示されるものとする。
ここで、領域1001〜領域1003によって示されるように、領域1001の近傍は手書き入力操作を行うことができない。このため、ユーザの手が接触する画面上の領域1001と手書き入力可能領域1002及び1003との間には一定の間隔が存在する。これによれば、領域1004の近傍についても手書き入力操作を行うことができないと推定される。したがって、入力補助UIをユーザが容易に手書き入力操作を行うことが可能な位置(領域)に表示するためには、上記した第2接触点のX座標を例えば第1接触点のX座標とX1座標との差分だけX軸の負方向にずらした位置のX座標を、X2座標として用いて入力補助UIを表示する位置を決定することが好ましい。
また、ここでは領域1003の最下端に位置する点のY座標(Y1座標)及び当該領域1003の最上端に位置する点のY座標(Y2座標)を用いるものとして説明したが、当該Y1座標及びY2座標に代えて、例えば領域1002の最下端に位置する点のY座標及び当該領域1002の最上端に位置する点のY座標を用いても構わない。
なお、ここで説明した入力補助UIの表示位置の決定処理は一例であり、他の処理によって入力補助UIの表示位置を決定しても構わない。具体的には、例えば領域1001及び領域1003との位置関係から、領域1004にユーザの手が接触している場合において容易に手書き入力操作を行うことが可能な領域を算出し、当該算出された領域(内の位置)を入力補助UIの表示位置として決定しても構わない。
再び図13に戻ると、UI表示処理部301Cは、上記したように決定された入力補助UIの表示位置に当該入力補助UIを表示する(ブロックB5)。ユーザは、このように表示された入力補助UIに対して例えばペン100を使用したタッチ操作等を行うことにより、上述した入力補助機能を利用することができる。このように表示された入力補助UIは、ユーザによる円滑な手書き入力操作のために、不要と判定される場合には速やかに非表示とすることが好ましい。具体的には、例えば入力補助UIに対する操作が一定時間行われない場合には当該入力補助UIは不要であると判定し、非表示とすることができる。
なお、上述したブロックB3においてタッチスクリーンディスプレイ12の画面上にユーザの手が接触していないと判定された場合(ブロックB3のNO)、例えば手書き入力操作が終了されたものとして、入力補助UI表示処理は終了される。
次に、上述した入力補助UIの表示について具体的に説明する。ここでは、入力補助UIの第1の表示例及び第2の表示例について説明する。
まず、図15を参照して、入力補助UIの第1の表示例について説明する。図15は、ユーザによる手書き入力操作に応じた1以上のストローク(ここでは、手書き文字列「ABC」)に対応するストロークデータが入力された後に、上述した運筆動作が行われる場合について示している。
図15に示すように、運筆動作が行われた場合、当該運筆動作が行われる前に手書き入力操作が行われた領域1003から運筆方向に所定距離離れた位置に、入力補助UI1100が表示される。これによれば、ユーザは、領域1003内に手書き文字列「ABC」を書き終えて運筆動作を行った際に、容易に入力補助UI1100に対する操作(タッチ操作等)を行うことができるとともに、次の手書き入力操作(手書き文字列の記載等)を行うことが可能となる。
なお、この図15に示す入力補助UI1100は、例えば手書き文字列の色彩を変更するという入力補助機能を利用するためのユーザインタフェース(つまり、手書き文字列の色彩を指定するための操作に用いられるユーザインタフェース)である。
図15に示す例では、この入力補助UI1100には、例えば「R(赤色)」ボタン1101、「G(緑色)」ボタン1102及び「B(青色)」ボタン1103が設けられている。ユーザは、ペン100を用いて例えば「R」ボタン1101に対するタッチ操作を行うことにより、手書き文字列「ABC」の色彩を当該ボタン1101に対応する色彩(つまり、赤色)に変更することができる。ここでは、「R」ボタン1101について説明したが、他のボタン1102及び1103に対するタッチ操作が行われた場合についても同様である。
なお、入力補助UI1100には、赤色、緑色及び青色に対応するボタン1101〜1103以外のボタンが設けられていてもよい。この入力補助UI1100に設けられる各ボタンの種類(当該ボタンに対応する色彩)及び数等は、ユーザによって適宜変更(設定)することができるものとする。
また、本実施形態における手書きノート(手書き文書)の作成時には、タッチスクリーンディスプレイ12の画面上で手書き文字列が記載される度に、当該画面に対する所定の操作(以下、確定操作と表記)により当該手書き文字列(の入力)を確定するという動作が行われる。この場合、図15に示す入力補助UI1100を介して利用される機能(ここでは、手書き文字列の色彩を指定する機能)は、上記した確定操作により確定されていない、つまり、未確定(編集中)の手書き文字列(つまり、1以上のストローク)に対して適用されるものとする。すなわち、本実施形態においては、未確定のストロークが入力補助UI1100を用いた操作の対象とされる。
次に、図16を参照して、入力補助UIの第2の表示例について説明する。ここでは、本実施形態に係るタブレットコンピュータ10(上で動作する手書きノートアプリケーションプログラム103b)が入力補助機能として上述した手書き入力の候補(以下、推薦手書き文字列と表記)を表示する機能(以下、入力サジェスト機能と表記)を有している場合を想定している。この入力サジェスト機能によれば、手書き入力操作に応じた1以上のストロークに基づいて特定されるストローク集合(例えば、過去に記載された手書き文字列のうち当該1以上のストロークに類似するストロークから構成される手書き文字列)が推薦手書き文字列として表示される。
図16は、このような推薦手書き文字列が表示された後に、上述した運筆動作が行われる場合について示している。
ここで、図16に示す例では、例えば手書き入力操作によって手書き文字「a」が手書きで記載された場合、当該手書き文字「a」(つまり、1以上のストローク)に基づいて特定される推薦手書き文字列「app」、「apple」及び「air」が表示されている。
なお、図16では上述した領域1001〜1003については省略されているが、推薦手書き文字列「app」は、例えば領域1003(手書き入力操作が行われる領域)の上側に位置する領域1201(第2領域)に表示される。また、推薦手書き文字列「apple」は、例えば領域1003(に重なる領域1202)に表示される。更に、推薦手書き文字列「air」は、例えば領域1003の下側に位置する領域1203(第3領域)に表示される。なお、表示される推薦手書き文字列のうち、例えば最も優先度の高い推薦手書き文字列が領域1202に表示されるものとする。この優先度は、例えば手書き入力操作によって手書きで記載された手書き文字列と一致する度合いや推薦手書き文字列として過去に表示された際にユーザによって選択された回数等に基づいて算出することが可能であるが、他の手法により算出されても構わない。また、図16に示す例では領域1201〜1203の各々に推薦手書き文字列が表示されるものとして説明したが、推薦手書き文字列は、当該領域1201〜1203の少なくとも1つの領域に表示されればよい。
このように推薦手書き文字列が表示された場合、ユーザは、当該推薦手書き文字列のうちの1つを(手書き入力領域500に)表示すべき文字列として選択することができる。すなわち、推薦手書き文字列のうちの1つがユーザによって選択される場合、筆跡描画部301Bは、当該推薦手書き文字列を手書き入力領域500に表示(描画)する。
図16に示す例では、運筆動作が行われた場合、カーソル1204を合わせることによって推薦手書き文字列のうちの1つを選択(指定)することができる入力補助UI1205が表示される。なお、この入力補助UI1205は、例えば領域1202に表示されている推薦手書き文字列「apple」が選択された場合に、次の手書き入力操作が行われると推定される位置の近傍(つまり、当該推薦手書き文字列の後の位置)に表示される。
この入力補助UI1205には、例えば上記したカーソル1204を上に移動させるための「上」ボタン1205a、当該カーソル1204を下に移動させるための「下」ボタン1205b及びカーソル1204が合わせられている推薦手書き文字列を指定するための「OK」ボタン1205cが設けられている。
これによれば、運筆動作後に入力補助UI1205に対する操作(つまり、推薦手書き文字列を選択する操作)を容易に行うことができるとともに、容易に次の手書き入力操作を行うことが可能となる。
なお、図15及び図16において説明した入力補助UI1100及び1205は一例であり、本実施形態における入力補助UIは、例えば手書き文字列の太さを変更する、当該手書き文字列を拡大または縮小する、当該手書き文字列を削除する、当該手書き文字列を検索キーとして指定する、または当該手書き文字列に対して文字認識処理を実行する等の機能、あるいはこれらを組み合わせた機能等を利用するためのものであってもよい。すなわち、本実施形態における入力補助UIは、ユーザによる手書き入力操作を補助する機能を利用するためのものであればよい。
上記したように本実施形態においては、タッチスクリーンディスプレイ12の画面上の接触点(第1接触点)に手が接触した状態で手書きで入力される1以上のストローク(第1ストローク)に対応するストロークデータ(第1ストロークデータ)を入力し、手が当該接触点から離れた後、当該1以上のストロークが表示される領域(第1領域)から運筆方向に所定距離(第1距離)離れた位置に、入力補助UI(入力するストロークを指定するための操作に用いられるユーザインタフェース)を表示する。具体的には、画面上の接触点(第1接触点)に手が接触した状態で1以上のストローク(第1ストローク)が入力された後に運筆動作を行い、当該画面上の異なる接触点(第2接触点)に手が接触した状態で1以上のストローク(第2ストローク)が入力される場合、入力補助UIは、当該運筆動作前に1以上のストロークが表示される領域と当該運筆動作後の接触点との間の位置に表示される。
本実施形態においては、このような構成により、手書き入力操作を阻害または中断しない位置(つまり、運筆動作後の次の手書き入力操作を行う位置の近傍)に入力補助UIが表示されるため、ユーザは、当該入力補助UIに対する操作を容易に行うことが可能となり、手書き文書(手書きノート)を効率的に作成することが可能となる。
また、本実施形態においては、1以上のストロークが手書きで記載される領域1202(第1領域)、当該領域の上側に位置する領域1201(第2領域)及び当該領域の下側に位置する領域1203(第3領域)の少なくとも1つの領域に推薦手書き文字列(手書き入力の候補)が表示され、当該推薦手書き文字列を指定するための操作に用いられる入力補助UI1205が表示される。本実施形態においては、このような構成により、推薦手書き文字列を表示(提示)する機能(入力サジェスト機能)を有している場合に、当該推薦手書き文字列を指定する操作(図16に示す入力補助UI1205に対する操作)を容易に行うことが可能な入力補助UIを表示することが可能となる。
更に、本実施形態においては、タッチスクリーンディスプレイ12の画面上にユーザの手が接触した状態が継続している間は入力補助UIを非表示とすることにより、例えば当該画面上において手書き入力操作が継続して行われている場合に、ユーザが意図しない当該入力補助UIに対する操作が行われることを防止することが可能となる。
また、本実施形態においては、未確定のストロークを入力補助UIを用いた操作の対象とする(つまり、入力補助UIを介して利用される入力補助機能は未確定のストロークに対して適用される)ことにより、ユーザが意図しない範囲のストローク(手書き文字列)に対してまでも当該入力補助機能が適用される(つまり、当該入力補助機能による効果が生じる)ことを防止することができる。
なお、本実施形態においては図13及び図14において説明した第1の決定処理が実行されることによって決定された位置に入力補助UIが表示される(つまり、運筆動作後に入力補助UIが表示される)ものとして説明したが、当該ユーザの手が再度画面上に接触する前(つまり、次の手書き入力位置に手を移動している最中)に、入力補助UIが表示されるようにしてもよい。この場合には、次にユーザが手を接触させる画面上の位置を予測して入力補助UIの表示位置を決定する。
以下、図17を参照して、この場合における入力補助UIの表示位置の決定処理(以下、第2の決定処理と表記)について説明する。ここでは、上述した図12及び図14と同様の部分には同一参照符号を付して、その詳しい説明を省略する。
この第2決定処理の場合、UI表示処理部301Cは、例えば領域1002(及び領域1003)の最左端に位置する点のX座標(以下、X0座標と表記)を取得する。
また、UI表示処理部301Cは、上述した図14において説明したX1座標を取得する。
なお、領域1002及び領域1003(X0座標及びX1座標)は、ブロックB1において入力されたストロークデータ(時系列座標)及びタッチパネル12Bによって検出される第1接触点1001aの位置(座標)等から算出されるものとする。
ここで、UI表示処理部301Cは、図17に示すように、取得されたX1座標とX0座標との差分dを算出し、当該算出された差分dをX1座標に加算した値(以下、X2´座標と表記)を算出する。
次に、UI表示処理部301Cは、上述した図14において説明したY1座標及びY2座標を取得する。
これにより、UI表示処理部301Cは、図17に示すようにX1座標、X2´座標、Y1座標及びY2座標に基づいて領域1006を算出する。
この場合、UI表示処理部301Cは、算出された領域1006(内の位置)を、入力補助UIを表示する位置として決定する。
すなわち、第2の決定処理においては、上記したように領域1002及び領域1003に基づいて次の手書き入力操作が行われると推測される領域1006を予測し、当該領域1006内の位置を入力補助UIの表示位置として決定する。
この第2の決定処理によれば、ユーザの運筆動作によりユーザの手が画面上に置かれる(接触する)前に入力補助UIを表示することが可能となるため、運筆のリズムをソフトウェア的に意図的に作り出すことが可能となる。
しかしながら、手書き文字列を横書きで記載する場合を想定すると、第2の決定処理によって決定された位置に入力補助UIを表示する場合、運筆動作の最中(つまり、ユーザが手を移動している最中)の当該ユーザの手の下に入力補助UIが表示されることになる。つまり、ユーザの運筆動作が完了するまで(つまり、ユーザが手を画面上に置くまで)の間に、ユーザが意図しないタッチ操作(つまり、誤操作)が行われる可能性がある。
これに対して、上述した第1の決定処理によれば、ユーザの運筆動作後(つまり、ユーザの手が画面上に置かれた後)に入力補助UIが表示されるため、第2の決定処理が実行された場合と比較して誤操作が行われる可能性は低い。
上記した第1または第2の決定処理のいずれの処理が実行されるか(つまり、ユーザの手が画面上に置かれた後に入力補助UIが表示されるか、当該ユーザの手が画面上に置かれる前に入力補助UIが表示されるか)はユースケースによって決定される。
なお、本実施形態においてはユーザがペン100を使用して手書き文字列を横書きで記載する場合について主に説明したが、本実施形態は、当該手書き文字列を縦書きで記載する場合にも適用可能である。ここで、手書き文字列を縦書きで記載する場合の運筆方向は、当該手書き文字列を横書きで記載する場合と異なり、ユーザから見て上から下方向である。また、運筆方向やユーザの手書き習慣から当該運筆方向に最適化されたペン100の持ち方及び動かし方によって、手書き入力可能領域は、横書きの場合における領域1002と異なる場合がある。更に、手書き文字列を縦書きで記載する場合における容易に手書き入力操作を行うことが可能な領域の形状も、上述した図12に示す領域1003とは異なり、縦長の楕円形状となる。このように、手書き文字列を横書きで記載する場合と縦書きで記載する場合とでは上記したように運筆方向等に差異があるが、手書き文字列を縦書きで記載する場合であっても、図13に示すような処理が実行されることによってユーザによる手書き入力操作が行われる領域から運筆方向に所定距離離れた位置に入力補助UIを表示することが可能である。これにより、手書き文字列を縦書きで記載する場合でも上述した手書き文字列を横書きで記載する場合と同様の効果を実現することができる。
なお、本実施形態の処理はコンピュータプログラムによって実現することができるため、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。