(57)【特許請求の範囲】
【請求項１】
ネットワークに接続された複数のコンピュータに、オブジェクトが動作する環境を設けるステップと、
共有フィールド・オブジェクトであって、マウスカーソルの移動、マウスボタンのクリック、キーボード操作及び前記共有フィールド・オブジェクト上に登録されたオブジェクトに対するものを含む、操作者による操作イベントをフェッチするためのユーザイベントフック部を有する共有フィールド・オブジェクトを設けるステップと、
必要に応じて随時に、前記共有フィールド・オブジェクト上に１つ以上のオブジェクトを登録するステップと、
前記共有フィールド・オブジェクト及び、必要に応じて随時に登録された１つ以上のオブジェクトを、前記複数のコンピュータ上にロードするステップと、
操作者が前記操作イベントをする度に、当該操作イベントの情報を調整可能なサンプリング時間間隔毎に逐次的に記録するステップと、
前記記録されたイベント情報をオブジェクト・シナリオとして、オブジェクト毎に管理するステップと、
前記オブジェクト・シナリオを前記複数のコンピュータ上の共有フィールド・オブジェクトに配送するステップと、
配送されたオブジェクト・シナリオを、そのシナリオが対象とするオブジェクト毎に、前記複数のコンピュータ上の共有フィールド・オブジェクトで実行するステップと、
からなる、オブジェクト指向技術を用いた情報共有方法。
【請求項２】
請求項１に記載の方法において、
前記登録された１つ以上のオブジェクトが夫々、前記共有フィールド・オブジェクトとの相対的な位置情報を保持することを特徴とする、オブジェクト指向技術を用いた情報共有方法。
【請求項３】
請求項１に記載の方法において、
前記オブジェクト・シナリオが、共有フィールド・オブジェクトによって記録されることを特徴とする、オブジェクト指向技術を用いた情報共有方法。
【請求項４】
請求項１に記載の方法において、
前記オブジェクト・シナリオが、操作対象オブジェクトそれ自身によって記録されることを特徴とする、オブジェクト指向技術を用いた情報共有方法。
【請求項５】
請求項１に記載の方法において、更に、
共有フィールド・オブジェクトを共有するユーザの情報及び、ユーザ情報を持つサーバ情報を、共有フィールド・オブジェクトが保持し、オブジェクト・シナリオの配送先を、これらの共有情報を基に決定することを特徴とする、オブジェクト指向技術を用いた情報共有方法。
【請求項６】
請求項１に記載の方法において、更に
前記オブジェクト・シナリオの管理下で動作しているオブジェクトは、個々の共有者が操作不可能とし、シナリオの管理下で動作していない独立したオブジェクトは操作可能とすることを特徴とする、オブジェクト指向技術を用いた情報共有方法。
【請求項７】
請求項１に記載の方法において、
前記共有フィールド・オブジェクト及び、必要に応じて随時に登録された１つ以上のオブジェクトを、前記複数のコンピュータ上にロードするステップ及び、前記オブジェクト・シナリオを前記複数のコンピュータ上の共有フィールド・オブジェクトに配送するステップが、前記複数のコンピュータ相互に直接実行されることを特徴とする、オブジェクト指向技術を用いた情報共有方法。
【請求項８】
請求項１に記載の方法において、
前記共有フィールド・オブジェクト及び、必要に応じて随時に登録された１つ以上のオブジェクトを、前記複数のコンピュータ上にロードするステップ及び、前記オブジェクト・シナリオを前記複数のコンピュータ上の共有フィールド・オブジェクトに配送するステップが、ネットワーク上のサーバ・コンピュータを介して実行されることを特徴とする、オブジェクト指向技術を用いた情報共有方法。
【請求項９】
請求項１に記載の方法において、
前記共有フィールド・オブジェクト及び、必要に応じて随時に登録された１つ以上のオブジェクトを、前記複数のコンピュータ上にロードするステップが、ネットワーク上のサーバ・コンピュータを介して実行され、
前記オブジェクト・シナリオを前記複数のコンピュータ上の共有フィールド・オブジェクトに配送するステップが、前記複数のコンピュータ相互に直接実行されることを特徴とする、オブジェクト指向技術を用いた情報共有方法。
【請求項１０】
コンピュータをして、
ネットワークに接続された複数のコンピュータに、オブジェクトが動作する環境を設けるステップと、
共有フィールド・オブジェクトであって、マウスカーソルの移動、マウスボタンのクリック、キーボード操作及び前記共有フィールド・オブジェクト上に登録されたオブジェクトに対するものを含む、操作者による操作イベントをフェッチするためのユーザイベントフック部を有する共有フィールド・オブジェクトを設けるステップと、
必要に応じて随時に、前記共有フィールド・オブジェクト上に１つ以上のオブジェクトを登録するステップと、
前記共有フィールド・オブジェクト及び、必要に応じて随時に登録された１つ以上のオブジェクトを、前記複数のコンピュータ上にロードするステップと、
操作者が前記操作イベントをする度に、当該操作イベントの情報を調整可能なサンプリング時間間隔毎に逐次的に記録するステップと、
前記記録されたイベント情報をオブジェクト・シナリオとして、オブジェクト毎に管理するステップと、
前記オブジェクト・シナリオを前記複数のコンピュータ上の共有フィールド・オブジェクトに配送するステップと、
配送されたオブジェクト・シナリオを、そのシナリオが対象とするオブジェクト毎に、前記複数のコンピュータ上の共有フィールド・オブジェクトで実行するステップと、
を実行させるプログラム。
【請求項１１】
コンピュータをして、
ネットワークに接続された複数のコンピュータに、オブジェクトが動作する環境を設けるステップと、
共有フィールド・オブジェクトであって、マウスカーソルの移動、マウスボタンのクリック及び、キーボード操作及び前記共有フィールド・オブジェクト上に登録されたオブジェクトに対するものを含む、操作者による操作イベントをフェッチするためのユーザイベントフック部を有する共有フィールド・オブジェクトを設けるステップと、
必要に応じて随時に、前記共有フィールド・オブジェクト上に１つ以上のオブジェクトを登録するステップと、
前記共有フィールド・オブジェクト及び、必要に応じて随時に登録された１つ以上のオブジェクトを、前記複数のコンピュータ上にロードするステップと、
操作者が前記操作イベントをする度に、当該操作イベントの情報を調整可能なサンプリング時間間隔毎に逐次的に記録するステップと、
前記記録されたイベント情報をオブジェクト・シナリオとして、オブジェクト毎に管理するステップと、
前記オブジェクト・シナリオを前記複数のコンピュータ上の共有フィールド・オブジェクトに配送するステップと、
配送されたオブジェクト・シナリオを、そのシナリオが対象とするオブジェクト毎に、前記複数のコンピュータ上の共有フィールド・オブジェクトで実行するステップと、
を実行させるプログラムを記憶したコンピュータ可読の記憶媒体。
【請求項１２】
共有フィールド・オブジェクトであって、マウスカーソルの移動、マウスボタンのクリック、キーボード操作及び前記共有フィールド・オブジェクト上に登録されたオブジェクトに対するものを含む、ユーザによる操作イベントをフェッチするためのユーザイベントフック部を有し、複数のユーザによって共有される環境を与える共有フィールド・オブジェクトと、
少なくとも、前記共有フィールド・オブジェクト内での相対位置情報及び、内部状態情報を有するオブジェクトと、
それらのオブジェクトを前記複数のユーザに配布する手段と、
操作者が前記操作イベントをする度に、当該操作イベントの情報を調整可能なサンプリング時間間隔毎に逐次的に記録する手段と、
前記共有フィールド・オブジェクトを介して前記記録された操作イベント情報をオブジェクト・シナリオとして各ユーザに配付する手段と、
前記配布されたオブジェクト・シナリオを、夫々のユーザ環境で再現する手段と、
からなる、オブジェクト指向技術を用いた情報共有装置。
【請求項１３】
請求項１２に記載の装置において、前記共有フィールド・オブジェクトが複数のユーザの夫々の情報処理装置において動作することを特徴とする、オブジェクト指向技術を用いた情報共有装置。
【請求項１４】
請求項１２に記載の装置において、前記共有フィールド・オブジェクトが複数のユーザが接続するサーバの情報処理装置において動作することを特徴とする、オブジェクト指向技術を用いた情報共有装置。
【請求項１５】
請求項１２に記載の装置において、前記共有フィールド・オブジェクトが複数のユーザの夫々の情報処理装置と、複数のユーザが接続するサーバの情報処理装置の両方において動作することを特徴とする、オブジェクト指向技術を用いた情報共有装置。
【請求項１６】
コンピュータをして、
共有フィールド・オブジェクトであって、マウスカーソルの移動、マウスボタンのクリック、キーボード操作及び前記共有フィールド・オブジェクト上に登録されたオブジェクトに対するものを含む、ユーザによる操作イベントをフェッチするためのユーザイベントフック部を有し、複数のユーザによって共有される環境を与える共有フィールド・オブジェクトと、
少なくとも、前記共有フィールド・オブジェクト内での相対位置情報及び、内部状態情報を有するオブジェクトと、
それらのオブジェクトを前記複数のユーザに配布する手段と、
操作者が前記操作イベントをする度に、当該操作イベントの情報を調整可能なサンプリング時間間隔毎に逐次的に記録する手段と、
前記共有フィールド・オブジェクトを介して前記記録された操作イベント情報をオブジェクト・シナリオとして各ユーザに配付する手段と、
前記配布されたオブジェクト・シナリオを、夫々のユーザ環境で再現する手段と、
からなる、オブジェクト指向技術を用いた情報共有装置として動作させるプログラム。
【請求項１７】
コンピュータをして、
共有フィールド・オブジェクトであって、マウスカーソルの移動、マウスボタンのクリック、キーボード操作及び前記共有フィールド・オブジェクト上に登録されたオブジェクトに対するものを含む、ユーザによる操作イベントをフェッチするためのユーザイベントフック部を有し、複数のユーザによって共有される環境を与える共有フィールド・オブジェクトと、
少なくとも、前記共有フィールド・オブジェクト内での相対位置情報及び、内部状態情報を有するオブジェクトと、
それらのオブジェクトを前記複数のユーザに配布する手段と、
操作者が前記操作イベントをする度に、当該操作イベントの情報を調整可能なサンプリング時間間隔毎に逐次的に記録する手段と、
前記共有フィールド・オブジェクトを介して前記記録された操作イベント情報をオブジェクト・シナリオとして各ユーザに配付する手段と、
前記配布されたオブジェクト・シナリオを、夫々のユーザ環境で再現する手段と、
からなる、オブジェクト指向技術を用いた情報共有装置として動作させるプログラムを記憶したコンピュータ可読記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ネットワークに接続された複数のコンピュータによって情報を共有する技術に関し、特にネットワークで相互に接続された複数のコンピュータどうしがＧＵＩ（Graphical User Interface）環境で相互に共同作業、又は協調作業、いわゆるコラボレーション（collaboration）をするための情報共有技術に関する。
【０００２】
【従来の技術】
従来ネットワーク上での複数のコンピュータによるＧＵＩ環境を用いた協調作業の実現は、１対１のコンピュータ同士で行うものが多く、その場合、第１のコンピュータの表示画面を第２のコンピュータの画面にも表示して共通の観察対象とし、第２のコンピュータのキーボードやマウスなどの入力を第１のコンピュータへも送ってその入力とすることによって、相互に同じ作業環境を共有するものであった。また、複数のコンピュータが同一の作業環境を共有するものは、単一のサーバに共有環境を設定して、そのサーバが前記第１のコンピュータの立場となり、サーバに接続した複数のコンピュータが前記第２のコンピュータの立場になるものであった。以上のような従来の構成の場合、相互にやり取りするべきデータの種類と量が多く、ネットワークにかかる負担が増大すると共に、低速のネットワークではスループットが上がらず、不満足なものであった。また、共有は結局一方のコンピュータの資源によって実現されるものであって、その能力によって能率が左右されると共に、データのセキュリティの確保が難しく、必要以外の資源を不正に利用されたりする可能性があり問題であった。更に、共有は全面的なものが多く、共有環境と、その他の夫々の固有の環境とを完全な意味で両立するものは無かった。
【０００３】
これを解決する手段として、オブジェクト指向の環境が考えられ、北海道大学工学部の田中譲教授が設計・開発したオブジェクト指向の基盤ソフトウェアで、オブジェクトどうしを関連づけるビジュアルプログラミングが可能なインテリジェントパッド（ＩＰと略称する）と呼ばれるものを用いて部分的に実現されている。
【０００４】
ＩＰとは、機能を持った「パッド」と呼ばれる部品の合成、分解、再利用を通じてソフトウェア開発を行ない、かつ開発されたパッドの動作環境をも実現するものである。「パッド」は一種のオブジェクトであり、パッド自身の状態を保持するスロットと呼ばれる構造を有するモデル部と、該モデル部とメッセージを交換するビュー部とからなる構成を持ち、固有のデータとメソッドをカプセル化した基本単位としてふるまう。夫々のパッドは他のパッドとの間で前記スロットを共通のインタフェースとして用いて互いにデータ及びメッセージの交換を行う事ができるように構成されており、ＧＵＩ環境においてパッドを相互に貼り合わせしたり、剥がしたりする事によって、合成、分解を可視的に操作することができるようになっている。ＩＰについての詳細は各種文献及びインテリジェント・パッド・コンソーシアム（ＩＰＣ：IntelligentPad Consortium、http://www.pads.or.jp/）において公開されている。
【０００５】
前記ＩＰＣのホームページでは、「共有空間Piazza開発プロジェクト」の成果が公開されている。これは、知財流通の共有場をＩＰで実現したもので、共有場のパッドは、インターネットを介してPiazzaサーバで管理されている。Piazzaサーバは、どのパッドが共有場パッドの上に貼られたかを管理し、利用者が貼ったり剥がしたりした結果が、同じ共有場パッドを利用している他の利用者からも全く同じ状態で見ることができる。具体的には共有場を対象にして、別のパッドの貼り合わせや、貼り合わせたパッドの剥離というイベントが発生する毎に、イベント操作者側はサーバへ、その変化対象であるパッドをアップロードし、他の共有者はそのサーバから変化したパッドをダウンロードするという動作を繰り返すものであった。このようにして複数のユーザが共有場上に存在するオブジェクトを共有する。これは、パッドの操作プロセスの共有ではなく、共有場パッドに流通したいパッドを貼り合わせて利用者が相互にやり取りするための機能を実現するものである。
【０００６】
また、長崎祥、田中譲らによる情報処理学会論文誌 Vol.34 No.05（1993年5月号）掲載の「シンセティック・メディア・システムIntelligentPadにおける協調作業場の実現」、ならびに田中譲による電気学会誌、113巻6月号、1993年掲載の「シンセティック  メディア  アーキテクチャとその展望」では、パッドに対してユーザが行う操作イベントを共有することで作業環境の共有を実現している。ユーザ操作イベントの共有は、パッドをフィールドパッドの上に貼り合わせ、合成されたパッドの共有コピーを各クライアントに配布することによって行われる。すなわち、モデル部とビュー部が異なるサイトに分離して存在する。共有コピー（ビュー部）のいずれかでユーザの操作要求が検出されると、これらのコピー（ビュー部）が共有するモデル部の状態が更新され、その値がすべてのコピー（ビュー部）に伝えられる。各共有コピー(ビュー部)は、更新伝播を受けて操作要求を受け取る。モデル部とビュー部の間にはメッセージ送信のため、通信のためのオブジェクトが自動的に挿入される。またフィールドパッドには受け取った操作要求を自身の領域上で再現する機能が実現されている。
【０００７】
【発明が解決しようとする課題】
ところが、上述のＩＰによる従来の共有方式は、あらゆる操作イベントを共有することはできていない。共有領域内でのオブジェクトの生成や貼り合わせ結果や削除の結果、もしくはモデルが更新した結果、それが伝播するようなオペレーションを実施したときに限り、イベントが共有されるものであった。
【０００８】
共有すべき操作イベントは、さまざまなレベルで存在する。例えば、共有フィールドパッド上のあるパッドをマウスクリックしてポップアップメニューを開き、メニューを表示して操作を開始するとき、マウスイベントやメニュー表示を共有していなければ、メニューのうちどのメニュー項目を選択したのかわからない。
【０００９】
また、あるオブジェクトを移動し、別のオブジェクトに貼り合わせるイベントを共有する場合（貼り合わせるオブジェクトを子のオブジェクトと称し、貼り合わせられるオブジェクトを親のオブジェクトと称する）、子のオブジェクトが貼り合わせた直後に親のオブジェクトに吸収されるような場合、子のオブジェクトはもとの場所から消えたように見える。選択、移動、貼り合わせという一連の動作が実行されているにもかかわらず、共有者の間にはオブジェクトの削除が起こったと誤解される。
【００１０】
共有機能を使用し、例えばその上で電子的な遠隔学習（eLearning）アプリケーションを構築した場合には、複数の生徒が教師の操作を観察することによって、オブジェクトの動きを正確に理解することが非常に大事なことである。即ち、教師が画面上のオブジェクトを選択、移動、貼り合わせという一連動作で示すべき学習上の目的をなしても、生徒は単なるオブジェクトの削除と受け取ることになり、学習効果が担保されないことになる。従って、上記の例が実施された場合、前述のＩＰによる共有場のような共有では不十分である。さらに複数の共有者を考えた場合には、共有者による同時のマウス操作や共有領域への途中参加、途中退場というものも考慮し、実現されなければならない。
【００１１】
【課題を解決するための手段】
本発明においては、前記ＩＰの改良されたオブジェクト指向環境としてのビジュアルオブジェクト（ＶＯと略称する）を用いて前述の問題を解決する。
【００１２】
本発明は、複数のユーザによって共有される共有場（共有フィールドＶＯ）を提供する。前記ユーザは、共有フィールドＶＯに対してアクセス権を与えられる。
【００１３】
そして共有場上のＶＯ群に対して、複数のユーザによるマウスやキーボード等の操作で生じるイベント、メニュー表示と選択、キーボードによる入力内容、編集操作、ＶＯの移動の軌跡や他のＶＯへの貼り合わせ、剥離、そして他のＶＯに及ぼす更新作用を、操作者だけでなく、それ以外の他の共有者もその全作用過程を観察できる手段を実現する。
【００１４】
【発明の実施の形態】
本発明のシステムにおいては、ＶＯシステムの動作する環境上で、まず共有フィールドＶＯを設定し、次にその上に操作対象となるＶＯ群を登録する。登録された個々のＶＯは、共有フィールドＶＯとの相対的な位置情報を持っている。そして共有フィールドＶＯとその上のＶＯ群は、その共有フィールドＶＯを共有するべき全共有者のクライアント上に速やかにロードされる。
【００１５】
操作者がＶＯに対する操作をする度に、ＶＯへのそれぞれのイベント情報が共有フィールドＶＯまたは操作対象ＶＯそれ自身によって記録される。記録されたものをＶＯシナリオと呼び、ＶＯ毎に対応するシナリオが管理される。
【００１６】
ＶＯシナリオには、ＶＯの移動に伴う共有フィールドＶＯとの相対位置を逐次記録したＶＯ移動の軌跡を共有するためのものや、マウスやキーボードのイベントなど時間に沿ったものがある。相対位置の記録は調整可能なサンプリング時間間隔毎に行う。
【００１７】
その共有フィールドＶＯを共有するユーザの情報や、ユーザ情報を持つサーバ情報は、共有フィールドＶＯが持っており、ＶＯシナリオをどこに配送するかは、これらの共有情報を基に決定される。操作者による動作は、実行されると直ちにＶＯシナリオとして全ての共有ユーザに配送される。
【００１８】
各クライアント上の共有フィールドＶＯは、ＶＯシナリオを授受する機能を持ち、共有ユーザの共有フィールドＶＯに配送されたＶＯシナリオは、そのシナリオが対象とするＶＯ毎に、各クライアント上の共有フィールドＶＯで実行される。この様なシナリオの管理下で動作しているＶＯは、個々の共有者は操作できないが、シナリオの管理下で動作していない独立したＶＯは、操作可能である。ここで独立したＶＯというのは、例えば前記シナリオの管理下で動作中のＶＯまたはそのＶＯと親子関係にあるＶＯを除く、共有フィールドＶＯ上のＶＯである。また前記シナリオの管理下で動作中のＶＯに対して、ＶＯを貼り合わせる操作を拒絶することも可能である。
【００１９】
このようにして各共有ユーザは、操作者の操作によるＶＯ移動時のＶＯの軌跡、ＶＯ上のメニュー表示、ＶＯの貼り合わせ、剥離、他のＶＯへの作用といった結果をほぼ同時に観察することができるだけでなく、複数共有者が共有フィールドＶＯ上のＶＯに対して、同時に矛盾が発生しないで協調した操作をする事が可能である。
【００２０】
【実施例】
以下図面を参照して本発明による情報共有方法及び装置の実施例を説明する。
図１は、本発明による情報共有方法の流れ図である。
【００２１】
まず、共有フィールドＶＯを単に利用したいのか、新規に作成／編集あるいは既存のものを編集したいのかを決定する（１００）。
共有フィールドＶＯを新規に作成／編集あるいは既存のものを編集したい場合は、まず新規に共有フィールドＶＯを作成するか、あるいは既存の共有フィールドＶＯを選択する（１０１）。既存の共有フィールドＶＯを利用する場合は、共有フィールドＶＯリストを呼び出し、該当するＶＯを選択する。リストされるのは、稼動中のＶＯと休止中のＶＯである。このうち稼動中のＶＯは、現在共有されており操作中なので、休止中のＶＯに関してのみ、次の操作が可能である。
【００２２】
次に対象となる共有フィールドＶＯの名前やその他プロパティを設定あるいは変更する（１０２）。設定するプロパティの項目のうち必須の項目は、共有者名の登録である。共有フィールドＶＯ作成者のほか、その共有フィールドＶＯへのアクセスを許可するユーザ名を登録する。既存の共有フィールドＶＯを選択した場合は、選択されたＶＯについて共有者リストを表示し、共有者リストに変更がある場合には、必要に応じて、ユーザの名前を追加・削除する。
【００２３】
次に共有フィールドＶＯ上に初期状態として共有したいＶＯ又はＶＯ群を貼り合わせ（１０３）、共有フィールドＶＯを公開する（１０４）。公開することによって、共有フィールドＶＯへのアクセスを許可したユーザが共有可能な領域に格納される。この公開先はサーバ内の共有フィールドＶＯデータベース領域でもよいし、各クライアントのマシン上でもよい。この共有フィールドＶＯ機能はサーバを介しても、クライアントのみであっても実現可能である（後述）。またこのＶＯの公開時点で、共有フィールドＶＯは、オープンした状態になっており、稼動中のＶＯとなる。即ち、共有者のうちひとりでもオープンしていれば、その共有フィールドＶＯは休止ではなく、稼動中のステータスになる。
【００２４】
共有フィールドＶＯを単に利用したい場合は、利用対象の共有フィールドＶＯを選択する（１０５）。共有フィールドＶＯの名前がリストされるか、ＶＯがクローズした状態で表示される。
【００２５】
選択した共有フィールドＶＯをオープンする（１０６）。対象としている共有フィールドＶＯが他の参加者によって稼動中であれば、この操作は途中参加を意味する。オープンすると、共有フィールドＶＯ上に貼り合わせられたＶＯを確認することができる。
【００２６】
ここで共有フィールドＶＯ上の任意のＶＯに操作を実行したい場合、そのＶＯの操作が可能かどうかを確認する（１０７）。この確認は、操作したいＶＯ上でマウスクリックをして、ＶＯを選択する事によって行なわれる。その時当該ＶＯが共有者のだれかによって操作中である場合は、そのことを示す表示がなされ、また、そのＶＯを対象としたシナリオがあって、そのシナリオの管理下で動作中である場合は、その後のマウスクリックのような操作イベントは拒否されるようになっている（後述）。この様にして操作が可能か否かの確認は容易に視認できる。
【００２７】
もし操作したいＶＯが操作不可能の状態なら、操作可能になるまで、他の操作者による操作を観察し（１１４）、操作可能になった時点で、操作を開始する（１０８）。
【００２８】
操作のうち、共有フィールドＶＯ上へ新規にＶＯを追加する場合は（１０９）、共有されていない領域にあるＶＯを共有フィールドＶＯ上に貼り合わせるか、または新規にＶＯを作成し、共有フィールドＶＯ上に貼り合わせることができる（１１０）。この共有フィールドＶＯ上への新規のＶＯの貼り合わせにおいては、他の共有者には、新規作成であることを示す新規メニューや作成後のプロパティ設定の状況が表示される。また共有されていない領域からのＶＯの貼り合わせにおいては、既存のＶＯが共有フィールドＶＯへ貼り合わされた旨がプロンプト表示される。このようにして、他の共有者にこれらの状況が把握できるようになっている。
【００２９】
共有フィールドＶＯ上でのＶＯ操作（１１１）には、例えばＶＯ上でのポップアップメニュー表示、メニュー選択等がある。メニューには、「移動」、「サイズ変更」、「複写」、「最前面に移動」、「最背面に移動」、「削除」などがあり得る。「移動」を選択した場合は、ＶＯの移動が実行される。移動中の座標位置がサンプリングされ、各共有者へ配送されるので、ＶＯの軌跡が共有される。「サイズ変更」もサイズがサンプリングされるので、その過程が共有される。「複写」は複写されたＶＯが共有フィールドＶＯ画面上に出現する。「最前面に移動」、「最背面に移動」も共有者の環境で即時実行される。ＶＯによっては、この他のメニューが有効な場合がある。その場合にもこれらのうち、操作者がどのメニューを選択したかが共有される。例えば、「プロパティを開く」メニューや「文字列入力」、「数値入力」が用意されているＶＯについても、そのＶＯに対するイベントが共有される。またＶＯの移動後、他のＶＯへの貼り合わせによるスロット結合、更新伝播によるＶＯ群の内部状態の変化やＶＯの表示の変化についてもその原因となる操作者のＶＯの操作イベントが伝播し、公開している共有フィールドＶＯ上のＶＯへも同様のイベントが発行される。これにより、操作者によって引き起こされる変化を共有者がリアルタイムに動作として共有することができる。
【００３０】
共有フィールドＶＯ上での操作が終了するまで、以上の動作を繰り返し（１１２）、その後共有フィールドＶＯ上の操作を終了する（１１３）。特定のＶＯを操作していない間でも、開いている共有フィールドＶＯは、他の共有者による操作を観察によってリアルタイムに共有することができる（１１４）。共有フィールドＶＯへの参加を終了したいときは、その共有フィールドＶＯを閉じる（１１５）。ある共有者が、自分の共有フィールドＶＯを閉じたあとも対象の共有フィールドＶＯへの参加者がいる場合（１１５）、この操作は途中退場を意味する。
【００３１】
次に本発明による情報共有装置のシステム構成について説明する。
図２は本発明による情報共有装置の第１のシステム構成を示す図である。
これは、本発明を実現するのにサーバマシンやデータベースを介さず、クライアントマシンのみで構成するシステムの例である。
【００３２】
共有フィールドＶＯプログラムを各クライアントで起動する。各クライアントは相互に対等である。共有フィールドＶＯを稼動したクライアントマシンから共有フィールドＶＯおよびその上に貼り合わされたＶＯも相互に各クライアントマシン上に分配される。共有者が参加するたびに、操作者のクライアントマシンから更新された最新の共有フィールドＶＯが、新規参加者のクライアントマシンへ送信される。操作者の操作イベントすべてが逐次各クライアントマシンへ指示され、ＶＯ操作の実行は各クライアントマシン上でローカルに行われる。
【００３３】
ここで本発明による共有フィールドＶＯへの途中参加と、退場について説明する。共有フィールドＶＯへの途中参加は、参加するものが、最新である共有フィールドＶＯをロードし、現在進行中のイベントを受け取る。これは実用を考えた場合、途中参加者が共有フィールドＶＯの最新イメージを取得するのが自然だと考えられるからである。即ち途中参加したときには、前回退場時とは、共有フィールドＶＯの様子が変わっている場合もあるが、参加した時に速やかに他の共有者と同じものが見えることがより重要と考えられるからである。
【００３４】
最新共有フィールドＶＯは、第１のシステムの例のようにサーバがない場合は、クライアント同士でタイムスタンプを比較する。サーバがある場合は、サーバにある共有フィールドＶＯが最新である。
【００３５】
本発明では他の共有者に影響なく、退場できる。最後の共有者の退場により、当該共有フィールドＶＯは休止状態になる。
図３は本発明による情報共有装置の第２のシステム構成を示す図である。
【００３６】
これは、本発明を実現するのにサーバマシンやデータベースを介して構成するシステムの例である。
ここではクライアントは常にサーバを介して情報をやりとりする。サーバ上では共有フィールドＶＯの状態や、共有者リストなどを管理するサービスプログラムを起動する。共有フィールドＶＯプログラムを各クライアントで起動する。共有フィールドＶＯおよびその上に貼り合わされたＶＯはサーバ上に置かれ、最新更新状態で管理される。共有ユーザが共有フィールドＶＯに参加するたびに、サーバマシン上のデータベースから、共有フィールドＶＯおよびその上に貼り合わされたＶＯが新規参加共有ユーザのクライアントマシン上に分配される。ＶＯを操作する者の操作イベントすべてが逐次サーバに蓄積される。サーバはそれを共有ユーザのクライアントマシンへ転送し、実行は各クライアントマシン上でローカルに実行される。
【００３７】
図４は本発明による情報共有装置の第３のシステム構成を示す図である。
これは、本発明を実現するのにサーバマシンやデータベースを介して構成するシステムの例であるが、図３のシステム構成例と異なり、ここではクライアントマシン間、サーバ−クライアントマシン間の両方で情報のやりとりを行う。
【００３８】
サーバ上では共有フィールドＶＯの状態や、共有者リストなどを管理するサービスプログラムを起動する。共有フィールドＶＯプログラムを各クライアントで起動する。共有フィールドＶＯおよびその上に貼り合わされたＶＯはサーバ上に置かれ、最新更新状態で管理される。共有ユーザが共有フィールドＶＯに参加するたびに、サーバマシン上のデータベースから、共有フィールドＶＯおよびその上に貼り合わされたＶＯが新規参加共有ユーザのクライアントマシン上に分配される。ＶＯを操作する者の操作イベントすべてが直接共有者のクライアントマシンに送られ、実行は各クライアントでローカルに行われる。
【００３９】
次に、本発明による情報共有装置の応用例として、図５乃至図７を参照して、表示されているフォルダーＶＯの中から運動方程式ＶＯをリスト表示し、そのうちの１つをＶＯとして取り出し、その数式にパラメータを与え、その結果をグラフＶＯへドロップし、グラフとして表示するアプリケーションと、その運動方程式とグラフを説明するために、プレゼンテーション向けのアプリケーションをラッピングしたＶＯの表示と操作を共有する例を前記第３のシステム構成を用いて説明する。
【００４０】
図５は図４と同様、共有フィールドＶＯおよびその上に貼り合わされたＶＯはサーバを介して共有され、操作者の操作イベントはクライアントに直接送られるシステムである。ここでは、１人の教師と生徒が上記の共有フィールドＶＯを通して指導と試行を実施しようとしている。
（１）教師が共有フィールドＶＯを新規作成する。ＶＯ新規作成ボタンを押下すると、作成可能なＶＯリストが表示される。このうち共有フィールドＶＯを選択する。選択すると、予め定められたサイズのＶＯが生成される。これをアプリケーションが動作することができる大きさのサイズに変更する。
（２）教師は、次にこの作成した共有フィールドＶＯにアクセスするための名前（例えば「物理学習」）を付け、共有できるユーザ名（例えば生徒Ａ及び生徒Ｂ）を登録する。この操作は例えば、共有フィールドＶＯを指示してマウス右ボタンでダイアログボックスを開き、その中にユーザ名を登録すればよい。ここで、予めサーバに共有者候補が登録されていれば、サーバを介してその名前がリストされるので、共有したいユーザを選択する。
（３）教師は、更に共有フィールドＶＯ上に運動方程式ＶＯフォルダーＶＯ、数式グラフＶＯを貼り合わせる。この状態を共有の初期状態とする。
（４）教師は、共有化を実行する。共有フィールドＶＯは、シリアライズされ、サーバの共有フィールドＶＯデータベース上にロードされる。共有フィールドＶＯ上に存在するすべてのＶＯも共有ＶＯデータベース上にロードされる。
（５）サーバ上には共有フィールドＶＯの名前と、そのＶＯに登録されている共有ユーザのリストを返すインタフェースがあり、共有ユーザはこのインタフェースを使って、最新の共有フィールドＶＯをロードすることができる。
（６）共有ユーザである生徒Ａは、デスクトップ上で自分が利用できる共有フィールドＶＯを「共有フィールドＶＯ名前リスト」として見ることができる。生徒Ａは、この名前リストの中から所望の共有フィールドＶＯを選択することによって、この共有フィールドＶＯをサーバ上からロードして開く。生徒Ａのこの動作は、共有フィールドＶＯへの途中参加として理解できる。
（７）ここから教師と共有者である生徒Ａとの共有フィールドＶＯ上のＶＯの共有が始まる。図６（ａ）は教師のデスクトップ画面の表示であり、先に作成した「物理学習」という名の共有フィールドＶＯ（６００）と、その上に貼り合わせられた運動方程式フォルダーＶＯ（６０１）が見える。共有フィールドＶＯの外に見える「運動方程式フォルダーＶＯ」（６０２）「プレゼンフォルダーＶＯ」（６０３）「ツールボックスＶＯ」（６０４）等は教師の個人的なＶＯであって、共有されるものではなく、他のユーザからは見えない。図６（ｂ）は、生徒Ａのデスクトップ画面の表示であり、参加した共有フィールドＶＯ「物理学習」（６０５）が教師と同様に見えている。共有フィールドＶＯの外に見える「レポートフォルダーＶＯ」（６０６）「メモフォルダーＶＯ」（６０７）「テスト結果ＶＯ」（６０８）等は生徒Ａの個人的なＶＯであって、共有されるものではなく、他のユーザからは見えない。
（８）教師が運動方程式フォルダーＶＯ（６０１）をクリックして（教師操作１）右ボタンメニューをポップアップ表示し、メニューの中から「開く」を選択する（教師操作２）。これらすべてのイベントがシリアライズされ、生徒Ａのマシンに伝達される。
（９）伝達されたイベントは、生徒Ａの共有フィールドＶＯによって受信され、共有フィールドＶＯが、シリアライズされたイベントを展開して、その上にあるＶＯへ操作イベントを適用する。その結果、教師のデスクトップで生じたものと同じ動作がリアルタイムで実行される。
（１０）教師は、運動方程式フォルダーＶＯ（６０１）の中に並んでいる数式ＶＯのうち１つである「斜め投げ上げ時の位置計算式」（６０９）を選択し、フォルダー内からフォルダー外へドラッグアンドドロップする（教師操作３）。このときフォルダーにあったときの位置から、外へドロップされるまで、共有フィールドＶＯからの相対位置がサンプリングされて、そのシーケンスがシリアライズされ、イベントとして生徒Ａへ送信される。
（１１）生徒Ａの共有フィールドＶＯは、この相対位置変化のイベントを受け取り、該当する数式ＶＯの座標の位置を逐次変える。このようなイベントの伝達と実行により、生徒Ａはリアルタイムで、教師の行ったドラッグアンドドロップに伴う、ＶＯの移動の軌跡を見ることができる。
（１２）ここで教師が、共有フィールドＶＯの外でマウスクリックして、数式ＶＯ（６１０）の選択を中止する。
（１３）生徒Ａは、数式ＶＯ（６１１）へのマウス選択が可能になる。これにより、生徒Ａが数式ＶＯへのマウスによるメニュー選択が可能となり、パラメータを入力することができる。例えば数式ＶＯの中に初速度の値を与える（生徒Ａ操作１）。
（１４）生徒Ａが与えた初速度の値は、そのイベントが前述のようにして各ユーザの環境へ送られるので、すべての共有者間で観察することができる。
（１５）次に、生徒Ａは、その数式ＶＯを表示したいグラフＶＯ（６１２）上まで移動する（生徒Ａ操作２）。この移動も前記と同様に軌跡を共有することができる。
（１６）数式ＶＯ（６１１）をグラフＶＯ（６１２）に貼ると、数式ＶＯは消え、代わりにグラフ内でその数式をプロットした結果が表示される。この表示も共有者全員でリアルタイムに観察することができる。ここで生徒Ａが、共有フィールドＶＯの外でマウスクリックして、グラフＶＯへの操作を終える。
（１７）（１２）の動作後、教師は次の動作準備のため、直ちに運動方程式フォルダーＶＯ（６０１）の中の垂直投げ上げ時の位置計算式ＶＯ（６１３）を選択できる。このＶＯは、生徒Ａによる操作シナリオを実行しているＶＯではなく、そのＶＯと親子のＶＯでもないので独立したＶＯと判断され、このＶＯへのマウスクリックイベントは、この共有フィールドＶＯのイベントフック（後述）時にリジェクトされない。したがって教師は、このフォルダーから垂直投げ上げ時の位置計算式ＶＯをフォルダー外へ移動することができる（教師操作４）。
【００４１】
このようなＶＯの操作、及びその移動の軌跡などが共有されて見える様子が、図６に示されている。
（１８）再び教師による操作説明をする。ここで他のアプリケーションをラッピングできるＶＯを使用する例を図７を参照して説明する。共有フィールドＶＯ外のデスクトップ上で、教師は物理の説明を記述したプレゼンテーション用アプリケーション・ファイルをアプリケーションラッパーＶＯ（７００）にドロップする（教師操作５）。するとＶＯ上でそのアプリケーションが起動し、アプリケーション・ファイルがそのＶＯの中で開き、内容を観察することができる。教師は、このアプリケーションラッパーＶＯを共有フィールドＶＯ（７０１）上にドロップする（教師操作６）。
【００４２】
この一連の操作を図７（ａ）に示す。
（１９）共有フィールドＶＯ（７０１）はこの新しいアプリケーションラッパーＶＯが貼り合わせられたことを検知し、アプリケーションラッパーＶＯ（７０２）をサーバ上の共有ＶＯデータベースにロードする。
（２０）サーバは現在使用している共有者のアドレスにこのアプリケーションラッパーＶＯをブロードキャストする。このとき共有者の画面には新規ＶＯが追加され、開いている共有フィールドＶＯ上にそのアプリケーションラッパーＶＯが出現する。
（２１）教師は、プレゼンテーションラッパーＶＯの中で開かれている説明文の中で、生徒の注意を促すために、文章の一部をマウスによって選択し、ハイライトする（教師操作７）。この教師の操作も、マウスイベントシナリオが、生徒Ａの共有フィールドＶＯ上のプレゼンテーションラッパーＶＯにも適用されるので、生徒Ａもそのハイライト表示を見ることができる。
（２２）このようにして、共有者にもこの物理の説明を記述したプレゼンテーション用アプリケーション・ファイルをリアルタイムに読むことができる。
（２３）また同様に（２１）の操作中に、生徒Ａは数式グラフＶＯをより詳細に見るために、数式グラフＶＯウィンドウ枠（７０３）を選択し、リサイズ操作をすることができる（生徒Ａ操作３）。
【００４３】
この様子を、図７（ｂ）に示す。
（２４）ここで、生徒Ａは、共有フィールドＶＯへの参加を中止したくなったので、共有フィールドＶＯ上でマウス右ボタンをクリックし、参加の中断メニューを選択する。すると、サーバ上の共有フィールドＶＯデータベース中の該当する共有フィールドＶＯ共有者の生徒Ａのステータスが休止に変更される。
（２５）共有者が他に存在せず、教師のみだったとする。教師も共有を中断するプロセスは生徒Ａと同様である。ただし、教師の場合は、共有フィールドＶＯの最新状態をすべてデータベースにストアして終了する。このような処理を行うことによって、次回この共有フィールドＶＯが起動されたときは、教師の最後の操作を反映した状態のＶＯから再び開始することができる。
【００４４】
ここでは教師と生徒Ａについて説明したが、生徒Ｂについても生徒Ａと同様である。この人数は３人に限らず、システムの処理性能の許す限り何人でもよいことはもちろんである。
【００４５】
図８は、本発明による共有フィールドＶＯのモジュール構成の例を示す図である。図中８０は、ユーザイベントフック部であって、この共有フィールドＶＯ上にあるＶＯへのユーザの操作イベントをフェッチし、イベント保持部８２に配送する。このユーザイベントフック部は、共有フィールドＶＯ上部を覆うように設けられるので、共有フィールドＶＯ上の任意のＶＯへのマウスイベントを検出できる。即ち、共有フィールドＶＯ上の個々のＶＯにマウスイベントが伝わる直前にそのＶＯへのイベントがわかる機能（Before-Daemon）がある。この様な構造にすることにより、操作できないＶＯを操作しようとすると、その直前に検知し、マウスクリックを無効にすることができる。また、ユーザの操作イベントは、共有フィールドＶＯ上のＶＯ群８１へも伝えられ、ＶＯ群本来の動作が実行される。ＶＯ群のイベントは、ＶＯ本来が持つ性質によって、最も親である共有フィールドＶＯに伝えられる。ＶＯ自身によって伝えられないようなイベントが発生した場合にも、ユーザイベントフック部において、マウスイベントが対象のＶＯに実際に伝わった後に、イベント情報を共有フィールドＶＯへシナリオとして記録する機能（After-Daemon）がある。８２は、イベント保持部であって、前記ＶＯ群の動作イベントならびにユーザイベントフック部８０からのイベントを受け取ると同時にそれらを保持し、更にネットワークへのイベント列配送部８３を介して、サーバ又は他の共有ユーザへイベント情報を送り出す。送り先は共有フィールドＶＯが保持しているイベント情報を配送すべきサーバのＵＲＬリストの格納先(９０)や共有者の共有フィールドＶＯにアクセスするためのユーザアドレスリスト格納先（９１）から取得する。サーバ又は他の共有ユーザからのイベント情報は、ネットワークを介したイベント列受信部８４を介して受け取られ、イベント解釈・命令部８５で解釈し、共有フィールドＶＯ上のＶＯ群へ渡し、実行する。この共有フィールドＶＯを動作させているユーザが新たなＶＯを共有フィールドＶＯ上に生成した場合は、ＶＯ複写部８６がそのＶＯのコピーを作成し、ネットワークを介したＶＯ配送部８７を介してサーバ又は他の共有ユーザへエキスポートＶＯとして送り出す。この場合も送り先は共有フィールドＶＯが保持している（９０）または（９１）から取得する。サーバ又は他の共有ユーザからのインポートＶＯは、ネットワークを介したＶＯ受信部８８を介して受け取られ、ＶＯ登録部８９で共有フィールドＶＯ上へ登録する。このような構造によって、共有フィールドＶＯは、ネットワークに接続された複数のコンピュータにおいて共有環境を実現することもできるし、サーバにおいて共有環境を実現して、それを各ユーザに共有させることもできる。
【００４６】
図９は、本発明によるＶＯのＶＯファイルの構成を示す概略図である。各ＶＯは、図示のような構造を有し、その固有の情報を保持する。そのような情報としては、当該ＶＯのクラスを示すＣｌａｓｓＩＤ、ＶＯの名前や作成者や所有者やVO自身の説明を示すプロファイル、共有フィールドＶＯ内での座標を示す位置情報、そして、そのＶＯが持つ特性を表す内部状態としてのスロット値などがある。このような情報を保持することによって、各ＶＯはいかなる共有者のクライアントマシン上のＶＯ実行環境においても、同一の動作をすることを保証する。すなわちオブジェクト指向のインスタンスを実現することができる。
【００４７】
図１０は、本発明によるＶＯ操作イベント列を示す概略図である。各ＶＯ又は共有フィールドＶＯに記憶されるＶＯ毎のシナリオの構造である。図においては「ＶＯ  ＩＤ」を持つあるＶＯの初期位置を最初に定義してある。それに続いて、次々に生ずるイベントとして、マウスイベント、キーイベント、マウスイベント、キーイベントが続き、ＶＯが移動された位置情報があり、更に各種イベントが続くという例を示している。このような構造のシナリオを保持すると共に、これをイベント情報として、図８に示したような機構を介して共有ユーザに送ることによって、起り得る全てのイベントを共有して、同時に観察することができる。
【００４８】
【発明の効果】
以上のような構成の情報共有方法及び装置を実現することによって、あらゆる操作イベントを効率的に共有することを実現した。
【００４９】
従って、例えば、共有フィールドＶＯ上のあるＶＯをマウスクリックしてポップアップメニューを開き、メニューを表示して操作を開始するとき、メニューのうちどのメニュー項目を選択したのかもわかり、あるオブジェクトを選択し、移動し、貼り合わせるイベントもそのままの見え方で共有することができる。
【００５０】
このような共有機能を使用し、例えばその上で電子的な遠隔学習アプリケーションを構築すれば、複数の生徒が操作主としての講師の操作を観察することによって、オブジェクトの動きを正確に理解することでき、大きな学習効果が期待できる。
【００５１】
さらに複数の共有者を考えた場合に、共有領域への途中参加、途中退場ということも実現された。
【図面の簡単な説明】
【図１】  本発明による情報共有方法の流れ図。
【図２】  本発明による情報共有装置の第１のシステム構成を示す図
【図３】  本発明による情報共有装置の第２のシステム構成を示す図
【図４】  本発明による情報共有装置の第３のシステム構成を示す図
【図５】  図４と同様のシステムにおいて、教師と、生徒Ａ及びＢのアプリケーション共有を例示する図。
【図６】  本発明の情報共有装置でＶＯの操作及びその移動の軌跡などが共有されて見える様子を示す図。
【図７】  本発明の情報共有装置でＶＯの操作及びその移動の軌跡などが共有されて見える様子を示す図。
【図８】  本発明による共有フィールドＶＯのモジュール構成の例を示す図。
【図９】  本発明によるＶＯのＶＯファイルの構成を示す概略図。
【図１０】  本発明によるＶＯ操作イベント列を示す概略図。
【図１】
0004953518.tif 000002
【図２】
0004953518.tif 000003
【図３】
0004953518.tif 000004
【図４】
0004953518.tif 000005
【図５】
0004953518.tif 000006
【図６】
0004953518.tif 000007
【図７】
0004953518.tif 000008
【図８】
0004953518.tif 000009
【図９】
0004953518.tif 000010
【図１０】
0004953518.tif 000011