[0017] これより、図面を参照しながら、特許請求する主題について説明する。図面では、図面全体を通じて同様のエレメントを指すために同様の参照番号が全般的に使用される。以下の記載では、説明の目的に限って、特許請求する主題の完全な理解を得るために、多数の具体的な詳細を明記する。しかしながら、特許請求する主題は、これらの具体的な詳細がなくても、実施できることは明白であろう。他方で、特許請求する主題を説明し易くするために、構造およびデバイスをブロック図で示すこととする。
[0018] 今日、ユーザーはマッピング・サービスを通じて道順を検索し、検索エンジンを通じて情報を検索し、カレンダー・アプリケーションによってイベントおよび備忘録を編成し、および/またはユーザーの要請に基づいて(例えば、ユーザーが彼の妹に電話することを明示的に備忘録に予定することができ、ユーザーはこのユーザーの現在地に近い郵便局を明示的に検索することができる等)他のアクションを実行することができる。生憎、推奨は、直接的なユーザーの要請なしでは、ユーザーに提供することはできない。したがって、ここで提案するように、推奨をユーザーにプッシュする(直接的なユーザーの要請なしで)ことができると有利であろう。
[0019] 推奨をユーザーにプッシュする一実施形態を、図1における方法例100によって例示する。102において、この方法が開始する。104において、ユーザーに関連する誘起イベントを特定することができる。一例では、誘起イベントは、ユーザーが活動を実行するという推論に対応するのでもよい。この推論は、ユーザーによる以前の活動実行に基づくことができる(例えば、天候が80°F以上のとき、ユーザーは金曜日にアイスクリームを購入することを好む)。他の例では、1人以上のユーザーの被観察ユーザー行動(例えば、ユーザーは、ガソリンで1ガロン当たり少なくとも20セント節約するためには、通常5マイルまでなら遠回りする)、および/または実世界値(例えば、天候変化、ユーザーの位置変化、車両内のガソリン量等)の変化に基づいて、1組の誘起イベントを作成することもできる。このように、1組の誘起イベント内における誘起イベントの発生を特定することができる。他の例では、誘起イベントが、ユーザー・カレンダー内において予定されているイベント(例えば、アイスクリーム店に近い食料品店を推奨するために、食料品買い物カレンダー・イベントを金曜日における80°Fを超える気温と相関付けてもよい)、電子メール(例えば、店の電子メール・クーポンの締め切りが、ユーザーがその店を訪問することの推奨を誘起してもよい)、ソーシャル・ネットワーク・データー、車両におけるガソリン量等に対応してもよい。
[0020] 一例では、誘起イベントが、ユーザー・データー(例えば、公に入手可能なデーター、推奨をプッシュする際にユーザーが使用する許可を与えているデーター、推奨をプッシュする際にユーザーがオプト・アウトしていないデーター等)に基づいてもよい。例えば、電子メール、カレンダー、ユーザーによって選択された以前の検索結果、ユーザーが辿った以前の地図の道順、位置通知イベント(location check-in event)、ユーザーが参加したソーシャル・ネットワーク・イベント、および/または種々の他のソースを、誘起イベント・データーのために掘り起こすこともできる。他の例では、誘起イベントが、集計されたユーザー・データーに基づいてもよい。例えば、マッピング・サービスのユーザーは、通常、溶けるのを回避するために、自宅から5マイル以内に位置する食料品店からアイスクリームを購入することを選択する。
[0021] 106において、誘起イベントに対応する1つ以上の提案エンティティを決定することができる。例えば、位置、業務(business)、時刻(人に電話するための提案時刻)、運転経路、広告、一連のイベント等を、1つ以上の提案エンティティとして決定することができる。一例では、108において、誘起イベントに関連する観察データーから得られる1つ以上の制約に基づいて、エンティティ選択判断基準モデルを構築してもよい。他の例では、既定のエンティティ選択判断基準モデルを、108において、エンティティ選択判断基準モデルとして特定してもよい(例えば、既定のエンティティ選択判断基準モデルは、オフラインでというように、経時的な1人以上のユーザーの被観察ユーザー行動に基づいて、非同期に生成することもできる)。エンティティ選択判断基準モデルの一例では、1人以上のユーザーの行動を集計して、制約を生成する(generate)のでもよい(例えば、自宅近くでアイスクリームを購入する方を好むユーザーに基づいて、自宅間距離制約を生成してもよい)。他の例では、1人以上のユーザーのユーザー趣向を集計して、制約を生成するのでもよい(例えば、特定銘柄の穀類が特売であるとき、ユーザーはその穀類を購入することを優先する、ユーザーが午前中に業務電話をかけることを優先する、マッピング・アプリケーションのユーザーは、通常、彼らの経路に沿って便利な場所にあるガソリン・スタンドよりも単に数セントしか安くないガソリンを求めて遠回りはしない等)。他の例では、実世界値に基づいて制約を生成するのでもよい(例えば、郵便局の閉店時刻に基づいて時間制約を生成してもよい、現在の交通状態に基づいて道順制約を生成してもよい、ユーザーが持っているクーポンに基づいて価格制約を生成してもよい等)。このように、エンティティ選択判断基準モデルは、天候制約、ガソリン制約、交通制約、会員制約、価格制約、クーポン制約、営業時間制約、ユーザー趣向制約、目的地距離制約、駐車場/目的地制約、時間制約、および/または被観察行動制約等のような、1つ以上の制約から構築することもできる。
[0022] 110において、エンティティ選択判断基準モデルを1つ以上の提案エンティティに適用して、誘起イベントに対する推奨を作成することができる。この推奨は、1つ以上の提案エンティティから選択した提案エンティティを含むことができる。一例では、エンティティ選択判断基準モデルから得られる種々の要因に基づいて、1つ以上の提案エンティティを順位付けしてもよい(例えば、要因は、エンティティ選択判断基準モデルを生成するために使用された1つ以上の制約に対応してもよい)。例えば、1つ以上の提案エンティティは、都合要因(例えば、ある店は、ユーザーの現在地からどの位近くにその店が位置するかではなく、ユーザーの運転経路に沿ってどの位便利に位置するかに基づいて順位付けるのでもよく、そうしないと、運転者の現在の運転経路から遠回りする結果になる場合もある)、価格要因(例えば、運転者の現在の運転経路からの遠回りを必要とするが価格が低い第1の店は、第1の店がユーザーにとって容認可能な遠回り閾値以内にある場合、価格がもっと高い第2の店よりも高く順位付けることができる)、時間要因(例えば、ユーザーが到着する時刻までに閉店するかもしれない店には、比較的低い順位を指定するとよい)、および/または種々の他の要因に基づいて、順位付けすることができる。このように、推奨を作成することができる。
[0023] 112において、ユーザーに関連するデバイスに推奨をプッシュすることができる(例えば、移動体デバイス、車両内にある計算デバイス、タブレット・デバイス、デスクトップ・デバイス、ラップトップ・デバイス、マッピング・サービスをホストするデバイス等)。推奨をプッシュする一例では、エンティティ選択判断基準モデル内における1つ以上の制約(例えば、営業時間制約、現在地制約等)に基づいて、プッシュ時刻を決定することもできる。例えば、アイスクリーム購入トリガーが、結果的にユーザーの自宅近くにあるアイスクリーム店の推奨になるのでもよい。ユーザーが推奨を要請しなかった、および/または推奨に対するプッシュ時刻を指定しなかったのであっても、プッシュ時刻に推奨をユーザーにプッシュすることができ、店が閉店する前にこの店に到着するための適した通知をユーザーに提供することができる。このように、プッシュ時刻に推奨をデバイスにプッシュすることができる。114において、この方法は終了する。
[0024] 図2は、推奨216をユーザーにプッシュするように構成されたシステム200の一例を示す。システム200は、推奨216をユーザーのデバイス218にプッシュするように構成された推奨コンポーネント210を含むことができる。推奨コンポーネント210は、ユーザーに関連する誘起イベントを特定するように構成することができる。例えば、ユーザー(例えば、および/または他のユーザー)に対して誘起することができる1つ以上の誘起イベントを含む1組のトリガー212を、推奨コンポーネント210によって維持することができる。一例では、1組のトリガー212は、ユーザーが通常金曜日の仕事後に切手を購入することを指定する第1誘起イベントを含んでもよく、これはユーザーの以前の被観察行動(例えば、以前の被観察行動204)から作成されてもよい。1組のトリガー212は、ユーザーがアイスクリームを購入するためのメモをユーザーのカレンダー上に有することを指定する第2誘起イベントを含んでもよく、これはユーザーのカレンダー(例えば、カレンダー202)から作成されたのでもよい。このように、1組のトリガー212は、ユーザーの前被観察行動、他のユーザーの集計被観察行動、実世界値の変化(例えば、ユーザーの現在地が、ユーザーが電子メールを通じて友人に興味を以前に表明していた陸標に比較的近いということでもよい)等のような、種々の情報に基づいて作成することができる種々のトリガーを含むことができる。
[0025] 推奨コンポーネント210は、誘起イベントに対応する1つ以上の提案エンティティを決定するように構成することができる。例えば、推奨コンポーネントは、1箇所以上の郵便局(post office branches)、1箇所以上の食料品店、1箇所以上のガソリン・スタンド、および/または1組のエンティティ214内からの他の提案エンティティを選択することができる。推奨コンポーネント210は、誘起イベントに関連する観察データー208から得られる1つ以上制約に基づいて、エンティティ選択判断基準モデル220を特定する(例えば、既に構築されているエンティティ選択判断基準モデルをエンティティ選択判断基準モデル220として特定する)、および/または構築する(新たなエンティティ選択判断基準モデルをエンティティ選択判断基準モデル220として構築する)ように構成することもできる。一例では、食料品店および/または郵便局が、ユーザーが到着できる時刻までは営業していなければならないことを、時間制約が指定してもよい(例えば、位置および時刻データー206に基づいて)。他の例では、郵便局は通常食料品店よりも早く閉店するので、順序制約が、食料品店よりも前に郵便局を訪問すべきことを指定してもよい(例えば、業務終了時刻のような実世界値に基づいて)。他の例では、都合制約(convenience constraint)が、遠回りすることに無関心を表すユーザーに基づいて、郵便局が自宅までの運転経路に沿って便利に位置しなければならないことを指定してもよい(例えば、以前の被観察行動204に基づいて)。他の例では、ユーザーは溶けるのを避けるために通常自宅の近くでアイスクリームを購入するので、目的地距離制約が、食料品店はユーザーの自宅から10分以内に位置すべきことを指定してもよい(例えば、以前の被観察行動204に基づいて)。このように、観察データー208から種々の制約を得ることができ、エンティティ選択判断基準モデル220を構築するために使用することができる。
[0026] 推奨コンポーネント210は、エンティティ選択判断基準モデル220を1つ以上の提案エンティティに適用して、誘起イベントに対して推奨216を作成するように構成することができる。推奨216は、1つ以上の提案エンティティから選択された提案エンティティ(例えば、第1提案エンティティ222、第2提案エンティティ224、および/または図示しない他の提案エンティティ)を含むことができる。例えば、推奨216は、ユーザーの自宅までの運転経路に沿って便利に位置する特定の郵便局がもうすぐ閉まることを明示する第1提案エンティティ222を含んでもよい。推奨216は、郵便局が閉まる前にユーザーが切手を購入する(例えば、以前の被観察行動204から特定されるように、ユーザーが金曜日の仕事後に規則的に行う)ことができるように、郵便局にユーザーを誘導するために道順を指示することができる。推奨216は、溶けるのを避けるためにユーザーが自宅近くでアイスクリームを購入する(例えば、以前の被観察行動204から特定されるように、ユーザーが金曜日の仕事後に規則的に行う)ことができるように、特定の食料品店がユーザーの自宅近くに位置することを明示する第2提案エンティティ224を含んでもよい。推奨コンポーネント210は、プッシュ時刻(例えば、仕事が終わる1時間前)にユーザーのデバイス218に推奨216をプッシュすることができ、推奨216に従うのに適した時刻をユーザーに指示することができる。
[0027] 図3は、推奨316をユーザーにプッシュするように構成されたシステム300の一例を示す。システム300は、推奨316をユーザーのデバイス318にプッシュするように構成された推奨コンポーネント310を含むことができる。推奨コンポーネント310は、ユーザーに関連する誘起イベントを特定するように構成することができる。例えば、ユーザー(例えば、および/または他のユーザー)に対して誘起することができる1つ以上の誘起イベントを含む1組のトリガー312を、推奨コンポーネント310によって維持することができる。一例では、1組のトリガー312は、ユーザーが月曜日に食料品店を望むことを指定する誘起イベントを含むのでもよく、ユーザーのカレンダー見出し(例えば、カレンダー302)から作成されていてもよい。しかしながら、カレンダー見出しは、時刻および/または特定の食料品店を指定しなくてもよい。このように、現在の日付けが月曜日であることに基づいて、誘起イベントを誘起するのでもよい。
[0028] 推奨コンポーネント310は、誘起イベントに対応する1つ以上の提案エンティティを決定するように構成することができる。例えば、推奨コンポーネントは、1組のエンティティ314内から1つ以上の食料品店(例えば、ユーザーが会員になっていない第1食料品店322、ユーザーが会員になっている第2食料品店322、および/または誘起イベントに関連があるかもしれない他の食料品店)を選択することができる。推奨コンポーネント310は、誘起イベントに関連する観察データー308から得られた1つ以上の制約に基づいて、エンティティ選択判断基準モデル320を特定する(例えば、既に構築されているエンティティ選択判断基準モデルをエンティティ選択判断基準モデル320として特定する)、および/または構築する(新たなエンティティ選択判断基準モデルをエンティティ選択判断基準モデル320として構築する)ように構成することもできる。一例では、会員制約が、第2食料品店306の割引会員になっていることを指定するのでもよく、これはソーシャル・ネットワーク・データー304から得られたのでもよい。都合制約は、食料の買い物のときはもっと安い価格を得るために5分遠回りすることを厭わないことを指定するのでもよい。このように、種々の制約を観察データー308から得ることができ、エンティティ選択判断基準モデル320を構築するために使用することができる。
[0029] 推奨コンポーネント310は、エンティティ選択判断基準モデル320を1つ以上の提案エンティティに適用して、誘起イベントに対する推奨316を作成するように構成することができる。推奨316は、1つ以上の提案エンティティから選択された提案エンティティを含むことができる。例えば、推奨316は、ユーザーが第2食料品店306の会員になっており、第2食料品店がユーザーの本来の経路(例えば、本来の経路324)から5分未満の遠回りであるので、第2食料品店306を含むことができる。推奨316は、第2食料品店306を含むことができるが、第1食料品店322を含んではならない。何故なら、ユーザーが第2食料品店306の会員になっていることに基づいて、第2食料品店306を第1食料品店322よりも相対的に高く順位付けることができるからである(例えば、第1食料品店の方が本来の経路324に沿ってもっと便利に位置するとしても)。推奨コンポーネント310は、推奨316をユーザーのデバイス318にプッシュすることができる。
[0030] 図4は、推奨416をユーザーにプッシュするように構成されたシステム400の一例を示す。システム400は、推奨416をユーザーのデバイス418にプッシュするように構成された推奨コンポーネント410を含むことができる。推奨コンポーネント410は、ユーザーに関連する誘起イベントを特定するように構成することができる。例えば、ユーザー(例えば、および/または他のユーザー)に対して誘起することができる1つ以上の誘起イベントを含む1組のトリガー412を、推奨コンポーネント410によって維持することができる。一例では、1組のトリガー412は、ユーザーが火曜日の午後に彼の妹に電話することを指定する誘起イベントを含むのでもよい。誘起イベントは、ユーザーの以前の被観察行動404に基づくこともできる(例えば、ユーザーは通常火曜日の午後に彼の妹に電話する)。このように、誘起イベントは、現在の日付けが火曜日の朝であることに基づいて誘起することができる。
[0031] 推奨コンポーネント410は、誘起イベントに対応する1つ以上の提案エンティティを決定するように構成することができる。例えば、推奨コンポーネントは、1組のエンティティ414の中から1つ以上の提案通話時刻を選択するのでもよい。推奨コンポーネント410は、誘起イベントに関連する観察データー408から得られた1つ以上の制約に基づいて、エンティティ選択判断基準モデル420を特定する(例えば、既に構築されているエンティティ選択判断基準モデルをエンティティ選択判断基準モデル320として特定する)、および/または構築する(新たなエンティティ選択判断基準モデルをエンティティ選択判断基準モデル320として構築する)ように構成することもできる。一例では、予定立案制約(scheduling constraint)が、妹は火曜日の午後に予定されている約束があるが、火曜日の夕方は空いていることを明示するのでもよい(例えば、カレンダー402に基づいて)。このように、種々の制約を観察データー408から得ることができ、エンティティ選択判断基準モデル420を構築するために使用することができる。
[0032] 推奨コンポーネント410は、エンティティ選択判断基準モデル420を1つ以上の提案エンティティに適用して、誘起イベントに対する推奨416を作成するように構成することができる。推奨416は、1つ以上の提案エンティティから選択された提案エンティティを含むことができる。例えば、推奨416は、ユーザーの妹に連絡が取れる(available)ときにユーザーが妹に電話できるように、提案夕方通話時間406を含むのでもよい。推奨コンポーネント410は、推奨416をユーザーのデバイス418にプッシュすることができる。
[0033] 図5は、推奨504をユーザーにプッシュするように構成されたシステム500の一例を示す。システム500は、誘起イベントに基づいて推奨504をユーザーのデバイス506にプッシュするように構成された推奨コンポーネント502を含むことができる(例えば、現在の日付けが金曜日であり、ユーザーはボブに電話し、トリッシュに電話して、遊園地に行く準備をすることになっている)。例えば、推奨コンポーネント502は、ユーザーはボブに電話し(例えば、カレンダーの見出しに基づいて)、トリッシュに電話し(例えば、金曜日にトリッシュに電話したという以前のユーザー行動に基づいて)、そして金曜日に銀行に立ち寄る(例えば、ユーザーがこの週末に遊園地に行くために現金が必要になることを示す電子メールに基づいて)ことを決定することができる。このように、推奨コンポーネント502は、ボブに対する1つ以上の提案通話時間、トリッシュに対する1つ以上の提案通話時間、1つ以上の銀行等というような、誘起イベントに対応する1つ以上の提案エンティティを決定することができる。
[0034] 推奨コンポーネント502は、観察データーから得られた1つ以上の制約に基づいて、エンティティ選択判断基準モデルを構築することができる(例えば、ユーザーの以前の電話行動に基づいて、ユーザーが通常午前中に電話をかける方を好むというユーザー趣向制約、ユーザーはトリッシュとの通話に準備するために30分必要とするという第1時間制約、ユーザーとボブとの間における以前の電話行動に基づいて、ユーザーはボブと1時間電話するという第2時間制約、銀行が閉まる前にユーザーが銀行に到着するための営業時間制約等)。このように、推奨コンポーネント502はエンティティ選択判断基準モデルを1つ以上の提案エンティティに適用して、推奨504を作成することができる。例えば、推奨コンポーネント504は、ボブは9:00前は忙しいのでボブに9:30に電話することをユーザーに推奨する第1提案エンティティ、ユーザーが通話に十分に準備する時間が取れるようにトリッシュに11:00に電話することをユーザーに推奨する第2提案エンティティ510(例えば、ユーザーは準備するのに30分必要であり、ボブとの通話は通常1時間かかる)、および/またはユーザーが自宅までの運転経路に沿って便利に位置する特定の銀行に到着することができるように、4:00までには仕事場から出発することをユーザーに推奨する第3提案エンティティ512を含むことができる。このように、推奨506は、一連のイベント(例えば、通話、銀行訪問等)を含むことができる。推奨504をユーザーのデバイス506にプッシュすることができる。
[0035] 図6は、推奨604をユーザーにプッシュするように構成されたシステム600の一例を示す。システム600は、誘起イベント(例えば、天候のような実世界値の変化)に基づいて推奨604をユーザーのデバイス606にプッシュするように構成された推奨コンポーネント602を含むことができる。例えば、推奨コンポーネント602は、天候は85°F晴れであり、ユーザーはプール(water park)で泳ぐことに興味があると判定することができる。このように、推奨コンポーネント602は、1つ以上のプールというような、誘起イベントに対応する1つ以上の提案エンティティを決定することができる。
[0036] 推奨コンポーネント602は、観察データーから得られた1つ以上の制約(例えば、位置制約、クーポン制約等)に基づいて、エンティティ選択判断基準モデルを構築することができる。推奨コンポーネント602は、エンティティ選択判断基準モデルを1つ以上の提案エンティティに適用して、推奨604を作成することができる。例えば、推奨604は、ユーザーがクーポンを有するプールをユーザーが訪問することを推奨する第1提案エンティティを含むのでもよい。このように、推奨604は、このプールへの道順、クーポンを含む電子メールへのリンク、および/または他の情報を含むことができる。推奨604をユーザーのデバイス606にプッシュすることができる。
[0037] 図7は、推奨704をユーザーにプッシュするように構成されたシステム700の一例を示す。システム700は、誘起イベント(例えば、ユーザーの車両におけるガソリン量)に基づいて、推奨704をユーザーのデバイス706にプッシュするように構成された推奨コンポーネント702を含むことができる。例えば、推奨コンポーネント702は、車両におけるガソリン量が10%未満であると判定するのでもよい。このように、推奨コンポーネント702は、1つ以上のガソリン・スタンドというような、誘起イベントに対応する1つ以上の提案エンティティを決定することができる。
[0038] 推奨コンポーネント702は、観察データーから得られた1つ以上の制約(例えば、位置制約、価格制約、遠回り制約等)に基づいて、エンティティ選択判断基準モデルを構築することができる。例えば、ユーザーは通常ガソリンで25セント以上節約するためには5分以下の遠回りを厭わないかもしれない。推奨コンポーネント702は、エンティティ選択判断基準モデルを1つ以上の提案エンティティに適用して、推奨704を作成することができる。例えば、推奨704は、本来の運転経路よりは5分以内の遠回りになるが、本来の運転経路に沿ってもっと便利に位置すると考えられるガソリン・スタンドよりも30セント安いガソリンを有する第1ガソリン・スタンドを推奨する第1提案エンティティ708を含むことができる。このように、推奨704は、ユーザーを第1ガソリン・スタンドに誘導することができる新たな経路をユーザーのために含むことができる。推奨704をユーザーのデバイス706にプッシュすることができる。
[0039] 更に他の実施形態は、本明細書において紹介した技法の内1つ以上を実現するように構成されたプロセッサー実行可能命令を含むコンピューター読み取り可能媒体を伴う。これらの方法で考案することができるコンピューター読み取り可能媒体の一例を図8に示す。図8では、実施態様800は、コンピューター読み取り可能媒体816(例えば、CD−R、DVD−R、またはハード・ディスク・ドライブのプラッター)を含み、その上に、コンピューター読み取り可能データー814がエンコードされる。このコンピューター読み取り可能データー814は、一方、本明細書において明記した原理の1つ以上にしたがって動作するように構成された1組のコンピューター命令812を含む。1つのこのような実施形態800では、プロセッサー実行可能コンピューター命令812は、例えば、図1の方法例100の少なくとも一部というような、方法810を実行するように構成することができる。他のこのような実施形態では、プロセッサー実行可能命令812は、例えば、図2のシステム例200の少なくとも一部、図3のシステム例300の少なくとも一部、図4のシステム例400の少なくとも一部、図5のシステム例500の少なくとも一部、および/または図6のシステム例600の少なくとも一部というような、システムを実現するように構成することもできる。当業者には、本明細書において紹介した技法にしたがって動作するように構成された多くのこのようなコンピューター読み取り可能媒体を考案することができよう。
[0040] 以上、構造的特徴および/または方法論的動作に特定的な文言で主題について説明したが、特許請求の範囲において定められている主題は、必ずしも以上で説明した具体的な特徴や動作に限定される訳ではないことは、理解されてしかるべきである。逆に、以上で説明した具体的な特徴や動作は、特許請求の範囲を実現する形態例として開示したまでである。
[0041] 本明細書において使用する場合、「コンポーネント」、「モジュール」、「システム」、「インターフェース」等の用語は、一般に、ハードウェア、ハードウェアおよびソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアのいずれである、コンピューター関連エンティティを指すことを意図している。例えば、コンポーネントは、プロセッサー上で実行するプロセス、プロセッサー、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピューターであってもよく、なおもこれらには限定されない。例示として、コントローラー上で実行するアプリケーション、およびこのコントローラーもコンポーネントであることができる。1つ以上のコンポーネントが1つのプロセス内に存在してもよく、および/または実行のスレッドおよびコンポーネントが1つのコンピューター上に局在されても、および/または2つ以上のコンピューター間で分散されてもよい。
[0042] 更に、特許請求する主題は、方法、装置、あるいは標準的なプログラミングおよび/または設計技法を使用して、開示した主題を実現するようにコンピューターを制御するためのソフトウェア、ファームウェア、ハードウェア、またはそのあらゆる組み合わせを生産するための製品として実現することもできる。「製品」という用語は、本明細書において使用する場合、任意のコンピューター読み取り可能デバイスからアクセス可能なコンピューター・プログラム、搬送波、または媒体を包含する(encompass)ことを意図している。勿論、特許請求する主題の範囲や主旨から逸脱することなく、この構成には多くの変更を行うことができることを、当業者は認めよう。
[0043] 図9および以下の論述は、本明細書において明記した構成要素の1つ以上の実施形態を実現するための相応しい計算環境の端的で総合的な説明を表す。図9の動作環境は、適した動作環境の一例に過ぎず、動作環境の使用範囲や機能性に関して限定を示唆することは全く意図していない。計算デバイス例には、パーソナル・コンピューター、サーバ・コンピューター、ハンドヘルドまたはラップトップ・デバイス、移動体デバイス(移動体電話機、パーソナル・ディジタル・アシスタント(PDA)、メディア・プレーヤー等のような)、マルチプロセッサー・システム、消費者用電子機器、ミニ・コンピューター、メインフレーム・コンピューター、以上のシステムまたはデバイスの内任意のものを含む分散型計算環境等が含まれるが、これらに限定されるのではない。
[0044] 必須ではないが、実施形態は、1つ以上の計算デバイスによって実行される「コンピューター読み取り可能命令」という一般的なコンテキストで説明される。コンピューター読み取り可能命令は、コンピューター読み取り可能媒体(以下で論ずる)によって流通することができる。コンピューター読み取り可能命令は、機能、オブジェクト、アプリケーション・プログラミング・インターフェース(API)、データー構造等というようなプログラミング・モジュールとして実現することができ、特定のタスクを実行するかまたは特定の抽象データー型を実装する。通例、コンピューター読み取り可能命令の機能性は、種々の環境において所望通りに、組み合わせるまたは分散させることもできる。
[0045] 図9は、本明細書において提供した1つ以上の実施形態を実現するように構成された計算デバイス912を含むシステム910の一例を示す。一構成では、計算デバイス912は少なくとも1つの処理ユニット916とメモリー918とを含む。計算デバイスの正確な構成およびタイプに応じて、メモリー918は、揮発性(例えば、RAMのような)、不揮発性(例えば、ROM、フラッシュ・メモリー等のような)、またはこれら2つの何らかの組み合わせとするとよい。この構成を、図9において、破線914によって示す。
[0046] 他の実施形態では、デバイス912は追加の特徴および/または機能性を含んでもよい。例えば、デバイス912は、限定されるのではないが、磁気ストレージ、光ストレージ等を含む追加のストレージ(例えば、リムーバブルおよび/または非リムーバブル)を含んでもよい。このような追加のストレージを図9においてストレージ920によって例示する。一実施形態では、本明細書において提供した1つ以上の実施形態を実現するためのコンピューター読み取り可能命令は、ストレージ920に入れることもできる。また、ストレージ920は、オペレーティング・システム、アプリケーション・プログラム等を実装するための他のコンピューター読み取り可能命令を格納することもできる。コンピューター読み取り可能命令は、例えば、処理ユニット916による実行のために、メモリー918にロードすることができる。
[0047] 「コンピューター読み取り可能媒体」という用語は、本明細書において使用する場合、コンピューター記憶媒体を含む。コンピューター記憶媒体は、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令または他のデーターのような情報の格納のための任意の方法または技術で実現される。メモリー918およびストレージ920は、コンピューター読み取り可能媒体の例である。コンピューター記憶媒体は、RAM、ROM、EEPROM、フラッシュ・メモリーまたは他のメモリー技術、CD−ROM、ディジタル・バーサタイル・ディスク(DVD)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたは他の磁気記憶デバイス、あるいは所望の情報を格納するために使用することができそしてデバイス912によってアクセスすることができるあらゆる他の媒体を含むが、これらに限定されるのではない。このようなコンピューター記憶媒体はいずれも、デバイス912の一部であってもよい。
[0048] また、デバイス912は、デバイス912が他のデバイスと通信することを可能にする通信接続(1つまたは複数)926も含むことができる。通信接続(1つまたは複数)926は、モデム、ネットワーク・インターフェース・カード(NIC)、統合ネットワーク・インターフェース、無線周波数送信機/受信機、赤外線ポート、USB接続、または計算デバイス912を他の計算デバイスに接続するための他のインターフェースを含むことができるが、これらに限定されるのではない。通信接続(1つまたは複数)926は、有線接続またはワイヤレス接続を含むことができる。通信接続(1つまたは複数)926は、通信媒体を送信および/または受信することができる。
[0049] 「コンピューター読み取り可能媒体」という用語は、通信媒体を含むことができる。通信媒体は、通例、搬送波のような「変調データー信号」または他の移送メカニズムにコンピューター読み取り可能命令または他のデーターを具体化し、あらゆる情報配信媒体を含む。「変調データー信号」という用語は、この信号に情報をエンコードするような仕方でその特性の1つ以上が設定または変化させられた信号を含むことができる。
[0050] デバイス912は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス、赤外線カメラ、ビデオ入力デバイス、および/またはあらゆる他の入力デバイスというような、入力デバイス(1つまたは複数)924を含むことができる。また、1つ以上のディスプレイ、スピーカー、プリンター、および/またはあらゆる他の出力デバイスというような出力デバイス(1つまたは複数)922も、デバイス912に含むことができる。入力デバイス(1つまたは複数)924および出力デバイス(1つまたは複数)922は、有線接続、ワイヤレス接続、またはそのいずれかの組み合わせによって、デバイス912に接続することができる。一実施形態では、他の計算デバイスからの入力デバイスまたは出力デバイスを計算デバイス912の入力デバイス(1つまたは複数)924または出力デバイス(1つまたは複数)922として使用することもできる。
[0051] 計算デバイス912のコンポーネントは、バスのような種々の相互接続によって接続されてもよい。このような相互接続は、PCI Expressのような周辺コンポーネント相互接続(PCI)、ユニバーサル・シリアル・バス(USB)、firewire(IEEE 1394)、光バス構造等を含むことができる。他の実施形態では、計算デバイス912のコンポーネントは、ネットワークによって相互接続されてもよい。例えば、メモリー918は、ネットワークによって相互接続された異なる物理位置に配置された多数の物理メモリー・ユニットで構成されてもよい。
[0052] 当業者は、コンピューター読み取り可能命令を格納するために利用される記憶デバイスをネットワークを跨がって分散させてもよいことを認めるであろう。例えば、ネットワーク928を介してアクセス可能な計算デバイス930が、本明細書において提要した1つ以上の実施形態を実現するためのコンピューター読み取り可能命令を格納することもできる。計算デバイス912は、計算デバイス930にアクセスし、実行のために、コンピューター読み取り可能命令の一部または全部をダウンロードすることができる。あるいは、計算デバイス912は、必要に応じて、コンピューター読み取り可能命令の断片(pieces)をダウンロードするのでもよく、または一部の命令を計算デバイス912において実行し、一部を計算デバイス930において実行するのでもよい。
[0053] 実施形態の種々の動作が、本明細書において示された。一実施形態では、説明した動作の1つ以上が、1つ以上のコンピューター読み取り可能媒体上に格納されたコンピューター読み取り可能命令を構成することができ、計算デバイスによって実行されると、この計算デバイスに、説明した動作を実行させる。これらの動作の一部または全部を説明した順序は、これらの動作が必然的に順序に依存することを暗示するように解釈してはならない。この説明の恩恵を得た当業者には、代わりの順序付けも認められよう。更に、本明細書において示した各実施形態において、必ずしも全ての動作があるとは限らないことは理解されよう。
[0054] 更に、「一例の」という単語は、例、実例、または例示として供することを意味するために使用されている。本明細書において「一例」として説明した態様または構造(design)はいずれも、他の態様または設計に対して必ずしも有利であるとは解釈されない。むしろ、一例のという単語の使用は、具体的に概念を紹介することを意図している。本願において使用する場合、「または」という用語は、排他的な「または」ではなく、包含的な「または」を意味することを意図している。即ち、別段明示されない限り、または文脈から明らかでない限り、「XはAまたはBを採用する」とは、自然な包含的置換のいずれをも意味することを意図している。即ち、XがAを採用する、XがBを採用する、またはXがAおよびBの双方を採用する場合、以上の場合のいずれにおいても、「XはAまたはBを採用する」が満たされる。加えて、本願および添付する特許請求の範囲において使用する場合、単数形を対象にすることが別段明示されていない限り、または文脈から明らかでない限り、冠詞「a」および「an」は、一般に、「1つ以上」を意味すると解釈することができる。また、AおよびB等(and/or the like)の少なくとも1つは、通常、AまたはBあるいはAおよびB双方を意味する。
[0055] また、本開示は、1つ以上の実施態様に関して示し説明したが、本明細書および添付図面の読解(reading and understanding)に基づいて、同等の変形(alteration)および変更(modification)が当業者には想起されよう。本開示は、このような変更および変更を全て含み、以下の請求項の範囲によってのみ限定されるものとする。特に、以上で説明したコンポーネント(例えば、エレメント、リソース等)によって実行される種々の機能に関して、このようなコンポーネントを説明するために使用された用語は、別段指示されていなければ、説明されたコンポーネントの指定された機能を実行するあらゆるコンポーネントに対応し(例えば、機能的に同等なコンポーネント)、本明細書において例示された本開示の実施態様例において当該機能を実行する、開示された構造と構造的に同等でなくてもよい。加えて、本開示の特定的な特徴について、様々な実施態様の内1つだけに関して開示したが、このような特徴は、あらゆる所与のまたは特定の用途に望まれるようにまたは有利であるように、他の実施態様の1つ以上の他の特徴と組み合わせることもできる。更に、「含む」(includes)、「有する」(having, has)、「と」(with)という用語またはこれらの変形が詳細な説明または特許請求の範囲において使用される限りにおいて、このような用語は、「備える」(comprising)と同様に、包含的であることを意図している。