JP2022545545A - ネイティブアプリケーションのためのユーザインターフェースデータ収集におけるユーザプライバシーの保護 - Google Patents

ネイティブアプリケーションのためのユーザインターフェースデータ収集におけるユーザプライバシーの保護 Download PDF

Info

Publication number
JP2022545545A
JP2022545545A JP2022513315A JP2022513315A JP2022545545A JP 2022545545 A JP2022545545 A JP 2022545545A JP 2022513315 A JP2022513315 A JP 2022513315A JP 2022513315 A JP2022513315 A JP 2022513315A JP 2022545545 A JP2022545545 A JP 2022545545A
Authority
JP
Japan
Prior art keywords
user
user interface
content
presented
data
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.)
Pending
Application number
JP2022513315A
Other languages
English (en)
Inventor
マシュー・マストラッチ
ジョエル・グレイソン・ウェバー
ジョシュア・エル・マイヤーズ
Original Assignee
フルストーリー・インコーポレイテッド
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 フルストーリー・インコーポレイテッド filed Critical フルストーリー・インコーポレイテッド
Publication of JP2022545545A publication Critical patent/JP2022545545A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0254Stateful filtering
    • 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
    • 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
    • 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/3466Performance evaluation by tracing or monitoring
    • G06F11/349Performance evaluation by tracing or monitoring for interfaces, buses
    • 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/835Timestamp
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

ユーザセッションのプレイバックを生成するための、コンピュータ記憶媒体上で符号化されたコンピュータプログラムを含む、方法、システム、および装置。一態様では、方法は、発行者のホワイトリスト化ビューのセットを指定する構成データをクライアントデバイスに提供することを含む。ユーザセッションのためのユーザインターフェースデータが、クライアントデバイスから受信される。ユーザインターフェースデータは、ユーザセッション中に提示された1つまたは複数のユーザインターフェースの構造を指定するビューデータ、1つまたは複数のユーザインターフェースとのユーザ対話を指定するユーザ対話データ、および(i)1つまたは複数のユーザインターフェースによって提示され、かつ(ii)構成データによって指定されるホワイトリスト化ビューに整合するビューから生成された、1つまたは複数の第1の提示されたユーザインターフェース要素のコンテンツを含む。ユーザセッションのプレイバックが、ユーザインターフェースデータに基づいて生成される。

Description

