説明

情報処理方法、情報処理装置およびプログラム

【課題】複数のユーザの各々が単独で行なった作業結果を確実に反映しつつ、効率的な共同作業を実現するための情報処理方法、情報処理装置およびプログラムを提供する。
【解決手段】共有オブジェクトであるオブジェクトOBJ1と、個人作業モードにおいて各ユーザの操作によって生成されたオブジェクトOBJ1A,OBJ1B,OBJ1Cとの派生関係が、視覚的に表現される。さらに、付加されたメッセージであるオブジェクトOBJ1BtおよびOBJ1Ctについても、それぞれ対応するオブジェクトOBJ1BおよびOBJ1Cとに関連付けて表示される。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、複数のユーザが共同作業を行なうことが可能なワークスペースを提供する情報処理方法、情報処理装置およびそのプログラムに関する。
【背景技術】
【0002】
複数のユーザによる共同作業を効率化するために共同作業空間(以下、「ワークスペース」とも称す。)を提供するアプリケーションが提案されている。このようなワークスペースは、複数のユーザが同時にアクセス可能な仮想空間であり、ネットワーク接続などの互いにデータ通信可能に構成された複数の情報処理装置(以下、「node(ノード)」とも称す。)の間でデータが共有されることで実現される。このようなワークスペースによって、遠隔地にいるユーザ同士でも共同作業(コラボレーション)が可能となる。
【0003】
このようなワークスペースの使用形態としては、少なくとも、当該ワークスペースに参加している各ユーザが単独で作業を行なうような場合と、複数のユーザが議論をしながら共通の作業を進めていく場合とが想定される。たとえば、特開平06−075735号公報(特許文献1)には、他のユーザと共通の情報を表示する共有モードと、個人的に表示したい情報を表示する個人モードとを選択可能な共有画面制御装置が開示されている。
【0004】
このような使用形態のうち、後者に属する形態で作成されたデータ(あるいは、オブジェクトなど)については、ユーザ間の共通の認識に基づくものであり、変更操作に伴う不整合や消滅といった事態が生じる可能性は低い。
【0005】
これに対して、前者に属する形態で各ユーザが行なった作業の結果は、互いに類似の内容のものが複数存在することも考えられ、このような場合には、これらの結果の間で整合性をとることが難しい。このような課題に対する一つのアプローチとして、特開平11−327980号公報(特許文献2)には、バージョン間を派生関係で管理するバージョン管理装置が開示されている。
【特許文献1】特開平06−075735号公報
【特許文献2】特開平11−327980号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、特開平11−327980号公報(特許文献2)に開示されるバージョン管理装置では、最後に変更を行なったユーザの結果が最新のものとして取扱われるため、共同作業の結果ではなく、あるユーザが行なった作業の結果が当該ワークスペース上で最新のものとして取扱われるという課題があった。
【0007】
すなわち、特開平11−327980号公報(特許文献2)に開示されるバージョン管理装置では、各ユーザが行なった作業の結果をすべて反映して1つのデータとして纏めるような処理は想定されておらず、そのため、複数のユーザの間で効率的な共同作業を行なうことはできなかった。
【0008】
そこで、この発明は、かかる問題を解決するためになされたものであり、その目的は、複数のユーザの各々が単独で行なった作業結果を確実に反映しつつ、効率的な共同作業を実現するための情報処理方法、情報処理装置およびプログラムを提供することである。
【課題を解決するための手段】
【0009】
この発明のある局面に従えば、複数の情報処理装置を用いて複数のユーザによる同時アクセス可能な仮想空間を提供する情報処理方法を提供する。情報処理方法は、複数の情報処理装置が、第1モードにおいて、仮想空間および仮想空間に含まれるオブジェクトを定義する共有ファイルを同期して保持するステップと、複数の情報処理装置のうち第1情報処理装置が、1モードから第2モードへの切替えの指示を受けて、共有ファイルについての同期処理を停止するステップと、第1情報処理装置が、仮想空間に含まれる第1オブジェクトに対する変更操作を受付けるステップと、第1情報処理装置が、共有ファイルの少なくとも一部をコピーすることで、第1オブジェクトを定義する局所ファイルを生成するステップと、第1情報処理装置が、第1オブジェクトに対する変更操作の結果得られる第2オブジェクトに応じて、局所ファイルを更新するステップと、第1情報処理装置が、第2モードから第1モードへの切替えの指示を受けて、他の情報処理装置との間で共有する共有ファイルに局所ファイルとの対応関係を反映するステップと、複数の情報処理装置が、第1モードにおいて、局所ファイルとの対応関係が反映された共有ファイルに基づいて、第1および第2オブジェクトを含む仮想空間を表示部に描画するステップとを含む。
【0010】
好ましくは、対応関係を反映するステップは、仮想空間において、第2オブジェクトが第1オブジェクトに近接して表示されるように、共有ファイルの記述を変更するステップを含む。
【0011】
好ましくは、対応関係を反映するステップは、仮想空間において、第1オブジェクトと第2オブジェクトとの対応関係を視覚的に表示するオブジェクトを追加するステップをさらに含む。
【0012】
好ましくは、情報処理方法は、第1情報処理装置が、第2モードにおいて、変更操作によって第2オブジェクトが生成されると、第1オブジェクトを不可視としつつ、第2オブジェクトを含む仮想空間を表示部に描画するステップをさらに含む。
【0013】
好ましくは、共有ファイルは、第1オブジェクトの実体を示すファイルと、実体を示すファイルへの参照情報を記述したファイルとを含む。
【0014】
好ましくは、情報処理方法は、第1情報処理装置が、第2モードにおいて、オブジェクトの新規作成指示を受けて、第2オブジェクトとは異なる第3オブジェクトを生成するステップと、第1情報処理装置が、第3オブジェクトを第2オブジェクトに対応付けるステップとをさらに含む。
【0015】
さらに好ましくは、第1および第2オブジェクトを含む仮想空間を表示部に描画するステップでは、第3オブジェクトを第2オブジェクトに対応付けて描画される。
【0016】
この発明の別の局面に従えば、他の情報処理装置とデータ通信可能に構成され、複数のユーザによる同時アクセス可能な仮想空間を提供する情報処理装置を提供する。情報処理装置は、表示部と、第1モードにおいて、仮想空間および仮想空間に含まれるオブジェクトを定義する共有ファイルを他の情報処理装置との間で同期して保持する手段と、第1モードから第2モードへの切替えの指示を受けて、共有ファイルについての同期処理を停止する手段と、仮想空間に含まれる第1オブジェクトに対する変更操作を受付ける手段と、共有ファイルの少なくとも一部をコピーすることで、第1オブジェクトを定義する局所ファイルを生成する手段と、第1オブジェクトに対する変更操作の結果得られる第2オブジェクトに応じて、局所ファイルを更新する手段と、第2モードから第1モードへの切替えの指示を受けて、他の情報処理装置との間で共有する共有ファイルに局所ファイルとの対応関係を反映する手段と、第1モードにおいて、局所ファイルとの対応関係が反映された共有ファイルに基づいて、第1および第2オブジェクトを含む仮想空間を表示部に描画する手段とを含む。
【0017】
この発明のさらに別の局面に従えば、複数の情報処理装置を用いて複数のユーザによる同時アクセス可能な仮想空間を提供するためのプログラムを提供する。プログラムは、情報処理装置に、第1モードにおいて、仮想空間および仮想空間に含まれるオブジェクトを定義する共有ファイルを他の情報処理装置との間で同期して保持するステップと、第1モードから第2モードへの切替えの指示を受けて、共有ファイルについての同期処理を停止するステップと、仮想空間に含まれる第1オブジェクトに対する変更操作を受付けるステップと、共有ファイルの少なくとも一部をコピーすることで、第1オブジェクトを定義する局所ファイルを生成するステップと、第1オブジェクトに対する変更操作の結果得られる第2オブジェクトに応じて、局所ファイルを更新するステップと、第2モードから第1モードへの切替えの指示を受けて、他の情報処理装置との間で共有する共有ファイルに局所ファイルとの対応関係を反映するステップと、第1モードにおいて、局所ファイルとの対応関係が反映された共有ファイルに基づいて、第1および第2オブジェクトを含む仮想空間を表示部に描画するステップとを実行させる。
【発明の効果】
【0018】
この発明によれば、複数のユーザの各々が単独で行なった作業結果を確実に反映しつつ、効率的な共同作業を実現することができる。
【発明を実施するための最良の形態】
【0019】
この発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0020】
<ワークスペースの全体構成>
図1は、この発明の実施の形態に従うワークスペースを提供するためのシステムの概略構成図である。
【0021】
図1を参照して、本実施の形態に従うシステムは、ネットワークNWを介して互いにデータ通信可能に接続されたデバイスである複数の情報処理装置PC1〜PC3(以下、「情報処理装置PC」あるいは「node(ノード)」とも総称する。)を含む。本明細書において、「node」は、ネットワーク接続されたデバイス一般を示し、特に、ネットワーク上を伝送される情報(データ)を受信して、当該情報を自身で処理可能なデバイスを示す。
【0022】
これらの情報処理装置PC1〜PC3の各々は、ワークスペースを定義するファイル(以下、「ワークスペース定義ファイル」とも称す。)を保持することで、複数のユーザによる同時アクセス可能な仮想空間(共同作業空間)を提供する。すなわち、いずれかの情報処理装置PC上でユーザ操作によってワークスペース定義ファイルが変更されると、当該変更後のワークスペース定義ファイルを変更するための情報(変更に係るワークスペース定義ファイルの全部または一部)が他の情報処理装置PCにも送信される。このような同期処理が随時行われることで、すべての情報処理装置PCにおいて、実質的に同一のワークスペースが提供されることになる。
【0023】
なお、それぞれの情報処理装置PCは、論理的に相互にデータ通信可能であれば、必ずしも同一階層のネットワークに接続されている必要はない。
【0024】
<ハードウェア構成>
図2は、この発明の実施の形態に従う情報処理装置PCの代表例であるパーソナルコンピュータの概略のハードウェア構成を示す模式図である。
【0025】
図2を参照して、本実施の形態に従う情報処理装置PCは、オペレーティングシステムを含む各種プログラムを実行するCPU201と、CPU201でのプログラムの実行に必要なデータを一時的に記憶する記憶部としてのメモリ部213と、CPU201で実行されるプログラムを不揮発的に記憶するハードディスク部(HDD)211とを含む。このようなプログラムは、CD−ROM(Compact Disk-Read Only Memory)ドライブ215またはフレキシブルディスク(FD:Flexible Disk)ドライブ217によって、それぞれCD−ROM215aまたはフレキシブルディスク217aなどから読取られる。
【0026】
CPU201は、キーボードやマウスなどからなる入力装置209を介してユーザによる操作要求を受取るとともに、プログラムの実行によって生成される画面出力を表示部であるモニター205へ出力する。また、CPU201は、LANカードなどからなる通信6インターフェイス207を介して、他の情報処理装置PCやサーバ装置SRVとの間でデータ通信を行なう。なお、これらの部位は、内部バス203を介して互いに接続される。
【0027】
なお、本明細書における「node」として機能するデバイスであれば、どのようなデバイスを用いてもよく、たとえば通信機能を備えた携帯電話などを用いることもできる。
【0028】
<ワークスペース>
本明細書において「ワークスペース」とは、複数のユーザによる同時アクセス可能な仮想空間を意味し、ワークスペース定義ファイルおよび当該ワークスペース定義ファイルに含まれる任意数のオブジェクトデータなどによってワークスペースは提供される。なお、本明細書中では、ワークスペース定義ファイルおよびオブジェクトデータなどをレンダリング(可視化)したものを「ワークスペース」という場合もある。
【0029】
図3は、この発明の実施の形態に従うワークスペースWSの一例を模式的に示す図である。
【0030】
図3(a)には、可視化されたワークスペースWSの全体構造の一例を示す。このワークスペースWSには、一例として、オブジェクトOBJ1〜OBJ8が既に作成されているとする。なお、本明細書において「オブジェクト」とは、ユーザによる各操作の対象となる対象物の単位であり、具体的には、文書ファイルや表計算ファイルといったファイルオブジェクト(file)、JPEG形式やGIF形式などの画像オブジェクト(image)、文字を示すテキストオブジェクト(text)、描画を示す線オブジェクト(line)といった任意の電子的に取扱可能な情報を用いることができる。なお、ファイルオブジェクトや画像オブジェクトについては、ワークスペース定義ファイルとは別の実体ファイルが用意されており、ワークスペース定義ファイル中に当該実体ファイルへのリンク情報(リンクアドレス)が記述される。このようなファイルオブジェクトや画像オブジェクトについては、ワークスペースWS上で、その内容を参照したり表示したりすることが可能である。また、本明細書において「オブジェクト」には、ワークスペース定義ファイル中に定義されたファイルオブジェクトや画像オブジェクトのリンク先である実体ファイル自体を含む。
【0031】
図3(a)に示す例では、オブジェクトOBJ1として「ファイルオブジェクト」を例示し、オブジェクトOBJ2,OBJ3として「画像オブジェクト」を例示し、オブジェクトOBJ4,OBJ6として「線オブジェクト」を例示し、オブジェクトOBJ5,OBJ7,OBJ8として「テキストオブジェクト」を例示する。
【0032】
ワークスペースWSのサイズは自在に設定することができ、一般的に、各情報処理装置PCのモニター205の表示サイズに比較して大きくなるように設定される。そのため、各情報処理装置PCのモニター205には、図3(b)に示すようにワークスペースWSの一部の領域だけがレンダリング(可視化)される場合が多い。
【0033】
ユーザは、キーボードやマウスなどからなる入力装置209(図2)を用いて、ワークスペースWSのうちモニター205にレンダリングする領域を選択し、また各種操作ボタンを選択したり、表示されるオブジェクトを選択してドラッグしたりすることで、各オブジェクトの新規作成、変更、削除といった操作が可能である。また、ワークスペースWSのうち各情報処理装置PCのモニター205に表示される領域を表示エリアVAとも称する。
【0034】
<全体処理概要>
本実施の形態に従うワークスペースでは、各nodeにおいて、「共同作業モード」と「個人作業モード」との切替機能が提供される。
【0035】
この共同作業モードでは、ワークスペースWSに参加しているnodeの間で、ワークスペース定義ファイルが随時(あるいは、所定の定周期で)同期される。すなわち、いずれかのnodeのユーザが何らかの操作を行なうと、当該操作は他のnodeの保持するワークスペース定義ファイルにも反映される。そのため、すべてのnodeで実質的に同一のワークスペースWSが提供される。
【0036】
一方、「個人作業モード」では、各nodeはワークスペースWSから論理的に離脱した状態となっており、各nodeのユーザは、自nodeに保持されているワークスペース定義ファイルおよびリンク付けされているファイルなどに対して、単独の操作(作業)が可能である。なお、この個人作業モードでは、ワークスペース定義ファイルについての同期処理は停止される。
【0037】
後述するように、本実施の形態に従うワークスペースWSでは、共同作業モードから個人作業モードに移行する直前にワークスペースWSに含まれていたオブジェクト(以下、「共有オブジェクト」とも称す。)に対しては、個人的な変更などの操作は禁止される。それに代えて、ユーザがいずれかの共有オブジェクトに対して変更などの操作を行なった場合には、当該共有オブジェクトから局所オブジェクトが派生的に生成され、当該局所オブジェクトにその操作が反映される。ここで、「局所オブジェクト」とは、主として、個人作業モードにおいて、いずれかのnodeにおいて作成されたオブジェクトを意味する。
【0038】
以下、図4〜図7を参照して、本実施の形態に従う全体処理の概要について説明する。図4は、図3(a)に示すワークスペースWSの状態からnode1が個人作業モードに移行した後、node1のユーザAによる作業中の状態の一例を示す図である。図5は、図3(a)に示すワークスペースWSの状態からnode2が個人作業モードに移行した後、node2のユーザBによる作業中の状態の一例を示す図である。図6は、図3(a)に示すワークスペースWSの状態からnode3が個人作業モードに移行した後、node3のユーザCによる作業中の状態の一例を示す図である。図7は、図4〜図6に示す個人作業モードから共同作業モードへ復帰した後の状態の一例を示す図である。
【0039】
図4を参照して、たとえば、node1を使用する(ログインしている)ユーザAが、共同作業モードから個人作業モードへモード切替を行ない、ワークスペースWSに配置されていた、文書ファイルであるオブジェクトOBJ1に対して個人的な変更を行なおうとする場合について例示する。
【0040】
上述したように、共同作業モードから個人作業モードに移行する直前にワークスペースWSに含まれていたオブジェクトについての個人的な変更などの操作は禁止される。そのため、ユーザAによるオブジェクトOBJ1に対する変更操作によって、オブジェクトOBJ1をコピーしたオブジェクトOBJ1Aが派生的に生成される。図4に示すように、node1のユーザAが共有オブジェクトであるオブジェクトOBJ1を変更して得られた結果が局所オブジェクト(あるいは、派生オブジェクト)であるオブジェクトOBJ1Aであるとする。
【0041】
同様に、図5を参照して、たとえば、node2を使用するユーザBが、共同作業モードから個人作業モードへモード切替を行ない、ワークスペースWSに配置されていた、文書ファイルであるオブジェクトOBJ1に対して個人的な変更を行なったとする。このユーザBによるオブジェクトOBJ1に対する変更操作によって、オブジェクトOBJ1からオブジェクトOBJ1Bが派生的に生成される。さらに、node2のユーザBは、このオブジェクトOBJ1Bの変更後に、他のユーザに向けたメッセージ「コメントは3点」であるオブジェクトOBJ1Btを新たに作成したものとする。
【0042】
同様に、図6を参照して、たとえば、node3を使用するユーザCが、共同作業モードから個人作業モードへモード切替を行ない、ワークスペースWSに配置されていた、文書ファイルであるオブジェクトOBJ1に対して個人的な変更を行なったとする。このユーザCによるオブジェクトOBJ1に対する変更操作によって、オブジェクトOBJ1からオブジェクトOBJ1Cが派生的に生成される。さらに、node3のユーザCは、このオブジェクトOBJ1Cの変更後に、他のユーザに向けたメッセージ「修正済」であるオブジェクトOBJ1Ctを新たに作成したものとする。
【0043】
その後、それぞれのnodeにおいて個人作業モードから共同作業モードへのモード切替(復帰操作)が行なわれると、後述するように、各nodeの間で同期処理が実行され、各nodeにおける個人作業モードでの結果がワークスペース定義ファイルに反映される。その結果、各nodeのモニター205には、図7に示すようなワークスペースWSが表示される。
【0044】
図7に示すように、共有オブジェクトであるオブジェクトOBJ1と、個人作業モードにおいて各ユーザの操作によって生成されたオブジェクトOBJ1A,OBJ1B,OBJ1Cとの派生関係が、視覚的に表現される。さらに、付加されたメッセージであるオブジェクトOBJ1BtおよびOBJ1Ctについても、それぞれ対応するオブジェクトOBJ1BおよびOBJ1Cとに関連付けて表示される。
【0045】
このように、本実施の形態に従うワークスペースWSでは、共同作業モードにおける作業結果と個人作業モードにおける作業結果とを互いに関連付けつつ、独立のオブジェクトとして管理および視覚化する。そのため、各ユーザが単独で行なった作業結果をワークスペースWSに確実に反映することができ、これにより効率的な共同作業を実現することができる。
【0046】
<データ構造>
次に、本実施の形態に従うワークスペースWSを構成するためのワークスペース定義ファイル100のデータ構造について説明する。各データは、代表的に、XMLなどのマークアップ言語で記述される。これは、タグ(<>と</>とで囲まれる文字に与える属性)を自在に設定することでシステムの拡張性を高めるためである。
【0047】
図8は、この発明の実施の形態に従うワークスペース定義ファイル100の内容の一例を示す図である。なお、図8に示す内容は、図3(a)に示すワークスペースWSに対応している。
【0048】
図8を参照して、ワークスペース定義ファイル100は、当該ワークスペースを特定するためのワークスペースタグ110と、オブジェクトOBJ1〜OBJ8をそれぞれ定義する記述121〜128とを含む。なお、図8に示すワークスペース定義ファイル100には、後述するように、予め定められたユーザ色情報を定義する記述161が含まれるが、このユーザ色情報は必ずしも必要ではない。
【0049】
ワークスペースタグ110は、ワークスペースの識別番号(space id)や文字エンコーディング属性(encoding)などを含む。図8に示す例では、識別番号=「AB12」である。なお、後述するように、ワークスペースタグ110には、個人作業モードであることを示す属性(mode="local")が付加される。
【0050】
各オブジェクトは、<object>タグと</object>タグとの間の記述によって定義され、これらの記述121〜128の各々には、各オブジェクトの識別番号(object id)、各オブジェクトの種類(type)、配置される座標位置(point)、実体ファイルのリンクアドレス(src)、各オブジェクトのオーナー(user)などが含まれる。
【0051】
より具体的には、<object id>タグには、各オブジェクトを一意に特定する識別番号が定義され、<type>タグには、各オブジェクトの種類(file:ファイルオブジェクト、image:画像オブジェクト、text:テキストオブジェクト、line:線オブジェクト)が定義される。また、<point>タグには、各オブジェクトまたは各オブジェクトを構成する要素についてのワークスペースWS上の座標位置が定義される。<src>タグには、関連付けされた実体ファイルのリンクアドレスが定義される。<user>タグには、各オブジェクトのオーナーが定義される。この各オブジェクトのオーナーとしては、各オブジェクトの作成や変更を行なったユーザが記述される。あるいは、ワークスペースWSに参加するユーザが任意に設定してもよい。本実施の形態では、各オブジェクトを作成したユーザがオーナーとして記述される。
【0052】
たとえば、オブジェクトOBJ1に対応する記述121には、<object id>タグにおいて、識別番号が「CX11」であることが定義され、<type>タグにおいて、ファイルオブジェクトであることを示す「file」が定義される。さらに、<point>タグにおいて、x='100' y='300'の位置に配置されることが定義され、<src>タグにおいて、実体のファイルを特定する「salesplan.doc」が定義され、<user>タグにおいて、オブジェクトOBJ1のオーナーが「ユーザA」であることが定義される。
【0053】
なお、図8では、1つのワークスペース定義ファイル100を用いて、ワークスペースWSを構成する例について例示したが、複数のファイルを用いて同等の情報を定義してもよい。たとえば、各オブジェクトが定義されたファイルを、リレーショナルデータベースなどを用いて互いに関連付けた構成などを採用することができる。
【0054】
また、情報処理装置PC群の間で任意の数のワークスペースWSを共有することも可能である。この場合には、上述のワークスペースの識別番号(space id)の値に基づいて、対象のワークスペースWSが特定される。
【0055】
<制御構造>
図9は、この発明の実施の形態に従う各情報処理装置PCの制御構造を示すブロック図である。図10は、図9に示す作業モード制御部250のより詳細な制御構造を示すブロック図である。
【0056】
図9を参照して、各情報処理装置PCは、その制御構造として、作業モード制御部250と、データ操作部252と、同期制御部254と、描画部256と、ユーザ認証部258と、データ送受信部260と、データ格納部262とを含む。データ格納部262は、ハードディスク部211(図2)の任意の領域として提供され、データ送受信部260は、通信インターフェイス207(図2)および関連するドライバソフトの協同によって提供され、その他の各部は、代表的に、CPU201(図2)がプログラムをメモリ部213(図2)に展開し、各コマンドを実行することで提供される。
【0057】
また、データ格納部262は、ワークスペースを構成するためのワークスペース定義ファイル100と、ワークスペース定義ファイル100内でリンクされた実体ファイル120と、ワークスペース定義ファイル100と実体ファイル120とのリンク関係を記述したリンクリスト140と、ネットワークNW(図1)を介して接続可能な他のnode(情報処理装置PC)を特定するための情報(たとえば、IPアドレスなどの各nodeを一意に特定できるユニークな宛て先情報)をリスト形式で記述した接続テーブル160とを含む。
【0058】
作業モード制御部250は、本実施の形態に従う情報処理装置PCの特徴的な処理を提供する部位であり、自装置において共同作業モードと個人作業モードとの間の切替指示が与えられると、共同作業モードにおいて作成済のオブジェクトを保護(いわゆる「読出専用」)するとともに、個人作業モードにおいて各ユーザの作業結果を記憶し、共同作業モードに復帰した後に、ワークスペースWSに反映する。
【0059】
図10を参照して、作業モード制御部250は、モード切替部250Aと、オブジェクト属性管理部250Bと、リンクリスト管理部250Cと、派生制御部250Dとを含む。モード切替部250Aは、ユーザが入力装置209(図2)を介して入力する操作に基づいて、共同作業モードと個人作業モードとを切替える。そして、モード切替部250Aは、各時点における自装置において選択中のモードを必要に応じて他の部位へ伝える。
【0060】
オブジェクト属性管理部250Bは、上述したように、ワークスペースWSにおける各オブジェクトについての属性(共有オブジェクトまたは局所オブジェクト)を管理する。より具体的には、オブジェクト属性管理部250Bは、共有作業モードから個人作業モードへの切替えが実行されると、その直前においてワークスペースWS上に配置されていたオブジェクトを共有オブジェクトとして取扱う。そして、オブジェクト属性管理部250Bは、個人作業モードにおいて自装置のユーザの操作によって作成や変更などがなされたオブジェクトについては、局所オブジェクトとして取扱う。さらに、オブジェクト属性管理部250Bは、個人作業モードから共同作業モードへの切替えが実行されると、他のnodeとの間で同期処理を実行し、局所オブジェクトを他のnodeとの間で共有される共同オブジェクトに変更する。なお、オブジェクト属性管理部250Bは、共同作業モードから個人作業モードに切替えられると、ワークスペース定義ファイル100からワークスペース定義ファイル(ローカル)100Aを予め生成し、このワークスペース定義ファイル(ローカル)100Aに対して、その内容の変更を行なう。
【0061】
リンクリスト管理部250Cは、オブジェクト属性管理部250Bおよび派生制御部250Dと協働し、個人作業モードにおいて、ファイルオブジェクトや画像オブジェクトなどのオブジェクト定義ファイルとは別の実体ファイルの内容が変更された場合に、オブジェクト定義ファイルに記述されたオブジェクトと当該変更後の実体ファイルとの間のリンク関係を随時更新する。より具体的には、リンクリスト管理部250Cは、自装置におけるユーザ操作に応じて、リンクリスト140の記述内容を順次更新する。
【0062】
派生制御部250Dは、個人作業モードにおいて、ファイルオブジェクトや画像オブジェクトなどのオブジェクト定義ファイルとは別の実体ファイルに対する変更操作がなされた場合に、対象の実体ファイルをコピーして実体ファイル(ローカル)120Aを生成し、この実体ファイル(ローカル)120Aに対して、その内容の変更を行なう。
【0063】
再度、図9を参照して、データ操作部252は、ユーザによる入力装置209(図2)の操作に従って、オブジェクトの新規作成、変更、削除などを行なう。このユーザによる操作によって、データ操作部252は、データ格納部262に格納されているワークスペース定義ファイル100の追加、変更、削除などを行なう。
【0064】
同期制御部254は、ワークスペースWSを構成するワークスペース定義ファイル100を他のnode(情報処理装置PC)との間で同期する。すなわち、同期制御部254は、自nodeにおいてワークスペース定義ファイル100に何らかの変更がなされると、変更後のワークスペース定義ファイル100の全部または一部(差分)を、当該ワークスペースWSを形成する他のnodeへそれぞれ送信する。また、同期制御部254は、他のnodeから変更後のワークスペース定義ファイル100の全部または一部(差分)を受信すると、それに応じて、自装置のデータ格納部262に記憶されているワークスペース定義ファイル100を更新する。
【0065】
なお、上述したように、各情報処理装置PCにおいて何らかの操作がなされることをイベントとしてこのような同期処理が実行されるようにしてもよいし、これに加えて、あるいはこれに代えて、所定周期毎に、ワークスペースWSに参加するすべてのnode(情報処理装置PC)の間で、データの一致/不一致をつきあわせ、この結果に応じて、ワークスペース定義ファイル100の内容を変更するようにしてもよい。
【0066】
描画部256は、ワークスペース定義ファイル100の情報のうち、ユーザにより指定される所定範囲に含まれる情報に基づいて、描画処理(レンダリング処理)を行なう。すなわち、描画部256は、ワークスペースWSのうちユーザが指定した領域を可視化する。より具体的には、描画部256は、ワークスペース定義ファイル100を参照して、モニター205(図2)に表示すべき画像を示すデータを図示しないビデオメモリに周期的に出力する。このビデオメモリに格納されるデータに応じて、モニター205には画像が表示される。
【0067】
ユーザ認証部258は、各情報処理装置PCを使用するユーザに対するユーザ認証処理を実行する。具体的には、ユーザ認証部258は、いずれかのユーザが各情報処理装置PCの使用開始時に、IDおよびパスワードの入力を促す。そして、ユーザからIDおよびパスワードの入力があると、予め格納されたユーザテーブル(図示しない)、あるいはユーザ認証サーバ(図示しない)に問合せを行ってユーザ認証処理を行なう。ユーザ認証が成功すると、ユーザによる当該情報処理装置PCの使用を許可するとともに、現在使用中(ログイン中)のユーザ名を保持する。なお、本実施の形態に従う情報処理装置PCでは、各装置を使用するユーザを識別できればよいので、パスワードを必ずしも要求しなくてもよい。
【0068】
データ送受信部260は、他のnode(情報処理装置PC)との間のデータ通信を制御する。具体的には、データ送受信部260は、同期制御部254からの要求に応じて、データ格納部262に格納されているワークスペース定義ファイル100の全部または一部を読み出して他のnodeへ送信し、あるいは、他のnodeから受信したワークスペース定義ファイル100の全部または一部を同期制御部254へ渡す。なお、データ送受信部260は、データ格納部262に格納されている接続テーブル160を参照して、データの送受信を行なう相手を特定する。
【0069】
図11は、この発明の実施の形態に従うリンクリスト140の内容の一例を示す図である。なお、図11に示す内容は、図8に示すワークスペース定義ファイル100に対応している。
【0070】
図11を参照して、情報処理装置PCの各々は、ワークスペース定義ファイル100中に記述された実体ファイルへのリンク情報の数と同数のリンクリスト140を保持する。より具体的な一例として、図8に示すワークスペース定義ファイル100中には、リンク情報を含むオブジェクトとして、記述121,122,123(オブジェクトOBJ1,OBJ2,OBJ3)が含まれている。
【0071】
この記述121では、識別番号が「CX11」として、リンク先の実体ファイルが「salesplan.doc」であり、かつユーザが「ユーザA」として定義されている。この定義に対応させて、図11に示すような、「実体ファイル名」と、「ID」と、「User」とを対応付けたリンクリストが予め用意されている。同様に、図8に示すワークスペース定義ファイル100に含まれる記述122の内容を反映したリンクリストが予め用意される。
【0072】
以下同様にして、ワークスペース定義ファイル100中に存在するリンク情報を含むオブジェクトの各々に対応付けてリンクリスト140が予め用意される。なお、ワークスペース定義ファイル100中に何らかのリンク情報を含むオブジェクトが新規作成されると、これに応じてリンクリストも新規作成される。
【0073】
<共同作業モードにおける概略処理>
共同作業モードでは、各nodeがワークスペース定義ファイル100を共有することで、各nodeのユーザにワークスペースWSを提供する。このようなワークスペースWSを提供するため、共同作業モードでは、node間でワークスペース定義ファイル100の同期処理が継続的に実行される。
【0074】
まず、図12〜図15を参照して、本実施の形態に従うワークスペースの共同作業モードにおける同期処理について説明する。なお、図12〜図15に示す例は、図3(a)に示すワークスペースWSに対応している。
【0075】
図12は、この発明の実施の形態に従うワークスペースのある状態を示す図である。図13は、図12に示す状態において、node1でユーザ操作が行なわれた直後の状態を示す図である。図14は、図13の後に同期処理中の状態を示す図である。図15は、図14に示すユーザ操作に係る同期処理が完了した状態を示す図である。
【0076】
図12を参照して、共同作業モードにおいて同期処理が完了している状態では、node1〜node3の各々は、同一の内容が記述されたワークスペース定義ファイル100を保持している。
【0077】
次に、図12に示す状態において、node1のユーザが何らかの操作を行なった場合について説明する。一例として、node1のユーザがマウスなどの入力装置209を操作して、ワークスペースWS上のオブジェクトOBJ1(図3(a)参照)をドラッグし、オブジェクトOBJ1の位置を変更したとする。このnode1のユーザ操作に伴って、node1のデータ操作部252(図9)は、オブジェクトOBJ1の変更後の位置情報を取得し、自装置のデータ格納部262(図9)に格納されているワークスペース定義ファイル100中の対応するタグの値を変更する。
【0078】
具体的には、図13に示すように、node1の保持するワークスペース定義ファイル100のオブジェクトOBJ1を記述する<point>タグ108の値が「x='100' y='300'」から「x='200' y='300'」に書き換えられる。
【0079】
このワークスペース定義ファイル100の変更に伴って、node1の同期制御部254(図9)は、他のnodeに対して、この変更が反映されるように同期処理を実行する。具体的には、図14に示すように、node1の同期制御部254は、自装置におけるワークスペース定義ファイル100の変更後と変更前との差分を示す変更情報データ102を、ワークスペースWSに参加している他のnodeの各々へ送信(たとえば、マルチキャスト送信)する。なお、このワークスペースWSに参加しているnodeは、接続テーブル160を参照することで特定される。
【0080】
図14に示す変更情報データ102の内容の一例としては、行頭に「−」の記号を付した削除行指示104と、行頭に「+」の記号を付した追加行指示106とを含む。この削除行指示104は、現在のワークスペース定義ファイル100から削除すべき内容を示し、追加行指示106は、現在のワークスペース定義ファイル100に追加すべき内容を示す。
【0081】
なお、この変更情報データ102には、当該変更情報データ102の送信元および送信先と特定するための情報(図示しない)も併せて付加される。
【0082】
この変更情報データ102を受信したnode2およびnode3は、この変更情報データ102に基づいて、各自のデータ格納部262に格納されたワークスペース定義ファイル100の内容を変更する。この結果、図15に示すように、ワークスペースWSに参加しているすべてのnodeで変更後のワークスペース定義ファイル100が共通に保持されるようになる。
【0083】
以下、いずれのnodeにおいてユーザがなされたとしても、上述と同様の同期処理が実行される。
【0084】
<共同作業モードから個人作業モードへの切替時における処理>
次に、各nodeにおいて、共同作業モードから個人作業モードへの切替えられた場合の処理について説明する。
【0085】
共同作業モードから個人作業モードへ切替えられると、各nodeのオブジェクト属性管理部250B(図10)は、共同作業モードにおいて作成済のオブジェクトを保護(読出専用)し、かつ個人作業モードから共同作業モードへ復帰した際の同期処理を容易化するために、ワークスペース定義ファイル100をコピーして、個人作業モードでの操作を反映するためのワークスペース定義ファイル(ローカル)100A(図9)を生成する。
【0086】
図16は、図8に示すワークスペース定義ファイル100に対応するワークスペース定義ファイル(ローカル)100Aの内容の一例を示す図である。
【0087】
図16を参照して、生成直後のワークスペース定義ファイル(ローカル)100Aは、元のワークスペース定義ファイル100の内容と実質的に同一であるが、個人作業モードで用いられることを示すために、ワークスペースタグ110Aにおいて、「mode="local"」という属性が付加されている。
【0088】
<個人作業モードにおける処理>
次に、各nodeにおける個人作業モードにおける処理について説明する。なお、以下の説明では、node1〜node3のいずれもが個人作業モードに移行し、node1〜node3では、それぞれ図4〜図6に示すような操作がなされたものとする。
【0089】
(1.オブジェクトOBJ1の変更操作)
図4に示すように、node1のユーザAが、ワークスペースWS上に配置されていたオブジェクトOBJ1(実際は、実体ファイル120として保持される文書ファイル「salesplan.doc」)の内容を変更する場合を考える。なお、このオブジェクトOBJ1は、共有作業モードにおいて作成済であったので、共有オブジェクトとして取扱われ、node1のユーザAによる個人的な変更は許可されない。そのため、node1のユーザAが入力装置209(図2)を操作してオブジェクトOBJ1を選択すると、node1の派生制御部250D(図9)は、node1のデータ格納部262に格納されていた文書ファイル「salesplan.doc」をコピーして、ファイル名「salesplan.doc.local」という文書ファイルを生成する。なお、この文書ファイルは、一時的に生成されるものであり、代表的にメモリ部213(図2)に格納される。
【0090】
(2.実体ファイル(ローカル)の生成およびリンクリストの更新)
node1のユーザAがオブジェクトOBJ1に対する何らかの変更を行ない、当該変更内容の保存を指示すると、node1の派生制御部250Dは、変更後の文書ファイル(salesplan.doc.local)を、実体ファイル(ローカル)120A(図9)としてデータ格納部262に格納する。このとき、他のnodeにおいて変更されたオブジェクトOBJ1との間で識別可能となるように、一意のファイル名が付加される。たとえば、「salesplan.doc.pc1」といったファイル名が用いられる。
【0091】
また、リンクリスト管理部250C(図9)は、「salesplan.doc.pc1」というファイル名をもつ実体ファイル(ローカル)120Aが派生したことを、オブジェクトOBJ1に対応するリンクリスト140に記述する。
【0092】
図17は、この発明の実施の形態に従うリンクリスト140の更新後の内容の一例を示す図である。
【0093】
図17(a)を参照して、リンクリスト管理部250Cは、オブジェクトOBJ1のリンク情報として、ファイル名が「salesplan.doc」である実体ファイルのエントリに加えて、新たに生成されたファイル名が「salesplan.doc.pc1」である実体ファイルのエントリを追加する。ここで、リンクリスト管理部250Cは、他の実体ファイルとの間で一意である識別番号(この例では、「OW25」)を付加する。
【0094】
(3.ワークスペース定義ファイル(コピー)の更新)
上述した実体ファイルの生成に伴って、ワークスペース定義ファイル(コピー)100Aの記述内容についても更新が行なわれる。
【0095】
より具体的には、オブジェクト属性管理部250B(図2)は、ワークスペース定義ファイル(ローカル)100Aに、ユーザAにより生成された実体ファイル(salesplan.doc.pc1)をリンクアドレスとするオブジェクトOBJ1Aの記述を追加する。
【0096】
図18は、図17(a)に示す実体ファイルの生成に伴って追加されるオブジェクトOBJ1Aの記述141の一例を示す図である。
【0097】
図18を参照して、オブジェクト属性管理部250B(図2)は、オブジェクトOBJ1Aに対応する記述141をワークスペース定義ファイル(ローカル)100Aに追加する。この記述141には、局所オブジェクトであることを示す<localObject/>タグが付加される。そして、<object id>タグにおいて、識別番号が「OW25」であることが定義され、<type>タグにおいて、ファイルオブジェクトであることを示す「file」が定義される。さらに、<point>タグにおいて、x='100' y='300'の位置に配置されることが定義され、<src>タグにおいて、実体のファイルを特定する「salesplan.doc.pc1」が定義され、<user>タグにおいて、オブジェクトOBJ1Aのオーナーが「ユーザA」であることが定義される。
【0098】
なお、図18に示す例では、派生元の共有オブジェクトOBJ1の配置位置と同じ位置にオブジェクトOBJ1Aが配置されるので、以下に述べるように、両者が互いに重複して表示されないように、派生元の共有オブジェクトOBJ1をワークスペースWS上に表示されないように変更される。
【0099】
図19は、図17(a)に示す実体ファイルの生成に伴って変更される共有オブジェクトOBJ1の記述121の一例を示す図である。
【0100】
図19を参照して、オブジェクト属性管理部250Bは、ワークスペース定義ファイル(ローカル)100A中の共有オブジェクトOBJ1に対応する記述121に対して、当該オブジェクトが不可視であることを示す<invisible/>タグを付加する。この<invisible/>タグの付加によって、共有オブジェクトOBJ1は、レンダリングの対象から除外される。
【0101】
図20は、この発明の実施の形態に従うワークスペース定義ファイル(コピー)の更新処理によって生成されるワークスペース定義ファイル100の内容の一例を示す図である。上述のようなワークスペース定義ファイル(コピー)の更新処理によって、図20に示すようなワークスペース定義ファイル(ローカル)100Aが生成される。
【0102】
図20に示すワークスペース定義ファイル(ローカル)100Aでは、図8に示す個人作業モードへの切替直前のワークスペース定義ファイル100に比較して、ワークスペースタグ110および記述121の内容が変更され、かつオブジェクトOBJ1Aに対応する記述141が追加されている。
【0103】
(4.オブジェクト同士の関連付け処理(その1))
node2のユーザBについても、上述したnode1のユーザAと同様に、ワークスペースWS上に配置されていたオブジェクトOBJ1の内容を変更したとする(図5参照)。なお、node2では、上述したnode1と同様に、文書ファイル「salesplan.doc」から実体ファイル(ローカル)120A(salesplan.doc.pc2)が生成されるとともに、リンクリスト140の内容が更新される(図17(b)参照)。これらの処理の詳細については、上述したnode1と同様であるので繰り返さない。
【0104】
このとき、変更したオブジェクトOBJ1に関して、メッセージ(コメント)、矢印、画像などのオブジェクトを追加したい場合もある。そして、このようなオブジェクトは、オブジェクトOBJ1Bに関連付けておくことが好ましい。なお、関連付けるとは、オブジェクトOBJ1Bの移動や削除などを行った場合には、関連付けられたオブジェクトも同時に移動や削除されることを意味する。なお、通常、関連付けられたオブジェクトが削除されたとしても、参照元のオブジェクトOBJ1Bは削除されない。
【0105】
このようなオブジェクト同士の関連付け処理(その1)について以下説明する。なお、オブジェクト同士の関連付け処理(その1)では、ユーザが任意に指定したオブジェクトと局所オブジェクトとを関連付ける、いわゆる手動操作の処理である。
【0106】
再度、図5を参照して、node2のユーザBが文書ファイル「salesplan.doc」を変更するとともに、この文書ファイルに関して、「コメントは3点」というメッセージ(オブジェクトOBJ1Bt)を作成した場合について説明する。
【0107】
node2のユーザBは、このメッセージの作成前に、関連付け対象であるオブジェクトOBJ1Bを選択(指定)することで、ワークスペース定義ファイル(ローカル)100Aの記述内容についての更新が行なわれ、メッセージ(局所オブジェクト)を関連付けることができる。
【0108】
図21は、図5に示すオブジェクトOBJ1Bの作成に伴って、ワークスペース定義ファイル(ローカル)100Aに追加される記述143の一例を示す図である。図22は、図5に示すオブジェクトOBJ1Btの新規作成に伴って、ワークスペース定義ファイル(ローカル)100Aに追加される記述142の一例を示す図である。
【0109】
まず、node2のオブジェクト属性管理部250B(図2)は、node2のデータ格納部262に格納されているワークスペース定義ファイル(ローカル)100Aに、図21に示すような、ユーザBにより生成された実体ファイル(salesplan.doc.pc2)をリンクアドレスとするオブジェクトOBJ1Bの記述143を追加する。なお、この時点では、タグ143Aの記述は存在しない。
【0110】
続いて、node2のユーザBがオブジェクトOBJ1Bを選択した上で、「コメントは3点」というメッセージ(オブジェクトOBJ1Bt)を新規作成すると、node2のオブジェクト属性管理部250B(図2)は、node2のデータ格納部262に格納されているワークスペース定義ファイル(ローカル)100Aに、図22に示すような、オブジェクトOBJ1Btを定義する記述142を追加する。さらに、このオブジェクトOBJ1Btの識別番号(object id)である「NJ45」をキーにして、オブジェクトOBJ1Bの記述143に両オブジェクトの関連付けを記述する<relation>タグ143Aが追加される。
【0111】
このような処理によって、オブジェクトOBJ1B(記述143)には、オブジェクトOBJ1Bt(記述142)が関連付けられていると判断することができる。
【0112】
(5.オブジェクト同士の関連付け処理(その2))
上述のオブジェクト同士の関連付け処理(その1)では、ユーザが任意に選択したオブジェクトとの間で関連付けがなされる構成について例示したが、自動的にオブジェクト同士の関連付け処理を行なうようにしてもよい。以下、オブジェクト同士の関連付け処理(その2)では、このようなオブジェクト同士が自動的に関連付けられる構成について例示する。
【0113】
一例として、node3のユーザCについても、上述したnode1のユーザAと同様に、ワークスペースWS上に配置されていたオブジェクトOBJ1の内容を変更したとする(図6参照)。なお、node3では、上述したnode1と同様に、文書ファイル「salesplan.doc」から実体ファイル(ローカル)120A(salesplan.doc.pc3)が生成されるとともに、リンクリスト140の内容が更新される(図17(c)参照)。これらの詳細については、上述したnode1と同様であるので繰り返さない。
【0114】
再度、図6を参照して、さらに、node3のユーザCが文書ファイル「salesplan.doc」を変更するとともに、この文書ファイル(オブジェクトOBJ1C)に近接した位置に、「修正済み」というメッセージ(オブジェクトOBJ1Ct)を作成した場合について説明する。
【0115】
図23は、この発明の実施の形態に従うオブジェクト同士の関連付け処理(その2)の概要を説明するための図である。図24は、図6に示すオブジェクトOBJ1Cの作成に伴って、ワークスペース定義ファイル(ローカル)100Aに追加される記述145の一例を示す図である。図25は、図6に示すオブジェクトOBJ1Ctの作成に伴って、ワークスペース定義ファイル(ローカル)100Aに追加される記述144の一例を示す図である。
【0116】
図23を参照して、node3では、ユーザCにより新規作成されたメッセージ(オブジェクトOBJ1Ct)の配置位置が既に配置されているいずれかの局所オブジェクトまたは共有オブジェクトの配置位置から所定距離APR内にあるか否かを判断し、新規作成されたメッセージがその所定距離APR内にあり、かつその距離が最も小さい局所オブジェクトまたは共有オブジェクトを参照元のオブジェクトと決定する。なお、所定距離内であるか否かの判断は、ワークスペース定義ファイル(ローカル)100Aに記述された各オブジェクトの<point>タグの属性値(座標位置)に基づいて判断される。
【0117】
図23に示す例では、オブジェクトOBJ1Ctは、オブジェクトOBJ1Cから所定距離APR内にあるので、オブジェクトOBJ1Cと関連付けるべきものと判断される。
【0118】
node3のユーザCが共有オブジェクトOBJ1に対して変更操作を行なうと、node3のオブジェクト属性管理部250B(図2)は、node3のデータ格納部262に格納されているワークスペース定義ファイル(ローカル)100Aに、図24に示すような、ユーザCにより生成された実体ファイル(salesplan.doc.pc3)をリンクアドレスとするオブジェクトOBJ1Cの記述145を追加する。なお、この時点では、タグ145Aの記述は存在しない。
【0119】
続いて、node3のユーザCがメッセージ(オブジェクトOBJ1Ct)を新規作成し、図23に示すように、この新規作成されたオブジェクトOBJ1Ctは、オブジェクトOBJ1Cに関連付けるべきものと判断されると、node3のオブジェクト属性管理部250B(図2)は、node3のデータ格納部262に格納されているワークスペース定義ファイル(ローカル)100Aに、図25に示すような、オブジェクトOBJ1Ctを定義する記述144を追加する。さらに、このオブジェクトOBJ1Ctの識別番号(object id)である「JK58」をキーにして、オブジェクトOBJ1Cの記述145に両オブジェクトの関連付けを記述する<relation>タグ145Aが追加される。
【0120】
このような処理によって、オブジェクトOBJ1C(記述145)には、オブジェクトOBJ1Ct(記述144)が関連付けられていると判断することができる。
【0121】
なお、オブジェクト同士の関連付け処理(その1)および同(その2)について説明したが、いずれか一方の処理のみを実装するようにしてもよく、あるいは両方の処理をユーザが任意に選択できるようにしてもよい。
【0122】
<個人作業モードから共同作業モードへの切替時における処理>
上述したように、個人作業モードでは、各ユーザが任意に個人的な作業を行なうことができる。その後、個人作業モードから共同作業モードへの切替が行なわれると、これらの各ユーザによる作業結果を反映したワークスペースを提供する必要がある。そこで、個人作業モードから共同作業モードへの切替が行なわれると、以下のような共同作業モード開始処理およびマージ処理が実行される。以下、これらの処理について説明する。
【0123】
(1.共同作業モード開始処理)
図26は、この発明の実施の形態に従う共同作業モードの開始処理を示すシーケンス図である。なお、図26に示すシーケンス図は、共同作業モードが開始されていない状態において、node1およびnode2において、個人作業モードから共同作業モードへの切替が指示された場合の処理例を示す。なお、共同作業モードは、2つ以上のnodeの間で構成されるため、1つのnodeにおいて個人作業モードから共同作業モードへの切替が指示されたとしても、個人作業モードが実質的に維持される。
【0124】
図26を参照して、まず、個人作業モードから共同作業モードへの切替が指示されると、各nodeでは、通信ポートを受信可能状態に変更し、他のnodeからのパケットの待ち状態になる(シーケンスSQ100,SQ102)。なお、この待ち状態を維持する期間(待機期間)は、ランダムに決定されてもよい。
【0125】
続いて、所定の待機期間が経過しても、他のnodeから何らのパケットも受信できない場合には、再参加したいワークスペースの識別番号(space id)を用いて他のnodeへ問い合わせを行なう(シーケンスSQ104)。図26に示す例では、node1がまず他のnodeへの問い合わせを行なう。ここでは、他のnodeが既にワークスペースに参加中であるか否かの問い合わせを行なう。なお、この問い合わせは、代表的に、マルチキャスト送信され、自nodeに近接した範囲のnodeへ問い合わせが行なわれる。
【0126】
この問い合わせを受信したnodeでは、「問い合わせを受けた識別番号(space id)のワークスペースに参加中」、「問い合わせの受けた識別番号(space id)のワークスペースには参加していない」、「問い合わせの受けた識別番号(space id)のワークスペースへの参加を待っている(=待ち状態)」の3種類のうちいずれかを返答する。
【0127】
図26の例では、node2は、待ち中の識別番号(space id)を確認し(シーケンスSQ106)、受信した識別番号(space id)に対して、「問い合わせの受けた識別番号(space id)のワークスペースへの参加を待っている(=待ち状態)」旨を応答する(シーケンスSQ108)。その後、node2は、所定期間だけ待ち状態を維持する(シーケンスSQ110)。これは、応答先のnodeから何らかの通知があるのを待つためである。
【0128】
さらに、node1は、node2から同じ識別番号(space id)のワークスペースへの参加を待っている状態であることを通知されると、共同作業モードを開始する(シーケンスSQ112)。続いて、node1は、共同作業モード開始をnode2を含む他のnodeへ通知する(シーケンスSQ114)。この共同作業モード開始の通知を受けてnode2も共同作業モードを開始する(シーケンスSQ116)。
【0129】
なお、シーケンスSQ108において、いずれかのnodeから「問い合わせを受けた識別番号(space id)のワークスペースに参加中」旨の応答を受信すると、当該応答の送信元との間で通信を行なって、共同作業モードを開始する。この場合には、シーケンスSQ114の処理は行なわれず、既にワークスペースに参加している全nodeとの間で順次通信を行なう。すなわち、いずれかのnodeにおいて個人作業モードから共同作業モードへの切替指示が与えられた際に、すでに他の複数のnodeの間で共同作業モードが開始されている場合には、このような処理が実行される。
【0130】
このように、共同作業モードが開始されると、後述するような、node間でワークスペース定義ファイルのマージ処理が実行される。
【0131】
(2.マージ処理)
本実施の形態に従うワークスペースでは、基本的に2つのnode間でマージ処理が実行される。すなわち、3つ以上のnodeが共通のワークスペース参加している場合であっても、まず2つのnodeの間でマージ処理が実行され、さらに当該マージ処理を行なったいずれかのnodeとそれ以外のnodeとの間でさらにマージ処理が実行される。このように、2つのnodeの間でマージ処理が順次実行されることで、ワークスペースに参加しているnodeの数が多くなった場合であっても、各ユーザによる個人作業の結果を共通のワークスペースに反映させることができる。
【0132】
本実施の形態に従うマージ処理では、いずれか一方のnodeが「マージ親」となり、他方のnodeが「マージ子」となる。基本的に「マージ親」となったnodeが主体的にマージ処理を実行する。そして、マージ処理によって生成されたワークスペース定義ファイルは、「マージ親」となったnodeから「マージ子」となったnodeへ配布される。
【0133】
(2−1.同期処理)
図27は、この発明の実施の形態に従うマージ処理を含む全体処理を示すシーケンス図である。なお、図27のシーケンスSQ100〜SQ116の処理については、図26に示す処理と同様であるので、詳細な説明は繰り返さない。
【0134】
図27に示す例では、他のnodeへの問い合わせ(シーケンスSQ104)を先に実行したnode1が「マージ親」となり、これに応答したnode2が「マージ子」となる場合を示す。
【0135】
まず、「マージ子」であるnode2は、自nodeのデータ格納部262に保持しているリンクリスト140を「マージ親」であるnode1へ送付する(シーケンスSQ202)。node1は、node2から受信したリンクリストと自nodeのデータ格納部262に保持しているリンクリスト140とを比較し、自nodeのリンクリスト140の更新・追加を行なう(シーケンスSQ204)。より具体的には、自nodeのリンクリスト140に存在しないエントリが他nodeから受信したリンクリスト140にふくまれている場合には、当該エントリを自nodeのリンクリスト140に追加する。なお、「マージ親」であるnode1が保持していないオブジェクトが新規に生成されていた場合には、node1は当該オブジェクトについてのリンクリストを保持していないので、「マージ子」であるnode2から送信されたリンクリストをそのまま格納する。
【0136】
同様に、node1は、自nodeのデータ格納部262に保持しているリンクリスト140を「マージ子」であるnode2へ送付する(シーケンスSQ206)。node2は、node1から受信したリンクリストと自nodeのデータ格納部262に保持しているリンクリスト140とを比較し、自nodeのリンクリスト140の更新・追加を行なう(シーケンスSQ208)。これにより、「マージ親」および「マージ子」が共に保持しているオブジェクトに対する変更内容が共有される。
【0137】
図28は、図17に示すnode1〜node3の間で同期がなされた後のリンクリスト140の内容の一例を示す図である。図28を参照して、各nodeにおいて、リンクリスト140に追加された内容(エントリ)が順次追加されることで、各nodeでは、
すべてのエントリの内容を含む(マージされた)リンクリストが生成される。
【0138】
再度、図27を参照して、node1は、更新・追加後のリンクリスト140を参照して、自nodeのデータ格納部262に保持していないオブジェクト(実体ファイル)の送付依頼をnode2へ送信する(シーケンスSQ210)。この送付依頼に応答して、node2は、指定されたオブジェクト(実体ファイル)をnode1へ送付する(シーケンスSQ212)。そして、node1は、node2から送付されたオブジェクト(実体ファイル)を自nodeのデータ格納部262に格納する。
【0139】
同様に、node2は、更新・追加後のリンクリスト140を参照して、自nodeのデータ格納部262に保持していないオブジェクト(実体ファイル)の送付依頼をnode1へ送信する(シーケンスSQ214)。この送付依頼に応答して、node1は、指定されたオブジェクト(実体ファイル)をnode2へ送付する(シーケンスSQ216)。そして、node2は、node1から送付されたオブジェクト(実体ファイル)を自nodeのデータ格納部262に格納する。
【0140】
このような処理によって、新規作成されたオブジェクトおよび変更が加えられたオブジェクトのいずれについても、node1とnode2との間で同期が取れたことになる。
【0141】
さらに、node1は、ワークスペース定義ファイル(ローカル)100Aの送付依頼をnode2へ送信する(シーケンスSQ218)。この送付依頼に応答して、node2は、自nodeのデータ格納部262に保持しているワークスペース定義ファイル(ローカル)100Aをnode1へ送付する(シーケンスSQ220)。
【0142】
「マージ親」であるnode1は、自nodeのワークスペース定義ファイル(ローカル)100Aに、「マージ子」であるnode2のワークスペース定義ファイル(ローカル)100Aに含まれるオブジェクト定義を追加する。ここで追加されるオブジェクト定義は、「マージ親」であるnode1のワークスペース定義ファイル(ローカル)100Aに存在しないオブジェクトの記述である。なお、変更操作は、すべて別のオブジェクト(局所オブジェクト)と見なされるため、「マージ子」であるnode2において変更された内容は、「マージ親」であるnode1において認識されていないオブジェクト定義となる。
【0143】
さらに、「マージ親」であるnode1は、自nodeのワークスペース定義ファイル(ローカル)100Aの内容を精査して、ワークスペース上の位置調整および紐付け処理を実行する(シーケンスSQ222およびSQ224)。
【0144】
(2−2.ワークスペース上の位置調整)
図27のシーケンスSQ222に示される「ワークスペース上の位置調整」について説明する。
【0145】
上述したように、各nodeでは、共有オブジェクトを保護しつつ、変更された共有オブジェクトについては局所オブジェクトを派生させた。これらの局所オブジェクトのワークスペース上の配置位置は、共有オブジェクトのそれと同じに設定されているので、これらの局所オブジェクトを反映させる場合には、各局所オブジェクトを派生元の共有オブジェクトとは同一ではないが、近接した位置に配置する必要がある。「ワークスペース上の位置調整」では、このような処理を実行する。
【0146】
たとえば、共有オブジェクトOBJ1(salesplan.doc)についてのリンクリスト140に記載されているエントリのうち、「salesplan.doc」を除く局所オブジェクトの配置位置を変更する処理について例示する。
【0147】
まず、ワークスペース定義ファイル(ローカル)100A中から、オブジェクトの識別番号(object id)に基づいて該当するオブジェクトの記述を探索し、各記述中の<point>タグの値を適切な位置を示す座標値に変更する。このとき、各オブジェクトの配置位置は認定に設定することが可能であるが、共有オブジェクトである「salesplan.doc」とは同一ではないが、近接した位置にすることが好ましい。
【0148】
このように各オブジェクトの位置を変更した後、ワークスペース定義ファイル(ローカル)100Aにおいて、共有オブジェクトに付加されていた<invisible/>タグが削除される。
【0149】
なお、「salesplan.doc」を除く局所オブジェクトについては、ワークスペース上で、より薄い色で表示されていてもよいし、重なって表示されていてもよいし、3D上に立体で表示されていてもよい。
【0150】
「salesplan.doc」を除く局所オブジェクトのそれぞれは、共有オブジェクトである「salesplan.doc」から派生しているオブジェクトなので、後述するように、このよう派性関係を視覚的に表示する。
【0151】
さらに、新たに追加されたオブジェクトの位置関係を最適化する。なお、新たに追加されたオブジェクトとは、「マージ親」から見た場合に新たに追加されたオブジェクトを意味し、言い換えれば、「マージ子」において新たに追加されたオブジェクト(但し、共有オブジェクトから派生した局所オブジェクトではない)を意味する。この新たに追加されたオブジェクトを配置する位置としては、ワークスペース上に既に配置されているいずれかのオブジェクトとは同一ではなく、かつ「マージ子」において定義されていた位置と近接した位置にすることが好ましい。
【0152】
なお、以上述べた処理は、(1)「マージ親」において記述されていた各オブジェクトの位置を変化させず、かつすべてのオブジェクトが極力重ならないようにする、(2)いずれかの共有オブジェクトから派生した局所オブジェクトについては、「マージ親」、「「マージ子」の順に派生元の共有オブジェクトに近接するように配置する、(3)「マージ子」において新たに追加されたオブジェクトは、「マージ子」においては位置された位置に近くなるように配置する、ということを示している。なお、「極力重ならないようにする」とは、10回程度の試行でも重なってしまった場合は、無視しておいてしまうということである。
【0153】
(2−3.ワークスペース上の紐付け処理)
上述の「salesplan.doc」を除く局所オブジェクトについては、すべて局所オブジェクトであるので、ワークスペース上でその派生関係を「紐付け」によって表現する(図7のオブジェクトOBJ1As,OBJ1Bs,OBJ1Bs)。
【0154】
すなわち、ワークスペース定義ファイルにこの「紐付け」を示すオブジェクトの記述を追加する。具体的には、リンクリスト140を参照して、共有オブジェクトと派生した局所オブジェクトとの対応関係を抽出し、さらに各対応関係について、共有オブジェクトの座標(<point>タグの値)と局所オブジェクトの座標(<point>タグの値)とを結ぶ紐付けオブジェクト(string)を追加する。
【0155】
図29は、この発明の実施の形態に従う紐付けオブジェクトの記述152の一例を示す図である。図29を参照して、たとえば、オブジェクトOBJ1As(図7)に対応する記述152には、<object id>タグにおいて、識別番号が「ML38」であることが定義され、<type>タグにおいて、紐付けオブジェクトであることを示す「string」が定義される。さらに、<colour>タグにおいて、紐付けに用いる色が定義され、<point>タグにおいて、紐付けすべき座標が定義され、<wireSize>タグにおいて、線の太さが定義される。
【0156】
なお、図29に示す記述152では、<colour>タグにユーザ名である「ユーザA」が定義されている。これは、予めユーザ別に用いる色が定義されており、このユーザ名により、予め定義された色が指定される。
【0157】
図30は、この発明の実施の形態に従うユーザ色情報を定義する記述161の一例を示す図である。図30を参照して、たとえば、「ユーザA」には、赤色を示すカラーコード「#FF00000」という値が対応付けて定義されており、「ユーザB」には、青色を示すカラーコード「#00000FF」という値が対応付けて定義されている。なお、このようなカラーコードに代えて、一般的な色名(red,blue,green)などを用いてもよい。この図30に示すユーザ色情報を参照して、図29に示す各紐付けオブジェクトの色が判断される。なお、図29に示す<colour>タグにおいて、色を直接定義するようにしてもよい。
【0158】
また、図29に示す<wireSize>タグには、予め定められた規定値を設定するようにしてもよいし、あるいは各紐付けオブジェクトに応じた値(太さ)を設定してもよい。この各紐付けオブジェクトに応じた値(太さ)は、ユーザ別に規定してもよいし、あるいは対応する共有オブジェクトと局所オブジェクトとの積に基づいて定めてもよい。
【0159】
(2−4.配布処理)
再度、図27を参照して、「マージ親」であるnode1は、ワークスペース上の位置調整および紐付け処理の結果得られたワークスペース定義ファイル(ローカル)100Aを、新たなワークスペース定義ファイル100として上書きし、当該ワークスペース定義ファイル(ローカル)100Aを削除する。
【0160】
さらに、node1は、ワークスペース定義ファイル100をnode2へ送付する(シーケンスSQ226)。node2は、node1から送付されたワークスペース定義ファイル100で自nodeのデータ格納部262に格納しているワークスペース定義ファイル100を上書きする。そして、node2は、自nodeのワークスペース定義ファイル(ローカル)100Aを削除する。
【0161】
以上で、node1とnode2との間で、「ワークスペース定義ファイル」、「実体ファイル」、「リンクリスト」についての同期をとることができる。同様の処理手順によって、node1〜node3の間で、「ワークスペース定義ファイル」、「実体ファイル」、「リンクリスト」についての同期をとることができる。
【0162】
図31および図32は、図7に示すワークスペースに対応するワークスペース定義ファイル100の内容の一例を示す図である。上述のように、node1〜node3の間で同期処理が実行されることで、図31および図32に示すような、各nodeにおける個人作業の結果を反映したワークスペース定義ファイルが生成される。
【0163】
上述のような処理によって、個人作業モードから共同モードへ移行した場合に、図7に示すようなワークスペースWSが表示させることができる。なお、図7に示すワークスペースWSにおいて、カーソルを紐付けオブジェクトに移動させると、リンクリスト140に基づく情報が表示されるようにしてもよいし、あるいはユーザ名が表示されるようにしてもよい。さらに、派生元である共有オブジェクトと、各局所オブジェクトとの相違点を表示するようにしてもよい。
【0164】
また、共有オブジェクトまたは対応する局所オブジェクトをワークスペースWS上で移動させた場合には、紐付けオブジェクトについてもその移動に合わせて移動するように表示される。これは、紐付けオブジェクトの定義に含まれる<point>タグの値を移動量に応じて更新することで提供される。
【0165】
このような同期処理完了後、局所オブジェクトは、局所オブジェクトのまま取り扱われてもよいが、共同作業モード時に、ユーザ間で実際に協議をしながら作業を進め、必要に応じて共有オブジェクトに変更される。この場合には、ワークスペース定義ファイル中の当該局所オブジェクトを定義する記述から、<localObject/>タグが取り除かれる。なお、局所オブジェクトから共有オブジェクトへの変更操作は、ワークスペースWSに参加している全ユーザが視認できるようにすることが好ましい。
【0166】
また、共有作業モードでは、共有オブジェクトおよび局所オブジェクトのいずれについても、全ユーザが変更可能であることが好ましい。あるいは、共有オブジェクトについては全ユーザが変更可能とし、局所オブジェクトについては作成したユーザのみが変更可能としてもよい。
【0167】
<処理手順>
以上説明した内容を実現するための処理手順について説明する。
【0168】
図33は、この発明の実施の形態1に従う全体処理手順を示すフローチャートである。図33に示す各処理手順は、代表的に、情報処理装置PCのCPU201(図2)がプログラムを実行することで提供される。なお、図33に示す処理は、定周期(たとえば、数10〜数100msec)で繰り返し実行される。
【0169】
図33を参照して、ユーザによる入力装置209の操作によって、共同作業モードと個人作業モードとの間の切替指示が与えられたか否かを判断する(ステップS1)。共同作業モードと個人作業モードとの間の切替指示が与えられていない場合(ステップS1においてNOの場合)には、処理はステップS3へ進む。
【0170】
一方、共同作業モードと個人作業モードとの間の切替指示が与えられた場合(ステップS1においてYESの場合)には、図34に示すモード切替処理が実行される(ステップS2)。このモード切替処理の後、処理はステップS3へ進む。
【0171】
ステップS3では、図36などに示すワークスペース処理が実行される。
図34は、図33のステップS2に示すモード切替処理の処理手順を示すフローチャートである。なお、図34に示す処理手順は、サブルーチンとして提供される。
【0172】
図34を参照して、まず、自装置における「モード状態」の値を取得する(ステップS21)。なお、この「モード状態」の値は、メモリ部213もしくはハードディスク部(HDD)211(図2)に保持されている。続いて、取得した「モード状態」が「共同作業モード」であるか否かが判断される(ステップS22)。
【0173】
取得した「モード状態」が「共同作業モード」である場合(ステップS22においてYESの場合)には、個人作業モードへの切替処理として、メモリ部213もしくはハードディスク部(HDD)211(図2)に保持されている「モード状態」の値を「個人作業モード」に変更する(ステップS23)。そして、処理はリターンする。
【0174】
一方、取得した「モード状態」が「共同作業モード」でない場合(ステップS22においてNOの場合)には、図35に示す共同作業モードへの切替処理を実行する(ステップS24)。この共同作業モードへの切替処理の実行後、処理はリターンする。
【0175】
図35は、図34のステップS24に示す共同作業モードへの切替処理の処理手順を示すフローチャートである。なお、図35に示す処理手順は、サブルーチンとして提供される。
【0176】
図35を参照して、まず、通信ポートを受信可能状態にする(ステップS241)。続いて、ワークスペースの識別番号(space id)を用いた問い合わせを他のnodeから受信したか否かを判断する(ステップS242)。
【0177】
ワークスペースの識別番号(space id)を用いた問い合わせを他のnodeから受信した場合(ステップS242においてYESの場合)には、当該問い合わせの送信元に応答を送信する(ステップS243)。そして、処理は、ステップS247へ進む。
【0178】
一方、ワークスペースの識別番号(space id)を用いた問い合わせを他のnodeから受信しなかった場合(ステップS242においてNOの場合)には、ワークスペースの識別番号(space id)を用いた問い合わせをマルチキャスト送信する(ステップS244)。さらに、いずれかの他のnodeから応答を受信したか否かを判断する(ステップS245)。いずれのnodeからも応答を受信しなかった場合(ステップS245においてNOの場合)には、処理はステップS241へ戻る。
【0179】
これに対して、いずれかの他のnodeから応答を受信した場合(ステップS245においてYESの場合)には、共同作業モードの開始をマルチキャスト送信する(ステップS246)。そして、処理はステップS247へ進む。
【0180】
ステップS247では、メモリ部213もしくはハードディスク部(HDD)211(図2)に保持されている「モード状態」の値を「共同作業モード」に変更する。そして、処理はリターンする。
【0181】
図36は、図33のステップS3に示すワークスペース処理の処理手順を示すフローチャートである。なお、図36に示す処理手順は、サブルーチンとして提供される。
【0182】
図36を参照して、まず、自装置における「モード状態」の値を取得する(ステップS31)。続いて、取得した「モード状態」が「共同作業モード」であるか否かが判断される(ステップS32)。
【0183】
取得した「モード状態」が「共同作業モード」である場合(ステップS32においてYESの場合)には、図37に示す共同作業モード処理が実行される(ステップS33)。そして、処理はリターンする。
【0184】
一方、取得した「モード状態」が「共同作業モード」でない場合(ステップS32においてNOの場合)には、図38に示す個人作業モード処理が実行される(ステップS34)。そして、処理はリターンする。
【0185】
図37は、図36のステップS33に示す共同作業モード処理の処理手順を示すフローチャートである。なお、図37に示す処理手順は、サブルーチンとして提供される。
【0186】
図37を参照して、ハードディスク部(HDD)211(図2)に保持されているワークスペース定義ファイルを読出す(ステップS331)。続いて、ユーザ操作に応じて、図39に示すオブジェクト操作を実行する(ステップS332)。
【0187】
さらに、このオブジェクト操作によって得られたワークスペース定義ファイルの内容をハードディスク部(HDD)211に書込む(ステップS333)とともに、当該ワークスペース定義ファイル100の情報のうち、ユーザにより指定される所定範囲に含まれる情報に基づいて、描画処理(レンダリング処理)を行なう(ステップS334)。さらに、ステップS335〜S338に示す同期処理を実行する。
【0188】
ステップS335では、前回の同期処理からワークスペース定義ファイルが変更されたか否かが判断される。前回の同期処理からワークスペース定義ファイルが変更されていない場合(ステップS335においてNOの場合)には、処理はステップS337へ進む。
【0189】
一方、前回の同期処理からワークスペース定義ファイルが変更された場合(ステップS335においてYESの場合)には、変更された部分を示す変更情報データ102を他のnodeへマルチキャスト送信する(ステップS336)。そして、処理はステップS337へ進む。
【0190】
ステップS337では、ワークスペース定義ファイルの変更された部分を示す変更情報データ102を他のnodeから受信したか否かを判断する(ステップS337)。変更情報データ102を他のnodeから受信していない場合(ステップS337においてNOの場合)には、処理はリターンする。
【0191】
一方、変更情報データ102を他のnodeから受信した場合(ステップS337においてYESの場合)には、当該変更情報データ102に基づいて、ハードディスク部(HDD)211に格納されているワークスペース定義ファイル100を更新する(ステップS338)。そして、処理はリターンする。
【0192】
図38は、図36のステップS34に示す個人作業モード処理の処理手順を示すフローチャートである。なお、図38に示す処理手順は、サブルーチンとして提供される。
【0193】
図38を参照して、ハードディスク部(HDD)211(図2)に保持されているワークスペース定義ファイルを読出す(ステップS341)。続いて、ユーザ操作に応じて、図39に示すオブジェクト操作を実行する(ステップS342)。
【0194】
さらに、このオブジェクト操作によって得られたワークスペース定義ファイルの内容をハードディスク部(HDD)211に書込む(ステップS343)とともに、当該ワークスペース定義ファイル100の情報のうち、ユーザにより指定される所定範囲に含まれる情報に基づいて、描画処理(レンダリング処理)を行なう(ステップS344)。そして、処理はリターンする。
【0195】
図39は、図37のステップS332および/または図38のS342に示すオブジェクト操作の処理手順を示すフローチャートである。なお、図39に示す処理手順は、サブルーチンとして提供される。
【0196】
図39を参照して、ユーザによる入力装置209の操作によって、操作指示が与えられたか否かを判断する(ステップS351)。操作指示が与えられていない場合(ステップS351においてNOの場合)には、処理はリターンする。
【0197】
一方、操作指示が与えられた場合(ステップS351においてYESの場合)には、当該操作指示がオブジェクトの作成指示であるか否かを判断する(ステップS352)。当該操作指示がオブジェクトの作成指示である場合(ステップS352においてYESの場合)には、当該作成指示に従って、オブジェクトを作成する(ステップS353)。そして、処理はリターンする。
【0198】
これに対して、当該操作指示がオブジェクトの作成指示でない場合(ステップS352においてNOの場合)には、自装置における「モード状態」の値を取得する(ステップS354)。続いて、取得した「モード状態」が「個人作業モード」であるか否かが判断される(ステップS355)。
【0199】
取得した「モード状態」が「個人作業モード」でない場合(ステップS355においてNOの場合)には、そして、処理はステップS357へ進む。
【0200】
一方、取得した「モード状態」が「個人作業モード」である場合(ステップS355においてYESの場合)には、対象のオブジェクト(もしくは、実体ファイル)をコピーする(ステップS356)。そして、処理はステップS357へ進む。
【0201】
ステップS357では、ユーザからの操作指示に従って、対象のオブジェクトに対する変更操作(オブジェクトの移動・変更・削除・属性変更)を実行する。そして、処理はリターンする。
【0202】
<本実施の形態の第1変形例>
上述の実施の形態では、個人作業モードにおいて、いずれかの共有オブジェクトに対して変更がなされた場合には、当該共有オブジェクトを定義する記述に<invisible/>タグが付加され、当該共有オブジェクトが不可視になる構成について例示した。このような構成に代えて、共有オブジェクトおよび当該共有オブジェクトに対する変更操作によって生成される局所オブジェクトにいずれもがワークスペースWS上に表示されるようにしてもよい。
【0203】
図40は、この発明の実施の形態の第1変形例に従う個人作業モードから共同作業モードへ復帰した後の状態の一例を示す図である。図40に示すように、たとえば、node1を使用するユーザAが、共同作業モードから個人作業モードへモード切替を行なった場合には、共有オブジェクトOBJ1と自身の操作によって生成されたオブジェクトOBJ1Aとが近接して表示される。
【0204】
この場合には、当該共有オブジェクトを定義する記述に<invisible/>タグが付加されることなく、かつ共有オブジェクトから派生して生成された局所オブジェクトの配置される座標位置を派生元の共有オブジェクトとは同一ではないが近接した位置に設定する。
【0205】
このような処理を行なうことで、個人作業モードにおいても、共有オブジェクトと局所オブジェクトとが同一のワークスペースWS上に表示される。
【0206】
なお、共有オブジェクトを可視化した状態で局所オブジェクトが作成され、その後共同作業モードから個人作業モードに復帰した場合には、他のnodeにおいて作成された局所オブジェクトとその配置位置が重なることがあるので、このような場合には、上述した実施の形態と同様に、オブジェクト間の位置調整を行なう。
【0207】
<本実施の形態の第2変形例>
上述の実施の形態では、個人作業モードから共有作業モードに復帰すると、共有オブジェクトと派生した局所オブジェクトとの対応関係を紐付けオブジェクトを用いて視覚化する構成について例示した。このような構成に代えて、派生オブジェクトを共有オブジェクトより小さい表示サイズのアイコンを用いて局所オブジェクトの存在を視覚化してもよい。
【0208】
図41は、この発明の実施の形態の第2変形例に従う個人作業モードから共同作業モードへ復帰した後の状態の一例を示す図である。図41に示すように、個人作業モードから共有作業モードへ復帰した場合には、共有オブジェクトであるオブジェクトOBJ1に近接して、派生したオブジェクトOBJ1A,OBJ1B,OBJ1CがそれぞれオブジェクトOBJ1よりその表示サイズの小さなアイコンICONa,ICONb,ICONcとして表示される。
【0209】
さらに、図41に示すようなワークスペースWSにおいて、ユーザがカーソルをアイコン上に移動させると、アイコンが拡大表示(オブジェクトOBJ1A)されるようにしてもよい。さらに、ユーザがカーソルをアイコン上に移動させると、リンクリスト140に基づく情報が表示されるようにしてもよいし、あるいはユーザ名が表示されるようにしてもよい。さらに、派生元である共有オブジェクトと、各局所オブジェクトとの相違点を表示するようにしてもよい。
【0210】
<本実施の形態の第3変形例>
上述の実施の形態では、個人作業モードから共有作業モードに復帰すると、共有オブジェクトと派生した局所オブジェクトとの対応関係を紐付けオブジェクトを用いて視覚化する構成について例示した。このような構成に代えて、派生オブジェクトを作成したユーザを識別可能なアイコンを用いて局所オブジェクトの存在を視覚化してもよい。
【0211】
図42は、この発明の実施の形態の第3変形例に従う個人作業モードから共同作業モードへ復帰した後の状態の一例を示す図である。図42に示すように、個人作業モードから共有作業モードへ復帰した場合には、共有オブジェクトであるオブジェクトOBJ1に近接して、オブジェクトOBJ1A,OBJ1B,OBJ1Cを作成したユーザA,ユーザB,ユーザCをそれぞれ示すアイコンICON1,ICON2,ICON3が表示される。
【0212】
この場合には、予めユーザ別に用いるアイコンが定義されており、各局所オブジェクトの作成者に応じて、対応するアイコンが表示される。
【0213】
図43は、この発明の実施の形態の第3変形例に従うユーザ別アイコンを定義する記述の一例を示す図である。図43を参照して、たとえば、「ユーザA」に対応付けて「user_a_icon.jpg」というアイコンファイルが使用されることが定義されており、「ユーザB」に対応付けて「user_b_icon.jpg」というアイコンファイルが使用されることが定義されている。なお、このような記述は、ワークスペース定義ファイルに含められる。
【0214】
さらに、図42に示すようなワークスペースWSにおいて、ユーザがカーソルをアイコン上に移動させると、当該アイコンに対応する局所オブジェクトが共有オブジェクトOBJ1より前面に表示される。さらに、ユーザがカーソルをアイコン上に移動させると、リンクリスト140に基づく情報が表示されるようにしてもよいし、あるいはユーザ名が表示されるようにしてもよい。さらに、派生元である共有オブジェクトと、各局所オブジェクトとの相違点を表示するようにしてもよい。
【0215】
このようなユーザ別のアイコンを共通に用いることで、局所オブジェクトについてサムネイルなどを生成して表示する構成に比較して、処理を簡素化および高速化できる。
【0216】
<本実施の形態の第4変形例>
上述の実施の形態では、基本的に、すべてのユーザが同じようなタイミングで共同作業モードに復帰する場合における処理について例示したが、共同作業モードでの作業が進んだ後に、遅れて共同作業モードに復帰するnodeが存在する場合も想定される。このような場合において、共有オブジェクトが既に削除されていたような場合には、完全に同期処理を行なうことができないこともあり、このような場合には、以下のように処理を行なう。
【0217】
上述の実施の形態で説明したワークスペースWSにおいて、node3(ユーザC)が共同作業モードに遅れて参加したとする。このとき、node1(ユーザA)およびnode2(ユーザB)との間の合意の下、共有オブジェクトの実体である「salesplan.doc」が削除されており、ユーザAが作成した「salesplan.doc.pc1」が共有オブジェクトの実体である「salesplan.doc」として格納されていたとする。
【0218】
このような状況下では、node3が他のnodeとの間でリンクリストを交換したとしても、「salesplan.doc」は存在しない(新規オブジェクト)と取扱われてしまう。すなわち、各オブジェクトは識別番号(object id)によって識別されるため、同一ファイル名であっても、同一のオブジェクトとは見なされない。
【0219】
このように、共同作業モードを開始している他のnodeにおいて、同じファイル名のオブジェクトが存在する場合には、あるオブジェクトの原本を修正してしまった可能性が高いと推測できる。そこで、リンクリストにエントリが存在しないオブジェクトについては、対応する実体ファイルのファイル名を検索し、同じファイル名または類似のファイル名をもつオブジェクト、ないしは同じファイル種類のオブジェクトを同じグループだと見なしてもよい。そして、これらのファイルを自動的にリンクリストのエントリに加えてもよい。あるいは、このような推測結果をユーザに通知してもよい。さらに、これらを適宜組み合わせたような処理にしてもよい。
【0220】
<本実施の形態の第5変形例>
上述の実施の形態では、ユーザが操作を行なうことで共同作業モードと個人作業モードとを切替える構成について例示したが、ネットワークの接続状況などに応じて、自動的にモードを切替えるようにしてもよい。
【0221】
たとえば、共同作業モード中に他のnodeとの間の接続が切断されるなどした場合には、個人作業モードに自動的に移行するようにしてもよい。この他のnodeとの間の接続が切断されたとは、他のnodeへのパケットの不着が発生した場合や他のnodeへのパケットの不着率が一定値以上になった場合などである。
【0222】
あるいは、ワークスペースWSに参加しているnode(ユーザ)の数が所定のしきい値を下回った場合にも、自動的に共同作業モードから個人作業モードに移行するようにしてもよい。
【0223】
このような個人作業モード移行時の画面状態としては、共同作業モードの移行直前の状態を維持しつつ単にモードを切替えてもよいし、あるいは共同作業モードのある時点の状態に戻るようにしてもよい。
【0224】
また、モード移行時に進行中だった作業(オブジェクトの編集や移動、手書きでの入力中)などを除いて、すべての作業結果が反映した上で、個人作業モードへ移行することが好ましい。この場合、これらのオブジェクトはすべて共有オブジェクトとなる。
【0225】
なお、個人作業モードにおけ操作履歴に関しては、個人作業モード中の共有オブジェクトと同様に取扱ってもよいが、処理が複雑化するので、個人作業モード中では、局所オブジェクトの作成・変更・削除などの関する操作履歴のみを記録することが好ましい。
【0226】
また、共有オブジェクトや局所オブジェクトをいずれかのユーザがコピーして新たなオブジェクト(コピーオブジェクト)を作成した場合には、これらのコピーオブジェクトについてもリンクリストにエントリとして追加することが好ましい。
【0227】
<本実施の形態における効果>
本実施の形態によれば、共同作業モードにおける作業結果と個人作業モードにおける作業結果とを互いに関連付けつつ、共同作業モードにおけるワークスペースWS上では、各オブジェクトを独立のオブジェクトとして管理および視覚化する。そのため、各ユーザが単独で行なった作業結果をワークスペースWSに確実に反映することができ、これにより効率的な共同作業を実現することができる。
【0228】
[その他の実施の形態]
本発明に係るプログラムは、コンピュータのオペレーティングシステム(OS)の一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。その場合、プログラム自体には上記モジュールが含まれずOSと協働して処理が実行される。このようなモジュールを含まないプログラムも、本発明に係るプログラムに含まれ得る。
【0229】
さらに、本発明に係るプログラムは、他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には上記他のプログラムに含まれるモジュールが含まれず、他のプログラムと協働して処理が実行される。このような他のプログラムに組込まれたプログラムも、本発明に係るプログラムに含まれ得る。
【0230】
提供されるプログラム製品は、ハードディスクなどのプログラム格納部にインストールされて実行される。なお、プログラム製品は、プログラム自体と、プログラムが記憶された記憶媒体とを含む。
【0231】
さらに、本発明に係るプログラムによって実現される機能の一部または全部を専用のハードウェアによって構成してもよい。
【0232】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【0233】
【図1】この発明の実施の形態に従うワークスペースを提供するためのシステムの概略構成図である。
【図2】この発明の実施の形態に従う情報処理装置の代表例であるパーソナルコンピュータの概略のハードウェア構成を示す模式図である。
【図3】この発明の実施の形態に従うワークスペースの一例を模式的に示す図である。
【図4】図3(a)に示すワークスペースの状態からnode1が個人作業モードに移行した後、node1のユーザAによる作業中の状態の一例を示す図である。
【図5】図3(a)に示すワークスペースの状態からnode2が個人作業モードに移行した後、node2のユーザBによる作業中の状態の一例を示す図である。
【図6】図3(a)に示すワークスペースの状態からnode3が個人作業モードに移行した後、node3のユーザCによる作業中の状態の一例を示す図である。
【図7】図4〜図6に示す個人作業モードから共同作業モードへ復帰した後の状態の一例を示す図である。
【図8】この発明の実施の形態に従うワークスペース定義ファイルの内容の一例を示す図である。
【図9】この発明の実施の形態に従う各情報処理装置の制御構造を示すブロック図である。
【図10】図9に示す作業モード制御部のより詳細な制御構造を示すブロック図である。
【図11】この発明の実施の形態に従うリンクリストの内容の一例を示す図である。
【図12】この発明の実施の形態に従うワークスペースのある状態を示す図である。
【図13】図12に示す状態において、node1でユーザ操作が行なわれた直後の状態を示す図である。
【図14】図13の後に同期処理中の状態を示す図である。
【図15】図14に示すユーザ操作に係る同期処理が完了した状態を示す図である。
【図16】図8に示すワークスペース定義ファイルに対応するワークスペース定義ファイル(ローカル)の内容の一例を示す図である。
【図17】この発明の実施の形態に従うリンクリストの更新後の内容の一例を示す図である。
【図18】図17(a)に示す実体ファイルの生成に伴って追加されるオブジェクトOBJ1Aの記述141の一例を示す図である。
【図19】図17(a)に示す実体ファイルの生成に伴って変更される共有オブジェクトOBJ1の記述121の一例を示す図である。
【図20】の発明の実施の形態に従うワークスペース定義ファイル(コピー)の更新処理によって生成されるワークスペース定義ファイルの内容の一例を示す図である。
【図21】図5に示すオブジェクトOBJ1Bの作成に伴って、ワークスペース定義ファイル(ローカル)に追加される記述の一例を示す図である。
【図22】図5に示すオブジェクトOBJ1Btの新規作成に伴って、ワークスペース定義ファイル(ローカル)に追加される記述の一例を示す図である。
【図23】この発明の実施の形態に従うオブジェクト同士の関連付け処理(その2)の概要を説明するための図である。
【図24】図6に示すオブジェクトOBJ1Cの作成に伴って、ワークスペース定義ファイル(ローカル)に追加される記述の一例を示す図である。
【図25】図6に示すオブジェクトOBJ1Ctの作成に伴って、ワークスペース定義ファイル(ローカル)に追加される記述の一例を示す図である。
【図26】この発明の実施の形態に従う共同作業モードの開始処理を示すシーケンス図である。
【図27】この発明の実施の形態に従うマージ処理を含む全体処理を示すシーケンス図である。
【図28】図17に示すnode1〜node3の間で同期がなされた後のリンクリスト140の内容の一例を示す図である。
【図29】この発明の実施の形態に従う紐付けオブジェクトの記述の一例を示す図である。
【図30】この発明の実施の形態に従うユーザ色情報を定義する記述の一例を示す図である。
【図31】図7に示すワークスペースに対応するワークスペース定義ファイルの内容の一例を示す図である。
【図32】図7に示すワークスペースに対応するワークスペース定義ファイルの内容の一例を示す図である。
【図33】この発明の実施の形態1に従う全体処理手順を示すフローチャートである。
【図34】図33のステップS2に示すモード切替処理の処理手順を示すフローチャートである。
【図35】図34のステップS24に示す共同作業モードへの切替処理の処理手順を示すフローチャートである。
【図36】図33のステップS3に示すワークスペース処理の処理手順を示すフローチャートである。
【図37】図36のステップS33に示す共同作業モード処理の処理手順を示すフローチャートである。
【図38】図36のステップS34に示す個人作業モード処理の処理手順を示すフローチャートである。
【図39】図37のステップS332および/または図38のS342に示すオブジェクト操作の処理手順を示すフローチャートである。
【図40】この発明の実施の形態の第1変形例に従う個人作業モードから共同作業モードへ復帰した後の状態の一例を示す図である。
【図41】この発明の実施の形態の第2変形例に従う個人作業モードから共同作業モードへ復帰した後の状態の一例を示す図である。
【図42】この発明の実施の形態の第3変形例に従う個人作業モードから共同作業モードへ復帰した後の状態の一例を示す図である。
【図43】この発明の実施の形態の第3変形例に従うユーザ別アイコンを定義する記述の一例を示す図である。
【符号の説明】
【0234】
201 CPU、203 内部バス、205 モニター、207 通信インターフェイス、209 入力装置、211 ハードディスク部、213 メモリ部、215 CD−ROMドライブ、217 フレキシブルディスク(FD)ドライブ、215a CD−ROM、217a フレキシブルディスク、250 作業モード制御部、250A モード切替部、250B オブジェクト属性管理部、250C リンクリスト管理部、250D 派生制御部、252 データ操作部、254 同期制御部、256 描画部、258 ユーザ認証部、260 データ送受信部、262 データ格納部、PC,PC1〜PC3 情報処理装置、SRV サーバ装置。

