(57)【特許請求の範囲】
【請求項１】
木構造によって実装されるアプリケーションを実行する計算機が、前記アプリケーションによって表示された画面の中の画面部位を指定する検索式を提供する検索式提供方法であって、
前記検索式は、前記木構造の各々の階層に対応する複数の要素を、前記階層の順に含み、
前記複数の要素は、各々属性を備え、
前記方法は、
前記計算機が、ユーザによって選択された前記画面部位を取得し、
前記計算機が、前記取得された画面部位を一意に指定する前記検索式のうち、すべての前記階層に対応する要素を含む前記検索式を取得し、
前記計算機が、前記取得された検索式に含まれる前記複数の要素を少なくとも一つ省略し、
前記計算機が、前記省略された検索式のうち、前記画面部位を一意に指定する前記検索式を抽出することによって、前記検索式の複数の候補を生成し、
前記計算機が、前記生成された複数の候補ごとに、前記要素の個数、又は、前記検索式に含まれる前記要素のうち所定の前記属性を備える前記要素の個数に、各々所定の係数を乗じることによって、一つ以上の特徴量を求め、
前記計算機が、前記求められた一つ以上の特徴量を、加算することによって前記複数の候補の頑健性を算出し、
前記計算機が、前記算出された頑健性と、前記複数の候補とを表示することを特徴とする検索式提供方法。
【請求項２】
前記複数の属性は、前記木構造における前記要素の相対的な位置を示す数字が含まれることを示す前記属性と、前記画面部位を一意に示す名前が前記要素に含まれることを示す前記属性と、前記画面部位に表示される文字列が前記要素に含まれることを示す前記属性とのうち、少なくとも一つであることを特徴とする請求項１に記載の検索式提供方法。
【請求項３】
前記方法は、
前記計算機が、前記ユーザによって選択された第１の前記画面部位と、前記ユーザによって選択され、前記第１の画面部位の表題が表示された第２の前記画面部位とを取得し、
前記計算機が、前記取得された第１の画面部位を指定する第１の前記検索式と、前記取得された第２の画面部位を指定する第２の前記検索式との共通する要素のうち、最も下位の要素を、前記第２の検索式のうち、最も下位の要素によって表現することによって、前記第１の検索式の複数の候補を生成することを特徴とする請求項１に記載の検索式提供方法。
【請求項４】
前記アプリケーションが、ＨＴＭＬ又はＸＭＬによって実装されることを特徴とする請求項３に記載の検索式提供方法。
【請求項５】
木構造によって実装されるアプリケーションを実行する計算機に、前記アプリケーションによって表示された画面の中の画面部位を指定する検索式を提供させるプログラムであって、
前記検索式は、前記木構造の各々の階層に対応する複数の要素を、前記階層の順に含み、
前記複数の要素は、各々属性を備え、
前記プログラムは、
前記計算機に、ユーザによって選択された前記画面部位を取得させ、
前記計算機に、前記取得された画面部位を一意に指定する前記検索式のうち、すべての前記階層に対応する要素を含む前記検索式を取得させ、
前記計算機に、前記取得された検索式に含まれる要素を少なくとも一つ省略させ、
前記計算機に、前記省略された検索式のうち、前記画面部位を一意に指定する前記検索式を抽出させることによって、前記検索式の複数の候補を生成させ、
前記計算機に、前記生成された複数の候補ごとに、前記要素の個数、又は、前記検索式に含まれる前記要素のうち所定の前記属性を備える前記要素の個数に、各々所定の係数を乗じることによって、一つ以上の特徴量を求めさせ、
前記計算機に、前記求められた一つ以上の特徴量を、加算することによって前記複数の候補の頑健性を算出させ、
前記計算機に、前記算出された頑健性と、前記複数の候補とを表示させることを特徴とするプログラム。
【請求項６】
前記複数の属性は、前記木構造における前記要素の相対的な位置を示す数字が含まれることを示す前記属性と、前記画面部位を一意に示す名前が前記要素に含まれることを示す前記属性と、前記画面部位に表示される文字列が前記要素に含まれることを示す前記属性とのうち、少なくとも一つであることを特徴とする請求項５に記載のプログラム。
【請求項７】
前記プログラムは、
前記計算機に、前記ユーザによって選択された第１の前記画面部位と、前記ユーザによって選択され、前記第１の画面部位の表題が表示された第２の前記画面部位とを取得させ、
前記計算機に、前記取得された第１の画面部位を指定する第１の前記検索式と、前記取得された第２の画面部位を指定する第２の前記検索式との共通する要素のうち、最も下位の要素を、前記第２の検索式のうち、最も下位の要素によって表現することによって、前記第１の検索式の複数の候補を生成することを特徴とする請求項５に記載のプログラム。
【請求項８】
前記アプリケーションが、ＨＴＭＬ又はＸＭＬなどの言語によって実装されることを特徴とする請求項７に記載のプログラム。
【請求項９】
木構造によって実装されるアプリケーションを実行する計算機が、前記アプリケーションによって表示された画面の中の画面部位を指定する検索式を提供する検索式提供システムであって、
前記検索式は、前記木構造の各々の階層に対応する複数の要素を、前記階層の順に含み、
前記複数の要素は、各々属性を備え、
前記計算機は、
ユーザによって選択された前記画面部位を取得し、
前記取得された画面部位を一意に指定する前記検索式のうち、すべての前記階層に対応する要素を含む前記検索式を取得し、
前記取得された検索式に含まれる前記複数の要素を少なくとも一つ省略し、
前記省略された検索式のうち、前記画面部位を一意に指定する前記検索式を抽出することによって、前記検索式の複数の候補を生成し、
前記生成された複数の候補ごとに、前記要素の個数、又は、前記検索式に含まれる前記要素のうち所定の前記属性を備える前記要素の個数に、各々所定の係数を乗じることによって、一つ以上の特徴量を求め、
前記求められた一つ以上の特徴量を、加算することによって前記複数の候補の頑健性を算出し、
前記算出された頑健性と、前記複数の候補とを表示することを特徴とする検索式提供システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検索式提供方法に関し、特に、ＧＵＩ画面が木機構データによって実装されるアプリケーションの検索式提供方法に関する。
【背景技術】
【０００２】
近年、Ｗｅｂブラウザに代表されるように、ＨＴＭＬ又はＸＭＬなどの木構造データによって、アプリケーションのＧＵＩ画面を設計及び実装する技術が主流になりつつある。このように、木構造データによってＧＵＩ（Ｇｒａｆｉｃ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）画面を設計及び実装するアプリケーションを、以下では木構造アプリと呼ぶ。
【０００３】
図１２は、従来技術のＷｅｂブラウザに表示された木構造アプリのウィンドウ画面４０４を示す説明図である。
【０００４】
図１２は、発注システムのウィンドウ画面４０４を木構造アプリによって実装した場合の、ウィンドウ画面４０４の例である。ＧＵＩ部位１０２には、「合計」の表示があり、ＧＵＩ部位１０１には、金額の合計値が表示される。
【０００５】
図１３は、従来技術のＷｅｂブラウザが保持する木構造データを示す説明図である。
【０００６】
図１３に示す木構造データは、ルートノード２０１が最も上位であり、ルートノード２０１は”／”によって示される。ｈｔｍｌノード２０２は、ルートノード２０１の子ノードであり、ｈｅａｄノード２０３とｂｏｄｙノード２０５とは、ｈｔｍｌノード２０２の子ノードである。同様に、他ノードにも親子関係があり、図１３は、木構造データにおける親子関係を階層構造によって示す。
【０００７】
尚、全ての木構造データは大きすぎて図示できないため、図１３における木構造データは、短縮されて表示される。各ノードの末尾には、”−”、”＋”又は”Ｌ”などの記号が付され、これらの記号は、木構造データの各ノードが省略されているか否かを示す。“−”は子ノードが展開表示されていることを示し、“＋”は子ノードが非展開表示、すなわち短縮されていることを示し、”Ｌ”は子ノードを持たない葉ノードであることを示す。
【０００８】
木構造アプリにおいて、ウィンドウ画面４０４上のある部位を選択することは、木構造データ上のあるノードを指定することと等価である。例えば、図１２において「￥３６５，３００円」と表示されるＧＵＩ部位１０１は、図１３に示すｔｄノード２２６に対応する。すなわち、木構造データのｔｄノード２２６を書き換えれば、書き換えられた結果は、直ちにＧＵＩ部位１０１の表示に反映される。
【０００９】
このような木構造アプリの特徴をいかして、既存アプリの使い勝手を向上させるため、ウィンドウ画面４０４上の所望のＧＵＩ部位に対応するノードを木構造データから検索し、当該ノードのデータを読み書きしたり、加工したりするなどのカスタマイズを実装する技術が提案されている。以下では、このような技術をカスタマイズ技術と呼ぶ。
【００１０】
ＧＵＩ画面の所望の部位を一意に指定するためには、木構造データにおいて対応するノードを一意に指定する検索式が必要である。従来、カスタマイズ技術を実装するエンジニアは、そのようなノードを一意に指定する検索式を、人手で作成してきた。尚、この技術分野において、検索式の標準規格はＸＰａｔｈであるので、以下では、検索式の替わりにＸＰａｔｈ（例えば、非特許文献１参照）と記載する。
【００１１】
また、そのような人手によるＸＰａｔｈ作成の作業を支援するための技術が提案されている（例えば、非特許文献２参照）。
【００１２】
非特許文献２の技術によれば、エンジニアは、木構造アプリの実際のＧＵＩ画面を介して、インタラクティブにＸＰａｔｈを作成する。すなわち、エンジニアがＸＰａｔｈを知りたい画面の部位の上でマウスを右クリックすると、ダイレクトＸＰａｔｈが生成及び表示される。ここで、ダイレクトＸＰａｔｈとは、ルートノードから目的のノードに至るまでに経由する全ノードを書き出し、以下のように表現したものである。
【００１３】
/html/body/form/table/tbody/tr[2]/
td/table[@id='TotalOrder']/tbody/tr[5]/td[2]  ・・・（式１）
式１は、ノード２２６のＸＰａｔｈをダイレクトＸＰａｔｈによって表示したものである。数１のうち、先頭の文字列の”/html”は、「ルートノード２０１は一つのｈｔｍｌノード２０２を子ノードとして持ち、そのｈｔｍｌノード２０２が選択される」を意味する。また、”／”ノードを１番目のノードと数え、”ｈｔｍｌ”ノードを２番目のノードと数えた場合に、６番目のノードと７番目のノードである”tbody/tr[2]”は、「ｔｂｏｄｙノード２１０は、複数のｔｒノードを子ノードとして持ち、その複数のｔｒノードのうち、第２番目のｔｒノード２１４が選択される」を意味する。
【００１４】
また、数１のうち８番目のノードと９番目のノードとの”td/table[@id='TotalOrder']”は、「ｔｄノード２１５は複数のｔａｂｌｅノードを子ノードとして持ち、複数のｔａｂｌｅノードのうち、ｉｄ属性が’ＴｏｔａｌＯｒｄｅｒ’に等しいｔａｂｌｅノード２１７が選択される」を意味する。
【００１５】
この数１のうち８番目のノードと９番目のノードとの記載は、６番目のノードと７番目のノードとの記載のように”td/table[2]”と表現されてもよいが、図１３に示すｔａｂｌｅノード２１７のようにｉｄ属性を持つ場合には、ｉｄ属性を利用した方がより直接的に目的のノードを指定できるため、数１に示す記載に置き換えられる。この様に、８番目のノードと９番目のノードとの間の記載は、ダイレクトＸＰａｔｈが一意に定まり、ダイレクトＸＰａｔｈによって目的のノードを一意に指定できる。
【００１６】
尚、一般に目的のノードを指定するＸＰａｔｈの表現は、ダイレクトＸＰａｔｈの他にも多数存在する。例えば、以下のような表現でも同じノードを一意に指定できる。
【００１７】
/html//table[@id='TotalOrder']/tbody/tr[5]/td[2]  ・・・（式２）
//tr[td/b/text()='合計']/td[2]                    ・・・（式３）
式２と式３とは、ともに数１が指定するノードと同じノードを指定する。式２のうち先頭から２番目のスラッシュと４番目のスラッシュとの間の”/table[@id='TotalOrder']”は、「ｈｔｍｌノード２０２の配下にある全ｔａｂｌｅノードのうち、ｉｄ属性が’ＴｏｔａｌＯｒｄｅｒ’に等しいｔａｂｌｅノードが選択される」を意味する。
【００１８】
また、式３のうち先頭から１番目のスラッシュと３番目のスラッシュとの間の”//tr[td/b/text()='合計']”は、「ルートノード２０１の配下にある全ｔｒノードのうち、そのノードを起点としてＸＰａｔｈ”td/b”によって指定されるｂノードのテキストが’合計’に等しいｔｒノードが選択される」を意味する。
【００１９】
このように表現は多種多様であり、どのような表現が最適なのかはＸＰａｔｈを利用する目的に依存する。
【００２０】
非特許文献２の技術は、エンジニアが入力したＸＰａｔｈに適合する全ノードを抽出及び列挙して、画面に表示する機能を持つ。この機能によって、エンジニアは、思い付いたＸＰａｔｈについて、目的のノードを一意に指定するか否かをテストする事ができる。
【先行技術文献】
【非特許文献】
【００２１】
【非特許文献１】（財）日本規格協会、”ＸＭＬパス言語（ＸＰａｔｈ）  JIS X 4160:2007”
【非特許文献２】Viktor Zigo、”ＸＰａｔｈｅｒ”、［ｏｎｌｉｎｅ］、［平成２１年１１月２７日検索］、インターネット、<ＵＲＬ：http://xpath.alephzarro.com/>
【発明の概要】
【発明が解決しようとする課題】
【００２２】
木構造アプリのＧＵＩ構造、すなわち木構造データは、頻繁に変更される傾向が強い。例えば、ポータルサイトのようなＷｅｂアプリの場合、ＧＵＩ画面上に「ニュース」、又は「お知らせ」などの情報が表示されるが、情報の件数は日々異なるため、ＧＵＩ画面に対応する木構造データも日々異なる。
【００２３】
また、例えば、Ｗｅｂメールの場合、画面上にメールのリストが表示されるが、リストの件数は時刻毎に異なるため、画面の木構造データも頻繁に変更される。また、エンドユーザの要望を受け、画面レイアウトを変更する場合も少なくなく、その結果画面の木構造データも変更される。
【００２４】
カスタマイズ技術を利用するエンジニアは、木構造データに前述のような変更が生じても目的のノードを正しく指定する頑健なＸＰａｔｈ、すなわちロバストネスが高いＸＰａｔｈを作成する必要がある。頑健なＸＰａｔｈを作成できない場合、木構造データの変更の度に、エンジニアがカスタマイズ作業をやり直さなくてはならない。
【００２５】
非特許文献２において提案されているダイレクトＸＰａｔｈは、そのような木構造データの変更に脆弱である傾向が強い。すなわち、非特許文献２におけるダイレクトＸＰａｔｈは、目的のノードまでの経路を固定的に表現するため、ＧＵＩ画面の構成が少しでも変更されると、目的のノードを正しく指定しない可能性がある。
【００２６】
そのため、エンジニアは、属人的なトライ＆エラーによって、様々なＸＰａｔｈを試し、目的のノードを一意に指定する頑健なＸＰａｔｈを生成しなくてはならず、非効率な状況であるという問題点があった。
【００２７】
本発明は、目的のノードを一意に指定する頑健な（ロバストネスな）ＸＰａｔｈなどの検索式を効率的に生成することを課題とする。
【課題を解決するための手段】
【００２８】
本発明の代表的な一例を示せば以下の通りである。すなわち、木構造によって実装されるアプリケーションを実行する計算機が、前記アプリケーションによって表示された画面の中の画面部位を指定する検索式を提供する検索式提供方法であって、前記検索式は、前記木構造の各々の階層に対応する複数の要素を、前記階層の順に含み、前記複数の要素は、各々属性を備え、前記方法は、前記計算機が、ユーザによって選択された前記画面部位を取得し、前記計算機が、前記取得された画面部位を一意に指定する前記検索式のうち、すべての前記階層に対応する要素を含む前記検索式を取得し、前記計算機が、前記取得された検索式に含まれる前記複数の要素を少なくとも一つ省略し、前記計算機が、前記省略された検索式のうち、前記画面部位を一意に指定する前記検索式を抽出することによって、前記検索式の複数の候補を生成し、前記計算機が、前記生成された複数の候補ごとに、前記要素の個数、又は、前記検索式に含まれる前記要素のうち所定の前記属性を備える前記要素の個数に、各々所定の係数を乗じることによって、一つ以上の特徴量を求め、前記計算機が、前記求められた一つ以上の特徴量を、加算することによって前記複数の候補の頑健性を算出し、前記計算機が、前記算出された頑健性と、前記複数の候補とを表示する。
【発明の効果】
【００２９】
本発明の一実施形態によると、これまでエンジニアによって属人的に行われていた検索式生成作業を、効率化する事が可能となる。
【図面の簡単な説明】
【００３０】
【図１】本発明の実施形態の概要を示すフローチャートである。
【図２】本発明の実施形態のシステムの構成を示すブロック図である。
【図３】本発明の実施形態のＸＰａｔｈ生成プログラムのウィンドウ画面の具体例を示す説明図である。
【図４】本発明の実施形態の対象部位取得工程を示すフローチャートである。
【図５】本発明の実施形態のキャプション部位取得工程を示すフローチャートである。
【図６】本発明の実施形態の候補生成工程を示すフローチャートである。
【図７】本発明の実施形態の候補生成工程を示すフローチャートである。
【図８】本発明の実施形態のＸＰａｔｈ候補リストを示す説明図である。
【図９】本発明の実施形態のスコアリング工程を示すフローチャートである。
【図１０】本発明の実施形態のロバストネススコアリストを示す説明図である。
【図１１】本発明の実施形態のスコアリング係数の入力画面を示す説明図である。
【図１２】従来技術のＷｅｂブラウザに表示された木構造アプリのＧＵＩ画面を示す説明図である。
【図１３】従来技術のＷｅｂブラウザが保持する木構造データを示す説明図である。
【発明を実施するための形態】
【００３１】
以下に、本発明の実施形態を添付の図面に基づいて説明する。
【００３２】
図１は、本発明の実施形態の概要を示すフローチャートである。
【００３３】
まず本発明は、ＸＰａｔｈ候補を生成する対象のＧＵＩ部位（対象部位）をユーザが選択することによって、対象部位を取得し（対象部位取得工程３０１）、対象部位を指定するＸＰａｔｈ候補を生成及び列挙し（候補生成工程３０２）、各ＸＰａｔｈ候補のロバストネススコアを算出し（スコアリング工程３０３）、算出された結果をユーザに提示する（結果表示工程３０４）。ロバストネススコアとは、木構造データが変更されても、対象部位を一意に指定するか否かを示す値のことである。
【００３４】
図２は、本発明の実施形態のシステムの構成を示すブロック図である。
【００３５】
図２に示すＰＣ４０２において、発注システムのウィンドウ画面４０４内には、ＧＵＩ部位４０５が含まれ、ユーザ４０１はＧＵＩ部位４０５を選択する。そしてユーザ４０１は、ＧＵＩ部位４０５に対応するＸＰａｔｈ候補を、ＸＰａｔｈ生成プログラム４２３のウィンドウ画面４０６を介して取得する。
【００３６】
ＰＣ４０２は、ＣＰＵ４１６、ＲＯＭ４１７、通信装置４１８、キーボード４１９、マウス４２０、ＲＡＭ４１０、外部記憶装置４１５、及びディスプレイ装置４０３を備える。
【００３７】
ＣＰＵ４１６は、ＲＯＭ４１７に格納されるＢＩＯＳ、及び、ＲＡＭ４１０に展開された各種プログラムを実行する。
【００３８】
外部記憶装置４１５は、ＯＳ及び各種プログラムを格納する。
【００３９】
ＲＡＭ４１０は、ＣＰＵ４１６によって、ＯＳ４１４、ブラウザプログラム４１１、及びＸＰａｔｈ生成プログラム４２３が実行されるための作業エリアとして、又は各種プログラムが実行するされるための一時的な格納場所として利用される。
【００４０】
ブラウザプログラム４１１は、発注システムの木構造データ４１２を内部に保持し、木構造データ４１２の内容に従って、ＯＳ４１４を介してディスプレイ装置４０３上に、発注システムのウィンドウ画面４０４を表示させる。ブラウザプログラム４１１は、発注システムのウィンドウ画面４０４がディスプレイ装置４０３に表示される座標と、木構造データ４１２とを対応させる。
【００４１】
ＸＰａｔｈ生成プログラム４２３は、ＯＳ４１４を介してディスプレイ装置４０３上に、ＸＰａｔｈ生成プログラム４２３のウィンドウ画面４０６を表示させる。尚、ＸＰａｔｈ生成プログラム４２３のウィンドウ画面４０６については、後に図３において、詳しく説明する。
【００４２】
ここで、既に従来技術において説明した図１２及び図１３を用いて、発注システムのウィンドウ画面４０４及びＸＰａｔｈ生成プログラム４２３のウィンドウ画面４０６の具体例を示す。図１２は、発注システムのウィンドウ画面４０４の本発明の実施形態における具体例であり、図１３は、発注システムの木構造データ４１２の本発明の実施形態における模式図である。
【００４３】
図１２に示す発注登録画面１０３の文字列は、図１３に示すｆｏｎｔノード２１３に対応する。また、図１２に示す表１０４は、図１３に示す”table @id='TotalOrder'”ノード２１７とその子ノードとに相当する。
【００４４】
ユーザ４０１は、発注システムのウィンドウ画面４０４と、ＸＰａｔｈ生成プログラム４２３のウィンドウ画面４０６との両方を見ながら、キーボード４１９及びマウス４２０を操作して、目的のＧＵＩ部位４０５に対応するＸＰａｔｈ候補を取得する。
【００４５】
図３は、本発明の実施形態のＸＰａｔｈ生成プログラム４２３のウィンドウ画面４０６の具体例を示す説明図である。ＸＰａｔｈ生成プログラム４２３のウィンドウ画面４０６は、ユーザ４０１がマウス４２０を操作することによって、ＸＰａｔｈ候補を生成するためのＧＵＩである。
【００４６】
ＸＰａｔｈ生成プログラム４２３のウィンドウ画面４０６は、ユーザ４０１がＸＰａｔｈ候補を生成する対象のＧＵＩ部位４０５（以下、ターゲットＧＵＩと記載する）の選択を開始するためのボタン５０１を含む。ユーザは、選択ボタン５０１をマウス４２０によってクリックした後に、目的の木構造アプリのウィンドウ画面（本実施形態では、発注システムのウィンドウ画面４０４）の上で、目的のＧＵＩ部位４０５（本実施形態では、ＧＵＩ部位１０１）をクリックすることによってターゲットＧＵＩを選択する。
【００４７】
また、ＸＰａｔｈ生成プログラム４２３のウィンドウ画面４０６は、ユーザ４０１によって選択されたターゲットＧＵＩの基本情報を表示する領域５０２を含む。領域５０２は、ターゲットＧＵＩへのダイレクトＸＰａｔｈ候補を表示する領域５０３、ターゲットＧＵＩのコンテンツ情報を表示する領域５０４を含む。尚、後に図４において、ターゲットＧＵＩのＸＰａｔｈ候補およびコンテンツ情報を取得する工程の詳細について述べる。
【００４８】
例えば、ユーザ４０１が選択ボタン５０１をクリックした後に、発注システムのウィンドウ画面４０４において、ＧＵＩ部位１０１をクリックして、ＧＵＩ部位１０１をターゲットＧＵＩ（図２におけるＧＵＩ部位４０５）として選択した場合、ＸＰａｔｈ生成プログラム４２３は、図３に示すように、ＧＵＩ部位１０１に対応するダイレクトＸＰａｔｈ（数１）を生成して領域５０３に表示する。そして、ＸＰａｔｈ生成プログラム４２３は、ＧＵＩ部位１０１のコンテンツ情報「￥３６５，３００円」を取得して領域５０４に表示する。
【００４９】
また、ＸＰａｔｈ生成プログラム４２３のウィンドウ画面４０６は、ターゲットＧＵＩ付近に表示された「金額」「数量」と言ったタイトル文字列（以下、キャプションＧＵＩと記載する）をＸＰａｔｈ候補の生成に反映させるか否かについて、ユーザ４０１が選択するチェックボックス５０５、ユーザ４０１がキャプションＧＵＩの選択を開始するボタン５０６、及び、選択されたキャプションＧＵＩについての基本情報を表示する領域５０７を含む。キャプションＧＵＩは、ターゲットＧＵＩが示す値のタイトルであり、一般にターゲットＧＵＩの近傍に表示される。
【００５０】
また、領域５０７は、キャプションＧＵＩへのダイレクトＸＰａｔｈを表示する領域５０８、及び、キャプションＧＵＩのコンテンツ情報を表示する領域５０９を含む。尚、後に図５において、キャプションＧＵＩのＸＰａｔｈおよびコンテンツ情報を取得する工程の詳細について述べる。
【００５１】
例えば、ユーザ４０１が選択ボタン５０６をクリックした後に、発注システムのウィンドウ画面４０４において、ＧＵＩ部位１０２をクリックして、ＧＵＩ部位１０２をキャプションＧＵＩとして選択した場合、ＸＰａｔｈ生成プログラム４２３は、図３に示すように、ＧＵＩ部位１０２のダイレクトＸＰａｔｈを生成して領域５０８に表示する。そして、キャプションＧＵＩであるＧＵＩ部位１０２のコンテンツ情報「合計」を取得して、領域５０９に表示する。
【００５２】
さらに、ＸＰａｔｈ生成プログラム４２３のウィンドウ画面４０６は、ＸＰａｔｈ生成プログラム４２３にＸＰａｔｈ候補を生成するように指示するためのＸＰａｔｈ生成ボタン５１０、及び、ＸＰａｔｈ生成プログラム４２３がターゲットＧＵＩへのＸＰａｔｈ候補を複数生成された結果を表示するＸＰａｔｈ候補リスト５１１を含む。また、ＸＰａｔｈ生成プログラム４２３が、生成された候補にロバストネススコアを算出するための、後述するスコアリング係数を入力するための係数入力ボタン５１７を含む。
【００５３】
ＸＰａｔｈ候補リスト５１１は、表形式によって表示されており、生成されたＸＰａｔｈ候補を示す列５１３と、各ＸＰａｔｈ候補に対応するロバストネススコアを示す列５１２を含む。列５１２と列５１３との組み合わせは、ロバストネススコアの高い候補から順に表示される。
【００５４】
例えば、ユーザ４０１がＸＰａｔｈ生成ボタン５１０をクリックした場合、ＸＰａｔｈ生成プログラム４２３は、ターゲットＧＵＩであるＧＵＩ部位１０１に対応するＸＰａｔｈ候補を複数生成し、各ＸＰａｔｈ候補のロバストネススコアを算出する。そして、図３に示すように、ＸＰａｔｈ候補リスト５１１に、生成されたＸＰａｔｈ候補と、各ＸＰａｔｈ候補のロバストネススコアを表示する。
【００５５】
図３に示すように、先頭行５１４の列５１１の値は、式４であり、その列５１２は、−２点である。一方、最終行５１６の列５１１の値は数５であり、その列５１２の値は−１０点である。本実施形態におけるロバストネススコアは、数値が高いほどロバストネス（頑健さ）が高く、すなわち、木構造データが変更された際も、ターゲットノードを一意に指定できることを意味する。図３に示すＸＰａｔｈ候補の生成結果によれば、ユーザ４０１は、先頭行５１４のＸＰａｔｈ候補のロバストネススコアが最も高いことを認識できる。
【００５６】
//tr[td[1]/b/text()='合計']/td[2]                  ・・・（式４）
/html/body/form/table/tbody/tr[2]/td/table[@id='TotalOrder']/
tbody/tr[td[1]/b/text()='合計']/td[2]      ・・・（式５）
以上のように、ユーザ４０１は、ＸＰａｔｈ生成プログラム４２３のウィンドウ画面４０６によって、目的のＧＵＩ部位４０５に対応するＸＰａｔｈ候補を、ロバストネススコアの高い順に瞬時に取得することができる。
【００５７】
図４は、本発明の実施形態の対象部位取得工程３０１を示すフローチャートである。
【００５８】
ユーザ４０１が、ＸＰａｔｈ生成プログラム４２３のウィンドウ画面４０６のターゲットＧＵＩ選択ボタン５０１をマウス４２０によってクリックすると、ＸＰａｔｈ生成プログラム４２３は図４に示すフローに従って動作する。
【００５９】
図４に示すフローは、始端子６００に始まり、終端子６０５で終わる。
【００６０】
工程６０１において、ＸＰａｔｈ生成プログラム４２３は、ユーザ４０１によって選択されたターゲットＧＵＩを取得する。具体的には、ユーザ４０１は、ターゲットＧＵＩ選択ボタン５０１をマウス４２０によってクリックした後に、目的のアプリのウィンドウ画面（本実施形態における図２に示す発注システムのウィンドウ画面４０４）上で、ターゲットＧＵＩであるＧＵＩ部位４０５をクリックする。ＸＰａｔｈ生成プログラム４２３は、そのクリックの瞬間に、マウス４２０が示すポインタの座標を取得する。
【００６１】
工程６０２において、ＸＰａｔｈ生成プログラム４２３は、ブラウザプログラム４１１を呼び出すことによって、ユーザ４０１が工程６０１においてクリックした発注システムのウィンドウ画面４０４に表示されている、発注システムの木構造データ４１２に接続する。
【００６２】
工程６０３において、ＸＰａｔｈ生成プログラム４２３は、工程６０２において接続された発注システムの木構造データ４１２に基づいて、工程６０１において取得されたマウス４２０が示す座標の直下にあるＧＵＩに対応するノード（以下、ターゲットノードと記載する）を取得する。
【００６３】
工程６０４において、ＸＰａｔｈ生成プログラム４２３は、発注システムの木構造データ４１２における、ルートノード２０１からターゲットノードに至るダイレクトＸＰａｔｈ候補を生成し、領域５０３に表示する。また、ターゲットノードのコンテンツ情報を取得し、領域５０４に表示する。
【００６４】
図５は、本発明の実施形態のキャプション部位取得工程を示すフローチャートである。
【００６５】
ユーザ４０１が、ＸＰａｔｈ生成プログラム４２３のウィンドウ画面４０６のチェックボックス５０５にチェックを入れ、キャプションＧＵＩ選択ボタン５０６をクリックすると、ＸＰａｔｈ生成プログラム４２３は、図５に示すキャプション部位取得工程のフローに従って動作する。キャプション部位取得工程は、ユーザ４０１の任意によって実行される。キャプション部位取得工程は、チェックボックス５０５のチェックの有無によって、図１に示す対象部位取得工程３０１の後に、実行されても実行されなくてもよい。
【００６６】
図５に示すフローは、始端子７００に始まり、終端子７０４で終わる。
【００６７】
工程７０１において、ＸＰａｔｈ生成プログラム４２３は、ユーザ４０１によって選択されたキャプションＧＵＩを取得する。具体的には、ユーザ４０１は、チェックボックス５０５にチェックを入れ、キャプションＧＵＩ選択ボタン５０６をクリックした後に、目的のアプリのウィンドウ画面（本実施形態における図２に示す発注システムのウィンドウ画面４０４）上でターゲットＧＵＩ付近のタイトル文字列のＧＵＩ部位４０５（キャプションＧＵＩ）をクリックする。ＸＰａｔｈ生成プログラム４２３は、そのクリックの瞬間にマウスの座標を取得する。
【００６８】
工程７０２において、ＸＰａｔｈ生成プログラム４２３は、工程６０２において接続された発注システムの木構造データ４１２に基づいて、工程７０１において取得したマウス４２０が示す座標の直下にあるＧＵＩに対応するノード（以下、キャプションノードと記載する）を取得する。
【００６９】
工程７０３において、ＸＰａｔｈ生成プログラム４２３は、発注システムの木構造データ４１２における、ルートノード２０１からキャプションノードに至るダイレクトＸＰａｔｈ候補を生成し、領域５０８に表示する。また、キャプションノードのコンテンツ情報を取得し、領域５０９に表示する。
【００７０】
図６は、本発明の実施形態の候補生成工程３０２を示すフローチャートである。
【００７１】
ユーザ４０１が、ＸＰａｔｈ生成プログラム４２３のウィンドウ画面４０６のＸＰａｔｈ生成ボタン５１０をクリックすると、ＸＰａｔｈ生成プログラム４２３は、図６に示すフローに従って動作する。
【００７２】
図６に示すフローは、始端子８０１に始まり、データ８０２を入力され、データ８１５を出力し、終端子８１６で終わる。
【００７３】
データ８０２は、領域５０３に表示されたターゲットＧＵＩへのダイレクトＸＰａｔｈの値（Ｐと記載する）、領域５０８に表示されたキャプションＧＵＩへのダイレクトＸＰａｔｈ（Ｑと記載する）、キャプションＧＵＩを利用するか否かを表すチェックボックス５０５の値を含む。尚、以下では、ＸＰａｔｈ  Ｐの長さをｎ、ＸＰａｔｈ  Ｑの長さをｍと記載する。
【００７４】
ここでＸＰａｔｈの長さとは、ＸＰａｔｈに含まれるノードの数である。また、チェックボックスの値は、チェックボックス５０５にチェックが入っている場合は、ｔｒｕｅであり、チェックボックス５０５にチェックが入っていない場合は、ｆａｌｓｅである。
【００７５】
判定８０３において、チェックボックス５０５の値がｆａｌｓｅの場合、すなわちキャプションＧＵＩを利用しない場合には、ＸＰａｔｈ生成プログラム４２３は、工程８０６に移行する。また、チェックボックス５０５の値がｔｒｕｅの場合、すなわちキャプションＧＵＩを利用する場合には、ＸＰａｔｈ生成プログラム４２３は、工程８０４に移行する。
【００７６】
工程８０４において、ＸＰａｔｈ生成プログラム４２３は、ターゲットＧＵＩへのＸＰａｔｈ（Ｐ）を、キャプションＧＵＩへのＸＰａｔｈ（Ｑ）によって、更新する。更新の詳細については、後に図７において説明する。ＸＰａｔｈ生成プログラム４２３は、工程８０４の後、工程８０６に移行する。
【００７７】
工程８０６において、ＸＰａｔｈ生成プログラム４２３は、カウンタｋを２に初期化し、ＸＰａｔｈ候補ＸをＰに初期化してＸＰａｔｈ候補データとしてＲＡＭ４１１に蓄積し、省略配列ｒi（ｉ＝２，．．．，ｎ−１）をｆａｌｓｅに初期化する。カウンタｋを２に初期化する理由は、ルートノード２０１を省略する対象から除外するためである。
【００７８】
ここで以下の説明のために、ＸＰａｔｈに関する演算を一つ定義する。ＸＰａｔｈ  Ｘは一般性を失うことなく式６のようにノード単位に表現できる。
【００７９】
Ｘ＝/Ｘ2/．．．/Ｘn-1/Ｘn                              ・・・（式６）
ここで、ＸＰａｔｈ  Ｘと省略配列ｒから新たなＸＰａｔｈ  Ｙを生成する演算”＊”を式７のように定義する。
【００８０】
Ｙ＝Ｘ＊ｒ＝/（Ｘ2，ｒ2）/．．．/（Ｘn-1，ｒn-1）/Ｘn  ・・・（式７）
ただし、（Ｘk，ｒk）は、ｒkがｔｒｕｅである場合、ノードＸkを省略することを意味し、ｒkがｆａｌｓｅである場合、ノードＸkを省略しないことを意味する。例えば、ｒi（ｉ＝２，．．．，ｋ）＝ｔｒｕｅであり、ｒi（ｉ＝ｋ＋１，．．．，ｎ−１）＝ｆａｌｓｅである場合、演算Ｘ＊ｒによって生成されるＸＰａｔｈ  Ｙは式８である。
【００８１】
Ｙ＝//Ｘk+1/．．．/Ｘn-1/Ｘn                            ・・・（式８）
工程８０７において、ＸＰａｔｈ生成プログラム４２３は、省略配列ｒi（ｉ＝２，．．．，ｎ−１）を、省略配列ｑi（ｉ＝２，．．．，ｎ−１）にコピーする。
【００８２】
工程８０８において、ＸＰａｔｈ生成プログラム４２３は、省略配列ｑの第ｋ要素ｑkをｔｒｕｅとする。
【００８３】
工程８０９において、ＸＰａｔｈ生成プログラム４２３は、ＸＰａｔｈ  Ｘと省略配列ｑとからＸＰａｔｈ  Ｙ＝Ｘ＊ｑを生成する。すなわち、Ｘkが省略されたＸＰａｔｈ  Ｙを生成する。
【００８４】
判定８１０において、ＸＰａｔｈ生成プログラム４２３は、ＸＰａｔｈ  Ｙによって木構造データを検索し、検索結果として抽出されたノードがターゲットノードのみを指定する場合、すなわち、ＸＰａｔｈ  Ｙによって一意にターゲットノードが指定される場合、工程８１１に移行する。また、ＸＰａｔｈ  Ｙが一意にターゲットノードを指定せず、別のノードも指定する場合、判定８１３に移行する。
【００８５】
工程８１１において、ＸＰａｔｈ生成プログラム４２３は、省略配列ｑkをｒkに更新する。判定８１０において、ＸＰａｔｈ  Ｙが一意にターゲットノードを指定する場合の省略配列ｑkをｒkに工程８１１において更新することによって、省略できるノードの情報を省略配列ｒに記憶できる。
【００８６】
工程８１２において、ＸＰａｔｈ生成プログラム４２３は、ＸＰａｔｈ  ＹをＸＰａｔｈ候補データに追加する。尚、蓄積されたＸＰａｔｈ候補データについてを、後に図８において詳しく説明する。
【００８７】
判定８１３において、ＸＰａｔｈ生成プログラム４２３は、カウンタｋがｎ−１より小さい場合、処理を続けるため、工程８１４に移行する。また、ＸＰａｔｈ生成プログラム４２３は、カウンタｋがｎ−１以上である場合、ＸＰａｔｈ  Ｘの終端の一つ前のノードまで処理したため、、蓄積されたＸＰａｔｈ候補データを候補データ８１５として出力し、終端子８１６に移行する。
【００８８】
終端子８１６に移行した後、図１に示す候補生成工程３０２は終了する。なお、カウンタｋがｎ−１と等しい場合に、処理を終了させるのは、ターゲットノードの最後のノード（ｎ番目のノード）を省略することができないためである。
【００８９】
工程８１４において、ＸＰａｔｈ生成プログラム４２３は、カウンタｋをインクリメントし、工程８０７に戻る。
【００９０】
以上のようにして、ＸＰａｔｈ生成プログラム４２３は、ユーザ４０１が選択したターゲットＧＵＩ及びキャプションＧＵＩから、ターゲットＧＵＩに対応するＸＰａｔｈ候補を生成し、ＸＰａｔｈ生成プログラムのウィンドウ画面４０６に列挙することができる。
【００９１】
なお、本実施形態において生成されたＸＰａｔｈ候補は、省略される場合は、先頭から省略されているが、ノードの途中が省略されていてもよい。
【００９２】
図７は、本発明の実施形態の候補生成工程３０２を示すフローチャートである。
【００９３】
図７に示すフローチャートは、図６に示す工程８０４に相当し、ターゲットＧＵＩに対応するＸＰａｔｈ  Ｐを、キャプションＧＵＩに対応するＸＰａｔｈ  Ｑを用いて、更新する手順を示す。
【００９４】
図７に示すフローは、始端子９０１に始まり、データ９０２を入力され、ＸＰａｔｈ  Ｐを更新し、終端子９１０において終わる。
【００９５】
データ９０２は、領域５０３に表示されたターゲットＧＵＩに対応するダイレクトＸＰａｔｈの値（以下においてＰと記載）、及び、領域５０８に表示されたキャプションＧＵＩに対応するダイレクトＸＰａｔｈの値（以下においてＱと記載）を含む。
【００９６】
工程９０３において、ＸＰａｔｈ生成プログラム４２３は、ＰとＱを式９及び式１０のようにノード単位に分解する。
【００９７】
Ｐ＝/Ｐ2/．．．/Ｐn                              ・・・（式９）
Ｑ＝/Ｑ2/．．．/Ｑm                              ・・・（式１０）
工程９０４において、ＸＰａｔｈ生成プログラム４２３は、カウンタｋを２に初期化し、カウンタ上限Ｌをｍｉｎ（ｎ，ｍ）に初期化する。なお、カウンタ上限Ｌは、カウンタｋの上限値である。また、ｍｉｎ（ｎ，ｍ）は、ｎ及びｍのうち、小さい方の値を返す関数である。
【００９８】
判定９０５において、カウンタｋがカウンタ上限Ｌより大きい場合、Ｐ又はＱのどちらかのノードが終端を越えるるため、ＸＰａｔｈ生成プログラム４２３は、終端子９１０に移行し工程８０４を終了する。カウンタｋがカウンタ上限Ｌより小さい場合、判定９０６に移行する。
【００９９】
判定９０６において、ＸＰａｔｈ生成プログラム４２３は、ＸＰａｔｈ  Ｐの第ｋ番目の値ＰkとＸＰａｔｈ  Ｑの第ｋ番目の値Ｑkとが等しいか否かを判定する。ＰkとＱkとが等しい場合、ＸＰａｔｈ生成プログラム４２３は、ＸＰａｔｈ  Ｐを更新する必要はないため、工程９０７に移行する。
【０１００】
工程９０７において、ＸＰａｔｈ生成プログラム４２３は、処理を続けるため、カウンタｋをインクリメントする。そして、判定９０５に戻る。
【０１０１】
判定９０６において、ＰkとＱkとが異なる場合、Ｐk-1はＱk-1によって指定することが可能であるため、ＸＰａｔｈ生成プログラム４２３は、Ｐk-1をＱk-1によって更新するため、工程９０８に移行する。工程９０８において、ＸＰａｔｈ生成プログラム４２３は、Ｐk-1に含まれる［］内の条件式を、式１１によって更新する。
【０１０２】
Ｑk/．．．/Ｑm/text()='キャプションＧＵＩのコンテンツ情報'・・（式１１）
例えば、図３の領域５０３に示されるターゲットＧＵＩの値がＰであり、領域５０８に示されるキャプションＧＵＩの値がＱであり、領域５０９に示される値がＱのコンテンツ情報である場合、Ｐは、工程９０８において式１２のように更新される。
【０１０３】
/html/body/form/table/tbody/tr[2]/td/table[@id='TotalOrder']/
tbody/tr[td[1]/b/text()='合計']/td[2]        ・・・（式１２）
工程９０８において、ＸＰａｔｈ  Ｐの１１ノード目の”tr[5]”は、”tr[td[1]/b/text()='合計'”に、更新される。すなわち、工程９０８の更新前のＸＰａｔｈ  Ｐは、「idが'TotalOrder'のテーブルの”tbody”に含まれる５番目の”tr”の２番目の”td”」という意味であったが、工程９０８の更新後は、「idが”TotalOrder”のテーブルの中で、”tbody"に含まれる一つ目の”td”に”text()='合計'”を持つ”tr”の２番目の”td”」という意味になる。
【０１０４】
キャプションＧＵＩは、ターゲットＧＵＩの表題に相当するため、木構造データおいてキャプションノードとターゲットノードとの親ノードは一般的にほとんど共通していることが多い。そして、キャプションＧＵＩは、一般的に、キャプションＧＵＩを一意に示すようなコンテンツ情報（本実施形態においては、”text()='合計'”）又は数値などを含んでいることが多い。このため、キャプションノードの値を用いてターゲットノードを指定することによって、ターゲットＧＵＩをより一意に指定することができるターゲットノードを得ることができるのである。
【０１０５】
なお、本実施形態の工程９０８のような更新をする場合、更新後のＸＰａｔｈ  Ｐは、図１２に示す表１０４の行が追加となっても、すなわち、「idが”TotalOrder”のテーブルの”tbody”に含まれる”tr”」が増加しても、一意にターゲットＧＵＩを指定することができる。
【０１０６】
工程９０８の後、ＸＰａｔｈ生成プログラム４２３は、終端子９１０に移行し、工程８０４の処理を終了する。
【０１０７】
工程８０４によって、Ｐには、ターゲットノードを指定するために、キャプションノードを指定する文字列を用いることができ、さらにこれによって、ターゲットノードをより一意に指定する文字列を得ることができる。
【０１０８】
前述のように、ＸＰａｔｈ生成プログラム４２３は、図６及び図７に従って、ユーザ４０１が選択するターゲットＧＵＩ、及びキャプションＧＵＩに基づいて、ターゲットＧＵＩに対応するＸＰａｔｈ候補を列挙及び生成することができる。尚、本フローはあくまで一例に過ぎず、列挙及び生成の仕方を限定するものではない。
【０１０９】
図８は、本発明の実施形態のＸＰａｔｈ候補リストを示す説明図である。
【０１１０】
図８に示すＸＰａｔｈ候補リストは、図６に示すフローによって出力されるものであり、図６に示すフローによって蓄積された順に値を格納される。図８に示すＸＰａｔh候補リストは、「＃」カラムに候補番号が格納され、「ＸＰａｔｈ」カラムに図６に示すフローによって出力されたＸＰａｔｈ候補の値が格納される。「ＸＰａｔｈ」カラムの値は、図３に示すＸＰａｔｈ候補リスト５１１の列５１３に表示される値と同一である。
【０１１１】
図９は、本発明の実施形態のスコアリング工程３０３を示すフローチャートである。
【０１１２】
図９に示すフローチャートによって、ＸＰａｔｈ生成プログラム４２３は、生成されたＸＰａｔｈ候補に対応する、ロバストネススコアを算出する。その際に、ＸＰａｔｈ生成プログラム４２３は、ＸＰａｔｈ候補の記載のうち、ターゲットノードをより一意に指定することができる記載が含まれる場合、そのＸＰａｔｈ候補に高いロバストネススコアを算出し、ターゲットノードではない別のノードを指定する可能性が高い記載が含まれる場合、低いロバストネススコアを算出する。すなわち、ＸＰａｔｈ生成プログラム４２３は、ＸＰａｔｈ候補の記載方法によって、ロバストネススコアを算出する。
【０１１３】
本実施形態の、ＸＰａｔｈ候補の記載において、ノードの個数が多い場合、及び、”tr[5]”（ｔｒノードの５番目）などの番地を示す番号によって子ノードを指定するノードが含まれる場合は、ターゲットノードではない別のノードを指定する可能性が高くなると判定され、ロバストネススコアは低く算出される。また、ｉｄ属性によって子ノードを指定するノードが含まれる場合、ｎａｍｅ属性によって子ノードを指定するノードが含まれる場合、及び、ｔｅｘｔ（）によって子ノードを指定するノードが含まれる場合、ターゲットノードをより一意に指定することができると判定され、ロバストネススコアは高く算出される。
【０１１４】
なお、ｉｄ属性とは、各ノードが指定するＧＵＩ部位４０５を一意に示す名前を示すことを意味する。ｎａｍｅ属性も、ｉｄ属性と同じ機能を持つ。また、ｔｅｘｔ（）属性は、各ノードが指定するＧＵＩ部位４０５に表示される文字列を含むことを意味する。
【０１１５】
図９に示すフローチャートは、始端子１１０１に始まり、ＸＰａｔｈ候補リスト（候補数をＮとする）を入力され、ロバストネススコアリストを出力し、終端子１１１３に終わる。
【０１１６】
工程１１０３において、ＸＰａｔｈ生成プログラム４２３は、カウンタｋを１に初期化する。
【０１１７】
工程１１０５において、ＸＰａｔｈ生成プログラム４２３は、ＸＰａｔｈ候補リストの第ｋ番目のＸＰａｔｈ候補において、長さ（ノードの数）ｕ1を算出する。ｋ＝１である場合、図８の候補番号＃０１が示すＸＰａｔｈ候補には、
（ノード１）”/”（ルート）
（ノード２）”html”
（ノード３）”body”
（ノード４）”form”
（ノード５）”table”
（ノード６）”tbody”
（ノード７）”tr[2]”
（ノード８）”td”
（ノード９）”table[@id='TotalOrder']”
（ノード１０）”tbody”
（ノード１１）”tr[td[1]/b/text()='合計']”
（ノード１２）”td[2]”
の１２個のノードがあるため、ｕ1＝１２である。
【０１１８】
工程１１０６において、ＸＰａｔｈ生成プログラム４２３は、ＸＰａｔｈ候補リストの第ｋ番目のＸＰａｔｈ候補において、番号によって子ノードを指定するノード（番地指定の節点）の数ｕ2を算出する。例えば、ｋ＝１である場合、図８の候補番号＃０１が示すＸＰａｔｈ候補において、番号によって子ノードを指定するノードには（ノード７）と（ノード１２）との二つがあるため、ｕ2＝２である。
【０１１９】
工程１１０７において、ＸＰａｔｈ生成プログラム４２３は、ＸＰａｔｈ候補リストの第ｋ番目のＸＰａｔｈ候補において、ｉｄ属性によって子ノードを指定するノードの数ｕ3を算出する。例えば、ｋ＝１である場合、図８の候補番号＃０１が示すＸＰａｔｈ候補において、ｉｄ属性によって子ノードを指定するノードは、前述の（ノード９）の一つであるため、ｕ3＝１である。
【０１２０】
工程１１０８において、ＸＰａｔｈ生成プログラム４２３は、ＸＰａｔｈ候補リストの第ｋ番目のＸＰａｔｈ候補において、ｎａｍｅ属性によって子ノードを指定するノード数ｕ4を算出する。例えば、ｋ＝１である場合、図８の候補番号＃０１が示すＸＰａｔｈ候補において、ｎａｍｅ属性によって子ノードを指定するノードは存在しないため、ｕ4＝０である。
【０１２１】
工程１１０９において、ＸＰａｔｈ生成プログラム４２３は、ＸＰａｔｈ候補リストの第ｋ番目のＸＰａｔｈ候補において、ｔｅｘｔ（）によって子ノードを指定するノードの数ｕ5を算出する。例えば、ｋ＝１である場合、図８の候補番号＃０１が示すＸＰａｔｈ候補において、ｔｅｘｔ（）によって子ノードを指定するノードには（ノード１１）の一つがあるため、ｕ5＝１である。
【０１２２】
工程１１１０において、ＸＰａｔｈ生成プログラム４２３は、ＸＰａｔｈ候補リストの第ｋ番目のＸＰａｔｈ候補のロバストネススコアを式１３によって算出し、ロバストネススコアリストに蓄積する。式１３に示すｗ1〜ｗ5の重み定数ｗiは、ロバストネススコアを規定するスコアリング係数であり、固定された数値でもよいし、図１１において後述する画面を介して、あらかじめユーザ４０１によって入力されてもよい。
【０１２３】
Ｓk＝ｗ1ｕ1＋ｗ2ｕ2＋ｗ3ｕ3＋ｗ4ｕ4＋ｗ5ｕ5    ・・・（式１３）
判定１１１１において、ＸＰａｔｈ生成プログラム４２３は、カウンタｋがＮより小さい場合、ＸＰａｔｈ候補リストの次のＸＰａｔh候補のロバストネススコアを算出するため、工程１１１４に移行する。そして、工程１１１４においてカウンタｋをインクリメントし、工程１１０５に戻る。
【０１２４】
判定１１１１において、カウンタｋがＮ以上である場合、ＸＰａｔｈ生成プログラム４２３は、ＸＰａｔｈ候補リストのロバストネススコアがすべて算出されたため、ロバストネススコアリスト１１１２を出力し、終端子１１１３に移行する。
【０１２５】
以上のようにして、ＸＰａｔｈ生成プログラム４２３は、各ＸＰａｔｈ候補リストの各ＸＰａｔｈ候補のロバストネススコアを算出し、算出された結果をロバストネススコアリスト１１１２として出力する。
【０１２６】
図１０は、本発明の実施形態のロバストネススコアリスト１１１２を示す説明図である。
【０１２７】
図１０に示すロバストネススコアリスト１１１２は、図９に示すフローによって出力され、各ＸＰａｔｈ候補にロバストネススコアＳが含まれる。ロバストネススコアリスト１１１２は、図２に示すＰＣ４０２のＲＡＭ４１０、ＲＯＭ４１７、又は外部記憶装置４１５のいずれに格納されてもよい。
【０１２８】
図１０に示すロバストネススコアリスト１１１２のうち、最も高いロバストネススコアＳは、＃０８と＃１０とのＸＰａｔｈ候補であり、最も低いロバストネススコアＳは、＃０１のＸＰａｔｈ候補である。
【０１２９】
例えば、図１２に示す発注登録画面１０３の文字列の下に任意の文字列が表示されるように、ユーザが発注システムのウィンドウ画面４０４を変更した場合、図１３に示す木構造データは、ｔｒノード２１４の前に、新たなｔｒノードを追加される。そのため、図１０の＃０１に示すＸＰａｔｈによってターゲットＧＵＩを指定する場合、＃０１に示すＸＰａｔｈの７番目のノードが”tr[3]”に変更される必要がある。
【０１３０】
しかし、図１０の＃０８又は＃１０に示すＸＰａｔｈによってターゲットＧＵＩを指定する場合、前述の発注システムのウィンドウ画面４０４の変更があっても、ＸＰａｔｈを変更する必要はない。
【０１３１】
図１１は、本発明の実施形態のスコアリング係数の入力画面を示す説明図である。
【０１３２】
図１１に示すスコアリング係数の入力画面は、重み係数ｗ1が規定されるプルダウン１３０１、重み係数ｗ2が規定されるプルダウン１３０２、重み係数ｗ3が規定されるプルダウン１３０３、重み係数ｗ4が規定されるプルダウン１３０４、重み係数ｗ5が規定されるプルダウン１３０５、保存ボタン１３０６、及び、キャンセルボタン１３０７を含む。
【０１３３】
ユーザ４０１は、スコアリング係数を入力する場合、図３に示す係数入力ボタン５１７をクリックする。そして、プルダウン１３０１〜１３０５を操作し、ロバストネススコアを規定する定数を入力し、保存ボタン１３０６をクリックすることによって、スコアリング係数をＰＣ４０２に記憶させる。そして、ユーザ４０１によって入力されたスコアリング係数によって、ロバストネススコアが算出される。
【０１３４】
なお、重み係数ｗiを０とすることによって、ユーザ４０１は、前述の記載方法のいずれをロバストネススコアに反映させるかを選択することができる。すなわち、一つの記載方法のみによってロバストネススコアを算出してもよい。
【０１３５】
以上が、図１に示すスコアリング工程３０３である。
【０１３６】
最後に、結果表示工程３０４において、ＸＰａｔｈ生成プログラム４２３は、ＸＰａｔｈ生成プログラム４２３のウィンドウ画面４０６のＸＰａｔｈ候補リスト５１１に、ロバストネススコアリスト１１１２をスコア順にソートして表示する。
【０１３７】
本発明の実施形態によれば、ユーザ４０１は、ロバストネススコアが高いＸＰａｔｈ候補を選択することによって、アプリケーションの木構造データが変更されても、目的のＧＵＩ部位４０５を一意に指定するＸＰａｔｈを取得することができる。
【０１３８】
なお、本実施形態においては、木構造のアプリケーションにＨＴＭＬ又はＸＭＬを用いたが、その他の木構造データによって表現する言語であれば、いずれの言語でもよい。
【符号の説明】
【０１３９】
４０１  ユーザ
４０２  ＰＣ
４０３  ディスプレイ
４０４  発注システムのウィンドウ画面
４０５  ＧＵＩ部位
４０６  ＸＰａｔｈ生成プログラムのウィンドウ画面
５０１  選択ボタン
５０２〜５０４、５０７〜５０９  領域
５０５  チェックボックス
５０６  選択ボタン
５１０  ＸＰａｔｈ生成ボタン
５１１  ＸＰａｔｈ候補リスト
５１７  係数入力ボタン
【図１】
0005408623.tif 000002
【図２】
0005408623.tif 000003
【図４】
0005408623.tif 000004
【図５】
0005408623.tif 000005
【図６】
0005408623.tif 000006
【図７】
0005408623.tif 000007
【図８】
0005408623.tif 000008
【図９】
0005408623.tif 000009
【図１０】
0005408623.tif 000010
【図１１】
0005408623.tif 000011
【図１３】
0005408623.tif 000012
【図３】
0005408623.tif 000013
【図１２】
0005408623.tif 000014