(57)【要約】【課題】  本発明の課題は、ネットワークに接続された複数の計算機間で、同一のアプリケーションを高速に共有することを可能とするコンピュータ実行可能なプログラムを提供すことを目的とする。【解決手段】  本発明の課題は、環境の異なる計算機を含む複数の計算機間でネットワークを介して同一アプリケーションによる処理を共有するアプリケーション共有処理をコンピュータに実行させるコンピュータ実行可能なプログラムであって、該コンピュータに、前記複数の計算機間で同一の前記アプリケーションのウィンドウの表示位置の絶対座標及び表示サイズとを所定記憶領域に保持するウィンドウ表示位置保持手順と、イベントが発生した座標を前記絶対座標に対する相対座標で示すイベント情報を受信すると、前記所定記憶領域から前記絶対座標を取得して、該絶対座標に該相対座標を加算することによって該イベントが発生した座標を取得するイベント座標取得手順とを実行させることにより達成される。【選択図】  図２
2006235749.tif 000002
【特許請求の範囲】
【請求項１】
環境の異なる計算機を含む複数の計算機間でネットワークを介して同一アプリケーションによる処理を共有するアプリケーション共有処理をコンピュータに実行させるコンピュータ実行可能なプログラムであって、該コンピュータに、
前記複数の計算機間で同一の前記アプリケーションのウィンドウの表示位置の絶対座標及び表示サイズとを所定記憶領域に保持するウィンドウ表示位置保持手順と、
イベントが発生した座標を前記絶対座標に対する相対座標で示すイベント情報を受信すると、前記所定記憶領域から前記絶対座標を取得して、該絶対座標に該相対座標を加算することによって該イベントが発生した座標を取得するイベント座標取得手順とを実行させることを特徴とするコンピュータ実行可能なプログラム。
【請求項２】
前記コンピュータに、
前記イベント座標取得手順によって取得した前記イベントが発生した座標を保持値として所定記憶領域に保持する保持手順と、
前記座標を用いて擬似的にイベントを発生させる擬似イベント発生手順と、
イベントの発生によって通知された座標と前記保持手順によって保持した前記保持値とが一致する場合、前記アプリケーションに該イベントを通知する手順とを実行させることを特徴とする請求項１記載のコンピュータ実行可能なプログラム。
【請求項３】
前記コンピュータに、
前記イベントの発生によって通知された座標と前記保持手順によって保持した前記保持値とが一致しない場合、該イベントに係るイベント情報を生成して、そのイベント情報を前記他計算機へ送信するイベント情報送信手順とを実行させることを特徴とする請求項１又は２記載のコンピュータ実行可能なプログラム。
【請求項４】
前記コンピュータに、
キャプチャした前記ウィンドウに表示される画像の画素毎に画素値の閾値と比較することによって、該画素値が該閾値より大きいか或いは小さいかを示す値で該画素値を置き換えて２値化する２値化手順と、
２値化された前記画像の解像度を粗くすることによって該画像を抽象化する画像抽象化手順とを実行させることを特徴とする請求項１乃至３のいずれか一項記載のコンピュータ実行可能なプログラム。
【請求項５】
前記コンピュータに、
キー・イベントに応じて日本語の文字変換を実行する文字変換手順と、
前記文字変換による変換結果を他計算機へ送信する変換結果送信手順とを実行させる請求項１乃至４のいずれか一項記載のコンピュータ実行可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに接続された複数の計算機間で、同一のアプリケーションを高速に共有することを可能とするコンピュータ実行可能なプログラムに関する。
【背景技術】
【０００２】
ネットワークで接続された複数の計算機上で同一のアプリケーションによる処理を共有する技術では、いずれかの計算機において情報の変更が発生する都度、リアルタイムに変更に係る全てのデータを相互に教授し合うという仕組みが一般的であった。しかし、このような仕組みでは、各計算機でデータの整合性が保障されるメリットがある反面、変更が頻繁に発生するデータを扱う場合には、全てのデータ全ての計算機に転送するためネットワークの大きな通信帯域を必要とし、ネットワークトラフィックが増大するという問題があった。
【０００３】
この問題に対し、例えば、マウスやキーボード等で発生するイベント情報（キーボードから入力されるキーコード情報やマウス装置から入力される座標情報）のみを計算機間で教授することで、送受信データ量を削減する技術が開示されている（例えば、特許文献１）。
【特許文献１】特開平５−２３３５０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来技術では、全ての計算機が同一環境であることを前提としており、端末の環境が異なることに起因する以下の問題がある。例えば、他の計算機からマウスクリックのイベントを受信すると、つまり、単にマウスでクリックした位置座標を受信したとしても、ウィンドウの位置やサイズが双方の計算機で異なっている場合には、意図した操作が伝わらないと言った問題がある。
【０００５】
よって、本発明の目的は、ネットワークに接続された複数の計算機間で、計算機毎の環境の違いを気にすることなく同一のアプリケーションを高速に共有することを可能とするコンピュータ実行可能なプログラムを提供することである。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明は、環境の異なる計算機を含む複数の計算機間でネットワークを介して同一アプリケーションによる処理を共有するアプリケーション共有処理をコンピュータに実行させるコンピュータ実行可能なプログラムであって、該コンピュータに、前記複数の計算機間で同一の前記アプリケーションのウィンドウの表示位置の絶対座標及び表示サイズとを所定記憶領域に保持するウィンドウ表示位置保持手順と、イベントが発生した座標を前記絶対座標に対する相対座標で示すイベント情報を受信すると、前記所定記憶領域から前記絶対座標を取得して、該絶対座標に該相対座標を加算することによって該イベントが発生した座標を取得するイベント座標取得手順とを実行させるように構成される。
【０００７】
このようなプログラムをインストールしたコンピュータ（計算機）は、全ての計算機上で同一の表示位置で同一の表示サイズによってアプリケーションのウィンドウが表示されるようにすることができる。また、このように表示されたウィンドウの表示位置からの相対座標でイベントの発生した座標を示すため、全ての計算機上で同一の座標において該イベントが発生したように表示させることができる。
【０００８】
上記課題を解決するための手段として、本発明は、上記プログラムを実行することによって実現されるアプリケーション共有装置、上記プログラムを記憶した記憶媒体とすることもできる。
【発明の効果】
【０００９】
本願発明は、ネットワークに接続された複数の計算機間で、同一のアプリケーションを高速に共有すると共に、異なる環境を持つ計算機間においても、統一された表示を実現することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１１】
図１は、本発明の一実施形態に係るアプリケーション高速共有システムにおける機能構成を示す図である。図１において、アプリケーション高速共有システム１００は、ネットワークを介して接続される少なくとも２つ以上の計算機１０ａ、１０ｂ及び１０ｃと、イベント一元管理機能６０とを有する。
【００１２】
ここで、イベント一元管理機能６０は、コンピュータ実行可能なプログラムを実行することによって実現される機能であって、計算機１０ａ、１０ｂ及び１０ｃの少なくとも１つに備えられるようにしても良い。この場合、例えば、計算機１０ａにイベント一元管理機能６０が備えられる場合、計算機１０ａはサーバとして機能し、他計算機１０ｂ及び１０ｃはクライアントとして機能し、これらクライアントは、ネットワークを介してサーバに備えられたイベント一元管理機能６０と通信する。或いは、イベント一元管理機能６０は、計算機１０ａ、１０ｂ及び１０ｃとは独立した計算機に備えられるようにしても良い。
【００１３】
各計算機１０ａは、ソフトウェアに係る機能構成として、大きく、アプリケーション層２０ａと、ミドルウェア層３０ａと、ＯＳ層（Operating System）４０ａとを有する。
【００１４】
アプリケーション層２０ａは、１つ以上の共有アプリケーション２２ａを有する。共有アプリケーション２２ａは、他計算機１０ｂ及び１０ｃとで共有される同一のアプリケーションであり、複数であっても良い。
【００１５】
ミドルウェア層３０ａは、アプリケーション連携機能３２ａと、イベント共有機能３４ａとを有する。アプリケーション連携機能３２ａは、他計算機１０ｂ及び１０ｃと連携するために表示されている共有アプリケーション２２ａに関する画像情報等を、イベント一元管理機能６０を介して他計算機１０ｂ及び１０ｃと通信する。イベント共有機能３４ａは、マウス、キーボード等の入力デバイスからのイベントに関するイベント情報を、イベント一元管理機能６０を介して他計算機１０ｂ及び１０ｃと通信する。
【００１６】
ＯＳ層４０ａは、入力デバイス・イベント部４２ａを有する。入力デバイス・イベント部４２ａは、マウス、キーボード等からの入力に関するイベントをイベント共有機能３４ａに通知する。
【００１７】
計算機１０ｂのソフトウェアに係る機能構成の各部分２０ｂ、２２ｂ、３０ｂ、３２ｂ、３４ｂ、４０ｂ、及び４２ｂは、上記同様であるので、その説明を省略する。また、計算機１０ｃの機能構成の各部分も同様であるため、その説明及び図示を省略してある。また、以下の説明において、機能構成の各部分を総称して説明する場合、英字添え字を省略してある。
【００１８】
イベント管理機能６０は、各計算機１０ａから１０ｃからの画像情報を受信し、他計算機１０ａから１０ｃへ配信する。また、イベント管理機能６０は、各計算機１０ａから１０ｃからイベント情報を受信し、他計算機１０ａから１０ｃへ配信する。
【００１９】
図１に示す本発明に係るアプリケーション高速共有システム１００において、各計算機１０ａ、１０ｂ及び１０ｃの環境に影響されないアプリケーション高速共有処理の全体概要について図２で説明する。
【００２０】
図２は、アプリケーション高速共有処理の全体概要を説明するためのフローチャート図である。図２において、計算機１０ａを例として説明するが、計算機１０ｂ及び１０ｃにおいても同様の処理が実行される。
【００２１】
図２において、計算機１０ａは、イベント一元管理機能６０へ接続する（ステップＳ１１）。イベント一元管理機能６０が計算機１０ａに実装されている場合、内部的に処理が行われ、イベント一元管理機能６０に計算機１０ａに関する情報が登録される。一方、イベント一元管理機能６０が実装されていない場合、計算機１０ａは、予め設定されているアクセス方法によって、ネットワークを介してイベント一元管理機能６０へと接続し、計算機１０ａに関する情報をイベント一元管理機能６０に登録する。
【００２２】
次に、計算機１０ａは、座標の補正値を取得する（ステップＳ１２）。この処理は、座標に関してイベントを擬似的に発生させた場合、指定した座標とイベントによって取得した座標とに誤差が生じると言ったマイクロソフト社製ＯＳに起因する問題を吸収するための処理であるため、同様の問題が無いＯＳを使用している場合には、省略することが可能である。入力デバイス・イベント部４２ａに対して擬似的にマウス・イベントを発生させて、入力デバイス・イベント部４２ａから座標を取得し、この取得した座標と、指定した座標との差分を補正値（Δｘ、Δｙ）として所定記憶領域に設定する。この時発生したイベントは、イベント一元管理機能６０に送信されないように制御される。
【００２３】
計算機１０ａは、自身のフォントリストを他計算機１０ｂ及び１０ｃへ送信し、その後、各計算機１０ｂ及び１０ｃから夫々のフォントリストを受信し、互いに共有可能なフォントを示す共有フォントリストを生成する（ステップＳ１３）。各計算機１０ａ、１０ｂ及び１０ｃは、各自のＯＳが提供する関数を呼び出すことによって、インストールされているフォントリストを取得する。ここで、各計算機１０ａ、１０ｂ及び１０ｃがイベント一元管理機能６０へ自身のフォントリストを送信し、イベント一元管理機能６０が登録済みの各計算機１０ａ、１０ｂ及び１０ｃへと共有フォントリストを通知するようにしても良い。
【００２４】
計算機１０ａは、共有アプリケーション２２ａのウィンドウの表示位置の絶対座標とウィンドウの縦と横のサイズとで示される表示サイズとを、アプリケーション連携機能３２ａによって、他計算機１０ｂ及び１０ｃへ送信する（ステップＳ１３−５）。各計算機１０ｂ及び１０ｃは、通知されたウィンドウの表示位置の絶対座標と表示サイズとに基づいて、共有アプリケーションを表示させる。その後、このウィンドウの表示位置の絶対座標からの相対座標によってマウス等の位置情報が通信される。
【００２５】
ここでは、説明の便宜のため、計算機１０ａがウィンドウの表示位置の絶対座標と表示サイズとを他計算機１０ｂ及び１０ｃへ送信するように説明したが、予め親となる（例えば、イベント一元管理機能６０を実装している）計算機１０を決めておいて、自分が親である場合に、ウィンドウの表示位置の絶対座標と表示サイズとを送信するようにすれば良い。
【００２６】
次に、計算機１０ａのユーザの入力デバイスの操作によって発生又はイベント一元管理機能６０から受信したイベントが、キーボードからのキー・イベントであるか否かを判断する（ステップＳ１４）。キー・イベントでない場合、ステップＳ１８へ進む。
【００２７】
一方、キー・イベントである場合、日本語変換キーが押され、日本語変換モードになったか否かを判断する（ステップＳ１５）。日本語変換モードでない場合、アプリケーション連携機能３２ａを経由して共有アプリケーション２２ａへキー・イベントを送信する（ステップＳ１６）。日本語変換モードの場合、後述される変換入力に一貫性を持たせるための処理を実行する（ステップＳ１７）。ステップＳ１６又はステップＳ１７での処理の後、ステップＳ２３へと進む。
【００２８】
ステップＳ１４において、キー・イベントでない場合、マウス・イベントを受信したか否かを判断する（ステップＳ１８）。マウス・イベントを受信していない場合、ステップＳ２３へと進む。一方、マウス・イベントを受信した場合、イベントの再送抑制機能を実行する（ステップＳ１９）。本実施例では、イベント一元管理機能６０からイベントを受信すると、擬似的にそのイベントを発生させて共有アプリケーション２２ａに通知する仕組みとしているため、発生したイベントがイベント一元管理機能６０への通知及び擬似的なイベントの発生が再帰的に実行されてしまうことを抑制する必要がある。イベントの再送抑制機能は、そのような再帰的な実行を抑制するための機能であり、その詳細は後述される。
【００２９】
続けて、マウス・イベントによってフォントが指定されたか否かを判断する（ステップＳ２０）。フォントが指定された場合、ステップＳ１３にて生成した共有フォントリストからフォントを選択する（ステップＳ２１）。一方、フォントが指定されなかった場合、アプリケーション連携機能３２ａを経由して共有アプリケーションへマウス・イベントを送信する（ステップＳ２２）。ステップＳ２１又はステップＳ２２での処理の後、ステップＳ２３へと進む。
【００３０】
ステップＳ２３において、共有アプリケーション２２ａが終了したか否かが判断される。終了していない場合、ステップＳ１４へ戻り、次のイベントを受信する。一方、終了した場合、アプリケーション高速共有処理を終了する。
【００３１】
図３は、ステップＳ１３−５によるウィンドウ表示例を示す図である。図３において、計算機１０ａにおいて表示される共有アプリケーション２２ａのウィンドウ１４ａが、絶対座標で示される表示位置（ｘ，ｙ）が（１００，２００）で、表示サイズ（ｗ，ｈ）が（３００，５００）で表示されている場合、この絶対座標で示される表示位置と表示サイズが計算機１０ｂへ通知される。
【００３２】
計算機１０ｂでは、例えば、独自に共有アプリケーション２２ｂのウィンドウ１３ｂを開くと、絶対座標で示される表示位置（ｘ，ｙ）が（１０，２０）で、表示サイズ（ｗ，ｈ）が（３０，５０）で表示されるが、計算機１０ａの通知によって、ウィンドウ１４ａと同じ表示位置及び表示サイズのウィンドウ１４ｂとして再表示される。
【００３３】
以後、マウスの位置は、表示位置からの相対座標で互いに通信することによって、表示されている共有アプリケーション２２ａ及び２２ｂのウィンドウ１４ａ及び１４ｂとマウスとの間の表示のズレを解消することができる。
【００３４】
アプリケーション高速共有システム１００では、図２のアプリケーション高速共有処理の他、逐次画像を抽象化して高速に通信する処理が実行される。抽象化された画像は、イベント一元管理機能６０によって管理され、抽象化された画像比較によって同期が保たれる。
【００３５】
図４は、イベント一元管理機能によって実行される抽象化された画像比較による同期処理を説明するための図である。図４において、イベント一元管理機能６０では、各計算機１０ａ、１０ｂ、・・・毎の抽象化画像Ａ，Ｂ、・・・が遷移状態に対応して管理される。各計算機１０ａ、１０ｂ、・・・のアプリケーション連携機能３２は、共有アプリケーション２２ａのウィンドウに表示される画像を抽象化して、イベント一元管理機能６０へ送信する。図４中では、理解を容易にするため、計算機１０ａ及び１０ｂにて表示される現画像Ａ及びＢのみで説明する。
【００３６】
遷移１では、イベント一元管理機能６０は、イベント発生を受信する。そして、遷移２では、計算機１０ａにて画像Ａに変化が生じると、イベント一元管理機能６０は、変異部分２５１を認識するが、計算機１０ｂにて画像Ｂに画像Ａの変異部分２５１に相当する下の部分２５２での変化を認めることができないため、次のイベントを発生させずにそのまま待つ。遷移３では、イベント一元管理機能６０は、計算機１０ｂにて画像Ｂに画像Ａの変異部分２５１での変化を変異部分２５４として認め、全計算機１０ａ及び１０ｂでの画像Ａ及び画像Ｂが一致したと判断し、遷移１でのイベント発生による処理を終了して、次のイベントを発生させる。
【００３７】
このように、抽象化した画像のうち処理後の抽象画像との差分が全計算機１０ａ及び１０ｂにて発生し、その結果抽象化画像が同様の状態になった時点で、イベント一元管理機能６０が次のイベントを送信するため、各計算機１０ａ及び１０ｂでの共有アプリケーション２２による画像に対して一貫性を保持することができる。
【００３８】
図５は、抽象化された画像比較による同期処理を説明するためのフローチャート図である。図５において、各計算機１０は、ＯＳが提供する関数を用いて、一定時間（例えば、１００ｍｓｅｃから５００ｍｓｅｃ）毎に共有アプリケーション２２の画像をキャプチャする（ステップＳ１０１）。
【００３９】
キャプチャした画像の各画素のＲＧＢの値（０＜２５６）を閾値（１２８）と比較して、大きい場合は１で、小さい場合は０（ゼロ）で置き換えて、ＯＲ演算により０（ゼロ）又は１のいずれかの値を示す画素値によって２値化する（ステップＳ１０２）。
【００４０】
更に、所定の１／ｎ（例えば、縦横２５６＊２５６を６４＊６４の１／４＊１／４＝１／１６の解像度）に縮小して抽象化する。そして、その抽象化画像をイベント一元管理機能６０へ送信する（ステップＳ１０３）。
【００４１】
一方、イベント一元管理機能６０は、各計算機１０から送信されてくる各抽象化画像の同一座標の画素値に対してＸＯＲ演算を行なう（ステップＳ１２１）。
【００４２】
イベント一元管理機能６０は、全ての画像が一致したか否かを判断する（ステップＳ１２２）。つまり、ＸＯＲ演算の結果、全ての画素値が０（ゼロ）になったか否かを判断する。一致しない場合、ステップＳ１２１へ戻る。一方、一致する場合、イベント用のバッファにスタックされたイベント情報を各計算機１０へ送信する（ステップＳ１２３）。その後、共有アプリケーション２２の終了を示すイベントを受信したか否かを判断する（ステップＳ１２４）。終了の場合、この処理を終了する。そうでない場合、ステップＳ１２１へ戻り、各計算機１０からの抽象化画像を受信する。
【００４３】
上記抽象化された画像比較による同期処理によって、各計算機１０に対して同期をとることが可能となる。
【００４４】
イベント情報のバッファの制御処理について図６で説明する。図６（Ａ）は、イベント情報をバッファにスタックする制御を説明するためのフローチャート図である。図６（Ａ）において、イベント一元管理機能６０は、起動時にイベント情報用のバッファをゼロクリアし、スタックされたイベント情報を読み出すための読出インデックスReadIndex及びスタックするための書込インデックスWriteIndexを「−１」に初期設定する（ステップＳ２０１）。
【００４５】
イベント一元管理機能６０は、イベント情報を受信したか否かを判断する（ステップＳ２０２）。受信していない場合、ステップＳ２０２へ戻る。受信している場合、書込インデックスWriteIndexを１インクリメントし（ステップＳ２０３）、書込インデックスWriteIndexがバッファの上限以上であるか否かを判断する（ステップＳ２０４）。
【００４６】
上限以上である場合、書込インデックスWriteIndexを初期値「−１」に設定してステップＳ２０３へ戻る（ステップＳ２０５）。この処理によってバッファを開始位置から再度利用することができる。一方、上限未満の場合、送信フラグを１にセットして、イベント情報をバッファにスタックする（ステップＳ２０６）。
【００４７】
そして、イベント一元管理機能６０は、共有アプリケーションが終了したか否かを判断する（ステップＳ２０７）。終了している場合、イベント情報のバッファの制御処理を終了する。一方、終了していない場合、ステップＳ２０２へ戻り、次のイベント情報の受信を待つ。
【００４８】
図６（Ｂ）は、スタックされたイベント情報を読み出す制御処理を説明するためのフローチャート図である。図６（Ｂ）において、イベント情報を読み出す制御処理は、例えば、図５に示すステップＳ１２３での処理にてイベント一元管理機能６０によって実行され、イベント一元管理機能６０は、送信フラグが１であるか否か、つまり、送信すべきイベント情報があるか否なかを判断する（ステップＳ２２１）。送信フラグがゼロであれば、イベント一元管理機能６０はイベント情報を読み出す制御処理を終了する。
【００４９】
一方、送信フラグが１であれば、読出インデックスReadIndexを１インクリメントして（ステップＳ２２２）、読出インデックスReadIndexがバッファの上限以上であるか否かを判断する（ステップＳ２２３）。バッファの上限以上である場合、読出インデックスReadIndexを初期値「−１」に設定してステップＳ２２２へ戻る（ステップＳ２２４）。この処理によってバッファの開始位置からイベント情報を読み出すことができる。一方、上限未満の場合、イベント情報を読出インデックスReadIndexから読み出して、計算機１０へ送信する（ステップＳ２２５）。
【００５０】
そして、イベント一元管理機能６０は、送信フラグをゼロにセットして（ステップＳ２２６）、イベント情報を読み出す制御処理を終了する。
【００５１】
図７は、イベントの再送抑制機能を説明するための図である。図７において、計算機１０ａは、再帰的にイベント情報がイベント一元管理機能６０へ通知され擬似的にイベントが発生しないように、イベント共有機能３４ａ内にイベント情報の再送を抑制する再送抑制機能３６ａを有する。他計算機１０ｂ及び１０ｃについても同様である。
【００５２】
再送抑制機能３６ａは、入力デバイス・イベント部４２ａから自発的にイベントが発生したのか、或いは、擬似的にイベントが発生したのかを判断する必要がある。再送抑制機能３６ａは、イベント情報をイベント一元管理機能６０から受信すると、イベント情報によって示されるマウスの相対座標を保持し、その相対座標から求めた絶対座標によって入力デバイス・イベント部４２ａに対して擬似的にイベントを発生させる。
【００５３】
再送抑制機能３６ａは、発生したイベントが指定する絶対座標が保持されている絶対座標（後述される保持値）と同一である場合、擬似的に発生させたイベントであると判断し、イベント一元管理機能６０へは送信せずに、イベント種別に応じてアプリケーション連携機能２３ａ又は共有アプリケーション２２ａへと通知する。一方、発生したイベントが指定する絶対座標が保持されている絶対座標（後述される保持値）と同一である場合、アプリケーション連携機能２３ａ又は共有アプリケーション２２ａへと通知せずに、イベント一元管理機能６０へ送信する。
【００５４】
一方、発生したイベントが指定する絶対座標が保持されている絶対座標と同一でない場合、自発的にイベントが発生したものと見なし、イベント情報を作成してイベント一元管理機能６０へと送信するように制御する。ここで、擬似的にイベントを発生させる際に、イベント情報に含まれる時間情報と共に絶対座標を保持するようにすることで、発生したイベントが指定する絶対座標が保持されている絶対座標と同一であっても、時間情報が一致しない場合、自発的にイベントが発生したものと見なし、イベント情報を作成してイベント一元管理機能６０へと送信するように制御するようにしても良い。
【００５５】
イベント一元管理機能６０にてイベント情報がスタックされるバッファ内では、イベント情報が時間、計算機ＩＤ、アプリＩＤ、イベント種別、パラメータ［１］、・・・等の項目で構成され、時系列にスタックされていく。例えば、時間ｔ（ｎ）に、計算機ＩＤ「ａａａ．２２２．１１１」で識別される計算機１０のアプリＩＤ「Ｗｏｒｄ１」で特定される共有アプリケーション２２にて、イベント種類「ＭｏｕｓｅＭｏｖｅ」のイベントがパラメータ［１］で示される座標（ｘ、ｙ）＝（１００，２００）で発生したことを示している。
【００５６】
図８は、イベントの再送抑制機能による処理を説明するためのフローチャート図である。図８において、イベント共有機能３４ａの再送抑制機能３６ａは、イベント情報を受信すると、イベント一元管理機能６０から受信したか否かを判断する（ステップＳ３０１）。イベント一元管理機能６０から受信していない場合、つまり、入力デバイス・イベント部４２ａから受信した場合、ステップＳ３１０へ進む。
【００５７】
一方、イベント一元管理機能６０から受信した場合、再送抑制機能３６ａは、共有アプリケーション２２ａの識別子（ハンドル）に基づいて、ＯＳが提供する関数を用いて、共有アプリケーションのウィンドウの絶対座標（ｘ、ｙ）を取得する（ステップＳ３０２）。
【００５８】
次に、図９で説明されるマウス座標の自動補正の処理を実行して、イベント情報で示される相対座標を絶対座標（ｍｘ、ｍｙ）へ変換する（ステップＳ３０３）。ここで必要に応じて座標を補正する。共有アプリケーションのウィンドウの絶対座標（ｘ、ｙ）に、受信した相対座標（Ｒｘ，Ｒｙ）を加算し、更に、図２のステップＳ１２で取得した補正値（Δｘ、Δｙ）を加算することに予め補正した絶対座標（ｍｘ’、ｍｙ’）を求める。このようにすることによって、擬似的に発生させたイベントで通知される絶対座標（ｍｘ、ｍｙ）が正しい座標で通知されるように制御できる。
【００５９】
再送抑制機能３６ａは、求めた絶対座標（ｍｘ、ｍｙ）又は予め補正した絶対座標（ｍｘ’、ｍｙ’）（以下、絶対座標（ｍｘ、ｍｙ）として説明する）を保持値（ｈｘ、ｈｙ）として所定記憶領域に格納して保持しておく（ステップＳ３０４）。求めた絶対座標（ｍｘ、ｍｙ）は、次のステップＳ３０５で擬似的に発生させたイベントを受信後、そのイベントによって入力デバイス・イベント部４２ａから通知される絶対座標と比較するために保持される。
【００６０】
次に、再送抑制機能３６ａは、絶対座標（ｍｘ、ｍｙ）に基づいて入力デバイス・イベント部４２ａに対してイベントを発生させる（ステップＳ３０５）。そして、発生させたイベントを受信するため、再送抑制機能３６ａによる処理を終了して、図２のステップＳ２３へ進む。
【００６１】
一方、イベント一元管理機能６０からイベント情報を受信していない場合、再送抑制機能３６ａは、入力デバイス・イベント部４２ａからマウス・イベントを受信したか否かを判断する（ステップＳ３１０）。マウス・イベントを受信していない場合、再送抑制機能３６ａは、ステップＳ３２１へ進む。
【００６２】
一方、マウス・イベントを受信した場合、再送抑制機能３６ａは、イベント情報のイベント種類を参照することによって、マウスが共有アプリケーションのウィンドウ内で移動したか否かを判断する（ステップＳ３１１）。マウスが共有アプリケーションのウィンドウ外で移動した場合、再送抑制機能３６ａによる処理を終了して、図２のステップＳ２３へ進む。
【００６３】
一方、マウスが共有アプリケーションのウィンドウ内で移動した場合、再送抑制機能３６ａは、共有アプリケーション２２ａの識別子（ハンドル）に基づいて、ＯＳが提供する関数を用いて、共有アプリケーションのウィンドウの絶対座標（ｘ、ｙ）を取得する（ステップＳ３１２）。
【００６４】
次に、再送抑制機能３６ａは、共有アプリケーションの識別子（ハンドル）に基づいて、ＯＳが提供する関数を用いてマウスの絶対座標（ｍｘ、ｍｙ）を取得する（ステップＳ３１３）。そして、再送抑制機能３６ａは、マウスの絶対座標（ｍｘ、ｍｙ）を相対座標（Ｒｘ，Ｒｙ）に変換する（ステップＳ３１４）。相対座標（Ｒｘ，Ｒｙ）は、マウスの絶対座標（ｍｘ、ｍｙ）から共有アプリケーションのウィンドウの絶対座標（ｘ、ｙ）を減算することによって求められる。
【００６５】
そして、再送抑制機能３６ａは、マウスの絶対座標（ｍｘ、ｍｙ）が保持値（ｈｘ、ｈｙ）と一致するか否かを判断する（ステップＳ３１５）。保持値（ｈｘ、ｈｙ）と一致する場合、再送抑制機能３６ａによる処理を終了して、図２のステップＳ２０へと進む。つまり、イベント一元管理機能６０からイベント情報を受信した際に擬似的に発生させたイベントであると判断し、イベント一元管理機能６０への再送信を抑止する。
【００６６】
一方、保持値（ｈｘ、ｈｙ）と一致しない場合、自計算機ＩＤ（例えば、ＩＰアドレス）を付加したマウスの相対座標（Ｒｘ，Ｒｙ）を示すイベント情報を生成して、イベント一元管理機能６０を経由して、他計算機に送信する（ステップＳ３１６）。そして、再送抑制機能３６ａによる処理を終了して、図２のステップＳ２３へと進む。
【００６７】
一方、ステップＳ３１０において、マウス・イベントを受信していない場合、再送抑制機能３６ａは、イベント情報のイベント種類を参照することによって、共有アプリケーション２２ａのウィンドウが移動したか否かを判断する（ステップＳ３２１）。共有アプリケーション２２ａのウィンドウが移動しなかった場合、再送抑制機能３６ａによる処理を終了して、図２のステップＳ２０へと進む。
【００６８】
一方、共有アプリケーション２２ａのウィンドウが移動した場合、再送抑制機能３６ａは、共有アプリケーション２２ａの識別子（ハンドル）に基づいて、ＯＳが提供する関数を用いて、共有アプリケーション２２ａのウィンドウの絶対座標（ｘ、ｙ）を取得して（ステップＳ３２２）、再送抑制機能３６ａによる処理を終了して、図２のステップＳ２０へと進む。
【００６９】
上記処理は、計算機１０ｂでも同様に実行される。
【００７０】
次に、図８のステップＳ３０３にて行われるマウス座標の自動補正の処理について図９で説明する。図９は、マウス座標の自動補正の処理を説明するための図である。図９中、マウス座標自動補正機能３５ｂが、図８のステップＳ３０３にて実行される。
【００７１】
図９において、計算機１０ａの入力デバイス・イベント部４２ａから通知されたマウスの絶対座標（ｍｘ、ｍｙ）は、相対座標（Ｒｘ，Ｒｙ）に変換されて、イベント一元管理機能６０へ通知される。通知された相対座標（Ｒｘ，Ｒｙ）は、イベント一元管理機能６０によって、計算機１０ａ及び計算機１０ｂに送信される。
【００７２】
計算機１０ｂは、イベント一元管理機能６０から相対座標（Ｒｘ，Ｒｙ）を受信すると、イベント共有機能３４ｂのマウス座標自動補正機能３５ｂによって、予め補正された絶対座標（ｍｘ’、ｍｙ’）を求める。つまり、相対座標（Ｒｘ，Ｒｙ）に共有アプリケーション２２ｂのウィンドウの絶対座標（ｘ、ｙ）を加算し、更に、補正値（Δｘ、Δｙ）を換算することによって、補正された絶対座標（ｍｘ’、ｍｙ’）を求める。
【００７３】
そして、その補正された絶対座標（ｍｘ’、ｍｙ’）を用いて、入力デバイス・イベント部４２ｂに対して擬似的にイベントを発生させて、本来取得すべき絶対座標（ｍｘ、ｍｙ）を取得する。この絶対座標（ｍｘ、ｍｙ）は、共有アプリケーション２２ｂに通知される。
【００７４】
次に、変換入力に一貫性を持たせるために行われる図２のステップＳ１７での処理について図１０及び図１１で詳述する。
【００７５】
図１０は、図２のステップＳ１７における変換入力に一貫性を持たせるための処理を説明するための図である。図１０において、先ず、親の役割を持つ計算機１０ａにて日本語変換する場合について説明する。計算機１０ａにおいて、入力デバイス・イベント部４２から日本語変換のためのキー入力によるイベントがイベント共有機能３４ａに通知されると、イベント共有機能３４ａは、イベント情報を生成してイベント一元管理機能６０に送信する（ステップＳ５１）。
【００７６】
イベント一元管理機能６０は、そのイベント情報を計算機１０ａ及び計算機１０ｂへ送信する。計算機１０ｂでは、イベント共有機能３４ｂがイベント情報を受信すると、イベント種類を参照して、キー・イベントであると判断すると、そのイベント情報をアプリケーション連携機能３２ｂへと通知する（Ｓ５２−２）。アプリケーション連携機能３２ｂは、次に、変換結果を示すイベント情報を受信するのを待つ。つまり、日本語変換動作中のキー・イベントを共有アプリケーション２２ｂに通知しない。
【００７７】
計算機１０ａでは、イベント共有機能３４ａがイベント情報を受信すると（Ｓ５２）、擬似的にキー・イベントを発生させて、入力デバイス・イベント部４０ａから通知されたキー・イベントをアプリケーション連携機能３２ａを介して日本語変換機能２４ａへと通知する（ステップＳ５３）。アプリケーション連携機能３２ａは、日本語変換機能２４ａに対するキー・イベントによって日本語変換した変換結果が日本語変換機能２４ａから通知されると（ステップＳ５４）、変換結果を示すイベント情報を生成してイベント一元管理機能６０へ送信する（ステップＳ５５）。ここで、日本語変換機能２４ａは、キー・イベントに応じて日本語の文字変換を実行する機能である。
【００７８】
イベント一元管理機能６０は、受信した変換結果を示すイベント情報を、計算機１０ａ及び計算機１０ｂへ送信する。計算機１０ｂでは、アプリケーション連携機能３２ｂがイベント情報を受信すると（ステップＳ５６−２）、イベント種類及びパラメータを参照して、イベント情報に変換結果が示されていると判断すると、その変換結果を共有アプリケーション２２ｂに通知する（ステップＳ５７−２）。
【００７９】
計算機１０ａでは、アプリケーション連携機能３２ａが変換結果を示すイベント情報を受信すると（Ｓ５６）、その変換結果を共有アプリケーション２２ａへ通知する（ステップＳ５７）。
【００８０】
一方、計算機１０ｂにおいて、日本語変換をするためのキー入力があった場合、入力デバイス・イベント部４２ｂからイベント共有機能３４ｂへキー・イベントの通知があると、イベント共有機能３４ｂは、そのキー・イベントを示すイベント情報を生成してイベント一元管理機能６０へ送信する（ステップＳ５１−２）。以後の処理は、上述した通りである。
【００８１】
したがって、同一の日本語変換機能（例えば、マイクロソフト社製の日本語変換用アプリケーションのＩＭＥアプリケーション等）を使用して日本語変換するため、どの計算機１０においても同一の変換結果が表示されるようになる。
【００８２】
図１１は、図２のステップＳ１７における変換入力に一貫性を持たせるための処理を説明するためのフローチャート図である。図１１において、計算機１０ａのアプリケーション連携機能３２ａは、日本語変換機能２４ａを起動する（ステップＳ４０１）。そして、アプリケーション連携機能３２ａは、漢字変換キーが押され変換モードになったか否かを判断する（ステップＳ４０２）。変換モードにならなかった場合、ステップＳ４０７へと進む。
【００８３】
一方、変換モードになった場合、アプリケーション連携機能３２ａは、各計算機１０ｂ、１０ｃ、・・・から送信されるキー・イベントを日本語変換機能２４ａへ通知し、日本語変換機能の画面キャプチャを各計算機１０ｂ、１０ｃ、・・・へイベント一元管理機能６０を介して逐次送信する（ステップＳ４０３）。
【００８４】
そして、アプリケーション連携機能３２ａは、確定キー（エンタキー等）が押されたか否かを判断する（ステップＳ４０４）。確定キーが押されなかった場合、ステップＳ４０３へと戻る。一方、確定キーがおされた場合、日本語変換機能２４ａ内の文字列をバッファにコピーし、コピーした文字列をイベント一元管理機能６０を介して各計算機１０ｂ、１０ｃ、・・・へ送信する（ステップＳ４０５）。
【００８５】
次に、アプリケーション連携機能３２ａは、変換モードが解除されたか否かを判断する（ステップＳ４０６）。解除されなかった場合、ステップＳ４０３へ戻る。一方、解除された場合、キー・イベント用バッファへキー・イベントをスタックして（ステップＳ４０７）、この処理を終了する。
【００８６】
したがって、同一の日本語変換機能（例えば、マイクロソフト社製の日本語変換用アプリケーションのＩＭＥアプリケーション等）を使用して日本語変換するため、どの計算機１０においても同一の変換結果が表示されるようになる。
【００８７】
次に、フォントを共有する処理について図１２及び図１３で説明する。図１２は、共有フォントが指定される様子を示す図である。図１２において、計算機１０ａは、インストールされているフォントリスト３８ａをＯＳが提供する関数を呼び出すことによって取得する。同様に、計算機１０ｂは、インストールされているフォントリスト３８ｂをＯＳが提供する関数を呼び出すことによって取得する。他計算機１０についても同様である。このように取得されたフォントリスト３８ａ、３９ｂ、・・・に共通するフォントのみをリストした共有フォントリストが作成され、各計算機１０ａ、１０ｂ、・・・のアプリケーション連携機能３２ａ、３２ｂ、・・・が共有フォントリスト３９ａ、３９ｂ、・・・として保持する。
【００８８】
例えば、共有アプリケーション２２ａから任意のフォントが指定され、そのフォントが共有フォントリスト３９ａに存在するものであれば、そのまま設定されて文字脚色に使用される。一方、共有フォントリスト３９ａに含まれないフォントが指定された場合、警告ウィンドウを表示して使用できないフォントであることをユーザに通知し、その後、共有フォントリスト３９ａからフォントを選択可能とする選択画面を表示して、ユーザに使用可能なフォントを選択させるようにする。
【００８９】
計算機１０ｂ他においても同様な処理が行われる。
【００９０】
このような機能によって、計算機１０毎に使用可能なフォントに偏りが有る場合であっても、ユーザは、共有フォントリスト３９ａからフォントを選択することができるため、全ての計算機１０において、同様の文字脚色を表示させることが可能となる。
【００９１】
図１３は、図２のステップＳ２１における共有フォントを選択可能とする処理を説明するためのフローチャート図である。図１３において、アプリケーション連携機能３２ａは、共有アプリケーション２２ａから指定されたフォントが共有フォントリスト３９ａに含まれているか否かを判断する（ステップＳ５０１）。含まれている場合、ＯＳに指定フォントを通知して（ステップＳ５０４）、図２のステップＳ２１での処理を終了する。
【００９２】
一方、指定されたフォントが共有フォントリスト３９ａに含まれていない場合、アプリケーション連携機能３２ａは、共有フォントではない旨の警告ウィンドウを表示し、指定フォントを却下する（ステップＳ５０２）。つまり、ＯＳに指定フォントを通知しない。
【００９３】
そして、アプリケーション連携機能３２ａは、共有フォントリスト３９ａから共有フォントを選択可能とする選択画面を表示して、ユーザから所望の共有フォントを取得する（ステップＳ５０３）。アプリケーション連携機能３２ａは、ＯＳに取得した共有フォントを指定フォントとして通知する（ステップＳ５０４）。そして、図２のステップＳ２１での処理を終了する。
【００９４】
上述より、本願発明によれば、ネットワークに接続された複数の計算機間で、同一のアプリケーションを高速に共有すると共に、異なる環境を持つ計算機間においても、統一された表示を実現することが可能となる。
【００９５】
上記される各処理は、コンピュータ実行可能なプログラムをコンピュータにインストールして実行することによって実現可能である。また、このようなコンピュータが上述したような計算機１０ａ、１０ｂ、・・・として機能する。更に、イベント一元管理機能６０が計算機１０ａ、１０ｂ、・・・とは独立して個別のサーバで実装する場合、イベント一元管理機能６０での処理を実現するコンピュータ実行可能なプログラムをサーバへインストールして実行すればよい。
【００９６】
また、このようなコンピュータ実行可能なプログラムは、このようなプログラムが記憶された記憶媒体からコンピュータにインストールされる。或いは、ネットワークを介して、このようなプログラムをダウンロードしてコンピュータにインストールしても良い。
【００９７】
以上の説明に関し、更に以下の項を開示する。
（付記１）
環境の異なる計算機を含む複数の計算機間でネットワークを介して同一アプリケーションによる処理を共有するアプリケーション共有処理をコンピュータに実行させるコンピュータ実行可能なプログラムであって、該コンピュータに、
前記複数の計算機間で同一の前記アプリケーションのウィンドウの表示位置の絶対座標及び表示サイズとを所定記憶領域に保持するウィンドウ表示位置保持手順と、
イベントが発生した座標を前記絶対座標に対する相対座標で示すイベント情報を受信すると、前記所定記憶領域から前記絶対座標を取得して、該絶対座標に該相対座標を加算することによって該イベントが発生した座標を取得するイベント座標取得手順とを実行させることを特徴とするコンピュータ実行可能なプログラム。
（付記２）
前記イベントは、マウスの操作によるマウス・イベントであることを特徴とする付記１記載のコンピュータ実行可能なプログラム。
（付記３）
前記イベント座標取得手順は、
他計算機からの前記マウス・イベントを受信すると、擬似的にマウス・イベントを発生させた場合に生じる座標値の誤差を補正値として、前記相対座標に加えて更に前記絶対座標に加算することを特徴とする付記２記載のコンピュータ実行可能なプログラム。
（付記４）
前記コンピュータに、
前記イベント座標取得手順によって取得した前記イベントが発生した座標を保持値として所定記憶領域に保持する保持手順と、
前記座標を用いて擬似的にイベントを発生させる擬似イベント発生手順と、
イベントの発生によって通知された座標と前記保持手順によって保持した前記保持値とが一致する場合、前記アプリケーションに該イベントを通知する手順とを実行させることを特徴とする付記１乃至３のいずれか一項記載のコンピュータ実行可能なプログラム。
（付記５）
前記コンピュータに、
前記イベントの発生によって通知された座標と前記保持手順によって保持した前記保持値とが一致しない場合、該イベントに係るイベント情報を生成して、そのイベント情報を前記他計算機へ送信するイベント情報送信手順とを実行させることを特徴とする付記４記載のコンピュータ実行可能なプログラム。
（付記６）
前記コンピュータに、
キャプチャした前記ウィンドウに表示される画像の画素毎に画素値の閾値と比較することによって、該画素値が該閾値より大きいか或いは小さいかを示す値で該画素値を置き換えて２値化する２値化手順と、
２値化された前記画像の解像度を粗くすることによって該画像を抽象化する画像抽象化手順とを実行させることを特徴とする付記１乃至５のいずれか一項記載のコンピュータ実行可能なプログラム。
（付記７）
前記コンピュータに、
キー・イベントに応じて日本語の文字変換を実行する文字変換手順と、
前記文字変換による変換結果を他計算機へ送信する変換結果送信手順とを実行させる付記１乃至６のいずれか一項記載のコンピュータ実行可能なプログラム。
（付記８）
前記コンピュータに、
文字変換に係るキー・イベントを受信すると、該キー・イベントを前記アプリケーションへの通知を抑止するキー・イベント抑止手順と、
他計算機から日本語の文字変換を実行した変換結果を受信すると、該変換結果を前記アプリケーションへ通知する変換結果通知手順とを実行させる付記１乃至６のいずれか一項記載のコンピュータ実行可能なプログラム。
（付記９）
前記コンピュータに、
各計算機にインストールされるフォントリストに基づいて、全計算機に共通に存在するフォントのリストを共有フォントリストとして生成する共有フォントリスト生成手順と、
前記共有フォントリストからユーザが所望するフォントを取得する共有フォント取得手順とを実行させる付記１乃至８のいずれか一項記載のコンピュータ実行可能なプログラム。
（付記１０）
環境の異なる計算機を含む複数の計算機間でネットワークを介して同一アプリケーションによる処理を共有するアプリケーション共有装置であって、
前記複数の計算機間で同一の前記アプリケーションのウィンドウの表示位置の絶対座標及び表示サイズとを所定記憶領域に保持するウィンドウ表示位置保持手段と、
イベントが発生した座標を前記絶対座標に対する相対座標で示すイベント情報を受信すると、前記所定記憶領域から前記絶対座標を取得して、該絶対座標に該相対座標を加算することによって該イベントが発生した座標を取得するイベント座標取得手段とを有することを特徴とするアプリケーション共有装置。
（付記１１）
環境の異なる計算機を含む複数の計算機間でネットワークを介して同一アプリケーションによる処理を共有するアプリケーション共有処理をコンピュータに実行させるプログラムを記憶したコンピュータ読取可能な記憶媒体であって、該コンピュータに、
前記複数の計算機間で同一の前記アプリケーションのウィンドウの表示位置の絶対座標及び表示サイズとを所定記憶領域に保持するウィンドウ表示位置保持手順と、
イベントが発生した座標を前記絶対座標に対する相対座標で示すイベント情報を受信すると、前記所定記憶領域から前記絶対座標を取得して、該絶対座標に該相対座標を加算することによって該イベントが発生した座標を取得するイベント座標取得手順とを実行させるプログラムを記憶したことを特徴とするコンピュータ読取可能な記憶媒体。
（付記１２）
環境の異なる計算機を含む複数の計算機間でネットワークを介して同一アプリケーションによる処理を共有する際に通信されるイベントを一元管理する機能を有するサーバコンピュータであって、
前記複数の計算機にて入力デバイスの操作によって発生したイベントに係るイベント情報を時系列にバッファにスタックするイベントスタック手段と、
前記スタックされたイベント情報を時系列に、前記イベントを発生した計算機を含めて前記複数の計算機に送信するイベント送信手段とを有することを特徴とするサーバコンピュータ。
【００９８】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【図面の簡単な説明】
【００９９】
【図１】本発明の一実施形態に係るアプリケーション高速共有システムにおける機能構成を示す図である。
【図２】アプリケーション高速共有処理の全体概要を説明するためのフローチャート図である。
【図３】ステップＳ１３−５によるウィンドウ表示例を示す図である。
【図４】イベント一元管理機能によって実行される抽象化された画像比較による同期処理を説明するための図である。
【図５】抽象化された画像比較による同期処理を説明するためのフローチャート図である。
【図６】イベント情報のバッファの制御処理を説明するためのフローチャート図である。
【図７】イベントの再送抑制機能を説明するための図である。
【図８】イベントの再送抑制機能による処理を説明するためのフローチャート図である。
【図９】マウス座標の自動補正の処理を説明するための図である。
【図１０】図２のステップＳ１７における変換入力に一貫性を持たせるための処理を説明するための図である。
【図１１】図２のステップＳ１７における変換入力に一貫性を持たせるための処理を説明するためのフローチャート図である。
【図１２】共有フォントが指定される様子を示す図である。
【図１３】図２のステップＳ２１における共有フォントを選択可能とする処理を説明するためのフローチャート図である。
【符号の説明】
【０１００】
１０ａ、１０ｂ、１０ｃ  計算機
２０ａ、２０ｂ          アプリケーション層
２２ａ、２２ｂ          共有アプリケーション
２４ａ                  日本語変換機能
３０ａ、３０ｂ          ミドルウェア層
３２ａ、３２ｂ          アプリケーション連携機能
３４ａ、３４ｂ          イベント共有機能
３５ｂ                  マウス座標自動補正機能
３８ａ、３８ｂ          フォントリスト
３９ａ、３９ｂ          共有フォントリスト
４０ａ、４０ｂ          ＯＳ層
４２ａ、４２ｂ          入力デバイス・イベント部
【図１】
2006235749.tif 000003
【図２】
2006235749.tif 000004
【図３】
2006235749.tif 000005
【図４】
2006235749.tif 000006
【図５】
2006235749.tif 000007
【図６】
2006235749.tif 000008
【図７】
2006235749.tif 000009
【図８】
2006235749.tif 000010
【図９】
2006235749.tif 000011
【図１０】
2006235749.tif 000012
【図１１】
2006235749.tif 000013
【図１２】
2006235749.tif 000014
【図１３】
2006235749.tif 000015