検索式提供方法、プログラム、及び、検索式提供システム
【課題】HTMLやXMLなどの木構造データが変更されても、目的のノードを一意に指定するような検索式を効率的に生成する。
【解決手段】木構造によって実装されるアプリケーションを実行する計算機が、前記アプリケーションによって表示された画面の中の画面部位を指定する検索式を提供する検索式提供方法であって、前記方法は、前記計算機が、ユーザによって選択された前記画面部位を取得し、前記計算機が、前記取得された画面部位を一意に指定する前記検索式の複数の候補を生成し、前記計算機が、前記生成された複数の候補ごとに、一つ以上の特徴量を求め、前記計算機が、前記求められた一つ以上の特徴量を、加算することによって前記複数の候補の頑健性を算出し、前記計算機が、前記算出された頑健性と、前記複数の候補とを表示する。
【解決手段】木構造によって実装されるアプリケーションを実行する計算機が、前記アプリケーションによって表示された画面の中の画面部位を指定する検索式を提供する検索式提供方法であって、前記方法は、前記計算機が、ユーザによって選択された前記画面部位を取得し、前記計算機が、前記取得された画面部位を一意に指定する前記検索式の複数の候補を生成し、前記計算機が、前記生成された複数の候補ごとに、一つ以上の特徴量を求め、前記計算機が、前記求められた一つ以上の特徴量を、加算することによって前記複数の候補の頑健性を算出し、前記計算機が、前記算出された頑健性と、前記複数の候補とを表示する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、検索式提供方法に関し、特に、GUI画面が木機構データによって実装されるアプリケーションの検索式提供方法に関する。
【背景技術】
【0002】
近年、Webブラウザに代表されるように、HTML又はXMLなどの木構造データによって、アプリケーションのGUI画面を設計及び実装する技術が主流になりつつある。このように、木構造データによってGUI(Grafic User Interface)画面を設計及び実装するアプリケーションを、以下では木構造アプリと呼ぶ。
【0003】
図12は、従来技術のWebブラウザに表示された木構造アプリのウィンドウ画面404を示す説明図である。
【0004】
図12は、発注システムのウィンドウ画面404を木構造アプリによって実装した場合の、ウィンドウ画面404の例である。GUI部位102には、「合計」の表示があり、GUI部位101には、金額の合計値が表示される。
【0005】
図13は、従来技術のWebブラウザが保持する木構造データを示す説明図である。
【0006】
図13に示す木構造データは、ルートノード201が最も上位であり、ルートノード201は”/”によって示される。htmlノード202は、ルートノード201の子ノードであり、headノード203とbodyノード205とは、htmlノード202の子ノードである。同様に、他ノードにも親子関係があり、図13は、木構造データにおける親子関係を階層構造によって示す。
【0007】
尚、全ての木構造データは大きすぎて図示できないため、図13における木構造データは、短縮されて表示される。各ノードの末尾には、”−”、”+”又は”L”などの記号が付され、これらの記号は、木構造データの各ノードが省略されているか否かを示す。“−”は子ノードが展開表示されていることを示し、“+”は子ノードが非展開表示、すなわち短縮されていることを示し、”L”は子ノードを持たない葉ノードであることを示す。
【0008】
木構造アプリにおいて、ウィンドウ画面404上のある部位を選択することは、木構造データ上のあるノードを指定することと等価である。例えば、図12において「¥365,300円」と表示されるGUI部位101は、図13に示すtdノード226に対応する。すなわち、木構造データのtdノード226を書き換えれば、書き換えられた結果は、直ちにGUI部位101の表示に反映される。
【0009】
このような木構造アプリの特徴をいかして、既存アプリの使い勝手を向上させるため、ウィンドウ画面404上の所望のGUI部位に対応するノードを木構造データから検索し、当該ノードのデータを読み書きしたり、加工したりするなどのカスタマイズを実装する技術が提案されている。以下では、このような技術をカスタマイズ技術と呼ぶ。
【0010】
GUI画面の所望の部位を一意に指定するためには、木構造データにおいて対応するノードを一意に指定する検索式が必要である。従来、カスタマイズ技術を実装するエンジニアは、そのようなノードを一意に指定する検索式を、人手で作成してきた。尚、この技術分野において、検索式の標準規格はXPathであるので、以下では、検索式の替わりにXPath(例えば、非特許文献1参照)と記載する。
【0011】
また、そのような人手によるXPath作成の作業を支援するための技術が提案されている(例えば、非特許文献2参照)。
【0012】
非特許文献2の技術によれば、エンジニアは、木構造アプリの実際のGUI画面を介して、インタラクティブにXPathを作成する。すなわち、エンジニアがXPathを知りたい画面の部位の上でマウスを右クリックすると、ダイレクトXPathが生成及び表示される。ここで、ダイレクトXPathとは、ルートノードから目的のノードに至るまでに経由する全ノードを書き出し、以下のように表現したものである。
【0013】
/html/body/form/table/tbody/tr[2]/
td/table[@id='TotalOrder']/tbody/tr[5]/td[2] ・・・(式1)
式1は、ノード226のXPathをダイレクトXPathによって表示したものである。数1のうち、先頭の文字列の”/html”は、「ルートノード201は一つのhtmlノード202を子ノードとして持ち、そのhtmlノード202が選択される」を意味する。また、”/”ノードを1番目のノードと数え、”html”ノードを2番目のノードと数えた場合に、6番目のノードと7番目のノードである”tbody/tr[2]”は、「tbodyノード210は、複数のtrノードを子ノードとして持ち、その複数のtrノードのうち、第2番目のtrノード214が選択される」を意味する。
【0014】
また、数1のうち8番目のノードと9番目のノードとの”td/table[@id='TotalOrder']”は、「tdノード215は複数のtableノードを子ノードとして持ち、複数のtableノードのうち、id属性が’TotalOrder’に等しいtableノード217が選択される」を意味する。
【0015】
この数1のうち8番目のノードと9番目のノードとの記載は、6番目のノードと7番目のノードとの記載のように”td/table[2]”と表現されてもよいが、図13に示すtableノード217のようにid属性を持つ場合には、id属性を利用した方がより直接的に目的のノードを指定できるため、数1に示す記載に置き換えられる。この様に、8番目のノードと9番目のノードとの間の記載は、ダイレクトXPathが一意に定まり、ダイレクトXPathによって目的のノードを一意に指定できる。
【0016】
尚、一般に目的のノードを指定するXPathの表現は、ダイレクトXPathの他にも多数存在する。例えば、以下のような表現でも同じノードを一意に指定できる。
【0017】
/html//table[@id='TotalOrder']/tbody/tr[5]/td[2] ・・・(式2)
//tr[td/b/text()='合計']/td[2] ・・・(式3)
式2と式3とは、ともに数1が指定するノードと同じノードを指定する。式2のうち先頭から2番目のスラッシュと4番目のスラッシュとの間の”/table[@id='TotalOrder']”は、「htmlノード202の配下にある全tableノードのうち、id属性が’TotalOrder’に等しいtableノードが選択される」を意味する。
【0018】
また、式3のうち先頭から1番目のスラッシュと3番目のスラッシュとの間の”//tr[td/b/text()='合計']”は、「ルートノード201の配下にある全trノードのうち、そのノードを起点としてXPath”td/b”によって指定されるbノードのテキストが’合計’に等しいtrノードが選択される」を意味する。
【0019】
このように表現は多種多様であり、どのような表現が最適なのかはXPathを利用する目的に依存する。
【0020】
非特許文献2の技術は、エンジニアが入力したXPathに適合する全ノードを抽出及び列挙して、画面に表示する機能を持つ。この機能によって、エンジニアは、思い付いたXPathについて、目的のノードを一意に指定するか否かをテストする事ができる。
【先行技術文献】
【非特許文献】
【0021】
【非特許文献1】(財)日本規格協会、”XMLパス言語(XPath) JIS X 4160:2007”
【非特許文献2】Viktor Zigo、”XPather”、[online]、[平成21年11月27日検索]、インターネット、<URL:http://xpath.alephzarro.com/>
【発明の概要】
【発明が解決しようとする課題】
【0022】
木構造アプリのGUI構造、すなわち木構造データは、頻繁に変更される傾向が強い。例えば、ポータルサイトのようなWebアプリの場合、GUI画面上に「ニュース」、又は「お知らせ」などの情報が表示されるが、情報の件数は日々異なるため、GUI画面に対応する木構造データも日々異なる。
【0023】
また、例えば、Webメールの場合、画面上にメールのリストが表示されるが、リストの件数は時刻毎に異なるため、画面の木構造データも頻繁に変更される。また、エンドユーザの要望を受け、画面レイアウトを変更する場合も少なくなく、その結果画面の木構造データも変更される。
【0024】
カスタマイズ技術を利用するエンジニアは、木構造データに前述のような変更が生じても目的のノードを正しく指定する頑健なXPath、すなわちロバストネスが高いXPathを作成する必要がある。頑健なXPathを作成できない場合、木構造データの変更の度に、エンジニアがカスタマイズ作業をやり直さなくてはならない。
【0025】
非特許文献2において提案されているダイレクトXPathは、そのような木構造データの変更に脆弱である傾向が強い。すなわち、非特許文献2におけるダイレクトXPathは、目的のノードまでの経路を固定的に表現するため、GUI画面の構成が少しでも変更されると、目的のノードを正しく指定しない可能性がある。
【0026】
そのため、エンジニアは、属人的なトライ&エラーによって、様々なXPathを試し、目的のノードを一意に指定する頑健なXPathを生成しなくてはならず、非効率な状況であるという問題点があった。
【0027】
本発明は、目的のノードを一意に指定する頑健な(ロバストネスな)XPathなどの検索式を効率的に生成することを課題とする。
【課題を解決するための手段】
【0028】
本発明の代表的な一例を示せば以下の通りである。すなわち、木構造によって実装されるアプリケーションを実行する計算機が、前記アプリケーションによって表示された画面の中の画面部位を指定する検索式を提供する検索式提供方法であって、前記方法は、前記計算機が、ユーザによって選択された前記画面部位を取得し、前記計算機が、前記取得された画面部位を一意に指定する前記検索式の複数の候補を生成し、前記計算機が、前記生成された複数の候補ごとに、一つ以上の特徴量を求め、前記計算機が、前記求められた一つ以上の特徴量を、加算することによって前記複数の候補の頑健性を算出し、前記計算機が、前記算出された頑健性と、前記複数の候補とを表示する。
【発明の効果】
【0029】
本発明の一実施形態によると、これまでエンジニアによって属人的に行われていた検索式生成作業を、効率化する事が可能となる。
【図面の簡単な説明】
【0030】
【図1】本発明の実施形態の概要を示すフローチャートである。
【図2】本発明の実施形態のシステムの構成を示すブロック図である。
【図3】本発明の実施形態のXPath生成プログラムのウィンドウ画面の具体例を示す説明図である。
【図4】本発明の実施形態の対象部位取得工程を示すフローチャートである。
【図5】本発明の実施形態のキャプション部位取得工程を示すフローチャートである。
【図6】本発明の実施形態の候補生成工程を示すフローチャートである。
【図7】本発明の実施形態の候補生成工程を示すフローチャートである。
【図8】本発明の実施形態のXPath候補リストを示す説明図である。
【図9】本発明の実施形態のスコアリング工程を示すフローチャートである。
【図10】本発明の実施形態のロバストネススコアリストを示す説明図である。
【図11】本発明の実施形態のスコアリング係数の入力画面を示す説明図である。
【図12】従来技術のWebブラウザに表示された木構造アプリのGUI画面を示す説明図である。
【図13】従来技術のWebブラウザが保持する木構造データを示す説明図である。
【発明を実施するための形態】
【0031】
以下に、本発明の実施形態を添付の図面に基づいて説明する。
【0032】
図1は、本発明の実施形態の概要を示すフローチャートである。
【0033】
まず本発明は、XPath候補を生成する対象のGUI部位(対象部位)をユーザが選択することによって、対象部位を取得し(対象部位取得工程301)、対象部位を指定するXPath候補を生成及び列挙し(候補生成工程302)、各XPath候補のロバストネススコアを算出し(スコアリング工程303)、算出された結果をユーザに提示する(結果表示工程304)。ロバストネススコアとは、木構造データが変更されても、対象部位を一意に指定するか否かを示す値のことである。
【0034】
図2は、本発明の実施形態のシステムの構成を示すブロック図である。
【0035】
図2に示すPC402において、発注システムのウィンドウ画面404内には、GUI部位405が含まれ、ユーザ401はGUI部位405を選択する。そしてユーザ401は、GUI部位405に対応するXPath候補を、XPath生成プログラム423のウィンドウ画面406を介して取得する。
【0036】
PC402は、CPU416、ROM417、通信装置418、キーボード419、マウス420、RAM410、外部記憶装置415、及びディスプレイ装置403を備える。
【0037】
CPU416は、ROM417に格納されるBIOS、及び、RAM410に展開された各種プログラムを実行する。
【0038】
外部記憶装置415は、OS及び各種プログラムを格納する。
【0039】
RAM410は、CPU416によって、OS414、ブラウザプログラム411、及びXPath生成プログラム423が実行されるための作業エリアとして、又は各種プログラムが実行するされるための一時的な格納場所として利用される。
【0040】
ブラウザプログラム411は、発注システムの木構造データ412を内部に保持し、木構造データ412の内容に従って、OS414を介してディスプレイ装置403上に、発注システムのウィンドウ画面404を表示させる。ブラウザプログラム411は、発注システムのウィンドウ画面404がディスプレイ装置403に表示される座標と、木構造データ412とを対応させる。
【0041】
XPath生成プログラム423は、OS414を介してディスプレイ装置403上に、XPath生成プログラム423のウィンドウ画面406を表示させる。尚、XPath生成プログラム423のウィンドウ画面406については、後に図3において、詳しく説明する。
【0042】
ここで、既に従来技術において説明した図12及び図13を用いて、発注システムのウィンドウ画面404及びXPath生成プログラム423のウィンドウ画面406の具体例を示す。図12は、発注システムのウィンドウ画面404の本発明の実施形態における具体例であり、図13は、発注システムの木構造データ412の本発明の実施形態における模式図である。
【0043】
図12に示す発注登録画面103の文字列は、図13に示すfontノード213に対応する。また、図12に示す表104は、図13に示す”table @id='TotalOrder'”ノード217とその子ノードとに相当する。
【0044】
ユーザ401は、発注システムのウィンドウ画面404と、XPath生成プログラム423のウィンドウ画面406との両方を見ながら、キーボード419及びマウス420を操作して、目的のGUI部位405に対応するXPath候補を取得する。
【0045】
図3は、本発明の実施形態のXPath生成プログラム423のウィンドウ画面406の具体例を示す説明図である。XPath生成プログラム423のウィンドウ画面406は、ユーザ401がマウス420を操作することによって、XPath候補を生成するためのGUIである。
【0046】
XPath生成プログラム423のウィンドウ画面406は、ユーザ401がXPath候補を生成する対象のGUI部位405(以下、ターゲットGUIと記載する)の選択を開始するためのボタン501を含む。ユーザは、選択ボタン501をマウス420によってクリックした後に、目的の木構造アプリのウィンドウ画面(本実施形態では、発注システムのウィンドウ画面404)の上で、目的のGUI部位405(本実施形態では、GUI部位101)をクリックすることによってターゲットGUIを選択する。
【0047】
また、XPath生成プログラム423のウィンドウ画面406は、ユーザ401によって選択されたターゲットGUIの基本情報を表示する領域502を含む。領域502は、ターゲットGUIへのダイレクトXPath候補を表示する領域503、ターゲットGUIのコンテンツ情報を表示する領域504を含む。尚、後に図4において、ターゲットGUIのXPath候補およびコンテンツ情報を取得する工程の詳細について述べる。
【0048】
例えば、ユーザ401が選択ボタン501をクリックした後に、発注システムのウィンドウ画面404において、GUI部位101をクリックして、GUI部位101をターゲットGUI(図2におけるGUI部位405)として選択した場合、XPath生成プログラム423は、図3に示すように、GUI部位101に対応するダイレクトXPath(数1)を生成して領域503に表示する。そして、XPath生成プログラム423は、GUI部位101のコンテンツ情報「¥365,300円」を取得して領域504に表示する。
【0049】
また、XPath生成プログラム423のウィンドウ画面406は、ターゲットGUI付近に表示された「金額」「数量」と言ったタイトル文字列(以下、キャプションGUIと記載する)をXPath候補の生成に反映させるか否かについて、ユーザ401が選択するチェックボックス505、ユーザ401がキャプションGUIの選択を開始するボタン506、及び、選択されたキャプションGUIについての基本情報を表示する領域507を含む。キャプションGUIは、ターゲットGUIが示す値のタイトルであり、一般にターゲットGUIの近傍に表示される。
【0050】
また、領域507は、キャプションGUIへのダイレクトXPathを表示する領域508、及び、キャプションGUIのコンテンツ情報を表示する領域509を含む。尚、後に図5において、キャプションGUIのXPathおよびコンテンツ情報を取得する工程の詳細について述べる。
【0051】
例えば、ユーザ401が選択ボタン506をクリックした後に、発注システムのウィンドウ画面404において、GUI部位102をクリックして、GUI部位102をキャプションGUIとして選択した場合、XPath生成プログラム423は、図3に示すように、GUI部位102のダイレクトXPathを生成して領域508に表示する。そして、キャプションGUIであるGUI部位102のコンテンツ情報「合計」を取得して、領域509に表示する。
【0052】
さらに、XPath生成プログラム423のウィンドウ画面406は、XPath生成プログラム423にXPath候補を生成するように指示するためのXPath生成ボタン510、及び、XPath生成プログラム423がターゲットGUIへのXPath候補を複数生成された結果を表示するXPath候補リスト511を含む。また、XPath生成プログラム423が、生成された候補にロバストネススコアを算出するための、後述するスコアリング係数を入力するための係数入力ボタン517を含む。
【0053】
XPath候補リスト511は、表形式によって表示されており、生成されたXPath候補を示す列513と、各XPath候補に対応するロバストネススコアを示す列512を含む。列512と列513との組み合わせは、ロバストネススコアの高い候補から順に表示される。
【0054】
例えば、ユーザ401がXPath生成ボタン510をクリックした場合、XPath生成プログラム423は、ターゲットGUIであるGUI部位101に対応するXPath候補を複数生成し、各XPath候補のロバストネススコアを算出する。そして、図3に示すように、XPath候補リスト511に、生成されたXPath候補と、各XPath候補のロバストネススコアを表示する。
【0055】
図3に示すように、先頭行514の列511の値は、式4であり、その列512は、−2点である。一方、最終行516の列511の値は数5であり、その列512の値は−10点である。本実施形態におけるロバストネススコアは、数値が高いほどロバストネス(頑健さ)が高く、すなわち、木構造データが変更された際も、ターゲットノードを一意に指定できることを意味する。図3に示すXPath候補の生成結果によれば、ユーザ401は、先頭行514のXPath候補のロバストネススコアが最も高いことを認識できる。
【0056】
//tr[td[1]/b/text()='合計']/td[2] ・・・(式4)
/html/body/form/table/tbody/tr[2]/td/table[@id='TotalOrder']/
tbody/tr[td[1]/b/text()='合計']/td[2] ・・・(式5)
以上のように、ユーザ401は、XPath生成プログラム423のウィンドウ画面406によって、目的のGUI部位405に対応するXPath候補を、ロバストネススコアの高い順に瞬時に取得することができる。
【0057】
図4は、本発明の実施形態の対象部位取得工程301を示すフローチャートである。
【0058】
ユーザ401が、XPath生成プログラム423のウィンドウ画面406のターゲットGUI選択ボタン501をマウス420によってクリックすると、XPath生成プログラム423は図4に示すフローに従って動作する。
【0059】
図4に示すフローは、始端子600に始まり、終端子605で終わる。
【0060】
工程601において、XPath生成プログラム423は、ユーザ401によって選択されたターゲットGUIを取得する。具体的には、ユーザ401は、ターゲットGUI選択ボタン501をマウス420によってクリックした後に、目的のアプリのウィンドウ画面(本実施形態における図2に示す発注システムのウィンドウ画面404)上で、ターゲットGUIであるGUI部位405をクリックする。XPath生成プログラム423は、そのクリックの瞬間に、マウス420が示すポインタの座標を取得する。
【0061】
工程602において、XPath生成プログラム423は、ブラウザプログラム411を呼び出すことによって、ユーザ401が工程601においてクリックした発注システムのウィンドウ画面404に表示されている、発注システムの木構造データ412に接続する。
【0062】
工程603において、XPath生成プログラム423は、工程602において接続された発注システムの木構造データ412に基づいて、工程601において取得されたマウス420が示す座標の直下にあるGUIに対応するノード(以下、ターゲットノードと記載する)を取得する。
【0063】
工程604において、XPath生成プログラム423は、発注システムの木構造データ412における、ルートノード201からターゲットノードに至るダイレクトXPath候補を生成し、領域503に表示する。また、ターゲットノードのコンテンツ情報を取得し、領域504に表示する。
【0064】
図5は、本発明の実施形態のキャプション部位取得工程を示すフローチャートである。
【0065】
ユーザ401が、XPath生成プログラム423のウィンドウ画面406のチェックボックス505にチェックを入れ、キャプションGUI選択ボタン506をクリックすると、XPath生成プログラム423は、図5に示すキャプション部位取得工程のフローに従って動作する。キャプション部位取得工程は、ユーザ401の任意によって実行される。キャプション部位取得工程は、チェックボックス505のチェックの有無によって、図1に示す対象部位取得工程301の後に、実行されても実行されなくてもよい。
【0066】
図5に示すフローは、始端子700に始まり、終端子704で終わる。
【0067】
工程701において、XPath生成プログラム423は、ユーザ401によって選択されたキャプションGUIを取得する。具体的には、ユーザ401は、チェックボックス505にチェックを入れ、キャプションGUI選択ボタン506をクリックした後に、目的のアプリのウィンドウ画面(本実施形態における図2に示す発注システムのウィンドウ画面404)上でターゲットGUI付近のタイトル文字列のGUI部位405(キャプションGUI)をクリックする。XPath生成プログラム423は、そのクリックの瞬間にマウスの座標を取得する。
【0068】
工程702において、XPath生成プログラム423は、工程602において接続された発注システムの木構造データ412に基づいて、工程701において取得したマウス420が示す座標の直下にあるGUIに対応するノード(以下、キャプションノードと記載する)を取得する。
【0069】
工程703において、XPath生成プログラム423は、発注システムの木構造データ412における、ルートノード201からキャプションノードに至るダイレクトXPath候補を生成し、領域508に表示する。また、キャプションノードのコンテンツ情報を取得し、領域509に表示する。
【0070】
図6は、本発明の実施形態の候補生成工程302を示すフローチャートである。
【0071】
ユーザ401が、XPath生成プログラム423のウィンドウ画面406のXPath生成ボタン510をクリックすると、XPath生成プログラム423は、図6に示すフローに従って動作する。
【0072】
図6に示すフローは、始端子801に始まり、データ802を入力され、データ815を出力し、終端子816で終わる。
【0073】
データ802は、領域503に表示されたターゲットGUIへのダイレクトXPathの値(Pと記載する)、領域508に表示されたキャプションGUIへのダイレクトXPath(Qと記載する)、キャプションGUIを利用するか否かを表すチェックボックス505の値を含む。尚、以下では、XPath Pの長さをn、XPath Qの長さをmと記載する。
【0074】
ここでXPathの長さとは、XPathに含まれるノードの数である。また、チェックボックスの値は、チェックボックス505にチェックが入っている場合は、trueであり、チェックボックス505にチェックが入っていない場合は、falseである。
【0075】
判定803において、チェックボックス505の値がfalseの場合、すなわちキャプションGUIを利用しない場合には、XPath生成プログラム423は、工程806に移行する。また、チェックボックス505の値がtrueの場合、すなわちキャプションGUIを利用する場合には、XPath生成プログラム423は、工程804に移行する。
【0076】
工程804において、XPath生成プログラム423は、ターゲットGUIへのXPath(P)を、キャプションGUIへのXPath(Q)によって、更新する。更新の詳細については、後に図7において説明する。XPath生成プログラム423は、工程804の後、工程806に移行する。
【0077】
工程806において、XPath生成プログラム423は、カウンタkを2に初期化し、XPath候補XをPに初期化してXPath候補データとしてRAM411に蓄積し、省略配列ri(i=2,...,n−1)をfalseに初期化する。カウンタkを2に初期化する理由は、ルートノード201を省略する対象から除外するためである。
【0078】
ここで以下の説明のために、XPathに関する演算を一つ定義する。XPath Xは一般性を失うことなく式6のようにノード単位に表現できる。
【0079】
X=/X2/.../Xn-1/Xn ・・・(式6)
ここで、XPath Xと省略配列rから新たなXPath Yを生成する演算”*”を式7のように定義する。
【0080】
Y=X*r=/(X2,r2)/.../(Xn-1,rn-1)/Xn ・・・(式7)
ただし、(Xk,rk)は、rkがtrueである場合、ノードXkを省略することを意味し、rkがfalseである場合、ノードXkを省略しないことを意味する。例えば、ri(i=2,...,k)=trueであり、ri(i=k+1,...,n−1)=falseである場合、演算X*rによって生成されるXPath Yは式8である。
【0081】
Y=//Xk+1/.../Xn-1/Xn ・・・(式8)
工程807において、XPath生成プログラム423は、省略配列ri(i=2,...,n−1)を、省略配列qi(i=2,...,n−1)にコピーする。
【0082】
工程808において、XPath生成プログラム423は、省略配列qの第k要素qkをtrueとする。
【0083】
工程809において、XPath生成プログラム423は、XPath Xと省略配列qとからXPath Y=X*qを生成する。すなわち、Xkが省略されたXPath Yを生成する。
【0084】
判定810において、XPath生成プログラム423は、XPath Yによって木構造データを検索し、検索結果として抽出されたノードがターゲットノードのみを指定する場合、すなわち、XPath Yによって一意にターゲットノードが指定される場合、工程811に移行する。また、XPath Yが一意にターゲットノードを指定せず、別のノードも指定する場合、判定813に移行する。
【0085】
工程811において、XPath生成プログラム423は、省略配列qkをrkに更新する。判定810において、XPath Yが一意にターゲットノードを指定する場合の省略配列qkをrkに工程811において更新することによって、省略できるノードの情報を省略配列rに記憶できる。
【0086】
工程812において、XPath生成プログラム423は、XPath YをXPath候補データに追加する。尚、蓄積されたXPath候補データについてを、後に図8において詳しく説明する。
【0087】
判定813において、XPath生成プログラム423は、カウンタkがn−1より小さい場合、処理を続けるため、工程814に移行する。また、XPath生成プログラム423は、カウンタkがn−1以上である場合、XPath Xの終端の一つ前のノードまで処理したため、、蓄積されたXPath候補データを候補データ815として出力し、終端子816に移行する。
【0088】
終端子816に移行した後、図1に示す候補生成工程302は終了する。なお、カウンタkがn−1と等しい場合に、処理を終了させるのは、ターゲットノードの最後のノード(n番目のノード)を省略することができないためである。
【0089】
工程814において、XPath生成プログラム423は、カウンタkをインクリメントし、工程807に戻る。
【0090】
以上のようにして、XPath生成プログラム423は、ユーザ401が選択したターゲットGUI及びキャプションGUIから、ターゲットGUIに対応するXPath候補を生成し、XPath生成プログラムのウィンドウ画面406に列挙することができる。
【0091】
なお、本実施形態において生成されたXPath候補は、省略される場合は、先頭から省略されているが、ノードの途中が省略されていてもよい。
【0092】
図7は、本発明の実施形態の候補生成工程302を示すフローチャートである。
【0093】
図7に示すフローチャートは、図6に示す工程804に相当し、ターゲットGUIに対応するXPath Pを、キャプションGUIに対応するXPath Qを用いて、更新する手順を示す。
【0094】
図7に示すフローは、始端子901に始まり、データ902を入力され、XPath Pを更新し、終端子910において終わる。
【0095】
データ902は、領域503に表示されたターゲットGUIに対応するダイレクトXPathの値(以下においてPと記載)、及び、領域508に表示されたキャプションGUIに対応するダイレクトXPathの値(以下においてQと記載)を含む。
【0096】
工程903において、XPath生成プログラム423は、PとQを式9及び式10のようにノード単位に分解する。
【0097】
P=/P2/.../Pn ・・・(式9)
Q=/Q2/.../Qm ・・・(式10)
工程904において、XPath生成プログラム423は、カウンタkを2に初期化し、カウンタ上限Lをmin(n,m)に初期化する。なお、カウンタ上限Lは、カウンタkの上限値である。また、min(n,m)は、n及びmのうち、小さい方の値を返す関数である。
【0098】
判定905において、カウンタkがカウンタ上限Lより大きい場合、P又はQのどちらかのノードが終端を越えるるため、XPath生成プログラム423は、終端子910に移行し工程804を終了する。カウンタkがカウンタ上限Lより小さい場合、判定906に移行する。
【0099】
判定906において、XPath生成プログラム423は、XPath Pの第k番目の値PkとXPath Qの第k番目の値Qkとが等しいか否かを判定する。PkとQkとが等しい場合、XPath生成プログラム423は、XPath Pを更新する必要はないため、工程907に移行する。
【0100】
工程907において、XPath生成プログラム423は、処理を続けるため、カウンタkをインクリメントする。そして、判定905に戻る。
【0101】
判定906において、PkとQkとが異なる場合、Pk-1はQk-1によって指定することが可能であるため、XPath生成プログラム423は、Pk-1をQk-1によって更新するため、工程908に移行する。工程908において、XPath生成プログラム423は、Pk-1に含まれる[]内の条件式を、式11によって更新する。
【0102】
Qk/.../Qm/text()='キャプションGUIのコンテンツ情報'・・(式11)
例えば、図3の領域503に示されるターゲットGUIの値がPであり、領域508に示されるキャプションGUIの値がQであり、領域509に示される値がQのコンテンツ情報である場合、Pは、工程908において式12のように更新される。
【0103】
/html/body/form/table/tbody/tr[2]/td/table[@id='TotalOrder']/
tbody/tr[td[1]/b/text()='合計']/td[2] ・・・(式12)
工程908において、XPath Pの11ノード目の”tr[5]”は、”tr[td[1]/b/text()='合計'”に、更新される。すなわち、工程908の更新前のXPath Pは、「idが'TotalOrder'のテーブルの”tbody”に含まれる5番目の”tr”の2番目の”td”」という意味であったが、工程908の更新後は、「idが”TotalOrder”のテーブルの中で、”tbody"に含まれる一つ目の”td”に”text()='合計'”を持つ”tr”の2番目の”td”」という意味になる。
【0104】
キャプションGUIは、ターゲットGUIの表題に相当するため、木構造データおいてキャプションノードとターゲットノードとの親ノードは一般的にほとんど共通していることが多い。そして、キャプションGUIは、一般的に、キャプションGUIを一意に示すようなコンテンツ情報(本実施形態においては、”text()='合計'”)又は数値などを含んでいることが多い。このため、キャプションノードの値を用いてターゲットノードを指定することによって、ターゲットGUIをより一意に指定することができるターゲットノードを得ることができるのである。
【0105】
なお、本実施形態の工程908のような更新をする場合、更新後のXPath Pは、図12に示す表104の行が追加となっても、すなわち、「idが”TotalOrder”のテーブルの”tbody”に含まれる”tr”」が増加しても、一意にターゲットGUIを指定することができる。
【0106】
工程908の後、XPath生成プログラム423は、終端子910に移行し、工程804の処理を終了する。
【0107】
工程804によって、Pには、ターゲットノードを指定するために、キャプションノードを指定する文字列を用いることができ、さらにこれによって、ターゲットノードをより一意に指定する文字列を得ることができる。
【0108】
前述のように、XPath生成プログラム423は、図6及び図7に従って、ユーザ401が選択するターゲットGUI、及びキャプションGUIに基づいて、ターゲットGUIに対応するXPath候補を列挙及び生成することができる。尚、本フローはあくまで一例に過ぎず、列挙及び生成の仕方を限定するものではない。
【0109】
図8は、本発明の実施形態のXPath候補リストを示す説明図である。
【0110】
図8に示すXPath候補リストは、図6に示すフローによって出力されるものであり、図6に示すフローによって蓄積された順に値を格納される。図8に示すXPath候補リストは、「#」カラムに候補番号が格納され、「XPath」カラムに図6に示すフローによって出力されたXPath候補の値が格納される。「XPath」カラムの値は、図3に示すXPath候補リスト511の列513に表示される値と同一である。
【0111】
図9は、本発明の実施形態のスコアリング工程303を示すフローチャートである。
【0112】
図9に示すフローチャートによって、XPath生成プログラム423は、生成されたXPath候補に対応する、ロバストネススコアを算出する。その際に、XPath生成プログラム423は、XPath候補の記載のうち、ターゲットノードをより一意に指定することができる記載が含まれる場合、そのXPath候補に高いロバストネススコアを算出し、ターゲットノードではない別のノードを指定する可能性が高い記載が含まれる場合、低いロバストネススコアを算出する。すなわち、XPath生成プログラム423は、XPath候補の記載方法によって、ロバストネススコアを算出する。
【0113】
本実施形態の、XPath候補の記載において、ノードの個数が多い場合、及び、”tr[5]”(trノードの5番目)などの番地を示す番号によって子ノードを指定するノードが含まれる場合は、ターゲットノードではない別のノードを指定する可能性が高くなると判定され、ロバストネススコアは低く算出される。また、id属性によって子ノードを指定するノードが含まれる場合、name属性によって子ノードを指定するノードが含まれる場合、及び、text()によって子ノードを指定するノードが含まれる場合、ターゲットノードをより一意に指定することができると判定され、ロバストネススコアは高く算出される。
【0114】
なお、id属性とは、各ノードが指定するGUI部位405を一意に示す名前を示すことを意味する。name属性も、id属性と同じ機能を持つ。また、text()属性は、各ノードが指定するGUI部位405に表示される文字列を含むことを意味する。
【0115】
図9に示すフローチャートは、始端子1101に始まり、XPath候補リスト(候補数をNとする)を入力され、ロバストネススコアリストを出力し、終端子1113に終わる。
【0116】
工程1103において、XPath生成プログラム423は、カウンタkを1に初期化する。
【0117】
工程1105において、XPath生成プログラム423は、XPath候補リストの第k番目のXPath候補において、長さ(ノードの数)u1を算出する。k=1である場合、図8の候補番号#01が示すXPath候補には、
(ノード1)”/”(ルート)
(ノード2)”html”
(ノード3)”body”
(ノード4)”form”
(ノード5)”table”
(ノード6)”tbody”
(ノード7)”tr[2]”
(ノード8)”td”
(ノード9)”table[@id='TotalOrder']”
(ノード10)”tbody”
(ノード11)”tr[td[1]/b/text()='合計']”
(ノード12)”td[2]”
の12個のノードがあるため、u1=12である。
【0118】
工程1106において、XPath生成プログラム423は、XPath候補リストの第k番目のXPath候補において、番号によって子ノードを指定するノード(番地指定の節点)の数u2を算出する。例えば、k=1である場合、図8の候補番号#01が示すXPath候補において、番号によって子ノードを指定するノードには(ノード7)と(ノード12)との二つがあるため、u2=2である。
【0119】
工程1107において、XPath生成プログラム423は、XPath候補リストの第k番目のXPath候補において、id属性によって子ノードを指定するノードの数u3を算出する。例えば、k=1である場合、図8の候補番号#01が示すXPath候補において、id属性によって子ノードを指定するノードは、前述の(ノード9)の一つであるため、u3=1である。
【0120】
工程1108において、XPath生成プログラム423は、XPath候補リストの第k番目のXPath候補において、name属性によって子ノードを指定するノード数u4を算出する。例えば、k=1である場合、図8の候補番号#01が示すXPath候補において、name属性によって子ノードを指定するノードは存在しないため、u4=0である。
【0121】
工程1109において、XPath生成プログラム423は、XPath候補リストの第k番目のXPath候補において、text()によって子ノードを指定するノードの数u5を算出する。例えば、k=1である場合、図8の候補番号#01が示すXPath候補において、text()によって子ノードを指定するノードには(ノード11)の一つがあるため、u5=1である。
【0122】
工程1110において、XPath生成プログラム423は、XPath候補リストの第k番目のXPath候補のロバストネススコアを式13によって算出し、ロバストネススコアリストに蓄積する。式13に示すw1〜w5の重み定数wiは、ロバストネススコアを規定するスコアリング係数であり、固定された数値でもよいし、図11において後述する画面を介して、あらかじめユーザ401によって入力されてもよい。
【0123】
Sk=w1u1+w2u2+w3u3+w4u4+w5u5 ・・・(式13)
判定1111において、XPath生成プログラム423は、カウンタkがNより小さい場合、XPath候補リストの次のXPath候補のロバストネススコアを算出するため、工程1114に移行する。そして、工程1114においてカウンタkをインクリメントし、工程1105に戻る。
【0124】
判定1111において、カウンタkがN以上である場合、XPath生成プログラム423は、XPath候補リストのロバストネススコアがすべて算出されたため、ロバストネススコアリスト1112を出力し、終端子1113に移行する。
【0125】
以上のようにして、XPath生成プログラム423は、各XPath候補リストの各XPath候補のロバストネススコアを算出し、算出された結果をロバストネススコアリスト1112として出力する。
【0126】
図10は、本発明の実施形態のロバストネススコアリスト1112を示す説明図である。
【0127】
図10に示すロバストネススコアリスト1112は、図9に示すフローによって出力され、各XPath候補にロバストネススコアSが含まれる。ロバストネススコアリスト1112は、図2に示すPC402のRAM410、ROM417、又は外部記憶装置415のいずれに格納されてもよい。
【0128】
図10に示すロバストネススコアリスト1112のうち、最も高いロバストネススコアSは、#08と#10とのXPath候補であり、最も低いロバストネススコアSは、#01のXPath候補である。
【0129】
例えば、図12に示す発注登録画面103の文字列の下に任意の文字列が表示されるように、ユーザが発注システムのウィンドウ画面404を変更した場合、図13に示す木構造データは、trノード214の前に、新たなtrノードを追加される。そのため、図10の#01に示すXPathによってターゲットGUIを指定する場合、#01に示すXPathの7番目のノードが”tr[3]”に変更される必要がある。
【0130】
しかし、図10の#08又は#10に示すXPathによってターゲットGUIを指定する場合、前述の発注システムのウィンドウ画面404の変更があっても、XPathを変更する必要はない。
【0131】
図11は、本発明の実施形態のスコアリング係数の入力画面を示す説明図である。
【0132】
図11に示すスコアリング係数の入力画面は、重み係数w1が規定されるプルダウン1301、重み係数w2が規定されるプルダウン1302、重み係数w3が規定されるプルダウン1303、重み係数w4が規定されるプルダウン1304、重み係数w5が規定されるプルダウン1305、保存ボタン1306、及び、キャンセルボタン1307を含む。
【0133】
ユーザ401は、スコアリング係数を入力する場合、図3に示す係数入力ボタン517をクリックする。そして、プルダウン1301〜1305を操作し、ロバストネススコアを規定する定数を入力し、保存ボタン1306をクリックすることによって、スコアリング係数をPC402に記憶させる。そして、ユーザ401によって入力されたスコアリング係数によって、ロバストネススコアが算出される。
【0134】
なお、重み係数wiを0とすることによって、ユーザ401は、前述の記載方法のいずれをロバストネススコアに反映させるかを選択することができる。すなわち、一つの記載方法のみによってロバストネススコアを算出してもよい。
【0135】
以上が、図1に示すスコアリング工程303である。
【0136】
最後に、結果表示工程304において、XPath生成プログラム423は、XPath生成プログラム423のウィンドウ画面406のXPath候補リスト511に、ロバストネススコアリスト1112をスコア順にソートして表示する。
【0137】
本発明の実施形態によれば、ユーザ401は、ロバストネススコアが高いXPath候補を選択することによって、アプリケーションの木構造データが変更されても、目的のGUI部位405を一意に指定するXPathを取得することができる。
【0138】
なお、本実施形態においては、木構造のアプリケーションにHTML又はXMLを用いたが、その他の木構造データによって表現する言語であれば、いずれの言語でもよい。
【符号の説明】
【0139】
401 ユーザ
402 PC
403 ディスプレイ
404 発注システムのウィンドウ画面
405 GUI部位
406 XPath生成プログラムのウィンドウ画面
501 選択ボタン
502〜504、507〜509 領域
505 チェックボックス
506 選択ボタン
510 XPath生成ボタン
511 XPath候補リスト
517 係数入力ボタン
【技術分野】
【0001】
本発明は、検索式提供方法に関し、特に、GUI画面が木機構データによって実装されるアプリケーションの検索式提供方法に関する。
【背景技術】
【0002】
近年、Webブラウザに代表されるように、HTML又はXMLなどの木構造データによって、アプリケーションのGUI画面を設計及び実装する技術が主流になりつつある。このように、木構造データによってGUI(Grafic User Interface)画面を設計及び実装するアプリケーションを、以下では木構造アプリと呼ぶ。
【0003】
図12は、従来技術のWebブラウザに表示された木構造アプリのウィンドウ画面404を示す説明図である。
【0004】
図12は、発注システムのウィンドウ画面404を木構造アプリによって実装した場合の、ウィンドウ画面404の例である。GUI部位102には、「合計」の表示があり、GUI部位101には、金額の合計値が表示される。
【0005】
図13は、従来技術のWebブラウザが保持する木構造データを示す説明図である。
【0006】
図13に示す木構造データは、ルートノード201が最も上位であり、ルートノード201は”/”によって示される。htmlノード202は、ルートノード201の子ノードであり、headノード203とbodyノード205とは、htmlノード202の子ノードである。同様に、他ノードにも親子関係があり、図13は、木構造データにおける親子関係を階層構造によって示す。
【0007】
尚、全ての木構造データは大きすぎて図示できないため、図13における木構造データは、短縮されて表示される。各ノードの末尾には、”−”、”+”又は”L”などの記号が付され、これらの記号は、木構造データの各ノードが省略されているか否かを示す。“−”は子ノードが展開表示されていることを示し、“+”は子ノードが非展開表示、すなわち短縮されていることを示し、”L”は子ノードを持たない葉ノードであることを示す。
【0008】
木構造アプリにおいて、ウィンドウ画面404上のある部位を選択することは、木構造データ上のあるノードを指定することと等価である。例えば、図12において「¥365,300円」と表示されるGUI部位101は、図13に示すtdノード226に対応する。すなわち、木構造データのtdノード226を書き換えれば、書き換えられた結果は、直ちにGUI部位101の表示に反映される。
【0009】
このような木構造アプリの特徴をいかして、既存アプリの使い勝手を向上させるため、ウィンドウ画面404上の所望のGUI部位に対応するノードを木構造データから検索し、当該ノードのデータを読み書きしたり、加工したりするなどのカスタマイズを実装する技術が提案されている。以下では、このような技術をカスタマイズ技術と呼ぶ。
【0010】
GUI画面の所望の部位を一意に指定するためには、木構造データにおいて対応するノードを一意に指定する検索式が必要である。従来、カスタマイズ技術を実装するエンジニアは、そのようなノードを一意に指定する検索式を、人手で作成してきた。尚、この技術分野において、検索式の標準規格はXPathであるので、以下では、検索式の替わりにXPath(例えば、非特許文献1参照)と記載する。
【0011】
また、そのような人手によるXPath作成の作業を支援するための技術が提案されている(例えば、非特許文献2参照)。
【0012】
非特許文献2の技術によれば、エンジニアは、木構造アプリの実際のGUI画面を介して、インタラクティブにXPathを作成する。すなわち、エンジニアがXPathを知りたい画面の部位の上でマウスを右クリックすると、ダイレクトXPathが生成及び表示される。ここで、ダイレクトXPathとは、ルートノードから目的のノードに至るまでに経由する全ノードを書き出し、以下のように表現したものである。
【0013】
/html/body/form/table/tbody/tr[2]/
td/table[@id='TotalOrder']/tbody/tr[5]/td[2] ・・・(式1)
式1は、ノード226のXPathをダイレクトXPathによって表示したものである。数1のうち、先頭の文字列の”/html”は、「ルートノード201は一つのhtmlノード202を子ノードとして持ち、そのhtmlノード202が選択される」を意味する。また、”/”ノードを1番目のノードと数え、”html”ノードを2番目のノードと数えた場合に、6番目のノードと7番目のノードである”tbody/tr[2]”は、「tbodyノード210は、複数のtrノードを子ノードとして持ち、その複数のtrノードのうち、第2番目のtrノード214が選択される」を意味する。
【0014】
また、数1のうち8番目のノードと9番目のノードとの”td/table[@id='TotalOrder']”は、「tdノード215は複数のtableノードを子ノードとして持ち、複数のtableノードのうち、id属性が’TotalOrder’に等しいtableノード217が選択される」を意味する。
【0015】
この数1のうち8番目のノードと9番目のノードとの記載は、6番目のノードと7番目のノードとの記載のように”td/table[2]”と表現されてもよいが、図13に示すtableノード217のようにid属性を持つ場合には、id属性を利用した方がより直接的に目的のノードを指定できるため、数1に示す記載に置き換えられる。この様に、8番目のノードと9番目のノードとの間の記載は、ダイレクトXPathが一意に定まり、ダイレクトXPathによって目的のノードを一意に指定できる。
【0016】
尚、一般に目的のノードを指定するXPathの表現は、ダイレクトXPathの他にも多数存在する。例えば、以下のような表現でも同じノードを一意に指定できる。
【0017】
/html//table[@id='TotalOrder']/tbody/tr[5]/td[2] ・・・(式2)
//tr[td/b/text()='合計']/td[2] ・・・(式3)
式2と式3とは、ともに数1が指定するノードと同じノードを指定する。式2のうち先頭から2番目のスラッシュと4番目のスラッシュとの間の”/table[@id='TotalOrder']”は、「htmlノード202の配下にある全tableノードのうち、id属性が’TotalOrder’に等しいtableノードが選択される」を意味する。
【0018】
また、式3のうち先頭から1番目のスラッシュと3番目のスラッシュとの間の”//tr[td/b/text()='合計']”は、「ルートノード201の配下にある全trノードのうち、そのノードを起点としてXPath”td/b”によって指定されるbノードのテキストが’合計’に等しいtrノードが選択される」を意味する。
【0019】
このように表現は多種多様であり、どのような表現が最適なのかはXPathを利用する目的に依存する。
【0020】
非特許文献2の技術は、エンジニアが入力したXPathに適合する全ノードを抽出及び列挙して、画面に表示する機能を持つ。この機能によって、エンジニアは、思い付いたXPathについて、目的のノードを一意に指定するか否かをテストする事ができる。
【先行技術文献】
【非特許文献】
【0021】
【非特許文献1】(財)日本規格協会、”XMLパス言語(XPath) JIS X 4160:2007”
【非特許文献2】Viktor Zigo、”XPather”、[online]、[平成21年11月27日検索]、インターネット、<URL:http://xpath.alephzarro.com/>
【発明の概要】
【発明が解決しようとする課題】
【0022】
木構造アプリのGUI構造、すなわち木構造データは、頻繁に変更される傾向が強い。例えば、ポータルサイトのようなWebアプリの場合、GUI画面上に「ニュース」、又は「お知らせ」などの情報が表示されるが、情報の件数は日々異なるため、GUI画面に対応する木構造データも日々異なる。
【0023】
また、例えば、Webメールの場合、画面上にメールのリストが表示されるが、リストの件数は時刻毎に異なるため、画面の木構造データも頻繁に変更される。また、エンドユーザの要望を受け、画面レイアウトを変更する場合も少なくなく、その結果画面の木構造データも変更される。
【0024】
カスタマイズ技術を利用するエンジニアは、木構造データに前述のような変更が生じても目的のノードを正しく指定する頑健なXPath、すなわちロバストネスが高いXPathを作成する必要がある。頑健なXPathを作成できない場合、木構造データの変更の度に、エンジニアがカスタマイズ作業をやり直さなくてはならない。
【0025】
非特許文献2において提案されているダイレクトXPathは、そのような木構造データの変更に脆弱である傾向が強い。すなわち、非特許文献2におけるダイレクトXPathは、目的のノードまでの経路を固定的に表現するため、GUI画面の構成が少しでも変更されると、目的のノードを正しく指定しない可能性がある。
【0026】
そのため、エンジニアは、属人的なトライ&エラーによって、様々なXPathを試し、目的のノードを一意に指定する頑健なXPathを生成しなくてはならず、非効率な状況であるという問題点があった。
【0027】
本発明は、目的のノードを一意に指定する頑健な(ロバストネスな)XPathなどの検索式を効率的に生成することを課題とする。
【課題を解決するための手段】
【0028】
本発明の代表的な一例を示せば以下の通りである。すなわち、木構造によって実装されるアプリケーションを実行する計算機が、前記アプリケーションによって表示された画面の中の画面部位を指定する検索式を提供する検索式提供方法であって、前記方法は、前記計算機が、ユーザによって選択された前記画面部位を取得し、前記計算機が、前記取得された画面部位を一意に指定する前記検索式の複数の候補を生成し、前記計算機が、前記生成された複数の候補ごとに、一つ以上の特徴量を求め、前記計算機が、前記求められた一つ以上の特徴量を、加算することによって前記複数の候補の頑健性を算出し、前記計算機が、前記算出された頑健性と、前記複数の候補とを表示する。
【発明の効果】
【0029】
本発明の一実施形態によると、これまでエンジニアによって属人的に行われていた検索式生成作業を、効率化する事が可能となる。
【図面の簡単な説明】
【0030】
【図1】本発明の実施形態の概要を示すフローチャートである。
【図2】本発明の実施形態のシステムの構成を示すブロック図である。
【図3】本発明の実施形態のXPath生成プログラムのウィンドウ画面の具体例を示す説明図である。
【図4】本発明の実施形態の対象部位取得工程を示すフローチャートである。
【図5】本発明の実施形態のキャプション部位取得工程を示すフローチャートである。
【図6】本発明の実施形態の候補生成工程を示すフローチャートである。
【図7】本発明の実施形態の候補生成工程を示すフローチャートである。
【図8】本発明の実施形態のXPath候補リストを示す説明図である。
【図9】本発明の実施形態のスコアリング工程を示すフローチャートである。
【図10】本発明の実施形態のロバストネススコアリストを示す説明図である。
【図11】本発明の実施形態のスコアリング係数の入力画面を示す説明図である。
【図12】従来技術のWebブラウザに表示された木構造アプリのGUI画面を示す説明図である。
【図13】従来技術のWebブラウザが保持する木構造データを示す説明図である。
【発明を実施するための形態】
【0031】
以下に、本発明の実施形態を添付の図面に基づいて説明する。
【0032】
図1は、本発明の実施形態の概要を示すフローチャートである。
【0033】
まず本発明は、XPath候補を生成する対象のGUI部位(対象部位)をユーザが選択することによって、対象部位を取得し(対象部位取得工程301)、対象部位を指定するXPath候補を生成及び列挙し(候補生成工程302)、各XPath候補のロバストネススコアを算出し(スコアリング工程303)、算出された結果をユーザに提示する(結果表示工程304)。ロバストネススコアとは、木構造データが変更されても、対象部位を一意に指定するか否かを示す値のことである。
【0034】
図2は、本発明の実施形態のシステムの構成を示すブロック図である。
【0035】
図2に示すPC402において、発注システムのウィンドウ画面404内には、GUI部位405が含まれ、ユーザ401はGUI部位405を選択する。そしてユーザ401は、GUI部位405に対応するXPath候補を、XPath生成プログラム423のウィンドウ画面406を介して取得する。
【0036】
PC402は、CPU416、ROM417、通信装置418、キーボード419、マウス420、RAM410、外部記憶装置415、及びディスプレイ装置403を備える。
【0037】
CPU416は、ROM417に格納されるBIOS、及び、RAM410に展開された各種プログラムを実行する。
【0038】
外部記憶装置415は、OS及び各種プログラムを格納する。
【0039】
RAM410は、CPU416によって、OS414、ブラウザプログラム411、及びXPath生成プログラム423が実行されるための作業エリアとして、又は各種プログラムが実行するされるための一時的な格納場所として利用される。
【0040】
ブラウザプログラム411は、発注システムの木構造データ412を内部に保持し、木構造データ412の内容に従って、OS414を介してディスプレイ装置403上に、発注システムのウィンドウ画面404を表示させる。ブラウザプログラム411は、発注システムのウィンドウ画面404がディスプレイ装置403に表示される座標と、木構造データ412とを対応させる。
【0041】
XPath生成プログラム423は、OS414を介してディスプレイ装置403上に、XPath生成プログラム423のウィンドウ画面406を表示させる。尚、XPath生成プログラム423のウィンドウ画面406については、後に図3において、詳しく説明する。
【0042】
ここで、既に従来技術において説明した図12及び図13を用いて、発注システムのウィンドウ画面404及びXPath生成プログラム423のウィンドウ画面406の具体例を示す。図12は、発注システムのウィンドウ画面404の本発明の実施形態における具体例であり、図13は、発注システムの木構造データ412の本発明の実施形態における模式図である。
【0043】
図12に示す発注登録画面103の文字列は、図13に示すfontノード213に対応する。また、図12に示す表104は、図13に示す”table @id='TotalOrder'”ノード217とその子ノードとに相当する。
【0044】
ユーザ401は、発注システムのウィンドウ画面404と、XPath生成プログラム423のウィンドウ画面406との両方を見ながら、キーボード419及びマウス420を操作して、目的のGUI部位405に対応するXPath候補を取得する。
【0045】
図3は、本発明の実施形態のXPath生成プログラム423のウィンドウ画面406の具体例を示す説明図である。XPath生成プログラム423のウィンドウ画面406は、ユーザ401がマウス420を操作することによって、XPath候補を生成するためのGUIである。
【0046】
XPath生成プログラム423のウィンドウ画面406は、ユーザ401がXPath候補を生成する対象のGUI部位405(以下、ターゲットGUIと記載する)の選択を開始するためのボタン501を含む。ユーザは、選択ボタン501をマウス420によってクリックした後に、目的の木構造アプリのウィンドウ画面(本実施形態では、発注システムのウィンドウ画面404)の上で、目的のGUI部位405(本実施形態では、GUI部位101)をクリックすることによってターゲットGUIを選択する。
【0047】
また、XPath生成プログラム423のウィンドウ画面406は、ユーザ401によって選択されたターゲットGUIの基本情報を表示する領域502を含む。領域502は、ターゲットGUIへのダイレクトXPath候補を表示する領域503、ターゲットGUIのコンテンツ情報を表示する領域504を含む。尚、後に図4において、ターゲットGUIのXPath候補およびコンテンツ情報を取得する工程の詳細について述べる。
【0048】
例えば、ユーザ401が選択ボタン501をクリックした後に、発注システムのウィンドウ画面404において、GUI部位101をクリックして、GUI部位101をターゲットGUI(図2におけるGUI部位405)として選択した場合、XPath生成プログラム423は、図3に示すように、GUI部位101に対応するダイレクトXPath(数1)を生成して領域503に表示する。そして、XPath生成プログラム423は、GUI部位101のコンテンツ情報「¥365,300円」を取得して領域504に表示する。
【0049】
また、XPath生成プログラム423のウィンドウ画面406は、ターゲットGUI付近に表示された「金額」「数量」と言ったタイトル文字列(以下、キャプションGUIと記載する)をXPath候補の生成に反映させるか否かについて、ユーザ401が選択するチェックボックス505、ユーザ401がキャプションGUIの選択を開始するボタン506、及び、選択されたキャプションGUIについての基本情報を表示する領域507を含む。キャプションGUIは、ターゲットGUIが示す値のタイトルであり、一般にターゲットGUIの近傍に表示される。
【0050】
また、領域507は、キャプションGUIへのダイレクトXPathを表示する領域508、及び、キャプションGUIのコンテンツ情報を表示する領域509を含む。尚、後に図5において、キャプションGUIのXPathおよびコンテンツ情報を取得する工程の詳細について述べる。
【0051】
例えば、ユーザ401が選択ボタン506をクリックした後に、発注システムのウィンドウ画面404において、GUI部位102をクリックして、GUI部位102をキャプションGUIとして選択した場合、XPath生成プログラム423は、図3に示すように、GUI部位102のダイレクトXPathを生成して領域508に表示する。そして、キャプションGUIであるGUI部位102のコンテンツ情報「合計」を取得して、領域509に表示する。
【0052】
さらに、XPath生成プログラム423のウィンドウ画面406は、XPath生成プログラム423にXPath候補を生成するように指示するためのXPath生成ボタン510、及び、XPath生成プログラム423がターゲットGUIへのXPath候補を複数生成された結果を表示するXPath候補リスト511を含む。また、XPath生成プログラム423が、生成された候補にロバストネススコアを算出するための、後述するスコアリング係数を入力するための係数入力ボタン517を含む。
【0053】
XPath候補リスト511は、表形式によって表示されており、生成されたXPath候補を示す列513と、各XPath候補に対応するロバストネススコアを示す列512を含む。列512と列513との組み合わせは、ロバストネススコアの高い候補から順に表示される。
【0054】
例えば、ユーザ401がXPath生成ボタン510をクリックした場合、XPath生成プログラム423は、ターゲットGUIであるGUI部位101に対応するXPath候補を複数生成し、各XPath候補のロバストネススコアを算出する。そして、図3に示すように、XPath候補リスト511に、生成されたXPath候補と、各XPath候補のロバストネススコアを表示する。
【0055】
図3に示すように、先頭行514の列511の値は、式4であり、その列512は、−2点である。一方、最終行516の列511の値は数5であり、その列512の値は−10点である。本実施形態におけるロバストネススコアは、数値が高いほどロバストネス(頑健さ)が高く、すなわち、木構造データが変更された際も、ターゲットノードを一意に指定できることを意味する。図3に示すXPath候補の生成結果によれば、ユーザ401は、先頭行514のXPath候補のロバストネススコアが最も高いことを認識できる。
【0056】
//tr[td[1]/b/text()='合計']/td[2] ・・・(式4)
/html/body/form/table/tbody/tr[2]/td/table[@id='TotalOrder']/
tbody/tr[td[1]/b/text()='合計']/td[2] ・・・(式5)
以上のように、ユーザ401は、XPath生成プログラム423のウィンドウ画面406によって、目的のGUI部位405に対応するXPath候補を、ロバストネススコアの高い順に瞬時に取得することができる。
【0057】
図4は、本発明の実施形態の対象部位取得工程301を示すフローチャートである。
【0058】
ユーザ401が、XPath生成プログラム423のウィンドウ画面406のターゲットGUI選択ボタン501をマウス420によってクリックすると、XPath生成プログラム423は図4に示すフローに従って動作する。
【0059】
図4に示すフローは、始端子600に始まり、終端子605で終わる。
【0060】
工程601において、XPath生成プログラム423は、ユーザ401によって選択されたターゲットGUIを取得する。具体的には、ユーザ401は、ターゲットGUI選択ボタン501をマウス420によってクリックした後に、目的のアプリのウィンドウ画面(本実施形態における図2に示す発注システムのウィンドウ画面404)上で、ターゲットGUIであるGUI部位405をクリックする。XPath生成プログラム423は、そのクリックの瞬間に、マウス420が示すポインタの座標を取得する。
【0061】
工程602において、XPath生成プログラム423は、ブラウザプログラム411を呼び出すことによって、ユーザ401が工程601においてクリックした発注システムのウィンドウ画面404に表示されている、発注システムの木構造データ412に接続する。
【0062】
工程603において、XPath生成プログラム423は、工程602において接続された発注システムの木構造データ412に基づいて、工程601において取得されたマウス420が示す座標の直下にあるGUIに対応するノード(以下、ターゲットノードと記載する)を取得する。
【0063】
工程604において、XPath生成プログラム423は、発注システムの木構造データ412における、ルートノード201からターゲットノードに至るダイレクトXPath候補を生成し、領域503に表示する。また、ターゲットノードのコンテンツ情報を取得し、領域504に表示する。
【0064】
図5は、本発明の実施形態のキャプション部位取得工程を示すフローチャートである。
【0065】
ユーザ401が、XPath生成プログラム423のウィンドウ画面406のチェックボックス505にチェックを入れ、キャプションGUI選択ボタン506をクリックすると、XPath生成プログラム423は、図5に示すキャプション部位取得工程のフローに従って動作する。キャプション部位取得工程は、ユーザ401の任意によって実行される。キャプション部位取得工程は、チェックボックス505のチェックの有無によって、図1に示す対象部位取得工程301の後に、実行されても実行されなくてもよい。
【0066】
図5に示すフローは、始端子700に始まり、終端子704で終わる。
【0067】
工程701において、XPath生成プログラム423は、ユーザ401によって選択されたキャプションGUIを取得する。具体的には、ユーザ401は、チェックボックス505にチェックを入れ、キャプションGUI選択ボタン506をクリックした後に、目的のアプリのウィンドウ画面(本実施形態における図2に示す発注システムのウィンドウ画面404)上でターゲットGUI付近のタイトル文字列のGUI部位405(キャプションGUI)をクリックする。XPath生成プログラム423は、そのクリックの瞬間にマウスの座標を取得する。
【0068】
工程702において、XPath生成プログラム423は、工程602において接続された発注システムの木構造データ412に基づいて、工程701において取得したマウス420が示す座標の直下にあるGUIに対応するノード(以下、キャプションノードと記載する)を取得する。
【0069】
工程703において、XPath生成プログラム423は、発注システムの木構造データ412における、ルートノード201からキャプションノードに至るダイレクトXPath候補を生成し、領域508に表示する。また、キャプションノードのコンテンツ情報を取得し、領域509に表示する。
【0070】
図6は、本発明の実施形態の候補生成工程302を示すフローチャートである。
【0071】
ユーザ401が、XPath生成プログラム423のウィンドウ画面406のXPath生成ボタン510をクリックすると、XPath生成プログラム423は、図6に示すフローに従って動作する。
【0072】
図6に示すフローは、始端子801に始まり、データ802を入力され、データ815を出力し、終端子816で終わる。
【0073】
データ802は、領域503に表示されたターゲットGUIへのダイレクトXPathの値(Pと記載する)、領域508に表示されたキャプションGUIへのダイレクトXPath(Qと記載する)、キャプションGUIを利用するか否かを表すチェックボックス505の値を含む。尚、以下では、XPath Pの長さをn、XPath Qの長さをmと記載する。
【0074】
ここでXPathの長さとは、XPathに含まれるノードの数である。また、チェックボックスの値は、チェックボックス505にチェックが入っている場合は、trueであり、チェックボックス505にチェックが入っていない場合は、falseである。
【0075】
判定803において、チェックボックス505の値がfalseの場合、すなわちキャプションGUIを利用しない場合には、XPath生成プログラム423は、工程806に移行する。また、チェックボックス505の値がtrueの場合、すなわちキャプションGUIを利用する場合には、XPath生成プログラム423は、工程804に移行する。
【0076】
工程804において、XPath生成プログラム423は、ターゲットGUIへのXPath(P)を、キャプションGUIへのXPath(Q)によって、更新する。更新の詳細については、後に図7において説明する。XPath生成プログラム423は、工程804の後、工程806に移行する。
【0077】
工程806において、XPath生成プログラム423は、カウンタkを2に初期化し、XPath候補XをPに初期化してXPath候補データとしてRAM411に蓄積し、省略配列ri(i=2,...,n−1)をfalseに初期化する。カウンタkを2に初期化する理由は、ルートノード201を省略する対象から除外するためである。
【0078】
ここで以下の説明のために、XPathに関する演算を一つ定義する。XPath Xは一般性を失うことなく式6のようにノード単位に表現できる。
【0079】
X=/X2/.../Xn-1/Xn ・・・(式6)
ここで、XPath Xと省略配列rから新たなXPath Yを生成する演算”*”を式7のように定義する。
【0080】
Y=X*r=/(X2,r2)/.../(Xn-1,rn-1)/Xn ・・・(式7)
ただし、(Xk,rk)は、rkがtrueである場合、ノードXkを省略することを意味し、rkがfalseである場合、ノードXkを省略しないことを意味する。例えば、ri(i=2,...,k)=trueであり、ri(i=k+1,...,n−1)=falseである場合、演算X*rによって生成されるXPath Yは式8である。
【0081】
Y=//Xk+1/.../Xn-1/Xn ・・・(式8)
工程807において、XPath生成プログラム423は、省略配列ri(i=2,...,n−1)を、省略配列qi(i=2,...,n−1)にコピーする。
【0082】
工程808において、XPath生成プログラム423は、省略配列qの第k要素qkをtrueとする。
【0083】
工程809において、XPath生成プログラム423は、XPath Xと省略配列qとからXPath Y=X*qを生成する。すなわち、Xkが省略されたXPath Yを生成する。
【0084】
判定810において、XPath生成プログラム423は、XPath Yによって木構造データを検索し、検索結果として抽出されたノードがターゲットノードのみを指定する場合、すなわち、XPath Yによって一意にターゲットノードが指定される場合、工程811に移行する。また、XPath Yが一意にターゲットノードを指定せず、別のノードも指定する場合、判定813に移行する。
【0085】
工程811において、XPath生成プログラム423は、省略配列qkをrkに更新する。判定810において、XPath Yが一意にターゲットノードを指定する場合の省略配列qkをrkに工程811において更新することによって、省略できるノードの情報を省略配列rに記憶できる。
【0086】
工程812において、XPath生成プログラム423は、XPath YをXPath候補データに追加する。尚、蓄積されたXPath候補データについてを、後に図8において詳しく説明する。
【0087】
判定813において、XPath生成プログラム423は、カウンタkがn−1より小さい場合、処理を続けるため、工程814に移行する。また、XPath生成プログラム423は、カウンタkがn−1以上である場合、XPath Xの終端の一つ前のノードまで処理したため、、蓄積されたXPath候補データを候補データ815として出力し、終端子816に移行する。
【0088】
終端子816に移行した後、図1に示す候補生成工程302は終了する。なお、カウンタkがn−1と等しい場合に、処理を終了させるのは、ターゲットノードの最後のノード(n番目のノード)を省略することができないためである。
【0089】
工程814において、XPath生成プログラム423は、カウンタkをインクリメントし、工程807に戻る。
【0090】
以上のようにして、XPath生成プログラム423は、ユーザ401が選択したターゲットGUI及びキャプションGUIから、ターゲットGUIに対応するXPath候補を生成し、XPath生成プログラムのウィンドウ画面406に列挙することができる。
【0091】
なお、本実施形態において生成されたXPath候補は、省略される場合は、先頭から省略されているが、ノードの途中が省略されていてもよい。
【0092】
図7は、本発明の実施形態の候補生成工程302を示すフローチャートである。
【0093】
図7に示すフローチャートは、図6に示す工程804に相当し、ターゲットGUIに対応するXPath Pを、キャプションGUIに対応するXPath Qを用いて、更新する手順を示す。
【0094】
図7に示すフローは、始端子901に始まり、データ902を入力され、XPath Pを更新し、終端子910において終わる。
【0095】
データ902は、領域503に表示されたターゲットGUIに対応するダイレクトXPathの値(以下においてPと記載)、及び、領域508に表示されたキャプションGUIに対応するダイレクトXPathの値(以下においてQと記載)を含む。
【0096】
工程903において、XPath生成プログラム423は、PとQを式9及び式10のようにノード単位に分解する。
【0097】
P=/P2/.../Pn ・・・(式9)
Q=/Q2/.../Qm ・・・(式10)
工程904において、XPath生成プログラム423は、カウンタkを2に初期化し、カウンタ上限Lをmin(n,m)に初期化する。なお、カウンタ上限Lは、カウンタkの上限値である。また、min(n,m)は、n及びmのうち、小さい方の値を返す関数である。
【0098】
判定905において、カウンタkがカウンタ上限Lより大きい場合、P又はQのどちらかのノードが終端を越えるるため、XPath生成プログラム423は、終端子910に移行し工程804を終了する。カウンタkがカウンタ上限Lより小さい場合、判定906に移行する。
【0099】
判定906において、XPath生成プログラム423は、XPath Pの第k番目の値PkとXPath Qの第k番目の値Qkとが等しいか否かを判定する。PkとQkとが等しい場合、XPath生成プログラム423は、XPath Pを更新する必要はないため、工程907に移行する。
【0100】
工程907において、XPath生成プログラム423は、処理を続けるため、カウンタkをインクリメントする。そして、判定905に戻る。
【0101】
判定906において、PkとQkとが異なる場合、Pk-1はQk-1によって指定することが可能であるため、XPath生成プログラム423は、Pk-1をQk-1によって更新するため、工程908に移行する。工程908において、XPath生成プログラム423は、Pk-1に含まれる[]内の条件式を、式11によって更新する。
【0102】
Qk/.../Qm/text()='キャプションGUIのコンテンツ情報'・・(式11)
例えば、図3の領域503に示されるターゲットGUIの値がPであり、領域508に示されるキャプションGUIの値がQであり、領域509に示される値がQのコンテンツ情報である場合、Pは、工程908において式12のように更新される。
【0103】
/html/body/form/table/tbody/tr[2]/td/table[@id='TotalOrder']/
tbody/tr[td[1]/b/text()='合計']/td[2] ・・・(式12)
工程908において、XPath Pの11ノード目の”tr[5]”は、”tr[td[1]/b/text()='合計'”に、更新される。すなわち、工程908の更新前のXPath Pは、「idが'TotalOrder'のテーブルの”tbody”に含まれる5番目の”tr”の2番目の”td”」という意味であったが、工程908の更新後は、「idが”TotalOrder”のテーブルの中で、”tbody"に含まれる一つ目の”td”に”text()='合計'”を持つ”tr”の2番目の”td”」という意味になる。
【0104】
キャプションGUIは、ターゲットGUIの表題に相当するため、木構造データおいてキャプションノードとターゲットノードとの親ノードは一般的にほとんど共通していることが多い。そして、キャプションGUIは、一般的に、キャプションGUIを一意に示すようなコンテンツ情報(本実施形態においては、”text()='合計'”)又は数値などを含んでいることが多い。このため、キャプションノードの値を用いてターゲットノードを指定することによって、ターゲットGUIをより一意に指定することができるターゲットノードを得ることができるのである。
【0105】
なお、本実施形態の工程908のような更新をする場合、更新後のXPath Pは、図12に示す表104の行が追加となっても、すなわち、「idが”TotalOrder”のテーブルの”tbody”に含まれる”tr”」が増加しても、一意にターゲットGUIを指定することができる。
【0106】
工程908の後、XPath生成プログラム423は、終端子910に移行し、工程804の処理を終了する。
【0107】
工程804によって、Pには、ターゲットノードを指定するために、キャプションノードを指定する文字列を用いることができ、さらにこれによって、ターゲットノードをより一意に指定する文字列を得ることができる。
【0108】
前述のように、XPath生成プログラム423は、図6及び図7に従って、ユーザ401が選択するターゲットGUI、及びキャプションGUIに基づいて、ターゲットGUIに対応するXPath候補を列挙及び生成することができる。尚、本フローはあくまで一例に過ぎず、列挙及び生成の仕方を限定するものではない。
【0109】
図8は、本発明の実施形態のXPath候補リストを示す説明図である。
【0110】
図8に示すXPath候補リストは、図6に示すフローによって出力されるものであり、図6に示すフローによって蓄積された順に値を格納される。図8に示すXPath候補リストは、「#」カラムに候補番号が格納され、「XPath」カラムに図6に示すフローによって出力されたXPath候補の値が格納される。「XPath」カラムの値は、図3に示すXPath候補リスト511の列513に表示される値と同一である。
【0111】
図9は、本発明の実施形態のスコアリング工程303を示すフローチャートである。
【0112】
図9に示すフローチャートによって、XPath生成プログラム423は、生成されたXPath候補に対応する、ロバストネススコアを算出する。その際に、XPath生成プログラム423は、XPath候補の記載のうち、ターゲットノードをより一意に指定することができる記載が含まれる場合、そのXPath候補に高いロバストネススコアを算出し、ターゲットノードではない別のノードを指定する可能性が高い記載が含まれる場合、低いロバストネススコアを算出する。すなわち、XPath生成プログラム423は、XPath候補の記載方法によって、ロバストネススコアを算出する。
【0113】
本実施形態の、XPath候補の記載において、ノードの個数が多い場合、及び、”tr[5]”(trノードの5番目)などの番地を示す番号によって子ノードを指定するノードが含まれる場合は、ターゲットノードではない別のノードを指定する可能性が高くなると判定され、ロバストネススコアは低く算出される。また、id属性によって子ノードを指定するノードが含まれる場合、name属性によって子ノードを指定するノードが含まれる場合、及び、text()によって子ノードを指定するノードが含まれる場合、ターゲットノードをより一意に指定することができると判定され、ロバストネススコアは高く算出される。
【0114】
なお、id属性とは、各ノードが指定するGUI部位405を一意に示す名前を示すことを意味する。name属性も、id属性と同じ機能を持つ。また、text()属性は、各ノードが指定するGUI部位405に表示される文字列を含むことを意味する。
【0115】
図9に示すフローチャートは、始端子1101に始まり、XPath候補リスト(候補数をNとする)を入力され、ロバストネススコアリストを出力し、終端子1113に終わる。
【0116】
工程1103において、XPath生成プログラム423は、カウンタkを1に初期化する。
【0117】
工程1105において、XPath生成プログラム423は、XPath候補リストの第k番目のXPath候補において、長さ(ノードの数)u1を算出する。k=1である場合、図8の候補番号#01が示すXPath候補には、
(ノード1)”/”(ルート)
(ノード2)”html”
(ノード3)”body”
(ノード4)”form”
(ノード5)”table”
(ノード6)”tbody”
(ノード7)”tr[2]”
(ノード8)”td”
(ノード9)”table[@id='TotalOrder']”
(ノード10)”tbody”
(ノード11)”tr[td[1]/b/text()='合計']”
(ノード12)”td[2]”
の12個のノードがあるため、u1=12である。
【0118】
工程1106において、XPath生成プログラム423は、XPath候補リストの第k番目のXPath候補において、番号によって子ノードを指定するノード(番地指定の節点)の数u2を算出する。例えば、k=1である場合、図8の候補番号#01が示すXPath候補において、番号によって子ノードを指定するノードには(ノード7)と(ノード12)との二つがあるため、u2=2である。
【0119】
工程1107において、XPath生成プログラム423は、XPath候補リストの第k番目のXPath候補において、id属性によって子ノードを指定するノードの数u3を算出する。例えば、k=1である場合、図8の候補番号#01が示すXPath候補において、id属性によって子ノードを指定するノードは、前述の(ノード9)の一つであるため、u3=1である。
【0120】
工程1108において、XPath生成プログラム423は、XPath候補リストの第k番目のXPath候補において、name属性によって子ノードを指定するノード数u4を算出する。例えば、k=1である場合、図8の候補番号#01が示すXPath候補において、name属性によって子ノードを指定するノードは存在しないため、u4=0である。
【0121】
工程1109において、XPath生成プログラム423は、XPath候補リストの第k番目のXPath候補において、text()によって子ノードを指定するノードの数u5を算出する。例えば、k=1である場合、図8の候補番号#01が示すXPath候補において、text()によって子ノードを指定するノードには(ノード11)の一つがあるため、u5=1である。
【0122】
工程1110において、XPath生成プログラム423は、XPath候補リストの第k番目のXPath候補のロバストネススコアを式13によって算出し、ロバストネススコアリストに蓄積する。式13に示すw1〜w5の重み定数wiは、ロバストネススコアを規定するスコアリング係数であり、固定された数値でもよいし、図11において後述する画面を介して、あらかじめユーザ401によって入力されてもよい。
【0123】
Sk=w1u1+w2u2+w3u3+w4u4+w5u5 ・・・(式13)
判定1111において、XPath生成プログラム423は、カウンタkがNより小さい場合、XPath候補リストの次のXPath候補のロバストネススコアを算出するため、工程1114に移行する。そして、工程1114においてカウンタkをインクリメントし、工程1105に戻る。
【0124】
判定1111において、カウンタkがN以上である場合、XPath生成プログラム423は、XPath候補リストのロバストネススコアがすべて算出されたため、ロバストネススコアリスト1112を出力し、終端子1113に移行する。
【0125】
以上のようにして、XPath生成プログラム423は、各XPath候補リストの各XPath候補のロバストネススコアを算出し、算出された結果をロバストネススコアリスト1112として出力する。
【0126】
図10は、本発明の実施形態のロバストネススコアリスト1112を示す説明図である。
【0127】
図10に示すロバストネススコアリスト1112は、図9に示すフローによって出力され、各XPath候補にロバストネススコアSが含まれる。ロバストネススコアリスト1112は、図2に示すPC402のRAM410、ROM417、又は外部記憶装置415のいずれに格納されてもよい。
【0128】
図10に示すロバストネススコアリスト1112のうち、最も高いロバストネススコアSは、#08と#10とのXPath候補であり、最も低いロバストネススコアSは、#01のXPath候補である。
【0129】
例えば、図12に示す発注登録画面103の文字列の下に任意の文字列が表示されるように、ユーザが発注システムのウィンドウ画面404を変更した場合、図13に示す木構造データは、trノード214の前に、新たなtrノードを追加される。そのため、図10の#01に示すXPathによってターゲットGUIを指定する場合、#01に示すXPathの7番目のノードが”tr[3]”に変更される必要がある。
【0130】
しかし、図10の#08又は#10に示すXPathによってターゲットGUIを指定する場合、前述の発注システムのウィンドウ画面404の変更があっても、XPathを変更する必要はない。
【0131】
図11は、本発明の実施形態のスコアリング係数の入力画面を示す説明図である。
【0132】
図11に示すスコアリング係数の入力画面は、重み係数w1が規定されるプルダウン1301、重み係数w2が規定されるプルダウン1302、重み係数w3が規定されるプルダウン1303、重み係数w4が規定されるプルダウン1304、重み係数w5が規定されるプルダウン1305、保存ボタン1306、及び、キャンセルボタン1307を含む。
【0133】
ユーザ401は、スコアリング係数を入力する場合、図3に示す係数入力ボタン517をクリックする。そして、プルダウン1301〜1305を操作し、ロバストネススコアを規定する定数を入力し、保存ボタン1306をクリックすることによって、スコアリング係数をPC402に記憶させる。そして、ユーザ401によって入力されたスコアリング係数によって、ロバストネススコアが算出される。
【0134】
なお、重み係数wiを0とすることによって、ユーザ401は、前述の記載方法のいずれをロバストネススコアに反映させるかを選択することができる。すなわち、一つの記載方法のみによってロバストネススコアを算出してもよい。
【0135】
以上が、図1に示すスコアリング工程303である。
【0136】
最後に、結果表示工程304において、XPath生成プログラム423は、XPath生成プログラム423のウィンドウ画面406のXPath候補リスト511に、ロバストネススコアリスト1112をスコア順にソートして表示する。
【0137】
本発明の実施形態によれば、ユーザ401は、ロバストネススコアが高いXPath候補を選択することによって、アプリケーションの木構造データが変更されても、目的のGUI部位405を一意に指定するXPathを取得することができる。
【0138】
なお、本実施形態においては、木構造のアプリケーションにHTML又はXMLを用いたが、その他の木構造データによって表現する言語であれば、いずれの言語でもよい。
【符号の説明】
【0139】
401 ユーザ
402 PC
403 ディスプレイ
404 発注システムのウィンドウ画面
405 GUI部位
406 XPath生成プログラムのウィンドウ画面
501 選択ボタン
502〜504、507〜509 領域
505 チェックボックス
506 選択ボタン
510 XPath生成ボタン
511 XPath候補リスト
517 係数入力ボタン
【特許請求の範囲】
【請求項1】
木構造によって実装されるアプリケーションを実行する計算機が、前記アプリケーションによって表示された画面の中の画面部位を指定する検索式を提供する検索式提供方法であって、
前記方法は、
前記計算機が、ユーザによって選択された前記画面部位を取得し、
前記計算機が、前記取得された画面部位を一意に指定する前記検索式の複数の候補を生成し、
前記計算機が、前記生成された複数の候補ごとに、一つ以上の特徴量を求め、
前記計算機が、前記求められた一つ以上の特徴量を、加算することによって前記複数の候補の頑健性を算出し、
前記計算機が、前記算出された頑健性と、前記複数の候補とを表示することを特徴とする検索式提供方法。
【請求項2】
前記検索式は、前記木構造の各々の階層に対応する複数の要素を、前記階層の順に含み、
前記方法は、
前記計算機が、前記取得された画面部位を一意に指定する前記検索式のうち、すべての前記階層に対応する要素を含む前記検索式を取得し、
前記取得された検索式に含まれる前記複数の要素を少なくとも一つ省略し、
前記計算機が、前記省略された検索式のうち、前記画面部位を一意に指定する前記検索式を抽出することによって、前記複数の候補を生成することを特徴とする請求項1に記載の検索式提供方法。
【請求項3】
前記複数の要素は、各々属性を備え、
前記方法は、
前記計算機が、前記生成された複数の候補ごとに、前記要素の個数、又は、前記検索式に含まれる前記要素のうち所定の前記属性を備える前記要素の個数に、各々所定の係数を乗じることによって、前記一つ以上の特徴量を求めることを特徴とする請求項2に記載の検索式提供方法。
【請求項4】
前記複数の属性は、前記木構造における前記要素の相対的な位置を示す数字が含まれることを示す前記属性と、前記画面部位を一意に示す名前が前記要素に含まれることを示す前記属性と、前記画面部位に表示される文字列が前記要素に含まれることを示す前記属性とのうち、少なくとも一つであることを特徴とする請求項3に記載の検索式提供方法。
【請求項5】
前記方法は、
前記計算機が、前記ユーザによって選択された第1の前記画面部位と、前記ユーザによって選択され、前記第1の画面部位の表題が表示された第2の前記画面部位とを取得し、
前記計算機が、前記取得された第1の画面部位を指定する第1の前記検索式と、前記取得された第2の画面部位を指定する第2の前記検索式との共通する要素のうち、最も下位の要素を、前記第2の検索式のうち、最も下位の要素によって表現することによって、前記第1の検索式の複数の候補を生成することを特徴とする請求項2に記載の検索式提供方法。
【請求項6】
前記アプリケーションが、HTML又はXMLによって実装されることを特徴とする請求項5に記載の検索式提供方法。
【請求項7】
木構造によって実装されるアプリケーションを実行する計算機に、前記アプリケーションによって表示された画面の中の画面部位を指定する検索式を提供させるプログラムであって、
前記プログラムは、
前記計算機に、ユーザによって選択された前記画面部位を取得させ、
前記計算機に、前記取得された画面部位を一意に指定する前記検索式の複数の候補を生成させ、
前記計算機に、前記生成された複数の候補ごとに、一つ以上の特徴量を求めさせ、
前記計算機に、前記求められた一つ以上の特徴量を、加算することによって前記複数の候補の頑健性を算出させ、
前記計算機に、前記算出された頑健性と、前記複数の候補とを表示させることを特徴とするプログラム。
【請求項8】
前記検索式は、前記木構造の各々の階層に対応する複数の要素を、前記階層の順に含み、
前記プログラムは、
前記計算機に、前記取得された画面部位を一意に指定する前記検索式のうち、すべての前記階層に対応する要素を含む前記検索式を取得させ、
前記計算機に、前記取得された検索式に含まれる要素を少なくとも一つ省略させ、
前記計算機に、前記省略された検索式のうち、前記画面部位を一意に指定する前記検索式を抽出させることによって、前記複数の候補を生成することを特徴とする請求項7に記載のプログラム。
【請求項9】
前記複数の要素は、各々属性を備え、
前記プログラムは、
前記計算機に、前記生成された複数の候補ごとに、前記要素の個数、又は、前記検索式に含まれる前記要素のうち所定の前記属性を備える前記要素の個数に、各々所定の係数を乗じることによって、前記一つ以上の特徴量を求めさせることを特徴とする請求項8に記載のプログラム。
【請求項10】
前記複数の属性は、前記木構造における前記要素の相対的な位置を示す数字が含まれることを示す前記属性と、前記画面部位を一意に示す名前が前記要素に含まれることを示す前記属性と、前記画面部位に表示される文字列が前記要素に含まれることを示す前記属性とのうち、少なくとも一つであることを特徴とする請求項9に記載のプログラム。
【請求項11】
前記プログラムは、
前記計算機に、前記ユーザによって選択された第1の前記画面部位と、前記ユーザによって選択され、前記第1の画面部位の表題が表示された第2の前記画面部位とを取得させ、
前記計算機に、前記取得された第1の画面部位を指定する第1の前記検索式と、前記取得された第2の画面部位を指定する第2の前記検索式との共通する要素のうち、最も下位の要素を、前記第2の検索式のうち、最も下位の要素によって表現することによって、前記第1の検索式の複数の候補を生成することを特徴とする請求項8に記載のプログラム。
【請求項12】
前記アプリケーションが、HTML又はXMLなどの言語によって実装されることを特徴とする請求項11に記載のプログラム。
【請求項13】
木構造によって実装されるアプリケーションを実行する計算機が、前記アプリケーションによって表示された画面の中の画面部位を指定する検索式を提供する検索式提供システムであって、
前記検索式は、前記木構造の各々の階層に対応する複数の要素を、前記階層の順に含み、
前記複数の要素は、各々属性を備え、
前記計算機は、
ユーザによって選択された前記画面部位を取得し、
前記取得された画面部位を一意に指定する前記検索式のうち、すべての前記階層に対応する要素を含む前記検索式を取得し、
前記取得された検索式に含まれる前記複数の要素を少なくとも一つ省略し、
前記省略された検索式のうち、前記画面部位を一意に指定する前記検索式を抽出することによって、前記検索式の複数の候補を生成し、
前記生成された複数の候補ごとに、前記要素の個数、又は、前記検索式に含まれる前記要素のうち所定の前記属性を備える前記要素の個数に、各々所定の係数を乗じることによって、一つ以上の特徴量を求め、
前記求められた一つ以上の特徴量を、加算することによって前記複数の候補の頑健性を算出し、
前記算出された頑健性と、前記複数の候補とを表示することを特徴とする検索式提供システム。
【請求項1】
木構造によって実装されるアプリケーションを実行する計算機が、前記アプリケーションによって表示された画面の中の画面部位を指定する検索式を提供する検索式提供方法であって、
前記方法は、
前記計算機が、ユーザによって選択された前記画面部位を取得し、
前記計算機が、前記取得された画面部位を一意に指定する前記検索式の複数の候補を生成し、
前記計算機が、前記生成された複数の候補ごとに、一つ以上の特徴量を求め、
前記計算機が、前記求められた一つ以上の特徴量を、加算することによって前記複数の候補の頑健性を算出し、
前記計算機が、前記算出された頑健性と、前記複数の候補とを表示することを特徴とする検索式提供方法。
【請求項2】
前記検索式は、前記木構造の各々の階層に対応する複数の要素を、前記階層の順に含み、
前記方法は、
前記計算機が、前記取得された画面部位を一意に指定する前記検索式のうち、すべての前記階層に対応する要素を含む前記検索式を取得し、
前記取得された検索式に含まれる前記複数の要素を少なくとも一つ省略し、
前記計算機が、前記省略された検索式のうち、前記画面部位を一意に指定する前記検索式を抽出することによって、前記複数の候補を生成することを特徴とする請求項1に記載の検索式提供方法。
【請求項3】
前記複数の要素は、各々属性を備え、
前記方法は、
前記計算機が、前記生成された複数の候補ごとに、前記要素の個数、又は、前記検索式に含まれる前記要素のうち所定の前記属性を備える前記要素の個数に、各々所定の係数を乗じることによって、前記一つ以上の特徴量を求めることを特徴とする請求項2に記載の検索式提供方法。
【請求項4】
前記複数の属性は、前記木構造における前記要素の相対的な位置を示す数字が含まれることを示す前記属性と、前記画面部位を一意に示す名前が前記要素に含まれることを示す前記属性と、前記画面部位に表示される文字列が前記要素に含まれることを示す前記属性とのうち、少なくとも一つであることを特徴とする請求項3に記載の検索式提供方法。
【請求項5】
前記方法は、
前記計算機が、前記ユーザによって選択された第1の前記画面部位と、前記ユーザによって選択され、前記第1の画面部位の表題が表示された第2の前記画面部位とを取得し、
前記計算機が、前記取得された第1の画面部位を指定する第1の前記検索式と、前記取得された第2の画面部位を指定する第2の前記検索式との共通する要素のうち、最も下位の要素を、前記第2の検索式のうち、最も下位の要素によって表現することによって、前記第1の検索式の複数の候補を生成することを特徴とする請求項2に記載の検索式提供方法。
【請求項6】
前記アプリケーションが、HTML又はXMLによって実装されることを特徴とする請求項5に記載の検索式提供方法。
【請求項7】
木構造によって実装されるアプリケーションを実行する計算機に、前記アプリケーションによって表示された画面の中の画面部位を指定する検索式を提供させるプログラムであって、
前記プログラムは、
前記計算機に、ユーザによって選択された前記画面部位を取得させ、
前記計算機に、前記取得された画面部位を一意に指定する前記検索式の複数の候補を生成させ、
前記計算機に、前記生成された複数の候補ごとに、一つ以上の特徴量を求めさせ、
前記計算機に、前記求められた一つ以上の特徴量を、加算することによって前記複数の候補の頑健性を算出させ、
前記計算機に、前記算出された頑健性と、前記複数の候補とを表示させることを特徴とするプログラム。
【請求項8】
前記検索式は、前記木構造の各々の階層に対応する複数の要素を、前記階層の順に含み、
前記プログラムは、
前記計算機に、前記取得された画面部位を一意に指定する前記検索式のうち、すべての前記階層に対応する要素を含む前記検索式を取得させ、
前記計算機に、前記取得された検索式に含まれる要素を少なくとも一つ省略させ、
前記計算機に、前記省略された検索式のうち、前記画面部位を一意に指定する前記検索式を抽出させることによって、前記複数の候補を生成することを特徴とする請求項7に記載のプログラム。
【請求項9】
前記複数の要素は、各々属性を備え、
前記プログラムは、
前記計算機に、前記生成された複数の候補ごとに、前記要素の個数、又は、前記検索式に含まれる前記要素のうち所定の前記属性を備える前記要素の個数に、各々所定の係数を乗じることによって、前記一つ以上の特徴量を求めさせることを特徴とする請求項8に記載のプログラム。
【請求項10】
前記複数の属性は、前記木構造における前記要素の相対的な位置を示す数字が含まれることを示す前記属性と、前記画面部位を一意に示す名前が前記要素に含まれることを示す前記属性と、前記画面部位に表示される文字列が前記要素に含まれることを示す前記属性とのうち、少なくとも一つであることを特徴とする請求項9に記載のプログラム。
【請求項11】
前記プログラムは、
前記計算機に、前記ユーザによって選択された第1の前記画面部位と、前記ユーザによって選択され、前記第1の画面部位の表題が表示された第2の前記画面部位とを取得させ、
前記計算機に、前記取得された第1の画面部位を指定する第1の前記検索式と、前記取得された第2の画面部位を指定する第2の前記検索式との共通する要素のうち、最も下位の要素を、前記第2の検索式のうち、最も下位の要素によって表現することによって、前記第1の検索式の複数の候補を生成することを特徴とする請求項8に記載のプログラム。
【請求項12】
前記アプリケーションが、HTML又はXMLなどの言語によって実装されることを特徴とする請求項11に記載のプログラム。
【請求項13】
木構造によって実装されるアプリケーションを実行する計算機が、前記アプリケーションによって表示された画面の中の画面部位を指定する検索式を提供する検索式提供システムであって、
前記検索式は、前記木構造の各々の階層に対応する複数の要素を、前記階層の順に含み、
前記複数の要素は、各々属性を備え、
前記計算機は、
ユーザによって選択された前記画面部位を取得し、
前記取得された画面部位を一意に指定する前記検索式のうち、すべての前記階層に対応する要素を含む前記検索式を取得し、
前記取得された検索式に含まれる前記複数の要素を少なくとも一つ省略し、
前記省略された検索式のうち、前記画面部位を一意に指定する前記検索式を抽出することによって、前記検索式の複数の候補を生成し、
前記生成された複数の候補ごとに、前記要素の個数、又は、前記検索式に含まれる前記要素のうち所定の前記属性を備える前記要素の個数に、各々所定の係数を乗じることによって、一つ以上の特徴量を求め、
前記求められた一つ以上の特徴量を、加算することによって前記複数の候補の頑健性を算出し、
前記算出された頑健性と、前記複数の候補とを表示することを特徴とする検索式提供システム。
【図1】
【図2】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図13】
【図3】
【図12】
【図2】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図13】
【図3】
【図12】
【公開番号】特開2011−170503(P2011−170503A)
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願番号】特願2010−32345(P2010−32345)
【出願日】平成22年2月17日(2010.2.17)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願日】平成22年2月17日(2010.2.17)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]