図面のうちのいくつかまたはすべては、例示を目的とした概略図であることが認識されるだろう。図面は、特許請求の範囲または意味を限定するために使用されないという明確な理解とともに、1つまたは複数の実施形態を例示することを目的として提供される。
以下は、コンピュータネットワーク上で情報を提供するための方法、装置、およびシステムに関連する様々な概念、およびそれらの実装形態についてより詳細に説明している。説明される概念はいかなる特定の方法の実装形態にも限定されないので、上記で紹介され、また以下でより詳細に説明される様々な概念は、多数の方法のいずれかで実装され得る。特定の実装形態および適用の例は、主に例示を目的として提供される。
いくつかの例では、ロケーションベースのサービスは、クライアントデバイスのユーザに提供され得る。たとえば、そのようなロケーションベースのサービスは、ユーザのクライアントデバイスのロケーションを、クライアントデバイスのユーザに関連付けられる他のユーザに示すこと(ソーシャルメディアウェブサイトまたはアプリケーションを介するなどして)、検索クエリに応答する結果ページの一部としてクライアントデバイスのロケーションの近隣の企業を示すこと、あるいは、クライアントデバイスのロケーションに基づいて、サードパーティのコンテンツアイテムまたはクーポンを配信することを含み得る。そのようなロケーションベースのサービスは、そのようなサービスを利用可能にするために、インターネットなどのネットワークを介して、ロケーションベースのサービスプロバイダなどのサードパーティのシステムに送信されるべきクライアントデバイスの正確なロケーションを必要とする場合がある。
クライアントデバイスの正確なロケーションは、ほとんどのモバイルクライアントデバイス(たとえば、スマートフォン、タブレット等)にとって利用可能なGPSを使用して決定され得る。他の例では、クライアントデバイスの正確なロケーションは、Wi-Fiアクセスポイントのロケーションを使用して決定され得る。たとえば、クライアントデバイスが固定されたWi-Fiアクセスポイントを通じてインターネットに接続して、固定されたWi-Fiアクセスポイントの正確なロケーションが知られている場合、クライアントデバイスのロケーションは約100フィート内にあると決定され得る。さらに、クライアントデバイスのロケーションは、ロケーション履歴に基づいて推測され得る。たとえば、GPSによって以前に決定されていた、または知られているWi-Fiアクセスポイントに接続しているなど、クライアントデバイスの正確なロケーションが最近知られた場合、クライアントデバイスは、依然として以前のロケーションの近隣にある可能性がある。クライアントデバイスの正確なロケーションは、前述のロケーションベースのサービスのうちの1つまたは複数をクライアントデバイスに提供するために使用され得る。
しかしながら、そのような正確なロケーションデータを提供するクライアントデバイスのユーザは、データが一旦サードパーティのシステムに送信されると、そのようなデータの制御をほとんど、またはまったく有していない場合がある(たとえば、誰がロケーション情報にアクセスできるか、何の目的で、等)。さらに、そのような正確なロケーションデータは、サードパーティのシステムへの途中で、ユーザが好まない方法で正確なロケーションデータを使用し得る他者によって傍受される場合がある。正確なロケーションデータを提供することに対するそのような懸念により、ロケーションベースのサービスプロバイダのロケーションベースのサービスを利用するクライアントデバイスのユーザが、より少なくなる可能性がある。
したがって、正確なロケーションを決定することはできないが、ロケーションベースのサービスが提供されることを依然として可能にするような安全な方法で、クライアントデバイスの正確なロケーションを曖昧化することが有用であり得る。曖昧化された擬似ロケーションが、クライアントデバイスの正確なロケーションに関連して決定され得るエリアは、1つまたは複数の要因に基づき得る。たとえば、曖昧化された擬似ロケーションが位置特定され得るエリアは、嗜好、規格、ガイドライン、現地の慣習、現地の法律等に基づいて、あらかじめ定められた大きさ(たとえば、1キロ平方メートル、または他の大きさ)よりも小さくならないように大きさを調整され得る。他の例では、曖昧化された擬似ロケーションが位置特定され得るエリアは、嗜好、規格、ガイドライン、現地の慣習、現地の法律等に基づいて、あらかじめ定められた数のクライアントデバイスが、所与の時間内にエリアを通過する(たとえば、1か月あたり少なくとも1,000のクライアントデバイス)ように大きさを調整され得る。曖昧化された擬似ロケーションが位置特定され得るエリアはまた、ロケーションベースのサービスが依然として効果的に提供され得るように大きさを調整され得る(すなわち、曖昧化された擬似ロケーションが位置特定され得るエリアは、ロケーションベースのサービスを無効または不適当な状態にするほど大きくない)。たとえば、低いガソリン価格を提供するガソリンスタンドに関連付けられるサードパーティのコンテンツアイテムの例では、クライアントデバイスの正確なロケーションの2マイル以内にある曖昧化された擬似ロケーションは、クライアントデバイスの正確なロケーションと同じくらい有効であり得る。しかしながら、100マイル以内にある曖昧化された擬似ロケーションは、無効または不適当であり得る。
前述の考慮事項は、曖昧化された擬似ロケーションが位置特定され得るエリアに関連して有用であるが、曖昧化された擬似ロケーションが提供される方法もまた、曖昧化された擬似ロケーションが安全な方法で行われるかどうかに影響を与える場合がある。一実装形態では、クライアントデバイスは、ロケーションモジュール(たとえば、GPSモジュール、Wi-Fiアクセスポイントロケーションモジュール等)を使用してクライアントデバイスの正確なロケーションを取得することができる。クライアントデバイスは、クライアントデバイスの擬似ロケーションを決定するために、正確なロケーションとオフセット値との合計を計算することができる。いくつかの例では、オフセット値は、曖昧化された擬似ロケーションが位置特定されるエリアが、前述のエリア考慮事項のうちの1つまたは複数を満たすように限定され得る。擬似ロケーションは、ロケーションベースのサービスのために、クライアントデバイスによって使用され得る。上記は、多くの例において適切な擬似ロケーションを提供し得るが、いくつかの例では、オフセット値はサードパーティによって決定され得る。
たとえば、オフセット値が一定、またはある期間にわたって一定である場合、オフセット値は2つ以上の擬似ロケーションに基づいて決定され得る。すなわち、第1の正確なロケーションP1が、ロケーションベースのサービス(たとえば、ナビゲーションアプリケーション、ソーシャルメディアアプリケーション、ロケーションアプリケーション等)のために第1の時間t1に第1のサードパーティに送信され、
SP1=P2+Offset
である第1の擬似ロケーションSP1が、別のロケーションベースのサービスのために第2の時間t2に第2のサードパーティに送信され、第1の正確なロケーションP1と第2の正確なロケーションP2とは相互に比較的近いので、|P1-P2|が最小化され(たとえば、約10,000平方フィート、または約1000平方メートルのエリア内)、次いで、Offsetを、
Offset=SP1-P1
によって決定することができ、上式で、P1≒P2である。オフセットが一定のままであり、別のロケーションベースのサービスのために
SP2=P3+Offset
である第2の擬似ロケーションSP2が生成される場合、後者の正確なロケーションP3は、たとえP3が第1の正確なロケーションP1または第2の正確なロケーションP2の近くになくても決定され得る。
さらに、たとえランダムオフセット値が使用されても、オフセットのためにランダムに生成された値がゼロ平均を有し、クライアントデバイスが比較的固定されたままである場合(たとえば、約10,000平方フィート、または約1000平方メートルのエリア内)、クライアントデバイスの正確なロケーションが決定され得る。たとえば、クライアントデバイスの正確なロケーションPxが、ある期間にわたって比較的固定されたままであり、ロケーションベースのサービスのためにいくつかの擬似ロケーションが生成される場合、たとえば、
SPi=Px+Offseti
であり、i=1…Nの場合、正確なロケーションPxは、
によって決定することができ、
上式で、十分に大きいNについて
であり、したがって、
である。
したがって、曖昧化された擬似ロケーションを、サードパーティによって決定されることからさらに保護するために、さらなる要因を実装することが有用であり得る。ある例示的な実装形態では、曖昧化された擬似ロケーションは、正確なロケーションに基づいて生成されてよく、ランダムに生成されたオフセットのペアが利用され得る。第1のランダムに生成されたオフセットは、定期的(たとえば、毎時、毎日、毎週、毎月、等)に生成されてよく、第2のランダムに生成されたオフセットは、クライアントデバイスがロケーションベースのサービスを要求するたびに生成されてよい。したがって、曖昧化された擬似ロケーションを、サードパーティによって決定されることからさらに保護することができる。別の例示的な実装形態では、曖昧化された擬似ロケーションは、曖昧化された擬似ロケーションが位置特定される領域のセットの領域を決定するために使用され得る。次いで、決定された領域の中心、または他の点は、クライアントデバイスの擬似ロケーションとして使用することができ、それによってクライアントデバイスの真のロケーションをさらに曖昧化する。そのような曖昧化された擬似ロケーションの生成、およびその使用の特定の実装形態は、以下でより詳細に説明される。
図1は、クライアントデバイス102とロケーションベースのサービスプロバイダ120とを有する例示的な環境100を示している。クライアントデバイス102は、ネットワーク150を介して、ロケーションベースのサービスプロバイダ120からデータを送受信することができる。ネットワーク150は、クライアントデバイス102と、ロケーションベースのサービスプロバイダ120との間で情報を中継する、任意の形態のコンピュータネットワークでよい。たとえば、ネットワーク150は、インターネット、および/あるいは、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、セルラネットワーク、衛星ネットワーク、または他のタイプのデータネットワークなどの他のタイプのデータネットワークを含み得る。ネットワーク150はまた、ネットワーク150内でデータを受信および/または送信するように構成された、任意の数のコンピューティングデバイス(たとえば、コンピュータ、サーバ、ルータ、ネットワークスイッチ、スマートフォン、タブレット、モバイル電話等)を含み得る。ネットワーク150は、任意の数のハードワイヤードおよび/またはワイヤレス接続をさらに含み得る。たとえば、クライアントデバイス102は、ネットワーク150内の他のコンピューティングデバイスにハードワイヤードされた(たとえば、光ファイバケーブル、CAT5ケーブル等を介して)トランシーバとワイヤレスに(たとえば、Wi-Fi、セルラ、無線等を介して)通信することができる。
クライアントデバイス102は、ネットワーク150を介して通信するように構成された、任意の数の異なるタイプのユーザ電子デバイス(たとえば、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、スマートフォン、デジタルビデオレコーダ、テレビ用のセットトップボックス、ビデオゲーム機、それらの組合せ等)でよい。クライアントデバイス102は、プロセッサ104とメモリ106とを含むように示されている。メモリ106は、プロセッサ104によって実行されると、プロセッサ104に、本明細書に記載の動作のうちの1つまたは複数を実行させる、機械命令を記憶することができる。プロセッサ104は、1つまたは複数のマイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、他の形態の処理回路、あるいはそれらの組合せを含み得る。メモリ106は、これに限定されないが、プロセッサ104にプログラム命令を提供することが可能な、電子的、光学的、磁気的、または他の何らかのストレージデバイスあるいは送信デバイスを含み得る。メモリ106は、フロッピー(登録商標)ディスク、CD-ROM、DVD、磁気ディスク、メモリチップ、ROM、RAM、EEPROM、EPROM、フラッシュメモリ、光媒体、または、プロセッサ104が命令を読み取ることができる他の何らかの適切なメモリなどのストレージデバイスを含み得る。プロセッサ104とメモリ106とは、処理モジュールを形成することができる。
クライアントデバイス102は、1つまたは複数のユーザインターフェースデバイスを含み得る。ユーザインターフェースデバイスは、感覚情報(たとえば、ディスプレイ上の視覚化、1つまたは複数の音等)を生成することによってデータをユーザに伝達する、および/またはユーザから受信された感覚情報を電子信号に変換する、任意の電子デバイス(たとえば、キーボード、マウス、ポインティングデバイス、タッチスクリーンディスプレイ、マイクロフォン等)でよい。1つまたは複数のユーザインターフェースデバイスは、様々な実装形態に応じて、クライアントデバイス102の筐体の内部にあってもよく(たとえば、内蔵ディスプレイ、マイクロフォン等)、クライアントデバイス102の筐体の外部にあってもよい(たとえば、クライアントデバイス102に接続されたモニタ、クライアントデバイス102に接続されたスピーカ等)。たとえば、クライアントデバイス102は、ウェブページを表示することができる電子ディスプレイ108、アプリケーション用のユーザインターフェース、および/または他のディスプレイを含み得る。様々な実装形態では、ディスプレイ108は、プロセッサ104および/またはメモリ106の筐体と同じ筐体の内部に配置されてもよく、外部に配置されてもよい。たとえば、ディスプレイ108は、コンピュータモニタ、テレビセットなどの外部ディスプレイでもよく、他の何らかのスタンドアロン形式の電子ディスプレイでもよい。他の例では、ディスプレイ108は、ラップトップコンピュータ、モバイルデバイス、スマートフォン、タブレット、または一体型ディスプレイを有する他の形態のコンピュータデバイスの筐体に統合されてもよい。
この例のクライアントデバイス102は、ロケーションモジュール118をさらに含む。ロケーションモジュール118は、GPSデータを介してクライアントデバイス102のロケーションを決定するためにGPSデバイスを含み得る。他の実装形態では、ロケーションモジュール118は、Wi-Fiアクセスポイントにワイヤレスに接続するように構成されたWi-Fiトランシーバを含み得る。ロケーションモジュール118は、クライアントデバイス102のロケーションを決定するために、Wi-Fiアクセスポイントからの名前、MACアドレス、および/または他のデータを利用することができる。さらに他の実装形態では、ロケーションモジュール118は、ロケーションモジュール118がクライアントデバイス102のロケーションを決定することができるように、1つまたは複数のセルラタワーからの信号強度に対応するデータを受信することができる。クライアントデバイス102のロケーションを決定するように構成されたさらに他のロケーションモジュール118も使用され得る。
この例では、クライアントデバイス102は、ロケーションベースのサービスプロバイダ120のロケーションベースのサービスを使用できる、ウェブブラウザ110、および/または1つまたは複数のアプリケーション112、114を、メモリ106を介して記憶して、プロセッサ104を介して実行することができる。図示されるように、クライアントデバイス102は、ロケーションベースのサービスプロバイダ120でよいコンテンツソースから、ネットワーク150を介して利用可能なウェブページ(たとえば、オンライン検索エンジンの検索結果ウェブページ、訪問したウェブページ等)を取り出して表示するように構成されたウェブブラウザ110を含み得る。ウェブブラウザ110は、ファーストパーティのウェブページにアクセスして、クライアントデバイス102のディスプレイ108上で提示するためのウェブページを提供することができる。ウェブページの取出しおよび表示は、ロケーションベースのサービスプロバイダ120のロケーションベースのサービスを使用することができる。たとえば、ウェブブラウザ110を介してアクセスされる検索エンジンは、検索エンジンの検索フィールドに入力された検索クエリに関連付けられる近隣の企業のリストまたは表示を提供するためにロケーションベースのサービスを含み得る。クライアントデバイス102のユーザが検索クエリを検索エンジンの検索フィールドに入力すると、クライアントデバイス102のロケーションが、クライアントデバイス102によって提供されてもよく、検索エンジンのプロバイダによって要求されてもよい。ロケーションベースのサービスプロバイダ120でよい検索エンジンプロバイダは、検索クエリに関連付けられる近隣の企業のリストまたは他の表示を生成して、検索結果ページで提示するために、クライアントデバイス102のロケーション利用することができる。
他の実装形態では、取り出されたファーストパーティのウェブページは、クライアントデバイス102のロケーションに少なくとも部分的に基づいて選択されたサードパーティのコンテンツアイテムで提示され得る。たとえば、取り出されたウェブページは、ウェブブラウザ110に、ロケーションベースのサービスプロバイダ120でもよく、ロケーションベースのサービスプロバイダ120に関連付けられてもよい、コンテンツ選択サービスにコンテンツ選択要求を送らせるコンテンツタグを含み得る。コンテンツ選択要求は、たとえば、ファーストパーティのウェブページ(たとえば、ウェブページやポップアップウィンドウに埋め込まれたコンテンツとして)とともに提示するために選択されて供給されるべきサードパーティのコンテンツを要求することができる。場合によっては、コンテンツ選択要求は、以下で説明するコンテンツ選択サービスによって設定されたクッキーなどの、クライアントデバイス102のデバイス識別子を含む。さらに、クライアントデバイス102のロケーションは、コンテンツ選択要求に含まれ得る。クライアントデバイス102のロケーションは、クライアントデバイス102のロケーションに少なくとも部分的に基づいて、サードパーティのコンテンツを選択して供給するために、ロケーションベースのサービスプロバイダ120に提供され得る。たとえば、ロケーションベースのサービスプロバイダ120は、提供されたロケーションデータを使用してサードパーティのコンテンツアイテムを直接選択して供給することもでき、および/または、サードパーティが、クライアントデバイス102のロケーションに基づいて、選択されて供給されるべきサードパーティのコンテンツアイテムのリアルタイムの入札(bid)を提出することを許可することもできる。コンテンツ選択要求に含まれ得る他の情報は、ウェブブラウザ110によってアクセスされているウェブページのトピック、アクセスされているウェブページのアドレス、または他のそのような情報を含み得る。ロケーションベースのサービスプロバイダ120からのさらに他のロケーションベースのサービスは、クライアントデバイス102上で実行されるときにウェブブラウザ110を介して実装され得る。
クライアントデバイス102はまた、非ブラウザアプリケーション112、114(たとえば、第1のアプリケーション112から、n番目のアプリケーション114)を含み得る。一般的に、アプリケーション112、114は、ウェブブラウザ110がクライアントデバイス102のユーザによって指定されたURLに応答してウェブページを取り出すように構成されている点で、ウェブブラウザ110とは異なる。いくつかの実装形態では、アプリケーション112、114は、特定のウェブページだけを取り出す、あらかじめ定義されたオンラインサービスにアクセスする(たとえば、アクセスされたサービスが、アプリケーション112、114のコードに含まれ得る)、ウェブページを取り出すためにウェブブラウザ110を起動する、または任意のウェブページデータをまったく使用しないように構成され得る。たとえば、アプリケーション112、114は、通信アプリケーション(たとえば、電子メールアプリケーション、インスタントメッセンジャーアプリケーション等)、生産性アプリケーション(たとえば、テキストエディタ、ソフトウェア開発アプリケーション、表計算アプリケーション等)、ソーシャルメディアアプリケーション、マルチメディアプレーヤ(たとえば、音楽プレーヤ、ムービープレーヤ等)、ゲーム、ナビゲーションアプリケーション、または他の何らかの形態のアプリケーションでよい。いくつかの実装形態では、アプリケーション112、114は、「チェックイン」のためのロケーション機能を備えたソーシャルメディアアプリケーションなどの、ロケーションベースのサービスプロバイダ120によって提供されるロケーションベースのサービスに直接アクセスして、使用することができる。他の実装形態では、アプリケーション112、114は、クライアントデバイス102のロケーションに少なくとも部分的に基づいて選択されるサードパーティのコンテンツアイテムを提示することができる(たとえば、ファーストパーティのウェブページとともに提示されるべきサードパーティのコンテンツアイテムの選択および供給と同様)。したがって、アプリケーション112、114は、ロケーションベースのサービスプロバイダ120のロケーションベースのサービスを間接的に利用することができる。
ウェブブラウザ110とアプリケーション112、114とを記憶して実行することに加えて、メモリ106はまた、ロケーション曖昧化モジュール116を記憶して実行することができる。ロケーション曖昧化モジュール116は、ロケーションモジュール118から真のロケーションデータを受信して、ロケーションベースのサービスプロバイダ120によって提供されるロケーションベースのサービスのための真のロケーションの代わりに使用されるべき擬似ロケーションを出力する。ロケーション曖昧化モジュール116は、ロケーション曖昧化モジュール116が、ロケーションモジュール118からの真のロケーションおよびランダムオフセット値に基づいてクライアントデバイス102の擬似ロケーションを生成できるように、ランダムオフセット値を生成するために使用される乱数発生器を含むことができる。ロケーション曖昧化モジュール116の動作は、図2を参照して以下でより詳細に説明される。
いくつかの例では、クライアントデバイス102は、1つまたは複数のデバイス識別子の使用を通じて、ロケーションベースのサービスプロバイダ120またはコンテンツ選択サービスに対してそれ自体を識別することができる。デバイス識別子は、これに限定されないが、クッキー、ユニバーサルデバイス識別子(UDID)、デバイスシリアル番号、電話番号、またはネットワークアドレスを含み得る。たとえば、ロケーションベースのサービスプロバイダ120は、クライアントデバイス102が特定のウェブページを訪問するか、ロケーションベースのサービスプロバイダ120にアクセスする特定のアプリケーションを使用するときに、クライアントデバイス102上のクッキーを設定することができる。次にウェブページを訪問するとき、またはアプリケーションを実行するときに、クライアントデバイス102によって、ロケーションベースのサービスプロバイダ120にクッキーを送ることができ、ロケーションベースのサービスプロバイダ120が、異なるウェブページ訪問またはアプリケーション実行を同じクライアントデバイス102に結び付ける(attribute)ことを可能にする。
本明細書で説明されるシステムがユーザについての個人情報を収集する、または個人情報を使用することができる状況では、ユーザは、プログラムまたは機能がユーザ情報(たとえば、ユーザのソーシャルネットワーク、ソーシャルアクションまたは活動、職業、ユーザの嗜好、あるいはユーザの現在の位置についての情報)を収集するかどうかを制御する、あるいは、コンテンツサーバからユーザにより関連し得るコンテンツを受信するかどうか、および/またはその方法を制御する機会を与えられ得る。さらに、特定のデータは、それが記憶または使用される前に1つまたは複数の方法で処理され得るので、個人を特定できる情報は除去される。たとえば、ユーザのアイデンティティが、ユーザについて個人を特定できる情報が決定されないように処理されてもよく、ユーザの特定のロケーションが決定できないように、ロケーション情報が取得されるユーザの地理的位置が一般化されてもよい(都市、郵便番号、または州レベルなどに)。したがって、ユーザは、ユーザについての情報が収集されて、コンテンツサーバによって使用される方法に対する制御を有することができる。
ロケーションベースのサービスプロバイダ120は、ロケーションベースのサービスまたは他のコンテンツをネットワーク150に接続されたデバイスに提供する、ネットワーク150に接続された1つまたは複数の電子デバイスでよい。たとえば、ロケーションベースのサービスプロバイダ120は、コンピュータサーバ(たとえば、FTPサーバ、ファイル共有サーバ、ウェブサーバ等)でもよく、サーバの組合せ(たとえば、データセンタ、クラウドコンピューティングプラットフォーム等)でもよい。ロケーションベースのサービスは、ロケーションベースのサービスを提供するアプリケーションの一部、ロケーションベースのサービスを提供するウェブサイトの一部、ロケーションベースのサービスを提供する検索エンジン、クライアントデバイス102のロケーションに基づいてサードパーティのコンテンツアイテムを配信するサービス、および/または他のロケーションベースのサービスでよい。いくつかの実装形態では、ロケーションベースのサービスは、ウェブページデータ、テキストファイル、表計算、画像、検索結果、および他の形態のコンテンツアイテムなどの、1つまたは複数コンテンツアイテムを含んでもよく、それに関連付けられてもよい。クライアントデバイス102と同様に、ロケーションベースのサービスプロバイダ120は、ロケーションベースのサービスを提供するために、またはネットワーク150を介してクライアントデバイス102にデータを送信するために、プロセッサ122によって実行可能なプログラム命令を記憶するプロセッサ122とメモリ124とを含み得る。たとえば、ロケーションベースのサービスプロバイダ120のメモリ124は、ロケーションベースのサービスプロバイダ120に、ネットワーク150を介してクライアントデバイス102にロケーションベースのサービスおよび/または他のコンテンツを提供させる、ウェブサーバソフトウェア、FTPサービングソフトウェア、または他のタイプのソフトウェアなどの、ソフトウェアを実行するための命令を含み得る。プロセッサ122とメモリ124とは、処理モジュールを形成することができる。
ロケーションベースのサービスプロバイダ120は、直接または間接に、ロケーションベースのサービスをクライアントデバイス102に提供する。いくつかの実装形態では、ロケーションベースのサービスプロバイダ120は、ロケーションベースのサービス(たとえば、ロケーションにおいて「チェックイン」するために、ユーザにロケーションベースのサービスを提供する、または、クライアントデバイス102のユーザによってロケーションをポストに関連付ける、ソーシャルメディアウェブページ、またはソーシャルメディアアプリケーションのバックエンド)を直接提供することができる。他の実装形態では、ロケーションベースのサービスプロバイダ120は、コンテンツソースからのコンテンツとともにロケーションベースのサービスを提供するために、コンテンツソースとともに利用され得る(たとえば、ロケーションベースのサービスプロバイダ120は、サードパーティのコンテンツアイテムを選択して供給してもよく、サードパーティが、クライアントデバイス102のロケーションに基づいて選択および供給されるべき、また、コンテンツソースによって提供されるファーストパーティのコンテンツウェブページで提示されるべき、サードパーティのコンテンツアイテムのリアルタイムの入札を提出することを許可してもよい)。
図2を参照すると、ロケーションベースのサービスのためにクライアントデバイス102の真のロケーションを曖昧化するための方法200が、クライアントデバイス102のロケーション曖昧化モジュール116によって実装され得る。方法200は、ロケーションを求める要求が、クライアントデバイス102によって受信された(ロケーションベースのサービスプロバイダ120などから)ときに、またはクライアントデバイス102がロケーションを送信するとき(ローカルアプリケーションを実行するときなど)に開始することができる。方法200は、第1のランダムオフセットを生成するステップを含む(ブロック202)。第1のランダムオフセットは、クライアントデバイス102のロケーション曖昧化モジュール116の乱数発生器によって生成され得る。第1のランダムオフセットは、x軸のためにランダムに生成されたオフセット値と、y軸のためにランダムに生成されたオフセット値とに対応する値を有する2次元ベクトルでよい。
いくつかの実装形態では、ロケーション曖昧化モジュール116は、結果として得られるオフセット距離が、1つまたは複数のあらかじめ定められた値を上回るか、または下回るかを決定するために、第1のランダムオフセットのための2次元ベクトルのノルム(すなわち、経度軸と緯度軸とのオフセット値に基づいて、結果として得られるオフセット距離)と、1つまたは複数のあらかじめ定められた値とを比較することができる。ある例示的な実装形態では、1つまたは複数のあらかじめ定められた値は、0マイルを含めた約0マイル、および2.523マイルを含めた約2.523マイルを表す値でよい。ランダムに生成された値を有する2次元ベクトルは、約2.523マイルの半径を有し、第1のランダムに生成されたオフセットが配置される約20平方マイルのエリアを定義する、オフセットサークルを表すことができる。もちろん、0マイルを含めた約0マイル、および1マイルを含めた約1マイル(3.14平方マイルのエリアサークル)を表す値、0マイルを含めた約0マイル、および2マイルを含めた約2マイル(12.56平方マイルのエリアサークル)を表す値などの、他のあらかじめ定められた値が使用され得る。いくつかの実装形態では、あらかじめ定められた値は、ユーザの嗜好、現地の規格、現地のガイドライン、現地の慣習、現地の法律等に基づいて決定され得る。
他の実装形態では、ロケーション曖昧化モジュール116は、各ランダムに生成されたオフセット値が、1つまたは複数のあらかじめ定められた値を上回るか下回るかを決定するために、第1のランダムオフセットのための2次元ベクトルの各ランダムに生成された値の絶対値と、1つまたは複数のあらかじめ定められた値とを比較することができる。たとえば、1つまたは複数のあらかじめ定められた値は、0マイルを含めた約0マイル、および2.236マイルを含めた約2.236マイルを表す値でよい。したがって、ランダムに生成された値を有する2次元ベクトルは、第1のランダムに生成されたオフセットが配置される、約20平方マイルのエリアを定義するオフセットスクエアを表すことができる。もちろん、0マイルを含めた約0マイル、および1マイルを含めた約1マイル(4平方マイルの正方形エリア)を表す値、0マイルを含めた約0マイル、および2マイルを含めた約2マイル(16平方マイルの正方形エリア)を表す値などの、他のあらかじめ定められた値が使用され得る。いくつかの実装形態では、あらかじめ定められた値は、ユーザの嗜好、現地の規格、現地のガイドライン、現地の慣習、現地の法律等に基づいて決定され得る。
第1のランダムオフセットは、毎時、毎日、毎週、毎月など、定期的に生成されて、メモリ106などのコンピュータ可読媒体に記憶され得る。第1のランダムオフセットを生成するための定期性は、期間中のクライアントデバイス102の動きが、最小のあらかじめ定義された距離と比較して有意であるように決定され得る。たとえば、第1のランダムオフセットの定期的な再生成は、クライアントデバイス102があらかじめ定められた距離(たとえば、1平方キロメートル、または他の距離)以上を移動する可能性が高いように決定されてよく、それはユーザの嗜好、現地の規格、現地のガイドライン、現地の慣習、現地の法律等に基づき得る。ある例示的な実装形態では、第1のランダムオフセットは、毎日再生成され得る。
他の実装形態では、第1のランダムオフセットのための2次元ベクトルは、半径に対応する第1のランダムに生成された値と、角度に対応する第2のランダムに生成された値とを有することができる。
方法200はまた、第2のランダムオフセットを生成するステップを含む(ブロック204)。第2のランダムオフセットもまた、クライアントデバイス102のロケーション曖昧化モジュール116の乱数発生器によって生成され得る。第2のランダムオフセットもまた、x軸のためにランダムに生成されたオフセット値と、y軸のためにランダムに生成されたオフセット値とに対応する値を有する2次元ベクトルでよい。
いくつかの実装形態では、ロケーション曖昧化モジュール116は、結果として得られるオフセット距離が、1つまたは複数のあらかじめ定められた値を上回るか、または下回るかを決定するために、第2のランダムオフセットのための2次元ベクトルのノルム(すなわち、経度軸と緯度軸とのオフセット値に基づいて、結果として得られるオフセット距離)と、1つまたは複数のあらかじめ定められた値とを比較することができる。ある例示的な実装形態では、1つまたは複数のあらかじめ定められた値は、0マイルを含めた約0マイル、および2.523マイルを含めた約2.523マイルを表す値でよい。ランダムに生成された値を有する2次元ベクトルは、約2.523マイルの半径を有し、第1のランダムに生成されたオフセットが配置される約20平方マイルのエリアを定義する、オフセットサークルを表すことができる。もちろん、0マイルを含めた約0マイル、および1マイルを含めた約1マイル(3.14平方マイルのエリアサークル)を表す値、0マイルを含めた約0マイル、および2マイルを含めた約2マイル(12.56平方マイルのエリアサークル)を表す値などの、他のあらかじめ定められた値が使用され得る。いくつかの実装形態では、あらかじめ定められた値は、ユーザの嗜好、現地の規格、現地のガイドライン、現地の慣習、現地の法律等に基づいて決定され得る。
他の実装形態では、ロケーション曖昧化モジュール116は、各ランダムに生成されたオフセット値が、1つまたは複数のあらかじめ定められた値を上回るか下回るかを決定するために、第2のランダムオフセットのための2次元ベクトルの各ランダムに生成された値の絶対値と、1つまたは複数のあらかじめ定められた値とを比較することができる。たとえば、1つまたは複数のあらかじめ定められた値は、0マイルを含めた約0マイル、および2.236マイルを含めた約2.236マイルを表す値でよい。したがって、ランダムに生成された値を有する2次元ベクトルは、第1のランダムに生成されたオフセットが配置される、約20平方マイルのエリアを定義するオフセットスクエアを表すことができる。もちろん、0マイルを含めた約0マイル、および1マイルを含めた約1マイル(4平方マイルの正方形エリア)を表す値、0マイルを含めた約0マイル、および2マイルを含めた約2マイル(16平方マイルの正方形エリア)を表す値などの、他のあらかじめ定められた値が使用され得る。いくつかの実装形態では、あらかじめ定められた値は、ユーザの嗜好、現地の規格、現地のガイドライン、現地の慣習、現地の法律等に基づいて決定され得る。
第2のランダムオフセットは、ロケーションベースのサービスのためにサードパーティに送られるべき要求ごとに生成され得る。たとえば、新しいロケーションデータがクライアントデバイス102からロケーションベースのサービスプロバイダ120に送信されるべきである場合、ロケーション曖昧化モジュール116は新しい第2のランダムオフセットを生成する。
他の実装形態では、第2のランダムオフセットのための2次元ベクトルは、半径に対応する第1のランダムに生成された値と、角度に対応する第2のランダムに生成された値とを有することができる。
方法200は、クライアントデバイス102のロケーションを受信するステップをさらに含む(ブロック206)。例示的な実装形態では、ロケーション曖昧化モジュール116が、ロケーションモジュール118からロケーションデータを受信する。ロケーションモジュール118からのロケーションデータは、たとえば、GPSモジュールによって生成された、Wi-Fiアクセスポイントから決定された、セルラ三角測量によって決定された、経度と緯度の座標を表す値を含み得る。
ロケーション曖昧化モジュール116は、クライアントデバイス102のプロセッサ104を使用して、ロケーションモジュール118からのロケーションデータと、生成された第1のランダムオフセットと、生成された第2のランダムオフセットとを使用する擬似ロケーションを決定することができる(ブロック208)。一例では、擬似ロケーションは、式
SP=P+Offset1+Offset2
によって決定することができ、上式でSPは擬似ロケーションであり、Pはロケーションモジュール118から受信されたロケーションデータであり、Offset1は第1のランダムオフセットであり、Offset2は第2のランダムオフセットである。
決定された擬似ロケーションは、ロケーションベースのサービスプロバイダ120によって提供されるロケーションベースのサービスのために送信され得る(ブロック210)。擬似ロケーションのためのデータは、それ自体によって送信されてもよく、他のデータに(たとえば、コンテンツアイテム要求に)含まれてもよい。いくつかの実装形態では、ロケーションベースのサービスは、クライアントデバイス102によって送信された擬似ロケーションに基づいてサードパーティのコンテンツアイテムを選択および供給することの一部などの、サードパーティのコンテンツアイテムに関連付けられ得る。他の実装形態では、ロケーションベースのサービスは、入力された検索クエリに関連する近隣の企業のリストまたは他の表示を提示することなどによって、およびクライアントデバイス102によって送信された擬似ロケーションに基づいて、検索に関連付けられ得る。なおさらなる実装形態では、ロケーションベースのサービスは、クライアントデバイス102によって送信された擬似ロケーションに基づいてロケーションをポストと関連付けること、またはクライアントデバイス102によって送信された擬似ロケーションに基づいて「チェックイン」のためのロケーションを関連付けることなど、ソーシャルメディアアプリケーションに関連付けられ得る。
ある例示的な実装形態では、クライアントデバイス102は、ソーシャルメディアアプリケーションを実行することができる。クライアントデバイス102のユーザが、ソーシャルメディアアプリケーションを使用する際にクライアントデバイス102のロケーションを曖昧化することを選ぶと、クライアントデバイス102の真のロケーションはロケーションモジュール118によって決定され得る。真のロケーションデータは、クライアントデバイス102の擬似ロケーションを決定するために、ロケーション曖昧化モジュール116によって使用され得る。次いで、所望のロケーションベースのサービスのためのロケーションベースのサービスプロバイダ120に擬似ロケーションが出力され得る(たとえば、ソーシャルメディアアプリケーションを使用して、クライアントデバイス102のロケーションを含むポストを作成する場合、クライアントデバイス102によって、ロケーションベースのサービスプロバイダ120に、真のロケーションの代わりに擬似ロケーションが出力され得る)。したがって、クライアントデバイス102の真のロケーションは、クライアントデバイス102によって出力された擬似ロケーションを傍受し得るロケーションベースのサービスプロバイダ120および/または任意のサードパーティから曖昧化されたままであり得る。
上記は、クライアントデバイス102のロケーション曖昧化モジュール116を使用してクライアントデバイス102のロケーションを曖昧化するための実装形態を説明しているが、いくつかの実装形態では、クライアントデバイス102のロケーションを曖昧化するために、信頼されるサーバ130が使用され得る。図3は、ネットワーク150を介して通信している、クライアントデバイス102、ロケーションベースのサービスプロバイダ120、および信頼されるサーバ130を有する環境300を示している。この例では、ネットワーク150とロケーションベースのサービスプロバイダ120とは、図1を参照して説明したものと実質的に同一であり得る。この例では、クライアントデバイス102は、以下で図5および図7を参照してさらに説明するように、ロケーション曖昧化モジュール116を任意で省略してもよく、1つまたは複数のランダムオフセットを生成するために、ロケーション曖昧化モジュール116を含んでもよい。
信頼されるサーバ130は、コンピュータサーバでもよく、サーバの組合せ(たとえば、データセンタ、クラウドコンピューティングプラットフォーム等)でもよい。信頼されるサーバ130は、プロセッサ132とメモリ134とを含むように示されている。メモリ134は、プロセッサ132によって実行されると、プロセッサ132に、本明細書に記載の動作のうちの1つまたは複数を実行させる、機械命令を記憶することができる。プロセッサ132は、1つまたは複数のマイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、他の形態の処理回路、あるいはそれらの組合せを含み得る。メモリ134は、これに限定されないが、プロセッサ132にプログラム命令を提供することが可能な、電子的、光学的、磁気的、または他の何らかのストレージデバイスあるいは送信デバイスを含み得る。メモリ134は、フロッピー(登録商標)ディスク、CD-ROM、DVD、磁気ディスク、メモリチップ、ROM、RAM、EEPROM、EPROM、フラッシュメモリ、光媒体、または、プロセッサ132が命令を読み取ることができる他の何らかの適切なメモリを含み得る。プロセッサ132とメモリ134とは、処理モジュールを形成することができる。
この例では、メモリ134は、ロケーション曖昧化モジュール136を含み得る。ロケーション曖昧化モジュール136は、クライアントデバイス102からロケーションデータを受信して、ロケーションベースのサービスプロバイダ120によって提供されるロケーションベースのサービスのための真のロケーションの代わりに使用されるべき擬似ロケーションを出力する。いくつかの実装形態では、クライアントデバイスからのロケーションデータは、クライアントデバイス102のロケーションモジュール118からの真のロケーションデータでもよいし、ロケーションデータは、クライアントデバイス102によって信頼されるサーバ130に送信される、擬似ロケーション、中間擬似ロケーション、および/または曖昧化されたロケーションデータでもよい。ロケーション曖昧化モジュール136は、ロケーション曖昧化モジュール136が、クライアントデバイス102から受信されたロケーションデータとランダムオフセット値とに基づいて擬似ロケーションを決定できるように、ランダムオフセット値を生成するために使用される乱数発生器を含み得る。次いで、決定された擬似ロケーションは、信頼されるサーバ130によって、ネットワーク150を介して、または直接、ロケーションベースのサービスプロバイダ120に送信され得る。したがって、信頼されるサーバ130は、クライアントデバイス102とロケーションベースのサービスプロバイダ120との間の中間物であり得る。
図4を参照すると、信頼されるサーバ130のロケーション曖昧化モジュール136によって実装され得る例示的な方法400は、クライアントデバイス102のロケーションを示すデータを受信することによって開始することができる(ブロック402)。いくつかの実装形態では、クライアントデバイス102のロケーションを示すデータは、クライアントデバイス102のロケーションモジュール118によって決定されるように、クライアントデバイス102のロケーションに対応する経度と緯度の座標の2次元ベクトルを含み得る。他の実装形態では、クライアントデバイス102のロケーションを示すデータは、復号されて、クライアントデバイス102のロケーションを表すデータに構文解析され得る、符号化されたデータの文字列であり得る。
方法400は、第1のランダム2次元オフセットベクトルを生成するステップを含む(ブロック404)。第1のランダム2次元オフセットベクトルは、信頼されるサーバ130のロケーション曖昧化モジュール136の乱数発生器によって生成され得る。第1のランダム2次元オフセットベクトルは、x軸のためにランダムに生成されたオフセット値と、y軸のためにランダムに生成されたオフセット値とに対応する値を有し得る。
いくつかの実装形態では、ロケーション曖昧化モジュール136は、結果として得られるオフセット距離が、1つまたは複数のあらかじめ定められた値を上回るか、または下回るかを決定するために、第1のランダム2次元オフセットベクトルのノルム(すなわち、経度軸と緯度軸とのオフセット値に基づいて、結果として得られるオフセット距離)と、1つまたは複数のあらかじめ定められた値とを比較することができる。ある例示的な実装形態では、1つまたは複数のあらかじめ定められた値は、0マイルを含めた約0マイル、および2.523マイルを含めた約2.523マイルを表す値でよい。ランダムに生成された値を有する2次元ベクトルは、約2.523マイルの半径を有し、第1のランダムに生成されたオフセットが配置される約20平方マイルのエリアを定義する、オフセットサークルを表すことができる。もちろん、0マイルを含めた約0マイル、および1マイルを含めた約1マイル(3.14平方マイルのエリアサークル)を表す値、0マイルを含めた約0マイル、および2マイルを含めた約2マイル(12.56平方マイルのエリアサークル)を表す値などの、他のあらかじめ定められた値が使用され得る。いくつかの実装形態では、あらかじめ定められた値は、ユーザの嗜好、現地の規格、現地のガイドライン、現地の慣習、現地の法律等に基づいて決定され得る。
他の実装形態では、ロケーション曖昧化モジュール136は、各ランダムに生成されたオフセット値が、1つまたは複数のあらかじめ定められた値を上回るか下回るかを決定するために、第1のランダム2次元オフセットベクトルの各ランダムに生成された値の絶対値と、1つまたは複数のあらかじめ定められた値とを比較することができる。たとえば、1つまたは複数のあらかじめ定められた値は、0マイルを含めた約0マイル、および2.236マイルを含めた約2.236マイルを表す値でよい。したがって、ランダムに生成された値を有する2次元ベクトルは、第1のランダムに生成されたオフセットが配置される、約20平方マイルのエリアを定義するオフセットスクエアを表すことができる。もちろん、0マイルを含めた約0マイル、および1マイルを含めた約1マイル(4平方マイルの正方形エリア)を表す値、0マイルを含めた約0マイル、および2マイルを含めた約2マイル(16平方マイルの正方形エリア)を表す値などの、他のあらかじめ定められた値が使用され得る。いくつかの実装形態では、あらかじめ定められた値は、ユーザの嗜好、現地の規格、現地のガイドライン、現地の慣習、現地の法律等に基づいて決定され得る。
第1のランダム2次元オフセットベクトルは、デバイスごとに、毎時、毎日、毎週、毎月など、定期的に生成されて、メモリ134などのコンピュータ可読媒体に記憶されてよく、また、クライアントデバイス102のデバイス識別子に関連付けられ得る(たとえば、デバイス識別子と、第1のランダム2次元オフセットベクトルのための2つのランダムに生成された値とを有するベクトルとして)。第1のランダム2次元オフセットベクトルを生成するための定期性は、期間中のクライアントデバイス102の動きに関連するオフセットが、最小のあらかじめ定義された距離と比較して有意であるように決定され得る。たとえば、第1のランダム2次元オフセットベクトルの定期的な再生成は、クライアントデバイス102があらかじめ定められた距離(たとえば、1平方キロメートル、または他の距離)以上を移動する可能性が高いように決定されてよく、それはユーザの嗜好、現地の規格、現地のガイドライン、現地の慣習、現地の法律等に基づき得る。ある例示的な実装形態では、第1のランダム2次元オフセットベクトルは、毎日再生成され得る。
他の実装形態では、第1のランダム2次元オフセットベクトルは、半径に対応する第1のランダムに生成された値と、角度に対応する第2のランダムに生成された値とを有することができる。
方法400はまた、第2のランダム2次元オフセットベクトルを生成するステップを含む(ブロック406)。第2のランダム2次元オフセットベクトルもまた、信頼されるサーバ130のロケーション曖昧化モジュール136の乱数発生器によって生成され得る。第2のランダム2次元オフセットベクトルは、x軸のためにランダムに生成されたオフセット値と、y軸のためにランダムに生成されたオフセット値とに対応する値を有し得る。
いくつかの実装形態では、ロケーション曖昧化モジュール136は、結果として得られるオフセット距離が、1つまたは複数のあらかじめ定められた値を上回るか、または下回るかを決定するために、第2のランダム2次元オフセットベクトルのノルム(すなわち、経度軸と緯度軸とのオフセット値に基づいて、結果として得られるオフセット距離)と、1つまたは複数のあらかじめ定められた値とを比較することができる。ある例示的な実装形態では、1つまたは複数のあらかじめ定められた値は、0マイルを含めた約0マイル、および2.523マイルを含めた約2.523マイルを表す値でよい。ランダムに生成された値を有する2次元ベクトルは、約2.523マイルの半径を有し、第1のランダムに生成されたオフセットが配置される約20平方マイルのエリアを定義する、オフセットサークルを表すことができる。もちろん、0マイルを含めた約0マイル、および1マイルを含めた約1マイル(3.14平方マイルのエリアサークル)を表す値、0マイルを含めた約0マイル、および2マイルを含めた約2マイル(12.56平方マイルのエリアサークル)を表す値などの、他のあらかじめ定められた値が使用され得る。いくつかの実装形態では、あらかじめ定められた値は、ユーザの嗜好、現地の規格、現地のガイドライン、現地の慣習、現地の法律等に基づいて決定され得る。
他の実装形態では、ロケーション曖昧化モジュール136は、各ランダムに生成されたオフセット値が、1つまたは複数のあらかじめ定められた値を上回るか下回るかを決定するために、第2のランダム2次元オフセットベクトルの各ランダムに生成された値の絶対値と、1つまたは複数のあらかじめ定められた値とを比較することができる。たとえば、1つまたは複数のあらかじめ定められた値は、0マイルを含めた約0マイル、および2.236マイルを含めた約2.236マイルを表す値でよい。したがって、ランダムに生成された値を有する2次元ベクトルは、第1のランダムに生成されたオフセットが配置される、約20平方マイルのエリアを定義するオフセットスクエアを表すことができる。もちろん、0マイルを含めた約0マイル、および1マイルを含めた約1マイル(4平方マイルの正方形エリア)を表す値、0マイルを含めた約0マイル、および2マイルを含めた約2マイル(16平方マイルの正方形エリア)を表す値などの、他のあらかじめ定められた値が使用され得る。いくつかの実装形態では、あらかじめ定められた値は、ユーザの嗜好、現地の規格、現地のガイドライン、現地の慣習、現地の法律等に基づいて決定され得る。
第2のランダム2次元オフセットベクトルは、ロケーションベースのサービスのためにサードパーティに送られるべき要求ごとに生成され得る。たとえば、新しいロケーションデータがクライアントデバイス102からロケーションベースのサービスプロバイダ120に送信されるべきである場合、クライアントデバイス102は新しいロケーションデータを信頼されるサーバ130に送信することができる。信頼されるサーバ130のロケーション曖昧化モジュール136は、ロケーションベースのサービスプロバイダ120に送信されるべき新しい擬似ロケーションを生成する際に使用されるべき新しい第2のランダム2次元オフセットベクトルを生成する。
他の実装形態では、第2のランダム2次元オフセットベクトルは、半径に対応する第1のランダムに生成された値と、角度に対応する第2のランダムに生成された値とを有することができる。
ロケーション曖昧化モジュール136は、クライアントデバイス102からのロケーションデータと、生成された第1のランダム2次元オフセットベクトルと、生成された第2のランダム2次元オフセットベクトルとを使用して、擬似ロケーションを決定することができる(ブロック408)。一例では、擬似ロケーションは、式
SP=P+Offset1+Offset2
によって決定することができ、上式でSPは擬似ロケーションであり、Pはクライアントデバイス102のロケーションモジュール118から受信されたロケーションデータであり、Offset1は第1のランダム2次元オフセットベクトルであり、Offset2は第2のランダム2次元オフセットベクトルである。
決定された擬似ロケーションは、クライアントデバイス102に提供されるべきロケーションベースのサービスのために、ロケーションベースのサービスプロバイダ120に送信され得る(ブロック410)。擬似ロケーションのためのデータは、それ自体によって送信されてもよく、他のデータに(たとえば、コンテンツアイテム要求に)含まれてもよい。いくつかの実装形態では、ロケーションベースのサービスは、信頼されるサーバ130によって送信された擬似ロケーションに基づいてサードパーティのコンテンツアイテムを選択および供給することの一部などの、サードパーティのコンテンツアイテムに関連付けられ得る。他の実装形態では、ロケーションベースのサービスは、入力された検索クエリに関連する近隣の企業のリストまたは他の表示を提示することなどによって、および信頼されるサーバ130によって送信された擬似ロケーションに基づいて、検索に関連付けられ得る。なおさらなる実装形態では、ロケーションベースのサービスは、信頼されるサーバ130によって送信された擬似ロケーションに基づいてロケーションをポストと関連付けること、または信頼されるサーバ130によって送信された擬似ロケーションに基づいて「チェックイン」のためのロケーションを関連付けることなど、ソーシャルメディアアプリケーションに関連付けられ得る。いくつかの実装形態では、信頼されるサーバ130は、クライアントデバイス102が擬似ロケーションをロケーションベースのサービスプロバイダ120に送信できるように、代わりに擬似ロケーションをクライアントデバイス102に送信することができる。
図5は、クライアントデバイス102のロケーション曖昧化モジュール116によって部分的に、および信頼されるサーバ130のロケーション曖昧化モジュール136によって部分的に実装され得る別の例示的な方法500を示している。方法500は、ロケーションを求める要求が、クライアントデバイス102によって受信された(ロケーションベースのサービスプロバイダ120などから)ときに、またはクライアントデバイス102がロケーションを送信するとき(ローカルアプリケーションを実行するときなど)に開始することができる。方法500は、クライアントデバイス102のロケーションを受信するステップを開始することができる(ブロック502)。例示的な実装形態では、ロケーション曖昧化モジュール116が、ロケーションモジュール118からロケーションデータを受信する。ロケーションモジュール118からのロケーションデータは、たとえば、GPSモジュールによって生成された、Wi-Fiアクセスポイントから決定された、セルラ三角測量によって決定された、経度と緯度の座標を表す値を含み得る。
方法500は、第1のランダムオフセットを生成するステップを含む(ブロック502)。第1のランダムオフセットは、クライアントデバイス102のロケーション曖昧化モジュール116の乱数発生器によって生成され得る。第1のランダムオフセットは、x軸のためにランダムに生成されたオフセット値と、y軸のためにランダムに生成されたオフセット値とに対応する値を有する2次元ベクトルでよい。第1のランダムオフセットの生成は、図2のブロック202を参照して説明したものと実質的に同様でよい。
第1のランダムオフセットは、毎時、毎日、毎週、毎月など、定期的に生成されて、メモリ106などのコンピュータ可読媒体に記憶され得る。第1のランダムオフセットを生成するための定期性は、期間中のクライアントデバイス102の動きが、最小のあらかじめ定義された距離と比較して有意であるように決定され得る。たとえば、第1のランダムオフセットの定期的な再生成は、クライアントデバイス102があらかじめ定められた距離(たとえば、1平方キロメートル、または他の距離)以上を移動する可能性が高いように決定されてよく、それはユーザの嗜好、現地の規格、現地のガイドライン、現地の慣習、現地の法律等に基づき得る。ある例示的な実装形態では、第1のランダムオフセットは、毎日再生成され得る。
他の実装形態では、第1のランダムオフセットは、ロケーションベースのサービスのために、ロケーションベースのサービスプロバイダ120などのサードパーティに送られるべき要求ごとに生成され得る。たとえば、新しいロケーションデータがクライアントデバイス102からロケーションベースのサービスプロバイダ120に送信されるべきである場合、ロケーション曖昧化モジュール116は新しい第1のランダムオフセットを生成する。
ロケーション曖昧化モジュール116は、クライアントデバイス102のプロセッサ104を使用して、ロケーションモジュール118からのロケーションデータと、生成された第1のランダムオフセットとを使用する中間擬似ロケーションを決定することができる(ブロック506)。一例では、中間擬似ロケーションは、式
ISP=P+Offset1
によって決定することができ、上式で、ISPは中間擬似ロケーションであり、Pはロケーションモジュール118から受信されたロケーションデータであり、Offset1は第1のランダムオフセットである。
決定された中間擬似ロケーションは、信頼されるサーバ130に送信され得る(ブロック508)。いくつかの実装形態では、クライアントデバイス102の中間擬似ロケーションを示すデータは、クライアントデバイス102の中間擬似ロケーションに対応する経度と緯度の座標の2次元ベクトルを含み得る。他の実装形態では、クライアントデバイス102の中間擬似ロケーションを示すデータは、復号されて、クライアントデバイス102の中間擬似ロケーションを表すデータに構文解析され得る、符号化されたデータの文字列であり得る。
方法500はまた、第2のランダムオフセットを生成するステップを含む(ブロック510)。この例における第2のランダムオフセットは、信頼されるサーバ130のロケーション曖昧化モジュール136の乱数発生器によって生成される。第2のランダムオフセットは、x軸のためにランダムに生成されたオフセット値と、y軸のためにランダムに生成されたオフセット値とに対応する値を有する2次元ベクトルでよい。第2のランダムオフセットの生成は、図4のブロック406を参照して説明したものと実質的に同様でよい。
第1のランダムオフセットが定期的に生成される場合、第2のランダムオフセットは、ロケーションベースのサービスのために、ロケーションベースのサービスプロバイダ120などのサードパーティに送られるべき要求ごとに生成され得る。たとえば、新しいロケーションデータがクライアントデバイス102からロケーションベースのサービスプロバイダ120に送信されるべきである場合、信頼されるサーバ130のロケーション曖昧化モジュール136が、新しい第2のランダムオフセットを生成する。
要求が、ロケーションベースのサービスのために、ロケーションベースのサービスプロバイダ120などのサードパーティに送られるたびに第1のランダムオフセットが生成される場合、第2のランダムオフセットは、毎時、毎日、毎週、毎月など、定期的に生成されて、メモリ134などのコンピュータ可読媒体に記憶され得る。第2のランダムオフセットを生成するための定期性は、期間中のクライアントデバイス102の動きが、最小のあらかじめ定義された距離と比較して有意であるように決定され得る。たとえば、第2のランダムオフセットの定期的な再生成は、クライアントデバイス102があらかじめ定められた距離(たとえば、1平方キロメートル、または他の距離)以上を移動する可能性が高いように決定されてよく、それはユーザの嗜好、現地の規格、現地のガイドライン、現地の慣習、現地の法律等に基づき得る。ある例示的な実装形態では、第2のランダムオフセットは、毎日再生成され得る。第1のランダムオフセットの平均長と第2のランダムオフセット2次元ベクトルとは同等であってよく、たとえば、ほぼ同じ距離である。いくつかの例では、第1のランダムオフセットと第2のランダムオフセット2次元ベクトルとは、プライバシーを保護するための最小エリアが確立されるようなサイズのものであってよい。
信頼されるサーバ130のロケーション曖昧化モジュール136は、クライアントデバイス102からの中間擬似ロケーションデータと、生成された第2のランダムオフセットとを使用する擬似ロケーションを決定することができる(ブロック512)。一例では、擬似ロケーションは、式
SP=ISP+Offset2
によって決定することができ、上式でSPは擬似ロケーションであり、ISPはクライアントデバイス102から受信された中間擬似ロケーションデータであり、Offset2は第2のランダムオフセットである。
決定された擬似ロケーションは、信頼されるサーバ130によって、クライアントデバイス102に提供されるべきロケーションベースのサービスのために、ロケーションベースのサービスプロバイダ120に送信され得る(ブロック514)。擬似ロケーションのためのデータは、それ自体によって送信されてもよく、他のデータに(たとえば、コンテンツアイテム要求に)含まれてもよい。いくつかの実装形態では、ロケーションベースのサービスは、信頼されるサーバ130によって送信された擬似ロケーションに基づいてサードパーティのコンテンツアイテムを選択および供給することの一部などの、サードパーティのコンテンツアイテムに関連付けられ得る。他の実装形態では、ロケーションベースのサービスは、入力された検索クエリに関連する近隣の企業のリストまたは他の表示を提示することなどによって、および信頼されるサーバ130によって送信された擬似ロケーションに基づいて、検索に関連付けられ得る。なおさらなる実装形態では、ロケーションベースのサービスは、信頼されるサーバ130によって送信された擬似ロケーションに基づいてロケーションをポストと関連付けること、または信頼されるサーバ130によって送信された擬似ロケーションに基づいて「チェックイン」のためのロケーションを関連付けることなど、ソーシャルメディアアプリケーションに関連付けられ得る。いくつかの実装形態では、信頼されるサーバ130は、クライアントデバイス102が擬似ロケーションをロケーションベースのサービスプロバイダ120に送信できるように、代わりに擬似ロケーションをクライアントデバイス102に送信することができる。
図6は、領域のセット610に分割されているエリア600の概要を示している。この例では、エリア600は、地球の表面の全体を含んでもよく、または地球の表面のより小さいエリアであってもよい。エリア600は、領域のセット610に分割されている。いくつかの実装形態では、領域610は、国、州、大都市圏、郵便番号等の既存のサブディビジョンに対応し得る。他の例では、領域610は、エリア600の任意のサブディビジョンであり得る。別の実装形態では、エリア600は、各領域610が、経度の1/100および緯度の1/100のエリアなどの、経度と緯度によって定義されたエリアを有するように、領域のセット610にさらに分割され得る。
さらに他の実装形態では、各領域610は、実質的に球形の地球の分割に基づいて決定され得る。たとえば、図7を参照すると、地球を表す球体700は、地球の最北端部分702に接する上面712と、地球の最南端部分704に接する底面714と、赤道706に接する4つの面(2つは716、718として示されている)を有する立方体710で囲むことができる。球体700の表面上の各点pは、立方体710の各表面に投影され得る。すなわち、球体700の中心から、点pを通って、立方体710の表面のうちの1つの上の点に線を引いている。各点pは、座標(面、u、v)によって表すことができ、面はpが投影された表面に対応し、uは表面の第1の座標であり、vは表面の第2の座標である。次いで、領域720、722は、実質的に球体の地球の表面のエリアを定義するp1、p2、p3、およびp4の4つの点の投影に基づいて定義され得る。いくつかの実装形態では、領域720、722は、各領域が隣接するポイントから同じ角変位を有するように定義され得る。すなわち、点p1が領域722などのために赤道上に配置される場合、点p2は、点p1から水平角変位の1/100だけ離れた球体700の表面上の点であるが、同じ垂直角変位に配置され得る。同様に、点p3は、点p1から垂直角変位の1/100だけ離れた球体700の表面上であるが、同じ水平角変位に配置され得る。点p4は、点p1から垂直角変位の1/100と水平角変位の1/100との両方だけ離れた球体700の表面上の点に配置され得る。もちろん、領域を定義するための他の角変位が使用され得る。
各領域のエリアは、プライバシーを保護するために、各領域が最小エリアよりも著しく小さくないように、また、ロケーションベースのサービスを無効にするほど各領域が著しく大きくないように、大きさを調整され得る。
図8を参照すると、図6を参照して説明した領域610、または図7を参照して説明した領域720、722などの領域のセットは、クライアントデバイス102の真のロケーションを曖昧化する間に使用され得る。図8は、領域のセットを受信するステップを含む方法800を示している(ブロック802)。いくつかの実装形態では、領域のセットは、信頼されるサーバ130によって生成および/または記憶されてもよく、領域のセットはクライアントデバイス102によって生成および/または記憶されてもよい。いくつかの実装形態では、領域のセットは、国、州、大都市圏、郵便番号等のエリアの既存のサブディビジョンに対応し得る。他の実装形態では、領域のセットは、エリアの任意のサブディビジョンであり得る。さらに他の実装形態では、領域のセットは、各領域が、経度の1/100および緯度の1/100のエリアなどの、経度と緯度によって定義されたエリアを有するように、定義され得る。さらに、領域のセットは、各領域が、隣接するポイントから同じ角変位(たとえば、角変位の度の1/100)を有するように定義された領域に対応し得る。この例では、領域のセットは、信頼されるサーバ130によって受信されるが、方法800は、代わりにクライアントデバイス102によって実行され得ることが理解されるべきである。
クライアントデバイス102のロケーションを示すデータが受信される(ブロック804)。この例では、信頼されるサーバ130が、クライアントデバイス102のロケーションモジュール118によって生成されたクライアントデバイス102のロケーションを示すデータを受信している。いくつかの実装形態では、クライアントデバイス102のロケーションを示すデータは、クライアントデバイス102のロケーションモジュール118によって決定されるように、クライアントデバイス102のロケーションに対応する経度と緯度の座標の2次元ベクトルを含み得る。他の実装形態では、クライアントデバイス102のロケーションを示すデータは、復号されて、クライアントデバイス102のロケーションを表すデータに構文解析され得る、符号化されたデータの文字列であり得る。
方法800は、第1のランダムオフセットを生成するステップを含む(ブロック806)。この例における第1のランダムオフセットは、信頼されるサーバ130のロケーション曖昧化モジュール136の乱数発生器によって生成される。第1のランダムオフセットは、x軸のためにランダムに生成されたオフセット値と、y軸のためにランダムに生成されたオフセット値とに対応する値を有する2次元ベクトルでよい。第1のランダムオフセットの生成は、図4のブロック406を参照して説明したものと実質的に同様でよい。
いくつかの実装形態では、第1のランダムオフセットは、クライアントデバイスごとに、毎時、毎日、毎週、毎月など、定期的に生成されて、メモリ134などのコンピュータ可読媒体に記憶される。第1のランダムオフセットを生成するための定期性は、期間中のクライアントデバイス102の動きが、最小のあらかじめ定義された距離と比較して有意であるように決定され得る。たとえば、第1のランダムオフセットの定期的な再生成は、クライアントデバイス102があらかじめ定められた距離(たとえば、1平方キロメートル、または他の距離)以上を移動する可能性が高いように決定されてよく、それはユーザの嗜好、現地の規格、現地のガイドライン、現地の慣習、現地の法律等に基づき得る。ある例示的な実装形態では、第1のランダムオフセットは、毎日再生成され得る。
他の実装形態では、第1のランダムオフセットは、ロケーションベースのサービスのために、ロケーションベースのサービスプロバイダ120などのサードパーティに送られるべき要求ごとに生成される。たとえば、新しいロケーションデータがクライアントデバイス102からロケーションベースのサービスプロバイダ120に送信されるべきである場合、信頼されるサーバ130のロケーション曖昧化モジュール136が、新しい第1のランダムオフセットを生成する。
信頼されるサーバ130のロケーション曖昧化モジュール136は、クライアントデバイス102からのロケーションデータと、生成された第1のランダムオフセットとを使用する中間擬似ロケーションを決定することができる(ブロック808)。一例では、中間擬似ロケーションは、式
ISP=P+Offset1
によって決定することができ、上式で、ISPは中間擬似ロケーションであり、Pはクライアントデバイス102から受信されたロケーションデータであり、Offset1は第1のランダムオフセットである。
中間擬似ロケーションを使用して、領域のセットから領域を、中間擬似ロケーションに基づいて決定することができる(ブロック810)。領域の決定は、領域のセットのうちのどの領域が、中間擬似ロケーションが配置されるエリアを定義するかを決定することによって実行され得る。いくつかの実装形態では、中間擬似ロケーションの座標は、各領域を定義する座標のセットと比較され得る。
一旦領域が決定されると、決定された領域に基づく擬似ロケーションは、信頼されるサーバ130によって、クライアントデバイス102に提供されるべきロケーションベースのサービスのために、ロケーションベースのサービスプロバイダ120に送信され得る(ブロック812)。擬似ロケーションは、中心点、角、または他の何らかの領域の固定点などの決定された領域に関連付けられ得る。したがって、中間擬似ロケーションが領域内に配置される場合、領域に関連付けられる固定点を使用することによって、クライアントデバイス102の実際のロケーションをさらに曖昧化することができる。領域の固定点に基づいて結果として得られる擬似ロケーションのデータは、それ自体によって送信されてもよく、他のデータに(たとえば、コンテンツアイテム要求に)含まれてもよい。いくつかの実装形態では、ロケーションベースのサービスは、信頼されるサーバ130によって送信された擬似ロケーションに基づいてサードパーティのコンテンツアイテムを選択および供給することの一部などの、サードパーティのコンテンツアイテムに関連付けられ得る。他の実装形態では、ロケーションベースのサービスは、入力された検索クエリに関連する近隣の企業のリストまたは他の表示を提示することなどによって、および信頼されるサーバ130によって送信された擬似ロケーションに基づいて、検索に関連付けられ得る。なおさらなる実装形態では、ロケーションベースのサービスは、信頼されるサーバ130によって送信された擬似ロケーションに基づいてロケーションをポストと関連付けること、または信頼されるサーバ130によって送信された擬似ロケーションに基づいて「チェックイン」のためのロケーションを関連付けることなど、ソーシャルメディアアプリケーションに関連付けられ得る。いくつかの実装形態では、信頼されるサーバ130は、クライアントデバイス102が結果として得られる擬似ロケーションをロケーションベースのサービスプロバイダ120に送信できるように、代わりに結果として得られる擬似ロケーションをクライアントデバイス102に送信することができる。
図8に示される方法800のいくつかの実装形態では、中間擬似ロケーションは、信頼されるサーバ130だけが領域のセットから領域を決定するように、クライアントデバイス102によって決定されて、信頼されるサーバ130に送信されてよく、また、結果として得られる擬似ロケーションをロケーションベースのサービスプロバイダ120に直接送信してもよく、結果として得られる擬似ロケーションを、ロケーションベースのサービスプロバイダ120に送られるように、クライアントデバイス102に送信してもよい。さらに、いくつかの実装形態では、図2、図4、および/または図5を参照して説明したものと同様に、第2のランダムオフセットが利用され得る。
図9は、クライアントデバイス102、ロケーションベースのサービスプロバイダ120、信頼されるサーバ130、および/または本明細書に記載の他の任意のコンピューティングデバイスを実装するために使用され得るコンピューティングシステム900のブロック図である。コンピューティングシステム900は、情報を伝達するためのバス905または他の通信構成要素と、情報を処理するためにバス905に結合されたプロセッサ910または処理モジュールとを含む。コンピューティングシステム900はまた、RAMまたは他の動的ストレージデバイスなどの、情報と、プロセッサ910によって実行されるべき命令とを記憶するための、バス905に結合されたメインメモリ915を含む。メインメモリ915はまた、プロセッサ910による命令の実行中に、位置情報、テンポラリ変数、または他の中間情報を記憶するために使用され得る。コンピューティングシステム900は、プロセッサ910のための静的情報と命令とを記憶するためにバス905に結合された、ROM 920または他の静的ストレージデバイスをさらに含み得る。ソリッドステートデバイス、磁気ディスク、または光ディスクなどのストレージデバイス925は、情報と命令とを永続的に記憶するためにバス905に結合されている。コンピューティングシステム900は、これに限定されないが、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、セルラ電話、スマートフォン、モバイルコンピューティングデバイス(たとえば、ノートパッド、電子リーダ等)などのデジタルコンピュータを含み得る。
コンピューティングシステム900は、バス905を介して、ユーザに情報を表示するための、液晶ディスプレイ(LCD)、薄膜トランジスタ液晶ディスプレイ(TFT)、有機発光ダイオード(OLED)ディスプレイ、LEDディスプレイ、電子ペーパーディスプレイ、プラズマディスプレイパネル(PDP)、および/または他のディスプレイ等の、ディスプレイ935に結合され得る。英数字および他のキーを含むキーボードなどの入力デバイス930は、情報およびコマンド選択をプロセッサ910に伝達するためにバス905に結合され得る。別の実装形態では、入力デバイス930は、タッチスクリーンディスプレイ内などのディスプレイ935に統合され得る。入力デバイス930は、方向情報およびコマンド選択をプロセッサ910に伝達するための、およびディスプレイ935上のカーソルの動きを制御するための、マウス、トラックボール、またはカーソル方向キーなどのカーソル制御を含み得る。
様々な実装形態によれば、本明細書に記載の処理および/または方法は、メインメモリ915に含まれる命令の構成(arrangement of instructions)を実行しているプロセッサ910に応答して、コンピューティングシステム900によって実装され得る。そのような命令は、ストレージデバイス925などの別のコンピュータ可読媒体から、メインメモリ915の中に読み込まれ得る。メインメモリ915に含まれる命令の構成の実行は、コンピューティングシステム900に、本明細書に記載の例示的な処理および/または方法ステップを実行させる。マルチプロセッシング構成における1つまたは複数のプロセッサはまた、メインメモリ915に含まれる命令を実行するために採用され得る。代替実装形態では、例示的な実装形態を実現するために、ハードワイヤード回路が、ソフトウェアの命令の代わりに、またはそれと組み合わされて使用され得る。このように、実装形態は、ハードウェア回路およびソフトウェアのどの特定の組合せにも限定されない。
コンピューティングシステム900はまた、システム900とネットワーク150との間の通信リンクを提供するためにバス905に結合され得る通信モジュール940を含む。したがって、通信モジュール940は、プロセッサ910が、ワイヤードまたはワイヤレスに、ネットワーク150に結合された他の電子システムと通信することを可能にする。たとえば、通信モジュール940は、システム900をインターネットまたは別のネットワーク150に接続するイーサネット(登録商標)回線に結合され得る。他の実装形態では、通信モジュール940は、アンテナ(図示せず)に結合されてよく、ネットワーク150とのワイヤレス通信インターフェースを介して情報を送信および受信するための機能を提供する。
様々な実施形態では、通信モジュール940は、これに限定されないが、WLANプロトコル(たとえば、IEEE802.11a/b/g/n/ac/ad、IEEE802.16、IEEE802.20等)、PANプロトコル、低レート無線PANプロトコル(たとえば、ZigBee、IEEE802.15.4-2003)、赤外線プロトコル、Bluetooth(登録商標)プロトコル、パッシブまたはアクティブRFIDプロトコルを含むEMIプロトコルなどの1つまたは複数の通信プロトコルに従ってデータ通信を行うように構成された1つまたは複数のトランシーバを含み得る。
通信モジュール940は、異なるタイプのプロトコル、通信範囲、動作電力要件、RFサブバンド、情報タイプ(たとえば、音声またはデータ)、使用シナリオ、アプリケーション、および/または同等物を使用して通信するように構成された1つまたは複数のトランシーバを含み得る。様々な実装形態では、通信モジュール940は、任意の数または組合せの通信規格を使用してローカルデバイスとの通信をサポートするように構成された1つまたは複数のトランシーバを備え得る。
様々な実装形態では、通信モジュール940はまた、任意の数または組合せの通信規格(たとえば、GSM(登録商標)、CDMA、TDNM、WCDMA(登録商標)、OFDM、GPRS、EV-DO、Wi-Fi、WiMAX、S02.xx、UWB、LTE、衛星等)を使用して、デバイスと音声およびデータ信号を交換することができる。本明細書に記載の技法は、符号分割多元接続(CDMA)ネットワーク、時分割多元接続(TDMA)ネットワーク、周波数分割多元接続(FDMA)ネットワーク、直交FDMA(OFDMA)ネットワーク、シングルキャリアFDMA(SC-FDMA)ネットワークなどの、様々なワイヤレス通信ネットワーク150のために使用され得る。CDMAネットワークは、ユニバーサル地上無線アクセス(UTRA)、cdma2000等の無線技術を実装することができる。UTRAは、広帯域CDMA(W-CDMA(登録商標))および低チップレート(LCR)を含む。CDMA2000は、IS-2000、IS-95、およびIS-856規格をカバーする。TDMAネットワークは、グローバルシステムフォーモバイルコミュニケーションズ(GSM(登録商標))などの無線技術を実装することができる。OFDMAネットワークは、進化型UTRA(E-UTRA)、IEEE802.11、IEEE802.16、IEEE802.20、フラッシュOFDM等の無線技術を実装することができる。UTRA、E-UTRA、およびGSM(登録商標)は、ユニバーサルモバイルテレコミュニケーションシステム(UMTS)の一部である。ロングタームエボリューション(LTE)は、E-UTRAを使用するUMTSの最新リリースである。UTRA、E-UTRA、GSM(登録商標)、UMTS、およびLTEは、「第3世代パートナーシッププロジェクト」(3GPP)という名称の組織からの文書に記載されている。CDMA2000は、「第3世代パートナーシッププロジェクト2」(3GPP2)という名称の組織からの文書に記載されている。
例示的なコンピューティングシステム900が図9に記載されているが、本明細書に記載の主題の実装形態および機能動作は、本明細書に開示された構造およびそれらの構造的均等物を含む、他のタイプのデジタル電子回路で、あるいはコンピュータソフトウェア、ファームウェア、またはハードウェア、あるいはそれらのうちの1つまたは複数の組合せで実装し得る。
本明細書に記載の主題および動作の実装形態は、本明細書に開示された構造およびそれらの構造的均等物を含む、デジタル電子回路で、または非一時有形媒体に組み入れられたコンピュータソフトウェア、ファームウェア、またはハードウェアで、あるいはそれらのうちの1つまたは複数の組合せで実装され得る。本明細書に記載の主題は1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはその動作を制御するために、1つまたは複数のコンピュータ記憶媒体上で符号化された、コンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替で、またはそれに加えて、プログラム命令は、人工的に生成された伝搬信号、たとえば、データ処理装置による実行のための適切な受信装置への送信のための情報を符号化するために生成された、機械が生成した、電気的、光学的、または電磁的信号上で符号化され得る。コンピュータ記憶媒体は、コンピュータ可読ストレージデバイス、コンピュータ可読ストレージ基板、ランダムまたはシリアルアクセスメモリアレイまたはデバイス、あるいはそれらのうちの1つまたは複数の組合せでもよく、それに含まれてもよい。さらに、コンピュータ記憶媒体が伝搬信号ではない場合、コンピュータ記憶媒体は、人工的に生成される伝搬信号で符号化された、コンピュータプログラム命令の発信元または宛先でよい。コンピュータ記憶媒体はまた、1つまたは複数の別個の構成要素または媒体(たとえば、複数のCD、ディスク、または他のストレージデバイス)でもよく、それに含まれてもよい。したがって、コンピュータ記憶媒体は、有形と非一時との両方である。
本明細書に記載の動作は、データ処理装置によって、1つまたは複数のコンピュータ可読ストレージデバイスに記憶されているか、他の発信元から受信された、データに実行され得る。
「データ処理装置」または「コンピューティングデバイス」または「処理モジュール」という用語は、例として、プログラマブルプロセッサ、コンピュータ、システムオンチップ、または複数のシステムオンチップ、プログラムされたプロセッサの一部、あるいは上記の組合せを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、たとえば、FPGAまたはASICを含み得る。装置はまた、ハードウェアに加えて、当該のコンピュータプログラムの実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、あるいはそれらのうちの1つまたは複数の組合せを構成するコードを含むことができる。装置および実行環境は、ウェブサービス、分散コンピューティングおよびグリッドコンピューティングインフラストラクチャなどの、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイラ型言語またはインタープリタ型言語、宣言型言語または手続き型言語を含む、任意の形態のプログラミング言語で書くことができ、それは、スタンドアロンプログラムとして、あるいはモジュール、構成要素、サブルーチン、オブジェクト、またはコンピューティング環境での使用に適した他のユニットとしてを含む、任意の形態で展開することができる。コンピュータプログラムは、ファイルシステム内のファイルに対応することができるが、そうである必要はない。プログラムは、他のプログラムまたはデータ(たとえば、マークアップ言語文書に記憶された1つまたは複数のスクリプト)を保持するファイルの一部に、当該プログラム専用の単一のファイルに、または複数の協調ファイル(たとえば1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのサイトに配置された、または複数のサイトにわたって分散されて、通信ネットワークによって相互接続された、1つのコンピュータ上、または複数のコンピュータ上で実行されるように展開され得る。
コンピュータプログラムの実行に適したプロセッサは、例を挙げると、汎用マイクロプロセッサと専用マイクロプロセッサとの両方と、任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサとを含む。一般的に、プロセッサは、読出し専用メモリまたはランダムアクセスメモリ、あるいはその両方から命令およびデータを受信する。コンピュータの必須要素は、命令と、命令およびデータを記憶するための1つまたは複数のメモリデバイスとに応じて動作を実行するためのプロセッサである。一般的に、コンピュータはまた、データを記憶するための1つまたは複数の大容量ストレージデバイス、たとえば、磁気ディスク、光磁気ディスク、または光ディスクを含むか、そこからデータを受信する、またはそこにデータを転送する、あるいはその両方ために動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、いくつか例を挙げると、たとえば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲーム機、全地球測位システム(GPS)受信機、または携帯型ストレージデバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)などの別のデバイスに組み込まれ得る。コンピュータプログラム命令およびデータを記憶するために適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMまたはDVDディスクを含む、すべての形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補完することもでき、専用論理回路に組み込むこともできる。
ユーザとの対話を提供するために、本明細書に記載の主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、たとえば、CRT(陰極線管)またはLCDモニタ、ならびに、ユーザがコンピュータに入力を提供することができるキーボードおよびポインティングデバイス、たとえば、マウスまたはトラックボールを有するコンピュータ上で実装され得る。他の種類のデバイスも同様に、ユーザとの対話を提供するために使用され得る。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってよく、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受信され得る。
本明細書は、多くの具体的な実装形態の詳細が含むが、これらは、特許請求されることが可能なものの範囲を限定するものと解釈されるべきではなく、むしろ、特定の実施形態に固有の特徴の記述として解釈されるべきである。本明細書において別々の実施形態の文脈で説明された特定の特徴を、単一の実装形態にまとめて実装することも可能である。逆に、単一の実装形態の文脈で説明された様々な特徴を、複数の実施形態で別々に実装したり、任意の適切なサブコンビネーションで実装したりすることも可能である。さらに、特徴は、特定の組合せで動作するように上記で説明されており、最初にそのように特許請求されてもいるが、特許請求された組合せのうちの1つまたは複数の特徴が、場合によっては、この組合せから削除されることが可能であり、特許請求された組合せは、サブコンビネーションまたはサブコンビネーションの変形形態を対象とすることも可能である。
同様に、図面には特定の順序で動作が描かれているが、このことは、望ましい結果を達成するために、そのような動作が、図示された特定の順序または連続した順序で実行されること、あるいは、例示されたすべての動作が実行されることを必要とするものと理解されるべきではない。特定の状況では、マルチタスキングおよび並列処理が有利な場合もある。さらに、前述の実施形態における様々なシステム構成要素の分離は、すべての実施形態でそのような分離を必要とするものと理解されるべきではなく、記載されたプログラム構成要素およびシステムは、一般に、有形の媒体に組み入れられた単一のソフトウェア製品に統合されてもよいし、複数のソフトウェア製品にパッケージ化されてもよいことが理解されるべきである。
「または(or)」への言及は、「or」を使用して記述される任意の用語が、任意の単一の、複数の、およびすべての記述される用語を示すことができるように、包括的なものと解釈され得る。
このように、主題の特定の実施形態を記載してきた。他の実施形態は、以下の特許請求の範囲内である。場合によっては、特許請求の範囲に記載の動作は異なる順序で実行されてよく、依然として所望の結果を達成することができる。さらに、添付の図面に描かれた処理は、望ましい結果を達成するために必ずしも図示された特定の順序、または連続した順序を必要としない。特定の実施形態では、マルチタスキングおよび並列処理が有利な場合もある。
特許請求の範囲は、その旨の記載がない限り、記載された順序または要素に限定されるものとして読まれるべきではない。添付の特許請求の範囲の趣旨および範囲から逸脱することなしに、形態および詳細における様々な変更が当業者によって行われてよいことが理解されるべきである。以下の特許請求の趣旨および範囲内のすべての実施形態、ならびにその均等物が特許請求される。