以下、本発明を実施するための形態例について、添付図面を参照して説明する。本明細書及び図面において、実質的に同一の機能又は構成を有する構成要素については、同一の符号を付することにより重複する説明を省略する。
[第1の実施の形態例]
図1は、画面共有システム1の構成例を示す概要図である。
画面共有システム1は、ネットワークNに接続された3台の電子黒板2A〜2C(画面共有装置の一例)を備える。この画面共有システム1では、複数の拠点に設置された電子黒板2A〜2Cで画面に入力されたオブジェクトを共有して表示することが可能である。例えば、電子黒板2Aは拠点Aに設置され、電子黒板2Bは拠点Bに設置され、電子黒板2Cは拠点Cに設置される。拠点A〜Cは、それぞれ離れた位置にある会議室、事務室等である。そして、電子黒板2A〜2Cは、ネットワークNを通じてお互いにデータを送受信することが可能である。なお、以下の説明において、電子黒板2A〜2Cを区別しない場合は、「電子黒板2」と記載する。
電子黒板2A〜2Cは、主従関係を有する。例えば、拠点Aにいるユーザーが会議の主催者である場合、電子黒板2Aがマスターとして扱われ、電子黒板2B,2Cがスレーブとして扱われる。マスターはオブジェクトを管理する役割を持つ。そして、マスターは、スレーブから送信される入力情報をネットワークNを通じて受信し、各スレーブから入力されるオブジェクトの状態(位置、大きさ等)を管理したり、スレーブにオブジェクトの更新情報を送信したりする。なお、マスターとして扱われるのは、電子黒板2B,2Cのいずれかであってもよい。電子黒板2B,2Cのいずれかがマスターとして扱われる場合、電子黒板2Aはスレーブとして扱われる。
図2は、電子黒板2Aの内部構成例を示すハードウェア構成図である。電子黒板2Aと同様の内部構成である電子黒板2B,2Cの説明は省略する。
電子黒板2Aは、制御部20、不揮発性メモリ24、認証部25、表示部26、タッチ入力部27、通信部28を備える。電子黒板2A内の各部は、バスを介して接続されている。
制御部20は、CPU(Central Processing Unit:中央演算処理装置)21、ROM(Read Only Memory)22、RAM(Random Access Memory)23等で構成される。
制御部20は、電子黒板2A内の全体動作を制御するコンピューターの一例として用いられる。CPU21は、例えば、タッチ入力部27を通じて行われるユーザーからの指示入力に基づいて、表示部26に表示する画像の制御を行う。タッチ入力部27から入力され、表示部26に表示される文字、図形等の画像を「オブジェクト」とも呼ぶ。オブジェクトは、タッチ入力部27に書き込まれる文字等の固まりであり、後述するストロークリストによってオブジェクトが定まる。また、CPU21は、ROM22等から読出したアプリケーションソフトウェア等を必要に応じてRAM23に展開して実行する。このアプリケーションソフトウェアは、例えば、電子黒板2Aがマスターとして動作するためのプログラムである。必要に応じて、このアプリケーションソフトウェアは、電子黒板2Aをスレーブとして動作させることもできる。
不揮発性メモリ24は、例えば、CPU21にて実行されるアプリケーションソフトウェアのパラメーター、各種プログラム等のデータを格納する。このように不揮発性メモリ24は、CPU21が動作するために必要なプログラムやデータ等を記録しており、電子黒板2Aによって実行されるプログラムを格納したコンピューター読取可能な非一過性の記録媒体の一例として用いられる。このため、不揮発性メモリ24には、このプログラムが永続的に格納される。なお、電子黒板2Aによって実行されるプログラムを格納したコンピューター読取可能な非一過性の記録媒体としては、不揮発性メモリ24に限定されず、例えば、ROM22、SSD(Solid State Drive)、CD−ROM、DVD−ROM等の記録媒体であってもよい。
認証部25は、マスターである電子黒板2Aが、スレーブである電子黒板2B,2Cからの情報入力を受入れるか否かを判断するために用いられる。例えばマスターである電子黒板2Aが接続受付状態であるとき、スレーブである電子黒板2B,2Cが電子黒板2Aにパスワードを送信し、接続を要求する。その時、電子黒板2Aの認証部25は、パスワードが合っているかどうかで、電子黒板2B,2Cが、マスターである電子黒板2Aに接続する権利を持つかを判断する。なお、電子黒板2Aがスレーブである場合、マスターである電子黒板2B,2Cのいずれかに対して認証を要求するときにも使用される。
表示部26は、例えば、LCD(Liquid Crystal Display)等で構成される表示パネルであり、ユーザーによってタッチパネルに書かれた文字、図形等を表示する。この表示部26には、電子黒板2A〜2Cに入力されたオブジェクトを表示するための画面が表示される。
タッチ入力部27は、例えば、タッチパネルであり、ユーザーがスタイラスペン、ユーザーの手等の指示媒体を用いて入力した位置の座標を制御部20に出力する。表示部26とタッチ入力部27は、重ねて構成される。このため、タッチ入力部27にタッチ入力された位置に、表示部26が必要な情報を表示する。そして、タッチ入力部27により、表示部26に表示された画面に文字等を書き込むことができる。以下の説明では、各拠点にいるユーザーが、タッチ入力部27を通じて画面に文字等を書き込むことを、「オブジェクトを入力する」、「オブジェクトを書き込む」とも表現する。
通信部28は、例えば、NIC(Network Interface Card)やモデム等で構成され、ネットワークNを介して繋がっている他の電子黒板2B,2Cとの接続を確立し、データの送受信を実行する。
図3は、マスターである電子黒板2Aの制御部20の内部構成例と、スレーブである電子黒板2Bの制御部20の内部構成例とを示すブロック図である。なお、図1に示したように電子黒板2Cも電子黒板2Aと接続されているが、電子黒板2Cは電子黒板2Bと同じ構成であるため、記載を省略する。
マスターである電子黒板2Aは、入力受付部31、識別部32、重複判定部33、オブジェクト移動部34、表示制御部35を備える。
入力受付部31(第1入力受付部の一例)は、タッチ入力部27を通じてユーザーが電子黒板2Aに書き込んだ文字等のオブジェクトの入力を受け付ける。また、入力受付部31は、電子黒板2Bの入力受付部31から送信された、電子黒板2Bに書き込まれたオブジェクトの入力を受け付ける。後述する図7に示すように、電子黒板2Bから電子黒板2Aには、ストロークリストとしてオブジェクトが送信される。
識別部32は、入力受付部31が受け付けたオブジェクトの内容を識別する。識別部32が行うオブジェクトの認識処理には、公知の文字認識技術が使用される。また、識別部32は、オブジェクトの大きさ、高さ等も識別している。
重複判定部33は、オブジェクトの内容に応じて、複数の電子黒板2から入力された複数のオブジェクトが同時かつ同じ位置で重複したか否かを判定する。以下の説明において、複数の電子黒板2からオブジェクトが書き込まれたタイミングが、予め設定された入力タイミング閾値以下であれば、複数のオブジェクトが同時に書き込まれたものとする。また、後述する図8に示すように複数のオブジェクトが重なる場合に、複数のオブジェクトが表示領域42(後述する図4を参照)の同じ位置で重複する。このため、重複判定部33は、オブジェクトが書き込まれた時間や、オブジェクトが書き込まれた位置を、入力受付部31がオブジェクトの入力を受け付ける度に算出している。ここで、同時かつ同じ位置に文字等が書き込まれたことにより、複数のオブジェクトが重複している場合に、これらのオブジェクトを「重複オブジェクト」と呼ぶ。
オブジェクト移動部34は、重複判定部33により重複したと判定された複数のオブジェクトのうち、いずれかのオブジェクトを重複しないように移動させる。ここで、オブジェクト移動部34は、重複したオブジェクトのうち、入力されたタイミングが遅い方のオブジェクトを移動させている。このため、オブジェクト移動部34は、移動させるオブジェクトの移動先の座標を算出する。
表示制御部35(第1表示制御部の一例)は、入力受付部31が受け付けた位置でオブジェクトが表示されるように画面を表示部26に表示させる制御を行う。また、表示制御部35は、重複判定部33により複数のオブジェクトが重複していると判定された場合、オブジェクト移動部34によって算出される移動先の座標にオブジェクトを移動して表示部26に表示する制御を行う。また、表示制御部35は、移動させるオブジェクトが入力されたスレーブである電子黒板2Bにて、移動させるオブジェクトが表示される位置が変わらないように、電子黒板2Bの表示部26に画面をスクロールして表示させるための更新情報を送信する。
電子黒板2Bは、入力受付部31、表示制御部35を備える。
電子黒板2Bの入力受付部31(第2入力受付部の一例)は、タッチ入力部27を通じてユーザーが電子黒板2Bに書き込んだ自装置からのオブジェクトの入力を受け付ける。そして、入力受付部31は、受け付けたオブジェクトをストロークリストとして、マスターである電子黒板2Aの入力受付部31に送信する。
電子黒板2Bの表示制御部35(第2表示制御部の一例)は、電子黒板2Aの表示制御部35から受信した更新情報に基づいて、電子黒板2Bの表示部26に画面をスクロールして表示させる制御を行う。これにより、電子黒板2A,2Bの各表示部26の表示内容がほぼ一致する。
図示しないが、電子黒板2Cについても、電子黒板2Bと同様の構成としてある。このため、電子黒板2Cは、オブジェクトの入力を受け付けると、このオブジェクトをストロークリストとして電子黒板2Aに送信し、電子黒板2Aからオブジェクトの更新情報を受信し、この受信情報に従って、電子黒板2Cの表示部26に対する表示制御を行う。
なお、マスターとスレーブの関係が入れ替わったときには、電子黒板2A,2Bの構成も入れ替わる。つまり、図3の左側が電子黒板2Bの構成となり、図3の右側が電子黒板2Aの構成となる。
図4は、電子黒板2で用いられる物理座標についての説明図である。
電子黒板2では、無限の広さを持つ領域41から切り取った一部の表示領域42に、ユーザーが入力したオブジェクトが表示される。この表示領域42が、電子黒板2における画面に相当する。ここで、オブジェクトの座標を特定するために、無限の広さを持つ領域41の左上に取られた原点Oを始点として、水平右向き方向をx、垂直下向き方向をyとする物理座標が規定される。
図5は、電子黒板2A〜2Cに書かれたオブジェクトの例を示す説明図である。ここでは、既存のオブジェクトに対して、複数拠点のユーザーがその既存のオブジェクトがある行の次行に対して、同時かつ同じ位置に新たにオブジェクトを書き込む例について説明する。図中では、拠点及び電子黒板2を識別するために、図中には表示部26の符号に、電子黒板2A〜2Cの符号を括弧で付加して示す。
図5の上段に示すように、電子黒板2Aにて、「・りんご」というオブジェクトが書込まれたとする。この場合、全ての電子黒板2A〜2Cには、「・りんご」というオブジェクトが表示されている。次に、拠点Aのユーザーが各拠点の意見を求めるために、拠点B,Cのユーザーに対して、「意見を続けて書いてください」と不図示のマイクロフォンを使って声を掛け、拠点B,Cにある不図示のスピーカーから音声が報恩されたとする。そして、拠点B,Cのユーザーが、ほぼ同時に手書きで入力しようとする。
ここでは、電子黒板2Aから書き込まれた既存のオブジェクトを「Obj1」と呼ぶ。また、図5では行頭文字「・」とともに「りんご」が書かれているが、これらは一つのオブジェクトとして扱われる。拠点Aのユーザーが、各文字のストロークを大きな時間差なく連続して書き込んだためである。このように画面共有システム1では、一人のユーザーが各文字のストロークを大きな時間差なく連続して手書きした場合は、これらの文字のストロークの組を、一つのオブジェクトとして扱う。
図5の中段に示すように、拠点B,Cのユーザーにより、電子黒板2Bの「・りんご」というオブジェクトの下に「・ぶ」というオブジェクトが書込まれ、電子黒板2Cの「・りんご」というオブジェクトの下に「・み」というオブジェクトが書込まれたとする。「・ぶ」と「・み」のオブジェクトが書込まれた位置及びタイミングはほぼ同じであるとする。この場合、「・りんご」に続いて、拠点B,Cのユーザーが次の行に書こうとしたため、表示領域42のほぼ同じ位置に複数のオブジェクトが同時に書込まれる。通常は、オブジェクトの排他制御を行わなければ、電子黒板2B,2Cから書き込まれた複数のオブジェクトが重なって視認性が低下する。
このため、図5の下段に示すように、「・りんご」のオブジェクトの下に、電子黒板2Bに入力された「・ぶ」のオブジェクトを表示する。そして、「・ぶ」のオブジェクトの下に、電子黒板2Cに入力された「・み」のオブジェクトを表示する。ただし、単純に「・み」のオブジェクトを表示した場合、電子黒板2Bを使用するユーザーにとって、「・ぶ」のオブジェクトのy方向の位置は変わらないが、電子黒板2Cを使用するユーザーにとって、「・み」のオブジェクトのy方向の位置(書込位置)が変わってしまう。このため、電子黒板2Cでは、ユーザーが「・み」のオブジェクトを入力している位置に合わせて、表示領域42を上にスクロール表示する。これにより、電子黒板2Cを使用するユーザーは、「・み」のオブジェクトの入力途中で、y方向の位置が変わることによる利便性の低下を防ぐことができる。
ここで、拠点Bと拠点Cのユーザーがほぼ同時に書いたときに行われるオブジェクトの入力制御方法について説明する。
図6は、ストロークリストの例を示す説明図である。
図6の上段に示すように、電子黒板2Aに「・りんご」のオブジェクトが書込まれたとする。その後、電子黒板2Bから、このオブジェクトの下に「・」の行頭文字が書き込まれたとする。
このとき、図6の下段に示すように「・」の行頭文字を拡大視する。「・」の行頭文字は、始点(114,166)、終点(114,150)とする複数の座標により形状が特定される。なお、「・」の行頭文字に付した多数の丸は、電子黒板2Bの入力受付部31により一定時間毎にサンプリングされた「・」の行頭文字を構成する座標を表している。
このように、「・」の行頭文字の書き始めの座標を(114,166)(単位はpt)とする。電子黒板2Bの入力受付部31は、ユーザーが図6の下段に示すようなストロークで「・」の行頭文字を書き込む間、一定のサンプリング周期で取得したストロークの座標をマスターである電子黒板2Aの入力受付部31に送る。この座標は、例えば、ストロークの始点である(114,166)から始まり、続いて(115,160)、(116,151)・・・と続き、ストロークの終点である(114,150)まで続く。これらの座標の集まりを「ストロークリスト」と呼ぶ。ストロークリストに示される座標を順に結ぶと、ユーザーが電子黒板2Bに書いたオブジェクトが現れる。ここでは、「・」の行頭文字だけをオブジェクトとして示すが、行頭文字に続けて文字等が書き込まれた場合、行頭文字と文字等が一つのストロークリストとして用いられ、行頭文字と文字等が一つのオブジェクトとなる。
一つのストロークリストによって示されるオブジェクトに外接する矩形枠を「オブジェクト枠」と呼ぶ。「・」の行頭文字のオブジェクトは、オブジェクト枠T0内にある。通常、オブジェクト枠T0は、それぞれのストロークリストの座標のうち、(最小x,最小y)、(最大x,最小y)、(最大x,最大y)、(最大x,最小y)の4つの点を結んで作成した長方形となる。
ここで、複数拠点でオブジェクトが同時に書き込まれたことを判断する処理について説明する。
図7は、電子黒板2A〜2Cで行われるストロークリストの送信処理の例を示すシーケンス図である。この例では、電子黒板2B,2Cのユーザーは同時に書き込んでいない。
始めに、拠点Bにいるユーザーが、電子黒板2Bに書き込むと(S1)、電子黒板2Bの入力受付部31が、マスターである電子黒板2Aに対して、ストロークリストを送信する(S2)。
電子黒板2Aの表示部26には、電子黒板2Bから受信したストロークリストに基づくオブジェクトが表示される(S3)。そして、電子黒板2Aの表示制御部35は、電子黒板2Cに対して、電子黒板2Bから受信したストロークリストを送信する(S4)。電子黒板2Cの表示部26には、電子黒板2Aから受信したストロークリストに基づくオブジェクトが表示される(S5)。
このように複数の電子黒板2がストロークリストを共有し、表示部26にオブジェクトを表示することができる。マスターである電子黒板2Aは、ストロークリストを保存し、管理する機能も有する。なお、拠点Cにいるユーザーが、電子黒板2Cから手書き入力を始めた時も、電子黒板2C、電子黒板2A、電子黒板2Bの順でストロークリストが送信され、各電子黒板2A〜2Cに同じオブジェクトが表示される。
しかし、拠点Bにいるユーザーが電子黒板2Bにオブジェクトを書き込み(S6)、拠点Cにいるユーザーが電子黒板2Cにオブジェクトを書き込んだとき(S7)、各ユーザーが書き込んだタイミングがほぼ同時であったとする。この場合、電子黒板2Aの入力受付部31が、電子黒板2Bからストロークリストを受信するタイミング(S8)と、電子黒板2Cからストロークリストを受信するタイミング(S9)とがほぼ同時となる。
この場合、マスターである電子黒板2Aの重複判定部33は、電子黒板2B,2Cからストロークリストを受信したタイミングがほぼ同時にオブジェクトが書込まれたと判定する。電子黒板2B,2Cからストロークリストを受信したタイミングがほぼ同時であることは、電子黒板2Aの入力受付部31が、電子黒板2B,2Cからストロークリストを受信した時間で決定される。例えば、電子黒板2Aの入力受付部31が、電子黒板2Bからストロークリストの受信を開始した時間をTb0とし、電子黒板2Cからストロークリストの受信を開始した時間をTc0とする。そして、電子黒板2Aの重複判定部33は、時間Tb0と時間Tc0の時間差|Tb0−Tc0|を計算する。そして、重複判定部33は、入力タイミング閾値をTfとし、|Tb0−Tc0|≦Tfが成り立つとき、電子黒板2B,2Cがほぼ同時に書き込まれたと判定する。Tfの値は、例えば1秒としてよく、また、拠点Aにいるユーザーが不図示の設定画面を通じて決定してもよい。
次に、複数拠点で書き込まれたオブジェクトが同じ位置にあることを判断する処理について説明する。
図8は、2つのオブジェクト枠T1,T2の重なりについて示す説明図である。
2つの拠点B,Cに設置された電子黒板2B,2Cから書き込まれたオブジェクトが同じ位置にあるか否かは、電子黒板2Aの重複判定部33が、電子黒板2B,2Cから受信したストロークリストから生成するオブジェクト枠T1,T2が重なっているか否かに基づいて判断する。
オブジェクト枠T1の4点の座標をT11(x11,y11),T12(x12,y11),T13(x12,y12),T14(x11,y12)とする。また、オブジェクト枠T2の4点の座標をT21(x21,y21),T22(x22,y21),T23(x22,y22),T24(x21,y22)とする。そして、電子黒板2Aの重複判定部33は、次式(1)〜(4)のいずれかが成立するとき、オブジェクト枠T1,T2が重なっていると判断できる。すなわち、重複判定部33は、拠点B,Cにいる各ユーザーが電子黒板2B,2Cの同じ位置にオブジェクトを書き込んでいると判断する。
x11≦x21≦x12 and y11≦y21≦y12 …(1)
x11≦x22≦x12 and y11≦y21≦y12 …(2)
x11≦x22≦x12 and y11≦y22≦y12 …(3)
x11≦x21≦x12 and y11≦y22≦y12 …(4)
ここで、式(1)に該当するオブジェクト枠T1,T2の重なりが図8の上段に表される。また、式(2),(3),(4)に該当するオブジェクト枠T1,T2の重なりが図8の下段の左側、真ん中、右側に表される。
図9は、同時入力リストの構成例を示す説明図である。
同時入力リストは、複数の拠点から同時にオブジェクトが書込まれた場合に、マスターが作成するリストであり、例えば、RAM23又は不揮発性メモリ24に構成される。この例では、電子黒板2Bに書き込まれたオブジェクト(以下、「Obj2」と呼ぶ)の入力時間が、電子黒板2Cに書き込まれたオブジェクト(以下、「Obj3」と呼ぶ)の入力時間よりわずかに早かったとする。このため、電子黒板2Aの重複判定部33は、Obj2,Obj3の順でオブジェクト名と拠点名(電子黒板2の識別符号等)と、Obj2,Obj3を含むストロークリストを作成する。
図10は、マスターである電子黒板2Aがストロークリストを受信したときの処理例を示すフローチャートである。
始めに、マスターである電子黒板2Aの入力受付部31は、スレーブである電子黒板2B,2Cからストロークリストを受信したか否かを判定する(S11)。ストロークリストを受信していない場合(S11のNO)、入力受付部31は、ステップS11にて引き続き待機する。
ストロークリストを受信した場合(S11のYES)、入力受付部31は、受信したストロークリストをオブジェクト管理リストに追加する(S12)。オブジェクト管理リストは、電子黒板2B,2Cから同時にオブジェクトが書込まれたか否かに関わらず、ストロークリストが格納されるリストであり、例えば、RAM23又は不揮発性メモリ24に構成される。入力受付部31は、電子黒板2B,2Cのいずれかからストロークリストを受信した場合、そのストロークリストだけをオブジェクト管理リストに追加する。なお、オブジェクト管理リストは、入力受付部31だけでなく、オブジェクト移動部34によっても編集される場合がある。
次に、識別部32は、オブジェクト管理リストに追加されたストロークリストに基づいて、オブジェクトの内容、属性を識別する(S13)。オブジェクトの内容とは、例えば、オブジェクトがどのような文字で構成されるか、オブジェクトが行頭文字であるかといった情報である。また、オブジェクトの属性とは、例えば、オブジェクトが書き込まれる方向が縦書きであるか横書きであるかといった情報である。
次に、重複判定部33は、オブジェクト管理リストを参照し、入力受付部31が複数の電子黒板2から受け付けた最新のストロークリストの時間差が入力タイミング閾値Tf以下であるか否かを判定する(S14)。ここで、判定対象とされるストロークリストは、電子黒板2B,2Cから受信した最新のストロークリストであり、ステップS14の処理で複数のオブジェクトが同時に書き込まれたか否かが判定される。
時間差が一定値Tf以下である場合(S14のYES)、重複判定部33は、オブジェクト管理リストを参照し、受信したストロークリストによるオブジェクト枠T1,T2が重なるか否かを判定する(S15)。ステップS15の処理で複数のオブジェクトが同じ位置に入力されたか否かが判定される。
オブジェクト枠T1,T2が重なる場合、重複判定部33は、同時入力リストにオブジェクト名と、このオブジェクトのストロークリストを追加して(S16)、本処理を終了する。また、ステップS14にてストロークリストの時間差が一定値Tfより大きい場合(S14のNO)、ステップS15にてオブジェクト枠T1,T2が重ならない場合(S15のNO)、本処理を終了する。
図10のステップS16にて、同時入力リストには、同時かつ同じ位置に書き込まれたオブジェクトが格納される。このため、以降の処理ではオブジェクト移動部34が、同時入力リストを上から順に参照する。Obj2は、最初に書き込まれたオブジェクトであるため、オブジェクト移動部34は、Obj2の入力位置を優先して維持するように制御する。このため、Obj2の書込位置、すなわち物理座標は変更しない。
次に、オブジェクト移動部34は、同時入力リストの次の項目を参照する。ここで、上述した式(1)〜(4)のいずれかに該当することにより、Obj3が入力された位置は、Obj2の入力された位置と重なっているとする。この場合、Obj3は、Obj2よりも後に書き込まれたオブジェクトであるため、オブジェクト移動部34は、Obj3を移動して表示する制御を行う。
オブジェクト移動部34は、重複判定部33により重複したと判定されていない既存のオブジェクトの位置に基づいて、オブジェクトの移動先の座標を演算し、移動先の座標にオブジェクトを移動させる。このとき、オブジェクト移動部34は、入力されたタイミングが遅い方のオブジェクトの属性、又は、既存のオブジェクトと、入力されたオブジェクトとの間の距離を示すオブジェクト距離が近いオブジェクトの属性に基づいて、オブジェクトの移動先の座標を演算する。
例えば、オブジェクト移動部34は、移動対象となるObj3の移動先の位置を、既存のObj1、及び、新規のObj3とほぼ同時に書き込まれたObj2の位置と高さから決定する。Obj3の移動先を決定するための基準として、既存のObj1の位置及び高さが用いられる。ただし、Obj3の位置を決定するための基準としては、Obj1に限らなくてもよい。
図11は、オブジェクトの関連を示す説明図である。
図11の上段に示すように、電子黒板2Aに既に書き込まれたObj1の下に、電子黒板2Bに新たに書き込まれたObj2があるとする。この場合、電子黒板2Aの識別部32は、オブジェクトが横書きで入力されたと検知する。ここで、Obj1とObj2の間の距離が一定値以下であり、Obj1とObj2の左端の座標がほぼ同じ(破線で表す)である場合、オブジェクト移動部34は、Obj1とObj2が関連性のあるオブジェクトとして認識し、Obj1の位置及び高さを、移動先の座標を求めるための基準としてよい。なお、Obj2の代わりにObj3を用いても同様である。
図11の中段に示すように、Obj1とObj2の各文字の大きさが一定でなくても、重複判定部33がObj1とObj2に対してそれぞれオブジェクト枠T3,T4を求めることができる。そして、電子黒板2Aの重複判定部33は、2つのオブジェクト枠T3,T4を最短で結んだときの距離をオブジェクト距離Lとして求める。重複判定部33は、複数のオブジェクトについてオブジェクト距離Lを求め、オブジェクト距離Lが最も短いオブジェクトの組が関連性のあるオブジェクトであると認識してもよい。
そして、オブジェクト移動部34は、重複したオブジェクトのオブジェクト距離Lが距離閾値以下であり、かつ、入力されたタイミングが早い方のオブジェクトの入力開始時の座標が一定の範囲内にあるオブジェクトの属性に基づいて、オブジェクトの移動先の座標を演算する。距離閾値として、任意の値が設定される。
なお、Obj1,Obj2,Obj3がy方向に箇条書きで入力される場合がある。この場合、識別部32は、Obj1,Obj2,Obj3の行頭文字(この例では、「・」の記号)を検出し、Obj1,Obj2,Obj3と、各行頭文字を関連性があると認識してもよい。また、識別部32は、Obj1,Obj2,Obj3が一定間隔で入力された場合に、Obj1,Obj2,Obj3に関連性があると認識してもよい。
図11の下段に示すように、オブジェクト移動部34は、Obj1,Obj2,Obj3の文字の高さH1に基づいて、文字の中心線C1を計算する。さらに、オブジェクト移動部34は、Obj1の中心線C1のy座標を計算し、Obj1の中心線C1のy座標に基づいて、Obj2とObj3の移動先の座標を決定する。ここで、Obj3のx方向の位置は変更しないものとする。
Obj1が「りんご」である場合、オブジェクト移動部34は、「りんご」を構成するストロークリストの中で最も大きいy座標と、最も小さいy座標の差を2分割した値を、Obj1の高さH1の中央値として識別される。Obj1の高さH1の中央値は、一点鎖線の中心線C1で表される。ただし、オブジェクト移動部34は、少なくとも一文字分のオブジェクトが入力された後、Obj1の高さH1を識別する。また、オブジェクト移動部34は、Obj1と同様に、Obj2,Obj3についても高さH1の中央値を計算する。Obj2,Obj3の高さH1の中央値についても、一点鎖線の中心線C1で表される。そして、オブジェクト移動部34は、Obj1とObj2の中心線C1のy座標の差分をObj1とObj2の行間I1として計算する。このため、オブジェクト移動部34は、Obj2の中心線C1のy座標に、行間I1の距離を加えたy座標を、移動させるObj3の中心線C1のy座標とする。そして、オブジェクト移動部34は、既存のObj1の中心線C1と、重複したObj2の中心線C1との距離と同じ距離だけ離れた位置にObj3の中心線C1が一致するようにObj3を移動させる。
図12は、電子黒板2Aの制御部20がObj3の移動先を決定する処理の例を示すフローチャートである。この処理は、同時入力リストに格納されているオブジェクトの数だけ行われる。
始めに、オブジェクト移動部34は、同時入力リストに格納されているオブジェクトの数を確認する(S21)。同時入力リストにオブジェクトが格納されていない場合(S21のNO)、本処理を終了する。一方、同時入力リストにオブジェクトが格納されている場合、オブジェクト移動部34は、同時入力リストに格納された一番上のオブジェクトと、既存のオブジェクトとの間で行間を計算する(S22)。
次に、オブジェクト移動部34は、行間に合わせて、同時入力リストに格納された順でオブジェクトのy方向の間隔(例えば、行間)を調整する(S23)。そして、表示制御部35は、スレーブとしての電子黒板2B,2Cに、調整したオブジェクトの更新情報を送信する(S24)。この更新情報には、オブジェクトの座標、電子黒板2B,2Cのストロークリストが含まれる。これにより、例えば、電子黒板2A〜2Cには、適切な間隔でObj1,Obj2,Obj3が表示されるようになる。
図13に示すフローチャートは、スレーブが3つ以上存在し、同時かつ同じ位置で重なったオブジェクトが3つ以上(つまり同時入力リストに3つ以上)あった場合にも適用できる。この場合においても、同時入力リストに格納されているオブジェクトを先頭から1つずつ座標をずらして、各オブジェクトを等間隔で表示することが可能となる。
このようにオブジェクト移動部34は、同時入力リストに格納されている全てのオブジェクトを移動することができる。なお、同時入力リストに格納されたオブジェクトは、一定時間以上更新されなかった場合、すなわち各拠点のユーザーがオブジェクトを入力しなかった場合には、オブジェクトが確定したと判断できる。このため、識別部32は、同時入力リストから、オブジェクトを削除する。これにより、例えば、電子黒板2B,2Cから、過去に同時入力リストに格納されたオブジェクトが入力された位置とは異なる位置でオブジェクトの入力があった場合に、同時入力リストに格納されたオブジェクトが、過去に同時入力リストに格納されたオブジェクトにより移動座標の影響を受けない。
ところで、マスターである電子黒板2Aの表示制御部35が、新しく決定したObj3の座標を電子黒板2B,2Cに送信すると、電子黒板2B,2Cに表示されるObj3の物理座標が変更され、Obj2の下にObj3が表示される。しかし、電子黒板2Cでは、ユーザーがObj3を書き込んでいる途中であるため、Obj3が移動するとObj3が変形するおそれがある。このため、電子黒板2Cに表示されるObj3の位置を変えず、Obj3の書込位置が変わらないように表示領域42がスクロールされる。
図13は、スレーブである電子黒板2Cにおいて、表示領域42がスクロールする例を示す説明図である。スレーブが表示領域42をスクロールする処理は、電子黒板2Cの表示制御部35が行う。
上述したように電子黒板2A〜2Cでは、上からObj1,Obj2,Obj3の順にオブジェクトが表示される。ここで、現在、拠点Cにいるユーザーが物理的なスタイラスペン等を用いて電子黒板2CにおけるObj3を入力している間、電子黒板2CにおけるObj3の表示位置を変更しないようにする。このため、電子黒板2Cでは、Obj1の「・りんご」、Obj2の「・ぶ」だけを上にスクロールして表示する。これにより、電子黒板2Cでは、Obj3の「・み」の書込位置は変わらない。ただし、電子黒板2Cにおいて、Obj1,Obj2を移動して表示する際には、Obj1の「・りんご」、Obj2の「・ぶ」を突然移動してもよいし、徐々に移動して表示してもよい。また、電子黒板2Cへのオブジェクトの書込が終わって一定時間が経過した後、電子黒板2Cのスクロールを元に戻して、電子黒板2A,2Bの画面と表示内容を同じにしてもよい。
なお、本実施の形態例では、オブジェクトを横書きとした例について説明したが、オブジェクトが縦書きであった場合も横書きと同様に表示が制御される。オブジェクトが縦書きである場合、重複したオブジェクトが左又は右に移動して表示する制御が行われる。重複したオブジェクトを移動する方向は、ユーザーが任意に選択可能としてもよい。
図14は、スレーブである電子黒板2Cの動作例を示すフローチャートである。この例では、スレーブが電子黒板2Cを表し、マスターが電子黒板2Aを表す。
始めに、スレーブである電子黒板2Cの入力受付部31は、マスターである電子黒板2Aからオブジェクトの更新情報を受信したか否かを判定する(S31)。電子黒板2Cの入力受付部31が、電子黒板2Aから更新情報を受信していなければ(S31のNO)、更新情報を受信するまでステップS31の処理を繰り返す。
電子黒板2Cの表示制御部35は、入力受付部31が、電子黒板2Aから更新情報を受信していれば(S31のYES)、更新対象となるオブジェクトが、電子黒板2Cで書き込まれたオブジェクトであるか否かを判定する(S32)。電子黒板2Cで書き込まれたオブジェクトでないと判定した場合(S32のNO)、表示制御部35は、そのまま本処理を終了する。電子黒板2Cで書き込まれたオブジェクトであると判定した場合(S32のYES)、表示制御部35は、更新対象となるオブジェクトの移動分だけ表示領域42をスクロールして、表示部26にオブジェクトを表示し(S33)、本処理を終了する。
以上説明した第1の実施の形態例に係る画面共有システム1では、複数の電子黒板2から同時に同じ位置に重ねてオブジェクトが書込まれた場合に、重複オブジェクトのうち、いずれかのオブジェクトを自動的に移動し、順に表示し直すことができる。このため、複数のオブジェクトに対するユーザーの視認性が向上する。
また、移動されるオブジェクトを書込中の電子黒板2では、オブジェクトの書込位置が変わらないように、オブジェクトの移動方向と同じ方向に表示領域42がスクロールされる。このため、電子黒板2にオブジェクトを書き込んでいるユーザーは、移動後の位置で改めてオブジェクトを書き直す必要がない。
また、同時に書き込まれたオブジェクトは、既存のオブジェクトとの間で関連性が認識され、この関連性を維持するように同時に書き込まれたオブジェクトが表示される。このため、ユーザーにとって違和感のない並びでオブジェクトが表示される。
このように複数のオブジェクトが重複しても適切にオブジェクトが移動して表示されるため、各拠点のユーザーは、オブジェクトの書込をためらうことなく開始できる。
なお、第1の実施の形態例に係る画面共有システム1では、スレーブである電子黒板2B,2Cから入力されたオブジェクトが重複した場合について説明した。しかし、マスターである電子黒板2Aから入力されたオブジェクトと、スレーブである電子黒板2B,2Cのいずれかから入力されたオブジェクトが重複する場合もある。この場合であっても、オブジェクトを移動する制御は、上述した実施の形態例に係る処理に基づいて行えばよい。
[第2の実施の形態例]
次に、本発明の第2の実施の形態例に係る画面共有システム1について説明する。ここでは、電子黒板2A〜2Cに箇条書きでオブジェクトが書込まれるものとする。
図15は、箇条書きのオブジェクトの例を示す説明図である。
例えば、会議の主催者である拠点Aのユーザーが、各拠点にいるユーザーが拠点毎に意見を書きやすくするため、マスターである電子黒板2Aに、予め箇条書きの行頭文字を拠点数分だけ書いていたとする。この場合、図15の上段に示すように、電子黒板2A〜2Cには、拠点A〜Cの数に等しい3つの行頭文字が上から下に並んで表示される。この例では、行頭文字の例を「o」とするが、行頭文字は「□」等の記号や数字(1,2,3..など)でもよい。
このように電子黒板2Aにオブジェクトが書込まれると、電子黒板2Aの識別部32は、箇条書きで入力される行頭文字、及び、行頭文字に関連付けられたオブジェクトを識別する。行頭文字及びオブジェクトの関連付けは識別部32により行われるが、オブジェクト移動部34により行われる場合もある。識別部32が行う行頭文字の識別は、公知のパターンマッチ技術を使用して行われる。そして、識別部32は、「o」が縦や横に並んでいることを認識すると、書き込まれたオブジェクトが箇条書きを表していると認識する。そして、拠点Aにいるユーザーが、箇条書きの一番上の行頭文字の隣りに「りんご」と書き込む。その後、拠点Aにいるユーザーが、拠点B,Cにいるユーザーに対して、「意見を書いてください。」と呼びかけると、拠点B,Cにいるユーザーは、上から2番目の行頭文字の隣りに、それぞれ「ぶどう」、「みかん」とほぼ同時に書き込んだとする。
このとき、上述した第1の実施の形態例と同様に、マスターである電子黒板2Aの重複判定部33は、電子黒板2B,2Cに同時かつ同じ位置にオブジェクトが書き込まれたことを認識する。そして、オブジェクト移動部34は、2つのオブジェクトが重ならないように、一方のオブジェクトを移動する制御を行う。このとき、オブジェクト移動部34は、識別部32により、重複したオブジェクトが行頭文字に関連付けられていると識別された場合に、他の行頭文字にオブジェクトを移動させ、他の行頭文字にオブジェクトを関連付ける。本実施の形態例では、予め行頭文字が表示されているので、行頭文字のy座標に、オブジェクトの中心線のy座標が合うように、オブジェクトを移動して表示する。ここでは、電子黒板2Bにオブジェクトが書込まれたタイミングが、電子黒板2Cにオブジェクトが書込まれたタイミングよりわずかに早かったため、電子黒板2Cに書き込まれたオブジェクトが移動対象となる。
図15の中段に示すように、電子黒板2Cには、オブジェクトとして、「み」が入力されたとする。拠点Cにいるユーザーが電子黒板2Bに「み」を書き終えたところで、オブジェクトの文字の高さH2と、一点鎖線で示す文字の中心線C2が決まる。マスターである電子黒板2Aの識別部32は、上述したように箇条書きの行頭文字を識別しているため、電子黒板2Cに書き込まれた「み」のオブジェクトを、図15の上段に示すように上から3番目の行頭文字に合わせて移動する制御を行う。このため、オブジェクト移動部34は、上から3番目の行頭文字の中心線と、電子黒板2Cに書き込まれた「み」のオブジェクトの中心線C2のy座標が一致するように、「み」のオブジェクトのy座標を求める。なお、オブジェクト移動部34は、オブジェクトを横方向に移動させないため、オブジェクトのx座標は元のままとする。
ここで、オブジェクトの移動先に別のオブジェクトが既に存在していた場合の対応について説明する。
図16は、オブジェクト管理リストの構成例を示す説明図である。
例えば、図15に示したように、始めに、拠点Aにいるユーザーが3つの行頭文字のオブジェクトだけを入力し、次に、拠点Bにいるユーザーが、上から2番目の行頭文字に合わせてオブジェクトを書き込んだとする。このとき、図16に示すオブジェクト管理リストにオブジェクトの情報が格納される。オブジェクト管理リストには、行頭文字に合わせて、項目“1”〜“3”の項目番号に合わせて書き込まれ、行頭文字に関連付けられたオブジェクトが管理される。識別部32は、行頭文字と、箇条書きされたオブジェクトとの位置関係に基づいて、行頭文字とオブジェクトを関連付ける。例えば、図15に示した箇条書きの行頭文字は縦に並んでいるため、行頭文字と、この行頭文字の右側に書き込まれたオブジェクトが関連づけられる。
次に、拠点A,Cにいるユーザーが、1番上の箇条書きの行頭文字に合わせてほぼ同時にオブジェクトを書き込んだとする。なお、電子黒板2Aにオブジェクトが書き込まれたタイミングが、電子黒板2Cにオブジェクトが書き込まれたタイミングよりわずかに早かったとする。この場合、既に箇条書きの上から2番目の項目にはオブジェクトが書き込まれているため、オブジェクト移動部34は、電子黒板2Cに書き込まれたオブジェクトを、2番目の項目の位置に移動できない。
そこで、オブジェクト移動部34は、箇条書きの空き項目を検索し、行頭文字以外に書き込まれていない箇条書きの空き項目に、電子黒板2Cに書き込まれたオブジェクトを移動する。本実施の形態例では、電子黒板2Bに書き込まれたオブジェクトがObj1として管理されている。そして、電子黒板2Aに書き込まれたオブジェクトがObj2として管理され、電子黒板2Cに書き込まれたオブジェクトがObj3として管理される。項目“1”には、ほぼ同時に書き込まれたObj2,Obj3が格納される。Obj2,Obj3は、図9に示した同時入力リストにも格納される。そして、オブジェクト移動部34は、Obj3の中心線C2が、上から3番目の項目“3”の位置にある行頭文字の中心線と合うようにObj3を移動する。これにより項目“1”,“2”,“3”には、順にObj2,Obj1,Obj3が表示される。
ところで、図16に示した例では、同時に入力されたオブジェクトを、箇条書きの空き項目に移動することができたが、箇条書きの空き項目が無い場合、オブジェクト移動部34は、新たに箇条書きの空き項目を自動で追加してもよい。
図17は、箇条書きの空き項目を自動で追加する例を示す説明図である。
図17の上段に示すオブジェクト管理リストには、項目“2”,“3”,“1”の順でObj1,Obj2,Obj3,Obj4が格納されたとする。Obj1,Obj2は、拠点Bにいるユーザーによって電子黒板2Bに書き込まれたオブジェクトであり、項目“2”,“3”に格納されている。そして、拠点Aにいるユーザーが電子黒板2Aに書き込んだオブジェクトがObj3であり、拠点Cにいるユーザーが電子黒板2Cに書き込んだオブジェクトがObj4である。オブジェクト管理リストにより、項目“1”の空き項目にObj3とObj4が同時に書き込まれたことが分かる。
項目“2”,“3”には、既にObj1とObj2があるため、項目“1”において、Obj3と重複するObj4の移動先がない。そこで、オブジェクト移動部34は、オブジェクトの移動先に他の行頭文字を追加して、追加した他の行頭文字にオブジェクトを移動させ、他の行頭文字にオブジェクトを関連付ける。このため、オブジェクト移動部34は、項目“3”の下に自動的に項目“4”の行頭文字を追加し、項目“4”の行頭文字に移動させたオブジェクトを関連付ける。
図17の中段には、「・」で示される行頭文字D1〜D3の下に、行頭文字D4を追加して表示した例が示される。オブジェクト移動部34は、新たに追加する行頭文字の位置を、例えば2番目、3番目の行頭文字の間隔I2で決める。そして、オブジェクト移動部34は、3番目の行頭文字の中心線C2から間隔I2だけy方向に移動させた位置に4番目の行頭文字を追加する。行頭文字D1〜D4の中心線C2は等間隔であるため、行頭文字D1〜D4はy方向に等間隔に並んでいる。そして、オブジェクト移動部34は、追加した項目“4”に対応する箇条書きの空き項目に、項目“1”〜“3”に共通する行頭文字(「・」)を追加して表示する。
また、図17の下段に示すように、オブジェクト移動部34は、追加した行頭文字に対応する項目“4”をオブジェクト管理リストに追加し、追加した行頭文字と、Obj4を関連付ける。そして、オブジェクト移動部34は、Obj4を項目“4”に格納すると共に、項目“4”に対応する箇条書きの空き項目にObj4を移動する。これによりObj4が追加された位置が、新たに追加された項目“4”であることをオブジェクト管理リストで管理することが可能となる。
以上説明した第2の実施の形態例に係る画面共有システム1では、箇条書きの空き項目に書き込まれたオブジェクトを、マスターである電子黒板2Aのオブジェクト管理リストで管理する。ここで、重なったオブジェクトの移動先に空き項目がない場合、オブジェクト移動部34は、新たに行頭文字を追加する。そして、移動しようとするオブジェクトの中心線を、追加した行頭文字の中心線C2に合わせるようにオブジェクトを移動する。その後、電子黒板2Aは、移動したオブジェクトの更新情報を電子黒板2B,2Cに送信する。このため、電子黒板2A〜2Cには、行頭文字の空き項目に書き込まれたObj1〜Obj4がy方向に等間隔に並んで表示される。電子黒板2A〜2Cには、オブジェクトが重複することなく、整列して表示されるため、オブジェクトの視認性が向上する。
[第3の実施の形態例]
次に、本発明の第3の実施の形態例に係る画面共有システム1について説明する。ここでは、移動先に既存オブジェクトが存在しているものとする。
図18は、新たに書き込まれたオブジェクトと、既存のオブジェクトを表示する例を示す説明図である。
図18の上段に示すように、拠点Aにいるユーザーが電子黒板2Aに「りんご」と書込み、拠点B,Cにいるユーザーがそれぞれ同時に電子黒板2B,2Cに「ぶどう」、「みかん」と書き込んだとする。この例においても、「りんご」のオブジェクトをObj1と表し、「ぶどう」、「みかん」のオブジェクトをObj2,Obj3と表す。Obj2が書き込まれたタイミングが、Obj3が書き込まれたタイミングよりわずかに早いため、Obj3がObj2の下に移動される。
しかし、「りんご」のオブジェクトが表示される下の空き領域には、既に楕円で示す図形が書かれていたとする。このように予め表示されている図形等のオブジェクトを「既存オブジェクト」と呼び、Obj10と表す。既存オブジェクトは、図形以外にも文字等がある。そして、異動対象であるObj3が、既存オブジェクトであるObj10の位置に移動すると、Obj3とObj10が重なってしまう。
そこで、本実施の形態例に係るマスターであるオブジェクト移動部34は、書込中のObj1〜Obj3の行間を詰めるか、Obj3の移動先に表示されているObj10を移動するかの制御を行う。
<行間を詰める例>
ここでは、既存のオブジェクトがある行と、書込中のオブジェクトがある行の行間を詰める例について説明する。始めに、オブジェクト移動部34は、重複オブジェクトを分ける。そして、既存のオブジェクトと、分けられた重複オブジェクトを行間を詰めながら順にy方向に並べて、既存オブジェクトに重ならないように全てのオブジェクトの行が入るか確認する。
図18の中段には、行間を詰めたオブジェクトの表示例が示される。ここで、オブジェクト移動部34は、追加した他の行頭文字、及び他の行頭文字に関連付けられるオブジェクトの高さ又は幅を、移動可能な空き領域に移動可能となるように調整する。例えば、オブジェクト移動部34は、一番上にある「りんご」のオブジェクトであるObj1の最小のy座標と、一番下にある「み」のオブジェクトであるObj3の最大のy座標の差H3を求める。
次に、オブジェクト移動部34は、Obj1〜Obj3のそれぞれの高さMa,Mb,Mcを算出する。この高さは、Obj1〜Obj3の各ストロークリストにおいて、y座標の最小値と最大値の差として求められる。なお、高さMa,Mb,Mcには、いくらかのマージンを加えてもよい。そして、H3≧Ma+Mb+Mcという式が成立するのであれば、行間を詰めてObj1〜Obj3を表示することができる。しかし、この式が成立しなければ、後述するように既存オブジェクトであるObj10を空き領域に移動する処理を行うこととなる。
オブジェクト移動部34がObj1〜Obj3の行間を詰める制御を行うことを決めると、電子黒板2B,2Cに書込中であるObj2,Obj3のいずれも現在の書込位置から移動させる場合がある。このため、オブジェクト移動部34は、最も下にあるObj3の位置を決定する。Obj3の位置は、できるだけ既存オブジェクトであるObj3の楕円と重ならない位置であって、y座標が大きい位置が決定される。
オブジェクト移動部34は、Obj3の位置を決定した後、Obj3の一つ上にあるObj2の位置を決定する。このため、オブジェクト移動部34は、「りんご」のObj1の中心線と、「み」のObj3の中心線との中央にあるy座標を計算し、このy座標に「ぶ」のObj2の中心線が合うように「ぶ」のObj2の位置を決定する。このようにして決定した位置にObj2,Obj3を移動させるため、オブジェクト移動部34は、スレーブである電子黒板2B,2CにObj2,Obj3の移動先の座標を含む更新情報を送信する。そして、電子黒板2B,2Cは、電子黒板2Aから受信した更新情報に基づいて、書込中であるObj2,Obj3の書込位置がずれないように、Obj2,Obj3の移動分だけ表示をスクロールする。このようにして電子黒板2A〜2Cは、Obj1〜Obj3の行間を詰めて表示することが可能となる。
なお、電子黒板2A〜2Cが行間を詰めてObj1〜Obj3を表示した場合、各拠点にいるユーザーが書き込むことが可能な空き領域の高さが狭まる。このため、図18の下段に示すように、ガイドラインとして用いられる補助線のオブジェクトであるObj11を電子黒板2A〜2Cに表示してもよい。また、「小さめに書いてください」と言った注意事項を示すオブジェクトを電子黒板2A〜2Cに表示してもよい。これにより、各拠点のユーザーは、高さを揃えてほぼ同じ大きさの文字等を書き込むことができる。
<既存オブジェクトを移動させる例>
次に、行間を十分に確保できない場合の対応例について説明する。Obj1〜Obj3の行間を詰めても、Obj1〜Obj3が大きいため、Obj1〜Obj3が重複する場合、オブジェクト移動部34は、既存オブジェクトであるObj10を移動してもよい。
図19は、既存オブジェクトを移動させる例を示す説明図である。
図19の上段に示すように、「み」のObj3がある行と、既存オブジェクトのObj10が重なるとする。オブジェクト移動部34は、調整した行間であっても、既存のオブジェクトと移動させたオブジェクトが重複する場合には、既存のオブジェクトと重複しないように、既存のオブジェクトを移動する。
例えば、オブジェクト移動部34は、既存のオブジェクトが存在することにより空き領域がないと判断した場合に、既存のオブジェクトを移動して拡大した空き領域に追加した他の行頭文字、及び他の行頭文字に関連付けられるオブジェクトを移動させる。このとき、オブジェクト移動部34は、Obj1〜Obj3の行間を計算して、Obj3の移動後の位置を計算し、その後、Obj3のy座標の最大値を計算する。そして、オブジェクト移動部34は、Obj3のy座標の最大値と、Obj10のy座標の最小値の差から、Obj3とObj10の重なる高さH4を求める。このようにオブジェクト移動部34は、既存のオブジェクトと重複しないように、移動先のオブジェクトの行間を調整することができる。
図19の下段に示すように、Obj3の下にObj10が高さH4だけ移動して表示される。そして、マスターである電子黒板2Aは、電子黒板2B,2CにObj10の移動先の座標を含む更新情報を送信することで、電子黒板2A〜2Cに表示されるObj10の位置が移動して表示される。ただし、拠点Cにいるユーザーは、Obj3を書込中であるため、書込位置がスクロールして表示される。
このように複数のオブジェクトの行間を確保できない場合には、オブジェクト移動部34がObj10を移動したが、行間を確保することなく、Obj10を先に移動してもよい。また、「りんご」のObj1の上に空き領域があれば、オブジェクト移動部34はObj1を上に移動して行間を確保してもよい。
以上説明した第3の実施の形態例に係る画面共有システム1では、既存オブジェクトであるObj10が表示されている場合に、新たに書き込んだObj1〜Obj3がObj10に対して重複オブジェクトにならないようにオブジェクトの移動が制御される。このため、Obj10とObj1〜Obj3が重なって表示されず、視認性を向上することができる。
[第4の実施の形態例]
次に、本発明の第4の実施の形態例に係る画面共有システム1について説明する。ここでは、重複オブジェクトを書込中のユーザーが一部の文字の大きさを変えてしまった場合の対処について説明する。
図20は、拠点Bにいるユーザーが一部の文字を大きく書き込んだ例を示す説明図である。
マスターである電子黒板2Aの重複判定部33は、ユーザーがそれぞれ電子黒板2B,2Cに文字を書き込んでいる間、電子黒板2B,2Cから受信したストロークリストに基づいて、電子黒板2B,2Cに書き込まれたオブジェクトの重複を判定している。しかし、一旦、重複判定部33がが、複数のオブジェクトを重複していないと判定していても、時間経過に伴い、複数のオブジェクトが重複することがある。このとき、オブジェクト移動部34は、重複したと判定されたオブジェクトの移動先の座標を再計算し、移動先の座標にオブジェクトを移動させる。
例えば、図20の真ん中に示すように、拠点Bにいるユーザーが、「ぶ」のObj2に続けて、「ど」のObj5を書き込んだとする。しかし、「ど」のObj5の大きさが、「ぶ」のObj2より大きいため、「ど」のObj5が、Obj3に重なったとする。この場合、「ど」のObj5の下にObj3を移動する制御が行われる。
図21は、マスターである電子黒板2Aの制御部20により行われる行間を調整する処理の例を示すフローチャートである。
始めに、重複判定部33は、同時入力リストへのオブジェクトの追加処理を行う(S41)。この処理は、上述した第1の実施の形態例における図10の処理であるため詳細な説明を量略する。
次に、オブジェクト移動部34は、同時入力リストに追加されたオブジェクトがあるか否かを判定する(S42)。同時入力リストに格納されたオブジェクトは一定時間(例えば、1分間)以上更新されなければ、内容が確定したとして削除される。内容が確定したオブジェクトは、オブジェクト移動部34による移動対象とはならない。このため、同時入力リストにオブジェクトがなければ(S42のNO)、オブジェクト移動部34はステップS46に処理を移す。
一方、同時入力リストにオブジェクトがあれば(S42のYES)、オブジェクト移動部34は、同時入力リストにある複数のオブジェクトの行間を計算し(S43)、行間に合わせて、同時入力リストに格納された順でオブジェクトのy方向の間隔を調整する(S44)。
次に、重複判定部33は、同時入力リストにある更新されたオブジェクトにより他のオブジェクトとの間で重複が発生したか否かを判定する(S45)。同時入力リストにあるオブジェクトは、各拠点のユーザーにより書込中の文字等であるため、随時更新される。例えば、間隔が調整されたオブジェクトであっても、書込中の文字の大きさが他のオブジェクトより大きくなると、更新されたオブジェクトにより他のオブジェクトとの間で重複が発生する場合がある。このため、重複判定部33が、更新されたオブジェクトにより他のオブジェクトとの間で重複が発生したと判定した場合(S45のYES)、オブジェクト移動部34は、ステップ43に戻り、再び行間を計算し、オブジェクトの間隔を調整する。一方、重複判定部33が、更新されたオブジェクトにより他のオブジェクトとの間で重複が発生していないと判定した場合(S45のNO)、ステップS46に移る。
そして、同時入力リストにオブジェクトがない場合(S42のNO)、又は、同時入力リストのオブジェクトに重複が発生していない場合(S45のNO)、表示制御部35は、スレーブとしての電子黒板2B,2Cに、調整したオブジェクトの更新情報を送信する(S46)。これにより、例えば、電子黒板2A〜2Cには、適切な間隔でObj1,Obj2,Obj3が表示されるようになる。
以上説明した第4の実施の形態例に係る画面共有システム1では、異なる拠点で同時に書き込まれた文字の大きさが、それまでに書き込まれた文字の大きさと異なったり、歪んだり、斜めに書かれたりして、移動したにもかかわらずオブジェクトが重複した場合に対処した。この場合、見やすいようにオブジェクトの行間が再計算され、オブジェクトが重複しないように再表示される。このため、オブジェクトの視認性を高めることができる。
なお、第2の実施の形態例の図15に示したように箇条書きとして予め行頭文字が表示されている場合、重複オブジェクトを検出して、いずれかのオブジェクトの移動する際に、オブジェクトに関連づけられた行頭文字を同時に移動させる制御が行われる。これにより、行頭文字の中心と、行頭文字に続くオブジェクトの中心が一致したまま移動する。
[第5の実施の形態例]
次に、本発明の第5の実施の形態例に係る画面共有システム1について説明する。ここでは、既存オブジェクトとは関連しない位置で追加された複数のオブジェクトが重複した場合の対処について説明する。
図22は、既存オブジェクトとは関連しない位置で複数のオブジェクトが追加される例を示す説明図である。
図22の上段には、最初に「りんご」というObj1が既存オブジェクトとして表示されている。ここで、拠点Bにいるユーザーにより、電子黒板2Bに「日本」と書かれ、拠点Cにいるユーザーにより、電子黒板2Cに「東京」と書かれるとする。ただし、図22の上段に示す図では、書込途中である「日」のオブジェクトがObj6として表示され、「東」のオブジェクトがObj7として表示されているとする。これらObj6,Obj7は、「りんご」のObj1とは明らかに離れた位置にあり、識別部32によって関連付けられていない。しかし、重複判定部33は、同時に同じ位置に書き込まれていたObj6,Obj7を重複オブジェクトと判定する。
このように関連付けされていないオブジェクトがあると、オブジェクト移動部34は、このオブジェクトをどのように移動させるか判断することが難しくなる。このため、既存のオブジェクトと、重複したと判定された複数のオブジェクトとのオブジェクト距離が所定距離より離れていた場合に、オブジェクト移動部34は、重複したと判定された複数のオブジェクトのいずれかを規定の方向に移動させるようにする。例えば、オブジェクト移動部34は、Obj6,Obj7を規定の方向に移動させる。規定の方向とは、マスターである電子黒板2Aのユーザーにより予め設定される値であり、例えば、「下方向」「上方向」「左方向」といった設定である。
例えば、重複したオブジェクトのうちいずれかを「下方」に移動することが規定の方向であったとする。この場合、Obj6が入力されたタイミングが、Obj7が入力されたタイミングより早かった場合、「東」のObj7は、下方に移動して表示される。
ところで、「東」のObj7が下方に移動した後、実は「日」のObj6は縦書きで書き込まれたとする。この場合、下方に移動した「東」のObj7が、縦書きされた「日本」のObj6と再び重複してしまう。そこで、重複判定部33が、移動されたオブジェクトの重複を判定した場合、オブジェクト移動部34は、各オブジェクトが書き込まれる文字の方向(縦書き又は横書き)を確認する。そして、電子黒板2Bに書き込まれたObj6が縦書き、電子黒板2Cに書き込まれたObj7が横書きであると判明した場合、電子黒板2Cに書き込まれたObj7を下方向に移動させても重複し続けてしまう。この場合、オブジェクト移動部34は、Obj7を下方向ではなく、右方向に移動することを決める。
図22の中段には、ユーザーにより設定された規定の方向を示す移動方向管理テーブルが示される。移動方向管理テーブルは、マスターである電子黒板2AのRAM23又は不揮発性メモリ24に構成される。この移動方向管理テーブルでは、同時入力リストにある複数のオブジェクトのうち、先に書き込まれたオブジェクトを「先オブジェクト」と呼び、後に書き込まれたオブジェクトを「後オブジェクト」と呼ぶ。そして、先オブジェクトの縦書き又は横書きの属性に応じて、後オブジェクトを移動しても、先オブジェクトと後オブジェクトが互いに重複しない移動方向が示されている。このため、オブジェクト移動部34は、規定の方向の代わりに、移動方向管理テーブルを参照して、重複したオブジェクトの移動方向を判定してもよい。
図23は、重複したオブジェクトの属性に基づいて、オブジェクトの移動方向を決定する処理の例を示すフローチャートである。
図23に示す処理のステップS51〜S56の処理は、上述した第4の実施の形態例に係る図21に示したステップS41〜S45の処理と同様である。
ただし、同時入力リストにオブジェクトがある場合(S52のYES)、オブジェクト移動部34は、同時入力リストの更新されたオブジェクトが関連するか否かを判定する(S53)。オブジェクトが離れた位置にあり関連しない場合、ステップS56に移る。一方、オブジェクトが近い位置にあることから関連する場合、オブジェクト移動部34は、行間を計算し、行間に合わせてオブジェクトの間隔を調整する(S54,S55)。そして、重複判定部33は、同時入力リストの更新されたオブジェクトにより重複したか否かを判定する(S56)。
ステップS56にて、重複判定部33が、更新されたオブジェクトにより他のオブジェクトとの間で重複が発生したと判定した場合(S56のYES)、例えば、既存オブジェクトから離れた場所で複数のオブジェクトが重複している。このため、オブジェクト移動部34は、規定の設定値又は移動方向管理テーブルを参照して、重複したオブジェクトのうち、先オブジェクトの属性に応じて後オブジェクトの移動方向を変更する(S57)。このようにオブジェクト移動部34が先オブジェクトと後オブジェクトとして認識し、移動方向が決定された複数のオブジェクトは関連付けられたものとして、オブジェクト管理リストに格納される。その後、オブジェクト移動部34は、ステップS53に戻り、オブジェクトの行間を計算し、オブジェクトの間隔を調整する。
そして、同時入力リストにオブジェクトがない場合(S52のNO)、又は、同時入力リストのオブジェクトに重複が発生していない場合(S56のNO)、表示制御部35は、スレーブとしての電子黒板2B,2Cに、調整したオブジェクトの更新情報を送信する(S58)。これにより、例えば、電子黒板2A〜2Cには、適切な間隔でObj1,Obj6,Obj7が表示されるようになる。
以上説明した第5の実施の形態例に係る画面共有システム1では、既存オブジェクトから離れた位置に書き込まれた文字等により複数のオブジェクトが移動した場合に、先オブジェクトの属性に合わせて後オブジェクトの移動方向が決定される。後オブジェクトは、先オブジェクトの文字列の書込方向(縦書き又は横書き)に応じて空き領域の方向に移動される。このため、縦書き又は横書きといった属性が異なる複数のオブジェクトが重複しても、オブジェクト移動部34は、ユーザーが見やすい位置にオブジェクトを移動して表示するため視認性が向上する。
なお、オブジェクト移動部34は、オブジェクトの移動方向を、箇条書きの行頭文字が並ぶ方向として、行頭文字に関連付けられたオブジェクトを移動してもよい。
[第6の実施の形態例]
次に、本発明の第6の実施の形態例に係る画面共有システム1について説明する。ここでは、行頭文字が数字である場合に、箇条書きの行頭文字を変更する例について説明する。
図24は、箇条書きの行頭文字を変更する例を示す説明図である。
図24の上段に示すように電子黒板2Aには「1.りんご」と書き込まれている。続けて、「1.りんご」のオブジェクトの下の行に、ほぼ同時に電子黒板2Bに「2.ぶ」と書き込まれ、電子黒板2Cに「2.み」と書き込まれたとする。このように電子黒板2A〜2Cで書き込まれる文字の先頭には、数字の行頭文字が付されている。
このため、マスターである電子黒板2Aの識別部32は、電子黒板2B,2Cから取得したオブジェクトのストロークリストに基づいて、電子黒板2Aに書き込まれた「1.」に続いて、電子黒板2B,2Cでは、連番の数字が箇条書きされたことを識別する。そして、識別部32は、オブジェクト管理リストにオブジェクトの情報を格納する。
図24の中段に示すように、オブジェクト管理リストには、数字“1”,“2”で示される項目“1”,“2”の項目番号毎に、書き込まれたオブジェクトが管理される。例えば、項目“1”には、電子黒板2Aに書き込まれたオブジェクトがObj1として管理される。また、項目“2”には、電子黒板2Bに書き込まれたオブジェクトがObj2として管理され、電子黒板2Cに書き込まれたオブジェクトがObj3として管理される。
図24の下段には、Obj3がObj2の下に移動して表示される例が示される。上述したように重複判定部33が重複オブジェクトであると判定したObj2,Obj3のうち、書き込みタイミングがわずかに遅かったObj3は、オブジェクト移動部34により、下に移動する。ここで、単にObj2の下に、行頭文字を付けたObj3を移動すると、移動後のObj3の行頭文字は「2.」のままとなる。
このため、オブジェクト移動部34は、重複したと判定された複数のオブジェクトが箇条書きであって、かつ複数のオブジェクトに関連付けられる行頭文字が連続する文字である場合に、移動したオブジェクトに関連付けられる行頭文字を行の位置によって変更する。例えば、オブジェクト移動部34は、移動後のObj3の行頭文字を「3.」に変更する。変更した「3.」の行頭文字は、電子黒板2A〜2Cに書かれていない文字であるため、画面表示用のフォント等を用いる。そして、図示しないが、オブジェクト管理リストには、移動後の項目“3”の項目番号と、項目“3”に関連付けられたオブジェクトとしてObj3が追加される。このとき、オブジェクト管理リストに格納された項目“2”のObj3は削除される。なお、行頭文字は、数字に限らず、一般的に箇条書きで用いられる項目順を表す記号としてアルファベット(A,B,C,…)、平仮名(い,ろ,は,…)、片仮名(イ、ロ、ハ、…)等であってもよい。
以上説明した第6の実施の形態例に係る画面共有システム1では、行頭文字の種類に合わせて追加した行頭文字を変更する。ここで、行頭文字が項目順を表す記号であれば、オブジェクト移動部34が移動したオブジェクトの行頭文字は、この記号で項目順が表されるように変更して表示される。このため、各拠点にいるユーザーによって書き込まれた行頭文字が、移動先の行と合わなくても、適切な行頭文字に変更して表示されるので、視認性を向上することができる。
[変形例]
なお、上述した第1〜第6の実施の形態例に係る画面共有システム1では、複数の拠点で、同時かつ同じ位置にオブジェクトが書き込まれたときの動作について規定したものである。つまり、ある拠点でオブジェクトを書き込んだユーザーは、別の拠点のユーザーによって書き込まれたオブジェクトが、ある拠点のユーザーが同じ位置に同時に書き込んだことを知らない。しかし、異なる拠点からオブジェクトが書き込まれたタイミングの差が入力タイミング閾値より大きければ、オブジェクトを書き込んだユーザーは、自身が書き込んでいる位置に表示されるオブジェクトに対して故意に重ねて書き込んでいると考えられる。このような場合には、同じ位置でオブジェクトが重複したとしても、後から書き込まれたオブジェクトを別の位置に移動しなくてよい。
なお、4つ以上の拠点に4つ以上の電子黒板2が設置されてもよい。また、3つ以上のオブジェクトが重複した場合であっても、上述した実施の形態例に係る処理に基づいてオブジェクトを移動する制御を行えばよい。また、画面共有装置の一例としては、電子黒板2に限らず、タッチパネルを通じて入力可能なタブレット端末、テレビジョン装置等であってもよい。
また、本発明は上述した実施の形態例に限られるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限りその他種々の応用例、変形例を取り得ることは勿論である。
例えば、上述した実施の形態例は本発明を分かりやすく説明するために装置及びシステムの構成を詳細かつ具体的に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されない。また、ここで説明した実施の形態例の構成の一部を他の実施の形態例の構成に置き換えることは可能であり、さらにはある実施の形態例の構成に他の実施の形態例の構成を加えることも可能である。また、各実施の形態例の構成の一部について、他の構成の追加、削除、置換をすることも可能である。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。