関連出願の相互参照
本出願は、2019年8月28日に出願された「PROTECTING USER PRIVACY IN USER INTERFACE DATA COLLECTION FOR NATIVE APPLICATIONS」と題する米国特許出願第62/892,914号の、米国特許法第119条(e)の下での利益を主張する。上記の出願の開示は、すべての目的のためにその全体が参照により本明細書に組み込まれる。
ユーザインターフェースは、様々なリソースおよびアプリケーションとのユーザ対話を容易にする。たとえば、ユーザインターフェースは、一般に、ユーザが、(たとえば、テキストボックスを使用して)データを入力すること、(たとえば、ラジオボタン、チェックボックス、またはドロップダウンメニューを使用して)データ選択を行うこと、(たとえば、埋込み式リンクと対話することによって)リソースまたはアプリケーションページにナビゲートすること、およびユーザインターフェースの視覚的な様相を変更する(たとえば、デバイスを回転させる、ウィンドウのサイズを変更する、文書の他の部分へスクロールする、またはズーム制御を使用する)ことを可能にする、様々な対話型要素を含む。所与のウェブサイトまたはアプリケーションへの利用者満足度が、ユーザインターフェースを伴うユーザの体験に依存することができるので、ユーザインターフェースを用いたユーザセッションが記録され得るとともに発行者にプレイバックされ得る。
米国特許出願第16/038,002号 米国特許出願第16/370,574号
概して、本明細書で説明する主題の1つの発明的態様は、発行者のホワイトリスト化ビューのセットを指定する構成データをクライアントデバイスに提供することであって、各ホワイトリスト化ビューが、コンテンツがそこから収集されクライアントデバイスから送信されるのに適格なビューである、提供することと、クライアントデバイスから、かつユーザがその中で発行者の1つまたは複数のユーザインターフェースと対話したユーザセッションに対して、ユーザインターフェースデータを受信することであって、ユーザインターフェースデータが、ユーザセッション中に提示された1つまたは複数のユーザインターフェースの構造を指定するビューデータ、1つまたは複数のユーザインターフェースとのユーザ対話を指定するユーザ対話データ、および(i)1つまたは複数のユーザインターフェースによって提示され、かつ(ii)構成データによって指定されるホワイトリスト化ビューに整合するビューから生成された、1つまたは複数の第1の提示されたユーザインターフェース要素のコンテンツを含み、アプリケーションが、構成データによって指定されるホワイトリスト化ビューに整合しないビューから生成された、1つまたは複数の第2の提示されたユーザインターフェース要素のコンテンツを提供しない、受信することと、1つまたは複数のユーザインターフェース、1つまたは複数の第1の提示されたユーザインターフェース要素のコンテンツ、1つまたは複数のユーザインターフェースとのユーザ対話、および1つまたは複数の第2のユーザインターフェース要素のコンテンツに対しては、第2のユーザインターフェースのコンテンツを表すマスキング要素を提示する、ユーザセッションのプレイバックを、ユーザインターフェースデータに基づいて生成することとを含む方法において、具現され得る。この態様の他の実施形態は、コンピュータ記憶デバイス上で符号化される、本方法のアクションを実行するように構成された、対応する方法、装置、およびコンピュータプログラムを含む。
これらおよび他の実施形態は各々、以下の特徴のうちの1つまたは複数を随意に含むことができる。いくつかの態様では、ビューデータは、ユーザインターフェースごとに、ユーザインターフェースを生成するために使用されるビューの階層を指定するデータを含む。
いくつかの態様では、所与の第1の提示されたユーザインターフェース要素のコンテンツは、1つまたは複数のユーザインターフェースのうちの所与のユーザインターフェースによって提示されたテキストを含み、テキストのためのマスキング要素は、所与のユーザインターフェースの中でテキストを画定する長方形のサイズに整合する長方形ボックスを含む。所与の第1の提示されたユーザインターフェース要素のコンテンツは、1つまたは複数のユーザインターフェースのうちの所与のユーザインターフェースによって提示されたテキストを含むことができ、テキストのためのマスキング要素は、テキストの上昇に基づく高さを有する長方形ボックスを含むことができる。
いくつかの態様では、所与の第1の提示されたユーザインターフェース要素のコンテンツは、1つまたは複数のユーザインターフェースのうちの所与のユーザインターフェースによって提示された画像を含み、画像のためのマスキング要素は、画像の所与のピクセルに整合する色を有する置換画像を含む。所与の第1の提示されたユーザインターフェース要素のコンテンツは、1つまたは複数のユーザインターフェースのうちの所与のユーザインターフェースによって提示された画像を含むことができ、画像のためのマスキング要素は、画像のピクセルのサンプルから生成された置換画像を含むことができ、ピクセルのサンプルは、画像のピクセルの総数よりも少ない。
いくつかの態様は、ユーザセッションのプレイバックにおける1つまたは複数のユーザインターフェースのうちの少なくとも1つによって提示されている、ユーザインターフェース要素とのユーザ対話を、ユーザセッションのプレイバック中に検出することを含むことができる。ユーザ対話の検出に応答して、ユーザインターフェース要素を生成するために使用される所与のビューのホワイトリストステータスが変更される。ホワイトリストステータスは、ビューがクライアントデバイスから収集されるべきコンテンツを含むかどうかを指定する。所与のビューのホワイトリストステータスを変更することは、ホワイトリスト化コンテンツを指定するホワイトリスト上に所与のビューがあるときはいつでもホワイトリスト化コンテンツから所与のビューを除去することと、ホワイトリスト化コンテンツを指定するホワイトリスト上にビューがないときはいつでもホワイトリストにビューを追加することとを含むことができる。
バンキングウェブページまたはアプリケーションのユーザインターフェースなどのいくつかのユーザインターフェースは、ユーザインターフェースと対話しているユーザのプライベートデータまたは他のプライベートコンテンツを提示する。このコンテンツは、通常、ユーザインターフェースの品質および機能性を査定する際には有用でなく、他の当事者に提示されるべきでないので、そのようなコンテンツがプレイバックの一部でないことを確実にするように対処されるべきである。
本明細書で説明する主題の特定の実施形態は、以下の利点のうちの1つまたは複数を実現するように実施され得る。本明細書で説明する技法は、ユーザインターフェースが提示された方式およびユーザセッション中に行われたユーザインターフェースへの変更を正確に反映する、ユーザセッションのプレイバックを生成するのに十分な情報を依然として収集しながら、コンテンツ、たとえば、プライベートコンテンツまたは機密コンテンツがユーザのデバイスから収集されることを防止することによって、ユーザのプライバシーを保護する。
プレイバック中にテキストを表すマスキング要素のサイズを正しく合わせるために、テキストを含むオブジェクトのサイズを使用するテキスト置換技法は、テキストが提示された方式を、実際のテキストを提示することなく正確に反映する。これらの技法はより正確であり、テキスト置換のサイズを正確に合わせるために、実際のテキストを他のテキストと置換する技法よりも低い処理能力および少ない計算リソースしか必要としない。テキストを非テキスト表現と置換することは、そのような代用を逆転させるための能力を不可能にすることによって、他のテキストをプライベートテキストの代わりにする技法に比べてユーザのプライバシーをさらに保護する。どのオブジェクトに対してサイズ情報を収集すべきかを決定するための、本明細書で説明する技法は、すべてのオブジェクトに対してサイズ情報を取得する技法に比べて、サイズ情報を取得する際に(たとえば、リソース、処理能力、時間などに関して)計算コストを低減する。
ユーザインターフェースがロードされるときに、収集されるべきホワイトリスト化コンテンツを指定する構成データをアプリケーション(たとえば、ウェブブラウザまたはネイティブアプリケーション)に提供することは、ウェブページまたはネイティブアプリケーションのコードにプログラム的な変更を加える必要なく、任意の時間において発行者がホワイトリスト化コンテンツを更新することを可能にする。このことは、更新を生成し、テストし、かつ配信する、時間およびコストがかかるプロセスを必要とすることなく、収集されるデータへの迅速かつ動的な変更を可能にする。本明細書で説明するユーザインターフェースは、ユーザセッションのプレイバック中にホワイトリスト化されるかまたはホワイトリストから除去されるべきコンテンツを発行者が簡単に選択することを可能にすることによって、このプロセスをさらに簡略化しその速度を速めることができる。
本明細書で説明する主題の1つまたは複数の実施形態の詳細が、添付図面および以下の説明において記載される。本主題の他の特徴、態様、および利点が、説明、図面、および特許請求の範囲から明らかとなろう。
ユーザがその中でユーザインターフェースと対話する例示的な環境のブロック図である。 ユーザセッション中に提示される例示的なユーザインターフェースの図である。 図2Aのユーザインターフェースのための例示的な仮想ドキュメントオブジェクトモデル(DOM:document object model)の一部分を示す図である。 ユーザセッションをリプレイするための例示的な対話型インターフェースの図である。 ユーザセッションのプレイバックを提示する対話型インターフェースを生成および提供するための例示的なプロセスのフローチャートである。 ユーザインターフェース要素のホワイトリストステータスを更新するための例示的なプロセスのフローチャートである。
様々な図面の中の同様の参照番号および呼称は、同様の要素を示す。
本明細書で説明する技法は、ユーザインターフェースを見るとともにユーザインターフェースと対話するユーザのプライバシーを同じく保護しながら、ユーザインターフェースと対話する肯定的な体験をユーザが有するように、発行者が彼らのユーザインターフェース(たとえば、ウェブページまたはアプリケーションインターフェース)を最適化することを可能にする。ユーザプライバシーを保護すべき必要性は、高まりつつある関心事になっているので、ユーザデータに触れるいかなる技術においても、これらの技法は極めて重要である。本明細書で説明する技法は、ユーザデータが絶えずユーザデバイスから収集または転送されることを防止し、データが送信中に傍受され得ないことまたは別のデバイスから盗まれ得ないことを確実にする。同時に、実際のユーザデータを見せることなく、ユーザに提示されたユーザインターフェース、ユーザセッション中に行われたユーザインターフェースへの変更、およびユーザセッション中に行われたユーザ対話を正確に反映するユーザセッションを再作成するために、ユーザインターフェースの構造およびユーザインターフェースの中で提示される要素のサイズに関係するデータなどの、極めて詳細なデータが収集され得る。
たとえば、銀行のウェブサイトまたはモバイルアプリケーションは、顧客の残高、取引、およびユーザにとってプライベートな他のデータを顧客に見せる。ウェブサイトまたはアプリケーションの品質を査定する際に、取引および残高を示す実際のテキストは必要とされず、顧客は、そのようなデータが、プレイバックおよび分析のためにユーザインターフェースデータを収集するサードパーティと共有されないこと、ならびにそのようなデータが、ユーザセッションのプレイバックを見るときにウェブサイトまたはアプリケーション発行者に提示されないことを、好むことになる。本明細書で説明する技法は、顧客によって見られるユーザインターフェースを正確に、ただし、ユーザの実際のデータを伴わずに、プレイバックが反映するように、そのようなデータがクライアントデバイスから収集されることを防止し、プレイバックにおいてデータを置換する。たとえば、そのようなデータは、クライアントデバイスにおいてユーザインターフェースを記録するときに識別され得、データがクライアントデバイスから送られる前に削除され得るか、または非可逆的なデータと置換され得る。プレイバック中、ワイヤフレームオブジェクトの形態をなすことができるマスキング要素が、そのようなデータの代わりに提示され得る。
本技法はまた、発行者のユーザインターフェースを用いたユーザセッション中にどんなデータが収集されるのかについて、微調整された制御を発行者に与える。概して、ユーザインターフェースのすべてのコンテンツが排除またはマスクされ、かつユーザセッション中に構造データだけが収集されるように、デフォルトの手法によるプライバシーは取り除かれ得る。プライバシーを保持するそのようなプレイバックは、発行者がアプリケーションとのエンドユーザの対話を見ることを可能にするが、画面上の機密データは、そのデータが発行者によって明示的にマスク解除されない限り、収集されず、サードパーティへ送られず、または発行者に提示されない。発行者は、プレイバック中に単にコンテンツと対話(たとえば、選択)すること、または収集されるべきコンテンツを指定するデータを提供することによって、たとえば、収集されるべきアプリケーションの特定のビューを指定することによって、収集または遮断されるべきコンテンツを容易に選択することができる。たとえば、小売業者が、仮想ショッピングカートの中に置かれた品物の数量を見ること、ユーザが数量セレクタとどのように対話するのかを見ること、および数量セレクタの機能性を査定することを望むと決定する場合、その小売業者は、単にユーザセッションのうちの1つのプレイバック中に数量セレクタを選択することができる。別の顧客が後で同じアプリケーションページを見ると、数量セレクタを使用して選択された品物の数量が、そのユーザセッションのプレイバックのために記録される。小売業者は、単にユーザセッションのプレイバック中に再び数量セレクタと対話(たとえば、選択)することによって、数量の収集を後でやめることができる。このことはすべて、小売業者がウェブページまたはアプリケーションにいかなるプログラム的な変更も加える必要なくバックエンドで(たとえば、サーバにおいて)処理され得る。
発行者(たとえば、ウェブページおよび/またはアプリケーションインターフェースなどのユーザインターフェースを提供するエンティティ)は、一般に、ユーザが肯定的な体験を有するようにユーザインターフェースを利用者本位にさせることを望む。所与のユーザインターフェース(たとえば、ウェブページまたはアプリケーションインターフェース)とのユーザ対話、およびユーザインターフェースを用いたユーザセッション中に発生するイベントについての情報を有することは、ユーザエクスペリエンスを改善するように変更され得るユーザインターフェースの様相を発行者が迅速に識別する助けとなり得る。これらの様相は、ユーザインターフェースとの実際のユーザ対話を使用して識別され得、それによって、外部利用者調査を実施するかまたはユーザインターフェースについての主観的なフィードバックに依拠すべき必要性をなくす。むしろ、ユーザインターフェースとのユーザの記録された実際の対話、および/または対話の特性に基づくこれらのユーザ対話の分類が、ユーザエクスペリエンスを改善するように変更され得る、ユーザインターフェースの範囲を明らかにする。
本明細書は、ユーザセッションのプレイバックを容易にするために、クライアントデバイスにおいて提示されたユーザインターフェース要素についての詳細情報、およびどのユーザインターフェース要素についてユーザがクライアントデバイスと対話したのかという情報の収集を、依然として可能にしながら、指定されたコンテンツ、たとえば、機密データまたはプライベートデータを含むことがあるコンテンツの収集を防止するための技法を説明する。機密データまたはプライベートデータは、プレイバックの中で提示されるユーザインターフェースが実際のユーザセッション中に提示されたユーザインターフェースを反映するような同じサイズを有するコンテンツと、ユーザセッションのプレイバックの中で置換され得る。たとえば、テキストを置換するために使用される要素のサイズが実際のテキストよりも大きい場合、このことは、他のユーザインターフェース要素を不適切に、たとえば、互いの上に、または画面上の不適切なロケーションにおいて、提示させることがあり、そのことはクライアントデバイスにおいて実際に提示されたものの不正確な描写につながる。
図1は、ユーザがその中でユーザインターフェースと対話する例示的な環境100のブロック図である。例示的な環境100は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、モバイルネットワーク、またはそれらの組合せなどの、ネットワーク102を含む。ネットワーク102は、ユーザデバイス106、アプリケーション開発者108、および評価装置150を接続する。例示的な環境100は、多くの異なるユーザデバイス106およびアプリケーション開発者108を含んでよい。
ユーザデバイス106は、ネットワーク102を介してリソースを要求および受信することが可能な電子デバイスである。例示的なユーザデバイス106は、パーソナルコンピュータ、モバイル通信デバイス、およびネットワーク102を介してデータを送ることおよび受信することができる他のデバイスを含む。ユーザデバイス106は、通常、ネットワーク102を介したデータの送出および受信を容易にするために、ウェブブラウザなどのユーザアプリケーションを含む。ユーザデバイス106はまた、モバイルデバイス上で実行するネイティブモバイルアプリケーションなどの、他のアプリケーション107を含むことができる。モバイルアプリケーションは、特定のプラットフォームまたは特定のデバイスのために開発されたネイティブアプリケーション、たとえば、iOS(商標)のために開発されたアプリケーションおよび/またはAndroid(商標)のために開発されたアプリケーションを含むことができる。
アプリケーション107は、アプリケーション107を開発したアプリケーション開発者108へネットワーク102を介してコンテンツ要求112をサブミットすることができる。たとえば、ユーザがアプリケーション107をオープンすると、アプリケーション107は、アプリケーションのユーザインターフェースによって提示されるべき画像、テキスト、ビデオ、グラフィックス、または他のコンテンツを要求することができる。アプリケーション開発者108は、コンテンツ要求に応答して1つまたは複数のコンテンツ記憶装置110(たとえば、ハードドライブ、フラッシュメモリなどの、メモリ記憶デバイス)からアプリケーションコンテンツ114を提供する、1つまたは複数のコンテンツサーバ109を有することができる。アプリケーション107はまた、ユーザデバイス106においてコンテンツを記憶することができる。たとえば、通常はアプリケーション107がオープンされるたびに(または、複数の時間において)提示されるテキスト、(たとえば、アイコンまたはロゴの)画像、および他のタイプのコンテンツが、アプリケーション107がインストールまたは実行されるユーザデバイス106において記憶され得る。このコンテンツは、一時的に、またはアプリケーションがユーザデバイス106においてインストールされている限りのいずれかで、記憶され得る。
アプリケーション107は、アプリケーション107のユーザインターフェースによって提示されたコンテンツおよびユーザインターフェースとのユーザ対話を表すデータを収集し、記憶し、かつ送信する、計装モジュール121(たとえば、計装コード)を含むことができる。アプリケーション107が実行している間、計装モジュール121は、データを収集することができ、ユーザデバイス106においてデータを記憶することができる。計装モジュール121は、(たとえば、データを符号化することによって)データを圧縮することができ、たとえば、周期的に、または収集および/もしくは圧縮されたデータの量に基づいて、評価装置150にデータを提供することができる。
いくつかの実装形態では、計装モジュール121は、アプリケーション107が起動されるときに(または、その前に)起動される、アプリケーション107へのプラグインである。詳細には、計装モジュール121は、(たとえば、アプリケーションを開発および提供するエンティティとは異なる)サードパーティによって提供される別個のアプリケーションであり得、アプリケーション107がユーザデバイス106上で実行している間、ユーザインターフェースによって提示されたコンテンツを表すデータを収集する。実行している間、計装モジュール121は、データを収集することができ、ユーザデバイス106においてデータを記憶することができる。
いくつかの実装形態では、アプリケーション開発者108(または、評価装置150に関連するエンティティなどの別のエンティティ)は、(たとえば、アプリケーション107のソースコードを計装する必要があるのではなく)アプリケーション107用のビルドファイルの中に数行のコードを含めることによって、計装モジュール121をアプリケーション107によって起動させることができる。たとえば、コードは、計装モジュール121がどこで見つけられ得るのか(たとえば、計装モジュール121のロケーションに対するURL)、および/またはアプリケーション107の中に計装モジュール121を含めるようにビルドシステムに命令するコードを、識別することができる。
いくつかの実装形態では、計装モジュール121は、アプリケーション107が起動されるたびに起動されるライブラリを含む(または、その形態をなす)。たとえば、アプリケーション107がiOS(商標)上で実行するアプリケーションである場合、計装モジュール121は、ユーザデバイス106においてアプリケーション107が初期化されるたびに起動されるiOS(商標)ライブラリを含むことができる。開発者は、ライブラリをアプリケーション107に、またライブラリへの参照をアプリケーションの情報特性ファイル(たとえば、iOS(商標)におけるアプリケーションのplist)に追加することができ、計装モジュール121は、アプリケーション107が起動されるたびに起動することができる。
以下でより詳細に説明するように、計装モジュール121は、ユーザセッション中に収集され得るとともに評価装置150に提供され得るコンテンツを指定するホワイトリスト122を、評価装置150または別のソースからダウンロードすることができる。計装モジュール121が現在のホワイトリストを使用するように、かつアプリケーション107のコードを更新する必要なくホワイトリスト122が必要とされるのと同じくらい頻繁に更新され得るように、計装モジュール121は、アプリケーション107が起動されるたびにホワイトリスト122をダウンロードすることができる。いくつかの実装形態では、クライアントデバイスによって記録されるコンテンツだけが、ホワイトリスト122の中で指定されるコンテンツである。アプリケーションの中に常に含まれるコンテンツ、たとえば、ユーザ固有でなく代わりにアプリケーションのすべてのユーザに提示されるロゴまたはテキストなどの、いくつかのコンテンツは、デフォルトでホワイトリスト化され得る。そのようなコンテンツは、アプリケーションのコンパイル済みのコードを分析することによって識別され得る。たとえば、アプリケーションのコンパイル済みのコードは、アプリケーションによって、またはアプリケーションの特定のアプリケーションページによって、常に表示される画像、テキスト、または他のコンテンツへの参照を含むことができる。
アプリケーション開発者はまた、たとえば、コンテンツがそこから収集されるべき特定のビューをホワイトリストに追加することによって、コンテンツをホワイトリストに追加することができる。このことは、機密でなく、かつコンテンツを含むユーザセッションのプレイバックに基づいてユーザインターフェースを分析する助けとなることになるコンテンツを、開発者が識別することを可能にする。
計装モジュール121は、アプリケーション107によって提示されるユーザインターフェースに関係するデータを収集し、データを符号化および/または圧縮し、かつデータを評価装置150へ送る、様々なモジュールを含むことができる。たとえば、2018年7月17日に出願され参照により本明細書に組み込まれる米国特許出願第16/038,002号に記載されるように、計装モジュール121は、ビュースキャナ、データコレクタ、およびキャンバスレコーダを含むことができる。これらの構成要素は、アプリケーションのユーザインターフェースの現在のフレームに対するデータを周期的に収集することができ、フレームごとにデータを記憶することができる。本明細書では、フレームは、所与の時点におけるユーザインターフェースの状態を表す。たとえば、ユーザがアプリケーションと対話するにつれてユーザインターフェースは変化することができ、各フレームはそれぞれの所与の時点におけるユーザインターフェースの状態を表すことができる。いくつかの実装形態では、各構成要素は、1秒当たり所与の回数でそのデータを収集することができる。データが収集されるたびに、合成されるデータは、アプリケーションのユーザインターフェースの特定のフレーム用であり、特定のフレームに対するフレームバンドル129の中に記憶され得る。フレームバンドル129は、所与のフレームに対するデータの集合であり、特定のフレームに対してユーザインターフェースによって表示されるコンテンツを表すデータを含むことができる。
計装モジュール121が起動されると初期化されるスレッドであり得るビュースキャナは、アプリケーション107の提示階層130からデータを取得することができる。提示階層130は、ビューツリーの形態をなすことができる。ビューツリーは、アプリケーションのユーザインターフェースを生成するために使用されるビューグループおよび個々のビューの階層を含むことができる。たとえば、ビューは、テキストビューまたは画像ビューであってよく、ビューグループは、テキストビューおよび画像ビューなどの複数のビューを含んでよい。各ビューは、クラスの特定のインスタンスに対して、クラスのビューおよび属性(たとえば、寸法、テキストのタイプまたはフォント、メタデータなど)を実施するクラスを指定することができる。ビュースキャナは、所与の時間においてアプリケーション107に対するビューツリーから、アプリケーション107のユーザインターフェースの中で提示されるビュー、および各ビューのコンテンツを、ビューツリー130の中に含まれるデータに基づいて識別することができる。
ビュースキャナは、たとえば、深さ優先の順序で、トップレベルウィンドウの各々を通じて反復することができ、各ウィンドウに取り付けられた各ビューを通じて反復することができる。ビューごとに、ビュースキャナは、ビューの画面上での位置、ビューのアルファ透明度、ビュー変換、および他の適切なデータなどの、データを収集することができる。以下で説明するように、キャンバスレコーダは、各ビューのコンテンツをキャプチャすることができる。
テキストビューに対して、ビュースキャナは、テキストビューによって提示される実際のテキスト、テキストの各文字列(たとえば、テキストの各行)のサイズ、ならびにテキストのフォントの特性、たとえば、フォントのタイプ、色、および/またはサイズを収集することができる。ビュースキャナは、テキストの文字列のサイズを得るために1つまたは複数の関数を使用することができる。たとえば、Android(商標)では、ビュースキャナは、テキストの文字列を画定する長方形のサイズを取得するためにgetTextBoundsメソッドまたは類似の関数を使用することができる。この長方形は、テキストの文字列の高さおよび幅を表す。すなわち、長方形は、テキストの文字列の中で最も低く延在する文字の下部から、テキストの文字列の中で最も高く延在する文字の上部まで、高さにおいて延在することができる。長方形はまた、一番左の文字から一番右の文字まで、幅において延在することができる。ビュースキャナはまた、テキストの文字列の幅を得るためにmeasureTextメソッドまたは類似の関数を使用することができる。
いくつかの実装形態では、ビュースキャナはまた、テキストビューの中のテキストの各文字列の基線および上昇を取得するためにオペレーティングシステムの関数を使用することができる。基線とは、テキストの文字列の文字がその上に載っている仮想的な線であり、上昇とは、最も背が高い文字の上部までの基線からの距離である。これは、マスクされる(たとえば、ホワイトリスト化されない)テキストを表すマスキング要素を作成するために、プレイバック中に使用され得る。たとえば、テキストを表すボックスは、そのボックスが上昇+下降(最も低い文字の下部までの基線からの距離)に等しい高さを有するのではなく、高さにおいて上昇に等しい距離だけ基線から延在する場合、より審美的に感じのよいものであってよく、テキストのより正確な置換であり得る。
ビュースキャナはまた、ビューを固有に識別する識別子を各ビューに割り当てることができる。この固有識別子は、ビューおよびその対応するデータがメモリの中に記憶されるロケーションに対応すること、たとえば、基づくことができる。
ビュースキャナはまた、クリップされたビュー、たとえば、目に見えないかまたは他のビューによって遮られるビューを、識別および廃棄することができる。ビュースキャナ123は、ウィンドウ内のビューのサイズ、ロケーション、および階層に基づいて、完全に覆い隠されているビューを識別することができる。完全に覆い隠されたビューは、ユーザデバイスディスプレイにおいて提示されず、正確なプレイバックのために必要とされないことになるので、ビュースキャナは、それらのビューに対するデータを排除することができる。このことは、データを収集および記憶するために必要とされるリソースの量を減らすことができ、ネットワークを介してデータを送るときに消費される帯域幅の量を減らすことができる。
ビュースキャナによって追跡される各ビュー(たとえば、データがビュースキャナによって取得されるべき各ビュー)に対して、キャンバスレコーダは、ユーザデバイス106によって表示されるビューのコンテンツを表すデータを取得することができる。いくつかの実装形態では、キャンバスレコーダ125はキャンバスクラスのサブクラスである。たとえば、アプリケーション107がAndroid(商標)アプリケーションである場合、キャンバスレコーダ125は、データを内部的にバイナリバッファに記録するAndroid(商標)キャンバスクラスのサブクラスであってよい。キャンバスサブクラスは描画メソッド(たとえば、AndroidのonDraw())の中に移され得るが、アプリケーション107は、他の場所に、たとえば、AndroidのdispatchDrawメソッドおよび/またはdrawChildメソッドなどの他の描画メソッドの中に散在された、いくつかの描画論理を含んでよい。
描画メソッドは、そのメソッドの描画コードを獲得するための計装時間において1つまたは複数の反映技法を用いて計装され得、その結果、そのコードが使用されて、描画メソッドを使用してディスプレイ上に何が描画されたのかを決定することができる、たとえば、dispatchDrawおよびdrawChildなどのAndroid描画メソッドは、fsSuperDispatchDrawStubおよびfsSuperDrawChildを生成することによってViewGroupRewriterの中に計装され得る。たとえば、計装モジュール121は、計装時間において1つまたは複数の反映技法を使用してViewGroupRewriterを計装することができる。
計装モジュール121はまた、(簡潔のために、本明細書全体にわたってタッチスクリーン上でのタップまたはプレスを含むことを意図する)クリック、およびアプリケーション107のユーザインターフェースにおいて、ポインタ移動、ユーザクリック、ユーザタップ、ユーザスワイプ、ズーム、スクロール、フォーカス、またはテキスト入力などの、他のユーザ対話を検出することができる。Android(商標)では、クリックとはOnClickHandler関数をトリガさせる何かである。一般に、これらの関数は、偽から真または真から偽へのビューの「押下(pressed)」状態の遷移と協働してトリガされる。したがって、クリックは、いずれかの方向での押下状態の遷移として計装コードの中で定義されてよい。
別の例では、2019年3月29日に出願され参照により本明細書に組み込まれる米国特許出願第16/370,574号に記載されるように、計装モジュール121は、(ウィンドウスキャナおよびPDFスキャナを含むことができる)ビュースキャナ、およびイベント検出器を含むことができる。ウィンドウスキャナは、アプリケーションのユーザインターフェースの構造およびレイアウトを指定するデータを取得することができる。ウィンドウスキャナは、そのデータがユーザセッションをプレイバックするために使用され得るように、このデータを周期的に取得することができる。データは、ウィンドウのレイアウトおよびウィンドウのビュー(たとえば、各ウィンドウのロケーションおよび画面上のビュー)、ならびにウィンドウおよびビューの属性(たとえば、テキストの寸法、タイプ、またはフォント、メタデータなどの、クラスのビューおよび属性を生成するために使用される1つまたは複数のクラス)を指定するデータを含むことができる。
iOS(商標)では、ビューは、ユーザインターフェースの一部分内の、たとえば、ユーザインターフェースのウィンドウ内の、それ自体の視覚表現を生成するオブジェクトである。各ウィンドウは、1つまたは複数のビューを含むことができる。各ビューは、ビューがその中で視覚表現を生成するウィンドウの幾何学的形状エリア(たとえば、長方形)を含むことができる。ビューは、ユーザインターフェースにテキスト、画像、ビデオ、または他のコンテンツを描画する1つまたは複数の描画動作を使用して、ユーザインターフェース上にそれ自体の視覚表現を生成することができる。
いくつかの実装形態では、ウィンドウスキャナは、ウィンドウごとに、ユーザインターフェースのウィンドウを生成するために使用される提示オブジェクト(たとえば、ビューおよび/またはレイヤ)の階層を各々が指定する、1つまたは複数の提示階層130を取得する。本明細書で使用する提示オブジェクトとは、ロードし(たとえば、コンテンツを描画し)、かつユーザ対話イベント(たとえば、オブジェクト内でのマウスクリックまたはタッチイベント)を随意に検出する、ネイティブアプリケーションのオブジェクトである。iOS(商標)における例示的な提示オブジェクトは、ビューおよびレイヤを含む。
ウィンドウスキャナは、ウィンドウごとに、提示オブジェクトの階層を指定するデータを取得することができる。たとえば、ウィンドウスキャナは、ウィンドウごとに、ビューの階層(たとえば、ビューツリー)を指定するデータ、および/またはレイヤの階層(たとえば、表示レイヤツリー)を指定するデータを取得することができる。ウィンドウまたはビューは、ウィンドウがツリーのルートであって、ツリーのような階層をなして配列された下位ビューを含むことができる。たとえば、ビューは、テキストを有する下位ビューおよび画像を含む別の下位ビューを含むことができる。各ビューはまた、階層をなして配列されている1つまたは複数のレイヤに関連付けられ得る。iOS(商標)上で実行するネイティブアプリケーションにとってのいくつかの実装形態では、ウィンドウスキャナは、ビューの構造およびレイアウトを指定するデータをUIViewクラスから取得することができる。ウィンドウスキャナはまた、ビューを固有に識別する識別子を各ビューに割り当てることができる。この固有識別子は、ビューおよびその対応するデータがメモリの中に記憶されるロケーションに対応すること、たとえば、基づくことができる。
ウィンドウスキャナは、描画動作を使用する提示オブジェクトを生成するために使用される描画動作を識別するために、提示階層を使用することができる。いくつかの実装形態では、ウィンドウスキャナは、各提示オブジェクト(たとえば、ビューおよび/または各レイヤ)に、画面外の描画コンテキスト、画面外のバッファ、または画面外の他のロケーションにそれ自体を描画させる。いくつかのバージョンのiOS(商標)では、描画動作は、概して、コンテキストと呼ばれるCore Graphicsの中のPDFのようなオブジェクトの中で実行される。コンテキストは描画宛先を表し、描画システムが任意の後続の描画コマンドを実行する必要があるという情報を含む。各提示オブジェクトは、ユーザデバイス106のディスプレイ上に提示される画面上のコンテキストにそれ自体を描画することができる。
ウィンドウスキャナは、各提示オブジェクトに、ユーザデバイス106のディスプレイ上に提示されないPDFグラフィックスコンテキストにそれ自体を同じく描画させることができる。PDFグラフィックスコンテキストは、iOS(商標)によってサポートされるコンテキストである。ウィンドウスキャナ124は、PDFグラフィックスコンテキストにそれ自体を描画するための、ビューへの要求をサブミットすることによって、ビューまたはレイヤに、PDFグラフィックスコンテキストにそれ自体を描画させることができる。ビューおよび/またはレイヤがPDFグラフィックスコンテキストにそれら自体を描画すると、提示オブジェクトを描画するために使用された各描画動作に対するデータを含むPDF文書が生成される。たとえば、特定のビューまたはレイヤがPDFグラフィックスコンテキストにそれ自体を描画すると、iOS(商標)のCore Graphics PDFエンジンが、特定のビューまたはレイヤに対する描画動作をPDFコマンドに変換する。PDFエンジンは、変換されたPDFコマンドをPDF文書の中に記憶することができる。
ウィンドウスキャナ124は、ウィンドウスキャナが提示階層を通じて反復するたびに新たなPDF文書を作成することができる。たとえば、ウィンドウスキャナ124は、指定された時間周期(たとえば、200ミリ秒ごと、300ミリ秒ごと、または別の適切な時間周期)に基づいて、ユーザインターフェースの構造およびレイアウト(たとえば、ビューツリーおよび/または表示レイヤツリー)を周期的に取得することができる。各周期に対するビューツリーおよび/またはレイヤツリーは、所与の時点におけるユーザインターフェースのフレーム(すなわち、スナップショット)を表す。本明細書では、フレームは、所与の時点におけるユーザインターフェースの状態を表す。たとえば、ユーザがアプリケーションと対話するにつれてユーザインターフェースは変化することができ、各フレームはそれぞれの所与の時点におけるユーザインターフェースの状態を表すことができる。
ウィンドウスキャナは、ユーザインターフェースの各ウィンドウを、また各ウィンドウに対してウィンドウの提示階層を、反復することができ、取得されたユーザインターフェース構造ごとにPDF文書を生成することができる。このようにして、ウィンドウスキャナ124は、ユーザインターフェースのフレームごとに、ユーザセッション中にフレームを表す(ただし、ユーザインターフェースのスクリーンショットを記憶しない)PDF文書を生成することができる。実際のスクリーンショットのビットマップまたはピクセルデータではなく描画動作用のデータを記憶および圧縮することは、データを記憶するために使用されるメモリの量、およびユーザデバイス106から評価装置150へデータを送信するために使用される帯域幅の量を、著しく減らすことができる。
フレームのためのPDF文書は、フレームによって表される所与の時点においてユーザインターフェースを生成するために使用された描画コマンドのリストを含むことができる。いくつかの実装形態では、ウィンドウスキャナは、各オブジェクトの描画コマンドの冒頭および末尾におけるマーカーを使用して、PDF文書の中の提示オブジェクト(たとえば、ビューおよび/またはレイヤ)の間の境界にマークすることができる。たとえば、特定の提示オブジェクトがそれ自体をPDFグラフィックスコンテキストに描画する前に、ウィンドウスキャナは、特定の提示オブジェクトのための描画コマンドの開始をシグナリングする固有マーカーをPDF文書に書き込むことができる。同様に、特定の提示オブジェクトのための最後の描画コマンドがPDF文書の中に記録された後、ウィンドウスキャナは、特定の提示オブジェクトのための描画コマンドの末尾をシグナリングする固有マーカーをPDF文書に書き込むことができる。PDFはまた、各ビューの中のテキストの各文字列のロケーションを指定するテキスト行列を含むことができる。
いくつかの実装形態では、ウィンドウスキャナは、ビューごとに新たなPDFページを作成する。たとえば、上記で説明したように冒頭マーカーおよび末尾マーカーを使用するのではなく、ウィンドウスキャナは、PDF文書の中の各提示オブジェクトの境界をマークするために、Core Graphics PDFエンジンに新たなPDFページを開始させることができる。この例では、フレームのためのPDF文書は、フレームの提示オブジェクトごとにページを含むことができる。
いくつかの実装形態では、ウィンドウスキャナはまた、クリップされた提示オブジェクト、たとえば、目に見えないかまたは他のビューもしくはレイヤによって遮られるビューまたはレイヤを、識別および廃棄することができる。たとえば、アプリケーション107は、階層化されたいくつかのビューを所与の時間において画面上に有してよい。場合によっては、ビューツリーの大型の部分が、ビューツリーの他の部分によって完全に覆い隠される。ウィンドウスキャナは、ウィンドウ内の提示オブジェクトのサイズ、ロケーション、および階層に基づいて、完全に覆い隠されている提示オブジェクトを識別することができる。たとえば、ディスプレイ上で2つの提示オブジェクトが重複し、かつ階層に基づいて一方が他方の前方にある場合、後方における一方が少なくとも部分的に覆い隠されていることになる。完全に覆い隠されている提示オブジェクトは、ユーザデバイスのディスプレイにおいて提示されず正確なプレイバックのために必要とされないことになるので、ウィンドウスキャナは、それらの提示オブジェクトのためのデータを排除することができる。提示オブジェクトが部分的に覆い隠されている場合、ウィンドウスキャナは、提示オブジェクトのための、または目に見える部分のための、データを含めることができる。
PDFスキャナは、生成されたPDF文書を分析することができ、提示オブジェクトごとに(たとえば、ビューまたはレイヤごとに)対応する描画動作を識別することができる。たとえば、PDFスキャナは、どの描画動作が各提示オブジェクトに対応するのかを決定するために、PDF文書の中のマーカーを使用することができる。提示オブジェクトごとに、PDFスキャナは、提示オブジェクトに対する冒頭マーカーおよび末尾マーカーを、PDF文書の中で識別することができる。PDFスキャナは、冒頭マーカーと末尾マーカーとの間の、PDF文書の中の各描画動作を、提示オブジェクトに割り当てることができ、たとえば、各描画動作をその対応する提示オブジェクトにマッピングするFlatBufferの中に、データを記憶することができる。
ウィンドウスキャナは、各フレームに固有識別子および/またはタイムスタンプ情報(または、順番情報)を割り当てることができる。タイムスタンプ情報は、フレームによって表されるユーザインターフェースがユーザデバイス106のディスプレイにおいて提示された実際の時間を表すことができる。順番情報は、ユーザセッション中に提示された他のフレームに対してフレームがいつ提示されたのかを表すことができる。フレームごとの提示オブジェクトおよびイベントがプレイバック中に正しい順序で提示され得るように、フレームの中で提示される各提示オブジェクト、および/またはフレームの中で検出される各イベントにも、固有識別子および/または対応するタイムスタンプもしくは順番情報がウィンドウスキャナによって割り当てられ得る。
いくつかの実装形態では、PDFスキャナは、PDF文書の中の描画動作によって提示されるテキストを決定するために、グリフ(glyph)マッピング技法を使用する。たとえば、PDFに対する動作を示すテキストは、厳密なUnicode文字を表さないプレースホルダー文字を使用することができる。PDF文書に描画された実際のUnicode文字を取り出すために、PDFスキャナは、サブセット化されたフォントとともにPDF文書の中に記憶されている、埋込み式文字マップ(たとえば、CMap)を構文解析することができる。この文字マップは、PDFおよびCMap仕様によって指定される様々な形態をとることができる。PDFスキャナは、テキストがその中で描画された提示オブジェクトとの関連付けのために、テキスト描画動作ごとにデータをウィンドウスキャナに提供することができる。
PDFスキャナはまた、PDF文書の中の描画動作によって提示されるテキストのフォントの印刷された実際の幅を決定するために、幅マッピング技法を使用することができる。PDFスキャナは、PDF文書の中の埋込み式フォントからの文字幅のリストを構文解析して、印刷された実際の幅を決定することができる。場合によっては、PDFのための動作を示すテキストは、明示的にはスペースを使用しない。代わりに、異常に大きい文字間ギャップを文字の間で使用することによって、スペースが作成される。計装モジュール121は、この文字間ギャップを測定するために、スタートアップにおいて(たとえば、アプリケーション107が起動されると)テストPDFにフォントを書き込むことができ、スペース検出しきい値としてのPDFスキャナによる将来の使用のためにそれをキャッシュすることができる。
いくつかの実装形態では、計装モジュール121は、リソースレベルからの画像の出所を追跡するために(たとえば、画像はそれらの元の形態から短く切り取られることがあるか、または色合いが付けられることがある)、メソッドスウィズリング(method swizzling)技法を使用することができ、ユーザ入力イベント(たとえば、タッチ、ボタンクリックなど)を追跡し、ウェブビューのための計装コードを実施する。メソッドスウィズリングは、Objective-C(商標)アプリケーションの中で使用され得、フレームワークまたはユーザコードの実装のスワップ(swap)またはシム(shim)のいずれかを行うように、実行時においてメソッド実装ポインタを切り替えることを伴う。概して、シムとは、メッセージまたは呼出し(たとえば、API呼出し)を傍受でき、かつ呼出し自体を処理するかまたは呼出しを他の場所にリダイレクトする、ライブラリである。
計装モジュール121は、画像を描画しユーザ入力イベントを処理するために使用されるメソッド、および/または他の適切なメソッドのセットを、スウィズル(swizzle)することができる。たとえば、計装モジュール121は、アプリケーション107が起動されると、スウィズルされるべきメソッドのリストにアクセスすることができる。計装モジュール121は、アプリケーション107がリストの中のメソッドのうちのいずれかを使用するかどうかを決定することができ、そうである場合、リストの中のメソッドに整合する、アプリケーション107のメソッドをスウィズルすることができる。
スウィズリングは、アプリケーション107によって提示される画像を記憶するために使用されるメモリ記憶域の量、およびその画像を評価装置150まで運ぶために使用される帯域幅の量を減らすために使用され得る。スウィズリングは、アプリケーション107によって複数回提示されることがある画像が評価装置150にアップロードされる回数を減らすことができる。たとえば、画像は、たとえば、ユーザデバイス106上で初めてアプリケーション107が初期化されるときに、1回アップロードされ得る。その後、描画動作がPDFグラフィックスコンテキストに画像を描画するたびに画像をアップロードするのではなく、画像に対するプレースホルダー識別子が使用されて画像を参照することができる。
iOS(商標)では、画像は、ロードされて画面上で描画されるまでの途中で、いくつかの異なる変換を通過することがある。(アセットから供給されないことがある画像を含む)変換動作ごとに、ウィンドウスキャナ124は、古い出所メタデータを着信画像から読み出すことができ、古い出所データに新たな出所メタデータを追加することができる。このようにして、ウィンドウスキャナ124は、画像から読み出され得るメタデータのチェーンを作成することができる。出所データは、画像のソース(たとえば、画像に対するウェブアドレス)、および画像に加えられた任意の調整(たとえば、短く切り取られること、色合いが付けられることなど)を指定するデータを示すことができる。
いくつかの実装形態では、計装モジュール121は、ビューまたはレイヤの中の描画された既存の情報がいつ無効化されたのかを識別するために、メソッドスウィズリングを使用することができる。計装モジュール121は、ビューが再描画されるのを要求しているときを決定するために、ビュー無効化メソッドを識別およびスウィズルすることができる。たとえば、無効化された各ビューは、各描画サイクルにおいて再描画されてよい。ビューが無効化されていない場合、ビューは再描画される必要がなくてよい。ビューに対する無効化メソッドをスウィズルすることによって、計装モジュール121は、次の描画サイクル中にどのビューが再描画されることになるのかを決定することができる。このことはビューが変化していないことを示すので、ウィンドウスキャナは、ビュー表示情報がその中で無効化されていないビューに対してビューを走査することをスキップするために、この情報を使用することができる。未変更のビューをスキップすることによって、符号化されネットワーク102を介して送信されるデータの量が低減される。
イベント検出器は、ジェスチャーおよび/またはタップ認識器クラスを使用して、アプリケーション107のユーザインターフェース上で発生するユーザインターフェースイベント(たとえば、タップ、タッチ、スワイプなど)を検出することができる。たとえば、イベント検出器は、たとえば、これらのクラスをスウィズルすることによってユーザインターフェースイベントの発生を検出するために、UIGestureRecognizerおよび/またはUITapGestureRecognizerクラスを使用することができる。イベントのためのデータは、イベントがその中で発生したフレームとともに記憶され得る。このデータは、イベント自体、イベントの送出側、イベントのターゲット、およびイベントに応答して実行されるべきアクションを含むことができる。データはまた、たとえば、ユーザセッションのプレイバック中に、イベントのためのデータが他のデータと協調され得るように、タイムスタンプ情報を含むことができる。データはまた、イベントのためのセレクタ経路(たとえば、全セレクタ経路)を含むことができる。セレクタ経路は、イベントがそこで発生したオブジェクトを描画した提示オブジェクトを含む提示階層の中の各提示オブジェクトを指定することができる。
イベントのためのセレクタ経路を取得するために、イベント検出器126は、iOS(商標)のsendActionメソッドなどのいくつかのメソッドを傍受することができる。sendActionメソッドは、アクションメッセージを開始したイベントについての情報を含むUIEventオブジェクト、メッセージを送っている送出側オブジェクト(たとえば、sendActionメソッドを呼び出すUIControlオブジェクト)、アクションメッセージを受信することになるターゲットオブジェクト、およびアクションメソッドを識別するセレクタを含む、パラメータを含む。送出側オブジェクトは、通常、ユーザによってタッチまたは選択されたオブジェクト(たとえば、ボタン)である。イベント検出器126は、送出側オブジェクトからウォークアップ(walk up)することができ、送出側オブジェクトを描画した提示オブジェクトを含む提示階層の中の各提示オブジェクトを含むセレクタ経路をビルドすることができる。イベント検出器126は、各イベントのための(イベント自体、送出側オブジェクト、ターゲットオブジェクト、およびセレクタ経路を含む)データを記憶することができ、フレームエンコーダ127にそのデータを提供することができる。
計装モジュール121は、イベント用のセレクタおよび提示オブジェクト用のセレクタを、対応する仮想HTML要素にマッピングすることができる。たとえば、計装モジュール121は、ビュークラスおよび(イベントおよびビューツリーに対する)属性を、対応する仮想HTML要素にマッピングすることを試みることができる。いくつかの実装形態では、計装モジュール121は、(ユーザインターフェースの中の要素に固有識別子を関連付ける)iOS(商標)属性「accessibilityIdentifier」を、(HTML要素に対する固有識別子を指定する)HTML属性「id」にマッピングする。計装モジュール121はまた、(アクセシビリティ要素に対するラベルである)iOS(商標)属性「accessibilityLabel」を、(項目に対するキャプションを表す)HTML要素「label」にマッピングすることができる。
計装モジュール121はまた、提示オブジェクトのためのセレクタの中に含めるための属性を生成することができる。たとえば、提示オブジェクトがiOS(商標)ストーリーボードの一部である場合、計装モジュール121は、ビューオブジェクトを識別する整数である属性「tag」、およびビューがその中に作成されたストーリーボードを指定する属性「storyboard」を生成することができる。たとえば、「Main」ストーリーボードから来る「MyCustomLabel」と称するクラスのための仮想セレクタは、「MyCustomLabel#name_label[story_board="Main"][tag="1"][label="Full name"]」のように見える仮想セレクタを有することがある。iOS(商標)属性をHTML要素にマッピングすることによって、ユーザが、特定のタイプのイベントを求めて検索すること、およびイベントがその中で発生したユーザセッションのためのプレイバックデータを取り出すことができるように、イベントおよびビューは、仮想HTML要素を用いてインデックス付けされ得る。
このようにして仮想属性を使用することは、計装モジュール121が、エミュレートされたビュー階層である仮想DOMを生成できることを可能にする。モバイル階層の中の各ビューは、いくつかのネイティブなモバイルAPIからの属性とともに、仮想HTMLのような要素にマッピングされる。モバイルプラットフォームの中のビューのクラス名から仮想要素のタグ名がマッピングされ得る。たとえば、iOS(商標)アプリの中のUITextViewは、「<UITextView...>」のように見えるタグ名を有する仮想要素を作成することができる。Android(商標) TextViewの場合、計装モジュール121は、「TextView」というタグ名を有する仮想要素を作成することができる。Android(商標)クラスは、「package」と称する属性の中に、ビューのJavaパッケージを含むことができる。「TextView」に対する仮想要素は、「TextView package="android.widget...>」のように見えることがある。上記のビューに整合することになるセレクタ規則は、マッピングに基づいて「TextView[package="android.widget"]」および「UITextView」である。
モバイルアプリケーションは一般にビューにおいてカスタム属性を有しないので、いくつかの擬似属性が作成され得る。しかしながら、これらはエンドユーザにとって十分でない場合がある。このことへの解決策は、アプリケーション開発者が、彼らのモバイルアプリケーションに対するビュー階層に属性およびクラスを追加すること、およびエミュレートされたタグ名またはビューをリネームすることを、APIのセットが可能にすることである。仮想属性は、他のセレクタ、たとえば、ウェブページのためのセレクタとシームレスに統合する。
仮想属性は、ユーザセッション中に収集される構造データの一部として、たとえば、ビューツリーの一部としてユーザセッション中に記録され得る。このことは、特定の属性を有する特定のビューおよび/またはユーザインターフェース要素がその中で提示されたユーザセッションを求めて、発行者が検索することを可能にする。このことはまた、アプリケーション用のホワイトリストの中に含まれる排除規則またはマスキング規則に対して、発行者が特定の属性またはビューを指定することを可能にすることができる。
上述のように、計装モジュール121は、ユーザセッション中に収集され得るとともに評価装置150に提供され得るコンテンツを指定するホワイトリスト122をダウンロードすることができる。ホワイトリスト122は、コンテンツがそれに対して収集され得るとともに評価装置150へ送られ得るユーザインターフェース要素、たとえば、ビューを指定することができる。たとえば、ホワイトリスト122は、Android(商標)実装およびiOS(商標)実装におけるビューのセットを指定することができる。いくつかの実装形態では、ホワイトリスト122は規則のセットを含む。規則は、排除規則およびマスキング規則を含むことができる。排除規則は、評価装置150へ送られるデータからビュー(および、そのサブツリー)が完全に除去されるべきかどうかを指定することができる。マスキング規則は、コンテンツが、コンテンツの不可逆的に変換された(または、少なくとも逆転させることが困難な)描写、たとえば、マスクされたテキストのハッシュ、またはマスクされた画像に対するぼけているかもしくは単一色の画像と置換されるべきかどうかを、指定することができる。コンテンツがマスクされることになる場合、計装モジュール121は、コンテンツを評価装置150へ送る前にコンテンツをマスクすることができ、その結果、実際の画面上のコンテンツは、まったく評価装置150へ送られない。このことは、マスクおよび記録されたビューが、排除されたビューでは可能でない方式で互いの中でネストされることを可能にする。
いくつかの実装形態では、ホワイトリスト122は、排除され、マスクされ、かつ/またはマスク解除された、ビューの識別子を指定する。これらの識別子は、たとえば、ビューを生成するために使用されるクラス(または、他のオブジェクト)の名称であり得る。たとえば、特定のクラスが、機密情報をまったく含まないものと発行者によって見なされる場合、発行者は、アプリケーション用のホワイトリストの中に、そのクラスの名称を含めることができる。ホワイトリストは、プレイバック中の提示のためにコンテンツがそこから収集され得るビューまたはビューの特定の部分を作成するために使用され得る、他のプログラミングオブジェクトを指定することができる。このことは、どんなコンテンツが収集されるのか、およびどんなコンテンツがマスクまたは排除されるのかに関して、粒度がより細かい制御を提供することができる。たとえば、計装モジュール121は、ビューツリーの中のビュー、レイヤ、他の要素、特定の描画コマンドもしくは描画関数、および/またはユーザセッション中にアプリケーションに画面に対してコンテンツを描画させる提示オブジェクトの他のグループに、規則を適用することができる。
アプリケーション開発者108は、彼らのアプリケーションのユーザインターフェース用のホワイトリスト125を指定することができる。たとえば、アプリケーション開発者108は、コンテンツがそこから収集され得るとともにユーザデバイス106から評価装置150に提供され得るビューを選択することができる。いくつかの実装形態では、アプリケーション開発者108は、そのユーザインターフェース用のホワイトリストを生成することができ、そのホワイトリストを評価装置150に提供することができる。アプリケーション開発者108はまた、ユーザインターフェース固有のホワイトリストを指定することができる。たとえば、ホームページ用のホワイトリストは、アカウント概要ページ用のホワイトリストとは異なってよい。以下でより詳細に説明するように、アプリケーション開発者108は、そのユーザインターフェースを用いたユーザセッションのプレイバックと対話することによって、そのホワイトリストを生成および更新することができる。
いくつかの実装形態では、ブラックリストがホワイトリストに取って代わることができる。たとえば、特定のビュー内のコンテンツが収集され評価装置150へ送られることが可能でないことを、ブラックリストが指定する場合、アプリケーション計装モジュール121は、ネストされたビューがホワイトリスト化されても、ブラックリスト化ビューの中でネストされたビューの中に含まれるコンテンツを送らない。各アプリケーション開発者108は、そのユーザインターフェースに対して、1つまたは複数のホワイトリストおよび1つまたは複数のブラックリストを指定することができる。
ユーザセッションのデータを記録するとき、計装モジュール121は、ビューのコンテンツが評価装置150へ送られ得るかどうかを決定するために、ユーザセッション中に提示されている各ビュー(たとえば、ビューに対する識別子)を、ホワイトリスト122および/またはその規則と比較することができる。ビューが除外される場合、ビューおよびそのサブツリーは、たとえば、(以下で説明する)フレームバンドル129が生成される前に、データから除去され得る。ビューがマスクされる場合、計装モジュール121は、ビューのコンテンツを変換することができ、そのコンテンツをそのコンテンツの変換されたバージョンに置換することができ、その結果、画面上の実際のコンテンツは評価装置150へ送られない。
マスクされたビューのテキストの場合、計装モジュール121は、ユーザセッション中に提示されたテキストの実際のコンテンツを反映しない、テキストの描写を生成することができる。たとえば、計装モジュール121は、ハッシュ関数を使用して、マスクされるべきテキストのハッシュを生成することができる。このようにして、同じテキストは同じハッシュをもたらし、以下で説明するようにフレーム間を補間するために使用され得る。別の例では、マスクされるべきビューの中で提示されるテキストのプレースホルダーとして、ランダムテキストが使用され得る。別の例では、以下で説明するように、各テキスト文字列のサイズが使用されてテキスト文字列ごとにマスキング要素を生成できるとき、置換テキストは含められなくてよい。
計装モジュール121はまた、マスキングフラグを使用して、マスクされるべきテキストの描写にフラグ付けすることができる。たとえば、計装モジュール121は、テキストを含むビューのためのデータの中にマスキングフラグを含めることができる。このことは、評価装置150が、どのテキストが他のテキストの描写であるのかを決定すること、およびテキストの代わりにマスキング要素(たとえば、バー)を提示することを、可能にする。
マスクされたビューの画像に対して、計装モジュール121は、画像を表すためのピクセルおよび対応する色の置換画像または置換セットを生成することができる。概して、計装モジュール121は、ビューが画像の実際のコンテンツを区別することを可能にすることなく画像の提示空間を埋めるために、画像の低忠実度描写を生成することができる。たとえば、計装モジュール121は、画像を評価して画像の中の支配的な色を識別することができる。この支配的な色は、画像の最大個数のピクセルの色であってよい。支配的な色はまた、あるアルゴリズムを使用して、たとえば、画像の中の色のヒストグラムを使用して識別され得る。計装モジュール121は、画像を、支配的な色をすべてが有するピクセルのビットマップ(または、他の画像描写)と置換することができる。
別の例では、計装モジュール121は、画像の指定された個数のピクセルをサンプリングすることができ、サンプリングされたピクセルを使用して画像の置換画像または置換描写を生成することができる。たとえば、計装モジュール121は、マスクされるべき画像の9個(または、別の個数)のピクセルをサンプリングすることができ、9個のピクセルを使用して3×3のビットマップを生成することができる。この例では、ピクセルは、マスクされるべき画像の同じ配列の中で3×3のビットマップをなして配列され得る。すなわち、ビットマップの左上のピクセルが、マスクされるべき画像のサンプリングされた左上のピクセルに対応することができ、ビットマップの上部中央のピクセルが、マスクされるべき画像のサンプリングされた上部中央のピクセルに対応することができ、以下同様である。このようにして、ビットマップは、プレイバック中に、マスクされた画像のサイズにスケーリングされ得、いかなるプライベートコンテンツまたは機密コンテンツも提示することなく、画像のコンテンツのいくつかの指示を提供することになる。マスキングのいずれかの形態を伴って、計装モジュール121は、その画像に対する描画動作において、実際の画像をマスクされた描写と置換することができる。
マスクされた画像に対して、計装モジュール121は、画像がユーザセッション中に提示される画像のマスクされた描写であることを指定するデータを、評価装置150へ送られるフレームバンドル129または他のデータの中に含めることができる。たとえば、このデータは、描画動作または画像の描写とともに設定されたマスキングフラグであり得る。プレイバック中、評価装置150は、マスキングフラグ(または、他のデータ)を検出することができ、プレイバック中にその対応するロケーションにおいて、マスクされたバージョンの画像を生成することができる。たとえば、評価装置150は、ピクセルを、それが表す画像と同じサイズであるマスクされた画像にスケーリングすることができ、ユーザセッション中に画像が提示された同じロケーションにおいて、マスクされた画像を提示することができる。
この技法はまた、たとえば、帯域幅が限定される場合に、ホワイトリスト化された画像に対して使用され得る。帯域幅を温存するために、画像ではなく単一ピクセルまたは数個のピクセルのサンプリングが送られ得る。帯域幅が改善されると、計装モジュール121は、ホワイトリスト化された実際の画像を評価装置150へ送ることができる。この例では、マスキングフラグは、たとえば、もっと後の送信の中で受信される、実際の画像が利用可能であり得るかどうかを決定するために、評価装置150によって使用され得る。マスキングフラグが設定されない場合、画像がマスクされていない(たとえば、ホワイトリスト化ビューの中に含まれる)ことを示し、評価装置150は、もっと後の送信の中で実際の画像が受信されたかどうかを決定することができる。正確なプレイバックのために、またはユーザインターフェースの品質を分析するために、実際の画像が必要とされないことがあるとき、これは帯域幅が限定されるときだけでなく常に使用され得る。
いくつかの実装形態では、計装モジュール121は、たとえば、光学文字認識技法を使用して、画像の中のテキストを識別することができる。ホワイトリスト化されていないビューの中の画像がテキストを含む場合、計装モジュール121は、上記で説明したように、ハッシュまたはランダムテキストを使用してテキストをマスクすることができる。計装モジュール121はまた、テキストのロケーションを決定することができ、フレームバンドル129の中にロケーション情報を含めることができる。プレイバック中、テキストのマスクされた描写は、元のテキストが提示された画像の中に提示され得る。特定の例では、ホワイトリスト化されていないコンテンツが、図3に示すようにワイヤフレームと同様に提示され得る。
計装モジュール121は、評価装置150へ送られるデータを収集および処理するのに必要とされる計算リソースの量を低減するための技法を使用することができる。たとえば、計装モジュール121は、ビューのコンテンツが変化しており画面上で再描画される必要があることを意味する、ビューのうちのいずれかが無効化されるようになるかどうかを決定するために、ユーザセッション中にビューを監視することができる。ビューが無効化されていない場合、ビューのコンテンツは無効化されるようになるまで同じであるので、計装モジュール121は、ホワイトリスト化されていない任意のビューのコンテンツのマスクされた描写を生成することを回避することができる。
計装モジュール121は、フレームエンコーダ127およびアップローダー128を含む。フレームエンコーダ127は、他のモジュールからデータを受信することができ、データまたは圧縮されたバージョンのデータを含むフレームバンドル129を生成することができる。各フレームバンドル129は、1つまたは複数のフレームのためのデータを含むことができる。フレームエンコーダ127は、データを評価装置150へ送信する前にフレームのためのデータを符号化および/または圧縮することができる。たとえば、フレームエンコーダ127は、バイナリ符号化を使用してフレームバンドル129ごとにデータを符号化することができる。フレームエンコーダ127は、FlatBufferフォーマットで各フレームバンドルを記憶することができる。フレームエンコーダ127は、各フレームバンドル129をアップローダー128へ送ることができる。今度は、アップローダー128が、ネットワーク102を介してフレームバンドル129を評価装置150へ送信する。
評価装置150は、以下で説明するように、各フレームバンドル129をセッションデータ記憶装置152の中に記憶することができ、そのデータを使用してプレイバックデータ140およびセッションアクティビティデータ142を生成することができる。評価装置150はまた、ユーザ(たとえば、アプリケーション開発者108)が、特定のイベントがその中で発生したユーザセッションを求めて検索できるように、フレームおよび各フレームのユーザインターフェースイベントにインデックス付けすることができる。たとえば、各イベントは、セレクタ、およびイベントを表すデータを用いて、インデックス付けされ得る。このようにして、オブジェクトはイベントのためのセレクタ経路の一部であるので、ユーザは、特定のオブジェクト(たとえば、ボタン)がその中で選択されたイベントを求めて検索することができる。
評価装置150は、ユーザデバイスからフレームバンドル129を受信し、ユーザセッションごとに、ユーザセッションに対するプレイバックデータ140およびセッションアクティビティデータ142を生成する。評価装置150は、ユーザセッションが行われたアプリケーション107を開発したアプリケーション開発者108に、プレイバックデータ140およびセッションアクティビティデータ142を提供することができる。
プレイバックデータ140は、ユーザセッション中のアプリケーション107aへの視覚的な変更、およびセッション中に行われた他のユーザアクティビティ(たとえば、マウス移動)を、アプリケーション開発者108に提示する。アプリケーション107aへの視覚的な変更の少なくとも一部分は、提示階層、およびユーザセッション中に提示階層の提示オブジェクトごとに提示されるコンテンツの、変更に相当する。たとえば、プレイバックデータ140は、アプリケーション107a上でのポインタ(たとえば、マウスまたは指)移動、リスト164からの項目上での(タップまたはプレスを含む)ユーザクリック、および画像166との画像162の置換を、アプリケーション開発者108に示すことができる。この例では、画像166との画像162の置換は、あるフレームの中で画像162を提示することから後続のフレームの中で画像166を提示することへの、画像ビューの変更に対応することができる。同様に、テキスト161とのテキスト160の置換は、あるフレームの中でテキスト160を提示することから後続のフレームの中でテキスト161を提示することへの、ビューツリーのテキストビューの変更に対応することができる。
セッションアクティビティデータは、ユーザセッション中に発生したイベントのリストをアプリケーション開発者108に提示することができる。たとえば、イベントのリストは、ユーザセッション中に2つのイベントEv1およびEv2が発生したことを指定することができる。Ev1は、アプリケーション107aの初期ローディングに対応することができ、Ev2は、リスト164からの項目上でのクリックに対応することができる。ユーザセッションのプレイバックが提示される(たとえば、マウス移動および視覚的な変更を示す)とき、イベントのリストは、プレイバックデータによって提示されている視覚的な変更にどのイベントが対応するのかを示すように強調され得る。たとえば、ユーザセッションの初期プレイバック時に、アプリケーション107aの視覚表現がアプリケーション107aの初期ローディングに対応することを示して、Ev1が強調され得る。ユーザセッションのプレイバックが、リスト164からの項目上でユーザがクリックした時点に到達すると、画像166との画像162の置換がリスト164からの項目上でのクリックに対応することを示して、Ev2が強調され得る。以下でより詳細に説明するように、セッションアクティビティデータはまた、アプリケーション107aへのその変化がユーザクリックに対応する、リストからの項目上でのユーザクリックに対応するコンテキストデータ、たとえば、クリックされた項目のテキスト、および/またはユーザセッション中に発生した、他のアプリケーションユーザインターフェースを求める要求を含むことができる。
イベント評価装置150は、ユーザセッションに対して受信されたフレームバンドル129の中のデータを使用して、ユーザセッションに対するプレイバックデータ140を作成することができる。いくつかの実装形態では、イベント評価装置150は、フレームの中の提示オブジェクト(たとえば、ビューおよび/またはレイヤ)のレイアウトおよび構造、フレームの各提示オブジェクトを生成するために使用された描画動作、ならびにフレームによって表されるユーザインターフェースの提示中に発生したイベントを指定するデータを使用して、ユーザセッションの各フレームを再描画することによってプレイバックデータ140を作成する。たとえば、イベント評価装置150は、フレームのための各提示オブジェクトを識別すること、およびフレームに対するフレームバンドル129の中のデータによって指定されるような、各提示オブジェクトを生成するために使用された描画動作に基づいて、各提示オブジェクトをキャンバスの中でレンダリングすることによって、フレームを描画することができる。特定の例では、評価装置150は、各描画動作を順に処理するとともに描画動作に基づいて提示オブジェクトを再作成するために、描画動作に対するタイムスタンプ情報を使用することができる。たとえば、第1の描画動作が、第1のロケーションにおいて画像を提示することであり、かつ第2の描画動作が、画像の下方の第2のロケーションにおいてテキストキャプションを提示することである場合、評価装置150は、これらの描画動作を処理して、第1のロケーションに対応するロケーションにおいて画像を描画すること、および第2のロケーションにおいてテキストキャプションを描画することができる。
たとえば、フレームに対する提示階層が、テキストを含むテキストビューを含む場合、評価装置150は、ビューツリーデータからテキストビューおよびその表示位置を識別することができ、フレームバンドルのテキストテーブルからのテキスト、およびテキストに対する識別子を識別することができる。カスタムフォントを用いてテキストがレンダリングされた場合、評価装置150はまた、テキストに割り当てられた書体を使用して、そのカスタムフォントでテキストをレンダリングすることができる。評価装置150は、次いで、データを使用してキャンバス上にテキストを描画することができる。評価装置150は、他のタイプのビュー、たとえば、画像ビューを、同様の方法でレンダリングすることができる。
評価装置150は、テキストビューの中のホワイトリスト化されていないテキストの描写を識別することができる。たとえば、評価装置150は、テキストデータを含むビューツリーデータの中のマスキングフラグを識別することができ、マスキングフラグに基づいて、テキストの描写の代わりにマスキング要素を提示すべきと決定することができる。別の例では、評価装置150は、テキストのハッシュを検出することができ、ハッシュの代わりにマスキング要素を提示すべきと、ハッシュに応答して決定することができる。
評価装置150は、(利用可能な場合)テキストの文字列ごとのサイズ情報、またはPDFのためのテキスト行列に基づいて、マスキング要素を生成することができる。たとえば、評価装置150は、テキストの文字列ごとに、ユーザセッション中に提示された実際のテキスト文字列を画定する長方形のサイズに整合するボックスを生成することができる。別の例では、評価装置150は、ユーザセッション中に提示されたテキスト文字列の幅、ならびに基線および上昇情報を使用して、テキスト文字列の幅に等しい幅および上昇に等しい高さを有するとともに基線において配置されるボックスを生成することができる。いくつかの実装形態では、丸められた縁部を有することができるマスキングバーが、同じロケーションにおいて、かつバーが表しているテキストと同じサイズを有して、提示され得る。
評価装置150はまた、マスキングフラグを使用して、マスクされた画像を識別することができる。マスクされた画像に対して、評価装置150は、ビューデータに含まれるサイズ情報に基づいて、提示された実際の画像のサイズにビットマップをスケーリングすることができ、実際の画像が提示された、ユーザインターフェースの中のロケーションにおいて、スケーリングされたビットマップを提示することができる。
評価装置150はまた、ユーザインターフェースとのユーザ対話の視覚的な提示を生じさせることができる。たとえば、ユーザ対話は、ポインタ移動、ユーザクリック、ユーザタップ、ユーザスワイプ、ズーム、スクロール、フォーカス、またはテキスト入力を含むことができる。ユーザスワイプの場合、プレイバックデータ140は、連続するフレームバンドル129の中の検出されたタッチポイントに基づいて、ある時間期間にわたってスワイプの経路を表すデータを含むことができる。たとえば、フレームバンドルのシーケンスが各々、たとえば、タッチイベントを検出したUIGestureRecognizerクラスおよび/またはUITapGestureRecognizerクラスから取得されるデータに基づいて、スワイプのラインに沿ったタッチイベントを含むことができる。評価装置150は、連続するフレームバンドル129の中のスワイプのロケーションに基づいて、スワイプの位置をフレーム間で補間することができる。たとえば、スワイプのロケーションは、第1のフレームバンドルによって表される第1のフレームの中の点Aにあってよく、スワイプのロケーションは、第1のフレームの直後の第2のフレームの中の点Bにあってよい。この例では、評価装置150は、スワイプが点Aから点Bに移動することを提示するように、スワイプのロケーションをフレーム間で補間してよい。評価装置150は、ディスプレイを横断する他のジェスチャーのスワイプの移動を推定するために、エルミートスプラインを使用することができる。
いくつかの実装形態では、評価装置150は、ユーザインターフェースへの他の変更をフレーム間で補間することができる。たとえば、計装モジュール121は、プレイバック中のフレーム間の時間周期よりも大きい時間周期に基づいて、データを周期的に収集してよい。特定の例では、計装モジュール121は、1秒当たり5回(または、別の適切なレートで)、データを収集しフレームバンドルを生成してよく、プレイバックは、1秒当たり10フレームで提示されてよい。この例では、評価装置150は、1秒当たり10フレームでプレイバックするように、連続するフレームの各ペア間を補間することができる。たとえば、評価装置150は、スクローリング、スワイプ、提示階層の提示オブジェクトの位置/サイズの変更、キャンバス平行移動、テキストの変更、および/または他の適切なコンテンツを補間することができる。
評価装置150は、フレーム間を補間するとき、マスクされたテキストのハッシュを使用することができる。ハッシュは同じテキストに対して同じであるので、評価装置150は、同じテキストが、連続するフレームの中の画面上の同じかもしくは異なるロケーションにあるかどうか、または同じかもしくは異なるビューの中に含まれるかどうかを、ハッシュを互いに比較することによって決定するために、ハッシュを使用することができる。このことはまた、どのビューがテキストを提示しているのかを評価装置150が追跡することを可能にする。
いくつかの実装形態では、評価装置150は、ウェブブラウザ環境の中でプレイバックデータを提示する。この例では、評価装置150は、アプリケーションのキャンバスをHTMLキャンバスに変換することができる。たとえば、評価装置150は、プレイバックの前にFlatBuffer符号化フレームバンドルをアンパックしてスクリプト(たとえば、JavaScript)フォーマットにすることができる。評価装置150は、顧客サービス代理店がユーザセッションのユーザとユーザセッションについて話し合いながらプレイバックを見ることができるように、ユーザセッションをリアルタイムで、たとえば、ウェブブラウザの中で、プレイバックすることができる。
評価装置150はまた、ユーザセッション中に行われたユーザ対話のうちの少なくともいくつかに対して、セッションアクティビティデータ142を生成することができる。セッションアクティビティデータ142は、たとえば、発生した様々なユーザイベント(たとえば、クリック、テキスト入力、選択されたアイコンなど)のリスト、および、たとえば、ユーザセッション中に計装モジュール121によって収集されフレームバンドルの中に記憶された、ユーザ対話に対応する任意の環境データ(たとえば、加速度計データ)を指定することができる。
図2Aは、ユーザセッション中に提示される例示的なユーザインターフェース200の図である。ユーザインターフェース200は、ネイティブアプリケーションによって提示される例示的なショッピングアプリケーションページである。ユーザインターフェース200は、テキスト211(「例示的なショッピングアプリケーション」)を有するページタイトル210を含む。ユーザインターフェース200はまた、テキスト221(「項目1」)を有する要素220、テキスト231(「項目2」)を有する要素230、テキスト241(「数量」)およびテキスト入力フィールド242を有するフォーム240、メニュー250の中で提示される値251(「青色」)を有するドロップダウンメニュー250、ならびにテキスト261(「精算」)を有する精算ボタン260を含む。破線263によって示すように、ユーザインターフェースを見ているユーザは、数量フォーム240の上にカーソルをフォーカスさせ、次いで、精算ボタン260の上にカーソルを移動させ、精算ボタン260を選択した。
ユーザインターフェース200を提示するユーザデバイスは、たとえば、フレームバンドルの形態で、図1の評価装置150にデータを提供することができる。この例では、データは、ユーザインターフェース200において提示されるビューのレイアウトおよびコンテンツを指定するビューツリーを含むことになる。データはまた、数量フォーム240上でのカーソルのフォーカス、精算ボタン260へのカーソルの移動、および精算ボタン260の選択を指定する、ユーザ対話データを含むことになる。
データはまた、テキストを含むビューがホワイトリスト化されている場合にユーザインターフェース200の中で提示される、テキストを含むことができる。この例では、ユーザインターフェース200を開発したアプリケーション開発者用のホワイトリストが、図1のホワイトリスト122であることを想定する。すなわち、ホワイトリストは、タイトル、フォーム、およびボタンビューの中のコンテンツが、ホワイトリスト化されていることを指定する。
次に図2Bを参照すると、図2Bは、図2Aのユーザインターフェースのための例示的な仮想DOM270の一部分を示す。詳細には、仮想DOMの部分は、タイトル210を定義するタイトルビュー、数量フォーム240を定義するフォームビュー、ドロップダウンメニュー250を定義するドロップダウンメニュービュー、および精算ボタン260を定義するボタンビューのための、言語の一部分を示す。ただし、仮想DOMの部分は、ユーザインターフェース200のための仮想DOMの中に含まれることになる言語の、すべてを示すとは限らない。
仮想DOM270からわかるように、ページタイトル210のテキスト211はタイトルビューの中にある。したがって、テキスト211はホワイトリスト化コンテンツである。同様に、数量フォーム240のテキスト242は、フォームビューの中にありホワイトリスト化コンテンツである。加えて、コンテンツボタン260のテキスト261は、ボタンビュー内にありホワイトリスト化コンテンツである。ドロップダウンメニュー350のテキスト351が選択ビュー内にあり、選択ビューはホワイトリスト115によって指定されないので、テキスト351はホワイトリスト化コンテンツでない。したがって、この例では、テキスト211、テキスト242、およびテキスト261が、評価装置150へ送られるデータの中に含められることになる。しかしながら、テキスト251は、テキストがホワイトリスト化ビューの中にないのでデータから遮断されることになる。この例の残部に対して、テキストを含むHTML文書270のタグ(図示せず)がホワイトリスト115によって指定されないことに基づいて、テキスト221および231が同じくホワイトリスト化コンテンツでないと想定する。
図3は、ユーザセッションをリプレイするための例示的な対話型インターフェース300の図である。対話型インターフェース300は、図2Aのユーザインターフェース200を用いたユーザセッションをリプレイする。たとえば、図1の評価装置150は、ユーザインターフェースを提示したユーザデバイスから受信されるデータに基づいて、ユーザセッションのプレイバックを生成することができる。
ユーザインターフェース300は、セッションを識別するための検索基準を受け取る検索フィールド302を含む。たとえば、ユーザがその間に所与のウェブサイト(または、ネイティブアプリケーション)の精算ボタン360をクリックしたセッションを識別することおよび/または見ることに関心がある発行者が、検索フィールド302の中に検索フレーズ「クリックされた精算」を入力できることを想定する。検索フレーズをサブミットすると(たとえば、入力コマンドを入力すると、またはサブミッションボタンの上をクリックすると)、セッション情報を求める要求が、検索装置を含み得る評価装置150へ送信される。セッション情報を求める要求は、たとえば、検索フレーズ、およびセッション情報を要求している発行者の識別情報、ならびに/または要求に関連するコンテキストを提供する他の情報を含むことができる。
セッション情報を求める要求の受信に応答して、評価装置150は、検索フレーズ「クリックされた精算」を使用して、ユーザがその間に所与のウェブサイトの精算ボタン360をクリックした1つまたは複数のセッションを識別することができる。いくつかの実装形態では、評価装置150は、検索フレーズに応答して、ユーザセッションのインデックスからセッションを識別する。たとえば、インデックスは、ユーザがその間に「精算」ボタン360上をクリックしたセッションに、ユーザアクション「クリック」およびユーザインターフェース要素「精算ボタン」を関連付ける、1つまたは複数のエントリを含んでよい。
評価装置150は、セッション情報を求める要求に応答して、セッションを識別するデータを要求側デバイスに提供する。いくつかの実装形態では、評価装置150は、検索フレーズに基づいて識別された1つまたは複数のセッションについてのデータを提供することによって、セッション情報を求める要求に応答することができる。上記の例を続けると、評価装置150は、検索フレーズ「クリックされた精算」に基づいてインデックスから識別されたセッションのリスト308を提供することができる。図3によって示すように、ユーザがその中で精算ボタンをクリックしたセッションは、セッション1、セッション2、セッション3、セッション4、セッション5、およびセッション6を含む。
評価装置150はまた、セッション情報を求める要求に応答して、識別されたセッションのうちの1つまたは複数のためのプレイバックデータおよびセッションアクティビティデータを提供することができる。たとえば、図3によって示すように、セッション1は影が付けられ、セッション1のためのプレイバックデータがリプレイのために利用可能であること、およびセッション1のためのセッションアクティビティデータが提示のために利用可能であることを示す。
ユーザインターフェース300は、プレイバックデータに基づいて以前のセッションがその中でリプレイされる、プレイバック領域306を含む。プレイバック領域306は、再生/一時停止部分310、カウンタ312、およびスライダー部分314を含む、プレイバックバーを含む。再生/一時停止部分310は、再生/一時停止部分310と対話することによって、発行者がセッションのリプレイを開始および停止することを可能にする。カウンタ312は、セッションの総継続時間(たとえば、1分50秒)、および現在提示されているセッションの一部分(たとえば、45秒)を提供する。スライダー部分314は、スライダー部分314内のスライディング要素316をスライドさせることによって、発行者がセッションの他の部分に迅速に移動することを可能にする。上記の例を続けると、プレイバック領域306は、セッションのリストの中のセッション1のシェーディングによって示されるように、セッション1をリプレイしている。
セッション1のプレイバックは、ユーザセッションが行われたユーザデバイスから受信されるデータに基づく、図2Aのユーザインターフェース200の再作成を示す。詳細には、リプレイは、ページタイトルおよびテキスト211に対応するテキスト311を有するページタイトル310、要素220およびテキスト221に対応するマスクされた要素321を有する要素320、要素320およびテキスト321に対応するマスクされた要素331を有する要素330、テキスト241およびテキスト入力フィールド242を有する数量フォーム240に対応する、テキスト341およびテキスト入力フィールド342を有する数量フォーム340、テキスト251を有するドロップダウンメニュー250に対応する、マスクされた要素351を有するドロップダウンメニュー350、ならびにテキスト261を有する精算ボタン260に対応する、テキスト361を有する精算ボタン360を示す。
要素220および230のテキストがホワイトリスト化されていなかったので、このテキストは収集されず評価装置150へ送られなかった。したがって、評価装置150は、それぞれ、テキスト221および231を表すために、マスキング要素321および331を生成した。上記で説明したように、マスキング要素321および331は、テキストを含む要素、すなわち、要素220および230のサイズに基づくサイズであり得る。このようにして、マスキング要素321および331は、マスキング要素321および331によって表されるテキスト221および231と類似の要素320および330の中にちょうど収まる。同様に、評価装置150は、ドロップダウンメニュー350のテキストがホワイトリスト化されていなかったので、ドロップダウンメニュー350のテキスト251の代わりにマスキング要素351を含めた。このマスキング要素351は、ドロップダウンメニューのテキスト251のサイズに基づいて、たとえば、ユーザデバイスから評価装置へ送られるデータの中に含まれるテキスト251を画定する長方形のサイズに基づいて、サイズが合わせられる。マスキング要素は、たとえば、ユーザインターフェース要素がユーザインターフェース内でどこに提示されるのか、およびユーザインターフェース要素のサイズを示すが、ユーザインターフェース要素の実際のコンテンツ(たとえば、実際のテキスト)を伴わない、アプリケーションのユーザインターフェースのワイヤフレームに類似するように生成され得る。
いくつかのマスキング要素は、テキストの文字列を表すための複数のマスキング要素を含むことができる。たとえば、それぞれのマスキング要素は、文の中の各単語をマスクするために使用され得る。マスキング要素を生成すると、評価装置150は、各単語の冒頭において新たなマスキング要素を始めることができ、その単語の末尾を示すスペースまたは句読点に遭遇するとマスキング要素を終えることができる。
テキスト311、341、342、および361は、それらの対応するユーザインターフェース要素のコンテンツがホワイトリスト化されていたので、プレイバックの中に含められる。この例では、ユーザインターフェース200の発行者は、フォームが正しく機能すること、およびユーザが彼らの所望の数量を間違いなくまたは苛立ちなく指定できることを確実にするために、数量フォーム240の中の数量をユーザがどのように変更するのかを見ることを望む場合がある。しかしながら、購入される項目は機密情報と見なされてよい。したがって、項目を表すテキスト221および231はホワイトリスト化されず、ユーザセッションのプレイバックにおいてマスキング要素321および331を使用してマスクされる。
ユーザインターフェース300は、リプレイされているセッション中に行われたアクティビティがセッションアクティビティデータに基づいてその中に提示される、セッションアクティビティ領域370を含む。たとえば、セッションアクティビティ領域370は、リプレイされているセッションが行われた時間(たとえば、曜日、日付、時刻、および/または年)、ユーザセッションを実施するために使用されたブラウザのタイプ、ユーザセッションが行われたデバイスのインターネットプロトコル(IP)アドレス、および/またはユーザセッションが行われたユーザデバイスの地理的ロケーションなどの、情報を提示する。セッションアクティビティ領域318はまた、セッション中に行われるいくつかのアクティビティ(たとえば、いくつかのクリック、フォーカス、ページナビゲーション、または他のユーザ対話)を提示することができる。
セッションアクティビティ領域370はまた、リプレイされているユーザセッション中に行われた様々なアクティビティを識別および/または略述する。たとえば、セッションアクティビティ領域370は、プレイバック領域306の中でリプレイされているセッション中、ユーザが、example.com/products 371にナビゲートし、ページ372内の数量フォーム340にフォーカスし、精算ボタン373をクリックし、example.com/checkout 374にナビゲートし、かつアドレスボックス375にフォーカスしたことを指定する。セッションアクティビティ領域370の中に列挙されたアクティビティは、それらがセッション中に行われる順序で配列され得る。たとえば、アクティビティ371は、アクティビティ372、373、374、および375の前に行われた。追加として、セッションアクティビティ領域370の中に列挙されるアクティビティは、視覚的には階層的に表され得る。たとえば、アクティビティ372および373の各々は、アクティビティ371に対して右にオフセットされ、それによって、アクティビティ372および373がexample.com/products 371への訪問中に行われたことを示す。
アクティビティのリスト370はまた、アクティビティに関するコンテキストデータを提供することができる。たとえば、アクティビティ372は、ユーザ対話「フォーカス」が数量フォーム340を用いて行われたことを示す。アクティビティのリスト370はまた、各アクティビティに関係するユーザインターフェースの構造からの情報を提供することができる。たとえば、各アクティビティは、ユーザインターフェース構造の階層表現からの(たとえば、DOMからの)、アクティビティに関連するノードからの情報を含むことができる。特定の例では、アクティビティ372は、数量フォーム340についてのコンテキスト情報(たとえば、#header div...)を提供するDOMノードの一部分を示す。いくつかの実装形態では、アクティビティ372とのユーザ対話は、アクティビティ370のリスト(たとえば、アクティビティに関係する情報を提供するDOMノードの完全なセット)の中に提示されない追加のコンテキスト情報の提示を生じさせる。
リプレイ領域306の中でセッションのリプレイが進むにつれて、提示されているリプレイの部分に対応するアクティビティが強調され得る。たとえば、ユーザが数量フォーム340にフォーカスした後、ユーザは精算ボタン360上をクリックした。数量フォーム340の近くから精算ボタン360まで(破線によって示されるように)マウスが移動することをリプレイが示すとき、アクティビティ373は、現在リプレイされているセッションの部分に対応するセッションアクティビティを示して影が付けられ得る(すなわち、強調され得る)。セッションのリプレイが、ユーザが精算ボタン360をクリックした時点に到達すると、プレイバックデータは、影付き円362を提示させることができ、それによって、ユーザクリックが行われたこと、および精算ボタン360上でのユーザクリックのロケーションを、発行者に視覚的に伝達する。他の対話が行われたことを発行者に視覚的に伝達するために、類似のアニメーションが使用され得る。たとえば、タッチスクリーンデバイスを参照すると、ユーザタップの発生を視覚的に伝達するために、類似の影付き円が使用され得、タッチスクリーン上でのユーザスワイプまたは他の指移動を示すために、細長いシェーディングアニメーションが使用され得る。
上記で説明したように、発行者は、他のセッションのうちの1つ(たとえば、セッション2)のリプレイをユーザインターフェース300(または、別のユーザインターフェース)に要求することができる。たとえば、セッションのリスト308の中のセッション2とのユーザ対話(たとえば、それのクリック)は、セッション2についてのセッション情報を求める要求を開始することができる。その要求に応答して、評価装置150は、セッション2に関係するプレイバックデータおよびセッションアクティビティデータを要求側デバイスに出力することができる。プレイバックデータおよびセッションアクティビティデータの受信時に、要求側デバイスは、リプレイ領域306の中でセッション2をリプレイすることができ、セッション2の間に行われたアクティビティについての情報をセッションアクティビティ領域318の中に提示することができる。
いくつかの実装形態では、ユーザインターフェース300はフィルタ要素304を含むことができる。フィルタ要素304は、たとえば、サブミットされた検索フレーズを使用して識別されるセッションを発行者がフィルタ処理することを可能にする。たとえば、発行者は、ユーザがその間に精算ボタン360上をクリックしたが最終的に購入を行わなかったセッションだけを識別することに関心がある場合がある。この例では、ユーザは、検索フレーズ「クリックされた精算」をサブミットすることができ、(たとえば、ドロップダウンボタン上をクリックし「購入しなかった」オプションを選択することによって)ユーザがその間に購入を行わなかったセッションだけを識別するフィルタを選択するために、フィルタ要素304と対話することができる。このことは、発行者が、対象のセッションを迅速に識別すること、および/またはこれらのユーザが購入を行うことを何が妨げていたのだろうか(たとえば、ユーザインターフェースを伴う問題)を識別することを可能にする。
ここでは例示的なフィルタが例示のために提供されるが、様々な他のフィルタが必要に応じて使用および指定され得る。たとえば、発行者は、特定の地理的領域(たとえば、米国南西部、中央アメリカ、欧州)の中で実行されたセッションだけを、またはいくらかの指定された持続時間の前(たとえば、2分間以内)に、ユーザがその間にセッションを終了したセッションだけを、評価することに関心がある場合がある。以下でより詳細に説明するように、セッションに関係するこれらの情報および/または分析情報がフィルタを使用して識別されるようなフィルタを提供することは、どのように発行者のユーザインターフェースをよりよくフォーマッティングし、かつ/または特定の事業目標を達成する(たとえば、売上を大きくする)のかに関する洞察を、発行者に提供することができる。
いくつかの実装形態では、ユーザインターフェース200の発行者は、ユーザセッションのプレイバックの中で単にユーザインターフェース要素と対話することによって、ユーザインターフェース200のためのホワイトリストを更新することができる。たとえば、発行者は、数量フォーム240の中に提示される項目の数量を見る必要がないことを決定する場合、発行者は、リプレイ領域306の中の数量値342を選択することができる。評価装置150は、選択を検出することができ、数量フォーム240の数量値242のホワイトリストステータスを更新することができる。この例では、評価装置150は、たとえば、この値がホワイトリスト化されていることを指定する「Tag:form; Field: value」をホワイトリスト120から除去することによって、数量値242のホワイトリストステータスを非ホワイトリスト化コンテンツに変更することになる。ユーザインターフェース200を用いた後続のユーザセッションに対して、数量値342は収集されず評価装置150へ送られないことになる。発行者は、ユーザインターフェース200を用いたセッション1または別のセッションのプレイバックの中で値342を選択することによって、数量値242をホワイトリスト120に戻して追加することができる。
図4は、ユーザセッションのプレイバックを提示する対話型インターフェースを生成および提供するための例示的なプロセス400のフローチャートである。プロセス400の動作は、たとえば、評価装置150などの1つまたは複数のデータ処理装置によって実行され得る。プロセス400の動作はまた、非一時的コンピュータ可読媒体上に記憶された命令として実施され得る。命令の実行は、1つまたは複数のデータ処理装置にプロセス400の動作を実行させる。
構成データがクライアントデバイスに提供される(402)。構成データは、発行者のホワイトリスト化ユーザインターフェース要素のセットを指定する。各ホワイトリスト化ユーザインターフェース要素は、コンテンツがそこから収集されクライアントデバイスから送信されるのに適格なユーザインターフェース要素である。たとえば、上記で説明したように、構成データは、ホワイトリスト化コンテンツがそこから取得され得るとともに評価装置へ送られ得るビューまたは他のユーザインターフェース構造インジケータを指定することができる。
構成データは、発行者のユーザインターフェースの、クライアントデバイスによるローディングに応答して、クライアントデバイスへ送られ得る。たとえば、ユーザインターフェースをロードするアプリケーションの計装モジュール、またはユーザインターフェース自体が、ローディングに応答して構成データを要求するように構成され得る。このようにして、評価装置へ送るためのデータを収集するために、現在のホワイトリストがクライアントデバイスに提供される。
ユーザインターフェースデータがクライアントデバイスから受信される(404)。クライアントデバイスは、データを収集することができ、ユーザセッション中に、またはユーザセッションの終結において、そのデータを評価装置へ送ることができる。上記で説明したように、データは、ユーザセッション中に提示される1つまたは複数のユーザインターフェースの構造(たとえば、ユーザインターフェースを生成するために使用されるビューのビューツリー)を指定するビューデータ、および1つまたは複数のユーザインターフェースとのユーザ対話を指定するユーザ対話データを含むことができる。
データはまた、1つまたは複数のユーザインターフェースによって提示され、かつ構成データによって指定されるホワイトリスト化ビューに整合するビューから生成された、1つまたは複数の提示されたユーザインターフェース要素のコンテンツを含むことができる。たとえば、発行者のユーザインターフェースを提示するアプリケーションは、ビューを、構成データによって指定されるホワイトリスト化ビューと比較することができる。整合するビューの場合、アプリケーションは、ビューのコンテンツを取得することができ、コンテンツにデータを提供することができる。整合しないユーザインターフェース要素の場合、アプリケーションは、ビューのコンテンツの収集を遮断することができ、コンテンツを提供しない。代わりに、アプリケーションは、コンテンツの描写、たとえば、テキストのハッシュ、または低忠実度バージョンの画像を提供することができる。
ユーザセッションのプレイバックが、受信されたデータに基づいて生成される(406)。ユーザセッションのプレイバックは、ユーザセッション中に見られる1つまたは複数のユーザインターフェース、ホワイトリスト化ユーザインターフェース要素に整合する1つまたは複数のユーザインターフェース要素のコンテンツ、1つまたは複数のユーザインターフェースとのユーザ対話を、提示することができる。ホワイトリスト化ユーザインターフェース要素に整合しないユーザインターフェース要素のコンテンツの場合、プレイバックは、ユーザインターフェース要素のコンテンツを有しないユーザインターフェース要素を提示することができる。代わりに、プレイバックは、コンテンツを表すマスキング要素を含めることができる。上記で説明したように、マスキング要素は、マスキング要素によって表されるコンテンツに基づいてサイズが合わせられ得る。
図5は、ユーザインターフェース要素のホワイトリストステータスを更新するための例示的なプロセス500のフローチャートである。プロセス500の動作は、たとえば、評価装置150などの1つまたは複数のデータ処理装置によって実行され得る。プロセス500の動作はまた、非一時的コンピュータ可読媒体上に記憶された命令として実施され得る。命令の実行は、1つまたは複数のデータ処理装置にプロセス500の動作を実行させる。
いくつかの実装形態では、発行者のコンテンツは、発行者がホワイトリストにそのコンテンツを追加するまでホワイトリスト化されない。このことは、発行者によって要求されない限り機密データが収集されないことを確実にする。発行者は、次いで、必要に応じてホワイトリストにコンテンツを追加することができる。
発行者の1つまたは複数のユーザインターフェースを用いたユーザセッションのプレイバックが生成される(502)。プレイバックは、図4のプロセス400を使用して生成され得る。
プレイバックの中に提示されるユーザインターフェース要素とのユーザ対話が検出される(504)。たとえば、発行者は、ユーザインターフェース要素のコンテンツのホワイトリストステータスを変更するために、ユーザインターフェース要素を選択することができる。
ユーザインターフェース要素を定義するビューのホワイトリストステータスが変更される(506)。ビューが発行者のためのホワイトリストの中に現在含まれる場合、ビューのホワイトリストステータスは、もはやホワイトリスト化されていないように更新され得る。たとえば、ビューに対する識別子がホワイトリストから除去され得る。
ビューが発行者のためのホワイトリストの中に現在含まれない場合、ビューのホワイトリストステータスは、ホワイトリスト化されるように更新され得る。たとえば、ビューに対する識別子がホワイトリストに追加され得る。
クライアントデバイスが発行者のユーザインターフェースをロードすると、更新済みのホワイトリストがクライアントデバイスに提供され得る。このようにして、更新済みのホワイトリストは、後続のユーザセッションのプレイバックのためのデータを収集するために使用される。
本明細書で説明する主題および動作の実施形態は、本明細書で開示する構造およびそれらの構造的均等物を含む、デジタル電子回路構成で、またはコンピュータソフトウェア、ファームウェア、もしくはハードウェアで、あるいはそれらのうちの1つまたは複数の組合せで、実装され得る。本明細書で説明する主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のための、またはデータ処理装置の動作を制御するための、コンピュータ記憶媒体上で符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして、実装され得る。代替または追加として、プログラム命令は、データ処理装置による実行のための、好適な受信機装置への送信のために情報を符号化するために生成される、人工的に生成された伝搬信号、たとえば、機械生成された電気信号、光信号、または電磁信号に対して符号化され得る。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムアクセスもしくはシリアルアクセスのメモリアレイもしくはデバイス、またはそれらのうちの1つまたは複数の組合せであり得るか、またはそれらの中に含まれ得る。その上、コンピュータ記憶媒体は伝搬信号でないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号の中で符号化されたコンピュータプログラム命令のソースまたは宛先であり得る。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理構成要素または物理媒体(たとえば、複数のCD、ディスク、または他の記憶デバイス)であり得るか、またはそれらの中に含まれ得る。
本明細書で説明する動作は、1つまたは複数のコンピュータ可読記憶デバイス上に記憶されるかまたは他のソースから受信されるデータに対してデータ処理装置によって実行される動作として実施され得る。
「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、システムオンチップ、または上記のもののうちの複数のもの、もしくはその組合せを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置は、専用論理回路構成、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置はまた、ハードウェアに加えて、当該のコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想機械、またはそれらのうちの1つまたは複数の組合せを構成するコードを含むことができる。装置および実行環境は、ウェブサービス基盤、分散コンピューティング基盤、およびグリッドコンピューティング基盤などの、様々な異なるコンピューティングモデル基盤を実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとも呼ばれる)は、コンパイラ型言語またはインタープリタ型言語、宣言型言語または手続型言語を含む、任意の形式のプログラミング言語で書くことができ、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットを含む、任意の形態で展開され得る。コンピュータプログラムは、必須ではないがファイルシステムの中のファイルに相当してよい。プログラムは、他のプログラムまたはデータ(たとえば、マークアップ言語文書の中に記憶された1つまたは複数のスクリプト)を保持するファイルの一部分の中に、当該のプログラムに専用の単一のファイルの中に、または協調した複数のファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイル)の中に、記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに位置するかもしくは複数のサイトにわたって分散され通信ネットワークによって相互接続される複数のコンピュータ上で実行されるように展開され得る。
本明細書で説明するプロセスおよび論理フローは、入力データに対して動作することおよび出力を生成することによってアクションを実行するために、1つまたは複数のプログラマブルプロセッサが1つまたは複数のコンピュータプログラムを実行することによって、実行され得る。専用論理回路構成、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって、プロセスおよび論理フローが実行されることも可能であり、それらとして装置が実装されることも可能である。
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの1つまたは複数の任意のプロセッサを含む。一般に、プロセッサは、読取り専用メモリもしくはランダムアクセスメモリまたはその両方から、命令およびデータを受信する。コンピュータの必須要素は、命令に従ってアクションを実行するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば、磁気ディスク、光磁気ディスク、または光ディスクを含むか、またはそれらからデータを受信すること、もしくはそれらにデータを転送すること、またはその両方を行うように動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有することが必須ではない。その上、コンピュータは、別のデバイス、たとえば、ほんのいくつかの例を挙げれば、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲーム機、全地球測位システム(GPS)レシーバ、またはポータブル記憶デバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)の中に組み込まれ得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内部ハードディスクまたはリムーバルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路構成によって増補され得るか、または専用論理回路構成の中に組み込まれ得る。
ユーザとの対話を行うために、本明細書で説明する主題の実施形態は、情報をユーザに表示するためのディスプレイデバイス、たとえば、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ、ならびにユーザがそれによってコンピュータに入力を提供できるキーボードおよびポインティングデバイス、たとえば、マウスまたはトラックボールを有するコンピュータ上で実施され得る。他の種類のデバイスが、同じくユーザとの対話を行うために使用され得、たとえば、ユーザに提供されるフィードバックは、任意の形態の知覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであり得、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受信され得る。加えて、コンピュータは、ユーザによって使用されるデバイスへ文書を送ることおよびそこから文書を受信することによって、たとえば、ユーザのデバイス上のウェブブラウザから受信された要求に応答して、そのウェブブラウザへウェブページを送ることによって、ユーザと対話することができる。
本明細書で説明する主題の実施形態は、たとえば、データサーバとしてのバックエンド構成要素を含むか、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含むか、またはフロントエンド構成要素、たとえば、ユーザがそれを通じて本明細書で説明する主題の実装形態と対話できるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータ、あるいは1つまたは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、またはフロントエンド構成要素の任意の組合せを含む、コンピューティングシステムの中で実施され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、たとえば、通信ネットワークによって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、一般に、互いに遠隔にあり、通常は通信ネットワークを通じて相互作用する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行しており互いにクライアントサーバ関係を有する、コンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、(たとえば、クライアントデバイスと対話しているユーザにデータを表示し、かつそうしたユーザからユーザ入力を受信するために)データ(たとえば、HTMLページ)をクライアントデバイスへ送信する。クライアントデバイスにおいて生成されるデータ(たとえば、ユーザ対話の結果)は、サーバにおいてクライアントデバイスから受信され得る。
本明細書は多くの特定の実装詳細を含むが、これらは任意の発明の、または特許請求され得るものの、範囲に対する限定としてではなく、むしろ特定の発明の特定の実施形態に固有の特徴の説明として解釈されるべきである。別個の実施形態のコンテキストで本明細書で説明されるいくつかの特徴はまた、単一の実施形態の中で組合せで実施され得る。反対に、単一の実施形態のコンテキストで説明される様々な特徴はまた、複数の実施形態の中で別個に、または任意の好適な部分組合せで実施され得る。その上、特徴はいくつかの組合せで作用するものとして上記で説明されることがあり、当初はそのように特許請求されることさえあるが、特許請求される組合せからの1つまたは複数の特徴は、場合によっては、その組合せから削除することができ、特許請求される組合せは、部分組合せまたは部分組合せの変形を対象とすることがある。
同様に、特定の順序で動作が図面に示されるが、このことは、望ましい結果を達成するために、そのような動作が図示の特定の順序もしくは逐次的な順序で実行されること、または図示したすべての動作が実行されることを必要とするものとして理解されるべきでない。いくつかの環境では、マルチタスキングおよび並列処理が有利であり得る。その上、上記で説明した実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきでなく、説明するプログラム構成要素およびシステムが、一般に、単一のソフトウェア製品の中で一緒に統合され得るか、または複数のソフトウェア製品の中にパッケージ化され得ることを理解されたい。
したがって、本主題の特定の実施形態が説明されている。他の実施形態が以下の特許請求の範囲内に入る。場合によっては、特許請求の範囲に記載されるアクションは、異なる順序で実行することができ、やはり望ましい結果を達成する。加えて、添付の図に示すプロセスは、望ましい結果を達成するために、必ずしも図示の特定の順序または逐次的な順序を必要とするとは限らない。いくつかの実装形態では、マルチタスキングおよび並列処理が有利であり得る。
100 環境
102 ネットワーク
106 ユーザデバイス
107 アプリケーション
108 アプリケーション開発者
109 コンテンツサーバ
110 コンテンツ記憶装置
112 コンテンツ要求
114 アプリケーションコンテンツ
121 計装モジュール
122 ホワイトリスト
124 ウィンドウスキャナ
125 キャンバスレコーダ
126 イベント検出器
127 フレームエンコーダ
128 アップローダー
129 フレームバンドル
130 提示階層、ビューツリー
140 プレイバックデータ
142 セッションアクティビティデータ
150 評価装置
152 セッションデータ記憶装置
160 テキスト
161 テキスト
162 画像
164 リスト
166 画像
200 ユーザインターフェース
210 ページタイトル
240 数量フォーム
242 テキスト入力フィールド
250 ドロップダウンメニュー
260 精算ボタン、コンテンツボタン
270 仮想ドキュメントオブジェクトモデル(DOM)、HTML文書
300 対話型インターフェース、ユーザインターフェース
302 検索フィールド
304 フィルタ要素
306 プレイバック領域、リプレイ領域
308 セッションのリスト
310 再生/一時停止部分
310 ページタイトル
312 カウンタ
314 スライダー部分
316 スライディング要素
321 マスクされた要素、マスキング要素
331 マスクされた要素、マスキング要素
340 数量フォーム
342 テキスト入力フィールド
350 ドロップダウンメニュー
351 マスクされた要素、マスキング要素
360 精算ボタン
370 セッションアクティビティ領域、アクティビティのリスト
371、372、373、374、375 アクティビティ

