(57)【要約】  ユビキタスコンピューティング環境におけるデバイス発見のための方法、命令、およびクライアントアプリケーションに関するテクノロジーについて一般的に説明する。いくつかの例においては、これらの方法、命令、およびクライアントアプリケーションは、ユビキタスコンピューティング環境内のデバイスの特徴を一連の階層的なハッシュ番号へと編成することと、それぞれのデバイスに対応する階層的なハッシュ番号を順序付けることと、ハッシュされた検索基準をユビキタスコンピューティング環境内のデバイスのうちの１つにおける順序付けられた階層的なハッシュ番号にマッチさせることを試みることによって、デバイスのうちの特定のデバイスを検索することとを容易にすることができる。
2014500551.tif 000002
【特許請求の範囲】
【請求項１】
ユビキタスコンピューティング環境内のデバイスの特徴を一連の階層的なハッシュ番号へと編成すること（４０２）と、
前記それぞれのデバイスに対応する前記階層的なハッシュ番号を順番に順序付けること（４０８）と、
ハッシュされた検索基準を前記ユビキタスコンピューティング環境内の前記デバイスのうちの１つにおける前記順序付けられた階層的なハッシュ番号にマッチさせることを試みることによって、前記デバイスのうちの特定のデバイスを検索すること（４１０）と
を含む、方法。
【請求項２】
前記デバイスのうちのそれぞれの前記特徴が、前記それぞれのデバイスの機能名および少なくとも１つの説明的な属性を含む、請求項１に記載の方法。
【請求項３】
前記デバイスのうちのそれぞれに関する前記階層的なハッシュ番号が、前記それぞれのデバイスの機能名および１つまたは複数の説明的な属性それぞれの基礎ハッシュ表現の連結を含む、請求項１に記載の方法。
【請求項４】
前記編成することが、
前記デバイスのうちの１つの少なくとも説明的な機能および少なくとも１つの説明的な属性をそれぞれの事前設定されたデータフィールド内に受け取ることと、
前記それぞれの事前設定されたデータフィールドのうちのそれぞれをハッシュすることと、
前記ハッシュされたデータフィールド同士を連結することと
を含む、請求項１に記載の方法。
【請求項５】
前記編成することが、
機能名および少なくとも１つの説明的な属性に従って前記デバイスのそれぞれを個々に分類することであって、
さらに前記機能名および少なくとも１つの説明的な属性が、それぞれの事前設定されたデータフィールド内に入力される、ことと、
前記それぞれのデータフィールドをハッシュすることと
を含み、
前記順序付けることが、
前記デバイスのうちの少なくとも一部に関する前記結合したハッシュされたデータフィールドを、前記ユビキタスコンピューティング環境内の前記デバイスのうちの１つにおいて格納されている配布されたテーブル内で階層的に順序付けることを含む、請求項１に記載の方法。
【請求項６】
前記ユビキタスコンピューティング環境が、非集中型ピアツーピアネットワークである、請求項１に記載の方法。
【請求項７】
前記デバイスが、ワイヤレス通信ネットワーク上のハードウェアデバイスである、請求項１に記載の方法。
【請求項８】
前記順序付けることが、前記デバイスのすべてのうちの少なくとも一部に関する前記階層的なハッシュ値を前記デバイスのうちの１つにおけるフィギュアテーブル内に順番に格納することを含む、請求項１に記載の方法。
【請求項９】
前記デバイスのそれぞれが、前記ユビキタスコンピューティング環境内の所定の数の他のデバイスに関する前記順序付けられた階層的なハッシュ値およびＩＰアドレスを含むフィギュアテーブルを格納する、請求項１に記載の方法。
【請求項１０】
前記ハッシュされた検索基準が、検索の対象となるデバイスの機能名および１つまたは複数の説明的な属性の基礎ハッシュ表現の連結を含む、請求項１に記載の方法。
【請求項１１】
前記検索することが、
求められているデバイスの少なくとも説明的な機能および少なくとも１つの説明的な属性をそれぞれの事前設定されたデータフィールド内に受け取ることと、
前記それぞれの事前設定されたデータフィールドのうちのそれぞれをハッシュすることと、
前記ハッシュされたデータフィールド同士を連結することと、
前記連結されたハッシュされたデータフィールドを前記デバイスのうちの少なくとも一部に対応する前記階層的なハッシュ番号へとマップすることと
を含む、請求項１に記載の方法。
【請求項１２】
実行されたときに、
非集中型コンピューティング環境内のデバイスの属性を受け取ることと、
前記属性を個々にハッシュすることと、
前記ハッシュされた属性同士を前記デバイス用として結合することと、
前記ハッシュされた属性を所定の数の他のデバイスの属性との関連から順序付けることと、
前記非集中型コンピューティング環境内の前記残りのデバイスのうちの少なくとも一部に関する前記順序付けられたハッシュ属性を格納することと、
ハッシュされた検索基準を受け取ることと、
前記受け取られたハッシュ検索基準を、前記非集中型コンピューティング環境上のデバイスのうちの前記一部のデバイスに関する前記格納されたハッシュ属性へとマップすることと
を１つまたは複数のプロセッサに行わせるコンピュータ実行可能命令を格納しているコンピュータ可読媒体。
【請求項１３】
前記格納されたコンピュータ実行可能命令が、前記非集中型コンピューティング環境内の複数のデバイス上に常駐しているソフトウェアクライアント内に含まれている、請求項１２に記載のコンピュータ可読媒体。
【請求項１４】
前記受け取られる属性が、前記デバイスの機能名および少なくとも１つの説明的な属性を含み、
さらに、前記属性を個々にハッシュすることを前記１つまたは複数のプロセッサに行わせる前記コンピュータ実行可能命令が、前記受け取られる属性のそれぞれに関するそれぞれのデータフィールド上で基本ハッシュ関数を実行することを前記１つまたは複数のプロセッサに行わせる、請求項１２に記載のコンピュータ可読媒体。
【請求項１５】
前記ハッシュされた属性を順序付けることを前記１つまたは複数のプロセッサに行わせる前記コンピュータ実行可能命令が、配布されたテーブル内の前記結合されたハッシュされた属性を、前記非集中型コンピューティング環境内の前記残りのデバイスのうちの少なくとも一部の前記結合されたハッシュされた属性とともに編成することを前記１つまたは複数のプロセッサに行わせる、請求項１２に記載のコンピュータ可読媒体。
【請求項１６】
前記格納されたコンピュータ実行可能命令が、前記非集中型コンピューティング環境内の複数のデバイス上に常駐しているソフトウェアクライアント内に含まれており、
さらに、前記ソフトウェアクライアントが常駐している前記非集中型コンピューティング環境内のすべてのデバイスが、配布されたテーブルを格納しており、その中には、前記非集中型コンピューティング環境内の前記それぞれのデバイスおよび前記残りのデバイスのうちの少なくとも一部の前記ハッシュされた属性およびＩＰアドレスが格納されている、請求項１２に記載のコンピュータ可読媒体。
【請求項１７】
実行されたときに、
前記格納された順序付けられたハッシュ属性のうちの１つに対応する前記非集中型コンピューティング環境内のデバイスであって、その格納されたハッシュ属性が、前記受け取られたハッシュ検索基準にマッチするデバイスを識別すること
を前記１つまたは複数のプロセッサに行わせるさらなるコンピュータ実行可能命令を格納している、請求項１２に記載のコンピュータ可読媒体。
【請求項１８】
実行されたときに、
前記格納された順序付けられたハッシュ属性のうちの１つに対応する前記非集中型コンピューティング環境内のデバイスであって、その格納されたハッシュ属性が、前記受け取られたハッシュ検索基準に最も近く一致するデバイスを識別すること
を前記１つまたは複数のプロセッサに行わせるコンピュータ実行可能命令を格納している、請求項１２に記載のコンピュータ可読媒体。
【請求項１９】
前記格納されたコンピュータ実行可能命令が、前記非集中型コンピューティング環境内の複数のデバイス上に常駐しているソフトウェアクライアント内に含まれており、
前記コンピュータ可読媒体が、実行されたときに、前記受け取られたハッシュされた検索基準を、前記ソフトウェアクライアントが常駐している前記非集中型コンピューティング環境内の前記デバイスのうちの別のデバイスに送信することを前記１つまたは複数のプロセッサに行わせるさらなるコンピュータ実行可能命令を格納している、請求項１２に記載のコンピュータ可読媒体。
【請求項２０】
実行されたときに、
ピアツーピアコンピューティング環境内のデバイスの説明的な属性を受け取るためのデバイス記述データフィールドを有するインターフェースを表示することと、
前記それぞれのデバイス記述データフィールド内に入力されたそれぞれの説明的な属性をハッシュすることと、
前記ハッシュされた説明的な属性同士を連結することと、
前記連結されたハッシュされた説明的な属性が、前記クライアントにおけるフィギュアテーブルに格納されているいずれかのハッシュされた文字列にマッチするかどうかを判定することと
を１つまたは複数のプロセッサに行わせるコンピュータ実行可能命令を格納している、クライアントソフトウェアアプリケーション。
【請求項２１】
前記デバイス記述データフィールドが、求められているデバイスの機能名および少なくとも１つの説明的な属性を受け取るように事前設定されている、請求項２０に記載のクライアントソフトウェアアプリケーション。
【請求項２２】
それぞれの説明的な属性をハッシュすることを前記１つまたは複数のプロセッサに行わせる前記コンピュータ実行可能命令がさらに、前記デバイス記述データフィールドのうちの空のフィールドに所定の値を記入することを前記１つまたは複数のプロセッサに行わせる、請求項２０に記載のクライアントソフトウェアアプリケーション。
【請求項２３】
前記クライアントにおける前記フィギュアテーブルが、前記ピアツーピアコンピューティング環境内の所定の数のデバイスの説明的な属性およびＩＰアドレスのハッシュされた文字列を含む、請求項２０に記載のクライアントソフトウェアアプリケーション。
【請求項２４】
判定することを前記１つまたは複数のプロセッサに行わせる前記コンピュータ実行可能命令がさらに、前記連結されたハッシュされた説明的な属性を、前記ソフトウェアアプリケーションが常駐している前記ピアツーピアコンピューティング環境内の前記デバイスのうちの別のデバイスに送信することを前記１つまたは複数のプロセッサに行わせる、請求項２０に記載のクライアントソフトウェアアプリケーション。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載されている実装形態および実施形態は、一般にユビキタスコンピューティング環境における検索に関する。
【背景技術】
【０００２】
ユビキタスコンピューティング環境、特にピアツーピアコンピューティング環境は、非集中型アーキテクチャを採用しており、その非集中型アーキテクチャによって、タスクおよびリソースが、ネットワークノードどうしの間において分割される。ネットワークノード、またはピアは、データおよびストレージを含めたリソースの供給者および消費者の両方である。さらに、そのような環境においては、リソースは、典型的には、基礎をなすインターネットプロトコル（あるいは「ＩＰ」とも呼ばれる）を介して直接やり取りされる。
【０００３】
分散ハッシュテーブル（あるいは「ＤＨＴ」とも呼ばれる）は、ピアツーピアコンピューティング環境においてリソースを探すルックアップサービスを提供する非集中型分散システムの一種である。データの発見および管理のために利用されるＤＨＴベースのネットワークは、Ｃｈｏｒｄプロジェクト、ＰＡＳＴストレージユーティリティ、Ｐ−Ｇｒｉｄ、およびＣｏｏｐＮｅｔコンテンツ配布システムを含む。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｓｔｏｉｃａら、Ｃｈｏｒｄ：Ａ  Ｓｃａｌａｂｌｅ−Ｐｅｅｒ−ｔｏ−ｐｅｅｒ  Ｌｏｏｋｕｐ  Ｓｅｒｖｉｃｅ  ｆｏｒ  Ｉｎｔｅｒｎｅｔ  Ａｐｐｌｉｃａｔｉｏｎｓ，  ＳＩＧＣＯＭＭ  ’０１、２００１年８月２７日〜３１日、アメリカ合衆国カリフォルニア州サンディエゴ
【発明の概要】
【課題を解決するための手段】
【０００５】
あるクライアントアプリケーションが、非集中型コンピューティング環境内のデバイスの特徴を一連の階層的なハッシュ番号へと編成することと、それぞれのデバイスに対応する階層的なハッシュ番号を順序付けることと、ハッシュされた検索基準を非集中型コンピューティング環境内のデバイスのうちの１つにおける順序付けられた階層的なハッシュ番号にマッチさせることを試みることによって、デバイスのうちの特定のデバイスを検索することとを容易にするための方法およびプログラムを実施する。
【０００６】
前述の概要は、例示的なものにすぎず、いかなる形であれ限定することを意図するものではない。上述の例示的な態様、実施形態、および特徴に加えて、さらなる態様、実施形態、および特徴が、図面および以降の詳細な説明を参照することによって明らかになるであろう。
【０００７】
以降の詳細な説明においては、実施形態は、例示としてのみ記載されている。なぜなら、当業者にとっては、以降の詳細な説明から、さまざまな変更および修正が明らかとなるであろうためである。別々の図における同じ参照番号の使用は、同様のまたは同じアイテムを指す。
【図面の簡単な説明】
【０００８】
【図１】本明細書に記載されている実施形態による、デバイス発見を実施することができるピアツーピアの、すなわちユビキタスなコンピューティング環境の一例を示す図である。
【図２】ユビキタスコンピューティング環境におけるデバイス発見のためのクライアントアプリケーションおよび対応するインターフェースの例示的な一実施形態を示す図である。
【図３】ユビキタスコンピューティング環境におけるデバイス発見のさまざまな実施形態において利用されるフィギュアテーブルの一例を示す図である。
【図４】ユビキタスコンピューティング環境におけるデバイス発見のさまざまな実施形態のためのサンプルの処理フローを示す図である。
【図５】ユビキタスコンピューティング環境におけるデバイス発見のさまざまな実施形態を実施することができるサンプルのコンピューティングデバイスを示す図である。
【発明を実施するための形態】
【０００９】
以降の詳細な説明においては、添付の図面を参照し、それらの図面は、本明細書の一部を形成している。それらの図面においては、同様の符号は、典型的には、同様の構成要素を識別する。ただし、そうではないと文脈によって示される場合は除く。さらに、別段の記載がある場合を除いて、それぞれの連続する図面の記述は、前の図面のうちの１つまたは複数からの特徴を参照して、より明確な文脈と、目下の例示的な実施形態のより実質的な説明とを提供することができる。それでもなお、詳細な説明、図面、および特許請求の範囲に記載されている例示的な実施形態は、限定することを意図するものではない。本明細書において提示されている主題の趣旨または範囲から逸脱することなく、その他の実施形態を利用することができ、その他の変更を行うことができる。本明細書において一般的に説明され図において例示されている本開示の態様は、さまざまな異なる構成でアレンジすること、置き換えること、組み合わせること、分割すること、および設計することが可能であり、それらのすべては、明示的に本明細書内のものであると考えられるということが容易にわかるであろう。
【００１０】
図１は、本明細書に記載されている実施形態による、デバイス発見を実施することができるユビキタスコンピューティング環境１００の一例を示している。
【００１１】
ユビキタスコンピューティング環境１００は、あるいはピアツーピアネットワーク１００と見なすこともできる。なぜなら、本明細書に記載されているデバイス発見の実施形態は、非集中型コンピューティング環境のコンテキスト内で実施され、そこでは、ピアノード、またはデバイスが、そのコンピューティング環境内のその他のノードに対してクライアントおよびサーバの両方として機能するためである。
【００１２】
デバイス１０２（ａ）、１０２（ｂ）、１０２（ｃ）、１０２（ｄ）、１０２（ｅ）、．．．、１０２（ｎ）は、あるいは総称的に「デバイス１０２」または一般的に「デバイス１０２」と呼ぶこともでき、非集中型のピアツーピアネットワーク１００上の参加ノードである。デバイス１０２はそれぞれ、ピアツーピアネットワーク１００上の通信エンドポイントまたは端末機器と見なすことができる。さらにデバイス１０２はそれぞれ、ピアツーピアネットワーク１００を介して情報を送信すること、受信すること、または転送することが可能であるアクティブな電子デバイスと見なすことができる。そのようなアクティブな電子デバイスの例としては、モバイル（もしくはセルラー）電話、デスクトップコンピュータ、ラップトップコンピュータ、タブレット／スレートコンピュータ、サーバ、モデム、ハブ、ブリッジ、またはプリンタ／コピー機が含まれるが、それらには限定されない。デバイス１０２の前述の例のうちの少なくともいくつかによれば、ユビキタスコンピューティング環境１００は、あるいはワイヤレス通信ネットワークとして実装することもできる。
【００１３】
図１に示されているように、デバイス１０２のうちのすべてが、互いに直接通信可能に接続されているわけではない。さらに、ピアツーピアネットワーク１００の集団は動的である。すなわち、デバイス１０２のうちのすべてが、ピアツーピアネットワーク１００内に留まっているわけではない。むしろ、デバイス１０２（ａ）、１０２（ｂ）、１０２（ｃ）、１０２（ｄ）、１０２（ｅ）、．．．、１０２（ｎ）のうちのさまざまなデバイスが、ピアツーピアネットワーク１００から抜けることがあり、または１つもしくは複数の動的なデバイスが、ピアツーピアネットワーク１００に加わることがあり、また、ピアツーピアネットワーク１００に対する抹消と加入は、互いに対称である必要はなく、釣り合いが取れている必要もなく、または同時である必要もない。
【００１４】
図１にさらに示されているように、ピアツーピアネットワーク１００上のデバイス１０２（ａ）、１０２（ｂ）、１０２（ｃ）、１０２（ｄ）、１０２（ｅ）、．．．、１０２（ｎ）のそれぞれには、対応するクライアントアプリケーション１０４（ａ）〜（ｎ）が常駐しており、それらは、あるいは総称的に「アプリケーション１０４」または一般的に「アプリケーション１０４」と呼ぶこともできる。アプリケーション１０４は、本明細書に記載されている実施形態に従ってデバイス発見を実施する手段であり、アプリケーション１０４のそれぞれは、それぞれのフィギュアテーブル（あるいは「配布テーブル」と見なすことまたは呼ぶことも可能である）をさらに含む。
【００１５】
図２は、ユビキタスコンピューティング環境１００におけるデバイス発見のためのクライアントアプリケーション１０４および対応するインターフェース２００の例示的な一実施形態を示している。
【００１６】
本明細書に記載されているユビキタスコンピューティング環境におけるデバイス発見の実施形態によれば、ピアツーピアネットワーク１００上のデバイス１０２（ａ）、１０２（ｂ）、１０２（ｃ）、１０２（ｄ）、１０２（ｅ）、．．．、１０２（ｎ）のそれぞれは、それぞれのデバイスの機能を記述するための見出し語、ならびにそれぞれのデバイスの機能性またはその他の何らかの特徴をさらに記述するための１つまたは複数の説明的な語または属性を有することができる。そのようなその他の特徴の非限定的な例としては、デバイスのブランド、モデル、機能性、または地理的場所さえ含むことができる。
【００１７】
さらに、デバイス１０２（ａ）、１０２（ｂ）、１０２（ｃ）、１０２（ｄ）、１０２（ｅ）、．．．、１０２（ｎ）のそれぞれは、クライアントアプリケーション１０４の常駐インスタンスを有することができ、その常駐インスタンスの上に、インタラクティブなインターフェース２００およびフィギュアテーブル２５０が常駐することができる。インターフェース２００は、機能データフィールド２０５を含むことができ、その機能データフィールド２０５内に、デバイス１０２のうちのそれぞれのデバイスのユーザが、ピアツーピアネットワーク１００上で求められている特定のデバイスの機能、たとえば「プリンタ」を入力または指定することができる。インターフェース２００は、データフィールド２１０（ａ）、２１０（ｂ）、２１０（ｃ）、．．．、２１０（ｎ）をさらに含むことができ、これらは、あるいは総称的に「属性データフィールド２１０」と呼ぶこともでき、これらの属性データフィールド２１０内に、デバイス１０２のうちのそれぞれのデバイスのユーザが、ピアツーピアネットワーク１００上で求められているデバイスのさらなる属性を入力または指定することができる。デバイス１０２のうちのそれぞれのデバイスの属性は、別法として、それぞれのデバイス１０２がピアツーピアネットワーク１００に接続されたときなどにユーザの介入を伴わずに自動的に属性データフィールド２１０内に入力されることも可能であるということに留意されたい。デバイス発見のさまざまな実施形態に関しては、機能データフィールド２０５および属性データフィールド２１０（ａ）〜２１０（ｎ）によって、デバイス１０２、およびデバイス１０２のうちの特定のデバイスを探すための検索基準でさえ、編成すること、すなわち分類することができる。
【００１８】
したがって、求められているデバイスがプリンタである場合には、機能データフィールド２０５内に入力される機能属性は、「プリンタ」と入力または指定することができ、次いで、事前設定された属性データフィールド２１０が、求められているプリンタの機能性およびその他の特徴をさらに記述する属性を受け取ることができる。データフィールド２０５に入力または指定される「プリンタ」に関するそのようなさらなる記述の非限定的な例としては、「東芝」、「６５０Ｃ」、「レーザー」、「カラー」、または「２階」を含むことができる。上述のように、属性データフィールド２１０（ａ）〜２１０（ｎ）は、属性データを受け取るように事前設定することができ、属性データは、たとえば、デバイスのブランド、モデル、機能性、または場所を含むことができる。属性データフィールド２１０のうちのどの特定のフィールド内にそれぞれの属性データが入力または指定されることになるかを決定する事前設定は、動的なものとすることができ、実施形態ごとに異なることが可能である。加えて、属性データフィールド２１０は、特定のタイプのデバイス用に一意に事前設定することができ、これは、機能データフィールド２０５への入力によって識別することができる。したがって、非限定的な例として上で提供された属性を使用すると、「東芝」を属性データフィールド２１０（ａ）に入力するかまたはその他の形で指定することができ、「６５０Ｃ」を属性データフィールド２１０（ｂ）に入力するかまたはその他の形で指定することができ、「レーザー」を属性データフィールド２１０（ｃ）に入力するかまたはその他の形で指定することができ、「カラー」を属性データフィールド２１０（ｄ）に入力するかまたはその他の形で指定することができ、「２階」を属性データフィールド２１０（ｇ）に入力するかまたはその他の形で指定することができる。
【００１９】
したがって、上記の例をコンテキストに応じて使用すれば、機能データフィールド２０５への入力に対応するために、属性データフィールド２１０のうちのすべてを記入する必要があるわけではない。なぜなら、たとえば、求められているデバイスの属性のすべてが、デバイス１０２のうちの目下のデバイスのユーザに知られているわけではないためである。上記の例においては、属性データフィールド２１０（ｅ）、２１０（ｆ）、または属性データフィールド２１０（ｇ）の後のフィールドへの入力はない。ある特定の属性が、デバイス１０２のうちの目下のデバイスのユーザに知られていない場合には、その特定の属性を受け取ることになっているデータフィールド２１０のうちの事前設定されたフィールドに、「なし」、「ｎｕｌｌ」、またはそれらの何らかのバリアントを記入して、その対応する属性が値を有していないことを示すことができる。
【００２０】
機能データフィールド２０５、および属性データフィールド２１０（ａ）〜２１０（ｎ）のうちの少なくとも１つへのデータ入力を受け取ると、デバイス１０２のうちのそれぞれのデバイス上のクライアントアプリケーション１０４は、それらのデータ入力をハッシュし、結果として累積検索ハッシュ番号（ＳＨＮ）を得ることができる。
【００２１】
より詳細には、クライアントアプリケーション１０４のいくつかの実施形態においては、基本ハッシュ関数、たとえばＳＨＡ−１を利用して、機能データフィールド２０５および属性データフィールド２１０（ａ）〜２１０（ｎ）のそれぞれを、ハッシュデータフィールド２１５およびハッシュデータフィールド２２０（ａ）〜２２０（ｎ）内の長さＭの対応するハッシュ値に個別にマップすることができ、ハッシュデータフィールド２２０（ａ）〜２２０（ｎ）は、あるいは総称的に「ハッシュデータフィールド２２０」と呼ぶこともできる。したがって、機能データフィールド２０５への入力のハッシュ値は、ハッシュデータフィールド２１５にマップすることができ、属性データフィールド２１０（ａ）〜２１０（ｎ）への入力のハッシュ値は、それぞれハッシュデータフィールド２２０（ａ）〜２２０（ｎ）にマップすることができる。「なし」、「ｎｕｌｌ」、またはそれらの何らかのバリアントの値を有する属性データフィールド２１０（ａ）〜２１０（ｎ）に関しては、ハッシュデータフィールド２２０（ａ）〜２２０（ｎ）のうちの対応するフィールドにゼロの値を投入することができる。
【００２２】
デバイス発見のさまざまな実施形態において、その他の基本ハッシュ関数を利用することもでき、したがって、ＳＨＡ−１の例を引用したことは、いかなる形であれ限定することを意図するものではないということがわかる。
【００２３】
ハッシュデータフィールド２１５および２２０（ａ）〜２２０（ｎ）は、連結することができ、ひいては前述の累積検索ハッシュ番号（ＳＨＮ）と見なすことができる。ＳＨＮは、フィギュアテーブル２５０のコンテンツに対する比較を行ってデバイス発見に至るための尺度または基準である。フィギュアテーブル２５０のコンテンツは、少なくとも、ピアツーピアネットワーク１００上のデバイス１０２のうちの少なくとも一部に関する累積デバイスハッシュ番号（ＤＨＮ）を含む。
【００２４】
図３は、ユビキタスコンピューティング環境１００におけるデバイス発見のさまざまな実施形態において利用される例示的なテーブル、すなわちフィギュアテーブルまたは配布テーブル２５０を示している。
【００２５】
テーブル２５０は、ピアツーピアネットワーク１００上の所定の数のデバイス１０２の少なくともＤＨＮおよびＩＰアドレスを格納することができる。より詳細には、ピアツーピアネットワーク１００がＮ個のデバイスまたはノードを投入されている場合、フィギュアテーブル２５０が配布されているため、デバイス１０２のうちのそれぞれは、ピアツーピアネットワーク１００上のＮ−１個のその他のデバイス１０２のうちの一部のみと通信することによって、基本ハッシュ関数を解くことができる。したがって、定常状態においては、フィギュアテーブル２５０のそれぞれのインスタンスは、約０（ｌｏｇ  Ｎ）個のその他のデバイスのみに関するＤＨＮおよびＩＰアドレスを保持する。
【００２６】
より詳細には、ピアツーピアネットワーク１００上のデバイス１０２（ａ）、１０２（ｂ）、１０２（ｃ）、１０２（ｄ）、１０２（ｅ）、．．．、１０２（ｎ）のうちの任意のデバイスに関するＤＨＮは、デバイス１０２のうちの１つのデバイスのユーザによって求められているデバイスに関してＳＨＮが特定されるのと同じ方法で特定することができる。すなわち、デバイス１０２のうちの特定のデバイスに関する機能データ、すなわち見出し語、および利用可能な属性データを、事前設定されたデータフィールド２０５および２１０（ａ）〜２１０（ｎ）のうちの対応するフィールド内に入力することができ、次いで個々にハッシュして、ハッシュデータフィールド２１５および２２０（ａ）〜２２０（ｎ）と同様のフィールド内の対応するハッシュ値にすることができる。次いで、結果として得られるハッシュデータフィールド２１５および２２０（ａ）〜２２０（ｎ）を連結して、ＳＨＮと同じフォーマットでフィギュアテーブル２５０に入力することができる。
【００２７】
したがって、フィギュアテーブル２５０は、ピアツーピアネットワーク１００上の、たとえば０（ｌｏｇ  Ｎ）個の、またはその他のデバイス１０２に関して少なくともＤＨＮを示すさらなる列を含むことができる。より詳細には、ＳＨＮを格納することに加えて、テーブル２５０は、デバイス１０２のうちの１つまたは複数に関して少なくともＤＨＮおよびＩＰアドレスを格納することができ、ピアツーピアネットワーク１００上のデバイス１０２（ａ）、１０２（ｂ）、１０２（ｃ）、１０２（ｄ）、１０２（ｅ）、．．．、１０２（ｎ）のうちの特定のデバイスを検索するためのプラットフォームとして機能することができる。
【００２８】
上述のように、ピアツーピアネットワーク１００上のデバイス１０２のうちのほぼすべては、自分の上に常駐しているクライアントアプリケーション１０４のインスタンスを含むことができる。そして、クライアントアプリケーション１０４のそれぞれのインスタンスは、自分の中に含まれているインターフェース２００のインスタンスおよびフィギュアテーブル２５０のインスタンスを有することができる。しかし、上述のように、フィギュアテーブル２５０のすべてのインスタンスが、ピアツーピアネットワーク１００上のデバイス１０２のうちのすべてのデバイスに関するＤＨＮを有するわけではない。たとえば、図３の例に示されているフィギュアテーブル２５０は、ＳＨＮと、デバイス１０２（ａ）、１０２（ｂ）、１０２（ｄ）、１０２（ｅ）、および、１０２（ｎ）までのデバイスのうちのさまざまなデバイスに関するＤＨＮとを含む。明らかに欠落しているのは、デバイス１０２（ｃ）に関するＤＨＮだが、１０２（ｎ）までのデバイスのうちのその他のデバイスのＤＨＮも、フィギュアテーブル２５０から欠落している可能性がある。
【００２９】
さらに、上述のように、「なし」、「ｎｕｌｌ」、またはそれらの何らかのバリアントの値を有する属性データフィールド２１０（ａ）〜２１０（ｎ）に関しては、ハッシュデータフィールド２２０（ａ）〜２２０（ｎ）のうちの対応するフィールドにゼロの値を投入することができる。ゼロ以外の値を有するハッシュデータフィールド２２０のうちの最後のフィールドの前にあるゼロの値を有するハッシュデータフィールド２２０（ａ）〜２２０（ｎ−１）のフィールドは、たとえば「空のプレ属性データフィールド」と呼ぶことができ、ゼロ以外の値を有するハッシュデータフィールド２２０のうちの最後のフィールドの後に続くゼロの値を有するハッシュデータフィールド２２０（ｂ）〜２２０（ｎ）のフィールドは、たとえば「空のポスト属性データフィールド」と呼ぶことができる。
【００３０】
したがって、フィギュアテーブル２５０への投入を行う際には、空のプレ属性データフィールドは、ゼロの値を保持することができ、その一方で、空のポスト属性データフィールドには、２Ｍ−１の値を記入することができ、この場合の「Ｍ」はやはり、ハッシュデータフィールド２２０のそれぞれにおけるハッシュ値の長さを指す。もちろん、代替実施形態では、空のプレ属性データフィールドおよび空のポスト属性データフィールドへの値の最初の割り当てを逆にすることもできる。しかし、この実施形態の説明では、空のプレ属性データフィールドが、ゼロの値を有し、空のポスト属性データフィールドが、２Ｍ−１の値を有するということを保持する。フィギュアテーブル２５０の構成のこの態様については、図４の説明と関連してピアツーピアネットワーク１００上のデバイス１０２のうちの特定のデバイスの検索を参照して後述する。
【００３１】
図４は、ユビキタスコンピューティング環境１００におけるデバイス発見のさまざまな実施形態のためのサンプルの処理フロー４００を示している。以降では、図１〜図３の非限定的な例に関して説明した特徴を参照して、サンプルの処理フロー４００について説明する。サンプルの処理フローにおいてオペレーションが記載されている順序は、限定するものと解釈されることを意図しておらず、任意の数の記載されているブロックを任意の順序で、および／または並行して組み合わせて、それぞれのプロセスを実施することができる。その上、図４におけるブロックは、ハードウェア、ソフトウェア、またはそれらの組合せで実装できるオペレーションとすることができる。ソフトウェアのコンテキストにおいては、それらのブロックは、１つまたは複数のプロセッサによって実行されたときに記載のオペレーションを１つまたは複数のプロセッサに実行させるコンピュータ実行可能命令に相当する。一般に、コンピュータ実行可能命令は、特定の機能を実行させるかまたは特定の抽象データ型を実装させるルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。
【００３２】
さらに、上述のように、詳細な説明、図面、および特許請求の範囲に記載されている例示的な実施形態は、限定することを意図するものではない。本明細書において提示されている主題の趣旨または範囲から逸脱することなく、その他の実施形態を利用することができ、その他の変更を行うことができる。したがって、図４の説明は、アプリケーション１０４のそれぞれのインスタンスが、フィギュアテーブル２５０のインスタンスを含むことができるという前述の開示を考慮して「配布テーブル２５０」を指し、フィギュアテーブル２５０は、「配布テーブル」２５０と見なすことまたは呼ぶことも可能である。
【００３３】
ブロック４０２は、ＤＨＮ、および、デバイス発見の少なくともいくつかの実施形態によればＳＨＮの編成を指す。ブロック４０２は、ブロック４０４およびブロック４０６を含む。
【００３４】
ブロック４０４（（１つまたは複数の）デバイスの特徴を編成する）は、より詳細には、ピアツーピアネットワーク１００上のデバイス１０２のうちの少なくとも１つのサブセットの特徴を編成することを指し、これは、クライアントアプリケーション１０４の特定のインスタンスが常駐しているデバイス１０２のうちのそれぞれのデバイスにおいて実施することができ、または別法として、デバイス１０２のうちのその他のデバイスにおいて実施することもできる。前者のシナリオにおいては、所定の数のその他のデバイス１０２の機能データおよび属性データを、クライアントアプリケーション１０４によって、事前設定されたデータフィールド２０５および２１０（ａ）〜２１０（ｎ）において受け取ることができる。後者のシナリオにおいては、それぞれのその他のデバイス１０２の機能データおよび属性データを、それぞれのデバイス１０２におけるクライアントアプリケーション１０４のそれぞれのインスタンスにおいて事前設定されたデータフィールド２０５および２１０（ａ）〜２１０（ｎ）によって編成することができる。処理は、ブロック４０４からブロック４０６へ続くことができる。
【００３５】
ブロック４０６（（１つまたは複数の）デバイスの属性をハッシュする）は、それぞれのデバイス１０２の機能データおよび属性データがハッシュされることを指す。
【００３６】
ブロック４０４における第１のシナリオに続いて、ブロック４０６は、所定の数のその他のデバイス１０２の機能データフィールド２０５への入力および属性データフィールド２１０（ａ）〜２１０（ｎ）への入力をそれぞれハッシュすることを含むことができる。ハッシュデータフィールド２１５および２２０（ａ）〜２２０（ｎ）（それぞれの値は、長さＭを有する）を連結して、それぞれのその他のデバイス１０２に関するＤＨＮを形成することができる。
【００３７】
ブロック４０４における第２のシナリオに続いて、ブロック４０６は、所定の数のその他のデバイス１０２の機能データおよび属性データをハッシュすることを含むことができる。ハッシュデータフィールド２１５および２２０（ａ）〜２２０（ｎ）を連結して、それぞれのデバイス１０２に関するＤＨＮを形成することができ、次いでそのＤＨＮを、それぞれのデバイス１０２が通信する相手のクライアントアプリケーション１０４のインスタンスへ送信することができる。処理は、ブロック４０６からブロック４０８へ続くことができる。
【００３８】
ブロック４０８（（１つまたは複数の）デバイスに関するハッシュ番号を順序付ける）は、それぞれのその他のデバイス１０２のＤＨＮを配布テーブル２５０のインスタンスへと編成することおよび／または順序付けることを指す。それぞれのその他のデバイス１０２に関するＤＨＮの順序付けは、階層的な様式で実施することができ、それによってＤＨＮは、配布テーブル２５０内に順番に、すなわち昇順または降順のハッシュ値に従って格納される。あるいは、配布テーブル２５０におけるそれぞれのデバイス１０２のＤＨＮの順序付けは、さまざまなその他の基準に従って、たとえば、その特定のデバイスがデバイス１０２のうちのその他のデバイスによって求められる頻度や、クライアントアプリケーション１０４の特定のインスタンスが常駐しているデバイス１０２の近接性などに従って、実施することができる。処理は、ブロック４０８からブロック４１０へ続くことができる。
【００３９】
ブロック４１０（（１つまたは複数の）特定のデバイスを検索する）は、ピアツーピアの、すなわちユビキタスなネットワーク１００上のデバイス１０２のうちの任意の特定のデバイスの検索を実施することを指す。
【００４０】
検索のための基礎または基準であるＳＨＮは、求められているデバイスの機能属性を機能データフィールド２０５内に入力し、次いで、求められているデバイスについてさらに記述する属性を、事前設定された属性データフィールド２１０（ａ）〜２１０（ｎ）のうちの適切なフィールド内に入力することによって、編成することができる。もう一度繰り返すが、属性データフィールド２１０（ａ）〜２１０（ｎ）は、属性データを受け取るように事前設定することができ、属性データは、非限定的な例として、デバイスのブランド、モデル、機能性、または場所を含むことができる。さらに、どの特定の属性データフィールド２１０内にそれぞれの属性データが入力されることになるかを決定する事前設定は、動的なものとすることができ、実施形態ごとに異なることが可能であり、属性データフィールド２１０は、特定のタイプのデバイス用に一意に事前設定することができる。
【００４１】
さらに、ブロック４１０におけるオペレーションを実施する際には、機能データフィールド２０５へのそれぞれの入力ごとに、属性データフィールド２１０のうちのすべてが必ずしも記入されるわけではない。求められているデバイスのある特定の属性が知られていない場合には、その特定の属性を受け取ることになっている属性データフィールド２１０のうちの事前設定されたフィールドに、「なし」、「ｎｕｌｌ」、またはそれらの何らかのバリアントを記入して、その対応する属性が値を有していないことを示すことができる。
【００４２】
機能データフィールド２０５、および属性データフィールド２１０（ａ）〜２１０（ｎ）のうちの少なくとも１つへのデータ入力を受け取ると、デバイス１０２のうちのそれぞれのデバイス上のクライアントアプリケーション１０４は、それらのデータ入力上で基本ハッシュ関数を実施し、結果として累積ＳＨＮを得ることができる。すなわち、機能データフィールド２０５および属性データフィールド２１０（ａ）〜２１０（ｎ）のそれぞれは、ハッシュフィールド２１５および２２０（ａ）〜２２０（ｎ）内の対応するハッシュ値にマップすることができる。配布テーブル２５０に投入されているＤＨＮと同様に、空のプレ属性データフィールドは、ゼロの値を保持することができ、空のポスト属性データフィールドは、２Ｍ−１の値を含むことができる。
【００４３】
次いで、ブロック４１０における検索は、ＳＨＮを、配布テーブル２５０に投入されているＤＨＮにマッチさせる試みを含むことができる。ＳＨＮと、前述のＤＨＮのうちの１つとの間に完全なマッチがある場合には、クライアントアプリケーション１０４の特定のインスタンスが常駐しているデバイス１０２上で、その結果の通知が行われる。
【００４４】
ＳＨＮと、前述のＤＨＮのうちの１つとの間に完全なマッチがない場合には、ＳＨＮに最も近くマッチするＤＨＮを探して検索が続けられる。デバイス発見の代替実施形態は、マッチしていないＤＨＮとＳＨＮの間における最も近いマッチを、ＳＨＮの値を超えることなくＳＨＮに最も近くマッチするＤＨＮであると考えることができ、または最も近いＤＨＮマッチを、ＳＨＮの値を超える最も近いＤＨＮの値であると考えることができる。
【００４５】
さらに、配布テーブル２５０に投入されているＤＨＮと、ＳＨＮとの間における最も近いマッチを見つけ出す試みは、クライアントアプリケーション１０４の特定のインスタンスが常駐しているデバイス１０２の対応する値を空のプレ属性データフィールドに記入することを含むことができる。もちろん、代替実施形態によって、２Ｍ−１の値を有する空のプレ属性データフィールドと、ゼロの値を有する空のポスト属性データフィールドとを伴う配布テーブル２５０への投入がはじめに行われるならば、目下のアクションは、空のポスト属性データフィールドが、目下のデバイス１０２の対応する値を記入されることを含むことになる。
【００４６】
上述のように、デバイス１０２のうちのすべてが、互いに直接通信可能に接続されているわけではない。さらに、ピアツーピアネットワーク１００の集団は、動的である場合がある。したがって、ＳＨＮに関するマッチを探す検索を別のデバイスへ転送することによって、その検索は、ピアツーピアネットワーク１０２に投入されているデバイス１０２のうちのより多くのデバイスへ広がる。
【００４７】
デバイス発見の少なくとも１つの実施形態では、ＳＨＮと、テーブル２５０に投入されているＤＨＮのうちのいずれとの間にも完全なマッチが見つからない場合には、検索オペレーションが終わる結果となることが可能である。デバイス発見のその他の代替実施形態では、ＳＨＮをデバイス１０２のうちの別のデバイスへ送信またはその他の形で転送させて、デバイス１０２のうちのその別のデバイスにおけるクライアントアプリケーション１０４のインスタンス上の配布テーブル２５０に投入されているＤＨＮと比較することによって、検索オペレーションが続く結果となることが可能である。そしてそこで、その他の配布テーブル２５０に投入されている、デバイス１０２のうちで、その別のデバイス１０２と通信するデバイスのＤＨＮとともに、プロセス４００を繰り返すことができる。クライアントアプリケーション１０４は、所定の回数の反復の後に、その所定の数のデバイス１０２上で特定のＳＨＮとの完全なマッチが見つからない場合には、検索を終了するように構成することができる。
【００４８】
上述の説明によれば、ピアツーピアの、すなわちユビキタスなコンピューティング環境におけるデバイス発見は、基本ハッシュ関数を使用して実施することができる。
【００４９】
本明細書において開示されているこのプロセスおよび方法ならびにその他のプロセスおよび方法に関して、それらのプロセスおよび方法において実行される機能は、異なる順序で実施することができるということを当業者なら理解するであろう。さらに、概説されているステップおよびオペレーションは、例として提供されているにすぎず、また、それらのステップおよびオペレーションのうちのいくつかは、開示されている実施形態の本質を損なうことなく、オプションとすること、組み合わせて、より少ないステップおよびオペレーションにすること、または、さらなるステップおよびオペレーションへと拡張することが可能である。
【００５０】
さらに、本開示は、本出願に記載されている特定の実施形態の点から限定されるものではなく、それらの特定の実施形態は、さまざまな態様の例示として意図されている。当業者にとっては明らかであろうが、その趣旨および範囲から逸脱することなく、多くの修正形態および変形形態を作成することができる。本明細書において列挙されている方法および装置に加えて、本開示の範囲内である機能的に均等な方法および同等な装置は、当業者にとっては、前述の説明から明らかであろう。そのような修正形態および変形形態は、添付の特許請求の範囲の範疇内に収まることを意図されている。本開示は、添付の特許請求の範囲の文言と、そのような特許請求の範囲が権利を付与されている均等物の全範囲とによってのみ限定されるものである。本開示は、特定の方法、試薬、化合物、組成、または生体系（これらは、もちろん、さまざまなものでありうる）に限定されるものではないということを理解されたい。本明細書において使用されている用語は、特定の実施形態を説明することのみを目的としており、限定することを意図されているものではないということも理解されたい。
【００５１】
図５は、ユビキタスコンピューティング環境におけるデバイス発見のさまざまな実施形態を実施することができるサンプルのコンピューティングデバイス５００を示している。より詳細には、図５は、例示的なコンピューティング実施形態を示しており、そこでは、本明細書に記載されているオペレーション、プロセスなどのいずれも、コンピュータ可読媒体上に格納されているコンピュータ可読命令として実装することができる。それらのコンピュータ可読命令は、たとえば、モバイルユニット、ネットワーク要素、および／またはその他の任意のコンピューティングデバイスのプロセッサによって実行することができる。
【００５２】
非常に基本的な構成５０２においては、コンピューティングデバイス５００は、典型的には、１つまたは複数のプロセッサ５０４と、システムメモリ５０６とを含む。プロセッサ５０４とシステムメモリ５０６との間において通信するために、メモリバス５０８を使用することができる。
【００５３】
所望の構成に応じて、プロセッサ５０４は、任意のタイプのものとすることができ、それらのタイプには、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、デジタルシグナルプロセッサ（ＤＳＰ）、またはそれらの任意の組合せが含まれるが、それらには限定されない。プロセッサ５０４は、レベル１キャッシュ５１０およびレベル２キャッシュ５１２など、もう１つ多いレベルのキャッシングと、プロセッサコア５１４と、レジスタ５１６とを含むことができる。例示的なプロセッサコア５１４は、演算ロジックユニット（ＡＬＵ）、浮動小数点演算ユニット（ＦＰＵ）、デジタル信号処理コア（ＤＳＰコア）、またはそれらの任意の組合せを含むことができる。例示的なメモリコントローラ５１８は、プロセッサ５０４とともに使用することもでき、または、いくつかの実装形態においては、メモリコントローラ５１８は、プロセッサ５０４の内部の一部分とすることができる。
【００５４】
所望の構成に応じて、システムメモリ５０６は、任意のタイプのものとすることができ、それらのタイプには、揮発性メモリ（ＲＡＭなど）、不揮発性メモリ（ＲＯＭ、フラッシュメモリなど）、またはそれらの任意の組合せが含まれるが、それらには限定されない。システムメモリ５０６は、オペレーティングシステム５２０と、１つまたは複数のアプリケーション５２２と、プログラムデータ５２４とを含むことができる。
【００５５】
アプリケーション５２２は、クライアントアプリケーション１０４を含むことができ、このクライアントアプリケーション１０４は、図１〜図４に関連して前述した機能を含む、本明細書に記載されている機能を実行するように構成されている。プログラムデータ５２４は、テーブル２５０を含むことができ、このテーブル２５０は、あるいは「フィギュアテーブル２５０」または「配布テーブル２５０」と呼ぶこともでき、本明細書に記載されているデバイス発見を実施する上で役立つことができる。
【００５６】
コンピューティングデバイス５００は、基本的な構成５０２と、必要とされるあらゆるデバイスおよびインターフェースとの間における通信を容易にするためのさらなる特徴または機能性およびさらなるインターフェースを有することができる。たとえば、ストレージインターフェースバス５３４を介した、基本的な構成５０２と、１つまたは複数のデータストレージデバイス５３２との間における通信を容易にするために、バス／インターフェースコントローラ５３０を使用することができる。データストレージデバイス５３２は、取り外し可能なストレージデバイス５３６、取り外し不能なストレージデバイス５３８、またはそれらの組合せとすることができる。取り外し可能なストレージデバイスおよび取り外し不能なストレージデバイスの例としては、いくつか挙げると、フレキシブルディスクドライブおよびハードディスクドライブ（ＨＤＤ）などの磁気ディスクデバイス、コンパクトディスク（ＣＤ）ドライブまたはデジタル多用途ディスク（ＤＶＤ）ドライブなどの光ディスクドライブ、ソリッドステートドライブ（ＳＳＤ）、ならびにテープドライブが含まれる。例示的なコンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を格納するための任意の方法またはテクノロジーにおいて実装される揮発性の媒体および不揮発性の媒体、ならびに取り外し可能な媒体および取り外し不能な媒体を含むことができる。
【００５７】
システムメモリ５０６、取り外し可能なストレージデバイス５３６、および取り外し不能なストレージデバイス５３８は、コンピュータストレージ媒体の例である。コンピュータストレージ媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくはその他のメモリテクノロジー、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、もしくはその他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくはその他の磁気ストレージデバイス、または、所望の情報を格納するために使用することができ、かつコンピューティングデバイス５００によってアクセスすることができるその他の任意の媒体を含むことができるが、それらには限定されない。そのような任意のコンピュータストレージ媒体をコンピューティングデバイス５００の一部とすることができる。
【００５８】
コンピューティングデバイス５００は、さまざまなインターフェースデバイス、たとえば、出力デバイス５４２、周辺インターフェース５４４、および通信デバイス５４６から、バス／インターフェースコントローラ５３０を介して、基本的な構成５０２へ至る通信を容易にするためのインターフェースバス５４０を含むこともできる。例示的な出力デバイス５４２は、グラフィックスプロセッシングユニット５４８およびオーディオ処理装置５５０を含むことができ、グラフィックスプロセッシングユニット５４８およびオーディオ処理装置５５０は、１つまたは複数のＡ／Ｖポート５５２を介して、ディスプレイまたはスピーカーなどのさまざまな外部デバイスに通信するように構成することができる。例示的な周辺インターフェース５４４は、シリアルインターフェースコントローラ５５４またはパラレルインターフェースコントローラ５５６を含むことができ、シリアルインターフェースコントローラ５５４またはパラレルインターフェースコントローラ５５６は、１つまたは複数のＩ／Ｏポート４５８を介して、入力デバイス（たとえば、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス等）またはその他の周辺デバイス（たとえば、プリンタ、スキャナ等）などの外部デバイスと通信するように構成することができる。例示的な通信デバイス５４６は、ネットワークコントローラ５６０を含むことができ、ネットワークコントローラ５６０は、１つまたは複数の通信ポート５６４を経由した、かつネットワーク通信リンクを介した、１つまたは複数のその他のコンピューティングデバイス５６２との通信を容易にするように構成することができる。
【００５９】
ネットワーク通信リンクは、通信媒体の一例と見なすことができる。通信媒体は、典型的には、搬送波もしくはその他の伝送メカニズムなどの変調されたデータ信号内のコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータによって具体化することができ、任意の情報伝達メディアを含むことができる。「変調されたデータ信号」とは、情報をその信号内でコード化するような方法で設定または変更されたその特性のうちの１つまたは複数を有する信号と見なすことができる。限定ではなく、例として、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、ならびに、音波媒体、ラジオ周波数（ＲＦ）媒体、マイクロ波媒体、赤外線（ＩＲ）媒体、およびその他のワイヤレス媒体などのワイヤレス媒体を含むことができる。コンピュータ可読媒体という用語は、本明細書において使用される際には、ストレージ媒体および通信媒体の両方を含むことができる。
【００６０】
コンピューティングデバイス５００は、携帯電話、携帯情報端末（ＰＤＡ）、パーソナルメディアプレーヤデバイス、ワイヤレスウェブ閲覧デバイス、パーソナルヘッドセットデバイス、アプリケーション固有のデバイス、または、上記の機能のうちの任意のものを含むハイブリッドデバイスなど、スモールフォームファクタのポータブル（またはモバイル）電子デバイスの一部分として実装することができる。コンピューティングデバイス４００は、ラップトップコンピュータの構成およびラップトップコンピュータ以外の構成の両方を含めて、パーソナルコンピュータとして実装することもできる。
【００６１】
システムの側面でのハードウェアの実装形態とソフトウェアの実装形態との間には、ほとんど相違が残されていない。ハードウェアまたはソフトウェアの使用は、一般に（いつもそうではないが、ある状況ではハードウェアとソフトウェアの間の選択が重要になり得るという点で）コスト対効果のトレードオフを表す設計上の選択である。本明細書に記載された、プロセスおよび／またはシステムおよび／または他の技術を実施することができるさまざまな達成手段があり（たとえば、ハードウェア、ソフトウェア、および／またはファームウェア）、好ましい達成手段は、プロセスおよび／またはシステムおよび／または他の技術が導入される状況によって異なり得る。たとえば、実装者が速度と正確性が最も重要であると決定すると、実装者は主にハードウェアおよび／またはファームウェアの達成手段を選択することができる。フレキシビリティが最も重要なら、実装者は主にソフトウェアの実装形態を選択することができる。または、さらに別の代替案として、実装者は、ハードウェア、ソフトウェア、および／またはファームウェアのなんらかの組合せを選択することができる。
【００６２】
前述の詳細な説明では、ブロック図、フローチャート、および／または例の使用によって、デバイスの発見のための装置および／またはプロセスのさまざまな実施形態を説明してきた。そのようなブロック図、フローチャート、および／または例が１つまたは複数の機能および／または動作を含む限りにおいて、そのようなブロック図、フローチャート、または例の中のそれぞれの機能および／または動作は、広範囲のハードウェア、ソフトウェア、ファームウェア、または実質上それらのすべての組合せにより、個別におよび／または集合的に実装可能であることが、当業者には理解されるであろう。ある実施形態では、本明細書に記載された主題のいくつかの部分は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタルシグナルプロセッサ（ＤＳＰ）、または他の集積化方式によって実装することができる。しかし、本明細書で開示された実施形態のいくつかの態様が、全体においてまたは一部において、１つまたは複数のコンピュータ上で動作する１つまたは複数のコンピュータプログラムとして（たとえば、１つまたは複数のコンピュータシステム上で動作する１つまたは複数のプログラムとして）、１つまたは複数のプロセッサ上で動作する１つまたは複数のプログラムとして（たとえば、１つまたは複数のマイクロプロセッサ上で動作する１つまたは複数のプログラムとして）、ファームウェアとして、あるいは実質上それらの任意の組合せとして、等価に集積回路に実装することができることを、当業者は認識するであろうし、電気回路の設計ならびに／またはソフトウェアおよび／もしくはファームウェアのコーディングが、本開示に照らして十分当業者の技能の範囲内であることを、当業者は認識するであろう。さらに、本明細書に記載された主題のメカニズムをさまざまな形式のプログラム製品として配布することができることを、当業者は理解するであろうし、本明細書に記載された主題の例示的な実施形態が、実際に配布を実行するために使用される信号伝達媒体の特定のタイプにかかわらず適用されることを、当業者は理解するであろう。信号伝達媒体の例には、フロッピー（登録商標）ディスク、ハードディスクドライブ、ＣＤ、ＤＶＤ、デジタルテープ、コンピュータメモリ、などの記録可能なタイプの媒体、ならびに、デジタル通信媒体および／またはアナログ通信媒体（たとえば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど）の通信タイプの媒体が含まれるが、それらには限定されない。
【００６３】
本明細書で説明したやり方で装置および／またはプロセスを記載し、その後そのように記載された装置および／またはプロセスを、データ処理システムに統合するためにエンジニアリング方式を使用することは、当技術分野で一般的であることを当業者は認識するであろう。すなわち、本明細書に記載された装置および／またはプロセスの少なくとも一部を、妥当な数の実験によってデータ処理システムに統合することができる。通常のデータ処理システムは、一般に、システムユニットハウジング、ビデオディスプレイ装置、揮発性メモリおよび不揮発性メモリなどのメモリ、マイクロプロセッサおよびデジタル信号プロセッサなどのプロセッサ、オペレーティングシステムなどの計算実体、ドライバ、グラフィカルユーザインタフェース、およびアプリケーションプログラムのうちの１つもしくは複数、タッチパッドもしくはスクリーンなどの１つもしくは複数の相互作用装置、ならびに／またはフィードバックループおよびコントロールモータを含むコントロールシステム（たとえば、位置検知用および／もしくは速度検知用フィードバック、コンポーネントの移動用および／もしくは数量の調整用コントロールモータ）を含むことを、当業者は理解するであろう。通常のデータ処理システムは、データコンピューティング／通信システムおよび／またはネットワークコンピューティング／通信システムの中に通常見られるコンポーネントなどの、市販の適切なコンポーネントを利用して実装することができる。
【００６４】
本明細書に記載された主題は、さまざまなコンポーネントをしばしば例示しており、これらのコンポーネントは、他のさまざまなコンポーネントに包含されるか、または他のさまざまなコンポーネントに接続される。そのように図示されたアーキテクチャは、単に例にすぎず、実際には、同じ機能を実現する多くの他のアーキテクチャが実装可能であることが理解されよう。概念的な意味で、同じ機能を実現するコンポーネントの任意の構成は、所望の機能が実現されるように効果的に「関連付け」される。したがって、特定の機能を実現するために組み合わされた、本明細書における任意の２つのコンポーネントは、アーキテクチャまたは中間のコンポーネントにかかわらず、所望の機能が実現されるように、お互いに「関連付け」されていると見ることができる。同様に、そのように関連付けされた任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に接続」または「動作可能に結合」されていると見なすこともでき、そのように関連付け可能な任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に結合できる」と見なすこともできる。動作可能に結合できる場合の具体例には、物理的にかみ合わせ可能な、および／もしくは物理的に相互作用するコンポーネント、ならびに／またはワイヤレスに相互作用可能な、および／もしくはワイヤレスに相互作用するコンポーネント、ならびに／または論理的に相互作用する、および／もしくは論理的に相互作用可能なコンポーネントが含まれるが、それらに限定されない。
【００６５】
最後に、本明細書における実質的にすべての複数形および／または単数形の用語の使用に対して、当業者は、状況および／または用途に適切なように、複数形から単数形に、および／または単数形から複数形に変換することができる。さまざまな単数形／複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
【００６６】
通常、本明細書において、特に添付の特許請求の範囲、たとえば、添付の特許請求の範囲の本体部において使用される用語は、全体を通じて「オープンな（ｏｐｅｎ）」用語として意図されていることが、当業者には理解されよう。たとえば、用語「含む（ｉｎｃｌｕｄｉｎｇ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｉｎｇ  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきであり、用語「有する（ｈａｖｉｎｇ）」は、「少なくとも有する（ｈａｖｉｎｇ  ａｔ  ｌｅａｓｔ）」と解釈されるべきであり、用語「含む（ｉｎｃｌｕｄｅｓ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｅｓ  ｂｕｔ  ｉｓ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきである、などである。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。たとえば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ）」および「１つまたは複数の（ｏｎｅ  ｏｒ  ｍｏｒｅ）」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「１つまたは複数の」または「少なくとも１つの」および「ａ」または「ａｎ」などの不定冠詞を含む場合であっても、不定冠詞「ａ」または「ａｎ」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に１つのそのような記載を含む実施形態に限定する、ということを示唆していると解釈されるべきではなく、たとえば、「ａ」および／または「ａｎ」は、「少なくとも１つの」または「１つまたは複数の」を意味すると解釈されるべきである。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、少なくとも記載された数を意味すると解釈されるべきであり、たとえば、他の修飾語なしでの「２つの記載（ｔｗｏ  ｒｅｃｉｔａｔｉｏｎｓ）」の単なる記載は、少なくとも２つの記載、または２つ以上の記載を意味することが当業者には理解されよう。さらに、「Ａ、ＢおよびＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されており、たとえば、「Ａ、Ｂ、およびＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含むが、それに限定されない。「Ａ、Ｂ、またはＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されており、たとえば、「Ａ、Ｂ、またはＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含���が、それに限定されない。２つ以上の代替用語を提示する事実上いかなる離接する語および／または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方（ｏｎｅ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、当該用語のいずれか（ｅｉｔｈｅｒ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、または両方の用語（ｂｏｔｈ  ｔｅｒｍｓ）を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。たとえば、句「ＡまたはＢ」は、「Ａ」または「Ｂ」あるいは「ＡおよびＢ」の可能性を含むことが理解されよう。
【００６７】
加えて、本開示の特徴または態様がマーカッシュ群として記載される場合、このことによって、当業者なら、本開示がマーカッシュ群の構成要素の任意の個別の構成要素または部分群としても記載されることを認識するであろう。
【００６８】
本開示のさまざまな実施形態は、例示の目的で本明細書に記載されているということ、ならびに、本開示の範囲および趣旨から逸脱することなく、さまざまな修正を行うことができるということが、前述の内容からわかるであろう。したがって、本明細書において開示されているさまざまな実施形態は、限定することを意図するものではなく、真の範囲および趣旨は、添付の特許請求の範囲によって示されている。
【００６９】
引用リスト
１．Ｓｔｏｉｃａら、Ｃｈｏｒｄ：Ａ  Ｓｃａｌａｂｌｅ−Ｐｅｅｒ−ｔｏ−ｐｅｅｒ  Ｌｏｏｋｕｐ  Ｓｅｒｖｉｃｅ  ｆｏｒ  Ｉｎｔｅｒｎｅｔ  Ａｐｐｌｉｃａｔｉｏｎｓ，  ＳＩＧＣＯＭＭ  ’０１、２００１年８月２７日〜３１日、アメリカ合衆国カリフォルニア州サンディエゴ
【図１】
2014500551.tif 000003
【図２】
2014500551.tif 000004
【図３】
2014500551.tif 000005
【図４】
2014500551.tif 000006
【図５】
2014500551.tif 000007
【国際調査報告】
2014500551.tif 000008
2014500551.tif 000009