(57)【特許請求の範囲】
【請求項１】
クライアントデバイスから、前記クライアントデバイスにインストールされた第1のソフトウェア開発キット(SDK)によって生成されたデジタルコンポーネントに対する要求を受信するステップと、
1つまたは複数のカスタムデジタルコンポーネントサーバによって、前記要求の1つまたは複数のデータフィールドを検証するステップであって、
前記1つまたは複数のデータフィールド内で、前記クライアントデバイスにおいて前記要求を開始したアプリケーションを指定するアプリケーションデータを識別するステップを含む、ステップと、
前記1つまたは複数のカスタムデジタルコンポーネントサーバによって、複数のリアルタイム要求を生成するステップであって、
データ構造内のインストールされたSDKに対するアプリケーションデータのマッピングに基づいて、前記クライアントデバイスにおいて前記要求を開始した前記アプリケーションにインストールされているSDKのセットを識別するステップと、
各リアルタイム要求に、前記クライアントデバイスにおいて前記要求を開始した前記アプリケーションにインストールされているSDKの前記セットを指定するデータを含めるステップと
を含む、ステップと、
前記1つまたは複数のカスタムデジタルコンポーネントサーバによってネットワークを介して、各リアルタイム要求を対応する第三者デジタルコンポーネントプロバイダに送信するステップと、
前記1つまたは複数のカスタムデジタルコンポーネントサーバによって、前記対応する第三者デジタルコンポーネントプロバイダからの前記複数のリアルタイム要求に対する応答のセットを受信するステップと、
前記1つまたは複数のカスタムデジタルコンポーネントサーバによって、前記デジタルコンポーネントに対する前記要求に応答して前記クライアントデバイスに送信するために、応答の前記セットから特定の応答を選択するステップと、
前記1つまたは複数のカスタムデジタルコンポーネントサーバによって、前記クライアントデバイスにインストールされたどのSDKが前記特定の応答に含まれるデジタルコンポーネントをレンダリングするために必要であるかを指定する命令とともに前記特定の応答を前記第1のSDKに送信するステップと、
を備える、方法。
【請求項２】
1つまたは複数のカスタムデジタルコンポーネントサーバによって、前記第1のSDKによって生成された前記要求の1つまたは複数のデータフィールドを検証するステップが、前記1つまたは複数のデータフィールド内で、前記クライアントデバイスにインストールされた第2のSDKによって生成された、暗号化データを識別するステップを含み、
前記複数のリアルタイム要求を生成するときに、前記暗号化データが、前記第2のSDKによって生成された前記暗号化データを解読することを許可された前記第三者デジタルコンポーネントプロバイダのうちの特定の第三者デジタルコンポーネントプロバイダに送信された前記リアルタイム要求のうちの特定のリアルタイム要求に含まれる、請求項1に記載の方法。
【請求項３】
前記1つまたは複数のカスタムデジタルコンポーネントサーバによってネットワークを介して、各リアルタイム要求を対応する第三者デジタルコンポーネントプロバイダに送信するステップが、前記暗号化データを解読することなしに、前記特定のリアルタイム要求を前記特定の第三者デジタルコンポーネントプロバイダに送信するステップを備える、請求項2に記載の方法。
【請求項４】
各リアルタイム要求を対応する第三者デジタルコンポーネントプロバイダに送信するステップであって、前記第2のSDKによって生成された前記暗号化データを解読することを許可されていない第三者に前記特定のリアルタイム要求を送信しないステップを備える、ステップと、
前記対応する第三者デジタルコンポーネントプロバイダから前記複数のリアルタイム要求に対する応答の前記セットを受信するステップであって、所与の応答に含まれる特定のデジタルコンポーネントをレンダリングするために必要とされる、前記第1のSDK以外の特定のSDKを指定する前記セット内の前記所与の応答を受信するステップを備える、ステップと、
前記所与の応答を前記特定の応答として送信するステップであって、前記特定のSDKが、前記所与の応答に含まれる前記特定のデジタルコンポーネントをレンダリングするように要求される、ステップと
をさらに備える、請求項2または3に記載の方法。
【請求項５】
前記要求を開始した前記アプリケーションにインストールされているSDKのセットを識別するステップが、
インストールされたSDKに対するアプリケーションデータの前記マッピングにアクセスするステップと、
前記マッピング内で、前記アプリケーションデータにおいて指定された前記アプリケーションと、前記要求を開始した前記アプリケーションのバージョンとを識別するステップと、
前記アプリケーションにマッピングされたSDKの前記セットおよび前記要求を開始した前記アプリケーションの前記バージョンを識別するステップと
を備える、請求項1から4のいずれか一項に記載の方法。
【請求項６】
データ構造に記憶された応答ログから、前記アプリケーションの前記バージョンによって開始された以前の要求に応答して前記アプリケーションの前記バージョンに以前に提供された以前の応答を識別するステップと、
前記以前の応答から、前記以前の応答において指定された複数の異なるSDKのセットを識別するステップと、
複数の異なるSDKの前記セット内の各SDKを前記データ構造内の前記アプリケーションの前記バージョンにマッピングするステップと
含む、インストールされたSDKに対するアプリケーションデータの前記マッピングを生成するステップをさらに備える、請求項5に記載の方法。
【請求項７】
前記クライアントデバイスにインストールされたどのSDKが前記特定の応答に含まれるデジタルコンポーネントをレンダリングするために必要であるかを指定する命令とともに前記特定の応答を前記第1のSDKに送信するステップが、前記特定の応答に含まれる前記デジタルコンポーネントをレンダリングするためにアプリケーションプログラミングインターフェース(API)呼出しを指定する命令を送信するステップを備える、請求項1から6のいずれか一項に記載の方法。
【請求項８】
前記クライアントデバイスにインストールされたどのSDKが前記特定の応答に含まれるデジタルコンポーネントをレンダリングするために必要であるかを指定する命令とともに前記特定の応答を前記第1のSDKに送信するステップが、前記デジタルコンポーネントの提示の制御を前記指定されたSDKに提供するステップを備える、請求項1から7のいずれか一項に記載の方法。
【請求項９】
様々なアプリケーションにインストールされている、インストールされたソフトウェア開発キット(SDK)に対するアプリケーションデータのマッピングを記憶するデータ構造と、
クライアントデバイスから、前記クライアントデバイスにインストールされた第1のSDKによって生成されたデジタルコンポーネントに対する要求を受信するように構成されたフロントエンドサーバと、
動作を実行することによって前記要求を処理するように構成されたカスタムデジタルコンポーネントサーバとを備え、前記動作が、
前記クライアントデバイスから、前記クライアントデバイスにインストールされた前記第1のSDKによって生成された前記デジタルコンポーネントに対する前記要求を受信するステップと、
前記要求の1つまたは複数のデータフィールドを検証するステップであって、
前記1つまたは複数のデータフィールド内で、前記クライアントデバイスにおいて前記要求を開始したアプリケーションを指定するアプリケーションデータを識別するステップを含む、ステップと、
複数のリアルタイム要求を生成するステップであって、
前記データ構造内のインストールされたSDKに対するアプリケーションデータの前記マッピングに基づいて、前記クライアントデバイスにおいて前記要求を開始した前記アプリケーションにインストールされているSDKのセットを識別するステップと、
各リアルタイム要求に、前記クライアントデバイスにおいて前記要求を開始した前記アプリケーションにインストールされているSDKの前記セットを指定するデータを含めるステップと
を含む、ステップと、
ネットワークを介して、各リアルタイム要求を対応する第三者デジタルコンポーネントプロバイダに送信するステップと、
前記対応する第三者デジタルコンポーネントプロバイダからの前記複数のリアルタイム要求に対する応答のセットを受信するステップと、
前記デジタルコンポーネントに対する前記要求に応答して前記クライアントデバイスに送信するために、応答の前記セットから特定の応答を選択するステップと、
前記クライアントデバイスにインストールされたどのSDKが前記特定の応答に含まれるデジタルコンポーネントをレンダリングするために必要であるかを指定する命令とともに前記特定の応答を前記第1のSDKに送信するステップと、
を含む、システム。
【請求項１０】
前記第1のSDKによって生成された前記要求の前記1つまたは複数のデータフィールドを検証するとき、前記カスタムデジタルコンポーネントサーバが、前記1つまたは複数のデータフィールド内で、前記クライアントデバイスにインストールされた第2のSDKによって生成された、暗号化データを識別するように構成され、
前記複数のリアルタイム要求を生成するとき、前記カスタムデジタルコンポーネントサーバが、前記第2のSDKによって生成された前記暗号化データを解読することを許可された第三者のうちの特定の第三者に送信するために、前記リアルタイム要求のうちの特定のリアルタイム要求に前記暗号化データを含めるように構成される、請求項9に記載のシステム。
【請求項１１】
ネットワークを介して、各リアルタイム要求を対応する第三者デジタルコンポーネントサーバプロバイダに送信するときに、前記カスタムデジタルコンポーネントサーバが、前記暗号化データを解読することなしに、前記特定のリアルタイム要求を前記特定の第三者デジタルコンポーネントプロバイダに送信するように構成される、請求項10に記載のシステム。
【請求項１２】
各リアルタイム要求を対応する第三者デジタルコンポーネントプロバイダに送信するとき、前記カスタムデジタルコンポーネントサーバが、前記特定のリアルタイム要求を、前記第2のSDKよって生成された前記暗号化データを解読することを許可されていない第三者に送信しないように構成され、
前記対応する第三者デジタルコンポーネントプロバイダからの前記複数のリアルタイム要求に対する応答の前記セットが、所与の応答に含まれる特定のデジタルコンポーネントをレンダリングするために必要な、前記第1のSDK以外の特定のSDKを指定する前記所与の応答を含む場合、前記カスタムデジタルコンポーネントサーバが、前記所与の応答を前記特定の応答として送信するように構成される、請求項10または11に記載のシステム。
【請求項１３】
前記要求を開始した前記アプリケーションにインストールされているSDKの前記セットを識別するとき、前記カスタムデジタルコンポーネントサーバが、
インストールされたSDKに対するアプリケーションデータの前記マッピングにアクセスすることと、
前記マッピング内で、前記アプリケーションデータにおいて指定された前記アプリケーションと、前記要求を開始した前記アプリケーションのバージョンとを識別することと、
前記アプリケーションにマッピングされたSDKの前記セットおよび前記要求を開始した前記アプリケーションの前記バージョンを識別することと、
を行うように構成される、請求項9から12のいずれか一項に記載のシステム。
【請求項１４】
前記動作が、
前記データ構造に記憶された応答ログから、前記アプリケーションの前記バージョンによって開始された以前の要求に応答して前記アプリケーションの前記バージョンに以前に提供された以前の応答を識別するステップと、
前記以前の応答から、前記以前の応答において指定された複数の異なるSDKのセットを識別するステップと、
複数の異なるSDKの前記セット内の各SDKを前記データ構造内の前記アプリケーションの前記バージョンにマッピングするステップと
含む、インストールされたSDKに対するアプリケーションデータの前記マッピングを生成するステップをさらに備える、請求項13に記載のシステム。
【請求項１５】
前記クライアントデバイスにインストールされたどのSDKが前記特定の応答に含まれるデジタルコンポーネントをレンダリングするために必要であるかを指定する命令とともに前記特定の応答を前記第1のSDKに送信するときに、前記カスタムデジタルコンポーネントサーバが、前記特定の応答に含まれる前記デジタルコンポーネントをレンダリングするためにアプリケーションプログラミングインターフェース(API)呼出しを指定する命令を送信するように構成される、請求項9から14のいずれか一項に記載のシステム。
【請求項１６】
前記クライアントデバイスにインストールされたどのSDKが前記特定の応答に含まれるデジタルコンポーネントをレンダリングするために必要であるかを指定する命令とともに前記特定の応答を前記第1のSDKに送信するステップが、前記デジタルコンポーネントの提示の制御を前記指定されたSDKに提供するステップを備え、前記カスタムデジタルコンポーネントサーバが、前記デジタルコンポーネントの前記提示の制御を前記指定されたSDKに提供するように構成される、請求項9から15のいずれか一項に記載のシステム。
【請求項１７】
コンピュータプログラムで符号化され、前記コンピュータプログラムが、データ処理装置によって実行されると、前記データ処理装置に、請求項1から8のいずれか一項に記載の方法を実行させる命令を備える、非一時的コンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、デジタルコンポーネントの処理に関する。
【背景技術】
【０００２】
インターネットは、世界中のユーザ間の情報交換を促進する。この情報交換により、デジタルコンポーネントなどのコンテンツに対する要求の処理が可能になる。いくつかの状況では、コンテンツは、クライアントデバイスにおいてコンテンツをレンダリングするためにデマンドソースによって呼び出すことができる。
【発明の概要】
【課題を解決するための手段】
【０００３】
いくつかの実装形態では、本開示の方法は、クライアントデバイスにおいてデジタルコンポーネントをレンダリングするための要求を処理するステップを含む。たとえば、本方法は、クライアントデバイスにインストールされているソフトウェア開発キット(SDK)からデジタルコンポーネントに対する要求を受信するステップを含むことができる。SDKは、クライアントデバイスの特定のプラットフォーム用のアプリケーションの作成を可能にするソフトウェア開発ツールのセットである。SDKは、特定のプラットフォーム用のアプリケーションを構築するために、ソースコード、開発ツール、エミュレータ、ライブラリなどを含むことができる。クライアントデバイスにおいて要求を開始したアプリケーションを識別するために、1つまたは複数のサーバによって要求を検証することができる。サーバは、SDKからのデジタルコンポーネントに対する要求に基づいてリアルタイム要求を生成するように構成することができる。リアルタイム要求の各々は、識別されたアプリケーションにインストールされている他のSDKのセットなどの情報を含むことができる。リアルタイム要求は、クライアントデバイスからの初期要求の受信後の特定の時間内に第三者デジタルコンポーネントプロバイダに送信することができる。リアルタイム要求は、直列に、並列に、またはそれらの任意の組合せで、第三者デジタルコンポーネントプロバイダに送信することができる。さらに、初期要求は、デジタルコンポーネントがクライアントデバイスに提供されることが要求される時間量を示すことができる。デジタルコンポーネントに対するリアルタイム要求の第三者デジタルコンポーネントプロバイダへの送信に応答して、サーバは、第三者デジタルコンポーネントプロバイダからの応答を受信するように構成することができる。サーバはまた、クライアントデバイスからの初期要求を満たすためにクライアントデバイスに送信するために、特定の応答を選択するように構成することができる。特定の態様では、特定の応答は、デジタルコンポーネントと、デジタルコンポーネントをレンダリングするためにクライアントデバイスにインストールされた特定のSDKを指定する命令とを含むことができる。
【０００４】
本明細書に記載の主題の1つの革新的な態様は、クライアントデバイスから、クライアントデバイスにインストールされた第1のソフトウェア開発キット(SDK)によって生成されたデジタルコンポーネントに対する要求を受信するステップと、1つまたは複数のカスタムデジタルコンポーネントサーバによって、要求の1つまたは複数のデータフィールドを検証するステップであって、1つまたは複数のデータフィールド内で、クライアントデバイスにおいて要求を開始したアプリケーションを指定するアプリケーションデータを識別するステップを含む、ステップと、1つまたは複数のサーバによって、複数のリアルタイム要求を生成するステップであって、データ構造内のインストールされたSDKに対するアプリケーションデータのマッピングに基づいて、クライアントデバイスにおいて要求を開始したアプリケーションにインストールされているSDKのセットを識別するステップと、各リアルタイム要求に、クライアントデバイスにおいて要求を開始したアプリケーションにインストールされているSDKのセットを指定するデータを含めるステップとを含む、ステップと、1つまたは複数のサーバによってネットワークを介して、各リアルタイム要求を対応する第三者デジタルコンポーネントプロバイダに送信するステップと、1つまたは複数のサーバによって、対応する第三者デジタルコンポーネントプロバイダからの複数のリアルタイム要求に対する応答のセットを受信するステップと、1つまたは複数のサーバによって、デジタルコンポーネントに対する要求に応答してクライアントデバイスに送信するために、応答のセットから特定の応答を選択するステップと、1つまたは複数のサーバによって、クライアントデバイスにインストールされたどのSDKが特定の応答に含まれるデジタルコンポーネントをレンダリングするために必要であるかを指定する命令とともに特定の応答を第1のSDKに送信するステップと、
のアクションを含む方法において具現化される。
【０００５】
この態様および他の態様の他の実装形態は、コンピュータストレージデバイス上に符号化された、方法のアクションを実行するように構成された対応するシステム、装置、およびコンピュータプログラムを含む。
【０００６】
実装形態はそれぞれ、任意で、以下の特徴のうちの1つまたは複数を含み得る。たとえば、本方法は、1つまたは複数のデータフィールド内で、クライアントデバイスにインストールされた第2のSDKによって生成された、暗号化データを識別するステップを含むことができ、複数のリアルタイム要求を生成するときに、暗号化データが、第2のSDKによって生成された暗号化データを解読することを許可された第三者のうちの特定の第三者に送信されたリアルタイム要求のうちの特定のリアルタイム要求に含まれる。この場合、本方法はまた、暗号化データを解読することなしに、特定のリアルタイム要求を特定の第三者デジタルコンポーネントプロバイダに送信するステップを含むことができる。
【０００７】
本方法は、インストールされたSDKに対するアプリケーションデータのマッピングにアクセスするステップと、マッピング内で、アプリケーションデータにおいて指定されたアプリケーションと、要求を開始したアプリケーションのバージョンとを識別するステップと、アプリケーションにマッピングされたSDKのセットおよび要求を開始したアプリケーションのバージョンを識別するステップとをさらに含むことができる。この場合、本方法は、データ構造に記憶された応答ログから、アプリケーションのバージョンによって開始された以前の要求に応答してアプリケーションのバージョンに以前に提供された以前の応答を識別するステップと、以前の応答から、以前の応答において指定された複数の異なるSDKのセットを識別するステップと、複数の異なるSDKのセット内の各SDKをデータ構造内のアプリケーションのバージョンにマッピングするステップとをさらに含むことができる。
【０００８】
特定の態様では、本方法は、特定の応答に含まれるデジタルコンポーネントをレンダリングするためにアプリケーションプログラミングインターフェース(API)呼出しを指定する命令を送信するステップを含むことができる。本方法はまた、1つまたは複数のサーバによってネットワークを介して、各リアルタイム要求を対応する第三者デジタルコンポーネントプロバイダに送信するステップであって、暗号化データを解読することなしに、特定のリアルタイム要求を特定の第三者デジタルコンポーネントプロバイダに送信するステップを備える、ステップを含むことができる。いくつかの態様では、本方法は、カスタムデジタルコンポーネントの提示の制御を特定のSDKに提供するステップを含むことができる。
【０００９】
本方法は、各リアルタイム要求を対応する第三者デジタルコンポーネントプロバイダに送信するステップであって、第2のSDKによって生成された暗号化データを解読することを許可されていない第三者に特定のリアルタイム要求を送信しないステップを備える、ステップと、対応する第三者デジタルコンポーネントプロバイダから複数のリアルタイム要求に対する応答のセットを受信するステップであって、所与の応答に含まれる特定のデジタルコンポーネントをレンダリングするために必要とされる、第1のSDK以外の特定のSDKを指定するセット内の所与の応答を受信するステップを備える、ステップと、所与の応答を特定の応答として送信するステップであって、特定のSDKが、所与の応答に含まれる特定のデジタルコンポーネントをレンダリングするように要求される、ステップとをさらに含むことができる。
【００１０】
有利な実装形態は、以下の特徴のうちの1つまたは複数を含むことができる。本方法は、デジタルコンポーネント要求が異なるネットワークに並列に送信されることを可能にし、それによって、リアルタイム入札の方法において1つのSDKを使用するのとは対照的に、複数のSDKがサポートされていることを確認しながら、クライアント側の仲介で発生する待ち時間を短縮する。言い換えれば、クライアントデバイスにおけるアプリケーションがデジタルコンポーネントに対する要求を発行するとき、複数の異なるSDKに関連付けられる第三者デジタルコンポーネントプロバイダからの要求に対する応答を受信することが望ましい場合がある。したがって、本方法は、クライアント側の仲介の特性を維持しながら、リアルタイム入札の利点を活用することによってデジタルコンポーネントに対する要求を処理するために使用することができる。さらに、カスタムデジタルコンポーネントなどのデジタルコンポーネントに対する並列呼出しを用いたリアルタイム入札を介して取引しながら、クライアントデバイスにおいてカスタマイズされた信号を収集し、カスタムデジタルコンポーネントをレンダリングするために、SDKを使用することができる。具体的には、アプリケーションがメディアコンテンツに対する要求を発行するとき、異なるSDKに関連付けられる第三者からデジタルコンポーネントの供給の申し出を受信することが望ましい。
【００１１】
本発明の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載されている。本発明の他の特徴および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１２】
【図１】カスタムデジタルコンポーネントに対する要求が処理される例示的な環境のブロック図である。
【図２】カスタムデジタルコンポーネントを処理するための例示的なプロセスのフローチャートである。
【図３】要求のデータフィールドを検証するための例示的なプロセスのフローチャートである。
【図４】リアルタイム要求を生成するための例示的なプロセスのフローチャートである。
【図５】デジタルコンポーネントプロバイダとの例示的な通信を示すブロック図である。
【図６】例示的なコンピューティングシステムのブロック図である。
【発明を実施するための形態】
【００１３】
様々な図面における同様の参照番号および名称は、同様の要素を示す。
【００１４】
この文書は、デジタルコンポーネントに対する要求を処理し、ネットワークを介してその要求を満たすために特定の応答を選択するために使用される方法、システム、およびデバイスを開示している。以下により詳細に説明するように、第1のSDKはデジタルコンポーネントに対する要求を生成することができる。要求はサーバによって受信され、その要求に対応するアプリケーション、ならびにそのアプリケーションにおけるデジタルコンポーネントレンダリングをサポートすることができるSDKのリストを識別するために検証することができる。サーバによってリアルタイム要求を生成するために、要求、および要求から抽出された情報を使用することができる。リアルタイム要求は、複数の第三者デジタルコンポーネントプロバイダに送信することができる。サーバは、第三者デジタルコンポーネントプロバイダからのリアルタイム要求に対する応答を受信することができる。応答は、特定のSDKによるカスタムレンダリングを必要とするカスタムデジタルコンポーネントなどのデジタルコンポーネントを含むことができる。応答はサーバによって受信することができ、次いで、サーバは、初期要求を満たすために応答のうちの特定の応答を選択するように構成され得る。この場合、選択された応答は、指定されたSDKによって選択された応答に関連付けられる特定のデジタルコンポーネントをレンダリングするためにサーバからクライアントデバイスに送信され得る。
【００１５】
この文書を通して使用されているように、「デジタルコンポーネント」という語句は、デジタルコンテンツまたはデジタル情報の個別の単位(たとえば、ビデオクリップ、オーディオクリップ、マルチメディアクリップ、画像、テキスト、または別のコンテンツ単位)を指す。デジタルコンポーネントは、単一のファイルまたはファイルの集まりとして物理的メモリデバイスに電子的に記憶することができ、デジタルコンポーネントは、ビデオファイル、オーディオファイル、マルチメディアファイル、画像ファイル、またはテキストファイルの形態をとることができ、広告がデジタルコンポーネントの一種であるように、広告情報を含むことができる。一般に、デジタルコンポーネントは、単一のプロバイダまたはソース(たとえば、広告主、発行者、または他のコンポーネントプロバイダ)によって定義される(または、それらによって提供される)。デジタルコンポーネントは、デジタルコンポーネントプロバイダとは異なる電子文書プロバイダによって提供される電子文書に統合する(たとえば、その中に提示する)ことができる。
【００１６】
図1は、カスタムデジタルコンポーネントに対する要求が処理される例示的な環境100のブロック図である。例示的な環境100は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはそれらの任意の組合せなどのネットワーク102を含む。ネットワーク102は、クライアントデバイス106、デジタルコンポーネントサーバ110、およびデジタルコンポーネントプロバイダ114を接続する。例示的な環境100は、多くの異なるクライアントデバイス106、デジタルコンポーネントサーバ110、およびデジタルコンポーネントプロバイダ114を含み得る。
【００１７】
クライアントデバイス106は、ネットワーク102を介してデジタルコンポーネントなどのリソースを要求および受信することができる電子デバイスである。例示的なクライアントデバイス106は、パーソナルコンピュータ、モバイル通信デバイス、およびネットワーク102を介してデータを送受信することができる他のデバイスを含む。クライアントデバイス106は通常、ネットワーク102を介したデータの送受信を促進するためにウェブブラウザなどのユーザアプリケーションを含むが、クライアントデバイス106によって実行されるネイティブアプリケーションもまた、ネットワーク102を介したデータの送受信を促進することができる。
【００１８】
クライアントデバイス106は、クライアントデバイス106の各々にインストールされた複数のSDKを含むことができる。SDKは、それぞれクライアントデバイス106の特定のプラットフォーム用のアプリケーションの作成を可能にするソフトウェア開発ツールのセットに対応することができる。SDKは、特定のプラットフォーム用のアプリケーションを構築するために、ソースコード、開発ツール、エミュレータ、ライブラリなどを含むことができる。SDKは、ネットワーク102を介してデジタルコンポーネントサーバ110に送信されるデジタルコンポーネント112に対する要求を生成するために使用することができる。たとえば、クライアントデバイス106は、カスタムデジタルコンポーネントに対する要求112を生成するために、クライアントデバイス106にインストールされた第1のSDKを使用することができる。
【００１９】
要求112は、デジタルコンポーネントプロバイダ114の名前(または、ネットワークの場所)、要求しているデバイス(たとえば、クライアントデバイス106)の名前(または、ネットワークの場所)、および/または、デジタルコンポーネントサーバ110が要求112に応答して提供されるべきデジタルコンポーネントを選択するために使用することができる情報などの特徴を指定するデータを含むことができる。要求112は、クライアントデバイス106によって、ネットワーク102(たとえば、電気通信ネットワーク)を介してデジタルコンポーネントサーバ110のうちの1つまたは複数に送信される。要求112はまた、要求112を開始したアプリケーションを示すアプリケーションデータ、ならびにクライアントデバイス106にインストールされているSDKのセットなどの、他の特徴を指定するデータを含むことができる。
【００２０】
1つまたは複数のデジタルコンポーネントサーバを含むデジタルコンポーネントサーバ110は、要求112の検証および/または要求112に含まれる情報の使用に応答して、デジタルコンポーネントに対する複数のリアルタイム要求117を生成する。たとえば、デジタルコンポーネントサーバ110は、要求112の1つまたは複数のデータフィールドを検証することができる。クライアントデバイス106において要求112を開始した特定のアプリケーションを指定するアプリケーションデータを識別するために、データフィールドを検証することができる。さらに、デジタルコンポーネントサーバ110は、データフィールドから抽出された情報を使用して複数のリアルタイム要求117を生成するように構成することができる。
【００２１】
いくつかの例では、デジタルコンポーネントサーバ110は、クライアントデバイス106において要求112を開始した特定のアプリケーションにインストールされているSDKのセットを識別するように構成することができる。具体的には、デジタルコンポーネントサーバ110は、データ構造内のインストールされたSDKに対するアプリケーションデータのマッピングに基づいてSDKのセットを識別することができる。たとえば、デジタルコンポーネントサーバ110は、アプリケーションデータを特定のSDKに編成するデータ構造に基づいて、インストールされたSDKのセットを識別するように構成することができる。具体的には、データ構造は、クライアントデバイス106において様々なアプリケーションにインストールされている、インストールされたSDKに対するアプリケーションデータのマッピングを記憶することができる。したがって、デジタルコンポーネントサーバ110が要求112に基づいてアプリケーションデータを識別すると、デジタルコンポーネントサーバ110は、アプリケーションデータを特定のSDKにマッピングするために、ルックアップテーブルなどのデータ構造を使用することができる。
【００２２】
アプリケーションデータが特定のSDKにマッピングされると、デジタルコンポーネントサーバ110は、どのSDKがクライアントデバイス106において1つまたは複数のアプリケーションにインストールされているかを識別することができる。デジタルコンポーネントサーバ110はまた、識別された、インストールされたSDKのセットを指定するデータをリアルタイム要求117に含むように構成することができる。いくつかの態様では、データ構造は、初期要求112の前に定義され、デジタルコンポーネントサーバ110によってアクセスされる、あらかじめ定められたデータ構造であり得る。他の態様では、デジタルコンポーネントサーバ110は、指定されたSDKおよびアプリケーションに対するアプリケーションデータのマッピングを使用してデータ構造を生成するように構成することができる。
【００２３】
図1に示されるように、デジタルコンポーネントサーバ110は、ネットワーク102を介してリアルタイム要求117をデジタルコンポーネントプロバイダ114に送信するようにさらに構成することができる。たとえば、デジタルコンポーネントサーバ110は、3つのリアルタイム要求117a〜cを生成し、リアルタイム要求117a〜cの各々を特定のデジタルコンポーネントプロバイダ114a〜cに並列に送信し得る。この場合、第1のリアルタイム要求117aは第1のデジタルコンポーネントプロバイダ114aに送信され得、第2のリアルタイム要求117bは第2のデジタルコンポーネントプロバイダ114bに送信され得、第3のリアルタイム要求117cはデジタルコンポーネントプロバイダ114cに提供され得る。特定の態様では、単一のリアルタイム要求117が複数の異なるデジタルコンポーネントプロバイダ114に送信される。たとえば、第1のリアルタイム要求117aは、第1のデジタルコンポーネントプロバイダ114a、第2のデジタルコンポーネントプロバイダ114b、および第3のデジタルコンポーネントプロバイダ114cに並列に送信され得る。この場合、第1のリアルタイム要求117aなどの単一のリアルタイム要求117は、デジタルコンポーネントをレンダリングするためにデジタルコンポーネントプロバイダ114の各々から入札を受信するために、複数のデジタルコンポーネントプロバイダ114に送信され得る。初期要求117は、あらかじめ定められた期間内に提供されるべき応答を要求し得る。デジタルコンポーネントプロバイダ114の各々は、特定のデジタルコンポーネントに対する入札を含む応答118を要求117に提供し得る。したがって、応答118に対するあらかじめ定められた期間内の最高入札者に関連付けられるデジタルコンポーネントを迅速に受信するために、単一の要求117を複数のデジタルコンポーネントプロバイダ114に提供し得る。特定の態様では、要求117に対する応答118は、デジタルコンポーネントマークアップまたはデジタルコンポーネントマークアップに対するリンクなどの、レンダリングされるべきデジタルコンポーネントを任意で、または追加的に含み得る。
【００２４】
デジタルコンポーネントプロバイダ114は、第三者デジタルコンポーネントプロバイダなどの1つまたは複数のデジタルコンポーネントプロバイダを含むことができる。デジタルコンポーネントプロバイダ114a〜cは、リアルタイム要求117に対する応答118a〜cを生成するように構成することができる。応答118は、クライアントデバイス106においてレンダリングするためのデジタルコンポーネントを含むことができる。いくつかの態様では、応答118は、クライアントデバイス106においてレンダリングするための1つまたは複数の潜在的なデジタルコンポーネントを含むことができる。応答118のデジタルコンポーネントはまた、カスタムデジタルデジタルコンポーネントを含むことができる。カスタムデジタルコンポーネント(たとえば、カスタム広告)は、クライアントデバイス106にインストールされた特定のSDKによってレンダリングされ得るカスタムクリエイティブフォーマットを含むことができる。したがって、応答118に含まれるカスタムデジタルコンポーネントは、カスタムデジタルコンポーネントが、元の要求112を生成した第1のSDK以外のSDKによってレンダリングされる必要があることを示し得る。
【００２５】
応答118は、ネットワーク102を介してデジタルコンポーネントサーバ110によって受信することができる。デジタルコンポーネントサーバ110は、デジタルコンポーネントに対する要求112を満たすために特定の応答を選択するように構成することができる。たとえば、デジタルコンポーネントサーバ110は、リアルタイム要求117a〜cに応答する3つの応答118a〜cを受信することができる。3つの応答118a〜cのうちの特定の応答は、デジタルコンポーネントに対する初期要求112に応答してクライアントデバイス106に送信するためにデジタルコンポーネントサーバ110によって選択することができる。いくつかの態様では、特定の応答は、応答118a〜cの各々に関連付けられる入札に基づいてデジタルコンポーネントサーバ110によって選択され得る。他の態様では、特定の応答は、要求112の指定されたデジタルコンポーネントの特徴に基づいて選択され得る。
【００２６】
選択された応答は、ネットワーク102を介してデジタルコンポーネントサーバ110からクライアントデバイス106に送信することができる。選択された応答は、デジタルコンポーネントに対する初期要求112に対する返信120として送信することができる。特定の態様では、返信120は、要求112を生成した第1のSDKに送信することができる。返信120は、返信120に含まれるデジタルコンポーネントをレンダリングするために必要とされる、第1のSDK以外の、クライアントデバイス106にインストールされたSDKを指定する命令を含むことができる。
【００２７】
いくつかの態様では、クライアントデバイス106は、返信120に含まれる命令を実行する。たとえば、命令は、返信120に含まれる特定のデジタルコンポーネントのレンダリングを構成および有効にするためにクライアントデバイス106によって使用することができる。別の例では、クライアントデバイス106が対応するデジタルコンポーネントプロバイダ114から特定のデジタルコンポーネントを取得するように構成および有効にするために命令を使用することができる。たとえば、返信120内の命令は、デジタルコンポーネントプロバイダ114から特定のデジタルコンポーネントを取得するために、ネットワーク位置(たとえば、ユニフォームリソースロケータ(URL))、およびクライアントデバイス106にサーバ要求(SR)121を対応するデジタルコンポーネントプロバイダ114に送信させるスクリプトを含むことができる。要求121に応答して、デジタルコンポーネントプロバイダ114は、サーバ要求121において指定された特定のデジタルコンポーネントを識別し、クライアントデバイス106へのレンダリングのために特定のデジタルコンポーネントを送信するデジタルコンポーネントデータ(DCデータ)122をクライアントデバイス106に送信することができる。
【００２８】
図2は、カスタムデジタルコンポーネントを処理するための例示的なプロセス200のフローチャートである。プロセス200は、1つまたは複数のサーバあるいは他のコンピューティングデバイスによって実行することができる。たとえば、プロセス200の動作は、図1のデジタルコンポーネントサーバ110によって実行することができる。プロセス200の動作はまた、非一時的コンピュータ可読媒体に記憶された命令として実装することもでき、命令が1つまたは複数のサーバ(または、他のコンピューティングデバイス)によって実行されると、命令は、1つまたは複数のサーバにプロセス200の動作を実行させる。
【００２９】
ステップ202において、デジタルコンポーネントサーバは、クライアントデバイスにインストールされた第1のSDKによって生成されたデジタルコンポーネントに対する要求を受信する。デジタルコンポーネントに対する要求は、デジタルコンポーネントプロバイダの名前(または、ネットワークの場所)、要求しているデバイス(たとえば、クライアントデバイス)の名前(または、ネットワークの場所)、および/または、デジタルコンポーネントサーバが、要求に応答して提供されるべきデジタルコンポーネントを選択するために使用することができる情報などの特徴を指定するデータを含むことができる。要求は、ネットワーク(たとえば、電気通信ネットワーク)を介してデジタルコンポーネントサーバのうちの1つまたは複数によって受信される。要求はまた、要求を開始したアプリケーションを指定するアプリケーションデータ、ならびにクライアントデバイスにインストールされているSDKのセットなどの、他の特徴を示すデータを含むことができる。
【００３０】
ステップ204において、デジタルコンポーネントサーバは要求のデータフィールドを検証する。デジタルコンポーネントサーバは、要求の1つまたは複数のデータフィールドを検証することができる。データフィールドはそれぞれ、整数、文字列、日付などの異なる種類のデータを含むことができる。いくつかの態様では、デジタルコンポーネントサーバは、要求の暗号化データを識別するために、要求のデータフィールドを検証するように構成される。暗号化データは、クライアントデバイスにインストールされた第2のSDKによって生成されたものとして識別することができる。暗号化データは、以前にレンダリングされたデジタルコンポーネント(たとえば、第2のSDKによって、または第2のSDKを含むアプリケーション内で以前にレンダリングされた)に対応する独自の信号(たとえば、第2のSDKのプロバイダ独自の)を含むことができる。以前にレンダリングされたデジタルコンポーネントは、クライアントデバイスにインストールされた特定のSDKによってレンダリングすることができる。SDKを表す情報は、複数の異なるSDKと、異なるSDKに対応する複数の異なるバージョンのアプリケーションとを含むことができる。さらに、暗号化データは、クライアントデバイスに特有のデータを含むことができる。たとえば、暗号化データは、クライアントデバイスの向きを表す加速度計データ、クライアントデバイスの動きを表す加速度計データ、クライアントデバイスの地理的位置を表す位置信号などを含むことができる。
【００３１】
ステップ206において、デジタルコンポーネントサーバは、要求のデータフィールドの検証に基づいて複数のリアルタイム要求を生成する。リアルタイム要求は、1つまたは複数のデジタルコンポーネントに対する要求を含むことができる。デジタルコンポーネントサーバは、識別された、インストールされたSDKのセットを指定するデータをリアルタイム要求に含むように構成することができる。サーバは、SDKからのデジタルコンポーネントに対する要求に基づいてリアルタイム要求を生成するように構成することができる。リアルタイム要求の各々は、識別されたアプリケーションにインストールされている他のSDKのセットなどの情報を含むことができる。
【００３２】
いくつかの態様では、暗号化データはリアルタイム要求に含まれている。暗号化データは、デジタルコンポーネントプロバイダへの送信に備えてリアルタイム要求のうちの1つまたは複数に含めることができる。暗号化データは、特定のデジタルコンポーネントプロバイダへの送信に備えて特定のリアルタイム要求に含めることができる。特定のデジタルコンポーネントプロバイダは、暗号化データを解読することを許可されたデジタルコンポーネントプロバイダであり得る。暗号化データは、リアルタイム要求に含めることができるが、デジタルコンポーネントサーバから機密のままにされ、許可されたデジタルコンポーネントプロバイダによってのみ解読される。たとえば、暗号化データはすべてのリアルタイム要求に含まれ、キーを使用して許可されたデジタルコンポーネントプロバイダによってのみ解読され得る。
【００３３】
ステップ208において、デジタルコンポーネントサーバは、各リアルタイム要求を対応するデジタルコンポーネントプロバイダに送信する。たとえば、デジタルコンポーネントプロバイダは、第三者コンポーネントプロバイダであり得る。デジタルコンポーネントサーバは、ネットワークを介してリアルタイム要求をデジタルコンポーネントプロバイダに送信するように構成することができる。たとえば、デジタルコンポーネントサーバは、3つのリアルタイム要求を生成し、リアルタイム要求の各々を3つの特定のデジタルコンポーネントプロバイダのうちの1つに送信し得る。リアルタイム要求は、クライアントデバイスからの初期要求の受信後の特定の時間内にデジタルコンポーネントプロバイダに送信することができる。リアルタイム要求は、直列に、並列に、またはそれらの任意の組合せで、第三者デジタルコンポーネントプロバイダに送信することができる。さらに、初期要求は、デジタルコンポーネントがクライアントデバイスにデジタルコンポーネントサーバによって提供されることが要求される時間量を示すことができる。
【００３４】
リアルタイム要求は暗号化データを含むことができる。たとえば、暗号化データを含むリアルタイム要求は、デジタルコンポーネントサーバによって生成され、暗号化データを解読することなしに、許可されたデジタルコンポーネントサーバに送信され得る。したがって、デジタルコンポーネントサーバは、リアルタイム要求に含まれる暗号化データの機密性を損なうことなしに、リアルタイム要求を準備し、リアルタイム要求をデジタルコンポーネントプロバイダに向けるように構成することができる。さらに、デジタルコンポーネントサーバは、暗号化データを含むリアルタイム要求を許可されたデジタルコンポーネントプロバイダのみに送信するように構成することができる。
【００３５】
ステップ210において、デジタルコンポーネントサーバは、対応する第三者デジタルコンポーネントプロバイダから複数のリアルタイム要求に対する応答のセットを受信する。たとえば、各第三者デジタルコンポーネントプロバイダは、デジタルコンポーネントサーバに応答を提供することができる。応答はそれぞれ、クライアントデバイスにおいてレンダリングするためのデジタルコンポーネントを含むことができる。いくつかの態様では、応答は、クライアントデバイスにおいてレンダリングするための1つまたは複数の潜在的なデジタルコンポーネントを含むことができる。応答のデジタルコンポーネントは、カスタムデジタルデジタルコンポーネントを含むことができる。カスタムデジタルコンポーネントは、クライアントデバイスにおいて特定のSDKによってレンダリングされ得るカスタムクリエイティブフォーマットを含むことができる。したがって、応答に含まれるカスタムデジタルコンポーネントは、カスタムデジタルコンポーネントが、元の要求を生成した第1のSDK以外のSDKによってレンダリングされる必要があることを示し得る。
【００３６】
ステップ212において、デジタルコンポーネントサーバは、デジタルコンポーネントに対する要求に応答してクライアントデバイスに送信するために、応答のセットから特定の応答を選択する。たとえば、デジタルコンポーネントサーバは、リアルタイム要求に応答する3つの応答を受信し得る。3つの応答のうちの特定の応答は、クライアントデバイスに送信するためにデジタルコンポーネントサーバによって選択することができる。いくつかの態様では、特定の応答は、応答の各々に関連付けられる選択スコア(たとえば、入札、または複数の異なる利用可能なデジタルコンポーネントの中からデジタルコンポーネントをランク付けおよび/または選択するために使用することができる他の何らかの値)に基づいてデジタルコンポーネントサーバによって選択され得る。この場合、特定の応答は、受信されたすべての選択スコアのうち最も高い選択スコアに対応し得る。特定の態様では、特定の応答は、要求の指定されたデジタルコンポーネントの特徴に基づいて選択され得る。この場合、特定の応答は、クライアントデバイスからの初期要求の基準のすべてを満たすデジタルコンポーネントを含み得る。
【００３７】
ステップ214において、デジタルコンポーネントサーバは、クライアントデバイスにインストールされたどのSDKが特定の応答に含まれるデジタルコンポーネントをレンダリングするために必要であるかを指定する命令とともに特定の応答を第1のSDKに送信する。選択された応答は、ネットワークを介してデジタルコンポーネントサーバからクライアントデバイスに送信することができる。選択された応答は、デジタルコンポーネントに対する初期要求に対する返信として送信することができる。特定の態様では、特定の応答は、要求を生成した第1のSDKに送信することができる。特定の応答は、第1のSDK以外のSDKが、特定の応答に含まれるデジタルコンポーネントをレンダリングするために必要であることを指定する命令を含むことができる。この場合、第1のSDK以外のSDKは、特定のSDKでもよく、元の要求を生成した第1のSDKとは単に異なるSDKでもよい。
【００３８】
特定の態様では、命令は、特定の応答に含まれるデジタルコンポーネントをレンダリングするためにアプリケーションプログラミングインターフェース(API)呼出しを指定することができる。API呼出しは、クライアントデバイスにおいて特定のSDKによって実装することができる。API呼出しは、アプリケーションがタスクを実行するために呼び出す特定の動作のセットを含むことができる。そのため、API呼出しは、クライアントデバイスにおけるアプリケーションの特定のSDKを介してデジタルコンポーネントをレンダリングするために動作のセットを含むことができる。
【００３９】
いくつかの態様では、命令は特定のSDKに対するデジタルコンポーネントの提示の制御を提供することができる。言い換えれば、特定のSDKは、クライアントデバイスにおいてデジタルコンポーネントのレンダリングを実行するように構成することができる(たとえば、特定のSDKが有するが、クライアントデバイスにインストールされている他のSDKが有していない可能性があるレンダリング機能を使用して)。
【００４０】
図3は、デジタルコンポーネントの要求のデータフィールドを検証するための例示的なプロセスのフローチャートである。プロセス300は、プロセス200のステップ204のためのサブプロセスを含むことができる。プロセス300は、1つまたは複数のサーバあるいは他のコンピューティングデバイスによって実行することができる。たとえば、プロセス300の動作は、図1のデジタルコンポーネントサーバ110によって実行することができる。プロセス300の動作はまた、非一時的コンピュータ可読媒体に記憶された命令として実装することもでき、命令が1つまたは複数のサーバ(または、他のコンピューティングデバイス)によって実行されると、命令は、1つまたは複数のサーバにプロセス300の動作を実行させる。
【００４１】
ステップ302において、デジタルコンポーネントサーバは、データフィールド内で要求を開始したアプリケーションを指定するアプリケーションデータを識別する。具体的には、クライアントデバイスにおいて要求を開始した特定のアプリケーションを指定するアプリケーションデータを識別するために、データフィールドを検証することができる。データフィールドは、データフィールドの内容、ならびに要求に含まれるデータフィールドの種類に基づいて特定のアプリケーションに対応することができる。
【００４２】
ステップ304において、デジタルコンポーネントサーバは、要求の暗号化データを識別するために、要求のデータフィールドを検証するように構成される。暗号化データは、クライアントデバイスにインストールされた第2のSDKによって生成されたものとして識別することができる。暗号化データは、以前にレンダリングされたデジタルコンポーネントに対応する独自の信号を含むことができる。以前にレンダリングされたデジタルコンポーネントは、クライアントデバイスにインストールされた特定のSDKによってレンダリングすることができる。そのため、デジタルコンポーネントをレンダリングするために以前に使用されたSDKを表す情報も、暗号化データに含めることができる。SDKを表す情報は、複数の異なるSDKと、異なるSDKに対応する複数の異なるバージョンのアプリケーションとを含むことができる。さらに、暗号化データは、クライアントデバイスに特有のデータを含むことができる。たとえば、暗号化データは、クライアントデバイスの向きを表す加速度計データ、クライアントデバイスの動きを表す加速度計データ、クライアントデバイスの地理的位置を表す位置信号などを含むことができる。
【００４３】
図4は、リアルタイム要求を生成するための例示的なプロセスのフローチャートである。プロセス400は、プロセス200のステップ206のためのサブプロセスを含むことができる。プロセス400は、1つまたは複数のサーバあるいは他のコンピューティングデバイスによって実行することができる。たとえば、プロセス400の動作は、図1のデジタルコンポーネントサーバ110によって実行することができる。プロセス400の動作はまた、非一時的コンピュータ可読媒体に記憶された命令として実装することもでき、命令が1つまたは複数のサーバ(または、他のコンピューティングデバイス)によって実行されると、命令は、1つまたは複数のサーバにプロセス400の動作を実行させる。
【００４４】
ステップ402において、デジタルコンポーネントサーバは、クライアントデバイスにおいて要求を開始した特定のアプリケーションにインストールされているSDKのセットを識別する。具体的には、デジタルコンポーネントサーバは、データ構造内のインストールされたSDKに対するアプリケーションデータのマッピングに基づいてSDKのセットを識別することができる。いくつかの態様では、デジタルコンポーネントサーバは、インストールされているSDKに対するアプリケーションデータのマッピングにアクセスするように構成することができる。デジタルコンポーネントサーバは、アプリケーションデータのマッピング内で、アプリケーションデータにおいて指定されたアプリケーションと、要求を開始したアプリケーションのバージョンとを識別するようにさらに構成することができる。この場合、デジタルコンポーネントサーバは、アプリケーションにマッピングされたSDKのセットと、デジタルコンポーネントに対する初期要求を開始したアプリケーションのバージョンとを識別し得る。
【００４５】
たとえば、デジタルコンポーネントサーバは、アプリケーションデータを特定のSDKに分類するあらかじめ定められたデータ構造に基づいてインストールされたSDKのセットを識別するように構成することができる。したがって、デジタルコンポーネントサーバが要求に基づいてアプリケーションデータを識別すると、デジタルコンポーネントサーバは、アプリケーションデータを特定のSDKにマッピングするために、ルックアップテーブルなどのデータ構造を使用することができる。アプリケーションデータが特定のSDKにマッピングされると、デジタルコンポーネントサーバは、どのSDKがクライアントデバイスにおいてアプリケーションにインストールされているかを識別することができる。デジタルコンポーネントサーバは、識別された、インストールされたSDKのセットを指定するデータをリアルタイム要求に含むように構成することができる。
【００４６】
いくつかの態様では、デジタルコンポーネントサーバは、インストールされたSDKに対するアプリケーションデータのマッピングを生成するように構成することができる。この場合、デジタルコンポーネントサーバは、アプリケーションの特定のバージョンによって開始された以前の要求に応答して、アプリケーションの特定のバージョンに以前に提供された以前の応答を識別し得る。以前の応答は、データ構造に記憶されている応答ログから識別され得る。デジタルコンポーネントサーバは、以前の応答において指定された複数の異なるSDKのセットを識別するように構成することができる。さらに、デジタルコンポーネントサーバは、複数のSDKのセット内の各SDKをデータ構造内のアプリケーションの特定のバージョンにマッピングするように構成することができる。
【００４７】
ステップ404において、デジタルコンポーネントサーバは、各リアルタイム要求において、クライアントデバイスにおいて要求を開始したアプリケーションにインストールされているSDKのセットを指定するデータを含む。リアルタイム要求は互いに独立していてもよい。この場合、各リアルタイム要求は特定のデジタルコンポーネントプロバイダに対応し得る。リアルタイム要求は、クライアントデバイスにおいて要求を開始したアプリケーションにインストールされているSDKのセットに基づいて特定のデジタルコンポーネントプロバイダに送信され得る。
【００４８】
ステップ406において、デジタルコンポーネントサーバは、第2のSDKによって生成された暗号化データを解読することを許可された特定のデジタルコンポーネントプロバイダへの特定のリアルタイム要求に暗号化データを含める。暗号化データは、1つまたは複数のリアルタイム要求に含まれ得る。暗号化データは、許可されたデジタルコンポーネントプロバイダの各々に対して同じであり得る。他の態様では、データが対応する特定のデジタルコンポーネントプロバイダだけが解読できるように、暗号化データは各デジタルコンポーネントプロバイダの各々に限定的であり得る。
【００４９】
図5は、デジタルコンポーネントプロバイダとの例示的な通信を示すブロック図である。図5のイベント(A)に示されるように、クライアントデバイス510は、デジタルコンポーネントに対する要求515をデジタルコンポーネントサーバ520に提出することができる。要求515は、カスタムデジタルコンポーネントに対する要求であり得る。要求515は、クライアントデバイス510の特定のアプリケーションによって開始され、クライアントデバイス510にインストールされた第1のSDKによって生成され得る。第1のSDKは、クライアントデバイス510にインストールされた複数のSDKのうちの1つであり得、アプリケーションは、クライアントデバイス510にインストールされた複数のアプリケーションのうちの1つであり得る。
【００５０】
イベント(B)において、デジタルコンポーネントサーバ520は要求515を受信し、要求515の受信に応答して複数のリアルタイム要求526を生成する。デジタルコンポーネントサーバ520は、要求515の内容、ならびにクライアントデバイス510に関する情報を決定するために、要求515のデータフィールドを検証することができる。デジタルコンポーネントサーバ520は、要求515を検証することによってアプリケーションデータ521を識別するように構成することができる。アプリケーションデータ521は、要求515を開始した特定のアプリケーションを識別するために、デジタルコンポーネントサーバ520によって使用することができる。アプリケーションデータ521は、デジタルコンポーネントサーバ520によって、クライアントデバイス510にインストールされたSDK522のセットを識別するためにさらに使用することができる。
【００５１】
デジタルコンポーネントサーバ520は、クライアントデバイス510によって生成された要求515の代わりに複数のリアルタイム要求526を生成し得る。この場合、デジタルコンポーネントサーバ520は、クライアントデバイス510に代わって複数のリアルタイム要求526を生成するように構成することができる。
【００５２】
特定の態様では、デジタルコンポーネントサーバ520は、クライアントデバイス510にインストールされた第2のSDKによって生成された暗号化データを識別するために、要求515を検証することができる。暗号化データは、以前の要求515、以前にレンダリングされたデジタルコンポーネント、デジタルコンポーネントをレンダリングするために使用されるSDK、要求515が生成される時点で収集されたデータ、リアルタイム要求526が生成される時点で収集されたデータなどに対応することができる。
【００５３】
デジタルコンポーネントサーバ520は、デジタルコンポーネントプロバイダ530に提供するために1つまたは複数のリアルタイム要求526を生成するように構成することができる。いくつかの態様では、リアルタイム要求526は特定のデジタルコンポーネントプロバイダ530a〜nに対して指定される。この場合、リアルタイム要求526は、特定のデジタルコンポーネントプロバイダ530a〜nによって解読されることを許可された暗号化データ523a〜nを含み得る。そのため、デジタルコンポーネントサーバ520は、選択されたデジタルコンポーネントプロバイダ530a〜nに対応する暗号化データ523a〜nをそれぞれ含む複数のリアルタイム要求526を生成し得る。
【００５４】
デジタルコンポーネントサーバ520は、デジタルコンポーネントに対する要求を受信し処理する1つまたは複数のサーバを含むことができる。たとえば、デジタルコンポーネントサーバ520は、デジタルコンポーネントに対する要求を受信するフロントエンドサーバと、デジタルコンポーネントに対する要求を処理するように構成された別のサーバとを含むことができる。この場合、フロントエンドサーバと別のサーバは、ネットワークを介して通信する別々のデバイスとして実装することができる。当業者によって認識されるように、フロントエンドサーバおよび別のサーバは、単一のデジタルコンポーネントサーバ520などの単一のハードウェアデバイスとして統合することができる。
【００５５】
イベント(C)において、デジタルコンポーネントプロバイダ530は、リアルタイム要求526を受信し、リアルタイム要求526に対する応答535を提供する。デジタルコンポーネントプロバイダ530は、リアルタイム要求526に対する応答535としてデジタルコンポーネントを提供するように構成することができる。たとえば、各デジタルコンポーネントプロバイダ530a〜nは、リアルタイム要求526を受信し、クライアントデバイス510においてレンダリングするためのデジタルコンポーネントを含む応答535をデジタルコンポーネントサーバ520に提供し得る。
【００５６】
いくつかの態様では、デジタルコンポーネントプロバイダ530は、リアルタイム要求526に含まれる暗号化データ523a〜nを受信する。暗号化データ523a〜nは、許可されたデジタルコンポーネントプロバイダによって解読することができる。この場合、デジタルコンポーネントプロバイダ530は、リアルタイム要求526に対する応答535を提供するかどうか、応答535に関連付ける入札価格、応答535においてどのデジタルコンポーネントを返すべきかなどを決定するために、解読データ532a〜nを使用し得る。したがって、許可されたデジタルコンポーネントプロバイダは、各許可されたデジタルコンポーネントプロバイダが解読した解読データ532a〜nを使用してリアルタイム要求526に対する応答535を生成し、応答535をデジタルコンポーネントサーバ520に提供するように構成することができる。
【００５７】
イベント(D)において、デジタルコンポーネントサーバ520は、デジタルコンポーネントプロバイダ530からの応答535を受信し、クライアントデバイス510に送信するために特定の応答を選択する。デジタルコンポーネントサーバ520は、クライアントデバイス510にインストールされているSDKによるレンダリングのために特定の応答を選択することができる。いくつかの態様では、特定の応答は、応答535の各々に関連付けられる入札に基づいてデジタルコンポーネントサーバ520によって選択され得る。他の態様では、特定の応答は、初期要求515の指定されたデジタルコンポーネントの特徴に基づいて選択され得る。
【００５８】
選択された応答は、デジタルコンポーネントデータ528として、デジタルコンポーネントサーバ520からクライアントデバイス510に送信することができる。デジタルコンポーネントデータ528は、デジタルコンポーネントに対する初期要求515に対する返信として提供することができる。特定の態様では、デジタルコンポーネントデータ528は、クライアントデバイス510において要求515を生成した第1のSDKに送信することができる。デジタルコンポーネントデータ528は、デジタルコンポーネントデータ528に対応するデジタルコンポーネントをレンダリングするために必要とされる、第1のSDK以外の、クライアントデバイス510にインストールされた別のSDKを指定する命令を含むことができる。
【００５９】
図6は、上述の動作を実行するために使用することができる例示的なコンピューティングシステム600のブロック図である。システム600は、プロセッサ610、メモリ620、ストレージデバイス630、および入力/出力デバイス640を含む。コンポーネント610、620、630、および640の各々は、たとえばシステムバス650を使用して相互接続することができる。プロセッサ610は、システム600内で実行するための命令を処理することができる。一実装形態では、プロセッサ610はシングルスレッドプロセッサである。別の実施形態では、プロセッサ610はマルチスレッドプロセッサである。プロセッサ610は、メモリ620またはストレージデバイス630に記憶されている命令を処理することができる。
【００６０】
メモリ620は、システム600内に情報を記憶する。一実装形態では、メモリ620はコンピュータ可読媒体である。一実装形態では、メモリ620は揮発性メモリユニットである。別の実装形態では、メモリ620は不揮発性メモリユニットである。
【００６１】
ストレージデバイス630は、システム600に大容量ストレージデバイスを提供することができる。一実装形態では、ストレージデバイス630はコンピュータ可読媒体である。様々な異なる実装形態では、ストレージデバイス630は、たとえば、ハードディスクデバイス、光ディスクデバイス、複数のコンピューティングデバイスによってネットワークを介して共有されるストレージデバイス(たとえば、クラウドストレージデバイス)、または他の何らかの大容量ストレージデバイスを含むことができる。
【００６２】
入力/出力デバイス640は、システム600に入力/出力動作を提供する。一実装形態では、入力/出力デバイス640は、1つまたは複数のネットワークインターフェースデバイス、たとえばイーサネット(登録商標)カード、シリアル通信デバイス、たとえばRS-232ポート、および/またはワイヤレスインターフェースデバイス、たとえば802.11カードを含むことができる。別の実装形態では、入力/出力デバイスは、入力データを受信し、出力データを他の入力/出力デバイス、たとえばキーボード、プリンタ、およびディスプレイデバイス560に送信するように構成されたドライバデバイスを含むことができる。しかしながら、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビジョンクライアントデバイスなどの他の実装形態も使用することができる。
【００６３】
例示的な処理システムが図6に記載されているが、本明細書に記載の主題の実装形態および機能動作は、本明細書に開示されている構造およびそれらの構造上の均等物を含む他の種類のデジタル電子回路、あるいはコンピュータソフトウェア、ファームウェア、またはハードウェア、あるいはそれらの1つまたは複数の組合せにおいて実装することができる。
【００６４】
電子文書はファイルに対応していてもよいが、そうである必要はない。文書は、他の文書を保持するファイルの一部、問題の文書専用の単一のファイル、または複数の調整ファイルに記憶され得る。
【００６５】
いくつかの実装形態を説明した。それにもかかわらず、本開示の趣旨および範囲から逸脱することなしに様々な修正がなされ得ることが理解されるであろう。たとえば、ステップが順序を変えられ、追加され、または削除されたりして、上記に示される様々な形式のフローが使用され得る。
【００６６】
本発明の実施形態および本明細書に説明のすべての機能動作は、本明細書に開示されている構造およびそれらの構造上の均等物を含むデジタル電子回路、あるいはコンピュータソフトウェア、ファームウェア、またはハードウェア、あるいはそれらの1つまたは複数の組合せにおいて実装することができる。本発明の実施形態は、1つまたは複数のコンピュータプログラム製品、たとえばデータ処理装置による実行のための、またはデータ処理装置の動作を制御するためのコンピュータ可読媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装することができる。コンピュータ可読媒体は、機械可読ストレージデバイス、機械可読ストレージ基板、メモリデバイス、機械可読伝搬信号に影響を与える組成物、あるいはそれらの1つまたは複数の組合せであり得る。「データ処理装置」という用語は、例としてプログラマブルプロセッサ、コンピュータ、あるいは複数のプロセッサまたはコンピュータを含む、データを処理するためのすべての装置、デバイス、および機械を包含する。装置は、ハードウェアに加えて、問題のコンピュータプログラムの実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つまたは複数の組合せを構成するコードを含むことができる。伝搬信号は人工的に生成された信号、たとえば適切な受信装置への送信のために情報を符号化するために生成された機械的に生成された電気的、光学的、または電磁気的信号である。
【００６７】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイラ型言語またはインタープリタ型言語を含む任意の形式のプログラミング言語で記述でき、スタンドアロンプログラムとして、あるいはモジュール、コンポーネント、サブルーチン、またはコンピューティング環境での使用に適した他のユニットとして、を含む任意の形式で展開することができる。コンピュータプログラムは、必ずしもファイルシステム内のファイルに対応するわけではない。プログラムは、他のプログラムまたはデータを保持するファイルの一部(たとえば、マークアップ言語文書に記憶されている1つまたは複数のスクリプト)、問題のプログラム専用の単一のファイル、または複数の調整ファイル(たとえば、1つまたは複数のモジュール、サブプログラム、あるいはコードの一部を記憶するファイル)に記憶することができる。コンピュータプログラムは、1つのサイトに配置されているか、または複数のサイトにわたって分散され、通信ネットワークによって相互接続されている、1つのコンピュータまたは複数のコンピュータ上で実行されるように展開することができる。
【００６８】
本明細書で説明されるプロセスおよび論理フローは、入力データを操作して出力を生成することによって機能を実行するために1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行することができる。プロセスおよび論理フローはまた、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路によって実行することもでき、装置はそれらとして実装することもできる。
【００６９】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサおよび専用マイクロプロセッサの両方、ならびに任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、読出し専用メモリ、ランダムアクセスメモリ、またはその両方から命令およびデータを受信する。コンピュータの必須要素は、命令を実行するためのプロセッサと、命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量ストレージデバイス、たとえば磁気ディスク、光磁気ディスク、または光ディスクを含むか、そこからデータを受信するか、またはそれらにデータを転送するように、またはその両方のために動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、ほんの数例を挙げると、コンピュータを別のデバイス、たとえばタブレットコンピュータ、モバイル電話、携帯情報端末(PDA)、モバイルオーディオプレーヤ、全地球測位システム(GPS)受信機に組み込むことができる。コンピュータプログラム命令およびデータを記憶するために適したコンピュータ可読媒体は、例として半導体メモリデバイス、たとえばEPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含む、あらゆる形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補完されるか、またはその中に組み込まれ得る。
【００７０】
ユーザとの対話を可能にするために、本発明の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、たとえばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ、ならびにユーザがコンピュータに入力を提供することができるキーボードおよびポインティングデバイス、たとえばマウスまたはトラックボールを有するコンピュータ上で実装することができる。ユーザとの対話を提供するために、他の種類のデバイスも使用することができる。たとえば、ユーザに提供されるフィードバックは、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックなどの任意の形態の感覚的フィードバックであり得、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受信することができる。
【００７１】
本発明の実施形態は、たとえばデータサーバとしてのバックエンドコンポーネントを含むか、あるいはたとえばアプリケーションサーバなどのミドルウェアコンポーネントを含むか、あるいはユーザが本発明の実装形態と対話することができるグラフィカルユーザインターフェースまたはウェブブラウザを有するクライアントコンピュータなどのフロントエンドコンポーネントを含むコンピューティングシステムにおいて、あるいは、1つまたは複数のそのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの任意の組合せにおいて実装することができる。システムのコンポーネントは、任意の形態または媒体のデジタルデータ通信、たとえば通信ネットワークによって相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、たとえばインターネットを含む。
【００７２】
コンピューティングシステムはクライアントとサーバを含むことができる。クライアントとサーバは一般に互いに離れており、通常は通信ネットワークを通じて対話する。クライアントとサーバの関係は、それぞれのコンピュータ上で実行され、互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。
【００７３】
本明細書は多くの詳細を含むが、これらは本発明の範囲または特許請求され得るものに対する限定として解釈されるべきではなく、むしろ本発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。本明細書において別々の実施形態の文脈で説明されている特定の特徴は、単一の実施形態において組み合わせて実装することもできる。逆に、単一の実施形態の文脈で説明されている様々な特徴はまた、別々にまたは任意の適切なサブコンビネーションで複数の実施形態において実装することができる。さらに、特徴は特定の組合せで作用するものとして上記で説明され、最初はそのように主張され得るが、請求される組合せからの1つまたは複数の特徴は、場合によってはその組合せから切り取られてよく、請求された組合せは、サブコンビネーションまたはサブコンビネーションの変形に向けられてもよい。
【００７４】
同様に、動作は図面において特定の順序で描かれているが、これは、望ましい結果を達成するために、そのような動作が示された特定の順序または順番に実行されること、または示されたすべての動作が実行されることを必要とすると理解されるべきではない。特定の状況では、マルチタスキングおよび並列処理が有利な場合がある。さらに、上述の実施形態における様々なシステムコンポーネントの分離は、すべての実施形態においてそのような分離を必要とすると理解されるべきではなく、説明されたプログラムコンポーネントおよびシステムは、一般に、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージ化され得ることを理解されたい。
【００７５】
HTMLファイルが言及される各例において、他のファイルタイプまたはフォーマットが代用されてもよい。たとえば、HTMLファイルはXML、JSON、プレーンテキスト、または他の種類のファイルに置き換えられてもよい。さらに、テーブルまたはハッシュテーブルが言及される場合、他のデータ構造(スプレッドシート、リレーショナルデータベース、または構造化ファイルなど)が使用されてもよい。
【００７６】
本発明の特定の実施形態を説明した。他の実施形態は添付の特許請求の範囲内にある。たとえば、特許請求の範囲に記載されるステップは異なる順序で実行することができ、依然として望ましい結果を達成することができる。
【符号の説明】
【００７７】
100  例示的な環境
102  ネットワーク
106  クライアントデバイス
110  デジタルコンポーネントサーバ
112  デジタルコンポーネント
112  要求
112  初期要求
114  デジタルコンポーネントプロバイダ
114a〜c  デジタルコンポーネントプロバイダ
117  リアルタイム要求
117  初期要求
117a〜c  リアルタイム要求
118  応答
118a〜c  応答
120  返信
121  サーバ要求(SR)
122  デジタルコンポーネントデータ(DCデータ)
200  プロセス
300  プロセス
400  プロセス
510  クライアントデバイス
515  初期要求
515  要求
520  デジタルコンポーネントサーバ
521  アプリケーションデータ
522  SDK
523a〜n  暗号化データ
532a〜n  解読データ
526  リアルタイム要求
528  デジタルコンポーネントデータ
530  デジタルコンポーネントプロバイダ
530a〜n  デジタルコンポーネントプロバイダ
535  応答
560  ディスプレイデバイス
600  コンピューティングシステム
610  プロセッサ
620  メモリ
630  ストレージデバイス
640  入力/出力デバイス
650  システムバス
【図１】
0006766270.tif 000002
【図２】
0006766270.tif 000003
【図３】
0006766270.tif 000004
【図４】
0006766270.tif 000005
【図５】
0006766270.tif 000006
【図６】
0006766270.tif 000007