Claims (20)

  1. 発行者のホワイトリスト化ビューのセットを指定する構成データをクライアントデバイスに提供するステップであって、各ホワイトリスト化ビューが、コンテンツがそこから収集され前記クライアントデバイスから送信されるのに適格なビューである、ステップと、
    前記クライアントデバイスから、かつユーザがその中で前記発行者の1つまたは複数のユーザインターフェースと対話したユーザセッションに対して、ユーザインターフェースデータを受信するステップであって、前記ユーザインターフェースデータが、
    前記ユーザセッション中に提示された前記1つまたは複数のユーザインターフェースの構造を指定するビューデータ、
    前記1つまたは複数のユーザインターフェースとのユーザ対話を指定するユーザ対話データ、および
    (i)前記1つまたは複数のユーザインターフェースによって提示され、かつ(ii)前記構成データによって指定されるホワイトリスト化ビューに整合するビューから生成された、1つまたは複数の第1の提示されたユーザインターフェース要素のコンテンツを含み、アプリケーションが、前記構成データによって指定されるホワイトリスト化ビューに整合しないビューから生成された、1つまたは複数の第2の提示されたユーザインターフェース要素のコンテンツを提供しない、ステップと、
    前記1つまたは複数のユーザインターフェース、前記1つまたは複数の第1の提示されたユーザインターフェース要素の前記コンテンツ、前記1つまたは複数のユーザインターフェースとの前記ユーザ対話、および前記1つまたは複数の第2のユーザインターフェース要素のコンテンツに対しては、前記第2のユーザインターフェース要素の実際のコンテンツをマスクしながら前記第2のユーザインターフェース要素の前記コンテンツを表すマスキング要素を提示する、前記ユーザセッションのプレイバックを、前記ユーザインターフェースデータに基づいて生成するステップと
    を備える方法。
  2. 前記ビューデータが、ユーザインターフェースごとに、前記ユーザインターフェースを生成するために使用されるビューの階層を指定するデータを備える、請求項1に記載の方法。
  3. 所与の第1の提示されたユーザインターフェース要素の前記コンテンツが、前記1つまたは複数のユーザインターフェースのうちの所与のユーザインターフェースによって提示されたテキストを備え、前記テキストのための前記マスキング要素が、前記所与のユーザインターフェースの中で前記テキストを画定する長方形のサイズに整合する長方形ボックスを備える、請求項1に記載の方法。
  4. 所与の第1の提示されたユーザインターフェース要素の前記コンテンツが、前記1つまたは複数のユーザインターフェースのうちの所与のユーザインターフェースによって提示されたテキストを備え、前記テキストのための前記マスキング要素が、前記テキストの上昇に基づく高さを有する長方形ボックスを備える、請求項1に記載の方法。
  5. 所与の第1の提示されたユーザインターフェース要素の前記コンテンツが、前記1つまたは複数のユーザインターフェースのうちの所与のユーザインターフェースによって提示された画像を備え、前記画像のための前記マスキング要素が、前記画像の所与のピクセルに整合する色を有する置換画像を備える、請求項1に記載の方法。
  6. 所与の第1の提示されたユーザインターフェース要素の前記コンテンツが、前記1つまたは複数のユーザインターフェースのうちの所与のユーザインターフェースによって提示された画像を備え、前記画像のための前記マスキング要素が、前記画像のピクセルのサンプルから生成された置換画像を備え、ピクセルの前記サンプルが、前記画像のピクセルの総数よりも少ない、請求項1に記載の方法。
  7. 前記ユーザセッションの前記プレイバックにおける前記1つまたは複数のユーザインターフェースのうちの少なくとも1つによって提示されている、ユーザインターフェース要素とのユーザ対話を、前記ユーザセッションの前記プレイバック中に検出するステップと、
    前記ユーザ対話の検出に応答して、前記ユーザインターフェース要素を生成するために使用される所与のビューのホワイトリストステータスを変更するステップであって、前記ホワイトリストステータスが、前記ビューが前記クライアントデバイスから収集されるべきコンテンツを含むかどうかを指定する、ステップと
    をさらに備える、請求項1に記載の方法。
  8. 前記所与のビューの前記ホワイトリストステータスを変更するステップが、
    ホワイトリスト化コンテンツを指定するホワイトリスト上に前記所与のビューがあるときはいつでも前記ホワイトリスト化コンテンツから前記所与のビューを除去するステップと、
    前記ホワイトリスト化コンテンツを指定する前記ホワイトリスト上に前記ビューがないときはいつでも前記ホワイトリストに前記ビューを追加するステップと
    を備える、請求項7に記載の方法。
  9. システムであって、
    データ記憶装置、および
    1つまたは複数のコンピュータであって、前記データ記憶装置と相互作用し、前記1つまたは複数のコンピュータに動作を実行させる命令を実行する、1つまたは複数のコンピュータを備え、前記動作が、
    発行者のホワイトリスト化ビューのセットを指定する構成データをクライアントデバイスに提供することであって、各ホワイトリスト化ビューが、コンテンツがそこから収集され前記クライアントデバイスから送信されるのに適格なビューである、提供することと、
    前記クライアントデバイスから、かつユーザがその中で前記発行者の1つまたは複数のユーザインターフェースと対話したユーザセッションに対して、ユーザインターフェースデータを受信することであって、前記ユーザインターフェースデータが、
    前記ユーザセッション中に提示された前記1つまたは複数のユーザインターフェースの構造を指定するビューデータ、
    前記1つまたは複数のユーザインターフェースとのユーザ対話を指定するユーザ対話データ、および
    (i)前記1つまたは複数のユーザインターフェースによって提示され、かつ(ii)前記構成データによって指定されるホワイトリスト化ビューに整合するビューから生成された、1つまたは複数の第1の提示されたユーザインターフェース要素のコンテンツを含み、アプリケーションが、前記構成データによって指定されるホワイトリスト化ビューに整合しないビューから生成された、1つまたは複数の第2の提示されたユーザインターフェース要素のコンテンツを提供しない、受信することと、
    前記1つまたは複数のユーザインターフェース、前記1つまたは複数の第1の提示されたユーザインターフェース要素の前記コンテンツ、前記1つまたは複数のユーザインターフェースとの前記ユーザ対話、および前記1つまたは複数の第2のユーザインターフェース要素のコンテンツに対しては、前記第2のユーザインターフェース要素の実際のコンテンツをマスクしながら前記第2のユーザインターフェース要素の前記コンテンツを表すマスキング要素を提示する、前記ユーザセッションのプレイバックを、前記ユーザインターフェースデータに基づいて生成することと
    を備える、システム。
  10. 前記ビューデータが、ユーザインターフェースごとに、前記ユーザインターフェースを生成するために使用されるビューの階層を指定するデータを備える、請求項9に記載のシステム。
  11. 所与の第1の提示されたユーザインターフェース要素の前記コンテンツが、前記1つまたは複数のユーザインターフェースのうちの所与のユーザインターフェースによって提示されたテキストを備え、前記テキストのための前記マスキング要素が、前記所与のユーザインターフェースの中で前記テキストを画定する長方形のサイズに整合する長方形ボックスを備える、請求項9に記載のシステム。
  12. 所与の第1の提示されたユーザインターフェース要素の前記コンテンツが、前記1つまたは複数のユーザインターフェースのうちの所与のユーザインターフェースによって提示されたテキストを備え、前記テキストのための前記マスキング要素が、前記テキストの上昇に基づく高さを有する長方形ボックスを備える、請求項9に記載のシステム。
  13. 所与の第1の提示されたユーザインターフェース要素の前記コンテンツが、前記1つまたは複数のユーザインターフェースのうちの所与のユーザインターフェースによって提示された画像を備え、前記画像のための前記マスキング要素が、前記画像の所与のピクセルに整合する色を有する置換画像を備える、請求項9に記載のシステム。
  14. 所与の第1の提示されたユーザインターフェース要素の前記コンテンツが、前記1つまたは複数のユーザインターフェースのうちの所与のユーザインターフェースによって提示された画像を備え、前記画像のための前記マスキング要素が、前記画像のピクセルのサンプルから生成された置換画像を備え、ピクセルの前記サンプルが、前記画像のピクセルの総数よりも少ない、請求項9に記載のシステム。
  15. 前記動作が、
    前記ユーザセッションの前記プレイバックにおける前記1つまたは複数のユーザインターフェースのうちの少なくとも1つによって提示されている、ユーザインターフェース要素とのユーザ対話を、前記ユーザセッションの前記プレイバック中に検出することと、
    前記ユーザ対話の検出に応答して、前記ユーザインターフェース要素を生成するために使用される所与のビューのホワイトリストステータスを変更することであって、前記ホワイトリストステータスが、前記ビューが前記クライアントデバイスから収集されるべきコンテンツを含むかどうかを指定する、ことと
    を備える、請求項9に記載のシステム。
  16. 前記所与のビューの前記ホワイトリストステータスを変更することが、
    ホワイトリスト化コンテンツを指定するホワイトリスト上に前記所与のビューがあるときはいつでも前記ホワイトリスト化コンテンツから前記所与のビューを除去することと、
    前記ホワイトリスト化コンテンツを指定する前記ホワイトリスト上に前記ビューがないときはいつでも前記ホワイトリストに前記ビューを追加することと
    を備える、請求項15に記載のシステム。
  17. 1つまたは複数のコンピュータによる実行時に前記1つまたは複数のコンピュータに動作を実行させる命令を記憶する非一時的コンピュータ可読媒体であって、前記動作が、
    発行者のホワイトリスト化ビューのセットを指定する構成データをクライアントデバイスに提供することであって、各ホワイトリスト化ビューが、コンテンツがそこから収集され前記クライアントデバイスから送信されるのに適格なビューである、提供することと、
    前記クライアントデバイスから、かつユーザがその中で前記発行者の1つまたは複数のユーザインターフェースと対話したユーザセッションに対して、ユーザインターフェースデータを受信することであって、前記ユーザインターフェースデータが、
    前記ユーザセッション中に提示された前記1つまたは複数のユーザインターフェースの構造を指定するビューデータ、
    前記1つまたは複数のユーザインターフェースとのユーザ対話を指定するユーザ対話データ、および
    (i)前記1つまたは複数のユーザインターフェースによって提示され、かつ(ii)前記構成データによって指定されるホワイトリスト化ビューに整合するビューから生成された、1つまたは複数の第1の提示されたユーザインターフェース要素のコンテンツを含み、アプリケーションが、前記構成データによって指定されるホワイトリスト化ビューに整合しないビューから生成された、1つまたは複数の第2の提示されたユーザインターフェース要素のコンテンツを提供しない、受信することと、
    前記1つまたは複数のユーザインターフェース、前記1つまたは複数の第1の提示されたユーザインターフェース要素の前記コンテンツ、前記1つまたは複数のユーザインターフェースとの前記ユーザ対話、および前記1つまたは複数の第2のユーザインターフェース要素のコンテンツに対しては、前記第2のユーザインターフェース要素の実際のコンテンツをマスクしながら前記第2のユーザインターフェース要素の前記コンテンツを表すマスキング要素を提示する、前記ユーザセッションのプレイバックを、前記ユーザインターフェースデータに基づいて生成することと
    を備える、非一時的コンピュータ可読媒体。
  18. 前記ビューデータが、ユーザインターフェースごとに、前記ユーザインターフェースを生成するために使用されるビューの階層を指定するデータを備える、請求項17に記載の非一時的コンピュータ可読媒体。
  19. 所与の第1の提示されたユーザインターフェース要素の前記コンテンツが、前記1つまたは複数のユーザインターフェースのうちの所与のユーザインターフェースによって提示されたテキストを備え、前記テキストのための前記マスキング要素が、前記所与のユーザインターフェースの中で前記テキストを画定する長方形のサイズに整合する長方形ボックスを備える、請求項17に記載の非一時的コンピュータ可読媒体。
  20. 所与の第1の提示されたユーザインターフェース要素の前記コンテンツが、前記1つまたは複数のユーザインターフェースのうちの所与のユーザインターフェースによって提示されたテキストを備え、前記テキストのための前記マスキング要素が、前記テキストの上昇に基づく高さを有する長方形ボックスを備える、請求項17に記載の非一時的コンピュータ可読媒体。
