本明細書は概して、クライアントデバイス上での冗長デジタルコンポーネントの提供および表示を、そのようなデジタルコンポーネントおよび/またはそれらに関連した任意の追加コンテンツとの事前のユーザ対話および/またはユーザアクションに少なくとも基づいて制限することに関する。
インターネットに接続されたクライアントデバイス(たとえば、スマートフォン、タブレット、およびパーソナルコンピュータ)には、様々なデジタルコンポーネントを含むデジタルコンテンツが提供される場合がある。本文書全体を通して使われる限り、「デジタルコンポーネント」というフレーズは、デジタルコンテンツまたはデジタル情報の不連続単位(たとえば、ビデオクリップ、オーディオクリップ、マルチメディアクリップ、画像、テキスト、または別のコンテンツ単位)を指す。
デジタルコンポーネントとのユーザ対話および/またはユーザアクションは最終的に、積極的ユーザアクションを生じることができ、これは、デジタルコンポーネントの提示および/またはそれとの対話の後の、特定のターゲットイベント/アクションの実施を表す。たとえば、絶滅危惧種についてのデジタルコンポーネントに触れるユーザは、そのコンポーネントと(たとえば、そのコンポーネントを選択またはクリックすることによって)対話し、特定の絶滅危惧種についてのウェブページに誘導されてよく、そこでユーザは、その絶滅危惧種を救うのを助けることを目的としたニュースレターに申し込むことができる。この例では、ニュースレターに申し込むことが、特定のターゲットアクションと見なされ得る。ターゲットアクションの例は、ウェブサイト/サービスに登録すること、オンラインカートに品目を追加すること、ホワイトペーパーをダウンロードすること、製品を入手すること、ウェブサイトの少なくとも所与の深さまでナビゲートすること、少なくともある特定の数のウェブページを閲覧すること、ウェブサイトまたはウェブページに少なくとも所定の時間量を費やすこと、ウェブサイト登録プロセスを完了すること、およびデジタルサービスに加入することも含み得るが、それらに限定されない。言い換えると、特定のターゲットアクションが、デジタルコンポーネントとのユーザの対話に続いてユーザに提供されるコンテンツとの、ユーザによる対話であり得る。ユーザは、デジタルコンポーネントの第1のコンテンツとの第1の対話を実施し、その第1の対話に続いて、次いで、第1の対話によりユーザに提供される第2のコンテンツとの第2の対話を実施し得る。第1および第2の対話は、ユーザからの1つまたは複数の入力による信号の生成であり得る。ユーザからの入力は、タッチスクリーン、キーパッド、マイクロフォン、ビデオ、またはクライアントデバイスと対話するどの他の手段を介してもよい。
クライアントデバイスが、クライアントデバイス上で実行しているアプリケーション内の同じか、または異なるコンテンツプラットフォームを再訪すると、クライアントデバイスにあらかじめ提供されているデジタルコンポーネントと同じかまたは同様のデジタルコンポーネントが、クライアントデバイスに再度提供される場合がある。同じ/同様のデジタルコンポーネントのそのような冗長提供は、クライアントデバイスが、そのようなデジタルコンポーネントとの積極的ユーザアクションをあらかじめ受けていた場合であっても起こり得る。そのデジタルコンポーネントとのユーザ対話に続く特定のターゲットアクションの実施によって、積極的ユーザアクションが示される。その上、いくつかのシステムでは、クライアントデバイスのユーザが特定のデジタルコンポーネントとの積極的ユーザアクションを行ったと、あるコンテンツソース/プラットフォームが判断した場合であっても、積極的ユーザアクションのその判断は、クライアントデバイスが続いてアクセスし得る別のコンテンツソース/プラットフォームには知られない可能性がある。その結果、別のコンテンツソース/プラットフォームは、積極的ユーザアクションがすでに行われている同じまたは同様のタイプのデジタルコンポーネントを提供する場合がある。たとえば、特定のデジタルコンポーネントが、データを共有しない2つの異種のコンテンツ配信システムに提出されていると仮定する。この状況において、特定のユーザが、特定のデジタルコンポーネントと対話した後にターゲットアクションを完了したことに、コンテンツ配信システムのうちの1つが気づいたとしても、他方の異種のコンテンツ配信システムは、ターゲットアクションの実施にまったく気づくことはなく、特定のデジタルコンポーネントは、特定のユーザに対して提示され続ける場合がある。
対照的に、本文書に記載する技法は、全体が(または、かなりの部分が)クライアントデバイス上で実装され得る(すなわち、特定のコンテンツソース/プラットフォームに依存しない)。本明細書においてさらに記載するように、クライアントデバイスは、クライアントデバイス上での過去のユーザアクティビティ、デジタルコンポーネントのコンテンツソース/プラットフォームにかかわらない、クライアントデバイス上でのデジタルコンポーネントとのユーザ対話、デジタルコンポーネントが提供されたコンテンツプラットフォーム、またはデジタルコンポーネントが取得されたアプリケーションに基づいて、複数の信号を使って、デジタルコンポーネントとの積極的ユーザアクションを判断することができる。いくつかの実装形態では、複数の信号は、機械学習モデル(あるいはヒューリスティックベースの手法、または別の適切なモデルベースもしくは規則ベースの技法)を使って分析される/によって処理され、これは、クライアントデバイスがデジタルコンポーネントとの積極的ユーザアクションを受けたかどうかを判断する。
クライアントデバイスが特定のデジタルコンポーネントとの積極的ユーザアクションを受けたかどうかに基づいて、本明細書に記載する技法は、デジタルコンポーネントの記憶されたリスト(すなわち、クライアントデバイス上に記憶された)(たとえば、クッキーリスト)を修正してよく、このリストは、クライアントデバイス上で実行しているアプリケーションへの提供に対応できるデジタルコンポーネントのセットを指定する。たとえば、レンタカー会社用のデジタルコンポーネントとのユーザの対話(たとえば、選択した、クリックした、閲覧した)に応答して、デジタルコンポーネントのリストは、デジタルコンポーネントの指示(たとえば、デジタルコンポーネントの名称、デジタルコンポーネントのカテゴリ/タイプ、デジタルコンポーネントと対話している間にユーザによって実施されるアクティビティ)を与える特定のエントリを含むように更新されてよい。ただし、機械学習モデル(または別の適切な手法/モデル)が、クライアントデバイスがデジタルコンポーネントとの積極的ユーザアクションを受けたと判断した場合、機械学習モデル(または他の適切な手法/モデル)は、たとえば、特定のデジタルコンポーネントをリストから削除すること、もしくは(リストにすでにある場合は)リスト上でのそのランクを下げることのいずれかによって、または特定のデジタルコンポーネントを(まだリストにない場合は)リストに追加しないことによって、デジタルコンポーネントのリストを更新してよい。
続いて、クライアントデバイスが、同じか、または異なるコンテンツプラットフォームにアクセスするのにアプリケーションを使うと、本明細書に記載する技法は、デジタルコンポーネントの修正されたリストの部分(たとえば、リスト全体またはリストに含まれる上位N個のランク付きコンポーネントなど、リストのサブセット)を、コンテンツプラットフォーム(および/またはコンテンツプラットフォームにコンテンツを提供するコンテンツソース)へ送ってよい。コンテンツプラットフォームおよび/またはコンテンツソースは、デジタルコンポーネントのこの修正されたリストを、クライアントデバイス上で実行しているアプリケーション内での表示用にコンテンツを提供する際に使えばよい。たとえば、コンテンツソースおよび/またはコンテンツプラットフォームは、デジタルコンポーネントのリストの受信された部分において含まれる1つまたは複数のデジタルコンポーネントを提供するだけでよい。そのようなケースでは、クライアントデバイス上で実行しているアプリケーションは、コンテンツソース/プラットフォームによって提供されるデジタルコンポーネントをレンダリングする。別の例として、コンテンツソースおよび/またはコンテンツプラットフォームは、リスト上にあるかどうかにかかわらず、どの1つまたは複数のデジタルコンポーネントも提供することができる。そのようなケースでは、クライアントデバイスは、提供されるデジタルコンポーネントが、デジタルコンポーネントの修正されたリスト上にあるかどうか(たとえば、提供されたデジタルコンポーネントが、デジタルコンポーネントのリスト上の上位N個のデジタルコンポーネントのうちの1つであるかどうか)を判断することができる。そうである場合、クライアントデバイス上で実行しているアプリケーションは、提供されたデジタルコンポーネントをレンダリング/表示し得る。そうでない場合、アプリケーションは、そのようなコンテンツを抑制し、代わりに、抑制/削除されたデジタルコンポーネントが表示されるべきロケーションが、他のコンテンツ(たとえば、調節する、たとえば、再編成/移動/サイズ変更することが可能な、ページ上にすでに含まれているコンテンツ、またはコンテンツソース/プラットフォームから取得され得る他のコンテンツ)で置き換えられるようにインターフェースを修正すればよい。
これらの特徴および追加特徴について、図1~図4を参照して以下でさらに説明する。
本明細書全体にわたる記述に加え、ユーザは、本明細書に記載するシステム、プログラムまたは特徴が、ユーザ情報(たとえば、ユーザのソーシャルネットワーク、社会的行為もしくは活動、職業、ユーザの嗜好、またはユーザの現在の居場所についての情報)の収集を可能にし得るかどうか、およびいつ可能にし得るかと、ユーザがサーバからコンテンツまたは通信を送られるかどうかの両方について選定をユーザが行えるようにする制御を与えられ得る。さらに、特定のデータが、記憶され、または使われる前に、個人を識別できる情報が削除されるように1つまたは複数のやり方で扱われ得る。たとえば、ユーザについて個人を識別できる情報を判断することができないようにユーザのアイデンティティが扱われてよく、またはユーザの地理的ロケーションが、ユーザの具体的なロケーションを判断することができないようにロケーション情報が取得されるように(たとえば、市、郵便番号、または州レベルに)一般化されてよい。したがって、ユーザは、ユーザについてどのような情報が収集されるか、その情報がどのように使われるか、およびどのような情報がユーザに提供されるかに対する制御を有し得る。
図1は、コンテンツが、クライアントデバイスに配信され、提示される例示的環境100のブロック図である。例示的環境100は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはそれらの組合せなどのネットワーク104を含む。ネットワーク104は、クライアントデバイス102、コンテンツプラットフォーム106、およびコンテンツソース110を接続する。例示的環境100は、多くの異なるコンテンツソース110、コンテンツプラットフォーム106、およびクライアントデバイス102を含み得る。
コンテンツプラットフォーム106は、コンテンツの配信を可能にするコンピューティングプラットフォームである。例示的コンテンツプラットフォーム106は、検索エンジン、ソーシャルメディアプラットフォーム、ニュースプラットフォーム、データアグリゲータプラットフォーム、または他のコンテンツ共有プラットフォームを含む。各コンテンツプラットフォーム106は、コンテンツプラットフォームサービスプロバイダによって運営され得る。
コンテンツプラットフォーム106は、それ自体のコンテンツをプラットフォーム上で公開し、利用可能にし得る。たとえば、コンテンツプラットフォーム106は、独自のニュース記事を公開するニュースプラットフォームであってよい。コンテンツプラットフォーム106はまた、1つまたは複数のコンテンツソース110によって提供されるコンテンツを提示し得る。上記の例では、ニュースプラットフォームはまた、異なる作者によって作成されるとともに1つまたは複数のコンテンツソース110によって提供されるコンテンツを提示し得る。別の例として、コンテンツプラットフォーム106は、独自のコンテンツは何も公開しないが、異なるニュースウェブサイト(すなわち、コンテンツソース110)によって提供されたニュース記事を集約し、提示するデータアグリゲータプラットフォームであってよい。
クライアントデバイス102は、ネットワーク104を介してコンテンツを要求し、受信することが可能な電子デバイスである。例示的クライアントデバイス102は、パーソナルコンピュータ、モバイル通信デバイス、デジタルアシスタントデバイス、およびネットワーク104を介してデータを送り、受信することができる他のデバイスを含む。
クライアントデバイス102は通常、アプリケーションなどのデバイスハードウェアおよびソフトウェアリソースの管理を主に担当するオペレーティングシステム112を備える。クライアントデバイス102は、特定の実装形態、アプリケーション、および使用ケースに基づいて、データを一時的または永続的に記憶するためのデバイスストレージ120も備える。クライアントデバイス102は通常、ネットワーク104を介したデータの送付および受信を容易にするための、ウェブブラウザなどのユーザアプリケーション116および117を含むが、クライアントデバイス102によって実行されるネイティブアプリケーションも、ネットワーク104を介したコンテンツの送付および受信を容易にすることができる。クライアントデバイス102において提示されるコンテンツの例は、ウェブページ、ワード処理ドキュメント、ポータブルドキュメントフォーマット(PDF)ドキュメント、画像、ビデオ、ならびに検索結果ページおよびデジタル広告を含む。
概して、クライアントデバイス102は、検索結果、ウェブページ、ニュース記事、およびソーシャルメディア投稿などのデジタルコンテンツにアクセスするために、クライアントデバイス102上で実行しているアプリケーションと対話する。デジタルコンテンツにアクセスしている間、クライアントデバイスは、1つまたは複数のコンテンツプロバイダからデジタルコンポーネントも受信し得る。
たとえば、ユーザが、「レンタカー」についてのインターネット検索を実施するためのウェブブラウザであるアプリケーションA116を使い、「レンタカー」という検索クエリの提出に応答して返された検索結果を検討すると仮定する。そのようなシナリオでは、サードパーティ(すなわち、コンテンツプラットフォームまたはコンテンツソースなど、クライアントデバイス以外のエンティティ)が、検索クエリに関連し得るとともにユーザが(たとえば、デジタルコンポーネントを選択もしくはクリックし、またはデジタルコンポーネントにおいて一定の期間提示されるコンテンツを閲覧することによって)対話することができるデジタルコンポーネント(たとえば、ビデオ、テキスト)を、アプリケーションに提供し得る。
これらのデジタルコンポーネントとのそのような対話の結果、アプリケーションが、選択されたデジタルコンポーネントの主題に関連する可能性がある追加コンテンツ/デジタルコンポーネントをもつ別のコンテンツページを開く(またはそのページにリダイレクトする)ことができる。たとえば、「レンタカー」という検索クエリの提出に応答して返された検索結果を検討する間、ユーザは、リンクを選択することまたはクリックすることのいずれかによって、デジタルコンポーネントと対話すると仮定する。この例では、クライアントデバイス102は、クライアントデバイス102上にインストールされたアプリケーション(たとえば、ネイティブアプリケーション)であるとともに特定のレンタカー会社によって提供されるアプリケーションB117を開けることができる。別の例では、リンクを選択またはクリックすることによって、ユーザを、アプリケーションA116内で、異なる車レンタルサービスのレビューまたは車レンタルサービスのウェブページなど、「レンタカー」という検索クエリに関連したデジタルコンテンツを含む別のウェブサイトへリダイレクトすることができる。
クライアントデバイス102は、コンテンツ評価装置114(本明細書に記載するように、データ処理装置であってよい)をさらに備える。いくつかの実装形態では、コンテンツ評価装置114は、複数のトレーニング可能パラメータを含む機械学習モデルとして実装され、信号のセットを分析することによって、クライアントデバイス102上に提示されるデジタルコンポーネントとのユーザの積極的ユーザアクションを判断するようにトレーニングされる(以下でさらに説明するように)。機械学習モデルは、決定木、人工ニューラルネットワーク、遺伝的プログラミング、論理プログラミング、サポートベクターマシン、クラスタリング、強化学習、ベイズ推定などのような、特定の実装形態に適していると思われるどのモデルであってもよい。機械学習モデルは、テキストデータを含む信号を分析するための自然言語処理のための方法、アルゴリズムおよび技法も含み得る。
いくつかの実装形態では、コンテンツ評価装置114内で実装される機械学習モデルは、複数のトレーニング用デジタルコンポーネント向けのトレーニングデータを使ってトレーニングされる。トレーニングデータ中の各トレーニング用デジタルコンポーネントは、トレーニング用デジタルコンポーネント向けの信号の対応するセット、およびユーザがトレーニング用デジタルコンポーネントとの積極的ユーザアクションを行ったかどうかを示すラベルに関連付けられる。たとえば、トレーニング用デジタルコンポーネントは、特定のデジタルコンポーネントとのユーザ対話(および/またはクライアントデバイス102上の他のコンテンツ/アプリケーション/デジタルコンポーネントとのアクション/対話)によって生成された信号のセットと、特定のデジタルコンポーネントとのユーザアクションが積極的であるかどうかを述べるラベルとを含む。
いくつかの実装形態では、機械学習モデルをトレーニングすることは、コンテンツプロバイダによって提供されるデジタルコンポーネントとのユーザアクションが積極的であるかどうかを予測するために、デジタルコンポーネントとのユーザアクティビティおよびユーザ対話によって生成された複数の信号を機械学習モデルが分析することができるように、機械学習モデルのトレーニング可能パラメータを調節することを伴う。特定の実装形態に依存して、機械学習モデルのトレーニングプロセスは、教師あり、教師なし、または半教師ありであってよい。
いくつかの実装形態では、特定のデジタルコンポーネントとのユーザ対話および/またはユーザアクションに加え、機械学習モデルは、クライアントデバイス上でのユーザアクティビティから生成された複数の追加信号を処理することができる。これらの信号は、デジタルコンポーネント中で提供される、異なるリンクのクリック、インターネット検索キーワード、および異なるデジタルコンポーネントを閲覧するのに費やされる時間を含むが、それらに限定されない。たとえば、クライアントデバイスが、アプリケーションの実行中に、特定の製品(またはサービスもしくは他のコンテンツ)に関するウェブサイトへのリンクをもつデジタルコンポーネントを提供される場合、ユーザは、リンクをクリックし、リンクされたウェブサイトを訪問する可能性がある。この場合、OSは、ユーザ対話(クリックまたは選択)を検出し、コンテンツ評価装置に提供される信号を生成する。別の例では、クライアントデバイスが、ビデオを含むデジタルコンポーネントを提供されると、OSは、ユーザが(たとえば、デジタルコンポーネントを飛ばしてスクロールすることによって)ビデオをスキップしたか、または(たとえば、一定の閾時間量だけ、ページをスクロールしないことによって)ビデオを見るのにある程度の時間を費やし得ることを検出し得る。OSはしたがって、ビデオデジタルコンポーネントに対して費やされる時間の量を示す信号を生成し、この信号を、機械学習モデルによるさらなる処理に与える。
いくつかの実装形態では、コンテンツ評価装置114内で実装される機械学習モデルは、上述したユーザ対話信号に加え、クライアントデバイス102上で提示されるデジタルコンポーネントへのユーザ露出によって生成される信号に基づいて、デジタルコンポーネントとのユーザの積極的ユーザアクションを予測することができる。そのような実装形態は、光学式文字認識(OCR)など、デジタル画像処理および自然言語処理の、当該分野においてよく知られている技法を使い得る。たとえば、クライアントデバイスが、レンタカーを予約するための、車レンタル会社によって提供されるアプリケーションなどのサードパーティアプリケーションと対話していると仮定すると、レンダリングされたユーザインターフェースの画像は、デジタルコンポーネントとのユーザの積極的ユーザアクションを識別するのに使われてよい。別の例では、ユーザが、レンタカーの予約確認に関して、クライアントデバイス102上で実行しているブラウザアプリケーションにおいてウェブプッシュ通知を受け取ると仮定する。実装のタイプに基づいて、OSはクライアントデバイス102上で、ユーザに対してウェブプッシュ通知を提示するユーザインターフェースの画像、またはウェブプッシュ通知のテキストなど、ウェブプッシュ通知から複数の信号を生成することができる。これらの信号は、デジタルコンポーネントとのユーザの積極的ユーザアクションを判断するために、機械学習モデルによって分析され得る。
いくつかの実装形態では、コンテンツ評価装置114内で実装される機械学習モデルは、上述したように、デジタルコンポーネントとのユーザ対話およびクライアントデバイス上での他のアクション(たとえば、デジタルコンポーネントとの第1のユーザ対話ならびに第1のユーザ対話に応答して提供されるコンテンツとの1つまたは複数の追加ユーザ対話および/またはユーザアクション)によって生成された信号のセットを処理して、積極的ユーザアクションが実施されたかどうかを判断する。いくつかの実装形態では、機械学習モデルは、信号の入力セットに基づいて、積極的ユーザアクションのスコアまたは見込みを生成し得る。たとえば、積極的ユーザアクションの見込みまたはスコアは、0~10のスケールの数であってよく、0により近い数が、積極的ユーザアクションのより低い見込みまたはスコアを示し、10により近い数が、積極的ユーザアクションのより高い見込み/スコアを示す。そのような実装形態では、積極的ユーザアクションの見込みがあらかじめ設定された閾を上回る場合に積極的ユーザアクションを示唆するであろう、あらかじめ設定された閾があってもよい。たとえば、見込みのあらかじめ設定された閾が5に設定されると仮定する。機械学習モデルが、デジタルコンポーネントとのユーザアクションの見込みを、5を上回る値となるように生成した場合、アクションは積極的であると判断される。それ以外の場合、対話は積極的でないと判断される。
いくつかの実装形態では、コンテンツ評価装置114は、デジタルコンポーネントとの積極的ユーザアクションを判断するための(機械学習モデルではなく)ヒューリスティックベースの手法を実装する。そのような実装形態では、コンテンツ評価装置114は、コンテンツソース/プラットフォームによってクライアントデバイス102に提供されるデジタルコンポーネントとのユーザ対話によって生成された(上述したような)信号の同じセットを分析する。
いくつかの実装形態では、コンテンツ評価装置114は、特定のアプリケーション用にアプリケーションレベルで動作するのとは反対に、クライアントデバイス102上ではオペレーティングシステム(OS)レベルで動作する。本説明において使われる限り、OSレベルでの動作とは、アプリケーションレベルでの動作よりも高い特権へのアクセスを有する動作、および/またはオペレーティングシステムによって実施される動作のいずれかである。
さらなる例として、OSレベル動作が、複数の異なるアプリケーションによって処理されるデータにアクセスし、このデータを、積極的ユーザアクションが実施されたかどうかを判断することができるように、機械学習モデル(または別の適切なモデルもしくはヒューリスティックベースの手法)に提供してよい。したがって、OSレベルで動作することによって、機械学習モデルは、アプリケーションに関して依存せず、クライアントデバイス102によってアクセスされるデータを分析することによって、積極的ユーザアクションを判断することが可能である。
図1には示さないが、いくつかの実装形態では、コンテンツ評価装置114は、(OSレベルで実装されるのではなく)アプリケーションレベルで実装されてよい。そのような実装形態では、コンテンツ評価装置114を実装するアプリケーションは、オペレーティングシステム112のアプリケーションレベルで実行している他のアプリケーションよりも高い特権を与えられ得る。そのような実装形態では、コンテンツ評価装置114を実装するアプリケーションは、別のアプリケーションのコンテンツにアクセスする特権を有し得る。コンテンツ評価装置114を実装するアプリケーションによってコンテンツにアクセスすると、機械学習モデル(または別の適切なモデルもしくはヒューリスティックベースの手法)は、積極的ユーザアクションが起きたかどうかを判断する。
いくつかの実装形態では、クライアントデバイス102は、デジタルコンポーネントのリスト130をデバイスストレージ120に記憶する。デジタルコンポーネントのリスト130(たとえば、クッキーリスト)は、クライアントデバイス102上で実行しているアプリケーションへの提供に対応できるデジタルコンポーネントのリストを含む。デジタルコンポーネントのリスト130については、図2に関してさらに説明する。
図3を参照してさらに記載するように、デジタルコンポーネントのこのリストは、特定のデジタルコンポーネントとの積極的ユーザアクションをクライアントデバイスが受けたかどうかに関しての判断に基づいて修正される。図3を参照してさらに記載するように、デジタルコンポーネントのこの修正されたリストは続いて、コンテンツプラットフォームおよび/またはコンテンツソースによって、デジタルコンポーネントをアプリケーション内での表示用に提供する際に使われるが、提供されたデジタルコンポーネントは、クライアントデバイスが積極的ユーザアクションをすでに受けているデジタルコンポーネント(またはデジタルコンポーネントのタイプ)とは異なるようになる。
図2は、クライアントデバイス102上に記憶されたデジタルコンポーネントの例示的リスト130を示すテーブルである。
いくつかの実装形態では、デジタルコンポーネントのリスト130中の各エントリは、クライアントデバイスに対して提示され得る特定のデジタルコンポーネントを含む。デジタルコンポーネントは、このリスト上で、そのようなデジタルコンポーネントとの事前のユーザ対話および/またはユーザアクションに基づいて識別される。デジタルコンポーネントのリスト130中の各エントリは、デジタルコンポーネントおよびユーザアクティビティのタイプに基づく複数の特徴をさらに含み得る。たとえば、製品202、カテゴリ204、ユーザアクション206およびランク208という列は、デジタルコンポーネントとのユーザアクティビティまたはユーザ対話の異なる特徴または特性を表す。
いくつかの実装形態では、特徴または特性は、デジタルコンポーネントとのユーザアクティビティまたはユーザ対話に直接関連付けられるか、またはそこから推論される。たとえば、ユーザが、「レンタカー」を検索し、「レンタカー」という検索クエリの提出に応答して返された検索結果を含むコンテンツページならびに特定のレンタカーサービスを示すデジタルコンポーネントを取得すると仮定する。この例では、ユーザが最初に対話した特定のデジタルコンポーネントの主題を表すエントリが、クライアントデバイス上のデジタルコンポーネントのリスト130中に作成される。たとえば、テーブル中のエントリ5は、レンタカーについてのインターネット検索を実施するユーザアクションを示す。さらにこの例では、ユーザは、これらのデジタルコンポーネントのうちの1つと(たとえば、選択またはクリックすることによって)対話することができ、そのデジタルコンポーネントは、ユーザを特定のサードパーティレンタカーウェブサイトへリダイレクトし得る。この例では、ユーザが特定の車レンタルサービスのデジタルコンポーネント(ウェブページ)と対話したことを表すエントリが、クライアントデバイス102上のデジタルコンポーネントのリスト130中に作成される。たとえば、テーブル中のエントリ6は、レンタカー会社Qのウェブページを訪問するというユーザの対話を示し、テーブル中のエントリ7は、レンタカー会社Rのウェブページを訪問するというユーザの対話を示す。
いくつかの実装形態では、デジタルコンポーネントのリスト130の部分が、コンテンツプラットフォームまたはコンテンツソースなどのサードパーティによって(たとえば、クライアントデバイス上のブラインドピクセルが発火(fire)したときにこのリストを提供されたことに応答して、またはこのリストについての要求に応答して)アクセスされる。デジタルコンポーネントのリスト中の特定のエントリに基づいて、サードパーティは、ユーザにデジタルコンポーネントを提供する。たとえば、ユーザは、クライアントデバイス102上にインストールされたブラウザアプリケーション117を使って、コンテンツプロバイダによって提供されたデジタルコンテンツにアクセスしていると仮定する。コンテンツソース/プラットフォームは、デジタルコンポーネントのリストについての要求をクライアントデバイス102へ送り得る。デジタルコンポーネントのリストについての要求に応答して、クライアントデバイス102は、デジタルコンポーネントのリストの部分をコンテンツソースへ送信し得る。デジタルコンポーネントのリストの部分を受信すると、コンテンツソースは、コンテンツソース/プラットフォームによって受信されたデジタルコンポーネントのリストの部分に列挙されたエントリに基づいて、デジタルコンポーネントを、ユーザに対する表示のためにクライアントデバイス102に提供することができる。
いくつかの実装形態では、デジタルコンポーネントのリスト130中の各エントリは、ユーザが特定のデジタルコンポーネントと対話し得る確率に基づいてランク付けされる。たとえば、列208は、デジタルコンポーネントのリストを表すテーブル130の各エントリのランクを含む。いくつかの実装形態では、デジタルコンポーネント中の各エントリのランクは、以下の例において記載するように、ならびに図1および図3を参照してさらに記載するように修正されてよい。たとえば、コンテンツ評価装置114内で実装される機械学習モデルが、ブラウザアプリケーションによってアクセスされる他のデジタルコンテンツを分析することによって、ユーザがレンタカーを予約していると判断した場合、デジタルコンポーネントのリスト130中の特定のエントリのランクは下げられてよい。広告主または公開元などのサードパーティは、デジタルコンポーネントの修正されたリスト130をクライアントデバイス102から受信すると、デジタルコンポーネントの更新されたランク付けに基づいてデジタルコンポーネントを提供し、そうすることによって、より高いランク付けを有する(または、上位N個のランク付きデジタルコンポーネントにある)デジタルコンポーネントをユーザに提供する。
いくつかの実装形態では、複数のコンテンツソース/プラットフォームが、クライアントデバイス102上でユーザにデジタルコンテンツを提供し得る。そのような実装形態では、クライアントデバイス102は、第1のコンテンツソース/プラットフォームによってサービスされるデジタルコンポーネントとのユーザ対話によって生成された信号を使って識別された積極的ユーザアクションに基づいて修正され得るデジタルコンポーネントのリスト130を記憶することができる。続いて、第2のコンテンツソース/プラットフォームは、クライアントデバイス102上に記憶されたデジタルコンポーネントのリスト130の部分にアクセスし、デジタルコンポーネントの修正されたリスト130に基づいて、デジタルコンポーネントにサービスし得る。
たとえば、クライアントデバイス102上で実行しているブラウザアプリケーションA116を使って、「カメラ」についてのインターネット検索が実施されると仮定すると、その結果、アプリケーションA116内で検索結果ページが提供され、第1のコンテンツソースによってデジタルコンポーネントが提供される。クライアントデバイス102が、そのデジタルコンポーネントとの対話を検出した場合、クライアントデバイス102は、そのデジタルコンポーネント用のエントリを、デジタルコンポーネントのリスト130に追加する。後になって、別のオンラインセッション中に、第2のコンテンツソース/プラットフォームは、クライアントデバイス102からのデジタルコンポーネントのリスト130の部分にアクセスし、エントリに基づいて、「カメラ」に関連したデジタルコンポーネントを提供し得る。ユーザが、デジタルコンポーネント(およびその対話に応答して提供される追加コンテンツであって、クライアントデバイスによって追加対話/アクションが検出される追加コンテンツ)との対話に応答して、ターゲットアクションを実施する(たとえば、デジタルコンポーネントによってリンクされたウェブサイト上で、特定のカメラについてのレビューを読む)場合、クライアントデバイス102上で実装されるコンテンツ評価装置114は、そのような対話/アクションに基づいて、OSによって検出された対応する信号を分析し、クライアントデバイス上のデジタルコンポーネントのリスト130を、たとえば、エントリ212を削除すること、または特定のエントリ212のランクを下げることのいずれかによって修正すればよい。そのようなシナリオでは、第1のコンテンツソース/プラットフォームは、デジタルコンテンツのリストにアクセスすればよく、「カメラ」に関連した広告を提供しなくてよい。
図3は、クライアントデバイスのユーザアクションおよび/または動作に基づいて、クライアントデバイスに1つまたは複数のデジタルコンポーネントを提供するための例示的プロセス300の流れ図である。プロセス300の動作は、図1および図2において記載し、示したシステムの構成要素によって実施されるものとして、以下で説明される。プロセス300の動作が、以下において、例示目的のためにのみ説明される。プロセス300の動作は、どの適切なデバイスまたはシステム、たとえば、どの適切なデータ処理装置によって実施されてもよい。プロセス300の動作は、非一時的コンピュータ可読媒体上に記憶された命令として実装されてもよい。命令の実行により、1つまたは複数のデータ処理装置が、プロセス300の動作を実施する。
デジタルコンポーネントのリスト130が、クライアントデバイス上で記憶され、クライアントデバイス上で実行しているアプリケーションへの提供に対応できるデジタルコンポーネントのセットを指定する(310)。いくつかの実装形態では、および図2を参照して上述したように、デジタルコンポーネントのリスト130中の各エントリは、クライアントデバイス上で実行しているアプリケーションへの提供に対応できるデジタルコンポーネントを記述する/表す。デジタルコンポーネントのリスト130中のエントリは、コンテンツソース/プラットフォームによってクライアントデバイス102に提供されるデジタルコンポーネントとのユーザ対話および/またはユーザアクションに少なくとも基づいて作成される。たとえば、図2のテーブルを使って表されるデジタルコンポーネントのリスト130は、クライアントデバイス102のデバイスストレージ120に記憶される。いくつかの実装形態では、デジタルコンポーネントのリスト130中のエントリは、ユーザにとっての相対重要度に従ってランク付けされる。たとえば、列208は、リスト中の各エントリのランクを示す。いくつかの実装形態では、デジタルコンポーネントのリスト中のエントリは、タイプ/カテゴリに関してランク付けされ得る。
第1のデジタルコンポーネントが、第1のコンテンツソースによって、クライアントデバイス上で実行しているアプリケーションに提供される(320)。いくつかの実装形態では、第1のコンテンツソースが、第1のデジタルコンポーネントを、クライアントデバイス102上で実行しているアプリケーション内での表示用に提供し得る。たとえば、クライアントデバイス102上で実行しているブラウザベースのアプリケーションA116が、「レンタカー」についてのインターネット検索を実施するのに使われ得る。検索クエリに応答して、コンテンツソース/プラットフォームは、レンタカーに関連した検索結果をクライアントデバイス102に与える。
クライアントデバイスによって信号のセットが検出され、ここで信号のセットは、第1のデジタルコンポーネントとの第1のユーザ対話および第1のユーザ対話に応答して提供されるコンテンツとの第2のユーザ対話を指定する(330)。いくつかの実装形態では、クライアントデバイス102のOSが、第1のデジタルコンポーネントとの第1のユーザ対話を検出する。そのような第1のユーザ対話および/またはユーザアクションの例は、ユーザが、第1のデジタルコンポーネントを選択すること、第1のデジタルコンポーネントをクリックすること、および第1のデジタルコンポーネントを(たとえば、一定の時間期間だけ)閲覧することを含む。OSは、そのようなユーザ対話および/またはユーザアクションを、異なるデバイスイベント(たとえば、特定のアプリケーションにおいて経過した時間、クライアントデバイス上のコンテンツのスクロールについての情報、デジタルコンポーネントの選択/クリック、デジタルコンポーネントの選択またはクリックに応答して提示されるコンテンツ/開かれるアプリケーションまたはページ)をキャプチャする規則のセットを使うことによって検出することができ、これらのうちの1つまたは複数を組み合わせて、第1の対話が実施されたかどうかを判断する。代替として、規則のセットではなく、キャプチャされたデバイスイベントが、デバイスアクションのセットに基づいて、第1の対話が実施されたかどうかを予測するようにトレーニングされるモデル(たとえば、機械学習モデルまたは別の適切な統計モデル)にフィードされてよい。そのようなモデルは、たとえば、実際に検出された第1の対話と、デバイスイベントのそれぞれの対応するセットとを使ってトレーニングされ得る。
第1のユーザ対話に応答して、クライアントデバイス102上で実行しているアプリケーション内で、第1のコンテンツソースによって(または別のコンテンツソースによって)追加コンテンツが提供されてよい。そのような追加コンテンツの例は、検索クエリへの提出に応答してコンテンツプロバイダによって提供された検索結果中のリンクを選択した後で、ユーザがリダイレクトされるコンテンツページを含む。OSは、この追加コンテンツとの第2のユーザ対話(たとえば、製品/サービスを購入すること、レビューを残すことまたはコンテンツ配信サービスに申し込むことを含み得る)を、クリックの回数またはウェブページに費やされる時間などの信号を使って検出することができる。やはり、OSは、そのようなユーザ対話および/またはユーザアクションを、表示されるコンテンツ(第1のユーザ対話が実施された後で取得された)の異なるデバイスイベントおよび/または解析/分析をキャプチャする規則のセットを使う(たとえば、OCR、画像処理などを使う)ことによって検出することができ、これらのうちの1つまたは複数を組み合わせて、第2の対話が実施されたかどうかを判断する。代替として、規則のセットではなく、キャプチャされたデバイスイベントおよび/または解析/分析された画像コンテンツが、デバイスアクションのセットに基づいて、第2の対話が実施されたかどうかを予測するようにトレーニングされるモデル(たとえば、機械学習モデルまたは別の適切な統計モデル)にフィードされてよい。そのようなモデルは、たとえば、実際に検出された第2のユーザ対話および/またはユーザアクションと、デバイスイベントのそれぞれの対応するセットとを使ってトレーニングされ得る。
上記対話に加え、OSは、他のデバイスアクションに関する追加信号および/またはデバイス上の他のアプリケーション/サービスからのデータを検出することもできる(図1を参照して上述したように)。たとえば、ユーザが、選択の後で、レンタカー予約の確認を示す、クライアントデバイス102上で実行しているブラウザアプリケーション上のウェブページを開くクリック可能URLをeメールまたはSMSテキスト中で受信した場合、OSは、ウェブページからテキストなどの信号を検出し、信号のセットをコンテンツ評価装置114に与える。
信号のセットは、第1のデジタルコンポーネントに関して、ユーザによって積極的ユーザアクションが実施されたかどうかを判断するのに使われる(340)。いくつかの実装形態では、コンテンツ評価装置114は、(動作330において上で検出された)信号のセットを分析する機械学習モデルまたはヒューリスティックベースの手法のいずれかを、クライアントデバイス102上で実装して、積極的ユーザアクションが起きたかどうかを判断する(図1を参照してさらに記載したように)。たとえば、デジタルコンポーネントが、表示用に提供され、特定の製品に関するウェブサイトへのリンクを含む場合、ユーザは、リンクをクリックし、リンクされたウェブサイトを訪問するかもしれない。この場合、ユーザアクティビティは、クリックの回数およびウェブページ中で提示されるコンテンツのコンテキストなど、複数の信号を生成する。コンテンツ評価装置114は、信号を分析して、コンテンツソース/プラットフォームによってクライアントデバイス102に提供されるデジタルコンポーネントとの、ユーザの積極的ユーザアクションを判断する。
いくつかの実装形態では、および図1を参照して記載したように、コンテンツ評価装置114内で実装される機械学習モデルは、デジタルコンポーネントとのユーザ対話(およびクライアントデバイス上での他のアクション)によって生成された信号のセットを処理し、デジタルコンポーネントとのユーザ対話(たとえば、デジタルコンポーネントとの第1のユーザ対話ならびに第1のユーザ対話に応答して提供されるコンテンツとの1つまたは複数の追加ユーザ対話および/またはユーザアクション)に関連付けられた信号のセットに基づいて、積極的ユーザアクションが生じたかどうかの分類を実施する。いくつかの実装形態では、機械学習モデルは、信号の入力セットに基づいて、積極的ユーザアクションのスコアまたは見込みを生成し得る(図1を参照して記載したように)。
デジタルコンポーネントのリスト130は修正され、修正されたリストはクライアントデバイス102上で記憶される(350)。クライアントデバイス102上で実装されるコンテンツ評価装置114は、特定のデジタルコンポーネントに関して積極的ユーザアクションを識別した場合、クライアントデバイス102上に記憶されたデジタルコンポーネントのリスト130を修正する。いくつかの実装形態では、コンテンツ評価装置が、第1のデジタルコンポーネントが積極的ユーザアクションを受けたと判断した場合、コンテンツ評価装置114は、デジタルコンポーネントのリスト中の第1のデジタルコンポーネントに対応する特定のエントリのランクを、たとえば、特定のエントリがもはや上位N個のランク付きコンポーネントに入らないように下げる。たとえば、コンテンツ評価装置114内で実装される機械学習モデルが、同じブラウザアプリケーションによって、または他のアプリケーションによってアクセスされる他のデジタルコンテンツを分析することによって、ユーザがレンタカーを予約していると判断した場合、デジタルコンポーネントのリスト中の特定のエントリのランクは下げられてよい。代替として、およびランクを下げるのではなく、コンテンツ評価装置114は、デジタルコンポーネントへの参照を、デジタルコンポーネントのリスト130から削除してよい。
コンテンツページにアクセスするための要求が、クライアントデバイス102上で実行しているアプリケーションから受信される(360)。クライアントデバイス102上で実行しているアプリケーションが、コンテンツソース/プラットフォームによって提供されるコンテンツページにアクセスするために、アプリケーションは、ネットワーク104を介してコンテンツソース/プラットフォームへ送信されるコンテンツページにアクセスするための要求を生成する。コンテンツソースは、コンテンツページにアクセスするための要求を受信すると、対応するコンテンツページをクライアントデバイス102へ送信する。たとえば、ユーザは、クライアントデバイス102上で実行しているブラウザアプリケーションA116を、インターネット検索を実施し、インターネット検索に応答して提供された検索結果を検討し、検索結果として提供されたリンクをクリックすることによって複数のデジタルコンポーネントにアクセスするのに使えばよい。そのようなシナリオでは、クライアントデバイス102は、検索結果を含むコンテンツページにアクセスするための要求を生成する。さらに、ユーザが、たとえば、検索結果として提供されるリンクをクリックすると、クライアントデバイス102は、ネットワーク104を介してコンテンツソースへ送信されるデジタルコンテンツにアクセスするための対応する要求を生成する。
デジタルコンポーネントの修正されたリストの部分を含むコンテンツについての要求が、第2のコンテンツソースへ送られる(370)。いくつかの実装形態では、クライアントデバイス102上で実行しているアプリケーションによる、コンテンツページにアクセスするための要求に応答して、コンテンツページ上のスクリプトが、アプリケーションによる、第2のコンテンツソースへの、コンテンツについての要求の提供を実行し、引き起こす。いくつかの実装形態では、コンテンツについてのこの要求は、修正されたデジタルコンポーネントのリストの部分(たとえば、リスト全体または上位N個のランク付きデジタルコンポーネントなど、リストのサブセット)を含む。コンテンツについての要求は、要求される電子文書、デジタルコンポーネントが要求されているサーバの名称またはネットワークロケーション、要求側デバイス(たとえば、クライアントデバイス102)の名称またはネットワークロケーションなどのコンテンツ特徴を指定するイベントデータも含み得る。
いくつかの実装形態では、コンテンツソース/プラットフォームに提供される、デジタルコンポーネントのリスト130の部分は、デジタルコンポーネントのリスト130中の上位N個のエントリを含み、ここで上位N個のエントリは、ユーザの相対的興味に基づく各個々のデジタルコンポーネントのランク付けに基づいて選択される。たとえば、図2では、エントリ1~7は、デジタルコンポーネントのタイプ/カテゴリに関してランク付けされる。この場合、クライアントデバイス102は、コンテンツソース/プラットフォームに、1とランク付けされているエントリを含む、デジタルコンポーネントのリスト130の部分を提供し得る。
いくつかの実装形態では、コンテンツソース/プラットフォームに提供される、デジタルコンポーネントのリスト130の部分は、デジタルコンポーネントのリスト130中の上位N個のエントリ中で列挙されたデジタルコンポーネントの1つまたは複数の特徴の組合せを含み、ここで上位N個のエントリは、ユーザの相対的興味に基づく各個々のデジタルコンポーネントのランク付けに基づいて選択される。たとえば、図2では、クライアントデバイス102は、コンテンツソース/プラットフォームに、1とランク付けされるエントリの製品202またはカテゴリ204など、1つまたは複数の特徴を含むデジタルコンポーネントのリスト130の部分を提供し得る。
デジタルコンポーネントの修正されたリスト130の部分に基づいて、第2のデジタルコンポーネントが、コンテンツソース/プラットフォームから受信される(380)。いくつかの実装形態では、コンテンツソース/プラットフォームは、デジタルコンポーネントのリスト130の部分を受信すると、受信されたリスト130に列挙されたデジタルコンポーネントの中のデジタルコンポーネントを、クライアントデバイス102に提供する(たとえば、リスト130上の上位N個の識別されたデジタルコンポーネントからのデジタルコンポーネントを提供する)。いくつかのシナリオでは、デジタルコンポーネントのリストは、デジタルコンポーネントの修正されたリストであってよく、ここでデジタルコンポーネントのリストは、他のデジタルコンポーネントとの、ユーザの積極的ユーザアクションに基づいて修正される。
たとえば、コンテンツソース/プラットフォームに提供される、デジタルコンポーネントのリスト130の部分は、デジタルコンポーネントのリスト130中の上位N個のエントリからなると仮定し、ここで上位N個のエントリは、各個々のデジタルコンポーネントのランク付けに基づいて選択される。そのようなケースでは、コンテンツソース/プラットフォームによってアクセスされる、デジタルコンポーネントのリスト130の部分は、カメラ、ホテルおよびレンタカーに対するユーザ興味を示すエントリ1、2および5からなる。
いくつかの実装形態では、コンテンツソースおよび/またはコンテンツプラットフォームは、リスト上にあるかどうかにかかわらず、どのデジタルコンポーネントも提供することができる。そのようなケースでは、クライアントデバイスは、提供されるデジタルコンポーネントが、デジタルコンポーネントのリスト上にあるかどうか(たとえば、提供されたデジタルコンポーネントが、デジタルコンポーネントのリスト上の上位N個のデジタルコンポーネントのうちの1つであるかどうか)を判断することができる。そうである場合、クライアントデバイス上で実行しているアプリケーションは、提供されたデジタルコンポーネントをレンダリング/表示し得る。そうでない場合、アプリケーションは、そのようなコンテンツを、たとえば表示しないことによって抑制することができ、任意選択で、アプリケーションは代わりに、抑制/削除されたデジタルコンポーネントが表示されるはずだったロケーションが、コンテンツソースまたはコンテンツプラットフォームから取得され得る他のコンテンツ(たとえば、調節され、たとえば、再編成/移動/サイズ変更されてよいページにすでに含まれるコンテンツ、または他のコンテンツ)で置き換えられるようにインターフェースを修正してよい。
いくつかの実装形態では、クライアントデバイス102は、抑制された、かつクライアントデバイス102上に提示/表示されなかった特定のデジタルコンポーネントについてのコンテンツプラットフォームまたはコンテンツソースを通知することができる。コンテンツプラットフォームまたはコンテンツソースは、そのような情報を、続いて、そのようなデジタルコンポーネントをクライアントデバイス102上で提供するのを回避するのに使えばよい。コンテンツプラットフォームおよび/またはコンテンツソースは、抑制/削除されたコンテンツについての情報を維持/記憶することができ、これは、1つまたは複数のクライアントデバイスに提供するべきデジタルコンポーネントのタイプを知らせ得る分析論を実施するのに使うことができる。
コンテンツソース/プラットフォームから受信されたデジタルコンポーネントは、クライアントデバイス102上で実行しているアプリケーション内での表示用に提供される(390)。いくつかの実装形態では、クライアントデバイス102は、第2のコンテンツソースからデジタルコンポーネントを受信すると、これらのデジタルコンポーネントを、アプリケーション内での表示用に提供する。たとえば、コンテンツソース/プラットフォームは、デジタルコンポーネントのリストの部分を受信すると、カメラ、ホテルおよびレンタカーに関連したコンテンツなどのデジタルコンポーネントを、クライアントデバイス102に提供すると仮定する。
要するに、上述した動作は、積極的ユーザアクションをクライアントデバイスがすでに受けている冗長デジタルコンポーネントの、クライアントデバイス上での提供および表示を制限する。関連して、上で記載した動作は、どの事前の積極的ユーザアクションもこれらのデジタルコンポーネントに関連付けられていないとき、いかなる制約もなしでデジタルコンポーネント(あらかじめ提供されているかどうかにかかわらず)も提供し、表示する。
図4は、上述した動作を実施するのに使われ得る例示的コンピュータシステム400のブロック図である。システム400は、プロセッサ410、メモリ420、記憶デバイス430、および入力/出力デバイス440を含む。構成要素410、420、430、および440の各々は、たとえば、システムバス450を使って相互接続され得る。プロセッサ410は、システム400内での実行のための命令を処理することが可能である。いくつかの実装形態では、プロセッサ410は、シングルスレッドのプロセッサである。別の実装形態では、プロセッサ410は、マルチスレッドのプロセッサである。プロセッサ410は、メモリ420中または記憶デバイス430上に記憶された命令を処理することが可能である。
メモリ420は、システム400内に情報を記憶する。一実装形態では、メモリ420は、コンピュータ可読媒体である。いくつかの実装形態では、メモリ420は、揮発性メモリユニットである。別の実装形態では、メモリ420は、不揮発性メモリユニットである。
記憶デバイス430は、システム400に大容量記憶を提供することが可能である。いくつかの実装形態では、記憶デバイス430は、コンピュータ可読媒体である。異なる様々な実装形態では、記憶デバイス430は、たとえば、ハードディスクデバイス、光ディスクデバイス、ネットワークを介して複数のコンピューティングデバイスによって共有される記憶デバイス(たとえば、クラウド記憶デバイス)、または何らかの他の大容量記憶デバイスを含み得る。
入力/出力デバイス440は、システム400のための入力/出力動作を提供する。いくつかの実装形態では、入力/出力デバイス440は、ネットワークインターフェースデバイス、たとえば、イーサネットカード、シリアル通信デバイス、たとえば、RS-232ポート、および/またはワイヤレスインターフェースデバイス、たとえば、802.11カードのうちの1つまたは複数を含み得る。別の実装形態では、入力/出力デバイスは、入力データを受信し、周辺デバイス460へ出力データを送るように構成されたドライバデバイス、たとえば、キーボード、プリンタおよびディスプレイデバイスを含み得る。ただし、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビジョンクライアントデバイスなどのような、他の実装形態が使われてもよい。
図4では、例示的処理システムが記述されているが、本明細書に記載する主題および機能的動作の実装形態は、他のタイプのデジタル電子回路構成で、またはコンピュータソフトウェア、ファームウェア、もしくは本明細書において開示した構造およびそれらの構造的等価物を含むハードウェアで、またはそれらのうちの1つもしくは複数からなる組合せで実装することができる。
本明細書に記載する主題および動作の実施形態は、デジタル電子回路構成で、またはコンピュータソフトウェア、ファームウェア、もしくは本明細書において開示した構造およびそれらの構造的等価物を含むハードウェアで、またはそれらのうちの1つもしくは複数からなる組合せで実装することができる。本明細書において説明される主題の実施形態は、1つまたは複数のコンピュータプログラムとして、すなわち、データ処理装置による実行のためか、またはデータ処理装置の動作を制御するための、複数のコンピュータ記憶媒体(または1つのコンピュータ記憶媒体)上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして、実装することができる。代替または追加として、プログラム命令は、データ処理装置による実行のために、適切な受信機装置への送信用の情報を符号化するように生成される、人工的に生成された伝搬信号、たとえば、機械生成された電気、光学、または電磁信号上で符号化されてよい。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数からなる組合せであるか、またはそこに含まれてよい。その上、コンピュータ記憶媒体は伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号の中で符号化されたコンピュータプログラム命令のソースまたは宛先であることが可能である。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理構成要素または媒体(たとえば、複数のCD、ディスク、または他の記憶デバイス)であるか、またはそれらに含まれてよい。
本明細書に記載した動作は、1つもしくは複数のコンピュータ可読記憶デバイス上に記憶された、または他のソースから受信されたデータに対して、データ処理装置によって実施される動作として実装されてよい。
「データ処理装置」という用語は、例として、プログラム可能プロセッサ、コンピュータ、システムオンチップ、または上記の複数のもの、もしくは組合せを含む、データを処理するための、あらゆる種類の装置、デバイス、および機械を包含する。装置は、特殊目的論理回路構成、たとえば、FPGA(フィールドプログラム可能ゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置は、ハードウェアに加え、問題となっているコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想機械、またはそれらのうちの1つまたは複数の、組合せを構成するコードも含むことができる。装置および実行環境は、ウェブサービス、分散型コンピューティングおよびグリッドコンピューティングインフラストラクチャなど、異なる様々なコンピューティングモデルインフラストラクチャを実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られている)は、コンパイル型またはインタープリタ型言語、宣言型または手続き型言語を含む、どの形のプログラミング言語でも書かれてよく、スタンドアロンプログラムとして、またはモジュール、構成要素、サブルーチン、オブジェクト、もしくはコンピューティング環境における使用に適した他のユニットとして、を含む、どの形でも展開することができる。コンピュータプログラムが、ファイルシステム内のファイルに対応してよいが、そうである必要はない。プログラムは、他のプログラムもしくはデータ(たとえば、マークアップ言語ドキュメントに記憶された1つもしくは複数のスクリプト)を保持するファイル部分に、問題になっているプログラムに専用の単一のファイルに、または複数の協調ファイル(たとえば、1つもしくは複数のモジュール、サブプログラム、もしくはコードの部分を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つの場所に位置する1つのコンピュータ上または複数のコンピュータ上で実行されるように展開されても、複数の場所に分散され、通信ネットワークによって相互接続されてもよい。
本明細書に記載したプロセスおよび論理フローは、入力データに対して動作し、出力を生成することによってアクションを実施するための1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラム可能プロセッサによって実施され得る。プロセスおよび論理フローは、特殊目的論理回路構成、たとえば、FPGA(フィールドプログラム可能ゲートアレイ)やASIC(特定用途向け集積回路)によって実施することもでき、装置は、それらとして実装することもできる。
コンピュータプログラムの実行に適したプロセッサは、例として、汎用および特殊目的マイクロプロセッサの両方を含む。概して、プロセッサは、読取り専用メモリもしくはランダムアクセスメモリまたは両方から、命令およびデータを受信することになる。コンピュータの本質的要素は、命令に従ってアクションを実施するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。概して、コンピュータは、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば、磁気、光磁気ディスク、または光ディスクも含み、あるいは大容量記憶デバイスからデータを受信し、もしくはデータを転送し、または両方を行うように大容量記憶デバイスに動作可能に結合される。ただし、コンピュータは、そのようなデバイスを有する必要はない。その上、コンピュータは、別のデバイス、たとえば、ほんのいくつかの例を挙げれば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に組み込むことができる。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイスと、磁気ディスク、たとえば、内部ハードディスクまたは取外し可能ディスクと、光磁気ディスクと、CD-ROMおよびDVD-ROMディスクとを含む、あらゆる形の不揮発性メモリ、媒体およびメモリデバイスを含む。プロセッサおよびメモリは、特殊目的論理回路構成によって補完されても、組み込まれてもよい。
ユーザとの対話を提供するために、本明細書に記載する主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、たとえば、CRT(陰極線管)やLCD(液晶ディスプレイ)モニタと、ユーザがコンピュータに入力を与え得るためのキーボードおよびポインティングデバイス、たとえば、マウスやトラックボールとを有するコンピュータ上で実装することができる。他の種類のデバイスも、ユーザとの対話を可能にするのに使われることが可能であり、たとえば、ユーザに与えられるフィードバックは、どの形の感覚フィードバックでも、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであることができ、ユーザからの入力は、音響、発話、または触覚入力を含む、どの形でも受信されることが可能である。さらに、コンピュータは、ユーザによって使われるデバイスへドキュメントを送信し、デバイスからドキュメントを受信することによって、たとえば、ウェブブラウザから受信された要求に応答して、ユーザのクライアントデバイス上のウェブブラウザへウェブページを送信することによって、ユーザと対話することができる。
本明細書に記載する主題の実施形態は、バックエンド構成要素を、たとえばデータサーバとして含む、もしくはミドルウェア構成要素、たとえばアプリケーションサーバを含む、もしくはフロントエンド構成要素、たとえば、本明細書に記載する主題の実装形態とユーザが対話することができるためのグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含むコンピューティングシステム、または1つもしくは複数のそのようなバックエンド、ミドルウェア、もしくはフロントエンド構成要素のどの組合せでも実装されることが可能である。システムの構成要素は、どの形または媒体のデジタルデータ通信(たとえば、通信ネットワーク)によっても相互接続されることが可能である。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントとサーバは概して、互いから離れており、通常、通信ネットワークを通して対話する。クライアントとサーバの関係は、それぞれのコンピュータ上で稼動するとともに互いとのクライアント-サーバ関係を有するコンピュータプログラムにより発生する。いくつかの実施形態では、サーバが、データ(たとえば、HTMLページ)を、クライアントデバイスへ(たとえば、クライアントデバイスと対話するユーザにデータを表示し、ユーザからユーザ入力を受信する目的のために)送信する。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザ対話の結果)が、クライアントデバイスからサーバにおいて受信され得る。
本明細書は、多くの具体的な実装形態詳細を含むが、これらは、任意の発明の、または特許請求され得るものの範囲において、限定と解釈されるべきではなく、特定の発明の特定の実施形態に特有な特徴の記述として解釈されるべきである。また、別個の実施形態の文脈において本明細書で説明したいくつかの特徴は、単一の実施形態において組み合わせて実装することができる。逆に、単一の実施形態の文脈において記載される様々な特徴はまた、複数の実施形態において別々に、またはどの適切な部分組合せでも実装することができる。さらに、特徴は、いくつかの組合せで働くものとして上記で説明され、初めにそのように請求される場合さえあるが、請求項からの1つまたは複数の特徴は、場合によってはその組合せから削除することができ、請求される組合せは、部分組合せ、または部分組合せの変形形態を対象とすることができる。
同様に、動作は、特定の順序において図面に示されているが、これは、そのような動作が図示された特定の順序において、もしくは順次に実施されることを必要とするか、または、所望の結果を達成するためにすべての示された動作が実施されることを必要とするものと理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利な場合がある。その上、上述した実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、記載したプログラム構成要素およびシステムは概して、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージングされることが可能であることを理解されたい。
以上、本主題の特定の実施形態について記載した。他の実施形態は、以下の特許請求の範囲内である。いくつかのケースでは、請求項において具陳されるアクションは、異なる順序で実施され、望ましい結果を依然として達成することができる。さらに、添付の図面に示されるプロセスは、望ましい結果を達成するのに、図示される特定の順序、または順番を必ずしも要求しない。いくつかの実装形態では、マルチタスキングおよび並列処理が有利であり得る。