(57)【特許請求の範囲】
【請求項１】
インスタントメッセージ（ＩＭ）クライアントのためのプラグインをダウンロードするためにＩＭクライアントを実行するコンピュータによって実行される方法であって、
インターフェースを介してユーザからプラグイン要求を受信し、
現在オンライン状態にある直接アクセス可能なピアクライアントを検出し、
前記直接アクセス可能なピアクライアントに対してプラグインダウンロード要求を送信し、
前記直接アクセス可能なピアクライアントから前記プラグインを受信した場合に、前記プラグインを前記ＩＭクライアントにインストールすること
を備え、
前記プラグインダウンロード要求は、プラグイン名とプラグインのバージョン情報とを含み、
前記方法はさらに、前記ユーザからの前記プラグイン要求を受信した後に、
前記プラグイン名およびバージョン情報をＩＭサーバに送信し、
前記プラグイン名および前記バージョン情報に少なくとも一部基づいて生成されるプラグインシグネチャメッセージを前記ＩＭサーバから受信し、
前記直接アクセス可能なピアクライアント上のローカルに記憶されているプラグインシグネチャメッセージとの比較用に、前記プラグイン名、前記バージョン情報、および前記プラグインシグネチャメッセージを前記直接アクセス可能なピアクライアントに対して送信する、こと
を備える、方法。
【請求項２】
前記直接アクセス可能なピアクライアントから前記プラグインが正常に受信されなかった場合に、前記プラグインダウンロード要求をダウンロードサーバに送信することを備える、請求項１に記載の方法。
【請求項３】
現在オンライン状態にある前記直接アクセス可能なピアクライアントの検出は、
前記ＩＭクライアントのコンタクトリストに基づいて、現在オンライン状態にあるピアクライアントが１つまたは複数存在するか否かを検出し、
１つまたは複数の現在オンライン状態にあるピアクライアントが存在する場合に、前記１つまたは複数のオンライン状態にあるピアクライアントのアドレス情報から、サーバを経由することなく前記ＩＭクライアントとメッセージを直接交換することができる直接アクセス可能なピアクライアントが存在するか否かを判断すること
を備える、請求項１に記載の方法。
【請求項４】
前記直接アクセス可能なピアクライアントに対するプラグインダウンロード要求の送信は、
前記直接アクセス可能なピアクライアントに対する接続セットアップ要求を開始し、
前記接続が正常にセットアップされた場合に、前記直接アクセス可能なピアクライアントに前記プラグインダウンロード要求を送信し、
前記接続が正常にセットアップされなかった場合に、別の直接アクセス可能なピアクライアントに前記プラグインダウンロード要求を送信すること
を備える、請求項１に記載の方法。
【請求項５】
前記ユーザから前記プラグイン要求を受信した後に、
ローカルに記憶されているプラグイン識別情報が前記プラグイン名および前記バージョン情報を含むか否かを判断し、
前記ローカルに記憶されているプラグイン識別情報が前記プラグイン名およびバージョン情報を含まない場合に、前記直接アクセス可能なピアクライアントに対して前記プラグインダウンロード要求を送信すること
をさらに備える、請求項１に記載の方法。
【請求項６】
前記プラグインを受信した後、前記プラグインに対応するプラグイン名およびバージョン情報を記憶することをさらに備える、請求項１に記載の方法。
【請求項７】
前記ユーザからの前記プラグイン要求は、
前記プラグインのインストールのためのユニフォームリソースロケータ（ＵＲＬ）リンクまたはダイアログを、ユーザが選択すること、
プラグインインストール命令を含む、出現するプロモーション領域を、ユーザが選択すること、
プラグインインストール命令を含む、プラグインプロモーションエントリを、ユーザが選択すること、および
現行システムでデフォルト設定になっている前記プラグインのインストールのためのユーザ同意事項をユーザが承諾すること
のうちの１つまたは複数によって行われる、請求項１に記載の方法。
【請求項８】
前記直接アクセス可能なピアクライアントは、複数の直接アクセス可能なピアクライアントの１つである、請求項１に記載の方法。
【請求項９】
インスタントメッセージ（ＩＭ）クライアントのためのプラグインをダウンロードするためのシステムであって、
前記ＩＭクライアントのユーザからプラグイン要求を受信するように構成されている１つまたは複数のインターフェースと、
現在オンライン状態にある直接アクセス可能なピアクライアントを検出し、
前記直接アクセス可能なピアクライアントに対して、プラグイン名とプラグインのバージョン情報とを含むプラグインダウンロード要求を送信し、
前記直接アクセス可能なピアクライアントから前記プラグインが受信された場合に、前記プラグインを前記ＩＭクライアントにインストールするように構成されている１つまたは複数のプロセッサであって、
さらに、前記ユーザから前記プラグイン要求を受信した後に、
前記プラグイン名およびバージョン情報をＩＭサーバに送信し、
前記プラグイン名および前記バージョン情報に少なくとも一部基づいて生成されるプラグインシグネチャメッセージを前記ＩＭサーバから受信し、
前記直接アクセス可能なピアクライアント上のローカルに記憶されているプラグインシグネチャメッセージとの比較用に、前記プラグイン名、前記バージョン情報、および前記プラグインシグネチャメッセージを前記直接アクセス可能なピアクライアントに対して送信する、
ように構成されている１つまたは複数のプロセッサと、
前記１つまたは複数のプロセッサに結合され、前記プロセッサに命令を与えるように構成された１つまたは複数のメモリを備える、システム。
【請求項１０】
前記直接アクセス可能なピアクライアントから前記プラグインが正常に受信されない場合に、前る１つまたは複数のプロセッサはさらに、前記プラグインダウンロード要求をダウンロードサーバに対して送信するように構成されている、請求項９に記載のシステム。
【請求項１１】
現在オンライン状態にある前記直接アクセス可能なピアクライアントの検出は、
前記ＩＭクライアントのコンタクトリストに基づいて、現在オンライン状態にあるピアクライアントが１つまたは複数存在するか否か検出すること、および
現在オンライン状態にあるピアクライアントが１つまたは複数存在する場合に、前記１つまたは複数のオンライン状態にあるピアクライアントのアドレス情報から、サーバを介することなく前記ＩＭクライアントとメッセージを直接交換することができる直接アクセス可能なピアクライアントが存在するか否か判断すること
を備える、請求項９に記載のシステム。
【請求項１２】
前記直接アクセス可能なピアクライアントに対するプラグインダウンロード要求の送信は、
前記直接アクセス可能なピアクライアントに対する接続セットアップ要求を開始し、
前記接続が正常にセットアップされた場合に、前記直接アクセス可能なピアクライアントに前記プラグインダウンロード要求を送信し、
前記接続が正常にセットアップされなかった場合に、別の直接アクセス可能なピアクライアントに前記プラグインダウンロード要求を送信すること
を備える、請求項９に記載のシステム。
【請求項１３】
前記ユーザから前記プラグイン要求を受信した後に、前記１つまたは複数のプロセッサはさらに、
ローカルに記憶されているプラグイン識別情報が前記プラグイン名および前記バージョン情報を含むか否か判断し、
前記ローカルに記憶されているプラグイン識別情報が前記プラグイン名またはバージョン情報を含まない場合に、前記直接アクセス可能なピアクライアントに対して前記プラグインダウンロード要求を送信する
ように構成されている、請求項９に記載のシステム。
【請求項１４】
前記１つまたは複数のプロセッサはさらに、前記プラグインに対応するプラグイン名およびバージョン情報を記憶するように構成されている、請求項９に記載のシステム。
【請求項１５】
前記ユーザからの前記プラグイン要求は、
前記プラグインのインストールのためのユニフォームリソースロケータ（ＵＲＬ）リンクまたはダイアログを、ユーザが選択すること、
プラグインインストール命令を含む、出現するプロモーション領域を、ユーザが選択すること、
プラグインインストール命令を含む、プラグインプロモーションエントリを、ユーザが選択すること、および
現行システムでデフォルト設定になっている前記プラグインのインストールのためのユーザ同意事項をユーザが承諾すること
の１つまたは複数によって行われる、請求項９に記載のシステム。
【請求項１６】
前記直接アクセス可能なピアクライアントは、複数の直接アクセス可能なピアクライアントの１つである、請求項１１に記載のシステム。
【請求項１７】
インスタントメッセージ（ＩＭ）クライアントのためのプラグインをダウンロードするためのコンピュータプログラムであって、
前記ＩＭクライアントのユーザからプラグイン要求を受信し、
現在オンライン状態にある直接アクセス可能なピアクライアントを検出し、
前記直接アクセス可能なピアクライアントに対してプラグインダウンロード要求を送信し、
前記直接アクセス可能なピアクライアントから前記プラグインが受信された場合に、前記プラグインを前記ＩＭクライアントにインストールする機能をコンピュータによって実現させ、
前記プラグインダウンロード要求は、プラグイン名とプラグインのバージョン情報とを含み、
前記コンピュータプログラムはさらに、前記ユーザから前記プラグイン要求を受信した後に、
前記プラグイン名およびバージョン情報をＩＭサーバに送信し、
前記プラグイン名および前記バージョン情報に少なくとも一部基づいて生成されるプラグインシグネチャメッセージを前記ＩＭサーバから受信し、
前記直接アクセス可能なピアクライアント上のローカルに記憶されているプラグインシグネチャメッセージとの比較用に、前記プラグイン名、前記バージョン情報、および前記プラグインシグネチャメッセージを前記直接アクセス可能なピアクライアントに対して送信する、機能をコンピュータによって実現させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本出願は、全ての目的において参照により本明細書に組み込まれる、２００９年７月１７日出願の発明の名称を「ＭＥＴＨＯＤ  ＡＮＤ  ＳＹＳＴＥＭ  ＦＯＲ  ＤＯＷＮＬＯＡＤＩＮＧ  ＰＬＵＧ−ＩＮ  ＡＮＤ  ＳＹＳＴＥＭ  ＴＨＥＲＥＯＦ」とする中華人民共和国特許出願第２００９１０１５１４２３．２号に対する優先権を主張する。
【０００２】
本発明は、ネットワークを介するやりとり（相互作用、インタラクション）の分野に関し、特にプラグインの管理に関する。
【背景技術】
【０００３】
プラグイン（アドオン、アドイン、スナップイン、または拡張機能とも呼ばれる）は、典型的には、要求に応じて特定の機能を提供するためにウェブブラウザや他のアプリケーションなどコアアプリケーションまたはサービスプラットフォームとやりとり（相互作用）するコンピュータプログラムである。プラグインは、典型的には、サービスプラットフォームへの規定のアクセス要求およびサービスプラットフォーム上の実行ファイルに適合する。プラグインの例として、ダイナミックリンクライブラリ（ＤＬＬ）が挙げられる。
【０００４】
インスタントメッセージ（ＩＭ）は、インターネットを介してメッセージの即時の送受信を可能にするサービスを表す。ＩＭソフトウェアは、コンタクトがオンライン状態であるかどうかの情報、およびオンライン状態の相手方とのインスタントメッセージの交換を提供することができる。本明細書で使用するとき、ＩＭソフトウェアがインストールされているクライアントをＩＭクライアントと呼ぶ。実際には、ＩＭクライアントは、時としてその機能を拡張するためにプラグインをダウンロードする必要がある。
【０００５】
現在、ＩＭクライアントは、ポイントツーポイント手法を使用してプラグインをダウンロードする。典型的には、どのクライアントがどのようなプラグインリソースを所有しているかに関する情報や、それぞれのクライアントのアドレス情報（例えば、各クライアントの媒体アクセス制御（ＭＡＣ）アドレスやインターネットプロトコル（ＩＰ）アドレスなど）などを記録するためのシードサーバが存在する。プラグインリソースをダウンロードしようとするクライアントは、「シード」すなわちプラグインリソースのリストを検索し、シードサーバによってシードに記録されているプラグイン情報に従ってプラグインダウンロードサーバに接続し、求めているプラグインをそこからダウンロードすることを試みることができる。
【０００６】
前述したプロセスから分かるように、プラグインをダウンロードする既存の手法は、シードサーバからの対応するシードの提供を必要とし、これはネットワークリソースのかなりの量を占める。さらに、クライアントは、プラグインのダウンロードおよびインストールの完了後にシードサーバに最新のプラグイン情報を更新しなければならず、これはさらにシードサーバの維持費を増加させ、操作を複雑にすることがある。
【０００７】
本発明の様々な実施形態を、以下の詳細な説明および添付図面で開示する。
【図面の簡単な説明】
【０００８】
【図１】ＩＭクライアントへのプラグインのダウンロードをサポートするためのシステムの一実施形態のブロック図である。
【図２】プラグインダウンロードのためのプロセスの一実施形態を示すフローチャートである。
【図３】プラグインをダウンロードするためのプロセスの別の実施形態を示すフローチャートである。
【図４】ＩＭクライアントの一実施形態を示すブロック図である。
【図５】ＩＭクライアントの別の実施形態を示すブロック図である。
【発明を実施するための形態】
【０００９】
本発明は、プロセス、装置、システム、本体の構成、コンピュータ可読記憶媒体で具現化されるコンピュータプログラム製品、ならびに／または処理装置、例えばそこに結合されたメモリに記憶された命令および／もしくはメモリによって提供される命令を実行するように構成された処理装置としての形態を含めた様々な形態で実装することができる。本明細書では、これらの実装形態、または本発明が取ることができる任意の他の形態を技法として表すことがある。一般に、開示するプロセスのステップの順序は、本発明の範囲内で変えることができる。特に断りのない限り、タスクを実施するように構成された構成要素として記載する処理装置またはメモリなどの構成要素は、所与の時間に一時的にタスクを実施するように構成された汎用構成要素、またはタスクを実施するように製造された専用構成要素として実装することができる。本明細書で使用するとき、用語「処理装置」は、コンピュータプログラム命令などのデータを処理するように構成された１つまたは複数のデバイス、回路、および／または処理コアを表す。
【００１０】
本発明の１つまたは複数の実施形態を、本発明の原理を示す添付図面と共に以下で詳細に説明する。そのような実施形態に関連付けて本発明を説明するが、本発明はいかなる実施形態にも限定されない。本発明の範囲は、特許請求の範囲のみによって限定され、本発明は、多くの変形形態、修正形態、および均等形態を包含する。本発明を完全に理解できるように、以下の説明ではいくつかの具体的な詳細を記載する。これらの詳細は例示の目的で提示するものであり、本発明は、特許請求の範囲に従って、これらの具体的な詳細のいくつかまたはすべてを備えずに実施することもできる。分かりやすくするために、不必要に本発明が曖昧にならないように、本発明に関係する技術分野で知られている技術的な内容は詳細には説明していない。
【００１１】
本出願は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはポータブルデバイス、マルチプロセッサデバイス、上記のデバイスの任意のものを含む分散コンピューティング環境など、いくつもの汎用または専用の計算デバイス環境または構成に適用することができる。
【００１２】
本出願は、コンピュータによって実行するためのコンピュータ実行可能命令、例えばプログラムモジュールの一般的な背景で説明することができる。一般に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽象型のデータを具現化するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。あるいは、本出願は、分散コンピューティング環境で実装することができ、分散コンピューティング環境では、タスクは、通信ネットワークを介して接続された遠隔処理デバイスによって実行され、プログラムモジュールは、記憶デバイスを含むローカルまたは遠隔コンピュータ記憶媒体に位置されることがある。
【００１３】
プラグインダウンロード技法を説明する。いくつかの実施形態では、インスタントメッセージ（ＩＭ）クライアントが、ユーザから送信されたプラグインダウンロード要求を受信し、要求中のプラグイン名およびバージョン情報に基づいて、直接アクセス可能なピアクライアントにプラグインを要求し、そのピアクライアントにプラグインが記憶されている場合には、そのピアクライアントから送信されたプラグインを受信する。
【００１４】
図１は、ＩＭクライアントへのプラグインのダウンロードをサポートするためのシステムの一実施形態のブロック図である。図示される例では、システム１００は、ダウンロードサーバ１０２、ＩＭサーバ１０４、ＩＭクライアント１０６、および１つまたは複数のピアクライアント１０８を含む。クライアントは、１つまたは複数の計算デバイスを使用して実装することができ、そのような計算デバイスは、例えば、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドもしくはポータブルデバイス、フラットパネルデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、大型コンピュータ、専用デバイス、上記のシステムもしくはデバイスの任意のものを含む分散コンピューティング環境、または、１つもしくは複数の処理装置とそれらの処理装置に結合されて処理装置に命令を提供するように構成されたメモリとを含む他のハードウェア／ソフトウェア／ファームウェア組合せである。
【００１５】
ピアクライアントは、ＩＭアプリケーションも実行するクライアントデバイスであり、ＩＭクライアントがそれらのピアクライアントと交信している。例えば、ＩＭクライアント１０６のユーザがコンタクトのリストを有し、コンタクトがクライアント１０８のユーザである場合、ＩＭクライアント１０６とクライアント１０８は互いにピアクライアントである。システム１００で、ＩＭサーバは、ＩＭクライアントに、そのＩＭクライアントのピアクライアントのアドレス情報を提供し、このアドレス情報は、ＩＰアドレス情報およびＭＡＣアドレス情報を含む。ピアクライアントのいくつかが、要求されているプラグインをＩＭクライアントにオンラインで提供できる場合、プラグインは、適切なピアクライアントからＩＭクライアントに送信される。ＩＭクライアントにプラグインを提供することができるピアクライアントがない場合、ＩＭクライアントは、ダウンロードサーバにプラグインを直接要求する。
【００１６】
図２は、プラグインダウンロードのためのプロセスの一実施形態を示すフローチャートである。プロセスは、システム１００などのシステムで行うことができる。
【００１７】
ステップ２０２では、ユーザから送信されたプラグインダウンロード要求が受信される。ユーザは、例えばプラグインのインストールのためのユニフォームリソースロケータ（ＵＲＬ）リンクまたはダイアログウィンドウをクリックすることによって、ＩＭクライアントにプラグインダウンロード要求を送信する。また、ユーザは、プラグインインストール命令を含むＩＭオペレータによって提供されるプラグインプロモーションエントリ、例えばＵＲＬ、主ユーザインターフェースでのエントリ押しボタン、チャットウィンドウなど、または任意の他の適切なユーザインターフェースウィジェットをクリックすることもできる。さらに、ユーザは、ＩＭオペレータによって提供されるポップアッププロモーション領域、典型的にはシステムタスクバーから出現するウェブページ領域をクリックすることもでき、または現行システムでデフォルト設定になっているプラグインのインストールのためのユーザ同意事項を承諾することもでき、それによりシステムがデフォルトでプラグインのインストールをトリガする。
【００１８】
いくつかの実施形態では、プラグインダウンロード要求は、プラグインを一意に識別するためのプラグイン名およびバージョン情報を含む。いくつかの実施形態では、ユーザからトリガされたプラグインダウンロード要求は、ＩＭクライアントの機能モジュールであるＩＭクライアントのプラグインマネージャによって傍受される。
【００１９】
ステップ２０４では、ＩＭクライアントは、現在オンライン状態のピアクライアントが存在するか否かを判断する。いくつかの実施形態では、ピアクライアントは、ＩＭクライアントに記憶されている相手方（コンタクト）のリストを使用してルックアップされる。ユーザがＩＭクライアントにログオンしているとき、ＩＭクライアントは、ＩＭサーバに相手方のリストを送信し、ＩＭサーバは、現在オンライン状態のピアクライアントを発見し、ピアクライアントにおいて相手方は、ＩＭクライアントがログオンするときにピアクライアントのステータスをＩＭクライアントにプッシュし、また、ピアクライアントのステータスが変更されたときにピアクライアントの更新ステータスをＩＭクライアントにプッシュする。
【００２０】
現在オンライン状態のピアクライアントがある場合、ステップ２０６では、直接アクセス可能な現在オンライン状態のピアクライアントがあるかどうか判断される。本明細書で使用するとき、「直接アクセス可能」とは、ＩＭクライアントとピアクライアントがＩＭサーバなしで直接メッセージを交換することができることを意味する。具体的には、ピアクライアントも、インスタントメッセージのためにＩＭサーバと接続されたＩＭクライアントである。ＩＭクライアントに記録されたコンタクトのアドレス情報のリスト内のＩＰアドレス情報に従って、ＩＭクライアントによって直接アクセス可能なピアクライアントがあるかどうか検出することができる。いくつかの実施形態では、識別のためのタイムリミットが設定される。タイムリミットは、必要であれば、実用上はＩＭクライアントに関して、またはネットワークの実際の動作条件に応じて設定することができ、例えば１０秒である。コンタクトのアドレス情報の例示的なリストは、以下のように示される。
【００２１】
【表１】
0005342696.tif 000002
【００２２】
いくつかの実施形態では、ピアクライアントのＩＰアドレス情報に基づいて、直接アクセス可能なピアクライアントが存在するか否かが判断される。いくつかのＩＰアドレスは、パブリックネットワークに属するアドレスセグメントと、ローカルエリアネットワークなどプライベートネットワークに属するアドレスセグメントとを含む。ピアクライアントのＩＰアドレスがパブリックネットワークのアドレス、例えばよく知られているウェブページのホスティング会社のアドレスに属するとき、ＩＭサーバなしでＩＭクライアントとの直接ＩＰメッセージングが可能になる。対照的に、ピアクライアントのＩＰアドレスがローカルエリアネットワーク／イントラネットに属する場合、ピアクライアントは、プライベートネットワークによって採用されている特殊な設定パラメータにより、直接アクセスできない可能性が高い。
【００２３】
現在オンライン状態であって直接アクセス可能なピアクライントが１つまたは複数検出された場合、ステップ２０８において、ＩＭクライアントは、プラグイン名およびバージョン情報を含む、プラグインを求める要求を、ピアクライアントに送信する。いくつかの実施形態では、ＩＭクライアントは、まず、ピアクライアントに接続要求（例えばＴＣＰ接続要求）を送信し、接続が正常に確立された場合にのみプラグイン要求を送信する。いくつかの実施形態では１０秒のタイムアウト期間が設定される。１０秒後に接続が確立されていない場合、このピアクライアントにプラグインを要求したＩＭクライアントの試行は失敗したとみなされる。
【００２４】
ステップ２１０では、ピアクライアントからプラグインが正常に受信されたか否かが判断される。いくつかの実施形態では、予め設定されたタイムアウト期間の終了後、要求送信先のピアクライアントから何も受信されていない場合、要求は失敗したとみなされる。いくつかの実施形態では、ピアクライアントでプラグインが入手可能でない場合、プラグインがないことを示すメッセージがＩＭクライアントに送信される。
【００２５】
複数のピアクライアントが直接アクセス可能であるとき、それらのうちの１つがプラグインの送信に失敗した場合には、ＩＭクライアントは、プラグインが正常に受信されるまで、または、プラグインを提供することができるピアクライアントが存在しないと判断されるまで、次のピアクライアントで再試行することができる。いくつかの実施形態では、ピアクライアントが選択される順序は無作為である。いくつかの実施形態では、ＩＭクライアントと同じネットワーク上にあるピアクライアント、または同じオペレータによって操作されているピアクライアントが最初に選択される。この選択は、ピアクライアントのアドレスに基づくことができる。プラグイン要求は、利用可能な帯域幅などネットワーク条件に応じて、順次に、または並行して行うことができる。
【００２６】
ピアクライアントからプラグインが受信されない場合、オンライン状態のピアクライアントが存在しない場合、または直接アクセス可能なピアクライアントが存在しない場合、ステップ２１２において、ＩＭクライアントは、ダウンロードサーバにプラグインダウンロード要求を行う。
【００２７】
ステップ２１４では、プラグインがＩＭクライアントにインストールされ、プラグイン名およびバージョン情報が記憶される。
【００２８】
ピアクライアント情報はＩＭクライアントに記憶されるので、上記のプロセスは、追加のシードサーバを必要としない。したがって、サーバリソースおよびネットワークリソースが節約される。
【００２９】
図３は、プラグインをダウンロードするためのプロセスの別の実施形態を示すフローチャートである。プロセスは、システム１００などのシステムで行うことができる。
【００３０】
ステップ４０１において、ユーザは、ＩＭクライアント上で実行されるＩＭソフトウェアにログオンする。
【００３１】
ユーザがＩＭソフトウェアにログオンした後、ステップ４０２では、ＩＭサーバが、オンライン状態のピアクライアントのアドレス情報をＩＭクライアントに送信する。
【００３２】
ステップ４０３では、ＩＭクライアントが、コンタクトのアドレス情報のリスト内のアドレス情報を記録する。
【００３３】
ステップ４０４では、ＩＭクライアントのプラグインマネージャが、プラグインのインストールのためのユニフォームリソースロケータ（ＵＲＬ）リンクまたはダイアログをユーザがクリックすることでＩＭクライアントに送信されたプラグイン名およびバージョン情報を含む要求を受信する。
【００３４】
ユーザは、プラグインのインストールのためのユニフォームリソースロケータ（ＵＲＬ）リンクまたはダイアログをクリックして、ＩＭサーバに要求を送信する。この要求は、まずＩＭクライアントによって取得され、ＩＭクライアントは次いで後続の操作を行う。この要求は、プラグインを一意に識別するためのプラグイン名およびバージョン情報を含む。
【００３５】
ステップ４０５では、プラグインマネージャが、プラグイン識別子のローカル記憶情報がプラグイン名およびバージョン情報を含むかどうか検出し、含まない場合には、プロセスフローはステップ４０６に移行する。
【００３６】
この実施形態では、プラグインマネージャが、プラグイン識別子のローカル記憶情報がプラグイン名およびバージョン情報を含むか否かを検出する。真である場合には、プラグインマネージャは、プラグイン名およびバージョン情報をローカルで直接検索する。
【００３７】
ステップ４０６において、プラグインマネージャは、プラグイン名およびバージョン情報をＩＭサーバに送信する。
【００３８】
ステップ４０７において、プラグインマネージャは、プラグイン名およびバージョン情報に従ってＩＭサーバから返されたプラグインシグネチャメッセージを受信する。プラグインマネージャがプラグイン名およびバージョン情報をＩＭサーバに送信した後、ＩＭサーバはプラグインシグネチャメッセージを検索する。このメッセージは、プラグインが修正されたかどうか判断するために使用されるプラグインのインストールパケットメッセージを一意に識別するためのメッセージダイジェストアルゴリズム５（ＭＤ５）のハッシュ値である。ＩＭサーバは、シグネチャメッセージをＩＭクライアントに送信する。
【００３９】
ステップ４０８において、プラグインマネージャは、現在オンライン状態のピアクライアントがあるかどうか検出し、ある場合には、プロセスフローはステップ４０９に移行する。
【００４０】
ステップ４０９において、プラグインマネージャは、（１つまたは複数の）オンライン状態のピアクライアントの記憶されたＩＰアドレス情報から、それらオンライン状態のピアクライアントの中にＩＰメッセージングが可能なピアクライアントが存在するか否か判断し、存在する場合には、プロセスフローはステップ４１０に移行する。
【００４１】
ステップ４１０において、プラグインマネージャは、事前設定期間内に、プラグイン名、プラグインのバージョン情報、およびプラグインシグネチャメッセージを含むプラグインダウンロード要求をピアクライアントに送信する。
【００４２】
この例において、前述の２つの実施形態との相違点は、プラグインマネージャが、プラグイン名およびバージョン情報に加えてプラグインシグネチャメッセージも含むプラグインダウンロード要求をピアクライアントに送信する点にある。
【００４３】
ステップ４１１において、ピアクライアントは、受信されたプラグインシグネチャメッセージとローカルに記憶されているプラグインシグネチャメッセージが一致するか否かを検出し、それらが一致する場合には、プラグインをＩＭクライアントに送信する。
【００４４】
ピアクライアントは、受信されたプラグインシグネチャメッセージとローカルに記憶されているプラグインシグネチャメッセージが一致するか否かを検出し、それらが一致しない場合には、エラーまたはプラグインがないことを示すメッセージをＩＭクライアントに返す。このとき、ＩＭクライアントは、対応するプラグインをダウンロードサーバから直接ダウンロードしても良い。一方、ピアクライアントは、プラグインシグネチャメッセージが一致する場合には、プラグインをＩＭクライアントに送信する。
【００４５】
ステップ４１２において、ＩＭクライアントは、プラグインをローカルでインストールし、プラグインに対応するプラグイン名、プラグインのバージョン情報、およびシグネチャメッセージを記憶する。
【００４６】
ＩＭクライアントによって要求されているプラグインがどのピアクライアントにも存在しない場合、ピアクライアントはさらにそれぞれのピアクライアントにプラグイン要求を送信することができ、最終的にピアクライアントの１つが、プラグインを記憶しているピアクライアントを捜し出すか、あるいは、フレンドクライアントがさらにそのフレンドにプラグイン要求を送信することができ、最終的にプラグインが捜し出される。あるいは、ある期間中に検索されなかった場合には、プラグインをダウンロードサーバからダウンロードすることができる。その期間の長さは、実際のネットワーク条件に応じて設定することができる。
【００４７】
説明の便宜上、本発明の方法の前述のそれぞれの実施形態を一連の動作の組合せとして説明してきたが、本出願の範囲から逸脱することなく、ステップのいくつかを別の順序で、または同時に行うことができるので、本出願は、説明したどの動作順序にも限定されないことを当業者には理解されたい。また、第２に、本明細書で説明したすべての実施形態は好ましい実施形態であり、言及した動作およびモジュールは必ずしも本出願に不可欠なものではないことを当業者には理解されたい。
【００４８】
図４は、ＩＭクライアントの一実施形態を示すブロック図である。この例では、ＩＭクライアント５０１は、受信モジュール５０１１と、プラグイン要求モジュール５０１２と、ダウンロードモジュール５０１３とを含む。
【００４９】
受信モジュール５０１１は、ユーザから送信されたプラグインダウンロード要求を受信するように適合される。プラグイン要求モジュール５０１２は、ピアクライアント５０２など直接アクセス可能なピアクライアントを検出すると、プラグインダウンロード要求に応答して、そのピアクライアントにプラグインを要求するように適合される。事前設定期間が設定される。事前設定期間が過ぎたときに、プラグインがピアクライアントからダウンロードされていない場合、ダウンロードサーバからプラグインを直接ダウンロードするためにダウンロードモジュール５０１３が使用される。
【００５０】
ユーザは、実際には、例えばプラグインのインストールのためのユニフォームリソースロケータ（ＵＲＬ）リンクまたはダイアログウィンドウをクリックするなど、様々な方法でプラグインダウンロード要求をＩＭクライアントに送信することができる。また、ユーザは、ＩＭオペレータから提供されるプラグインプロモーションエントリをクリックすることもでき、これは、プラグインインストール命令、例えばＵＲＬ、プライマリユーザインターフェースにあるエントリプッシュボタン、チャットウィンドウなど、または別の同様のエントリを含む。さらに、ユーザは、ＩＭオペレータのプロモーション領域をクリックすることもでき、これは典型的には、システムタスクバーの右下隅に出現するページ領域である。さらに、ユーザは、現行システムでデフォルト設定になっているプラグインのインストールのためのユーザ同意事項を承諾することもでき、それによりシステムは、デフォルトでプラグインのインストールをトリガする。
【００５１】
プラグインダウンロード要求は、プラグインを一意に識別することができるプラグイン名およびバージョン情報を含むことがある。１つの実用例では、ユーザからトリガされるプラグインダウンロード要求は、ＩＭクライアントの機能モジュールであるＩＭクライアントのプラグインマネージャによって取得されることがある。
【００５２】
ピアクライアント５０２は、プラグインをＩＭクライアントに送信するように適合される。ＩＭクライアントから送信されたプラグインダウンロード要求を受信すると、ピアクライアントはまず、プラグインが存在するか否かをローカルで検出することができ、存在する場合には、プラグインをＩＭクライアントに送信することができる。プラグインが存在しない場合、ピアクライアントは、プラグインが存在しないことを示すメッセージをＩＭクライアントに返し、それにより、プラグイン要求モジュール５０１２はさらに、要求されているプラグインが入手可能になるまで、別の直接アクセス可能なピアクライアントにプラグインを要求することができる。
【００５３】
この実施形態では、ＩＭクライアントは、プラグインダウンロード要求を受信すると、直接アクセス可能なピアクライアントが存在するか否か検出し、ピアクライアントを検出すると、要求されているプラグインをそのようなピアクライアントに直接要求し、そのピアクライアントから送信されるプラグインを受信する。追加のシードサーバは必要とされず、追加のシードサーバが使用される場合よりも単純にダウンロードプロセスが実施される。
【００５４】
図５は、ＩＭクライアントの別の実施形態を示すブロック図である。この例では、ＩＭクライアント６００は、受信モジュール５０１１と、検出サブモジュール６０１と、決定サブモジュール６０２と、プラグイン要求サブモジュール６０３と、インストール／記憶モジュール６０４とを含む。
【００５５】
受信モジュール５０１１は、ユーザから送信されたプラグイン名とプラグインのバージョン情報とを含むプラグインダウンロード要求を受信するように適合される。
【００５６】
検出サブモジュール６０１は、現在オンライン状態の（１つまたは複数の）ピアクライアントがあるかどうか検出するように適合される。検出サブモジュールは、ＩＭクライアントでのコンタクトのアドレス情報のリスト内にあるオンライン状態のピアクライアントの数を探索することができ、それらのピアクライアントはすべて、本出願の実施形態では、ＩＭクライアントに追加されているすべてのコンタクトのクライアントである。特に、ＩＭサーバは、ＩＭクライアントがログオンするときにピアクライアントのステータスをＩＭクライアントにプッシュし、また、ピアクライアントのステータスが変更されたときにピアクライアントの更新ステータスをＩＭクライアントにプッシュする。
【００５７】
検出サブモジュール６０１が現在オンライン状態のピアクライアントを検出しなかった場合、ＩＭクライアントは、ダウンロードサーバにプラグインを直接要求する。
【００５８】
決定サブモジュール６０２は、検出サブモジュールが１つまたは複数のオンライン状態のピアクライアントがあることを示した場合に、それらのオンライン状態のピアクライアントの記憶されたＩＰアドレス情報から、オンライン状態のピアクライアントの中にＩＰメッセージングが可能なピアクライアントがあるかどうか判断するように適合される。
【００５９】
ＩＭサーバは、ＩＭクライアントがログオンしたときに、オンライン状態のピアクライアントのアドレス情報をＩＭクライアントにプッシュし、ＩＭクライアントがアドレス情報を記憶する。ＩＰアドレス情報に基づいて、オンラインピアクライアントがパブリックネットワークに属するか、それともローカルエリアネットワークに属するかが判断され、また、ピアクライアントとＩＭクライアントが直接ＩＰメッセージング可能か否か判断される。また、ＩＭクライアントおよびオンライン状態のピアクライアントのホスティングサイト／オペレータがそれぞれのＩＰアドレス情報に基づいて特定され、ダウンロードに際して、ピアクライアントのうち同じホスティングサイト上にあるものをさらに優先的に選択する。
【００６０】
決定サブモジュールが肯定の結果を与えた場合、プラグイン要求サブモジュール６０３は、プラグイン識別子情報を使用して、ピアクライアントにプラグインを要求するように適合される。
【００６１】
図示される例では、プラグイン要求サブモジュール６０３は、決定サブモジュールが肯定の結果を与えた場合に直接アクセス可能なピアクライアントの１つに対する接続セットアップ要求を開始するように適合された接続要求サブモジュールと、接続のセットアップの成功後、プラグインダウンロード要求をピアクライアントに送信するように適合された要求サブモジュールと、接続のセットアップの失敗後、他のピアクライアントに対する接続セットアップ要求を順次開始するように適合された順次要求サブモジュールとを含む。
【００６２】
インストール／記憶モジュール６０４は、プラグインをローカルでインストールし、プラグインに対応するプラグイン名およびバージョン情報を記憶するように適合される。
【００６３】
いくつかの実施形態では、受信モジュールはさらに、ＩＭサーバからプラグインシグネチャメッセージを受信するように構成される。あるいは、いくつかの実施形態では、この目的のために第２の受信モジュールが構成されて使用される。
【００６４】
いくつかの実施形態では、検出モジュールがさらに、プラグイン識別子のローカル記憶情報がプラグイン名およびバージョン情報を含むか否か検出するように構成される。
【００６５】
いくつかの実施形態では、追加の送信モジュールが、プラグイン名およびバージョン情報をＩＭサーバに送信するように適合される。
【００６６】
いくつかの実施形態では、受信モジュールはさらに、プラグイン名およびバージョン情報に従ってＩＭサーバから返されたプラグインシグネチャメッセージを受信するように適合される。あるいは、いくつかの実施形態では、この目的のために第２の受信モジュールが構成される。
【００６７】
前述の実施形態は、理解しやすくするため、いくつかの詳細について説明したが、本発明は、提示した詳細に限定されない。本発明を実施する多くの代替方法がある。開示される実施形態は例示であり、限定するものではない。
適用例１：インスタントメッセージ（ＩＭ）クライアントのためのプラグインをダウンロードするための方法であって、前記ＩＭクライアントのユーザからプラグイン要求を受信し、現在オンライン状態にある直接アクセス可能なピアクライアントを検出し、前記直接アクセス可能なピアクライアントに対してプラグインダウンロード要求を送信し、前記直接アクセス可能なピアクライアントから前記プラグインが受信された場合に、前記プラグインを前記ＩＭクライアントにインストールすることを備える、方法。
適用例２：前記直接アクセス可能なピアクライアントから前記プラグインが正常に受信されなかった場合に、前記プラグインダウンロード要求をダウンロードサーバに送信することを備える、適用例１に記載の方法。
適用例３：現在オンライン状態にある前記直接アクセス可能なピアクライアントの検出は、前記ＩＭクライアントのコンタクトリストに基づいて、現在オンライン状態にあるピアクライアントが１つまたは複数存在するか否かを検出し、１つまたは複数の現在オンライン状態にあるピアクライアントが存在する場合に、前記１つまたは複数のオンライン状態にあるピアクライアントのアドレス情報から、サーバを経由することなく前記ＩＭクライアントとメッセージを直接交換することができる直接アクセス可能なピアクライアントが存在するか否かを判断することを備える、適用例１に記載の方法。
適用例４：前記直接アクセス可能なピアクライアントに対するプラグインダウンロード要求の送信は、前記直接アクセス可能なピアクライアントに対する接続セットアップ要求を開始し、前記接続が正常にセットアップされた場合に、前記直接アクセス可能なピアクライアントに前記プラグインダウンロード要求を送信し、前記接続が正常にセットアップされなかった場合に、別の直接アクセス可能なピアクライアントに前記プラグインダウンロード要求を送信することを備える、適用例１に記載の方法。
適用例５：前記プラグインダウンロード要求は、プラグイン名とプラグインのバージョン情報とを含む、適用例１に記載の方法。
適用例６：前記ユーザから前記プラグイン要求を受信した後に、ローカルに記憶されているプラグイン識別情報が前記プラグイン名および前記バージョン情報を含むか否かを判断し、前記ローカルに記憶されているプラグイン識別情報が前記プラグイン名およびバージョン情報を含まない場合に、前記直接アクセス可能なピアクライアントに対して前記プラグインダウンロード要求を送信することをさらに備える、適用例５に記載の方法。
適用例７：前記ＩＭクライアントのユーザから前記プラグイン要求を受信した後に、前記プラグイン名およびバージョン情報をＩＭサーバに送信し、前記プラグイン名および前記バージョン情報に少なくとも一部基づいて生成されるプラグインシグネチャメッセージを前記ＩＭサーバから受信し、前記プラグイン名、前記バージョン情報、および前記プラグインシグネチャメッセージを前記直接アクセス可能なピアクライアントに対して送信して、前記直接アクセス可能なピアクライアント上のローカルに記憶されているプラグインシグネチャメッセージと比較することをさらに備える、適用例５に記載の方法。
適用例８：前記プラグインに対応するプラグイン名およびバージョン情報を記憶することをさらに備える、適用例５に記載の方法。
適用例９：前記ユーザからの前記プラグイン要求は、前記プラグインのインストールのためのユニフォームリソースロケータ（ＵＲＬ）リンクまたはダイアログを、ユーザが選択すること、プラグインインストール命令を含む、出現するプロモーション領域を、ユーザが選択すること、プラグインインストール命令を含む、プラグインプロモーションエントリを、ユーザが選択すること、および現行システムでデフォルト設定になっている前記プラグインのインストールのためのユーザ同意事項をユーザが承諾することのうちの１つまたは複数によって行われる、適用例１に記載の方法。
適用例１０：前記直接アクセス可能なピアクライアントは、複数の直接アクセス可能なピアクライアントの１つである、適用例１に記載の方法。
適用例１１：インスタントメッセージ（ＩＭ）クライアントのためのプラグインをダウンロードするためのシステムであって、前記ＩＭクライアントのユーザから前記プラグイン要求を受信し、現在オンライン状態にある直接アクセス可能なピアクライアントを検出し、前記直接アクセス可能なピアクライアントに対してプラグインダウンロード要求を送信し、前記直接アクセス可能なピアクライアントから前記プラグインが受信された場合に、前記プラグインを前記ＩＭクライアントにインストールするように構成されている１つまたは複数のプロセッサと、前記１つまたは複数の処理装置に結合され、前記処理装置に命令を与えるように構成された１つまたは複数のメモリを備える、システム。
適用例１２：前記直接アクセス可能なピアクライアントから前記プラグインが正常に受信されない場合に、前記１つまたは複数のプロセッサはさらに、前記プラグインダウンロード要求をダウンロードサーバに対して送信するように構成されている、適用例１１に記載のシステム。
適用例１３：現在オンライン状態にある前記直接アクセス可能なピアクライアントの検出は、前記ＩＭクライアントのコンタクトリストに基づいて、現在オンライン状態にあるピアクライアントが１つまたは複数存在するか否か検出すること、および現在オンライン状態にあるピアクライアントが１つまたは複数存在する場合に、前記１つまたは複数のオンライン状態にあるピアクライアントのアドレス情報から、サーバを介することなく前記ＩＭクライアントとメッセージを直接交換することができる直接アクセス可能なピアクライアントが存在するか否か判断することを備える、適用例１１に記載のシステム。
適用例１４：前記直接アクセス可能なピアクライアントに対するプラグインダウンロード要求の送信は、前記直接アクセス可能なピアクライアントに対する接続セットアップ要求を開始し、前記接続が正常にセットアップされた場合に、前記直接アクセス可能なピアクライアントに前記プラグインダウンロード要求を送信し、前記接続が正常にセットアップされなかった場合に、別の直接アクセス可能なピアクライアントに前記プラグインダウンロード要求を送信することを備える、適用例１１に記載のシステム。
適用例１５：前記プラグインダウンロード要求は、プラグイン名およびバージョン情報を含む、適用例１１に記載のシステム。
適用例１６：前記ユーザから前記プラグイン要求を受信した後に、前記１つまたは複数のプロセッサはさらに、ローカルに記憶されているプラグイン識別情報が前記プラグイン名および前記バージョン情報を含むか否か判断し、前記ローカルに記憶されているプラグイン識別情報が前記プラグイン名またはバージョン情報を含まない場合に、前記直接アクセス可能なピアクライアントに対して前記プラグインダウンロード要求を送信するように構成されている、適用例１５に記載のシステム。
適用例１７：前記ＩＭクライアントのユーザから前記プラグイン要求を受信した後に、前記１つまたは複数のプロセッサはさらに、前記プラグイン名およびバージョン情報をＩＭサーバに送信し、前記プラグイン名および前記バージョン情報に少なくとも一部基づいて生成されるプラグインシグネチャメッセージを前記ＩＭサーバから受信し、前記プラグイン名、前記バージョン情報、および前記プラグインシグネチャメッセージを前記直接アクセス可能なピアクライアントに対して送信して、前記直接アクセス可能なピアクライアント上のローカルに記憶されているプラグインシグネチャメッセージと比較するように構成されている、適用例１５に記載のシステム。
適用例１８：前記１つまたは複数のプロセッサはさらに、前記プラグインに対応するプラグイン名およびバージョン情報を記憶するように構成されている、適用例１５に記載のシステム。
適用例１９：前記ユーザからの前記プラグイン要求は、前記プラグインのインストールのためのユニフォームリソースロケータ（ＵＲＬ）リンクまたはダイアログを、ユーザが選択すること、プラグインインストール命令を含む、出現するプロモーション領域を、ユーザが選択すること、プラグインインストール命令を含む、プラグインプロモーションエントリを、ユーザが選択すること、および現行システムでデフォルト設定になっている前記プラグインのインストールのためのユーザ同意事項をユーザが承諾することの１つまたは複数によって行われる、適用例１１に記載のシステム。
適用例２０：前記直接アクセス可能なピアクライアントは、複数の直接アクセス可能なピアクライアントの１つである、適用例１１に記載のシステム。
適用例２１：インスタントメッセージ（ＩＭ）クライアントのためのプラグインをダウンロードするためのコンピュータプログラム製品であって、コンピュータ可読記憶媒体で具現化され、前記ＩＭクライアントのユーザから前記プラグイン要求を受信し、現在オンライン状態にある直接アクセス可能なピアクライアントを検出し、前記直接アクセス可能なピアクライアントに対してプラグインダウンロード要求を送信し、前記直接アクセス可能なピアクライアントから前記プラグインが受信された場合に、前記プラグインを前記ＩＭクライアントにインストールするためのコンピュータ命令を備える、コンピュータプログラム製品。
【図１】
0005342696.tif 000003
【図２】
0005342696.tif 000004
【図３】
0005342696.tif 000005
【図４】
0005342696.tif 000006
【図５】
0005342696.tif 000007