JP2022513315A 2019-08-28 2020-08-27 ネイティブアプリケーションのためのユーザインターフェースデータ収集におけるユーザプライバシーの保護 Pending JP2022545545A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962892914P 2019-08-28 2019-08-28
US62/892,914 2019-08-28
PCT/US2020/048231 WO2021041700A1 (en) 2019-08-28 2020-08-27 Protecting user privacy in user interface data collection for native applications

Publications (1)

Publication Number Publication Date
JP2022545545A true JP2022545545A (ja) 2022-10-27

Family

ID=72433044

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022513315A Pending JP2022545545A (ja) 2019-08-28 2020-08-27 ネイティブアプリケーションのためのユーザインターフェースデータ収集におけるユーザプライバシーの保護

Country Status (6)

Country Link
US (1) US20210067492A1 (ja)
EP (1) EP4022481B1 (ja)
JP (1) JP2022545545A (ja)
CN (1) CN114730341A (ja)
AU (1) AU2020335869A1 (ja)
WO (1) WO2021041700A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230090108A1 (en) * 2021-09-23 2023-03-23 Quantum Metric, Inc. Systematic identification and masking of private data for replaying user sessions
US11487931B1 (en) * 2021-10-18 2022-11-01 International Business Machines Corporation Replaying a webpage based on virtual document object model

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180079455A (ko) * 2012-07-19 2018-07-10 글랜스 네트웍스, 인크 다른 형태의 정보 공유를 통한 코브라우징의 통합
US10388182B2 (en) * 2014-11-20 2019-08-20 International Business Machines Corporation Socially enabled guidance for products with GUIs
US20160267523A1 (en) * 2015-03-11 2016-09-15 Facebook, Inc. Tracking User Behavior with Universal Action Tags

