(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-28
(45)【発行日】2024-12-06
(54)【発明の名称】レンダリングデバッガ
(51)【国際特許分類】
G06F 11/36 20060101AFI20241129BHJP
【FI】
G06F11/36 164
G06F11/36 188
(21)【出願番号】P 2022565892
(86)(22)【出願日】2020-04-28
(86)【国際出願番号】 US2020030270
(87)【国際公開番号】W WO2021221616
(87)【国際公開日】2021-11-04
【審査請求日】2022-12-01
【前置審査】
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】スペンサー・スコット・ジョンソン
(72)【発明者】
【氏名】メンユ・ユアン
(72)【発明者】
【氏名】ヨナ・ベンジャミン・ワッサーマン
(72)【発明者】
【氏名】ライアン・ダニエル・クラフリッチ
(72)【発明者】
【氏名】サムスディン・カミス
(72)【発明者】
【氏名】スマン・バサク
(72)【発明者】
【氏名】ジンイ・リ
【審査官】児玉 崇晶
(56)【参考文献】
【文献】米国特許第09218267(US,B1)
【文献】米国特許第09164874(US,B1)
【文献】特開2017-215810(JP,A)
【文献】特開2017-138715(JP,A)
【文献】特表2017-517802(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
(57)【特許請求の範囲】
【請求項1】
デバイスにより、アプリケーションの中で提示するためのコンテンツを求める要求をサーバへ送信するステップと、
前記デバイスにより、複数のコンテンツ資産を含むテストオブジェクトを受信するステップと、
前記デバイス上で実行中の
前記アプリケーションによるデジタルコンポーネントのレンダリングを、前記デバイスが検出するステップと、
テストデジタルコンポーネントの中に含まれる
前記コンテンツ資産の可視属性を示す少なくとも第1の信号、およびレンダリングされたときの前記コンテンツ資産の間の階層的な関連付けを示す第2の信号を含む、前記デジタルコンポーネントのレンダリング属性を指定する信号のセットを、前記アプリケーションから前記デバイスが取得するステップと、
前記第1の信号および前記第2の信号を、正しくレンダリングされている準拠デジタルコンポーネントの属性を指定する要件のセットと比較する検証プロセスを、前記デバイスが呼び出すステップと、
1つまたは複数の要件が前記第1の信号または前記第2の信号によって満たされないことを前記デバイスが決定するステップと、
前記1つまたは複数の要件が満たされないという決定に応答して、前記デジタルコンポーネントが前記1つまたは複数の要件を満たさないことを示す警報を前記アプリケーション内に提供する非準拠オーバーレイを、前記デバイスが提供するステップと
を備える方法。
【請求項2】
前記デバイスを前記アプリケーション用のテストデバイスとして識別する登録メッセージを、
前記サーバが受信するステップと、
前記アプリケーションに提供するためのコンテンツを求める要求を、前記デバイスから前記サーバが受信するステップと、
前記デバイスがテストデバイスとして識別されることに基づいて、前記デジタルコンポーネントをレンダリングするために必要とされる前記コンテンツ資産を含む
前記テストオブジェクトを、前記サーバが選択するステップと、
前記デバイスがテストデバイスとして識別されることに基づいて、コンテンツを求める前記要求に応答して前記テストオブジェクトを前記デバイスに、前記サーバが提供するステップと
をさらに備える、請求項1に記載の方法。
【請求項3】
前記アプリケーションに提供するためのコンテンツを求める要求を、
前記サーバが受信するステップと、
コンテンツを求める前記要求がテスト環境に対応する識別子を含むことを、前記サーバが決定するステップと、
コンテンツを求める前記要求が前記テスト環境に対応する前記識別子を含むという決定に応答して、前記デジタルコンポーネントをレンダリングするために必要とされる前記コンテンツ資産を含むテストオブジェクトを、前記サーバが選択するステップと、
前記コンテンツ要求に応答して前記テストオブジェクトを前記デバイスに、前記サーバが提供するステップと
をさらに備える、請求項1に記載の方法。
【請求項4】
前記第1の信号および前記第2の信号を要件のセットと比較する検証プロセスを前記デバイスが呼び出すステップが、前記アプリケーションの起動においてインスタンス化されるスクリプトによる前記検証プロセスの実行を要求するステップを備える、請求項1に記載の方法。
【請求項5】
前記非準拠オーバーレイとの対話を前記デバイスが検出するステップと、
前記非準拠オーバーレイとの対話の検出に応答して、前記デジタルコンポーネントが前記1つまたは複数の要件をどのように満たさないのかに関する追加の詳細を前記デバイスが提供するステップと
をさらに備える、請求項1に記載の方法。
【請求項6】
指定されたロケーションから文書を前記デバイスが取得するステップと、
前記デジタルコンポーネントが前記1つまたは複数の要件を満たさないことを示す情報を前記文書に前記デバイスがポピュレートするステップと
をさらに備える、請求項1に記載の方法。
【請求項7】
前記デジタルコンポーネントのレンダリング属性を指定する信号のセットを取得するステップが、前記デジタルコンポーネントの中に含まれるコンテンツ資産のセットを示す信号のセットを取得するステップを備え、
前記1つまたは複数の要件が満たされないことを決定する前記ステップが、(i)必要とされる資産がソフトウェア開発キットに含まれていないかまたは適切に登録されていないことを決定するステップ、(ii)前記コンテンツ資産を含む特定のビューが指定のサイズよりも小さいことを決定するステップ、あるいは(iii)前記コンテンツ資産のうちの1つまたは複数が前記特定のビューの境界の外側に配置されることを決定するステップを備える、
請求項1に記載の方法。
【請求項8】
システムであって、
1つまたは複数のプロセッサと、
1つまたは複数のメモリデバイスとを備えるデバイスを含み、
前記1つまたは複数のメモリデバイスには、前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに動作を実行させる命令が記憶され、前記動作が、
アプリケーションの中で提示するためのコンテンツを求める要求をサーバへ送信することと、
複数のコンテンツ資産を含むテストオブジェクトを受信することと、
前記デバイス上で実行中の
前記アプリケーションによるデジタルコンポーネントのレンダリングを検出することと、
テストデジタルコンポーネントの中に含まれる
前記コンテンツ資産の可視属性を示す少なくとも第1の信号、およびレンダリングされたときの前記コンテンツ資産の間の階層的な関連付けを示す第2の信号を含む、前記デジタルコンポーネントのレンダリング属性を指定する信号のセットを、前記アプリケーションから取得することと、
前記第1の信号および前記第2の信号を、正しくレンダリングされている準拠デジタルコンポーネントの属性を指定する要件のセットと比較する検証プロセスを呼び出すことと、
1つまたは複数の要件が前記第1の信号または前記第2の信号によって満たされないことを決定することと、
前記1つまたは複数の要件が満たされないという決定に応答して、前記デジタルコンポーネントが前記1つまたは複数の要件を満たさないことを示す警報を前記アプリケーション内に提供する非準拠オーバーレイを提供することとを備える、
システム。
【請求項9】
1つまたは複数のコンピューティングデバイスを含む
前記サーバをさらに備え、
前記デバイスを前記アプリケーション用のテストデバイスとして識別する登録メッセージを受信することと、
前記アプリケーションに提供するためのコンテンツを求める要求を、前記デバイスから受信することと、
前記デバイスがテストデバイスとして識別されることに基づいて、前記デジタルコンポーネントをレンダリングするために必要とされる前記コンテンツ資産を含む
前記テストオブジェクトを選択することと、
前記デバイスがテストデバイスとして識別されることに基づいて、コンテンツを求める前記要求に応答して前記テストオブジェクトを前記デバイスに提供することとを備える動作を前記サーバが実行するように構成される、
請求項8に記載のシステム。
【請求項10】
1つまたは複数のコンピューティングデバイスを含む
前記サーバをさらに備え、
前記アプリケーションに提供するためのコンテンツを求める要求を受信することと、
コンテンツを求める前記要求がテスト環境に対応する識別子を含むことを決定することと、
コンテンツを求める前記要求が前記テスト環境に対応する前記識別子を含むという決定に応答して、前記デジタルコンポーネントをレンダリングするために必要とされる前記コンテンツ資産を含むテストオブジェクトを選択することと、
前記コンテンツ要求に応答して前記テストオブジェクトを提供することとを備える動作を前記サーバが実行するように構成される、
請求項8に記載のシステム。
【請求項11】
前記第1の信号および前記第2の信号を要件のセットと比較する検証プロセスを呼び出すことが、前記アプリケーションの起動においてインスタンス化されるスクリプトによる前記検証プロセスの実行を要求することを備える、請求項8に記載のシステム。
【請求項12】
前記1つまたは複数のプロセッサの前記動作が、
前記非準拠オーバーレイとの対話を検出することと、
前記非準拠オーバーレイとの対話の検出に応答して、前記デジタルコンポーネントが前記1つまたは複数の要件をどのように満たさないのかに関する追加の詳細を提供することとをさらに備える、
請求項8に記載のシステム。
【請求項13】
前記1つまたは複数のプロセッサの前記動作が、
指定されたロケーションから文書を取得することと、
前記デジタルコンポーネントが前記1つまたは複数の要件を満たさないことを示す情報を前記文書にポピュレートすることとをさらに備える、
請求項8に記載のシステム。
【請求項14】
前記デジタルコンポーネントのレンダリング属性を指定する信号のセットを取得することが、前記デジタルコンポーネントの中に含まれるコンテンツ資産のセットを示す信号のセットを取得することを備え、
前記1つまたは複数の要件が満たされないことを決定することが、(i)必要とされる資産がソフトウェア開発キットに含まれていないかまたは適切に登録されていないことを決定すること、(ii)前記コンテンツ資産を含む特定のビューが指定のサイズよりも小さいことを決定すること、あるいは(iii)前記コンテンツ資産のうちの1つまたは複数が前記特定のビューの境界の外側に配置されることを決定することを備える、
請求項8に記載のシステム。
【請求項15】
コンピュータプログラムを用いて符号化されたコンピュータ可読記憶媒体であって、前記コンピュータプログラムが命令を備え、デバイスによって実行されたとき、前記命令が前記デバイスに、
アプリケーションの中で提示するためのコンテンツを求める要求をサーバへ送信することと、
複数のコンテンツ資産を含むテストオブジェクトを受信することと、
前記デバイス上で実行中の
前記アプリケーションによるデジタルコンポーネントのレンダリングを検出することと、
テストデジタルコンポーネントの中に含まれる
前記コンテンツ資産の可視属性を示す少なくとも第1の信号、およびレンダリングされたときの前記コンテンツ資産の間の階層的な関連付けを示す第2の信号を含む、前記デジタルコンポーネントのレンダリング属性を指定する信号のセットを、前記アプリケーションから取得することと、
前記第1の信号および前記第2の信号を、正しくレンダリングされている準拠デジタルコンポーネントの属性を指定する要件のセットと比較する検証プロセスを呼び出すことと、
1つまたは複数の要件が前記第1の信号または前記第2の信号によって満たされないことを決定することと、
前記1つまたは複数の要件が満たされないという決定に応答して、前記デジタルコンポーネントが前記1つまたは複数の要件を満たさないことを示す警報を前記アプリケーション内に提供する非準拠オーバーレイを提供することとを備える動作を実行させる、
コンピュータ可読記憶媒体。
【請求項16】
前記サーバによって実行されたとき、前記命令が前記サーバに、
前記デバイスを前記アプリケーション用のテストデバイスとして識別する登録メッセージを受信することと、
前記アプリケーションに提供するためのコンテンツを求める要求を受信することと、
前記デバイスがテストデバイスとして識別されることに基づいて、前記デジタルコンポーネントをレンダリングするために必要とされる前記コンテンツ資産を含む
前記テストオブジェクトを選択することと、
前記デバイスがテストデバイスとして識別されることに基づいて、コンテンツを求める前記要求に応答して前記テストオブジェクトを前記デバイスに提供することとを備える動作を実行させる、
請求項15に記載のコンピュータ可読記憶媒体。
【請求項17】
前記サーバによって実行されたとき、前記命令が前記サーバに、
前記アプリケーションに提供するためのコンテンツを求める要求を受信することと、
コンテンツを求める前記要求がテスト環境に対応する識別子を含むことを決定することと、
コンテンツを求める前記要求が前記テスト環境に対応する前記識別子を含むという決定に応答して、前記デジタルコンポーネントをレンダリングするために必要とされる前記コンテンツ資産を含むテストオブジェクトを選択することと、
前記コンテンツ要求に応答して前記テストオブジェクトを提供することとを備える動作を実行させる、
請求項15に記載のコンピュータ可読記憶媒体。
【請求項18】
前記第1の信号および前記第2の信号を要件のセットと比較する検証プロセスを呼び出すことが、前記アプリケーションの起動においてインスタンス化されるスクリプトによる前記検証プロセスの実行を要求することを備える、請求項15に記載のコンピュータ可読記憶媒体。
【請求項19】
前記デバイスの前記動作が、
前記非準拠オーバーレイとの対話を検出することと、
前記非準拠オーバーレイとの対話の検出に応答して、前記デジタルコンポーネントが前記1つまたは複数の要件をどのように満たさないのかに関する追加の詳細を提供することとを備える、
請求項15に記載のコンピュータ可読記憶媒体。
【請求項20】
前記デバイスの前記動作が、
指定されたロケーションから文書を取得することと、
前記デジタルコンポーネントが前記1つまたは複数の要件を満たさないことを示す情報を前記文書にポピュレートすることとを備える、
請求項15に記載のコンピュータ可読記憶媒体。
【請求項21】
前記デジタルコンポーネントのレンダリング属性を指定する信号のセットを取得することが、前記デジタルコンポーネントの中に含まれるコンテンツ資産のセットを示す信号のセットを取得することを備え、
前記1つまたは複数の要件が満たされないことを決定することが、(i)必要とされる資産がソフトウェア開発キットに含まれていないかまたは適切に登録されていないことを決定すること、(ii)前記コンテンツ資産を含む特定のビューが指定のサイズよりも小さいことを決定すること、あるいは(iii)前記コンテンツ資産のうちの1つまたは複数が前記特定のビューの境界の外側に配置されることを決定することを備える、
請求項15に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、データ処理、およびアプリケーションをデバッグすることに関する。
【背景技術】
【0002】
インターネットは、地球を横断してユーザ間での情報の交換を容易にする。情報のこの交換は、様々なユーザへのコンテンツの配信を可能にする。いくつかの状況では、複数の異なる提供者からのコンテンツが単一の電子文書の中に統合されて、複合文書を作成することができる。たとえば、電子文書の中に含まれるコンテンツの一部分が、電子文書の発行者によって選択(または、指定)されることがある。デジタルコンポーネント(たとえば、コンテンツの様々な部分)が、サードパーティ(たとえば、電子文書の発行者でないエンティティ)によって提供され得、発行者によって選択されたコンテンツの部分とともに電子文書の中に統合され得る。
【発明の概要】
【課題を解決するための手段】
【0003】
概して、本明細書で説明する主題の1つの発明的態様は、デバイス上で実行中のアプリケーションによるデジタルコンポーネントのレンダリングを、デバイスによって検出することと、テストデジタルコンポーネントの中に含まれるコンテンツ資産の可視属性を示す少なくとも第1の信号、およびレンダリングされたときのコンテンツ資産の間の階層的な関連付けを示す第2の信号を含む、デジタルコンポーネントのレンダリング属性を指定する信号のセットを、アプリケーションから取得することと、第1の信号および第2の信号を、正しくレンダリングされている準拠デジタルコンポーネントの属性を指定する要件のセットと比較する検証プロセスを、デバイスによって呼び出すことと、1つまたは複数の要件が第1の信号または第2の信号によって満たされないことを決定することと、1つまたは複数の要件が満たされないという決定に応答して、デジタルコンポーネントが1つまたは複数の要件に準拠できないことを示す警報をアプリケーション内に提供する非準拠オーバーレイを、デバイスによって提供することとを含む、システムの中で具現され得る。この態様の他の実施形態は、コンピュータ記憶デバイス上で符号化された、方法のアクションを実行するように構成された、対応する方法、装置、およびコンピュータプログラムを含む。これらおよび他の実施形態は各々、以下の特徴のうちの1つまたは複数を随意に含むことができる。
【0004】
方法は、デバイスをアプリケーション用のテストデバイスとして識別する登録メッセージを、サーバによって受信することと、アプリケーションに提供するためのコンテンツを求める要求を、デバイスから受信することと、デバイスがテストデバイスとして識別されることに基づいて、デジタルコンポーネントをレンダリングするために必要とされるコンテンツ資産を含むテストオブジェクトを、サーバによって選択することと、デバイスがテストデバイスとして識別されることに基づいて、コンテンツを求める要求に応答してテストオブジェクトをデバイスに、サーバによって提供することとを含むことができる。
【0005】
方法は、アプリケーションに提供するためのコンテンツを求める要求を、サーバによって受信することと、コンテンツを求める要求がテスト環境に対応する識別子を含むことを、サーバによって決定することと、コンテンツを求める要求がテスト環境に対応する識別子を含むという決定に応答して、デジタルコンポーネントをレンダリングするために必要とされるコンテンツ資産を含むテストオブジェクトを、サーバによって選択することと、コンテンツ要求に応答してテストオブジェクトをデバイスに、サーバによって提供することとを含むことができる。
【0006】
第1の信号および第2の信号を要件のセットと比較する検証プロセスをデバイスによって呼び出すことは、アプリケーションの起動においてインスタンス化されるスクリプトによる検証プロセスの実行を要求することを含むことができる。
【0007】
方法は、オーバーレイとの対話を検出することと、オーバーレイとの対話の検出に応答して、デジタルコンポーネントが1つまたは複数の要件にどのように準拠できないのかに関する追加の詳細を提供することとを含むことができる。
【0008】
方法は、指定されたロケーションから文書をデバイスによって取得することと、デジタルコンポーネントが1つまたは複数の要件に準拠できないことを示す情報を文書にポピュレートすることとを含むことができる。
【0009】
デジタルコンポーネントのレンダリング属性を指定する信号のセットを取得することは、デジタルコンポーネントの中に含まれるコンテンツ資産のセットを示す信号のセットを取得することを含むことができ、1つまたは複数の要件が満たされないことを決定することは、(i)必要とされる資産がソフトウェア開発キットに含まれていないかまたは適切に登録されていないことを決定すること、(ii)コンテンツ資産を含む特定のビューが指定のサイズよりも小さいことを決定すること、あるいは(iii)コンテンツ資産のうちの1つまたは複数が特定のビューの境界の外側に配置されることを決定することを備える。
【0010】
本明細書で説明する主題の特定の実施形態は、以下の利点のうちの1つまたは複数を実現するように実施され得る。たとえば、本明細書で説明する技法は、ユーザへのアプリケーションのリリースの前にアプリケーションのレンダリングコードの中のエラーの識別を可能にし、それによって、浪費されるシステムリソースを減らす。より詳細には、サードパーティによって提供されるコンテンツ資産のセットからデジタルコンポーネントを適切に構築および提示することを担当するアプリケーションに対して、従来システムは、アプリケーションをユーザにリリースする前に、アプリケーションのレンダリングコードが正しく実装されていることをアプリケーション開発者が保証するための方法を提供しない。したがって、アプリケーション開発者は、レンダリングコードがデジタルコンポーネントをユーザに不正確にレンダリングした(または、レンダリングできなかった)後に、彼らのレンダリングコードの中のエラーを履歴的に知っているにすぎない。このことは、アプリケーション開発者が、エラーをトラックダウンしなければならず、レンダリングコードを修正しなければならず、次いで、更新済みのバージョンのアプリケーションをユーザによるダウンロードのために提供しなければならない状況を引き起こす。しかしながら、アプリケーション更新の、ユーザが有する制御に起因して、アプリケーション開発者は、ユーザが新たなバージョンのアプリケーションに更新することを保証することができず、その結果、レンダリングエラーが継続する場合がある。以下でより詳細に説明するように、そのような1つのレンダリングエラーは、コンテンツの一部分が、ユーザに見えているはずの他のコンテンツを遮ることをもたらすエラーである。この状況では、ユーザによって視覚的に知覚できているはずのコンテンツの一部分しか認知されることが可能でないので、レンダリングエラーは、さほど効率的でも効果的でもないアプリケーションにつながる。これらのレンダリングエラーはまた、コンピューティングリソース(たとえば、メモリ、処理能力、ネットワーク帯域幅など)の使用に関係する非効率性につながる。たとえば、コンテンツ資産のうちの1つまたは複数によって提供される情報をユーザが知覚できることを妨げるように、コンテンツ資産を遮るか、省くか、またはそうでなければひずませるデジタルコンポーネントを最終的にレンダリングするコンテンツ資産を選択しアプリケーションへ送信するために、メモリ、処理リソース、およびネットワーク帯域幅が利用されるとき、これらのコンピューティングリソースは、デジタルコンポーネントの中でコンテンツ資産を適切にレンダリングすることになる他のアプリケーションにコンテンツ資産を配信するのに利用可能でない。アプリケーションのユーザの数が増えるにつれて、浪費されるリソースの量が増える。アプリケーションユーザの数が急速に何百万人ものユーザに達することがあるので、これらの非効率性によって引き起こされる統合された影響(たとえば、浪費されるシステムリソース)が急速に大きくなる。以下で詳細に説明するように、本明細書全体にわたって提示される技法は、説明した非効率性を低減し、ユーザへのそれらの配信の前にアプリケーションのレンダリングコードの適切な動作を保証することによって、コンピューティングリソースの改善された割振りおよび使用をもたらす。
【0011】
本明細書で説明する主題の1つまたは複数の実施形態の詳細が、添付図面および以下の説明に記載される。本主題の他の特徴、態様、および利点が、説明、図面、および特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【0012】
【
図1】コンテンツが配信される例示的な環境のブロック図である。
【
図2A】準拠デジタルコンポーネントを生成するレンダリングコードをテストすることを示すブロック図である。
【
図2B】非準拠デジタルコンポーネントを生成するレンダリングコードをテストすることを示すブロック図である。
【
図3】レンダリングコードをテストするための例示的なプロセスのフローチャートである。
【
図4】クライアントデバイス上で実行中のアプリケーションにテストオブジェクトを提供するための例示的なプロセスのフローチャートである。
【
図5】例示的なコンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【0013】
様々な図面における同様の参照番号および名称は、同様の要素を示す。
【0014】
本明細書は、アプリケーション(たとえば、ネイティブなモバイルアプリケーション)のデバッギングを容易にするために使用され得る方法、システム、およびデバイスを開示する。以下でより詳細に説明するように、アプリケーション環境内のデジタルコンポーネントとしてコンテンツの部分を収集および提示するレンダリングコードはテストすることができ、テストした結果は、アプリケーションがユーザにリリースされる前にアプリケーションの開発者に提供され得る。たとえば、テストされるレンダリングコードは、アプリケーションによってレンダリングするためのコンテンツの部分を提供する、デジタルコンポーネント配信システム(「DCDS:digital component distribution system」)の仕様に準拠するように開発され得る。
【0015】
より詳細には、アプリケーションのレンダリングコードは、DCDSから受信されるコンテンツの様々な部分(これからは、コンテンツ資産と呼ぶ)の間のレイアウトを指定してよく、ソフトウェア開発キット(「SDK」)からコンテンツ資産を取得してよく、ある階層のビューをコンテンツ資産にバインドしてよい。したがって、完成されたデジタルコンポーネントが「現状のまま(as is)」での提示のためにウェブページまたはアプリケーションに提供される状況とは異なり、アプリケーションのレンダリングコードは、一般に同じくDCDSによって執行される、DCDSの仕様に準拠する方法でコンテンツ資産を合成することを担当し、その結果、アプリケーション開発者は、DCDSの仕様に準拠するデジタルコンポーネントの中にコンテンツ資産を合成するレンダリングコードを実装する必要があり得る。
【0016】
ユーザへの完成されたアプリケーションの配信の前に、アプリケーション開発者は、一般に、彼らが実装したレンダリングコードがDCDSの仕様に準拠するデジタルコンポーネントを実際に生成することを保証する方法を有しない。追加として、アプリケーション開発者は、一般に、彼らのアプリケーションを新たなバージョンに更新することをユーザに「強いる」ことができず、それによって、レンダリングコードの中に存在する場合がある問題を修繕するために、ユーザが自発的に新たなバージョンのアプリケーションに更新することを、アプリケーション開発者が当てにするままにさせる。さらに、アプリケーションをユーザにリリースする前にアプリケーション開発者がレンダリングコードをテストできないことはまた、アプリケーション開発者が、更新済みのバージョンのアプリケーションをユーザにリリースすることなく、更新済みのバージョンのレンダリングコードをテストすることを妨げ、更新済みのバージョンのアプリケーションの中に含まれるレンダリングコードの更新が、識別された問題を依然として修繕できない場合があり、アプリケーションによってレンダリングされるデジタルコンポーネントがDCDSの仕様に準拠することを妨げる、さらなる問題をもたらす場合があることを意味する。したがって、サードパーティのコンテンツが彼らのアプリケーション内でネイティブ(たとえば、ファーストパーティ)のコンテンツとして提示されることを可能にするレンダリングコードを、アプリケーション開発者が実装することは困難であり得る。
【0017】
本明細書全体にわたって詳細に説明するように、アプリケーションにコンテンツ資産を提供するために使用されるSDK(または、他のコンポーネント)は、アプリケーションがユーザにリリースされる前にアプリケーションのレンダリングコードを伴う問題を検出する論理を含むように構成され得る。いくつかの実装形態では、SDKは、(たとえば、コンテンツ資産のセットを含む)テストオブジェクトをアプリケーションに渡すことができ、テストオブジェクトを使用してアプリケーションによってレンダリングされる、得られたデジタルコンポーネントに対応する、レンダリング信号(信号のセットと呼ばれる)を、アプリケーションから収集することができる。これらのレンダリング信号は、概して、得られたデジタルコンポーネントの構造および視覚的属性についての情報を提供する。これらのレンダリング信号は、レンダリングコードによって作成される、得られたデジタルコンポーネントが、DCDSの仕様に準拠するかどうかを決定するために、準拠要件のセット(要件のセットとも呼ばれる)と比較され得る。得られたデジタルコンポーネントが準拠チェックをパスできないとき、得られたデジタルコンポーネントの非準拠ステータスおよび/または非準拠ステータスにつながった問題についての情報を指定するオーバーレイが、アプリケーションの中で提示され得る。この情報は、次いで、レンダリングコードを改訂するためにアプリケーション開発者によって使用することができ、アプリケーションがユーザにとって利用可能にされる前に、レンダリングコードが準拠デジタルコンポーネントを作り出すことを保証するように、レンダリングコードへのいかなる改訂もテストされ続けることができる。
【0018】
本明細書全体にわたって使用される「デジタルコンポーネント」という句は、デジタルコンテンツまたはデジタル情報の個別単位(たとえば、ビデオクリップ、オーディオクリップ、マルチメディアクリップ、画像、テキスト、または別の単位のコンテンツ)を指す。デジタルコンポーネントは、単一のファイルとして、またはファイルの集合をなして、物理メモリデバイスの中に電子的に記憶することができ、デジタルコンポーネントは、ビデオファイル、オーディオファイル、マルチメディアファイル、画像ファイル、またはテキストファイルの形態をとることができ、広告情報を含むことができ、したがって、広告は、あるタイプのデジタルコンポーネントである。一般に、デジタルコンポーネントは、単一の提供者またはソース(たとえば、広告主、発行者、または他のコンテンツプロバイダ)によって規定される(または、提供される)。以下でより詳細に説明するように、アプリケーションは、アプリケーションの一部であるレンダリングコードを使用して複数の異なるコンテンツ資産を合成することによって、アプリケーション内のネイティブな要素としてデジタルコンポーネントをレンダリングすることができる。たとえば、レンダリングコードは、コンテンツ資産を様々なビューにバインドすることができ、それらのビューの間の関連付けは、アプリケーション内でデジタルコンポーネントと一緒にアプリケーションがコンテンツ資産をどのように提示するのかを規定する。
【0019】
本明細書は、SDKが様々な動作を実行することに言及するが、本明細書で説明する動作が、アプリケーションを実行中のデバイスの様々な構成要素によって実行され得ることを、理解されたい。
【0020】
図1は、コンテンツがクライアントデバイスに配信される例示的な環境100のブロック図である。例示的な環境100は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはそれらの組合せなどの、ネットワーク102を含む。ネットワーク102は、クライアントデバイス106、デジタルコンポーネントサーバ108、およびデジタルコンポーネント配信システム110(配信システムとも呼ばれる)を接続する。例示的な環境100は、多くの異なるクライアントデバイス106およびデジタルコンポーネントサーバ108を含んでよい。
【0021】
クライアントデバイス106は、ネットワーク102を介してリソースを要求および受信することが可能な電子デバイスである。例示的なクライアントデバイス106は、パーソナルコンピュータ、モバイル通信デバイス、およびネットワーク102を介してデータを送ることおよび受信することができる他のデバイスを含む。クライアントデバイス106は、通常、ネットワーク102を介したデータの送受信を容易にするために、ウェブブラウザなどのユーザアプリケーションを含むが、クライアントデバイス106によって実行されるネイティブアプリケーションも、ネットワーク102を介したデータの送受信を容易にすることができる。
【0022】
電子文書とは、クライアントデバイス106においてコンテンツのセットを提示するデータである。電子文書の例は、ウェブページ、ワードプロセッシング文書、ポータブルドキュメントフォーマット(PDF)文書、画像、ビデオ、検索結果ページ、およびフィードソースを含む。モバイルデバイス、タブレットデバイス、またはデスクトップコンピューティングデバイス上にインストールされたアプリケーションなどのネイティブアプリケーション(たとえば、「アプリ」)も、電子文書の例である。電子文書は、電子文書サーバ104(「Electronic Doc Servers」)によってクライアントデバイス106に提供され得る。たとえば、電子文書サーバ104は、発行者ウェブサイトをホストするサーバを含むことができる。この例では、クライアントデバイス106は、所与の発行者ウェブページを求める要求を開始することができ、所与の発行者ウェブページをホストする電子サーバ104は、クライアントデバイス106において所与のウェブページの提示を開始する機械実行可能命令を送ることによって、要求に応答することができる。
【0023】
別の例では、電子文書サーバ104は、クライアントデバイス106がそこからネイティブアプリケーションをダウンロードできるアプリサーバを含むことができる。この例では、クライアントデバイス106は、クライアントデバイス106においてアプリをインストールするために必要とされるファイルをダウンロードすることができ、次いで、ダウンロードされたネイティブアプリケーションをクライアントデバイス106においてローカルに実行することができる。
【0024】
電子文書は様々なコンテンツを含むことができる。たとえば、電子文書は、電子文書自体の中にあり、かつ/または経時的に変化しない、静的コンテンツ(たとえば、テキストまたは他の指定されたコンテンツ)を含むことができる。電子文書はまた、経時的にかつ/または要求ごとに変化することがある、動的コンテンツを含むこともできる。たとえば、所与の電子文書の発行者は、電子文書の部分にポピュレートするために使用されるデータソースを保持することができる。この例では、所与の電子文書は、所与の電子文書がクライアントデバイス106によって処理される(たとえば、レンダリングまたは実行される)ときにデータソースにコンテンツを要求することをクライアントデバイス106に行わせるタグまたはスクリプトを含むことができる。クライアントデバイス106は、データソースから取得されたコンテンツを所与の電子文書の中に統合して、データソースから取得されたコンテンツを含む複合電子文書を作成する。
【0025】
いくつかの状況では、所与の電子文書は、デジタルコンポーネント配信システム110を参照するデジタルコンポーネントタグまたはデジタルコンポーネントスクリプトを含むことができる。これらの状況では、デジタルコンポーネントタグまたはデジタルコンポーネントスクリプトは、所与の電子文書がクライアントデバイス106によって処理されるときにクライアントデバイス106によって実行される。デジタルコンポーネントタグまたはデジタルコンポーネントスクリプトの実行は、ネットワーク102を介してデジタルコンポーネント配信システム110へ送信される、デジタルコンポーネントを求める要求112(「コンポーネント要求」と呼ばれる)を生成するようにクライアントデバイス106を構成する。たとえば、デジタルコンポーネントタグまたはデジタルコンポーネントスクリプトは、ヘッダおよびペイロードデータを含むパケット化されたデータ要求をクライアントデバイス106が生成することを可能にすることができる。コンポーネント要求112は、デジタルコンポーネントがそこに要求されつつあるサーバの名称(または、ネットワークロケーション)、要求するデバイス(たとえば、クライアントデバイス106)の名称(またはネットワークロケーション)、および/またはデジタルコンポーネント配信システム110が、要求に応答して提供される1つまたは複数のデジタルコンポーネントを選択するために使用できる情報などの特徴を指定する、イベントデータを含むことができる。コンポーネント要求112は、ネットワーク102(たとえば、電気通信ネットワーク)を介してデジタルコンポーネント配信システム110のサーバへ、クライアントデバイス106によって送信される。
【0026】
コンポーネント要求112は、要求されつつある電子文書、およびデジタルコンポーネントがそこにおいて提示され得る電子文書のロケーションの特性などの、他のイベント特徴を指定するイベントデータを含むことができる。たとえば、デジタルコンポーネントがその中で提示される電子文書(たとえば、ウェブページ)への参照(たとえば、URL)を指定するイベントデータ、デジタルコンポーネントを提示するために利用可能な電子文書の利用可能なロケーション、利用可能なロケーションのサイズ、および/またはロケーションの中での提示にとって適格な媒体タイプが、デジタルコンポーネント配信システム110に提供され得る。同様に、電子文書に関連するキーワード(「文書キーワード」)または電子文書によって参照されるエンティティ(たとえば、人、場所、または物)を指定するイベントデータも、コンポーネント要求112の中に(たとえば、ペイロードデータとして)含めることができ、電子文書を伴う提示にとって適格なデジタルコンポーネントの識別を容易にするためにデジタルコンポーネント配信システム110に提供され得る。イベントデータはまた、検索結果ページを取得するためにクライアントデバイス106からサブミットされた検索クエリ、ならびに/あるいは検索結果および/または検索結果の中に含まれるテキストコンテンツ、可聴コンテンツ、または他の視覚コンテンツを指定するデータを含むことができる。
【0027】
コンポーネント要求112はまた、クライアントデバイスのユーザが提供した情報、コンポーネント要求がそこからサブミットされた州もしくは地域を示す地理的情報、またはデジタルコンポーネントがその中に表示される環境に対するコンテキストを提供する他の情報(たとえば、コンポーネント要求の時刻、コンポーネント要求の曜日、モバイルデバイスまたはタブレットデバイスなどの、デジタルコンポーネントがそこで表示されるデバイスのタイプ)などの、他の情報に関係するイベントデータを含むことができる。コンポーネント要求112は、たとえば、パケット型ネットワークを介して送信することができ、コンポーネント要求112自体は、ヘッダおよびペイロードデータを有するパケット化されたデータとしてフォーマットされ得る。ヘッダはパケットの宛先を指定することができ、ペイロードデータは上記で説明した情報のうちのいずれかを含むことができる。
【0028】
1つまたは複数のデジタルコンポーネント配信サーバ(たとえば、コンピューティングハードウェアとソフトウェアとの組合せ)を含む配信システム110は、コンポーネント要求112の受信および/またはコンポーネント要求112の中に含まれる情報の使用に応答して、所与の電子文書とともに提示されるデジタルコンポーネントを選ぶ。いくつかの実装形態では、デジタルコンポーネントは、デジタルコンポーネントの遅延した選択によって引き起こされる場合があるエラーを回避するために、1秒未満で選択される。たとえば、コンポーネント要求112に応答してデジタルコンポーネントを提供する際の遅延は、クライアントデバイス106における電子文書ロードエラーをもたらす場合があり、または電子文書の他の部分がクライアントデバイス106において提示された後でも、電子文書の部分をポピュレートされないままにしておく場合がある。また、デジタルコンポーネントをクライアントデバイス106に提供する際の遅延が大きくなるにつれて、デジタルコンポーネントがクライアントデバイス106に送達されるときに電子文書がもはやクライアントデバイス106において提示されない可能性が高く、それによって、電子文書を伴うユーザのエクスペリエンスに悪影響を及ぼす。さらに、デジタルコンポーネントを提供する際の遅延は、たとえば、デジタルコンポーネントが提供されるときに電子文書がもはやクライアントデバイス106において提示されない場合、デジタルコンポーネントの失敗した送達をもたらす場合がある。
【0029】
いくつかの実装形態では、配信システム110は、たとえば、相互接続されるとともに要求112に応答してデジタルコンポーネントを識別および配信する、サーバおよび複数のコンピューティングデバイスのセット114を含む分散コンピューティングシステムの中に実装される。複数のコンピューティングデバイスのセット114は、一緒に動作して、何百万もの利用可能なデジタルコンポーネント(DC1~x)のコーパスの中から、電子文書の中で提示されるのに適格なデジタルコンポーネントのセットを識別する。何百万もの利用可能なデジタルコンポーネントは、たとえば、デジタルコンポーネントデータベース116の中でインデックス付けされ得る。各デジタルコンポーネントインデックスエントリは、対応するデジタルコンポーネントを参照することができ、かつ/または対応するデジタルコンポーネントの配信/送信に寄与する(たとえば、条件付けまたは制限する)配信パラメータ(DP1~DPx)を含むことができる。たとえば、配信パラメータは、デジタルコンポーネントの配信パラメータのうちの1つに整合する(たとえば、厳密に、または事前指定されたいくらかの類似性レベルのいずれかで)少なくとも1つの基準をコンポーネント要求が含むことを必要とすることによって、デジタルコンポーネントの送信に寄与することができる。
【0030】
いくつかの実装形態では、特定のデジタルコンポーネントに対する配信パラメータは、デジタルコンポーネントが提示にとって適格であるために、(たとえば、電子文書、文書キーワード、またはコンポーネント要求112の中で指定された用語によって)整合しなければならない配信キーワードを含むことができる。配信パラメータはまた、デジタルコンポーネントが提示にとって適格であるために、特定の地理的領域(たとえば、国または州)を指定する情報、および/またはコンポーネント要求112が特定のタイプのクライアントデバイス(たとえば、モバイルデバイスまたはタブレットデバイス)において発信されたことを指定する情報を、コンポーネント要求112が含むことを必要とする場合がある。
【0031】
適格なデジタルコンポーネントの識別は、次に複数のコンピューティングデバイスのセット114内のコンピューティングデバイスの間で割り当てられる、複数のタスク117a~117cにセグメント化することができる。たとえば、セット114の中の異なるコンピューティングデバイスは各々、デジタルコンポーネントデータベース116の異なる部分を分析して、コンポーネント要求112の中に含まれる情報に整合する配信パラメータを有する様々なデジタルコンポーネントを識別することができる。いくつかの実装形態では、セット114の中の所与の各コンピューティングデバイスは、異なるデータ次元(または、次元のセット)を分析することができ、分析の結果(Res1~Res3)118a~118cをデジタルコンポーネント配信システム110に戻して渡す(たとえば、送信する)ことができる。たとえば、セット114の中のコンピューティングデバイスの各々によって提供される結果118a~118cは、コンポーネント要求、および/またはいくつかの配信パラメータを有するデジタルコンポーネントのサブセットに応答して、配信にとって適格なデジタルコンポーネントのサブセットを識別してよい。デジタルコンポーネントのサブセットの識別は、たとえば、イベントデータを配信パラメータと比較すること、およびイベントデータの少なくともいくつかの特徴に整合する配信パラメータを有するデジタルコンポーネントのサブセットを識別することを含むことができる。
【0032】
デジタルコンポーネント配信システム110は、複数のコンピューティングデバイスのセット114から受信された結果118a~118cを統合し、統合された結果に関連する情報を使用して、要求112に応答して提供される1つまたは複数のデジタルコンポーネントを選択する。たとえば、デジタルコンポーネント配信システム110は、1つまたは複数のコンポーネント評価プロセスの成果に基づいて、勝利デジタルコンポーネントのセット(1つまたは複数のデジタルコンポーネント)を選択することができる。今度は、デジタルコンポーネント配信システム110は、クライアントデバイス106が勝利デジタルコンポーネントのセットを所与の電子文書の中に統合することを可能にする応答データ120(たとえば、応答を表すデジタルデータ)を生成することができ、ネットワーク102を介してそれを送信することができ、その結果、勝利デジタルコンポーネントのセットおよび電子文書のコンテンツがクライアントデバイス106のディスプレイにおいて一緒に提示される。
【0033】
いくつかの実装形態では、クライアントデバイス106は、応答データ120の中に含まれる命令を実行し、応答データ120は、1つまたは複数のデジタルコンポーネントサーバから勝利デジタルコンポーネントのセットを取得するようにクライアントデバイス106を構成し、またクライアントデバイス106がそうすることを可能にする。たとえば、応答データ120の中の命令は、ネットワークロケーション(たとえば、ユニフォームリソースロケータ(URL))、およびクライアントデバイス106に、サーバ要求(SR)121をデジタルコンポーネントサーバ108に送信させて、デジタルコンポーネントサーバ108から所与の勝利デジタルコンポーネントを取得させる、スクリプトを含むことができる。要求に応答して、デジタルコンポーネントサーバ108は、サーバ要求121の中(たとえば、複数のデジタルコンポーネントを記憶するデータベース内)で指定された所与の勝利デジタルコンポーネントを識別し、クライアントデバイス106において電子文書の中で所与の勝利デジタルコンポーネントを提示するデジタルコンポーネントデータ(DCデータ)122をクライアントデバイス106へ送信する。
【0034】
従来システムは、クライアントデバイス106における提示のために、事前構成されたデジタルコンポーネントを提供し得る。たとえば、デジタルコンポーネントデータ122は、デジタルコンポーネントがクライアントデバイス106においてどのように提示されるのかを規定する、コンテンツ資産の事前構成された配置を含む、デジタルコンポーネントを含んでよい。この例では、クライアントデバイス106もクライアントデバイス上で実行中のアプリケーションも、デジタルコンポーネント内で提示された様々なコンテンツ資産のロケーションを再配置すること、またはデジタルコンポーネントの様々な要素の外観および感触を修正することが可能でない。むしろ、クライアントデバイス106上で実行中のアプリケーション内での提示のために、事前構成されたデジタルコンポーネントが提供されると、アプリケーションは、事前構成されたデジタルコンポーネントを、受信されたように単に提示する。
【0035】
ネイティブアプリケーション(または、他の電子文書)内での提示のための、事前構成されたデジタルコンポーネントの使用は、デジタルコンポーネントの提示をカスタマイズして、アプリケーションの視覚的な外観を補完するための、さらにはクライアントデバイス106の表示特性に基づいてコンテンツ資産を調整するための、アプリケーション開発者(または、他の電子文書の開発者)の能力を限定する。このことは、途絶されるか、混乱しているか、判読しにくいか、または別様にユーザによって十分に知覚されることが可能でないデジタルコンポーネントの提示につながる場合がある。伝達することをデジタルコンポーネントが意図する情報を伝達できないデジタルコンポーネントを選択および配信するために、大幅なネットワークリソースが使用中であるので、このことは技術的な非効率性につながる場合がある。このことは、ネットワーク102を介してこれらの判読しにくいデジタルコンポーネントを送信することによって、浪費されたネットワーク帯域幅につながり、デジタルコンポーネントデータベース116内でデジタルコンポーネントを記憶することによって、また送達されたデジタルコンポーネントをクライアントデバイスにおいて記憶することによって、浪費されたメモリにつながり、本来なら有用な情報が提示されている場合がある場所での判読しにくいデジタルコンポーネントの提示を通じた、クライアントデバイスにおける限定された表示空間の浪費につながる。
【0036】
いくつかの状況では、ネイティブアプリケーション(または、他の電子文書)は、コンテンツ資産の未収集のセットを受け入れ、得られたデジタルコンポーネントとしてそれらのコンテンツ資産をレンダリングするように構成され得る。これらの状況では、アプリケーションは、得られたデジタルコンポーネントが提示される環境に基づいてコンテンツ資産を配置およびフォーマットするためのフレキシビリティがもたらされ、その結果、得られたデジタルコンポーネントは、ユーザエクスペリエンスに対して、より判読しやすく、さほど途絶されない。追加として、デジタルコンポーネントをレンダリングするためのアプリケーションの能力は、事前構成されたデジタルコンポーネントがアプリケーションに配信されるときに遭遇され得る技術的な非効率性をなくす助けとなることができる。
【0037】
得られたデジタルコンポーネントの中にコンテンツ資産を合成するための能力をアプリケーションに与えることは、従来の事前構成されたデジタルコンポーネントにまさる利点をもたらすことができ、そのことはまた、他の問題につながる場合がある。たとえば、アプリケーション開発者が、得られたデジタルコンポーネントをレンダリングすることを担当するレンダリングコードを正しく実装しない場合、得られたデジタルコンポーネントは、事前構成されたデジタルコンポーネントを参照しながら上記で説明した問題と類似の問題を有する場合があり、そのことも上記で説明した技術的な同じ非効率性につながる場合がある。追加として、レンダリングコードが正しく実装されない場合、デジタルコンポーネントは、一緒に提示されないことがあり、さらに浪費されたネットワーク帯域幅、処理リソース、およびメモリリソースにつながる。
【0038】
上記で説明した潜在的な問題を悪化させることとは、いくつかのシステムが、アプリケーションがユーザにリリースされる前にアプリケーション開発者が彼らのレンダリングコードをテストするためのいかなる方法も提供しないという事実である。むしろ、アプリケーション開発者は、DCDS110の仕様に準拠する、得られたデジタルコンポーネントを生成すると彼らが信じるレンダリングコードを実装すること、アプリケーションをユーザに配信すること、および彼らのレンダリングコードが準拠デジタルコンポーネント(すなわち、DCDSの仕様に準拠する、得られたデジタルコンポーネント)を生成中でない場合にDCDS110からのフィードバックを待つことを、必要とされる。このことも、上記で説明した問題(たとえば、浪費されたネットワーク帯域幅、浪費されたメモリ、および浪費された表示空間)と類似の技術的な問題につながる場合がある、判読しにくいか、または別様に欠陥のある、デジタルコンポーネントをもたらす場合がある。このことも、レンダリングコードの中のエラーを修正するために新たなバージョンのアプリケーションをダウンロードすることをユーザが必要とされる場合、浪費された追加のネットワーク帯域幅につながる場合がある。
【0039】
以下でより詳細に説明するように、クライアントデバイスのSDKは、ユーザへのアプリケーションの配信の前に、デジタルコンポーネントのレンダリングコードおよびアプリケーションレンダリングのテストを容易にするように、修正され得る。たとえば、アプリケーションが、コンテンツ資産のセットを含むテストオブジェクトを使用して、デジタルコンポーネントとも呼ばれるテストデジタルコンポーネントをレンダリングするとき、SDKは、テストデジタルコンポーネント(たとえば、テストオブジェクトの中のコンテンツ資産のセットを使用して生成されるデジタルコンポーネント)のレンダリング属性を指定する信号のセットを収集することができる。SDKは、次いで、信号のセットを(たとえば、DCDSによって指定される)準拠要件のセットと比較する検証プロセスを呼び出すことができ、準拠要件が満たされるかどうかを決定する。準拠要件が満たされない場合、アプリケーション開発者がレンダリングコードを改訂できるように、テストデジタルコンポーネントのレンダリングを伴う任意の問題をアプリケーション開発者に知らせるオーバーレイがアプリケーション内で生成および提示され得る。このテストは、準拠要件のすべてを満たすテストデジタルコンポーネントをレンダリングコードが作り出すまで継続することができる。アプリケーション開発者は、次いで、レンダリングコードによってレンダリングされるデジタルコンポーネントが準拠要件に準拠するという信頼性を伴って、彼らのアプリケーションを配信することができ、上記で説明した技術的な問題を回避することができる。
【0040】
図2Aは、準拠デジタルコンポーネントを生成するレンダリングコードをテストすることを示すブロック図である。
図2Aにおいて、クライアントデバイス106が、DCDS110へ送信されるテスト要求202を開始する。テスト要求は、クライアントデバイス106上で実行中のアプリケーションの中で提示(すなわち、表示)すべきコンテンツを受信するための要求である。テスト要求は、たとえば、アプリケーション開発者がアプリケーションと対話する(たとえば、アプリケーションを起動する)ときにトリガすることができ、アプリケーションを操作して、デジタルコンポーネントがその中で提示され得るスロットをアプリケーションが提供する(または、それを別様に利用可能にする)状態にする。たとえば、デジタルコンポーネントのために確保されたスロットの単一のピクセルが、クライアントデバイス106のディスプレイの中に存在するとき、スクリプトがトリガされ得、そのことが、スロットの中で提示されるべきコンテンツを求める要求を生成および送信する。
【0041】
いくつかの状況では、テスト要求は、テストデジタルコンポーネントに対応する一意識別子を含む。テストデジタルコンポーネントは、アプリケーションのレンダリングコードをテストするために、アプリケーションへの送達のために確保されているデジタルコンポーネントであり得る。たとえば、テストデジタルコンポーネントは、テストする間にクライアントデバイスのSDKによって確実に評価され得るコンテンツ資産の知られているセットを含むことができる。一意識別子は、テストデジタルコンポーネントを一意に識別する英数字の指定されたセットであり得、その結果、アプリケーション開発者は、一意識別子を使用してテストデジタルコンポーネントを要求するために、デジタルコンポーネントのために確保されたスロットの供給によってトリガされるスクリプトを構成することができる。
【0042】
いくつかの実装形態では、テストデジタルコンポーネントの一意識別子を使用するのではなく、またはそのことに加えて、アプリケーション開発者は、クライアントデバイス106をテストデバイスとして事前登録するかまたはそうでなければ識別することができる。たとえば、アプリケーション開発者は、DCDS110のユーザインターフェースと対話することができ、クライアントデバイスのデバイス識別子を供給することによって、クライアントデバイス106をテストデバイスとして登録することができる。のちほど、DCDS110がクライアントデバイス106からテスト要求202を受信すると、DCDS110は、(たとえば、デバイス識別子がテスト要求202の中に含まれることに基づいて)クライアントデバイス106をテストデバイスとして識別することができる。
【0043】
DCDS110は、クライアントデバイス106からテスト要求202を受信し、テスト要求202に応答して、クライアントデバイス106に提供すべきテストオブジェクト204を選択する。テストオブジェクトは、テストデジタルコンポーネントをレンダリングするために必要とされるコンテンツ資産のセットを含む。たとえば、コンテンツ資産のセットは、1つまたは複数の画像、1つまたは複数のビデオ、テキストコンテンツ、対話型ユーザインターフェース要素、あるいは他のコンテンツ資産を含んでよい。コンテンツ資産の各々は、コンテンツ資産の中に含まれるコンテンツのタイプを識別する資産コード、および/またはコンテンツ資産をレンダリングすることもしくはテストデジタルコンポーネントの中にコンテンツ資産を合成することにとって有用な、他の情報によって識別され得る。
【0044】
クライアントデバイス106は、(たとえば、ネットワークを介して)DCDS110からテストオブジェクト204を取得し、クライアントデバイス106上で実行中のアプリケーションのレンダリングコード208を使用してテストデジタルコンポーネント206をレンダリングする。
図2Aに示すように、テストデジタルコンポーネント206は、2つの画像210、テキスト212、テストデジタルコンポーネントのソースを識別するソース情報要素214、および対話型要素216とのユーザ対話に応答してテストデジタルコンポーネントについてのより多くの情報を求める要求を開始する対話型要素216(たとえば、「さらに詳しく(learn more)」ボタン)を含む、コンテンツ資産を使用して構築される。当然、テストデジタルコンポーネント(または、任意のデジタルコンポーネント)は、追加の、ここで説明するコンテンツ資産よりも少数の、またはここで説明するコンテンツ資産とは異なるコンテンツ資産を含むことができる。
【0045】
テストデジタルコンポーネント206は、アプリケーションのネイティブコンテンツ220を有するクライアントデバイス106上で実行中のアプリケーションのインターフェース218の中で提供される(たとえば、提示されるかまたは別様に利用可能にされる)。レンダリングコード208がインターフェース218の中でテストデジタルコンポーネント206をレンダリングすると、デバッガ222は、テストデジタルコンポーネントの供給を検出するとともに検証プロセスを呼び出し、検証プロセスによってテストデジタルコンポーネントの準拠が評価される。いくつかの状況では、検証プロセスは、テストデジタルコンポーネントがディスプレイの中で実際に提示されるときにしかトリガされない。他の状況では、他のイベントが検証プロセスをトリガすることができる(たとえば、検証プロセスを呼び出すボタンとの開発者対話)。レンダリングコード208に対して別個の構成要素としてデバッガ222が示されるが、これらの2つの構成要素が、同じコードベース内に実装されてよいことに留意されたい。
【0046】
以下でより詳細に説明するように、テストデジタルコンポーネントの準拠は、テストデジタルコンポーネントのレンダリング属性(たとえば、構造属性および/または提示属性)を指定する信号のセットが、正しくレンダリングされている準拠デジタルコンポーネントの属性を指定する準拠要件のセットを満足するかどうかに基づいて評価され得る。準拠要件のセットは、DCDS110、および/または仕様のセットとのデジタルコンポーネントの準拠を保証することを担当する別のシステムもしくはエンティティによって規定され得る。
【0047】
いくつかの実装形態では、デバッガ222は、クライアントデバイス106上にインストールされているSDKの中に実装され得る。たとえば、デバッガ222は、DCDS110、またはデジタルコンポーネントをクライアントデバイス106に提供する別のシステムによって提供される、SDKの中に含まれ得る。これらの実装形態では、テスト対象のアプリケーション(たとえば、レンダリングコード208を実行中のアプリケーション)は、テストデジタルコンポーネントがインターフェース218の中でレンダリングされていることを示す信号をSDKに提供することができる。この表示に応答して、SDKは、レンダリングコード208によってレンダリングされたときのテストデジタルコンポーネントの提示および/または構造を特徴づける信号のセットを収集する(または、別様に取得する)ことができる。信号のセットは、たとえば、異なるコンテンツ資産を提示するために使用される異なるビューの階層的な関連付け(たとえば、コンテンツ資産と親ビューおよび子ビューとの間でバインドすること)、テストデジタルコンポーネント206内での異なるコンテンツ資産のロケーション、インターフェース218を表示するために使用中のディスプレイのサイズ、インターフェース218および/もしくはディスプレイ内でのテストデジタルコンポーネント206の相対的な提示ロケーション、テストデジタルコンポーネント206の提示サイズ/解像度、テストデジタルコンポーネント206内でのコンテンツ資産のロケーション、ならびに/またはテストデジタルコンポーネント206によって利用される対話型機能に関係するステータス情報(たとえば、クリックイベント、タッチイベント、タッチリスナーを実行する)を指定することができる。
【0048】
検証プロセスは、レンダリングコード208を使用してレンダリングされるテストデジタルコンポーネント206が準拠要件を満足するかどうかを決定するために、信号のセットを準拠要件のセットと比較する。本例では、
図2Aの中で提示されるテストデジタルコンポーネント206が準拠要件のすべてを満足し、その結果、テストデジタルコンポーネント206が準拠デジタルコンポーネントであるものと見なされることが想定される。
【0049】
いくつかの実装形態では、SDKは、検証プロセスの動作を実行することによって検証プロセスを呼び出すことができる。いくつかの実装形態では、検証プロセスは、クライアントデバイス106にダウンロードされているスクリプトへのコールを通じてSDKによって呼び出される。SDKとは別個のスクリプトの中に検証プロセスを実装させることは、SDKを更新する必要なく検証プロセスを修正するための能力を与える。たとえば、アプリケーションが起動されると、更新済みのバージョンのスクリプトをダウンロードすることによって検証プロセスへの任意の更新が実施され得るような、SDKによる使用のためのスクリプトがダウンロードまたは起動され得る。これらの実装形態では、SDKは、スクリプトが検証プロセスを実行するとともにアプリケーションから取得された信号のセットをスクリプトに渡すことを要求することができる。スクリプトが検証プロセス(たとえば、アプリケーションから取得された信号のセットを準拠要件のセットと比較すること)を完了すると、スクリプトは、検証プロセスの結果をSDKに戻して渡すことができ、SDKは、次いで、検証プロセスの結果を報告するオーバーレイを生成することができる。いくつかの状況では、SDKは、オーバーレイのためのシェル文書をサーバ(たとえば、DCDS110)に要求し、検証プロセスの結果をシェル文書にポピュレートし、ポピュレートされたシェル文書をインターフェース218の中のオーバーレイとして提供する。
【0050】
たとえば、テストデジタルコンポーネント206が準拠デジタルコンポーネントであることをデバッガ222が決定すると、デバッガは、インターフェース218の中で提供され、かつ準拠問題が検出されなかったことをアプリケーション開発者に知らせる、オーバーレイ224を生成することができる。この情報を用いて、アプリケーション開発者は、アプリケーションをダウンロードする様々なユーザによってアプリケーションが使用されるとレンダリングコード208が準拠デジタルコンポーネントを生成することを知って、彼らのアプリケーションをリリースすることに進むことができる。
【0051】
図2Bは、非準拠デジタルコンポーネントを生成するレンダリングコードをテストすることを示すブロック図である。
図2Bにおいて、クライアントデバイス106は、DCDS110へ送信されるテスト要求202を再び開始し、
図2Aを参照しながら上記で説明した方法と同様の方法で、テストオブジェクト204がクライアントデバイス106に提供される。デバッガ222は、テストデジタルコンポーネント206についての信号のセットをアプリケーションから再び収集し、検証プロセスを呼び出す。
【0052】
図2Bにおいて、テストデジタルコンポーネント206を特徴づける信号のセットは、画像210がオーバーラップしておりソース情報要素214によって部分的に遮られることを明らかにする。この例では、レンダリングコード208によってレンダリングされたときにテストデジタルコンポーネント206のこれらのレンダリング属性を識別する信号のセットが準拠要件のセットを満足できないことを想定する。準拠要件のうちの1つまたは複数が満たされないという決定に応答して、デバッガ222(たとえば、SDK)は、アプリケーションのインターフェース218の中で提示される非準拠オーバーレイ250を生成および提供することができる。非準拠オーバーレイ250は、デバッガが、レンダリングコード208によってレンダリングされたテストデジタルコンポーネント206を伴う準拠問題を識別したことを、アプリケーション開発者に知らせるデータを含む。非準拠オーバーレイ250は、アプリケーション開発者による、対話型要素を用いた対話に応答して、デバッガ222によって識別された問題についての追加の情報を提供する、対話型要素(たとえば、「問題を参照(See Issues)」リンク)を含む。したがって、アプリケーション開発者は、デバッガ222によって識別された問題に関する情報、および/またはアプリケーション開発者がレンダリングコード208を修正することによってその問題をどのように修正できるのかを指定する情報が提供され得る。
【0053】
非準拠オーバーレイ250の対話型要素を用いた対話に応答してアプリケーション開発者に提供され得る情報の例は、テストデジタルコンポーネント206内でのコンテンツ資産のレイアウトが、ユーザに偶発的にテストデジタルコンポーネントをクリック(または、タップ)させることがあることを示す情報を含む。その情報はまた、テストデジタルコンポーネントの解像度が低すぎるときにアプリケーション開発者に知らせることができ、その結果、DCDS110は、レンダリングコード208を修正することなくアプリケーションがユーザに配信される場合、デジタルコンポーネントをアプリケーションに配信しない。その情報はまた、消失したコンテンツ資産があるときにアプリケーション開発者に知らせることができる。たとえば、
図2Bにおいて、テストデジタルコンポーネント206は、テストオブジェクト204の中に含まれ、かつ
図2Aにおいて提示した準拠デジタルコンポーネントの中で提示された、対話型要素216を消失している。その情報はまた、特定のコンテンツ資産がクリック可能にされることを準拠要件が禁止するとき、その特定のコンテンツ資産をクリック可能にした方法でテストデジタルコンポーネント206がレンダリングされていることを、アプリケーション開発者に知らせることができる。この情報のすべては、
図2Aに示すように、準拠デジタルコンポーネントの形態でコンテンツ資産をレンダリングするように、アプリケーション開発者がレンダリングコード208を修正することを可能にする。
【0054】
図3は、レンダリングコードの準拠をテストするための例示的なプロセス300のフローチャートである。プロセス300は、1つまたは複数のコンピューティングデバイスによって実行され得る。たとえば、プロセス300の動作は、クライアントデバイスおよび/またはクライアントデバイス上で実行中のSDKによって実行され得る。プロセス300の動作はまた、非一時的コンピュータ可読媒体上に記憶された命令として実装することができ、1つまたは複数のサーバ(または、他のコンピューティングデバイス)によって命令が実行されると、命令は1つまたは複数のサーバにプロセス300の動作を実行させる。
【0055】
アプリケーションに提供かつ/またはアプリケーションの中で提示するためのコンテンツを求める要求が、サーバへ送信される(302)。いくつかの実装形態では、コンテンツを求める要求は、ネイティブアプリケーションの中に実装されたレンダリングコードの動作をテストするために使用され得るテストオブジェクトを求める要求である。テストオブジェクトは、テストデジタルコンポーネントをレンダリングするために必要とされるコンテンツ資産を含み、テストデジタルコンポーネントは、簡単にデジタルコンポーネントとも呼ばれる。たとえば、テストオブジェクトは、画像、テキスト、ビデオ、オーディオ、または対話型要素のうちの1つまたは複数を含むことができる。コンテンツ資産の各々は、各コンテンツ資産の資産タイプを識別する情報、および/またはコンテンツ資産を準拠デジタルコンポーネントの中に合成するために使用され得る他の情報を含むことができる。
【0056】
いくつかの実装形態では、コンテンツを求める要求は、要求がそのテストオブジェクト用であることを示す一意識別子を含む。たとえば、上記で説明したように、一意識別子を含むコンテンツを求める要求が、テストオブジェクトを求める要求を構成するように、一意識別子によってテストオブジェクトが識別され得る。これらの状況では、要求は、(たとえば、DCDS110の)サーバによって受信され、要求がアプリケーションの中で提示するためのコンテンツ用であることを決定する。サーバはまた、コンテンツを求める要求がテスト環境に対応する識別子を含むことを決定する。たとえば、サーバは、要求がテストオブジェクトに対応する一意識別子を含むことを決定することができる。コンテンツを求める要求がテスト環境に対応する一意識別子を含むという決定に応答して、サーバは、デジタルコンポーネントをレンダリングするために必要とされるコンテンツ資産を含むテストオブジェクトを選択し、コンテンツ要求に応答してテストオブジェクトをクライアントデバイスに提供する。
【0057】
いくつかの実装形態では、コンテンツを求める要求は、要求をサブミットするクライアントデバイスをアプリケーション開発者のテストデバイスとして識別するために使用され得る情報を含む。たとえば、上記で説明したように、アプリケーション開発者は、彼らのデバイスをテストデバイスとしてコンテンツ配信システム(たとえば、
図1のDCDS110)に事前登録することができる。クライアントデバイスが、コンテンツを求める要求を生成するとき、要求は、クライアントデバイスのデバイス識別子、および/またはテストデバイスとしてのクライアントデバイスの登録に応じて提供される登録コードを含み、その結果、要求は、登録されたテストデバイスからの、テストオブジェクトを求める要求として識別され得る。これらの状況では、要求を受信するサーバは、要求がテスト環境に対応する識別子を含むことを決定することができる。たとえば、サーバは、クライアントデバイスに対するデバイス識別子を識別することができ、登録済みのテストデバイスのリストの中にそのデバイス識別子が含まれることを決定することができる。追加または代替として、サーバは、クライアントデバイスがテストデバイスとして登録されたときに生成され、アプリケーション開発者に提供された登録コードを、要求内で識別することができる。いずれの場合も、サーバは、デバイスがテストデバイスとして識別されることに基づいて、デジタルコンポーネントをレンダリングするために必要とされるコンテンツ資産を含むテストオブジェクトを選択することができる。サーバは、次いで、クライアントデバイスがテストデバイスとして識別されることに基づいて、コンテンツを求める要求に応答してテストオブジェクトをクライアントデバイスに提供する。
【0058】
複数のコンテンツ資産を含むテストオブジェクトが受信される(304)。いくつかの実装形態では、テストオブジェクトは、アプリケーションをテストするために使用中のクライアントデバイスによって受信される。テストオブジェクトは、たとえば、クライアントデバイス上にインストールされておりアプリケーションと通信しているSDKによって、アプリケーションに渡され得る。
【0059】
クライアントデバイス上で実行中のアプリケーションによるテストデジタルコンポーネントのレンダリング、供給、および/または提示が、クライアントデバイスによって検出される(306)。いくつかの実装形態では、デジタルコンポーネントのレンダリング、供給、および/または提示は、クライアントデバイス上で実行中のソフトウェア開発キットによって検出される。デジタルコンポーネントの供給または提示は、たとえば、テストオブジェクトを使用してレンダリングされるデジタルコンポーネントが表示されるときにアプリケーションによって生成されアプリケーションによってSDKに渡される提示データに基づいて、SDKによって検出され得る。たとえば、任意のデジタルコンポーネントがアプリケーションの表示の中で供給されるかまたはそうでなければ提示されるとき、アプリケーションは、デジタルコンポーネントが生成および/または提示されていることを指定するデータを生成することができる。このデータは、同様に、テストデジタルコンポーネントが提示されるときに生成することができ、テストデジタルコンポーネントの存在をSDKに知らせるために使用され得る。
【0060】
テストデジタルコンポーネントのレンダリング属性を指定する信号のセットがアプリケーションから取得される(308)。いくつかの実装形態では、信号のセットは、テストオブジェクトのコンテンツ資産を使用してレンダリングされるデジタルコンポーネントによって提示されるコンテンツ資産の可視属性を示す、少なくとも第1の信号を含む。信号の第1のセットは、たとえば、デジタルコンポーネントの中で提示中のコンテンツ資産、テストデジタルコンポーネント内でのコンテンツ資産のロケーション、デジタルコンポーネント内で提示されるときのコンテンツ資産のサイズ、および/またはコンテンツ資産がデジタルコンポーネント内で視覚的にどのように提示されるのかについての情報を提供する他のデータを指定することができる。
【0061】
信号のセットはまた、コンテンツ資産の間の階層的な関連付けを示す第2の信号を含むことができる。たとえば、信号のセットは、コンテンツ資産がバインドされる先のユーザインターフェースビュー、および異なるユーザインターフェースビューの間の階層的な関係を指定することができる。より詳細には、信号のセットは、コンテンツ資産ごとに、コンテンツ資産がバインドされる先のユーザインターフェースビュー、およびテストデジタルコンポーネントを生成するためにレンダリングコードによって生成された異なるユーザインターフェースビューの間の階層的な関係を指定することができる。
【0062】
ユーザインターフェースビュー(または、簡単にビュー)は、ユーザインターフェースコンポーネントのためのビルディングブロックである。ビューは、スクリーン上の長方形エリアを占有し、UIコンポーネントを作成するために使用される。ビューは、他のビューに対するビューの依存関係を規定する階層的なツリー構造をなして配置される。親ビューに対するいくつかの設定は、それらの子ビュー(たとえば、階層的なツリー構造の中の、より低レベルのビュー)によって継承される。したがって、コンテンツ資産の間の階層的な関連付けは、コンテンツ資産がレンダリングコードによって正しくレンダリングされているかどうかを決定するために、第1の信号と組み合わせて使用され得る。
【0063】
検証プロセスが呼び出される(310)。いくつかの実装形態では、検証プロセスは、アプリケーションから取得された信号のセットを準拠要件のセットと比較する。準拠要件が要件とも呼ばれることに留意されたい。準拠要件のセットは、準拠デジタルコンポーネントの属性を指定する。いくつかの状況では、準拠要件のセットは、たとえば、特定のタイプのコンテンツ資産を表示するために使用されることを必要とされる特定のタイプのビュー(または、他のユーザインターフェース要素)、デジタルコンポーネント内で提示されることを必要とされるコンテンツ資産、デジタルコンポーネントおよび/もしくは特定のタイプのコンテンツ資産の最小サイズおよび/もしくは解像度、対話型要素に対する制約(たとえば、対話型であり得ない特定のタイプのコンテンツ資産、または有効化されなければならない特定の対話型要素)、指定されるビュー内でのコンテンツ資産のロケーション、ならびに/または指定されるコンテンツ資産に対するビューの必要とされる階層レベルを指定することができる。
【0064】
検証プロセスは、たとえば、モバイルデバイスまたはタブレットデバイスなどのデバイス上で実行中のSDKによって呼び出される。いくつかの状況では、検証プロセスを呼び出すことは、SDKが検証プロセスの動作(たとえば、準拠要件のセットとの信号のセットの比較)を実行することを含むことができる。いくつかの状況では、検証プロセスを呼び出すことは、SDKの一部として含まれないスクリプトによる検証プロセスの実行をSDKが要求することを含むことができる。スクリプトは、SDKと同じデバイス上にインストールすることができ、アプリケーションの起動においてまたはデバイスが電源投入されるとインスタンス化され得る。代替として、スクリプトは、(たとえば、SDKを実行中のデバイス以外の)別個のデバイス上にインストールされ得る。いずれの場合も、SDKは、準拠要件のセットに関して評価されるべき信号のセットを求める要求とともに、テストデジタルコンポーネントのレンダリング属性を指定する信号のセットをスクリプトに渡すことができる。
【0065】
信号のセットが準拠要件のセットを満足するかどうかという決定が行われる(312)。決定は、たとえば、SDKまたはSDKとは別個である(すなわち、その一部でない)スクリプトのいずれかによって、行われ得る。準拠要件のセットが満たされるかどうかを決定するために使用される評価プロセスを別個のスクリプトに実行させる潜在的な利点は、SDK全体が更新されることを必要とすることなくスクリプトが更新され得ることである。このことは、(たとえば、ポリシー変更、および/または新たに発見されたエラータイプなどの、チェックされることを必要とする新たに識別された局面に基づいて)アプリケーションを評価するために使用される評価プロセスを更新および/または修正する際に、より多くのフレキシビリティをもたらす。例として、以下の説明は、スクリプトが評価プロセスを実行することを想定するが、以下の説明はまた、検証プロセスがSDKによって実行される実装形態にも適用可能である。
【0066】
信号のセットを準拠要件のセットと比較する検証プロセスを通じて決定が行われ得る。たとえば、スクリプトは、特定の準拠要件を識別することができ、信号のセットがその特定の準拠要件を満足するかどうかを決定することができる。具体例では、準拠要件は、特定のコンテンツ資産が存在しなければならず指定された方式でSDKに首尾よく登録されなければならないことを指定することができる。この例では、スクリプトは、レンダリングコードによってレンダリングされたとき、特定のコンテンツ資産がテストデジタルコンポーネントの中に存在することを指定するデータを、信号のセットが含むかどうかを決定することができる。データが、特定のコンテンツ資産がテストデジタルコンポーネント内に存在することを指定するとき、スクリプトは、準拠要件のこの局面が満足されることを決定することができる。特定のコンテンツ資産がテストデジタルコンポーネント内に存在することを指定するデータを信号のセットが欠くとき、スクリプトは、準拠要件のこの局面が満足されないことを決定することができる。
【0067】
この例を続けると、スクリプトは、特定のコンテンツ資産が首尾よく(または、適切に)SDKに登録されたことを示すデータを信号のセットが含むかどうかをさらに決定することができる。データが、特定のコンテンツ資産がSDKに首尾よく(または、適切に)登録されたことを指定するとき、スクリプトは、準拠要件のこの局面が満足されることを決定することができる。信号のセットが、特定のコンテンツ資産がSDKに首尾よく(または、適切に)登録されたことを指定するデータを欠くとき、スクリプトは、準拠要件のこの局面が満足されないことを決定することができる。スクリプトは、準拠要件のセットの中の各要件が、テストデジタルコンポーネントのレンダリング属性を指定する信号のセットによって満たされる(たとえば、それによって満足される)かどうかを決定するために、信号のセットを評価し続けることができる。
【0068】
評価結果を出力することによってスクリプトは継続する。いくつかの実装形態では、評価結果は、テストデジタルコンポーネントが、アプリケーションのレンダリングコードによってレンダリングされたとき、準拠要件のセットに準拠するかどうかを示す。テストデジタルコンポーネントが準拠要件のセットを満たすことを評価結果が示すとき、レンダリングコードは準拠レンダリングコードとして分類される。テストデジタルコンポーネントが準拠要件のセットを満たせないことを評価結果が示すとき、レンダリングコードは非準拠レンダリングコードとして分類される。
【0069】
いくつかの実装形態では、準拠要件のセットが満たされるために、準拠要件のセットの中の別個の各要件が満足されなければならず、そのことは厳密な準拠と呼ばれる。たとえば、準拠要件のセットが準拠デジタルコンポーネントの5つの別個の要件を指定することを想定する。この例では、準拠要件のセットが満足されるために、かつレンダリングコードが準拠するものと見なされるために、厳密な準拠は、準拠要件のセットによって指定される5つの別個の要件をテストデジタルコンポーネントが含むことを示すデータを、信号のセットが含むことを必要とする。したがって、1つまたは複数の準拠要件が信号のセット(たとえば、第1の信号および第2の信号)によって満たされないことをスクリプトが決定すると、準拠要件のセットは満たされないと見なされる。
【0070】
いくつかの実装形態では、準拠要件のセットを満足するために、かつ次いで、レンダリングコード準拠を分類するために、部分的な準拠だけが必要とされる。たとえば、準拠要件を満足するために5つの要件のうちの3つだけが満たされなければならないことを想定する。この例では、テストデジタルコンポーネントが準拠要件のセットの中の5つの別個の要件のうちの少なくとも3つを満たすことを示すデータを信号のセットが含むとき、準拠要件のセットは満足され得る。
【0071】
いくつかの実装形態では、準拠要件のセットは、必須要件および随意の局面を含むことができる。必須要件は、たとえば、レンダリングされるテストデジタルコンポーネントの構造、および/またはテストデジタルコンポーネントの中で提示されるために必要とされるコンテンツに関係する、要件であり得る。随意の局面は、たとえば、テストデジタルコンポーネントのもっと感じのよい提示を示すが、テストデジタルコンポーネントが適切にレンダリングされるものと見なされるために必要とされない、要件であり得る。この状況では、信号のセットによって随意の局面が満たされない場合でも、信号のセットによって必須要件が満たされる(たとえば、満足される)とき、準拠要件のセットは満足されると見なされ得る。
【0072】
いくつかの状況では、1つまたは複数の準拠要件が満たされないという決定は、必要とされる資産がソフトウェア開発キットに含まれていないかもしくは適切に登録されていないという決定、コンテンツ資産を提示する特定のビューが指定のサイズよりも小さいこと、またはコンテンツ資産のうちの1つもしくは複数が特定のビューの境界の外側で提示されることを決定することを含むことができる。上記で説明したように、この決定は、テストデジタルコンポーネントの中で提示される資産のセット、およびコンテンツ資産の対応するレンダリング属性(たとえば、ロケーション、サイズ、および他の視覚的属性)を示す、テスト信号のセットに基づいて行われ得る。
【0073】
準拠要件のセットが信号のセットによって満たされるものと決定されると、準拠オーバーレイが生成されアプリケーションの中で提示される(314)。いくつかの実装形態では、準拠オーバーレイは、レンダリングコードによってレンダリングされたときのテストデジタルコンポーネントが準拠デジタルコンポーネントであり、その結果、レンダリングコードが準拠すると見なされることを示す。たとえば、
図2Aに示すように、準拠オーバーレイは、デバッガ(たとえば、スクリプト)によって問題が検出されなかったことを示すことができる。追加または代替として、準拠オーバーレイは、レンダリングコードが準拠することを詳細に示すことができる。
【0074】
準拠要件のセットが信号のセットによって満たされないものと決定されると、非準拠オーバーレイが生成されアプリケーションの中で提示される(316)。たとえば、1つまたは複数の準拠要件が満たされないという決定に応答して、SDKは非準拠オーバーレイを提供することができる。非準拠オーバーレイは、テストデジタルコンポーネントが1つまたは複数の準拠要件に準拠できず、その結果、レンダリングコードが準拠しないものと見なされることを示す警報を、アプリケーション内で提示することができる。たとえば、
図2Bに示すように、非準拠オーバーレイは、デバッガ(たとえば、スクリプト)によって問題が検出されたことを示すことができる。追加または代替として、準拠オーバーレイは、レンダリングコードが準拠しないことを詳細に示すことができる。
【0075】
いくつかの実装形態では、非準拠オーバーレイは、信号のセットによって満たされない準拠要件についての情報でポピュレートされている文書を使用して生成される。たとえば、準拠要件のセットが満たされなかったことを示す情報を(たとえば、スクリプトから)SDKが取得すると、SDKは、指定されたロケーション(たとえば、指定されたネットワークロケーション)からフォーム文書を取得することができる。SDKは、次いで、テストデジタルコンポーネントが準拠要件のうちの1つまたは複数に準拠できないことを示す情報を文書にポピュレートすることができる。
【0076】
いくつかの実装形態では、非準拠オーバーレイは対話型要素を含むことができる。たとえば、非準拠オーバーレイは、レンダリングされたテストデジタルコンポーネントとともに検出された問題についてのより多くの詳細を提示するページの提示を引き起こす、リンク、ボタン、または別の対話型ユーザインターフェース要素を含むことができる。
【0077】
非準拠オーバーレイとの対話が検出される(318)。いくつかの実装形態では、非準拠オーバーレイとの対話は、非準拠オーバーレイの中に含まれる対話型要素の上でタップまたはクリックすることを検出することによって検出される。
【0078】
非準拠オーバーレイとの対話の検出に応答して、追加の詳細がアプリケーションの中でユーザに提示される。いくつかの実装形態では、追加の詳細は、デジタルコンポーネントが1つまたは複数の準拠要件にどのように準拠できないのかを指定することができる。たとえば、非準拠オーバーレイの対話型要素との対話に応答して提示される詳細は、コンテンツ資産のレイアウトが、アプリケーションのレンダリングコードによってレンダリングされるデジタルコンポーネント上での偶発的なクリックにつながる可能性があるかどうかを示すことができる。その詳細はまた、レンダリングコードによってレンダリングされるテストデジタルコンポーネントの解像度が低すぎるかどうかを示すことができる。その詳細はまた、レンダリングコードによってレンダリングされるデジタルコンポーネントの中で提示中でない、必要とされる任意のコンテンツ資産(たとえば、デジタルコンポーネントのソース)を示すことができる。その詳細はまた、対話型であるがそうあるべきではない、任意のコンテンツ資産を識別する情報を示すことができる。その詳細はまた、指定される任意のビューが小さすぎるときを示すことができる。上記で列挙した詳細のうちのいずれかまたはすべてが、非準拠オーバーレイとの対話に続いて提示される情報に含めることができ、かつ/またはそうした情報から除外することができる。
【0079】
図4は、クライアントデバイス上で実行中のアプリケーションにテストオブジェクトを提供するための例示的なプロセス400のフローチャートである。プロセス400の動作は、1つまたは複数のコンピューティングデバイスによって実行され得る。いくつかの実装形態では、プロセス400の動作は、非一時的コンピュータ可読媒体上に記憶された命令として実装され得る。命令の実行は、1つまたは複数のコンピューティングデバイスにプロセス400の動作を実行させることができる。
【0080】
クライアントデバイスをテストデバイスとして識別する登録メッセージが受信される(402)。上記で説明したように、クライアントデバイスをテストデバイスとして識別するメッセージは、デバイスを識別する一意デバイス識別子を含むことができる。デバイスは、一意デバイス識別子を使用してテストデバイスとして登録され得る。
【0081】
コンテンツを求める要求が受信される(404)。コンテンツを求める要求は、テスト対象のアプリケーションの中で提示するためのコンテンツを求める要求であり得る。いくつかの実装形態では、要求は、クライアントデバイスのデバイス識別子、および/またはテストデバイスとしてのクライアントデバイスの登録に応じて提供される登録コードを含み、その結果、要求は、登録されたテストデバイスからの、テストオブジェクトを求める要求として識別され得る。これらの状況では、要求を受信するサーバは、要求がテスト環境に対応する識別子を含むことを決定することができる。たとえば、サーバは、クライアントデバイスに対するデバイス識別子を識別することができ、登録済みのテストデバイスのリストの中にそのデバイス識別子が含まれることを決定することができる。追加または代替として、サーバは、クライアントデバイスがテストデバイスとして登録されたときに生成されアプリケーション開発者に提供された登録コードを、要求内で識別することができる。
【0082】
いくつかの実装形態では、コンテンツを求める要求は、要求がそのテストオブジェクト用であることを示す一意識別子を含む。たとえば、上記で説明したように、テストオブジェクトは、一意識別子によって識別され得、その結果、一意識別子を含むコンテンツを求める要求は、テストオブジェクトを求める要求を構成する。これらの状況では、要求は、(たとえば、DCDS110の)サーバによって受信され、要求がアプリケーションの中で提示するためのコンテンツ用であることを決定する。サーバはまた、コンテンツを求める要求がテスト環境に対応する識別子を含むことを決定する。たとえば、サーバは、要求がテストオブジェクトに対応する一意識別子を含むことを決定することができる。コンテンツを求める要求がテスト環境に対応する一意識別子を含むという決定に応答して、サーバは、テストデジタルコンポーネントをレンダリングするために必要とされるコンテンツ資産を含むテストオブジェクトを選択し、コンテンツ要求に応答してテストオブジェクトをクライアントデバイスに提供する。
【0083】
要求に応答して、コンテンツ資産を含むテストオブジェクトが選択される(406)。上記で説明したように、選択されるテストオブジェクトは、レンダリングコードがテストデジタルコンポーネントをレンダリングするために必要とされるコンテンツ資産を含むことができる。
【0084】
要求に応答してテストオブジェクトがデバイスに提供される(408)。テストオブジェクトは、レンダリングされていない形態でデバイスに提供される。すなわち、別個のコンテンツ資産はレンダリングされておらず、テストデジタルコンポーネントの形態で配置されている。むしろ、別個のコンテンツ資産はテストオブジェクトの中に含まれ、デバイスにおいて実行中のネイティブアプリケーションのレンダリングコードによってレンダリングするためにデバイスに提供される。
【0085】
図5は、上記で説明した動作を実行するために使用され得る例示的なコンピュータシステム500のブロック図である。システム500は、プロセッサ510、メモリ520、記憶デバイス530、および入力/出力デバイス540を含む。構成要素510、520、530、および540の各々は、たとえば、システムバス550を使用して相互接続され得る。プロセッサ510は、システム500内での実行のために、命令を処理することが可能である。一実装形態では、プロセッサ510はシングルスレッドプロセッサである。別の実装形態では、プロセッサ510はマルチスレッドプロセッサである。プロセッサ510は、メモリ520の中または記憶デバイス530上に記憶された命令を処理することが可能である。
【0086】
メモリ520は、情報をシステム500内に記憶する。一実装形態では、メモリ520はコンピュータ可読媒体である。一実装形態では、メモリ520は揮発性メモリユニットである。別の実装形態では、メモリ520は不揮発性メモリユニットである。
【0087】
記憶デバイス530は、システム500用の大容量記憶装置を設けることが可能である。一実装形態では、記憶デバイス530はコンピュータ可読媒体である。様々な異なる実装形態では、記憶デバイス530は、たとえば、ハードディスクデバイス、光ディスクデバイス、複数のコンピューティングデバイス(たとえば、クラウド記憶デバイス)によってネットワークを介して共有される記憶デバイス、またはいくつかの他の大容量記憶デバイスを含むことができる。
【0088】
入力/出力デバイス540は、システム500のための入力/出力動作を行う。一実装形態では、入力/出力デバイス540は、ネットワークインターフェースデバイス、たとえば、Ethernetカード、シリアル通信デバイス、たとえば、RS-232ポート、および/またはワイヤレスインターフェースデバイス、たとえば、802.11カードのうちの1つまたは複数を含むことができる。別の実装形態では、入力/出力デバイスは、入力データを受信するとともに出力データを周辺デバイス560、たとえば、キーボード、プリンタ、およびディスプレイデバイスへ送るように構成された、ドライバデバイスを含むことができる。しかしながら、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビジョンクライアントデバイスなどの他の実装形態も使用され得る。
【0089】
例示的な処理システムが
図5で説明されているが、本明細書で説明した主題および機能的動作の実装形態は、他のタイプのデジタル電子回路構成で、あるいは本明細書で開示する構造およびそれらの構造的均等物を含む、コンピュータソフトウェア、ファームウェア、もしくはハードウェアで、またはそれらのうちの1つもしくは複数の組合せで実装され得る。
【0090】
電子文書はファイルに相当し得るが、そうである必要はない。文書は、他の文書を保持するファイルの一部分の中に、当該の文書にとって専用の単一のファイルの中に、または複数の協調ファイルの中に記憶され得る。
【0091】
本明細書で説明した主題および動作の実施形態は、デジタル電子回路構成で、あるいは本明細書で開示する構造およびそれらの構造的均等物を含む、コンピュータソフトウェア、ファームウェア、もしくはハードウェアで、またはそれらのうちの1つもしくは複数の組合せで実装され得る。本明細書で説明した主題の実施形態は、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために、コンピュータ記憶媒体上で符号化された1つまたは複数のコンピュータプログラム、すなわち、コンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替または追加として、プログラム命令は、データ処理装置による実行のために、好適な受信機装置への送信のために情報を符号化するために生成される、人工的に生成された伝搬信号、たとえば、機械生成の電気信号、光信号、または電磁信号上で符号化され得る。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであり得るか、またはそれらの中に含まれ得る。その上、コンピュータ記憶媒体は伝搬信号ではなく、コンピュータ記憶媒体は、人工的に生成された伝搬信号の中で符号化されたコンピュータプログラム命令のソースまたは宛先であり得る。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理構成要素または媒体(たとえば、複数のCD、ディスク、または他の記憶デバイス)であり得るか、またはそれらの中に含まれ得る。
【0092】
本明細書で説明した動作は、1つまたは複数のコンピュータ可読記憶デバイス上に記憶されるかまたは他のソースから受信されるデータに対してデータ処理装置によって実行される動作として実施され得る。
【0093】
「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、システムオンチップ、または上記の複数のもの、もしくはその組合せを含む、データを処理するための、あらゆる種類の装置、デバイス、および機械を包含する。装置は、専用論理回路構成、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置はまた、ハードウェアに加えて、当該のコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想機械、またはそれらのうちの1つまたは複数の組合せを構成するコードを含むことができる。装置および実行環境は、ウェブサービス、分散コンピューティング基盤およびグリッドコンピューティング基盤などの様々な異なるコンピューティングモデル基盤を実現することができる。
【0094】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られている)は、コンパイル型言語またはインタプリタ型言語、宣言型言語または手続き型言語を含む、任意の形態のプログラミング言語で書くことができ、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットとしてを含む、任意の形態で展開され得る。コンピュータプログラムは、ファイルシステムの中のファイルに相当し得るが、そうである必要はない。プログラムは、他のプログラムもしくはデータ(たとえば、マークアップ言語文書の中に記憶された1つまたは複数のスクリプト)を保持するファイルの一部分の中に、当該のプログラムにとって専用の単一のファイルの中に、または複数の協調ファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイル)の中に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに配置されるかもしくは複数のサイトにわたって分散され通信ネットワークによって相互接続される、複数のコンピュータ上で実行されるように展開され得る。
【0095】
本明細書で説明したプロセスおよび論理フローは、入力データ上で動作するとともに出力を生成することによってアクションを実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行され得る。プロセスおよび論理フローは、専用論理回路構成、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって同じく実行することができ、装置は、それらとして同じく実装することができる。
【0096】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、読取り専用メモリもしくはランダムアクセスメモリまたはその両方から命令およびデータを受け取る。コンピュータの必須要素は、命令に従ってアクションを実行するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、あるいはそれらからデータを受信することもしくはそれらにデータを転送すること、またはその両方を行うために動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。その上、コンピュータは、ほんのいくつかの例を挙げれば、別のデバイス、たとえば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)の中に組み込まれ得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性のメモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路構成によって補完され得るか、または専用論理回路構成の中に組み込まれ得る。
【0097】
ユーザとの対話を行うために、本明細書で説明した主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、たとえば、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ、ならびにユーザがそれによってコンピュータに入力を提供することができるキーボードおよびポインティングデバイス、たとえば、マウスまたはトラックボールを有する、コンピュータ上に実装され得る。他の種類のデバイスも、ユーザとの対話を行うために使用され得る。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであり得、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受け取られ得る。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送ること、およびそうしたデバイスから文書を受信することによって、たとえば、ユーザのクライアントデバイス上のウェブブラウザから受信された要求に応答してそのウェブブラウザにウェブページを送ることによって、ユーザと対話することができる。
【0098】
本明細書で説明した主題の実施形態は、たとえば、データサーバとして、バックエンド構成要素を含むか、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含むか、またはフロントエンド構成要素、たとえば、ユーザがそれを通じて本明細書で説明した主題の実装形態と対話できるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含むか、あるいは1つまたは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、またはフロントエンド構成要素の任意の組合せを含む、コンピューティングシステムにおいて実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、たとえば、通信ネットワークによって、相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
【0099】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、一般に、互いから遠隔にあり、通常、通信ネットワークを通じて相互作用する。クライアントとサーバとの関係は、コンピュータプログラムがそれぞれのコンピュータ上で動作し互いに対してクライアントサーバ関係を有することによって生じる。いくつかの実施形態では、サーバは、(たとえば、クライアントデバイスと対話するユーザにデータを表示し、そうしたユーザからユーザ入力を受信する目的で)クライアントデバイスにデータ(たとえば、HTMLページ)を送信する。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザ対話の結果)が、サーバにおいてクライアントデバイスから受信され得る。
【0100】
本明細書は多くの特定の実装詳細を含むが、これらは、任意の発明のまたは特許請求され得るものの範囲に対する限定と解釈すべきではなく、むしろ特定の発明の特定の実施形態に固有の特徴の説明と解釈すべきである。別個の実施形態の文脈において本明細書で説明されるいくつかの特徴はまた、単一の実施形態において組み合わせて実施され得る。反対に、単一の実施形態の文脈において説明される様々な特徴はまた、複数の実施形態において別々に、または任意の好適な部分組合せで実施され得る。その上、特徴はいくつかの組合せで働くものとして上記で説明されることがあり、当初はそのようなものとして特許請求されることさえあるが、特許請求される組合せからの1つまたは複数の特徴は、場合によっては、その組合せから削除することができ、特許請求される組合せは、部分組合せまたは部分組合せの変形形態を対象としてよい。
【0101】
同様に、動作は、特定の順序で図面に示されるが、このことは、望ましい結果を達成するために、そのような動作が図示の特定の順序で、もしくは順番に実行されること、または例示したすべての動作が実行されることを必要とするものと理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。その上、上記で説明した実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明したプログラム構成要素およびシステムが、一般に、単一のソフトウェア製品の中に一緒に統合され得るか、または複数のソフトウェア製品にパッケージ化され得ることを理解されたい。
【0102】
以上、本主題の特定の実施形態が説明されている。他の実施形態が以下の特許請求の範囲内に入る。場合によっては、特許請求の範囲の中に列挙されるアクションは、異なる順序で実行することができ、それでもなお望ましい結果を達成することができる。加えて、添付の図面に示されるプロセスは、望ましい結果を達成するために、必ずしも図示の特定の順序または逐次的な順序を必要とするとは限らない。いくつかの実装形態では、マルチタスキングおよび並列処理が有利であり得る。
【符号の説明】
【0103】
100 環境
102 ネットワーク
104 電子文書サーバ
106 クライアントデバイス
108 デジタルコンポーネントサーバ
110 デジタルコンポーネント配信システム
112 コンポーネント要求
114 コンピューティングデバイスのセット
116 デジタルコンポーネントデータベース
117 タスク
118 結果
120 応答データ
121 サーバ要求
122 デジタルコンポーネントデータ
202 テスト要求
204 テストオブジェクト
206 テストデジタルコンポーネント
208 レンダリングコード
210 画像
212 テキスト
214 ソース情報要素
216 対話型要素
218 インターフェース
220 ネイティブコンテンツ
222 デバッガ
224 オーバーレイ
250 非準拠オーバーレイ
500 システム
510 プロセッサ
520 メモリ
530 記憶デバイス
540 入力/出力デバイス
550 システムバス
560 周辺デバイス