以降の詳細な説明においては、添付の図面を参照し、それらの図面は、本明細書の一部を形成している。それらの図面においては、同様の符号は、典型的には、同様の構成要素を識別する。ただし、そうではないと文脈によって示される場合は除く。さらに、別段の記載がある場合を除いて、それぞれの連続する図面の記述は、前の図面のうちの1つまたは複数からの特徴を参照して、より明確な文脈と、目下の例示的な実施形態のより実質的な説明とを提供することができる。それでもなお、詳細な説明、図面、および特許請求の範囲に記載されている例示的な実施形態は、限定することを意図するものではない。本明細書において提示されている主題の趣旨または範囲から逸脱することなく、その他の実施形態を利用することができ、その他の変更を行うことができる。本明細書において一般的に説明され図において例示されている本開示の態様は、さまざまな異なる構成でアレンジすること、置き換えること、組み合わせること、分割すること、および設計することが可能であり、それらのすべては、明示的に本明細書内のものであると考えられるということが容易にわかるであろう。
図1は、本明細書に記載されている実施形態による、デバイス発見を実施することができるユビキタスコンピューティング環境100の一例を示している。
ユビキタスコンピューティング環境100は、あるいはピアツーピアネットワーク100と見なすこともできる。なぜなら、本明細書に記載されているデバイス発見の実施形態は、非集中型コンピューティング環境のコンテキスト内で実施され、そこでは、ピアノード、またはデバイスが、そのコンピューティング環境内のその他のノードに対してクライアントおよびサーバの両方として機能するためである。
デバイス102(a)、102(b)、102(c)、102(d)、102(e)、...、102(n)は、あるいは総称的に「デバイス102」または一般的に「デバイス102」と呼ぶこともでき、非集中型のピアツーピアネットワーク100上の参加ノードである。デバイス102はそれぞれ、ピアツーピアネットワーク100上の通信エンドポイントまたは端末機器と見なすことができる。さらにデバイス102はそれぞれ、ピアツーピアネットワーク100を介して情報を送信すること、受信すること、または転送することが可能であるアクティブな電子デバイスと見なすことができる。そのようなアクティブな電子デバイスの例としては、モバイル(もしくはセルラー)電話、デスクトップコンピュータ、ラップトップコンピュータ、タブレット/スレートコンピュータ、サーバ、モデム、ハブ、ブリッジ、またはプリンタ/コピー機が含まれるが、それらには限定されない。デバイス102の前述の例のうちの少なくともいくつかによれば、ユビキタスコンピューティング環境100は、あるいはワイヤレス通信ネットワークとして実装することもできる。
図1に示されているように、デバイス102のうちのすべてが、互いに直接通信可能に接続されているわけではない。さらに、ピアツーピアネットワーク100の集団は動的である。すなわち、デバイス102のうちのすべてが、ピアツーピアネットワーク100内に留まっているわけではない。むしろ、デバイス102(a)、102(b)、102(c)、102(d)、102(e)、...、102(n)のうちのさまざまなデバイスが、ピアツーピアネットワーク100から抜けることがあり、または1つもしくは複数の動的なデバイスが、ピアツーピアネットワーク100に加わることがあり、また、ピアツーピアネットワーク100に対する抹消と加入は、互いに対称である必要はなく、釣り合いが取れている必要もなく、または同時である必要もない。
図1にさらに示されているように、ピアツーピアネットワーク100上のデバイス102(a)、102(b)、102(c)、102(d)、102(e)、...、102(n)のそれぞれには、対応するクライアントアプリケーション104(a)〜(n)が常駐しており、それらは、あるいは総称的に「アプリケーション104」または一般的に「アプリケーション104」と呼ぶこともできる。アプリケーション104は、本明細書に記載されている実施形態に従ってデバイス発見を実施する手段であり、アプリケーション104のそれぞれは、それぞれのフィギュアテーブル(あるいは「配布テーブル」と見なすことまたは呼ぶことも可能である)をさらに含む。
図2は、ユビキタスコンピューティング環境100におけるデバイス発見のためのクライアントアプリケーション104および対応するインターフェース200の例示的な一実施形態を示している。
本明細書に記載されているユビキタスコンピューティング環境におけるデバイス発見の実施形態によれば、ピアツーピアネットワーク100上のデバイス102(a)、102(b)、102(c)、102(d)、102(e)、...、102(n)のそれぞれは、それぞれのデバイスの機能を記述するための見出し語、ならびにそれぞれのデバイスの機能性またはその他の何らかの特徴をさらに記述するための1つまたは複数の説明的な語または属性を有することができる。そのようなその他の特徴の非限定的な例としては、デバイスのブランド、モデル、機能性、または地理的場所さえ含むことができる。
さらに、デバイス102(a)、102(b)、102(c)、102(d)、102(e)、...、102(n)のそれぞれは、クライアントアプリケーション104の常駐インスタンスを有することができ、その常駐インスタンスの上に、インタラクティブなインターフェース200およびフィギュアテーブル250が常駐することができる。インターフェース200は、機能データフィールド205を含むことができ、その機能データフィールド205内に、デバイス102のうちのそれぞれのデバイスのユーザが、ピアツーピアネットワーク100上で求められている特定のデバイスの機能、たとえば「プリンタ」を入力または指定することができる。インターフェース200は、データフィールド210(a)、210(b)、210(c)、...、210(n)をさらに含むことができ、これらは、あるいは総称的に「属性データフィールド210」と呼ぶこともでき、これらの属性データフィールド210内に、デバイス102のうちのそれぞれのデバイスのユーザが、ピアツーピアネットワーク100上で求められているデバイスのさらなる属性を入力または指定することができる。デバイス102のうちのそれぞれのデバイスの属性は、別法として、それぞれのデバイス102がピアツーピアネットワーク100に接続されたときなどにユーザの介入を伴わずに自動的に属性データフィールド210内に入力されることも可能であるということに留意されたい。デバイス発見のさまざまな実施形態に関しては、機能データフィールド205および属性データフィールド210(a)〜210(n)によって、デバイス102、およびデバイス102のうちの特定のデバイスを探すための検索基準でさえ、編成すること、すなわち分類することができる。
したがって、求められているデバイスがプリンタである場合には、機能データフィールド205内に入力される機能属性は、「プリンタ」と入力または指定することができ、次いで、事前設定された属性データフィールド210が、求められているプリンタの機能性およびその他の特徴をさらに記述する属性を受け取ることができる。データフィールド205に入力または指定される「プリンタ」に関するそのようなさらなる記述の非限定的な例としては、「東芝」、「650C」、「レーザー」、「カラー」、または「2階」を含むことができる。上述のように、属性データフィールド210(a)〜210(n)は、属性データを受け取るように事前設定することができ、属性データは、たとえば、デバイスのブランド、モデル、機能性、または場所を含むことができる。属性データフィールド210のうちのどの特定のフィールド内にそれぞれの属性データが入力または指定されることになるかを決定する事前設定は、動的なものとすることができ、実施形態ごとに異なることが可能である。加えて、属性データフィールド210は、特定のタイプのデバイス用に一意に事前設定することができ、これは、機能データフィールド205への入力によって識別することができる。したがって、非限定的な例として上で提供された属性を使用すると、「東芝」を属性データフィールド210(a)に入力するかまたはその他の形で指定することができ、「650C」を属性データフィールド210(b)に入力するかまたはその他の形で指定することができ、「レーザー」を属性データフィールド210(c)に入力するかまたはその他の形で指定することができ、「カラー」を属性データフィールド210(d)に入力するかまたはその他の形で指定することができ、「2階」を属性データフィールド210(g)に入力するかまたはその他の形で指定することができる。
したがって、上記の例をコンテキストに応じて使用すれば、機能データフィールド205への入力に対応するために、属性データフィールド210のうちのすべてを記入する必要があるわけではない。なぜなら、たとえば、求められているデバイスの属性のすべてが、デバイス102のうちの目下のデバイスのユーザに知られているわけではないためである。上記の例においては、属性データフィールド210(e)、210(f)、または属性データフィールド210(g)の後のフィールドへの入力はない。ある特定の属性が、デバイス102のうちの目下のデバイスのユーザに知られていない場合には、その特定の属性を受け取ることになっているデータフィールド210のうちの事前設定されたフィールドに、「なし」、「null」、またはそれらの何らかのバリアントを記入して、その対応する属性が値を有していないことを示すことができる。
機能データフィールド205、および属性データフィールド210(a)〜210(n)のうちの少なくとも1つへのデータ入力を受け取ると、デバイス102のうちのそれぞれのデバイス上のクライアントアプリケーション104は、それらのデータ入力をハッシュし、結果として累積検索ハッシュ番号(SHN)を得ることができる。
より詳細には、クライアントアプリケーション104のいくつかの実施形態においては、基本ハッシュ関数、たとえばSHA−1を利用して、機能データフィールド205および属性データフィールド210(a)〜210(n)のそれぞれを、ハッシュデータフィールド215およびハッシュデータフィールド220(a)〜220(n)内の長さMの対応するハッシュ値に個別にマップすることができ、ハッシュデータフィールド220(a)〜220(n)は、あるいは総称的に「ハッシュデータフィールド220」と呼ぶこともできる。したがって、機能データフィールド205への入力のハッシュ値は、ハッシュデータフィールド215にマップすることができ、属性データフィールド210(a)〜210(n)への入力のハッシュ値は、それぞれハッシュデータフィールド220(a)〜220(n)にマップすることができる。「なし」、「null」、またはそれらの何らかのバリアントの値を有する属性データフィールド210(a)〜210(n)に関しては、ハッシュデータフィールド220(a)〜220(n)のうちの対応するフィールドにゼロの値を投入することができる。
デバイス発見のさまざまな実施形態において、その他の基本ハッシュ関数を利用することもでき、したがって、SHA−1の例を引用したことは、いかなる形であれ限定することを意図するものではないということがわかる。
ハッシュデータフィールド215および220(a)〜220(n)は、連結することができ、ひいては前述の累積検索ハッシュ番号(SHN)と見なすことができる。SHNは、フィギュアテーブル250のコンテンツに対する比較を行ってデバイス発見に至るための尺度または基準である。フィギュアテーブル250のコンテンツは、少なくとも、ピアツーピアネットワーク100上のデバイス102のうちの少なくとも一部に関する累積デバイスハッシュ番号(DHN)を含む。
図3は、ユビキタスコンピューティング環境100におけるデバイス発見のさまざまな実施形態において利用される例示的なテーブル、すなわちフィギュアテーブルまたは配布テーブル250を示している。
テーブル250は、ピアツーピアネットワーク100上の所定の数のデバイス102の少なくともDHNおよびIPアドレスを格納することができる。より詳細には、ピアツーピアネットワーク100がN個のデバイスまたはノードを投入されている場合、フィギュアテーブル250が配布されているため、デバイス102のうちのそれぞれは、ピアツーピアネットワーク100上のN−1個のその他のデバイス102のうちの一部のみと通信することによって、基本ハッシュ関数を解くことができる。したがって、定常状態においては、フィギュアテーブル250のそれぞれのインスタンスは、約0(log N)個のその他のデバイスのみに関するDHNおよびIPアドレスを保持する。
より詳細には、ピアツーピアネットワーク100上のデバイス102(a)、102(b)、102(c)、102(d)、102(e)、...、102(n)のうちの任意のデバイスに関するDHNは、デバイス102のうちの1つのデバイスのユーザによって求められているデバイスに関してSHNが特定されるのと同じ方法で特定することができる。すなわち、デバイス102のうちの特定のデバイスに関する機能データ、すなわち見出し語、および利用可能な属性データを、事前設定されたデータフィールド205および210(a)〜210(n)のうちの対応するフィールド内に入力することができ、次いで個々にハッシュして、ハッシュデータフィールド215および220(a)〜220(n)と同様のフィールド内の対応するハッシュ値にすることができる。次いで、結果として得られるハッシュデータフィールド215および220(a)〜220(n)を連結して、SHNと同じフォーマットでフィギュアテーブル250に入力することができる。
したがって、フィギュアテーブル250は、ピアツーピアネットワーク100上の、たとえば0(log N)個の、またはその他のデバイス102に関して少なくともDHNを示すさらなる列を含むことができる。より詳細には、SHNを格納することに加えて、テーブル250は、デバイス102のうちの1つまたは複数に関して少なくともDHNおよびIPアドレスを格納することができ、ピアツーピアネットワーク100上のデバイス102(a)、102(b)、102(c)、102(d)、102(e)、...、102(n)のうちの特定のデバイスを検索するためのプラットフォームとして機能することができる。
上述のように、ピアツーピアネットワーク100上のデバイス102のうちのほぼすべては、自分の上に常駐しているクライアントアプリケーション104のインスタンスを含むことができる。そして、クライアントアプリケーション104のそれぞれのインスタンスは、自分の中に含まれているインターフェース200のインスタンスおよびフィギュアテーブル250のインスタンスを有することができる。しかし、上述のように、フィギュアテーブル250のすべてのインスタンスが、ピアツーピアネットワーク100上のデバイス102のうちのすべてのデバイスに関するDHNを有するわけではない。たとえば、図3の例に示されているフィギュアテーブル250は、SHNと、デバイス102(a)、102(b)、102(d)、102(e)、および、102(n)までのデバイスのうちのさまざまなデバイスに関するDHNとを含む。明らかに欠落しているのは、デバイス102(c)に関するDHNだが、102(n)までのデバイスのうちのその他のデバイスのDHNも、フィギュアテーブル250から欠落している可能性がある。
さらに、上述のように、「なし」、「null」、またはそれらの何らかのバリアントの値を有する属性データフィールド210(a)〜210(n)に関しては、ハッシュデータフィールド220(a)〜220(n)のうちの対応するフィールドにゼロの値を投入することができる。ゼロ以外の値を有するハッシュデータフィールド220のうちの最後のフィールドの前にあるゼロの値を有するハッシュデータフィールド220(a)〜220(n−1)のフィールドは、たとえば「空のプレ属性データフィールド」と呼ぶことができ、ゼロ以外の値を有するハッシュデータフィールド220のうちの最後のフィールドの後に続くゼロの値を有するハッシュデータフィールド220(b)〜220(n)のフィールドは、たとえば「空のポスト属性データフィールド」と呼ぶことができる。
したがって、フィギュアテーブル250への投入を行う際には、空のプレ属性データフィールドは、ゼロの値を保持することができ、その一方で、空のポスト属性データフィールドには、2M−1の値を記入することができ、この場合の「M」はやはり、ハッシュデータフィールド220のそれぞれにおけるハッシュ値の長さを指す。もちろん、代替実施形態では、空のプレ属性データフィールドおよび空のポスト属性データフィールドへの値の最初の割り当てを逆にすることもできる。しかし、この実施形態の説明では、空のプレ属性データフィールドが、ゼロの値を有し、空のポスト属性データフィールドが、2M−1の値を有するということを保持する。フィギュアテーブル250の構成のこの態様については、図4の説明と関連してピアツーピアネットワーク100上のデバイス102のうちの特定のデバイスの検索を参照して後述する。
図4は、ユビキタスコンピューティング環境100におけるデバイス発見のさまざまな実施形態のためのサンプルの処理フロー400を示している。以降では、図1〜図3の非限定的な例に関して説明した特徴を参照して、サンプルの処理フロー400について説明する。サンプルの処理フローにおいてオペレーションが記載されている順序は、限定するものと解釈されることを意図しておらず、任意の数の記載されているブロックを任意の順序で、および/または並行して組み合わせて、それぞれのプロセスを実施することができる。その上、図4におけるブロックは、ハードウェア、ソフトウェア、またはそれらの組合せで実装できるオペレーションとすることができる。ソフトウェアのコンテキストにおいては、それらのブロックは、1つまたは複数のプロセッサによって実行されたときに記載のオペレーションを1つまたは複数のプロセッサに実行させるコンピュータ実行可能命令に相当する。一般に、コンピュータ実行可能命令は、特定の機能を実行させるかまたは特定の抽象データ型を実装させるルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。
さらに、上述のように、詳細な説明、図面、および特許請求の範囲に記載されている例示的な実施形態は、限定することを意図するものではない。本明細書において提示されている主題の趣旨または範囲から逸脱することなく、その他の実施形態を利用することができ、その他の変更を行うことができる。したがって、図4の説明は、アプリケーション104のそれぞれのインスタンスが、フィギュアテーブル250のインスタンスを含むことができるという前述の開示を考慮して「配布テーブル250」を指し、フィギュアテーブル250は、「配布テーブル」250と見なすことまたは呼ぶことも可能である。
ブロック402は、DHN、および、デバイス発見の少なくともいくつかの実施形態によればSHNの編成を指す。ブロック402は、ブロック404およびブロック406を含む。
ブロック404((1つまたは複数の)デバイスの特徴を編成する)は、より詳細には、ピアツーピアネットワーク100上のデバイス102のうちの少なくとも1つのサブセットの特徴を編成することを指し、これは、クライアントアプリケーション104の特定のインスタンスが常駐しているデバイス102のうちのそれぞれのデバイスにおいて実施することができ、または別法として、デバイス102のうちのその他のデバイスにおいて実施することもできる。前者のシナリオにおいては、所定の数のその他のデバイス102の機能データおよび属性データを、クライアントアプリケーション104によって、事前設定されたデータフィールド205および210(a)〜210(n)において受け取ることができる。後者のシナリオにおいては、それぞれのその他のデバイス102の機能データおよび属性データを、それぞれのデバイス102におけるクライアントアプリケーション104のそれぞれのインスタンスにおいて事前設定されたデータフィールド205および210(a)〜210(n)によって編成することができる。処理は、ブロック404からブロック406へ続くことができる。
ブロック406((1つまたは複数の)デバイスの属性をハッシュする)は、それぞれのデバイス102の機能データおよび属性データがハッシュされることを指す。
ブロック404における第1のシナリオに続いて、ブロック406は、所定の数のその他のデバイス102の機能データフィールド205への入力および属性データフィールド210(a)〜210(n)への入力をそれぞれハッシュすることを含むことができる。ハッシュデータフィールド215および220(a)〜220(n)(それぞれの値は、長さMを有する)を連結して、それぞれのその他のデバイス102に関するDHNを形成することができる。
ブロック404における第2のシナリオに続いて、ブロック406は、所定の数のその他のデバイス102の機能データおよび属性データをハッシュすることを含むことができる。ハッシュデータフィールド215および220(a)〜220(n)を連結して、それぞれのデバイス102に関するDHNを形成することができ、次いでそのDHNを、それぞれのデバイス102が通信する相手のクライアントアプリケーション104のインスタンスへ送信することができる。処理は、ブロック406からブロック408へ続くことができる。
ブロック408((1つまたは複数の)デバイスに関するハッシュ番号を順序付ける)は、それぞれのその他のデバイス102のDHNを配布テーブル250のインスタンスへと編成することおよび/または順序付けることを指す。それぞれのその他のデバイス102に関するDHNの順序付けは、階層的な様式で実施することができ、それによってDHNは、配布テーブル250内に順番に、すなわち昇順または降順のハッシュ値に従って格納される。あるいは、配布テーブル250におけるそれぞれのデバイス102のDHNの順序付けは、さまざまなその他の基準に従って、たとえば、その特定のデバイスがデバイス102のうちのその他のデバイスによって求められる頻度や、クライアントアプリケーション104の特定のインスタンスが常駐しているデバイス102の近接性などに従って、実施することができる。処理は、ブロック408からブロック410へ続くことができる。
ブロック410((1つまたは複数の)特定のデバイスを検索する)は、ピアツーピアの、すなわちユビキタスなネットワーク100上のデバイス102のうちの任意の特定のデバイスの検索を実施することを指す。
検索のための基礎または基準であるSHNは、求められているデバイスの機能属性を機能データフィールド205内に入力し、次いで、求められているデバイスについてさらに記述する属性を、事前設定された属性データフィールド210(a)〜210(n)のうちの適切なフィールド内に入力することによって、編成することができる。もう一度繰り返すが、属性データフィールド210(a)〜210(n)は、属性データを受け取るように事前設定することができ、属性データは、非限定的な例として、デバイスのブランド、モデル、機能性、または場所を含むことができる。さらに、どの特定の属性データフィールド210内にそれぞれの属性データが入力されることになるかを決定する事前設定は、動的なものとすることができ、実施形態ごとに異なることが可能であり、属性データフィールド210は、特定のタイプのデバイス用に一意に事前設定することができる。
さらに、ブロック410におけるオペレーションを実施する際には、機能データフィールド205へのそれぞれの入力ごとに、属性データフィールド210のうちのすべてが必ずしも記入されるわけではない。求められているデバイスのある特定の属性が知られていない場合には、その特定の属性を受け取ることになっている属性データフィールド210のうちの事前設定されたフィールドに、「なし」、「null」、またはそれらの何らかのバリアントを記入して、その対応する属性が値を有していないことを示すことができる。
機能データフィールド205、および属性データフィールド210(a)〜210(n)のうちの少なくとも1つへのデータ入力を受け取ると、デバイス102のうちのそれぞれのデバイス上のクライアントアプリケーション104は、それらのデータ入力上で基本ハッシュ関数を実施し、結果として累積SHNを得ることができる。すなわち、機能データフィールド205および属性データフィールド210(a)〜210(n)のそれぞれは、ハッシュフィールド215および220(a)〜220(n)内の対応するハッシュ値にマップすることができる。配布テーブル250に投入されているDHNと同様に、空のプレ属性データフィールドは、ゼロの値を保持することができ、空のポスト属性データフィールドは、2M−1の値を含むことができる。
次いで、ブロック410における検索は、SHNを、配布テーブル250に投入されているDHNにマッチさせる試みを含むことができる。SHNと、前述のDHNのうちの1つとの間に完全なマッチがある場合には、クライアントアプリケーション104の特定のインスタンスが常駐しているデバイス102上で、その結果の通知が行われる。
SHNと、前述のDHNのうちの1つとの間に完全なマッチがない場合には、SHNに最も近くマッチするDHNを探して検索が続けられる。デバイス発見の代替実施形態は、マッチしていないDHNとSHNの間における最も近いマッチを、SHNの値を超えることなくSHNに最も近くマッチするDHNであると考えることができ、または最も近いDHNマッチを、SHNの値を超える最も近いDHNの値であると考えることができる。
さらに、配布テーブル250に投入されているDHNと、SHNとの間における最も近いマッチを見つけ出す試みは、クライアントアプリケーション104の特定のインスタンスが常駐しているデバイス102の対応する値を空のプレ属性データフィールドに記入することを含むことができる。もちろん、代替実施形態によって、2M−1の値を有する空のプレ属性データフィールドと、ゼロの値を有する空のポスト属性データフィールドとを伴う配布テーブル250への投入がはじめに行われるならば、目下のアクションは、空のポスト属性データフィールドが、目下のデバイス102の対応する値を記入されることを含むことになる。
上述のように、デバイス102のうちのすべてが、互いに直接通信可能に接続されているわけではない。さらに、ピアツーピアネットワーク100の集団は、動的である場合がある。したがって、SHNに関するマッチを探す検索を別のデバイスへ転送することによって、その検索は、ピアツーピアネットワーク102に投入されているデバイス102のうちのより多くのデバイスへ広がる。
デバイス発見の少なくとも1つの実施形態では、SHNと、テーブル250に投入されているDHNのうちのいずれとの間にも完全なマッチが見つからない場合には、検索オペレーションが終わる結果となることが可能である。デバイス発見のその他の代替実施形態では、SHNをデバイス102のうちの別のデバイスへ送信またはその他の形で転送させて、デバイス102のうちのその別のデバイスにおけるクライアントアプリケーション104のインスタンス上の配布テーブル250に投入されているDHNと比較することによって、検索オペレーションが続く結果となることが可能である。そしてそこで、その他の配布テーブル250に投入されている、デバイス102のうちで、その別のデバイス102と通信するデバイスのDHNとともに、プロセス400を繰り返すことができる。クライアントアプリケーション104は、所定の回数の反復の後に、その所定の数のデバイス102上で特定のSHNとの完全なマッチが見つからない場合には、検索を終了するように構成することができる。
上述の説明によれば、ピアツーピアの、すなわちユビキタスなコンピューティング環境におけるデバイス発見は、基本ハッシュ関数を使用して実施することができる。
本明細書において開示されているこのプロセスおよび方法ならびにその他のプロセスおよび方法に関して、それらのプロセスおよび方法において実行される機能は、異なる順序で実施することができるということを当業者なら理解するであろう。さらに、概説されているステップおよびオペレーションは、例として提供されているにすぎず、また、それらのステップおよびオペレーションのうちのいくつかは、開示されている実施形態の本質を損なうことなく、オプションとすること、組み合わせて、より少ないステップおよびオペレーションにすること、または、さらなるステップおよびオペレーションへと拡張することが可能である。
さらに、本開示は、本出願に記載されている特定の実施形態の点から限定されるものではなく、それらの特定の実施形態は、さまざまな態様の例示として意図されている。当業者にとっては明らかであろうが、その趣旨および範囲から逸脱することなく、多くの修正形態および変形形態を作成することができる。本明細書において列挙されている方法および装置に加えて、本開示の範囲内である機能的に均等な方法および同等な装置は、当業者にとっては、前述の説明から明らかであろう。そのような修正形態および変形形態は、添付の特許請求の範囲の範疇内に収まることを意図されている。本開示は、添付の特許請求の範囲の文言と、そのような特許請求の範囲が権利を付与されている均等物の全範囲とによってのみ限定されるものである。本開示は、特定の方法、試薬、化合物、組成、または生体系(これらは、もちろん、さまざまなものでありうる)に限定されるものではないということを理解されたい。本明細書において使用されている用語は、特定の実施形態を説明することのみを目的としており、限定することを意図されているものではないということも理解されたい。
図5は、ユビキタスコンピューティング環境におけるデバイス発見のさまざまな実施形態を実施することができるサンプルのコンピューティングデバイス500を示している。より詳細には、図5は、例示的なコンピューティング実施形態を示しており、そこでは、本明細書に記載されているオペレーション、プロセスなどのいずれも、コンピュータ可読媒体上に格納されているコンピュータ可読命令として実装することができる。それらのコンピュータ可読命令は、たとえば、モバイルユニット、ネットワーク要素、および/またはその他の任意のコンピューティングデバイスのプロセッサによって実行することができる。
非常に基本的な構成502においては、コンピューティングデバイス500は、典型的には、1つまたは複数のプロセッサ504と、システムメモリ506とを含む。プロセッサ504とシステムメモリ506との間において通信するために、メモリバス508を使用することができる。
所望の構成に応じて、プロセッサ504は、任意のタイプのものとすることができ、それらのタイプには、マイクロプロセッサ(μP)、マイクロコントローラ(μC)、デジタルシグナルプロセッサ(DSP)、またはそれらの任意の組合せが含まれるが、それらには限定されない。プロセッサ504は、レベル1キャッシュ510およびレベル2キャッシュ512など、もう1つ多いレベルのキャッシングと、プロセッサコア514と、レジスタ516とを含むことができる。例示的なプロセッサコア514は、演算ロジックユニット(ALU)、浮動小数点演算ユニット(FPU)、デジタル信号処理コア(DSPコア)、またはそれらの任意の組合せを含むことができる。例示的なメモリコントローラ518は、プロセッサ504とともに使用することもでき、または、いくつかの実装形態においては、メモリコントローラ518は、プロセッサ504の内部の一部分とすることができる。
所望の構成に応じて、システムメモリ506は、任意のタイプのものとすることができ、それらのタイプには、揮発性メモリ(RAMなど)、不揮発性メモリ(ROM、フラッシュメモリなど)、またはそれらの任意の組合せが含まれるが、それらには限定されない。システムメモリ506は、オペレーティングシステム520と、1つまたは複数のアプリケーション522と、プログラムデータ524とを含むことができる。
アプリケーション522は、クライアントアプリケーション104を含むことができ、このクライアントアプリケーション104は、図1〜図4に関連して前述した機能を含む、本明細書に記載されている機能を実行するように構成されている。プログラムデータ524は、テーブル250を含むことができ、このテーブル250は、あるいは「フィギュアテーブル250」または「配布テーブル250」と呼ぶこともでき、本明細書に記載されているデバイス発見を実施する上で役立つことができる。
コンピューティングデバイス500は、基本的な構成502と、必要とされるあらゆるデバイスおよびインターフェースとの間における通信を容易にするためのさらなる特徴または機能性およびさらなるインターフェースを有することができる。たとえば、ストレージインターフェースバス534を介した、基本的な構成502と、1つまたは複数のデータストレージデバイス532との間における通信を容易にするために、バス/インターフェースコントローラ530を使用することができる。データストレージデバイス532は、取り外し可能なストレージデバイス536、取り外し不能なストレージデバイス538、またはそれらの組合せとすることができる。取り外し可能なストレージデバイスおよび取り外し不能なストレージデバイスの例としては、いくつか挙げると、フレキシブルディスクドライブおよびハードディスクドライブ(HDD)などの磁気ディスクデバイス、コンパクトディスク(CD)ドライブまたはデジタル多用途ディスク(DVD)ドライブなどの光ディスクドライブ、ソリッドステートドライブ(SSD)、ならびにテープドライブが含まれる。例示的なコンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を格納するための任意の方法またはテクノロジーにおいて実装される揮発性の媒体および不揮発性の媒体、ならびに取り外し可能な媒体および取り外し不能な媒体を含むことができる。
システムメモリ506、取り外し可能なストレージデバイス536、および取り外し不能なストレージデバイス538は、コンピュータストレージ媒体の例である。コンピュータストレージ媒体は、RAM、ROM、EEPROM、フラッシュメモリ、もしくはその他のメモリテクノロジー、CD−ROM、デジタル多用途ディスク(DVD)、もしくはその他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくはその他の磁気ストレージデバイス、または、所望の情報を格納するために使用することができ、かつコンピューティングデバイス500によってアクセスすることができるその他の任意の媒体を含むことができるが、それらには限定されない。そのような任意のコンピュータストレージ媒体をコンピューティングデバイス500の一部とすることができる。
コンピューティングデバイス500は、さまざまなインターフェースデバイス、たとえば、出力デバイス542、周辺インターフェース544、および通信デバイス546から、バス/インターフェースコントローラ530を介して、基本的な構成502へ至る通信を容易にするためのインターフェースバス540を含むこともできる。例示的な出力デバイス542は、グラフィックスプロセッシングユニット548およびオーディオ処理装置550を含むことができ、グラフィックスプロセッシングユニット548およびオーディオ処理装置550は、1つまたは複数のA/Vポート552を介して、ディスプレイまたはスピーカーなどのさまざまな外部デバイスに通信するように構成することができる。例示的な周辺インターフェース544は、シリアルインターフェースコントローラ554またはパラレルインターフェースコントローラ556を含むことができ、シリアルインターフェースコントローラ554またはパラレルインターフェースコントローラ556は、1つまたは複数のI/Oポート458を介して、入力デバイス(たとえば、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス等)またはその他の周辺デバイス(たとえば、プリンタ、スキャナ等)などの外部デバイスと通信するように構成することができる。例示的な通信デバイス546は、ネットワークコントローラ560を含むことができ、ネットワークコントローラ560は、1つまたは複数の通信ポート564を経由した、かつネットワーク通信リンクを介した、1つまたは複数のその他のコンピューティングデバイス562との通信を容易にするように構成することができる。
ネットワーク通信リンクは、通信媒体の一例と見なすことができる。通信媒体は、典型的には、搬送波もしくはその他の伝送メカニズムなどの変調されたデータ信号内のコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータによって具体化することができ、任意の情報伝達メディアを含むことができる。「変調されたデータ信号」とは、情報をその信号内でコード化するような方法で設定または変更されたその特性のうちの1つまたは複数を有する信号と見なすことができる。限定ではなく、例として、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、ならびに、音波媒体、ラジオ周波数(RF)媒体、マイクロ波媒体、赤外線(IR)媒体、およびその他のワイヤレス媒体などのワイヤレス媒体を含むことができる。コンピュータ可読媒体という用語は、本明細書において使用される際には、ストレージ媒体および通信媒体の両方を含むことができる。
コンピューティングデバイス500は、携帯電話、携帯情報端末(PDA)、パーソナルメディアプレーヤデバイス、ワイヤレスウェブ閲覧デバイス、パーソナルヘッドセットデバイス、アプリケーション固有のデバイス、または、上記の機能のうちの任意のものを含むハイブリッドデバイスなど、スモールフォームファクタのポータブル(またはモバイル)電子デバイスの一部分として実装することができる。コンピューティングデバイス400は、ラップトップコンピュータの構成およびラップトップコンピュータ以外の構成の両方を含めて、パーソナルコンピュータとして実装することもできる。
システムの側面でのハードウェアの実装形態とソフトウェアの実装形態との間には、ほとんど相違が残されていない。ハードウェアまたはソフトウェアの使用は、一般に(いつもそうではないが、ある状況ではハードウェアとソフトウェアの間の選択が重要になり得るという点で)コスト対効果のトレードオフを表す設計上の選択である。本明細書に記載された、プロセスおよび/またはシステムおよび/または他の技術を実施することができるさまざまな達成手段があり(たとえば、ハードウェア、ソフトウェア、および/またはファームウェア)、好ましい達成手段は、プロセスおよび/またはシステムおよび/または他の技術が導入される状況によって異なり得る。たとえば、実装者が速度と正確性が最も重要であると決定すると、実装者は主にハードウェアおよび/またはファームウェアの達成手段を選択することができる。フレキシビリティが最も重要なら、実装者は主にソフトウェアの実装形態を選択することができる。または、さらに別の代替案として、実装者は、ハードウェア、ソフトウェア、および/またはファームウェアのなんらかの組合せを選択することができる。
前述の詳細な説明では、ブロック図、フローチャート、および/または例の使用によって、デバイスの発見のための装置および/またはプロセスのさまざまな実施形態を説明してきた。そのようなブロック図、フローチャート、および/または例が1つまたは複数の機能および/または動作を含む限りにおいて、そのようなブロック図、フローチャート、または例の中のそれぞれの機能および/または動作は、広範囲のハードウェア、ソフトウェア、ファームウェア、または実質上それらのすべての組合せにより、個別におよび/または集合的に実装可能であることが、当業者には理解されるであろう。ある実施形態では、本明細書に記載された主題のいくつかの部分は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、または他の集積化方式によって実装することができる。しかし、本明細書で開示された実施形態のいくつかの態様が、全体においてまたは一部において、1つまたは複数のコンピュータ上で動作する1つまたは複数のコンピュータプログラムとして(たとえば、1つまたは複数のコンピュータシステム上で動作する1つまたは複数のプログラムとして)、1つまたは複数のプロセッサ上で動作する1つまたは複数のプログラムとして(たとえば、1つまたは複数のマイクロプロセッサ上で動作する1つまたは複数のプログラムとして)、ファームウェアとして、あるいは実質上それらの任意の組合せとして、等価に集積回路に実装することができることを、当業者は認識するであろうし、電気回路の設計ならびに/またはソフトウェアおよび/もしくはファームウェアのコーディングが、本開示に照らして十分当業者の技能の範囲内であることを、当業者は認識するであろう。さらに、本明細書に記載された主題のメカニズムをさまざまな形式のプログラム製品として配布することができることを、当業者は理解するであろうし、本明細書に記載された主題の例示的な実施形態が、実際に配布を実行するために使用される信号伝達媒体の特定のタイプにかかわらず適用されることを、当業者は理解するであろう。信号伝達媒体の例には、フロッピー(登録商標)ディスク、ハードディスクドライブ、CD、DVD、デジタルテープ、コンピュータメモリ、などの記録可能なタイプの媒体、ならびに、デジタル通信媒体および/またはアナログ通信媒体(たとえば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど)の通信タイプの媒体が含まれるが、それらには限定されない。
本明細書で説明したやり方で装置および/またはプロセスを記載し、その後そのように記載された装置および/またはプロセスを、データ処理システムに統合するためにエンジニアリング方式を使用することは、当技術分野で一般的であることを当業者は認識するであろう。すなわち、本明細書に記載された装置および/またはプロセスの少なくとも一部を、妥当な数の実験によってデータ処理システムに統合することができる。通常のデータ処理システムは、一般に、システムユニットハウジング、ビデオディスプレイ装置、揮発性メモリおよび不揮発性メモリなどのメモリ、マイクロプロセッサおよびデジタル信号プロセッサなどのプロセッサ、オペレーティングシステムなどの計算実体、ドライバ、グラフィカルユーザインタフェース、およびアプリケーションプログラムのうちの1つもしくは複数、タッチパッドもしくはスクリーンなどの1つもしくは複数の相互作用装置、ならびに/またはフィードバックループおよびコントロールモータを含むコントロールシステム(たとえば、位置検知用および/もしくは速度検知用フィードバック、コンポーネントの移動用および/もしくは数量の調整用コントロールモータ)を含むことを、当業者は理解するであろう。通常のデータ処理システムは、データコンピューティング/通信システムおよび/またはネットワークコンピューティング/通信システムの中に通常見られるコンポーネントなどの、市販の適切なコンポーネントを利用して実装することができる。
本明細書に記載された主題は、さまざまなコンポーネントをしばしば例示しており、これらのコンポーネントは、他のさまざまなコンポーネントに包含されるか、または他のさまざまなコンポーネントに接続される。そのように図示されたアーキテクチャは、単に例にすぎず、実際には、同じ機能を実現する多くの他のアーキテクチャが実装可能であることが理解されよう。概念的な意味で、同じ機能を実現するコンポーネントの任意の構成は、所望の機能が実現されるように効果的に「関連付け」される。したがって、特定の機能を実現するために組み合わされた、本明細書における任意の2つのコンポーネントは、アーキテクチャまたは中間のコンポーネントにかかわらず、所望の機能が実現されるように、お互いに「関連付け」されていると見ることができる。同様に、そのように関連付けされた任意の2つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に接続」または「動作可能に結合」されていると見なすこともでき、そのように関連付け可能な任意の2つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に結合できる」と見なすこともできる。動作可能に結合できる場合の具体例には、物理的にかみ合わせ可能な、および/もしくは物理的に相互作用するコンポーネント、ならびに/またはワイヤレスに相互作用可能な、および/もしくはワイヤレスに相互作用するコンポーネント、ならびに/または論理的に相互作用する、および/もしくは論理的に相互作用可能なコンポーネントが含まれるが、それらに限定されない。
最後に、本明細書における実質的にすべての複数形および/または単数形の用語の使用に対して、当業者は、状況および/または用途に適切なように、複数形から単数形に、および/または単数形から複数形に変換することができる。さまざまな単数形/複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
通常、本明細書において、特に添付の特許請求の範囲、たとえば、添付の特許請求の範囲の本体部において使用される用語は、全体を通じて「オープンな(open)」用語として意図されていることが、当業者には理解されよう。たとえば、用語「含む(including)」は、「含むがそれに限定されない(including but not limited to)」と解釈されるべきであり、用語「有する(having)」は、「少なくとも有する(having at least)」と解釈されるべきであり、用語「含む(includes)」は、「含むがそれに限定されない(includes but is not limited to)」と解釈されるべきである、などである。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。たとえば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも1つの(at least one)」および「1つまたは複数の(one or more)」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「1つまたは複数の」または「少なくとも1つの」および「a」または「an」などの不定冠詞を含む場合であっても、不定冠詞「a」または「an」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に1つのそのような記載を含む実施形態に限定する、ということを示唆していると解釈されるべきではなく、たとえば、「a」および/または「an」は、「少なくとも1つの」または「1つまたは複数の」を意味すると解釈されるべきである。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、少なくとも記載された数を意味すると解釈されるべきであり、たとえば、他の修飾語なしでの「2つの記載(two recitations)」の単なる記載は、少なくとも2つの記載、または2つ以上の記載を意味することが当業者には理解されよう。さらに、「A、BおよびC、などの少なくとも1つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されており、たとえば、「A、B、およびCの少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AおよびBを共に、AおよびCを共に、BおよびCを共に、ならびに/またはA、B、およびCを共に、などを有するシステムを含むが、それに限定されない。「A、B、またはC、などの少なくとも1つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されており、たとえば、「A、B、またはCの少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AおよびBを共に、AおよびCを共に、BおよびCを共に、ならびに/またはA、B、およびCを共に、などを有するシステムを含むが、それに限定されない。2つ以上の代替用語を提示する事実上いかなる離接する語および/または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方(one of the terms)、当該用語のいずれか(either of the terms)、または両方の用語(both terms)を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。たとえば、句「AまたはB」は、「A」または「B」あるいは「AおよびB」の可能性を含むことが理解されよう。
加えて、本開示の特徴または態様がマーカッシュ群として記載される場合、このことによって、当業者なら、本開示がマーカッシュ群の構成要素の任意の個別の構成要素または部分群としても記載されることを認識するであろう。
本開示のさまざまな実施形態は、例示の目的で本明細書に記載されているということ、ならびに、本開示の範囲および趣旨から逸脱することなく、さまざまな修正を行うことができるということが、前述の内容からわかるであろう。したがって、本明細書において開示されているさまざまな実施形態は、限定することを意図するものではなく、真の範囲および趣旨は、添付の特許請求の範囲によって示されている。
引用リスト
1.Stoicaら、Chord:A Scalable−Peer−to−peer Lookup Service for Internet Applications, SIGCOMM ’01、2001年8月27日〜31日、アメリカ合衆国カリフォルニア州サンディエゴ