(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-22
(45)【発行日】2024-07-30
(54)【発明の名称】判定プログラム、判定方法および情報処理装置
(51)【国際特許分類】
G06F 11/36 20060101AFI20240723BHJP
G06F 16/83 20190101ALI20240723BHJP
【FI】
G06F11/36 196
G06F16/83
(21)【出願番号】P 2020153777
(22)【出願日】2020-09-14
【審査請求日】2023-06-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】田中 宏
【審査官】円子 英紀
(56)【参考文献】
【文献】特開2007-102654(JP,A)
【文献】特開2009-140155(JP,A)
【文献】国際公開第2009/066762(WO,A1)
【文献】特開2018-092362(JP,A)
【文献】田中 宏,HTML要素の相対位置と文字認識結果の比較に基づくWebコンテンツ表示のブラウザ問非互換性検出,電子情報通信学会技術研究報告,Vol.115,No.517,電子情報通信学会,2016年03月17日,pp.31-36
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
G06F 16/83
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
操作命令の記録時において、第1木構造に含まれる複数の第1ノードに対して、操作命令を記録し、
操作命令の再生時において、前記第1木構造と第2木構造との構造の比較結果を基にして、前記第1木構造に含まれる複数の第1ノードと、前記第2木構造に含まれる複数の第2ノードとの仮の対応付けを行い、
仮の対応付けを行った第1ノードおよび第2ノードについて、第1ノードのコンテンツと、第2ノードのコンテンツとの類似度を基にして、前記仮の対応付けを行った第1ノードと第2ノードとを対応付けるか否かを判定する
処理を実行させることを特徴とする判定プログラム。
【請求項2】
前記第1ノードに対応付けられた前記第2ノードに対して、前記第1ノードに対応付けられた操作命令を実行する処理を更に実行することを特徴とする請求項1に記載の判定プログラム。
【請求項3】
前記判定する処理は、前記仮の対応付けを行った第1ノードおよび第2ノードについて、第1ノードのコンテンツに含まれるタグまたは文字列と、第2ノードのコンテンツに含まれるタグまたは文字列との類似度を基にして、前記仮の対応付けを行った第1ノードと第2ノードとを対応付けるか否かを判定することを特徴とする請求項1または2に記載の判定プログラム。
【請求項4】
前記判定する処理は、前記仮の対応付けを行った第1ノードおよび第2ノードについて、第1ノードのコンテンツに含まれる第1コマンドが、第2ノードのコンテンツに含まれる第2コマンドと互換性がある場合に、前記仮の対応付けを行った第1ノードと第2ノードとを対応付けることを特徴とする請求項1または2に記載の判定プログラム。
【請求項5】
前記判定する処理は、前記第1コマンドの関数名と、前記第2コマンドの関数名とが同じ場合、または、前記第1コマンドの関数の定義と、前記第2コマンドの関数の定義とが類似している場合に、前記仮の対応付けを行った第1ノードと第2ノードとを対応付けることを特徴とする請求項4に記載の判定プログラム。
【請求項6】
コンピュータが実行する判定方法であって、
操作命令の記録時において、第1木構造に含まれる複数の第1ノードに対して、操作命令を記録し、
操作命令の再生時において、前記第1木構造と第2木構造との構造の比較結果を基にして、前記第1木構造に含まれる複数の第1ノードと、前記第2木構造に含まれる複数の第2ノードとの仮の対応付けを行い、
仮の対応付けを行った第1ノードおよび第2ノードについて、第1ノードのコンテンツと、第2ノードのコンテンツとの類似度を基にして、前記仮の対応付けを行った第1ノードと第2ノードとを対応付けるか否かを判定する
処理を実行することを特徴とする判定方法。
【請求項7】
操作命令の記録時において、第1木構造に含まれる複数の第1ノードに対して、操作命令を記録する記録処理部と、
操作命令の再生時において、前記第1木構造と第2木構造との構造の比較結果を基にして、前記第1木構造に含まれる複数の第1ノードと、前記第2木構造に含まれる複数の第2ノードとの仮の対応付けを行う前処理部と、
仮の対応付けを行った第1ノードおよび第2ノードについて、第1ノードのコンテンツと、第2ノードのコンテンツとの類似度を基にして、前記仮の対応付けを行った第1ノードと第2ノードとを対応付けるか否かを判定する判定部と、
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、判定プログラム等に関する。
【背景技術】
【0002】
業務効率化の一環として、システムの単純操作を自動化するRPA(Robotic Process Automation)が注目されている。
【0003】
たとえば、作業員は、WEBアプリの画面操作の機能をテストする場合、手作業で、同じ操作を繰り返し実行しているが、RPAツールを利用することで、操作を自動化でき、作業者の負担を削減することができる。RPAの自動再生は、操作命令と操作対象とを記録したシナリオに基づいて実行されている。
【0004】
ここで、開発の途中でWEBアプリのソースが改変された場合や、同じシナリオを別のブラウザやサイズの異なるブラウザを動かそうとした場合、操作対象を見つけることができず、シナリオが正しく動作しない場合がある。このため、シナリオの実行環境が変化しても、自動再生を安定して動作させる技術が求められている。
【0005】
シナリオを作成した環境とは別の環境でシナリオを再生する技術として従来技術1がある。
図15は、従来技術1を説明するための図である。
図15では、シナリオ作成時において、操作命令を記録する構造化文書を、構造化文書10とし、シナリオを再生する別環境の構造化文書を、構造化文書20とする。構造化文書10は、ノード10a~10iを有する。構造化文書20は、ノード20a~20iを有する。
【0006】
操作命令の記録時において、構造化文書10のノード10gに対して所定の操作を行うことが、シナリオとして生成されたものとする。従来技術1では、かかるシナリオを構造化文書20に対して動作させると、ノード10gに対応するノード20gに対して、所定の操作を実行する。
【0007】
ここで、従来技術1では、シナリオを作成した後において、構造化文書が改変され、操作対象のノードが削除された場合でも、操作を中断しないで実行することができる。従来技術1では、対応するノードが削除されていた場合、操作対象を親ノードに代替することで、一連の自動処理を継続する。
【0008】
たとえば、シナリオを基にして操作を再生する際に、構造化文書10のノード10gに対応する構造化文書20のノード20gが削除されている場合について説明する。この場合、従来技術1では、ノード10gの親ノード10bに対応するノード20bに対して、所定の操作を実行する。
【0009】
しかし、従来技術1のように、対応するノードが削除されていた場合に、操作対象を親ノードに代替することは、操作対象のノードを適切に選択しているとは言えない。
図16は、従来技術1の問題を説明するための図である。
図16では、シナリオ作成時において、操作命令を記録する構造化文書を、構造化文書15とし、シナリオを再生する別環境の構造化文書を、構造化文書25とする。構造化文書15は、ノード15a~15iを有する。構造化文書25は、ノード25a~25hを有する。
【0010】
構造化文書15に対応する画面を、画面16とする。画面16は、パーツ16b~16iを有する。構造化文書15のノード15b~15iが、画面16のパーツ16b~16iに対応する。
【0011】
構造化文書25に対応する画面を、画面26とする。画面26には、パーツ26b~26hを有する。構造化文書25のノード25b~25hが、画面26のパーツ26b~26hに対応する。
【0012】
たとえば、従来技術1では、構造化文書15のノード15fに対して所定の操作(クリック操作)を行うシナリオを例にして説明を行う。かかるシナリオを、構造化文書15に対して動作させると、画面16のパーツ16f(button)がクリック操作する。
【0013】
続いて、上記のシナリオを、構造化文書25に対して動作させると次のような動作を行う。従来技術1では、ノード15fに対応するノードが、構造化文書25に存在しないため、ノード15fの親ノード15cに対応するノード25cを、操作対象として、クリック操作を実行することになる。ここで、ノード25cは、画面26のパーツ26c(領域)に対応するノードであるため、かかる領域をクリックする操作は、上記のボタンをクリックする操作とは異なっており、適切な対応付けが行われていない。
【0014】
また、構造化文書の改変は、
図15で説明したようなノードの削除に限られるものではなく、ノードが追加される改変や、構造自体が変化する改変も存在する。このような改変が行われた場合、従来技術1では、操作対象のノードを適切に選択することが難しい。
【0015】
ここで、木構造間が変化した場合でも要素(ノード)の対応付けを行う技術として、木構造編集距離を用いる方法が知られている。木構造編集処理は、比較対象の各木構造の要素の相違の度合いを示すものである。木構造編集距離を用いる方法を従来技術2と表記する。従来技術2では、木構造の要素の相違を「挿入」、「削除」、「置換」の編集操作で表し、編集操作にコストを設定し、最小コストとなる要素の対応付けを求める。
【0016】
図17は、木構造編集距離に関する編集操作を説明するための図である。編集操作を行う前の木構造を、木構造5とする。木構造5では、ノードaの下に、ノードbおよびノードcが接続される。ノードcの下にノードdおよびノードeが接続される。
【0017】
木構造5に対して、編集操作「挿入」を実行すると、木構造5は、木構造5aとなる。木構造5では、ノードaの下にノードfが挿入され、ノードfの下にノードcが接続されている。
【0018】
木構造5に対して、編集操作「置換」を実行すると、木構造5は、木構造5bとなる。木構造5bでは、ノードcが、ノードfに置換されている。
【0019】
木構造5に対して、編集操作「削除」を実行すると、木構造5は、木構造5cとなる。木構造5cでは、ノードcが削除されることで、ノードaの下に、ノードcに接続されていたノードdおよびノードeが接続されている。
【0020】
図18は、従来技術2を説明するための図である。
図18において編集前の構造化文書を構造化文書17とし、編集後の構造化文書を構造化文書27とする。従来技術2では、構造化文書17と、構造化文書27とを比較し、構造化文書17に対して編集操作を加えて、構造化文書17のHTML要素と構造化文書27のHTML要素とを対応付ける。構造化文書17に対する編集操作の回数に応じて、総コストが決定され、最小コストとなる対応付けを求める。
【0021】
対応付け(A)では、「div2」(HTML要素17-6)を挿入する編集操作と、「項目3」(HTML要素17-9)を挿入する編集操作が行われている。これによって、HTML要素17-1~17-5と、HTML要素27-1~27-5とがそれぞれ対応付けられる。また、HTML要素17-6,17-7と、HTML要素27-7,27-8とがそれぞれ対応付けられる。対応付け(A)の総コストは「2」となる。
【0022】
対応付け(B)では、「div2」(HTML要素17-6)を挿入する編集操作と、「項目2」(HTML要素17-8)を挿入する編集操作とが行われている。また、対応付け(B)では、「項目1」(HTML要素17-7)に置換する編集操作と、「項目3」(HTML要素17-9)に置換する編集操作とが行われている。
【0023】
これによって、HTML要素17-1~17-5と、HTML要素27-1~27-5とがそれぞれ対応付けられる。HTML要素17-6と、HTML要素27-9とが対応付けられる。また、HTML要素17-7と、HTML要素27-7とが対応付けられる。対応付け(B)の総コストは「4」となる。
【0024】
従来技術2では、対応付け(A)と対応付け(B)とのうち、総コストが最小となる対応付け(A)の対応付け結果を採用する。
【先行技術文献】
【特許文献】
【0025】
【文献】特開平11-296544号公報
【文献】特開2009-211480号公報
【文献】特開2012-185760号公報
【文献】特開2005-266954号公報
【発明の概要】
【発明が解決しようとする課題】
【0026】
しかしながら、上述した従来技術2では、適切なノードの対応付けを行うことができないという問題がある。
【0027】
従来技術2で説明した木構造編集距離で求めた要素の対応付けをそのまま利用してよいのかということが問題としてあげられる。
図19~
図22は、従来技術2の問題を説明するための図である。
【0028】
図19について説明する。
図19において編集前の構造化文書を構造化文書18とし、編集後の構造化文書を構造化文書28とする。構造化文書18は、ノード18a~18iを有する。構造化文書28は、ノード28a~28iを有する。
図19に示す例では、ノード18fの「項目3」が、ノード28fの「項目4」に置換されている。
【0029】
構造化文書18に対応する画面を、画面19とする。画面19は、パーツ19b~19iを有する。構造化文書18のノード18b~18iが、画面19のパーツ19b~19iに対応する。
【0030】
構造化文書28に対応する画面を、画面29とする。画面29は、パーツ29b~29iを有する。構造化文書28のノード28b~28iが、画面29のパーツ29b~29iに対応する。
【0031】
構造化文書18と、構造化文書28とに対して、従来技術2に基づく対応付けを行うと、
図20に示すものとなる。
図20に示すように、構造化文書18のノード18a~18iは、構造化文書28のノード28a~28hにそれぞれ対応付けられる。ここで、ノード18hの「項目3」は、ノード28hの「項目4」に類似しており、他のノード(要素)は完全一致なので、
図20に示す対応付けは妥当である。
【0032】
しかし、シナリオにおいてノード18hに対する操作命令を、ノード28hにそのまま適用してよいのかという問題が残る。すなわち、編集前の構造化文書と、編集後の構造化文書との間で、ノードの対応付けを行うことと、対応付けたノード同士を同一と見なして、同一の操作命令を実行することは、判定基準が異なる。編集前の構造化文書と、編集後の構造化文書との間で、ノードの対応付けを行う目的は、シナリオを用いた自動再生であるため、シナリオを作成した環境と等価な操作命令を実行してもよいかを判定することが望ましいといえる。
【0033】
また、従来技術2では、最適な対応付けを求めるために類似ノードの対応付けを許容している。
【0034】
図21の説明に移行する。
図21において編集前の構造化文書を構造化文書30とし、編集後の構造化文書を構造化文書35とする。構造化文書30は、ノード30a~30dを有する。構造化文書35は、ノード35a~35eを有する。
【0035】
構造化文書30に対応する画面を、画面31とする。画面31は、パーツ31b~31dを有する。構造化文書30のノード30b~30dが、画面31のパーツ31b~31dに対応する。
【0036】
構造化文書35に対応する画面を、画面36とする。画面36は、パーツ36b~36eを有する。構造化文書35のノード35b~35eが、画面36のパーツ36b~36eに対応する。
【0037】
構造化文書30と、構造化文書35とに対して、従来技術2に基づく対応付けを行うと、
図22に示すように、対応付けの候補が複数となる。
図22に示すように、たとえば、対応付け候補30-1では、ノード30bおよびノード35b、ノード30cおよびノード35c、ノード30dおよびノード35dがそれぞれ対応付けられる。対応付け候補30-2では、ノード30bおよびノード35b、ノード30cおよびノード35e、ノード30dおよびノード35dがそれぞれ対応付けられる。
【0038】
ここで、
図21に示したように、ノード30cのタグの種類は「button」であり、ノード30cに対する操作命令はボタンを操作するクリック等となる。これに対して、ノード35cのタグの種類は「text」であるため、対応付け候補30-1に基づいて各ノードを対応付けてしまうと、ノード30cに対する操作命令を、ノード35cに対して実行することができない。
【0039】
一方、ノード35eのタグの種類は「button」である。このため、対応付け候補30-2に基づいて対応付けを行うと、ノード35eに関しては、ノード30cに対する操作命令と同様の操作命令を実行可能となる。
【0040】
すなわち、対応付け候補30-1と、対応付け候補30-2とを比較すると、対応付け候補30-2の方が対応関係が適切であるといえる。しかし、従来技術2では、かかる判定を行うことができず、適切なノードの対応付けを行うことができない。
【0041】
1つの側面では、本発明は、適切なノードの対応付けを行うことができる判定プログラム、判定方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0042】
第1の案では、コンピュータに次の処理を実行させる。コンピュータは、操作命令の記録時において、第1木構造に含まれる複数の第1ノードに対して、操作命令を記録する。コンピュータは、操作命令の再生時において、第1木構造と第2木構造との構造の比較結果を基にして、第1木構造に含まれる複数の第1ノードと、第2木構造に含まれる複数の第2ノードとの仮の対応付けを行う。コンピュータは、仮の対応付けを行った第1ノードおよび第2ノードについて、第1ノードのコンテンツと、第2ノードのコンテンツとの類似度を基にして、仮の対応付けを行った第1ノードと第2ノードとを対応付けるか否かを判定する。
【発明の効果】
【0043】
適切なノードの対応付けを行うことができる。
【図面の簡単な説明】
【0044】
【
図1】
図1は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。
【
図2】
図2は、構造化文書テーブルのデータ構造の一例を示す図である。
【
図3】
図3は、HTMLソースと構造化文書とWEB画面との関係を説明するための図である。
【
図4】
図4は、操作履歴テーブルのデータ構造の一例を示す図である。
【
図5】
図5は、ノード対応テーブルのデータ構造の一例を示す図である。
【
図6】
図6は、コンテンツの類似性を判定する処理を示すフローチャートである。
【
図7】
図7は、コンテンツの類似性判定の一例を説明するための図である。
【
図8】
図8は、コンテンツに含まれるコマンドの互換性を判定する処理を示すフローチャートである。
【
図9】
図9は、コンテンツのコマンドの互換性判定の一例を説明するための図である。
【
図10】
図10は、情報処理装置の操作記録時の処理手順を示すフローチャートである。
【
図11】
図11は、情報処理装置の操作再生時の処理手順を示すフローチャートである。
【
図12】
図12は、コマンド実行処理の処理手順を示すフローチャートである。
【
図14】
図14は、実施例の情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【
図16】
図16は、従来技術1の問題を説明するための図である。
【
図17】
図17は、木構造編集距離に関する編集操作を説明するための図である。
【
図19】
図19は、従来技術2の問題を説明するための図(1)である。
【
図20】
図20は、従来技術2の問題を説明するための図(2)である。
【
図21】
図21は、従来技術2の問題を説明するための図(3)である。
【
図22】
図22は、従来技術2の問題を説明するための図(4)である。
【発明を実施するための形態】
【0045】
以下に、本願の開示する判定プログラム、判定方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【0046】
図1は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。
図1に示すように、この情報処理装置100は、通信部110と、入力部120と、出力部130と、記憶部140と、制御部150とを有する。
【0047】
通信部110は、NIC(Network Interface Card)等で実現され、LAN(Local Area Network)やインターネットなどの電気通信回線を介した外部装置と制御部150との通信を制御する。
【0048】
入力部120は、キーボードやマウス等の入力デバイスを用いて実現され、操作者による入力操作に対応して、制御部150に対して操作命令などの各種指示情報を入力する。出力部130は、液晶ディスプレイなどの表示装置、プリンター等の印刷装置等によって実現される。
【0049】
記憶部140は、構造化文書テーブル140aと、操作履歴テーブル140bと、ノード対応テーブル140cとを有する。記憶部140は、たとえば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。
【0050】
構造化文書テーブル140aは、構造化文書に関する情報を保持するテーブルである。
図2は、構造化文書テーブル140aのデータ構造の一例を示す図である。
図2に示すように、この構造化文書テーブル140aは、文書識別情報と、構造化文書と、HTML(HyperText Markup Language)ソースとを対応付ける。
【0051】
文書識別情報は、構造化文書を一意に識別する情報である。構造化文書は、HTMLソースを解析することで得られる文書構造(DOM:Document Object Model)である。HTMLソースは、WEB画面を表示するためのソースプログラムである。
【0052】
図3は、HTMLソースと構造化文書とWEB画面との関係を説明するための図である。たとえば、情報処理装置100が、HTMLソースSo50を解析することで、構造化文書D50が得られる。構造化文書D50は複数のノードD50a~D50dを有し、各ノードD50b~D50dは、HTMLソースSo50の該当するタグに囲まれたコンテンツに対応する。
【0053】
たとえば、ノードD50bは、コンテンツ50cbに対応する。ノードD50cは、コンテンツ50ccに対応する。ノードD50dは、コンテンツ50cdに対応する。HTMLソースSo50に含まれる各コンテンツには、文字列、コマンドを実行するためのコマンド関数が定義されている。
【0054】
情報処理装置100が、HTMLソースSo50を実行することで、出力部130には、WEB画面I50が表示される。WEB画面I50には、パーツI50b,I50c,I50dが含まれる。ここで、パーツI50bは、ノードD50bに対応する。パーツI50cは、ノードD50cに対応する。パーツI50dは、ノードD50dに対応する。
【0055】
図1の説明に戻る。操作履歴テーブル140bは、シナリオに関する各種の情報を保持するテーブルである。
図4は、操作履歴テーブルのデータ構造の一例を示す図である。
図4に示すように、操作履歴テーブル140bは、実行順序、操作対象、操作命令、文書識別情報を対応付ける。
【0056】
実行順序は、シナリオの実行順序を示す。たとえば、S1-1、S1-2、S1-3、・・・S1-nの順に、操作対象に対して、操作命令が実行される。操作対象は、操作命令の実行対象となるノードを示す。操作命令は、操作対象に対するコマンドを示すものである。操作命令には、クリック以外のコマンドであってもよい。文書識別情報は、操作対象のノードを含む構造化文書を示す。
【0057】
図1の説明に戻る。ノード対応テーブル140cは、シナリオを作成した時点のノードと、シナリオ実行時のノードとの関係を定義するテーブルである。以下の説明では、適宜、シナリオを作成した時点のことを「操作記録時」と表記し、シナリオを実行する時点のことを「操作再生時」と表記する。
【0058】
図5は、ノード対応テーブルのデータ構造の一例を示す図である。
図5に示すように、ノード対応テーブルは、第1ノードと、第2ノードとを対応付ける。第1ノードは、操作記録時の構造化文書に含まれるノードを示す。第2ノードは、操作再生時の構造化文書に含まれるノードを示す。
【0059】
たとえば、第1ノード「D50a」と第2ノード「D51a」とが対応付けられている。第1ノードに対応する第2ノードの候補が複数存在する場合もあり得る。たとえば、第1ノード「D50b」は、第2ノード「D51b」、「D51d」と対応付けられ、後述する制御部150の処理によって、どちらか一方の第2ノードに対応付けられる。また、第1ノードに対応する第2ノードが存在しない場合には、第2ノードの欄がブランクとなる。
【0060】
図1の説明に戻る。制御部150は、画面表示処理部150aと、記録処理部150bと、前処理部150cと、判定部150dと、実行部150eとを有する。制御部150は、たとえば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)により実現される。また、制御部150は、例えばASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実行されてもよい。
【0061】
画面表示処理部150aは、ネットワークを介して、外部装置からHTMLソースを取得する。画面表示処理部150aは、作業員によって、URL(Uniform Resource Locator)等を指定された場合には、URLにアクセスして、HTMLソースを取得する。画面表示処理部150aは、取得したHTMLソースを、構造化文書テーブル140aに登録する。
【0062】
画面表示処理部150aは、取得したHTMLソースに基づくWEB画面を生成し、WEB画面の情報を、出力部130に出力して、WEB画面を表示させる。
【0063】
作業員は、操作記録時において、出力部130に表示されるWEB画面を参照しつつ、入力部120を操作することで、操作対象と、操作命令とを指定する作業を繰り返し実行することで、シナリオに関する情報を、情報処理装置100に入力する。作業員は、操作記録時に、URLを入力して、WEB画面の表示要求を行ってもよい。
【0064】
作業員は、操作再生時において、入力部120を操作してURLを入力し、シナリオの実行対象となるWEB画面を指定してもよい。画面表示処理部150aは、作業員から、シナリオの実行対象となるWEB画面の指定を受け付けた場合、該当するWEB画面を出力部130に表示させつつ、WEB画面に対応するHTMLソースを、前処理部150cに出力する。
【0065】
記録処理部150bは、操作記録時において、入力部120から、操作対象、操作命令の入力を受け付けてシナリオを作成し、作成したシナリオの情報を、操作履歴テーブル140bに記録する。以下において、記録処理部150bの処理の一例について説明する。
【0066】
記録処理部150bは、画面表示処理部150aがWEB画面を出力部130に表示させる際に実行したHTMLソースを解析することで、HTMLソースの構造化文書を生成する。記録処理部150bは、生成した構造化文書に、ユニークな文書識別情報を割り当て、文書識別情報と、構造化文書と、HTMLソースとを対応付けて、構造化文書テーブル140aに記録する。
【0067】
記録処理部150bは、操作記録時において、入力部120から、操作命令、操作対象の入力を受け付けると、
図3で説明したWEB画面と、ノードとの関係から、選択対象となるノードを特定する。たとえば、WEB画面I50のパーツI50cが、操作対象として入力された場合には、記録処理部150bは、操作対象のノードを、ノードD50cとして特定する。
【0068】
記録処理部150bは、実行順序と、操作対象と、操作命令と、文書識別情報とを対応付けて、操作履歴テーブル140bに記録する。
【0069】
記録処理部150bは、入力部120から、操作対象および操作命令の入力を受け付けるたびに、上記処理を繰り返し実行する。以下の説明では、記録処理部150bが生成した操作記録時のHTMLソースの構造化文書を「第1構造化文書」と表記する。第1構造化文書は、第1木構造に対応する。
【0070】
前処理部150cは、操作再生時において、操作記録時の構造化文書と、操作実行時の構造化文書との構造の比較結果を基にして、操作記録時の構造化文書のノードと、操作再生時の構造化文書のノードとの仮の対応付けを行う。以下の説明では、適宜、操作記録時の構造化文書(第1構造化文書)のノードを「第1ノード」と表記する。操作再生時の構造化文書のノードを「第2ノード」と表記する。
【0071】
前処理部150cは、仮の対応付けを行った第1ノードと第2ノードとの関係を、ノード対応テーブル140cに登録する。以下において、前処理部150cの処理の一例について説明する。
【0072】
前処理部150cは、操作再生時に、画面表示処理部150aからHTMLソースを取得し、HTMLソースを解析することで、操作再生時のHTMLソースの構造化文書を生成する。以下の説明では、適宜、操作再生時のHTMLソースの構造化文書を「第2構造化文書」と表記する。第2構造化文書は、第2木構造に対応する。
【0073】
前処理部150cは、操作履歴テーブル140bから、文書識別情報を特定し、特定した文書識別情報に対応する第1構造化文書を、構造化文書テーブル140aから取得する。
【0074】
前処理部150cは、第1構造化文書と、第2構造化文書とを比較して、木構造編集距離に基づく編集コストが最小となるように、第1構造化文書の各第1ノードと、第2構造化文書の各第2ノードとをそれぞれ対応付ける。たとえば、前処理部150cは、周知技術「"An Optimal Decomposition Algorithm for Tree Edit Distance".Erik Demaine,Shay Mozes,Benjamin Rossman,Oren Weimann.In Proceedings of the 34th International Colloquium on Automata,Languages and Programming(ICALP 2007)」に記載された技術を基にして、木構造編集距離に基づく編集コストが最小となるように、第1ノードと、第2ノードとを対応付ける。
【0075】
前処理部150cは、第1ノードと、第2ノードとの関係を、ノード対応テーブル140cに登録する。前処理部150cは、編集コストが最小となるような第1ノードと、第2ノードとの組合せが複数存在する場合には、一つの第1ノードに対して、複数の第2ノードを対応付けて、ノード対応テーブル140cに登録する。なお、前処理部150cは、編集コストが閾値未満となる第1ノードと、第2ノードとの関係を、ノード対応テーブル140cに登録してもよい。
【0076】
前処理部150cによって登録された時点において、ノード対応テーブル140cに登録された第1ノードと、第2ノードとの対応関係は、仮の対応関係となる。第1ノードと、第2ノードとの対応関係が適切であるか否かは、後述する判定部150dによって判定される。
【0077】
操作再生時において、操作履歴テーブル140bに記録された実行順序で、操作対象となるノードに、操作命令が実行されることになるが、前処理部150cは、各実行順序において、上記処理を繰り返し実行する。なお、前処理部150cは、前回実行対象となった第1構造化文書と、今回実行対象となった第1構造化文書とが同一の構造化文書である場合には、前回対応付けた、第1ノードと、第2ノードとの対応関係を流用してもよい。
【0078】
判定部150dは、ノード対応テーブル140cを参照し、仮の対応関係となった、第1ノードと、第2ノードとの対応関係が適切な対応関係であるか否かを判定する。たとえば、判定部150dは、第1ノードのコンテンツと、第2ノードのコンテンツとの類似度を基にして、仮の対応付けを行った第1ノードと、第2ノードとを対応付けるか否かを判定する。なお、判定部150dは、上記の対応関係を判定する際、操作履歴テーブル140bの操作対象となる第1ノードと、かかる第1ノードに対応付けられた第2ノードとの対応関係を判定するものとする。以下において、判定部150dの処理の一例について説明する。
【0079】
判定部150dは、第1ノードに対応するコンテンツを、第1構造化文書のHTMLソースから取得する。第1ノードに対応するコンテンツを、適宜、「第1コンテンツ」と表記する。判定部150dは、第2ノードに対応するコンテンツを、第2構造化文書のHTMLソースから取得する。第2ノードに対応するコンテンツを、適宜、「第2コンテンツ」と表記する。
【0080】
判定部150dは、コンテンツの類似性を判定する処理と、コンテンツに含まれるコマンドの互換性を判定する処理とを実行する。
【0081】
判定部150dが実行するコンテンツの類似性を判定する処理について説明する。判定部150dは、コンテンツの類似性を判定する処理を実行することで、第1ノードと、第2ノードとが、「異なるノード」であるか、「同一の可能性があるノード」であるか、「同一のノード」であるかを判定する。
【0082】
図6は、コンテンツの類似性を判定する処理を示すフローチャートである。
図6に示すように、情報処理装置100の判定部150dは、第1コンテンツのタグと、第2コンテンツのタグとが同じであるか否かを判定する(ステップS11)。判定部150dは、タグが同じ場合には(ステップS11、Yes)、ステップS15に移行する。判定部150dは、タグが同じでない場合には(ステップS11,No)、ステップS12に移行する。
【0083】
ステップS12の説明に移行する。判定部150dは、第1コンテンツのタグと、第2コンテンツのタグとが同じグループのタグであるか否かを判定する(ステップS12)。判定部150dは、同じグループのタグでない場合には(ステップS12,No)、第1ノードと、第2ノードとが異なるノードであると判定する(ステップS13)。
【0084】
一方、判定部150dは、同じグループのタグである場合には(ステップS12,Yes)、第1ノードと、第2ノードとが同一の可能性があるノードであると判定する(ステップS14)。
【0085】
ステップS15の説明に移行する。判定部150dは、第1コンテンツの文字列と、第2コンテンツの文字列とが同じであるか否かを判定する(ステップS15)。判定部150dは、コンテンツの文字列が同じである場合には(ステップS15,Yes)、ステップS17に移行する。
【0086】
一方、判定部150dは、コンテンツの文字列が同じでない場合には(ステップS15,No)、コンテンツの文字列が類似しているか否かを判定する(ステップS16)。判定部150dは、コンテンツの文字列が類似している場合には(ステップS16,Yes)、第1ノードと、第2ノードとが同一のノードであると判定する(ステップS17)。
【0087】
一方、判定部150dは、コンテンツの文字列が類似してない場合には(ステップS16,No)、ステップS14に移行する。
【0088】
判定部150dは、上記の
図6の処理を実行することで、第1ノードと、第2ノードとが、「異なるノード」であるか、「同一の可能性があるノード」であるか、「同一のノード」であるかを判定する。
【0089】
判定部150dは、第1ノードと、第2ノードとが、異なるノードである場合には、第1ノードの第1コンテンツと、第2ノードの第2コンテンツとの類似度が低いものとして、第1ノードと、第2ノードとを対応付けないと判定する。判定部150dは、第1ノードと、異なるノードであると判定した第2ノードの情報を、ノード対応テーブル140cから削除する。
【0090】
たとえば、
図5を用いて説明を行う。判定部150dは、第1ノードD50bと、第2ノードD51bとが異なるノードと判定した場合、ノード対応テーブル140cにおいて、第1ノードD50bに対応付けられた、第2ノードD51bを削除する。
【0091】
判定部150dは、第1ノードと、第2ノードとが、同一のノードである場合には、第1ノードの第1コンテンツと、第2ノードの第2コンテンツとの類似度が高いものとして、第1ノードと、第2ノードとを対応付けると判定する。
【0092】
判定部150dは、第1ノードと、第2ノードとが、同一の可能性のあるノードである場合には、かかる第1ノードと、第2ノードとについて、コンテンツに含まれるコマンドの互換性を判定する処理を実行する。
【0093】
ここで、コンテンツの類似性判定の一例について説明する。
図7は、コンテンツの類似性判定の一例を説明するための図である。
図7において、HTMLソース40を、操作記録時のHTMLソースとする。HTMLソース41を、操作再生時のHTMLソースとする。
【0094】
HTMLソース40は、コンテンツ40aと、コンテンツ40bとを有する。HTMLソース41は、コンテンツ41aと、コンテンツ41bとを有する。
【0095】
コンテンツ40aのタグ「span1」と、コンテンツ41aのタグ「span1」とは、同じタグであり、コンテンツ40aの文字列と、コンテンツ41aの文字列とは同じである。たとえば、判定部150dは、第1ノードのコンテンツが、コンテンツ40aであり、第2ノードのコンテンツが、コンテンツ41aである場合には、第1ノードと、第2ノードとが、「同一のノード」であると判定する。
【0096】
コンテンツ40bのタグ「div」と、コンテンツ41bのタグ「span2」とは、異なるタグであるが、いずれも「テキスト領域の範囲を示す」という共通の機能をもつタグであるため、機能的に類似のタグと見なす。たとえば、判定部150dには、共通の機能を持つタグの情報が予め設定されおり、判定部150dは、かかる情報を基にして、類似のタグであるか否かを判定する。たとえば、判定部150dは、第1ノードのコンテンツが、コンテンツ40bであり、第2ノードのコンテンツが、コンテンツ41bである場合には、第1ノードと、第2ノードとが、「同一の可能性があるノード」であると判定する。
【0097】
続いて、判定部150dが実行するコンテンツに含まれるコマンドの互換性を判定する処理について説明する。判定部150dは、コンテンツに含まれるコマンドの互換性を判定することで、同一の可能性のある第1ノードと、第2ノードとが、互換性のあるノードであるか否かを判定する。以下に説明するように、判定部150dは、同一の可能性のある第1ノードと、第2ノードとが、互換性のあるノードである場合に、第1ノードと、第2ノードとの対応付けを行う。
【0098】
図8は、コンテンツに含まれるコマンドの互換性を判定する処理を示すフローチャートである。
図8に示すように、情報処理装置100の判定部150dは、両方のノードのコンテンツにコマンドが登録されているか否かを判定する(ステップS21)。判定部150dは、両方のノードのコンテンツにコマンドが登録されていない場合には(ステップS21,No)、ステップS22に移行する。一方、判定部150dは、両方のノードのコンテンツにコマンドが登録されている場合には(ステップS21,Yes)、ステップS24に移行する。
【0099】
ステップS22の説明に移行する。判定部150dは、片方のノードのコンテンツのみにコマンドが登録されているか否かを判定する(ステップS22)。判定部150dは、片方のノードのコンテンツのみにコマンドが登録されている場合には(ステップS22,Yes)、互換性なしと判定する(ステップS23)。
【0100】
一方、判定部150dは、片方のノードのコンテンツのみにコマンドが登録されていない場合には(ステップS22,No)、ステップS26に移行する。
【0101】
ステップS24の説明に移行する。判定部150dは、コマンドの関数名が同じであるか否かを判定する(ステップS24)。判定部150dは、コマンドの関数名が同じである場合には(ステップS24,Yes)、ステップS26に移行する。
【0102】
一方、判定部150dは、コマンドの関数名が同じでない場合には(ステップS24,No)、コマンドの関数の定義が類似しているか否かを判定する(ステップS25)。判定部150dは、コマンドの関数の定義が類似してない場合には(ステップS25,No)、ステップS23に移行する。一方、判定部150dは、コマンドの関数の定義が類似している場合には(ステップS25,Yes)、互換性ありと判定する(ステップS26)。
【0103】
判定部150dは、上記の
図8の処理を実行することで、同一の可能性がある第1ノードと、第2ノードとが、コマンドの互換性があるか否かを判定する。判定部150dは、コマンドの互換性がない場合には、第1ノードの第1コンテンツと、第2ノードの第2コンテンツとの類似度が低いものとして、第1ノードと、第2ノードとを対応付けないと判定する。判定部150dは、第1ノードと、異なるノードであると判定した第2ノードの情報を、ノード対応テーブル140cから削除する。
【0104】
一方、判定部150dは、コマンドの互換性がある場合には、第1ノードの第1コンテンツと、第2ノードの第2コンテンツとの類似度が高いものとして、第1ノードと、第2ノードとを対応付けると判定する。
【0105】
ここで、コンテンツのコマンドの互換性判定の一例について説明する。
図9は、コンテンツのコマンドの互換性判定の一例を説明するための図である。
図9において、HTMLソース42を、操作記録時のHTMLソースとする。HTMLソース43を、操作再生時のHTMLソースとする。
【0106】
HTMLソース42には、第1ノードに対応するコンテンツ42aが含まれる。たとえば、コンテンツ42aに対応するWEB画面のパーツには「name=“hoge”」のボタン(button)が設定されており、かかるボタンに対してクリックコマンドが実行されると、関数「cmd1()」が呼び出される。関数「cmd1()」の内部スクリプトは、HTMLソース42の領域42bに示すスクリプトとなる。内部スクリプトは、関数の定義に対応する。
【0107】
HTMLソース43には、第2ノードに対応するコンテンツ43aが含まれる。たとえば、コンテンツ423に対応するWEB画面のパーツには「name=“hoge”」のボタン(button)が設定されており、かかるボタンに対してクリックコマンドが実行されると、関数「cmd2()」が呼び出される。関数「cmd2()」の内部スクリプトは、HTMLソース42の領域43bに示すスクリプトとなる。
【0108】
判定部150dは、各関数の関数名が同じである場合には、コンテンツのコマンドに互換性があると判定する。
【0109】
判定部150dは、各関数の関数名が異なる場合には、関数の内部スクリプトを比較し、内部スクリプトが同じ場合には、コンテンツのコマンドに互換性があると判定する。
図9で示した例では、関数名「cmd1()」と、関数名「cmd2()」とが異なるが、内部スクリプトが同じであるため、互換性がある判定される。
【0110】
一方、判定部150dは、各関数の関数名が異なり、内部スクリプトが異なる場合には、コンテンツのコマンドに互換性がないと判定する。
【0111】
なお、判定部150dは、内部スクリプトが完全に一致しない場合でも、内部スクリプトが類似している場合には、コンテンツのコマンドに互換性があると判定してもよい。たとえば、判定部150dは、内部スクリプトの文字列を単語列に分割し、同じ単語が所定の割合以上の場合に、内部スクリプトが類似していると判定する。
【0112】
上記のように、判定部150dが、コンテンツの類似性を判定する処理と、コンテンツに含まれるコマンドの互換性を判定する処理とを実行することで、ノード対応テーブル140cの仮の対応関係が、確定した対応関係となる。
【0113】
図1の説明に戻る。実行部150eは、操作再生時に、操作履歴テーブル140bを基にして、シナリオを実行する処理部である。実行部150eは、操作履歴テーブル140bに記録された、実行順序S1-mに対応する操作対象(第1ノード)と、ノート対応テーブル140cとを基にして、第1ノードに対応する第2ノードを特定する。実行順序が次の実行順序に移行する度に、上記の前処理部150c、判定部150dによって、ノード対応テーブル140cが更新される。
【0114】
実行部150eは、第2ノードに対して、実行順序S1-mに対応する操作命令を実行する。実行部150eは、実行順序S1-m(m=1、2、3、4、・・・n)に従って、上記処理を繰り返し実行する。
【0115】
次に、本実施例に係る情報処理装置100の処理手順の一例について説明する。
図10は、情報処理装置の操作記録時の処理手順を示すフローチャートである。
図10に示すように、情報処理装置100の記録処理部150bは、WEB画面のUI(User Interface)操作を1ステップ受け付ける(ステップS101)。
【0116】
記録処理部150bは、操作対象のノードと操作命令とを操作履歴テーブル140bに記録する(ステップS102)。記録処理部150bは、操作記録時の構造化文書を構造化文書テーブル140aに登録する(ステップS103)。
【0117】
記録処理部150bは、UI操作が終了していない場合には(ステップS104,No)、ステップS101に移行する。記録処理部150bは、UI操作が終了した場合には(ステップS104,Yes)、処理を終了する。
【0118】
図11は、情報処理装置の操作再生時の処理手順を示すフローチャートである。
図11に示すように、情報処理装置100の前処理部150cは、操作履歴テーブル140bから1ステップ分のレコードを取得する(ステップS201)。
【0119】
前処理部150cは、操作再生時の第2構造化文書を取得する(ステップS202)。前処理部150cは、第1構造化文書および第2構造化文書の比較を行い、ノード対応テーブル140cを生成する(ステップS203)。
【0120】
情報処理装置100の判定部150dは、ノード対応テーブル140cを基にして、操作対象の第1ノードに対応する、第2ノードが存在するか否かを判定する(ステップS204)。判定部150dは、操作対象の第1ノードに対応する、第2ノードが存在しない場合には(ステップS205,No)、ステップS201に移行する。一方、判定部150dは、操作対象の第1ノードに対応する、第2ノードが存在する場合には(ステップS205,Yes)、ステップS206に移行する。
【0121】
情報処理装置100の判定部150d、実行部150eは、コマンド実行処理を実行する(ステップS206)。情報処理装置100は、操作履歴テーブルのシナリオが終了していない場合には(ステップS207,No)、ステップS201に移行する。一方、情報処理装置100は、操作履歴テーブルのシナリオが終了した場合には(ステップS207,Yes)、処理を終了する。
【0122】
次に、
図11のステップS206に示したコマンド実行処理の処理手順について説明する。
図12は、コマンド実行処理の処理手順を示すフローチャートである。
図12に示すように、情報処理装置100の判定部150dは、類似性判定処理を実行する(ステップS301)。判定部150dが実行する類似性判定処理の処理手順は、
図6で説明した処理手順に対応する。
【0123】
情報処理装置100の実行部150eは、第1ノードと第2ノードとが異なるノードである場合には(ステップS302,Yes)、ステップS307に移行する。一方、情報処理装置100は、第1ノードと第2ノードとが異なるノードでない場合には(ステップS302,No)、ステップS303に移行する。
【0124】
情報処理装置100の実行部150eは、第1ノードと第2ノードとが同一のノードである場合には(ステップS303,Yes)、第2ノードに対して操作命令(コマンド)を実行する(ステップS304)。
【0125】
一方、判定部150dは、第1ノードと第2ノードとが同一のノードでない場合には(ステップS303,No)、互換性判定処理を実行する(ステップS305)。判定部150dが実行する互換性判定処理の処理手順は、
図8で説明した処理手順に対応する。
【0126】
実行部150eは、第1ノードのコマンドと、第2ノードのコマンドとが互換性のあるコマンドである場合には(ステップS306,Yes)、ステップS304に移行する。一方、実行部150eは、第1ノードのコマンドと、第2ノードのコマンドとが互換性のないコマンドである場合には(ステップS306,No)、操作命令をスキップする(ステップS307)。
【0127】
次に、情報処理装置100が実行するシナリオの実現例について説明する。
図13は、シナリオの実現例を示す図である。操作記録時のWEB画面を、WEB画面50とする。作業員は、入力部120を操作して、WEB画面50のボタンBをクリックするシナリオを生成すると、記録処理部150bは、操作履歴テーブル140bに、操作対象「ボタンB」と、操作命令「クリック」が記録される。
【0128】
操作再生時のWEB画面を、WEB画面51とする。情報処理装置100の実行部150eは、操作履歴テーブル140bを基にして、操作対象となるWEB画面51のボタンBを特定し、操作命令に従って、WEB画面51のボタンBをクリックする。
【0129】
次に、本実施例に係る情報処理装置100の効果について説明する。情報処理装置100は、操作再生時において、第1構造化文書と、第2構造化文書との構造の比較結果を基にして、第1ノードと第2ノードとの仮の対応付けを行う。そして、情報処理装置100は、第1ノードのコンテンツと、第2ノードのコンテンツとの類似度を基にして、仮の対応付けを行った第1ノードと第2ノードとを対応付けるか否かを判定する。これによって、第1構造化文書の第1ノードと、第2構造化文書の第2ノードとを適切に対応付けることができる。
【0130】
情報処理装置100は、第1ノードのコンテンツ(タグ、文字列)と、第2ノードのコンテンツとを基にして、第1ノードと第2ノードとが同一のノードである判定した場合に、第1ノードと第2ノードとを対応付ける。これによって、操作再生時において、第1ノードに対する操作命令を、第2ノードに問題なく実行することができる。
【0131】
情報処理装置100は、第1ノードのコンテンツ(タグ、文字列)と、第2ノードのコンテンツとを基にして、第1ノードと第2ノードとが異なるノードである判定した場合に、第1ノードと第2ノードとの対応付けを解除する。これによって、対応関係が適切でない第1ノードと第2ノードとが対応付けられることを抑止することができる。
【0132】
情報処理装置100は、第1ノードのコマンドと、第2ノードのコマンドとに互換性がある場合には、第1ノードと第2ノードとを対応付ける。これによって、第1ノードと第2ノードとが同一のノードでなくても、第1ノードに対応する操作命令を、第2ノードに実行することができる。また、第1ノードに対する操作命令を実行できない第2ノードを、第1ノートと対応付けることを抑止することができる。
【0133】
情報処理装置100は、第1ノードに対応する関数の内部スクリプトと、第2ノードに対応する関数の内部スクリプトとが一致する場合、または類似している場合に、第1ノードと第2ノードとを対応付ける。これによって、第1ノードと第2ノードとが同一のノードでなくても、第1ノードに対応する操作命令を、第2ノードに実行することができる。
【0134】
情報処理装置100は、第1構造化文書と、第2構造化文書との構造の比較結果を基にして、第1ノードと第2ノードとの仮の対応付けを行っておくことで、第1ノードと比較する第2ノードを絞り込むことができ、計算コストを削減することができる。
【0135】
次に、上記実施例に示した情報処理装置100と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。
図14は、実施例の情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【0136】
図14に示すように、コンピュータ200は、各種演算処理を実行するCPU201と、ユーザからのデータの入力を受け付ける入力装置202と、ディスプレイ203とを有する。また、コンピュータ200は、有線または無線ネットワークを介して、外部装置等との間でデータの授受を行う通信装置204と、インタフェース装置205とを有する。また、コンピュータ200は、各種情報を一時記憶するRAM206と、ハードディスク装置207とを有する。そして、各装置201~207は、バス208に接続される。
【0137】
ハードディスク装置207は、画面表示処理プログラム207a、記録処理プログラム207b、前処理プログラム207c、判定プログラム207d、実行プログラム207eを有する。また、CPU201は、各プログラム207a~207eを読み出してRAM206に展開する。
【0138】
画面表示処理プログラム207aは、画面表示処理プロセス206aとして機能する。記録処理プログラム207bは、記録処理プロセス206bとして機能する。前処理プログラム207cは、前処理プロセス206cとして機能する。判定プログラム207dは、判定プロセス206dとして機能する。実行プログラム207eは、実行プロセス206eとして機能する。
【0139】
画面表示処理プロセス206aの処理は、画面表示処理部150aの処理に対応する。記録処理プロセス206bの処理は、記録処理部150bの処理に対応する。前処理プロセス206cの処理は、前処理部150cの処理に対応する。判定プロセス206dの処理は、判定部150dの処理に対応する。実行プロセス206eの処理は、実行部150eの処理に対応する。
【0140】
なお、各プログラム207a~207eについては、必ずしも最初からハードディスク装置207に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD-ROM、DVD、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ200が各プログラム207a~207eを読み出して実行するようにしてもよい。
【0141】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0142】
(付記1)コンピュータに、
操作命令の記録時において、第1木構造に含まれる複数の第1ノードに対して、操作命令を記録し、
操作命令の再生時において、前記第1木構造と第2木構造との構造の比較結果を基にして、前記第1木構造に含まれる複数の第1ノードと、前記第2木構造に含まれる複数の第2ノードとの仮の対応付けを行い、
仮の対応付けを行った第1ノードおよび第2ノードについて、第1ノードのコンテンツと、第2ノードのコンテンツとの類似度を基にして、前記仮の対応付けを行った第1ノードと第2ノードとを対応付けるか否かを判定する
処理を実行させることを特徴とする判定プログラム。
【0143】
(付記2)前記第1ノードに対応付けられた前記第2ノードに対して、前記第1ノードに対応付けられた操作命令を実行する処理を更に実行することを特徴とする付記1に記載の判定プログラム。
【0144】
(付記3)前記判定する処理は、前記仮の対応付けを行った第1ノードおよび第2ノードについて、第1ノードのコンテンツに含まれるタグまたは文字列と、第2ノードのコンテンツに含まれるタグまたは文字列との類似度を基にして、前記仮の対応付けを行った第1ノードと第2ノードとを対応付けるか否かを判定することを特徴とする付記1または2に記載の判定プログラム。
【0145】
(付記4)前記判定する処理は、前記仮の対応付けを行った第1ノードおよび第2ノードについて、第1ノードのコンテンツに含まれる第1コマンドが、第2ノードのコンテンツに含まれる第2コマンドと互換性がある場合に、前記仮の対応付けを行った第1ノードと第2ノードとを対応付けることを特徴とする付記1または2に記載の判定プログラム。
【0146】
(付記5)前記判定する処理は、前記第1コマンドの関数名と、前記第2コマンドの関数名とが同じ場合、または、前記第1コマンドの関数の定義と、前記第2コマンドの関数の定義とが類似している場合に、前記仮の対応付けを行った第1ノードと第2ノードとを対応付けることを特徴とする付記4に記載の判定プログラム。
【0147】
(付記6)コンピュータが実行する判定方法であって、
操作命令の記録時において、第1木構造に含まれる複数の第1ノードに対して、操作命令を記録し、
操作命令の再生時において、前記第1木構造と第2木構造との構造の比較結果を基にして、前記第1木構造に含まれる複数の第1ノードと、前記第2木構造に含まれる複数の第2ノードとの仮の対応付けを行い、
仮の対応付けを行った第1ノードおよび第2ノードについて、第1ノードのコンテンツと、第2ノードのコンテンツとの類似度を基にして、前記仮の対応付けを行った第1ノードと第2ノードとを対応付けるか否かを判定する
処理を実行することを特徴とする判定方法。
【0148】
(付記7)前記第1ノードに対応付けられた前記第2ノードに対して、前記第1ノードに対応付けられた操作命令を実行する処理を更に実行することを特徴とする付記6に記載の判定方法。
【0149】
(付記8)前記判定する処理は、前記仮の対応付けを行った第1ノードおよび第2ノードについて、第1ノードのコンテンツに含まれるタグまたは文字列と、第2ノードのコンテンツに含まれるタグまたは文字列との類似度を基にして、前記仮の対応付けを行った第1ノードと第2ノードとを対応付けるか否かを判定することを特徴とする付記6または7に記載の判定方法。
【0150】
(付記9)前記判定する処理は、前記仮の対応付けを行った第1ノードおよび第2ノードについて、第1ノードのコンテンツに含まれる第1コマンドが、第2ノードのコンテンツに含まれる第2コマンドと互換性がある場合に、前記仮の対応付けを行った第1ノードと第2ノードとを対応付けることを特徴とする付記6または7に記載の判定方法。
【0151】
(付記10)前記判定する処理は、前記第1コマンドの関数名と、前記第2コマンドの関数名とが同じ場合、または、前記第1コマンドの関数の定義と、前記第2コマンドの関数の定義とが類似している場合に、前記仮の対応付けを行った第1ノードと第2ノードとを対応付けることを特徴とする付記9に記載の判定方法。
【0152】
(付記11)操作命令の記録時において、第1木構造に含まれる複数の第1ノードに対して、操作命令を記録する記録処理部と、
操作命令の再生時において、前記第1木構造と第2木構造との構造の比較結果を基にして、前記第1木構造に含まれる複数の第1ノードと、前記第2木構造に含まれる複数の第2ノードとの仮の対応付けを行う前処理部と、
仮の対応付けを行った第1ノードおよび第2ノードについて、第1ノードのコンテンツと、第2ノードのコンテンツとの類似度を基にして、前記仮の対応付けを行った第1ノードと第2ノードとを対応付けるか否かを判定する判定部と、
を有することを特徴とする情報処理装置。
【0153】
(付記12)前記第1ノードに対応付けられた前記第2ノードに対して、前記第1ノードに対応付けられた操作命令を実行する実行部を更に有することを特徴とする付記11に記載の情報処理装置。
【0154】
(付記13)前記判定部は、前記仮の対応付けを行った第1ノードおよび第2ノードについて、第1ノードのコンテンツに含まれるタグまたは文字列と、第2ノードのコンテンツに含まれるタグまたは文字列との類似度を基にして、前記仮の対応付けを行った第1ノードと第2ノードとを対応付けるか否かを判定することを特徴とする付記11または12に記載の情報処理装置。
【0155】
(付記14)前記判定部は、前記仮の対応付けを行った第1ノードおよび第2ノードについて、第1ノードのコンテンツに含まれる第1コマンドが、第2ノードのコンテンツに含まれる第2コマンドと互換性がある場合に、前記仮の対応付けを行った第1ノードと第2ノードとを対応付けることを特徴とする付記11または12に記載の情報処理装置。
【0156】
(付記15)前記判定部は、前記第1コマンドの関数名と、前記第2コマンドの関数名とが同じ場合、または、前記第1コマンドの関数の定義と、前記第2コマンドの関数の定義とが類似している場合に、前記仮の対応付けを行った第1ノードと第2ノードとを対応付けることを特徴とする付記14に記載の情報処理装置。
【符号の説明】
【0157】
100 情報処理装置
110 通信部
120 入力部
130 出力部
140 記憶部
140a 構造化文書テーブル
140b 操作履歴テーブル
140c ノード対応テーブル
150 制御部
150a 画面表示処理部
150b 記録処理部
150c 前処理部
150d 判定部
150e 実行部