以下、実施の形態について図面を参照して説明する。
図1は、一実施形態に係る電子機器の外観を示す斜視図である。この電子機器は、例えば、ペン(スタイラス)または指によって手書き入力可能なペン・ベースの携帯型電子機器である。この電子機器は、タブレットコンピュータ、ノートブック型パーソナルコンピュータ、スマートフォン、PDA等として実現され得る。以下では、この電子機器がタブレットコンピュータ10として実現されている場合を想定する。タブレットコンピュータ10は、タブレットまたはスレートコンピュータとも称される携帯型電子機器である。タブレットコンピュータ10は、図1に示すように、本体11とタッチスクリーンディスプレイ17とを備える。タッチスクリーンディスプレイ17は、本体11の上面に重ね合わせるように取り付けられている。
本体11は、薄い箱形の筐体を有している。タッチスクリーンディスプレイ17には、フラットパネルディスプレイと、センサとが組み込まれている。センサは、フラットパネルディスプレイの画面上のペンまたは指の接触位置を検出するように構成されている。フラットパネルディスプレイは、例えば、液晶表示装置(LCD)であってもよい。センサとしては、例えば、静電容量方式のタッチパネル、電磁誘導方式のデジタイザなどを使用することができる。以下では、デジタイザとタッチパネルの2種類のセンサの双方がタッチスクリーンディスプレイ17に組み込まれている場合を想定する。
このタッチスクリーンディスプレイ17は、指を使用した画面に対するタッチ操作のみならず、ペン100を使用した画面に対するタッチ操作も検出することができる。ペン100は例えば電磁誘導ペン(デジタイザペン)であってもよい。ユーザは、ペン100を使用してタッチスクリーンディスプレイ17上で手書き入力操作を行うことができる。手書き入力操作中においては、画面上のペン100の動きの軌跡、つまり手書き入力操作によって手書きされるストロークの軌跡(筆跡)がリアルタイムに描画され、これによって各ストロークの軌跡が画面上に表示される。ペン100が画面に接触されている間のペン100の動きの軌跡が1ストロークに相当する。手書きされた文字または図形などに対応する多数のストロークの集合、つまり多数の軌跡(筆跡)の集合が手書き文書を構成する。
本実施形態では、この手書き文書は、イメージデータではなく、各ストロークの軌跡の座標列とストローク間の順序関係とを示す時系列情報として記憶媒体に保存される。この時系列情報の詳細は図6を参照して後述するが、この時系列情報は、複数のストロークが手書きされた順を示し、且つ複数のストロークにそれぞれ対応する複数のストロークデータを含む。換言すれば、この時系列情報は、複数のストロークにそれぞれ対応する時系列のストロークデータの集合を意味する。各ストロークデータは、ある一つのストロークに対応し、このストロークの軌跡上の点それぞれに対応する座標データ系列(時系列座標)を含む。これらストロークデータの並びの順序は、ストロークそれぞれが手書きされた順序つまり筆順に相当する。
さらに、タブレットコンピュータ10は編集機能を有している。この編集機能は、「消しゴム」ツール、範囲指定ツール、および他の各種ツール等を用いたユーザによる編集操作に応じて、表示中の手書き文書内の任意のストロークまたは任意の手書き文字等を削除または移動することができる。さらに、この編集機能は、幾つかの手書き操作の履歴を取り消す機能も含んでいる。
本実施形態では、時系列情報は、1つまたは複数のページとして管理されうる。この場合、時系列情報を1つの画面に収まる面積単位で区切ることによって、1つの画面に収まる時系列情報のまとまりを1つのページとして記録してもよい。あるいは、ページのサイズを可変できるようにしてもよい。この場合、ページのサイズは1つの画面のサイズよりも大きい面積に広げることができるので、画面のサイズよりも大きな面積の手書き文書を一つのページとして扱うことができる。1つのページ全体をディスプレイに同時に表示できない場合は、そのページを縮小してするようにしてもよいし、縦横スクロールによってページ内の表示対象部分を移動するようにしてもよい。
このように、時系列情報はページデータとして管理することができるので、以下では、時系列情報を手書きページデータあるいは単に手書きデータとも称する。
さらに、タブレットコンピュータ10は、Webページ、テキスト、画像、他の各種コンテンツ上に文字、図形のようなオブジェクトを手書きすることもできる。この場合、手書きストロークは、表示されているコンテンツ上に設定される透明レイヤ上に描画し得る。これにより、この手書きストロークを上述のコンテンツ上に重ねて表示することができる。
また、さらに、タブレットコンピュータ10は、手書きコラボレーション機能を有している。手書きコラボレーション機能は、手書き情報(手書きストローク)を複数の端末間で共有して手書きによる協同作業を行うための手書き共有サービスを実行する。この手書き共有サービスは、複数の端末内のいずれかの端末において手書き入力されるストロークデータを他の各端末にリアルタイムに送信する。これによって、これら複数の端末の表示画面の内容を同期させることができる。この場合、異なるユーザによって手書き入力されたストロークは、異なる形態(例えば、異なる色、異なる太さ、異なるペンタイプ、等)で各端末の画面に表示することができる。ストロークデータの表示形態をユーザ毎に変更することは、どのストロークがどのユーザによって手書きされたかを識別することを可能にする。また、各端末の表示画面には、手書き共有サービスにログインしている各端末(各ユーザ)に割り当てられた表示形態を示すガイドを表示してもよい。
図2は、手書き共有サービスを利用する端末間の接続例を示す。
端末10Aは、ユーザAによって使用されるタブレットコンピュータである。端末Bは、ユーザBによって使用されるタブレットコンピュータである。端末10Cは、ユーザCによって使用されるタブレットコンピュータである。端末10A、10B、10Cの各々は、本実施形態のタブレットコンピュータ10と同等の手書きコラボレーション機能を有している。
端末10A、10B、10Cは互いに無線接続される。この無線接続のための方法としては、複数の端末を互いに無線接続することが可能な任意の無線接続規格を使用し得る。例えば、Wi−Fi Direct(登録商標)、またはBluetooth(登録商標)が、端末間を互いに無線接続するために使用されてもよい。以下では、一例として、Wi−Fi Direct(登録商標)を使用する場合を想定する。
Wi−Fi Direct(登録商標)に対応する端末(機器)それぞれは、1対1ベーシスで、あるいは1対他ベーシスで、互いに接続することができる。端末10A、10B、10Cの各々は、Wi−Fi Direct(登録商標)に対応する端末(機器)として機能し得る。
端末10A、10B、10Cのいずれか1つは、手書き共有サービスを管理するように構成されたサーバ(手書きコラボレーションサーバシステム)として機能することができる。この手書きコラボレーションサーバシステムは、他の端末それぞれを手書き共有サービスのグループに招待することができる。この場合、手書きコラボレーションサーバシステムは、手書き共有サービスのグループへの参加を促す招待信号を他の端末それぞれに送信してもよい。また、手書きコラボレーションサーバシステムは、グループへの参加を要求している各端末に、グループに参加すること、つまり手書きコラボレーションサーバシステム(手書き共有サービス)へログインすること、を許可するか否かを決定することもできる。手書きコラボレーションサーバシステムから許可を受け取った各端末だけが、手書き共有サービスにログインすること、つまりグループに参加してグループ内の他の端末に接続することが許可されても良い。
ここで、各端末が手書きコラボレーションサーバシステム(手書き共有サービス)へログインする方法としては、この端末自体のID(アカウント)を使用して手書き共有サービスにログインする方法、またはこの端末を使用するユーザのID(アカウント)を使用して手書き共有サービスにログインする方法のいずれを使用してもよい。つまり、手書き共有サービスに対するログインおよびログアウトは、端末自体のID(アカウント)を使用したログインおよびログアウト、またはユーザのID(アカウント)を使用したログインおよびログアウトのどちらであってもよい。
いま、端末10A、10B、10Cが手書き共有サービスにログインしている状態である場合、つまり端末10A、10B、10Cが相互に接続されている場合を想定する。端末10A、10B、10Cを含む手書き共有サービスのグループにおいては、これら端末10A、10B、10Cの表示画面の内容が同期される。
ユーザA,B,Cの各々が自身の端末において手書き入力したストロークデータは、自身の端末の画面に表示されるだけでなく、他の各ユーザの端末の画面にもリアルタイムに反映される。これにより、手書き共有サービスのグループに参加しているユーザ間で互いの手書き情報(手書き文字、手書き図形等)を交換・共有することができる。
さらに、手書き共有サービスのグループに参加している端末10A、10B、10Cは、会議資料のような同じコンテンツを画面上に表示することもできる。この場合、各端末において手書き入力されるストロークデータは、このコンテンツ上に表示される。ユーザA,B,Cは、同じコンテンツを見ながら、このコンテンツ上に手書きされる手書き情報(手書き文字、手書き図形等)をユーザA,B,C間で交換・共有することができる。
図3は、手書きコラボレーションサーバシステムと各端末との間のデータの流れを示す。
図3では、端末10Aが、手書きコラボレーションサーバシステムとして動作する場合が想定されている。端末10Aは、手書き共有サービスにログインしている複数の端末の一つである。
手書きコラボレーションサーバシステム(端末10A)は、1対他ベーシスで、端末10B、10Cの各々との通信をする能力を有している。手書きコラボレーションサーバシステム(端末10A)は、ログイン状態である端末10Bに直接的に接続される。さらに、手書きコラボレーションサーバシステム(端末10A)は、ログイン状態である端末10Cに直接的に接続される。
手書きコラボレーションサーバシステム(端末10A)は、端末10Bにおいて手書き入力されるストロークデータを端末10Bから受信する。また、手書きコラボレーションサーバシステム(端末10A)は、端末10Cにおいて手書き入力されるストロークデータを端末10Bから受信する。
さらに、手書きコラボレーションサーバシステム(端末10A)は、端末10Aにおいて手書き入力されるストロークデータと端末10Cから受信されたストロークデータとを端末10Bに送信する。またさらに、手書きコラボレーションサーバシステム(端末10A)は、端末10Aにおいて手書きに入力されるストロークデータと端末10Bから受信されたストロークデータとを端末10Cに送信する。
したがって、端末10Aのディスプレイにおいては、ユーザAの手書きオブジェクトが表示されるだけでなく、ユーザBの手書きオブジェクト、さらにはユーザCの手書きオブジェクトもリアルタイムに表示される。
同様にして、端末10Bのディスプレイにおいても、ユーザBの手書きオブジェクトが表示されるだけでなく、ユーザAの手書きオブジェクト、さらにはユーザCの手書きオブジェクトがリアルタイムに表示される。
また同様に、端末10Cのディスプレイにおいても、ユーザCの手書きオブジェクトが表示されるだけでなく、ユーザAの手書きオブジェクト、さらにはユーザBの手書きオブジェクトもリアルタイムに表示される。
手書きコラボレーションサーバシステム(端末10A)は、各端末において手書き入力される複数のストロークデータの各々を送信元端末識別子(端末ID)に対応付けてデータベース12に格納する。送信元端末識別子(端末ID)は、端末を識別可能な情報であればどのような情報であっても良い。例えば、端末IDは、MACアドレスやIPアドレスのような既存の情報や、手書き共有サービスにおいて設定される情報であっても良く、また手書きコラボレーションサーバシステム(端末10A)によって各端末10A,10B,10Cに付与される情報であっても良く、乱数に基づいて端末ごとに設定される情報であっても良い。
例えば、端末10Bから受信される個々のストロークデータには、端末10Bに対応する端末IDが送信元端末識別子として付加されていても良い。端末10Bから受信される個々のストロークデータは、端末10Bに対応する端末IDに対応付けてデータベース12に格納される。同様に、端末10Cから受信される個々のストロークデータには、端末10Cに対応する端末IDが送信元端末識別子として付加されていても良い。端末10Cから受信される個々のストロークデータは、端末10Cに対応する端末IDに対応付けてデータベース12に格納される。さらに、端末10Aにおいて手書き入力される個々のストロークデータは、端末10Aに対応する端末IDに対応付けてデータベース12に格納される。
なお、各ストロークデータには、送信元端末識別子(端末ID)だけでなく、そのストロークデータの手書き入力に使用されたペンを識別可能なペン識別子(ペンID)も付加されていても良い。手書き入力に使用されるペンがこのペンの固有のペンIDを端末に送信する機能を有している場合には、端末は、ペンからこのペンのペンIDを取得することができる。各端末10A,10B,10Cは、当該端末におけるストロークデータの手書き入力に使用されるペンのペンIDが取得可能な場合、当該端末の端末IDと取得されたペンIDとが付加されたストロークデータを送信する。一方、当該端末におけるストロークデータの手書き入力に使用されるペンのペンIDが取得できない場合、各端末10A,10B,10Cは、当該端末の端末IDが付加されたストロークデータを送信する。
手書きコラボレーションサーバシステム(端末10A)は、受信されたストロークデータに付加されている送信元端末識別子(端末ID)に基づいて、この受信されたストロークデータを、この受信されたストロークデータの送信元端末以外の他の各端末に送信する。換言すれば、手書きコラボレーションサーバシステム(端末10A)は、個々のストロークデータが配信されるべき端末を、個々のストロークデータに対応する端末IDに基づいて決定することができる。
図4は、ログイン状態である端末の画面(手書き共有画面)の例を示している。各端末の手書き共有画面30Aの表示領域においては、手書き入力可能な透明のレイヤ(手書きレイヤ)30Bが設定される。この手書き共有画面30A上に、各ユーザのストロークデータ(手書きストローク)が表示される。
例えば、端末10Aの手書き共有画面30Aにおいては、端末10Aの手書き共有画面30A上でペン100Aを使用してユーザAによって手書き入力されるストロークデータ(ユーザAの手書きストローク)40が表示される。さらに、端末10Aの共有画面30A上においては、他の端末から受信されるストロークデータが表示される。他の端末から受信されるストロークデータには、ユーザBによって手書き入力されたストロークデータ(ユーザBの手書きストローク)42と、ユーザCによって手書き入力されたストロークデータ(ユーザCの手書きストローク)44とが含まれる。
上述したように、異なるユーザのストロークデータは異なる形態で手書き共有画面30A上に表示される。この場合、各ストロークデータがどのユーザ(端末)に対応するかは、各ストロークデータに対応する端末IDに基づいて判定することができる。あるいは、各ストロークデータがどのユーザ(端末)に対応するかは、各ストロークデータに対応するペンIDに基づいて判定してもよい。
次に、図5および図6を参照して、ユーザによって手書き入力されるストロークデータ(手書き文字、手書きマーク、手書き図形、手書き表など)と時系列情報との関係について説明する。図5は、ペン100などを使用してタッチスクリーンディスプレイ17上に手書きされる手書き文書(手書き文字列)の例を示している。
図5においては、「ABC」の手書き文字列が「A」、「B」、「C」の順番で手書きされ、この後に、手書きの矢印が、手書き文字「A」のすぐ近くに手書きされた場合が想定されている。
手書き文字「A」は、ペン100などを使用して手書きされる2つのストローク(「∧」形状の軌跡、「−」形状の軌跡)によって表現される。最初に手書きされる「∧」形状のペン100の軌跡は例えば等時間間隔でリアルタイムにサンプリングされ、これによって「∧」形状のストロークの時系列座標SD11、SD12、…SD1nが得られる。同様に、次に手書きされる「−」形状のペン100の軌跡も等時間間隔でリアルタイムにサンプリングされ、これによって「−」形状のストロークの時系列座標SD21、SD21、…SD2nが得られる。
手書き文字「B」は、ペン100などを使用して手書きされた2つのストロークによって表現される。手書き文字「C」は、ペン100などを使用して手書きされた1つのストロークによって表現される。手書きの「矢印」は、ペン100などを使用して手書きされた2つのストロークによって表現される。
図6は、図5の手書き文書に対応する時系列情報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つのストロークをそれぞれ示している。
各ストロークデータは、一つのストロークに対応する座標データ系列(時系列座標)、つまり一つのストロークの軌跡上の複数の点それぞれに対応する複数の座標を含む。各ストロークデータにおいては、複数の座標はストロークが書かれた順に時系列に並べられている。例えば、手書き文字「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)を示す。
さらに、各座標データには、筆圧を示す情報(Z)を追加してもよい。
図7は、タブレットコンピュータ10のシステム構成を示す。
タブレットコンピュータ10は、図7に示されるように、CPU101、システムコントローラ102、主メモリ103、グラフィクスプロセッシングユニット(GPU)104、BIOS−ROM105、不揮発性メモリ106、無線通信デバイス107、エンベデッドコントローラ(EC)108等を備える。
CPU101は、タブレットコンピュータ10内の各種モジュールの動作を制御するプロセッサである。CPU101は、ストレージデバイスである不揮発性メモリ106から主メモリ103にロードされる様々なプログラムを実行する。これらプログラムには、オペレーティングシステム(OS)201、および様々なアプリケーションプログラムが含まれている。アプリケーションプログラムには、手書き共有アプリケーションプログラム202が含まれている。この手書き共有アプリケーションプログラム202は、手書き情報を複数の端末間で共有するための上述の手書きコラボレーション機能を実行可能に構成されている。
また、CPU101は、BIOS−ROM105に格納された基本入出力システム(BIOS)も実行する。BIOSは、ハードウェア制御のためのプログラムである。
システムコントローラ102は、CPU101のローカルバスと各種コンポーネントとの間を接続するデバイスである。システムコントローラ102には、主メモリ103をアクセス制御するメモリコントローラも内蔵されている。また、システムコントローラ102は、PCI EXPRESS規格のシリアルバスなどを介してグラフィクスプロセッシングユニット(GPU)104との通信を実行する機能も有している。
GPU104は、本タブレットコンピュータ10のディスプレイモニタとして使用されるLCD17Aを制御する表示プロセッサである。このGPU104によって生成される表示信号はLCD17Aに送られる。LCD17Aは、表示信号に基づいて画面イメージを表示する。このLCD17Aの上面側にはタッチパネル17Bが配置されている。LCD17Aの下面側にはデジタイザ17Cが配置されている。タッチパネル17Bは、LCD17Aの画面上で入力を行うための静電容量式のポインティングデバイスである。指が接触される画面上の接触位置および接触位置の動き等はタッチパネル17Bによって検出される。デジタイザ17CはLCD17Aの画面上で入力を行うための電磁誘導式のポインティングデバイスである。ペン100が接触される画面上の接触位置および接触位置の動き等はデジタイザ17Cによって検出される。
無線通信デバイス107は、無線通信を実行するように構成されたデバイスである。無線通信デバイス107は、上述のWi−Fi Direct(登録商標)に対応する無線通信を実行するように構成されていてもよい。
EC108は、電力管理のためのエンベデッドコントローラを含むワンチップマイクロコンピュータである。EC108は、ユーザによるパワーボタンの操作に応じて本タブレットコンピュータ10を電源オンまたは電源オフする機能を有している。
次に、図8を参照して、手書き共有アプリケーションプログラム202の機能構成について説明する。
手書き共有アプリケーションプログラム202は、手書き情報を共有するための機能実行モジュールとして、手書き入力インタフェース300、表示処理部301、ストロークデータ生成部302、送信処理部304、受信処理部305、および処理部305等を含む。
手書き共有アプリケーションプログラム202は、タッチスクリーンディスプレイ17を用いて入力されるストロークデータを使用することによって、手書きページデータの作成、表示、編集等を行う。タッチスクリーンディスプレイ17のデジタイザ17Cは、「タッチ」、「移動(スライド)」、「リリース」等のイベントの発生を検出するように構成されている。「タッチ」は、画面上にペンが接触したことを示すイベントである。「移動(スライド)」は、画面上にペンが接触されている間に接触位置が移動されたことを示すイベントである。「リリース」は、画面からペンが離されたことを示すイベントである。
手書き入力インタフェース300は、タッチスクリーンディスプレイ17のデジタイザ17Cと協同して手書き入力を行うように構成されたインタフェースである。手書き入力インタフェース300は、タッチスクリーンディスプレイ17のデジタイザ17Cから「タッチ」または「移動(スライド)」のイベントを受信し、これによって手書き入力操作を検出する。「タッチ」イベントには、接触位置の座標が含まれている。「移動(スライド)」イベントにも、移動先の接触位置の座標が含まれている。したがって、手書き入力インタフェース300は、タッチスクリーンディスプレイ17から、接触位置の動きの軌跡に対応する座標列を受信することができる。
表示処理部301は、手書き入力インタフェース300から座標列を受信し、この座標列に基づいて、ペン100を使用した手書き入力操作によって手書き入力される各ストロークデータをLCD17Aの画面上に表示する。さらに、表示処理部301は、処理部305の制御の下、他の端末から受信されたストロークデータをLCD17Aの画面上に表示する。
ストロークデータ生成部302は、手書き入力インタフェース300から上述の座標列を受信し、この座標列に基づいて、図6で詳述したような構造を有する時系列情報を生成する。この場合、時系列情報はストロークデータベース12に格納されてもよい。
送信処理部304は、処理部305の制御の下、無線通信デバイス107を使用してストロークデータベース12内の各ストロークデータを他の端末に送信するための処理を実行する。受信処理部305は、処理部305の制御の下、無線通信デバイス107を使用して他の端末からストロークデータを受信するための処理を実行する。
処理部305は、複数の端末間で手書き情報を共有するための処理を実行する。この処理部305は、ペンID取得部311、メンバ管理部312、ストローク管理部313、および表示スタイル管理部314等を含む。
ペンID取得部311は、ストロークデータの手書き入力に使用されるペンからペンIDを取得する。ペンIDを有するペンつまりペンIDを送信可能なペンを使用している端末においては、ペンID取得部311は、手書き入力に現在使用されているペンのペンIDを取得することができる。メンバ管理部312は、手書き共有サービスにログインしているメンバ(端末)それぞれを管理する。メンバ管理部312は、手書き共有サービスへのログインを要求している端末に、ログインすることを許可するか否かを決定することができる。この場合、メンバ管理部312は、新たな端末のログインを許可するか否かを各メンバに問い合わせ、全てのメンバから許可を受け取ることを条件に、新たな端末のログインを許可してもよい。メンバ管理部312から許可を受け取った端末は、手書き共有サービスにログインすることが許可され、これによって手書き共有サービスにログインしている他の各端末と接続される。メンバ管理部312の機能は、手書きコラボレーションサーバシステムとして動作する端末においてのみ実行されても良い。
ストローク管理部313は、手書き共有サービスに参加している各端末つまりログイン状態である各端末から受信されるストロークデータを、ストロークデータベース12を使用して、管理する。ストローク管理部313は、手書きコラボレーションサーバシステムとして動作する端末においてのみ実行されても良い。
表示スタイル管理部314は、ログインした端末(ユーザ)毎に、端末IDまたはペンIDとストロークデータの表示の形態との関係を管理する。手書きコラボレーションサーバシステムとして動作する端末の表示スタイル管理部314は、端末IDまたはペンIDとストロークデータの表示の形態との関係を端末毎に規定する形態情報である表示スタイル管理テーブルを生成し、この表示スタイル管理テーブルを他の各端末に送信することができる。手書き共有サービスの実行中は、各端末は、表示スタイル管理テーブルを使用して、個々のストロークデータの表示に使用する形態を決定する。
ところで、手書き共有サービスを会議等を実行するためのツールとして有用なものとするためには、図3で説明したようにユーザA,B,Cの三人が手書き共有サービスにログインしている状態で、新たにユーザDがこの手書き共有サービスにログインした際に、既にユーザA,B,Cの各端末に表示されている手書き情報をユーザDの端末の画面上に反映できるようにする同期機能が必要とされる。
しかし、一方で、手書き共有サービスをビジネス環境で利用する場合には、セキュリティが重要な要素になってくる。もし端末10A,端末10B,端末10Cに現在表示されている内容の全てが、後からログインしたユーザDの端末に無条件に表示されてしまったならば、セキュリティ性が損なわれる可能性がある。
例えば、端末10Cのログアウト後にユーザDの端末が新たにログインするというケースを想定すると、端末10CのユーザCが本来意図しない範囲にまで、つまり新たにログインしたユーザDの端末にまで、ユーザCの手書き情報が拡散されてしまう可能性がある。
端末10Cのログアウトは、例えば、端末10Cの手書き共有アプリケーションプログラムの終了、ユーザCによる明示的なログアウト操作、端末10Cの電源オフ、のようなイベントの発生によって引き起こされる。
本実施形態では、処理部305は、既にログアウトした端末において手書き入力されたストローク群が新たにログインした端末において表示されるのを防止することを可能にするためのセキュリティ機能を有している。このセキュリティ機能の詳細は、図11以降で説明する。
図9は、手書きコラボレーションサーバシステム(端末10A)のストロークデータベース12の内容を示す。ストロークデータベース12は、レコードIDがそれぞれ割り当てられた多数のレコード(多数の記憶領域)を含む。1つのレコードには1つのストロークデータ(1画)が割り当てられる。各レコードにおいては、端末ID(デバイスID)、およびストロークデータ(座標列)、等が格納される。さらに、ストロークデータに対応するユーザIDおよびペンID等を各レコードに格納しても良い。
図9においては、レコードID=1、レコードID=2、…、レコードID=102の各レコードには、端末10A(端末ID=A)において手書き入力されたストロークデータが格納されている。レコードID=3のレコードには、端末10B(端末ID=B)において手書き入力されたストロークデータが格納されている。レコードID=4、…、レコードID=100、レコードID=101の各レコードには、端末10C(端末ID=C)において手書き入力されたストロークデータが格納されている。
図10は、手書きコラボレーションサーバシステムとして動作する端末の表示スタイル管理部314によって生成される表示スタイル管理テーブル400を示す。
表示スタイル管理テーブル400は、上述したように、端末IDまたはペンIDとストロークデータの表示の形態(色、太さ、その他)との関係を端末毎に規定する。
図10においては、端末10A、10B、10C、10Dが手書き共有サービスにログインしている場合が想定されている。
ここでは、端末10A(端末ID=A)においてはペンID=PEN1のペンが手書き入力のために使用され、端末10B(端末ID=B)においてはペンIDを持たないペンが手書き入力のために使用され、端末10C(端末ID=C)においてはペンID=PEN3のペンが手書き入力のために使用され、端末10D(端末ID=D)においてはペンID=PEN11のペンが手書き入力のために使用されている場合が想定されている。
表示スタイル管理テーブル400は、手書き共有サービスにログインしているユーザそれぞれに対応するレコード(記憶領域)を含む。各レコードは、「端末ID」フィールド、「ペンID」フィールド、「ストロークの色」フィールド、「ストロークの太さ」フィールド、「その他」フィールドを含む。「端末ID」フィールドは、対応するユーザ(端末)の端末IDを格納する。「ペンID」フィールドは、対応するユーザ(端末)がログイン時に使用したペンのペンIDを格納する。「ストロークの色」フィールドは、対応するユーザのストロークを表示するために使用すべき色を示す情報を格納する。「ストロークの太さ」フィールドは、対応するユーザのストロークを表示するために使用すべき太さを示す情報を格納する。
例えば、ユーザAに対応するレコードに関しては、端末ID「A」が「端末ID」フィールドに格納され、ペンID「PEN1」が「ペンID」フィールドに格納され、色「黒」が「ストロークの色」フィールドに格納されている。
ユーザBに対応するレコードに関しては、端末ID「B」が「端末ID」フィールドに格納され、ペンID「なし」が「ペンID」フィールドに格納され、色「赤」が「ストロークの色」フィールドに格納されている。なお、端末10B(端末ID=B)においてペンID=PEN2のペンがログイン時に使用された場合には、ペンID「なし」の代わりに、ペンID「PEN2」が「ペンID」フィールドに格納される。
ユーザCに対応するレコードに関しては、端末ID「C」が「端末ID」フィールドに格納され、ペンID「PEN3」が「ペンID」フィールドに格納され、色「緑」が「ストロークの色」フィールドに格納されている。
ユーザDに対応するレコードに関しては、端末ID「D」が「端末ID」フィールドに格納され、ペンID「PEN11」が「ペンID」フィールドに格納され、色「青」が「ストロークの色」フィールドに格納されている。
各ユーザ(各端末)の端末IDまたはペンIDに割り当てられるストロークの表示形態(色、太さ、等)は、各ユーザが、現在使用されていない形態(色、太さ、等)から選択しても良い。あるいは、手書きコラボレーションサーバシステムとして動作する端末が、各ユーザ(各端末)に割り当てるべきストロークの形態を決定してもよい。
本実施形態においては、上述したように、表示スタイル管理テーブル400は、ログイン状態である各端末に配信される。したがって、どの端末も、異なるユーザによって書かされたストロークデータを異なる形態で表示することができる。
次に、図11を参照して、処理部305によって実行されるストロークデータ配信処理を説明する。このストロークデータ配信処理には、上述のセキュリティ機能(ストローク非表示制御処理)が組み込まれている。
図11においては、図3で説明したように、端末10A、端末10B、および端末10Cが手書き共有サービスにログインしている場合が想定されている。端末10Aは、手書きコラボレーションサーバシステムとして機能する。
いま、端末10Cのログアウト後に端末10Dが手書き共有サービスに新たにログインする場合を想定する。この場合、もし手書きコラボレーションサーバシステム(端末10A)がストロークデータベース12に格納されている全てのストロークデータを端末10Dに送信したならば、ログアウトした端末10CのユーザCが意図していない端末10Dにまで、ユーザCのストロークデータが拡散されてしまう可能性がある。
このため、本実施形態では、手書きコラボレーションサーバシステム(端末10A)は、ログアウトした端末10C以外の各端末の端末IDに関連付けられているストローク群をストロークデータベース12から取得し、この取得したストローク群のみを端末10Dに送信する。
より詳しくは、手書きコラボレーションサーバシステム(端末10A)の処理部305は、端末10Dのログイン前に端末10Aにおいて手書き入力されたストロークデータ群と、端末10Dのログイン前に端末10Bにおいて手書き入力されたストロークデータ群とを、端末10Dに送信する。端末10Dのログイン前に端末10Aにおいて手書き入力されたストロークデータ群は、端末10Aの端末IDが関連付けられた、ストロークデータベース12内のストロークデータ群である。同様に、端末10Dのログイン前に端末10Bにおいて手書き入力されたストロークデータ群は、端末10Bの端末IDが関連付けられた、ストロークデータベース12内のストロークデータ群である。手書きコラボレーションサーバシステム(端末10A)の処理部305から端末10Dに送信される各ストロークデータには、このストロークデータに対応する端末IDが付加されていてもよい。あるいは、手書きコラボレーションサーバシステム(端末10A)の処理部305から端末10Dに送信される各ストロークデータには、このストロークデータに対応する端末IDとこのストロークデータに対応するペンIDの双方が付加されていてもよい。
手書きコラボレーションサーバシステム(端末10A)の処理部305は、ログアウトした端末10Cにおいて手書き入力されたストロークデータ群を端末10Dに送信しない。
以上のようなストローク非表示制御処理を含む配信処理(同期処理)により、現在ログイン状態である各端末の過去の手書き情報を、新たにログインした端末の画面に表示することができ、さらに、既にログアウトした端末10CのユーザCが意図していない範囲にまで、このユーザCのストロークデータが拡散されてしまうことを防ぐことができる。
また、端末10Dのログイン後においては、手書きコラボレーションサーバシステム(端末10A)の受信処理部303は、端末10Dにおいて手書き入力されるストロークデータを受信する。端末10Dから受信されたストロークデータは端末10Dの端末IDに対応付けられた状態でストロークデータベース12に格納されると共に、送信処理部304によって他の各端末に送信される。
図12は、端末10A、10B、10Cにそれぞれ表示される手書き共有画面の表示内容を示す。端末10A、10Bの各々の手書き共有画面においては、端末10Aにおいて手書き入力された全てのストロークデータおよび端末10Bにおいて手書き入力された全てのストロークデータが表示される。さらに、端末10A、10Bの各々の手書き共有画面においては、端末10Cのログアウト前に端末10Cにおいて手書き入力された全てのストロークデータも表示され続ける。
一方、端末10Cのログイン直後の端末10Cの手書き共有画面においては、端末10Cのログイン前に端末10Aにおいて手書き入力された全てのストロークデータと、端末10Cのログイン前に端末10Bにおいて手書き入力された全てのストロークデータが表示される。しかし、ログアウトした端末10Cのどのストロークデータも端末10Cの手書き共有画面に表示されない。
図13は、端末10A、10B、10Cにそれぞれ表示される手書き共有画面の別の表示内容を示す。
図13においては、端末10A、10Bの各々の手書き共有画面においても、ログアウトした端末10Cの全てのストロークデータが非表示となる。この場合、端末10Cのログアウトの直後に、手書きコラボレーションサーバシステム(端末10A)の処理部305は、端末10の手書き共有画面上の端末10Cのストロークデータ群を非表示にすると共に、端末10Cのストロークデータ群を非表示にするための情報を端末10Bに送信するための処理を実行する。
端末10Cのストロークデータ群を非表示にするための情報は、端末10Cのストロークデータ群を非表示にできる情報であればどのような情報であってもよい。例えば、手書きコラボレーションサーバシステム(端末10A)の処理部305は、端末10Cのストロークデータ群の非表示を要求するコマンドを、端末10Bに送信するための処理を実行しても良い。あるいは、手書きコラボレーションサーバシステム(端末10A)の処理部305は、端末10Cの各ストロークデータを消去するための消去ストロークデータを端末10Bに送信するための処理を実行しても良い。消去ストロークデータは、「消しゴム」ツールによって描画されるストロークデータと同様の属性、つまりこの消去ストロークデータと重なるストロークデータを透明にする属性を有する。
なお、以上の説明では、手書き共有サービスにログインしている複数の手書き可能端末の1つが手書きコラボレーションサーバシステムとして機能する場合を例示したが、手書きコラボレーションサーバシステムは、手書き可能端末以外の1以上のサーバによって実現されても良い。
図14においては、手書きコラボレーションサーバシステム2は、インターネット、イントラネットのようなネットワーク1上の1以上のサーバによって実現されている。手書きコラボレーションサーバシステム2は、ストローク受信処理部21、ストローク送信処理部22、およびストローク処理部23を備える。ストローク受信処理部21は、端末10A,10B,10Cの各々において手書き入力されるストロークデータをこれら端末10A,10B,10Cの各々から受信する。ストローク処理部23は、受信された各ストロークデータを当該ストロークデータの送信元端末の端末IDに対応付けてストロークデータベース12に格納する。ストローク送信処理部22は、端末10A,10B,10C内の任意の端末(第1の端末)に、第1の端末以外の他の端末から受信されたストロークデータを送信する。
ある端末(例えば端末10C)のログアウト後に端末10Dが新たにログインした場合には、ストローク送信処理部22は、ログアウトした端末10C以外の各端末の端末IDに関連付けられているストローク群をストロークデータベース12から取得し、この取得したストローク群を端末10Dに送信する。
図15のフローチャートを参照して、本実施形態の配信処理の手順を示す。以下では、手書きコラボレーションサーバシステムが端末10Aによって実現されている場合を想定する。
手書きコラボレーションサーバシステム(端末10A)は、ログイン状態である端末B(端末10B)からストロークデータを受信する(ステップS11)。端末B(端末10B)から受信されるストロークデータは、端末B(端末10B)において手書き入力されるストロークデータである。手書きコラボレーションサーバシステム(端末10A)は、端末B(端末10B)から受信されるストロークデータを、ログイン状態である他の全ての端末に送信する(ステップS12)。ステップS12では、端末B(端末10B)から受信されるストロークデータが、ログイン状態である他の全ての端末にブロードキャストされても良い。ステップS11、S12の処理により、端末B(端末10B)において手書きされる手書きオブジェクトは、ストロークデータ単位で、他の各端末の画面にリアルタイムに反映される。
手書きコラボレーションサーバシステム(端末10A)は、ログイン状態である端末C(端末10C)からストロークデータを受信する(ステップS13)。端末C(端末10C)から受信されるストロークデータは、端末C(端末10C)において手書き入力されるストロークデータである。手書きコラボレーションサーバシステム(端末10A)は、端末C(端末10C)から受信されるストロークデータを、ログイン状態である他の全ての端末に送信する(ステップS14)。ステップS14では、端末C(端末10C)から受信されるストロークデータが、ログイン状態である他の全ての端末にブロードキャストされても良い。ステップS13、S14の処理により、端末C(端末10C)において手書きされる手書きオブジェクトも、ストロークデータ単位で、他の各端末の画面にリアルタイムに反映される。
図16は、共有される手書き情報の取り扱いに関する幾つかのポリシーの設定例を示す。
本実施形態のポリシー設定においては、ログアウトしたユーザ(参加者)の手書きストロークを非表示にする機能を有効にするか否かを設定することができる。この設定は、例えば、手書きコラボレーションサーバシステムとして機能する端末10AのユーザAの操作に応じて実行されても良い。
ログアウトしたユーザ(参加者)の手書きストロークを非表示にする機能が有効にされた場合には、「新たにログインした参加者に見せない」というオプションを有効にするか否かを設定することもできる。なお、このオプションは、ログアウトしたユーザ(参加者)の手書きストロークを非表示にする機能が有効にされた場合に自動的に有効になっても良い。
また、ログアウトしたユーザ(参加者)の手書きストロークを非表示にする機能が有効にされた場合には、「既存の参加者に見せない」というオプションを有効にするか否かを設定することもできる。
図17のフローチャートは、ストローク非表示制御処理の手順を示す。
手書きコラボレーションサーバシステム(端末10A)の処理部305は、手書き共有サービスにログイン状態のある端末が手書き共有サービスからログアウトされたか否かを判定する(ステップS21)。ステップS21においては、処理部305は、ある端末からのログアウト要求の受信に応答して、あるいはある端末からのレスポンスが閾値時間以上途絶えたことの検出に応答して、このある端末がログアウトされたと決定しても良い。
ある端末がログアウトされたならば(ステップS21のYES)、手書きコラボレーションサーバシステム(端末10A)の処理部305は、「既存の参加者に見せない」というオプションが有効であるか否かを判定する(ステップS22)。
「既存の参加者に見せない」というオプションが有効であるならば(ステップS22のYES)、手書きコラボレーションサーバシステム(端末10A)の処理部305は、ログアウトされた端末(例えば端末10C)のストロークデータ群を非表示にするための情報を、ログイン状態である他の各端末に送信する(ステップS23)。ステップS23では、手書きコラボレーションサーバシステム(端末10A)の処理部305は、端末10Aの手書き共有画面に表示されている端末10Cのストロークデータ群を非表示にする処理も実行する。
「既存の参加者に見せない」というオプションが有効でないならば(ステップS22のNO)、手書きコラボレーションサーバシステム(端末10A)の処理部305は、ステップS23の処理を実行しない。
次いで、手書きコラボレーションサーバシステム(端末10A)の処理部305は、新たな端末が手書き共有サービスにログインしたか否かを判定する(ステップS24)。
新たな端末が手書き共有サービスにログインしたならば(ステップS24のYES)、手書きコラボレーションサーバシステム(端末10A)の処理部305は、「新たにログインした参加者に見せない」というオプションが有効であるか否かを判定する(ステップS25)。
「新たにログインした参加者に見せない」というオプションが有効であるならば(ステップS25のYES)、手書きコラボレーションサーバシステム(端末10A)の処理部305は、ログアウトした端末以外の他の各端末のストロークデータ群のみを、新たにログインした端末に送信する(ステップS26)。ステップS26では、処理部305は、、ログアウトした端末以外の他の各端末の端末IDに関連付けられたストロークデータ群をストロークデータベース12から取得し、これらストロークデータ群を新たにログインした端末に送信する。
「新たにログインした参加者に見せない」というオプションが有効でないならば(ステップS25のNO)、手書きコラボレーションサーバシステム(端末10A)の処理部305は、全てのストロークデータを、つまりログアウトした端末のストロークデータ群と他の各端末のストロークデータ群とを新たにログインした端末に送信する(ステップS27)。
以上説明したように、本実施形態においては、ある端末のログアウト後に別の端末が新たなログインした場合には、ログアウトした端末以外の他の各端末のストロークデータ群が、新たにログインした端末に送信され、ログアウトした端末のストロークデータ群は、新たにログインした端末に送信されない。したがって、現在ログイン状態である各端末の過去の手書き情報を、新たにログインした端末の画面に表示することができ、さらに、既にログアウトした端末において手書き入力されたストローク群が、既にログアウトした端末のユーザが予期しない端末(つまり新たにログインした端末)において表示されるのを防止することができる。よって、既にログアウトした端末のユーザが意図しない範囲にまでこのユーザのストロークデータ群が拡散されてしまうことを防ぐことができるので、手書き情報を安全に共有することが可能となる。
なお、本実施形態の手書きコラボレーションサーバシステム(端末10A)の処理部305の各機能はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
このコンピュータプログラムがインストールされたコンピュータ内のCPUは上述のストローク非表示制御処理を含む配信処理を実行するように構成されたプロセッサとして機能し得る。また、このコンピュータプログラムがインストールされたコンピュータ内の無線通信デバイスは、各端末において手書き入力されるストロークデータを受信するように構成された受信部として機能し得、さらに、受信された各ストロークデータを、このストロークデータの送信元以外の他の各端末に送信する送信部として機能し得る。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。