(57)【特許請求の範囲】
【請求項１】
１つ以上のコンピュータシステムによって実行される方法であって、
第１の複数の画像対に関する情報を受信するステップと、
前記第１の複数の画像対の中の各画像対を評価して、エラーと見なすのに適格な視覚的な対的相違を検出するステップであり、視覚的な対的相違は、位置、大きさ、色又はスタイルのうちの少なくとも１つに関する違いを有する、ステップと、
評価された前記視覚的な対的相違に基づいて予測エンジンを訓練するステップと、
第２の複数の画像対に関する情報を受信するステップであり、該第２の複数の画像対の中の各画像対は、クライアントティア環境において実行されたイベント・ドリブン・アプリケーションの視覚的なエンドユーザ体験画面の少なくとも一部を有する、ステップと、
前記予測エンジンを用いて、前記第２の複数の画像対の中の各画像対を評価して、エラーと見なすのに適格な視覚的な対的相違を検出するステップと、
エラーと見なすのに適格な少なくとも１つの対的相違を有すると評価された前記第２の複数の画像対のうちの少なくとも１つの画像対に関して、評価された該対的相違はエラーと見なされるべきでなかったとのユーザフィードバックを受信するステップと、
前記ユーザフィードバックに基づいて前記予測エンジンを再訓練するステップと、
を有する方法。
【請求項２】
前記視覚的な対的相違は、位置に関する違いを有し、画像対を評価して該視覚的な対的相違を検出するステップは、該画像対の各画像について、変位比、大きさ、色差比、色濃度、又はアースムーバーズ距離（ＥＭＤ）のうちの少なくとも１つに関する情報を評価することを有する、請求項１に記載の方法。
【請求項３】
前記視覚的な対的相違は、大きさに関する違いを有し、画像対を評価して該視覚的な対的相違を検出するステップは、該画像対の各画像について、サイズ差比、大きさ、色濃度、又はアースムーバーズ距離（ＥＭＤ）のうちの少なくとも１つに関する情報を評価することを有する、請求項１に記載の方法。
【請求項４】
前記視覚的な対的相違は、スタイルに関する違いを有し、画像対を評価して該視覚的な対的相違を検出するステップは、該画像対の各画像について、ＨＴＭＬタグ、前記クライアントティア環境のブラウザ、大きさ、色濃度、又はアースムーバーズ距離（ＥＭＤ）のうちの少なくとも１つに関する情報を評価することを有する、請求項１に記載の方法。
【請求項５】
検出された対的相違が許容可能であると決定することは、該検出された対的相違が、重大なものでなく且つ前記イベント・ドリブン・アプリケーションのブラウザ固有レンダリングに関するものであると決定することを有する、請求項１に記載の方法。
【請求項６】
前記イベント・ドリブン・アプリケーションはウェブアプリケーションである、請求項１に記載の方法。
【請求項７】
各クライアントティア環境は、
特定のウェブブラウザと、
前記特定のウェブブラウザのバージョンと、
前記特定のウェブブラウザの設定と、
前記特定のウェブブラウザが動作するコンピュータシステムの特定のオペレーティングシステム（ＯＳ）と、
前記コンピュータシステムのディスプレイの画面解像度と
を有する、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、概して、異なる複数のクライアントティア（クライアント層）環境においてアクセスされるイベント・ドリブン・アプリケーションにおける相違を決定することに関する。
【背景技術】
【０００２】
ウェブアプリケーションは、典型的なクライアント−サーバ計算モデルに従っており、大抵、幾つかのサーバ側コンポーネント及びクライアント側コンポーネントで構成される。サーバ側コンポーネントは、ウェブサーバが（典型的に、ウェブブラウザを介して遠隔ユーザから）リクエスト（要求）を受信するときに呼び出される。サーバ側での実行の結果として、様々なクライアント側コンポーネントが動的に生成され、ＨＴＭＬ（ハイパーテキスト・マークアップ言語）ページの形態でウェブブラウザに送り返される。これらのページは、ブラウザによってレンダリングされるが、例えば画像、アニメーション、スタイル情報（例えば、カスケーディング・スタイル・シート（Cascading  Style  Sheets；ＣＳＳ））及びスクリプト（例えば、ジャバスクリプト又はＶＢスクリプト）などのリソースを参照あるいは包含している。
【０００３】
ウェブブラウザは、例えばクライアント側コンポーネントを処理すること及びこれらのコンポーネントのシステムリソース（例えば、ネットワーク、ディスプレイ、ファイルシステム）とのインタラクションを管理することなど、様々な機能を取り扱う異なる複数のサブシステムで構成される。ブラウザの一部サブシステムにおいて、主なコンポーネントのうちの１つはレイアウトエンジンであり、これは、ページ内のＨＴＭＬタグを解析し、且つそのページのＣＳＳスタイルシートに含まれるスタイル情報を関連要素に適用することによって、ウェブページをレンダリングすることを担うものである。ブラウザはまた、ページに関連付けられたスクリプトがウェブページ要素に対してクエリー及び変更を行うことを可能にするため、そのメモリ内に、ウェブページの文書オブジェクトモデル（Document  Object  Model；ＤＯＭ）を維持する。ＤＯＭフォーマットには標準定義が存在するが（http://www.w3.org/DOM/を参照）、ウェブブラウザはしばしば標準から逸脱する。また、大抵のウェブページは異なる複数のブラウザ及びプラットフォーム上で当該ページを正常機能させるためにブラウザに固有のコードを有するので、異なるブラウザによって生成されるＤＯＭは非常に異なったものとなり得る。このため、異なる複数のウェブブラウザにおいて単純にＤＯＭを比較することは、そのような複数のブラウザによってレンダリングされるウェブページを比較するときに理想的でないものになり得る。
【０００４】
２つの画像を比較する基本技術は、それらのヒストグラムを比較することである。画像ヒストグラムは、その画像内の或る特定の特性の値の分布を表す。具体的には、画像のカラーヒストグラムは、その画像内の色の分布、すなわち、固定リスト内の複数の色範囲（瓶（bin））の各々に属する色を持つ画像内の画素の数を表す。明らかなように、２つの画像が同一であるとき、それらの色分布も合致することになる。その逆は真ではなく、２つの異なる画像が同じヒストグラムを有することがあり得るが、この問題は我々の問題領域には特に関係しない。
【０００５】
基本的なヒストグラムマッチング技術は、２つの画像の対応し合う瓶間の差を見出すが、これは、小さいシフトの場合に誤判定（false-positive）を生じさせ得る。アースムーバーズ距離（Earth  Mover’s  Distance；ＥＭＤ）の使用はこの問題を軽減し得る。ＥＭＤは、２つの分布の間の距離の大きさであり、直観的には、異なる瓶内の量をあちこち移動させることによって２つのヒストグラムを相等しくするのに必要な“仕事”の最小量からなる。画像内の小さい変化を無視することができるので、ＥＭＤはコンピュータ・ビジョンにおいて広く使用されている。同じ理由で、ＥＭＤは、複数のウェブブラウザの間でグラフィカルレンダリングを比較する問題（我々は、取るに足らない違いを問わずに、より大きい違い捕らえることができることを望んでいる）にとっても好ましいアプローチである。
【０００６】
イベント・ドリブン・アプリケーションは典型的に、異なる複数のクライアントティア環境においてアクセスされ得る。しかしながら、多くの場合、第１のクライアントティア環境は、第２のクライアントティア環境とは異なった、イベント・ドリブン・アプリケーションのエンドユーザ体験をもたらし得る。このような種類の問題は決して珍しくない。何故なら、開発者は大抵、開発中は１つのブラウザを用い、その後、コードをその他のブラウザに移植する傾向にあるからである。最初から複数のブラウザが考慮される場合であっても、考え得る全てのブラウザ及びバージョンについてテストを行うことは困難である。また、そのようなテストは、大抵は手動で行われ、故に、極めて時間を消費する（そして、しばしば、おざなりにされる）ものである。実際、特定ブラウザに依存しないものにしようとするクロスブラウザ問題は、殆どのウェブアプリケーション開発者によって、主要な問題であると考えられている。
【０００７】
レイアウト問題は、ウェブアプリケーションにおいて非常に一般的であり、複数のブラウザの間で、ウェブページをレンダリングすることにおいて、ユーザの目に見える違いをもたらす。これらの問題は、要素の位置、大きさ、視認性、又は外観における違いとして分類されることができる。位置及び大きさの違いは、読んで字の通りである。視認性の違いは、１つ以上のブラウザで視認できない要素からなる。最後に、要素のスタイル又はコンテンツがブラウザ間で異なるときを外観の違いとして定義することとする。
【０００８】
機能性の問題は、ウェブアプリケーションの機能に関係し、しばしば、ウェブページ内のスクリプト要素を相異なるブラウザが実行する際のそれら手法間の相違に起因する。機能性問題は典型的に、例えばウィジェットなどの特定のウェブページ要素にユーザがアクセス可能なことを制限してしまう。ユーザは、その影響を受けた要素を実行しようとするときにこの問題を確認することになるが、これらの問題は、如何なる視覚的な影響も有しないことがあるので（例えば、ボタンが、正常に機能しないながらも、正しく表示されることがある）、確認が困難なときがある。
【０００９】
不適合ブラウザ：クライアント側テクノロジは関連付けられた規格を有するが、それら規格は進化し続けている。故に、如何なる時点においても、仕様内ではあるが一部のブラウザには実装されていないか正しく実装されていないかの何れかである機能が存在する。これら問題となる機能は知られていることが多く、そのような機能のリストを維持管理して、ウェブ開発者がそれらを認識する助けとなり且つそれらのコードの好適な回避策を提供するウェブサイト（例えば、http://quirksmode.org）が存在する。図２のｓｃｒｉｐｔ．ｊｓスクリプトによって第６行で実行されるチェックが、１つのそのような回避策の典型例である。
【００１０】
ブラウザの追加機能：多くのブラウザは、開発者により大きな柔軟性を提供するために、規格の一部でない追加機能を実装している。ウェブ開発者はこれらの機能を使用することを可能な限り避けようとはしているが、利便上それらを使用している。例えば、インターネットエクスプローラは、条件付きコメント、すなわち、コメントアウトされたコードが条件付きでインターネットエクスプローラにて実行されることを可能にするコメントをサポートしている。高品質のユーザ体験を確保するため、典型的にクロスブラウザテスト及び再帰テストが取り組まれている。しかしながら、多数のビジュアル比較を伴うそのようなテストを実行する従来手法は、時間を消費するのみならず、エラーが発生しやすいものである。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
開示の実施形態は、イベント・ドリブン・アプリケーションのクロスブラウザテスト及び／又は回帰テストを実行するときに、機械学習を利用して、ビジュアル比較及びエラー予測を改善する方法を提供する。
【課題を解決するための手段】
【００１２】
一部の実施形態において、種々の要因が分析され、意味のあるエラーと見なすのに適格な対的相違（対を為す違い）が検出される。
【図面の簡単な説明】
【００１３】
【図１】２つの異なるクライアントティア環境において実行されるときのイベント・ドリブン・アプリケーションの画面例を示す図である。
【図２】クロスブラウザテスト及び／又は回帰テストを実行するプロセスの概観を例示する図である。
【図３】ビジュアル比較及びエラー予測を改善するために機械学習を組み入れる一実施形態例の概観を示す図である。
【図４】ビジュアル比較及びエラー予測を改善するために機械学習を利用する方法の一例を示す図である。
【図５ａ】イベント・ドリブン・アプリケーション例に関して、様々なクライアントティア環境にて現れ得る典型的なエラーの例を示す図である。
【図５ｂ】イベント・ドリブン・アプリケーション例に関して、様々なクライアントティア環境にて現れ得る典型的なエラーの例を示す図である。
【図６】エラー検出に使用され得るエラーの種類及び要因を記述するマトリクスの一例を示す図である。
【図７】図６のマトリクスに列挙される要因を計算するアルゴリズムの例を示す図である。
【図８】ここに開示される実施形態に関するシステムの一例を示す図である。
【図９】ここに開示される実施形態に関するコンピュータシステムを例示する図である。
【発明を実施するための形態】
【００１４】
図１は、２つの異なるクライアントティア環境におけるイベント・ドリブン・アプリケーションの状態のエンドユーザ体験を表示する２つの画面例の比較を示しており、画面１１０は、ファイアフォックス（Firefox（登録商標））環境によってレンダリングされる画面を示し、画面１２０は、インターネットエクスプローラ（Internet  Explorer（登録商標））環境によってレンダリングされる画面を示している。これら２つの画面の比較は、ビジュアル比較を必要とする４つの領域を指し示している。
【００１５】
図２は、クロスブラウザテスト及び／又は回帰テストを実行するプロセスの概観を例示している。２つの画面例は、２つの異なるクライアントティア環境におけるイベント・ドリブン・アプリケーションの状態のエンドユーザ体験を表示している（Firefox（登録商標）環境２１０及びInternet  Explorer（登録商標）環境２２０）。各々のエンドユーザ体験画面２１０、２２０から、画面の構造化表現（それぞれ、２３０、２４０）が抽出される。一部の実施形態において、画面の構造化表現は、文書オブジェクトモデル（ＤＯＭ）ツリーを有し得る。各ＤＯＭツリーは複数のＤＯＭノード又はＤＯＭ要素を有する。一部の実施形態において、各ＤＯＭノード又はＤＯＭ要素はＨＴＭＬタグを有する。
【００１６】
構造化表現２３０及び２４０から、画面に関して、対応するノード対の組２５０が決定される。目標は、各対応ノード対を視覚的に比較することである。例えば、画面の構造化表現２６０が、Firefox（登録商標）環境２３０とInternet  Explorer（登録商標）環境２４０との間で比較されるとき、各比較処理２７０が、ノード対を評価して、各ノードの画像が何らかの対を為す違い（対的相違）を表示しているかを決定する。
【００１７】
図３は、ビジュアル比較及びエラー予測を改善するために機械学習を組み入れる一実施形態例の概観を示している。初期のトレーニングフェーズにおいて、複数のクライアントティア環境で実行される多数の訓練用ウェブアプリケーション３１０による画面からの画像が比較・評価され、各画像が各クライアントティア環境におけるエンドユーザ体験画面の少なくとも一部を表すものとして、それらの画像対間の対的相違が決定される。機械学習訓練モジュール３２０が、評価された対的相違に基づいて、予測エンジン３３０を訓練する。
【００１８】
一部の実施形態において、予測エンジン３３０は、多数の相違特徴を計算あるいは評価するアルゴリズムを組み入れた決定木（デシジョンツリー）分類部に基づいて対的相違を分類する方法を学習する。
【００１９】
テストフェーズにおいて、予測エンジン３３０を使用してウェブアプリケーション３４０がテストされ、それからエラーレポート３５０が生成される。エラーレポート３５０は、幾らかの数の誤判定エラーを含むことがあり、予測エンジン３３０を再訓練するために、誤判定エラーを検出するユーザフィードバック３６０が適用される。
【００２０】
図４は、ビジュアル比較及びエラー予測を改善するために機械学習を利用する方法の一例を示している。ステップ４１０でトレーニングフェーズが開始し、訓練用の画像対を用いて予測エンジンが訓練される。訓練用画像対は、画像対間の対的相違を適格なエラー（又はそうではない）として分類することによって評価される（ステップ４２０）。ステップ４３０にて、予測エンジンが、機械学習技術及び様々な分類アルゴリズムを用いて、評価された対的相違から学習する。そして、ステップ４４０でテストフェーズが開始し、複数のクライアントティア環境において実行されたイベント・ドリブン・アプリケーションの状態を表すエンドユーザ体験画面からの画像が受信されて対を為すようにマッチングされる。ステップ４５０にて、予測エンジンを用いてマッチングされた画像対が評価されてエラー検出される。エラーのログの検査を受け、ユーザは、予測エンジンの補正及び再訓練（ステップ４３０）のためにフィードバックを送り得る（ステップ４６０）。
【００２１】
図５ａ及び５ｂは、イベント・ドリブン・アプリケーション例に関して、様々なクライアントティア環境にて現れ得る典型的なエラーの例を示している。図５ａのエラー例１に示されるように、一部のクライアントティア環境においては、そのクライアントティア環境におけるイベント・ドリブン・アプリケーションの挙動によって画像が隠されてしまい得る。
【００２２】
図６は、エラー検出に使用され得るエラーの種類及び要因を記述するマトリクスの一例を示している。図６に示すように、画像、幾何学構成、及びＤＯＭ／ブラウザ環境という、３つの大範疇の要因群が評価され得る。これらの要因の様々な組み合わせを評価することで、位置、大きさ、スタイル、これらの組み合わせなどを含む複数の範疇のエラーが検出され得る。
【００２３】
図７は、図６のマトリクスに列挙される要因を計算するアルゴリズムの例を示している。
【００２４】
特定の実施形態は、ネットワーク環境内に実装され得る。図８は、ウェブベースのサービスとしてクロスブラウザ互換性チェックを提供するのに好適な、一例に係るネットワーク環境６００を示している。ネットワーク環境６００は、１つ以上のサーバ６２０と１つ以上のクライアント６３０とを相互に結合するネットワーク６１０を含んでいる。特定の実施形態において、ネットワーク６１０は、イントラネット、エクストラネット、仮想プライベートネットワーク（ＶＰＮ）、ローカルエリアネットワーク（ＬＡＮ）、無線ＬＡＮ（ＷＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、インターネットの一部、若しくはその他のネットワーク、又は２つ以上のこれらネットワークの組み合わせである。この開示は、如何なる好適なネットワーク６１０をも意図している。
【００２５】
１つ以上のリンク６５０が、サーバ６２０又はクライアント６３０をネットワーク６１０に結合する。特定の実施形態において、１つ以上のリンク６５０は各々、１つ以上の有線リンク、無線リンク、又は光リンクを含む。特定の実施形態において、１つ以上のリンク６５０は各々、イントラネット、エクストラネット、ＶＰＮ、ＬＡＮ、ＷＬＡＮ、ＷＡＮ、ＭＡＮ、インターネットの一部、若しくはその他のリンク、又は２つ以上のこれらリンクの組み合わせを含む。この開示は、サーバ６２０及びクライアント６３０をネットワーク６１０に結合する如何なる好適なリンク６５０をも意図している。
【００２６】
特定の実施形態において、各サーバ６２０は、単一のサーバであってもよいし、複数のコンピュータ又は複数のデータセンターに跨る分散サーバであってもよい。サーバ６２０は、例えば、限定ではなく、ウェブサーバ、ニュースサーバ、メイルサーバ、メッセージサーバ、広告サーバ、ファイルサーバ、アプリケーションサーバ、交換サーバ、データベースサーバ、又はプロキシサーバなど、様々な種類のサーバとし得る。特定の実施形態において、各サーバ６２０は、そのサーバ６２０によって実現あるいは支援される適切な機能を実行するための、ハードウェア、ソフトウェア、若しくは埋込ロジック要素、又は２つ以上のこれら要素の組み合わせを含み得る。例えば、ウェブサーバは一般的に、ウェブページ、又はウェブページの特定の要素、を含むウェブサイトのホストを務めることが可能である。より具体的には、ウェブサーバは、ＨＴＭＬファイル又はその他のファイルタイプのホストとなることができ、あるいは要求を受けてファイルを動的に作成あるいは構成して、クライアント６３０からのＨＴＴＰ又はその他の要求に応答して該ファイルをクライアント６３０に通信することができる。メイルサーバは一般的に、様々なクライアント６３０に電子メイルサービスを提供することができる。データベースサーバは一般的に、１つ以上のデータ庫に格納されたデータを管理するためのインタフェースを提供することができる。
【００２７】
特定の実施形態において、１つ以上のサーバ６２０に、１つ以上のリンク６５０を介して、１つ以上のデータストレージ６４０が通信可能に結合され得る。特定の実施形態において、データストレージ６４０は、様々な種類の情報を保管するために使用され得る。特定の実施形態において、データストレージ６４０に格納される情報は、特定のデータ構造に従って編成され得る。特定の実施形態において、各データストレージ６４０はリレーショナルデータベースとし得る。特定の実施形態は、サーバ６２０又はクライアント６３０が、データストレージ６４０に格納された情報を管理する（例えば、検索、修正、追加あるいは消去する）ことを可能にするインタフェースを提供し得る。
【００２８】
特定の実施形態において、各クライアント６３０は、ハードウェア、ソフトウェア、若しくは埋込ロジック要素、又は２つ以上のこれら要素の組み合わせを含み、クライアント６３０によって実現あるいは支援される適切な機能を実行することが可能である。例えば、限定ではなく、クライアント６３０は、デスクトップ型コンピュータシステム、ノート型コンピュータシステム、ネットブック型コンピュータシステム、手持ち式電子機器、又は携帯電話とし得る。この開示は、如何なる好適なクライアント６３０をも意図している。クライアント６３０は、クライアント６３０の位置のネットワークユーザがネットワーク６１０にアクセスすることを可能にし得る。クライアント６３０は、そのユーザが、その他のクライアント６３０の他ユーザと通信することを可能にしてもよい。
【００２９】
クライアント６３０は、例えば、マイクロソフト・インターネットエクスプローラ、グーグル・クローム又はモジラ・ファイアフォックスなどのウェブブラウザ６３２を有することができ、また、１つ以上のアドオン、プラグイン、又は例えばツールバー若しくはヤフー・ツールバーなどのその他のエクステンションを有していてもよい。クライアント６３０のユーザは、ＵＲＬ又はウェブブラウザ６３２をサーバ６２０に導くその他のアドレスを入力することができ、ウェブブラウザ６３２は、ハイパーテキスト転送プロトコル（ＨＴＴＰ）要求を生成して、該ＨＴＴＰ要求をサーバ６２０に通信し得る。サーバ６２０は、ＨＴＴＰ要求を受理し、該ＨＴＴＰ要求に応じた１つ以上のハイパーテキスト・マークアップ言語（ＨＴＭＬ）ファイルをクライアント６３０に通信し得る。クライアント６３０は、サーバ６２０からのＨＴＭＬファイルに基づいて、ユーザへの提示にためにウェブページを表示し得る。この開示は、如何なる好適なウェブページファイルをも意図している。非限定的な一例として、ウェブページは、具体的なニーズに従って、ＨＴＭＬファイル、拡張可能ハイパーテキスト・マークアップ言語（ＸＨＴＭＬ）ファイル、又は拡張マークアップ言語（ＸＭＬ）ファイルから表示を行い得る。このようなページはまた、例えば、限定ではなく、ＪＡＶＡスクリプト（登録商標）、ＪＡＶＡ（登録商標）、マイクロソフト・シルバーライトで記述されたものなどのスクリプト、例えばＡＪＡＸ（Asynchronous  JavaScript  and  XML）などのマークアップ言語とスクリプトとの組み合わせ、及びこれらに類するものを実行し得る。ここでは、適宜、ウェブページへの言及は、（ブラウザがウェブページを表示するために使用する）１つ以上の対応するウェブページファイルを包含し、その逆も然りである。
【００３０】
特定の実施形態において、クロスブラウザ互換性チェックサービスがサーバ６２０に常駐し且つ実行される。このサービスのユーザは、該ユーザに関するクライアント６３０上で実行されるウェブブラウザ６３２を介して該サービスにアクセスし得る。
【００３１】
特定の実施形態は、１つ以上のコンピュータシステム上で実現され得る。図９は、一例に係るコンピュータシステム７００を示している。特定の実施形態において、１つ以上のコンピュータシステム７００が、ここに記載あるいは図示した１つ以上の方法の１つ以上のステップを実行する。特定の実施形態において、１つ以上のコンピュータシステム７００が、ここに記載あるいは図示した機能を提供する。特定の実施形態において、１つ以上のコンピュータシステム７００上で起動されるソフトウェアが、ここに記載あるいは図示した１つ以上の方法の１つ以上のステップを実行し、あるいは、ここに記載あるいは図示した機能を提供する。特定の実施形態は、１つ以上のコンピュータシステム７００の１つ以上の部分を含む。
【００３２】
この開示は、如何なる好適な数のコンピュータシステム７００をも意図している。この開示は、如何なる物理形態を採るコンピュータシステム７００をも意図している。非限定的な一例として、コンピュータシステム７００は、組込型コンピュータシステム、システム・オン・チップ（ＳＯＣ）、シングルボード・コンピュータシステム（ＳＢＣ）（例えば、コンピュータ・オン・モジュール（ＣＯＭ）若しくはシステム・オン・モジュール（ＳＯＭ）など）、デスクトップ型コンピュータシステム、ラップトップ型又はノート型のコンピュータシステム、対話式キオスク端末、メインフレーム、メッシュ状コンピュータシステム、携帯電話、携帯情報端末（ＰＤＡ）、サーバ、又はこれらの２つ以上の組み合わせとし得る。必要に応じて、コンピュータシステム７００は、単一あるいは分散型の；複数の位置にまたがる；複数の機械にまたがる；あるいはクラウド（１つ以上のネットワーク内に１つ以上のクラウド要素を含み得る）内の；１つ以上のコンピュータシステム７００を含んでいてもよい。必要に応じて、１つ以上のコンピュータシステム７００は、ここに記載あるいは図示した１つ以上の方法の１つ以上のステップを、空間的あるいは時間的な実質的な制約なく実行し得る。非限定的な一例として、１つ以上のコンピュータシステム７００は、ここに記載あるいは図示した１つ以上の方法の１つ以上のステップを、リアルタイムあるいはバッチモードで実行し得る。必要に応じて、１つ以上のコンピュータシステム７００は、相異なる時点で、あるいは相異なる位置で、ここに記載あるいは図示した１つ以上の方法の１つ以上のステップを実行してもよい。
【００３３】
特定の実施形態において、コンピュータシステム７００は、プロセッサ７０２、メモリ７０４、ストレージ７０６、入力／出力（Ｉ／Ｏ）インタフェース７０８、通信インタフェース７１０、及びバス７１２を含んでいる。この開示は、特定の構成にされた特定数の特定の構成要素を有する特定のコンピュータシステムを図示して説明しているが、この開示は、如何なる好適配置にされた如何なる好適数の如何なる好適構成要素を有する如何なる好適なコンピュータシステムをも意図している。
【００３４】
特定の実施形態において、プロセッサ７０２は、例えばコンピュータプログラムを構築する命令などの命令を実行するハードウェアを含む。非限定的な一例として、命令を実行するために、プロセッサ７０２は、内部レジスタ、内部キャッシュ、メモリ７０４、又はストレージ７０６から命令を取り出し（すなわち、フェッチし）；それを復号化して実行し；その後、１つ以上の結果を内部レジスタ、内部キャッシュ、メモリ７０４、又はストレージ７０６に書き込み得る。特定の実施形態において、プロセッサ７０２は、データ、命令又はアドレス用の１つ以上の内部キャッシュを含み得る。この開示は、プロセッサ７０２が必要に応じて、如何なる好適数の如何なる好適な内部キャッシュを含むことも意図している。非限定的な一例として、プロセッサ７０２は、１つ以上の命令キャッシュと、１つ以上のデータキャッシュと、１つ以上のトランスレーション・ルックアサイド・バッファ（ＴＬＢ）とを含み得る。命令キャッシュ内の命令は、メモリ７０４又はストレージ７０６内の命令の複製としてもよく、命令キャッシュは、プロセッサ７０２によるこれら命令の取り出しを高速化し得る。データキャッシュ内のデータは、メモリ７０４又はストレージ７０６内の、プロセッサ７０２にて実行されている命令が処理すべきデータの複製；プロセッサ７０２にて実行される後続の命令によるアクセスのための、あるいはメモリ７０４又はストレージ７０６に書き込むための、プロセッサ７０２にて実行された以前の命令の結果；又はその他の好適データとし得る。データキャッシュは、プロセッサ７０２による読み出し処理又は書き込み処理を高速化し得る。ＴＬＢは、プロセッサ７０２のために仮想アドレス変換を高速化し得る。特定の実施形態において、プロセッサ７０２は、データ、命令又はアドレス用の１つ以上の内部レジスタを含み得る。この開示は、プロセッサ７０２が適宜、如何なる好適数の如何なる好適な内部レジスタを含むことをも意図している。必要に応じて、プロセッサ７０２は、１つ以上の演算論理ユニット（ＡＬＵ）を含んでいてもよく；マルチコアプロセッサであってもよく；あるいは１つ以上のプロセッサ７０２を含んでいてもよい。この開示は特定のプロセッサを図示して説明しているが、この開示は如何なる好適なプロセッサをも意図している。
【００３５】
特定の実施形態において、メモリ７０４は、プロセッサ７０２が実行する命令、又はプロセッサ７０２が処理するデータを格納するメインメモリを含む。非限定的な一例として、コンピュータシステム７００はストレージ７０６又は別のソース（例えば、別のコンピュータシステム７００など）からメモリ７０４に命令をロードし得る。その後、プロセッサ７０２は、メモリ７０４から内部レジスタ又は内部キャッシュに命令をロードし得る。命令を実行するため、プロセッサ７０２は、内部レジスタ又は内部キャッシュから命令を取り出し、取り出した命令を復号化する。命令の実行中又は実行後、プロセッサ７０２は、１つ以上の結果（中間結果又は最終結果とし得る）を内部レジスタ又は内部キャッシュに書き込み得る。そして、プロセッサ７０２は、それらの結果のうちの１つ以上をメモリ７０４に書き込み得る。特定の実施形態において、プロセッサ７０２は、１つ以上の内部レジスタ若しくは内部キャッシュ又はメモリ７０４内の命令のみを実行してもよく（ストレージ７０６又はその他の場所の命令を実行するのとは異なる）、また、１つ以上の内部レジスタ若しくは内部キャッシュ又はメモリ７０４内のデータのみを処理してもよい（ストレージ７０６又はその他の場所のデータを処理するのとは異なる）。１つ以上のメモリバス７１２（各々がアドレスバス及びデータバスを含み得る）が、プロセッサ７０２をメモリ７０４に結合してもよい。バス７１２は、後述のように、１つ以上のメモリバスを含み得る。特定の実施形態において、１つ以上のメモリ管理装置（ＭＭＵ）が、プロセッサ７０２とメモリ７０４との間に存在し、プロセッサ７０２により要求されるメモリ７０４へのアクセスを容易にし得る。特定の実施形態において、メモリ７０４は、ランダムアクセスメモリ（ＲＡＭ）を含む。このＲＡＭは、適当であれば、揮発性メモリであってもよい。必要に応じて、このＲＡＭはダイナミックＲＡＭ（ＤＲＡＭ）又はスタティックＲＡＭ（ＳＲＡＭ）にされ得る。また、必要に応じて、このＲＡＭは、シングルポート又はマルチポートのＲＡＭにされ得る。この開示は、如何なる好適なＲＡＭをも意図している。メモリ７０４は、必要に応じて、１つ以上のメモリ７０４を含んでいてもよい。この開示は特定のメモリを図示して説明しているが、この開示は如何なる好適なメモリをも意図している。
【００３６】
特定の実施形態において、ストレージ７０６は、データ又は命令用の大容量記憶装置を含む。非限定的な一例として、ストレージ７０６は、ＨＤＤ、フロッピーディスク（登録商標）ドライブ、フラッシュメモリ、光ディスク、磁気光ディスク、磁気テープ、若しくはユニバーサル・シリアル・バス（ＵＳＢ）ドライブ、又はこれらの２つ以上の組み合わせを含み得る。ストレージ７０６は、必要に応じて、リムーバブル（取り外し可能）あるいは非リムーバブル（すなわち、固定）のメディアを含み得る。ストレージ７０６は、必要に応じて、コンピュータシステム７００の内部にあってもよいし、外部にあってもよい。特定の実施形態において、ストレージ７０６は、不揮発性のソリッドステートメモリである。特定の実施形態において、ストレージ７０６は、読み出し専用メモリ（ＲＯＭ）を含む。必要に応じて、このＲＯＭは、マスクプログラムされたＲＯＭ、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、電気的消去再書込可能ＲＯＭ（ＥＡＲＯＭ）、若しくはフラッシュメモリ、又はこれらの２つ以上の組み合わせとし得る。この開示は、如何なる好適な物理形態を有する大容量記憶装置７０６をも意図している。ストレージ７０６は、必要に応じて、プロセッサ７０２とストレージ７０６との間での通信を容易にする１つ以上のストレージ制御装置を含み得る。必要に応じて、ストレージ７０６は１つ以上のストレージ７０６を含んでいてもよい。この開示は特定のストレージを図示して説明しているが、この開示は如何なる好適なストレージをも意図している。
【００３７】
特定の実施形態において、Ｉ／Ｏインタフェース７０８は、コンピュータシステム７００と１つ以上のＩ／Ｏ装置との間での通信のための１つ以上のインタフェースを提供するハードウェア、ソフトウェア、又はこれら双方を含む。コンピュータシステム７００は、必要に応じて、これらＩ／Ｏ装置のうちの１つ以上を含んでいてもよい。これらＩ／Ｏ装置のうちの１つ以上は、個人とコンピュータシステム７００との間での通信を可能にし得る。非限定的な一例として、Ｉ／Ｏ装置は、キーボード、キーパッド、マイク、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチルカメラ、スタイラスペン、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、その他の好適なＩ／Ｏ装置、又はこれらの２つ以上の組み合わせを含み得る。Ｉ／Ｏ装置は、１つ以上のセンサを含んでいてもよい。この開示は、如何なる好適なＩ／Ｏ装置、及びそれ用の如何なる好適なＩ／Ｏインタフェース７０８をも意図している。必要に応じて、Ｉ／Ｏインタフェース７０８は、プロセッサ７０２がこれらのＩ／Ｏ装置のうちの１つ以上を駆動することを可能にする１つ以上の装置又はソフトウェアドライバを含んでいてもよい。Ｉ／Ｏインタフェース７０８は、必要に応じて、１つ以上のインタフェース７０８を含んでいてもよい。この開示は特定のＩ／Ｏインタフェースを図示して説明しているが、この開示は如何なる好適なＩ／Ｏインタフェースをも意図している。
【００３８】
特定の実施形態において、通信インタフェース７１０は、コンピュータシステム７００と、１つ以上のその他のコンピュータシステム若しくは１つ以上のネットワークとの間での通信（例えば、パケットベースの通信など）のための１つ以上のインタフェースを提供するハードウェア、ソフトウェア、又はこれら双方を含む。非限定的な一例として、通信インタフェース７１０は、イーサネット（登録商標）若しくはその他のワイヤベースのネットワークと通信するためのネットワークインタフェースコントローラ（ＮＩＣ）若しくはネットワークアダプタ、又は例えばＷｉ−Ｆｉネットワークなどの無線ネットワークと通信するための無線ＮＩＣ（ＷＮＩＣ）若しくは無線アダプタを含み得る。この開示は、如何なる好適なネットワーク及びそれ用の如何なる好適な通信インタフェース７１０をも意図している。非限定的な一例として、コンピュータシステム７００は、アドホックネットワーク、パーソナルエリアネットワーク（ＰＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、若しくはインターネットの１つ以上の部分、又はこれらの２つ以上の組み合わせと通信し得る。これらのネットワークのうちの１つ以上の１つ以上の部分は、有線であってもよいし、無線であってもよい。一例として、コンピュータシステム７００は、無線ＰＡＮ（ＷＰＡＮ）（例えば、ブルートゥース（登録商標）ＷＰＡＮなど）、Ｗｉ−Ｆｉネットワーク、Ｗｉ−ＭＡＸネットワーク、携帯電話ネットワーク（例えば、グローバル・システム・フォー・モバイル・コミュニケーションズ（ＧＳＭ(登録商標)）ネットワークなど）、若しくはその他の好適な無線ネットワーク、又はこれらの２つ以上の組み合わせと通信し得る。コンピュータシステム７００は、必要に応じて、これらのネットワークの何れかのための如何なる好適な通信インタフェース７１０を含んでいてもよい。この開示は特定の通信インタフェースを図示して説明しているが、この開示は如何なる好適な通信インタフェースをも意図している。
【００３９】
特定の実施形態において、バス７１２は、コンピュータシステム７００の構成要素を相互に結合するための、ハードウェア、ソフトウェア、又はこれら双方を含む。非限定的な一例として、バス７１２は、アクセラレーテッド・グラフィクス・ポート（ＡＧＰ）若しくはその他のグラフィック専用バス、ＥＩＳＡ（Extended  Industry  Standard  Architecture）バス、フロントサイドバス（ＦＳＢ）、ハイパートランスポート（ＨＴ）インターコネクト、業界標準アーキテクチャ（ＩＳＡ）バス、インフィニバンド・インターコネクト、ＬＰＣ（low-pin-count）バス、メモリバス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、コンピュータ用拡張バスアーキテクチャ（ＰＣＩ）バス、ＰＣＩエクスプレス（ＰＣＩ−Ｘ）バス、シリアルＡＴＡ（ＳＡＴＡ）バス、ＶＬＢ（Video  Electronics  Standards  Association  local）バス、若しくはその他の好適なバス、又はこれらの２つ以上の組み合わせを含み得る。バス７１２は、必要に応じて、１つ以上のバス７１２を含んでいてもよい。この開示は特定のバスを図示して説明しているが、この開示は如何なる好適なバス又はインターコネクトをも意図している。
【００４０】
ここで、コンピュータ読み取り可能記憶媒体への言及は、１つ以上の一過性でない有形のコンピュータ読み取り可能記憶媒体保有構造をも包含するものである。非限定的な一例として、コンピュータ読み取り可能記憶媒体は、必要に応じて、半導体ベースあるいはその他の集積回路（ＩＣ）（例えば、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、又は特定用途向けＩＣ（ＡＳＩＣ）など）、ハードディスク、ＨＤＤ、ハイブリッド式ハードドライブ（ＨＨＤ）、光ディスク、光ディスクドライブ（ＯＤＤ）、磁気光ディスク、磁気光ドライブ、フロッピーディスク（登録商標）、フロッピーディスクドライブ（ＦＤＤ）、磁気テープ、ホログラフィック記憶媒体、ソリッドステートドライブ（ＳＳＤ）、ＲＡＭドライブ、セキュアデジタル（ＳＤ）カード、セキュアデジタルドライブ、若しくはその他の好適なコンピュータ読み取り可能記憶媒体、又はこれらの２つ以上の組み合わせを含み得る。コンピュータ読み取り可能な一過性でない記憶媒体は、必要に応じて、揮発性、不揮発性、又は揮発性と不揮発性との組み合わせとし得る。
【００４１】
この開示は、何らかの好適なストレージを実現する１つ以上のコンピュータ読み取り可能記憶媒体を意図している。特定の実施形態において、コンピュータ読み取り可能記憶媒体は、必要に応じて、プロセッサ７０２の１つ以上の部分（例えば、１つ以上の内部レジスタ若しくはキャッシュなど）、メモリ７０４の１つ以上の部分、ストレージ７０６の１つ以上の部分、又はこれらの組み合わせを実現してもよい。特定の実施形態において、コンピュータ読み取り可能記憶媒体はＲＡＭ又はＲＯＭを実現する。特定の実施形態において、コンピュータ読み取り可能記憶媒体は揮発性あるいは永続的なメモリを実現する。特定の実施形態において、１つ以上のコンピュータ読み取り可能記憶媒体がソフトウェアを具現化する。ここで、ソフトウェアへの言及は適宜、１つ以上のアプリケーション、バイトコード、１つ以上のコンピュータプログラム、１つ以上の実行ファイル、１つ以上の命令、ロジック、機械語、１つ以上のスクリプト、又はソースコードを包含するものであり、この逆もまた然りである。特定の実施形態において、ソフトウェアは、１つ以上のアプリケーション・プログラミング・インタフェース（ＡＰＩ）を含む。この開示は、如何なる好適なプログラミング言語又は複数のプログラミング言語の組み合わせで書き込まれ、あるいはその他の方法で表現された、如何なる好適なソフトウェアをも意図している。特定の実施形態において、ソフトウェアはソースコード又はオブジェクトコードとして表現され得る。特定の実施形態において、ソフトウェアは、例えばＣ、Ｐｅｒｌ又はこれらの好適な拡張版など、より高級（高水準）なプログラミング言語で表現される。特定の実施形態において、ソフトウェアは、例えばアセンブリ言語（又は機械語）など、より低水準のプログラミング言語で表現される。特定の実施形態において、ソフトウェアはＪＡＶＡ（登録商標）で表現される。特定の実施形態において、ソフトウェアはハイパーテキスト・マークアップ言語（ＨＴＭＬ）、拡張マークアップ言語（ＸＭＬ）、又はその他の好適なマークアップ言語で表現される。
【００４２】
ここでは、“又は”は、その他のことが明示的或いは文脈的に指し示されない限り、両立的なものであって排他的なものではない。故に、“Ａ又はＢ”は、その他のことが明示的或いは文脈的に指し示されない限り、“Ａ、Ｂ、又は双方”を意味する。また、“及び”は、その他のことが明示的或いは文脈的に指し示されない限り、結合及びそれぞれの双方である。故に、ここでは、“Ａ及びＢ”は、その他のことが明示的或いは文脈的に指し示されない限り、“結合的あるいは個別的にＡ及びＢ”を意味する。
【００４３】
この開示は、ここで例示した実施形態への、当業者に理解されるであろう全ての変更、代用、変形、改変及び改良を包含するものである。同様に、添付の請求項は適宜、ここで例示した実施形態への当業者に理解されるであろう全ての変更、代用、変形、改変及び改良を包含するものである。また、特定の機能を実行するように適応され、構成され、可能にされ、設定され、有効にされ、動作可能にされ、あるいは動作する装置若しくはシステム又はそれらの構成要素への、請求項中での参照は、装置、システム又は構成要素がそのように適応、構成、可能化、設定、有効化、動作可能化あるいは動作される限り、それ又はその特定機能が活性化され、オンにされ、あるいは解除されようとなかろうと、その装置、システム又は構成要素を包含するものである。
【符号の説明】
【００４４】
１１０、１２０、２１０、２２０  画面
２３０、２４０  構造化表現
２５０  ノード対
２７０  比較処理
３１０  訓練用ウェブアプリケーション
３２０  機械学習訓練モジュール
３３０  予測エンジン
３４０  ウェブアプリケーション
３５０  エラーレポート
３６０  ユーザフィードバック
６００  ネットワーク環境
６１０  ネットワーク
６２０  サーバ
６３０  クライアント
６３２  ウェブブラウザ
６４０  データストレージ
６５０  リンク
７００  コンピュータシステム
７０２  プロセッサ
７０４  メモリ
７０６  ストレージ
７０８  Ｉ／Ｏインタフェース
７１０  通信インタフェース
７１２  バス
【図１】
0005942750.tif 000002
【図２】
0005942750.tif 000003
【図３】
0005942750.tif 000004
【図４】
0005942750.tif 000005
【図５ａ】
0005942750.tif 000006
【図５ｂ】
0005942750.tif 000007
【図６】
0005942750.tif 000008
【図７】
0005942750.tif 000009
【図８】
0005942750.tif 000010
【図９】
0005942750.tif 000011