[第1の実施の形態]
以下、図面を参照しつつ本発明の一実施の形態について説明する。なお、以下の説明に用いる図面では、同一の部品に同一の符号を付してある。それらの名称及び機能も同一である。したがって、それらについての詳細な説明は繰返さない。
図1に、本実施の形態に係るデータ共有システムの概略構成を示す。図1を参照して、データ共有システム100は、ネットワーク102を介してデータを提供するためのサーバ104と、それぞれネットワーク102に接続され、サーバ104より提供されるデータを共有し、当該データを互いに他と同様の態様で閲覧可能に表示するための端末装置110及び112を含む。サーバ104は、具体的には一般的なウェブサーバであり、ウェブページ等のデータを保持し、ネットワーク102を介して所定の転送要求を受信したことに応答して、その転送要求に対応するデータを要求元に返信する。より具体的には、ネットワーク102を介して所定のHTTP(Hyper Text Transfer Protocol)リクエストを受信したことに応答して、その転送要求に対応するデータを返信する。
端末装置110及び112には、主体的にデータ共有のための処理を行ないデータの共有を開始する装置であるか、開始する側の装置に対するデータ共有の相手となる装置であるかという観点から、2種類の装置に分類される。すなわち、共有の対象となるデータの管理を行ない、データの共有に要する処理を開始する側(以下、「開始側」と呼ぶ。)の端末装置110と、当該端末装置に対する共有相手となる側(以下、「相手側」と呼ぶ。)の端末装置112とである。本明細書では、前者の端末装置110を「開始側共有端末装置」と呼び、後者の端末装置112を「相手側共有端末装置」と呼ぶ。なお、端末装置が開始側/相手側のいずれに属するかは固定されることはないが、以下の説明では、端末装置110が開始側であり端末装置112が相手側であるものとする。
開始側端末装置110は、ネットワーク102を介してサーバ104に転送要求を送信し、サーバ104から返信されるデータを閲覧可能な態様で表示するとともに当該返信されるデータを相手側共有端末装置112と共有する。相手側共有端末装置112は、ネットワーク102を介して開始側共有端末装置110との間でデータを共有し、共有しているデータを取得し閲覧可能な態様で表示する。
開始側共有端末装置110は、ネットワーク102を介して通信を行なうためのインタフェースとなる通信部120と、ユーザによる操作を受けて、その操作に対応する操作情報を発行するための入力部122と、入力部122により発行される操作情報にしたがってデータを取得し表示するためのブラウザ126と、ブラウザ126によるデータの取得を仲介するとともに、取得したデータ及びユーザによる操作を相手側共有端末装置112との間で共有する処理を行なうための開始側共有制御部124と、開始側共有制御部124に接続され、ブラウザ126が開始側共有制御部124を介して取得したデータを蓄積するためのキャッシュ128とを含む。
相手側共有端末装置112は、開始側共有端末装置110の通信部120、入力部122、及びブラウザ126と同一の機能を持つ通信部130、入力部132、及びブラウザ136と、ブラウザ136によるデータの取得を仲介するとともに、取得したデータ及びユーザによる操作を共有する処理を実行するための相手側共有制御部134とを含む。なお、相手側共有端末装置112は、開始側共有端末装置110と同様のキャッシュを含んでもよいが、本実施の形態に係るデータ共有システム100において、データ及び操作の共有を行なう場合、相手側共有端末装置112のキャッシュは使用されない。
ブラウザ126及び136はいずれも、具体的には一般的なウェブブラウザである。すなわち、ユーザによる操作にしたがい、ネットワーク102上で提供されているデータの転送を要求するためにHTTPリクエストを発行し、当該発行したHTTPリクエストに対応するHTTPレスポンスを受け、当該HTTPレスポンスに含まれるデータを閲覧可能に表示する。ただし、ブラウザに対する操作の内容は、入力部122又は132からブラウザ126又は136に直接に与えられ、さらに開始側共有制御部124又は相手側共有制御部134にも与えられる。開始側共有制御部124及び相手側共有制御部134は、与えられる操作情報に基づき、ブラウザ126及び136を制御し、データ及び操作の共有を行なう。以下、ブラウザ126及び136をそれぞれ、「開始側のブラウザ126」及び「相手側のブラウザ136」と呼ぶことがある。
ユーザによるブラウザに対する操作は次の二つに分類することができる。すなわち、ブラウザ126又は136のデータを更新する操作と、データを更新する操作に含まれない操作である。具体的には、URLなどデータのアドレスを指定する操作、他のデータへのハイパーリンクが設定されたオブジェクトをクリックする操作、データ取得履歴を利用して別のデータへ更新するための「進む」「戻る」ボタンを押す操作、データを再取得するリロード(再読込)ボタンを押す操作、及びフォームデータを送信するボタンを押す操作が前者の操作に該当する。現在保持しているデータに基づいて表示を更新する操作などは、後者の操作に該当する。具体的には、表示をスクロールする操作、同一データ内の別の位置へのハイパーリンクが設定されたオブジェクトをクリックする操作、及びブラウザの表示領域を拡大/縮小する操作が、後者の操作に該当する。
開始側共有端末装置110及び相手側共有端末装置112は、双方が同一の情報を同一の状態で表示するよう、データ及びその表示に関する操作を共有する。図2に、ブラウザ126及び136における表示の遷移例を示す。図2を参照して、開始側共有端末装置110又は相手側共有端末装置112において、ユーザがデータを更新する操作を行なったものとする。この操作に応答して、開始側共有端末装置110及び相手側共有端末装置112はデータを共有する。例えば、開始側共有端末装置110があるデータを取得し、開始側のブラウザ126が表示画面150を表示すると、相手側共有端末装置112も、画面150の表示に用いられたデータと同じデータを取得する。相手側のブラウザ136は画面150と同じ画面152を表示する。
さらに、開始側共有端末装置110及び相手側共有端末装置112の一方において、データを更新する操作に含まれない操作を行なうと、まず操作を受付けた装置の表示にその操作が反映され、続いて、他方の装置の表示に同じ操作が反映される。例えば、開始側共有端末装置110のユーザが、画面150上のスクロールバー154Aを画面の下方向に移動させる操作を行なったものとする。この操作はまず開始側のブラウザ126で反映される。すなわち、開始側のブラウザ126の表示は、画面150から画面160に変更される。画面160においては、スクロールバー154Aの表示位置が移動し、それに伴い画面上でのデータの表示も変更される。続く操作の共有により、相手側のブラウザ136においても操作が反映される。すなわち、相手側のブラウザ136の表示は画面152から、開始側のブラウザ126の表示している画面160と同じ画面162に変更される。画面162上のスクロールバー154Bの位置は画面160上のスクロールバー154Aの位置と同じ位置となる。
開始側共有端末装置110と相手側共有端末装置112とは、互いにユーザの入力に応答してブラウザの制御情報を作成する。さらに一方の装置のブラウザに対し行なわれた制御が他方の装置のブラウザにおいても行なわれるように、制御情報を相互にやり取りする。制御情報は、例えば、ブラウザの表示画面のスクロール、進む、戻る、及び履歴表示等の操作に対応する処理を制御するための情報、並びに取得すべきデータの位置を表すURL及びURLにより示される位置に対応するデータの転送を受けるようブラウザを制御するための情報である。
開始側共有端末装置110及び相手側共有端末装置112が同じ表示を行なうためには、双方が同じデータを得ることが必要となる。ところが、サーバ104により提供されるデータは、同一のURLにより識別されるデータであっても、アクセスするタイミング等により変化することがある。
そこで、本実施の形態に係るデータ共有システム100は、キャッシュ128を用いて、データの共有を行なう。一般的なウェブブラウザにおいては、キャッシュを用いてデータへのアクセス速度を向上させることが行なわれている。すなわち、ウェブブラウザがネットワークにアクセスしてデータを取得し表示した際に、取得したデータをキャッシュに格納しておく。同じデータを再度表示しようとした際には、ウェブブラウザはキャッシュから該当するデータを取得して表示する。これによりブラウザは、ネットワーク102へアクセスすることなく、同じデータを繰返し表示することができる。
本実施の形態に係るデータ共有システム100においてキャッシュ128は、開始側のブラウザ126に対しては、一般的なキャッシュとしての機能を持つ。ただしキャッシュ128は、相手側のブラウザ136に対しては、共有されるべきデータの唯一の転送元として機能する。すなわち、データの取得を要する処理を求める操作が行なわれると、開始側共有端末装置110が、サーバ104又はキャッシュ128から、相手側共有端末装置112に先立ってデータを取得し、開始側のブラウザ126に転送する。さらに、取得したデータをキャッシュ128に格納することにより、開始側のブラウザ126に転送されたデータと同じデータを準備する。そして、キャッシュ128に格納されたデータの転送を相手側のブラウザ136が受けるようにする。
〈構成〉
図3に、図1に示すキャッシュ128内のデータの概略構成を示す。図3を参照して、キャッシュ128は、複数のキャッシュデータ170A,170B,…,170Nを含む。キャッシュデータ170A,170B,…,170Nの各々は、そのキャッシュデータを識別するための名称172と、データ174とを含む。名称172は、ネットワーク102を介してデータ174を取得した際に用いられたURLに対応する。開始側共有制御部124がキャッシュ128からデータを取得する際には、名称172を参照して、取得すべきデータを選択する。
図4に、開始側共有制御部124及び相手側共有制御部134が作成する制御情報の例を示す。図4を参照して、制御情報には2種の情報が存在する。一方の制御情報180Aは、データを更新する操作に含まれない操作に対応する動作を、ブラウザに命令するための操作制御情報である。他方の制御情報180Bは、データを更新する操作に対応し、データの取得を命令するためのデータ取得制御情報である。
操作制御情報180Aは、この制御情報がデータを更新する操作に含まれない操作に対応する動作をブラウザに要求するものであることを表すパラメタである操作制御要求を格納するフィールド182と、操作の内容184とを含む。
データ取得制御情報180Bは、この制御情報がデータの取得を要求するものであることを表すパラメタであるデータ取得制御要求を格納するフィールド186と、取得対象のデータに対応するURL188とを含む。本実施の形態に係るデータ取得制御情報180Bはさらに、データを取得する際の転送元がネットワーク102上のサーバ104であるか、キャッシュであるかの別を表す転送元指定情報190を含む。転送元指定情報190は、転送元がサーバであることを表す第1の値と、転送元がキャッシュであることを表す第2の値とのいずれかをとる。開始側共有端末装置110が相手側共有端末装置112に対してデータ共有制御情報180Bを送信する際には、開始側共有制御部124が転送元指定情報190の値を第2の値に設定する。それ以外の場合には、転送元指定情報190の値は、開始側共有制御部124又は相手側共有制御部134により設定される。
本実施の形態に係る開始側共有端末装置110は、実質的には、一般的なコンピュータと同様のプログラム実行のためのハードウェアと、そのハードウェアにより実行されるコンピュータプログラム(以下単に「プログラム」と呼ぶ。)と、そのハードウェアに格納されるデータとにより実現される。図5に、このコンピュータシステム200の内部構成を示す。
図5を参照して、このコンピュータシステム200は、コンピュータ210と、キーボード212と、マウス214と、モニタ216とを含む。コンピュータ210は、CD−ROM(コンパクトディスク読出専用メモリ)ドライブ222及びFD(フレキシブルディスク)ドライブ226と、CPU(中央処理装置)228と、キーボード212と、マウス214と、モニタ216、CD−ROMドライブ222、FDドライブ226、CPU228に接続されたバス230と、バス230に接続され、ブートアッププログラム等を記憶する読出専用メモリ(ROM)232と、バス230に接続され、プログラム命令、システムプログラム、及び作業データ等を記憶するランダムアクセスメモリ(RAM)234と、プログラム及びデータを記憶するハードディスク236と、図1に示すネットワーク102への接続を提供するネットワークアダプタボード238とを含む。
コンピュータシステム200に開始側共有端末装置110としての動作を行なわせるためのプログラムは、CD−ROMドライブ222若しくはFDドライブ226に挿入されるCD−ROM220若しくはFD224に記憶され、さらにハードディスク236に転送される。又は、プログラムはネットワーク102(図1参照)を通じてコンピュータ210に送信されハードディスク236に記憶されてもよい。プログラムは実行の際にRAM234にロードされる。CD−ROM220から、FD224から、若しくはネットワーク102を介して、直接にRAM234にプログラムをロードしてもよい。
このプログラムは、コンピュータ210に本実施の形態に係る開始側共有端末装置110として動作を行なわせる複数の命令を含む。この動作を行なわせるのに必要な基本的機能のいくつかはコンピュータ210上で動作するオペレーティングシステム(OS)若しくはサードパーティのプログラム、又はコンピュータ210にインストールされる各種ツールキットのモジュールにより提供される。したがってこのプログラムは開始側共有端末装置110の動作をコンピュータ210に実行させるのに必要な機能全てを必ずしも含まなくてよい。このプログラムは、命令のうち、所望の結果が得られるように制御されたやり方で適切な機能又は「ツール」を呼出すことにより、上記した開始側共有端末装置110としての動作を実行する命令のみを含んでいればよい。コンピュータシステム200の動作は周知であるので、ここでは繰返さない。
図6に、開始側共有端末装置110の機能をコンピュータに実現させるためのプログラムの制御構造を示す。図6を参照して、開始側共有端末処理260が開始されると、ステップ262において、ユーザによる操作の有無を判定する。入力部122(図1参照)により操作情報が発行されたならば、ステップ264に進む。さもなければステップ274に進む。ステップ264では、操作情報に基づき、ユーザによる操作がデータを更新する操作であるかそれ以外のものであるかを判定する。データの取得を伴う動作を求める操作であれば、ステップ270に進む。それ以外のものであればステップ272に進む。この判定は、ブラウザ126において実行される。
ステップ270では、相手側共有端末装置112(図1参照)との間でのデータの共有を実現するための開始側データ共有処理を行ない、ステップ262に戻る。開始側データ共有処理の詳細については、図7を用いて後述する。
ステップ272では、新たなデータの取得を伴わない動作を求める操作の共有を行なうための操作共有処理を行ない、ステップ262に戻る。操作共有処理の詳細については、図8を用いて後述する。
ステップ262からステップ274に処理が移行すると、ステップ274において、相手側共有端末装置112から制御情報を受信したか否かを判定する。制御情報を受信したならばステップ276に移行する。さもなければステップ262に戻る。
ステップ276では、受信した制御情報を解析する。続くステップ278では、受信した制御情報が操作制御情報180Aであるか、データ取得制御情報180Bであるかを判定する。制御情報がデータ取得制御情報180Bであれば、ステップ270の開始側データ共有処理に移行する。操作制御情報180Aであれば、操作制御情報180Aにより表される操作の内容を開始側のブラウザ126において反映するための操作制御情報反映処理をステップ280において行ない、ステップ262に戻る。操作制御情報反映処理の詳細については、図9を用いて後述する。
図7に、図6のステップ270において行なわれる開始側データ共有処理の制御構造を示す。図7を参照して、ステップ270の開始側データ共有処理が開始されると、ステップ302において、開始側のブラウザ126がこのデータ取得制御情報180Bにしたがい転送要求を発行し、開始側共有制御部124がこれを受付ける。なお、図6のステップ262で受付けた操作が、リロード(再読込)ボタンを押す操作など、サーバ104からのデータ取得を指定した操作である場合には、転送要求において、データの転送を禁止するための記述を付加する。例えば、HTTPリクエストで転送要求を行なう際に、ヘッダに、キャッシュ128からのデータの転送を禁止するための記述「Pragma:no−cache」が付加される。
ステップ304では、転送要求により指定された転送元からデータを取得する。すなわち、転送元としてサーバ104が指定されていたならば、ステップ302で受付けた転送要求を、当該転送要求に基づきネットワーク102を介してサーバ104に送信し、サーバ104からデータを受信する。転送元としてキャッシュが指定されていたならば、該当するデータをキャッシュ128(図1参照)から読出す。
ステップ306では、ステップ304で取得したデータを開始側のブラウザ126に供給し、当該データを開始側のブラウザ126の表示に反映させる。ステップ308では、ステップ304で受信したデータをキャッシュ128に格納し、開始側のブラウザ126において反映されているデータとキャッシュ128内のデータとを同期させる。
続くステップ310では、データ取得制御情報180Bを準備し、その転送元指定情報190を、キャッシュ128を表す第2の値に設定する。ステップ312では、ステップ310で準備したデータ取得制御情報180Bを相手側共有端末装置112(図1参照)に送信する。ステップ316では、相手側共有端末装置112から転送要求が送信されてくるのを待ち、転送要求を受信するとステップ318に進む。なお、相手側共有端末装置112から転送要求を受信した場合、当該転送要求においては、図12を用いて後述するとおり、キャッシュ128からのデータの転送を指定する情報が付加されている。
ステップ318では、ステップ316で受信した転送要求にしたがい、転送の対象となるデータをキャッシュ128から取得する。ステップ320では、ステップ318で取得したデータを相手側共有端末装置112に送信し、処理を終了する。
図8に、図6のステップ272において実行される操作共有処理の制御構造を示す。図8を参照して、ステップ272の操作共有処理が開始されると、ステップ344において、操作が自己のブラウザに反映されるのを待ち、そのブラウザの動作に関しブラウザから情報を得る。操作が反映されるとステップ346に進む。ステップ346では、ステップ274で得た情報をもとに操作制御情報180Aを作成し、共有関係にある他の装置に対して操作制御情報180A送信し、処理を終了する。
図9に、図6のステップ280において実行される操作制御反映処理の制御構造を示す。図9を参照して、ステップ280の操作制御情報反映処理が開始されると、ステップ360において、他の装置から受信した操作制御情報180Aをもとに、ブラウザに対し操作情報を模した情報を生成し、ブラウザに対し発行する。ステップ362では、操作制御情報180Aにより指定された制御内容の操作がブラウザに反映されるのを待つ。操作が反映されると処理を終了する。
本実施の形態に係る相手側共有端末装置112(図1参照)は、開始側共有端末装置110に係るコンピュータシステム200(図5参照)と同様のプログラム実行のためのハードウェアと、そのハードウェアにより実行されるプログラムと、そのハードウェアに格納されるデータとにより実現される。相手側共有端末装置112の機能を実現するコンピュータの内部構造は図5に示すコンピュータシステム200と同様であり、その動作は周知であるので、これらについての説明は、ここでは繰返さない。
図10に、相手側共有端末装置112の機能をコンピュータに実現させるための制御構造を示す。図10を参照して、相手側共有端末処理380の制御構造は、図6に示す開始側共有端末処理260の制御構造に類似する。図10において、図6と同じステップには同じ参照符号を付してある。ただし、相手側共有端末処理380では、開始側共有端末処理260のステップ270における開始側データ共有処理に替えて、ステップ388の処理を行なう。ステップ388では、開始側共有端末装置110との間で共有されるデータを取得し自己のブラウザに反映させるための相手側データ取得処理を行なう。また、相手側共有端末処理380では、開始側共有端末処理264での判定結果が得られれば、ステップ386へ進む。ステップ386では、開始側共有端末装置110との間でのデータの共有を実現するための相手側データ共有処理を行ない、ステップ388に進む。
図11に、図10のステップ386において実行される相手側データ共有処理の制御構造を示す。図11を参照して、ステップ386での相手側データ共有処理が開始されると、ステップ424で、転送要求をもとにデータ取得制御情報180Bを作成し開始側共有端末装置110に送信する。このデータ取得制御情報180Bに対し、開始側共有端末装置110が開始側データ共有処理(図7参照)を行なって、データ取得制御情報180Bを送信してくる。ステップ426では、開始側共有端末装置110からデータ取得制御情報180Bが送信されてくるのを待つ。データ取得制御情報180Bを受信すると、相手側データ共有処理386を終了し、図10のステップ388に示す相手側データ取得処理に移行する。
図10に示すステップ388の相手側データ取得処理は、開始側共有端末110からデータ取得制御情報180Bが与えられた場合に実行される。このデータ取得制御情報180Bは、図7に示す開始側データ共有処理のステップ312において送信されたものである。したがって、このデータ取得制御情報180Bの転送元指定情報190は、第2の値に設定されている。
図12に、図10のステップ388において実行される相手側データ取得処理の制御構造を示す。図12を参照して、この処理が開始されると、ステップ442において、相手側共有制御部134(図1参照)が、受信したデータ取得制御情報180Bにしたがい転送要求を発行する。データ取得制御情報180Bにおいて、データの転送元としてキャッシュが指定されているため、相手側共有制御部134は、この転送要求を開始側共有端末装置110にこれを送信する。この転送要求は、開始側共有端末装置110のキャッシュ128からのデータの転送を要求する旨の情報を含む。
この転送要求を開始側共有端末装置110が図7に示すステップ316において受信し、ステップ318及び320の処理を行なう。これにより、開始側共有端末装置110は、相手側共有端末装置112に対しキャッシュ128内のデータを送信してくる。
ステップ444では、開始側共有端末装置110から送信されてきたデータを取得する。ステップ446では、ステップ444で受信したデータを相手側のブラウザ136に与え、相手側のブラウザ136の表示に当該データを反映させて処理を終了する。
〈動作〉
本実施の形態に係るデータ共有システム100(図1参照)は、大別して2種類の動作を実行する。一方の動作は、データ共有を行ない、開始側のブラウザ126と相手側のブラウザ136とに同一のデータを反映させる動作であり、他方の動作は、ユーザの操作を共有し、ブラウザ126及び136の表示状態を同一に保つ動作である。いずれの動作も、開始側共有端末装置110のユーザ又は相手側共有端末装置112のユーザによる操作に応答して開始される。
以下にまず、データ共有を行なうための動作について説明する。図13に、開始側共有端末装置110に対してユーザが操作を行なう場合における、サーバ104にあるデータを新たに取得し共有する処理のシーケンスを示す。図13を参照して、開始側共有端末装置110のユーザが入力部122に対して、データの取得を要する操作を行なう。入力部122(図1参照)は、その操作に対応する操作情報460を発生する。
ここで、開始側共有端末装置110は、以下の処理462を行なってサーバ104に対して転送要求464を送信する。すなわち、開始側のブラウザ126が、与えられた操作情報にしたがい動作する。この場合、操作に基づき取得すべきデータのURLを特定し、そのデータに関する転送要求464を発行する。この際、受付けた操作がサーバ104からのデータ取得を指定した操作であれば、ブラウザにより、転送要求に、キャッシュ128からのデータの転送を禁止するための記述が付加される。開始側共有制御部124は、まず転送要求をもとに、取得すべきデータのURLを特定する。転送要求に対応するデータがキャッシュ128内にない場合、又は、上記記述によりキャッシュからのデータの転送が禁止されている場合、この転送要求を、通信部120を介してサーバ104に対して送信する。
サーバ104は、転送要求464を受信すると、その転送要求により指定されたURLのデータを取得する処理466を行ない、取得したデータ468を転送の要求元である開始側共有端末装置110に送信する。開始側共有制御部124は、通信部120を介してデータ468を受信する。
転送要求に対応するデータがキャッシュ128内にあり、かつキャッシュからのデータの転送が禁止する記述が転送要求にない場合、サーバ104からデータ468を得る代わりに、処理462において次の処理を行なう。すなわち、開始側共有制御部124は、この転送要求に基づき、キャッシュ128から、その転送要求により指定されたURLのデータ468を取得する。
以上のようにして、開始側共有制御部124がデータ468を取得すると、そのデータ468を開始側のブラウザ126に与えて、開始側のブラウザ126の表示にデータ468を反映させる。開始側共有制御部124はさらに、データ468をキャッシュ128に格納する。キャッシュ128内のキャッシュデータ170A,170B,…,170N(図3参照)のうち上記の指定されたURLに対応する名称172を持つものにおいて、そのキャッシュデータ内のデータ174は、開始側のブラウザ126において表示されているデータと同一のデータとなる。
続いて、開始側共有制御部124は、データの取得を相手側のブラウザ136(図1参照)に実行させるためのデータ取得制御情報476を作成する処理474を行なう。作成されるデータ取得制御情報476のURL188は、処理462において転送要求をもとに特定されたURLと同じである。ただし、開始側共有制御部124は、キャッシュ128を転送元に指定するために、転送元指定情報190を第2の値に設定する。開始側共有制御部124は、作成したデータ取得制御情報476を、通信部120を介して相手側共有端末装置112に対して送信する。
相手側共有制御部134(図1参照)は、通信部130を介してデータ取得制御情報476を受信すると、以下の処理478を実行する。すなわち、相手側共有制御部134は、受信したデータ取得制御情報476にしたがい、データ取得制御情報476のURL188(図4参照)に対応するデータに関する転送要求480を発行する処理を行なう。この転送要求において指定されるURLは、転送要求464により指定されるURLと同じである。しかし、データ取得制御情報476においては転送元としてキャッシュ128が指定されているため、発行される転送要求480においても、転送元としてキャッシュ128が指定される。相手側共有制御部134はこの転送要求480を、通信部130を介して開始側共有端末装置110に対し送信する。
開始側共有制御部124は、通信部120を介して相手側共有端末装置112から転送要求480を受信すると、以下の処理482を実行する。すなわち開始側共有制御部124は、当該転送要求に基づいてデータの転送元を特定する。転送要求480においては、転送元としてキャッシュ128が指定されている。そのため、開始側共有制御部124は、キャッシュ128(図3参照)から該当するデータ484を取得する。この際、開始側共有制御部124は、キャッシュデータ170A,170B,…,170Nの中から、転送要求480により指定されたURLに対応する名称172を持つものを選び、当該キャッシュデータにおけるデータ174を取得する。転送要求480により指定されるURLは、転送要求464により指定されるURLと同じであるため、この際取得されるデータ484は、サーバ104が処理466において開始側共有端末装置110に送信したデータ468となる。取得したデータ484は、相手側共有端末装置112に送信される。
相手側共有制御部134が、通信部130(図1参照)を介してこのデータ484を受信すると、当該データ484を相手側のブラウザ136に与えて、当該データ484を相手側のブラウザ136の表示に反映させる。相手側のブラウザ136の表示に反映されるデータ484は、開始側のブラウザ126において表示に反映されたデータ468と同じものである。したがって、開始側のブラウザ126の表示に反映されたデータと同じデータが、相手側のブラウザ136の表示に反映される。
図14に、相手側共有端末装置112に対してユーザが操作を行なった場合におけるデータ共有の処理のシーケンスを示す。なお、図14において図13と同じ処理及び情報には同じ参照符号を付してある。図14を参照して、相手側共有端末装置112のユーザが入力部132(図1参照)に対して、データを更新するための操作を行なう。入力部132はその操作に対応する操作情報500を発生し、相手側のブラウザ136に与える。相手側共有装置112は、以下の処理502を行なう。すなわち、まず相手側のブラウザ136が操作情報500に応答して、転送要求を発行する。相手側共有制御部134は、この転送要求をもとに、データ取得制御情報504を作成し、通信部130を介して開始側共有端末装置110に送信する。
この場合、開始側共有端末装置110は、処理462において、このデータ取得制御情報504に基づき、転送要求を作成し、これをサーバ104に送信する。これ以降、開始側共有端末装置110は、図13に示す処理と同様の処理を実行する。したがって、開始側のブラウザ126の表示に反映されたデータと同じデータが、相手側のブラウザ136の表示に反映される。
続いて、操作の共有を実現する動作について説明する。図1に示す開始側共有端末装置110及び相手側共有端末装置112の一方において、ユーザがデータを更新する操作以外の操作を行なう。当該操作を受けた装置のブラウザ(ブラウザ126又はブラウザ136)は、その操作に応じて動作し、当該操作を受けた装置の共有制御部(開始側共有制御部124又は相手側共有制御部134)は、操作情報にしたがってブラウザが動作し操作が反映されると、そのブラウザの動作に関しブラウザから情報を得る。共有制御部は、得た情報をもとに操作制御情報180Aを作成し、共有関係にある他の装置に対して操作制御情報180Aを送信する。
操作制御情報180Aを受信すると、操作制御情報180Aをもとに、ブラウザに対し操作情報を模した情報を生成し、ブラウザに与える。操作制御情報180Aにより指定された制御内容の操作がブラウザに反映されるのを待つ。操作が反映されると処理を終了する。
以上のように、データの取得を伴う処理を要求する操作が開始側共有端末装置110及び相手側共有端末装置112のいずれの装置において行なわれた場合でも、その操作に対応するデータ取得制御情報が、開始側共有端末装置110に集約される。その結果、開始側共有端末装置110が相手側共有端末装置112に先立ってデータの取得を行なうことになる。この際、データをサーバ104から新たに取得するか、それともキャッシュ内に既に存在するデータを取得するかを選択できる。
さらに、取得したデータを開始側のブラウザ126の表示に反映させるとともに、キャッシュ128に保持しておく。これにより、開始側のブラウザ126に反映させたデータがサーバ104から取得した新たなデータであっても、またキャッシュ128に格納されていたデータであっても、そのデータと同じデータがキャッシュ128内に準備されることになる。キャッシュ128へのデータ格納後に開始側共有端末装置110が相手側共有端末装置112に対しデータ取得制御情報を発行することにより、相手側共有端末装置112は、キャッシュ128内のデータを取得することが可能になる。
さらに、開始側共有端末装置110が、データ取得制御情報においてキャッシュ128を転送元として指定する。これにより、相手側共有端末装置112は、キャッシュ128からのデータの転送を要求することになる。開始側共有端末装置110は、この要求にしたがって、データの転送元としてキャッシュ128を選び、当該キャッシュ128内に格納されたデータを相手側共有端末装置112に送信する。したがって、開始側のブラウザ126の表示に反映されたデータと同じデータが、相手側のブラウザ136の表示に反映される。
[第2の実施の形態]
第1の実施の形態では、開始側共有端末装置110と相手側共有端末装置112とが、データ取得制御情報において転送元指定情報を設定し、ブラウザに転送元の指定を行なわせて、開始側共有端末装置110と相手側共有端末装置112との間のデータの共有を実現した。しかし、本発明はこのような実施の形態には限定されない。
以下に示す第2の実施の形態においては、データ取得制御情報は転送元指定情報を含まない。その代り、キャッシュに格納されるデータ自体に、転送元の指定に関する情報を付与する。そして、データの取得時に、当該付与する情報に基づいて転送元の選択を行なう。なお、第2の実施の形態では、後述のとおり、1台の開始側共有端末装置に対して、複数の相手側共有端末装置がネットワーク102を介して接続されていても適切にデータ共有を実現できる。前提として、相手側共有端末装置112の転送要求の送信先は、取得するデータのURLに関わらず、常に開始側共有端末装置110に設定される。これは、例えば相手側共有端末装置112のプロキシサーバとして、開始側共有端末装置110を設定することによって実現される。
第2の実施の形態に係るデータ共有システムは、第1の実施の形態に係るデータ共有システム100と同様に、開始側共有端末装置110及び相手側共有装置112を含む。これらの開始側共有端末装置110及び相手側共有装置112は、第1の実施の形態と同様のハードウェアと、そのハードウェアにより実行されるプログラムと、そのハードウェアに格納されるデータとにより実現される。しかし、本実施の形態に係るキャッシュのデータ構成は、第1の実施の形態に係るキャッシュのものと異なる。
図15に、本実施の形態に係るキャッシュのデータ構成を示す。図15を参照して、キャッシュ530は、キャッシュデータ532A,532B,…,532Nを格納する。これらのキャッシュデータ532A,532B,…,532Nはそれぞれ、図3に示すキャッシュデータ170A,170B,…,170Nと同様に、データを識別するための名称172とデータ174とを含む。さらに、キャッシュデータ532A,532B,…,532Nの各々に対して、相手側共有端末装置112へのデータを転送する際に転送元についての判別に用いるフラグを格納するための領域540が設けられている。この領域540には、相手側共有端末装置を表す値が格納される(以下、この状態を「フラグが立っている」と呼ぶ。)。又は何も格納されない(以下、この状態を「フラグが下りている」と呼ぶ。)。フラグは、当該データが、当該フラグの値により表されている相手側共有端末装置112と共有されるべきであることを表す。例えばキャッシュデータ532Aには、「共有相手A」という名前の相手側共有端末装置を表すフラグが立っている。これは、「www.○○○.co.jp」の名称で識別されるキャッシュデータ532Aがデータ共有の対象であることを表す。すなわち、このキャッシュデータ532Aに関する転送要求が与えられた場合には、要求されたキャッシュデータ532Aにおけるデータ174をキャッシュから取得して転送するべきであることを表す。また、例えばデータ532Bのフラグは下りている。これは、「www.△△△.co.jp」の名称で識別されるキャッシュデータ532Bがデータ共有の対象ではないことを表す。すなわち、このキャッシュデータ532Bに関する転送要求が開始側共有制御部124に与えられた場合には、開始側共有制御部124は、キャッシュ内からデータ532Bを取得して要求の発行元に転送しても、サーバ104からデータを取得して転送してキャッシュデータ532Bを取得したデータで更新してもよいことを表す。
なお、フラグは、立っている状態に対応する第1の値、又は下りている状態に対応する第2の値に設定される。相手側共有端末装置が1台であれば、フラグは立っている状態と下りている状態とを区別できればよい。この場合、1と0との2値で表してもよい。フラグが立っている状態にあるときに限り、フラグが立っている状態にあることを表す情報を付与し、下りている状態になると、その情報を消去するようにすることによっても、フラグが立っている状態と下りている状態とを表すことができる。相手側共有端末装置が複数の場合には、それぞれの相手側共有端末装置を表すフラグを設定する。これらのフラグの各々は、対応の相手側共有端末装置に関して、フラグが立っている状態にあるのか、下りている状態にあるのかを表す。この場合、相手側共有端末装置ごとに1と0との2値で状態を表したフラグをデータに付してもよい。また、データの送信がまだ行なわれていない相手側共有端末装置を表す情報をデータに付与し、その相手側共有端末装置に対するデータの送信が完了すると、その情報を消去するようにすることによっても、フラグが立っている状態と下りている状態とを表すことができる。
本実施の形態において開始側共有制御部124は、図4に示すデータ取得制御情報180Bに代る制御情報として、データ取得指示を作成し相手側共有端末装置112に対し送信する。図16に、データ取得指示の例を示す。データ取得指示550は、その制御情報が開始側共有端末装置110から相手側共有端末装置112に対してデータの取得を指示するものであることを表すパラメタを格納するフィールド552と、取得するデータのURL554とを含む。データ取得指示550は、第1の実施の形態に係るデータ取得制御要求情報180Bが有するような転送元指定情報を持たない。
第2の実施の形態において、開始側共有制御部124及び相手側共有制御部134がデータを更新する操作に含まれない操作に応じて実行する動作を実現するための処理の制御構造は、第1の実施の形態のものと同様である。開始側共有制御部124及び相手側136がデータを更新する操作に応じて実行する処理の構造は、第1の実施の形態に係る処理の制御構造とは異なる。以下、コンピュータに、第2の実施の形態に係る開始側共有端末装置としての機能を実現させるためのプログラムにおいて、開始側共有制御部124の動作を実現するための開始側共有端末処理の制御構造を説明する。
開始側共有端末装置110の共有制御部124は、データの転送要求(HTTPリクエスト)が与えられるとサーバ104より転送要求(HTTPリクエスト)に対応するデータをHTTPレスポンスを用いて取得するためのデータ取得処理と、データを取得する動作を相手側共有端末装置112に実行させるための制御情報(データ取得指示)を送信するための制御情報送信処理と、相手側共有端末装置112よりデータの転送要求(HTTPリクエスト)を受信するための転送要求受信処理と、データ転送要求受信処理で受信した転送要求(HTTPリクエスト)に基づくデータをHTTPレスポンスを用いて相手側共有端末装置112に提供するデータ提供処理とを行なう。
図17に、入力部122(図1参照)がデータを更新する操作を受けたときの開始側共有装置110の処理600の構造をフローチャートで示す。図17を参照して、この処理600の実行が開始されると、まず、ステップ602において、ブラウザ126の表示するデータを更新する操作を受付ける。ブラウザ126は、受付けた操作に対応する動作を実行する。この場合データを更新する操作を受付けているため、ブラウザ126は、更新により新たに表示されるべきデータを取得するための転送要求(HTTPリクエスト)を発行する。この際、受付けた操作がサーバ104からのデータ取得を指定した操作であれば、ブラウザにより、転送要求のヘッダ内に、キャッシュからのデータの転送を禁止するための記述が付加される。ステップ604では、ステップ602で発行された転送要求(HTTPリクエスト)をもとに、取得すべきデータの名称を調べる。具体的には、取得すべきデータのネットワーク上での場所を表すURLを求める。
ステップ606では、この時点でキャッシュ128に保持されているデータを、以降の処理に利用できるか否かを判定する。ステップ604で求めたURLに対応するデータがキャッシュ128に保持されていて、かつ、転送要求(HTTPリクエスト)にキャッシュからのデータの転送を禁止するための記述が付加されていない、という条件が充足されていれば、キャッシュ128に含まれているデータを利用できると判定し、ステップ614に進む。充足されていなければ、利用できないと判定し、ステップ608に進む。
ステップ608及びステップ610ではデータ取得処理を実行する。ステップ608では、ステップ604で求めたURLに基づき、ステップ602で発行された転送要求(HTTPリクエスト)を、通信部120を介してサーバ104に対して送信する。ステップ610ではサーバ104よりデータを取得する。具体的には、ステップ608で送信した転送要求(HTTPリクエスト)に対する応答(HTTPレスポンス)をサーバ104より受信する。続くステップ612では、取得したデータをキャッシュ128に格納する。
ステップ614では、キャッシュ128内のステップ604で求めたURLに対応するデータに、フラグを立てる。もし相手側共有端末装置112が複数台存在する場合には、相手側共有端末装置112の各々に対応するフラグを立てる。ステップ616では制御情報送信処理を実行する。すなわち、通信部120を介して相手側共有端末装置112に対し、取得されたデータに関するデータ取得指示550を送信する。もし相手側共有端末装置112が複数台存在する場合には、相手側共有端末装置112の各々に対してデータ取得指示550を送信する。ステップ618では、ブラウザ126における表示内容を、キャッシュ128内にある取得されたデータに基づいて更新し処理600を終了する。
以上、図17に示す処理600により、開始側共有端末装置110のブラウザ126が新しいデータに基づいて表示を更新した場合には、キャッシュ128にデータが保持され、さらにキャッシュ内のそのデータに対応してフラグが立つことになる。
図18に、開始側共有端末装置110が、相手側共有端末装置112より転送要求(HTTPリクエスト)を受付けて、その転送要求(HTTPリクエスト)に応答する処理640の制御構造をフローチャートで示す。図18を参照して、処理640の実行が開始されると、ステップ642において転送要求受信処理を実行する。すなわち、転送要求(HTTPリクエスト)を受付ける。
ステップ644では、ステップ642で与えられた転送要求を解析する。具体的には、当該HTTPリクエストに含まれるURLを取出すとともに、HTTPリクエストの送信元を識別する。またこの際、HTTPリクエストのヘッダ内において、キャッシュからのデータの転送を禁止するための記述があるかを調べる。
ステップ646では、相手側の要求するデータを、キャッシュ128内で検索する。ステップ648では、キャッシュ128に含まれているデータを利用できるかを判定する。すなわち、ステップ644で取出したURLに対応するデータがステップ646でキャッシュ128で検索され、かつ、ステップ644でキャッシュからのデータの転送を禁止するための記述が検出されなかった、という条件が充足されていれば、キャッシュ128内のデータを利用できると判定し、ステップ650に進む。条件が充足されていなければ、利用できないと判定し、ステップ652に進む。
ステップ650では、ステップ646で検索されたキャッシュ128内のデータにフラグが立っているか否かを判定する。フラグが立っていなければ、判定結果はNOとなり、ステップ652に進む。立っていれば判定結果はYESとなり、ステップ670に進む。なお、相手側共有端末装置112が複数台存在する場合には、ステップ644で識別された、送信元の相手側共有端末装置のフラグが立っているか否かを判定する。
ステップ652及びステップ654では、図17に示すステップ608及びステップ610と同様のデータ取得処理を実行する。すなわち、ステップ652では、転送要求(HTTPリクエスト)をサーバ104に送信する。ステップ654では、転送要求(HTTPリクエスト)への応答(HTTPレスポンス)を受信することにより、サーバ104からデータを取得する。続くステップ656では、受信した取得対象のデータをキャッシュ128に格納する。
ステップ660では、ステップ654で取得したデータを相手側に返信することにより、転送要求に対応するデータを相手側に提供する。具体的には、ステップ654で取得されたデータを、転送要求の送信元に対して(HTTPレスポンスを用いて)送信する。
ステップ662では、ブラウザ126における表示内容を、ステップ654で取得したデータに基づいて更新する。続くステップ666では、ステップ660でのデータの送信先以外に、相手側共有端末装置があるか否かを判定する。ステップ660でのデータの送信先以外に相手側共有端末装置がある場合とは、例えば、1台の開始側共有端末装置110と2台以上の相手側共有端末装置112とでデータを共有しているような場合である。ステップ660でのデータの送信先以外に相手側共有端末装置があればステップ667に進む。なければ処理640を終了する。
ステップ667では、ステップ656でキャッシュ128に格納したデータに対応する、ステップ660でのデータの送信先以外の相手側共有端末装置のフラグを立てる。ステップ668では、ステップ667で立てたフラグに基づき、図17のステップ616と同様の制御情報送信処理を実行する。すなわち、転送要求を送信してきた相手側共有端末装置以外の相手側共有端末装置に対して、取得したデータに関するデータ取得指示550を送信し、処理640を終了する。これにより、転送要求を送信してきた相手側共有端末装置において行なわれた操作を、それ以外の相手側共有端末装置にも反映させることが可能となる。
ステップ670及び672において、データ提供処理が実行される。すなわち、ステップ670では、ステップ646によりキャッシュ128で検索されたデータを含むHTTPレスポンスを準備し、相手側共有端末装置112に対しこれを送信する。続くステップ672では、開始側共有制御部124は、キャッシュ128に保持されたデータに対応する、転送要求の送信元の相手側共有端末装置112のフラグを下ろし、処理640を終了する。相手側共有端末装置が複数存在する場合でも、ステップ672において下ろすフラグは、ステップ670でのデータの送信先に対応するもののみである。それ以外の相手側共有端末装置112に対応するフラグについては何もしない。このようにしておくと、複数台の相手側共有端末装置の各々に対し共有すべきデータを送信し終えたか否かが、フラグによって識別可能になる。
なお、図17のステップ606での判定において、利用可能との判定結果が得られたものの、当該キャッシュ128に格納されたデータにフラグが立っていることがあり得る。このような場合には、ステップ608に進んでサーバ104からデータを取得してもよい。
この場合、ステップ612では、新たにサーバ104から取得した方のデータを、既に格納されフラグが立っている方のデータとは別に、キャッシュ128内に格納する。さらに、新たにサーバ104から取得した方のデータにも、フラグを立てる。このようにしておくと、同じURLに対応する古いデータと新しいデータとが、共にキャッシュ128内に存在することになる。この場合、同じURLに対応するデータのうち、取得日時が古いものを相手側に返信し、古いデータをキャッシュ128から削除する。これにより、相手側共有端末装置112がまだ取得していないデータがある場合でも、開始側共有端末装置110はサーバ104から新しくデータを取得し、その後古いデータと新しいデータをともに相手側共有端末装置112に提供することができる。
相手側共有装置112の共有制御部134は、データを取得する動作を指示する制御情報(データ取得指示)を開始側共有端末装置110より受信するためのデータ取得指示受信処理と、データを取得する動作を指示する制御情報(データ取得指示)に基づき開始側共有端末装置110に転送要求(HTTPリクエスト)を送信して開始側共有端末装置110よりHTTPレスポンスによりデータを受信するためのデータ受信処理とを行なう。以下、図19、図20を用いて、第2の実施の形態における相手側共有端末装置112の処理を示す。
図19に、相手側共有端末装置112において、ユーザによる入力部132への操作に応じて、ブラウザ136の表示を更新する処理700の構造を示す。処理700の実行が開始されると、ステップ702において、ブラウザ136が入力部132を介してデータを更新する操作を受付け、その操作に基づき、転送要求(HTTPリクエスト)を発行する。ステップ704では、取得すべきデータの名称を調べる。具体的には、ステップ702の操作に基づいて、取得すべきデータのURLを求める。ステップ706では、ステップ702で発行された転送要求(HTTPリクエスト)を開始側共有端末装置110に送信する。ステップ708では、開始側データ共有端末装置110からデータを取得する。具体的には、通信部130を介してステップ706で送信した転送要求への応答(HTTPレスポンス)を開始側共有端末装置110より受信する。ステップ710では、ブラウザ136における表示内容を取得したデータに基づき更新し、処理700を終了する。
なお、図19での処理は、プロキシサーバとして、開始側共有端末装置110を設定すれば、既存のブラウザ技術において行なうことが可能な処理である。すなわち、相手側共有端末装置112は、プロキシサーバとして開始側共有端末装置110を設定することにより、転送要求(HTTPリクエスト)の送信先を指定していることになる。
図20に、相手側共有端末装置112が開始側共有端末装置110よりデータ取得指示550を受信した場合に実行される処理720の構造を示す。ステップ720の実行が開始されると、ステップ722においてデータ取得指示受信処理を実行する。すなわち、通信部130を介して開始側共有端末装置110よりデータ取得指示550を受信する。続くステップ724及びステップ726では、データ受信処理を実行する。すなわち、ステップ724では、ステップ722で受信したデータ取得指示550に基づき、通信部130を介して開始側共有端末装置110に対し、ステップ722で受信したデータ取得指示550において指定されたURL554を含む転送要求(HTTPリクエスト)を送信する。ステップ726では、相手側共有制御部134は、通信部130を介して転送要求への応答(HTTPレスポンス)を開始側共有端末装置110より受信する。ステップ728では、ブラウザ136における表示内容を、ステップ726で受信したデータに基づいて更新し、処理720を終了する。
本実施の形態においても、開始側共有端末装置110及び相手側共有端末装置112のいずれにおいてデータの取得を伴う処理を要求する操作が行なわれた場合でも、その操作に対応する転送要求が、開始側共有端末装置110に集約される。したがって、開始側共有端末装置110が相手側共有端末装置112に先立ってデータの取得を行なう。さらに、取得したデータを開始側のブラウザ126の表示に反映させるとともに、キャッシュ530に保持しておく。これにより、開始側のブラウザ126に反映させたデータと同じデータがキャッシュ530内に準備される。この際に、当該データを共有する相手側端末装置を表すフラグを立てる。このフラグにより、どのデータが共有すべきデータであるかを識別できるようになる。キャッシュ530へのデータ格納後に開始側共有端末装置110が相手側共有端末装置112に対しデータ取得指示を発行することにより、相手側共有端末装置112は、キャッシュ530内のデータを取得することが可能になる。相手側共有端末装置112は、データの転送を開始側端末装置110に要求する。開始側共有端末装置110は、この要求に応答して、要求されたデータと同じデータをキャッシュ530内で検索し、そのフラグを確認する。共有すべきデータにはフラグが立っているため、データの転送元としてキャッシュ530を選び、当該キャッシュ530内に格納されたデータを相手側共有端末装置112に送信する。したがって、開始側のブラウザ126の表示に反映されたデータと同じデータが、相手側のブラウザ136の表示に反映される。さらに、この際に立っていたフラグを下ろす。
再度、データ共有の対象となるデータを開始側のブラウザ126に転送する際には、キャッシュ内の該当するデータにはフラグが立っていないため、サーバ104から取得し、キャッシュ内のデータを更新することができる。又は、キャッシュ内のデータをそのままブラウザ126に転送できる。逆に相手側のブラウザ136にデータを転送する際には、キャッシュ内の該当するデータにはフラグが立っているため、必ずキャッシュからデータを取得することになる。よって、確実にデータを共有できる。
なお、上記の実施の形態では、キャッシュ内のフラグは、当該データを転送する際の転送元を指定するためのものであったが、当該キャッシュ内のデータに関する利用権限の設定にこのフラグを用いることもできる。例えば、フラグの立っているデータに関する転送要求があった場合に、転送要求の発行元をフラグにより表される共有相手によって認証するようにし、認証された相手側端末装置にのみ当該データを転送するようにすることができる。これにより、予め定められた共有の相手以外の装置からネットワーク102を介して転送要求を受信した場合に、当該データを誤って当該共有の相手以外の装置に送信することを防止できる。したがって、データ共有システムのユーザがどのようなデータを共有しているかが秘匿され、ユーザのプライバシを保護できる。
さらに、開始側共有端末装置と相手側共有端末装置とがデータ共有を行っていない状態の時にも、キャッシュとフラグとを利用してデータの授受を行なうことが可能である。例えば、相手側共有端末装置から転送要求が与えられ、キャッシュ内に該当するデータがない場合に、その要求に基づきデータをネットワーク102経由で取得し相手側共有装置112に転送するとともに、フラグを立てずに当該データをキャッシュに格納する。このように、フラグとキャッシュを利用することにより、開始側共有端末装置110は、相手側共有端末装置112に対して、あたかもプロキシサーバとして動作することになる。
上記の第1の実施の形態に係るデータ共有システム100において、開始側共有制御部124は、データ取得制御情報180Bを開始側のブラウザ126に与える際に、キャッシュ128内に対象のデータがあるか否かによって、転送元指定情報を設定したが、本発明はこのような実施の形態には限定されない。例えば、キャッシュ128内に対象のデータがあっても、そのデータが、キャッシュ内に格納されてから所定期間以上経過していれば、サーバから新たにデータを取得するよう、転送元指定情報を設定するようにしてもよい。また、キャッシュ内に対象のデータがある場合には、ユーザの指示に応じて適宜、開始側共有制御部124又は相手側共有制御部134により設定されてもよい。開始側共有制御部124が相手側共有制御部134を介して相手側のブラウザ136に対してデータ取得制御情報180Bを与える場合を除き、データ取得制御情報180Bに、必ずしも転送元指定情報190を含めなくてもよい。例えば、開始側共有制御部124が開始側のブラウザ126にデータを取得させるために制御情報を発行する場合には、データ取得制御要求186とURL188とからなるデータ取得制御情報を発行するようにしてもよい。このデータ取得制御情報に応じて、開始側のブラウザは、一般的なブラウザと同様の動作で転送要求を発行し、開始側共有制御部124は、その転送要求に基づき、一般的なブラウザにおけるデータ取得の動作と同様の動作で、サーバ又はキャッシュからデータを取得してブラウザに転送する。
また、共有の対象となるデータとして、以前キャッシュしておいたデータを設定してもよい。この場合、一方のデータ共有端末装置が過去にキャッシュしておいたデータを取得して、共有するデータとして設定する。そしてそのデータを、上記第1又は第2の実施の形態に係る方法を用いて、共有相手となる端末装置と共有する。
上記の第1の実施の形態及び第2の実施の形態においては、開始側共有端末装置がキャッシュを備え、開始側共有端末装置のキャッシュのみを使用してデータの共有を行なっていた。しかし、本発明はこのような実施の形態には限定されない。データ共有システム内の少なくとも一つの装置がキャッシュを持ち、少なくとも一つの端末が開始側共有端末装置としての機能を備えていればよい。例えば、開始側共有端末装置に代り、相手側共有端末装置がキャッシュを持つようにしてもよい。この場合、開始側共有端末装置は、サーバ104から受信したデータを自己のブラウザに与えるとともに当該データを、相手側端末装置のキャッシュに格納することになる。
また例えば、相手側共有端末装置と開始側共有端末装置との両方がキャッシュを持つようにしてもよい。この場合、相手側共有端末装置と開始側共有端末装置とのどちらを、共有対象のデータの蓄積に用いるか、事前に指定する必要がある。またこのような場合、ユーザからデータの取得を要する処理を求める操作を受けた方の装置が、そのデータの共有に関して開始側として動作し、自己のキャッシュにデータを格納するようにしてもよい。
なお、端末装置は、その時々によって共有開始側にも共有相手側にもなることができる。また、共有に参加する装置に対しユーザが操作を行なうと、その都度、操作を受けた端末装置が開始側として動作するようにしてもよい。この場合、データ共有システム内の各端末装置がキャッシュを備えていれば、操作を受けた端末装置のキャッシュが、その操作に対応して共有されるデータを保持するようにすればよい。過去に共有されたデータは、データ共有システム内の各端末装置のキャッシュ内に分散する。または、操作を受けた端末装置が特定の端末装置にデータを格納するようにし、指定された端末装置のキャッシュがその操作に対応して共有されるデータを保持するようにしてもよい。
上記実施の形態では、開始側のブラウザに対するユーザの操作は、共有制御部に与えられた。そして、共有制御部が、その操作内容を制御情報に変換して、ブラウザに与えることにより、ブラウザに実行すべき動作を指定した。しかし、本発明は、このような実施の形態には限定されない。例えばブラウザが、直接にユーザから操作を受けるようにしてもよい。この場合、データ及び動作の共有は、例えば以下のように行なわれる。すなわち、ブラウザは、ユーザによる操作を受けてその操作に対応する動作を実行する。ブラウザがデータの取得を要する動作を実行するのであれば、ブラウザは転送要求を発行する。共有制御部は、その転送要求に応答して、データ共有に関する上記一連の動作を実行する。ブラウザがそれ以外の動作を実行する場合には、共有制御部が、ブラウザに与えられた操作又はブラウザの実行した動作を解析し、ブラウザの動作に応じた制御情報を作成して、相手側に送信する。
以上のように、キャッシュを利用することにより、ブラウザにより表示されるデータを、他のサーバ等を介することなく、共有相手となる他の装置との間で共有できる。サーバにおいて共有の対象となるデータが変化する場合においても、最新のデータを共有することが可能になる。また、キャッシュ内のデータを利用して、データへのアクセス速度の向上とデータの共有とを両立させることもできる。
共有の対象に共有相手となる他の装置以外の装置からアクセスできないようにして、当該データが書換えられないようにすることができ、共有の対象である閲覧対象のデータと当該閲覧対象のデータの共有を行なうユーザのプライバシとを保護できる。また、キャッシュ内に、データ共有の対象以外のデータがあれば、そのデータへデータ共有以外の目的でアクセスできるようにして、キャッシュを利用して、プロキシ機能とデータ共有とを提供することができる。さらに、ユーザによる操作に関する情報を共有することにより、同じデータを、共有相手となる装置と同じ表示状態で表示できるようになる。
また、他のサーバ等を介することなく、共有相手となる他の装置との間での通信によってデータの共有を直接的に行なうことが可能になる。
また、共有されるべきデータを、共有相手となる装置経由で取得し表示することにより、共有相手となる装置との間で、データを共有することができる。さらに、共有相手となる装置との間で、ユーザによる操作に関する情報を共有することにより、共有相手となる装置と同じ表示状態で同じデータを表示することが可能になる。
上記各実施の形態に係るプログラムをコンピュータで実行することにより、上記各実施の形態の作用及び効果をコンピュータで実現できる。また、そのプログラムが記録した記録媒体から、そのプログラムをコンピュータで読取り実行することにより、上記各実施の形態の作用及び効果をコンピュータで実現できる。
今回開示された実施の形態は単に例示であって、本発明が上記した実施の形態のみに制限されるわけではない。本発明の範囲は、発明の詳細な説明の記載を参酌した上で、特許請求の範囲の各請求項によって示され、そこに記載された文言と均等の意味及び範囲内でのすべての変更を含む。
100 データ共有システム、102 ネットワーク、104 サーバ、110 開始側共有端末装置、112 相手側共有端末装置、120,130 通信部、122,132 入力部、124 開始側共有制御部、134 相手側共有制御部、126,136 ブラウザ、128,530 キャッシュ、170A,…,N,532A,…,N キャッシュデータ、180A,180B 制御情報、210 コンピュータ、212 キーボード、214 マウス、216 モニタ、220 CD−ROM、222 CD−ROMドライブ、224 FD、226 FDドライブ、228 CPU、230 バス、232 ROM、234 RAM、236 ハードディスク、238 ネットワークアダプタボード、550 データ取得指示