以下、実施の形態について図面を参照して説明する。
図1は、一実施形態に係る電子機器の外観を示す斜視図である。この電子機器は、例えば、ペン(スタイラス)または指を使用した手書き入力を実行することが可能なペン・ベースの携帯型電子機器である。この電子機器は、タブレットコンピュータ、ノートブック型パーソナルコンピュータ、スマートフォン、PDA等として実現され得る。以下では、この電子機器がタブレットコンピュータ10として実現されている場合を想定する。タブレットコンピュータ10は、タブレットまたはスレートコンピュータとも称される携帯型電子機器である。タブレットコンピュータ10は、図1に示すように、本体11とタッチスクリーンディスプレイ17とを備える。タッチスクリーンディスプレイ17は、本体11の上面に重ね合わされるように取り付けられている。
本体11は、薄い箱形の筐体を有している。タッチスクリーンディスプレイ17には、フラットパネルディスプレイと、センサとが組み込まれている。センサは、ペンまたは指と接触されるフラットパネルディスプレイの画面上の位置(接触位置)を検出する。フラットパネルディスプレイは、例えば、液晶表示装置(LCD)であってもよい。センサとしては、例えば、静電容量方式のタッチパネル、電磁誘導方式のデジタイザなどを使用することができる。以下では、デジタイザとタッチパネルの2種類のセンサの双方がタッチスクリーンディスプレイ17に組み込まれている場合を想定する。
このタッチスクリーンディスプレイ17は、指と接触される画面上の位置を検出することができ、またペンと接触される画面上の位置を検出することもできる。ペン100は例えば電磁誘導ペン(デジタイザペン)であってもよい。ユーザは、ペン100を使用してタッチスクリーンディスプレイ17の画面上に文字等を書くことができる。この手書き入力操作中においては、画面上のペン100の動きの軌跡、つまり手書き入力されるストロークが、リアルタイムに画面上に描画される。ペン100が画面に接触されている間のペン100の動きの軌跡が1ストロークに相当する。手書き入力された文字または図形などに対応する多数のストロークの集合が手書き文書を構成する。
一つのストロークは、このストローク上の複数の点それぞれに対応する複数の点データの集合によって表現される。各点データは、対応する点の座標(X座標、Y座標)を示す。
さらに、タブレットコンピュータ10は、手書きコラボレーション機能を有している。この手書きコラボレーション機能は、手書き情報を複数の電子機器間で共有することが可能な手書き共有サービスを実行する。手書き共有サービスは、各電子機器のユーザが、共有される手書き情報を閲覧すること、他の電子機器のユーザとの協同作業によって手書き情報を編集することを可能にする。
この手書き共有サービスは、このサービスに参加(ログイン)している電子機器において手書き入力される手書きデータを、このサービスに参加(ログイン)している他の各電子機器にリアルタイムに配信する。これによって、これら電子機器の表示画面に表示される手書き文書の内容を同期させることができる。異なるユーザによって手書き入力されたストロークは、異なる形態(例えば、異なる色、異なるペン種、等)で表示されてもよい。
手書き共有サービスは、複数人のグループによって利用される。手書き共有サービスを利用する複数人のグループは、一人のグループオーナ(主催者)と、一人以上の参加者とを含んでも良い。
図2は、手書き共有サービスを利用する電子機器間の接続例を示す。
電子機器10Aは、ユーザAによって使用されるタブレットコンピュータである。電子機器10Bは、ユーザBによって使用されるタブレットコンピュータである。電子機器10Cは、ユーザCによって使用されるタブレットコンピュータである。これら電子機器10A、10B、10Cの各々は、本実施形態のタブレットコンピュータ10と同等の手書きコラボレーション機能を有している。
電子機器10A、10B、10Cは有線ネットワークまたは無線ネットワークを介して互いに接続される。以下では、電子機器10A、10B、10Cが無線ネットワークを介して互いに接続される場合を想定する。電子機器10A、10B、10Cを互いに無線接続するための方法としては、複数の機器を互いに無線接続することが可能な任意の無線接続規格を使用し得る。例えば、Bluetooth(登録商標)、またはWi−Fi Direct(登録商標)、等が使用されてもよい。
電子機器10A、10B、10Cのいずれか1つは、手書き共有サービスを管理するように構成されたサーバ(手書きコラボレーションサーバシステム)として機能することができる。グループオーナの電子機器が、サーバ(手書きコラボレーションサーバシステム)の役割をしてもよい。グループオーナは手書き共有サービスの主催者に相当する。
このサーバ(手書きコラボレーションサーバシステム)は、手書き共有サービスへの参加を要求している各電子機器が手書き共有サービス(グループ)に参加すること、つまり手書きコラボレーションサーバシステム(手書き共有サービス)にログインすること、を許可するか否かを決定してもよい。手書きコラボレーションサーバシステムから参加(ログイン)の許可を受け取った機器だけが、手書き共有サービスにログインすること、つまりこのグループに参加することが許可されても良い。
ここで、各機器が手書きコラボレーションサーバシステム(手書き共有サービス)へログインする方法としては、この機器自体のID(アカウント)を使用して手書き共有サービスにログインする方法を使用してもよい。あるいは、この機器を使用するユーザのID(アカウント)を使用して手書き共有サービスにログインする方法を使用してもよい。つまり、手書き共有サービスに対するログインおよびログアウトは、電子機器自体のID(アカウント)を使用したログインおよびログアウト、またはユーザのID(アカウント)を使用したログインおよびログアウトのどちらであってもよい。
いま、電子機器10A、10B、10Cが手書き共有サービスにログインしている状態である場合、つまり電子機器10A、10B、10Cが同じ手書き共有サービスに参加している場合を想定する。電子機器10A、10B、10Cの各々においては、共有される手書き情報を見るための手書き共有画面(カンバス)が表示される。手書き共有画面(カンバス)は電子機器10A、10B、10Cに共通の表示エリアとして使用される。この手書き共有画面(カンバス)は、電子機器10A、10B、10C間のビジュアル通信を可能にする。ビジュアル通信は、手書き情報、および他の様々な電子文書を機器間で交換することを可能にする。
ユーザA,B,Cの各々が自身の電子機器において手書き入力した手書きデータは、自身の電子機器の手書き共有画面(カンバス)に表示されるだけでなく、他の各ユーザの電子機器の手書き共有画面(カンバス)にもリアルタイムに反映される。この結果、ユーザA,B,Cの各々が手書き入力した情報(手書き文字、手書き図形等)をユーザA,B,C間で交換・共有することができる。
さらに、電子機器10A、10B、10Cは、会議資料のような同じコンテンツをカンバス上に表示することもできる。この場合、各電子機器において手書き入力される手書きデータは、このコンテンツ上に表示される。ユーザA,B,Cは、同じコンテンツを見ながら、このコンテンツ上に手書きされる手書き文字、手書き図形等をユーザA,B,C間で交換・共有することができる。
図3は、手書きコラボレーションサーバシステムと各電子機器との間のデータの流れを示す。
図3では、電子機器10Aが、手書きコラボレーションサーバシステムとして動作する場合が想定されている。つまり、電子機器10AのユーザAがグループオーナであり、電子機器10BのユーザBが参加者(参加者1)であり、電子機器10CのユーザCが別の参加者(参加者2)である。
手書きコラボレーションサーバシステム(電子機器10A)は、電子機器10Bにおいて手書き入力される手書きデータを電子機器10Bから受信する。また、手書きコラボレーションサーバシステム(電子機器10A)は、電子機器10Cにおいて手書き入力される手書きデータを電子機器10Cから受信する。
さらに、手書きコラボレーションサーバシステム(電子機器10A)は、電子機器10Aにおいて手書き入力される手書きデータと電子機器10Cから受信された手書きデータとを電子機器10Bに送信する。またさらに、手書きコラボレーションサーバシステム(電子機器10A)は、電子機器10Aにおいて手書きに入力される手書きデータと電子機器10Bから受信された手書きデータとを電子機器10Cに送信する。
したがって、電子機器10Aのディスプレイにおいては、グループオーナの手書きデータが表示されるだけでなく、参加者1の手書きデータ、さらには参加者2の手書きデータも表示される。
同様にして、電子機器10Bのディスプレイにおいても、参加者1の手書きデータが表示されるだけでなく、グループオーナの手書きデータ、さらには参加者2の手書きデータも表示される。
また同様に、電子機器10Cのディスプレイにおいても、参加者2の手書きデータが表示されるだけでなく、グループオーナの手書きデータ、さらには参加者1の手書きデータも表示される。
電子機器10Aは、各電子機器において手書き入力される手書きデータをデータベース12に格納する。このデータベース12は、共同作業によって作成および編集される手書き情報を管理するために使用される。
図4は、手書き共有画面(カンバス)の例を示している。各電子機器のカンバス30Aにおいては、手書き入力可能な透明のレイヤ(手書きレイヤ)30Bが設定される。この手書きレイヤ30B上に、各ユーザの手書きデータが表示される。
電子機器10Bに関しては、この電子機器10Bのカンバス30Aにおいては、カンバス30A上でペン100Bを使用して参加者1によって手書き入力される手書きデータ40が表示される。さらに、カンバス30A上においては、他の各電子機器において手書き入力される手書きデータが表示される。他の各電子機器において手書き入力される手書きデータには、参加者2の電子機器10Cにおいて手書き入力された手書きデータ42と、グループオーナの電子機器10Aにおいて手書き入力された手書きデータ44とが含まれる。
次に、図5を参照して、ストロークと点データについて説明する。
図5においては、「ABC」の手書き文字列が「A」、「B」、「C」の順番で手書きされた場合が想定されている。
手書き文字「A」は、ペン100などを使用して手書きされる2つのストローク(「∧」形状の軌跡、「−」形状の軌跡)によって表現される。
ペン100が移動している間に、「∧」形状のペン100の軌跡がリアルタイムにサンプリングされる。これによって、「∧」形状のペン100の軌跡上の複数の点それぞれに対応する複数の点データ(複数の座標データ)PD11、PD12、…PD1mが次々と得られる。例えば、画面上のペン100の位置が所定量移動する度に、新たな位置を示す点データが得られてもよい。図5においては、図示の簡単化のために点データの密度が粗く描かれているが、実際には、より高い密度で複数の点データが得られる。これら点データPD11、PD12、…PD1mは、「∧」形状のペン100の軌跡を画面上に描画するために使用される。ペン100の動きに追従するように、「∧」形状のペン100の軌跡がリアルタイムに画面上に描画される。
同様に、「−」形状のペン100の軌跡も、ペン100が移動している間に、リアルタイムにサンプリングされる。これによって「−」形状のペン100の軌跡上の複数の点それぞれに対応する複数の点データ(複数の座標データ)PD21、PD22、…PD2nが次々と得られる。
手書き文字「B」は、ペン100などを使用して手書きされた2つのストロークによって表現される。手書き文字「C」は、ペン100などを使用して手書きされた1つのストロークによって表現される。
次に、図6を参照して、手書き情報共有サービスのためのデータの流れについて説明する。
図6では、グループオーナ(電子機器10A)、参加者1(電子機器10B)、参加者2(電子機器10C)の3人のグループで議論を行う場合が想定されている。グループオーナ、参加者1、参加者2は、自身の電子機器10A、10B、10Cを持って会議室に集合しても良い。そして、グループオーナ、参加者1、参加者2は、自身の電子機器のカンバスを見ながら、あるいはカンバス上に手書きしながら、議論を行うことができる。
(1)3人のグループで手書きによる議論
参加者1によって電子機器10Bのカンバス上に手書き入力された手書きデータ(手書き文字、手書き図形等)は、電子機器10Aに送信される。さらに、参加者1の手書きデータは、電子機器10Aによって、電子機器10Cに転送される。よって、参加者1の手書きデータは、電子機器10B、電子機器10A、電子機器10Cの各々のカンバス上に表示される。
同様にして、参加者2によって電子機器10Cのカンバス上に手書き入力された手書きデータも、電子機器10Aに送信され、さらに、電子機器10Aによって電子機器10Bに転送される。よって、参加者2の手書きデータは、電子機器10B、電子機器10A、電子機器10Cの各々のカンバス上に表示される。
さらに、グループオーナによって電子機器10Aのカンバス上に手書き入力された手書きデータは、電子機器10Bおよび電子機器10Cに送信される。よって、グループオーナの手書き情報も、電子機器10A、電子機器10B、電子機器10Cの各々のカンバス上に表示される。
このようにして、3人のグループは、これら3人の手書きが反映されるカンバスの内容を見ながら、議論(会議)を行うことができる。
(2)議論中のグループに参加依頼
手書き情報共有サービスが開始された後に、別のユーザ(参加者3)の電子機器10Dが、この手書き情報共有サービスへの参加(ログイン)を要求するかもしれない。このような状況は、例えば、参加者3が後から会議室に到着して、既に開始されている議論に加わるような場合に発生し得る。
(3)この参加(ログイン)の要求を受信したグループオーナ(電子機器10A)は、参加者3がこの手書き情報共有サービスのグループに参加(ログイン)することを許可することができる。この場合、電子機器10Aは、現在の手書き情報の内容(これまでの議論の内容)を電子機器10Dに送信してもよい。
(4)この結果、電子機器10Dは、現在の手書き情報の内容を電子機器10Dのカンバス上に描画することができる。
(5)しかし、現在の手書き情報の内容をみただけでは、参加者3は、これまでの議論の経過、つまりどの様な経緯を辿って現在の手書き情報が構築されたかを、把握できない可能性がある。
そこで、本実施形態の手書きコラボレーション機能は、手書き情報共有サービスに途中から参加した参加者に、現在の手書き情報がどのような経緯を辿って構築されたかを分かりやすく提示するための新たな機能を備えている。
以下、この新たな機能の概要について説明する。
ある電子機器において手書き入力された手書きデータを別の電子機器に送信するための方法としては、一つのストロークが手書き入力される度にそのストロークのデータ(ストロークデータ)全体を一度に送信するという方法を使用することができる。
しかし、この場合には、ストロークの手書き入力が完了するまでは、つまりペンが画面からリフトアップされることによってペンと画面との接触が解除されるまでは、ストロークデータは送信されない。したがって、例えば、ある電子機器において3つのストロークが順番に手書き入力された場合には、まず、最初のストロークの手書き入力が完了した後に、その最初のストローク全体の形状が別の電子機器のカンバス上に一度に表示される。そして、2番目のストロークの手書き入力が完了した後に、その2番目のストローク全体の形状が別の電子機器のカンバス上に一度に表示される。そして、3番目のストロークの手書き入力が完了した後に、その3番目のストローク全体の形状が別の電子機器のカンバス上に一度に表示される。
このように、別の電子機器のカンバス上においては、個々のストロークが書かれる様子(線が延びていく様子)は再現されず、手書き入力が完了した各ストロークの形状だけが一度に表示される。
一方、ストロークの手書き入力が実際に行われている電子機器においては、そのストロークが書かれる様子(線が延びていく様子)がリアルタイムに表示される。
本実施形態では、どの電子機器においてストロークが手書き入力された場合でも、そのストロークが書かれる様子を他の全ての電子機器のカンバス上において再現できるようにするために、手書きデータは、ストローク単位では無く、点データ単位で送信される。
手書きコラボレーションサーバシステム(電子機器10A)は、手書き情報共有サービスにログインしている電子機器(例えば、電子機器10B)において手書き入力されるストロークに対応する複数の点データを、電子機器10Bから受信する。これら複数の点データは、このストロークが手書き入力されている間に、電子機器10Bから手書きコラボレーションサーバシステム(電子機器10A)に時系列順に順次送信される。つまり、ストロークに対応する複数の点データが入力された順に、これら複数の点データが電子機器10Bから手書きコラボレーションサーバシステム(電子機器10A)に1つずつ転送される。
手書きコラボレーションサーバシステム(電子機器10A)は、これら複数の点データを、これら複数の点データの受信時刻をそれぞれ示すタイムスタンプと共に、データベース12に格納するための処理を実行する。各点データに対応するタイムスタンプは、その点データの入力時刻を示してもよい。この場合、電子機器10Bは、各点データをその点データが入力された入力時刻を示す時間情報と共に手書きコラボレーションサーバシステム(電子機器10A)に送信してもよい。
そして、手書きコラボレーションサーバシステム(電子機器10A)は、手書き情報共有サービスにログインしている別の電子機器(例えば、電子機器10C)に、これら複数の点データを時系列順に順次送信する。この場合、手書きコラボレーションサーバシステム(電子機器10A)は、一つの点データが電子機器10Aから受信される度に、この受信された点データを電子機器10Cに送信するという処理を実行してもよい。
電子機器10Cは、電子機器10Cの画面上で手書き入力が行われた場合と同様に、複数の点データを電子機器10Aから順番に受信することができる。電子機器10Cは、これら受信された複数の点データに基づいて、電子機器10Aにおいて手書き入力されたストロークに対応する軌跡を電子機器10Cのカンバス上にリアルタイムに描画することができる。このため、電子機器10Cのカンバス上においても、電子機器10Aにおいて手書き入力されたストロークが書かれる様子(線が延びていく様子)を再現することができる。
電子機器10Dが手書き情報共有サービスに途中からログインした場合、手書きコラボレーションサーバシステム(電子機器10A)は、電子機器10Dのログイン前にデータベース12に格納された全ての点データ(複数の第1点データ)を、これら複数の第1点データにそれぞれ対応するタイムスタンプに基づくタイミングで、電子機器10Dに時系列順に順次送信するための処理を実行する。
これにより、既に書かれた多数のストロークが、それらストロークの各々が書かれる様子がリプレイされるかのように電子機器10Dのカンバス上に表示される。よって、電子機器10Dのユーザ(途中参加者)は、どの様な経緯を辿って現在の手書き情報が構築されたかを、容易に把握することができる。
ある一つのストロークに関しては、電子機器10Dは、電子機器10Dの画面上で手書き入力が行われた場合と同様に、このストロークに対応する複数の点データを順番に受信することができる。電子機器10Dは、これら受信された複数の点データに基づいて、電子機器10Aにおいて手書き入力されたストロークに対応する軌跡を電子機器10Dのカンバス上にリアルタイムに描画することができる。よって、各ストロークが書かれる様子(線が延びていく様子)を再現することができる。
さらに、各ストロークに対応する複数の点データは、これら点データが書かれたタイミングに対応する送信タイミングで、電子機器10Dに順次送信される。このため、書かれたストローク(線)の速度も再現することが可能となる。
図7は、電子機器間の手書きデータの流れを示している。
図7では、図6と同様に、グループオーナ(電子機器10A)、参加者1(電子機器10B)、参加者2(電子機器10C)の3人のグループで議論を行う場合が想定されている。
(1)参加者1の電子機器10Bにおいてストロークが手書き入力される。このストロークは電子機器10Bのカンバス上にリアルタイムに表示される。つまり、電子機器10Bのカンバス上のペンの動きに追従するようにストローク(線)が描画される。
(2)上述したように、ストロークは、その始点から終点までの複数の点データ(複数の座標)の集合として表現される。
(3)このストロークのデータ(ストロークデータ)は、点データ単位でグループオーナ(電子機器10A)に送信される。この様子を図8に示す。図8に示されているように、電子機器10Bにおいては、ペン100Bによってストロークが手書き入力されている間に、このストロークに対応する複数の点データPD1、PD2、…、PD8が次々と得られる。そして、これら点データPD1、PD2、…、PD8はグループオーナ(電子機器10A)に一つずつ送信される。つまり、これら点データPD1、PD2、…、PD8はグループオーナ(電子機器10A)に時系列順に順次送信される。例えば、点データPD1が得られた時には、点データPD1に基づく描画処理が電子機器10Bによって実行され、さらに点データPD1をグループオーナ(電子機器10A)に送信する処理も電子機器10Bによって実行される。そして、次の点データPD2が得られた時には、点データPD2に基づく描画処理が電子機器10Bによって実行され、さらに点データPD2をグループオーナ(電子機器10A)に送信する処理も電子機器10Bによって実行される。
このようにして、ストロークが手書き入力されている間に、多数の点データが連続的にグループオーナ(電子機器10A)に送信される。各点データは、ストロークID、ユーザID(またはデバイスID)、点種別(始点/中点/終点)、ペン属性(ペン種、色、等)等と一緒に、グループオーナ(電子機器10A)に送信されてもよい。ストロークIDは、手書き入力されたストロークを識別可能な情報である。各電子機器は、乱数などを使用して複数桁のユニークIDを生成し、このユニークIDの値を、最初に手書き入力されたストロークを識別するためのストロークIDとして使用しても良い。2番目以降に手書きされたストロークについては、ユニークIDをインクリメントすることによって得られる値が、対応するストロークIDとして使用されてもよい良い。同一のストロークに対応する点データの各々には、同じストロークIDが与えられる。
(4)グループオーナ(電子機器10A)は、電子機器10Bから時系列順に順次送信される複数の点データを受信する。そして、グループオーナ(電子機器10A)は、これら複数の点データを、これら複数の点データの受信時刻(受信タイミング)または入力時刻(入力タイミング)をそれぞれ示すタイムスタンプと共に、データベース12に格納する。各タイムスタンプは、対応する点データがグループオーナ(電子機器10A)によって受信された時刻を示してもよいし、同一のストローク内の先頭の点データが受信された時点から対応する点データが受信される時点までの相対時間を示してもよい。あるいは、各タイムスタンプは、対応する点データが入力された時刻を示してもよいし、同一のストローク内の先頭の点データが入力された時点から対応する点データが入力される時点までの相対時間を示してもよい。
(5)グループオーナ(電子機器10A)は、電子機器10Bから受信された複数の点データを電子機器10Cに送信する。
この場合、これら複数の点データは、これら複数の点データに対応するタイムスタンプに基づくタイミングで、電子機器10Cに時系列順に順次送信されてもよい。これにより、複数の点データが受信された間隔と同じ間隔で、これら複数の点データを電子機器10Cに送信することができる。
送信される各点データには、ストロークID、ユーザID(またはデバイスID)、点種別(始点/中点/終点)、ペン属性(ペン種、色、等)等が付加される。
あるいは、グループオーナ(電子機器10A)が電子機器10Bから一つの点データを受信した時に、グループオーナ(電子機器10A)が、その点データを電子機器10Cに即座に送信しても良い。
さらに、グループオーナ(電子機器10A)は、電子機器10Bからの複数の点データに基づいて、電子機器10Aにおいて手書き入力されたストロークに対応する軌跡をグループオーナのカンバス上にリアルタイムに描画することもできる。
(6)電子機器10Dが手書き情報共有サービスに途中からログインした場合、グループオーナ(電子機器10A)は、これまでにデータベース12に格納された全ての点データを電子機器10Dに送信する。この場合、これら全ての点データは、これら全てのデータにそれぞれ対応するタイムスタンプに基づくタイミングで、電子機器10Dに時系列順に順次送信される。送信される各点データには、ストロークID、ユーザID(またはデバイスID)、点種別(始点/中点/終点)、ペン属性(ペン種、色、等)等が付加される。
これらの点データは、これら点データが受信されたレート(速度)よりも速いレート(速度)で、電子機器10Dに送信されても良い。これら点データが受信されたレート(速度)は、これら点データに対応するタイムスタンプによって得ることができる。ある基準時間当たりに受信された点データの数が多い密の期間の受信レートは高く、基準時間当たりに受信された点データの数が少ない粗の期間の受信レートは低い。
複数の点データを受信レートよりも速い送信レートで送信するための方法としては、複数の点データを、これら複数の点データ間の受信間隔よりも短い送信間隔で、送信するという方法を使用しても良い。これら複数の点データ間の受信間隔は、これら点データに対応するタイムスタンプによって容易に得ることができる。
例えば、これら点データ間の受信間隔の1/2の送信間隔でこれら点データを送信することにより、これら点データを、これら点データの受信レートの2倍の送信レートで、電子機器10Dに送信することができる。
図7の説明では、電子機器10Bにおいてストロークが手書き入力された場合に実行される処理について説明したが、電子機器10Cまたはグループオーナ(電子機器10A)においてストロークが手書き入力された場合も、同様の処理が実行される。
例えば、電子機器10Cにおいてストロークが手書き入力された場合には、このストロークに対応する複数の点データが点データ単位でグループオーナ(電子機器10A)に送信される。つまり、このストロークが手書き入力されている間に、これら複数の点データは時系列順に順次グループオーナ(電子機器10A)に送信される。そして、これら複数の点データがタイムスタンプと共にデータベース12に格納される。そして、これら複数の点データが点データ単位で電子機器10Bに送信される。
グループオーナ(電子機器10A)においてストロークが手書き入力された場合には、このストロークに対応する複数の点データがタイムスタンプと共にデータベース12に格納され、さらに、これら複数の点データが点データ単位で電子機器10Bおよび電子機器10Cに送信される。
次に、図9〜図11を参照して、各点データをデータベース12に格納する処理について説明する。
図9は、電子機器10Bのカンバスに表示される手書き情報の例を示す。図9では、ストローク50、ストローク52、ストローク53が、グループオーナ、参加者1、参加者2の3人のグループで共有されている場合が想定されている。
ストローク50は参加者1によって電子機器10Bにおいて手書き入力されたストロークである。ストローク52は参加者2によって電子機器10Cにおいて手書き入力されたストロークである。ストローク54はグループオーナによって電子機器10Aにおいて手書き入力されたストロークである。
図10はデータベース12に格納される手書きデータの例を示す。データベース12においては、ストローク50に対応する各点データがタイムスタンプと共に格納される。またストローク52に対応する各点データもタイムスタンプと共に格納され、さらに、ストローク54に対応する各点データもタイムスタンプと共に格納される。
図11はデータベース12のデータ構造を示す。
データベース12においては、例えば、ストローク管理テーブル121と点管理テーブル122とが構築される。
ストローク管理テーブル121は、複数のストロークに対応する複数の行(レコード)を含む。各レコードには、「ストロークID」フィールド、「始点時刻」フィールド、「ユーザID」フィールド、「ペン種」フィールド、「カラー」フィールド、等が定義されている。
点管理テーブル122は、複数の点データに対応する複数の行(レコード)を含む。各レコードには、「ストロークID」フィールド、「時刻」フィールド、「点種別」フィールド、「座標x」フィールド、「座標y」フィールド、等が定義されている。
電子機器10Aがあるストロークの始点に対応する点データを受信した時、電子機器10Aは、ストローク管理テーブル121に1レコードを追加し、その追加されたレコードに、ストロークIDを示す値、始点時刻を示す値、ユーザIDを示す値、ペン種を示す値、カラーを示す値を格納する。上述したように、受信される点データには、ストロークID、ユーザID、ペン種、カラーを示す追加情報が付加されている。よって、電子機器10Aは、この追加情報を使用して、ストロークIDを示す値、ユーザIDを示す値、ペン種を示す値、カラーを示す値を、レコードに格納することができる。始点時刻を示す値は、ストロークの始点に対応する点データの受信時刻(受信タイミング)を示すタイムスタンプである。このタイムスタンプとしては、点データが受信されたタイミングを識別可能な任意の値を使用することができる。例えば、このタイムスタンプは絶対時間であってもよいし、ある基準時間に対する相対時間であってもよい。
あるいは、始点時刻を示す値は、ストロークの始点に対応する点データの入力時刻を示すタイムスタンプであってもよい。このタイムスタンプとしては、点データが入力されたタイミングを識別可能な任意の値を使用することができる。
電子機器10Aがあるストロークの始点に対応する点データを受信した時、さらに、電子機器10Aは、点管理テーブル122に1レコードを追加し、その追加されたレコードに、ストロークIDを示す値、時刻(入力時刻または受信時刻)を示す値、点種別を示す値、座標xを示す値、座標yを示す値を格納する。上述したように、点データは座標xおよび座標yを示す情報だけでなく、ストロークID、点種別、を示す追加情報も含む。したがって、電子機器10Aは、この追加情報を使用して、ストロークIDを示す値、点種別を示す値をレコードに格納することができる。時刻を示す値は、この点データの入力時刻または受信時刻を示すタイムスタンプである。
電子機器10Aがあるストロークの2番目以降のある点データを受信した時、電子機器10Aは、点管理テーブル122に1レコードを追加して、その追加されたレコードに、ストロークIDを示す値、時刻(入力時刻または受信時刻)を示す値、点種別を示す値、座標xを示す値、座標yを示す値を格納する処理を実行する。
図11のデータベース12は、手書き共有サービスにログインしている全ての電子機器から参照可能な共有データであってもよい。この場合、各電子機器は、データベース12の内容に基づいて、カンバスに表示されている現在の手書き情報を、任意の時点の手書き情報にロールバックすることができる。
あるいは、図11のデータベース12の内容が各参加者の電子機器のローカルストレージにコピーされても良い。この場合でも、上述のロールバックを実現できる。
図12はデータベース12に格納された複数の点データが2倍速でリプレイされる様子を示す。
ストローク50に対応する複数の点データは、これら複数の点データ間の受信間隔の1/2の時間間隔で、電子機器10Aから電子機器10Dに送信される。例えば、最初の点データと2番目の点データとの間の受信間隔がT1であり、2番目の点データと3番目の点データとの間の受信間隔がT2である場合を想定する。この場合、最初の点データが電子機器10Dに送信されてからT1/2の時間間隔だけ経過した時に、2番目の点データが電子機器10Dに送信される。そして、2番目の点データが電子機器10Dに送信されてからT2/2の時間間隔だけ経過した時に、3番目の点データが電子機器10Dに送信される。
これにより、電子機器10Dのカンバス上においては、ストローク50は2倍速でリプレイされる。同様に、ストローク52に対応する複数の点データも、これら複数の点データの受信間隔の1/2の時間間隔で、電子機器10Aから電子機器10Dに送信される。これにより、電子機器10Dのカンバス上においては、ストローク52は2倍速でリプレイされる。よって、途中からサービスにログインした参加者3は、これまでの議論の経過、つまりどの様な経緯を辿って現在の手書き情報が構築されたかを、短い時間で把握することができる。
受信レートに対する送信レート(リプレイ速度)の倍率は、2倍に限らず、例えば、1倍、1.5倍、3倍、4倍、…30倍のような、任意の倍率に可変設定可能である。受信レートに対する送信レートの倍率を可変設定可能とするために、ユーザの操作に応じてリプレイ速度を増減可能なユーザインタフェースを使用しても良い。あるいは、多くの点データが存在する密の期間と点データの数が少ない粗の期間との間で、受信レートに対する送信レートの倍率を変化させても良い。この場合、粗の期間では受信レートに対する送信レートの倍率を1に近い低い倍率に設定し、密の期間では受信レートに対する送信レートの倍率を1よりも高い倍率に設定してもよい。
あるいは、受信レートに対する送信レート(リプレイ速度)の倍率は、手書き共有サービスが開始される時点から電子機器10D(途中参加者)がログインする時点までの期間(遅れ期間)の長さに基づいて決定してもよい。
図13は受信レートに対する送信レートの倍率を決定する処理を示す。
図13において、t0は手書き共有サービスが開始される時点を表し、t1は電子機器10D(途中参加者)がログインする時点を表している。ここでは、リプレイ時間Rtが固定である場合を想定する。リプレイ時間Rtは、遅れ期間Dtの間にデータベース12に蓄積された全ての点データをリプレイするための時間間隔である。リプレイ時間Rtは、例えば、30秒、または1分に設定されても良い。
受信レート(オリジナル速度)に対する送信レートの倍率Nは、
N=Dt/Rt
によって与えられる。
なお、リプレイ時間Rtは必ずしも固定でなくてもよい。この場合、例えば、遅れ期間Dtがしきい時間未満であれば、予め決められた第1倍速(例えば2倍速)でリプレイが実行されても良い。一方、遅れ期間Dtがしきい時間以上であれば、予め決められた第2倍速(例えば10倍速)でリプレイが実行されても良い。また、一つ前の点データの受信時刻(または入力時刻)から次の点データの受信時刻(または入力時刻)までの時間間隔がある基準時間を超えている場合には、この時間間隔だけ待つこと無く、一つ前の点データを送信した直後に、次の点データを送信してもよい。
図14は、タブレットコンピュータ10のシステム構成を示す。
タブレットコンピュータ10は、図14に示されるように、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は、無線通信を実行するように構成されたデバイスである。EC108は、電力管理のためのエンベデッドコントローラを含むワンチップマイクロコンピュータである。EC108は、ユーザによるパワーボタンの操作に応じて本タブレットコンピュータ10を電源オンまたは電源オフする機能を有している。
次に、図15を参照して、手書き共有アプリケーションプログラム202の構成について説明する。
手書き共有アプリケーションプログラム202は、手書き情報を共有するための機能実行モジュールとして、手書き入力インタフェース300、表示処理部301、処理部302、送信制御部303、および受信制御部304等を含む。
手書き共有アプリケーションプログラム202は、タッチスクリーンディスプレイ17を用いて入力されるストロークデータを使用することによって、手書きページデータの作成、表示、編集等を行う。タッチスクリーンディスプレイ17のデジタイザ17Cは、「タッチ」、「移動(スライド)」、「リリース」等のイベントの発生を検出するように構成されている。「タッチ」は、画面上にペンが接触したことを示すイベントである。「移動(スライド)」は、画面上にペンが接触されている間に接触位置が移動されたことを示すイベントである。「リリース」は、画面からペンが離されたことを示すイベントである。
手書き入力インタフェース300は、タッチスクリーンディスプレイ17のデジタイザ17Cと協同して手書き入力を行うように構成されたインタフェースである。手書き入力インタフェース300は、タッチスクリーンディスプレイ17のデジタイザ17Cから「タッチ」または「移動(スライド)」のイベントを受信し、これによって手書き入力操作を検出する。「タッチ」イベントには、接触位置の座標が含まれている。「移動(スライド)」イベントにも、移動先の接触位置の座標が含まれている。したがって、手書き入力インタフェース300は、タッチスクリーンディスプレイ17から、接触位置の動きの軌跡に対応する座標列(複数の点データ)を受信することができる。
表示処理部301は、手書き入力インタフェース300からの座標列に基づいて、ペン100を使用した手書き入力操作によって手書き入力される各ストロークをLCD17Aの画面上に表示する。さらに、表示処理部301は、処理部302の制御の下、他の電子機器から受信された座標列に基づいて、各ストロークをLCD17Aの画面上に表示する。
送信制御部303は、処理部302の制御の下、無線通信デバイス107を使用して複数の点データを時系列順に順次他の電子機器に送信するための処理を実行する。受信制御部304は、処理部302の制御の下、無線通信デバイス107を使用して他の電子機器から複数の点データを時系列順に順次受信するための処理を実行する。
処理部302は、複数の電子機器間で手書き情報を共有するための処理を実行する。この処理部302は、メンバ管理部311、保存処理部312、およびリプレイ処理部313等を含む。
メンバ管理部311は、手書き共有サービスにログインしているメンバ(電子機器)それぞれを管理する。メンバ管理部311は、手書き共有サービスへのログインを要求している電子機器に、ログインすることを許可するか否かを決定することができる。メンバ管理部311から許可を受け取った電子機器は、手書き共有サービスにログインすることが許可され、これによって手書き共有サービスにログインしている他の各電子機器と接続される。メンバ管理部311の機能は、手書きコラボレーションサーバシステムとして動作する電子機器(グループオーナの電子機器)においてのみ実行されても良い。
保存処理部312は、他の電子機器から受信される各点データを、タイムスタンプと共に、データベース12に保存するための処理を実行する。リプレイ処理部313は、第3の電子機器が前記サービスに途中からログインした場合、上述のリプレイのための処理を実行する。つまり、ある電子機器が手書き共有サービスに途中からログインした場合、リプレイ処理部313は、この電子機器のログイン前にデータベース12に格納された複数の点データを、これら点データにそれぞれ対応するタイムスタンプに基づくタイミングで、この電子機器に時系列順に順次送信するための処理を実行する。この場合、これら点データの送信はN倍速(Nは1以上)で実行することができる。
参加者(クライアント)として動作する電子機器においては、リプレイ処理部313は、グループオーナの電子機器から時系列順に順次送信される点データを受信しながらそれら点データを表示する処理を実行する。
図16のフローチャートは、本実施形態の手書きデータ配信処理の手順を示す。
手書きコラボレーションサーバシステム(電子機器10A)の処理部302は、ログイン状態である複数の参加者の電子機器のいずれかにおいて手書き入力されるストロークに対応する複数の点データを、この電子機器から受信する(ブロックB11)。上述したように、これら複数の点データは、この電子機器から手書きコラボレーションサーバシステム(電子機器10A)に時系列順に順次送信される。
処理部302は、受信された各点データをこの点データの入力時刻または受信時刻を示すタイムスタンプとともにデータベース12に格納するための点データ保存処理を実行する(ブロックB12)。
処理部302は、受信された複数の点データを、他の各参加者の電子機器に送信する(ブロックB13)。ブロックB13では、複数の点データは、他の各参加者の電子機器に、時系列順に順次送信される。
図17のフローチャートは、図16のブロックB12で行われる点データ保存処理の手順を示す。
処理部302が点データを受信した時(ブロックB21のYES)、処理部302は、点データに付加されている点種別に基づいて、この点データがストロークの始点の点データであるか否かを判定する(ブロックB22)。
この点データがストロークの始点の点データであるならば(ブロックB22のYES)、処理部302は、ストローク管理テーブル121に1レコードを追加し、その追加されたレコードに、ストロークIDを示す値、始点時刻を示す値、ユーザIDを示す値、ペン種を示す値、カラーを示す値を格納する(ブロックB23)。そして、処理部302は、点管理テーブル122に1レコードを追加し、その追加されたレコードに、ストロークIDを示す値、時刻を示す値、点種別を示す値、座標xを示す値、座標yを示す値を格納する(ブロックB24)。そして、処理部302は、受信された点データを、他の各参加者の電子機器に送信する(ブロックB25)。
受信された点データがストロークの中点または終点の点データであるならば(ブロックB22のYES)、処理部302は、ブロックB23の処理をスキップして、ブロックB24、ブロックB25の処理のみを実行する。
図18のフローチャートは、リプレイ処理の手順を示す。
新たな参加者が手書き共有サービスに途中から参加(ログイン)したならば(ブロックB31のYES)、処理部302は、新たな参加者の参加の前にデータベース12に格納された全ての点データを新たな参加者の電子機器に送信するための点データ送信処理を実行する(ブロックB32)。ブロックB32では、これら全ての点データは、対応するタイムスタンプによって指定されるタイミングで、新たな参加者の電子機器に時系列順に順次送信される。
ブロックB33で全ての点データの送信が完了したと判定されるまで、点データ送信処理は繰り返し実行される。
図19のフローチャートは、点データ送信処理の手順を示す。
ここでは、遅れ期間Dtの長さに基づいて、リプレイをN倍速で実行する場合を想定する。
まず、処理部302は、オリジナル速度の何倍の速度でリプレイすべきかを決定する(ブロックB41)。ブロックB41では、処理部302は、遅れ期間Dtの長さに基づいて、受信レート(オリジナル速度)に対する送信レートの倍率Nを算出する。固定のリプレイ時間Rtを使用する場合においては、倍率Nは、
N=Dt/Rt
によって与えられる。
処理部302は、最初の点データを、新たな参加者の電子機器に送信する(ブロックB42)。次に、処理部302は、最初の点データの受信時刻(または入力時刻)と次の点データの受信時刻(または入力時刻)との間の時間間隔と、倍率Nとに基づいて、次の点データが送信されるべき送信タイミングを決定する(ブロックB43)。処理部302は、次の点データの送信タイミングが到来したか否かを判定する(ブロックB44)。次の点データの送信タイミングが到来しならば(ブロックB44のYES)、処理部302は、最初の点データを、新たな参加者の電子機器に送信する(ブロックB45)。そして、処理部302は、全ての点データの送信が完了したか否かを判定する(ブロックB46)。
全ての点データの送信が完了するまで、送信対象の次の点データを更新しながら、ブロックB43〜B45の処理が繰り返される。
図20のフローチャートは、参加者の電子機器によって実行される処理の手順を示す。
参加者の電子機器の処理部302は、手書きコラボレーションサーバシステムにログイン要求(参加要求)を送信して手書き共有サービスにログインする(ステップB51)。データベース12に既に蓄積されている点データが存在する場合には(ブロックB52のYES)、処理部302は、リプレイ処理モードに遷移する。
リプレイ処理モードである間は、処理部302は、参加者の電子機器におけるストロークの手書き入力を禁止する。
リプレイ処理モードでは、処理部302は、手書きコラボレーションサーバシステムから送信される点データを受信する。手書きコラボレーションサーバシステムから点データが受信された時(ブロックB53のYES)、処理部302は、受信された点データに基づいて謬画処理を実行する(ブロックB54)。既に蓄積されている全ての点データの受信及び描画が完了するまでは(ブロックB54のNO)、ブロックB53、B54の処理が繰り返される。
既に蓄積されている全ての点データの受信及び描画が完了すると(ブロックB54のYES)、処理部302は、リプレイ処理モードを抜け、手書き共有モードに遷移する。手書き共有モードでは、処理部302は、参加者の電子機器におけるストロークの手書き入力を許可する。
手書き共有モードにおいて、ユーザ(参加者)によってストロークの手書き入力が開始されたならば(ブロックB56のYES)、処理部302は、このストロークに対応する複数の点データに基づいてストロークを描画する処理を実行し(ブロックB57)、さらに、複数の点データを時系列順に順次手書きコラボレーションサーバシステムに送信する処理を実行する(ブロックB58)。
手書き共有モードにおいて、手書きコラボレーションサーバシステムから点データが受信されたならば(ブロックB59のYES)、処理部302は、受信された点データに基づいて描画処理を実行する(ブロックB60)。
次に、図21〜図23を参照して、ロールバック処理を説明する。
図21に示されているように、カンバス上には、共有されている現在の手書き情報の内容が表示される。ここでは、手書きデータ401、手書きデータ402、手書きデータ403、手書きデータ404がカンバス上に表示されている。これら各手書きデータは、手書き共有サービスにログインしているいずれかの電子機器において手書き入力された1以上のストロークから構成される。
ユーザはカンバス上にメニューを表示することもできる。このメニューは、「タイムライン」ボタンを含む。「タイムライン」ボタンはロールバック処理を起動するためのソフトウェアボタンである。
「タイムライン」ボタンがユーザによってタップされると、図22に示すように、タイムライン501と、タイムライン501上を移動可能なスライダ502、再生ボタン504等がカンバス上に表示される。
タイムライン501の左端は、手書き共有サービスが開始された時点に対応する。タイムライン501の右端は現時点に対応する。スライダ502のデフォルト位置はタイムライン501の右端である。
図23に示されているように、スライダ502がタイムライン501の例えば中央位置にユーザによって移動されると、カンバス上の手書き情報の内容は、中央位置に対応する時時点の手書き情報に更新される。
中央位置に対応する時時点よりも後に手書きされたデータはカンバスから消える。ここでは、手書きデータ403、手書きデータ404がカンバス上から消えている。
再生ボタン504がユーザによってタップされると、スライダ502によって指定される時点から現時点までの手書き情報がリプレイされる開始される。
なお、以上の説明では、手書き共有サービスにログインしている複数の電子機器の1つが手書きコラボレーションサーバシステムとして機能する場合を例示したが、手書きコラボレーションサーバシステムは、これら電子機器以外の1以上のサーバによって実現されても良い。
以上説明したように、本実施形態においては、手書きデータは、ストロークデータ単位では無く、点データ単位で送信される。よって、どの電子機器においてストロークが手書き入力された場合でも、そのストロークが書かれる様子を他の全ての電子機器のカンバス上において再現することができる。よって、よりリアルタイムに手書き情報の共有が可能となる。
さらに、電子機器10Dが手書き情報共有サービスに途中からログインした場合、手書きコラボレーションサーバシステム(電子機器10A)は、電子機器10Dのログイン前にデータベース12に格納された全ての点データ(複数の第1点データ)を、これら複数の第1点データにそれぞれ対応するタイムスタンプに基づくタイミングで、電子機器10Dに時系列順に順次送信する。
これにより、既に書かれた多数のストロークが、それらストロークが書かれる様子がリプレイされるかのように電子機器10Dのカンバス上に表示される。よって、電子機器10Dのユーザ(途中参加者)は、どの様な経緯を辿って現在の手書き情報が構築されたかを、容易に把握することができる。
また、会議は数日に跨がって実行される場合もある。この場合、翌日の会議の冒頭で、前日の会議終了時までの手書き情報を格納しているデータベース12を使用することによって、前日の会議において手書き情報が構築された過程をリプレイしてもよい。
データベース12の内容は、会議終了時などに、各電子機器のローカルストレージに格納しても良い。
なお、本実施形態の手書きコラボレーションサーバシステム(電子機器10A)の機能は1以上のプロセッサによって実現できる。
また、本実施形態の手書きコラボレーションサーバシステム(電子機器10A)の機能はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。