(57)【要約】【課題】Ｐ２Ｐ方式を用いてピア同士それぞれが搭載しているアプリケーションをライセンスに抵触することなく、他のピアでも使用できるようにし、互いの遊休リソースを効率良く利用できるようにする方法及び装置を提供すること。【解決手段】本発明に係るアプリケーションを共有する方法は、第１のピアが共有しようとするアプリケーションを登録するステップ１と、第２のピアから受信したアプリケーション検索の命令に含まれる検索条件を前記登録されたアプリケーションファイルが満しているかどうかを判断し、判断結果によって第２のピアにディスクリプションファイルを送信するステップ２と、検索条件を満たすアプリケーションに関するサービスを実行するために、第２のピアと所定のプロトコルで接続するステップ３と、アプリケーションに関するリモートディスプレイサービスを第２のピアに提供するセッションを実行するステップ４とを含むことを特徴とする。【選択図】図６
2005158068.tif 000002
【特許請求の範囲】
【請求項１】
サーバ機能を有する第１のピアが共有しようとするアプリケーションを登録するステップ１と、
クライアント機能を有する第２のピアから受信したアプリケーション検索の命令に含まれる検索条件を前記登録されたアプリケーションファイルが満しているかどうかを判断し、前記判断結果によって前記第２のピアに前記ディスクリプションファイルを送信するステップ２と、
前記検索条件を満たすアプリケーションに関するサービスを実行するために、前記第２のピアと所定のプロトコルで接続するステップ３と、
前記アプリケーションに関するリモートディスプレイサービスを前記第２のピアに提供するセッションを実行するステップ４とを含むことを特徴とするＰ２Ｐプロトコルを用いてアプリケーションを共有する方法。
【請求項２】
前記ステップ１は、共有しようとするアプリケーションの実行命令及び前記アプリケーションをサービスするときの基準となる政策を登録するステップをさらに含むことを特徴とする請求項１に記載のＰ２Ｐプロトコルを用いてアプリケーションを共有する方法。
【請求項３】
前記政策は、観測されたリソースの統計値を基準として設定することを特徴とする請求項２に記載のＰ２Ｐプロトコルを用いてアプリケーションを共有する方法。
【請求項４】
前記ステップ３の後に、前記第１のピアと前記第２のピアとの間で前記サービスに対する詳細な事項に対してネゴシエーションを行うステップをさらに含むことを特徴とする請求項１に記載のＰ２Ｐプロトコルを用いてアプリケーションを共有する方法。
【請求項５】
前記ステップ４は、前記第２のピアが前記アプリケーションの実行のためのユーザの入力を前記第１のピアに転送すると、前記第１のピアは、前記リモートディスプレイシステムを利用して前記第２のピアに前記アプリケーションの実行による出力を送信するステップと、
前記第１のピアの命令または前記第２のピアの命令によって前記セッションを終了するステップをさらに含むことを特徴とする請求項１に記載のＰ２Ｐプロトコルを用いてアプリケーションを共有する方法。
【請求項６】
前記第１のピアの命令によって前記セッションを終了する場合に、前記セッションを終了するステップは、
前記第２のピアにサービスの中断を知らせる終了命令を送信するステップと、
前記第２のピアが正しく終了したという旨のメッセージを受信するステップと、
前記受信したメッセージを確認し、前記セッションを終了するステップとを含むことを特徴とする請求項５に記載のＰ２Ｐプロトコルを用いてアプリケーションを共有する方法。
【請求項７】
クライアント機能を有するピア（ａ）のユーザがサービスを受けたいアプリケーションの検索条件を入力するステップ１と、
前記検索条件を用いて検索メッセージを構成した上、隣接するピアに検索命令を送信するステップ２と、
前記隣りのピアのうち、前記検索条件を満たすアプリケーションを登録しているピアから前記アプリケーションに関するディスクリプションファイルを受信するステップ３と、
前記ディスクリプションファイルに基づいて、前記アプリケーションを登録しているピアの中から前記ピア（ａ）のユーザが選択したピア（ｂ）と所定のプロトコルで接続するステップ４と、
前記アプリケーションに関するリモートディスプレイサービスを前記ピア（ｂ）から提供されるセッションを実行するステップ５とを含むことを特徴とするＰ２Ｐプロトコルを用いて共有されたアプリケーションを使用する方法。
【請求項８】
前記ステップ４の後に、前記ピア（ｂ）と前記サービスに対する詳細な事項についてネゴシエーションを行うステップをさらに含むことを特徴とする請求項７に記載のＰ２Ｐプロトコルを用いて共有されたアプリケーションを使用する方法。
【請求項９】
前記ステップ４は、前記ピア（ａ）が前記アプリケーションの実行のためのユーザの入力を前記ピア（ｂ）に送信し、前記リモートディスプレイシステムを利用して前記ピア（ｂ）から前記アプリケーションの実行による出力を受信するステップと、
前記ピア（ａ）の命令または前記ピア（ｂ）の命令によって前記セッションを終了するステップとをさらに含むことを特徴とする請求項７に記載のＰ２Ｐプロトコルを用いて共有されたアプリケーションを使用する方法。
【請求項１０】
前記ピア（ａ）の命令によって前記セッションを終了する場合に、前記セッションを終了するステップは、
前記アプリケーションの実行による出力の結果を含むファイルを格納するステップと、
前記ピア（ｂ）に前記セッションを終了するように要求する命令を送信するステップとをさらに含むことを特徴とする請求項９に記載のＰ２Ｐプロトコルを用いて共有されたアプリケーションを使用する方法。
【請求項１１】
前記ピア（ｂ）の命令によって前記セッションを終了する場合に、前記セッションを終了するステップは、
前記ピア（ｂ）からサービスの中断を知らせる終了命令を受信するステップと、
前記アプリケーションの実行による出力結果を含むファイルを格納するステップと、
前記ピア（ａ）が正しく終了したという旨のメッセージを前記ピア（ｂ）に送信するステップとをさらに含むことを特徴とする請求項９に記載のＰ２Ｐプロトコルを用いて共有されたアプリケーションを使用する方法。
【請求項１２】
ユーザの入力によって共有しようとするアプリケーションを登録し、全体のアプリケーションまたは個別のアプリケーションに対するサービス政策を設定する登録モジュールと、
サーバの遊休リソースを測定し、前記登録されたアプリケーションが平均的に使用するリソースの量を点検するリソース点検モジュールと、
前記登録モジュール及び前記リソース点検モジュールに基づいて、現在サービス可能なアプリケーションについての情報と前記アプリケーションをサービスする環境についての情報とを含んだディスクリプションファイルを生成するディスクリプションモジュールと、
クライアントにリモートディスプレイサービスを提供するセッションを維持したり、終了したりするセッションモジュールとを備えることを特徴とするＰ２Ｐプロトコルを用いてアプリケーションを共有するサーバ。
【請求項１３】
サーバユーザが命令を入力できるようにグラフィックインタフェースを提供し、前記サーバユーザから命令を受信するＧＵＩモジュールと、
前記サービスをクライアントに提供するために、前記クライアントと所定のプロトコルで通信を行うことができるように接続する接続モジュールとをさらに備えることを特徴とする請求項１２に記載のＰ２Ｐプロトコルを用いてアプリケーションを共有するサーバ。
【請求項１４】
データ伝送品質、サービス政策、その他のサービスに関連した事項を前記クライアントと打ち合わせする役割を担うネゴシエーションモジュールをさらに備えることを特徴とする請求項１２に記載のＰ２Ｐプロトコルを用いてアプリケーションを共有するサーバ。
【請求項１５】
サービスを受けたいアプリケーションに対する検索条件をクライアントのユーザから受信し、検索条件を満たすアプリケーションを検索するための検索メッセージを作成し、これを隣接するピアに転送する検索モジュールと、
前記隣接するピアのうち、前記検索条件を満たすアプリケーションを登録しているサーバから前記アプリケーションに関するリモートディスプレイサービスの提供を受けるセッションを維持したり、終了したりするセッションモジュールとを備えることを特徴とするＰ２Ｐプロトコルを用いて共有されたアプリケーションを使用するクライアント。
【請求項１６】
前記サーバから前記サービスの提供を受けるために、サーバとクライアントとの間で所定のプロトコルを介して通信を行うことができるように接続する接続モジュールと、
クライアントユーザが命令を入力できるように、グラフィックインタフェースを提供し、前記サーバからリモートディスプレイサービスの提供を受け、前記アプリケーションの実行結果をユーザにディスプレイするＧＵＩモジュールとをさらに含むことを特徴とする請求項１５に記載のＰ２Ｐプロトコルを用いて共有されたアプリケーションを使用するクライアント。
【請求項１７】
データ伝送品質、サービス政策、その他のサービスに関連した事項を前記サーバと打ち合わせする役割を担うネゴシエーションモジュールをさらに含むことを特徴とする請求項１５に記載のＰ２Ｐプロトコルを用いて共有されたアプリケーションを使用するクライアント。
【請求項１８】
請求項１乃至請求項１１の何れかに記載の方法を具現するためのプログラムが記録されたことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションを共有する方法に関し、より詳しくは、Ｐ２Ｐ(Peer-to-Peer)方式を用いてピア(Peer)同士それぞれが搭載しているアプリケーションをライセンス(license)に抵触することなく、他のピアでも使用できるようにし、互いの遊休リソースを効率良く利用できるようにする方法及び装置に関する。
【背景技術】
【０００２】
インターネットの一般的なデータモデルであるクライアント/サーバ(Client/Server)モデルは、データの生産者が少数のサーバであり、この少数のサーバに複数のクライアントがアクセスして使用する方式である。しかし、インターネットの使用量が急増しており、インターネットの使用に匿名性が保たれることにより、かつ、自由なデータのやり取り及び複製などに対するユーザの要求が増加するにつれて、Ｐ２Ｐをベースとした様々なアプリケーションが登場してきた。その中、グヌテラ(Gnutella)、ナプスター(Napster)などのようなファイル共有アプリケーションが代表的である。これらのファイル共有アプリケーションは、特定のサーバ無しに何れでもサーバになったり、クライアントになったりするピアから構成されている。このようはピアは、Ｐ２Ｐプロトコルで具現されたネットワークに参加できるデバイスを意味するが、各ピアは、独立に、かつ非同期的に作動することが可能であり、ピアＩＤ(peer indentification)によって区分される。一方のピアと他方のピアが相互サービスを連動するためには、両方のピアが直接接続する必要はなく、中間に他のピアをルーティング(routing)のための媒介として、所望のピアと通信したり、サービスを提供したり、提供されたりすることができる。
【０００３】
グヌテラの場合は、図１（ａ）に示すように、純粋な形態のＰ２Ｐモデルから構成される。このとき、各ピアは、データを検索するために実時間でノード(node)を検索し、検索の結果、該当のデータを有しているノードを見付けると、接続を結び、データをやり取りする。一方、ナプスターの場合、図１（ｂ）に示すように、データをやり取りする主体は、依然としてピアであるが、これらに対する検索は、別の検索サーバを介して行われる。グヌテラに関するより詳しい内容は、「http://www.gnutella.com」で見ることができる。
【０００４】
ファイルの共有の他にも、「Grid computing」(「http://www.ibm.com/grid」参照)、「SETI@home」(「http://setiathome.ssl.berkeley.edu」参照)のように、コンピュータのリソースを共有するプロジェクト(project)もある。しかし、このようなプロジェクトは、図１の（ａ）または（ｂ）のように、ピアの間で互いにリソースを共有するのではなく、図２のように、処理時にリソースを大いに要求する数学演算などで必要な生のデータ(raw data)を分割し、各ピアに割り当てた後、それぞれのピアで割り当てられたデータを処理し、マスターが前記処理されたデータ(processed data)を再びまとめる構造になっている。
【０００５】
図３は、代表的なＰ２ＰプロトコルであるＪＸＴＡのソフトウェアアーキテクチャーを示している。ウェブページ「http://www.jxta.org/」を参照すれば、ＪＸＴＡに対するより詳しい内容を見ることができる。このようなＪＸＴＡは、ＯＳ(operating system)、ネットワーク、プログラミング言語(programming language)に対し、独立したＰ２Ｐアプリケーションを実行できるように作成した汎用プラットフォームである。このようなＪＸＴＡを始めとする一般的なＰ２Ｐファイル共有システムは、既存のＴＣＰ／ＩＰ(Transmission Control Protocol/Internet Protocol)系列のインターネットを基盤としており、ここに、コア(core)に該当するＰ２Ｐプロトコルスタック(P2P protocol stack)が積層される。Ｐ２Ｐプロトコルスタックを共通的に大別すると、各ピアの間でグループまたはコミュニティを形成するために、互いにを発見し、モニタリングするディスカバリ(discovery)部分、所望のサービスやデータを検索するクエリー(query)部分、及びサービスやデータを提供するピアと接続(connection)を形成する部分とに分けられる。このようなＰ２Ｐプロトコルスタックの上に、これを利用してファイル共有のようなアプリケーションが動作する。
【０００６】
このようなＰ２Ｐ共有モデルは、その動作方式において多少差がある。図５は、通常使用されるＰ２Ｐモデルのアプリケーションであるグヌテラファイル共有アプリケーションの動作方式を示すフローチャートであるが、グヌテラは、図１（ａ）に示すように、純粋なピアの集合からなるノード形態をベースとするシステムである。このようなグヌテラのファイル共有アプリケーションの動作を説明すると、既存に第１のピア１０及び第３のピア３０が参加しているネットワークに、第２のピア２０が新たに参加する。このとき、隣りにいかなるピアが存在するかを確認するために、ノードを発見(node discovery)するためのパケット(packet)である「Ｐｉｎｇ」パケットをブロードキャスト(broadcast)すると(Ｓ５１０)、隣接するピアは、これに応答する「Ｐｏｎｇ」パケットを第２のピア２０に送信する(Ｓ５２０)。このような過程により、第２のピア２０は、隣りに第１のピア１０と第３のピア３０とが存在することが分かる。その後、所望のファイルを検索する「Ｑｕｅｒｙ」パケットをブロードキャストすると(Ｓ５３０)、隣接するピアのうち、検索条件に合致するファイルを有しているピアが「Ｑｕｅｒｙ  ｈｉｔ」パケットとして応答することになる(Ｓ５４０)。その後、第２のピア２０は、Ｑｕｅｒｙ  ｈｉｔパケットとして応答したピアの中で何れか一つのピアを選択して、これと接続し(Ｓ５５０)、ＧＥＴまたはＰＵＳＨ方式で所望のファイルを受信する(Ｓ５６０)。一般に、ファイルを受信するときには、ＧＥＴ命令を用いるが、第２のピア２０がファイヤーウォール内に存在する場合のように、特殊な条件ではファイルを有している第２のピア２０がＰＵＳＨする方式を用いることもある。１つの完成されたアプリケーションとして動作するためには、このようなＰ２Ｐプロトコルスタックの他にも、認証(authentication)、セッション(session)、ユーザインタフェース(GUI)のような要素(component)と組み合わせなければならない。
【０００７】
前記Ｐ２Ｐモデルの他に、本発明に関連した技術としてリモートディスプレイシステム(Remote display system)があるが、代表的な技術としては「Ｘウィンドウシステム(X Window System)」、「ＶＮＣ(Virtual Network Computing)」などがある。Ｘウィンドウシステムに関する詳しい情報は、ウェブページ「http://www.x.org」で、ＶＮＣに関する詳しい情報は、ウェブページ「http://www.uk.research.att.com/ＶＮＣ/」で見ることができる。このような技術は、図４に示すように、遠隔地ビューア(remote viewer)においてキーボード、マウスなどの入力装置を用いてサーバに接続し、様々な命令を伝達すると、サーバが前記命令に応じてアプリケーションを実行し、その結果のディスプレイ情報を再び遠隔地ビューアに伝達する方式である。このような遠隔地ビューアの役割をするクライアントは、サーバのプログラムをダウンロードして実行するのではなく、全ての動作の実行はサーバで行われ、ただ、サーバで実行された結果を呈示するだけであるから、いわゆる、シンクライアント(thin client)とも言えるだろう。
【０００８】
ＶＮＣの場合、殆どのＯＳで実行することができる。つまり、ＯＳ間の相互運用性(interoperability)を満たす。例えば、リナックスシステムでウィンドウズ（登録商標）サーバに接続してプログラムを実行させ、リナックスシステムで出力画面を見ることができるし、逆にウィンドウズ（登録商標）システムでもリナックスサーバに接続してプログラムを実行させ、出力画面を見ることができる。また、ＰＤＡのようなモバイルデバイスにおいてもプロトコルを満たすビューア(viewer)だけあれば、サーバのプログラムを実行することができる。
【０００９】
図４を参照してＶＮＣの動作を説明すると、ＶＮＣは、サーバがクライアント側のビューアにディスプレイされるフレームバッファ(frame buffer)を更新する原理で動作する。この意味でＶＮＣをリモートフレームバッファ（remote frame  buffer；RFB）とも呼ぶ。このとき、ディスプレイされるピクセルの情報は、ビデオデータを転送する場合と同様に様々な方式で、かつ、状況に適した(adaptive)方式で転送される。具体的には、クライアント、即ち、ＶＮＣビューアがキーボード、マウスなどの入力装置を用いて命令を伝達すると、ＶＮＣサーバは、前記命令に応じてサーバ内に格納されたアプリケーションを実行し、その結果をＶＮＣビューアに伝達する方式になっている。前記ＶＮＣビューアとＶＮＣサーバとの間の通信は、ＶＮＣプロトコルを介して、ネットワークの状況によって様々な品質(quality)で行われる。
【００１０】
前記Ｐ２Ｐ共有モデルやリモートディスプレイシステムは、以下のような問題点乃至不都合を抱えている。Ｐ２Ｐ方式は、複数のピアがコミュニティを形成し、互いの情報やリソースを共有する方式であるが、従来のＰ２Ｐ方式におけるアプリケーションは、殆どファイルの共有にのみ焦点が当てられている。従って、情報の共有が、音楽、動画像のようなファイルにのみ限られており、アプリケーションそのものを共有しようとする要求に応えられなかった。かつ、リソースを共有する幾つかのアプリケーションが存在するが、これはファイルの共有のように純粋なピアの自律的な共有でなく、「Grid computing」や「SETI@home」のように、並列コンピューティングの方式で使用されているだけであった。
【００１１】
一方、リモートディスプレイシステム乃至リモートアクセスシステム(remote access system)は、クライアントが既知のサーバに接続し、１つのユーザーとしてサーバを使用する方式であり、単にサーバに接続してファイルをダウンロードするだけで、サーバのプログラムを複数のクライアントが使用することに過ぎない。従って、これは、ピア間の純粋な共有形態でないことから、クライアント/サーバモデルが有する問題点をそのまま受け継いでいる。即ち、クライアントは、計定が存在するサーバにのみ接続することができ、必ずサーバに使用しようとするアプリケーションが存在しなければならない。従って、これも同様にライセンスが許可されたアプリケーションのみを行うことができる。これだけでなく、複数のクライアントの接続が特定の幾つのサーバにのみ集中されるため、サーバは、さらなる強力なコンピューティングパワーが求められる反面、益々増えているクライアントのコンピューティングパワーは効率的な使用が不可能となるという問題がある。
【００１２】
このように、従来の技術においては、ピアが有しているアプリケーションをコミュニティの全てのクライアントが共有し合うようにする方法がなく、各ピアが自分の遊休リソースを他のピアに提供できる方法も存在しない。
【００１３】
特許文献１には、以下のような記載がある。
コンピュータ・プログラム間のピア・トゥ・ピア通信接続を確立するためのシステム及び方法を開示する。第１のコンピュータ・プログラムは、第２のコンピュータにおいて実行されている間、ピア・トゥ・ピア通信接続を要求している、第２のコンピュータへ通信メッセージを送る。メッセージを受信することにより、第２のコンピュータは、ピア・トゥ・ピア通信接続を確立するための所定の基準を満たしている第２のコンピュータ・プログラムが実行されているときに要求を受け入れる応答メッセージを第１のコンピュータに送り、第１及び第２のコンピュータ・プログラムの間の要求されたピア・トゥ・ピア通信接続が確立される。前記所定の基準は、第１及び第２のコンピュータ・プログラムが同じサーバ・コンピュータである。
【特許文献１】特開平１０−１０５５２９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
本発明は、上記問題点に鑑みなされたものであり、最近、インターネット環境で関心が集まれているＰ２Ｐ方式を用いてピア間のアプリケーションやリソースを効率良く共有できる方法を提供することを目的とする。
【００１５】
また、本発明は、アプリケーションを共有することにより、別の設置を行うことなく、他のプラットフォームのアプリケーションを使用できるようにすることを他の目的とする。
【００１６】
また、本発明は、ＰＣの遊休リソースを共有することにより、現在のリソースや環境で行うことのできないアプリケーションの使用を可能とすることをさらに他の目的とする。
【課題を解決するための手段】
【００１７】
上記の目的を達成するため、本発明に係るＰ２Ｐプロトコルを用いてアプリケーションを共有する方法は、サーバ機能を有する第１のピアが共有しようとするアプリケーションを登録するステップ１と、クライアント機能を有する第２のピアから受信したアプリケーション検索の命令に含まれる検索条件を前記登録されたアプリケーションファイルが満しているかどうかを判断し、前記判断結果によって前記第２のピアに前記ディスクリプションファイルを送信するステップ２と、前記検索条件を満たすアプリケーションに関するサービスを実行するために、前記第２のピアと所定のプロトコルで接続するステップ３と、前記アプリケーションに関するリモートディスプレイサービスを前記第２のピアに提供するセッションを実行するステップ４とを含むことを特徴とする。
【００１８】
本発明に係るＰ２Ｐプロトコルを用いて共有されたアプリケーションを使用する方法は、クライアント機能を有するピア（ａ）のユーザがサービスを受けたいアプリケーションの検索条件を入力するステップ１と、前記検索条件を用いて検索メッセージを構成した上、隣接するピアに検索命令を送信するステップ２と、前記隣りのピアのうち、前記検索条件を満たすアプリケーションを登録しているピアから前記アプリケーションに関するディスクリプションファイルを受信するステップ３と、前記ディスクリプションファイルに基づいて、前記アプリケーションを登録しているピアの中から前記ピア（ａ）のユーザが選択したピア（ｂ）と所定のプロトコルで接続するステップ４と、前記アプリケーションに関するリモートディスプレイサービスを前記ピア（ｂ）から提供されるセッションを実行するステップ５とを含むことを特徴とする。
【００１９】
また、本発明に係るＰ２Ｐプロトコルを用いてアプリケーションを共有するサーバは、ユーザの入力によって共有しようとするアプリケーションを登録し、全体のアプリケーションまたは個別のアプリケーションに対するサービス政策を設定する登録モジュールと、サーバの遊休リソースを測定し、前記登録されたアプリケーションが平均的に使用するリソースの量を点検するリソース点検モジュールと、前記登録モジュール及び前記リソース点検モジュールに基づいて、現在サービス可能なアプリケーションについての情報と前記アプリケーションをサービスする環境についての情報とを含んだディスクリプションファイルを生成するディスクリプションモジュールと、クライアントにリモートディスプレイサービスを提供するセッションを維持したり、終了したりするセッションモジュールとを備えることを特徴とする。
【００２０】
また、本発明に係るＰ２Ｐプロトコルを用いて共有されたアプリケーションを使用するクライアントは、サービスを受けたいアプリケーションに対する検索条件をクライアントのユーザから受信し、検索条件を満たすアプリケーションを検索するための検索メッセージを作成し、これを隣接するピアに転送する検索モジュールと、前記隣接するピアのうち、前記検索条件を満たすアプリケーションを登録しているサーバから前記アプリケーションに関するリモートディスプレイサービスの提供を受けるセッションを維持したり、終了したりするセッションモジュールとを備えることを特徴とする。
【発明の効果】
【００２１】
このような本発明によるＰ２Ｐプロトコルを用いてアプリケーションを共有する方法及び装置によれば、第一に、ライセンスに抵触することなく、アプリケーションを共有することが可能となる。ピア間のアプリケーションの共有は、アプリケーションの無断複製、配布とは異なる。アプリケーションは、許可されたコンピュータでのみ実行され、その以外のところには複製されない。但し、他の匿名のユーザが遠隔でアクセスする場合、例えば、ゲームライセンスの無いユーザであっても、他人のコンピュータでゲームを行い、遠隔地でディスプレイを見てコントロールすることができる。
【００２２】
第二に、本発明によれば、別の設置を行うことなく、アプリケーションを使用することができる。使用頻度の低いプログラムの場合、一回、二回の使用のために長時間の設置を行わなければならず、かつ、必要なくなったときには、削除する過程を行わなければならない。しかし、本発明においては、使用頻度の低いアプリケーションを他のピアのコンピュータでも実行することができる。
【００２３】
第三に、本発明によれば、他のオペレーティングシステムや他の種のプラットフォームを有するクライアントにおいても所望のアプリケーションを使用することができる。例えば、ウィンドウズ（登録商標）でリナックス用アプリケーションを実行することができると共に、ＰＤＡを通して一般的なＰＣ用アプリケーションを実行することもできる。
【００２４】
第四に、本発明によれば、クライアントピアがサーバピアの遊休リソースを共有することができ、現在のリソースや環境では実行できないアプリケーションをクライアントピアで使用することが可能となる。例えば、高い仕様のコンピュータリソースを要求する３ＤシミュレーションやＣＡＤのようなアプリケーションを、これらのアプリケーションの組み込まれたＰＣの遊休時間に行うことにより、該当のアプリケーションを直接行うことのできないＰＣを有するユーザであってもアプリケーションを使用することが可能となる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の好ましい実施の形態を、添付図面に基づいて詳しく説明する。
【００２６】
本発明に係るアプリケーション共有システム(Application Sharing System)には、特定のサーバやクライアントが別に存在するのではなく、一方のピアは、クライアントとして、他方のピアのアプリケーションを使用したり、一方のピアが自分のアプリケーションやリソースを他方のピアに供給するサーバの役割も有する。従って、サーバとクライアントとのパートが１つのプログラムとして動作する。しかし、全てのピアが必ずサーバ及びクライアントの機能を共に備えている必要はなく、場合によっては、サーバでのみ動作するピアとクライアントでのみ動作するピアが一部含まれることもある。従って、機能上の面で構成要素をサーバ側とクライアント側とに分ける必要がある。本発明は、ピア間のコミュニティの形成やサービスを受けたいアプリケーションに対する検索プロトコルとしては従来のＰ２Ｐプロトコルスタックを使用し、遠隔地のアプリケーションの実行や制御は、従来のリモートディスプレイシステムのサーバ/ビューア構造を用いる。
【００２７】
図６は、本発明に係るアプリケーション共有システムのサーバ側の構成を示している。サーバは、各ピアと共有するアプリケーションを登録し、コンピュータがＰ２Ｐネットワークに接続されている間、現在使用可能なシステムリソースをモニタリングする。また、現在登録されたアプリケーションやモニタリングされたシステムリソースに基づいて、サーバ自身に対するディスクリプションを作成し、このディスクリプションに基づいて他のピアから入力される検索メッセージに応答する。Ｐ２Ｐコミュニティを形成している間には、サーバパートは、デーモン(daemon)型で行われ、他のピアから検索やアプリケーションの使用要求がある場合に備えて待機する。もし、他方のピアからアプリケーションの使用要求があれば、接続(connection)を結び、適切なネゴシエーション(negotiation)を経た後、サーバであるピアがクライアントであるピアにリモートディスプレイサービスを提供するセッション(session)を開始する。セッションが開始すると、このときから該当のアプリケーションを遠隔地の他のピアがコントロールできるように、リモートディスプレイシステム(remote display system)を駆動する。
【００２８】
サーバ側ピアの構成を具体的に説明すると、最下位にシステムの駆動のためのオペレーティングシステム(ＯＳ)６６０が存在し、最上位にユーザが使用しようとするアプリケーション６１０が存在する。オペレーティングシステム６６０とアプリケーション６１０との間には、本発明によりＰ２Ｐ方式でコンピュータリソースを共有するためのミドルウェア６２０が存在する。かつ、前記ミドルウェア６２０には、複数のピアを発見してコミュニティを形成し、ピア間のデータの送受信を可能とするＰ２Ｐプロトコルスタック６４０と、遠隔地ビューアから伝達された命令に応じてアプリケーションを実行し、その実行の結果を遠隔地ビューアに伝達するリモートディスプレイシステム６５０、かつ、これらの上位層に本発明においてさらに備えられたアプリケーション共有システムモジュール６３０が存在する。
【００２９】
前記アプリケーション共有システムモジュール６３０は、複数の下位モジュールを含むが、以下にこれについて説明する。コンピュータの全てのアプリケーションを他のピアと共有するのではないため、共有したいアプリケーションをユーザが直接登録すべきである。このとき、ユーザは、登録するアプリケーションに対するサービス政策を設定することができる。もし、ここで設定された基準にまでシステムの環境が整っていないと、該当のアプリケーションに対するサービスは中断すべきである。このようなサービス政策の例としては、「ＣＰＵ使用量がここのところ１０分の間、平均５０%以上となったとき、該当のアプリケーションに対するサービスを提供することができない」のようなものがある。このように、登録モジュール(registration module)６３２は、ユーザの入力によって共有したいアプリケーションを登録し、ユーザ入力またはリソース点検モジュール(resource monitoring modue)６３３によって観測されたリソース統計値により全体または個別のアプリケーションに対するサービスの政策を設定する役割を担う。
【００３０】
サーバ役割を担うピアがクライアントのアプリケーションの使用要求を受けることができるのか、あるいは、現在サービスしているアプリケーションを維持し続けるか否かに対する判断は、現在のサーバのリソース状態や登録過程での政策の影響を受ける。即ち、サーバのリソースが設定された基準を超えて使用されていると、現在の状態ではサービスを提供することができず、クライアントの要求を拒絶または中断する。さらに、他のピアの検索に影響を及ぶディスクリプションファイルもやはり新しく構成すべきである。従って、リソース点検モジュール(resource monitoring module)６３３は、毎瞬間コンピュータの遊休リソースを測定し、最近の一定時間の間のリソースに対する統計を管理する。かつ、特定のアプリケーションが平均的に幾分のリソースを使用しているのか、即ち、過去の統計値も同様に管理する。リソース点検モジュール６３３が点検(monitoring)するリソースには、プログラムを実行するときに必要なＣＰＵ、メモリ、ネットワーク帯域幅などのような項目が含まれる。
【００３１】
ディスクリプションモジュール(description module)６３４は、登録モジュール６３２及びリソース点検モジュール６３３に基づいて現在サービス可能なアプリケーションについての情報とサービス環境についての情報とを含んだディスクリプションファイル(description file)を生成する役割を担う。具体的には、ディスクリプションファイルには、サービスするアプリケーションの名前、バージョンやその他の情報、サーバのオペレーティングシステム、メモリ、ＣＰＵ、仮想メモリ、現在該当のアプリケーションに対して提供可能なリソース情報などを含んでいる。ディスクリプションファイルは、サービスするそれぞれのアプリケーションに対して作成されるが、周期的または他のピアの検索の要求があるときに変化するシステム情報を反映して動的に生成される。このように生成されたディスクリプションファイルは、他のピアの検索の要求に応答するメッセージを作成するのに使用される。また、下位Ｐ２Ｐスタックによって異なるが、このようなディスクリプションファイルが広告(advertisement)に使用されることもある。
【００３２】
一方、接続モジュール(connection module)６３７は、サーバのサービスをクライアントに提供するために、サーバとクライアントとの間で所定のプロトコル(例えば、HTTPプロトコル)で通信を行うことができるように連結する役割を担う。
【００３３】
また、ネゴシエーションモジュール(negotiation module)６３６は、選択的(optional)構成要素であり、データ転送品質(例えば、Quality of Service；以下、QoSとも称する)やサービス政策などのようにサービスに関連した様々な事項をクライアントと打ち合わせする役割を担う。
【００３４】
セッションモジュール(session module)６３５は、クライアントにリモートディスプレイサービスを提供するセッションを維持する役割を担う。セッションは、関連したプロセスを一括して維持管理するために必要であるが、１つのセッションには、クライアント側の情報、ＱｏＳのような品質情報、安全なプロセス終了、該当のサービス政策、ログ情報(log information)などが含まれる。結局、セッションモジュール６３５は、提供するアプリケーションのサービス別にこのようなセッションを維持し、サービスの終了と共にセッションを終了する役割を担う。
【００３５】
ＧＵＩモジュール(graphic user interface module)６３１は、サーバユーザが命令を入力できるように、グラフィックインタフェースを提供し、前記サーバユーザから命令を受信する。即ち、ＧＵＩモジュール６３１は、登録過程、アプリケーション共有に対する環境設定、システムのリソースに対するモニタリング結果、接続設定と解除に対するサーバ側コントロールなどを担う。
【００３６】
図７は、本発明に係るアプリケーション共有システムのクライアント側の構成を示す図である。クライアントは、ユーザの要求事項によって検索条件を作成し、検索条件に該当するピアのアプリケーションを検索する。また、検索されたピアの中からユーザが選択したピアとネゴシエーションして接続を結び、アプリケーションの円滑な実行のためにセッションを維持する。セッションが開始されると、ユーザは、リモートディスプレイシステムのビューアを介して相手方のピアのアプリケーションを実行できるようにする。
【００３７】
クライアント側ピアの構成を具体的に説明すると、最下位にシステムの駆動のためのオペレーティングシステム(ＯＳ)７５０が存在し、その上に本発明に係るＰ２Ｐ方式でコンピュータリソースを共有するためのミドルウェア７１０が存在する。かつ、前記ミドルウェア７１０には、前記サーバ側のミドルウェア６２０と同様に、Ｐ２Ｐプロトコルスタック７３０と、リモートディスプレイシステム７４０と、かつ、これらの上位層に本発明においてさらに備えられたアプリケーション共有システムモジュール７２０が存在する。前記アプリケーション共有システムモジュール７２０は、複数の下位モジュールを含んでいるが、以下にこれについて説明する。
【００３８】
検索モジュール(searching module)７１２は、クライアントの動作後、ユーザからＧＵＩモジュール６３１を介してサービスを受けたいアプリケーションに対する検索条件を受信し、その検索条件を満たすサービスを検索するために検索メッセージを作成し、これを下位Ｐ２Ｐスタックを介して他のピアに転送する役割を担う。
【００３９】
接続モジュール(connection module)７１５は、サーバ側の接続モジュール６３７と同様に、サーバのサービスの提供を受けるために、サーバとクライアントとの間に所定のプロトコルで通信を行うことができるように接続する役割を担う。
【００４０】
ネゴシエーションモジュール(negotiation module)７１４は、サーバ側のネゴシエーションモジュール６３６と同様に、データ伝送品質やサービス政策などのように、サービスに関連した事項をサーバと打ち合わせする役割を担う。
【００４１】
セッションモジュール(session module)７１３は、サーバからリモートディスプレイサービスの提供を受けるセッションを維持する役割を担う。１つのセッションには、サーバ側情報、ＱｏＳのような品質情報、安全なプロセス終了、該当のサービス政策、ログ情報などが含まれる。セッションモジュール７１３は、提供するアプリケーションのサービス別にこのようなセッションを維持し、サービスの終了と共にセッションを閉じる。
【００４２】
ＧＵＩモジュール７１１は、クライアントユーザが命令を入力できるように、グラフィックインタフェースを提供し、前記サーバユーザから命令を受信する。このように、クライアント側ＧＵＩモジュール７１１は、隣接するノードに対する検索結果及びユーザが要求したサービスに対する検索結果を表示する部分、かつ、ユーザが所望するアプリケーションを検索するためのオプションを入力する部分を含んでいる。これだけでなく、ＧＵＩモジュール７１１は、サーバの状況やネットワークに対する情報を表示する部分を含んでも良い。かつ、ＧＵＩモジュール７１１は、サーバから前記アプリケーションの実行の結果、即ち、リモートディスプレイサービスをリモートディスプレイシステム７４０を介して伝達され、その結果をクライアントユーザにディスプレイする役割を担う。
【００４３】
図８は、本発明に係る全体の動作を示すフローチャートである。
【００４４】
先ず、サーバ機能を有する各ピア１０、２０、３０は、それぞれ共有しようとするアプリケーションを登録する(Ｓ８１０、Ｓ８１１、Ｓ８１２)。この登録過程では、アプリケーションの実行命令のみならず、アプリケーションをサービスするときにサービスの基準となる種々の政策も共に登録する。
【００４５】
次に、前記各ピア１０、２０、３０の１つの第２のピア２０が隣りにいかなるピアがあるかを確認するために、Ｐｉｎｇパケットをブロードキャストすると(Ｓ８２０)、隣接する各ピア１０、３０は、これに応答するＰｏｎｇパケットを第２のピア２０に送信する(Ｓ８３０)。これにより、第２のピア２０は、隣りに第１のピア１０及び第３のピア３０が存在することが分かる。
【００４６】
次に、クライアント側(第２のピア)モジュールは、ユーザの要求によって実行される(Ｓ８４０)。ユーザは、他のピアのアプリケーションを使用しようとするとき、サービスを受けたいアプリケーションの検索条件をＧＵＩモジュール７１１を介して入力する。すると、クライアントの検索モジュール７１２は、ユーザから入力された検索条件を用いて検索メッセージを構成した上、コミュニティを形成している隣接する各ピア１０、３０に接続モジュール７１５を介して検索命令を転送する(Ｓ８５０)。前記検索命令を受信した隣りの各ピア１０、３０は、自分のディスクリプションファイルを参照し、前記検索条件を満たすと応答し、満たしていないと応答しない。第１のピア１０が前記検索条件を満たすアプリケーションを登録していると、第２のピア２０にそのアプリケーションに対するディスクリプションファイルを送信し、第２のピア２０は、これを受信する(Ｓ８６０)。
【００４７】
このときから第２のピア２０と第１のピア１０との間でアプリケーションサービスを実行するために接続を行う(Ｓ８７０)。本実施の形態においては、応答としてディスクリプションファイルを送信したピアが１つである場合を例に挙げているが、もし、ディスクリプションファイルを送信したピアが複数である場合には、第２のピア２０は、前記ディスクリプションファイルに基づいて前記アプリケーションを登録しているピアの中から第２のピア２０のユーザが選択したピアと所定のプロトコルで接続する。
【００４８】
前記接続過程を経た後、第２のピア２０と第１のピア１０との間にサービスに対するネゴシエーションを開始し(Ｓ８８０)、このネゴシエーション過程が終了すると、第１のピア１０が第２のピア２０にリモートディスプレイサービスを提供するセッションを開始し、アプリケーションを実行する(Ｓ８９０)。
【００４９】
前記セッションを実行する過程(Ｓ８９０)は、従来のリモートディスプレイシステムを利用して行われる。先ず、ユーザの入力、即ち、コントロールがクライアントである第２のピア２０からサーバである第１のピア１０に転送されると(Ｓ８９１)、ディスプレイ情報を始めとするアプリケーションの出力値は、第１のピア１０から第２のピア２０に転送される(Ｓ８９２)。ステップＳ８９１及びＳ８９２のような過程は、クライアントである第２のピア２０の要求によって数回繰り返されることもある。その後、第２のピア２０では、アプリケーションの使用が終了すると、アプリケーションの実行結果として発生したファイル及びその他のログ情報をローカルに格納し(Ｓ８９３)、第１のピア１０に終了命令を転送する(Ｓ８９４)。次に、前記終了命令を受信した第１のピア１０は、セッションを終え、正常な実行過程を終了する(Ｓ８９５)。
【００５０】
図９は、図８でのセッションの実行後、サーバによりセッションが終了する過程を示すフローチャートである。もし、図８に示すように、接続されたピア間のネゴシエーションが終了した後(Ｓ８８０)、クライアント側でサービスの使用を終え、終了する過程でなく、サーバ側のサービス中断によって全ての過程が終了すると、一般的な場合とは少し異なる過程(Ｓ９９０)を行う。
【００５１】
即ち、ユーザの入力転送(Ｓ９９１)及びディスプレイ(Ｓ９９２)過程が繰り返される間に、サーバである第１のピア１０のユーザによりサービスが中断される場合には、第１のピア１０がサービスしているクライアント側ピア、即ち、第２のピア２０にサービスの中断を知らせる終了命令を転送する(Ｓ９９３)。すると、メッセージを受信した第２のピア２０は、データファイルとログ情報をローカルに格納し(Ｓ９９４)、アプリケーションの使用を安全に中断した後、第２のピア２０に正しく終了したというＯＫメッセージを転送する(Ｓ９９５)。第１のピア１０は、前記ＯＫメッセージの確認により、第２のピア２０での動作が安全に終了したことを確認し、セッションを終了する(Ｓ９９６)。
【００５２】
以上のように、上記実施の形態を参照して詳細に説明され図示されたが、本発明は、これに限定されるものでなく、このような本発明の基本的な技術的思想を逸脱しない範囲内で、当業界の通常の知識を有する者にとっては、他の多くの変更が可能であろう。また、本発明は、添付の特許請求の範囲により解釈されるべきであることは言うまでもない。
【図面の簡単な説明】
【００５３】
【図１】（ａ）は、従来のＰ２Ｐファイル共有システムのうち、Ｐｕｒｅ型を示す構成図であり、（ｂ）は、従来のＰ２Ｐファイル共有システムのうち、Ｈｙｂｒｉｄ型を示す構成図である。
【図２】従来の「Grid computing」、「SETI@home」のシステム構成図である。
【図３】従来のＪＸＴＡソフトウェアのアーキテクチャーを示すブロック図である。
【図４】従来の「ＶＮＣ」の動作構成を示す図である。
【図５】従来の「Ｇｎｕｔｅｌｌａ」プロトコルの動作過程を示すフローチャートである。
【図６】本発明に係るＰ２Ｐ共有システムのサーバ構成図である。
【図７】本発明に係るＰ２Ｐ共有システムのクライアント構成図である。
【図８】本発明による方法の全体動作を示すフローチャートである。
【図９】図８でのセッション実行過程中、サーバにより終了する場合を示すフローチャートである。
【符号の説明】
【００５４】
６１０  アプリケーション
６２０  ミドルウェア
６３０  アプリケーション共有システムモジュール
６３１  ＧＵＩモジュール
６３２  登録モジュール
６３３  リソース点検モジュール
６３４  ディスクリプションモジュール
６３５  セッションモジュール
６３６  ネゴシエーションモジュール
６３７  接続モジュール
６４０  Ｐ２Ｐプロトコルスタック
６５０  リモートディスプレイシステム
６６０  オペレーティングシステム
７１１  ＧＵＩモジュール
７１２  検索モジュール
７１３  セッションモジュール
７１４  ネゴシエーションモジュール
７１５  接続モジュール
７３０  Ｐ２Ｐプロトコルスタック
７４０  リモートディスプレイシステム
７５０  オペレーティングシステム
【図１】
2005158068.tif 000003
【図２】
2005158068.tif 000004
【図３】
2005158068.tif 000005
【図４】
2005158068.tif 000006
【図５】
2005158068.tif 000007
【図６】
2005158068.tif 000008
【図７】
2005158068.tif 000009
【図８】
2005158068.tif 000010
【図９】
2005158068.tif 000011