様々な図面における同様の参照番号および名称は、同様の要素を示す。
本明細書に記載するシステムおよび方法は、通信ネットワークを介して電子リソースを要求することに関する。インターネットなどのネットワークを介して電子リソースを要求し、またはリソースにアクセスするいくつかの方法は、リソースを要求しているデバイスのブラウザ上で、知られているリダイレクトプロセスを利用する。そのような方法は、クライアントデバイスにおいてリソースを提示する際に、関連待ち時間を被り、エラーにさらされることがわかっている。したがって、たとえば、他の技法と比較すると、待ち時間が削減され、エラーをより受けにくい、コンテンツにアクセスし、かつ/またはコンテンツをダウンロードすることを含むが、それらに限定されない、電子リソースを要求する代替方法およびシステムが必要である。
本明細書に記載する、電子リソースを要求するためのシステムおよび技法は、電子リソースへのリンクを含む対話型アイテムの選択の後で、クライアントデバイスにおいて電子リソース(たとえば、ウェブページまたは電子ドキュメント)を提示する際の待ち時間を削減する。たとえば、ユーザは、クライアントデバイス上で実行しているネイティブアプリケーションによって提示された対話型アイテムを選択し(たとえば、アイテムと対話し)得る。選択に応答して、クライアントデバイスは、選択された対話型アイテムによってリンクされた電子リソースを要求し、取得し、提示し得る。電子リソースは、ネイティブアプリケーションのユーザインターフェース内に(たとえば、アプリケーションのアプリ内ブラウザフレームもしくはウィンドウ中に)、またはウェブブラウザアプリケーション中に提示されてよい。アプリ内ブラウザフレームとは、アプリケーションのユーザインターフェース内に提示されるブラウザフレームである。アプリ内ブラウザフレームの例は、Chromeウェブブラウザによって提供されるChrome Custom Tabである。
ブラウザクッキーも、対話型アイテムの選択に応答して、クライアントデバイスによってダウンロードされ、クライアントデバイス上に記憶され得る。たとえば、ブラウザクッキーは、リモートサーバによってクライアントデバイス上に置かれてよく、クッキーは、(1)選択された対話型アイテムによってリンクされた電子リソースに関連したデータ、(2)選択自体に関連したデータ、たとえば、選択が発生した時間もしくは選択についての一意の識別子、および/または(3)選択された対話型アイテムに関連したデータを記憶することができる。クッキーが、個人的と見なされ得る少なくとも何らかのデータを記憶すると、ウェブブラウザは概して、ネットワークドメイン(たとえば、ウェブドメイン)に、異なるドメイン用のブラウザクッキーを記憶することも、クッキーにアクセスすることもさせない。したがって、異なるパーティによって提供される電子リソースと一体化されている対話型アイテムを提供するのにサードパーティが使われ、電子リソースの発行元についてのクッキーをサードパーティも管理する場合、電子リソースの発行元ではなく、サードパーティのウェブドメインが概して、ブラウザクッキーのコンテンツを記憶し、取り出さなければならない。この例では、ユーザデバイスが発行元の電子リソースを要求するとき、リダイレクト技法が、サードパーティクッキーを記憶するのに使われ得る。
たとえば、インターネットなどのネットワークを介して電子リソースを要求し、またはリソースにアクセスするいくつかの方法は、リソースを要求しているデバイスのブラウザ上で、リダイレクト技法を利用する。以下で説明するように、そのような方法は、クライアントデバイスにおいてリソースを提示する際に、関連待ち時間を被り、エラーにさらされることがわかっている。したがって、電子リソースを要求する代替方法およびシステム、すなわち、既存の技法と比較すると、待ち時間が削減され、エラーをより受けにくい、コンテンツにアクセスし、かつ/またはコンテンツをダウンロードすることを含むが、それらに限定されないものが必要である。
電子リソースを要求するいくつかの方法は、リダイレクト技法を使い、クライアントデバイスのウェブブラウザは最初に、選択された対話型アイテムによってリンクされた電子リソースのウェブドメインへ(たとえば、HTTPリダイレクト命令を使って)リダイレクトされる前に、サードパーティのウェブドメインへ向けられ得る。サードパーティのウェブドメイン中のサーバが、クライアントデバイス上にブラウザクッキーを置き、自動的にウェブブラウザを、選択された対話型アイテムによってリンクされた電子リソースのウェブドメインへナビゲートさせるデータ(たとえば、機械実行可能命令)を、クライアントデバイスのウェブブラウザへ提供することができる。クライアントデバイスは次いで、ウェブドメインから電子リソースをダウンロードし、クライアントデバイスのディスプレイ中で、たとえば、対話型アイテムを選択したユーザに対して電子リソースを提示することができる。
リダイレクト技法は、対話型アイテムが選択された後で電子リソースをダウンロードし、提示するのを遅らせる(たとえば、待ち時間を加える)場合がある。この遅延/待ち時間は、モバイルネットワーク送信速度および/またはモバイルネットワークを介してネットワークコール(たとえば、要求)をセットアップするのに必要とされる時間の量により、モバイルデバイスにおいて、より一層顕著であり得る。
アプリケーション内対話型アイテム選択(たとえば、ネイティブアプリケーション中で提示されるコンテンツアイテムの選択)のために電子リソースを要求する実施形態、実装形態、方法および技法が提案され、これらにおいて、ブラウザクッキーを取得するのと並行して、またはそれに先立って、電子リソースが要求され、提示され得る。たとえば、1つまたは複数の実施形態では、クライアントデバイスは、対話型アイテム選択に応答して、2つの処理スレッドを並行して実行することができる。1つの処理スレッドでは、サードパーティウェブドメインから電子リソースが要求され得る。受信されると、電子リソースは、ネイティブアプリケーションのアプリケーション内ブラウザフレーム中にロードされてよく、ブラウザクッキーはクライアントデバイス上に記憶されてよい。別の処理スレッドでは、選択された対話型アイテムによってリンクされた電子リソースは、要求され、クライアントデバイスのウェブブラウザアプリケーション中に(またはアプリ内ブラウザフレーム中に)提示されてよい。
したがって、上で手短に説明し、以下でより詳細に述べる対話型アイテム選択に応答して2つの処理スレッドを実行することは、電子リソースが直接、すなわち、ブラウザクッキーがクライアントデバイス上で記憶されるのを待つことなく、要求されることを可能にするという有利な効果を与え、そうすることによって、ランディングページを提示する際の待ち時間の削減と、リダイレクト技法に関連付けられたエラーの削減とをもたらす。
図1は、電子リソースを要求し、ダウンロードし、提示するための例示的プロセスフロー120および140を示すブロック図である。プロセスフロー120および140は両方とも、リソース要求110に応答して発生し得る。リソース要求110は、電子リソース用の対話型アイテムとのユーザ対話に応答してクライアントデバイスによって生成される、電子リソース、たとえば、ウェブページまたは電子ドキュメントについての送信された要求であってよい。たとえば、対話型アイテムは、特定の製品またはサービスについての広告であってよく、電子リソースは、特定の製品またはサービスについてのランディングページであってよい。他の対話型アイテムは、オーディオもしくはビデオクリップ、対話型ゲーム、または対話型能力を提供する他のアイテムを含む。いくつかの実装形態では、対話型アイテムの視覚化が、電子リソースと一体化されて、クライアントデバイスのディスプレイ内で提示される合成ページを作成する。
例示的プロセスフロー120は、電子リソースがクライアントデバイスにおいて要求され、提示されるのに先立って概ね完了されるリダイレクト技法を含む。具体的には、プロセスフロー120における、電子リソースを要求する方法は、あるドメイン中のサーバに対してクッキーリソース(たとえば、ブラウザクッキーを置くためのウェブページ)を要求すること(121)、そのドメイン中のサーバからブラウザクッキーおよびリダイレクト応答を受信する(たとえば、ダウンロードする)こと(122)、ならびにクライアントデバイス上でクッキーを記憶すること(123)を含む。たとえば、対話型アイテムは、ブラウザクッキーを提供する(たとえば、電子リソースの発行元に相対した)サードパーティのウェブドメインについてのロケータまたはポインタ(たとえば、ユニバーサルリソースロケータ(URL))を含み得る。対話型アイテムの選択に応答して、クライアントデバイスは、サードパーティのウェブドメインに対してクッキーリソース(たとえば、ウェブページ)を要求するのにロケータまたはポインタを使うことができる。サードパーティのウェブドメインは、ブラウザクッキーおよびリダイレクト応答(たとえば、HTTP302リダイレクト応答)をクライアントデバイスに戻し得る。クライアントデバイスは次いで、ブラウザクッキーをローカルメモリ中に記憶することができる。
リダイレクト応答は、自動的にクライアントデバイスのウェブブラウザアプリケーションを対話型アイテム用の電子リソースへナビゲートさせる機械可読命令(たとえば、HTTPリダイレクト命令)を含む。たとえば、リダイレクト応答は、電子リソースについてのロケータ(たとえば、URL)およびHTTP302リダイレクトコードを含み得る。HTTP302リダイレクト応答の実行により、ウェブブラウザは、ロケータを使って、電子リソースを提供するウェブドメインに対して電子リソースを要求する(124)。クライアントデバイスは次いで、ウェブドメインから電子リソースをダウンロードし(125)、電子リソースを、クライアントデバイスのグラフィカルディスプレイ中で提示する(126)。
プロセスフロー120中の、電子リソースを要求する方法のリダイレクト技法は、完了するのにある程度の時間がかかる場合があり、本明細書に記載する欠点を被る。電子リソースを要求する前にリダイレクト技法が完了するのを待つことによって、対話型アイテムが選択される時間と、クライアントデバイスにおいて電子リソースが提示される時間との間に、ある程度の追加待ち時間が(たとえば、リダイレクト技法なしで電子リソースを直接ダウンロードし、提示するのに必要とされる時間を超えて)生じられる。さらに、リダイレクト技法中に発生するいかなるエラー(たとえば、タイムアウト、リンク故障、またはネットワーク障害)も、追加遅延を追加するか、または電子リソースがクライアントデバイスにおいて提示されるのを防止する場合がある。たとえば、クライアントデバイスが、クッキーおよびリダイレクト命令を提供するサードパーティのウェブドメインに接続することができない場合、クライアントデバイスは、電子リソースを取得することができない可能性がある。
例示的プロセスフロー140は、クライアントデバイス上でブラウザクッキーを記憶するとともに電子リソースを提示するために並行して実行され得る2つの処理スレッドを使うことによって、電子リソースを要求し、またはリソースにアクセスする方法の一実装形態の表現であり、この方法は、電子リソースをダウンロードし、提示することに関連付けられた待ち時間を(たとえば、上で論じたリダイレクト技法に相対して)削減する。具体的には、第1の処理スレッドが、クライアントデバイス上で、クッキーリソースを要求し(141)、クッキーリソースを受信し(142)、ブラウザクッキーを記憶する(143)。たとえば、例示的プロセスフロー140は、ネイティブアプリケーション(たとえば、モバイルデバイスにおいて実行しているアプリケーション)によって提示される対話型アイテムの選択に応答して実施され得る。以下で説明するように、待ち時間削減エンジンが、対話型アイテムとの対話を検出し、対話を検出したことに応答して、2つの処理スレッドの実行を管理し得る。
たとえば、待ち時間削減エンジンは、対話型アイテムの選択を検出したことに応答して、サードパーティのウェブドメインに対してクッキーリソースを要求することができ、同時に、以下でより詳しく説明するように、異なるウェブドメイン(たとえば、発行元ウェブドメインのサーバ)に対しても電子リソースを要求する。いくつかの実装形態では、待ち時間削減エンジンは、ネイティブアプリケーション内で(たとえば、ネイティブアプリケーションのアプリ内ブラウザフレームまたはウィンドウ中で)電子リソース(たとえば、ウェブページ)が提示されるようにするネイティブアプリケーションのコントローラ、コントローラクラス、または他の要素を開始する。クッキーリソースがクライアントデバイスにおいて受信されると、ネイティブアプリケーションは、クッキーリソースをロードすることができる。いくつかの実装形態では、ネイティブアプリケーションは、クッキーリソースを実際には提示しない。そうではなく、クッキーリソースは、クッキーを記憶するために開始される0×0サイズのフレーム(たとえば、ゼロピクセルかけるゼロピクセル)中にロードされ得る。または、クッキーリソースは、対話型アイテムが提示された同じロケーションにおいて、もしくはネイティブアプリケーション中のフルサイズのブラウザフレーム中に提示され得る。クッキーは、クッキーリソースとともに受信され、クライアントデバイス上で記憶され得る。
第2の処理スレッドが、電子リソースを要求し(144)、電子リソースをダウンロードし(145)、電子リソースを提示し得る(146)。ある例示的実施形態のある実装形態では、第2の処理スレッドは、第1の処理スレッドが完了されるのに先立って実行され得る。したがって、例示的実施形態のいくつかの例示的実装形態では、第2の処理スレッドは、第1の処理スレッドと並行して、または第1の処理スレッドの実行に先立って実行され得る。例示的実施形態の別の例示的実装形態では、第2の処理スレッドは、第1の処理スレッドが開始されるのと同じときに、第1の処理スレッドが開始される前に、または第1の処理スレッドが開始された後、指定された量の時間以内に開始され得る。
以下で説明するように、待ち時間削減エンジンは、クライアントデバイスによるウェブブラウザアプリケーションのオープンを始動またはトリガするスクリプト(たとえば、コードの部分)を実行し、ウェブブラウザアプリケーションに、電子リソースを提供するウェブドメインに対して電子リソースを要求させ/ドメインからダウンロードさせることができる。ウェブブラウザアプリケーションは、ウェブドメインから電子リソースをダウンロードし、電子リソースをユーザに対して提示することができる。クライアントデバイスは、ウェブブラウザアプリケーションがクライアントデバイスのディスプレイ上で可視的である間、ネイティブアプリケーションを最小化するか、またはネイティブアプリケーションをバックグラウンドで(たとえば、ネイティブアプリケーションが提示されることなく)実行し続けてよい。または、電子リソースは、ネイティブアプリケーションのアプリ内ブラウザフレーム(たとえば、クライアントデバイスディスプレイの表示エリアの全部には満たない部分を占めるフレーム)の中に提示され得る。
図2は、例示的な対話型アイテム配布システム240が対話型アイテムおよびブラウザクッキーを配布し、対話型アイテムについての対話データを維持する環境200である。データ通信ネットワーク220が、対話型アイテム配布システム240、クライアントデバイス210、および発行元ウェブサイト230を接続する。ネットワーク220は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、モバイルネットワーク、またはそれらの組合せを含み得る。
クライアントデバイス210は、ネットワーク220を介して電子リソースおよび他のデータを要求し、受信することが可能な電子デバイスである。例示的クライアントデバイスは、パーソナルコンピュータ、モバイル通信デバイス(たとえば、スマートフォン、タブレットコンピューティングデバイス、および/またはスマートウォッチ)、ならびにネットワーク220を介してデータを送り、受信することができる他のデバイスを含む。クライアントデバイスは通常、ネットワーク220を介したデータの送付および受信を容易にするために、ウェブブラウザ214などのユーザアプリケーションを含む。ウェブブラウザ214は、ユーザが、通常はウェブサイトにおけるウェブページ上に置かれた、テキスト、画像、ビデオ、音楽、および他の情報と対話することを可能にし得る。
クライアントデバイス210は、他のアプリケーション、たとえば、ネイティブアプリケーション212を含み得る。ネイティブアプリケーションとは、特定のプラットフォームまたは特定のタイプのデバイス用に開発されたアプリケーションである。例示的ネイティブアプリケーションは、ほんのいくつかの例を挙げると、ゲーム、生産性アプリケーション、ソーシャルネットワーキングアプリケーション、および対応するウェブサイトに関連したアプリケーションを含む。
クライアントデバイス210は、以下でより詳しく説明するように、電子リソースを要求し、提示する際の待ち時間を削減する待ち時間削減エンジン216も含む。いくつかの実装形態では、待ち時間削減エンジン216は、ソフトウェア開発キット(SDK)を供給するアプリ内対話型アイテムの中に含まれる。この例では、SDKを供給するアプリ内対話型アイテムは、ネイティブアプリケーション内で対話型アイテムを提示するネイティブアプリケーション、たとえば、ネイティブアプリケーション212の一部であり得る。したがって、この例では、待ち時間削減エンジン216はネイティブアプリケーション212のモジュールであり得る。
ウェブサイトは、ドメイン名に関連付けられるとともに1つまたは複数のサーバによって収容される1つまたは複数の電子リソースを含む。例示的ウェブサイトは、テキスト、画像、マルチメディアコンテンツ、およびスクリプトなどのプログラミング要素を含み得るハイパーテキストマークアップ言語(HTML)でフォーマットされたウェブページの集合体である。各ウェブサイトは、ウェブサイトを制御、管理および/または所有するエンティティであるコンテンツ発行元230によって維持される。
電子リソースは、ネットワーク220を介して発行元230によって提供され得るとともにリソースアドレスに関連付けられた任意のデータである。電子リソースは、ほんのいくつかの例を挙げれば、HTMLページ、文書処理ドキュメント、およびポータブルドキュメントフォーマット(PDF)ドキュメント、画像、ビデオ、およびフィードソースを含む。リソースは、単語、フレーズ、ピクチャなどのようなコンテンツを含むことができ、埋め込み情報(メタ情報およびハイパーリンクなど)ならびに/または埋め込み命令(たとえば、スクリプト)を含むことができる。発行元230は、ネイティブアプリケーションを提供することもできる。
対話型アイテム配布システム240は、たとえば、1つまたは複数のデータセンタ中に置かれた1つまたは複数のサーバを含み得る。たとえば、対話型アイテム配布システム240は、対話型アイテムについての要求を受信し、要求に応答して対話型アイテムを提供する1つまたは複数のフロントエンドサーバ245を含み得る。以下でより詳しく説明するように、フロントエンドサーバ245はまた、クッキーリソースについての要求を受信し、要求に応答してクッキーリソースおよびブラウザクッキーを提供し、指定されたユーザ操作に応答して、ブラウザクッキーからのデータを受信することができる。
対話型アイテムは、コンテンツ(たとえば、可視および/または可聴コンテンツ)を含み、電子リソース(たとえば、ウェブページおよび電子ドキュメント)またはアプリケーション(たとえば、ネイティブアプリケーション)とともに提示され得る。対話型アイテムは、対話型アイテムを提示しているクライアントデバイスに、対話型アイテムとのユーザ対話に応答して別の電子リソースを要求および提示させる別の電子リソースおよび/またはコードへのリンクも含み(またはリンクに関連付けられ)得る。たとえば、対話型アイテムは、特定の製品向けのコンテンツを含み得る。この例示的な対話型アイテムは、製品についてのより多くの情報を含み、かつ/またはユーザが製品を取得できるようにする、ランディングページへのリンクを含み得る。ユーザが対話型アイテムと対話する(たとえば、アイテムを選択する)とき、クライアントデバイスは、ランディングページの発行元へ、ネットワーク220を介してランディングページについての要求を送信し、クライアントデバイスにおいてランディングページを提示するのに、リンクを使うことができる。
ブラウザクッキーとは、ウェブサイトから送られ、ウェブブラウザによってクライアントデバイス上で記憶されるファイル(たとえば、テキストファイル)である。ウェブブラウザは通常、ユーザが、ウェブクッキーがクライアントデバイス上で記憶されるのを許可するか、それとも防止するかを選択できるようにする。上述したように、ウェブブラウザは概して、ウェブドメインに、異なるドメイン用のブラウザクッキーを記憶することも、クッキーにアクセスすることもさせない。したがって、発行元230のウェブドメインがクライアントデバイス210上でブラウザクッキーを記憶する場合、対話型アイテム配布システム240の異なるウェブドメインは、ブラウザクッキーにアクセスすることができない可能性がある。
対話型アイテム配布システム240は、1つまたは複数のバックエンドサーバも含み得る。たとえば、対話型アイテム配布システム240は、1つまたは複数の対話型アイテム選択サーバ250、1つまたは複数の対話データサーバ260、および1つまたは複数のブラウザクッキーサーバ270を含む。対話型アイテム選択サーバ250、対話データサーバ260、およびブラウザクッキーサーバ270は別個のサーバであるものとして示されているが、各サーバの機能は、単一のサーバの中に含まれてよい。これらのサーバは、データ通信ネットワーク、たとえば、LAN、WAN、またはインターネットを介して通信することができる。
対話型アイテム選択サーバ250は、対話型アイテムについての要求を受信し、各要求に応答して、提供するべき1つまたは複数の対話型アイテムを選択することができる。たとえば、発行元230によって提供される電子リソースは、対話型アイテムを提示するための対話型アイテムスロットを含み得る。電子リソースは、電子リソースをロードしているクライアントデバイスに、対話型アイテムスロット中で提示するべき対話型アイテムについての、対話型アイテム配布システム240への要求を送信させるコード(たとえば、スクリプト)を含み得る。対話型アイテム選択サーバ250は、対話型アイテムを選択し、選択された対話型アイテムをフロントエンドサーバ245へ提供することができる。対して、フロントエンドサーバ245は、選択された対話型アイテムを、要求がそこから受信されたクライアントデバイスに提供することができる。
対話型アイテム配布システム240は、クライアントデバイスへ提供される対話型アイテムとの対話に関連したデータを記憶する対話データベース254を含む。そのような対話データは、たとえば、対話型アイテムが対話を受信した回数(たとえば、対話型アイテムの選択の数)、対話型アイテムが対話を受信したレート、各対話のタイムスタンプ、対話型アイテムが対話を受信した後で、事前指定されたユーザ操作が発生した回数、および/またはこれらの事前指定されたユーザ操作の発生のタイムスタンプを含み得る。
クライアントデバイス210のユーザが対話型アイテムと対話する(たとえば、アイテムを選択する)と、クライアントデバイス210は、通常は発行元のウェブページである対話型アイテムに関連付けられた電子リソース(たとえば、ランディングページ)についての要求を生成する。たとえば、発行元230は広告主を含んでよく、各々がそれぞれのウェブページを収容し、それらのうちのいくつかはランディングページである。対話型アイテムは、それに関連付けられた電子リソースへのリンクを含み得る。
ブラウザクッキーサーバ270は、クライアントデバイス210へブラウザクッキーを提供することができる。たとえば、ブラウザクッキーサーバ270は、クライアントデバイスにおける対話型アイテムとのユーザ対話に応答して、クライアントデバイス上にブラウザクッキーを置く。ブラウザクッキーは、一意の識別子(たとえば、クライアントデバイスを識別する)、およびユーザが対話した対話型アイテムを識別するデータ、ならびに/または対話型アイテムとのユーザの対話の他の詳細(たとえば、対話のタイムスタンプ、もしくは対話データベース中に記憶され得る、対話に関するさらなる記録に関連付けられ得る、対話についての一意の識別子)を含み得る。クライアントデバイス上にブラウザクッキーを置くための例示的技法について、以下で説明する。
対話データサーバ260は、対話データベース254中の対話データとして、対話型アイテムについての変換データを取得し、記憶することができる。ユーザが、対話型アイテムと対話した後に、指定されたアクションを実施したとき、たとえば、ユーザが、製品用の対話型アイテムと対話し、対話型アイテムについてのランディングページを閲覧した後に製品を買ったとき、変換が対話型アイテムについて記録されてよい。
いくつかの実装形態では、対話データサーバ260は、指定されたユーザ操作が発生する電子リソースまたは指定されたユーザ操作が発生した後に提示された電子リソース中に含まれるウェブビーコン(たとえば、ピクセルタグまたはコード)を使って、指定されたユーザ操作に関連したデータを受信する。たとえば、ピクセルコードが電子リソース中に含まれ得る。ピクセルコードは、電子リソースを提示しているウェブブラウザに、対話型アイテム配布システム240に対して画像を要求させることができる。要求において、ピクセルコードは、ウェブブラウザに、指定されたユーザ操作の発生を指定するデータと、クライアントデバイス上に記憶されたブラウザクッキー中に含まれるデータ(またはクッキー自体)とを対話型アイテム配布システム240へ提供させることもできる。たとえば、要求は、ウェブクッキーの一意の識別子を指定するデータと、クライアントデバイス上にブラウザクッキーが記憶された対話型アイテムを指定するデータとを含み得る。要求に応答して、対話型アイテム配布システム240のフロントエンドサーバ245は、ウェブブラウザ中で提示されるがユーザにとって不可視である画像(たとえば、1×1画像)を提供し得る。
待ち時間削減エンジン216は、対話型アイテムによってリンクされた電子リソースを提示する際の待ち時間を削減することができる。待ち時間削減エンジン216は、アプリケーション(たとえば、ネイティブアプリケーション212)中に提示される対話型アイテムとの対話(たとえば、アイテムの選択)を検出し得る。対話を検出したことに応答して、待ち時間削減エンジン216は、フロントエンドサーバ245と対話してブラウザクッキーを取得することができる。待ち時間削減エンジン216は、発行元のウェブサイトと対話して、対話型アイテムによってリンクされた電子リソースを要求することもできる。
いくつかの実装形態では、待ち時間削減エンジン216は、ブラウザクッキーを取得するために、および電子リソースを要求するために、複数の処理スレッドの実行を管理する。第1の処理スレッドにおいて、待ち時間削減エンジン216は、ブラウザクッキーを取得し、ブラウザクッキーをクライアントデバイス210上で記憶してよい。たとえば、対話型アイテムとの対話に応答して、待ち時間削減エンジン216は、対話型アイテム配布システム240に対してクッキーリソースを要求し得る。要求は、対話型アイテムを指定するデータを含み得る。フロントエンドサーバ245は、要求を受信し、要求をブラウザクッキーサーバ270へ提供し得る。ブラウザクッキーサーバ270は、対話型アイテムの選択を対話データベース254中に記録し得る。この選択は、対話型アイテムについての、対話レートまたは対話の数というメトリックを更新するのに使われ得る。ブラウザクッキーサーバ270はまた、ブラウザクッキーおよびクッキーリソース(たとえば、ウェブページ)をフロントエンドサーバ245へ提供し得る。対して、フロントエンドサーバ245は、ブラウザクッキーおよびクッキーリソースを待ち時間削減エンジン216へ提供し得る。
待ち時間モジュール216は、ネイティブアプリケーション212のアプリ内ブラウザフレームの中にクッキーリソースをロードすることもできる。いくつかの実装形態では、待ち時間削減エンジン216は、クッキーリソースがユーザにとって可視的でないように、0×0サイズのアプリ内ブラウザフレームの中にクッキーリソースをロードする。アプリ内ブラウザフレームの中にクッキーリソースをロードすることによって、待ち時間削減エンジン216は、クッキーリソースおよびブラウザクッキーが同じウェブドメインから取得されたので、クライアントデバイス210上でブラウザクッキーを記憶することができる。
第2の処理スレッドにおいて、待ち時間削減エンジン216は、クライアントデバイス210に、ウェブブラウザ214(またはウェブブラウザのタブ)を開かせることができる。待ち時間削減エンジン216は次いで、ウェブブラウザを、電子リソース用のURLへナビゲートさせることができる。たとえば、待ち時間削減エンジン216は、ユーザが対話した対話型アイテムからURLを取得することができる。ウェブブラウザ214は、発行元230に対して電子リソースを要求するのにURLを使うことができる。受信されると、ウェブブラウザ214は電子リソースを提示することができる。
別の例では、待ち時間削減エンジン216は、電子リソースを、ネイティブアプリケーション212内に提示させることができる。たとえば、ウェブブラウザ214を開くのではなく、待ち時間削減エンジン216は、電子リソースを、ネイティブアプリケーション212のアプリ内ブラウザフレームの中に提示させ得る。この例では、待ち時間削減エンジン216は、ネイティブアプリケーション212のアプリ内ブラウザフレームの中に電子リソースを提示させる、ネイティブアプリケーション212のコントローラ、コントローラクラス、または他の要素を開始し得る。
待ち時間削減エンジン216は、第1の例示的実装形態について上で説明したように、処理スレッドを並行して実行することができる。代替または追加として、待ち時間削減エンジン216は、第2の例示的実装形態について上で説明したように、ブラウザクッキーを取得する第1の処理スレッドを開始するのに先立って、対話型アイテムによってリンクされた電子リソースを提示する第2の処理スレッドを開始することができる。たとえば、いくつかのオペレーティングシステムは、アプリが、バックグラウンドにおいて短い時間期間だけ実行し続けるようにする。ウェブブラウザ214を開いた後、ネイティブアプリケーション212は、その短い時間の量だけ、クッキーリソースを要求し、ロードするために実行し続けてよく、そうすることによって、ブラウザクッキーはクライアントデバイス210上に記憶され得る。
クライアントデバイス210において電子リソースが提示された後で、指定されたユーザ操作が発生した場合、ブラウザクッキーからのデータは、対話型アイテム配布システム240へ送信され得る。たとえば、アクションが発生した電子リソース(または、アクションが発生した後で提示された電子リソース)は、上述したように、クライアントデバイス210に、アクションの発生を指定するデータと、ブラウザクッキー中に含まれるデータとを送信させるピクセルコードを含み得る。電子リソース中に埋め込まれ得るピクセルコードの例は、「<img src="Tracking Pixel URL" style="display:none">」である。フロントエンドサーバ245は、データを受信し、データを対話データサーバ260へ提供し得る。対話データサーバ260は、受信されたデータに基づいて、対話型アイテムについての、対話データベース254中に記憶された対話データを更新することができる。たとえば、対話データサーバ260は、データを受信したことに応答して、対話型アイテムについての変換レートもしくは変換の数を更新することができ、または変換についてのタイムスタンプおよび他の適切な詳細を記録することができる。ウェブブラウザがブラウザクッキーまたはそのデータを対話型アイテム配布システム240へ送信できるようにするために、ウェブブラウザ214と、ネイティブアプリケーション212のアプリ内ブラウザフレームは、ブラウザクッキーを管理するクッキージャーを共有し得る。
図3は、電子リソースにリンクする対話型アイテムの選択に応答して電子リソースを要求し、提示するときのモバイルデバイス315の例示的スクリーンショット310~312を示すブロック図である。スクリーンショット310の中で、モバイルデバイス315は、ニュース記事をユーザへ提供するニュースアプリ320を提示している。例示的ニュースアプリ320は、ニュースコンテンツ324(たとえば、ニュース記事)および対話型アイテム322を提示する。例示的な対話型アイテム322は、対話型アイテム322に関連した電子リソースへのリンクを含み(またはそうでなければ、リンクに関連付けられ)得る。たとえば、対話型アイテム322は、対話型アイテム中で図解または記述される製品またはサービス用のコンテンツを含むランディングページへのリンクを含み得る。
例示的スクリーンショット311は、ユーザが対話型アイテム322と対話した後のモバイルデバイス315を示す。具体的には、モバイルデバイス315は、ウェブブラウザ330の中で電子リソース332を提示している。たとえば、上述したように、待ち時間削減エンジンが、対話型アイテムの選択に応答して電子リソースを提示するためにウェブブラウザを開くことができる。ウェブブラウザ330は、モバイルデバイス315のディスプレイ上に提示されるアクティブアプリケーションであってよい。モバイルデバイス315は、モバイルデバイス315のユーザにとって不可視なニュースアプリ320を最小化するか、またはバックグラウンドにおいて実行し続けてよい。
ユーザにとって不可視である(たとえば、モバイルデバイスのディスプレイにおいて可視的でない)が、ニュースアプリ320は、クッキーリソースを提示するアプリ内ブラウザフレーム334を含む。たとえば、モバイルデバイス315は、対話型アイテムとのユーザ対話に応答してクッキーリソースを要求し得る。クッキーリソースは、モバイルデバイス315上でブラウザクッキーが記憶され得るように、アプリ内ブラウザフレーム334の中にロードされ得る。アプリ内ブラウザフレーム334は、ニュースアプリ320がモバイルデバイス315のディスプレイ上で可視的であるとき、小さいか、または不可視であり得る。たとえば、アプリ内ブラウザフレーム334は、ピクセルにおいて0×0フレームであってよい。他の実装形態では、たとえば、対話型アイテム322がアプリ内ブラウザフレームの中に提示される場合、クッキーリソースは、対話型アイテム322の代わりに提示され得る。
例示的スクリーンショット312は、ユーザがウェブブラウザ330を閉じた後のモバイルデバイス315を示す。この例では、モバイルデバイス315は、ウェブブラウザが閉じられた後にニュースアプリ320を提示する。ニュースアプリ320は、ユーザが対話型アイテム322と対話する前に提示されたニュースコンテンツ324および対話型アイテム322を再度提示する。または、ニュースアプリ320は、異なる対話型アイテムを提示し得る。
さらに、待ち時間削減エンジンは、ウェブブラウザ330が閉じられたことに応答して、またはユーザがニュースアプリ320に戻ったことに応答して、アプリ内ブラウザフレーム334を削除することができる。たとえば、待ち時間削減エンジンは、ニュースアプリ320がモバイルデバイス315のディスプレイにおいてアクティブに提示されたときを検出するように構成され得る。それに応答して、待ち時間削減エンジンは、ニュースアプリ320に、アプリ内ブラウザフレーム334を削除させてよい。
図4は、電子リソースを提示する際の待ち時間を削減するための例示的プロセスのフローチャート400である。プロセス400の動作は、たとえば、図2の対話型アイテム配布システム240などのデータ処理装置によって実装され得る。プロセス400は、非一時的コンピュータ記憶媒体上に記憶された命令によって実装されてもよく、データ処理装置による命令の実行が、データ処理装置にプロセス400の動作を実施させる。
対話型アイテムとの対話が検出される(402)。たとえば、対話型アイテムは、クライアントデバイス上で実行しているネイティブアプリケーション内に提示され得る。ユーザが、対話型アイテムを選択することによって、対話型アイテムと対話し得る。対話型アイテムは、ウェブページまたは電子ドキュメントなど、第1の電子リソースへのリンクを含み得る。たとえば、特定の製品向けのコンテンツを含む対話型アイテムは、特定の製品用の追加コンテンツを含むランディングページへのリンクを含み得る。
第1の電子リソースは、発行元に関連付けられた第1のネットワークドメインによって提供され得る。たとえば、第1のネットワークドメインは、発行元のウェブサイトであってよい。この例では、第1の電子リソースへのリンクは、第1の電子リソース用のURLであってよい。
対話型アイテムは、ブラウザクッキーおよびクッキーリソースを提供する第2のネットワークドメインへのリンクも含み得る。たとえば、第2のネットワークドメインは、対話型アイテムを提供し、かつ/または対話型アイテムについての対話データを維持するサードパーティに関連付けられ得る。
第1の処理スレッド(404)および第2の処理スレッド(412)が、対話に応答して実行される。いくつかの実装形態では、第1および第2の処理スレッドは、第1の例示的実装形態について上で説明したように、並行して実行される。いくつかの実装形態では、第2の処理スレッドは、第2の例示的実装形態について上で説明したように、第1の処理スレッドに先立って開始される。
第1の処理スレッドにおいて、第2の電子リソースが第2のネットワークドメインに対して要求される(406)。第2の電子リソースは、クライアントデバイス上でブラウザクッキーを記憶するためのクッキーリソースであってよい。第2の電子リソースを要求するために、待ち時間削減エンジンは、ネイティブアプリケーションに、アプリ内ブラウザフレームを開かせ、第2の電子リソースのURLへナビゲートさせる。それに応答して、アプリ内ブラウザフレームは、URLを使って、第2のネットワークドメインに対して第2の電子リソースを要求し得る。
第2の電子リソースが、クライアントデバイスにおいてロードされる(408)。たとえば、ネイティブアプリケーションは、第2の電子リソースを受信し、第2の電子リソースをアプリ内ブラウザフレームの中にロードし得る。
第2のネットワークドメイン用のブラウザクッキーが、クライアントデバイス上で記憶される(410)。たとえば、第2のネットワークドメインは、第2の電子リソースとともにブラウザクッキーを提供し得る。第2の電子リソースおよびブラウザクッキーは同じドメインから受信されるので、アプリ内ブラウザフレームは、第2の電子リソースがアプリ内ブラウザフレームの中へロードされたとき、ブラウザクッキーを、クライアントデバイス上で記憶されるようにする。
第2の処理スレッド(412)において、第1の電子リソースが第1のネットワークドメインに対して要求される(414)。いくつかの実装形態では、待ち時間削減エンジンは、クライアントデバイスにウェブブラウザを開かせ得る。さらに、待ち時間削減エンジンは、対話型アイテム中に含まれる第1の電子リソースへのリンクを解析することもできる。待ち時間削減エンジンは次いで、ウェブブラウザに、リンクへナビゲートさせ、第1の電子リソースを要求させ得る。
第1の電子リソースが、クライアントデバイスにおいて提示される(416)。たとえば、クライアントデバイスは、第1のネットワークドメインから第1の電子リソースを受信し、ウェブブラウザを使って第1の電子リソースを提示し得る。クライアントデバイスは、ネイティブアプリケーションが最小化されるか、またはクライアントデバイスのバックグラウンドへ送られる間、ウェブブラウザおよび第1の電子リソースがクライアントデバイスのディスプレイ上で提示されるように、ウェブブラウザをアクティブアプリケーションにし得る。
事前指定されたユーザ操作の発生が、第1の電子リソースの提示の後で検出される(418)。いくつかの実装形態では、事前指定されたアクションは、対話型アイテムの中で提示または記述される製品またはサービスの獲得またはダウンロードである。事前指定されたアクションの発生は、事前指定されたアクションの発生に応答してクライアントデバイスへ提供される電子リソースの中に含まれるウェブビーコン(たとえば、ピクセルコード)に基づいて検出され得る。たとえば、ウェブビーコンは、製品またはサービスの獲得またはダウンロードを確認するために、クライアントデバイスへ送信されるトランザクション確認ページの中に含まれ得る。
第2のネットワークドメインから受信されたブラウザクッキーから、データが取得され、クライアントデバイス上で記憶される(420)。たとえば、ウェブビーコンは、電子リソースを提示しているウェブブラウザに、ブラウザクッキーからデータを取得させるコードを含み得る。
事前指定されたユーザ操作の発生を指定するデータおよびブラウザクッキーから取得されたデータが、第2のネットワークドメインへ送信される(422)。たとえば、ウェブビーコンがピクセルコードを含む場合、ピクセルコードは、ピクセルコードをもつ電子リソースを提示しているウェブブラウザに、第2のネットワークドメインに対して画像を要求させることができる。要求の中で、ピクセルコードは、ウェブブラウザに、事前指定されたユーザ操作の発生を指定するデータと、クライアントデバイス上に記憶されたブラウザクッキーの中に含まれるデータとを第2のネットワークドメインへ提供させることもできる。ユーザが、第1の電子リソースを閲覧し、事前指定されたユーザ操作を実施した後にネイティブアプリケーションへ戻った場合、ネイティブアプリケーションのアプリ内ブラウザフレームは削除され得る。
本明細書に記載する主題および動作の実施形態は、デジタル電子回路機構で、または本明細書において開示した構造およびそれらの構造的等価物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアで、またはそれらのうちの1つもしくは複数の、組合せで実装され得る。本明細書において説明される主題の実施形態は、1つまたは複数のコンピュータプログラムとして、すなわち、データ処理装置によって実行するか、またはデータ処理装置の動作を制御するための、コンピュータ記憶媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして、実装することができる。代替または追加として、プログラム命令は、データ処理装置による実行のために、適切な受信機装置への送信用の情報を符号化するように生成される、人工的に生成された伝搬信号、たとえば、機械生成された電気、光学、または電磁信号上で符号化され得る。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の、組合せであるか、またはそれらに含まれてよい。その上、コンピュータ記憶媒体は伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号の中で符号化されたコンピュータプログラム命令のソースまたは宛先であってよい。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理的構成要素または媒体(たとえば、複数のCD、ディスク、または他の記憶デバイス)であっても、それらに含まれてもよい。
本明細書に記載する動作は、1つもしくは複数のコンピュータ可読記憶デバイス上に記憶されるか、または他のソースから受信されたデータに対してデータ処理装置によって実施される動作として実装されてよい。
「データ処理装置」という用語は、例として、プログラム可能プロセッサ、コンピュータ、システムオンチップ、または上記の複数のもの、もしくは組合せを含む、データを処理するための、あらゆる種類の装置、デバイス、および機械を包含する。装置は、特殊目的論理回路機構、たとえば、FPGA(フィールドプログラム可能ゲートアレイ)またはASIC(特定用途向け集積回路)を含み得る。装置は、ハードウェアに加え、問題となっているコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想機械、またはそれらのうちの1つまたは複数の、組合せを構成するコードも含み得る。装置および実行環境は、ウェブサービス、分散コンピューティングおよびグリッドコンピューティングインフラストラクチャなど、異なる様々なコンピューティングモデルインフラストラクチャを実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイル型もしくはインタープリタ型言語、宣言型もしくは手続き型言語を含む、どの形のプログラミング言語で書かれてもよく、スタンドアロンプログラムとして、またはモジュール、構成要素、サブルーチン、オブジェクト、もしくはコンピューティング環境における使用に適した他の単位として、を含む、どの形で展開されてもよい。コンピュータプログラムが、ファイルシステム内のファイルに対応することはできるが、そうする必要はない。プログラムは、他のプログラムもしくはデータ(たとえば、マークアップ言語ドキュメントに記憶された1つもしくは複数のスクリプト)を保持するファイル部分に、問題になっているプログラムに専用の単一のファイルに、または複数の協調ファイル(たとえば、1つもしくは複数のモジュール、サブプログラム、もしくはコードの部分を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つの場所に置かれた1つのコンピュータ上または複数のコンピュータ上で実行されるように展開されても、複数の場所に分散され、通信ネットワークによって相互接続されてもよい。
本明細書に記載するプロセスおよび論理フローは、入力データに対して動作し、出力を生成することによってアクションを実施するための1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラム可能プロセッサによって実施され得る。プロセスおよび論理フローは、特殊目的論理回路機構、たとえば、FPGA(フィールドプログラム可能ゲートアレイ)やASIC(特定用途向け集積回路)によって実施されてもよく、装置は、それらとして実装されてもよい。
コンピュータプログラムの実行に適したプロセッサは、例として、汎用および特殊目的マイクロプロセッサの両方、ならびにどの種類のデジタルコンピュータのどの1つまたは複数のプロセッサも含む。概して、プロセッサは、読取り専用メモリもしくはランダムアクセスメモリまたは両方から、命令およびデータを受信することになる。コンピュータの本質的要素は、命令に従ってアクションを実施するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。概して、コンピュータは、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば、磁気、光磁気ディスク、または光ディスクも含み、あるいは大容量記憶デバイスからデータを受信し、もしくはデータを転送し、または両方を行うように大容量記憶デバイスに動作可能に結合される。ただし、コンピュータは、そのようなデバイスを有する必要はない。その上、コンピュータは、別のデバイス、たとえば、ほんのいくつかの例を挙げれば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に埋め込まれてよい。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイスと、磁気ディスク、たとえば、内部ハードディスクまたは取外し可能ディスクと、光磁気ディスクと、CD-ROMおよびDVD-ROMディスクとを含む、あらゆる形の不揮発性メモリ、媒体およびメモリデバイスを含む。プロセッサおよびメモリは、特殊目的論理回路要素によって補完されても、組み込まれてもよい。
ユーザとの対話を可能にするために、本明細書に記載する主題の実施形態は、ユーザに情報を表示するための表示デバイス、たとえば、CRT(陰極線管)やLCD(液晶ディスプレイ)モニタと、ユーザがコンピュータに入力を与え得るためのキーボードおよびポインティングデバイス、たとえば、マウスやトラックボールとを有するコンピュータ上で実装することができる。他の種類のデバイスも、ユーザとの対話を可能にするのに使われることが可能であり、たとえば、ユーザに与えられるフィードバックは、どの形の感覚フィードバックでも、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであることができ、ユーザからの入力は、音響、発話、または触覚入力を含む、どの形でも受信されることが可能である。さらに、コンピュータは、ユーザによって使われるデバイスへドキュメントを送り、デバイスからドキュメントを受信することによって、たとえば、ウェブブラウザから受信された要求に応答して、ユーザのクライアントデバイス上のウェブブラウザへウェブページを送ることによって、ユーザと対話することができる。
本明細書に記載する主題の実施形態は、バックエンド構成要素を、たとえばデータサーバとして含む、もしくはミドルウェア構成要素、たとえばアプリケーションサーバを含む、もしくはフロントエンド構成要素、たとえば、本明細書に記載する主題の実装形態とユーザが対話することができるためのグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含むコンピューティングシステム、または1つもしくは複数のそのようなバックエンド、ミドルウェア、もしくはフロントエンド構成要素のどの組合せでも実装されることが可能である。システムの構成要素は、どの形または媒体のデジタルデータ通信(たとえば、通信ネットワーク)によっても相互接続されることが可能である。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントとサーバは概して、互いから離れており、通常、通信ネットワークを通して対話する。クライアントとサーバの関係は、それぞれのコンピュータ上で稼動するとともに互いとのクライアント-サーバ関係を有するコンピュータプログラムにより起こる。いくつかの実施形態では、サーバが、データ(たとえば、HTMLページ)をクライアントデバイスへ送信する(たとえば、クライアントデバイスと対話しているユーザに対してデータを表示し、ユーザからユーザ入力を受信する目的で)。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザ対話の結果)が、サーバにおいてクライアントデバイスから受信され得る。
本明細書は、多くの具体的な実装詳細を含むが、これらは、いかなる発明の、または請求され得るものの範囲に対する限定としても解釈されるべきでなく、特定の発明の特定の実施形態に特有な特徴の記述として解釈されるべきである。また、別個の実施形態の文脈において本明細書で説明したいくつかの特徴は、単一の実施形態において組合せで実装され得る。逆に、単一の実施形態の文脈において記載される様々な特徴はまた、複数の実施形態において別々に、またはどの適切な部分組合せでも実装されてよい。さらに、特徴は、いくつかの組合せで働くものとして上記で説明され、初めにそのように請求されることさえあるが、請求される組合せからの1つまたは複数の特徴は、場合によってはその組合せから削除され得、請求される組合せは、部分組合せ、または部分組合せの変形形態を対象とし得る。
同様に、動作は、特定の順序において図面に示されているが、これは、そのような動作が図示された特定の順序において、または順次に実施されることを必要とするか、または、所望の結果を達成するためにすべての示された動作が実施されることを必要とするものと理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。その上、上述した実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、記載したプログラム構成要素およびシステムは概して、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージングされ得ることを理解されたい。
このように、主題の特定の実施形態について記載した。他の実施形態は、以下の特許請求の範囲内である。いくつかのケースでは、請求項に具陳されるアクションは、異なる順序で実施され、依然として望ましい結果を達成し得る。さらに、添付の図面に示されるプロセスは、望ましい結果を達成するのに、図示される特定の順序、または順番を必ずしも求めない。いくつかの実装形態では、マルチタスキングおよび並列処理が有利であり得る。