【特許請求の範囲】
【請求項1】
複数の情報処理装置を用いて複数のユーザによる同時アクセス可能な仮想空間を提供する情報処理方法であって、
前記複数の情報処理装置が、第1モードにおいて、前記仮想空間および前記仮想空間に含まれるオブジェクトを定義する共有ファイルを同期して保持するステップと、
前記複数の情報処理装置のうち第1情報処理装置が、前記第1モードから第2モードへの切替えの指示を受けて、前記共有ファイルについての同期処理を停止するステップと、
前記第1情報処理装置が、前記仮想空間に含まれる第1オブジェクトに対する変更操作を受付けるステップと、
前記第1情報処理装置が、前記共有ファイルの少なくとも一部をコピーすることで、前記第1オブジェクトを定義する局所ファイルを生成するステップと、
前記第1情報処理装置が、前記第1オブジェクトに対する変更操作の結果得られる第2オブジェクトに応じて、前記局所ファイルを更新するステップと、
前記第1情報処理装置が、前記第2モードから前記第1モードへの切替えの指示を受けて、他の情報処理装置との間で共有する前記共有ファイルに前記局所ファイルとの対応関係を反映するステップと、
前記複数の情報処理装置が、前記第1モードにおいて、前記局所ファイルとの対応関係が反映された前記共有ファイルに基づいて、第1および第2オブジェクトを含む仮想空間を表示部に描画するステップとを備える、情報処理方法。
【請求項2】
前記対応関係を反映するステップは、前記仮想空間において、前記第2オブジェクトが前記第1オブジェクトに近接して表示されるように、前記共有ファイルの記述を変更するステップを含む、請求項1に記載の情報処理方法。
【請求項3】
前記対応関係を反映するステップは、前記仮想空間において、前記第1オブジェクトと前記第2オブジェクトとの対応関係を視覚的に表示するオブジェクトを追加するステップをさらに含む、請求項1または2に記載の情報処理方法。
【請求項4】
前記第1情報処理装置が、前記第2モードにおいて、前記変更操作によって前記第2オブジェクトが生成されると、前記第1オブジェクトを不可視としつつ、前記第2オブジェクトを含む仮想空間を表示部に描画するステップをさらに備える、請求項1〜3のいずれか1項に記載の情報処理方法。
【請求項5】
前記共有ファイルは、第1オブジェクトの実体を示すファイルと、前記実体を示すファイルへの参照情報を記述したファイルとを含む、請求項1〜4のいずれか1項に記載の情報処理方法。
【請求項6】
前記第1情報処理装置が、前記第2モードにおいて、オブジェクトの新規作成指示を受けて、前記第2オブジェクトとは異なる第3オブジェクトを生成するステップと、
前記第1情報処理装置が、前記第3オブジェクトを前記第2オブジェクトに対応付けるステップとをさらに備える、請求項1〜5のいずれか1項に記載の情報処理方法。
【請求項7】
前記第1および第2オブジェクトを含む仮想空間を表示部に描画するステップでは、前記第3オブジェクトを前記第2オブジェクトに対応付けて描画される、請求項6に記載の情報処理方法。
【請求項8】
他の情報処理装置とデータ通信可能に構成され、複数のユーザによる同時アクセス可能な仮想空間を提供する情報処理装置であって、
表示部と、
第1モードにおいて、前記仮想空間および前記仮想空間に含まれるオブジェクトを定義する共有ファイルを他の情報処理装置との間で同期して保持する手段と、
前記第1モードから第2モードへの切替えの指示を受けて、前記共有ファイルについての同期処理を停止する手段と、
前記仮想空間に含まれる第1オブジェクトに対する変更操作を受付ける手段と、
前記共有ファイルの少なくとも一部をコピーすることで、前記第1オブジェクトを定義する局所ファイルを生成する手段と、
前記第1オブジェクトに対する変更操作の結果得られる第2オブジェクトに応じて、前記局所ファイルを更新する手段と、
前記第2モードから前記第1モードへの切替えの指示を受けて、他の情報処理装置との間で共有する前記共有ファイルに前記局所ファイルとの対応関係を反映する手段と、
前記第1モードにおいて、前記局所ファイルとの対応関係が反映された前記共有ファイルに基づいて、第1および第2オブジェクトを含む仮想空間を前記表示部に描画する手段とを備える、情報処理装置。
【請求項9】
複数の情報処理装置を用いて複数のユーザによる同時アクセス可能な仮想空間を提供するためのプログラムであって、
前記プログラムは、前記情報処理装置に、
第1モードにおいて、前記仮想空間および前記仮想空間に含まれるオブジェクトを定義する共有ファイルを他の情報処理装置との間で同期して保持するステップと、
前記第1モードから第2モードへの切替えの指示を受けて、前記共有ファイルについての同期処理を停止するステップと、
前記仮想空間に含まれる第1オブジェクトに対する変更操作を受付けるステップと、
前記共有ファイルの少なくとも一部をコピーすることで、前記第1オブジェクトを定義する局所ファイルを生成するステップと、
前記第1オブジェクトに対する変更操作の結果得られる第2オブジェクトに応じて、前記局所ファイルを更新するステップと、
前記第2モードから前記第1モードへの切替えの指示を受けて、他の情報処理装置との間で共有する前記共有ファイルに前記局所ファイルとの対応関係を反映するステップと、
前記第1モードにおいて、前記局所ファイルとの対応関係が反映された前記共有ファイルに基づいて、第1および第2オブジェクトを含む仮想空間を表示部に描画するステップとを実行させる、プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate

【図37】
image rotate

【図38】
image rotate

【図39】
image rotate

【図40】
image rotate

【図41】
image rotate

【図42】
image rotate

【図43】
image rotate


【公開番号】特開2010−61290(P2010−61290A)
【公開日】平成22年3月18日(2010.3.18)
【国際特許分類】
【出願番号】特願2008−224969(P2008−224969)
【出願日】平成20年9月2日(2008.9.2)
【出願人】(000001270)コニカミノルタホールディングス株式会社 (4,463)
【Fターム(参考)】