JP7485777B2 - 委任された分析収集のシステムおよび方法 - Google Patents

委任された分析収集のシステムおよび方法 Download PDF

Info

Publication number
JP7485777B2
JP7485777B2 JP2022557938A JP2022557938A JP7485777B2 JP 7485777 B2 JP7485777 B2 JP 7485777B2 JP 2022557938 A JP2022557938 A JP 2022557938A JP 2022557938 A JP2022557938 A JP 2022557938A JP 7485777 B2 JP7485777 B2 JP 7485777B2
Authority
JP
Japan
Prior art keywords
data
sdk
processing system
event data
data processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022557938A
Other languages
English (en)
Other versions
JP2023524936A (ja
Inventor
シャルベル・ザールール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of JP2023524936A publication Critical patent/JP2023524936A/ja
Application granted granted Critical
Publication of JP7485777B2 publication Critical patent/JP7485777B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3438Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • G06F21/6254Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0241Advertisements
    • G06Q30/0242Determining effectiveness of advertisements
    • G06Q30/0244Optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0241Advertisements
    • G06Q30/0251Targeted advertisements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Accounting & Taxation (AREA)
  • Development Economics (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computer Hardware Design (AREA)
  • Game Theory and Decision Science (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Transfer Between Computers (AREA)

Description

委任された分析収集のシステムおよび方法に関する。
どれくらい多くのデバイスが特定のコンテンツアイテムと対話したかなどのクライアントデバイスからのデータに関する情報を決定することができることは、分析システムにとって有用である可能性がある。そうするために、データは、しばしば、アグリゲータにおいて収集され、次いで、分析サービスに転送される。しかしながら、データをクライアントデバイスからアグリゲータに、さらに分析サービスに転送することは、時間遅延をもたらす。さらに、アグリゲータが利用できなくなった場合(例えば、クライアントデバイスがアグリゲータにデータを送信できない場合)、分析サービスは、データを受信せず、結果は、生成されない。
本開示の一実装形態は、モバイルアプリケーションの特徴をイベントジェネレータとしてタグ付けするステップと、ユーザがモバイルデバイス上のモバイルアプリケーションの特徴と対話することに応答して、イベントタイプを有するイベントを生成するステップと、モバイルアプリケーションからの対話測定ソフトウェア開発キット(SDK)によって、イベントタイプに基づいて、モバイルアプリケーションとのユーザ対話に関連する対話データを要求するステップと、対話測定SDKによって、対話データを、対話測定SDKによって示された第1のコンピューティングデバイスに安全に送信するステップとを含む方法に関する。
いくつかの実装形態において、対話測定SDKは、いくつかのイベントからの対話データをバンドルし、しきい値に応答して、バンドルされた対話データを送信する。いくつかの実装形態において、しきい値は、しきい値期間またはしきい値イベント数である。いくつかの実装形態において、対話SDKは、ハッシュアルゴリズムを使用して対話データの署名を生成し、第1のコンピューティングデバイスは、署名を使用して対話データの真正性を検証する。いくつかの実装形態において、方法は、対話データを、モバイルアプリケーションに関連付けられた第2のコンピューティングデバイスに安全に送信するステップをさらに含み、対話SDKは、対話データを第1のコンピューティングデバイスに安全に送信する前に、対話データから個人識別子を削除する。いくつかの実装形態において、対話データは、中間識別子を含み、方法は、第2のコンピューティングデバイスによって、中間識別子を使用して補足データを識別するステップと、第2のコンピューティングデバイスによって、補足データを第1のコンピューティングデバイスに送信するステップと、第1のコンピューティングデバイスによって、対話データを補足データと相関させるステップとをさらに含む。いくつかの実装形態において、第1のコンピューティングデバイスは、個人を特定する情報にアクセスできない。いくつかの実装形態において、方法は、第1のコンピューティングデバイスによって、モバイルアプリケーションの使用を記述するデータをリアルタイムで生成するために、少なくとも対話データを分析するステップをさらに含む。いくつかの実装形態において、少なくとも対話データを分析するステップは、モバイルアプリケーションを使用して実行されなかったユーザの以前の対話を識別するステップを含む。
本開示の別の実装形態は、クライアントデバイスと、第1のコンピューティングデバイスと、第2のコンピューティングデバイスとを含む、異なるエンティティからのデータを相関させるためのシステムに関し、クライアントデバイスは、1つまたは複数のプロセッサとメモリとを有する処理回路を含み、メモリには、1つまたは複数のプロセッサによって実行されると、処理回路に、モバイルアプリケーションにおける特徴をイベントジェネレータとしてタグ付けする動作と、ユーザがモバイルアプリケーションの特徴と対話することに応答して、イベントタイプを有するイベントを生成する動作と、イベントタイプに基づいて、モバイルアプリケーションとのユーザ対話に関連する対話データを要求する動作と、対話データを第1のコンピューティングデバイスに安全に送信する動作とを実行させる命令が記憶されており、命令は、ソフトウェア開発キット(SDK)を構成する。
いくつかの実装形態において、命令は、1つまたは複数のプロセッサに、いくつかのイベントからの対話データをバンドルする動作と、しきい値に応答して、バンドルされた対話データを送信する動作とを実行させる。いくつかの実装形態において、しきい値は、しきい値期間またはしきい値イベント数である。いくつかの実装形態において、命令は、1つまたは複数のプロセッサに、ハッシュアルゴリズムを使用して対話データの署名を生成する動作を実行させ、第1のコンピューティングデバイスは、署名を使用して対話データの真正性を検証する。いくつかの実装形態において、命令は、1つまたは複数のプロセッサに、対話データを第2のコンピューティングデバイスに安全に送信する動作と、対話データを第1のコンピューティングデバイスに安全に送信する前に、対話データから個人識別子を削除する動作とをさらに実行させる。いくつかの実装形態において、対話データは、中間識別子を含み、第2のコンピューティングデバイスは、中間識別子を使用して補足データを識別し、第2のコンピューティングデバイスは、補足データを第1のコンピューティングデバイスに送信し、第1のコンピューティングデバイスは、対話データを補足データと相関させる。いくつかの実装形態において、第1のコンピューティングデバイスは、個人を特定する情報にアクセスできない。いくつかの実装形態において、第1のコンピューティングデバイスは、モバイルアプリケーションの使用を記述するデータをリアルタイムで生成するために、少なくとも対話データを分析する。いくつかの実装形態において、少なくとも対話データを分析する動作は、モバイルアプリケーションを使用して実行されなかったユーザの以前の対話を識別する動作を含む。
本開示の別の実装形態は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、モバイルアプリケーションの特徴をイベントジェネレータとしてタグ付けする動作と、ユーザがモバイルデバイス上のモバイルアプリケーションの特徴と対話することに応答して、イベントタイプを有するイベントを生成する動作と、イベントタイプに基づいて、モバイルアプリケーションとのユーザ対話に関連する、モバイルデバイスからの対話データを要求する動作と、対話データを第1のコンピューティングデバイスに安全に送信する動作とを実行させる、モバイルデバイスのためのソフトウェア開発キット(SDK)を構成する命令が記憶されているコンピュータ可読媒体に関する。
いくつかの実装形態において、SDKは、いくつかのイベントからの対話データをバンドルし、しきい値に応答して、バンドルされた対話データを送信し、しきい値は、しきい値期間またはしきい値イベント数であり、対話SDKは、ハッシュアルゴリズムを使用して対話データの署名を生成し、第1のコンピューティングデバイスは、署名を使用して対話データの真正性を検証する。いくつかの実装形態において、命令は、1つまたは複数のプロセッサに、対話データを第2のコンピューティングデバイスに安全に送信する動作と、対話データを第1のコンピューティングデバイスに安全に送信する前に、対話データから個人識別子を削除する動作とをさらに実行させる。
様々な態様および実装形態は、必要に応じて組み合わされ得る。
例示的な実装形態による、ネットワークを介して対話する様々なエンティティを示す図である。 実装形態による、データ転送および相関のためのアーキテクチャを示す図である。 例示的な実装形態による、図2のアーキテクチャを使用してイベントデータを生成および送信する方法を示すフロー図である。 例示的な実装形態による、図2のアーキテクチャを使用して補足データを決定する方法を示すフロー図である。 例示的な実装形態による、図2のアーキテクチャを使用して分析結果を生成する方法を示すフロー図である。 例示的な実装形態による、コンピューティングシステムのブロック図である。
以下は、プライバシーを保護しながら、イベントデータをタイムリーかつ冗長な方法で収集するための方法、装置、およびシステムに関する様々な概念、およびそれら実装形態についてのより詳細な説明である。説明されている概念は、任意の特定の実装方法に限定されないので、上記で紹介され、以下でより詳細に論じられている様々な概念は、多くの方法のいずれかにおいて実装され得る。
多くのドメインにおいて、モバイルデバイスからイベントデータを収集することが望ましい場合がある。例えば、誤動作(例えば、ソフトウェアクラッシュ、ハードウェア障害など)が発生した場合、しばしば、誤動作を診断および修正するために、デバイス設定、動作パラメータなどのイベントデータを収集することが望ましい場合がある。他のドメインにおいて、サードパーティコンテンツのプロバイダにとって、そのサードパーティコンテンツとの対話率を決定することが望ましい場合がある。
本開示のシステムおよび方法は、一般に、モバイルデバイスのイベントデータを報告することに関する。より具体的には、本開示のシステムおよび方法は、モバイルデバイスからのイベントデータを収集および相関させるための独自のソフトウェア開発キット(SDK)およびコンピュータアーキテクチャ方法論に関する。
典型的には、モバイルデバイスからのイベントデータは、単一のエンドポイント(例えば、アグリゲータなど)に送信され、次いで、分析(例えば、相関など)のために分析システムに転送される。例えば、第1のモバイルアプリケーションによって生成されたイベントデータは、第1のモバイルアプリケーションの開発者によって制御されるサーバに送信され得、サーバは、データを収集し得、そのデータをイベントデータに関連する集約統計を決定する分析システムに転送し得る。しかしながら、単一のエンドポイントは、常に利用可能であるとは限らない。例えば、エンドポイントは、モバイルデバイスからデータを受信することおよび/またはデータを分析システムに転送することを妨げる、予期せぬ障害または定期的なメンテナンスを体験し得る。第1のエンドポイントが利用できなくなった場合でも、イベントデータの分析を容易にする堅牢なアーキテクチャが望ましい。したがって、分析システムへのイベントデータの直接送信を容易にする独自のSDKおよびコンピュータアーキテクチャ方法論が必要である。
上記で論じたように、モバイルデバイスからのイベントデータは、一般に、単一のエンドポイント(例えば、アグリゲータなど)に送信され、次いで、分析のために分析システムに転送される。例えば、開発者は、イベントデータを受信し、(例えば、イベントデータを分析することは、開発者にとって法外に困難、複雑、および/または費用がかかるなどのため)イベントデータを分析のためにサードパーティに送信し得る。しかしながら、イベントデータをクライアントデバイスからアグリゲータに、次いで分析システムに送信することは、時間遅延をもたらす。時間遅延をもたらすことは、望ましくない場合がある。例えば、分析システムは、リンク切れなどの、アプリケーション12におけるバグを識別するために使用され得る。データをクライアントデバイスからアグリゲータに、次いで分析システムに転送することによってもたらされる時間遅延は、他の場所でより効率的に展開され得る追加のシステムリソースおよびネットワークリソースを使用する場合があり、アプリケーション12におけるバグを識別するためにかかる時間量を増加させる場合がある。例えば、分析システムは、古くなった(例えば、適切に機能しなくなったなど)数日後に古いハイパーリンクを検出する場合がある。したがって、アプリケーションイベントのタイムリーな分析を容易にする独自のSDKおよびコンピュータアーキテクチャ方法論が必要である。
本開示の態様は、改善されたデータ報告および分析経路およびコンピュータアーキテクチャを提供する。経路およびアーキテクチャは、PIIがサードパーティにさらされるのを防ぐ堅牢かつタイムリーな方法でモバイルデバイスイベントデータを報告および分析するために使用され得る。
エンドポイントの障害に対する堅牢性を確保するために、本開示のシステムおよび方法は、第2のエンドポイントへのデータの送信を容易にするSDKを導入する。非限定的な例示的な実装形態は、以下の通りであり、デスクトップデバイスを使用するユーザは、第1のコンテンツアイテムを閲覧し得る。第1のコンピューティングシステムは、ユーザが第1のコンテンツアイテムを閲覧したことを登録し得る。次いで、モバイルアプリケーションを使用するユーザは、第2のコンテンツアイテムと対話し得、それによって、モバイルアプリケーションに第1のコンピューティングデバイスとの対話に関連するイベントデータを送信させる。モバイルアプリケーション内に組み込まれたSDKは、ユーザが第2のコンテンツアイテムと対話したことを登録し、送信するために対話に関連するイベントデータを準備し得る。例えば、イベントデータは、コンテンツアイテム、時間、およびコンテンツアイテムのソース(例えば、ウェブサイトなど)を含み得る。SDKは、モバイルデバイス識別子などの任意の個人識別子をイベントデータから削除し得る。SDKは、次いで、イベントデータを第2のコンピューティングデバイスに安全に送信し得る。第1のコンピューティングデバイスは、ユーザを識別し、第2のコンテンツアイテムとのユーザの対話に関連する補足データを準備し得る。例えば、第1のコンピューティングデバイスは、第1のコンテンツアイテムとのユーザの対話に対応するデータを識別し得る。第1のコンピューティングデバイスは、補足データから任意の個人識別子を削除し、補足データを第2のコンピューティングデバイスに送信し得る。第2のコンピューティングデバイスは、結果を決定するために、イベントデータを補足データと相関させ得る。
様々な実施形態において、本開示のSDKは、イベントデータを分析システムに送信する前に、イベントデータから識別子を削除する。様々な実施形態において、本開示のSDKは、中間識別子を介したデータの相関を容易にする。例えば、本開示のSDKは、中間識別子(例えば、イベント識別子など)を有するイベントデータを第1のエンドポイント(例えば、アグリゲータなど)および分析システムに送信し得る。第1のエンドポイントは、アプリケーション(例えば、アプリケーションの開発者によって維持されるサーバなど)に関連付けられ得る。いくつかの実装形態において、第1のエンドポイントは、アプリケーションのユーザアカウントに関連付けられたアカウント残高などのユーザ情報を独立して維持し得る。第1のエンドポイントは、補足データを識別し得る。例えば、第1のエンドポイントは、対話データを有するデータベースを維持し得、ユーザに関連する対話データについてデータベースを検索し得る。補足データは、中間識別子を含み得る。第1のエンドポイントは、補足データを分析システムに送信し得、分析システムは、中間識別子を使用して補足データをイベントデータと相関させ得、それによってPIIを保存する。
ここで図1を参照すると、例示的な実装形態による、モバイルデバイスからのイベントデータを収集するためのシステム100が示されている。システム100は、クライアントデバイス10と、第1のデータ処理システム200と、第2のデータ処理システム300とを有する。様々な実装形態において、システム100の構成要素は、ネットワーク60を介して通信する。ネットワーク60は、インターネット、ローカル、ワイド、メトロ、もしくは他のエリアネットワーク、イントラネット、衛星ネットワーク、音声もしくはデータ携帯電話通信ネットワークなどの他のコンピュータネットワーク、それらの組合せ、または任意の他のタイプの電子通信ネットワークなどのコンピュータネットワークを含み得る。ネットワーク60は、ディスプレイネットワーク(例えば、コンテンツ配置もしくは検索エンジン結果システムに関連する、またはコンテンツアイテム配置キャンペーンの一部としてサードパーティコンテンツアイテムを含む資格がある、インターネット上で利用可能な情報リソースのサブセット)を含むかまたは構成し得る。様々な実装形態において、ネットワーク60は、システム100の構成要素間の安全な通信を容易にする。非限定的な例として、ネットワーク60は、トランスポート層セキュリティ(TLS)、セキュアソケット層(SSL)、ハイパーテキスト転送プロトコルセキュア(HTTPS)、および/または任意の他のセキュア通信プロトコルを実装し得る。
クライアントデバイス10は、モバイルコンピューティングデバイス、スマートフォン、タブレット、またはコンテンツ(例えば、ウェブページ、モバイルアプリケーションなど)の受信、表示、および対話を容易にするように構成された任意の他のデバイスであり得る。クライアントデバイス10は、オンラインコンテンツを受信および表示し、オンラインコンテンツとのユーザ対話を受信するためのアプリケーション20を含み得る。例えば、アプリケーション20は、ウェブブラウザであり得る。追加的または代替的に、アプリケーション20は、特定の商人に関連付けられたモバイルアプリケーションであり得る。
様々な実装形態において、アプリケーション20は、オンラインコンテンツを受信するためにコンテンツ発行者と対話する。例えば、アプリケーション20は、コンテンツ発行者から情報リソースを受信し得る。情報リソースは、ウェブページまたは他のオンラインドキュメントなどのウェブベースのコンテンツアイテムを含み得る。情報リソースは、アプリケーション20によって解釈されると、アプリケーション20に対話可能ウェブページなどのグラフィカルユーザインターフェースをユーザに対して表示させる命令(例えば、スクリプト、実行可能コードなど)を含み得る。
アプリケーション20は、イベント回路22と、バンドリング回路24と、暗号化回路26と、報告回路28とを有するソフトウェア開発キット20を含むように示されている。ソフトウェア開発キット(SDK)20は、パッケージ内に含まれるソフトウェア開発ツールの集合体を含み得る。SDK20は、アプリケーションプログラミングインターフェース(API)を含み得る。いくつかの実装形態において、SDK20は、特定のシステムソフトウェア(例えば、iOS、Androidなど)とインターフェースする再利用可能な関数を有する1つまたは複数のライブラリを含む。SDK20は、アプリケーション12への機能の組み込みを容易にし得る。例えば、開発者は、特定のタイプのイベントがアプリケーション12において発生するときはいつでも、イベントデータを自動的に送信するために、SDK20を使用し得る。さらなる例として、SDK20は、デバイス分析を収集および報告するように構成された再利用可能な関数を含み得、開発者は、アプリケーション12の特定のアクション中に再利用可能な関数を呼び出させるために、再利用可能な関数をアプリケーション12の命令に挿入し得る。いくつかの実装形態において、イベント回路22、バンドリング回路24、暗号化回路26、および/または報告回路28は、SDK20によって提供される機能(例えば、再利用可能な関数など)である。
イベント回路22は、アプリケーション12内のイベントを検出し得る。様々な実装形態において、イベント回路22は、特定のイベント(例えば、トランザクション、アプリ内購入、アプリ内ゲームにおける特定のレベルの達成、特定の数のアクションの実行、アプリケーションと対話するのに一定の時間量を費やすことなど)を検出することに基づいて他の機能をトリガするように構成され得る。例えば、イベント回路22は、アプリケーション12内のイベントを検出すると、バンドリング回路24をトリガし得る。様々な実装形態において、SDK20は、イベント回路22をトリガするためにアプリケーション12内に組み込まれる関数を含む。例えば、開発者は、イベント回路22に確認されたトランザクションを検出させるアプリケーション12のトランザクション確認機能内にSDK20の関数を含み得る。イベントは、アプリケーション内の開発者にとって重要な任意のアクションを含み得、本明細書で明示的に企図されている例に限定されないことが理解されるべきである。様々な実装形態において、イベント回路22は、異なるタイプのイベント間を区別するように構成される。例えば、イベント回路22は、第1のタイプの検出されたイベントに基づいてアクションの第1のセットをトリガし得、第2のタイプの検出されたイベントに基づいてアクションの第2のセットをトリガし得る。様々な実装形態において、イベント回路22は、検出されたイベントに関連するイベントデータを収集し、収集されたイベントデータをバンドリング回路24に送信するように構成される。
バンドリング回路24は、イベントデータをバンドル(例えば、集約など)し得る。様々な実装形態において、バンドリング回路24は、イベント回路22から検出されたイベントに関連するイベントデータを受信する。バンドリング回路24は、1つまたは複数のイベントからイベントデータを収集し、送信のためにイベントデータをバンドルし得る。例えば、バンドリング回路24は、10個のイベントからイベントデータを収集し、イベントデータを単一のバンドルに結合し得る。イベントデータは、イベントのタイムスタンプ、イベントの名前、および/またはイベントのパラメータ(例えば、購入されたアイテム、価格、通貨、割引、サブスクリプション情報など)などの他の情報を含み得る。いくつかの実装形態において、バンドリング回路24は、バンドルを暗号化回路26に送信する。追加的または代替的に、バンドリング回路24は、バンドルを報告回路28に送信し得る。様々な実装形態において、バンドリング回路24は、データバンドルを生成する。データバンドルは、バンデルインデックスと、バンドルタイムスタンプと、バンドルデータと、バンドル署名とを含み得る。様々な実装形態において、バンドル署名は、以下で論じられている暗号化回路26によって生成される。いくつかの実装形態において、バンドルインデックスは、特定のイベントデータがバンドルデータ内のどこに位置するかを指定する。例えば、バンドルデータは、バイトアレイを含み得、バンドルインデックスは、バイトアレイへのインデックスを含み得る。
暗号化回路26は、暗号化データを生成するためにデータを暗号化し得る。例えば、暗号化回路26は、バンドルされたイベントデータを暗号化し得る。追加的または代替的に、暗号化回路26は、受信データに対して様々な忘却(obliviating)機能を実行し得る。例えば、暗号化回路26は、識別子(例えば、IPアドレス、デバイス識別子など)を削除し、イベントデータを断片化し、ノイズを追加し、またはデータを匿名化するために他の機能を実行し得る。様々な実装形態において、暗号化回路26は、非対称暗号化を実装する。例えば、暗号化回路26は、Rivest-Shamir-Adleman(RSA)暗号システムを実装し得る。様々な実装形態において、暗号化回路26は、第1のデータ処理システム200から公開鍵を受信し、受信データを暗号化するために公開鍵を使用し得る。追加的または代替的に、暗号化回路26は、受信データに関連付けられた署名を生成し得る。例えば、暗号化回路26は、バンドリング回路24から受信したバンドルされたイベントデータのハッシュを生成し得る。1つまたは複数のハッシュ関数が使用され得る。例えば、暗号化回路26は、SHA-2、Scrypt、Balloon、および/またはArgon2ハッシュ関数を実装し得る。
報告回路28は、バンドルされたイベントデータを、第1のデータ処理システム200および/または第2のデータ処理システム300に送信し得る。様々な実装形態において、報告回路28は、ネットワーク60を介してデータを送信する。報告回路28は、データの送信を確認し得る。例えば、報告回路28は、バンドルされたイベントデータを第1のデータ処理システム200に送信し、バンドルされたイベントデータが正常に受信されたとの確認を受信し得る。いくつかの実装形態において、報告回路28は、最初に、バンドルされたイベントデータを第1のデータ処理システム200に送信することを試み、それが失敗した場合、バンドルされたイベントデータを第2のデータ処理システムに送信することを試みる。追加的または代替的に、報告回路28は、データを第1のデータ処理システム200および第2のデータ処理システム300に並行して送信し得る。いくつかの実装形態において、報告回路28は、異なるデータを第1のデータ処理システム200および第2のデータ処理システム300に送信する。例えば、報告回路28は、デバイス識別子を有する暗号化されたイベントデータを第1のデータ処理システム200に送信し得、デバイス識別子なしの暗号化されていないイベントデータを第2のデータ処理システム300に送信し得る。追加的または代替的に、報告回路28は、同じデータを第1のデータ処理システム200および第2のデータ処理システム300に送信し得る。
様々な実装形態において、報告回路28は、データを定期的に送信する。例えば、報告回路28は、データを事前定義された時間において送信し得る。別の例として、報告回路28は、データをある間隔(例えば、10分ごと、10時間ごとなど)において送信し得る。追加的または代替的に、報告回路28は、しきい値に応答してデータを送信し得る。例えば、報告回路28は、バンドリング回路がイベント(例えば、10個のイベント、100個のイベントなど)からのしきい値イベントデータ数を受信することに応答してデータを送信し得る。いくつかの実装形態において、報告回路28は、データを動的に送信する。例えば、報告回路28は、クライアントデバイス10が充電源に接続されていることに応答してデータを送信し得る。さらなる例として、報告回路28は、送信バンドルが指定されたデータサイズに達することに応答してデータを送信し得る。
様々な実装形態において、報告回路28は、測定基準を報告する。例えば、報告回路28は、各データバンドルと一緒に測定基準を送信し得る。測定基準は、データバンドルのサイズ、データバンドルの送信および/もしくは生成のタイムスタンプ、データバンドルインデックス、SDK識別子、ならびに/またはデータバンドルの署名を含み得る。様々な実装形態において、SDK識別子は、SDK20に関連する情報を含む。例えば、SDK識別子は、SDK20のバージョン番号を含み得る。データバンドルの署名は、暗号化回路26を参照して上記で論じられているように、データバンドルコンテンツのハッシュを含み得る。
第1のデータ処理システム200は、SDK20からイベントデータを受信し、および/または補足データを生成し得る。様々な実装形態において、第1のデータ処理システム200は、SDK20からデータバンドルを受信し、データバンドルの内容に基づいて補足データを識別し、補足データを第2のデータ処理システム300に送信する。いくつかの実装形態において、第1のデータ処理システム200は、第2のデータ処理システム300に送信する前に補足データを匿名化する。例えば、第1のデータ処理システム200は、第2のデータ処理システム300に送信する前に、補足データから個人識別子を削除し得る。第1のデータ処理システム200は、サーバ、分散処理クラスタ、クラウド処理システム、または任意の他のコンピューティングデバイスであり得る。第1のデータ処理システム200は、少なくとも1つのコンピュータプログラムまたは少なくとも1つのスクリプトを含むかまたは実行し得る。いくつかの実装形態において、第1のデータ処理システム200は、1つまたは複数のスクリプトを実行するように構成された1つまたは複数のプロセッサなどの、ソフトウェアとハードウェアとの組合せを含む。
第1のデータ処理システム200は、データベース210と処理回路220とを含むように示されている。データベース210は、補足データを記憶し得る。例えば、データベース210は、以前のコンテンツ対話に関連する情報を含み得る。追加の例として、デスクトップコンピュータを使用するユーザは、ウェブサイトにナビゲートし、コンテンツアイテムと対話し得る。第1のデータ処理システム200は、コンテンツアイテムとのユーザの対話に関連する情報を受信し、情報をデータベース210内に記憶し得る。補足データは、コンテンツ識別子、デバイス識別子、ユーザ識別子、クリックストリームなどを含み得る。データベース210は、1つまたは複数の記憶媒体を含み得る。記憶媒体は、限定はしないが、磁気記憶装置、光学記憶装置、フラッシュ記憶装置、および/またはRAMを含み得る。第1のデータ処理システム200は、データベース機能を実行する(すなわち、データベース210内に記憶されたデータを管理する)ために、様々なAPIを実装または促進し得る。APIは、限定はしないが、SQL、ODBC、JDBC、ならびに/または任意の他のデータ記憶および操作APIであり得る。
処理回路220は、プロセッサ222とメモリ224とを含み得る。メモリ224は、プロセッサ222によって実行されると、処理回路220に本明細書で説明される様々な動作を実行させる命令を記憶され得る。本明細書で説明されている動作は、ソフトウェア、ハードウェア、またはそれらの組合せを使用して実装され得る。プロセッサ222は、マイクロプロセッサ、ASIC、FPGAなど、またはそれらの組合せを含み得る。多くの実装形態において、プロセッサ222は、マルチコアプロセッサ、またはプロセッサのアレイであり得る。メモリ224は、限定はしないが、プロセッサ222にプログラム命令を提供することができる電子記憶デバイス、光記憶デバイス、磁気記憶デバイス、または任意の他の記憶デバイスを含み得る。メモリ224は、フロッピーディスク、CD-ROM、DVD、磁気ディスク、メモリチップ、ROM、RAM、EEPROM、EPROM、フラッシュメモリ、光媒体、またはプロセッサ222が命令を読み出すことができる任意の他の適切なメモリを含み得る。命令は、限定はしないが、C、C++、C#、Java、JavaScript、Perl、HTML、XML、Python、およびVisual Basicなどの、任意の適切なコンピュータプログラミング言語からのコードを含み得る。
メモリ224は、データ集約回路226を含み得る。データ集約回路226は、データベース210からの補足データを識別し得る。様々な実施形態において、データ集約回路226は、SDK20からデータバンドルを受信し、補足データを識別するために、データバンドルの内容を分析する。例えば、集約回路226は、第1のデバイス識別子に関連付けられたイベントを含むデータバンドルを受信し得、デバイス識別子に関連付けられた以前のコンテンツ対話を含む補足データを識別し得、補足データを第2のデータ処理システム300に送信し得る。様々な実装形態において、補足データがデータバンドルの内容に関連付けられる。例えば、補足データは、中間識別子を介して、データバンドル内に含まれるイベントのイベントデータに関連付けられ得る。いくつかの実装形態において、データ処理システム226は、受信されたデータバンドルの内容を検証する。例えば、データ集約回路226は、データバンドル内に含まれる署名を検証し得る。追加的または代替的に、データ集約回路226は、データバンドルの内容を復号し得る。例えば、データ集約回路226は、非対称的に暗号化されたデータバンドルを受信し、秘密鍵を使用して、非対称暗号化されたデータバンドルを復号し得る。
第2のデータ処理システム300は、SDK20からイベントデータを受信し、情報を生成するために、受信したデータに対して分析を実行することを容易にし得る。例えば、第2のデータ処理システム300は、SDK20からのイベントデータを含むデータバンドルと、第1のデータ処理システム200からの補足データとを受信し、情報を生成するために、受信したデータを安全に相関させ得る。別の例として、第2のデータ処理システム300は、SDK20からのトランザクションに関連付けられた第1のデータと、第1のデータ処理システム200からのコンテンツアイテムとのユーザ対話に関連付けられた第2のデータとを受信し、第1および第2のデータを相関させ得る。
様々な実施形態において、第2のデータ処理システム300は、集約情報を生成する。例えば、第2のデータ処理システム300は、コンテンツアイテムと対話した後にどれくらい多くのユーザがトランザクションを完了したかを決定し得る。集約情報は、オンライン対話(例えば、いくつかのコンテンツアイテムとの対話)の数またはグループ化を記述し得る。追加的または代替的に、集約情報は、個々のオンライン対話(例えば、単一のコンテンツアイテムとの単一の対話)を記述し得る。集約情報は、一意の識別子を含み得る。いくつかの実装形態において、識別子は、マーケティングキャンペーンを識別する。追加的または代替的に、識別子は、各オンライン対話を一意に識別し得る。いくつかの実装形態において、集約情報は、コンテンツアイテムに関連付けられた1つまたは複数の対話を記述する。例えば、集約情報はオンライン対話の時間、日付、および/または場所を含み得る。匿名対話データによって記述される対話は、コンテンツアイテムを閲覧すること(例えば、コンテンツアイテムが提示されるウェブページにナビゲートすること、および/またはウェブページが閲覧されるデバイスのビューポート内でアイテムもしくはアイテムの一部が提供されることを決定することなど)、コンテンツアイテムを選択/クリックすること、コンテンツアイテム上でホバリングすること、および/またはコンテンツアイテムとの他の対話を含み得る。
第2のデータ処理システム300は、サーバ、分散処理クラスタ、クラウド処理システム、または任意の他のコンピューティングデバイスであり得る。第2のデータ処理システム300は、少なくとも1つのコンピュータプログラムまたは少なくとも1つのスクリプトを含むかまたは実行し得る。いくつかの実装形態において、第2のデータ処理システム300は、1つまたは複数のスクリプトを実行するように構成された1つまたは複数のプロセッサなどの、ソフトウェアとハードウェアとの組合せを含む。
第2のデータ処理システム300は、データベース310と、処理回路320とを含むように示されている。データベース310は、受信したデータを記憶し得る。例えば、データベース310は、SDK20から受信したイベントデータ、および/または第1のデータ処理システム200から受信した補足データを記憶し得る。いくつかの実装形態において、データベース310は、識別子を記憶する。例えば、データベース310は、中間識別子を共有するイベントデータと補足データとを記憶し得る。識別子は、匿名対話データの相関のために後に使用され得る。データベース310は、1つまたは複数の記憶媒体を含み得る。記憶媒体は、限定はしないが、磁気記憶装置、光学記憶装置、フラッシュ記憶装置、および/またはRAMを含み得る。第2のデータ処理システム300は、データベース機能を実行する(すなわち、データベース310内に記憶されたデータを管理する)ために、様々なAPIを実装または促進し得る。APIは、限定はしないが、SQL、ODBC、JDBC、ならびに/または任意の他のデータ記憶および操作APIであり得る。
処理回路320は、プロセッサ322とメモリ324とを含む。メモリ324は、プロセッサ322によって実行されると、処理回路320に本明細書で説明される様々な動作を実行させる命令を記憶され得る。本明細書で説明されている動作は、ソフトウェア、ハードウェア、またはそれらの組合せを使用して実装され得る。プロセッサ322は、マイクロプロセッサ、ASIC、FPGAなど、またはそれらの組合せを含み得る。多くの実装形態において、プロセッサ322は、マルチコアプロセッサ、またはプロセッサのアレイであり得る。メモリ324は、限定はしないが、プロセッサ322にプログラム命令を提供することができる電子記憶デバイス、光記憶デバイス、磁気記憶デバイス、または任意の他の記憶デバイスを含み得る。メモリ324は、フロッピーディスク、CD-ROM、DVD、磁気ディスク、メモリチップ、ROM、RAM、EEPROM、EPROM、フラッシュメモリ、光媒体、またはプロセッサ322が命令を読み出すことができる任意の他の適切なメモリを含み得る。命令は、限定はしないが、C、C++、C#、Java、JavaScript、Perl、HTML、XML、Python、およびVisual Basicなどの、任意の適切なコンピュータプログラミング言語からのコードを含み得る。
メモリ324は、検証回路326と、分析回路328とを含み得る。検証回路326は、SDK20から受信したデータバンドルを検証し得る。様々な実装形態において、検証回路326は、データバンドル内に含まれる署名を検証することによって、データバンドルを検証する。例えば、署名は、データバンドルおよび/またはイベントデータの内容のハッシュを含み得、検証回路326は、データバンドルの内容をハッシュ化し、データバンドルの内容が変更されたかどうかを判定するために、生成されたハッシュを受信した署名と比較し得る。いくつかの実装形態において、検証回路326が、データバンドル(またはデータバンドル内に含まれる特定のイベントデータ)が無効であると判定した場合、無効なデータを破棄する。追加的または代替的に、検証回路316は、無効としてデータにフラグを立て得、これは、分析結果に関連する信頼性測定基準を生成するために後のシステムによって使用され得る。
分析回路328は、データを受信し、データに関する情報を生成し得る。様々な実装形態において、分析回路328は、受信したデータを記述する統計的測定値を生成するために、受信したデータに対して統計的演算を実行する。例えば、分析回路328は、マーケティングキャンペーンに関連する対話率を決定し得る。いくつかの実装形態において、分析回路328は、人口統計学的情報(例えば、ユーザ分布など)、地理的結果(例えば、場所の分布など)、および/またはオーディエンス(例えば、1つまたは複数のパラメータに基づくユーザのターゲットグループ、例えば、しきい値を超えて購入をしたユーザ、など)を生成する。いくつかの実装形態において、分析回路328は、イベントデータを補足データと相関させる。例えば、分析回路328は、イベントを引き起こすことに対するコンテンツ対話の影響を決定するために、中間識別子を使用して、イベントに関連するイベントデータを、コンテンツ対話に関連する補足データと相関させ得る。様々な実装形態において、分析回路328は、情報を生成する。情報は、対話率、アプリケーション12の動作を記述するデータなどを含み得る。
ここで図2を参照すると、例示的な実装形態による、モバイルデバイスからデータを安全に送信し、相関させるための改善されたコンピュータアーキテクチャが示されている。要約すると、開発者は、イベントに応答して、イベントデータを生成し、クライアントデバイス10から第1のデータ処理システム200および第2のデータ処理システム300に送信するために、SDK20の再利用可能な関数を利用し得る。例えば、モバイルアプリケーション(例えば、アプリケーション12など)内に組み込まれたSDK20の機能は、クライアントデバイス10に、ユーザがトランザクションを確認すること、メニューオプションを選択すること、コンテンツアイテムを閲覧することなどに応答して、クライアントデバイス10に関連するデータを収集および送信させ得る。イベントの検出に応答して、SDK20は、分析のために、データを収集し、バンドルし、第1のデータ処理システム200および第2のデータ処理システム300に送信し得る。
様々な実装形態において、第1のデータ処理システム200は、追加のまたは補足のデータを記憶し得る。例えば、第1のデータ処理システム200は、過去の顧客に関連するデータ(例えば、ユーザの好みなど)を記憶し得る。追加の例として、第1のデータ処理システム200は、コンテンツとの以前のユーザ対話に関連するデータを記憶し得る。第1のデータ処理システム200は、クライアントデバイス10から受信したデータに基づいて補足データを識別し得、補足データを第2のデータ処理システム300に送信し得る。補足データは、以前のユーザ対話(例えば、ビデオなどのコンテンツアイテムを見るユーザの記録、以前のトランザクションなど)、ユーザの人口統計学的情報、ユーザの好み、および/または他のデータを含み得る。補足データは、開発者がアクセス可能な、ユーザに関連する任意のデータを含み得、本明細書で明示的に企図されている明確な例に限定されないことが理解されるべきである。様々な実装形態において、第2のデータ処理システム300は、結果を決定するために、クライアントデバイスおよび第1のデータ処理システム200からのデータを相関させる。追加的または代替的に、第2のデータ処理システム300は、結果を決定するために、クライアントデバイス10から受信したデータを分析し得る。非限定な例として、ビデオを見たユーザは、ビデオをクリックし得る。ビデオを提供するコンテンツプロバイダ(例えば、第1のデータ処理システム200など)は、どれくらい多くのユーザがビデオをクリックしたかを知りたい場合がある。いくつかの実装形態において、ユーザは、第1のコンテンツアイテムとのユーザの対話の結果として、コンテンツプロバイダによって提供される他のコンテンツと対話し得る。例えば、ビデオを見たユーザは、ビデオ内で紹介されたアイテムを購入するために、コンテンツプロバイダによって維持されるウェブサイトを後に訪問し得る。いくつかの実装形態において、対話は、オンラインコンバージョンであるか、またはオンラインコンバージョンに関連付けられる。SDK20は、PIIを保持しながら、オンラインコンテンツとのユーザ対話の堅牢な報告および分析を容易にし得る。
図2は、モバイルデバイスからイベントデータを送信および分析するためのシステム110を示す。様々な実装形態において、クライアントデバイス10は、イベントデータの収集および送信を容易にするためにSDK20を実装する。例えば、開発者は、クライアントデバイス10に、特定のイベントに関するデータを送信させるために、SDK20の再利用可能な関数をクライアントデバイス10上のアプリケーション12に組み込み得る。様々な実装形態において、SDK20は、イベントデータを報告する際の冗長性を容易にする。例えば、SDK20は、イベントデータを報告するための予備経路を有効にし得る。様々な実装形態において、アプリケーション12は、アプリケーションデータを第1のデータ処理システム200にネイティブに報告し得る。SDK20は、イベントデータを第2のデータ処理システム300に冗長におよび/または並行して送信することを容易にし得る。
様々な実装形態において、クライアントデバイス10上のアプリケーション12内に組み込まれたSDK20は、イベントデータを生成する。例えば、アプリケーション12を使用するユーザは、通知優先度を更新し得、SDK20は、優先度の変更を検出し、イベントデータを生成し得る。イベントデータは、デバイス設定(例えば、ソフトウェアバージョン、ハードウェア設定、構成など)、ユーザアカウント設定(例えば、優先度、活動など)、アクションシーケンス(クリックストリームなど)、変更された通知優先度などの特定のイベントに関するデータなどを含み得る。いくつかの実装形態において、イベントデータは、ユーザが購入に至るまでに行った一連のアクション(例えば、クリック)、ならびに購入自体に関する情報(例えば、価格、購入したアイテムなど)を記述する。様々な実装形態において、SDK20は、いくつかのイベントからのイベントデータをバンドルする。例えば、SDK20は、各イベントを個別に送信することに関連する電力消費を低減するために、10個のイベントからのイベントデータをバンドルし得る。
ステップ404において、SDK20および/またはアプリケーション12は、バンドルされたイベントデータを第1のデータ処理システム200に送信し得る。いくつかの実装形態において、第1のデータ処理システム200に送信されるイベントデータは、識別子を含む。様々な実装形態において、第1のデータ処理システム200に送信されるイベントデータは、暗号化される(例えば、非対称的に暗号化されるなど)。いくつかの実装形態において、SDK20は、第1のデータ処理システム200がバンドルされたイベントデータを正常に受信したかどうかを判定し得る。いくつかの実装形態において、SDK20が、第1のデータ処理システム200がバンドルされたイベントデータを正常に受信しなかったと判定した場合、SDK20は、バンドルされたイベントデータを第2のデータ処理システム300に送信する。追加的または代替的に、SDK20は、バンドルされたイベントデータを第2のデータ処理システム300に並行して送信し得る(ステップ402)。様々な実装形態において、SDK20は、第2のデータ処理システム300に送信する前に、バンドルされたイベントデータから個人識別子を削除する。例えば、SDK20は、バンドルされたイベントデータを第2のデータ処理システム300に送信する前に、デバイス識別子および/またはユーザ識別子を削除し得る。
様々な実装形態において、第1のデータ処理システム200は、受信したバンドルされたイベントデータに基づいて補足データを識別する。例えば、第1のデータ処理システム200は、バンドルされたイベントデータ内に含まれるユーザ識別子によって識別されたユーザに関連付けられた以前の対話データを識別し得る。ステップ406において、第1のデータ処理システム200は、補足データを第2のデータ処理システム300に送信し得る。様々な実装形態において、第1のデータ処理システム200は、補足データを第2のデータ処理システム300に送信する前に、個人識別子を削除する。例えば、第1のデータ処理システム200は、補足データを第2のデータ処理システム300に送信する前に、デバイス識別子および/またはユーザ識別子を削除し得る。
第2のデータ処理システム300は、(例えば、SDK20などを介して)クライアントデバイス10からのイベントデータおよび/または第1のデータ処理システム200からの補足データを受信し得る。様々な実装形態において、第2のデータ処理システム300は、結果を生成するために、イベントデータおよび/または補足データを分析する(例えば、様々な相関関係および/または統計的演算などを実行する)。例えば、第2のデータ処理システム300は、コンバージョン率を決定するために、中間識別子を使用して補足データ内に含まれる以前の対話データをイベントデータ内に含まれるトランザクションと相関させ得る。
ここで図3を参照すると、実装形態による、イベントデータを報告する方法500が示されている。要約すると、SDK20および/またはアプリケーション12は、ユーザに関連付けられた対話(例えば、アプリケーション内対話など)に応答してイベントデータを生成し、SDK20は、イベントデータをエンドポイントに報告する。様々な実装形態において、SDK20は、方法500を実行する。ステップ502において、SDK20は、第1のデータ処理システム200への接続が利用できないと判定する。例えば、SDK20は、第1のデータ処理システム200がオンラインであるかどうかを判定するために、第1のデータ処理システム200にpingし得る。いくつかの実装形態において、SDK20は、第1のデータ処理システム200がデータパッケージ(例えば、以前のイベントデータなど)の受信を確認するかどうかを判定する。いくつかの実装形態において、ステップ502は、オプションである。
ステップ504において、SDK20は、SDK20は、イベントを検出する。SDK20は、開発者によってアプリケーション12内に組み込まれる様々な再利用可能な関数を含み得る。アプリケーション12が特定の動作を実行すると、SDK20の再利用可能な関数が呼び出され得、それによって、SDK20に様々なアクションを実行させる。例えば、SDK20の再利用可能な関数は、アプリケーション12のチェックアウトプロセス内に組み込まれ得、チェックアウトが完了すると、SDK20にイベントデータ(例えば、トランザクションに関連付けられたデータなど)を報告させ得る。追加的または代替的に、SDK20は、アプリケーション12からの様々な指示をリッスンすることによって、イベントを検出し得る。例えば、アプリケーション12は、アプリケーションイベントが発生したときにフラグを発生し得、SDK20は、イベントの発生を識別するためにフラグを検出し得る。
ステップ506において、SDK20は、アプリケーション12および/またはクライアントデバイス10からイベントデータを収集し得る。例えば、SDK20は、イベントに関連付けられたトランザクションに関するデータを収集し得る。ステップ508において、SDK20は、イベントデータをバンドルする。ステップ508は、いくつかのイベントからのイベントデータを単一のデータパッケージに結合することを含み得る。例えば、100個のイベントからのイベントデータが、バンドルされたイベントデータに結合され得る。いくつかの実装形態において、SDK20は、指定された時間期間にわたって発生してイベントからのイベントデータをバンドルする。例えば、SDK20は、各日(例えば、24時間など)からのイベントをバンドルし得る。様々なバンドリング技法が可能であり、SDK20は、本明細書で明示的に列挙されている特定の技法に限定されないことが理解されるべきである。様々な実装形態において、SDK20は、イベントデータにラベル付けする。例えば、SDK20は、イベントデータにイベントタイプをラベル付けし得る。イベントタイプは、イベントデータのソースに対応し得る。例えば、SDK20は、アプリケーション内トランザクションに対応する第1のイベントデータが「トランザクション」タイプであり、ウェブページに訪問することに対応する第2のイベントデータが「コンテンツ対話」タイプであると判断し得る。様々な実装形態において、SDK20は、イベントタイプに基づいて異なるイベントデータを生成する。例えば、SDK20は、「トランザクション」イベントについてアイテムの価格および量を含むイベントデータを生成し得、「コンテンツ対話」タイプのデータについてコンテンツ識別子を含むイベントデータを生成し得る。多くのイベントタイプが可能であり、本明細書で明示的に企図されているタイプに限定されないことが理解されるべきである。
ステップ510において、SDK20は、イベントデータを準備および暗号化し得る。様々な実装形態において、ステップ510は、識別子を削除することを含む。例えば、SDK20は、バンドルされたイベントデータから個人識別子(例えば、デバイス識別子、ユーザ識別子など)を削除し得る。追加的または代替的に、SDK20は、バンドルされたイベントデータを暗号化し得る。例えば、SDK20は、第1のデータ処理システム200から受信した公開鍵を使用して、バンドルされたイベントデータを非対称的に暗号化し得る。いくつかの実装形態において、SDK20は、第2のデータ処理システム300に送信されるバンドルされたイベントデータから識別子を削除する。いくつかの実装形態において、SDK20は、第1のデータ処理システム200に送信されるバンドルされたイベントデータを暗号化する。いくつかの実装形態において、ステップ510は、バンドルされたイベントデータの署名を生成することを含む。例えば、SDK20は、バンドルされたイベントデータをハッシュ化することによって署名を生成し得る。いくつかの実装形態において、ステップ510は、オプションである。
ステップ512において、SDK20は、イベントデータを第2のデータ処理システム300に安全に送信する。いくつかの実装形態において、SDK20は、(例えば、ステップ502などに基づいて)第1のデータ処理システム200が利用できないと判定したことに応答して、イベントデータを第2のデータ処理システム300に送信する。様々な実装形態において、SDK20は、個人識別子のないイベントデータを第2のデータ処理システム300に送信し、それによってPIIを保持する。いくつかの実装形態において、SDK20は、しきい値に応答して、バンドルされたイベントデータを第2のデータ処理システム300に送信する。例えば、SDK20は、しきい値イベント数がイベントデータバンドル内に含まれていることに応答して、バンドルされたイベントデータを第2のデータ処理システム300に送信し得る。様々な実装形態において、SDK20は、宛先(例えば、第2のデータ処理システム300など)を指定することを容易にする。例えば、SDK20は、イベントデータの送信先を指定する第2のデータ処理システム300のURLおよび/またはIPアドレスを受信することを容易にし得る。
ステップ514において、SDK20は、暗号化されたイベントデータを第1のデータ処理システム200に安全に送信し得る。様々な実装形態において、SDK20は、1つまたは複数の識別子を含む暗号化されたイベントデータを第1のデータ処理システム200に送信する。いくつかの実装形態において、ステップ514は、オプションである。
ここで図4を参照すると、実装形態による、補足データを識別する方法600が示されている。いくつかの実装形態において、第1のデータ処理システム200は、方法600を実行する。いくつかの実装形態において、第1のデータ処理システム200は、第1のデータ処理システム200は、クライアントデバイス10および/またはSDK20からイベントデータを受信することに応答して方法600を実行する。ステップ602において、第1のデータ処理システム200は、クライアントデバイス10からイベントデータを受信する。様々な実装形態において、第1のデータ処理システム200は、識別子を含むイベントデータを受信する。例えば、第1のデータ処理システム200は、デバイス識別子を含むイベントデータを受信し得る。追加的または代替的に、第1のデータ処理システム200は、暗号化されたイベントデータを受信し得る。
ステップ602において、第1のデータ処理システム200は、イベントデータを復号し得る。様々な実装形態において、ステップ602は、暗号化されていないイベントデータを生成するために、第1のデータ処理システム200によって保持される秘密鍵を使用してイベントデータを非対称的に復号することを含む。ステップ606において、第1のデータ処理システム200は、イベントデータを使用して、記憶されたデータから補足データを選択し得る。様々な実装形態において、ステップ606は、イベントデータ内に含まれる識別子を使用して補足データを識別することを含む。様々な実装形態において、第1のデータ処理システム200は、データベース210を検索する。データベース210は、以前のコンテンツ対話に関連するデータを含み得る。例えば、第1のデータ処理システム200は、ユーザに関連付けられた以前のコンテンツ対話を識別し得る。追加の例として、第1のデータ処理システム200は、ユーザが以前に見たビデオを識別し得る。
ステップ608において、第1のデータ処理システム200は、補足データを準備し得る。例えば、第1のデータ処理システム200は、補足データに関連付けられた個人識別子を削除し得る。いくつかの実装形態において、第1のデータ処理システム200は、補足データに関連付けられたIPアドレス、ユーザ識別子、および/またはデバイス識別子を削除する。追加的または代替的に、第1のデータ処理システム200は、第1のデータ処理システム200は、補足データに対して様々な忘却機能を実行し得る。例えば、第1のデータ処理システム200は、データを匿名化するために、補足データを断片化するか、ノイズを追加するか、または他の機能を実行し得る。ステップ610において、第1のデータ処理システム200は、補足データを第2のデータ処理システム300に安全に送信し得る。いくつかの実装形態において、第1のデータ処理システム200は、信号に応答して、補足データを第2のデータ処理システム300に送信する。例えば、第2のデータ処理システム300は、補足データに対する要求を第1のデータ処理システム200に送信し得る。
ここで図5を参照すると、実施形態による、イベントデータおよび/または補足データを分析する方法700が示されている。様々な実装形態において、第2のデータ処理システム300は、方法700を実行する。いくつかの実装形態において、第2のデータ処理システム300は、クライアントデバイス10からデータを受信することに応答して方法700を実行する。追加的または代替的に、第2のデータ処理システム300は、外部システム(例えば、第1のデータ処理システム200など)からの結果に対する要求を受信することに応答して方法700を実行し得る。
ステップ702において、第2のデータ処理システム300は、(例えば、SDK20などを介して)クライアントデバイス10からイベントデータを受信し得る。様々な実装形態において、イベントデータは、バンドルされたイベントデータである。様々な実装形態において、イベントデータは、個人識別子を含まない。ステップ704において、第2のデータ処理システム300は、受信したイベントデータを検証し得る。様々な実装形態において、イベントデータは、署名を含む。第2のデータ処理システム300は、署名を使用してイベントデータを検証し得る。例えば、第2のデータ処理システム300は、受信したイベントデータのハッシュを生成し、生成されたハッシュをイベントデータ内に含まれる署名と比較し得る。いくつかの実装形態において、ステップ704は、オプションである。
ステップ706において、第2のデータ処理システム300は、第1のデータ処理システム200から補足データを受信し得る。いくつかの実装形態において、第2のデータ処理システム300は、他のソースから補足データを受信する。様々な実装形態において、補足データは、イベントデータに関連付けられた対話データを含む。例えば、補足データは、中間識別子をイベントデータのイベントと共有するコンテンツ対話を含み得る。別の例として、補足データは、イベントデータ内に含まれるトランザクションに相関させられ得るコンテンツアイテム識別子を含み得る。いくつかの実装形態において、ステップ706は、オプションである。例えば、いくつかの実装形態において、第1のデータ処理システム200は、補足データを第2のデータ処理システム300に送信しない。
ステップ708において、第2のデータ処理システム300は、イベントデータを補足データに相関させ得る。例えば、第2のデータ処理システム300は、ユーザがコンテンツアイテムと対話したかどうかを判定するために、コンテンツアイテムの識別子をイベントデータの中間識別子と照合し得る。追加の例として、第2のデータ処理システム300は、コンテンツアイテムのURLがイベントデータ内に含まれるウェブサイトURLと一致すると判定し得る。いくつかの実装形態において、ステップ708は、オプションである。例えば、第2のデータ処理システム300は、イベントデータ内のすべてのイベントに対応する補足データを受信しない場合がある。
ステップ710において、第2のデータ処理システム300は、結果を生成するためにデータを分析し得る。様々な実装形態において、第2のデータ処理システム300は、イベントデータを分析する。追加的または代替的に、第2のデータ処理システム300は、補足データを分析し得る。様々な実装形態において、第2のデータ処理システム300は、結果を生成するために様々な分析動作を実行する。様々な実装形態において、結果は、第1の特徴を共有する対話および/またはイベントデータの数のカウントを含む。追加的または代替的に、結果は、対話(例えば、トランザクション、クリック、通話など)の合計、各対話に関連付けられた値(例えば、金額)の合計、および/またはメタデータを含み得る。様々な実装形態において、結果は、集約情報である。例えば、結果は、いくつかのイベントからのイベントデータに関連付けられた統計的情報を含み得る。いくつかの実装形態において、結果は、データベース310内に保続される。様々な実装形態において、結果は、アプリケーション12の使用をリアルタイムで記述するデータを含む。例えば、結果は、特定のコンテンツアイテムを現在閲覧しているユーザ数のカウントを含み得る。追加的または代替的に、第2のデータ処理システム300は、アプリケーション12を使用して実行されなかったユーザの以前の対話(例えば、クロスプラットフォームアトリビューションなど)を識別し得る。例えば、第2のデータ処理システム300は、ユーザがクライアントデバイス10とは異なるデバイス上のコンテンツと以前に対話したことを判定するために、補足データ内に含まれるコンテンツ対話をイベントデータに相関させ得る。
ステップ712において、第2のデータ処理システム300は、結果を第1のデータ処理システム200に安全に送信し得る。追加的または代替的に、第2のデータ処理システム300は、結果を異なる宛先に安全に送信し得る。いくつかの実装形態において、ステップ712は、オプションである。
図6は、例えば、本開示において説明されている例示的なシステム(例えば、システム110など)のいずれかを実装するために使用され得るコンピューティングシステム800の描写を示す。コンピューティングシステム800は、情報を通信するためのバス805または他の通信構成要素と、情報を処理するための、バス805に結合されたプロセッサ810とを含む。コンピューティングシステム800は、情報と、プロセッサ810によって実行されるべき命令とを記憶するための、バス805に結合された、ランダムアクセスメモリ(「RAM」)または他の動的記憶デバイスなどのメインメモリ815も含む。メインメモリ815は、プロセッサ810による命令の実行中に、位置情報、一時的な変数、または他の中間情報を記憶するためにも使用され得る。コンピューティングシステム800は、プロセッサ810のための静的情報と命令とを記憶するための、バス805に結合された、読み取り専用メモリ(「ROM」)820または他の静的記憶デバイスをさらに含み得る。ソリッドステートデバイス、磁気ディスク、または光ディスクなどの記憶デバイス825は、情報と命令とを永続的に記憶するためにバス805に結合される。
コンピューティングシステム800は、バス805を介して、情報をユーザに表示するための液晶ディスプレイまたはアクティブマトリックスディスプレイなどのディスプレイ835に結合され得る。英数字キーと他のキーとを含むキーボードなどの入力デバイス830は、情報とコマンド選択とをプロセッサ810に通信するためにバス805に結合され得る。別の実装形態において、入力デバイス830は、タッチスクリーンディスプレイ835を有する。入力デバイス830は、方向情報とコマンド選択とをプロセッサ810に通信するため、およびディスプレイ835におけるカーソル移動を制御するための、マウス、トラックボール、またはカーソル方向キーなどのカーソル制御を含むことができる。
いくつかの実装形態において、コンピューティングシステム800は、ネットワーキングアダプタなどの通信アダプタ840を含み得る。通信アダプタ840は、バス805に結合され得、コンピューティングもしくは通信ネットワーク845および/または他のコンピューティングシステムとの通信を可能にするように構成され得る。様々な例示的な実装形態において、任意のタイプのネットワーキング構成が、有線(例えば、イーサネットを介する)、ワイヤレス(例えば、WiFi、Bluetoothなどを介する)、事前構成済み、アドホック、LAN、WANなどの通信アダプタ840を使用して達成され得る。
様々な実装形態によれば、本明細書で説明されている例示的な実装形態を実施するプロセスは、プロセッサ810がメインメモリ815内に含まれる命令の配置を実行することに応答して、コンピューティングシステム800によって達成され得る。そのような命令は、記憶デバイス825などの別のコンピュータ可読媒体からメインメモリ815内に読み取られ得る。メインメモリ815内に含まれる命令の配置の実行は、コンピューティングシステム800に、本明細書で説明されている例示的なプロセスを実行させる。メインメモリ815内に含まれる命令を実行するために、マルチプロセッシング配置内の1つまたは複数のプロセッサも用いられ得る。例示的な実装形態において、例示的な実装形態を実装するために、ソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて、ハードワイヤード回路が使用され得る。したがって、実装形態は、ハードウェア回路とソフトウェアとの任意の特定の組合せに限定されない。
例示的な処理システムが図6において記載されているが、本明細書で説明されている主題および機能動作の実装形態は、他のタイプのデジタル電子回路を使用して、または本明細書で開示される構造とそれらの構造的同等物とを含む、コンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、または、それらのうちの1つまたは複数の組合せにおいて実行され得る。
上記の説明に加えて、ユーザは、本明細書で説明されているシステム、プログラム、または機能がユーザ情報(例えば、ユーザのソーシャルネットワーク、ソーシャルアクション、または活動、職業、ユーザの好み、またはユーザの現在の場所に関する情報)の収集を可能にする可能性があるかどうか、およびいつ可能にする可能性があるかと、ユーザにサーバからコンテツまたは通信が送信されるかどうかの両方に関してユーザが選択を行うことを可能にする制御を提供され得る。加えて、特定のデータは、個人を特定できる情報が削除されるように、記憶または使用される前に1つまたは複数の方法で処理され得る。例えば、ユーザの識別情報は、ユーザについて個人を特定できる情報を決定することができないように処理され得、または、ユーザの地理的位置は、ユーザの特定の場所を決定することができないように、位置情報が取得される場所(例えば、都市、郵便番号、または州レベル)で一般化されて得る。したがって、ユーザは、どのような情報がユーザに関して収集されるかと、その情報がどのように使用されるのかと、どのような情報がユーザに提供されるかとを制御し得る。本明細書で説明されているシステムが、ユーザまたはユーザデバイス上にインストールされているアプリケーションに関する個人情報を収集する、または個人情報を使用する状況において、ユーザは、プログラムもしくは機能がユーザ情報(例えば、ユーザのソーシャルネットワーク、ソーシャルアクション、もしくは活動、職業、ユーザの好み、またはユーザの現在の場所に関する情報)を収集するかどうかを制御する機会を提供され得る。追加的または代替的に、特定のデータが、記憶または使用される前に個人情報が削除されるように1つまたは複数の方法において処理され得る。
本開示のシステムおよび方法は、既存のシステムに対して多くの利点を提供する。典型的には、クライアントデバイスアプリケーションからのデータは、分析のために分析システムに転送される前に、アプリケーションの動作に関連付けられたサーバなどのアグリゲータによって収集される。しかしながら、クライアントデバイスとアグリゲータとの間の接続は、常に信頼できるとは限らない。例えば、クライアントデバイスは、データをアグリゲータに送信できない場合があり、および/またはアグリゲータは、利用できなくなる(例えば、メンテナンスのためにオフラインになるなど)場合がある。本明細書で説明されている新規のSDKおよびコンピュータアーキテクチャは、イベントデータを報告するための冗長経路を容易にする。具体的には、本開示のSDKは、アグリゲータへのデータの送信の失敗に応答して、イベントデータを別個のエンドポイントに送信することを容易にする。したがって、本開示のSDKは、イベントデータの冗長な報告を容易にし、それによって損失データを低減することによって、既存のシステムを改善する。
さらに、従来のシステムは、クライアントデバイスがイベントデータを生成するときと、分析システムがイベントデータを受信するときとの間に時間遅延をもたらす。前述のように、典型的には、クライアントデバイスは、イベントデータをアグリゲータに送信し、アグリゲータは、データを分析システムに転送する。しかしながら、アグリゲータがデータを受信するときと、分析システムがデータを受信するときとの間に時間遅延が存在する場合がある。この時間遅延は、変更に対するアプリケーションの応答性を低下させる場合がある。例えば、アプリケーションが、トランザクションを早期に失敗させるソフトウェアバグを有する場合、従来のシステムは、ソフトウェアバグを検出するのにいくらかの時間がかかる場合がある。しかしながら、本明細書で説明されている新規のSDKおよびコンピュータアーキテクチャは、分析システムへのイベントデータの直接送信を容易にする。具体的には、本開示のSDKは、データがクライアントデバイスによって生成されるときと、分析システムがデータを受信するときとの間の時間遅延を低減することによって、アプリケーションイベント(例えば、クラッシュ、バグなど)の向上した応答性を容易にする。
さらに、一般的には、異なるエンティティからのデータを相関させるシステムは、識別子を使用してデータを照合する。例えば、システムは、ユーザ識別子を使用して、ユーザ対話をユーザトランザクションと照合し得る。本明細書で説明されている新規のSDKおよびコンピュータアーキテクチャは、PIIを明らかにすることなく、異なるエンティティからのデータの相関を容易にする。具体的には、本開示のSDKおよびコンピュータアーキテクチャは、PIIを明らかにしない中間識別子を使用して、異なるエンティティからのデータを相関させることを容易にする。さらに、コンテンツプロバイダ(例えば、アプリケーション開発者など)は、機密データを分析システムに送信する必要なく、分析結果を改善し得る。例えば、コンテンツプロバイダは、それ自体のデータベースから補足データを識別し、データを分析システムに送信する前に、機密の識別子(例えば、個人識別子など)を削除し得る。
本明細書で説明されている主題および動作の実装形態は、デジタル電子回路を使用して、または本明細書で開示される構造とそれらの構造的同等物とを含む、有形の媒体上に具体化されたコンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、または、それらのうちの1つまたは複数の組合せにおいて実行され得る。本明細書で説明されている主題の実装形態は、データ処理装置によって実行するための、またはデータ処理装置の動作を制御するための、1つまたは複数のコンピュータ記憶媒体上に符号化された、1つまたは複数のコンピュータプログラム、すなわち、コンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替的にまたは加えて、プログラム命令は、データ処理装置によって実行するために適切な受信機装置に送信するための情報を符号化するために生成された、人工的に生成された伝搬信号、例えば、機械生成の電気、光、または電磁信号上に符号化され得る。コンピュータ可読記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであるか、またはそれらの中に含まれ得る。さらに、コンピュータ記憶デバイスは、伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号内に符号化されたコンピュータプログラム命令のソースまたは宛先であり得る。コンピュータ記憶媒体は、1つまたは複数の別個の構成要素または媒体(例えば、複数のCD、ディスク、または他の記憶デバイス)でもあり得、またはその中に含まれ得る。コンピュータ記憶媒体は、有形であり得、および/または非一時的であり得る。
本明細書で説明されている動作は、1つもしくは複数のコンピュータ可読記憶デバイス上に記憶されたデータ、または他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実施され得る。
「データ処理装置」または「コンピューティングデバイス」という用語は、例として、プログラム可能なプロセッサ、コンピュータ、システムオンチップ、または上記の複数のもの、または上記の組合せを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置は、ハードウェアに加えて、問題のコンピュータプログラムのための実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらのうちの1つもしくは複数の組合せを構成するコードを含むこともできる。装置および実行環境は、ウェブサービス、分散コンピューティング、およびグリッドコンピューティングインフラストラクチャなどの、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイル型またはインタプリタ型言語、宣言型または手続き型言語を含む、任意の形式のプログラミング言語において記述され得、スタンドアロンプログラムとして、またはモジュール、構成要素、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットとしてを含む、任意の形式において展開され得る。コンピュータプログラムは、ファイルシステム内のファイルに対応し得るが、そうである必要はない。プログラムは、他のプログラムもしくはデータを保持するファイルの一部(例えば、マークアップ言語内に記憶された1つまたは複数のスクリプト)内、問題のプログラム専用の単一のファイル内、または複数の協調ファイル(例えば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイル)内に記憶され得る。コンピュータプログラムは、1つのコンピュータ上、または1つのサイトに配置されるか、もしくは複数のサイトに分散され、通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように展開され得る。
本明細書で説明されているプロセスおよび論理フローは、入力データに対して動作して出力を生成することによってアクションを実行するために1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラム可能なプロセッサによって実行され得る。プロセスおよび論理フローは、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によっても実行され得、装置は、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)としても実装され得る。本明細書で利用される回路は、ハードウェア回路(例えば、FPGA、ASICなど)、ソフトウェア(1つまたは複数のコンピュータ可読記憶媒体上に記憶され、1つまたは複数のプロセッサによって実行可能な命令)、またはそれらの任意の組合せを使用して実装され得る。
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、読み取り専用メモリもしくはランダムアクセスメモリまたはその両方から命令とデータとを受信する。コンピュータの本質的な要素は、命令に従ってアクションを実行するためのプロセッサ、および命令とデータとを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータは、データを記憶するための1つまたは複数の大容量記憶デバイス、例えば、磁気ディスク、光磁気ディスク、または光ディスクも含むか、またはそれらからデータを受信するため、もしくはそれらにデータを送信するため、もしくはその両方を行うためにそれらに動作可能に結合される。しかしながら、コンピュータは、そのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス内、例えば、数例を挙げると、携帯電話、携帯情報端末(「PDA」)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(「GPS」)レシーバ、またはポータブル記憶デバイス(例えば、ユニバーサルシリアルバス(「USB」)フラッシュドライブ)内に組み込まれ得る。コンピュータプログラム命令とデータとを記憶するのに適したデバイスは、例として、半導体メモリデバイス、例えば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、例えば、内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD ROMディスクおよびDVD-ROMディスクを含む、すべての形式の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補完されるか、またはそれらに組み込まれ得る。
ユーザとの対話を提供するために、本明細書で説明されている主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、例えば、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタと、ユーザがコンピュータに入力を提供することができるキーボードおよびポインティングデバイス、例えば、マウスまたはトラックボールとを有するコンピュータを使用して実行され得る。同様にユーザとの対話を提供するために、他の種類のデバイスが使用され得、例えば、ユーザに提供されるフィードバックは、任意の形態の感覚的フィードバック、例えば、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックであり得、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態において受信され得る。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、そこから文書を受信することによって、例えば、ユーザのクライアントデバイス上のウェブブラウザから受信された要求に応答してウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。
本明細書で説明されている主題の実施形態は、例えば、データサーバとしてのバックエンド構成要素を含むか、またはミドルウェア構成要素、例えば、アプリケーションサーバを含むか、またはフロントエンド構成要素、例えば、ユーザが本明細書で説明されている主題の実装形態と対話することができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含むか、または1つもしくは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムを使用して実行され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、例えば、通信ネットワークによって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(例えば、インターネット)、ならびにピアツーピアネットワーク(例えば、アドホックピアツーピアネットワーク)を含む。
コンピューティングシステムは、クライアントとサーバとを含むことができる。クライアントおよびサーバは、一般に、互いに離れており、典型的には、通信ネットワークを介して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され、互いにクライアント~サーバ関係を有するコンピュータプログラムによって発生する。いくつかの実装形態において、サーバは、データ(例えば、HTMLページ)をクライアントデバイスに(例えば、クライアントデバイスと対話するユーザにデータを表示し、ユーザからユーザ入力を受信する目的のために)送信する。クライアントデバイスにおいて生成されたデータ(例えば、ユーザ対話の結果)は、サーバにおいてクライアントデバイスから受信され得る。
本明細書は、多くの特定の実装形態の詳細を含むが、これらは、任意の発明の範囲または特許請求され得るものに対する制限として解釈されるべきではなく、むしろ、特定の発明の特定の実施形態に固有の特徴の説明として解釈されるべきである。別々の実施形態の文脈において本明細書で説明されている特定の特徴は、単一の実装形態において、または組み合わせても実行され得る。逆に、単一の実施形態の文脈において説明されている様々な特徴は、別々に複数の実施形態において、または任意の適切な部分的組合せにおいても実行され得る。さらに、特徴は、特定の組合せにおいて作用するものとして上記で説明されている場合があり、当初はそのように特許請求されている場合さえあるが、特許請求されている組合せからの1つまたは複数の特徴は、場合によっては、組合せから削除され得、特許請求されている組合せは、部分的組合せまたは部分的組合せの変形形態に向けられている場合がある。加えて、特定の見出しに関して説明されている特徴は、他の見出しの下で説明されている例示的な実装形態に関しておよび/または組み合わせて利用され得、見出しは、提供されている場合、読みやすさだけのために含まれ、そのような見出しに関して提供されている任意の機能を制限するものとして解釈されるべきではない。
同様に、動作は、特定の順序において図面中に描かれているが、これは、所望の結果を達成するために、そのような動作が示されている特定の順序で、もしくは順番に実行されること、またはすべての図示された動作が実行されることを要求するものとして理解されるべきではない。特定の状況では、マルチタスクおよび並列処理が有利な可能性がある。さらに、上記で説明した実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明されているプログラム構成要素およびシステムが、一般に、単一のソフトウェア製品に一体化され得、または有形の媒体において具体化された複数のソフトウェア製品にパッケージ化され得ることが理解されるべきである。
したがって、主題の特定の実施形態について説明してきた。他の実施形態は、以下の特許請求の範囲内にある。場合によっては、特許請求の範囲において列挙されているアクションは、異なる順序で実行され得、所望の結果を依然として達成することができる。加えて、添付図面中に描かれているプロセスは、所望の結果を達成するために、示された特定の順序、または順番を必ずしも必要としない。特定の実装形態において、マルチタスクおよび並列処理が有利である可能性がある。
10 クライアントデバイス
12 アプリケーション
20 アプリケーション、ソフトウェア開発キット、ソフトウェア開発キット(SDK)、SDK
22 イベント回路
24 バンドリング回路
26 暗号化回路
28 報告回路
60 ネットワーク
100 システム
200 第1のデータ処理システム
210 データベース
220 処理回路
222 プロセッサ
224 メモリ
300 第2のデータ処理システム
310 データベース
320 処理回路
322 プロセッサ
324 メモリ
328 分析回路
800 コンピューティングシステム
805 バス
810 プロセッサ
815 メインメモリ
820 読み取り専用メモリ(「ROM」)
825 記憶デバイス
830 入力デバイス
835 ディスプレイ、タッチスクリーンディスプレイ
840 通信アダプタ
845 コンピューティングもしくは通信ネットワーク

Claims (20)

  1. ソフトウェア開発キット(SDK)を実装する1つまたは複数のプロセッサを備えたコンピューティングデバイスによって、ユーザと関連する対話に応答してイベントデータを生成するステップと、
    前記SDKによって、前記イベントデータをバンドルするステップと、
    前記SDKによって、第1のデータ処理システムへの接続が利用できないと判定するステップと、
    前記SDKによって、前記バンドルされたイベントデータから識別子を削除することによって、第2のデータ処理システムに送信するための前記バンドルされたイベントデータを準備するステップと、
    前記SDKによって、前記準備されたバンドルされたイベントデータを前記第2のデータ処理システムに安全に送信するステップと、
    を含む、方法。
  2. 前記SDKは、イベントデータを報告するための予備経路を有効にする、
    請求項1に記載の方法。
  3. 前記SDKを実装するアプリケーションが、前記イベントデータを前記第1のデータ処理システムにネイティブに報告するように構成され、前記SDKは、前記イベントデータを前記第2のデータ処理システムに送信することを容易にする、
    請求項2に記載の方法。
  4. 前記SDKが、異なるデータを前記第1のデータ処理システムおよび前記第2のデータ処理システムに送信するように構成された報告回路を提供する、
    請求項1に記載の方法。
  5. 前記SDKが、最初に、前記バンドルされたイベントデータを前記第1のデータ処理システムに送信することを試み、当該試みの失敗のあと、前記準備されたバンドルされたイベントデータを前記第2のデータ処理システムに送信するように構成された報告回路を提供する、
    請求項1に記載の方法。
  6. 前記イベントデータは、デバイス設定、ユーザアカウント設定、アクションシーケンス、または特定のイベントに関するデータから選択された少なくとも1つのデータタイプを含む、
    請求項1に記載の方法。
  7. 前記イベントデータをバンドルするステップが、
    前記SDKによって、いくつかのイベントからのイベントデータを単一のデータパッケージに結合するステップを含む、
    請求項1に記載の方法。
  8. 前記イベントデータを準備するステップが、
    前記SDKによって、前記バンドルされたイベントデータの署名を生成するステップを含む、
    請求項1に記載の方法。
  9. 前記イベントデータを準備するステップが、
    前記SDKによって、前記バンドルされたイベントデータをハッシュ化することによって前記バンドルされたイベントデータの署名を生成するステップを含む、
    請求項1に記載の方法。
  10. 前記第1のデータ処理システムへの前記接続が利用できないと判定するステップが、
    前記SDKによって、前記第1のデータ処理システムがデータパッケージの受信を確認するかどうかを判定するステップを含む、
    請求項1に記載の方法。
  11. イベントデータを生成するステップが、
    前記SDKによって、前記イベントデータにイベントタイプをラベル付けするステップを含む、
    請求項1に記載の方法。
  12. コンピューティングシステムに動作を実行させるために実行可能な命令を記憶するコンピュータ可読記憶媒体であって、前記動作が、
    ソフトウェア開発キット(SDK)によって、ユーザと関連する対話に応答してイベントデータを生成することと、
    前記SDKによって、前記イベントデータをバンドルすることと、
    前記SDKによって、第1のデータ処理システムへの接続が利用できないと判定することと、
    前記SDKによって、前記バンドルされたイベントデータから識別子を削除することによって、第2のデータ処理システムに送信するための前記バンドルされたイベントデータを準備することと、
    前記SDKによって、前記準備されたバンドルされたイベントデータを前記第2のデータ処理システムに安全に送信することと、
    を含む、コンピュータ可読記憶媒体。
  13. 前記SDKは、イベントデータを報告するための予備経路を有効にする、
    請求項12に記載のコンピュータ可読記憶媒体。
  14. 前記SDKを実装するアプリケーションが、前記イベントデータを前記第1のデータ処理システムにネイティブに報告するように構成され、前記SDKは、前記イベントデータを前記第2のデータ処理システムに送信することを容易にする、
    請求項13に記載のコンピュータ可読記憶媒体。
  15. 前記SDKが、異なるデータを前記第1のデータ処理システムおよび前記第2のデータ処理システムに送信するように構成された報告回路を提供する、
    請求項12に記載のコンピュータ可読記憶媒体。
  16. 前記SDKが、最初に、前記バンドルされたイベントデータを前記第1のデータ処理システムに送信することを試み、当該試みの失敗のあと、前記準備されたバンドルされたイベントデータを前記第2のデータ処理システムに送信するように構成された報告回路を提供する、
    請求項12に記載のコンピュータ可読記憶媒体。
  17. 1つまたは複数のプロセッサと、
    コンピューティングシステムに動作を実行させるために実行可能な命令を記憶するコンピュータ可読記憶媒体と、を含む、コンピューティングシステムであって、前記動作が、
    ソフトウェア開発キット(SDK)によって、ユーザと関連する対話に応答してイベントデータを生成することと、
    前記SDKによって、前記イベントデータをバンドルすることと、
    前記SDKによって、第1のデータ処理システムへの接続が利用できないと判定することと、
    前記SDKによって、前記バンドルされたイベントデータから識別子を削除することによって、第2のデータ処理システムに送信するための前記バンドルされたイベントデータを準備することと、
    前記SDKによって、前記準備されたバンドルされたイベントデータを前記第2のデータ処理システムに安全に送信することと、
    を含む、コンピューティングシステム。
  18. 前記SDKは、イベントデータを報告するための予備経路を有効にする、
    請求項17に記載のコンピューティングシステム。
  19. 前記SDKを実装するアプリケーションが、前記イベントデータを前記第1のデータ処理システムにネイティブに報告するように構成され、前記SDKは、前記イベントデータを前記第2のデータ処理システムに送信することを容易にする、
    請求項18に記載のコンピューティングシステム。
  20. 前記SDKが、異なるデータを前記第1のデータ処理システムおよび前記第2のデータ処理システムに送信するように構成された報告回路を提供する、
    請求項17に記載のコンピューティングシステム。
JP2022557938A 2020-07-14 2020-07-14 委任された分析収集のシステムおよび方法 Active JP7485777B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2020/042007 WO2022015295A1 (en) 2020-07-14 2020-07-14 Systems and methods of delegated analytics collection

Publications (2)

Publication Number Publication Date
JP2023524936A JP2023524936A (ja) 2023-06-14
JP7485777B2 true JP7485777B2 (ja) 2024-05-16

Family

ID=71895283

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022557938A Active JP7485777B2 (ja) 2020-07-14 2020-07-14 委任された分析収集のシステムおよび方法

Country Status (6)

Country Link
US (1) US20230115547A1 (ja)
EP (1) EP4104084A1 (ja)
JP (1) JP7485777B2 (ja)
KR (1) KR20220165265A (ja)
CN (1) CN115461743B (ja)
WO (1) WO2022015295A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7447204B1 (ja) 2022-08-31 2024-03-11 楽天グループ株式会社 情報管理システム、情報管理方法及びプログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013218449A (ja) 2012-04-06 2013-10-24 Hitachi Ltd クラウドコンピューティングシステム
US20150088635A1 (en) 2013-09-23 2015-03-26 Umbel Corporation Systems and methods of measurement and modification of advertisements and content
JP2015531096A (ja) 2012-06-11 2015-10-29 インタートラスト テクノロジーズ コーポレイション データ収集・解析システムと方法
WO2020100118A1 (en) 2018-11-15 2020-05-22 Ravel Technologies SARL Cryptographic anonymization for zero-knowledge advertising methods, apparatus, and system

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8495244B2 (en) * 2005-06-29 2013-07-23 Jumpstart Wireless Corporation System and method for dynamic automatic communication path selection, distributed device synchronization and task delegation
US8744423B2 (en) * 2007-09-28 2014-06-03 Microsoft Corporation Device migration
US20090094525A1 (en) * 2007-10-05 2009-04-09 Triggit, Inc. System and method for dynamic media integration into web pages
US8701085B2 (en) * 2008-12-08 2014-04-15 Adobe Systems Incorporated Graphical event and binding editor for software development
US20140088911A1 (en) * 2011-05-29 2014-03-27 Cigol Digital Systems Ltd. VLSI Circuit Verification
WO2013012926A1 (en) * 2011-07-21 2013-01-24 Bendix Commercial Vehicle Systems Llc A vehicular fleet management system and methods of monitoring and improving driver performance in fleet vehicles
US9729327B2 (en) * 2013-10-29 2017-08-08 International Business Machines Corporation Computer-based optimization of digital signature generation for records based on eventual selection criteria for products and services
US9582680B2 (en) * 2014-01-30 2017-02-28 Microsoft Technology Licensing, Llc Scrubbe to remove personally identifiable information
US20150220888A1 (en) * 2014-02-06 2015-08-06 Zeeplanner Llc System and method of scheduling meetings, appointments and events using multiple identities
US9471414B2 (en) * 2014-08-12 2016-10-18 Apollo Education Group, Inc. Service response detection and management on a mobile application
US9766769B1 (en) * 2014-12-31 2017-09-19 FullStory, Inc. Evaluation of interactions with a user interface
US10063585B2 (en) * 2015-03-18 2018-08-28 Qualcomm Incorporated Methods and systems for automated anonymous crowdsourcing of characterized device behaviors
CN106980534B (zh) * 2016-01-19 2021-04-06 创新先进技术有限公司 基于sdk组件的业务执行方法及装置
US10572280B2 (en) * 2017-02-17 2020-02-25 Google Llc Mobile application activity detector
US10490039B2 (en) * 2017-12-21 2019-11-26 At&T Intellectual Property I, L.P. Sensors for detecting and monitoring user interaction with a device or product and systems for analyzing sensor data
CN108200219B (zh) * 2018-03-13 2020-04-14 Oppo广东移动通信有限公司 数据同步方法、装置、服务器及存储介质
US10796019B2 (en) * 2018-07-17 2020-10-06 Dell Products L.P. Detecting personally identifiable information (PII) in telemetry data
US10783270B2 (en) * 2018-08-30 2020-09-22 Netskope, Inc. Methods and systems for securing and retrieving sensitive data using indexable databases
US11212117B2 (en) * 2018-12-03 2021-12-28 T-Mobile Usa, Inc. Tamper-resistant software development lifecycle provenance
TWI684131B (zh) * 2019-02-26 2020-02-01 華碩電腦股份有限公司 資料傳輸裝置、資料傳輸方法以及非暫態電腦可讀取記錄媒體
US11663607B2 (en) * 2019-09-04 2023-05-30 Optum, Inc. Machine-learning based systems and methods for generating an ordered listing of objects for a particular user

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013218449A (ja) 2012-04-06 2013-10-24 Hitachi Ltd クラウドコンピューティングシステム
JP2015531096A (ja) 2012-06-11 2015-10-29 インタートラスト テクノロジーズ コーポレイション データ収集・解析システムと方法
US20150088635A1 (en) 2013-09-23 2015-03-26 Umbel Corporation Systems and methods of measurement and modification of advertisements and content
WO2020100118A1 (en) 2018-11-15 2020-05-22 Ravel Technologies SARL Cryptographic anonymization for zero-knowledge advertising methods, apparatus, and system

Also Published As

Publication number Publication date
EP4104084A1 (en) 2022-12-21
KR20220165265A (ko) 2022-12-14
WO2022015295A1 (en) 2022-01-20
US20230115547A1 (en) 2023-04-13
CN115461743A (zh) 2022-12-09
CN115461743B (zh) 2024-10-01
JP2023524936A (ja) 2023-06-14

Similar Documents

Publication Publication Date Title
US11962687B2 (en) Methods for protecting privacy
JP6694018B2 (ja) メディアインプレッション及び検索語に対する分散型ユーザ情報を収集するための方法及び装置
US12021972B2 (en) Aggregating encrypted network values
US11121859B1 (en) Efficient incremental consensus for block commit in blockchain network
US20220405407A1 (en) Privacy preserving cross-domain machine learning
US11709968B2 (en) Data integrity
JP7201848B2 (ja) 時間データの取得または操作を防止しながらネットワークデータのシーケンスを生成すること
US11841973B2 (en) Methods for aggregating credit across interactions
JP7485777B2 (ja) 委任された分析収集のシステムおよび方法
JP7304954B2 (ja) 特徴を共有するイベントを識別するためのシステムおよび方法
US9021599B2 (en) Protecting privacy via a gateway
WO2021242290A1 (en) Methods for aggregating credit across interactions
EP4091060B1 (en) Systems and methods of debugging delivery of content items
US9148468B1 (en) Distributing shared content

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221115

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231211

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240321

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240408

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240502

R150 Certificate of patent or registration of utility model

Ref document number: 7485777

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150