(57)【特許請求の範囲】
【請求項１】
要素識別子を生成するためのシステムであって、
アプリケーションの構造化文書の要素に関連付けられたアクションを受け取り、及び、前記受け取ったアクションに関連付けられたメトリックを測定するためのアクションエンジンと、
前記要素がターゲット要素を含んでいるか否かを判定し、及び、前記要素が該ターゲット要素を含んでいると判定したことに応答して、固有の識別子を生成するために前記要素の属性を変更し、該要素の該変更された属性にしたがって該固有の識別子を生成するための要素エンジンと、
前記固有の識別子と前記受け取ったアクションに関連付けられた前記メトリックとを含むログレコードを生成するためのログエンジン
を備えるシステム。
【請求項２】
前記要素エンジンは、前記要素の名前を生成し、前記ログレコードは、前記生成された名前をさらに含むことからなる、請求項１のシステム。
【請求項３】
前記要素エンジンは、前記属性から特定の文字種に該当する文字を除去することによって、前記要素の前記変更された属性にしたがって前記固有の識別子を生成することからなる、請求項１または２のシステム。
【請求項４】
前記要素エンジンは、前記要素の第２の属性を除去することによって、前記要素の前記変更された属性にしたがって前記固有の識別子を生成することからなる、請求項１〜３のいずれかのシステム。
【請求項５】
前記第２の属性は、スタイル属性、alt属性、リンク属性、及びソース属性のうちの少なくとも１つを含む、請求項４のシステム。
【請求項６】
前記要素エンジンは、前記要素にしたがってハッシュコードを生成することによって、前記要素の前記変更された属性にしたがって前記固有の識別子を生成することからなる、請求項１〜５のいずれかのシステム。
【請求項７】
前記要素エンジンは、前記要素が前記ターゲット要素を含んでいないと判定したことに応答して、第２の要素を前記ターゲット要素として識別する、請求項１〜６のいずれかのシステム。
【請求項８】
要素識別子を生成するための命令を含む非一時的な機械可読記憶媒体であって、
前記命令は、プロセッサによって実行されると、該プロセッサに、
構造化文書に関連付けられたアクションを検出することと、
前記アクションに関連付けられた前記構造化文書の要素を識別することと、
前記識別された要素のコピーを生成して、該コピーを変更することと、
前記識別された要素の前記変更されたコピーに関連付けられた固有の識別子を生成することと、
前記アクションに関連付けられたメトリックを測定することと、
前記固有の識別子と前記アクションに関連付けられた前記測定されたメトリックとを含むログレコードを生成すること
を実行させることからなる、機械可読記憶媒体。
【請求項９】
前記アクションに関連付けられた前記測定されたメトリックは、該アクションに応答して実行される処理を完了するのに要した時間を含む、請求項８の機械可読記憶媒体。
【請求項１０】
前記アクションに関連付けられた前記構造化文書の要素を識別するための前記命令が、
前記アクションに関連付けられた選択された要素を識別するための命令と、
前記選択された要素がターゲット要素を含んでいるか否かを判定するための命令
を含むことからなる、請求項８または９の機械可読記憶媒体。
【請求項１１】
前記選択された要素がターゲット要素を含んでいるか否かを判定するための前記命令が、
前記選択された要素がスタイル要素を含んでいるか否かを判定するための命令と、
前記選択された要素が複数の子要素を含んでいるか否かを判定するための命令と、
前記選択された要素によって占有された表示スペースの大きさがある閾値を超えているか否かを判定するための命令
を含むことからなる、請求項１０の機械可読記憶媒体。
【請求項１２】
前記識別された要素の前記変更されたコピーに関連付けられた固有の識別子を生成するための前記命令が、
前記識別された要素に関連付けられたデータ構造のコピーを生成するための命令と、
変更ルールを前記データ構造の前記コピーに適用するための命令と、
前記識別された要素の名前を生成するための命令と、
前記データ構造の前記コピーをハッシュコードに変換するための命令
を含むことからなる、請求項８〜１１のいずれかの機械可読記憶媒体。
【請求項１３】
前記変更ルールが、前記データ構造の前記コピーから少なくとも１つの属性を除去することを含む、請求項１２の機械可読記憶媒体。
【請求項１４】
要素識別子を生成するためのコンピューターによって実施される方法であって、
アクションエンジンによって、アプリケーションの構造化文書の複数の要素に関連付けられたアクションハンドラを無効にすることと、
前記アクションエンジンによって、前記アクションハンドラを介して前記複数の要素のうちの１つの要素に関連付けられたアクションを受け取ることと、
要素エンジンによって、前記受け取ったアクションに対するターゲット要素を識別することと、
前記要素エンジンによって、前記ターゲット要素のデータ構造のコピーを生成することと、
前記要素エンジンによって、変更ルールにしたがって、前記コピーされたデータ構造の複数の属性を変更することと、
前記要素エンジンによって、前記ターゲット要素の名前を生成することと、
前記要素エンジンによって、前記コピーされたデータ構造の前記変更された複数の属性のハッシュコードにしたがって、前記ターゲット要素の固有の識別子を生成することと、
前記アクションエンジンによって、前記ターゲット要素に対する前記受け取ったアクションに応答して実行される処理を完了するのに必要な時間を測定することと、
ログエンジンによって、前記生成された名前、前記固有の識別子、及び前記ターゲット要素に対する前記受け取ったアクションに応答して実行される処理を完了するのに必要な前記測定された時間を含むログレコードを生成すること
を含む方法。
【請求項１５】
前記変更ルールは、
前記複数の属性からある属性を除去することと、
前記複数の属性のうちのある属性から特定の文字種に該当する文字を除去することと、
前記複数の属性のうちのある属性からフィールド値文字列を除去すること
とのうちの少なくとも１つを含むことからなる、請求項１４の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
いくつかのウェブベースのアプリケーションまたはモバイルアプリケーションは、ユーザーと相互作用するための複数の手段を提供する。たとえば、ユーザーは、検索ボックス、リスト項目、リンク、画像などの種々の要素をウェブページ上で選択することができる。いくつかの場合には、アプリケーションの作成者は、（所与のアクションを完了するのに要する時間を決定することなどによって）ユーザーのアクションに応答してアプリケーションの性能を測定することを望む。該アプリケーション内の複数の要素は、検索結果のリスト中の各項目またはメニュー内の各項目などの、機能的には類似するが視覚的には異なる要素を表している場合がある。そのような類似の要素に関するアクション性能は、性能分析を簡単なものにするために、個々にではなくグループとして追跡されるのが望ましい場合がある。
【先行技術文献】
【特許文献】
【０００２】
【特許文献１】（補充可能性あり）
【図面の簡単な説明】
【０００３】
添付の図面において、同じ参照番号は、同様の構成要素もしくはブロックを参照している。下記の詳細な説明は添付の図面を参照している。
【図１】開示されている実施例と整合する要素識別子生成システムの１実施例のブロック図である。
【図２】開示されている実施例と整合する例示的な要素識別子生成装置のブロック図である。
【図３】開示されている実施例と整合する例示的なコンピューティング装置のブロック図である。
【図４】開示されている実施例と整合するアプリケーションの１実施例である。
【図５】開示されている実施例と整合するウェブアプリケーション用の例示的な文書オブジェクトモデル構造である。
【図６】開示されている実施例と整合するメトリックを測定して記録するための方法の１実施例のフローチャートである。
【図７】開示されている実施例と整合する要素識別子を生成するための方法の１実施例のフローチャートである。
【発明を実施するための形態】
【０００４】
上記のように、ウェブアプリケーションの典型的なインターフェースは、画像、リンク、メニュー、テキスト記述（説明）などの多くの要素を含んでいる。これらの要素を、ページのロード、及び／又はスクリプト実行、及び／又はユーザーアクションなどのイベントに応答してアプリケーションによって実行することができるコマンドに関連付けることができる。したがって、詳細に後述するように、種々の例示的な実施例は、それらの種々の要素の識別子（識別情報）を生成すること、それらの要素に対して実行されるコマンドに関連付けられたメトリック（性能等の評価の基準や尺度など。メトリクスともいう）を評価すること、及び、性能の評価及び分析用のメトリックを記録することに関連する。
【０００５】
以下の説明では、「機械可読記憶媒体」という用語が使用されている。本明細書で使用されている「機械可読記憶媒体」という用語は、実行可能命令またはその他のデータを格納する（たとえば、ハードディスクドライブ、ランダムアクセスメモリ、フラッシュメモリなどの）任意の電子装置、磁気装置、光学装置、またはその他の物理的な記憶装置を意味する。
【０００６】
図１は、開示されている実施例と整合する要素識別子生成用のシステム１００の１実施例のブロック図である。システム１００は、たとえばアプリケーションサーバー１１０及びクライアント１４０を含むことができる。アプリケーションサーバー１１０及びクライアント１４０は、直接接続及び／又はネットワークを介して互いに通信することができる。ネットワークを、離れた構成要素間の通信を容易にする任意のタイプのネットワークとすることができる。たとえば、該ネットワークは、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、仮想プライベートネットワーク、専用イントラネット、インターネット、セルラーネットワーク、ラジオネットワーク、及び／又は無線ネットワークを含むことができる。
【０００７】
アプリケーションサーバー１１０及びクライアント１４０の各々は、本明細書に記載されている実施例を提供することに整合するコンピューティング能力を提供することができる、汎用コンピューター及び／もしくは専用コンピューター、サーバー、メインフレーム、デスクトップ、ラップトップ、タブレット、スマートフォン、ゲーム機、及び／又はその他の任意のシステムを含むことができる。
【０００８】
図１には、１つのアプリケーションサーバー１１０及び１つのクライアント１４０が示されているが、システム１００のいくつかの実施例は、２以上のアプリケーションサーバー１１０及び／又はクライアント１４０を含むことができる。それらのサーバーのうちの少なくとも１つのサーバーを、たとえば、少なくとも１つサーバーバンク、コンピューターバンク、データセンター、及び／又は他の構成中に配置して利用することができる。たとえば、それらのサーバーコンピューターは全体として、１つのクラウドコンピューティングリソース、グリッドコンピューティングリソース、及び／又はその他の任意の分散コンピューティング構成を備えることができる。そのようなサーバーコンピューターを、１つの設備内に配置することができ、及び／又は、多くの異なる地理的な位置に分散させることができる。
【０００９】
クライアント１４０は、陰極線管（ＣＲＴ）モニター、液晶ディスプレイ（ＬＣＤ）画面、または、別の表示技術を用いて実施された画面などの表示装置（ディスプレイ）を備えることができる。しかしながら、任意の適切な表示装置を使用することができる。該表示装置を、システム１００の構成に応じて、クライアント１４０の内部または外部に配置することができる。
【００１０】
いくつかの実施例では、システム１００は、アプリケーションサーバー１１０で実行される１以上のアプリケーション１１５のユーザー体験を監視し、及び、クライアント１４０を介してユーザーが取ったアクションに対する性能及び安定性の測定値を提供することができる。
【００１１】
（１以上の）アプリケーション１１５におけるユーザーアクションを、ＡＳＰ、Ｊａｖａ（ジャバ）、Ｏｂｊｅｃｔｉｖｅ-Ｃ、及びその他の種々のプログラミング言語などのコード及び／又はスクリプトを用いて処理することができるイベントに変換することができる。ユーザーが該ユーザークライアントにおいて（タッチやスワイプなどの）アクションを開始するたびに、（１以上の）アプリケーション１１５が該アクションを処理することができるように、（たとえば、touchstart（タッチスタート）、クリック、touchend（タッチエンド）などの）一連のイベントを起動することができる。
【００１２】
システム１００は、ユーザーアクションを識別（特定）し、分類し、及びメトリックを測定することができる。ユーザーアクションを分類することは、該アクションの識別子（ＩＤ）を生成することを含むことができる。あるユーザーアクションを、該ユーザーによって使用された（たとえば、タップやスワイプなどの）ジェスチャー、及び、該ジェスチャーによって影響を受けた（１以上の）アプリケーション１１５の（たとえば、ボタンやリスト項目などの）要素によって分類することができる。ユーザーアクションに対する性能メトリック（たとえば、「該アクションを完了するのに要した平均時間」）を測定し及び／又は表示するために、該ユーザーアクションを分類することができる。
【００１３】
システム１００は、ユーザーアクションを分類することを試みるときに、受け取ったユーザーアクション用のアクションハンドラに関連付けられた要素の代わりにそのジェスチャーの実際のターゲット要素を分類することができる。（１以上の）アプリケーション１１５の各要素を、touchstart、クリック、touchendなどのユーザーアクションによって起動された種々のイベント用の複数のイベントハンドラに関連付けることができる。いくつかのイベントハンドラは、（１以上の）アプリケーション１１５用の機能を実行するためにイベントが起動されたときに、対応するイベントリスナー（event listener）が呼び出すことができるアクションハンドラを含むことができる。
【００１４】
たとえば、ユーザーが、（１以上の）アプリケーション１１５の異なるオプションのメニュー（中のオプション）をタップすると、システム１００は、それぞれのオプションを異なるユーザーアクションとして分類することができる。いくつかの実施例では、システム１００は、（１以上の）アプリケーション１１５によって表示されたカタログ項目のリストなどの複数の要素を、１つの包括的な要素として分類することができる。システム１００は、要素の文書（ドキュメント）オブジェクトモデル（ＤＯＭ）構造を分析及び処理して、異なる機能を有する要素に対しては固有のＩＤ及び名前を生成し、同じ機能を有する要素に対しては（ユーザーには、これらの要素が（互いに）異なる要素として見えるかもしれない場合であっても）同じＩＤ及び名前を生成することができる。
【００１５】
図２は、開示されている実施例と整合する、プロセッサ２１０及び非一時的な機械可読記憶媒体２２０を備える例示的な要素識別子生成装置２００のブロック図である。要素識別子生成装置２００は、デスクトップコンピューターやラップトップコンピューターや携帯型コンピューティング装置や携帯電話機などのコンピューティング装置を含むことができる。プロセッサ２１０を、機械可読記憶媒体２２０に格納されている命令の取り出し及び実行に適した、中央処理装置（ＣＰＵ）、半導体ベースのマイクロプロセッサ、またはその他の任意のハードウェア装置とすることができる。具体的には、プロセッサ２１０は、複数のアクション検出命令２３０、要素識別命令２３２、変更されたコピー（複製物）生成命令２３４、固有識別子生成命令２３６、メトリック測定命令２３８、及びログ（記録）生成命令２４０をフェッチし、デコードし、及び実行して、詳細に後述する機能を実行することができる。
【００１６】
アクション検出命令２３０、要素識別命令２３２、変更されたコピー生成命令２３４、固有識別子生成命令２３６、メトリック測定命令２３８、及びログ生成命令２４０などの実行可能命令を、機械可読記憶媒体２２０の任意の部分及び／又は構成要素に格納することができる。機械可読記憶媒体２２０は、揮発性メモリ及び／もしくは不揮発性メモリとデータ記憶要素の両方を含むことができる。揮発性要素は、電力が供給されていないときにデータ値を保持しない記憶要素である。不揮発性要素は、電力が供給されていないときでもデータを保持する記憶要素である。
【００１７】
機械可読記憶媒体２２０は、たとえば、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、ハードディスクドライブ、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、メモリカードリーダでアクセスされるメモリカード、関連するフロッピーディスクドライブでアクセスされるフロッピーディスク、光ディスクドライブでアクセスされる光ディスク、適切なテープドライブでアクセスされる磁気テープ、及び／又は、その他のメモリ（記憶）要素、及び／又は、これらのメモリ要素のうちの任意の２つ及び／又は３つ以上の組み合わせを含むことができる。さらに、ＲＡＭは、たとえば、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、及び／又は、磁気ランダムアクセスメモリ（ＭＲＡＭ）、及びその他のそのようなデバイスを含むことができる。ＲＯＭは、たとえば、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、及び／又は、その他の同様のメモリデバイスを含むことができる。
【００１８】
機械可読記憶媒体２２０を、たとえば、要素識別子生成装置２００のオペレーティングシステム（ＯＳ）の少なくとも一部を構成する、または、ユーザーインターフェースを提示するために該ＯＳ上で動作する個別のアプリケーションを構成する実行可能命令で符号化することができる（該実行可能命令を符号化して機械可読記憶媒体２２０に格納することができる）。別の例では、それらの実行可能命令をウェブブラウザに含めて、該ウェブブラウザが、本明細書で詳細に説明されているインターフェースを実施するようにすることができる。いくつかの実施例では、それらの実行可能命令を、ウェブブラウザが解釈できるJavaScript（ジャバスクリプト）などのウェブベースのスクリプトで実施することができる。他の適切な形式の実行可能命令を使用することもできる。
【００１９】
より具体的には、機械可読記憶媒体２２０を、構造化文書に関連付けられたアクションを検出して受け取るためのアクション検出命令２３０で符号化することができる（アクション検出命令２３０を符号化して機械可読記憶媒体２２０に格納することができる）。たとえば、ＤＯＭベースの構造化ウェブ（web）文書を含むアプリケーション１１５をクライアント１４０に表示することができる。クライアント１４０のユーザーは、アプリケーション１１５の要素をタップして、アプリケーション１１５に、その要素に対するアクションハンドラを起動させることができる。アクション検出命令２３０は、該ユーザーが該要素をタップしたことに応答して実行されることができるコードを該アクションハンドラに導入することができる。
【００２０】
たとえば、構造化文書に関連付けられたウェブアプリケーションは、JavaScript組込み関数「addEventListener」を含むことができる。さらなる処理のために、該アクションを起動した該要素をターゲット（目標）とされた要素（以下、ターゲットとされた要素を「ターゲット要素」という）として保存するために、該アプリケーションのロード中に、ある機能でこの組込み関数を無効にすることができる（または、さらなる処理のために、該アプリケーションのロード中に、該アクションを起動した該要素をターゲット要素として保存するための機能でこの組込み関数を無効にすることができる）。
【００２１】
機械可読記憶媒体２２０を、検出されたアクションに関連付けられた構造化文書の要素を識別するための要素識別命令２３２で符号化することができる（要素識別命令２３２を符号化して機械可読記憶媒体２２０に格納することができる）。要素識別命令２３２は、該アクションに関連付けられた選択された要素を識別（特定）するための命令、及び該選択された要素がターゲット要素を含んでいるか否かを判定するための命令を含むことができる。
【００２２】
いくつかの実施例では、ユーザーによって選択された要素は、「addEventListener」に以前に登録されたターゲット要素を含んでいないが、その子要素（child element）のうちの１つを含むことができる。たとえば、アクションハンドラをテキスト及び画像を含む表（テーブル）の行に登録することができる。ユーザーが選択した要素は、該テキスト要素及び／又は該画像要素を含むことができ、一方、該表の行は、該ターゲット要素を含む。
【００２３】
選択された要素がターゲット要素を含んでいるか否かを決定することによって、装置２００は、（該ユーザーのアクションが異なる要素及び／又は関連する要素に対するものであっても）アプリケーション開発者が興味を持っている要素を識別することが可能になる。たとえば、要素識別命令２３２は、該選択された要素が、スタイル（style）要素を含んでいるか否か、及び／又は、該選択された要素が複数の子要素を有する親要素を含んでいるか否か、及び／又は、該選択された要素によって占有された表示スペース（表示空間）の大きさ（量）がある閾値を超えているか否かを判定することができる。
【００２４】
いくつかの実施例では、スタイル要素などのいくつかの要素タイプは、それらの要素が選択されたときに、要素識別命令２３２にターゲット要素を探させることができる。ユーザーによってスタイル要素が選択されると、ターゲット要素として識別される、スタイル要素の親要素及び／又は子要素を得ることができる。
【００２５】
いくつかの実施例では、子要素はユーザーによって選択されることができ、親要素はターゲット要素を含むことができる。この場合、同じ親html要素（たとえば表の行）内の異なるそれらの子要素に対するタップ動作を、該ターゲット要素の同じＩＤに分類することができる。
【００２６】
いくつかの実施例では、選択された要素が、無効にされたイベントリスナーを有していない場合には、要素識別命令２３２は、親要素を見つけるために文書構造を走査（スキャン）することができる。該文書のルートに到達したか、または、選択された要素の親要素が表示スペースのある閾値よりも大きい（たとえば画面の７０％よりも大きい）スペースを占める場合には、該選択された要素をターゲット要素として指定することができ、そうでない場合には、該親要素をターゲット要素として指定することができる。
【００２７】
機械可読記憶媒体２２０を、該識別された要素の変更されたコピー（複製物）を生成するための変更されたコピー生成命令２３４で符号化することができる（変更されたコピー生成命令２３４を符号化して機械可読記憶媒体２２０に格納することができる）。たとえば、ターゲット要素に関連付けられた「この」構造のコピーを生成するために、JavaScriptをアクションハンドラにおいて使用することができる。該要素構造のコピーを、アプリケーションの他の機能に影響を与えることなく処理（ないし操作）することができる。
【００２８】
機械可読記憶媒体２２０を、該識別された要素の該変更されたコピーに関連付けられた固有の識別子（一意の識別子）を生成するための固有識別子生成命令２３６で符号化することができる（固有子識別子生成命令２３６を符号化して機械可読記憶媒体２２０に格納することができる）。たとえば、固有識別子生成命令２３６は、該識別された要素に関連付けられたデータ構造のコピーを生成し、該データ構造の該コピーに変更ルールを適用し、該識別された要素の名前を生成し、及び、該データ構造の該コピーをハッシュコードに変換することができる。いくつかの実施例では、該データ構造に適用される変更ルールは、該データ構造のコピーからある属性を除去することができる。
【００２９】
該固有の識別子を生成することは、該要素の変更されたＤＯＭベースの構造を生成し、それを、ＩＤを表す文字列に変換することができる。アプリケーションのいくつかの要素が、異なる内容を含んでいるが、同じＤＯＭ構造及びベースユニフォームリソースロケータ（ＵＲＬ）を有している場合には、それらの要素の各々に適用される変更ルールは、それらの要素のメトリック及び性能を集約（ないし統合）することを可能にする同じＩＤを生じることができる。
【００３０】
いくつかの実施例では、ＩＤを生成することは、要素を構成する複数のノードについて繰り返すことによっていくつかの変更ルールを適用することができる。たとえば、変更ルールは、要素からテキストノードを除去することができ、及び／又は、「スタイル（style）」属性、「alt（オルト）」属性、及び／又は「ソース（src）」属性などのいくつかの（または所定の）属性をノードから除去することができる。いくつかの実施例では、パラメータをＵＲＬから除去し、及び／又は数値を除去することなどによって、それらの属性を変更することができる。
【００３１】
いくつかの実施例では、上記の変更ルールなどの変更ルールの標準的な集合をアプリケーションに対して使用することができる。いくつかの実施例では、アプリケーションの管理者及び／又は開発者は、自身のアプリケーションに適合するように、変更ルールを、追加、変更、及び／又は除去することができる。たとえば、アプリケーション開発者は、要素のノードに適用される、該特定のアプリケーションのコーディングスタイル（coding style）を考慮した正規表現（regex）を提供することができる。
【００３２】
固有識別子生成命令２３６は、結果として生じた変更された要素構造からハッシュコードを生成することができる。ハッシュコードの生成は、文字列を整数に変換する。たとえば、JavaScriptは、文字列を入力変数として受け取って、該文字列内の文字の文字コード値に基づいて整数値を返す「hashCode」関数を使用することができる。そのようなhashCode（ハッシュコード）関数の１例が下記の表１に記載されている。Ｃによるdjb2やmd5アルゴリズムなどの他の多くのハッシュ関数が利用可能である。
【００３３】
【表１】
0006505849.tif 000002
【００３４】
機械可読記憶媒体２２０を、該アクションに関連付けられたメトリックを測定するためのメトリック測定命令２３８で符号化することができる（メトリック測定命令２３８を符号化して機械可読記憶媒体２２０に格納することができる）。たとえば、該アクションに関連付けられたメトリックは、該アクションを完了するのに要した時間、及び／又は、該アクションを実行することによって消費されたリソース（たとえば、メモリ、記憶装置、処理能力など）の量を含むことができる。
【００３５】
機械可読記憶媒体２２０を、該固有の識別子、及び該アクションに関連付けられた該測定されたメトリックを含むログレコードを生成するためのログ生成命令２４０で符号化することができる（ログ生成命令２４０を符号化して機械可読記憶媒体２２０に格納することができる）。たとえば、ログレコードを、他の測定されたメトリックと集約（ないし統合）するためにログデータベースに渡すことができる。この場合、アプリケーションに関する性能分析報告を生成して、アプリケーション開発者が評価できるようにすることができる。
【００３６】
図３は、開示されている実施例と整合する例示的な装置３００のブロック図である。図示されているように、コンピューティング装置３００は、アクションエンジン３３０、要素エンジン３４０、及びログエンジン３５０を備えることができる。アクションエンジン３３０、要素エンジン３４０、及びログエンジン３５０の各々は、たとえば、プロセッサ、論理回路、及び／又は、その他のハードウェア及び／もしくはソフトウェアによる手段によって実行可能な、機械可読媒体に格納されている命令を含むことができる。
【００３７】
アクションエンジン３３０は、構造化文書の要素に関連付けられたアクションを受け取ることができる。たとえば、アクションエンジン３３０は、アプリケーションに関するアクションハンドラを含むことができる。ユーザーが、該アプリケーションに対して（ある要素をクリックするなどの）あるアクションを実行すると、そのアクションを処理するために、「mouseDown」（マウスダウン）などのアクションハンドラを呼び出すことができる。
【００３８】
アクションエンジン３３０はまた、伝送されたデータの量、及び／又は、該アクションを完了するのに要した時間、及び／又は、該アクションを実行することによって消費されたリソースの量などの、該アクションに関連付けられた性能メトリックを測定することができる。
【００３９】
いくつかの実施例では、要素エンジン３４０は、該アクションに関連付けられた要素がターゲット要素を含んでいるか否かを判定し、及び、該要素が該ターゲット要素を含んでいると判定したことに応答して、該要素の変更された属性にしたがって固有の識別子を生成することができる。該要素が該ターゲット要素を含んでいないと判定したことに応答して、要素エンジン３４０は、第２の要素を該ターゲット要素として識別することができる。
【００４０】
該アクションに関連付けられた要素がターゲット要素を含んでいるか否かを判定することは、（該ユーザーのアクションが異なる要素及び／又は関連する要素に対するものである場合でも）アプリケーション開発者が興味を持っている要素を要素エンジン３４０が識別することを可能にすることができる。たとえば、要素識別命令２３２と同様に、要素エンジン３４０は、選択された要素がスタイル要素を含んでいるか否か、及び／又は、選択された要素が、複数の子要素を有する親要素を含んでいるか否か、及び／又は、選択された要素によって占有された表示スペースの量がある閾値を超えているか否かを判定することができる。
【００４１】
要素エンジン３４０は、ターゲット要素の一部を変更することができる。たとえば、ターゲット要素は、複数のノードを含むＤＯＭベースのデータ構造を有することができる。各ノードは、複数の属性を有することができる。要素エンジン３４０は、識別子生成命令２３６に関して上記した変更ルールなどの変更ルールを適用することができる。いくつかの実施例では、変更ルールは、属性から文字種（文字タイプ）を除去することができ、及び／又は、スタイル属性やalt属性やリンク属性やソース属性などの属性を該データ構造から除去することができる。
【００４２】
いくつかの実施例では、要素の識別子（ＩＤ）を要素エンジン３４０によって生成することができる。たとえば、要素エンジン３４０は、該変更ルールを適用した後に、該ＤＯＭベースのデータ構造中に結果として生成されたテキストのハッシュコードを生成することができる。
【００４３】
いくつかの実施例では、要素エンジン３４０は、ラベル（label）属性及び／又はタイトル（title）属性及び／又はalt属性及び／又は名前（name）属性にしたがって、要素の名前を生成することができる。たとえば、HTML フォーム要素は、該フォームに対する入力に関連付けられたラベル属性を有することができる。このラベルを、該要素の名前として使用することができる。別の例では、「入力（input）」、「ａ」、「フォーム（form）」、「ボタン（button）」、「インラインフレーム（iframe）」などの多くのｈｔｍｌ要素が、該要素の名前として使用することができる名前属性及び／又はＩＤ属性をサポートする。同様に、「alt」または「タイトル」属性の値を、該属性をサポートするそれらの要素の要素名として使用することもできる。
【００４４】
いくつかの実施例では、要素の名前を、要素のタイプに基づいて生成することができる。たとえば、「ＨＴＭＬ」要素については、文書タイトル属性を要素の名前として使用することができる。選択要素については、選択されたオプションのテキストを、該要素の名前として使用することができる。
【００４５】
ログエンジン３５０は、該固有の識別子、及び受け取ったアクションに関連付けられたメトリックを含むログレコードを生成することができる。ログエンジン３５０はさらに、要素エンジン３４０によって生成された要素の名前をさらに含むログレコードを生成することができる。
【００４６】
いくつかの実施例では、アクションエンジン３３０、要素エンジン３４０、及びログエンジン３５０は、互いに相互作用をする（たとえば情報のやりとりを行う）ことができ、及び／又は、アプリケーションプログラミングインターフェース（ＡＰＩ）を使用して他のアプリケーションと相互作用をすることができる。具体的には、アプリケーションのＡＰＩは（それが局所的に実行されようと、またウェブベースのものであろうと）、他のアプリケーションに複数の関数（または機能）を公開することができる。同様に、オペレーティングシステムのＡＰＩは、該ＯＳの機能を制御するために使用される複数の関数（または機能）を公開することができる。
【００４７】
図４は、開示されている実施例と整合するアプリケーション４００の１実施例である。アプリケーション４００は、リスト表示領域４２０、複数のリスト項目画像４３０（Ａ）〜（Ｄ）、及び複数のリスト項目説明４４０（Ａ）〜（Ｄ）を含むことができる。たとえば、画像４３０（Ａ）〜（Ｄ）及びそれらのそれぞれの説明（記述）４４０（Ａ）〜（Ｄ）は、ユーザーによって検索ボックスに入力された検索から得られた結果を含むことができる。
【００４８】
画像４３０（Ａ）〜（Ｄ）及び説明４４０（Ａ）〜（Ｄ）は、構造化文書の要素を含むことができる。いくつかの実施例では、アプリケーションによって受け取られたアクションは、それらの要素のうちの１つ（画像４３０（Ａ）など）の選択を含むことができる。ターゲット要素は、画像４３０（Ａ）と説明４４０（Ａ）の両方を子要素として含む親要素（表の行など）を含むことができる。
【００４９】
図５は、開示されている実施例と整合するウェブアプリケーション用の例示的な文書オブジェクトモデル（ＤＯＭ）構造５００である。ＤＯＭ構造５００は、複数の構造化要素を含むことができ、各々の構造化要素は複数のノードを含む。ＤＯＭ構造５００は、例示のために提示されたものであり、説明を明瞭かつ簡単にするために、プロダクションアプリケーション（production application）で使用されたいくつかの要素を省くことができる。
【００５０】
第１の要素５１０は、文書のタイプ（この例ではＨＴＭＬ文書）を識別することができる。第２の要素５２０は、タイトル（title）ノード及びスクリプトリンク（script link）ノードなどの情報ノードを含むことができる。第３の要素５３０は、アプリケーションに検索入力を提供することに関連付けられた複数のノードを含むことができる。
【００５１】
親要素５３５は、複数の子要素５４０（Ａ）〜（Ｂ）を含むことができる。たとえば、親要素５３５をリスト表示領域４２０に対応付けることができ、及び子要素５４０（Ａ）〜（Ｂ）をリスト項目画像４３０（Ａ）〜（Ｂ）及びリスト項目説明４４０（Ａ）〜（Ｂ）に対応付けることができる。
【００５２】
図６は、開示されている実施例と整合するメトリックを測定して記録するための方法の１実施例のフローチャートである。方法６００の実行をシステム１００の構成要素に関連して説明するが、当業者には、方法６００を実行するための他の適切な構成要素が明らかであろう。方法６００を、装置２００の機械可読記憶媒体２２０などの機械可読記憶媒体に格納されている実行可能命令の形態で実装ないし実施することができる。
【００５３】
方法６００は、ブロック６１０から開始してブロック６２０に進み、そこで、システム１００は、要素に対するアクションを受け取ることができる。たとえば、クライアント１４０のユーザーが、リスト項目画像４３０（Ａ）をクリックしたのに応答して、アクション検出命令２３０のアクションハンドラ、及び／又は子要素５４０（Ａ）に関連付けられたアクションエンジン３３０のアクションハンドラを呼び出すことができる。アクションハンドラを、「touchStart」及び／又は「mouseDown」などのイベントリスナーに関連付けることができる。
【００５４】
次に、方法６００はステージ６３０に進み、そこで、システム１００は、該アクションに関連付けられた要素がターゲット要素を含んでいるか否かを判定することができる。ターゲット要素は、（アプリケーションの）開発者が性能を測定することに関心を持っている該アプリケーションの機能要素を含むことができる。いくつかの実施例では、デフォルトのアクションハンドラがアプリケーションの機能によって無効にされているところの要素として、ターゲット要素を識別することができる。選択された要素がターゲット要素を含んでいるか否かを判定することは、システム１００が、（ユーザーのアクションが異なる要素及び／又は関連する要素に対するものである場合であっても）要素識別命令２３２及び／又は要素エンジン３４０を用いて、該アプリケーションの開発者が興味を持っている要素を識別することを可能にすることができる。
【００５５】
たとえば、クライアント１４０のユーザーは、アプリケーションの機能が、画像及び説明を含んでいる表の行に関するアクションハンドラから呼び出されたときに、リスト中の画像をタップすることができる。システム１００は、該画像要素と該説明要素の各々が、表の行の要素の子要素であると決定（ないし判定）することによって、該画像と該説明の相互関係（ないし対応関係）を識別（特定）することができる。
【００５６】
ステージ６３０において、該選択された要素がターゲット要素を含んでいないと判定された場合には、方法６００はステージ６４０に進み、そこで、システム１００は、該ターゲット要素を識別することができる。上記の例では、要素識別命令２３２及び／又は要素エンジン３４０は、該画像が該選択された要素であった場合でも、該表の行の要素を該ターゲット要素として認識することができる。
【００５７】
ステージ６３０及び／又はステージ６４０において該ターゲット要素が識別されると、方法６００はステージ６５０に進み、そこで、システム１００は、該ターゲット要素の識別子（ＩＤ）を生成することができる。たとえば、アプリケーションサーバー１１０は、変更されたコピー生成命令２３４及び／又は要素エンジン３４０を用いて、該要素のデータ構造のコピーを生成し、及び、該コピーされた構造に変更ルールを適用して該識別子を生成することができる。ＩＤの生成については、図７に関連してより詳しく説明する。
【００５８】
次に、方法６００はステージ６６０に進み、そこで、システム１００はログレコードを生成することができる。たとえば、アプリケーションサーバー１１０は、メトリック測定命令２３８及び／又はアクションエンジン３３０を用いて、該アクションに関連付けられたメトリック（該アクションが完了するのに要した時間など）を測定することができる。次に、アプリケーションサーバー１１０は、該ターゲット要素の名前、該生成された識別子、及び、該測定されたメトリックを含むログレコードを生成して、該ログレコードをログデータベースに渡す（送る）ことができる。その後、方法６００は、ブロック６７０で終了することができる。
【００５９】
図７は、開示されている実施例と整合する要素識別子を生成するための方法の１実施例のフローチャートである。方法７００の実行をシステム１００の構成要素に関連して説明するが、当業者には、方法７００を実行するための他の適切な構成要素が明らかであろう。方法７００を、装置２００の機械可読記憶媒体２２０などの機械可読記憶媒体に格納されている実行可能命令の形態で実装ないし実施することができる。
【００６０】
方法７００は、ブロック７０５から開始してブロック７１０に進み、そこで、システム１００は、要素のデータ構造のコピーを生成することができる。アプリケーション１１５は、変更されたコピー生成命令２３４及び／又は要素エンジン３４０を用いて、該ターゲット要素と同じデータを含む新たな要素データ構造を生成することができる。たとえば、該ターゲット要素は、ＤＯＭ構造５００の子要素５４０（Ａ）を含むことができる。アプリケーション１１５は、元のデータ構造に影響を与えることなく、処理（ないし操作）のために、子要素５４０（Ａ）のコピーを生成することができる。したがって、子要素５４０（Ａ）のコピーは、以下のノードを含むことができる。
【００６１】
0006505849.tif 000003
【００６２】
次に、方法７００はステージ７２０に進み、そこで、システム１００は、該要素の属性から文字種を除去することができる。たとえば、アプリケーション１１５は、変更されたコピー生成命令２３４及び／又は要素エンジン３４０を用いて、該要素のコピーに対して、該要素の各ノードについて繰り返して、それらの属性の各々の末尾から文字列中のアンダースコア及び／又は数字などの文字種を除去する変更ルールを適用することができる。たとえば、ノード「<li id="categoryProductItem_710406042_1016948" class="brand2productCatItem">」は、ノード「<liid="categoryProductItem" class="brand2 productCatItem">」に変更されることになる。
【００６３】
別の例では、該変更ルールは、属性からテキストを除去することができる。たとえば、ノード「"<a class="productItemName"href="/browse/product.do?cid=1016948 "> Black Shirt</a>」は、ノード「<a class="productItemName"href="/browse/product.do?cid=1016948 "></a>」に変更されることになる。
【００６４】
別の例では、該変更ルールは、ＵＲＬ属性からパラメータを除去することができる。たとえば、ノード「a href="/browse/product.do?cid=1016948 ">」は、ノード「<a href="/browse/product.do">」に変更されることになる。
【００６５】
これらの変更ルールの各々が適用されると、子要素５４０（Ａ）のコピーは、以下のノードを含むことができる。
【００６６】
0006505849.tif 000004
【００６７】
次に、方法７００はステージ７３０に進み、そこで、システム１００は、該要素から属性を部分的にまたは完全に除去することができる。たとえば、変更されたコピー生成命令２３４及び／又は要素エンジン３４０によって適用された変更ルールは、「alt」属性（オルト属性）を完全に除去することができ、及び、「src」属性（ソース属性）の値の部分を除去することができる。たとえば、変更されたノード「<img id="cimg" class="gridProdImg"alt="Black Shirt"src=http://a.b.c/abc/710406/quick/br7106-04qlv01.jpg name="cimg">」は、ノード「<img id="cimg" class="gridProdImg"src="" name="cimg">」に変更されることになる。これらの変更ルールの各々が適用されると、子要素５４０（Ａ）のコピーは、以下のノードを含むことができる。
【００６８】
0006505849.tif 000005
【００６９】
いくつかの実施例では、子要素５４０（Ｂ）に上記の変更ルールを適用することによって、子要素５４０（Ａ）に関して上記したノードと同じノードを含む変更されたデータ構造を得ることができる。
【００７０】
次に、方法７００はステージ７４０に進み、そこで、システム１００は、該要素の名前を生成することができる。たとえば、要素エンジン３４０は、ラベル（label）属性、タイトル（title）属性、alt（オルト）属性、クラス（class）属性、及び／又は名前（name）属性にしたがって該要素の名前を生成することができる。いくつかの実施例では、該要素の名前を、要素のタイプに基づいて生成することができる。たとえば、子要素５４０（Ａ）の場合は、第１のノードの「クラス（class）」属性、すなわち、「brand2 productCatItem」を、該要素の名前として使用することができる。
【００７１】
次に、方法７００はステージ７５０に進み、そこで、システム１００は、該要素のハッシュコードから識別子を生成することができる。たとえば、固有識別子生成命令２３６及び／又は要素エンジン３４０は、javascriptハッシュコード関数（機能）を含むことができる。上記の変更されたデータ構造に対してかかる関数を作用させると、−２１１０８３２４１という値を得ることができる。その後、方法７００は、ステージ７６０で終了することができる。
【００７２】
別個のブロックを含むものとして説明したが、特定のインターフェース領域の表示が（説明した）順番に行われる必要はないことは明らかである。いくつかの実施例では、該インターフェース領域を表示のために同時に処理することができ、これによって、特定のインターフェース領域のいくつかの部分が、別のインターフェース領域の部分よりも（時間的に）前に表示装置に出力されるようにすることができる。
【００７３】
開示されている例は、革新的なバッファ生成（buffer generation）のためのシステム、装置、コンピューター可読記憶媒体、及び方法を含むことができる。説明のために、図１、図２、及び図３に示されている構成要素を参照していくつかの例が説明されている。図示されている構成要素の機能は、重複していてもよいが、より少ない数のもしくはより多くの数の要素及び構成要素に存在することができる。さらに、説明されている要素の機能の全てまたは一部は、いくつかの地理的に分散した位置に同時に存在するかまたは分散して存在することができる。さらに、開示されている例は、種々の環境において実施できるものであり、説明されている例には限定されない。
【００７４】
さらに、本明細書及び特許請求の範囲で使用されている「１つの」、「ある」、及び「該」ないし「前記」という単数形は、文脈上別段の意味であることが示されていない限り、複数形も含むことが意図されている。さらに、種々の要素を記述するために「第１」や「第２」などの用語が本明細書において使用されている場合があるが、それらの要素はかかる用語によって限定されるものではない。それらの用語は、ある１つの要素を別の要素と区別するために使用されているにすぎない。
【００７５】
さらに、図１〜図８に関連して説明されている動作の順番は、例示であって、限定することは意図されていない。開示されている例の範囲から逸脱することなく、追加の処理またはより少ない処理、または処理の組み合わせを使用することができ、またはそれらの処理を変更することができる。したがって、本開示は、単に、可能性のある実施例を説明したものであり、説明されている例に対して多くの変形及び修正を行うことができる。そのような全ての修正及び変形は、本開示の範囲内に含まれること及び特許請求の範囲によって保護されることが意図されている。
【００７６】
詳細に上述した実施例によれば、要素識別子を生成し、及びアプリケーション用の測定されたメトリックを記録するためのシステム及び方法が開示されている。
【図１】
0006505849.tif 000006
【図２】
0006505849.tif 000007
【図３】
0006505849.tif 000008
【図４】
0006505849.tif 000009
【図５】
0006505849.tif 000010
【図６】
0006505849.tif 000011
【図７】
0006505849.tif 000012
【図８】
0006505849.tif 000013