(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】特表2018-506783(P2018-506783A)
(43)【公表日】2018年3月8日
(54)【発明の名称】要素識別子の生成
(51)【国際特許分類】
G06F 11/34 20060101AFI20180209BHJP
【FI】
G06F11/34 176
【審査請求】有
【予備審査請求】未請求
【全頁数】21
(21)【出願番号】特願2017-536780(P2017-536780)
(86)(22)【出願日】2015年2月24日
(85)【翻訳文提出日】2017年7月11日
(86)【国際出願番号】US2015017185
(87)【国際公開番号】WO2016137435
(87)【国際公開日】20160901
(81)【指定国】
AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,ST,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JP,KE,KG,KN,KP,KR,KZ,LA,LC,LK,LR,LS,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT,TZ,UA,UG,US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
2.JAVASCRIPT
(71)【出願人】
【識別番号】317017140
【氏名又は名称】エントイット ソフトウェア エルエルシー
【氏名又は名称原語表記】ENTIT SOFTWARE LLC
(74)【代理人】
【識別番号】100087642
【弁理士】
【氏名又は名称】古谷 聡
(74)【代理人】
【識別番号】100082946
【弁理士】
【氏名又は名称】大西 昭広
(74)【代理人】
【識別番号】100121061
【弁理士】
【氏名又は名称】西山 清春
(74)【代理人】
【識別番号】100195693
【弁理士】
【氏名又は名称】細井 玲
(72)【発明者】
【氏名】シャシェヴスキー,オルガ
(72)【発明者】
【氏名】イスラエリ,アヴィアド
(72)【発明者】
【氏名】ガジト,オデド
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042GB02
5B042HH20
5B042MA08
5B042MC33
5B042MC37
(57)【要約】
本明細書に開示されている例示的な実施例は、構造化文書の要素に関連付けられたアクションを受け取り、及び該受け取ったアクションに関連付けられたメトリックを測定するためのアクションエンジンを備える、要素識別子を生成するためのシステムに関連する。該システムはさらに、該要素がターゲット要素を含んでいるか否かを判定し、及び該要素が該ターゲット要素を含んでいると判定したことに応答して、該要素の変更された属性にしたがって固有の識別子を生成するための要素エンジンを備えることができる。該システムはさらに、該固有の識別子と該受け取ったアクションに関連付けられた該メトリックとを含むログレコードを生成するためのログエンジンを備えることができる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
要素識別子を生成するためのシステムであって、
アプリケーションの構造化文書の要素に関連付けられたアクションを受け取り、及び、前記受け取ったアクションに関連付けられたメトリックを測定するためのアクションエンジンと、
前記要素がターゲット要素を含んでいるか否かを判定し、及び、前記要素が該ターゲット要素を含んでいると判定したことに応答して、前記要素の変更された属性にしたがって固有の識別子を生成するための要素エンジンと、
前記固有の識別子と前記受け取ったアクションに関連付けられた前記メトリックとを含むログレコードを生成するためのログエンジン
を備えるシステム。
【請求項2】
前記要素エンジンは、前記要素の名前を生成し、前記ログレコードは、前記生成された名前をさらに含むことからなる、請求項1のシステム。
【請求項3】
前記要素エンジンは、前記属性から文字種を除去することによって、前記要素の前記変更された属性にしたがって前記固有の識別子を生成することからなる、請求項1のシステム。
【請求項4】
前記要素エンジンは、前記要素の第2の属性を除去することによって、前記要素の前記変更された属性にしたがって前記固有の識別子を生成することからなる、請求項1のシステム。
【請求項5】
前記第2の属性は、スタイル属性、alt属性、リンク属性、及びソース属性のうちの少なくとも1つを含む、請求項4のシステム。
【請求項6】
前記要素エンジンは、前記要素にしたがってハッシュコードを生成することによって、前記要素の前記変更された属性にしたがって前記固有の識別子を生成することからなる、請求項1のシステム。
【請求項7】
前記要素エンジンは、前記要素が前記ターゲット要素を含んでいないと判定したことに応答して、第2の要素を前記ターゲット要素として識別する、請求項1のシステム。
【請求項8】
要素識別子を生成するための命令を含む非一時的な機械可読記憶媒体であって、
前記命令は、プロセッサによって実行されると、該プロセッサに、
構造化文書に関連付けられたアクションを検出することと、
前記アクションに関連付けられた前記構造化文書の要素を識別することと、
前記識別された要素の変更されたコピーを生成することと、
前記識別された要素の前記変更されたコピーに関連付けられた固有の識別子を生成することと、
前記アクションに関連付けられたメトリックを測定することと、
前記固有の識別子と前記アクションに関連付けられた前記測定されたメトリックとを含むログレコードを生成すること
を実行させることからなる、機械可読記憶媒体。
【請求項9】
前記アクションに関連付けられた前記測定されたメトリックは、該アクションを完了するのに要した時間を含む、請求項8の機械可読記憶媒体。
【請求項10】
前記アクションに関連付けられた前記構造化文書の要素を識別するための前記命令が、
前記アクションに関連付けられた選択された要素を識別するための命令と、
前記選択された要素がターゲット要素を含んでいるか否かを判定するための命令
を含むことからなる、請求項8の機械可読記憶媒体。
【請求項11】
前記選択された要素がターゲット要素を含んでいるか否かを判定するための前記命令が、
前記選択された要素がスタイル要素を含んでいるか否かを判定するための命令と、
前記選択された要素が複数の子要素を含んでいるか否かを判定するための命令と、
前記選択された要素によって占有された表示スペースの大きさがある閾値を超えているか否かを判定するための命令
を含むことからなる、請求項10の機械可読記憶媒体。
【請求項12】
前記識別された要素の前記変更されたコピーに関連付けられた固有の識別子を生成するための前記命令が、
前記識別された要素に関連付けられたデータ構造のコピーを生成するための命令と、
変更ルールを前記データ構造の前記コピーに適用するための命令と、
前記識別された要素の名前を生成するための命令と、
前記データ構造の前記コピーをハッシュコードに変換するための命令
を含むことからなる、請求項8の機械可読記憶媒体。
【請求項13】
前記変更ルールが、前記データ構造の前記コピーから少なくとも1つの属性を除去することを含む、請求項12の機械可読記憶媒体。
【請求項14】
要素識別子を生成するためのコンピューターによって実施される方法であって、
アクションエンジンによって、アプリケーションの構造化文書の複数の要素に関連付けられたアクションハンドラを無効にすることと、
前記アクションエンジンによって、前記アクションハンドラを介して前記複数の要素のうちの1つの要素に関連付けられたアクションを受け取ることと、
要素エンジンによって、前記受け取ったアクションに対するターゲット要素を識別することと、
前記要素エンジンによって、前記ターゲット要素のデータ構造のコピーを生成することと、
前記要素エンジンによって、変更ルールにしたがって、前記コピーされたデータ構造の複数の属性を変更することと、
前記要素エンジンによって、前記ターゲット要素の名前を生成することと、
前記要素エンジンによって、前記コピーされたデータ構造の前記変更された複数の属性のハッシュコードにしたがって、前記ターゲット要素の固有の識別子を生成することと、
前記アクションエンジンによって、前記ターゲット要素に対する前記受け取ったアクションを完了するのに必要な時間を測定することと、
ログエンジンによって、前記生成された名前、前記固有の識別子、及び前記ターゲット要素に対する前記受け取ったアクションを完了するのに必要な前記測定された時間を含むログレコードを生成すること
を含む方法。
【請求項15】
前記変更ルールは、
前記複数の属性からある属性を除去することと、
前記複数の属性のうちのある属性から文字種を除去することと、
前記複数の属性のうちのある属性からフィールド値文字列を除去すること
とのうちの少なくとも1つを含むことからなる、請求項14の方法。
【発明の詳細な説明】
【背景技術】
【0001】
いくつかのウェブベースのアプリケーションまたはモバイルアプリケーションは、ユーザーと相互作用するための複数の手段を提供する。たとえば、ユーザーは、検索ボックス、リスト項目、リンク、画像などの種々の要素をウェブページ上で選択することができる。いくつかの場合には、アプリケーションの作成者は、(所与のアクションを完了するのに要する時間を決定することなどによって)ユーザーのアクションに応答してアプリケーションの性能を測定することを望む。該アプリケーション内の複数の要素は、検索結果のリスト中の各項目またはメニュー内の各項目などの、機能的には類似するが視覚的には異なる要素を表している場合がある。そのような類似の要素に関するアクション性能は、性能分析を簡単なものにするために、個々にではなくグループとして追跡されるのが望ましい場合がある。
【先行技術文献】
【特許文献】
【0002】
【特許文献1】(補充可能性あり)
【図面の簡単な説明】
【0003】
添付の図面において、同じ参照番号は、同様の構成要素もしくはブロックを参照している。下記の詳細な説明は添付の図面を参照している。
【
図1】開示されている実施例と整合する要素識別子生成システムの1実施例のブロック図である。
【
図2】開示されている実施例と整合する例示的な要素識別子生成装置のブロック図である。
【
図3】開示されている実施例と整合する例示的なコンピューティング装置のブロック図である。
【
図4】開示されている実施例と整合するアプリケーションの1実施例である。
【
図5】開示されている実施例と整合するウェブアプリケーション用の例示的な文書オブジェクトモデル構造である。
【
図6】開示されている実施例と整合するメトリックを測定して記録するための方法の1実施例のフローチャートである。
【
図7】開示されている実施例と整合する要素識別子を生成するための方法の1実施例のフローチャートである。
【発明を実施するための形態】
【0004】
上記のように、ウェブアプリケーションの典型的なインターフェースは、画像、リンク、メニュー、テキスト記述(説明)などの多くの要素を含んでいる。これらの要素を、ページのロード、及び/又はスクリプト実行、及び/又はユーザーアクションなどのイベントに応答してアプリケーションによって実行することができるコマンドに関連付けることができる。したがって、詳細に後述するように、種々の例示的な実施例は、それらの種々の要素の識別子(識別情報)を生成すること、それらの要素に対して実行されるコマンドに関連付けられたメトリック(性能等の評価の基準や尺度など。メトリクスともいう)を評価すること、及び、性能の評価及び分析用のメトリックを記録することに関連する。
【0005】
以下の説明では、「機械可読記憶媒体」という用語が使用されている。本明細書で使用されている「機械可読記憶媒体」という用語は、実行可能命令またはその他のデータを格納する(たとえば、ハードディスクドライブ、ランダムアクセスメモリ、フラッシュメモリなどの)任意の電子装置、磁気装置、光学装置、またはその他の物理的な記憶装置を意味する。
【0006】
図1は、開示されている実施例と整合する要素識別子生成用のシステム100の1実施例のブロック図である。システム100は、たとえばアプリケーションサーバー110及びクライアント140を含むことができる。アプリケーションサーバー110及びクライアント140は、直接接続及び/又はネットワークを介して互いに通信することができる。ネットワークを、離れた構成要素間の通信を容易にする任意のタイプのネットワークとすることができる。たとえば、該ネットワークは、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、仮想プライベートネットワーク、専用イントラネット、インターネット、セルラーネットワーク、ラジオネットワーク、及び/又は無線ネットワークを含むことができる。
【0007】
アプリケーションサーバー110及びクライアント140の各々は、本明細書に記載されている実施例を提供することに整合するコンピューティング能力を提供することができる、汎用コンピューター及び/もしくは専用コンピューター、サーバー、メインフレーム、デスクトップ、ラップトップ、タブレット、スマートフォン、ゲーム機、及び/又はその他の任意のシステムを含むことができる。
【0008】
図1には、1つのアプリケーションサーバー110及び1つのクライアント140が示されているが、システム100のいくつかの実施例は、2以上のアプリケーションサーバー110及び/又はクライアント140を含むことができる。それらのサーバーのうちの少なくとも1つのサーバーを、たとえば、少なくとも1つサーバーバンク、コンピューターバンク、データセンター、及び/又は他の構成中に配置して利用することができる。たとえば、それらのサーバーコンピューターは全体として、1つのクラウドコンピューティングリソース、グリッドコンピューティングリソース、及び/又はその他の任意の分散コンピューティング構成を備えることができる。そのようなサーバーコンピューターを、1つの設備内に配置することができ、及び/又は、多くの異なる地理的な位置に分散させることができる。
【0009】
クライアント140は、陰極線管(CRT)モニター、液晶ディスプレイ(LCD)画面、または、別の表示技術を用いて実施された画面などの表示装置(ディスプレイ)を備えることができる。しかしながら、任意の適切な表示装置を使用することができる。該表示装置を、システム100の構成に応じて、クライアント140の内部または外部に配置することができる。
【0010】
いくつかの実施例では、システム100は、アプリケーションサーバー110で実行される1以上のアプリケーション115のユーザー体験を監視し、及び、クライアント140を介してユーザーが取ったアクションに対する性能及び安定性の測定値を提供することができる。
【0011】
(1以上の)アプリケーション115におけるユーザーアクションを、ASP、Java(ジャバ)、Objective-C、及びその他の種々のプログラミング言語などのコード及び/又はスクリプトを用いて処理することができるイベントに変換することができる。ユーザーが該ユーザークライアントにおいて(タッチやスワイプなどの)アクションを開始するたびに、(1以上の)アプリケーション115が該アクションを処理することができるように、(たとえば、touchstart(タッチスタート)、クリック、touchend(タッチエンド)などの)一連のイベントを起動することができる。
【0012】
システム100は、ユーザーアクションを識別(特定)し、分類し、及びメトリックを測定することができる。ユーザーアクションを分類することは、該アクションの識別子(ID)を生成することを含むことができる。あるユーザーアクションを、該ユーザーによって使用された(たとえば、タップやスワイプなどの)ジェスチャー、及び、該ジェスチャーによって影響を受けた(1以上の)アプリケーション115の(たとえば、ボタンやリスト項目などの)要素によって分類することができる。ユーザーアクションに対する性能メトリック(たとえば、「該アクションを完了するのに要した平均時間」)を測定し及び/又は表示するために、該ユーザーアクションを分類することができる。
【0013】
システム100は、ユーザーアクションを分類することを試みるときに、受け取ったユーザーアクション用のアクションハンドラに関連付けられた要素の代わりにそのジェスチャーの実際のターゲット要素を分類することができる。(1以上の)アプリケーション115の各要素を、touchstart、クリック、touchendなどのユーザーアクションによって起動された種々のイベント用の複数のイベントハンドラに関連付けることができる。いくつかのイベントハンドラは、(1以上の)アプリケーション115用の機能を実行するためにイベントが起動されたときに、対応するイベントリスナー(event listener)が呼び出すことができるアクションハンドラを含むことができる。
【0014】
たとえば、ユーザーが、(1以上の)アプリケーション115の異なるオプションのメニュー(中のオプション)をタップすると、システム100は、それぞれのオプションを異なるユーザーアクションとして分類することができる。いくつかの実施例では、システム100は、(1以上の)アプリケーション115によって表示されたカタログ項目のリストなどの複数の要素を、1つの包括的な要素として分類することができる。システム100は、要素の文書(ドキュメント)オブジェクトモデル(DOM)構造を分析及び処理して、異なる機能を有する要素に対しては固有のID及び名前を生成し、同じ機能を有する要素に対しては(ユーザーには、これらの要素が(互いに)異なる要素として見えるかもしれない場合であっても)同じID及び名前を生成することができる。
【0015】
図2は、開示されている実施例と整合する、プロセッサ210及び非一時的な機械可読記憶媒体220を備える例示的な要素識別子生成装置200のブロック図である。要素識別子生成装置200は、デスクトップコンピューターやラップトップコンピューターや携帯型コンピューティング装置や携帯電話機などのコンピューティング装置を含むことができる。プロセッサ210を、機械可読記憶媒体220に格納されている命令の取り出し及び実行に適した、中央処理装置(CPU)、半導体ベースのマイクロプロセッサ、またはその他の任意のハードウェア装置とすることができる。具体的には、プロセッサ210は、複数のアクション検出命令230、要素識別命令232、変更されたコピー(複製物)生成命令234、固有識別子生成命令236、メトリック測定命令238、及びログ(記録)生成命令240をフェッチし、デコードし、及び実行して、詳細に後述する機能を実行することができる。
【0016】
アクション検出命令230、要素識別命令232、変更されたコピー生成命令234、固有識別子生成命令236、メトリック測定命令238、及びログ生成命令240などの実行可能命令を、機械可読記憶媒体220の任意の部分及び/又は構成要素に格納することができる。機械可読記憶媒体220は、揮発性メモリ及び/もしくは不揮発性メモリとデータ記憶要素の両方を含むことができる。揮発性要素は、電力が供給されていないときにデータ値を保持しない記憶要素である。不揮発性要素は、電力が供給されていないときでもデータを保持する記憶要素である。
【0017】
機械可読記憶媒体220は、たとえば、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、ハードディスクドライブ、ソリッドステートドライブ、USBフラッシュドライブ、メモリカードリーダでアクセスされるメモリカード、関連するフロッピーディスクドライブでアクセスされるフロッピーディスク、光ディスクドライブでアクセスされる光ディスク、適切なテープドライブでアクセスされる磁気テープ、及び/又は、その他のメモリ(記憶)要素、及び/又は、これらのメモリ要素のうちの任意の2つ及び/又は3つ以上の組み合わせを含むことができる。さらに、RAMは、たとえば、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、及び/又は、磁気ランダムアクセスメモリ(MRAM)、及びその他のそのようなデバイスを含むことができる。ROMは、たとえば、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、及び/又は、その他の同様のメモリデバイスを含むことができる。
【0018】
機械可読記憶媒体220を、たとえば、要素識別子生成装置200のオペレーティングシステム(OS)の少なくとも一部を構成する、または、ユーザーインターフェースを提示するために該OS上で動作する個別のアプリケーションを構成する実行可能命令で符号化することができる(該実行可能命令を符号化して機械可読記憶媒体220に格納することができる)。別の例では、それらの実行可能命令をウェブブラウザに含めて、該ウェブブラウザが、本明細書で詳細に説明されているインターフェースを実施するようにすることができる。いくつかの実施例では、それらの実行可能命令を、ウェブブラウザが解釈できるJavaScript(ジャバスクリプト)などのウェブベースのスクリプトで実施することができる。他の適切な形式の実行可能命令を使用することもできる。
【0019】
より具体的には、機械可読記憶媒体220を、構造化文書に関連付けられたアクションを検出して受け取るためのアクション検出命令230で符号化することができる(アクション検出命令230を符号化して機械可読記憶媒体220に格納することができる)。たとえば、DOMベースの構造化ウェブ(web)文書を含むアプリケーション115をクライアント140に表示することができる。クライアント140のユーザーは、アプリケーション115の要素をタップして、アプリケーション115に、その要素に対するアクションハンドラを起動させることができる。アクション検出命令230は、該ユーザーが該要素をタップしたことに応答して実行されることができるコードを該アクションハンドラに導入することができる。
【0020】
たとえば、構造化文書に関連付けられたウェブアプリケーションは、JavaScript組込み関数「addEventListener」を含むことができる。さらなる処理のために、該アクションを起動した該要素をターゲット(目標)とされた要素(以下、ターゲットとされた要素を「ターゲット要素」という)として保存するために、該アプリケーションのロード中に、ある機能でこの組込み関数を無効にすることができる(または、さらなる処理のために、該アプリケーションのロード中に、該アクションを起動した該要素をターゲット要素として保存するための機能でこの組込み関数を無効にすることができる)。
【0021】
機械可読記憶媒体220を、検出されたアクションに関連付けられた構造化文書の要素を識別するための要素識別命令232で符号化することができる(要素識別命令232を符号化して機械可読記憶媒体220に格納することができる)。要素識別命令232は、該アクションに関連付けられた選択された要素を識別(特定)するための命令、及び該選択された要素がターゲット要素を含んでいるか否かを判定するための命令を含むことができる。
【0022】
いくつかの実施例では、ユーザーによって選択された要素は、「addEventListener」に以前に登録されたターゲット要素を含んでいないが、その子要素(child element)のうちの1つを含むことができる。たとえば、アクションハンドラをテキスト及び画像を含む表(テーブル)の行に登録することができる。ユーザーが選択した要素は、該テキスト要素及び/又は該画像要素を含むことができ、一方、該表の行は、該ターゲット要素を含む。
【0023】
選択された要素がターゲット要素を含んでいるか否かを決定することによって、装置200は、(該ユーザーのアクションが異なる要素及び/又は関連する要素に対するものであっても)アプリケーション開発者が興味を持っている要素を識別することが可能になる。たとえば、要素識別命令232は、該選択された要素が、スタイル(style)要素を含んでいるか否か、及び/又は、該選択された要素が複数の子要素を有する親要素を含んでいるか否か、及び/又は、該選択された要素によって占有された表示スペース(表示空間)の大きさ(量)がある閾値を超えているか否かを判定することができる。
【0024】
いくつかの実施例では、スタイル要素などのいくつかの要素タイプは、それらの要素が選択されたときに、要素識別命令232にターゲット要素を探させることができる。ユーザーによってスタイル要素が選択されると、ターゲット要素として識別される、スタイル要素の親要素及び/又は子要素を得ることができる。
【0025】
いくつかの実施例では、子要素はユーザーによって選択されることができ、親要素はターゲット要素を含むことができる。この場合、同じ親html要素(たとえば表の行)内の異なるそれらの子要素に対するタップ動作を、該ターゲット要素の同じIDに分類することができる。
【0026】
いくつかの実施例では、選択された要素が、無効にされたイベントリスナーを有していない場合には、要素識別命令232は、親要素を見つけるために文書構造を走査(スキャン)することができる。該文書のルートに到達したか、または、選択された要素の親要素が表示スペースのある閾値よりも大きい(たとえば画面の70%よりも大きい)スペースを占める場合には、該選択された要素をターゲット要素として指定することができ、そうでない場合には、該親要素をターゲット要素として指定することができる。
【0027】
機械可読記憶媒体220を、該識別された要素の変更されたコピー(複製物)を生成するための変更されたコピー生成命令234で符号化することができる(変更されたコピー生成命令234を符号化して機械可読記憶媒体220に格納することができる)。たとえば、ターゲット要素に関連付けられた「この」構造のコピーを生成するために、JavaScriptをアクションハンドラにおいて使用することができる。該要素構造のコピーを、アプリケーションの他の機能に影響を与えることなく処理(ないし操作)することができる。
【0028】
機械可読記憶媒体220を、該識別された要素の該変更されたコピーに関連付けられた固有の識別子(一意の識別子)を生成するための固有識別子生成命令236で符号化することができる(固有子識別子生成命令236を符号化して機械可読記憶媒体220に格納することができる)。たとえば、固有識別子生成命令236は、該識別された要素に関連付けられたデータ構造のコピーを生成し、該データ構造の該コピーに変更ルールを適用し、該識別された要素の名前を生成し、及び、該データ構造の該コピーをハッシュコードに変換することができる。いくつかの実施例では、該データ構造に適用される変更ルールは、該データ構造のコピーからある属性を除去することができる。
【0029】
該固有の識別子を生成することは、該要素の変更されたDOMベースの構造を生成し、それを、IDを表す文字列に変換することができる。アプリケーションのいくつかの要素が、異なる内容を含んでいるが、同じDOM構造及びベースユニフォームリソースロケータ(URL)を有している場合には、それらの要素の各々に適用される変更ルールは、それらの要素のメトリック及び性能を集約(ないし統合)することを可能にする同じIDを生じることができる。
【0030】
いくつかの実施例では、IDを生成することは、要素を構成する複数のノードについて繰り返すことによっていくつかの変更ルールを適用することができる。たとえば、変更ルールは、要素からテキストノードを除去することができ、及び/又は、「スタイル(style)」属性、「alt(オルト)」属性、及び/又は「ソース(src)」属性などのいくつかの(または所定の)属性をノードから除去することができる。いくつかの実施例では、パラメータをURLから除去し、及び/又は数値を除去することなどによって、それらの属性を変更することができる。
【0031】
いくつかの実施例では、上記の変更ルールなどの変更ルールの標準的な集合をアプリケーションに対して使用することができる。いくつかの実施例では、アプリケーションの管理者及び/又は開発者は、自身のアプリケーションに適合するように、変更ルールを、追加、変更、及び/又は除去することができる。たとえば、アプリケーション開発者は、要素のノードに適用される、該特定のアプリケーションのコーディングスタイル(coding style)を考慮した正規表現(regex)を提供することができる。
【0032】
固有識別子生成命令236は、結果として生じた変更された要素構造からハッシュコードを生成することができる。ハッシュコードの生成は、文字列を整数に変換する。たとえば、JavaScriptは、文字列を入力変数として受け取って、該文字列内の文字の文字コード値に基づいて整数値を返す「hashCode」関数を使用することができる。そのようなhashCode(ハッシュコード)関数の1例が下記の表1に記載されている。Cによるdjb2やmd5アルゴリズムなどの他の多くのハッシュ関数が利用可能である。
【0034】
機械可読記憶媒体220を、該アクションに関連付けられたメトリックを測定するためのメトリック測定命令238で符号化することができる(メトリック測定命令238を符号化して機械可読記憶媒体220に格納することができる)。たとえば、該アクションに関連付けられたメトリックは、該アクションを完了するのに要した時間、及び/又は、該アクションを実行することによって消費されたリソース(たとえば、メモリ、記憶装置、処理能力など)の量を含むことができる。
【0035】
機械可読記憶媒体220を、該固有の識別子、及び該アクションに関連付けられた該測定されたメトリックを含むログレコードを生成するためのログ生成命令240で符号化することができる(ログ生成命令240を符号化して機械可読記憶媒体220に格納することができる)。たとえば、ログレコードを、他の測定されたメトリックと集約(ないし統合)するためにログデータベースに渡すことができる。この場合、アプリケーションに関する性能分析報告を生成して、アプリケーション開発者が評価できるようにすることができる。
【0036】
図3は、開示されている実施例と整合する例示的な装置300のブロック図である。図示されているように、コンピューティング装置300は、アクションエンジン330、要素エンジン340、及びログエンジン350を備えることができる。アクションエンジン330、要素エンジン340、及びログエンジン350の各々は、たとえば、プロセッサ、論理回路、及び/又は、その他のハードウェア及び/もしくはソフトウェアによる手段によって実行可能な、機械可読媒体に格納されている命令を含むことができる。
【0037】
アクションエンジン330は、構造化文書の要素に関連付けられたアクションを受け取ることができる。たとえば、アクションエンジン330は、アプリケーションに関するアクションハンドラを含むことができる。ユーザーが、該アプリケーションに対して(ある要素をクリックするなどの)あるアクションを実行すると、そのアクションを処理するために、「mouseDown」(マウスダウン)などのアクションハンドラを呼び出すことができる。
【0038】
アクションエンジン330はまた、伝送されたデータの量、及び/又は、該アクションを完了するのに要した時間、及び/又は、該アクションを実行することによって消費されたリソースの量などの、該アクションに関連付けられた性能メトリックを測定することができる。
【0039】
いくつかの実施例では、要素エンジン340は、該アクションに関連付けられた要素がターゲット要素を含んでいるか否かを判定し、及び、該要素が該ターゲット要素を含んでいると判定したことに応答して、該要素の変更された属性にしたがって固有の識別子を生成することができる。該要素が該ターゲット要素を含んでいないと判定したことに応答して、要素エンジン340は、第2の要素を該ターゲット要素として識別することができる。
【0040】
該アクションに関連付けられた要素がターゲット要素を含んでいるか否かを判定することは、(該ユーザーのアクションが異なる要素及び/又は関連する要素に対するものである場合でも)アプリケーション開発者が興味を持っている要素を要素エンジン340が識別することを可能にすることができる。たとえば、要素識別命令232と同様に、要素エンジン340は、選択された要素がスタイル要素を含んでいるか否か、及び/又は、選択された要素が、複数の子要素を有する親要素を含んでいるか否か、及び/又は、選択された要素によって占有された表示スペースの量がある閾値を超えているか否かを判定することができる。
【0041】
要素エンジン340は、ターゲット要素の一部を変更することができる。たとえば、ターゲット要素は、複数のノードを含むDOMベースのデータ構造を有することができる。各ノードは、複数の属性を有することができる。要素エンジン340は、識別子生成命令236に関して上記した変更ルールなどの変更ルールを適用することができる。いくつかの実施例では、変更ルールは、属性から文字種(文字タイプ)を除去することができ、及び/又は、スタイル属性やalt属性やリンク属性やソース属性などの属性を該データ構造から除去することができる。
【0042】
いくつかの実施例では、要素の識別子(ID)を要素エンジン340によって生成することができる。たとえば、要素エンジン340は、該変更ルールを適用した後に、該DOMベースのデータ構造中に結果として生成されたテキストのハッシュコードを生成することができる。
【0043】
いくつかの実施例では、要素エンジン340は、ラベル(label)属性及び/又はタイトル(title)属性及び/又はalt属性及び/又は名前(name)属性にしたがって、要素の名前を生成することができる。たとえば、HTML フォーム要素は、該フォームに対する入力に関連付けられたラベル属性を有することができる。このラベルを、該要素の名前として使用することができる。別の例では、「入力(input)」、「a」、「フォーム(form)」、「ボタン(button)」、「インラインフレーム(iframe)」などの多くのhtml要素が、該要素の名前として使用することができる名前属性及び/又はID属性をサポートする。同様に、「alt」または「タイトル」属性の値を、該属性をサポートするそれらの要素の要素名として使用することもできる。
【0044】
いくつかの実施例では、要素の名前を、要素のタイプに基づいて生成することができる。たとえば、「HTML」要素については、文書タイトル属性を要素の名前として使用することができる。選択要素については、選択されたオプションのテキストを、該要素の名前として使用することができる。
【0045】
ログエンジン350は、該固有の識別子、及び受け取ったアクションに関連付けられたメトリックを含むログレコードを生成することができる。ログエンジン350はさらに、要素エンジン340によって生成された要素の名前をさらに含むログレコードを生成することができる。
【0046】
いくつかの実施例では、アクションエンジン330、要素エンジン340、及びログエンジン350は、互いに相互作用をする(たとえば情報のやりとりを行う)ことができ、及び/又は、アプリケーションプログラミングインターフェース(API)を使用して他のアプリケーションと相互作用をすることができる。具体的には、アプリケーションのAPIは(それが局所的に実行されようと、またウェブベースのものであろうと)、他のアプリケーションに複数の関数(または機能)を公開することができる。同様に、オペレーティングシステムのAPIは、該OSの機能を制御するために使用される複数の関数(または機能)を公開することができる。
【0047】
図4は、開示されている実施例と整合するアプリケーション400の1実施例である。アプリケーション400は、リスト表示領域420、複数のリスト項目画像430(A)〜(D)、及び複数のリスト項目説明440(A)〜(D)を含むことができる。たとえば、画像430(A)〜(D)及びそれらのそれぞれの説明(記述)440(A)〜(D)は、ユーザーによって検索ボックスに入力された検索から得られた結果を含むことができる。
【0048】
画像430(A)〜(D)及び説明440(A)〜(D)は、構造化文書の要素を含むことができる。いくつかの実施例では、アプリケーションによって受け取られたアクションは、それらの要素のうちの1つ(画像430(A)など)の選択を含むことができる。ターゲット要素は、画像430(A)と説明440(A)の両方を子要素として含む親要素(表の行など)を含むことができる。
【0049】
図5は、開示されている実施例と整合するウェブアプリケーション用の例示的な文書オブジェクトモデル(DOM)構造500である。DOM構造500は、複数の構造化要素を含むことができ、各々の構造化要素は複数のノードを含む。DOM構造500は、例示のために提示されたものであり、説明を明瞭かつ簡単にするために、プロダクションアプリケーション(production application)で使用されたいくつかの要素を省くことができる。
【0050】
第1の要素510は、文書のタイプ(この例ではHTML文書)を識別することができる。第2の要素520は、タイトル(title)ノード及びスクリプトリンク(script link)ノードなどの情報ノードを含むことができる。第3の要素530は、アプリケーションに検索入力を提供することに関連付けられた複数のノードを含むことができる。
【0051】
親要素535は、複数の子要素540(A)〜(B)を含むことができる。たとえば、親要素535をリスト表示領域420に対応付けることができ、及び子要素540(A)〜(B)をリスト項目画像430(A)〜(B)及びリスト項目説明440(A)〜(B)に対応付けることができる。
【0052】
図6は、開示されている実施例と整合するメトリックを測定して記録するための方法の1実施例のフローチャートである。方法600の実行をシステム100の構成要素に関連して説明するが、当業者には、方法600を実行するための他の適切な構成要素が明らかであろう。方法600を、装置200の機械可読記憶媒体220などの機械可読記憶媒体に格納されている実行可能命令の形態で実装ないし実施することができる。
【0053】
方法600は、ブロック610から開始してブロック620に進み、そこで、システム100は、要素に対するアクションを受け取ることができる。たとえば、クライアント140のユーザーが、リスト項目画像430(A)をクリックしたのに応答して、アクション検出命令230のアクションハンドラ、及び/又は子要素540(A)に関連付けられたアクションエンジン330のアクションハンドラを呼び出すことができる。アクションハンドラを、「touchStart」及び/又は「mouseDown」などのイベントリスナーに関連付けることができる。
【0054】
次に、方法600はステージ630に進み、そこで、システム100は、該アクションに関連付けられた要素がターゲット要素を含んでいるか否かを判定することができる。ターゲット要素は、(アプリケーションの)開発者が性能を測定することに関心を持っている該アプリケーションの機能要素を含むことができる。いくつかの実施例では、デフォルトのアクションハンドラがアプリケーションの機能によって無効にされているところの要素として、ターゲット要素を識別することができる。選択された要素がターゲット要素を含んでいるか否かを判定することは、システム100が、(ユーザーのアクションが異なる要素及び/又は関連する要素に対するものである場合であっても)要素識別命令232及び/又は要素エンジン340を用いて、該アプリケーションの開発者が興味を持っている要素を識別することを可能にすることができる。
【0055】
たとえば、クライアント140のユーザーは、アプリケーションの機能が、画像及び説明を含んでいる表の行に関するアクションハンドラから呼び出されたときに、リスト中の画像をタップすることができる。システム100は、該画像要素と該説明要素の各々が、表の行の要素の子要素であると決定(ないし判定)することによって、該画像と該説明の相互関係(ないし対応関係)を識別(特定)することができる。
【0056】
ステージ630において、該選択された要素がターゲット要素を含んでいないと判定された場合には、方法600はステージ640に進み、そこで、システム100は、該ターゲット要素を識別することができる。上記の例では、要素識別命令232及び/又は要素エンジン340は、該画像が該選択された要素であった場合でも、該表の行の要素を該ターゲット要素として認識することができる。
【0057】
ステージ630及び/又はステージ640において該ターゲット要素が識別されると、方法600はステージ650に進み、そこで、システム100は、該ターゲット要素の識別子(ID)を生成することができる。たとえば、アプリケーションサーバー110は、変更されたコピー生成命令234及び/又は要素エンジン340を用いて、該要素のデータ構造のコピーを生成し、及び、該コピーされた構造に変更ルールを適用して該識別子を生成することができる。IDの生成については、
図7に関連してより詳しく説明する。
【0058】
次に、方法600はステージ660に進み、そこで、システム100はログレコードを生成することができる。たとえば、アプリケーションサーバー110は、メトリック測定命令238及び/又はアクションエンジン330を用いて、該アクションに関連付けられたメトリック(該アクションが完了するのに要した時間など)を測定することができる。次に、アプリケーションサーバー110は、該ターゲット要素の名前、該生成された識別子、及び、該測定されたメトリックを含むログレコードを生成して、該ログレコードをログデータベースに渡す(送る)ことができる。その後、方法600は、ブロック670で終了することができる。
【0059】
図7は、開示されている実施例と整合する要素識別子を生成するための方法の1実施例のフローチャートである。方法700の実行をシステム100の構成要素に関連して説明するが、当業者には、方法700を実行するための他の適切な構成要素が明らかであろう。方法700を、装置200の機械可読記憶媒体220などの機械可読記憶媒体に格納されている実行可能命令の形態で実装ないし実施することができる。
【0060】
方法700は、ブロック705から開始してブロック710に進み、そこで、システム100は、要素のデータ構造のコピーを生成することができる。アプリケーション115は、変更されたコピー生成命令234及び/又は要素エンジン340を用いて、該ターゲット要素と同じデータを含む新たな要素データ構造を生成することができる。たとえば、該ターゲット要素は、DOM構造500の子要素540(A)を含むことができる。アプリケーション115は、元のデータ構造に影響を与えることなく、処理(ないし操作)のために、子要素540(A)のコピーを生成することができる。したがって、子要素540(A)のコピーは、以下のノードを含むことができる。
【0062】
次に、方法700はステージ720に進み、そこで、システム100は、該要素の属性から文字種を除去することができる。たとえば、アプリケーション115は、変更されたコピー生成命令234及び/又は要素エンジン340を用いて、該要素のコピーに対して、該要素の各ノードについて繰り返して、それらの属性の各々の末尾から文字列中のアンダースコア及び/又は数字などの文字種を除去する変更ルールを適用することができる。たとえば、ノード「<li id="categoryProductItem_710406042_1016948" class="brand2productCatItem">」は、ノード「<liid="categoryProductItem" class="brand2 productCatItem">」に変更されることになる。
【0063】
別の例では、該変更ルールは、属性からテキストを除去することができる。たとえば、ノード「"<a class="productItemName"href="/browse/product.do?cid=1016948 "> Black Shirt</a>」は、ノード「<a class="productItemName"href="/browse/product.do?cid=1016948 "></a>」に変更されることになる。
【0064】
別の例では、該変更ルールは、URL属性からパラメータを除去することができる。たとえば、ノード「a href="/browse/product.do?cid=1016948 ">」は、ノード「<a href="/browse/product.do">」に変更されることになる。
【0065】
これらの変更ルールの各々が適用されると、子要素540(A)のコピーは、以下のノードを含むことができる。
【0067】
次に、方法700はステージ730に進み、そこで、システム100は、該要素から属性を部分的にまたは完全に除去することができる。たとえば、変更されたコピー生成命令234及び/又は要素エンジン340によって適用された変更ルールは、「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">」に変更されることになる。これらの変更ルールの各々が適用されると、子要素540(A)のコピーは、以下のノードを含むことができる。
【0069】
いくつかの実施例では、子要素540(B)に上記の変更ルールを適用することによって、子要素540(A)に関して上記したノードと同じノードを含む変更されたデータ構造を得ることができる。
【0070】
次に、方法700はステージ740に進み、そこで、システム100は、該要素の名前を生成することができる。たとえば、要素エンジン340は、ラベル(label)属性、タイトル(title)属性、alt(オルト)属性、クラス(class)属性、及び/又は名前(name)属性にしたがって該要素の名前を生成することができる。いくつかの実施例では、該要素の名前を、要素のタイプに基づいて生成することができる。たとえば、子要素540(A)の場合は、第1のノードの「クラス(class)」属性、すなわち、「brand2 productCatItem」を、該要素の名前として使用することができる。
【0071】
次に、方法700はステージ750に進み、そこで、システム100は、該要素のハッシュコードから識別子を生成することができる。たとえば、固有識別子生成命令236及び/又は要素エンジン340は、javascriptハッシュコード関数(機能)を含むことができる。上記の変更されたデータ構造に対してかかる関数を作用させると、−211083241という値を得ることができる。その後、方法700は、ステージ760で終了することができる。
【0072】
別個のブロックを含むものとして説明したが、特定のインターフェース領域の表示が(説明した)順番に行われる必要はないことは明らかである。いくつかの実施例では、該インターフェース領域を表示のために同時に処理することができ、これによって、特定のインターフェース領域のいくつかの部分が、別のインターフェース領域の部分よりも(時間的に)前に表示装置に出力されるようにすることができる。
【0073】
開示されている例は、革新的なバッファ生成(buffer generation)のためのシステム、装置、コンピューター可読記憶媒体、及び方法を含むことができる。説明のために、
図1、
図2、及び
図3に示されている構成要素を参照していくつかの例が説明されている。図示されている構成要素の機能は、重複していてもよいが、より少ない数のもしくはより多くの数の要素及び構成要素に存在することができる。さらに、説明されている要素の機能の全てまたは一部は、いくつかの地理的に分散した位置に同時に存在するかまたは分散して存在することができる。さらに、開示されている例は、種々の環境において実施できるものであり、説明されている例には限定されない。
【0074】
さらに、本明細書及び特許請求の範囲で使用されている「1つの」、「ある」、及び「該」ないし「前記」という単数形は、文脈上別段の意味であることが示されていない限り、複数形も含むことが意図されている。さらに、種々の要素を記述するために「第1」や「第2」などの用語が本明細書において使用されている場合があるが、それらの要素はかかる用語によって限定されるものではない。それらの用語は、ある1つの要素を別の要素と区別するために使用されているにすぎない。
【0075】
さらに、
図1〜
図8に関連して説明されている動作の順番は、例示であって、限定することは意図されていない。開示されている例の範囲から逸脱することなく、追加の処理またはより少ない処理、または処理の組み合わせを使用することができ、またはそれらの処理を変更することができる。したがって、本開示は、単に、可能性のある実施例を説明したものであり、説明されている例に対して多くの変形及び修正を行うことができる。そのような全ての修正及び変形は、本開示の範囲内に含まれること及び特許請求の範囲によって保護されることが意図されている。
【0076】
詳細に上述した実施例によれば、要素識別子を生成し、及びアプリケーション用の測定されたメトリックを記録するためのシステム及び方法が開示されている。
【国際調査報告】