(58)【調査した分野】(Int.Cl.,DB名)
前記1つまたは複数の機械学習モデルが、前記1つまたは複数のユーザインターフェースにおいてユーザによって実行されるアクションを指定する履歴アクションデータを用いて訓練される、請求項5に記載のクライアントデバイス。
前記1つまたは複数の機械学習モデルが、前記1つまたは複数のユーザインターフェースにおいてユーザによって実行されるアクションを指定する履歴アクションデータを用いて訓練される、請求項14に記載の方法。
前記予測される次のアクションの検出に応答して前記ユーザインターフェースにより提示されることになるデータを、前記予測される次のアクションを検出する前に取得するステップと、
前記データを前記データストレージデバイスに記憶するステップと
をさらに含む、請求項10に記載の方法。
【発明を実施するための形態】
【0019】
一般に、本明細書に記載されたシステムおよび技法は、ユーザがデータを要求する前にデータをプリキャッシュすることによってデータを取得および提示する際のレイテンシを低減させることが可能である。システムは、ユーザがアプリケーションのユーザインターフェース、たとえばモバイルデバイス上で実行するモバイルアプリケーションまたはウェブブラウザにおいて実行するウェブアプリケーションにおいて実行する可能性のある1つまたは複数の予測された次のアクション(たとえば、将来のアクション)を決定することが可能である。予測された次のアクションをユーザが実際に実行し、ユーザがアクションを実行する前にユーザのクライアントデバイスにおいてデータをプリキャッシュする場合、本システムは、ユーザインターフェース(または、アプリケーションがデータを提示するために遷移する別のユーザインターフェース)に提示されるデータを識別することが可能である。
【0020】
本システムは、ユーザインターフェースのコンテキストに基づいて予測された次のアクションを決定することが可能である。たとえば、ユーザは、特定のタイプのデータがユーザインターフェースに提示されているとき、特定のアクションを実行する可能性がより高くてもよい。予測された次のアクションを決定するために使用されるユーザインターフェースコンテキストデータは、たとえば提示されているデータのタイプ、データが属するグループ、データのロールアップレベル、現在提示されているアプリケーションのタブ、ユーザインターフェースのステータス、および/または他の適切なコンテキストデータを含むことが可能である。
【0021】
本システムは、ユーザがユーザインターフェースを閲覧しているアクション、および/または他のユーザが過去に実行したアクションに基づいて、予測された次のアクションを決定することが可能である。たとえば、本システムは、所与のユーザインターフェースにおいて実行することが可能であるアクションのセット(たとえば、ユーザインタラクション)に対して、そのアクションがユーザによって実行された回数を維持することが可能である。本システムはまた、1つまたは複数のユーザインターフェースコンテキストに対して、ユーザインターフェースがユーザインターフェースコンテキストに一致するコンテキストを有する場合に、各アクションが実行された回数を維持することが可能である。たとえば、1つのユーザインターフェースコンテキストは、特定のデータタイプを有する特定のデータのグループの提示によって定義されてもよい。このユーザインターフェースコンテキストでは、本システムは、ユーザインターフェースが特定のデータタイプを有する特定のデータのグループを提示していたときに、各アクションが実行された回数のカウントを維持することが可能である。いくつかの実装形態では、本システムは、予測された次のアクションとして、ユーザインターフェースが特定のデータタイプを有する特定のデータのグループを提示していたときに過去に最も実行されたアクションのうちの1つまたは複数を選択してもよい。
【0022】
いくつかの実装形態では、予測された次のアクションは、現在ユーザインターフェースを提示しているアプリケーションとは異なるアプリケーションを使用してデータを提示することを含んでもよい。この例では、本システムは、予測された次のアクションが実際に実行された場合、アプリケーションをロードする際のレイテンシを低減させるためにクライアントデバイスにおいて異なるアプリケーションをロードするためのコードをプリキャッシュしてもよい。たとえば、本システムは、予測された次のアクションによって必要とされるデータを提示するために他のウェブアプリケーションが使用される場合、クライアントデバイスによって現在提示されているウェブページにおいて別のウェブアプリケーションをロードするために使用されるスクリプトをプリキャッシュしてもよい。これにより、クライアントデバイスは、同じウェブページ内(または、異なるウェブページ内)のウェブアプリケーション間を流動的にかつ不必要な遅延なしに遷移できる。本システムはまた、データを取得するためにクライアントデバイスに課される遅延および不必要な要求を回避するために他のウェブアプリケーションにおいて提示されるデータをプリキャッシュすることが可能である。
【0023】
いくつかの実装形態では、本明細書に記載された技法は、第1のデバイスとは異なる第2のデバイスのユーザインターフェースのコンテキストに基づいて、またはより一般的には、第2のデバイスとのユーザインタラクションに基づいて、第1のデバイスのアプリケーションについてのデータをプリキャッシュするために使用することが可能である。たとえば、ユーザが別のデバイスにおいて実行する可能性のあるアクションを識別し、他のデバイスにおいて識別されたアクションのデータをプリキャッシュするために人工知能(AI)アシスタントとのユーザインタラクション(たとえば、人工知能アシスタントに聞かれる質問、またそれはそれに提供される要求)を使用することが可能である。特定の例では、ユーザは、AIアシスタントに特定の場所の近くの道を走るように頼んでもよい。それに応答して、システムは、ユーザがウェアラブルデバイス(たとえば、スマートウォッチ)またはスマートフォン上のアクティビティ監視アプリケーションにアクセスし、ウェアラブルデバイスまたはスマートフォンにおいてアクティビティ監視アプリケーションのデータをプリキャッシュする可能性が高いと決定することが可能である。
【0024】
デバイス間のアクション予測はまた、スマートカー(たとえば、車載コンピューティング機能を有する自動車)、自律走行車、スマートテレビ、スマート機器、および/または他の適切なスマートデバイスなどの他のデバイスに適用することが可能である。たとえば、本システムは、ユーザが特定のレストランについてAIアシスタントに車載コンピューティングデバイス、車のナビゲーションシステム、または自律走行車のナビゲーションシステムのアプリケーション用の特定のレストランへのナビゲーション命令をプリキャッシュするように頼んだことを指定するデータを使用してもよい。
【0025】
図1は、データ配信システム110がクライアントデバイス150にデータを配信する例示的な環境100である。データ配信システム110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、モバイルネットワーク、またはそれらの組合せなどのデータ通信ネットワーク130を介してクライアントデバイス150にデータを送信することが可能である。クライアントデバイス150は、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、スマートウォッチ、ならびに/または他のタイプのモバイルおよび非モバイルコンピューティングデバイスを含んでもよい。
【0026】
クライアントデバイス150は、1つまたは複数のアプリケーション154を含むことが可能である。たとえば、クライアントデバイスは、1つまたは複数のモバイルアプリケーション(たとえば、モバイルアプリ)を含むことが可能である。モバイルアプリケーションは、特定のタイプのデバイスまたは特定のプラットフォーム用に開発されたネイティブアプリケーションであってよい。アプリケーション154は、ウェブブラウザ内で実行するウェブアプリケーションを含むことが可能である。ウェブアプリケーションは、クライアントデバイス150にダウンロードされ、ウェブアプリケーションを含むウェブページがウェブブラウザにおいて開かれたときにウェブブラウザにおいて実行されるコード、たとえばスクリプトを含んでもよい。
【0027】
各アプリケーション154は、クライアントデバイス150のディスプレイによって提示される1つまたは複数のユーザインターフェース152を生成することが可能である。ユーザインターフェース152は、画像ビデオ、グラフなどのデータおよび他のコンテンツを提示することが可能である。ユーザインターフェース152はまた、ユーザがアプリケーション内(またはアプリケーション外)をナビゲートすること、データを修正すること、データをソートすること、データをフィルタリングすることなど、追加データまたは異なるデータを要求することと、および/あるいは他の適切なアクションを実行することとを可能にするユーザインターフェース要素を含むことが可能である。たとえば、ユーザインターフェース152は、ユーザが表示画面の間をナビゲートすることと、データを修正することと、データをソートすることと、データをフィルタリングすることとを可能にするボタン、アイコン、スライダバー、および他の要素を含んでもよい。ユーザインターフェース152は、異なるデータまたは異なるタイプのデータを提示する複数のタブを含んでもよい。ユーザは、所望のタブを選択することによってタブ間をナビゲートすることが可能である。別の例では、ユーザインターフェースは、ユーザが特定の日付および時間範囲にデータをフィルタリングすることを可能にする日付および時間範囲セレクタを含んでもよい。例示的なユーザインターフェースが
図2に示され、以下で説明される。本明細書の目的のためにユーザインターフェースが一般的に説明される。しかしながら、これらの技法は、クライアントデバイスの状態および/またはクライアントデバイスとの以前のインタラクションなどのクライアントデバイスに関する他のデータに適用することが可能である。さらに、本明細書を通じて使用されるようにユーザインターフェースという用語は、グラフィカルユーザインターフェースに限定されず、可聴ユーザインターフェースおよび他のユーザインターフェースを含むことが可能である。
【0028】
アプリケーション154は、データ配信システム110から受信したデータをユーザインターフェース152に提示することが可能である。データ配信システム110は、1つまたは複数のアプリケーション154のデータを維持し、クライアントデバイス150から受信した要求に応じてアプリケーション154にデータを提供することが可能である。たとえば、クライアントデバイス150がアプリケーション154をロードする場合、アプリケーション154は、ネットワーク130を介してデータ配信システム110に要求を送信することが可能である。要求は、アプリケーション154によって提示されるデータを指定することが可能である。さらに、ユーザは、追加データまたは異なるデータを要求するためにアプリケーション154によって生成され提示されたユーザインターフェース152を使用することが可能である。次に、アプリケーション154は、データ配信システム110にデータを要求することが可能である。
【0029】
クライアントデバイス150はまた、高速キャッシュ156を含む。高速キャッシュ156は、クライアントデバイス150にインストールされた1つまたは複数の高速メモリデバイスを含むことが可能である。たとえば、高速キャッシュ156は、スタティックランダムアクセスメモリ(SRAM)および/またはソリッドステートメモリデバイスを含むことが可能である。クライアントデバイス150はまた、ハードドライブ、フラッシュメモリなどの他のメモリストレージデバイスを含むことが可能である。
【0030】
高速キャッシュ156は、クライアントデバイス150のユーザによってまだ要求されていないデータを含むアプリケーション154のためのデータを記憶することが可能である。たとえば、アプリケーション154(または、別の専用アプリケーション)は、ユーザが実行する可能性のある1つまたは複数の予測された次のアクションを決定することが可能である。予測された次のアクションは、ユーザによって実行される少なくとも1つのしきい値確率を有するアクションであってもよい。アプリケーション154はまた、ユーザが予測された次のアクションを実行する場合に提示されるデータをデータ配信システム110に要求することが可能である。アプリケーション154は、ユーザが予測された次のアクションを実行する前に、また人間の介入なしにこの要求を送信することが可能である。たとえば、アプリケーション154は、トリガイベント(たとえば、日付および時間範囲セレクタの選択)に応答して予測された次のアクションを自動的に決定し、予測された次のアクションの決定に応じてデータを要求することが可能である。アプリケーション154がデータを受信すると、アプリケーション154は、ユーザが予測された次のアクションを後で実行する場合、データが迅速に提示されるように受信したデータを高速キャッシュ156に記憶することが可能である。
【0031】
いくつかの実装形態では、予測された次のアクションのために受信されたデータは、ハードドライブ、フラッシュメモリ、または高速キャッシュ156とは異なる他のメモリストレージデバイスに記憶されてもよい。そのようなメモリを使用することは、高速キャッシュ156を使用する場合ほど高速ではない場合があるが、ユーザが予測された次のアクションを実行した後にネットワーク130を介してデータを要求する際のレイテンシは、依然として排除または低減される。
【0032】
アプリケーション154は、ユーザに対する予測された次のアクションを決定するために次のアクションモデル158を使用することが可能である。いくつかの実装形態では、次のアクションモデル158はアプリケーション特有である。たとえば、アプリケーション154は、アプリケーション154のユーザインターフェース152が提示されているユーザに対する予測された次のアクションを決定する、対応する次のアクションモデル158を有してもよい。別の例では、アプリケーション154は、ユーザインターフェース152ごとの、またはアプリケーション154によって生成され提示されたユーザインターフェース152のセットに対する、それぞれの次のアクションモデル158を有してもよい。この例では、次のアクションモデルのそれぞれのユーザインターフェースが提示されるユーザに対する予測された次のアクションを決定するために次のアクションモデル154が使用されてもよい。
【0033】
いくつかの実装形態では、アプリケーション154は、ユーザ特有の次のアクションモデル158を有することが可能である。アプリケーション154のユーザ特有の次のアクションモデルは、特定のユーザがアプリケーション154の1つまたは複数のユーザインターフェースにおいて実行する可能性のある予測された次のアクションを決定するために使用することが可能である。アプリケーション154はまた、複数のユーザに対する予測された次のアクションを決定するために使用される一般的な次のアクションモデルを有してもよい。以下でより詳細に説明されるようにアプリケーション154は、ユーザがアプリケーション154のユーザインターフェースにおいて実行したアクションの数に基づいて、特定のユーザのユーザ特有モデルと一般モデルとの間で選択してもよい。
【0034】
アプリケーション154に対する次のアクションモデル158は、アプリケーション154のユーザインターフェース152において実行することが可能であるアクションのセット内のアクションごとにアクションが実行される確率を指定することが可能である。たとえば、次のアクションモデル158は、第1のアクションがユーザインターフェース152において実行される確率が50%であり、第2のアクションがユーザインターフェース152において実行される確率が45%であることを指定してもよい。この例では、アプリケーション154は、予測された次のアクションとして最も高い確率を有する次のアクションのうちの1つまたは複数を選択してもよい。以下でより詳細に説明されるようにアプリケーション154に対する次のアクションモデル158によって指定される確率は、アプリケーション154のユーザインターフェースにおいて実行された以前のアクションに基づいてもよい。
【0035】
アプリケーションのための次のアクションモデル158は、ユーザに提示されているユーザインターフェースのコンテキストに基づいて、予測された次のアクションを決定するために使用することが可能である。ユーザインターフェースコンテキストは、ユーザインターフェースの1つまたは複数の属性のセットによって定義することが可能である。たとえば、ユーザインターフェースコンテキストは、提示されているデータのタイプ(たとえば、パフォーマンスデータ、履歴データ、アカウントデータ、コンテンツアイテム配信基準)、データが属するグループ(たとえば、データが属するアカウント)、データの特徴(たとえば、データが属するアカウントのサイズ)、データのロールアップレベル、現在提示されているアプリケーションのタブ、ユーザインターフェースのステータスなどの属性、および/あるいはユーザインターフェースによって提示されているユーザインターフェースまたはデータの他の適切な属性によって定義されてもよい。データのロールアップレベルは、データが集約される階層レベルを指定することが可能である。たとえば、イベントの反復ごとにパフォーマンスデータを取得することが可能である。このパフォーマンスデータは、1日ごとの合計、週ごとの合計、月ごとの合計などで集計することが可能である。この例では、月ごとの合計は週ごとの合計よりも高いロールアップレベルになり、週ごとの合計は1日ごとの合計よりも高いロールアップレベルになる。
【0036】
別の例では、複数の異なる階層レベルで統計を集約することが可能である。たとえば、サッカー選手の統計は、試合レベル、シーズンレベル、およびキャリアレベルで集計することが可能である。この例では、キャリアレベルはシーズンレベルよりも高いロールアップレベルになり、シーズンレベルは試合レベルよりも高いロールアップレベルになる。
【0037】
アプリケーション154のための次のアクションモデル158は、ユーザインターフェースコンテキスト(たとえば、ユーザインターフェースの1つまたは複数の属性の各セット)ごとに、アクションのセットの各々が実行される確率を指定することが可能である。アプリケーション154が予測された次のアクションを決定するために次のアクションモデルを使用するとき、アプリケーション154は、ユーザに現在提示されているユーザインターフェースの属性と、適切な次のアクションモデル158(たとえば、ユーザおよび/またはユーザインターフェースの次のアクションモデル、あるいは複数のユーザおよび/またはユーザインターフェースのための一般的な次のアクションモデル)のユーザインターフェースコンテキストの属性とを比較することが可能である。アプリケーション154は、次のアクションモデル154によって指定されるアクションの確率を評価し、その確率に基づいて予測された次のアクションとしてアクションのうちの1つまたは複数(たとえば、最も高い確率を有する上位N個のアクション)を選択することが可能である。次いで、アプリケーション154は、ユーザが予測された次のアクションを実行する場合、アプリケーション154(または、別のアプリケーション)によって提示されるデータをデータ配信システム110に要求することが可能である。データがデータ配信システム110から受信されると、アプリケーション154は高速キャッシュ156にデータを記憶することが可能である。
【0038】
現在のユーザインターフェースの属性が次のアクションモデル158のユーザインターフェースコンテキストの属性と一致しない場合、アプリケーション154は、現在のユーザインターフェースに最も類似するユーザインターフェースコンテキストを選択してもよい。たとえば、アプリケーション154は、現在のユーザインターフェースとユーザインターフェースコンテキストとの間で一致する属性の数が最も多いユーザインターフェースコンテキストを選択してもよい。
【0039】
いくつかの実装形態では、アプリケーション154の次のアクションモデル158は、機械学習技法を使用して訓練された予測モデルを含んでもよい。たとえば、次のアクションモデル158は、ユーザインターフェースの特徴(たとえば、属性)と、ユーザインターフェースが特定のコンテキストを有していたときにユーザによって実行されたアクションを指定する履歴アクションデータとを使用して訓練されてもよい。ユーザに提示されているユーザインターフェースの属性は、予測モデルに適用することが可能であり、予測モデルは、アクションのセットごとに確率を出力することが可能である。次いで、アプリケーション154は、確率に基づいて予測された次のアクションを選択することが可能である。
【0040】
いくつかの実装形態では、予測モデルは、クライアントデバイス150において予測された次のアクションと確率との間のマッピングに変換されてもよい。各マッピングは、それぞれの予測された次のアクションと、所与のユーザインターフェースコンテキストに対して発生するそれぞれの予測された次のアクションの確率との間のマッピングとすることが可能である。このようにして、アプリケーション154は、アプリケーション154がユーザインターフェースの属性を予測モデルに適用しなければならない場合よりも、マッピングにおける確率をより迅速に調べることが可能である。
【0041】
いくつかの実装形態では、次のアクションモデル158は、ユーザによって実行された場合、アクションが実行されるアプリケーションとは異なる別のアプリケーションをクライアントデバイス150にロードさせる次のアクションを決定してもよい。たとえば、ユーザは、ウェブブラウザにおいて実行している第1のウェブアプリケーション内のアカウントデータの要約を閲覧していてもよい。第2のウェブアプリケーションを使用して提示されるより詳細なデータを閲覧するためにユーザは、ウェブブラウザに第2のウェブアプリケーションが実行される異なるウェブページにナビゲートさせるナビゲーションボタンを選択してもよい。別の例では、ユーザインターフェースの選択は、ウェブブラウザに同じウェブページ内に異なるウェブアプリケーションをロードさせてもよい。
【0042】
次のアクションモデル158を使用して決定された次のアクションがクライアントデバイス150に別のアプリケーションをロードさせる場合、アプリケーション154は、他のアプリケーションのコードを要求してもよく、クライアントデバイス150にクライアントデバイスのバックグラウンドに他のアプリケーションをロードさせてもよい。たとえば、他のアプリケーションがウェブアプリケーションである場合、ウェブアプリケーションのコードを取得し、高速キャッシュ156に記憶することが可能である。他のアプリケーションがモバイルアプリケーションである場合、モバイルアプリケーションをクライアントデバイス150のバックグラウンドにロードすることが可能である。アプリケーション154はまた、予測された次のアクションが実行された場合に提示されるデータを要求することが可能である。このデータも高速キャッシュ156に記憶することが可能である。ユーザが予測された次のアクションを実行する前にアプリケーションをロードし(または、アプリケーションをロードするためのコードを取得し)かつデータを取得することによってアプリケーションをロード(または、提示)することが可能であり、予測された次のアクションが実行されるまでクライアントデバイス150が待機した場合よりも速くデータを提示することが可能である。
【0043】
いくつかの実装形態では、アプリケーション154は、ユーザインターフェース152において実行することが可能であるアクションのタイプごとに別個の次のアクションモデル158を含むことが可能である。たとえば、アプリケーション154は、アプリケーション154に新しいタブまたはページにナビゲートさせる場所変更アクションのための次のアクションモデルと、ユーザインターフェースにおいて提示されているデータの範囲を変更する範囲変更アクション(たとえば、フィルタリングまたはロールアップのレベル変更)のための別の次のアクションモデルとを含むことが可能である。適切な次のアクションモデルをアクションのタイプのトリガイベントに基づいて選択することが可能である。たとえば、アプリケーション154は、ユーザの日付および時間範囲セレクタユーザインターフェース要素の選択に応答してユーザが選択する可能性が高い日付および時間の範囲を予測するために範囲変更モデルを使用してもよい。いくつかの実装形態では、アプリケーション154は、複数の予測された次のアクションを決定し、ユーザがアクションを実行する前に、複数の予測された次のアクションごとにデータを取得して高速キャッシュ156に記憶するために複数の次のアクションモデルを使用してもよい。たとえば、アプリケーション154は、予測された次の場所変更アクションを決定するために場所変更の次のアクションモデルを使用してもよく、予測された次の範囲変更アクションを決定するために範囲変更の次のアクションモデルを使用してもよい。次いで、アプリケーション154は、予測された次のアクションの両方のデータを取得して高速キャッシュ156に記憶することが可能である。
【0044】
データ配信システム110は、データの要求を受信し、その要求に応じてデータを提供するフロントエンドサーバ112を含む。たとえば、フロントエンドサーバ112は、クライアントデバイス150のアプリケーション154からデータの要求を受信してもよい。要求は、次のアクションモデル158を使用して決定された予測された次のアクションに基づいて、次のアクションデータの要求を含むことが可能である。
【0045】
フロントエンドサーバ112は、要求をデータ管理サーバ116に提供することが可能である。データ管理サーバ116は、アプリケーションデータストレージデバイス124(たとえば、ハードドライブ、フラッシュメモリなど)から適切なデータを取得し、そのデータをフロントエンドサーバ112に提供することが可能である。次に、フロントエンドサーバ112は、データ通信ネットワーク130を介して要求を受信したクライアントデバイス150にデータを送信することが可能である。
【0046】
データ管理サーバ116は、クライアントデバイス150のアプリケーション154などのアプリケーション用のデータを管理することが可能である。データ管理サーバ116は、アプリケーション開発者から、アプリケーションによって表示されるデータを集約するサーバから、または他のソースからデータを受信し、そのデータをアプリケーションデータストレージデバイス124に記憶してもよい。
【0047】
データ配信システム110は、次のアクション予測サーバ114も含む。次のアクション予測サーバ114は、次のアクションモデル158を生成することと、次のアクションモデル158を更新することと、次のアクションモデル158のパフォーマンスを監視することと、および/またはアプリケーション154に対する予測された次のアクションを決定することとを行うことが可能である。
【0048】
次のアクション予測サーバ114は、アクションデータストレージデバイス120に記憶されたアクションデータに基づいて次のアクションモデルを生成することが可能である。アクションデータは、アプリケーション154の特定のユーザインターフェース152について、ユーザインターフェース152において実行されたアクションを指定することが可能である。アクションデータはまた、アクションが発生したときにユーザインターフェース152のコンテキスト指定することが可能である。たとえば、アクションデータは、アプリケーション154のユーザインターフェース152において実行される(潜在的なアクションのセットの)アクションごとに、アクションが実行されたときに提示されたユーザインターフェースを識別するデータと、アクションが実行されたときのユーザインターフェースの1つまたは複数の属性とを含むことが可能である。上述したように属性は、提示されているデータのタイプ、データが属するグループ、データの特徴、データのロールアップレベル、現在提示されているアプリケーションのタブ、ユーザインターフェースのステータス、および/またはユーザインターフェースによって提示されているユーザインターフェースまたはデータの他の適切な属性を含むことが可能である。アクションデータはまた、アプリケーションのユーザインターフェース152において実行されるアクションごとに、アクションが実行された時刻および/またはアクションを実行したユーザの一意の匿名の識別子を含むことが可能である。
【0049】
アプリケーション154は、アプリケーション154のユーザインターフェース152において実行されるアクションの検出に応答して、アクションデータをフロントエンドサーバ112に送信するように構成することが可能である。たとえば、特定のデータのセットを特定の日付および時間範囲にフィルタリングするためにユーザがアプリケーションのユーザインターフェース152のフィルタリング要素を使用する場合、アプリケーション154は、ユーザに対するフィルタリングを実行し、フィルタリングされたデータをユーザインターフェース152に提示することが可能である。アプリケーション154はまた、たとえば日付および時間範囲、特定のデータのセットの属性(たとえば、データが属するグループ、データのタイプ、データが属するアカウントなど)、アクションが実行されたユーザインターフェース152の属性、アクションが実行された時刻、およびユーザまたはユーザデバイス150の一意の識別子を指定するアクションデータをフロントエンドサーバ112に送信することが可能である。フロントエンドサーバ112は、アクションデータを次のアクション予測サーバ114に送信することが可能であり、次のアクション予測サーバ114は、アクションデータストレージデバイス120にアクションデータを記憶することが可能である。アプリケーション154は、アクションが実行された後に、および/または定期的に、アクションごとのアクションデータを送信することが可能である。
【0050】
次のアクション予測サーバ114は、アプリケーション154に対する1つまたは複数の次のアクションモデル158を生成し、次のアプリケーションモデルを次のアクションモデルのデータストレージデバイス118に記憶することが可能である。アプリケーション154は、アプリケーション154がクライアントデバイス150における予測された次のアクションを決定することが可能であるようにその次のアクションモデル158も含むことが可能である。以下でより詳細に説明されるように次のアクション予測サーバ114は、アプリケーション154の予測された次のアクションを決定するために次のアクションモデル158を使用してもよい。
【0051】
次のアクション予測サーバ114は、アクションデータストレージデバイス120に記憶されたアプリケーション154のアクションデータに基づいて、アプリケーション154の次のアクションモデル158を生成することが可能である。上述したように次のアクションモデル158は、ユーザインターフェースのユーザインターフェースコンテキストに基づいて実行されるアクションの確率を指定することが可能である。この例では、次のアクション予測サーバ114は、ユーザインターフェースコンテキストごとに各アクションが発生した回数に基づいて、アクションの確率を決定することが可能である。たとえば、アプリケーション154のユーザインターフェースが特定のユーザインターフェースコンテキストを有し、ユーザインターフェースが特定のユーザインターフェースコンテキストを有する場合に合計100のアクションがユーザインターフェースにおいて実行されたときに、特定のアクションが10回発生した場合、特定のアクションの確率は10%(10/100)になる場合がある。
【0052】
いくつかの実装形態では、より最近のアクションは、アクションの確率を決定する際により高い重みを与えられる。たとえば、アクションの重みは時間の経過とともに減衰する場合がある。このようにして、より普及しているより最近のアクション(たとえば、特定の期間内により頻繁に発生したアクション)は、アクションが予想される次のアクションである可能性のある高い確率を有することが可能である。いくつかの実装形態では、特定のアクションの確率は、次の関係を使用して受信されている新しいアクションのデータに基づいて更新される。
関係(1) ρ=(1-α)ρ+α
関係(2) ρ=(1-α)ρ
【0053】
この例の場合、(ρ)は特定のアクションが実行される確率であり、(α)は重みの減少の程度である。この例では、特定のアクションが実行された場合、関係(1)を使用して特定のアクションが発生する確率が更新される。特定のアクションが実行されなかった場合、確率は関係(2)を使用して更新される。これらの関係を使用すると、n番目の最新のアクションは(1-α)
nの重みを持つ。
【0054】
上述したようにアプリケーション154は、ユーザ特有の次のアクションモデル158と、複数のユーザに対する一般的な次のアクションモデルとを有することが可能である。特定のユーザのユーザ特有の次のアクションモデルは、特定のユーザのアクションデータを使用して生成および更新されてもよい。一般的な次のアクションモデルは、複数の異なるユーザのアクションデータを使用して生成および更新されてもよい。
【0055】
いくつかの実装形態では、次のアクション予測サーバ114は、次のアクションモデル158に影響を及ぼす新しいアクションデータが受信されるたびに次のアクションモデル158を更新する。次いで、次のアクション予測サーバ114は、更新された次のアクションモデル158をクライアントデバイス150においてアプリケーション154に送信することが可能である。
【0056】
いくつかの実装形態では、次のアクション予測サーバ114は、異なるタイプのアクションに対する次のアクションモデル158を生成する。たとえば、上述したようにアプリケーション154は、異なるタイプのアクションに対する別個の次のアクションモデルを有することが可能である。この例では、次のアクション予測サーバ114は、それらのタイプのアクションに対するアクションデータを使用して、特定のタイプのアクションに対する次のアクションモデルを生成することが可能である。たとえば、次のアクション予測サーバ114は、ユーザインターフェースが特定のコンテキストを有する場合に特定のアクションが実行された回数と、およびユーザインターフェースが特定のコンテキストを有する場合に実行された特定のタイプのアクションの総数とに基づいて、特定のタイプの特定のアクションの確率を決定してもよい。
【0057】
次のアクション予測サーバ114はまた、アクションデータストレージデバイス120に記憶されたアクションデータを使用する機械学習技法を使用して予測モデルを訓練することが可能である。たとえば、次のアクション予測サーバ114は、現在のユーザインターフェースコンテキストに基づいて次のユーザアクションを予測するためにマルコフ連鎖を生成してもよい。マルコフ連鎖は、各アクションの確率が現在のユーザインターフェースの状態(たとえば、コンテキスト)に依存する、可能性のあるアクションのシーケンスを使用するモデルである。
【0058】
いくつかの実装形態では、次のアクション予測サーバ114は、アプリケーションのユーザの予測された次のアクションを決定するために次のアクションモデル158を使用する。たとえば、アプリケーション154は、ユーザインターフェースコンテキストを決定し(たとえば、ユーザインターフェース152の1つまたは複数の属性を識別し)、次のアクションデータの要求をフロントエンドサーバ112に送信してもよい。要求は、ユーザインターフェースコンテキストの1つまたは複数の属性を含むことが可能である。次のアクション予測サーバ114は、ユーザインターフェースコンテキストに基づいて1つまたは複数の予測された次のアクションを決定するために次のアクションモデルデータストレージデバイス118から適切な次のアクションモデル158を識別し、次のアクションモデル158を使用することが可能である。たとえば、次のアクション予測サーバ114は、アプリケーション154に対する次のアクションモデル158を識別することが可能である。アプリケーション154がユーザ特有の次のアクションモデルを有する場合、次のアクション予測サーバ114は、要求が受信されたクライアントデバイス150のアプリケーションおよびユーザに対する次のアクションモデルを識別することが可能である。
【0059】
次のアクション予測サーバ114は、予測された次のアクションを指定するデータをデータ管理サーバ116に提供することが可能である。データ管理サーバ116は、ユーザが予測された次のアクションを実行し、そのデータをフロントエンドサーバ112に提供する場合、クライアントデバイス150において提示されるデータを識別することが可能である。次に、フロントエンドサーバ112は、クライアントデバイス150にデータを提供することが可能であり、クライアントデバイス150は、高速キャッシュ156にデータを記憶することが可能である。
【0060】
次のアクション予測サーバ114はまた、次のアクションモデルのパフォーマンスメトリックを維持し、パフォーマンスメトリックをパフォーマンスデータストレージデバイス122に記憶することが可能である。次のアクションモデルのメトリックは、次のアクションモデルの予測精度、次のアクションモデルのキャッシュヒット率、および/または次のアクションモデルのユーザアクションレイテンシを含むことが可能である。次のアクションモデルの予測精度は、次のアクションモデルが、ユーザがその後に実行したアクションを予測した回数と、次のアクションモデルによって行われた予測の総数との比に基づくことが可能である。次のアクションモデルのキャッシュヒット率は、予測された次のアクションを決定するために次のアクションモデルが使用されたユーザアクションに応答するために必要なデータが高速キャッシュ158内で見つかった回数と、予測された次のアクションを決定するために次のアクションモデルが使用されたユーザアクションに応答してデータが要求された総回数との間の比に基づくことが可能である。ユーザアクションレイテンシは、ユーザによって知覚されたアクションのレイテンシを示すことが可能である。たとえば、ユーザアクションレイテンシは、ユーザがアクションを実行する(たとえば、タブを選択するか、またはフィルタリング基準を提出する)時間から、新しいまたは更新されたデータがクライアントデバイス150においてレンダリングされる時間までのレイテンシを示すことが可能である。この時間は、次のアクションモデルの総ユーザアクションレイテンシを決定するために次のアクションモデルの複数の使用のために測定および集約(たとえば、平均化)することが可能である。
【0061】
図2は、データが提示される例示的なユーザインターフェース200を示す。例示的なユーザインターフェース200は、ウェブブラウザに提示されているものとして示される。ユーザインターフェース200はまた、モバイルアプリケーションに提示することが可能である。
【0062】
ユーザインターフェース200は、ユーザが、提示のためのデータのグループ、たとえば特定のキャンペーンまたはアカウントを選択することを可能にするグループメニュー210を含む。たとえば、ユーザは、マウスを使用してグループをクリックするか、グループの場所においてタッチスクリーンデバイスをタッチすることによってグループを選択することが可能である。グループの選択は、ユーザインターフェース200を生成し提示するアプリケーションのための次のアクションモデルによって予測される次のアクションとすることが可能である。さらに、データが提示されるグループは、ユーザインターフェース200のユーザインターフェースコンテキストを定義する属性とすることが可能である。たとえば、グループ2のデータを閲覧するユーザは通常、特定のタイプのデータを閲覧してもよい。この例では、グループ2のデータが提示されているとき、予測された次のアクションが特定のタイプのデータの選択であることを決定するために次のアクションモデルが使用されてもよく、アプリケーションは、グループ2の特定のタイプのデータをプリキャッシュしてもよい。
【0063】
ユーザインターフェース200はまた、ユーザが提示されるグループのデータのタイプを選択することを可能にするデータタイプメニュー215を含む。選択されたデータタイプのデータおよび選択されたグループのデータは表示領域205に提示される。上述したようにデータタイプの選択は、次のアクションモデルを使用して予測される次のアクションであってもよい。提示されるデータのタイプはまた、ユーザインターフェース200のユーザインターフェースコンテキストを定義する属性とすることが可能である。
【0064】
ユーザインターフェース200はまた、ユーザが、表示領域205に提示されるデータの日付および時間範囲を選択することを可能にする日付および時間範囲セレクタ220を含む。この例では、選択した日付および時間範囲は2016年11月1日〜2016年11月30日である。表示領域205に提示されるデータは、選択された日付および時間範囲に関連するデータのみが提示されるようにフィルタリングされてもよい。ユーザインターフェース200は、データの値または他のフィルタリング基準に基づいてフィルタリングするためのフィルタリング要素などの他のフィルタリング要素を含むことが可能である。
【0065】
特定の(または関連のある)日付および時間範囲の選択は、次のアクションモデルによって決定される次のアクションであってもよい。たとえば、ユーザはしばしば、特定のタイプのデータを閲覧するときに、前月のデータを閲覧する場合がある。この例では、特定のタイプのデータは、次のアクションは前月のデータの選択であることを次のアクションモデルが予測することを可能にするユーザインターフェースコンテキストの属性である。それに応答して、アプリケーションは、たとえば選択されたグループのために特定のデータタイプの前月のデータをプリキャッシュすることが可能である。さらに、日付および時間範囲セレクタ220の選択は、アプリケーションに予測された次のアクションを決定させるトリガイベントであってもよい。たとえば、アプリケーションは、日付および時間範囲セレクタ220が選択された時点で提示されているデータのグループおよびデータタイプを考慮して、どの次のアクションが最も高い確率を有するかを決定するために次のアクションモデルにアクセスし、次のアクションモデルを使用してもよい。このようにして、ユーザが日付および時間範囲セレクタ220を使用して所望の日付および時間範囲を指定している間にデータをプリキャッシュすることが可能である。
【0066】
別のトリガイベントは、ユーザによって入力されたカスタム日付および時間であってもよい。たとえば、ユーザインターフェース要素は、ユーザが、カスタム日付および時間を指定し、カスタム日付および時間に基づいてデータをフィルタリングするために何らかのボタンを選択することを可能にしてもよい。この例では、アプリケーションは、予測された次のアクションは、ユーザが、データをフィルタリングするためにボタンを選択することであると決定することが可能である。それに応答して、アプリケーションは、ユーザがボタンを選択する前に、入力された日付および時間のデータの要求を送信することが可能である。
【0067】
ユーザインターフェース200はまた、ユーザが、表示領域205に提示されたデータの時間ベースのロールアップレベルを選択することを可能にするロールアップレベルセレクタ225を含む。たとえば、ロールアップレベルセレクタ225は、1日ごとのデータ、月ごとのデータ、または年ごとのデータが表示領域205に提示されることを可能にしてもよい。特定のロールアップレベルの選択は、次のアクションモデルを使用して決定される予測された次のアクションであってもよい。たとえば、ユーザは通常、日付および時間範囲が少なくとも1カ月であるが3カ月未満である場合、1日ごとのデータを閲覧してもよい。この例では、選択された日付および時間範囲は、ユーザが実行する可能性が高い予測されたアクションが1日ごとのロールアップレベルの選択であることを決定するために次のアクションモデルが使用されることを可能にするユーザインターフェースコンテキストの属性である。
【0068】
アプリケーションは、選択されたグループ、選択されたデータタイプ、選択された日付および時間範囲、ならびに選択されたロールアップレベルのうちの1つまたは複数に基づいて、予測された次のアクションを決定するために次のアクションモデルを使用してもよい。ユーザがユーザインターフェースにおいて異なる選択を行うと、ユーザが予測された次のアクションを実行する前にユーザが予測された次のアクションを実行する場合、後続の予測される次のアクションを決定し、ユーザがユーザインターフェース200に提示されるデータをプリキャッシュするためにアプリケーションは、更新されたユーザインターフェースコンテキストおよび次のアクションモデルを使用することが可能である。
【0069】
図3は、予測された次のアクションを決定し、予測された次のアクションに対する次のアクションデータをプリキャッシュするための例示的なプロセス300のフローチャートである。プロセス300の動作は、たとえば
図1のクライアントデバイス150などの1つまたは複数のデータ処理装置を含むシステムによって実装することが可能である。プロセス300はまた、コンピュータ記憶媒体に記憶された命令によって実装することが可能であり、データ処理装置を含むシステムによる命令の実行は、データ処理装置にプロセス300の動作を実行させる。
【0070】
本システムは、提示されているユーザインターフェースのユーザインターフェースコンテキストを決定する(302)。たとえば、ユーザインターフェースは、アプリケーション(たとえば、ウェブアプリケーションまたはモバイルアプリケーション)によって生成され提示されてもよい。ユーザインターフェースコンテキストは、提示されているデータのタイプ、データが属するグループ、データの特徴、データのロールアップレベル、現在提示されているアプリケーションのタブ、ユーザインターフェースのステータスなどのユーザインターフェースの1つまたは複数の属性、および/あるいはユーザインターフェースによって提示されるユーザインターフェースまたはデータの他の適切な属性によって定義されてもよい。
【0071】
本システムは、ユーザインターフェースコンテキストに基づいて予測されたユーザアクションを決定する(304)。予測されたユーザアクションは、アプリケーションのユーザがユーザインターフェースコンテキストに基づいてユーザインターフェースにおいて実行する可能性のあるアクションであってもよい。たとえば、予測されたユーザアクションは、ユーザによって実行される少なくとも1つのしきい値確率を有するアクションであってもよい。別の例では、予測されたユーザアクションは、ユーザインターフェースにおいて実行することが可能である複数の可能なユーザアクションの中で最も高い確率を有するユーザアクションであってもよい。
【0072】
いくつかの実装形態では、本システムは、予測された次のアクションを決定するために次のアクションモデルを使用する。たとえば、次のアクションモデルは、アクションセットのアクションごとに、ユーザインターフェースコンテキストに基づいてアクションが実行される確率を指定してもよい。特定の例では、次のアクションモデルは、ユーザインターフェースが特定のタブとは異なる第2のタブの提示を含み、また特定のデータのグループを含むコンテキストを有する場合、特定のタブにナビゲートするユーザアクションは10%の確率を有すると指定してもよい。次のアクションモデルはまた、ユーザインターフェースが、異なるデータのグループを含む第3のタブの提示を含むコンテキストを有する場合、特定のタブにナビゲートするユーザアクションが20%の確率を有すると指定してもよい。
【0073】
いくつかの実装形態では、本システムは、データをプリキャッシュするための複数の予測された次のアクションを選択してもよい。たとえば、複数の予測された次のアクションは、ユーザによって実行される少なくとも1つのしきい値確率を有してもよい。別の例では、本システムは、最も高い確率を有する指定された数のアクションを選択してもよい。このように本システムは、ユーザがアクションを実行する前に、ユーザのためにデータを取得し、プリキャッシュする可能性がより高い。
【0074】
本システムは、データ通信ネットワークを介して、ユーザが予測された次のアクションを実行することに応答して提示される次のアクションデータの要求を送信する(306)。本システムは、
図1のデータ配信システム110などのデータ配信システムに要求を送信してもよい。たとえば、本システムは、ユーザが予測された次のアクションを実際に実行した場合にシステムが要求するデータを指定する要求を送信してもよい。別の例では、本システムは、ユーザが予測された次のアクションを実行することに応答して提示されるデータではなく、またはそれに加えてアクションを指定する要求を送信してもよい。この例では、データ配信システム110は、予測された次のアクションに基づいて適切なデータを識別することが可能である。
【0075】
本システムは、データ通信ネットワークを介して次のアクションデータを受信する(308)。たとえば、本システムは、
図1のデータ配信システム110からデータを受信してもよい。
【0076】
本システムは、次のアクションデータをシステムのキャッシュに記憶する(310)。たとえば、本システムは、本システムが次のアクションデータを記憶する高速キャッシュ、または本システムにとってローカルな他のメモリストレージを含んでもよい。ローカルメモリに次のアクションデータを記憶することによってシステムがネットワークを横切る要求、および次のアクションデータが到着することを待つ必要がないので、ユーザが予測された次のアクションを実際に実行する場合、次のアクションデータをより迅速に提示することが可能である。
【0077】
本システムは、ユーザインターフェースにおいて予測された次のアクションの発生を検出する(312)。たとえば、ユーザインターフェースは、システムによって実行されているアプリケーションによって提示されてもよい。アプリケーションは、ユーザインタラクションの検出に応答して、ユーザインターフェースとのユーザインタラクションを監視し、たとえばデータを更新する、異なるタブにナビゲートするなどのアクションを実行することが可能である。
【0078】
本システムは、予測された次のアクションの発生を検出することに応答して、キャッシュから次のアクションデータを取得する(314)。たとえば、本システムは、ネットワークを介して別の要求を送信することなしにシステムのキャッシュから次のアクションデータを取得してもよい。
【0079】
本システムは、次のアクションデータを提示するためにユーザインターフェースを更新する(316)。たとえば、予測された次のアクションが異なるタブにナビゲートすることであり、ユーザが異なるタブを選択した場合、本システムは、ユーザインターフェースを異なるタブにナビゲートし、異なるタブ内の次のアクションデータを提示してもよい。別の例では、予測された次のアクションが特定の日付および時間範囲にデータをフィルタリングすることである場合、本システムは、フィルタリングされたデータをユーザインターフェースに提示してもよい。
【0080】
図4は、予測された次のアクションを決定し、予測された次のアクションに対する次のアクションデータをプリキャッシュするための例示的なプロセス400のフローチャートである。プロセス400の動作は、たとえば
図1のデータ配信システム110などの1つまたは複数のデータ処理装置を含むシステムによって実装することが可能である。プロセス400はまた、コンピュータ記憶媒体に記憶された命令によって実装することが可能であり、データ処理装置を含むシステムによる命令の実行は、データ処理装置にプロセス400の動作を実行させる。
【0081】
本システムは、クライアントデバイスに次のアクションデータの要求を受信する(402)。たとえば、本システムは、クライアントデバイス上で実行中のアプリケーションによって生成されたユーザインターフェースを提示しているクライアントデバイスから要求を受信してもよい。クライアントデバイスは、たとえばトリガイベントの検出に応答して、データ通信ネットワークを介してシステムに要求を送信してもよい。トリガイベントは、フィルタユーザインターフェース要素(たとえば、日付および時間範囲セレクタ)、ロールアップレベルのユーザインターフェース要素、アドレスバーを選択すること、データ上のポインタ(たとえば、カーソル)をホバリングすること、または別の適切なイベントを含んでもよい。
【0082】
別の例では、クライアントデバイスは、トリガイベントを検出することなしに要求を送信してもよい。たとえば、クライアントデバイスは、ユーザインターフェースが更新されるたびに要求を送信してもよい。この例では、クライアントデバイスは、ユーザが閲覧するユーザインターフェースごとに予測された次のアクションを決定することによってユーザの一歩先にとどまることを試みることが可能である。
【0083】
要求は、ユーザインターフェースコンテキストを定義するユーザインターフェースコンテキストデータを含むことが可能である。たとえば、要求は、ユーザに提示されているユーザインターフェースの1つまたは複数の属性を指定するデータを含むことが可能である。
【0084】
本システムは、ユーザインターフェースコンテキストデータに基づいて、クライアントデバイスのユーザがユーザインターフェースにおいて実行する予測された次のアクションを決定する(404)。たとえば、上述したように本システムは、ユーザインターフェースコンテキストデータに基づいてユーザのための1つまたは複数の予測された次のアクションを決定するために次のアクションモデルを使用することが可能である。
【0085】
本システムは、予測された次のアクションの次のアクションデータを識別する(406)。予測された次のアクションのための次のアクションデータは、ユーザが予測された次のアクションを実際に実行した場合にクライアントデバイスによって提示されるデータを含む。
【0086】
本システムは、次のアクションデータをクライアントデバイスに提供して、クライアントデバイスのキャッシュに記憶する(408)。クライアントデバイスは、次のアクションデータをキャッシュに記憶することが可能である。クライアントデバイスが、予測された次のアクションが実行されたことを検出した場合、クライアントデバイスは、キャッシュからデータを取得し、そのデータをユーザに提示することが可能である。
【0087】
図5は、予測された次のアクションを決定するために使用される予測モデルのパフォーマンスメトリックを維持するための例示的なプロセス500のフローチャートである。プロセス500の動作は、たとえば
図1のデータ配信システム110などの1つまたは複数のデータ処理装置を含むシステムによって実装することが可能である。プロセス500はまた、コンピュータ記憶媒体に記憶された命令によって実装することが可能であり、データ処理装置を含むシステムによる命令の実行は、データ処理装置にプロセス500の動作を実行させる。
【0088】
本システムは、ユーザに対する予測された次のアクションを決定するための予測されたモデルを選択する(502)。いくつかの実装形態では、本システムは、アプリケーションによって生成され提示されたユーザインターフェースにおいてユーザによって実行されるアクションの数に基づいて次のアクションモデルを選択する。たとえば、ユーザがしきい値数未満のアクションを実行した場合、ユーザがアプリケーションのためのユーザ特有の次のアクションモデルを生成するために十分なデータを本システムが有していない可能性があるので、本システムは、複数のユーザによって実行されるアクションに基づいて生成される一般的な次のアクションモデルを選択してもよい。
【0089】
いくつかの実装形態では、本システムは、次のアクションモデルのための1つまたは複数のパフォーマンスメトリックに基づいて次のアクションモデルを選択する。たとえば、本システムは、最も高い予測精度、最も高いキャッシュヒット率、および/または最も低いユーザアクションレイテンシを有する次のアクションモデルを選択してもよい。
【0090】
本システムは、予測された次のユーザアクションを決定し、予測された次のユーザアクションに基づいてデータを取得するために選択された次のアクションモデルを使用する(504)。たとえば、本システムは、予測された次のアクションのためのデータをサーバから取得し、そのデータをクライアントデバイスのキャッシュに記憶してもよい。
【0091】
本システムは、予測された次のアクションがユーザによって実行されたかどうかを判定する(506)。たとえば、本システムは、次のユーザアクションが実行されたかどうかを示すユーザインターフェースが提示されているクライアントデバイスからデータを受信してもよい。本システムはまた、ユーザが実行したアクションのデータがクライアントデバイスのキャッシュ内で見つかったかどうかを示すデータ、および/またはユーザの実行されたアクションに応答してデータを提示する際のレイテンシを示すデータを受信してもよい。
【0092】
本システムは、選択された次のアクションモデルのパフォーマンスメトリックを更新する(508)。たとえば、本システムは、受信したデータに基づいて、次のアクションモデルのパフォーマンス精度、キャッシュヒット率、および/またはユーザアクションレイテンシを更新してもよい。
【0093】
本明細書に記載される主題および動作の実施形態は、本明細書に開示された構造およびそれらの構造的均等物を含むデジタル電子回路、あるいはコンピュータソフトウェア、ファームウェア、またはハードウェア、あるいはそれらの1つまたは複数の組合せにおいて実装することが可能である。本明細書に記載される主題の実施形態は、データ処理装置によって実行されるか、またはデータ処理装置の動作を制御するためにコンピュータ記憶媒体上に符号化された1つまたは複数のコンピュータプログラム、すなわちコンピュータプログラム命令の1つまたは複数のモジュールとして実装することが可能である。代替的または追加的に、プログラム命令は、データ処理装置による実行のための適切なレシーバ装置への送信のために情報を符号化するために生成された、人工的に生成された伝搬信号、たとえば機械生成電気信号、光学信号、または電磁信号上で符号化することが可能である。コンピュータ記憶媒体は、コンピュータ可読ストレージデバイス、コンピュータ可読ストレージ基板、ランダムまたはシリアルアクセスメモリアレイまたはデバイス、あるいはそれらの1つまたは複数の組合せであってもよく、あるいはそれらに含まれてもよい。さらに、コンピュータ記憶媒体は伝播信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝播信号において符号化されたコンピュータプログラム命令のソースまたは宛先とすることが可能である。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理的構成要素または媒体(たとえば、複数のCD、ディスク、または他のストレージデバイス)とすることが可能であり、またはそれらに含まれることが可能である。
【0094】
本明細書に記載される動作は、1つまたは複数のコンピュータ可読ストレージデバイスに記憶されたデータ、または他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装することが可能である。
【0095】
「データ処理装置」という用語は、例としてプログラム可能なプロセッサ、コンピュータ、チップ上のシステム、または前述のものの複数のもの、あるいはそれらの組合せを含むデータを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。本装置は、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路を含むことが可能である。本装置はまた、ハードウェアに加えて、問題のコンピュータプログラムの実行環境を生成するコード、たとえばプロセッサファームウェアを構成するコード、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、あるいはそれらのうちの1つまたは複数の組合せを含むことが可能である。装置および実行環境は、ウェブサービス、分散コンピューティングおよびグリッドコンピューティングインフラストラクチャなどの様々な異なるコンピューティングモデルインフラストラクチャを実現することが可能である。
【0096】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイラ型言語またはインタープリタ型言語、宣言型言語または手続き型言語を含むあらゆる形式のプログラミング言語で記述することが可能であり、スタンドアロンプログラムとして、またはモジュール、構成要素、サブルーチン、オブジェクトとして、またはコンピューティング環境における使用に適した他のユニットを含むあらゆる形式で展開することが可能である。コンピュータプログラムは、ファイルシステム内のファイルに対応してもよいが、必ずしも対応する必要はない。プログラムは、他のプログラムまたはデータ(たとえば、マークアップ言語文書に記憶された1つまたは複数のスクリプト)を保持するファイルの一部、問題のプログラム専用の1つのファイル、あるいは複数のコーディネートされたファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイル)に記憶することが可能である。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに配置されるか、または複数のサイトに分散され、通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように展開することが可能である。
【0097】
本明細書に記載されるプロセスおよび論理フローは、入力データを操作して出力を生成することによってアクションを実行するために1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行することが可能である。プロセスおよび論理フローはまた、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路によって実行することが可能であり、装置を専用論理回路として実装することも可能である。
【0098】
コンピュータプログラムの実行に適したプロセッサは、例として汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、読出し専用メモリまたはランダムアクセスメモリ、あるいはその両方から命令およびデータを受信する。コンピュータの必須要素は、命令に従ってアクションを実行するためのプロセッサと、命令およびデータを記憶するための1つまたは複数のメモリデバイスとである。一般に、コンピュータはまた、たとえば磁気ディスク、光磁気ディスク、または光ディスクなどのデータを記憶するための1つまたは複数の大容量ストレージデバイスを含むか、それらからデータを受信する、それらにデータを転送する、またはその両方のために動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、いくつか例を挙げると、モバイル電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲーム機、全地球測位システム(GPS)レシーバ、あるいはポータブルストレージデバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)などの別のデバイスに埋め込むことが可能である。コンピュータプログラム命令およびデータを記憶するために適したデバイスはまた、例としてEPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、たとえば内部ハードディスクまたはリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含むすべての形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリはまた、専用論理回路によって補完することが可能であり、それに組み込むことが可能である。
【0099】
ユーザとのインタラクションを提供するために、本明細書に記載される主題の実施形態は、情報をユーザに表示するためのCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタなどのディスプレイデバイス、ならびにユーザがコンピュータに入力を提供することが可能であるキーボード、およびマウスまたはトラックボールなどのポインティングデバイスを有するコンピュータ上に実装することが可能である。ユーザとのインタラクションを提供するために他の種類のデバイスを使用することもまた可能であり、たとえばユーザに提供されるフィードバックは、たとえば視覚フィードバック、聴覚フィードバック、または触覚フィードバックなどの任意の形態の感覚フィードバックとすることが可能であり、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受信することが可能である。さらに、コンピュータは、ユーザによって使用されるデバイスとの間で文書を送受信することによって、たとえばウェブブラウザから受信した要求に応答して、ユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによってユーザと対話することが可能である。
【0100】
本明細書に記載される主題の実施形態は、たとえばデータサーバとしてのバックエンド構成要素を含むコンピューティングシステム、あるいはアプリケーションサーバなどのミドルウェア構成要素を含むコンピューティングシステム、あるいは、たとえばグラフィカルユーザインターフェースを有するクライアントコンピュータ、またはユーザが本明細書に記載される主題の実装形態と対話することが可能であるウェブブラウザなどのフロントエンド構成要素を含むコンピューティングシステム、あるいはそのようなバックエンド構成要素、ミドルウェア構成要素、またはフロントエンド構成要素の1つまたは複数の任意の組合せに実装することが可能である。本システムの構成要素は、任意の形式または媒体のデジタルデータ通信、たとえば通信ネットワークによって相互接続することが可能である。通信ネットワークの例は、ローカルエリアネットワーク("LAN")およびワイドエリアネットワーク("WAN")、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
【0101】
コンピューティングシステムは、クライアントとサーバを含むことが可能である。クライアントとサーバは、一般に互いに遠隔であり、典型的には通信ネットワークを通じて相互作用する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され、相互にクライアント-サーバ関係を有するコンピュータプログラムにより生じる。いくつかの実施形態では、サーバは、(たとえば、クライアントデバイスと対話するユーザにデータを表示し、ユーザからユーザ入力を受信する目的で)データ(たとえば、HTMLページ)をクライアントデバイスに送信する。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザ対話の結果)は、サーバにおいてクライアントデバイスから受信することが可能である。
【0102】
本明細書は、多くの具体的な実装形態の詳細を含むが、これらは発明の範囲または請求可能な範囲の限定として解釈されるべきものではなく、むしろ特定の発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。別個の実施形態の文脈において本明細書で説明される特定の特徴はまた、単一の実施形態において組み合わせて実装することが可能である。逆に、単一の実施形態の文脈において記載されている様々な特徴はまた、複数の実施形態において別々に、または任意の適切なサブコンビネーションにおいて実装することが可能である。さらに、特徴は、特定の組合せにおいて作用するものとして上述されており、当初はそのように主張されているものであっても、場合によっては請求された組合せからの1つまたは複数の特徴を組合せから切り出すことが可能であり、請求された組合せをサブコンビネーションまたはサブコンビネーションのバリエーションに導くことが可能である。
【0103】
同様に、図面において動作は特定の順序で示されているが、これは、望ましい結果を達成するために、そのような動作が示された特定の順序どおりに、または逐次的な順序で実行されること、または図示されたすべての動作が実行されることを必要とするものとして理解されるべきではない。特定の状況では、マルチタスク処理と並列処理が有利な場合がある。さらに、上述の実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、記載されたプログラム構成要素およびシステムは、一般に単一のソフトウェア製品に一緒に統合することが可能であるか、または複数のソフトウェア製品にパッケージ化することが可能であることが理解されるべきである。このように主題の特定の実施形態について説明した。他の実施形態は、添付の特許請求の範囲内にある。場合によっては、請求項に列挙されたアクションは異なる順序で実行され、依然として望ましい結果を達成することが可能である。さらに、添付の図面に示されるプロセスは、望ましい結果を達成するために示された特定の順序または逐次的な順序を必ずしも必要としない。特定の実装形態では、マルチタスク処理と並列処理が有利な場合がある。