(57)【要約】【課題】新しいインスタントメッセージング機能の導入を容易にする。【解決手段】個々のプレゼンス文書は、個々のクライアントデバイスにローカルに記憶され、ピアツーピアのパラダイムでプレゼンス情報が共有され、伝達されることができる。別の実施では、プレゼンス文書は、プレゼンス文書スキーマに従って拡張することができるプレゼンス情報を含むことができる。その結果、新しいインスタントメッセージングシナリオに、より容易に対応することができる。さらに別の実施では、新プレゼンス情報通知メッセージは、プレゼンス情報項目への変更を表す差分を含む。差分に基づいてプレゼンス情報項目に変更が適用されて、新しいプレゼンス文書を生成することができる。新しいプレゼンス文書に計算された検証値が、受け取られた確認値と等しくない場合、宛先クライアントは、起点クライアントに実際の新しいプレゼンス文書の完全なコピーを要求することができる。【選択図】図２
2006244494.tif 000002
【特許請求の範囲】
【請求項１】
インスタントメッセージングクライアントプログラムの少なくとも一部分を構成するプロセッサ実行可能命令を含む１つまたは複数のプロセッサアクセス可能な記録媒体であって、
前記インスタントメッセージングクライアントプログラムは、プレゼンス文書をローカルに記憶することができ、前記インスタントメッセージングクライアントプログラムは、前記プレゼンス文書の少なくとも一部分を、ピアツーピアのパラダイムに従ってリモートクライアントに提供するように構成されたことを特徴とするプロセッサアクセス可能な記録媒体。
【請求項２】
前記インスタントメッセージングクライアントプログラムはさらに、前記ローカルに記憶されたプレゼンス文書のプレゼンス情報の変更に応答して前記リモートクライアントに送信される新プレゼンス情報通知メッセージを発行するように構成されたことを特徴とする請求項１に記載の１つまたは複数のプロセッサアクセス可能な記録媒体。
【請求項３】
前記リモートクライアントは、リモートのインスタントメッセージングクライアントプログラムを備え、前記インスタントメッセージングクライアントプログラムはさらに、前記リモートのインスタントメッセージングクライアントプログラムを含むダイナミックリバースリスト（ＤＲＬ）を記憶することができ、前記インスタントメッセージングクライアントプログラムはさらに、中央のインスタントメッセージングサーバを通すことなく、１つまたは複数のネットワークを通じて前記リモートインスタントメッセージングクライアントプログラムに前記新プレゼンス情報通知メッセージを送信するように構成されたことを特徴とする請求項２に記載の１つまたは複数のプロセッサアクセス可能な記録媒体。
【請求項４】
前記新プレゼンス情報通知メッセージは、少なくとも１つの個々のプレゼンス情報項目への変更を表す少なくとも１つの個々の差分を含むことを特徴とする請求項２に記載の１つまたは複数のプロセッサアクセス可能な記録媒体。
【請求項５】
前記新プレゼンス情報通知メッセージは、前記プレゼンス文書の識別を含むことを特徴とする請求項２に記載の１つまたは複数のプロセッサアクセス可能な記録媒体。
【請求項６】
前記プレゼンス文書の識別は、前記リモートクライアントが、前記インスタントメッセージングクライアントプログラムが現在実行されているデバイスのオブジェクトストアに前記プレゼンス文書を要求することを可能にするオブジェクトストア名を備えたことを特徴とする請求項５に記載の１つまたは複数のプロセッサアクセス可能な記録媒体。
【請求項７】
前記プレゼンス文書は、あらかじめ定められたステータス情報、電子メールアドレス、ニックネーム、閲覧されている現在のウェブサイト、聴かれている現在の音楽の選択、現在の物理的場所、個人的なステータスメッセージ、実行中のソフトウェアプログラム、現在インスタントメッセージングが行われている他の連絡先バディ、現在出席中の会合、ピアツーピア方式でユーザに連絡をとる方法についての情報、ユーザのブログの場所、ウェブカメラセッションあるいは音声会話が現在行われているかいないか、現在のｏｕｔｌｏｏｋのステータス、リアルタイムで連絡をとるためのユーザのアドレス情報、からなるプレゼンス情報項目の群から選択される１つまたは複数のプレゼンス情報項目を備えたことを特徴とする請求項１に記載の１つまたは複数のプロセッサアクセス可能な記録媒体。
【請求項８】
前記プレゼンス文書は、プレゼンス文書スキーマに従って拡張することができ、前記インスタントメッセージングクライアントプログラムはさらに、前記拡張可能なプレゼンス文書を操作するように構成されたことを特徴とする請求項１に記載の１つまたは複数のプロセッサアクセス可能な記録媒体。
【請求項９】
インスタントメッセージングクライアントプログラムの少なくとも一部分を構成するプロセッサ実行可能命令を含む１つまたは複数のプロセッサアクセス可能な記録媒体であって、前記インスタントメッセージングクライアントプログラムは、拡張可能なプレゼンス情報を含むように構成されたプレゼンス文書を利用することができることを特徴とするプロセッサアクセス可能な記録媒体。
【請求項１０】
前記インスタントメッセージングクライアントプログラムは、プレゼンス文書スキーマに従って前記プレゼンス文書の拡張可能プレゼンス情報を操作するように構成されたことを特徴とする請求項９に記載の１つまたは複数のプロセッサアクセス可能な記録媒体。
【請求項１１】
前記拡張可能なプレゼンス情報は、複数の個々のプレゼンス情報フィールドに関連付けられた複数の個々のタグを備え、各所与のタグは、関連付けられた所与のプレゼンス情報フィールドの意味を示すことを特徴とする請求項９に記載の１つまたは複数のプロセッサアクセス可能な記録媒体。
【請求項１２】
前記プレゼンス文書は、ＸＭＬ（拡張可能マークアップ言語）に従ってフォーマットされることを特徴とする請求項９に記載の１つまたは複数のプロセッサアクセス可能な記録媒体。
【請求項１３】
前記インスタントメッセージングクライアントプログラムはさらに、対応するプレゼンス文書の少なくとも１つのプレゼンス情報項目への変更を表す少なくとも１つの差分を含む、起点クライアントからの新プレゼンス情報通知メッセージを受信することができ、前記インスタントメッセージングクライアントプログラムは、前記少なくとも１つの差分に基づいて、前記少なくとも１つのプレゼンス情報項目への変更を設定して、前記起点クライアントに対応する更新されたプレゼンス文書を作成するように構成されたことを特徴とする請求項９に記載の１つまたは複数のプロセッサアクセス可能な記録媒体。
【請求項１４】
前記インスタントメッセージングクライアントプログラムはさらに、前記更新されたプレゼンス文書に応じて計算された検証値を、前記新プレゼンス情報通知メッセージとともに受け取られた確認値と比較することにより、等価性検証動作を行うように構成されたことを特徴とする請求項１３に記載の１つまたは複数のプロセッサアクセス可能な記録媒体。
【請求項１５】
前記インスタントメッセージングクライアントプログラムはさらに、前記等価性検証動作で等しいことが確認できない場合は、前記起点クライアントに、前記更新されたプレゼンス文書のコピーを要求するように構成されたことを特徴とする請求項１４に記載の１つまたは複数のプロセッサアクセス可能な記録媒体。
【請求項１６】
プレゼンス文書の少なくとも１つの対応する情報項目への変更を表す少なくとも１つの差分を含む新プレゼンス情報通知メッセージを受信するステップと、
前記少なくとも１つの対応する差分に基づいて前記少なくとも１つのプレゼンス情報項目を更新して、更新されたプレゼンス文書を生成するステップと、
前記更新されたプレゼンス文書に応じて検証値を計算するステップと、
前記検証値が、受け取られた確認値と等しいかどうかを判定するステップと、
前記検証値が前記受け取られた確認値と等しいと判定される場合は、前記更新されたプレゼンス文書を利用するステップと
を備えることを特徴とする方法。
【請求項１７】
前記プレゼンス文書は起点クライアントに対応し、前記方法はさらに、
前記検証値が前記受け取られた確認値と等しいと判定されない場合は、前記起点クライアントに前記プレゼンス文書の完全なコピーを要求するステップ
をさらに備えることを特徴とする請求項１６に記載の方法。
【請求項１８】
前記プレゼンス文書は起点クライアントに対応し、前記方法はさらに、
前記更新ステップの前に、古いバージョンの前記プレゼンス文書が存在するかどうかを確認するステップと、
古いバージョンの前記プレゼンス文書が存在すると確認されない場合、前記起点クライアントから前記プレゼンス文書の完全なコピーを取得するステップと
をさらに備えることを特徴とする請求項１６に記載の方法。
【請求項１９】
前記新プレゼンス情報通知メッセージはさらに、前記受け取られる確認値を含み、前記計算ステップは、
前記更新されたプレゼンス文書にハッシング演算を行うステップ
を備えることを特徴とする請求項１６に記載の方法。
【請求項２０】
前記利用ステップは、
前記更新されたプレゼンス文書を記憶するステップ、または
前記少なくとも１つのプレゼンス情報項目をユーザに表示するステップ
の少なくとも１つを備えることを特徴とする請求項１６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にはインスタントメッセージングに関し、詳細には、限定ではなく例として、柔軟性があり、拡張されたプレゼンス文書機能を容易にすることに関する。
【背景技術】
【０００２】
インスタントメッセージングの人気は、ここ数年で著しく高まっている。インスタントメッセージングは、本来は、比較的少ない手間で、基本的にリアルタイムで、誰かに短いメッセージを送信するために使用されていた。テキストだけでなく表情アイコン（ｅｍｏｔｉｃｏｎ）を送信する機能も導入された。インスタントメッセージングは、当初は、主として友人間での個人的で気軽な使用に人気があった。しかし、最近では、その使用はビジネス界にも拡がり、形式ばらない通信および／またはリアルタイムの通信を容易にしている。
【０００３】
インスタントメッセージングの全成長は、一部には、単なるメッセージングを超えて拡大するその機能にもよる。現在では、インスタントメッセージングは、通例、バディ（ｂｕｄｄｙ：友人）へのステータスの通知の伝達を包含する。例えば、ある者がログオンすると、その者に関係するバディにオンラインステータスの通知が伝達（disseminate）される。ある者がログオフすると、関係するバディにオフラインステータスの通知が伝達される。
【０００４】
インスタントメッセージングシステムに参加する者には、通常、自分を絵で表す画像を選択する機会も与えられる。こうしたグラフィック画像、ステータスの通知、表情アイコン等が、インスタントメッセージングの機能性、深み、豊かさを増大させていることはまず間違いない。したがって、インスタントメッセージングプログラムの受容と使用は、新しい機能が追加されるのに伴って増大していくであろうことは明らかである。不都合な点として、インスタントメッセージングシステムに新しい機能を追加することは、従来、困難で時間を要する作業であった。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
そのため、新しいインスタントメッセージング機能の導入を容易にすることができる方式、機構、技術等が必要とされる。
【０００６】
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、新しいインスタントメッセージング機能の導入を容易にすることができる、クライアントサイドのプレゼンス文書管理を実施する方法及び記録媒体を提供することにある。
【課題を解決するための手段】
【０００７】
クライアントサイドのプレゼンス文書管理（documentation）がインスタントメッセージングアーキテクチャで実施される。ここに記載される実施では、個々のプレゼンス文書は、個々のクライアントデバイスにローカルに記憶される。したがって、プレゼンス情報は、ピアツーピアのパラダイムに従って共有され、伝達されることができる。記載される別の実施では、プレゼンス文書は、プレゼンス文書スキーマに従って拡張することができるプレゼンス情報を含むことができる。その結果、新しいインスタントメッセージングシナリオに、より容易に対応することができる。記載されるさらに別の実施では、新プレゼンス情報通知メッセージは、プレゼンス情報の項目への変更を表す差分を含む。その差分に基づいてプレゼンス情報項目に変更が適用されて、新しいプレゼンス文書を生成することができる。新しいプレゼンス文書について計算された検証値が受け取られた確認値と一致しない場合は、宛先クライアントは、起点クライアントに実際の新しいプレゼンス文書の完全なコピーを要求することができる。
【０００８】
この他の方法、システム、手法、装置、デバイス、媒体、手順、ＡＰＩ、配置等の実施が本明細書に記載される。
【発明の効果】
【０００９】
本発明によれば、新しいインスタントメッセージング機能の導入を容易にすることができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。
【００１１】
すべての図面を通じて、同様の、かつ／または対応する態様、特徴、構成要素は同じ参照符号を用いて参照する。
【００１２】
概説 
従来のインスタントメッセージングシステムは、各ユーザのプレゼンス文書を中央サーバに記憶することにより、ユーザ間でプレゼンス情報を共有する。２人のユーザが互いの連絡先あるいはバディである場合、各ユーザのクライアントプログラムは、中央に置かれた各ユーザのプレゼンス文書に記憶された相互のプレゼンスステータスを確かめるように中央サーバにｐｉｎｇを送信する。この従来の手法は、プレゼンス文書が遠隔に置かれるため、プレゼンス文書の範囲に多少制限がある点で制約がある。さらに、このサーバを利用する手法では、結果としてプレゼンス情報の更新が比較的遅くなる。
【００１３】
それに対し、本明細書に記載される特定の実施は、プレゼンス文書がローカルに記憶され、ピアツーピア方式で共有される、ピアツーピア型のプレゼンス共有アーキテクチャを作り出す。文書をローカルに記憶することにより、特に拡張可能なプレゼンス文書で、ある者のコンピューティングデバイスで現在再生されている音楽や、デバイス／個人の物理的な位置を報告するなど、新しいプレゼンスの報告シナリオが可能になる。この機能が強化されたプレゼンス文書は、１つまたは複数のネットワークでピアツーピア方式で共有されることができ、それにより、プレゼンス情報をより迅速に更新できるようになる。帯域幅を減らすために、ここに記載される実施の１つは、更新されたプレゼンス文書全体ではなく、プレゼンス文書が前回共有されて以降のプレゼンス文書フィールドの差分が伝達される方法論を提供する。
【００１４】
基礎 
図１は、従来のインスタントメッセージングアーキテクチャ１００のブロック図である。図示するように、アーキテクチャ１００は、１つまたは複数のネットワーク１０９でサーバサイド１１１とクライアントサイド１１３に分割される。クライアントサイド１１３は、複数のクライアント１０１を含む。具体的には、「ｎ」個のクライアント、すなわちクライアント＃１  １０１（１）、クライアント＃２  １０１（２）．．．クライアント＃ｎ  １０１（ｎ）が図示される。しかし、インスタントメッセージングアーキテクチャ１００では、理論的にはクライアント１０１がいくつでもサービスされることが可能である。
【００１５】
複数のサーバ１０５および１０７もインスタントメッセージングアーキテクチャ１００の一部として含まれ、何らかのタイプのローカルエリアネットワーク（ＬＡＮ）１１５を介して相互に接続される。サーバは、プレゼンスサーバ１０５と接続サーバ１０７に分けられる。具体的には、プレゼンスサーバ１０５（Ａ）、プレゼンスサーバ１０５（Ｂ）、接続サーバ１０７（Ａ）、および接続サーバ１０７（Ｂ）が図示される。
【００１６】
一般に、接続サーバ１０７は、ネットワーク１０９との関連でサーバサイド１１１との間の入接続と出接続を処理する。プレゼンスサーバ１０５は、プレゼンス情報を保持し、入手可能な状態にする。プレゼンスサーバ１０５は、接続サーバ１０７を通じてアクセスされる。図には、プレゼンスサーバ１０５と接続サーバ１０７をそれぞれ２つのみ示すが、インスタントメッセージングアーキテクチャ１００は、どちらのサーバもいくつ含んでもよい。さらに、サーバサイド１１１は、異なる形で構成してもよく、例えば、サーバサイド１１１は、プレゼンスサーバと接続サーバに分けられる必要はない。
【００１７】
動作時に、各クライアント１０１は、プレゼンスサーバ１０５に関連付けられ、各プレゼンスサーバ１０５は、複数のクライアント１０１に関連付けられる。クライアント１０１のプレゼンス情報は、関連付けられたプレゼンスサーバ１０５に置かれる。図示するように、クライアント＃１  １０１（１）は、プレゼンスサーバ１０５（Ａ）に関連付けられる。その結果、クライアント＃１  １０１（１）のプレゼンス情報は、対応するプレゼンス文書１０３（１）の形でプレゼンスサーバ１０５（Ａ）に置かれる。図には明示的に示されないが、他のクライアント１０１（２）．．．１０１（ｎ）は、プレゼンスサーバ１０５（Ａ）またはプレゼンスサーバ１０５（Ｂ）に記憶された、対応するプレゼンス文書１０３を有する。
【００１８】
ここに記載される実施では、プレゼンス文書１０３（１）は、対応するクライアント＃１  １０１（１）のプレゼンス情報を含む。そのようなプレゼンス情報は、従来、ステータス情報（オンライン状態、オフライン状態、連絡不可能等）、電子メールアドレス、ニックネーム、連絡先情報を含む。
【００１９】
インスタントメッセージングアーキテクチャ１００の動作の追加的な態様は、以下の例示的シナリオのコンテクストでさらに説明する。クライアント＃１  １０１（１）とクライアント＃２  １０１（２）は、バディ同士である。その結果、クライアント＃２  １０１（２）には、インスタントメッセージングアーキテクチャ１００により、プレゼンス文書１０３（１）のプレゼンス情報の変更が通知される。
【００２０】
接続サーバ１０７は、通例、負荷分散アルゴリズムを用いてクライアント１０１に割り当てられる。この例示的なシナリオでは、クライアント＃１  １０１（１）は、接続サーバ１０７（Ａ）を通じてインスタントメッセージングアーキテクチャ１００のサーバサイドインフラストラクチャに接続し、クライアント＃２  １０１（２）は、接続サーバ１０７（Ｂ）を通じて接続するものと想定する。
【００２１】
図には明確に示さないが、サーバサイド１１１は、通常、各クライアント１０１について４つのリストを保持して、インスタントメッセージングアーキテクチャ１００の機能の実施を容易にする。この４つのリストは、通例プレゼンスサーバ１０５に記憶される。４つのリストは、（１）転送リスト、（２）許可リスト、（３）拒絶リスト、（４）ダイナミックリバースリスト（ＤＲＬ）、である。この４つのリストは、クライアント１０１の全プレゼンスプロファイルの一部と考えることができる。これらのリストについて、以下でクライアント＃１  １０１（１）に関して説明する。本発明では用語「バディ」と「連絡先」はクライアントと同義として使用するが、用語「バディ」、「連絡先」、および／または「クライアント」は、クライアントデバイスの現在の使用者とも同義であることを理解されたい。
【００２２】
転送リストは、クライアント＃１  １０１（１）のバディであり、クライアント＃１  １０１（１）が現在そのクライアントについて最新の情報を得たいと思うクライアント１０１を含む。許可リストは、クライアント＃１  １０１（１）に対応するプレゼンス情報とその情報の更新を受け取ることを許可されたバディを含む。拒絶リストは、クライアント＃１  １０１（１）のプレゼンス情報あるいはその更新の受け取りから明確に除外されたバディを含む。ＤＲＬは、インスタントメッセージングアーキテクチャ１００を通じて現在クライアント＃１  １０１（１）を監視しているクライアント１０１を含む。
【００２３】
この例示的シナリオでは、クライアント＃１  １０１（１）がすでにオンライン状態であり、クライアント＃２  １０１（２）は、クライアント＃１  １０１（１）に対応するプレゼンス情報を受け取るように登録しているため、そのオンラインステータスの通知をすでに受け取っているものとする。第１の段階で、クライアント＃１  １０１（１）がオフライン状態になる。第２の段階で、そのオフラインステータスが、クライアント＃１  １０１（１）から接続サーバ１０７（Ａ）に通信される（例えばクライアント＃１  １０１（１）のインスタントメッセージングクライアントプログラム（別個には図示せず）を使用する）。接続サーバ１０７（Ａ）は、クライアント＃１  １０１（１）がプレゼンスサーバ１０５（Ａ）に関連付けられていることを（ハッシングアルゴリズムあるいは類似のアルゴリズムを介して）判定する。
【００２４】
段階３で、接続サーバ１０７（Ａ）が、プレゼンスサーバ１０５（Ａ）に、クライアント＃１  １０１（１）のオフラインステータスの通知を転送する。プレゼンスサーバ１０５（Ａ）は、クライアント＃１  １０１（１）に対応するＤＲＬを調べることにより、どのクライアント１０１にそのステータスの変更を通知する必要があるかを判定する。この例示的シナリオでは、少なくともクライアント＃２  １０１（２）が、クライアント＃１  １０１（１）に対応するＤＲＬにある。したがって、プレゼンスサーバ１０５（Ａ）は、クライアント＃１  １０１（１）がオフライン状態になったことを知らせるステータス更新メッセージを、接続サーバ１０７（Ｂ）を介してクライアント＃２  １０１（２）に送信する。クライアント＃２  １０１（２）のインスタントメッセージングクライアントプログラムが、このステータス更新メッセージを受信し、クライアント＃１  １０１（１）がオフラインになった旨の通知を提示する。
【００２５】
図１のインスタントメッセージングアーキテクチャ１００は、基本的なインスタントメッセージング機能を有効に実施することができる。しかし、インスタントメッセージングアーキテクチャ１００にはいくつかの短所と欠点がある。第１に、保持し、伝達することができるプレゼンス情報の量に制約がある。サーバサイド１１１の本質的な記憶の制約のために、保持することができる１クライアント当たりのプレゼンス情報の量が実質的に制限される。
【００２６】
第２に、サーバサイド１１１のソフトウェア、プロトコル、スキーマ等の更新は、比較的難しく、時間を要し、危険を伴い、高コストである。そのため、サーバサイド１１１の新機能の導入は、通常、クライアントサイド１１３と比べると、行われる頻度がはるかに少ない。これは、インスタントメッセージングアーキテクチャ１００に新しい技術を導入する能力を著しく遅らせる。第３に、サーバサイド１１１の１つまたは複数のサーバを通じて更新通知メッセージをルーティングすることは、伝送時間と処理時間を消費する。この追加的な全待ち時間の結果、ある者のバディのデバイスでプレゼンス情報が更新されるのが比較的遅くなる。
【００２７】
クライアントサイドのプレゼンス文書管理 
クライアントデバイスにプレゼンス情報を組み込むと、各クライアントについてより多くの量のプレゼンス情報を記憶することが可能になり、インスタントメッセージングアーキテクチャの改善を、サーバサイドインフラストラクチャの改変から少なくとも部分的に切り離すことにより、新技術の導入が容易になり、また、サーバサイドを少なくとも部分的に迂回できるようにすることにより、プレゼンス文書更新の伝達が加速される。
【００２８】
図２は、クライアントサイドのプレゼンス文書管理を取り入れたインスタントメッセージングアーキテクチャ２００のブロック図例である。ここに記載される実施では、インスタントメッセージングアーキテクチャ２００は、サーバサイド２２０とクライアントサイド２２２に分けられる。１つまたは複数のネットワーク２０６が、インスタントメッセージングアーキテクチャ２００を実質的にクライアントサイド２２２とサーバサイド２２０に区切る。ネットワーク２０６は、インターネット、ＰＳＴＮ（公衆交換電話網）、ＬＡＮ（ローカルエリアネットワーク）、ＷＡＮ（ワイドエリアネットワーク）、無線または有線ネットワーク、それらの何らかの組合せ等を備えることができる。
【００２９】
クライアントサイド２２２は、複数のクライアント２０２を含む。図示するように、「ｎ」個のクライアントがサーバサイド２２０と通信することができる。この「ｎ」個のクライアントには、クライアント＃１（Ｃ１）２０２（１）、クライアント＃２（Ｃ２）２０２（２）．．．クライアント＃ｎ２０２（ｎ）が含まれる。ただし、理論上はインスタントメッセージングアーキテクチャ２０２ではクライアント２０２がいくつでも稼動することができる。
【００３０】
サーバサイド２２０は、少なくとも１つのサーバ２０４を含む。特にクライアントサイドのプレゼンス文書管理を組み込んたインスタントメッセージングアーキテクチャ２００では、サーバサイド２２０は、多数の構成で実現することができる。例えば、少なくとも１つのサーバ２０４は、代わりに、１つまたは複数の接続サーバと１つまたは複数のプレゼンスサーバを備えてもよい。一般には、少なくとも１つのサーバ２０４は、単一のサーバ、１つまたは複数のＬＡＮに接続された複数のサーバ、ネットワーク２０６に分散された複数のサーバ、それらの何らかの組合せ等を備えることができる。
【００３１】
クライアント２０２とサーバ２０４は、ネットワーク２０６を介して相互と通信することができる。サーバ２０４は、クライアント２０２（１，．．．，ｎ）の少なくとも一部分についてのクライアント情報２１４を記憶する。図示するように、サーバ２０４は、クライアント＃１の情報２１４（１）を記憶する。しかし、インスタントメッセージングアーキテクチャ２００では、クライアント＃１の情報２１４（１）は、プレゼンス文書を含む必要はない。代わりに、クライアント＃１の情報２１４（１）は、クライアント＃１のプレゼンス文書の識別（ＰＤ−Ｃ１）２２４を含む。ＰＤ−Ｃ１の識別２２４は、例えば、ＰＤ−Ｃ１の名前、ＰＤ−Ｃ１への参照、ＰＤ−Ｃ１へのポインタ、ＰＤ−Ｃ１の場所、ＰＤ−Ｃ１を識別するオブジェクトへのハンドル、それらの何らかの組合せ等である。
【００３２】
したがって、ＰＤ−Ｃ１の識別２２４は、ＰＤ−Ｃ１  ２０８を識別し、ＰＤ−Ｃ１  ２０８は、インスタントメッセージングアーキテクチャ２００のクライアントサイドプレゼンス文書管理実装ではクライアント＃１（Ｃ１）２０２（１）に置かれる。クライアント＃１の情報２１４（１）は、上記の４つのリストのいずれか（ＤＲＬなど）、またはすべてなど、クライアント＃１に関連する他の情報も含んでよい。
【００３３】
ここに記載される実施の１つでは、クライアント＃１  ２０２（１）は、インスタントメッセージまたはメッセージングのクライアントプログラム２１２と、それに関連するクライアント＃１のプレゼンス文書（ＰＤ−Ｃ１）２０８を含む。ＰＤ−Ｃ１  ２０８は、拡張可能なプレゼンス文書（ＰＤ）情報２１０を含む。拡張可能なＰＤ情報２１０を組み込むことにより、拡張可能なＰＤ−Ｃ１  ２０８が作成される。ＰＤ−Ｃ１  ２０８が拡張可能なので、インスタントメッセージングアーキテクチャ２００では、新しいタイプ、異なるタイプ、かつ／または変化するタイプのプレゼンス情報をより容易に取り込み、拡張し、強化し、かつ／または変更することができる。ＰＤ−Ｃ１  ２０８についての例示的な拡張スキーマについては図３を特に参照して下記でさらに説明する。
【００３４】
インスタントメッセージングアーキテクチャ２００の実装について、以下の例示的シナリオを用いてさらに説明する。クライアント＃２  ２０２（２）もインスタントメッセージクライアント２１２（明示的には図示せず）を含み、自身のバディリスト２１６（クライアント＃２の転送リスト）にクライアント＃１  ２０２（１）を加えている。クライアント＃２  １０１（２）は同様に、クライアント＃１  １０１（１）に対応するＤＲＬに加えられることにより、クライアント＃１  １０１（１）のＰＤ情報を受信するように登録している。下記でさらに説明するように、ＤＲＬは、サーバ２０４および／またはクライアント＃１  １０１（１）に置かれることができる。その結果、リモートクライアント＃２  ２０２（２）には、クライアント＃１のＰＤ情報２１８とその更新が提供される。上記で指摘したように、このＰＤ情報は、ここに記載される実施では拡張することができる。
【００３５】
図３は、クライアント＃１の拡張可能プレゼンス文書（ＰＤ−Ｃ１）２０８の例である。ＰＤ−Ｃ１  ２０８は、拡張可能なプレゼンス文書情報２１０を含む。ここに記載される実施では、拡張可能なＰＤ情報２１０は、複数の個々のプレゼンス情報フィールド３０４に関連付けられた複数の個々のタグ３０２を含む。図に示すように、タグ３０２（１）は、プレゼンス情報フィールド３０４（１）に関連付けられ、タグ３０２（２）は、プレゼンス情報フィールド３０４（２）に関連付けられ、．．．タグ３０２（ｍ）は、プレゼンス情報フィールド３０４（ｍ）に関連付けられる。
【００３６】
個々のタグ３０２が、個々のフィールド３０４にあるプレゼンス情報の意味を示すので、プレゼンス情報は、新しいタイプのプレゼンス情報を含むように拡張することができる。例えばスキーマを使用して、利用可能なタグ、あるいは含まれるタグ３０２とそれに対応する意味を定義および／または説明することができる。
【００３７】
拡張可能なプレゼンス文書のスキーマ例を次に示す。
【００３８】
【表１】
2006244494.tif 000003
【００３９】
このように、音楽のカテゴリの場合、アーチストの属性に演奏者の名前の値を与えることができ、歌の属性にその歌の題の値を与えることができる。拡張可能なプレゼンス文書の例示的フォーマットは、ＸＭＬ（拡張型マークアップ言語）であるが、それに代えて他のフォーマットを用いてもよい。
【００４０】
拡張可能プレゼンス文書の一部として含めることが可能なプレゼンス情報の例には、これらに限定しないが、あらかじめ定められたステータス情報（オンライン、オフライン、不在、取り込み中、電話中等）、閲覧されている現在のウェブサイト、現在聴いている音楽、現在インスタントメッセージングが行われている他の連絡先バディ、現在の物理的場所、個人的なステータスメッセージ、実行中のソフトウェアプログラム（ゲーム、ワードプロセッサなど）、現在出席中の会合、ピアツーピア方式でユーザに接続する方法のためのアドレス情報、ユーザのブログの場所、ウェブカメラセッションあるいは音声会話が現在行われているかいないか、現在のｏｕｔｌｏｏｋのステータス、リアルタイムで（ｌｉｖｅ）連絡をとるためのユーザのアドレス情報、ＳＩＰ（セッション開始プロトコル）のピアツーピア接続をリッスンするネットワークエンドポイント、その他自分について共有したいと思う事柄および／または他のユーザとのオンラインアクティビティ、それらの何らかの組合せ等が含まれる。
【００４１】
図４は、新プレゼンス文書通知メッセージ４０２を使用してバディのクライアントでプレゼンス情報を更新する例示的機構４００を説明するブロック図である。図２を参照して先に述べた例示的シナリオを機構４００についても続ける。初めに、クライアント＃２  ２０２（２）の連絡先バディであるバディクライアントＣ１のＰＤ情報２１８が、クライアント＃２  ２０２（２）で知られる。クライアント＃２  ２０２（２）のインスタントメッセージクライアントプログラム２１２（明示的には図示せず）が、バディＣ１のＰＤ情報２１８を、クライアント＃２  ２０２（２）のユーザに表示することができる。
【００４２】
ここに記載される実施では、機構４００は、円で囲んだ数字とそれに伴う矢印で図４に示される４つの段階（１〜４）で説明する。第１の段階では、ＰＤ情報（ＰＤ−Ｃ１  ２０８の拡張可能ＰＤ情報２１０など）に変化が生じる。この変化は、新しい情報の追加や、既存の情報の変更あるいは除去である。すなわち、単なる例として、クライアント＃１  ２０２（１）が音楽を聴き始める、あるいは新たな歌／音楽の供給源に変更することが考えられる。第１の段階の一部として、新ＰＤ（情報）通知メッセージ４０２がクライアント＃１  ２０２（１）からサーバ２０４に送信される。
【００４３】
第２の段階で、サーバ２０４が、クライアント＃１  ２０２（１）のＤＲＬにアクセスし、現在クライアント＃１  ２０２（１）を監視しているクライアント２０２を抽出する。この例示的シナリオでは、このクライアント２０２には、クライアント＃２  ２０２（２）が含まれる。したがって、サーバ２０４は、クライアント＃２  ２０２（２）を含む、クライアント＃１  ２０２（１）に対応するＤＲＬにあるクライアント２０２に新ＰＤ通知メッセージ４０２を送信する。新ＰＤ通知メッセージ４０２の例示的な生成については、図５を特に参照して下記でさらに説明する。また、下記で特に図５を参照して説明する代替実施では、クライアント＃１  ２０２（１）に置かれ、クライアント＃１  ２０２（１）で使用されている、クライアント＃１  ２０２（１）のＤＲＬ（の少なくともコピー）を利用して、インスタントメッセージングシステムの特定の動作へのサーバ２０４の関与を減らすか、または関与しないようにする。
【００４４】
第３の段階で、クライアント＃２  ２０２（２）が、新ＰＤ要求メッセージ４０４を使用して、クライアント＃１  ２０２（１）にＣ１のプレゼンス文書情報２１８の更新を要求する。クライアント＃１  １０１（１）のインスタントメッセージクライアントプログラム２１２は、クライアント＃２  ２０２（２）から新ＰＤ要求メッセージ４０４を受信する。新ＰＤ要求メッセージ４０４を受信するのに応答して、第４の段階で、インスタントメッセージングクライアントプログラム２１２は、クライアント＃１  １０１（１）からクライアント＃２  ２０２（２）に新ＰＤ（情報）メッセージ４０６を送信する。新ＰＤメッセージ４０６は、少なくとも変更されたＰＤ情報２１０の部分と、可能な限りＰＤ−Ｃ１  ２０８の全体を含む。新ＰＤメッセージ４０６を受信すると、クライアント＃２  ２０２（２）は、Ｃ１バディのＰＤ情報２１８を更新し、更新されたＰＤ情報２１８を任意で表示することができる。
【００４５】
図４に示すように、新ＰＤ要求メッセージ４０４と新ＰＤメッセージ４０６は、サーバ２０４を通ることなく、純粋にピアツーピアで交換される。ただし、これら２つのメッセージ４０４および４０６のいずれか、または両方は、サーバ２０４などの１つまたは複数のサーバを通じてルーティングされてもよい。
【００４６】
メッセージ４０２、４０４、４０６は、プレゼンス文書全体（例えばＰＤ−Ｃ１  ２０８のすべて）に関連することができる。あるいは、このメッセージ４０２、４０４、４０６の１つまたは複数は、ＰＤ−Ｃ１  ２０８の一部分のみに関連するものでもよい。例えば、クライアント＃２  ２０２（２）のインスタントメッセージングクライアントプログラムは、新ＰＤ通知メッセージ４０２を分析して、バディＣ１のＰＤ情報２１８を完全に更新するには拡張可能ＰＤ情報２１０のすべてが必要なのか、あるいは一部のみが必要なのかを判定できる場合がある。この帯域幅節減の実施の例は、特に図５および６を参照して下記でさらに説明する。
【００４７】
図５は、新プレゼンス文書通知メッセージ４０２＊の例を含むブロック図である。新ＰＤ通知メッセージ４０２＊は、一般的な新ＰＤ通知メッセージ４０２（図４）の具体例である。図示するように、新通知メッセージ４０２＊は、クライアント＃１の識別５０２、ＰＤ−Ｃ１の識別５０４、および１つまたは複数の（例えば「ｋ」個の）ＰＤ差分５０６（１−ｋ）を含む。新ＰＤ通知メッセージ４０２＊のこれら３つの例示的部分５０２、５０４、５０６については、下記で説明する。
【００４８】
図５全体で、第１の段階で、クライアント＃１  ２０２（１）でＰＤ−Ｃ１  ２０８のプレゼンス情報が変更されると、新ＰＤ通知メッセージ４０２＊がクライアント＃１  ２０２（１）からサーバ２０４に送信される。第２の段階で、クライアント＃１  ２０２（１）のＤＲＬを調べた後に、新ＰＤ通知メッセージ４０２＊が、サーバ２０４から、ＤＲＬリストに掲載されることで示される、クライアント＃１  ２０２（１）のプレゼンス情報の受け取りを登録しているクライアントに送信される。図５では、新ＰＤ通知メッセージ４０２＊を受信する２つのクライアント２０２は、クライアント＃２  ２０２（２）とクライアント＃３  ２０２（３）である。
【００４９】
新ＰＤ通知メッセージ４０２＊の第１の例示的部分について、クライアント＃１の識別５０２は、起点クライアント＃１  ２０２（１）の識別を示す。一般に、クライアント＃１  ２０２（１）からサーバ２０４に送信される新ＰＤ通知メッセージ４０２＊のバージョンは、サーバ２０４から１つまたは複数の伝達あるいは宛先クライアント２０２（２）および２０２（３）に送信される新ＰＤ通知メッセージ４０２＊のバージョンとは異なる場合がある。例えば、起点クライアントがサーバ２０４に暗示的に知られている、あるいはサーバ２０４から判定可能であるために、クライアント＃１  ２０２（１）からサーバ２０４に送信される新ＰＤ通知メッセージ４０２＊のバージョンから、クライアント＃１の識別５０２が省略される場合がある。
【００５０】
新ＰＤ通知メッセージ４０２＊の第２の例示的部分について、ＰＤ−Ｃ１の識別５０４は、ＰＤ−Ｃ１  ２０８を識別する。ＰＤ−Ｃ１の識別５０４は、関係するバディクライアント２０２が直接または間接的にＰＤ−Ｃ１  ２０８を取得できるのに十分な情報を提供する。例えば、ＰＤ−Ｃ１の識別５０４は、サーバ２０４に記憶され、ＰＤ−Ｃ１  ２０８への参照を備えることができる、ＰＤ−Ｃ１の識別２２４と同じでよい。したがって、伝達先（dissemination）クライアント２０２がクライアント＃１  ２０２（１）から直接ＰＤ−Ｃ１  ２０８を取得できるようにすることができる。あるいは、単に、ＰＤ−Ｃ１  ２０８を提供するように第３のデバイス（サーバ２０４、別のサーバ、別のクライアント２０２、別のエンティティ等）に要求する権限を伝達先クライアント２０２に与えてもよい。
【００５１】
単なる例として、ＰＤ−Ｃ１の識別５０４は、オブジェクトストア名を備えることができ、ＰＤ−Ｃ１  ２０８は、クライアント＃１  ２０２（１）のオブジェクトストアに記憶されることができる。オブジェクトストアについては、２００３年７月１日に出願され、出願番号１０／６１１，５９９号を割り当てられた、「Instant Messaging Object Store」という名称の同時係属の米国特許出願に記載される。この米国特許出願第１０／６１１，５９９号は、本特許出願と同じ譲受人を有する。
【００５２】
インスタントメッセージングのためのオブジェクトストア技術の一実施形態の簡単な説明が本明細書に述べられる。オブジェクトストア技術は、個々のデバイスが、各自のオブジェクトストアにデータを記憶することを可能にする。さらに、オブジェクトストア技術は、１つのデバイスが、別のデバイスのオブジェクトストアに記憶されたデータを見つけ、取り出せるようにする。
【００５３】
オブジェクトストアにデータを記憶する際、オブジェクトストアは、正しく設定されたデバイスがそのオブジェクトストア名からデータを見つけられるようにするオブジェクトストア名を提供する。そのため、プレゼンス文書などのデータのオブジェクトストア名が渡されて、他のデバイスからのデータへのアクセスを可能にする。上記の特許出願第１０／６１１，５９９号に記載される一実施では、各オブジェクトストア名は、文字列を備え、長さは最高で１キロバイトである。オブジェクトストア名は、例えば、データエンティティごとに異なるハッシュ値、クライアントデバイスのメモリにそのデータを有するファイルの名前、クライアントデバイスのユーザ名、および記憶されたデータのタイプを含む。
【００５４】
オブジェクトストア技術のコンテクストにおけるプレゼンス情報更新の状況の例を以下に述べる。初めに、起点デバイスで再生されている歌が変化する。２番目に、新しい歌がプレゼンス文書ファイル（例えばＸＭＬ（拡張可能マークアップ言語）でフォーマットされた）に書き込まれる。３番目に、変更されたプレゼンス文書ファイルが、オブジェクトストアに保存される。４番目に、オブジェクトストアが、記憶されたその文書の新しいオブジェクトストア名を提供する。５番目に、起点デバイスが、新しいプレゼンス文書のオブジェクトストア名を中央サーバに通知する。６番目に、サーバが、起点デバイスのバディとして登録している宛先デバイスに、新プレゼンス文書のオブジェクトストア名を送信する。７番目に、宛先デバイスが、新プレゼンス文書のオブジェクトストア名を受け取る。８番目に、宛先デバイスが、新プレゼンス文書のオブジェクトストア名に基づいて、プレゼンス文書が変化したことを確認する。９番目に、宛先クライアントが、新プレゼンス文書のオブジェクトストア名を使用して、起点デバイスに新しいプレゼンス文書のコピーを要求することができる。
【００５５】
再度図５を参照すると、新ＰＤ通知メッセージ４０２＊の第３の例示的部分について、ＰＤ差分５０６（１−ｋ）は、ＰＤ−Ｃ１  ２０８のプレゼンス情報のｋ個の差分すなわち差異を含む。すなわち、クライアント＃１  ２０２（１）は、ＰＤ−Ｃ１  ２０８全体を関係するバディクライアント２０２（２）および２０２（３）に自動的に送信する代わりに、個々のプレゼンス情報項目の変更を送信する。したがって、３つのプレゼンス情報項目が変化した場合は、ＰＤ差分５０６（１）、ＰＤ差分５０６（２）、およびＰＤ差分５０６（３）が新ＰＤ通知メッセージ４０２＊に含められる。
【００５６】
上記で指摘したように、インスタントメッセージングシステムによって消費される帯域幅は、プレゼンス情報が変化するたびにＰＤ−Ｃ１  ２０８すべてを自動的に送信する代わりに、プレゼンス情報の差分が伝達先クライアント２０２に送信されれば、減らすことができる。クライアント＃２  ２０２（２）などの関係するバディクライアント２０２が新ＰＤ通知メッセージ４０２＊を受信すると、クライアント＃２  ２０２（２）は、ＰＤ差分５０６（１−ｋ）で示されるプレゼンス情報の変化を設定する。この意味で、新ＰＤ通知メッセージ４０２（および４０２＊）は、より一般的には、新プレゼンス通知情報（ＰＩ）通知メッセージである。
【００５７】
その後、クライアント＃２  ２０２（２）は、クライアント＃１  ２０２（１）の新しいバージョンのプレゼンス情報に基づいて、新しい検証値を計算することができる。この検証値は、新ＰＤ通知メッセージ４０２＊に含まれる確認値（図５には明示的には図示せず）と比較される。２つの値が等価である場合、新ＰＤ通知メッセージ４０２＊は、適切に処理されていることになる。一方、新しい検証値が、受け取られた確認値と等しくない場合、クライアント＃２  ２０２（２）は、クライアント＃１  ２０２（１）に完全なＰＤ−Ｃ１  ２０８を要求する。この手順については、特に図６を参照して下記でさらに説明する。
【００５８】
例示的な代替の実施として、次のように、インスタントメッセージングアーキテクチャからサーバ２０４を完全に、または部分的に省くことができる。上記の４つのリストの１つまたは複数は、サーバ２０４ではなくクライアント２０２に記憶されることができる。例えば、クライアント＃１  ２０２（１）のＤＲＬがクライアント＃１  ２０２（１）に記憶されることができる。したがって、クライアント＃２  ２０２（２）がインスタントメッセージングシステムに加入していて現在クライアント＃１  ２０２（１）のプレゼンス情報を監視している場合、クライアント＃１  ２０２（１）は、クライアント＃１  ２０２（１）に置かれたＤＲＬにクライアント＃２  ２０２（２）を追加する。プレゼンス情報の項目が変化すると、クライアント＃１  ２０２（１）は、ローカルに記憶されたＤＲＬにアクセスし、サーバ２０４を仲介として使用せずに、直接クライアント＃２  ２０２（２）に新ＰＩ通知メッセージを送信することができる。
【００５９】
図６は、起点クライアントのプレゼンス文書が起点クライアントで保持される場合に、宛先クライアントでプレゼンス情報を更新する方法の例を説明する流れ図６００である。流れ図６００は、１４個のブロックを含む。流れ図６００の動作は、他の環境で、各種のハードウェアとソフトウェアの組合せを用いて行うことができるが、図２〜５を特に用いてこの方法の特定の態様と例を説明する。単なる例として、流れ図６００の４つの動作６０２〜６０８は、起点クライアント２０２（Ｏ）（例えばクライアント＃１  ２０２（１））のインスタントメッセージングプログラムクライアント２１２によって行われることができ、１０個の動作６１０〜６２８は、宛先／伝達先クライアント２０２（Ｄ）（例えばクライアント＃２  ２０２（２））のインスタントメッセージングプログラムクライアント２１２によって行われることができる。
【００６０】
ブロック６０２で、プレゼンス情報に変更があるかどうかが検出される。例えば、起点クライアント２０２（Ｏ）が、自身のプレゼンス情報の変更が生じているかどうかを検出することができる。この検出は、変更が検出されるまで継続する。変更が検出されると（ブロック６０２）、ブロック６０４で、新プレゼンス情報（ＰＩ）通知メッセージが生成される。例えば、起点クライアント２０２（Ｏ）は、新ＰＤ通知メッセージ４０２＊に似た新ＰＩ通知メッセージを生成することができる。例えば、新ＰＩ通知メッセージは、起点クライアント２０２（Ｏ）の識別、起点クライアント（Ｏ）のＰＤの識別（プレゼンス文書への参照など）、少なくとも１つのＰＩ差分、および確認値を含むことができる。確認値は、例えば、新しいＰＤに応じて決定されるハッシュ値である。
【００６１】
ブロック６０６で、新ＰＩ通知メッセージがバディクライアントに送信される。例えば、新ＰＩ通知メッセージは、起点クライアント２０２（Ｏ）から、起点クライアント２０２（Ｏ）のＤＲＬにリストされているバディクライアントに送信されることができる。この例では、そのバディクライアントには、宛先クライアント２０２（Ｄ）が含まれる。新ＰＩ通知メッセージは、サーバ２０４を介して、または直接（すなわちローカルに記憶されたＤＲＬを使用してサーバ２０４を迂回して）、起点クライアント２０２（Ｏ）からネットワーク２０６を通じて宛先クライアント２０２（Ｄ）に送信されることができる。
【００６２】
ブロック６１０で、新ＰＩ通知メッセージが受信される。例えば、新ＰＩ通知メッセージが宛先クライアント２０２（Ｄ）で受信される。ブロック６１２で、新ＰＩがすでに存在するかどうかが確認される。例えば、宛先クライアント２０２（Ｄ）は、受け取った確認値を、（ｉ）宛先クライアント２０２（Ｄ）にすでに記憶されている起点クライアント２０２（Ｏ）のＰＤに対応する既存の検証値、および／または（ｉｉ）以前に受け取った確認値と比較することができる。何らかの理由でＰＩがすでに更新されている場合は、流れ図はブロック６２４で終了する。そうでない場合は、新しいＰＩがまだ存在しておらず、方法はブロック６１４に進む。
【００６３】
ブロック６１４で、古いバージョンのＰＤが存在するかどうかが確認される。例えば、起点クライアント２０２（Ｏ）の以前のバージョンのＰＤがすでに宛先クライアント２０２（Ｄ）に存在するかどうかが確認されることができる。存在しない場合は、方法はブロック６２８に進み、ブロック６２８については下記で説明する。一方、以前のバージョンのＰＤが宛先クライアント２０２（Ｄ）に存在する場合、方法はブロック６１６に進む。
【００６４】
ブロック６１６で、受け取った差分を使用してプレゼンス情報が更新される。例えば、宛先クライアント２０２（Ｄ）は、新ＰＩ通知メッセージとともに受け取った少なくとも１つのＰＩ差分に基づいて、起点クライアント２０２（Ｏ）に対応するＰＤのＰＩを更新することができる。例えば、以前のＰＩ値を受け取った差分値に置き換えることができる。関連付けられたタグ３０２で、様々なＰＩフィールド３０４が識別されることができる。
【００６５】
ブロック６１８で、新しい検証値が計算される。例えば、宛先クライアント２０２（Ｄ）は、ＰＩ差分で更新された新しいＰＤに応じて新しい検証値を計算することができる。検証値は、例えば暗号ハッシュなどのハッシングアルゴリズムを使用して計算することができる。暗号ハッシュの例には、ＳＨＡ−１、ＭＤ５などがある。別の例示的な検証動作あるいは手順では、実際の変更データとバージョン番号を備える差分を利用することができる。そのような差分／バージョン番号の実施では、リモートクライアントが持っているバディの現在のバージョン番号が、新ＰＤメッセージで受け取ったバージョン番号より１少ない場合は、リモートクライアントは、変更を適用して最も新しいバージョン番号のＰＤと整合させることができる。しかし、リモートクライアントのバージョン番号が２以上違う場合は、リモートクライアントは、バディからの１つまたは複数の更新を見逃しており、リモートのインスタントメッセージングクライアントが完全な新しいバージョンのＰＤを入手する必要があることが明らかである。
【００６６】
ブロック６２０で、受け取った確認値が、計算された検証値と等価であるかどうかが判定される。例えば、新ＰＩ通知メッセージで受け取った確認値が、ＰＩ差分で更新された新しいＰＤに応じて計算された検証値と等価である（等しい）かどうかが判定されることができる。等しくない場合（例えばバディクライアントからの１回または複数回の以前の差分タイプの更新の際にリモートクライアントがオフライン状態であったため）、方法はブロック６２８に進む。ブロック６２８については下記でさらに説明する。一方、受け取った確認値が計算された検証値と等価であると判定された場合、方法はブロック６２２に進む。
【００６７】
ブロック６２２で、更新された新しいＰＤが記憶される。例えば、起点クライアント２０２（Ｏ）に対応する更新後のＰＤが、宛先クライアント２０２（Ｄ）に記憶されることができる。更新されたＰＩは、宛先クライアント２０２（Ｄ）のユーザに表示する、あるいはその他の形で伝達することもできる。すなわち、より一般的な観点から述べると、更新されたＰＤは、記憶する、ＰＩをユーザに伝える、その他の形でインスタントメッセージングに関連する動作を行うなどにより、利用されることができる。ブロック６２４で、流れ図６００の方法は終了する。
【００６８】
ブロック６２８の動作は、宛先クライアント２０２（Ｄ）が起点クライアント２０２（Ｏ）の古いバージョンのＰＤを持っていない場合（ブロック６１４で確認される）、または、起点クライアント２０２（Ｏ）の更新された新しいバージョンのＰＤが正確であると判明しない場合（例えばブロック６２０でのハッシュ値の比較による）に行われる。ブロック６２８では、完全なＰＤのコピーが起点クライアントから取得される。例えば、宛先クライアント２０２（Ｄ）は、新ＰＤ要求メッセージ４０４を介して起点クライアント２０２（Ｏ）に起点クライアント２０２（Ｏ）の完全なＰＤを要求することができる。この要求は、起点クライアント２０２（Ｏ）のＰＤの識別（および／または起点クライアント（Ｏ）の識別）を使用して行うことができる。
【００６９】
ブロック６０８で、要求に応じて完全なＰＤのコピーが提供される。例えば、起点クライアント２０２（Ｏ）は、新ＰＤメッセージ４０６で宛先クライアント２０２（Ｄ）にＰＤ−Ｃｌ  ２０８を提供することができる。起点クライアントから完全なＰＤのコピーを受け取ると（ブロック６２８の取得で）、ブロック６２６で、その完全な実際のＰＤが宛先クライアントで記憶される。あるいは、より一般的には、完全な実際のＰＤが宛先クライアント２０２（Ｄ）で利用される。流れ図の方法６００はブロック６２４で終了する。
【００７０】
図１〜６のデバイス、動作、態様、特徴、機能、手順、モジュール、データ構造、プログラム、構成要素等は、複数のブロックに分割された図で示される。しかし、図１〜６が説明および／または図示される、順序、相互接続、相互関係、配置等は制限と解釈すべきではなく、それらブロックのいくつを任意の方式で変更、組合せ、位置変更、増強、省略等して、クライアントサイドのプレゼンス文書管理のための１つまたは複数のシステム、方法、デバイス、手順、媒体、装置、ＡＰＩ、スキーマ、配置等を実施してもよい。さらに、本明細書の説明は、具体的な実施（図７の汎用デバイスを含む）の参照を含むが、図示および／または記載される実施は、適切なハードウェア、ソフトウェア、ファームウェア、あるいはそれらの組合せとして、また、適切なプレゼンス文書の生成、プレゼンス情報スキーマ、伝送プロトコル、メッセージフォーマット、および／または検証アルゴリズム等を使用して実施することができる。
【００７１】
コンピュータまたは他のデバイスの例示的動作環境 
図７に、ここに記載されるクライアントサイドのプレゼンス文書管理のための少なくとも１つのシステム、デバイス、装置、コンポーネント、配置、プロトコル、方式、方法、手順、媒体、アプリケーションプログラミングインタフェース（ＡＰＩ）スキーマ、それらの何らかの組合せを（完全に、または部分的に）実施することが可能な例示的コンピューティング（あるいは汎用デバイス）動作環境７００を示す。動作環境７００は、以下で説明するコンピュータおよびネットワークのアーキテクチャで利用することができる。
【００７２】
例示的動作環境７００は、環境の一例に過ぎず、適用可能なデバイス（コンピュータ、ネットワークノード、娯楽デバイス、携帯機器、電子デバイス全般等）のアーキテクチャの使用または機能の範囲についての制限を示唆するものではない。また、動作環境７００（またはその中のデバイス）は、図７に示す構成要素の１つまたは組合せに関連する依存性や必要性を有するものとも解釈すべきでない。
【００７３】
また、クライアントサイドのプレゼンス文書管理のための実施は、多数の他の汎用または特殊目的のデバイス（コンピューティングシステムを含む）環境または構成で実現することができる。使用するのに適する可能性がある、よく知られるデバイス、システム、環境、および／または構成の例には、これらに限定しないが、パーソナルコンピュータ、サーバコンピュータ、シンクライアント、シッククライアント、ＰＤＡ（携帯情報端末）あるいは携帯電話、腕時計、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサを利用したシステム、セットトップボックス、設定可能な家電製品、ビデオゲーム機、ゲーム機、携帯型またはハンドヘルド型のゲーム機、ネットワークＰＣ、テレビ会議機器、ミニコンピュータ、メインフレームコンピュータ、ネットワークノード、上記のシステムまたはデバイスを含む分散あるいは多重処理コンピューティング環境、それらの何らかの組合せ等がある。
【００７４】
クライアントサイドのプレゼンス文書管理の実施は、プロセッサ実行可能命令の一般的なコンテクストで説明することができる。一般に、プロセッサ実行可能命令には、特定のタスクを行うか、かつ／または可能にし、かつ／または特定の抽象データ型を実装する、ルーチン、プログラム、プロトコル、オブジェクト、機能、インタフェース、コンポーネント、データ構造等が含まれる。本明細書の特定の実施で記載されるクライアントサイドのプレゼンス文書管理の実現は、通信リンクおよび／またはネットワークを通じて接続された、遠隔でつながれた処理デバイスによってタスクが行われる分散処理環境でも実施することができる。これに限らないが特に分散コンピューティング環境では、プロセッサ実行可能命令は、別々の記憶媒体に配置され、異なるプロセッサで実行され、かつ／または伝送媒体を通じて伝播されることができる。
【００７５】
例示的動作環境７００は、コンピュータ７０２の形態の汎用コンピューティングデバイスを含み、コンピュータ７０２は、計算／処理能力のある任意の（電子）デバイスからなることができる。コンピュータ７０２の構成要素には、これらに限定されないが、１つまたは複数のプロセッサあるいはプロセッサ７０４、システムメモリ７０６、およびプロセッサ７０４を含む各種のシステム構成要素をシステムメモリ７０６に結合するシステムバス７０８が含まれることが可能である。
【００７６】
プロセッサ７０４は、形成される材料、あるいはその内部で用いられる処理機構によって制限されない。例えば、プロセッサ７０４は、半導体および／またはトランジスタ（例えば電子集積回路（ＩＣ））からなることができる。そのようなコンテクストでは、プロセッサ実行可能命令は、電子的に実行可能な命令からなることができる。あるいは、プロセッサ７０４の機構と、したがってコンピュータ７０２の機構は、これらに限定しないが、量子コンピューティング、光学コンピューティング、機械コンピューティング（ナノ技術を用いるものなど）等が可能である。
【００７７】
システムバス７０８は、各種のバスアーキテクチャを使用した、メモリバスあるいはメモリコントローラ、２地点間接続、スイッチングファブリック、ペリフェラルバス、アクセラレーテッドグラフィックポート、プロセッサバスあるいはローカルバスを含む、多種の有線または無線のバス構造の１つまたは複数である。例として、そのようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、メザニンバスとも称されるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｓ）バス、ＰＣＩエクスプレス、それらの何らかの組合せ等がある。
【００７８】
コンピュータ７０２は、通例、プロセッサによるアクセスが可能な各種の媒体を含む。そのような媒体は、コンピュータ７０２あるいは他の（例えば電子）デバイスによるアクセスが可能な利用可能媒体でよく、揮発性および不揮発性の媒体と、リムーバブルおよびノンリムーバブルの媒体、および記憶媒体と伝送媒体を含む。
【００７９】
システムメモリ７０６は、ランダムアクセスメモリ（ＲＡＭ）７１０などの揮発性メモリ、および／または読み取り専用メモリ（ＲＯＭ）７１２などの不揮発性メモリの形態のプロセッサアクセス可能記憶媒体を含む。起動時などにコンピュータ７０２内の要素間の情報転送を助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）７１４は、通例ＲＯＭ７１２に記憶される。ＲＡＭ７１０は通例、プロセッサ７０４から即座にアクセスできる、かつ／またはプロセッサ７０４によって現在操作されているデータおよび／またはプログラムモジュール／命令を保持する。
【００８０】
コンピュータ７０２は、他のリムーバブル／ノンリムーバブルの記憶媒体、および／または揮発性／不揮発性の記憶媒体も含むことができる。例として、図７には、（通例は）ノンリムーバブル、不揮発性の磁気媒体（独立しては図示せず）の読み書きを行うハードディスクドライブあるいはディスクドライブアレイ７１６、（通例は）リムーバブル、不揮発性の磁気ディスク７２０（「フロッピー（登録商標）ディスク」など）の読み書きを行う磁気ディスクドライブ７１８、および、ＣＤ、ＤＶＤ、他の光学媒体などの（通例は）リムーバブル、不揮発性の光ディスク７２４の読み取りおよび／または書き込みを行う光ディスクドライブ７２２を示す。ハードディスクドライブ７１６、磁気ディスクドライブ７１８、および光ディスクドライブ７２２はそれぞれ、１つまたは複数の記憶媒体インタフェース７２６でシステムバス７０８に接続される。あるいは、ハードディスクドライブ７１６、磁気ディスクドライブ７１８、光ディスクドライブ７２２は、１つまたは複数の他の別個のインタフェースあるいは組み合わせられたインタフェース（図示せず）でシステムバス７０８に接続してもよい。
【００８１】
これらのディスクドライブとそれに関連付けられたプロセッサアクセス可能媒体は、コンピュータ７０２のデータ構造、プログラムモジュール、他のデータなどのプロセッサ実行可能命令の不揮発性の記憶を提供する。例示的コンピュータ７０２には、ハードディスク７１６、リムーバブル磁気ディスク７２０、リムーバブル光ディスク７２４を示すが、磁気カセットあるいは他の磁気記憶装置、フラッシュメモリ、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタル多用途ディスク）、あるいは他の光学記憶、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（電子的に消去可能なプログラム可能読み取り専用メモリ）など、他のタイプのプロセッサアクセス可能媒体に、デバイスからアクセス可能な命令を記憶することができることは理解されよう。そのような媒体には、いわゆる特殊目的のＩＣチップあるいは配線論理のＩＣチップも含めることができる。すなわち、どのようなプロセッサアクセス可能媒体を利用して、例示的動作環境７００の記憶媒体を実現してもよい。
【００８２】
ハードディスク７１６、磁気ディスク７２０、光ディスク７２４、ＲＯＭ７１２、および／またはＲＡＭ７１０には、いくつのプログラムモジュール（あるいはプロセッサ実行可能命令の他の単位あるいはセット）を記憶してもよく、それには、一般的な例として、オペレーティングシステム７２８、１つまたは複数のアプリケーションプログラム７３０、他のプログラムモジュール７３２、およびプログラムデータ７３４が含まれる。そうしたプロセッサ実行可能命令は、例えば、拡張可能なプレゼンス情報２１０を含むプレゼンス文書２０８、インスタントメッセージクライアント２１２、メッセージ４０２／４０２＊／４０４／４０６、拡張可能なプレゼンス情報２１０を記述するスキーマ、それらの何らかの組合せ等、の１つまたは複数を含むことができる。
【００８３】
ユーザは、キーボード７３６やポインティングデバイス７３８（「マウス」など）などの入力装置を介してコンピュータ７０２にコマンドおよび／または情報を入力することができる。他の入力装置７４０（具体的には図示せず）としては、マイクロフォン、ジョイスティック、ゲームパッド、衛星受信アンテナ、シリアルポート、ビデオカメラ、スキャナ等が可能である。上記および他の入力装置は、システムバス７０８に結合された入力インタフェース７４２を介してプロセッサ７０４に接続される。しかし、入力装置および／または出力装置は、代わりに、パラレルポート、ゲームポート、ＵＳＢ（ユニバーサルシリアルバス）ポート、赤外線ポート、ＩＥＥＥ１３９４（「Ｆｉｒｅｗｉｒｅ」）インタフェース、ＩＥＥＥ８０２．１１無線インタフェース、ブルートゥース（登録商標）無線インタフェースなど、他のインタフェースおよびバス構造で接続してもよい。
【００８４】
モニタ／表示画面７４４あるいは他のタイプの表示装置も、ビデオアダプタ７４６などのインタフェースを介してシステムバス７０８に接続されることができる。ビデオアダプタ７４６（あるいは他の構成要素）は、グラフィック集約的な計算を処理し、多大なディスプレイの要件に対応するためのグラフィックカードであっても、そのようなグラフィックカードを含んでもよい。通例、グラフィックカードは、グラフィックの迅速な表示とグラフィック動作の効率を促進するグラフィックス・プロセッシング・ユニット（ＧＰＵ）、ビデオＲＡＭ（ＶＲＡＭ）等を含む。モニタ７４４に加えて、他の出力周辺装置としては、スピーカ（図示せず）やプリンタ７４８などの構成要素が可能であり、それらの装置は、入力インタフェース７４２を介してコンピュータ７０２に接続されることができる。
【００８５】
コンピュータ７０２は、リモートコンピューティングデバイス７５０などの１つまたは複数のリモートコンピュータとの論理接続を使用するネットワーク環境で動作することができる。例として、リモートコンピューティングデバイス７５０は、周辺装置、パーソナルコンピュータ、携帯コンピュータ（ラップトップコンピュータ、タブレットコンピュータ、ＰＤＡ、モバイル局など）、手のひらあるいはポケットサイズのコンピュータ、腕時計、ゲーム機、サーバ、ルータ、ネットワークコンピュータ、ピアデバイス、別のネットワークノード、あるいは上記の別のデバイスタイプなどである。しかし、図には、リモートコンピューティングデバイス７５０は、上記でコンピュータ７０２との関連で説明した要素または機能の多くまたはすべてを含むことが可能な携帯型コンピュータとして示している。
【００８６】
コンピュータ７０２とリモートコンピュータ７５０間の論理接続は、ＬＡＮ（ローカルエリアネットワーク）７５２および一般的なＷＡＮ（ワイドエリアネットワーク）７５４として図示する。このようなネットワーク環境は、オフィス、企業内のコンピュータネットワーク、イントラネット、インターネット、固定電話網および携帯電話網、一時的な無線ネットワークおよびインフラストラクチャの無線ネットワーク、メッシュネットワーク、他の無線ネットワーク、ゲームネットワーク、それらの組合せ等に一般的に見られる。このようなネットワークと論理通信接続および物理通信接続は、伝送媒体の追加的な例である。
【００８７】
ＬＡＮネットワーク環境で実施される場合、コンピュータ７０２は通常、ネットワークインタフェースあるいはアダプタ７５６を介してＬＡＮ７５２に接続される。ＷＡＮネットワーク環境で実施される場合、コンピュータ７０２は通例、ＷＡＮ７５４を通じて通信を確立するためのモデム７５８あるいは他の構成要素を含む。モデム７５８は、コンピュータ７０２の内部にあっても外部にあってもよく、入出力インタフェース７４２あるいは他の適切な機構を介してシステムバス７０８に接続することができる。図のネットワーク接続は例であり、コンピュータ７０２と７０５間に通信リンクを確立する他の方式を用いてよいことは理解されたい。
【００８８】
動作環境７００で説明するようなネットワーク環境では、コンピュータ７０２との関連で図示されるプログラムモジュールあるいは他の命令、あるいはその一部は、遠隔の媒体記憶装置に、すべてまたは一部を記憶することができる。例として、リモートアプリケーションプログラム７６０がリモートコンピュータ７５０のメモリコンポーネントにあるが、コンピュータ７０２から使用される、あるいはその他の形でアクセスされることができる。また、例示のために、アプリケーションプログラム７３０と、オペレーティングシステム７２８などの他のプロセッサ実行可能命令は、ここでは別個のブロックとして示すが、そのようなプログラム、コンポーネント、および他の命令は、様々な時に、コンピューティングデバイス７０２の様々な記憶コンポーネント（および／またはリモートコンピューティングデバイス７５０）に存在し、コンピュータ７０２のプロセッサ７０４（および／またはリモートコンピューティングデバイス７５０のプロセッサ）によって実行されることが認識される。
【００８９】
構造的、論理的、アルゴリズム的、および機能的な特徴および／または図に固有の術語で、システム、媒体、デバイス、方法、手順、装置、技術、方式、手法、手順、配置、および他の実施について説明したが、頭記の特許請求の範囲に定義される本発明は、必ずしもここに記載される具体的な特徴または図に限定されないことを理解されたい。それら具体的な特徴および図は、特許権が請求される本発明を実施する例示的な形態として開示される。
【図面の簡単な説明】
【００９０】
【図１】従来のインスタントメッセージングアーキテクチャのブロック図である。
【図２】クライアントサイドのプレゼンス文書管理を取り込んだインスタントメッセージングアーキテクチャのブロック図例である。
【図３】拡張可能なプレゼンス文書の例の図である。
【図４】新プレゼンス文書通知メッセージを使用してバディのクライアントにあるプレゼンス情報を更新する例示的機構を説明するブロック図である。
【図５】新プレゼンス文書通知メッセージの例を含むブロック図である。
【図６】起点クライアントのプレゼンス文書が起点クライアントに保持される場合に宛先クライアントでプレゼンス情報を更新する方法の一例を説明する流れ図である。
【図７】本明細書に記載されるクライアントサイドのプレゼンス文書管理の少なくとも１つの態様を（すべて、あるいは部分的に）実施することが可能なコンピューティングデバイス（あるいは汎用デバイス）の動作環境の例を示す図である。
【符号の説明】
【００９１】
２０２  クライアント
２０４  サーバ
２０６  ネットワーク
２１０  ＰＤ情報
２１２  インスタントメッセージクライアント
２１４（１）  クライアント＃１の情報
２１６  バディリスト
２１８  ＰＤ情報
２２０  サーバサイド
２２２  クライアントサイド
２２４  プレゼンス文書の識別
【図１】
2006244494.tif 000004
【図２】
2006244494.tif 000005
【図３】
2006244494.tif 000006
【図４】
2006244494.tif 000007
【図５】
2006244494.tif 000008
【図６】
2006244494.tif 000009
【図７】
2006244494.tif 000010