Also Published As

Publication number Publication date
CN114730341A (zh) 2022-07-08
WO2021041700A1 (en) 2021-03-04
US20210067492A1 (en) 2021-03-04
EP4022481A1 (en) 2022-07-06
AU2020335869A1 (en) 2022-03-03
EP4022481B1 (en) 2023-10-25

Similar Documents

Publication Publication Date Title
EP3776193B1 (en) Capturing and processing interactions with a user interface of a native application
US11593131B2 (en) Capturing and processing interactions with a user interface of a native application
US9756140B2 (en) Tracking user behavior relative to a network page
US20130326333A1 (en) Mobile Content Management System
US10353721B2 (en) Systems and methods for guided live help
SG192408A1 (en) Presenting advertisements based on web-page interaction
CN111818123A (zh) 网络前端远程回放方法、装置、设备及存储介质
EP4022481B1 (en) Protecting user privacy in user interface data collection for native applications
CN103955475A (zh) 一种网页标签信息的显示方法、装置和浏览器
CN111783008A (zh) 一种信息显示方法、装置、设备及介质
US10210001B2 (en) Automatic execution of objects in a user interface
US20210042441A1 (en) Protecting user privacy in user interface data collection
CN107533544B (zh) 元素标识符生成
US10788959B2 (en) Personalization of a web application
US11711223B1 (en) Protecting user privacy in playback of user sessions
US20130311359A1 (en) Triple-click activation of a monetizing action
US20240241699A1 (en) Editing of a Multi-Page Demo
Fan Implementation of a Webpage Editor for Pages with Minimum JavaScript Dependency
Ludington User Web-Browser Event Visualizer
JP6217473B2 (ja) Webサービス提供装置