(57)【要約】本明細書に開示されている例は、アプリケーションの重要なイベントに関連付けられた少なくとも１つのイベントリスナーを識別し、該アプリケーションの要素に関連付けられたアクションを受け取り、該アクションに関連付けられた複数のイベントリスナーを含む複合イベントシーケンスを生成し、及び該複合イベントシーケンスが該少なくとも１つの重要なイベントに関連付けられているか否かを判定するためのアクションエンジンを備える、要素識別子を生成するためのシステムに関連する。該システムはさらに、該受け取ったアクションに関連付けられた性能メトリックを測定し、及び、該性能メトリックを含む該複合イベントシーケンスにしたがってログレコードを生成するためのメトリックエンジンを備えることができる。【選択図】図１
2018508865.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションイベントを追跡するためのシステムであって、該システムは、アプリケーションエンジンとメトリックエンジンを備え、
前記アプリケーションエンジンは、
アプリケーションにおける重要なイベントに関連付けられた少なくとも１つのイベントリスナーを識別し、
前記アプリケーションの要素に関連付けられたアクションを受け取り、
前記アクションに関連付けられた複数のイベントリスナーを含む複合イベントシーケンスを生成し、
前記複合イベントシーケンスが、前記重要なイベントに関連付けられた前記少なくとも１つのイベントリスナーを含んでいるか否かを判定し、
前記メトリックエンジンは、
前記アプリケーションエンジンが、前記複合イベントシーケンスは、前記重要なイベントに関連付けられた前記少なくとも１つのイベントリスナーを含んでいると判定したことに応答して、
前記受け取ったアクションに関連付けられた性能メトリックを測定し、及び、
前記複合イベントシーケンスにしたがって、前記性能メトリックを含むログレコードを生成する
ことからなる、システム。
【請求項２】
前記アプリケーションエンジンは、前記少なくとも１つのイベントリスナーに非ダミーのアクションハンドラが加えられたか否かに基づいて、前記重要なイベントを識別することができる、請求項１のシステム。
【請求項３】
前記アプリケーションエンジンは、前記アクションの最初のイベントに基づいて、前記複合イベントシーケンスを生成することができる、請求項１のシステム。
【請求項４】
前記アプリケーションエンジンは、前記アクションの終了イベントにさらに基づいて、前記複合イベントシーケンスを生成することができる、請求項３のシステム。
【請求項５】
前記アプリケーションエンジンは、アイドルタイマーの満了にさらに基づいて、前記複合イベントシーケンスを生成することができる。請求項３のシステム。
【請求項６】
前記アプリケーションエンジンは、少なくとも１つの重要でないイベントに関連付けられたイベントリスナーに、ダミーのアクションハンドラを追加することができる、請求項１のシステム。
【請求項７】
前記少なくとも１つの重要でないイベントは、前記複合イベントシーケンスを構成する前記複数のイベントリスナーのうちの少なくとも１つに関連付けられる、請求項６のシステム。
【請求項８】
前記アプリケーションの前記要素に関連付けられたアクションは、表示装置におけるユーザーとアプリケーションのインターフェースとの相互作用を含む、請求項１のシステム。
【請求項９】
命令を含む非一時的な機械可読記憶媒体であって、
前記命令は、プロセッサによって実行されると、該プロセッサに、
複数のイベントリスナーのうちの第１のイベントリスナーを、アプリケーションに関連付けられた重要なイベントリスナーとして識別するステップと、
前記複数のイベントリスナーのうちの第２のイベントリスナーにダミーのアクションハンドラを追加するステップであって、該第２のイベントリスナーは、重要でないイベントリスナーを含む、ステップと、
前記第１のイベントリスナーに関連付けられたアクションを受け取るステップと、
前記第１のイベントリスナー及び前記第２のイベントリスナーを含む複合イベントシーケンスを生成するステップと、
前記アクションに関連付けられた性能メトリックを測定するステップと、
前記性能メトリックを含むログレコードを生成するステップであって、前記ログレコードは、前記複合イベントシーケンスに関連付けられている、ステップ
を実行させることからなる、機械可読記憶媒体。
【請求項１０】
前記アクションに関連付けられた前記測定された性能メトリックは、該アクションを完了するのに要した時間を含む、請求項９の機械可読記憶媒体。
【請求項１１】
第１のイベントリスナーを前記アプリケーションに関連付けられた重要なイベントリスナーとして識別するステップを実行させる前記命令が、前記複数のイベントリスナーの各々が、非デフォルトのアクションハンドラを含んでいるか否かを判定するための命令を含むことからなる、請求項９の機械可読記憶媒体。
【請求項１２】
前記非デフォルトのアクションハンドラは、デフォルトのアクションハンドラを無効にするアプリケーション機能を含む、請求項１１の機械可読記憶媒体。
【請求項１３】
前記複数のイベントリスナーのうちの前記第２のイベントリスナーに関連付けられた第２のアクションを受け取り、
前記第２のアクションに関連付けられた第２の性能メトリックを測定し、
前記第２の性能メトリックを含む前記複合イベントシーケンスに関連付けられた第２のログレコードを生成し、及び、
前記複合イベントシーケンスに関連付けられた前記ログレコードに、前記第２のログレコードを関連付ける
ための命令をさらに含む請求項９の機械可読記憶媒体。
【請求項１４】
前記アプリケーションに関連付けられた性能報告を生成するための命令をさらに含み、前記性能報告には、複数のログレコードが集約されており、該ログレコードの各々は、前記複合イベントシーケンスに関連付けられていることからなる、請求項９の機械可読記憶媒体。
【請求項１５】
コンピューターによって実施される方法であって、
アプリケーションに関連付けられた複数のイベントリスナーの各イベントリスナーにダミーのアクションハンドラを加えるステップと、
前記アプリケーションに関連付けられた第１のユーザーアクションを受け取ったことに応答して、少なくとも１つの第１のイベントリスナーを含む複合イベントシーケンスを生成するステップであって、前記第１のユーザーアクションは、前記複数のイベントリスナーのうちの前記少なくとも１つの第１のイベントリスナーに関連付けられた少なくとも１つの所定の開始イベントを起動することからなる、ステップと、
前記少なくとも１つの第２のイベントリスナーのダミーのアクションハンドラに基づいて、前記複合イベントシーケンスに、前記複数のイベントリスナーのうちの少なくとも１つの第２のイベントリスナーを加えるステップと、
前記少なくとも１つの第１のイベントリスナー及び前記少なくとも１つの第２のイベントリスナーに関するそれぞれの性能メトリックを測定するステップであって、該それぞれの性能メトリックは、前記少なくとも１つの第１のイベントリスナー及び前記少なくとも１つの第２のイベントリスナーを完了するための時間を含むことからなる、ステップと、
アイドルタイマーの満了と、前記少なくとも１つの所定の開始イベントを起動する第２のユーザーアクションを受け取ったこととのうちの少なくとも一方に応答して、前記複合イベントシーケンスを閉じるステップと、
前記複合イベントシーケンスが重要なイベントリスナーを含んでいるか否かを判定するステップであって、前記重要なイベントリスナーは、非デフォルトで非ダミーのアクションハンドラを含んでいることからなる、ステップと、
前記複合イベントシーケンスが、前記重要なイベントリスナーを含んでいると判定したことに応答して、
最終的な性能メトリックを計算するステップであって、該最終的な性能メトリックは、前記少なくとも１つの第１のイベントリスナー及び前記少なくとも１つの第２のイベントリスナーに関する前記それぞれの性能メトリックにしたがって、前記ユーザーアクションを完了するための全時間を含むことからなる、ステップ、及び
前記最終的な性能メトリックを含むログレコードを生成するステップであって、該ログレコードは、前記複合イベントシーケンスに関連付けられることからなる、ステップ
を実施するステップと、
前記複合イベントシーケンスが前記重要なイベントリスナーを含んでいないと判定したことに応答して、前記それぞれの性能メトリックを廃棄するステップ
を含む方法。
【発明の詳細な説明】
【背景技術】
【０００１】
典型的なウェブベースのアプリケーション及び／又はモバイルアプリケーションは、ユーザーと相互作用するためのいくつかの手段を提供する。たとえば、ユーザーは、検索ボックス、リスト項目、リンク、画像などの種々の要素をウェブページ上で選択することができる。いくつかの場合には、アプリケーションの作成者は、（所与のアクションを完了するのに要する時間を決定することなどによって）ユーザーのアクションに応答してアプリケーションの性能を測定することを望む。ユーザーが行ったアクションは、異なるアプリケーションによって異なるやり方で処理されることができるイベントを生成することができ、開発者は、複合イベントシーケンスのうちの異なるイベントにアクションハンドラを加えることができる。たとえば、タッチスクリーン上の表示部を指でスワイプするユーザーは、「touchstart（タッチスタート）」、「touchmove（タッチムーブ）」、及び「touchend（タッチエンド）」などのイベントを含む複合イベントシーケンスを生成することができる（マウスを用いてなされたこれと同じアクションは、「mousedown（マウスダウン）」、「mousemove（マウスムーブ）」及び「mouseup（マウスアップ）」などのイベントを生成する）。このような状況では、背後にある異なるイベントにもかからわず、それぞれのアクションに対する性能メトリックを集約（ないし統合）することができる。
【先行技術文献】
【特許文献】
【０００２】
【特許文献１】（補充可能性あり）
【図面の簡単な説明】
【０００３】
添付の図面において、同じ参照番号は、同様の構成要素もしくはブロックを参照している。下記の詳細な説明は添付の図面を参照している。
【図１】開示されている実施例と整合するアプリケーションの１例を示す図である。
【図２】開示されている実施例と整合するアプリケーションイベント追跡用のシステムのブロック図である。
【図３】開示されている実施例と整合する例示的なアプリケーションイベント追跡装置のブロック図である。
【図４】開示されている実施例と整合するアプリケーションイベント追跡方法の１実施形態のフローチャートである。
【発明を実施するための形態】
【０００４】
上記のように、ウェブアプリケーションの典型的なインターフェースは、画像、リンク、メニュー、テキスト記述（説明）などの多くの要素を含んでいる。これらの要素は、多くの場合、入力装置、タッチスクリーンに対するタップ、マウスの移動、キーボードコマンドなどによる選択などのアクションに応答してアプリケーションによって呼び出すことができるイベントリスナーに関連付けられる。したがって、詳細に後述するように、種々の例示的な実施例は、それらの種々の要素に関連付けられたアクションによって生じるイベントを追跡すること、それらのアクションに関連付けられたメトリック（性能等の評価の基準や尺度など。メトリクスともいう）を評価すること、及び、性能の評価及び分析用のメトリックを記録することに関連する。
【０００５】
以下の説明では、「機械可読記憶媒体」という用語が使用されている。本明細書で使用されている「機械可読記憶媒体」という用語は、実行可能命令またはその他のデータを格納する（たとえば、ハードディスクドライブ、ランダムアクセスメモリ、フラッシュメモリなどの）任意の電子装置、磁気装置、光学装置、またはその他の物理的な記憶装置を意味する。
【０００６】
図１は、開示されている実施例と整合するアプリケーション１００の１実施形態のブロック図である。アプリケーション１００は、たとえば、ラップトップコンピューター、デスクトップコンピューター、タブレット、携帯電話機、スマートフォン、ゲーム機などのユーザー装置からアクセスできるウェブベースのアプリケーション及び／又はモバイルアプリケーションを含むことができる。アプリケーション１００を、本明細書に記載されている実施例を提供することに整合するコンピューティング能力を提供することができる、汎用コンピューター及び／もしくは専用コンピューター、サーバー、メインフレーム、デスクトップ、ラップトップ、タブレット、スマートフォン、ゲーム機、及び／又はその他の任意のシステムなどのコンピューティング装置によって提供することができる。
【０００７】
アプリケーション１００は、テキスト、画像、ハイパーリンク、ビデオ、メニューボタン、フォームなどの複数の要素１２０（Ａ）〜（Ｃ）を含むことができる。要素１２０（Ａ）〜（Ｃ）は、ユーザーインターフェース要素を含むことができ、アプリケーション１００のユーザーは、該ユーザーインターフェース要素と相互作用（たとえば情報のやり取りなどの対話）をして、アプリケーション１００上で（または該アプリケーションに対して）タスク及び／又はコマンドを実行することができる。たとえば、要素１２０（Ａ）〜（Ｃ）は、ウェブページ上のフォームに関連付けられたチェックボックス要素を含むことができる。
【０００８】
アプリケーション１００におけるアクション１４０などのユーザーアクションを、ASP、Java（ジャバ）、JavaScript（ジャバスクリプト）、Ｏｂｊｅｃｔｉｖｅ-Ｃ、及びその他の種々のプログラミング言語などのコード及び／又はスクリプトを用いて処理することができるイベントに変換することができる。ユーザーがユーザークライアントにおいて（タッチやスワイプなどの）アクションを開始するたびに、アプリケーション１００のイベントリスナーが該アクションを処理することができるように、（たとえば、touchstart、click（クリック）、touchendなどの）一連のイベントを起動することができる。
【０００９】
要素１２０（Ａ）〜（Ｃ）の各々は、複数のイベントリスナーを含むことができる。たとえば、要素１２０（Ａ）は、第１のイベントリスナー１２５（Ａ）、第２のイベントリスナー１２５（Ｂ）、及び第３のイベントリスナー１２５（Ｃ）を含むことができる。それらのイベントリスナーは、アクション１４０などのユーザー入力を、動作環境からアプリケーション１００に送ることができるようにするために、プログラムフック（programmatic hook）を含むことができる。
【００１０】
各イベントリスナー１２５（Ａ）、１２５（Ｂ）、１２５（Ｃ）を、異なるアクションに応答して呼び出すことができる。たとえば、イベントリスナー１２５（Ａ）を、要素１２０（Ａ）にタッチする（触れる）というユーザーアクションに対応する「touchstart」イベントに関連付けることができる。イベントリスナー１２５（Ｂ）を、要素１２０（Ａ）に対してドラッグ、スクロール及び／又はスワイプするというユーザーアクションに対応する「touchmove」イベントに関連付けることができる。イベントリスナー１２５（Ｃ）を、（たとえば、指やスタイラスやマウスポインターなどを持ち上げることによって）要素１２０（Ａ）から離れるというユーザーアクションに対応する「touchend」イベントに関連付けることができる。
【００１１】
各イベントリスナー１２５（Ａ）、１２５（Ｂ）、１２５（Ｃ）は、ハンドラを含むことができる。たとえば、イベントリスナー１２５（Ａ）は、第１のデフォルトのアクションハンドラ１３０を含むことができ、イベントリスナー１２５（Ｂ）は、第２のデフォルトのアクションハンドラ１３２を含むことができ、及び、イベントリスナー１２５（Ｃ）は、非デフォルトの（すなわちデフォルトではない）アクションハンドラ１３４を含むことができる。デフォルトのアクションハンドラを、アプリケーション１００用の動作環境によって提供することができる。いくつかの実施例では、ウェブベースのアプリケーションとしてアプリケーション１００をホストするウェブブラウザは、アプリケーション１００の開発者がそれらのアクションハンドラを無効にしていないときには、種々のユーザーアクションに対して、デフォルトのアクションハンドラ（たとえば、ウェブブラウザのデフォルトの挙動）を提供することができる。たとえば、デフォルトのアクションハンドラ１３２は、テキストを強調することによって、ユーザーによるスワイプアクションを処理することができる。いくつかの実施例では、あるイベントリスナーを、複数のアクションハンドラに関連付けることができる。たとえば、該イベントリスナーをデフォルトのアクションハンドラ（たとえば、ウェブベースのアプリケーション用のウェブブラウザによって提供されるデフォルトの挙動）、アプリケーションイベントの追跡を支援するために追加されるダミーハンドラ、及び、該アプリケーションに機能を提供するために開発者が追加したアクションハンドラに関連付けることができる。
【００１２】
アクションハンドラ１３４は、アプリケーション１００の開発者によって定義された機能に関連付けられた非デフォルトのアクションハンドラを含むことができる。たとえば、要素１２０（Ａ）は、アプリケーション１００内のメニューコマンドを含むことができ、要素１２０（Ａ）に関連付けられた「touchend」イベントは、イベントリスナー１２５（Ｃ）に、該イベント用のデフォルトのアクションハンドラの代わりにアクションハンドラ１３４を呼び出させることができる。アクションハンドラ１３４は、たとえば、「touchend」イベントに関連付けられたデフォルトの機能の代わりに、要素１２０（Ａ）に関連付けられたメニューコマンドをユーザーが選択したことに応答して実行される機能を含むことができる。
【００１３】
いくつかの実施例では、イベントリスナー１２５（Ｃ）は、アクションハンドラ１３４などの非デフォルトのアクションハンドラとの関連性に基づく重要なイベントを含むことができる。イベントリスナー１２５（Ａ）〜（Ｂ）は、デフォルトのアクションハンドラとの関連性に基づく重要でないイベントを含むことができる。イベントリスナー１２５（Ａ）〜（Ｃ）を、それらのイベントに関連付けられたアクションに応答して呼び出されるアプリケーション１００に登録することができる。
【００１４】
いくつかの実施例では、イベントリスナーを、任意のハンドラ、デフォルトのハンドラ、または非デフォルトのハンドラに関連付けなくてもよい。たとえば、要素１２０（Ｂ）は、第２の複数のイベントリスナー１４５（Ａ）〜（Ｃ）を含むことができる。イベントリスナー１４５（Ａ）〜（Ｂ）をアクションハンドラに関連付けなくてもよい。なぜなら、それらのそれぞれのイベントが、アプリケーション１００の実施に起因して発生するときに、実行される必要がある機能はないからである。アクションハンドラ１５０は、イベントリスナー１４５（Ｃ）用の非デフォルトのアクションハンドラを含むことができるが、そのため、イベントリスナー１４５（Ｃ）は、それのイベント（たとえば「touchend」）に関連付けられたアクションに応答して呼び出されるアプリケーション１００に登録することができる。
【００１５】
上記したように、アプリケーション１００内にいくつかの異なるやり方で異なる要素を実施（ないし実装）することができる。このため、異なるアクションに対しては（それらのアクションが類似している場合でも）、異なるイベントリスナーを呼び出すことができることになる。たとえば、要素１２０（Ａ）に対する（または該要素上における）ユーザーによるスワイプアクションは、イベントリスナー「touchstart」、「touchmove」、「touchcancel」、「touchend」をアプリケーション１００によって呼び出すことができ、一方、要素１２０（Ｂ）に対する同じアクションは、「touchend」用のイベントリスナーを呼び出すことになるだけである。
【００１６】
いくつかの実施例では、要素に関連付けられたそれぞれのイベントリスナーにダミーのアクションハンドラ（以下、ダミーのアクションハンドラを「ダミーアクションハンドラ」ともいう）を追加することによって、いくつかの及び／又は全てのアクションに対して同じシーケンスのイベントリスナーを呼び出すことができる。たとえば、要素１２０（Ｃ）は、第３の複数のイベントリスナー１６０（Ａ）〜（Ｃ）を含むことができる。要素１２０（Ａ）〜（Ｂ）と同様に、それらのイベントリスナーのうちの１つだけが、非デフォルトのアクションハンドラ（この例では、イベントリスナー１６０（Ｃ）のアクションハンドラ１７０）を含んでいる。第１のダミーアクションハンドラ１７２及び第２のダミーアクションハンドラ１７４を、それぞれ、イベントリスナー１６０（Ａ）及びイベントリスナー１６０（Ｂ）に関連付けることができる。ダミーアクションハンドラ１７２、１７４は、要素１２０（Ｃ）に対してアクション１４０などのユーザーアクションが行われたときに、イベントリスナー１６０（Ａ）〜（Ｂ）を呼び出すことができる。したがって、要素１２０（Ｃ）に関連付けられたそれぞれのユーザーアクションは、どのイベントリスナーが該ユーザーアクションに実際に関連付けられているかに関係なく、同じイベントシーケンスを生成することができることになる。たとえば、スワイプアクションが、通常は、「touchmove」イベント用のイベントリスナーに向けられており、タップアクションが、通常は、「touchend」イベント用のイベントリスナーに向けられているときであっても、スワイプアクションとタップアクションはいずれも、各々のアクションに対して「touchstart」、「touchmove」、「touchcancel」、「touchend」というイベントシーケンスを生成することができる。
【００１７】
コード（たとえばjavascript、.ＮＥＴなど）をアプリケーション１００に導入することによって、アプリケーション１００のロード中に、ダミーのイベントハンドラ１７２、１７４を挿入することができる。この導入は、該ダミーのアクションハンドラコードを、アプリケーション１００用のロジック（論理）の前に実行して、アプリケーション１００によって定義された任意のイベントハンドラが、該導入されたコードを確実に実行できるようにする（または該導入されたコードが該任意のイベントハンドラを確実に実行できるようにする）ことができる。
【００１８】
ダミーのアクションハンドラを、所定のイベント（たとえば、「click」、「mousedown」、「touchstart」、「touchmove」、「touchend」、「touchcancel」、「mouseup」、「load」、「keydown」、「keyup」）に対して追加することができる。この場合、それぞれのユーザーアクションは、イベントの全シーケンス（いくつかは、ダミーのアクションハンドラを含み、いくつかは、重要な（たとえばアプリケーション及び／又はビジネスロジック）アクションハンドラを含む）が同じであるイベントシーケンスを生成することができる。
【００１９】
アクション１４０などのそれぞれのユーザーアクションは（結果として）、最初のイベント（たとえば、「touchstart」及び／又は「mousedown」）が起動されるたびに、複合イベントシーケンスオブジェクトを生成することができる。該イベントシーケンスが閉じられる（終了させられる）まで、後続のイベントを、現在のイベントシーケンスに関連付けることができる。イベントシーケンスを、アイドルタイマーの満了によって（たとえば、新たなイベントが、５００ｍｓなどの設定可能な時間にわたって受信されなかったときに）、及び／又は、イベントタイプ（たとえば、「touchstart」及び／又は「mousedown」）の新たなイベントシーケンスが起動されたときに、閉じることができる。
【００２０】
いくつかの実施例では、アプリケーション１００は、アクション１４０の性能に関連付けられた性能メトリックを測定することによって、ユーザー体験を監視（モニタ）することができる。性能メトリックは、アクションを完了するのに要した時間、該アクションを実行するために使用されたリソースの量、該アクションによって生じたエラー及び／又は例外（がもしあれば）の数などのデータを含むことができる。この場合、該性能メトリックを、ロギングのために、該複合イベントシーケンスに関連付けることができる。
【００２１】
図２は、開示されている実施例と整合するアプリケーションイベントを追跡するためのシステム２００のブロック図である。システム２００は、コンピューティング装置２０５及び表示装置２１０を備えることができる。コンピューティング装置２０５は、たとえば、本明細書に記載されている実施例を提供することに整合するコンピューティング能力を提供することができる、汎用コンピューター及び／もしくは専用コンピューター、サーバー、メインフレーム、デスクトップ、ラップトップ、タブレット、スマートフォン、ゲーム機、及び／又はその他の任意のシステムを備えることができる。表示装置２１０は、たとえば、陰極線管（ＣＲＴ）モニター、液晶ディスプレイ（ＬＣＤ）画面、タッチスクリーン、または別の表示技術を用いて実施された画面を備えることができる。しかしながら、任意の適切な表示装置を使用することができることは明らかである。該表示装置を、システム２００の構成に応じて、コンピューティング装置２０５の内部または外部に配置することができる。
【００２２】
コンピューティング装置２０５は、アプリケーションエンジン２２０及びメトリックエンジン２２５を備えることができる。アプリケーションエンジン２２０及びメトリックエンジン２２５は、それぞれ、たとえば、プロセッサまたは論理回路またはそれらの組み合わせによって実行可能な機械可読媒体に格納されている命令を含むことができる。
【００２３】
表示装置２１０は、複数のイベントリスナー２７０を含むアプリケーション２６０を表示することができる。いくつかの実施例では、アクション２８０を、表示装置２１０における、ユーザーとアプリケーション２６０のインターフェースとの間の相互作用に関連付けられたアプリケーション２６０によって受け取ることができる。そのようなインターフェースは、図１に関して上記した要素などの複数の要素を含むことができる。
【００２４】
アプリケーションエンジン２２０は、アプリケーション２１０における重要なイベントに関連付けられたイベントリスナー２７０のうちの少なくとも１つを識別し、アプリケーション２１０の要素に関連付けられたアクション２８０を受け取り、該アクションに関連付けられた複数のイベントリスナー２７０を含む複合イベントシーケンスを生成し、及び、該複合イベントシーケンスが、該少なくとも１つの重要なイベントに関連付けられているか否かを判定することができる。
【００２５】
いくつかの実施例では、ウェブベースのアプリケーションは、表示装置２１０を介して、いくつかの選択可能な要素をユーザーに提示することができる。ユーザーは、マウス、スタイラス、指、キーボード、及び／又は他の入力手段を用いてそれらの要素と相互作用（たとえば情報のやり取りなどの対話）をすることができる。たとえば、ユーザーは、それらの要素のうちの１つをスワイプして、「touchstart」イベント、「touchmove」イベント、及び「touchend」イベントを起動することができる。この場合、それらのイベントの各々を、イベントリスナー２７０に関連付けることができる。アクションエンジン２２０は、起動された任意のイベントが、重要なイベントを含んでいるか否かを判定することができ、この判定は、非デフォルトのアクションハンドラが、該イベント用のイベントリスナーに追加されたか否かを判定することを含むことができる。
【００２６】
メトリックエンジン２２５は、該複合イベントシーケンスが該少なくとも１つの重要なイベントに関連付けられているとアプリケーションエンジン２２０が判定したことに応答して、該受け取ったアクションに関連付けられた性能メトリックを測定して、該性能メトリックを含む該複合イベントシーケンスにしたがってログレコードを生成することができる。たとえば、メトリックエンジン２２５は、該アクションを完了するのに要した時間を測定して、その結果を表示装置２１０に出力することができる。
【００２７】
いくつかの実施例では、アプリケーションエンジン２２０は、最初のイベントに基づいて該複合イベントシーケンスを生成することができる。たとえば、「touchstart」イベント及び／又は「mousedown」イベントをシーケンス中の最初のイベントとして設定（ないし構成）することができる。他のイベント（該イベントは、異なるアプリケーション及び実施例では異なる場合がある）も、最初のイベントを含むことができる。最初のイベントのそれぞれのインスタンスは、新たな複合イベントシーケンスを開始することをアプリケーションエンジン２２０に（信号で）知らせることができる。
【００２８】
いくつかの実施例では、アプリケーションエンジン２２０は、終了イベントに基づいて、該複合イベントシーケンスを生成することができる。たとえば、「touchend」イベント及び／又は「mouseup」イベントを、該シーケンス中の終了イベントとして設定（ないし構成）することができる。そのようなイベントは、ユーザーアクションに対する典型的なイベントシーケンスに関連付けられた最後のイベントを含むことができ、そのため、該複合イベントシーケンスのクローズを知らせるために使用されることができる。
【００２９】
いくつかの実施例では、アプリケーションエンジン２２０は、アイドルタイマーの満了に基づいて該複合イベントシーケンスを生成することができる。たとえば、新たなイベントが起動されることなくある時間（たとえば５００ｍｓ）が経過した場合には、アプリケーションエンジン２２０は、該イベントシーケンスを閉じ、これによって、その後に起動されたイベントを新たな複合イベントシーケンスに関連付けることができるようにすることができる。
【００３０】
いくつかの実施例では、アプリケーションエンジン２２０は、ダミーのアクションハンドラを、少なくとも１つの重要でないイベントに関連付けられたイベントリスナーに加えることができる。たとえば、いくつかのイベントリスナー２７０を、デフォルトのアクションハンドラに関連付けることができ、及び／又は、どのアクションハンドラにも関連付けられないようにすることができる。そのようなイベントリスナーは、重要でないイベントリスナーを含むことができ、一方、アプリケーション２６０の開発者によって機能ロジックでアクションハンドラが無効にされているイベントリスナーを、重要なイベントリスナーに関連付けることができる。重要なイベントリスナーは、該開発者が性能メトリックを測定することに興味を持っているそれらのイベントリスナーを含むことができる。
【００３１】
該複合イベントシーケンスは、重要なイベントリスナー、及び少なくとも１つの重要でないイベントリスナーを含むことができる。重要でないイベントリスナーの各々に追加されたダミーハンドラは、アクション２８０などのユーザーアクションが受け取られるたびに、それらのイベントリスナーが、アプリケーション２６０によって呼び出されるようにすることができる。ダミーのアクションハンドラがない場合には、それらのイベントリスナーをスキップすることができ、これによって、その都度、異なるイベントシーケンスが生じうる。
【００３２】
図２には、１つのコンピューティング装置２０５及び１つの表示装置２１０が示されているが、システム２００のいくつかの実施例は、２以上のコンピューティング装置２０５及び１つの表示装置２１０を備えることができる。それらのコンピューティング装置のうちの少なくとも１つを、たとえば、少なくとも１つサーバーバンク、コンピューターバンク、データセンター、及び／又は他の構成中に配置して利用することができる。たとえば、それらのコンピューティング装置は全体として、１つのクラウドコンピューティングリソース、グリッドコンピューティングリソース、及び／又はその他の任意の分散コンピューティング構成を備えることができる。そのようなコンピューティング装置を、１つの設備内に配置することができ、及び／又は、多くの異なる地理的な位置に分散させることができる。
【００３３】
図３は、開示されている実施例と整合する例示的なアプリケーションイベント追跡装置３００のブロック図である。アプリケーションイベント追跡装置３００は、プロセッサ３１０、及び非一時的な機械可読記憶媒体３２０を備えることができる。アプリケーションイベント追跡装置３００は、デスクトップコンピューターやラップトップコンピューターや携帯型コンピューティング装置や携帯電話機などのコンピューティング装置を含むことができる。プロセッサ３１０を、機械可読記憶媒体３２０に格納されている命令の取り出し及び実行に適した、中央処理装置（ＣＰＵ）、半導体ベースのマイクロプロセッサ、またはその他の任意のハードウェア装置とすることができる。具体的には、プロセッサ３１０は、複数のイベントリスナー識別命令３３０、ダミーアクションハンドラ追加命令３３２、アクション受け取り（アクション受信）命令３３４、複合イベントシーケンス生成命令３３６、性能メトリック測定命令３３８、及びログ（記録）生成命令３４０をフェッチし、デコードし、及び実行して、詳細に後述する機能を実行することができる。
【００３４】
イベントリスナー識別命令３３０、ダミーアクションハンドラ追加命令３３２、アクション受け取り命令３３４、複合イベントシーケンス生成命令３３６、性能メトリック測定命令３３８、及びログ生成命令３４０などの実行可能命令を、機械可読記憶媒体３２０の任意の部分及び／又は構成要素に格納することができる。機械可読記憶媒体３２０は、揮発性メモリ及び／もしくは不揮発性メモリとデータ記憶要素の両方を含むことができる。揮発性要素は、電力が供給されていないときにデータ値を保持しない記憶要素である。不揮発性要素は、電力が供給されていないときでもデータを保持する記憶要素である。
【００３５】
機械可読記憶媒体３２０は、たとえば、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、ハードディスクドライブ、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、メモリカードリーダでアクセスされるメモリカード、関連するフロッピーディスクドライブでアクセスされるフロッピーディスク、光ディスクドライブでアクセスされる光ディスク、適切なテープドライブでアクセスされる磁気テープ、及び／又は、その他のメモリ（記憶）要素、及び／又は、これらのメモリ要素のうちの任意の２つ及び／又は３つ以上の組み合わせを含むことができる。さらに、ＲＡＭは、たとえば、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、及び／又は、磁気ランダムアクセスメモリ（ＭＲＡＭ）、及びその他のそのようなデバイスを含むことができる。ＲＯＭは、たとえば、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、及び／又は、その他の同様のメモリデバイスを含むことができる。
【００３６】
機械可読記憶媒体３２０を、ユーザーが、アプリケーション１００などのアプリケーションと相互作用することができるようにするユーザーインターフェースを表示するための実行可能命令で符号化することができる（該実行可能命令を符号化して機械可読記憶媒体３２０に格納することができる）。実行可能命令は、たとえば、アプリケーションイベント追跡装置３００のオペレーティングシステム（ＯＳ）の少なくとも一部を構成することができ、または、ユーザーインターフェースを提示するために該ＯＳ上で動作する個別のアプリケーションを構成することができる。別の例では、それらの実行可能命令をウェブブラウザに含めて、該ウェブブラウザが、本明細書で詳細に説明されているインターフェースを実施するようにすることができる。いくつかの実施形態では、それらの実行可能命令を、ウェブブラウザが解釈できるJavaScript（ジャバスクリプト）などのウェブベースのスクリプトで実施することができる。
【００３７】
より具体的には、機械可読記憶媒体３２０を、複数のイベントリスナーのうちの第１のイベントリスナーをアプリケーションに関連付けられた重要なイベントリスナーとして識別するためのイベントリスナー識別命令３３０で符号化することができる（イベントリスナー識別命令３３０を符号化して機械可読記憶媒体３２０に格納することができる）。たとえば、アプリケーション１００は、イベントリスナーが利用可能である複数の要素であって、そのうちの一部だけについてアクションハンドラが登録されているところの複数の要素を含むことができる。「touchstart」、「touchmove」、及び「touchend」などのイベントリスナーは、アプリケーション１００の所与の要素に対して利用可能でありうるが、「touchstart」だけが、非デフォルトの（すなわち、アプリケーション開発者によって定義された）アクションハンドラに登録されている場合がある。該アクションハンドラは、アプリケーションのデフォルトの機能（または関数）を無効にすることができるので、要素に対する「touchstart」イベント用のイベントリスナーを、重要なイベントリスナーとして識別することができる。
【００３８】
機械可読記憶媒体３２０をさらに、該複数のイベントリスナーのうちの第２のイベントリスナーにダミーのアクションハンドラを加えるためのダミーアクションハンドラ追加命令３３２で符号化することができ（ダミーアクションハンドラ追加命令３３２を符号化して機械可読記憶媒体３２０に格納することができ）、この場合、該第２のイベントリスナーは、重要でないイベントリスナーを含んでいる。重要でないイベントリスナーは、アクションハンドラを１つも含んでいない、及び／又は、デフォルトのアクションハンドラを含んでいる、アプリケーション１００の要素に関連付けられたそれらのイベントリスナーを含むことができる。たとえば、機能を実行することなく単に終了し、及び／又は、ちょっとした（重要でない）処理を実行してその結果を廃棄し、及び／又は別のイベントリスナーを呼び出すダミーのアクションハンドラをイベントリスナーに加えることができる。それらのイベントリスナーに該ダミーのアクションハンドラを追加することによって、それらのイベントリスナーを該アプリケーションに登録させることができる。したがって、それらのイベントリスナーに関連付けられたイベントがユーザーアクションによって起動されたときに、それらのイベントリスナーを呼び出すことができる。
【００３９】
機械可読記憶媒体３２０をさらに、該第１のイベントリスナーに関連付けられたアクションを受け取るためのアクション受け取り命令３３４で符号化することができる（アクション受け取り命令３３４を符号化して機械可読記憶媒体３２０に格納することができる）。ユーザーがアプリケーション１００のインターフェースと相互作用したことに応答して、アプリケーション１００によってアクション１４０を受け取ることができる。たとえば、ユーザーは、要素１２０（Ａ）〜（Ｃ）のうちの１つ対してスワイプアクションを実行することができる。アプリケーション１００は、ユーザーのこのスワイプアクションを、「touchstart」イベント、「touchmove」イベント、及び「touchend」イベントとして解釈して、それらのイベントを処理するためのアクションハンドラを有するものとして登録されている、それらのイベントに関連付けられたイベントリスナーを呼び出すことができる。
【００４０】
機械可読記憶媒体３２０をさらに、該第１のイベントリスナー及び該第２のイベントリスナーを含む複合イベントシーケンスを生成するための複合イベントシーケンス生成命令３３６で符号化することができる（複合イベントシーケンス生成命令３３６を符号化して機械可読記憶媒体３２０に格納することができる）。たとえば、該複合イベントシーケンスは、アクション１４０に応答して起動されたイベントによって呼び出されるイベントリスナーの各々の順序付きリスト（番号付きリスト）を含むデータ構造を含むことができる。上記の例では、ユーザーのスワイプアクションに関連付けられた複合イベントシーケンスは、「touchstart」イベント、「touchmove」イベント、及び「touchend」イベントを含むことができる。
【００４１】
機械可読記憶媒体３２０をさらに、該アクションに関連付けられた性能メトリックを測定するための性能メトリック測定命令３３８で符号化することができる（性能メトリック測定命令３３８を符号化して機械可読記憶媒体３２０に格納することができる）。たとえば、該アクションに関連付けられた測定された性能メトリックは、該アクションを完了するのに要した時間を含むことができる。
【００４２】
機械可読記憶媒体３２０をさらに、該性能メトリックを含むログレコードを生成するためのログ生成命令３４０で符号化することができる（ログ生成命令３４０を符号化して機械可読記憶媒体３２０に格納することができる）。いくつかの実施例では、該ログレコードを該複合イベントシーケンスに関連付けることができる。たとえば、ログレコードを、他の測定されたメトリックと集約（ないし統合）するために、ログデータベースに渡すことができる。いくつかの実施例では、ログ生成命令３４０は、該アプリケーションに関連付けられた性能報告を生成することができ、この場合、該性能報告には、（複数のログレコードの）各々が該複合イベントシーケンスに関連付けられている該複数のログレコードが集約（ないし統合）されている。
【００４３】
いくつかの実施例では、装置３００は、該複数のイベントリスナーのうちの該第２のイベントリスナーに関連付けられた第２のアクションを受け取り、該第１のイベントリスナー及び該第２のイベントリスナーを含む複合イベントシーケンスを生成し、該第２のアクションに関連付けられた第２の性能メトリックを測定し、該第２の性能メトリックを含む該複合イベントシーケンスに関連付けられた第２のログレコードを生成し、及び、該第２のログレコードを、該複合イベントシーケンスに関連付けられた該ログレコードに関連付けることができる。ダミーのアクションハンドラが、重要でないイベントリスナーの各々に追加されているので、それらの関連付けられたイベントの各々は、起動されて、該複合イベントシーケンスに追加されることになる。これは、同じ要素に対する異なるアクションを、同じ複合イベントシーケンスにしたがって集約（ないし統合）することを可能にする。
【００４４】
図４は、開示されている実施例と整合する、アプリケーションイベントを追跡するための方法４００の１実施形態のフローチャートである。方法４００の実行をシステム２００の構成要素に関連して説明するが、方法４００を実行するための他の適切な構成要素を使用することができる。方法４００を、装置３００の機械可読記憶媒体３２０などの機械可読記憶媒体に格納されている実行可能命令の形態で実装ないし実施することができる。
【００４５】
方法４００は、ブロック４１０から開始してブロック４２０に進み、そこで、システム２００は、アプリケーションに関連付けられた複数のイベントリスナーの各々に、ダミーのアクションハンドラを加える（追加する）ことができる。該複数のイベントリスナーの各々は、非デフォルトのアクションハンドラを含むことができ、及び／又は、該複数のイベントリスナーの各々を、該アプリケーションの動作環境（たとえばウェブブラウザ）のデフォルトの挙動に関連付けることができる。たとえば、機能を実行することなく単に終了し、及び／又は、ちょっとした（重要でない）処理を実行してその結果を廃棄し、及び／又は別のイベントリスナーを呼び出すダミーのアクションハンドラをイベントリスナーに加えることができる。それらのイベントリスナーに該ダミーのアクションハンドラを追加することによって、それらのイベントリスナーを該アプリケーションに登録させることができる。したがって、それらのイベントリスナーに関連付けられたイベントがユーザーアクションによって起動されたときに、それらのイベントリスナーを呼び出すことができる。
【００４６】
次に、方法４００はブロック４３０に進み、そこで、システム２００は、該アプリケーションに関連付けられた第１のユーザーアクションを受け取ったことに応答して、少なくとも１つの第１のイベントリスナーを含む複合イベントシーケンスを生成することができる。たとえば、ユーザーがアプリケーション１００のインターフェースと相互作用したことに応答して、アプリケーション１００によってアクション１４０を受け取ることができる。たとえば、ユーザーは、要素１２０（Ａ）〜（Ｃ）のうちの１つ対してスワイプアクションを実行することができる。アプリケーション１００は、ユーザーのこのスワイプアクションを、「touchstart」イベント、「touchmove」イベント、及び「touchend」イベントとして解釈して、それらのイベントを処理するためのアクションハンドラを有するものとして登録されている、それらのイベントに関連付けられたイベントリスナーを呼び出すことができる。それらのイベントのうちの１つは、いくつかの異なるユーザーアクションの開始に関連付けることができる所定の開始イベント（たとえば、「touchstart」及び／又は「mousedown」）を含むことができる。該複合イベントシーケンスは、アクション１４０に応答して起動されたイベントによって呼び出されるイベントリスナーの各々の順序付きリストを含むデータ構造を含むことができる。
【００４７】
次に、方法４００はブロック４３５に進み、そこで、システム２００は、該複数のイベントリスナーの少なくとも１つの第２のイベントリスナーのダミーのアクションハンドラに基づいて、該複合イベントシーケンスに、該少なくとも１つの第２のイベントリスナーを加えることができる。たとえば、ブロック４３０において生成された複合イベントシーケンスは、所定の開始イベント「touchstart」を含むことができ、この場合、ブロック４２０において追加されたダミーのアクションハンドラがアプリケーション１００によって呼び出されたときに、次のイベントリスナー「touchmove」を該複合イベントシーケンスに加えることができる。
【００４８】
次に、方法４００はブロック４４０に進み、そこで、システム２００は、該少なくとも１つの第１のイベントリスナー及び該少なくとも１つの第２のイベントリスナーに対するそれぞれの性能メトリックを測定することができる。いくつかの実施形態では、該それぞれの性能メトリックは、該複合イベントシーケンス中のイベントリスナーの各々（たとえば該少なくとも１つの第１のイベントリスナー及び該少なくとも１つの第２のイベントリスナー）に関連付けられた（１以上の）アクションハンドラを完了するための（すなわち完了するのに要した）時間を含むことができる。別の例では、該（１以上の）イベントリスナーに関連付けられた測定された性能メトリックは、該（１以上の）アクションハンドラを実行することによって消費されたリソース（たとえば処理時間やデータ記憶装置など）の量を含むことができる。
【００４９】
次に、方法４００はブロック４５０に進み、そこで、システム２００は、該複合イベントシーケンスを閉じる（終了する）ことができる。たとえば、システム２００は、アイドルタイマーの満了（該満了までに新たなイベントは起動されない）に応答して、該複合イベントシーケンスを閉じることができる。いくつかの実施例では、システム２００は、該少なくとも１つの所定の開始イベントを起動する第２のユーザーアクションを受け取ったことに応答して、該複合イベントシーケンスを閉じることができる。たとえば、別の「touchstart」イベントが起動されると、システム２００は、該複合イベントシーケンスを閉じて、新たな複合イベントシーケンスを生成することができる。
【００５０】
次に、方法４００はブロック４６０に進み、そこで、システム２００は、該複合イベントシーケンスが重要なイベントリスナーを含んでいるか否かを判定することができる。たとえば、システム２００は、該イベントリスナーが、非デフォルトかつ非ダミーの（ダミーでない）アクションハンドラ（すなわち、アプリケーション開発者によって定義されたアクションハンドラ）を含んでいるか否かを判定することによって、アプリケーション１００の重要なイベントリスナーを識別することができる。
【００５１】
方法４００は、該複合イベントシーケンスが該重要なイベントリスナーを含んでいると判定したことに応答して、ブロック４６５に進み、そこで、システム２００は、該ユーザーアクションに対する最終的な性能メトリックを計算することができる。たとえば、システム２００は、該複合イベントシーケンス中のイベントリスナーの各々に対するそれぞれの性能メトリックにしたがって、該ユーザーアクションを完了するための（すなわち完了するのに要した）全時間（総時間）を計算することができる。
【００５２】
次に、方法４００はブロック４７０に進み、そこで、システム２００は、該最終的な性能メトリックを含むログレコードを生成することができ、この場合、該ログレコードは、第１の複合イベントシーケンスに関連付けられている。たとえば、該アクションの識別子を含むログレコード、及び／又は該複合イベントシーケンス、及び／又は該アクションの時刻、及び／又は該測定された性能メトリック、及び／又は追加のデータを、他の測定されたメトリックと集約（ないし統合）するために、ログデータベースに渡す（送る）ことができる。ダミーのアクションハンドラが、重要でないイベントリスナーの各々に追加されているので、それらの関連付けられたイベントの各々を、起動して、該複合イベントシーケンスに追加することができる。これは、同じ要素に対する異なるアクションを、同じ複合イベントシーケンスにしたがって集約（ないし統合）することを可能にする。
【００５３】
ステージ４６０において、システム２００が、該複合イベントシーケンスは重要なイベントリスナーを含んでいないと判定した場合には、方法４００は、ステージ４７５に進み、そこで、システム２００は、該それぞれの性能メトリックを廃棄することができる。たとえば、ユーザーアクションが重要なイベントリスナーを起動しない複合イベントシーケンスを、ログレコードを生成することなくそれらのそれぞれの性能メトリックと共に廃棄することができる。その後、方法４００は、ブロック４８０で終了することができる。
【００５４】
開示されている例は、革新的なバッファ生成（buffer generation）のためのシステム、装置、コンピューター可読記憶媒体、及び方法を含むことができる。説明のために、図１〜図３に示されている構成要素を参照していくつかの例が説明されている。図示されている構成要素の機能は、重複していてもよいが、より少ない数のもしくはより多くの数の要素及び構成要素に存在することができる。さらに、説明されている要素の機能の全てまたは一部は、いくつかの地理的に分散した位置に同時に存在するかまたは分散して存在することができる。さらに、開示されている例は、種々の環境において実施できるものであり、説明されている例には限定されない。
【００５５】
さらに、本明細書及び特許請求の範囲で使用されている「１つの」、「ある」、及び「該」ないし「前記」という単数形は、文脈上別段の意味であることが示されていない限り、複数形も含むことが意図されている。さらに、種々の要素を記述するために「第１」や「第２」などの用語が本明細書において使用されている場合があるが、それらの要素はかかる用語によって限定されるものではない。それらの用語は、ある１つの要素を別の要素と区別するために使用されているにすぎない。
【００５６】
さらに、図１〜図４に関連して説明されている動作の順番は、例示であって、限定することは意図されていない。開示されている例の範囲から逸脱することなく、追加の処理またはより少ない処理または処理の組み合わせを使用することができ、またはそれらの処理を変更することができる。したがって、本開示は、単に、可能性のある実施例を説明したものであり、説明されている例に対して多くの変形及び修正を行うことができる。そのような全ての修正及び変形は、本開示の範囲内に含まれること及び特許請求の範囲によって保護されることが意図されている。
【図１】
2018508865.tif 000003
【図２】
2018508865.tif 000004
【図３】
2018508865.tif 000005
【図４】
2018508865.tif 000006
【国際調査報告】
2018508865.tif 000007
2018508865.tif 000008