(57)【要約】      （修正有）【課題】デバッグを効率的に行って、ルール作成の効率向上およびルール作成の品質向上を図るデバッグ支援システムおよびデバッグ支援方法を提供する。【解決手段】デバッグ支援システム１００において、プロキシサーバ３０のデバッグ情報抽象化部３２は、拡張プログラムにおける所定のルールをプログラムに具象化する際に、該所定のルールに関するデバッグ情報を出力するためのプログラムを具象化したプログラムに追加する。そして、端末装置４０のデバッグ情報送信部４１ｂは、プログラムが追加された所定のルールについて、デバッグ情報をデバッグ支援装置１０に送信する。【選択図】図１
2020123268.tif 000002
【特許請求の範囲】
【請求項１】
拡張プログラムにおける所定のルールをプログラムに具象化する際に、該所定のルールに関するデバッグ情報を出力するためのプログラムを具象化したプログラムに追加する抽象化部と、
前記抽象化部によってプログラムが追加された所定のルールについて、前記デバッグ情報を外部に送信する送信部と
を有することを特徴とするデバッグ支援システム。
【請求項２】
デバッグ対象がウェブページの場合において、模擬したテストページに関する情報を生成するテストページ生成部と、
前記テストページ生成部によって生成されたテストページに関する情報に前記拡張プログラムにおける所定のルールを適用するテスト実行部と
をさらに有することを特徴とする請求項１に記載のデバッグ支援システム。
【請求項３】
前記拡張プログラムにおける所定のルールのセレクタ情報と前記テストページの文書情報とのアンマッチが存在するか判定し、アンマッチが存在する場合には、警告を表示するページ比較部をさらに有することを特徴とする請求項２に記載のデバッグ支援システム。
【請求項４】
前記抽象化部は、前記拡張プログラムにおける所定のルールの設定項目をプログラムに具象化する際に、前記デバッグ情報として、少なくとも設定項目の反映の開始と終了を示す情報と、該設定項目に入力されたパラメータ情報と、該設定項目の反映に失敗した場合の例外情報と該設定項目を一意に特定する識別子とを出力するためのプログラムを前記具象化したプログラムに追加することを特徴とする請求項１に記載のデバッグ支援システム。
【請求項５】
デバッグ支援システムによって実行されるデバッグ支援方法であって、
既存のアプリケーションに追加される拡張プログラムにおける所定のルールをプログラムに具象化する際に、該所定のルールに関するデバッグ情報を出力するためのプログラムを具象化したプログラムに追加する抽象化工程と、
前記抽象化工程によってプログラムが追加された所定のルールについて、前記デバッグ情報を外部に送信する送信工程と
を含んだことを特徴とするデバッグ支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグ支援システムおよびデバッグ支援方法に関する。
【背景技術】
【０００２】
Ｗｅｂシステムの利便性向上や操作ミス軽減を実現する方法であるＵＩ（User  Interface：ユーザインターフェース）拡張とは、システムを改造せずに、Ｗｅｂ画面の入力チェックや自動化などの機能拡張を追加することで、オペレータの生産性を向上させる技術である。通常、ＷｅｂシステムのＵＩに機能追加する場合、プログラミング言語でシステムのＨＴＭＬやソースコードを直接、改修するが、ＵＩ拡張ではプログラミング言語ではなく、主に抽象的なルールを作成し、そのルールをＵＩ拡張の機構（以下、拡張プログラム）がプログラムコードに変換することで、機能追加を実現する。
【０００３】
また、プログラムのバグを取り除くデバッグはソフトウェア開発工程の大きな割合を占めており、ＵＩ拡張においても、１回のルール作成でバグのないルールを作ることは困難であるため、デバッグ作業は必要となる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】江木鶴子、竹内章、“プログラミング初心者にトレースを指導するデバッグ支援システムの開発と評価”、日本教育工学会論文誌、vol.32、No.4、pp.369-381、2009
【非特許文献２】平井健治、杉本明、阿部茂、“分散制御システムのデバッグ手法：要求仕様を用いたイベントヒストリ検査”、情報処理学会論文誌、vol.33、No.4、pp.491-500、Apr.、1992
【非特許文献３】宿口雅弘、“組込みシステムのデバッグ手法”、情報処理、38巻、10号、1997年10月
【非特許文献４】西川健一、増田健、足立洋之、土川公雄、井上晃、丸山勉、“Ｗｅｂベースの業務システムのユーザインターフェース拡張方式”、信学技報、2016
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の手法では、デバッグを効率的に行うことが難しく、ルール作成の効率向上およびルール作成の品質向上ができない場合があるという課題があった。例えば、従来のデバッグはルールが具象化された状態（例えば、JavaScript（登録商標）などのプログラミング言語）で実施しなければならず、ルール作成時とデバッグ時とでは必要とする知識や情報に大きな乖離があるため、ルール作成者がデバッグを効率的に行うことが難しかった。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明のデバッグ支援システムは、拡張プログラムにおける所定のルールをプログラムに具象化する際に、該所定のルールに関するデバッグ情報を出力するためのプログラムを具象化したプログラムに追加する抽象化部と、前記抽象化部によってプログラムが追加された所定のルールについて、前記デバッグ情報を外部に送信する送信部とを有することを特徴とする。
【０００７】
また、本発明のデバッグ支援方法は、デバッグ支援システムによって実行されるデバッグ支援方法であって、既存のアプリケーションに追加される拡張プログラムにおける所定のルールをプログラムに具象化する際に、該所定のルールに関するデバッグ情報を出力するためのプログラムを具象化したプログラムに追加する抽象化工程と、前記抽象化工程によってプログラムが追加された所定のルールについて、前記デバッグ情報を外部に送信する送信工程とを含んだことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、デバッグを効率的に行って、ルール作成の効率向上およびルール作成の品質向上を図ることができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１の実施形態に係るデバッグ支援システムの構成例を示すブロック図である。
【図２】図２は、第１の実施形態に係るデバッグ支援システムにおけるデバッグ支援処理の全体的な流れを説明する図である。
【図３】図３は、抽象化されたデバッグ情報の出力例を示す図である。
【図４】図４は、抽象化されたデバッグ情報と詳細なデバッグ情報とを連携される機能を説明する図である。
【図５】図５は、デバッグ情報に関するパラメータをウォッチする機能を説明する図である。
【図６】図６は、第１の実施形態に係るデバッグ支援システムによる抽象化処理の流れの一例を示すフローチャートである。
【図７】図７は、第１の実施形態に係るデバッグ支援システムによる抽象化処理を説明するための図である。
【図８】図８は、第２の実施形態に係るデバッグ支援システムの構成例を示すブロック図である。
【図９】図９は、第２の実施形態に係るデバッグ支援システムにおけるデバッグ支援処理の全体的な流れを説明する図である。
【図１０】図１０は、第２の実施形態に係るデバッグ支援システムによるテストページ生成処理の流れの一例を示すフローチャートである。
【図１１】図１１は、第２の実施形態に係るデバッグ支援システムによるテストページ生成処理を説明するための図である。
【図１２】図１２は、第２の実施形態に係るデバッグ支援システムによるテストページ生成処理を説明するための図である。
【図１３】図１３は、第２の実施形態に係るデバッグ支援システムによるテスト実行処理の流れの一例を示すフローチャートである。
【図１４】図１４は、第２の実施形態に係るデバッグ支援システムによるテスト実行処理を説明するための図である。
【図１５】図１５は、デバッグ支援プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願に係るデバッグ支援システムおよびデバッグ支援方法の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態により本願に係るデバッグ支援システムおよびデバッグ支援方法が限定されるものではない。また、本願ではJavaScript等のプログラムを、プログラミング等の知識を有さないユーザが可読性高くあるいは作成しやすく抽象化した状態をルールと定義する。抽象化の方法は、プログラムをブロックの組み合わせとして抽象化してルールを表現する手法や、フローチャートとして抽象化して表現する方法など任意の方法を用いることができる。加えて、ルールをプログラムに展開することを具象化と呼ぶ。さらに、設定項目とはルールの設定単位を示す。例えば、ブロックの組み合わせでルールを表現する場合は、一つのブロックが設定項目となる。
【００１１】
［第１の実施形態］
以下の実施の形態では、第１の実施形態に係るデバッグ支援システム１００の構成、デバッグ支援システム１００の処理の流れを順に説明し、最後に第１の実施形態による効果を説明する。
【００１２】
［デバッグ支援システムの構成］
まず、図１を用いて、第１の実施形態のデバッグ支援システム１００の構成例を説明する。図１は、第１の実施形態に係るデバッグ支援システムの構成例を示すブロック図である。デバッグ支援システム１００は、例えば、図１に示すように、デバッグ支援装置１０、Ｗｅｂサーバ２０、プロキシサーバ３０および端末装置４０を有する。
【００１３】
デバッグ支援装置１０は、ＵＩ拡張のルールと同じ粒度に抽象化されたＵＩ拡張のデバッグ情報のみを出力する。また、デバッグ支援装置１０は、デバッグ対象とするＷｅｂページを模擬したテストページを生成し、該テストへＵＩ拡張のルールを適用し、ルールが適用されたテストページ１３ａをＷｅｂブラウザ１３で表示する。
【００１４】
Ｗｅｂサーバ２０は、端末装置４０からのダウンロード要求に応じて、Ｗｅｂページのデータをプロキシサーバ３０を介して端末装置４０へ送信する。プロキシサーバ３０は、Ｗｅｂサーバ２０から受信したＷｅｂページのデータを端末装置４０に中継する。また、プロキシサーバ３０は、Ｗｅｂサーバ２０から受信したＷｅｂページに適用するＵＩ拡張のルールを挿入したり、デバッグ情報を出力するためのプログラムを挿入したりする。
【００１５】
プロキシサーバ３０は、拡張機能追加部３１およびデバッグ情報抽象化部３２を有する。拡張機能追加部３１は、Ｗｅｂサーバ２０からダウンロードされたＷｅｂページの文書に対して、該当ページに適用する拡張機能のルールがJavaScriptに具象化されたものを挿入する。ここで拡張機能のルールを挿入する方法は、例えば、プロキシサーバにより該当文書を端末装置にダウンロードする過程で挿入する方法や、ブラウザアドオンによりＷｅｂブラウザが挿入する方法、ＭＳＨＴＭＬなどの機能を用いて端末装置４０の別アプリケーションから挿入する方法など任意の手法が利用できる。本実施例では、適用対象をＷｅｂシステムのケースで説明しているが、端末装置上で動作するローカルアプリケーションでもよく、その場合は、アプリケーションの実装に応じた適切な公知の挿入手段を利用すればよい（JavaアプリケーションであればBytecode  Injectionなどが知られている）。
【００１６】
デバッグ情報抽象化部３２は、既存のアプリケーションに追加される拡張プログラムにおける所定のルールをプログラムに具象化する際に、該所定のルールに関するデバッグ情報を出力するためのプログラムを具象化したプログラムに追加する。例えば、デバッグ情報抽象化部３２は、拡張機能追加部３１が挿入するルールが具象化されたJavaScriptに対し、デバッグ情報をルールと同じ抽象度で出力するJavaScriptを追加する。
【００１７】
例えば、デバッグ情報抽象化部３２は、拡張プログラムにおける所定のルールの設定項目をプログラムに具象化する際に、デバッグ情報として、少なくとも設定項目の反映の開始と終了を示す情報と、該設定項目に入力されたパラメータ情報と、該設定項目の反映に失敗した場合の例外情報と該設定項目を一意に特定する識別子とを出力するためのプログラムを具象化したプログラムに追加する。
【００１８】
端末装置４０は、プロキシサーバ３０を介してＷｅｂサーバ２０からＷｅｂページのデータを受信する。端末装置４０のＷｅｂブラウザ４１は、拡張プログラムの機能を実行する拡張機能実行部４１ａと、拡張プログラムのデバッグ情報を外部のデバッグ支援装置１０に送信するデバッグ情報送信部４１ｂとを有する。
【００１９】
拡張機能実行部４１ａは、既存のアプリケーションに追加された拡張プログラムの機能を実行する。例えば、拡張機能実行部４１ａは、拡張機能追加部３１が挿入したJavaScriptを実行し拡張機能をＷｅｂページ上で動作させる。
【００２０】
デバッグ情報送信部４１ｂは、デバッグ情報抽象化部３２によってプログラムが追加された所定のルールについて、デバッグ情報を外部のデバッグ支援装置１０に送信する。例えば、デバッグ情報送信部４１ｂは、拡張機能実行部４１ａによって拡張機能追加部３１が挿入したJavaScriptが動作した際に、該当JavaScriptが出力するデバッグ情報をデバッグ支援装置１０に送信する。
【００２１】
デバッグ支援装置１０は、デバッグ情報送信部４１ｂによって送信されたデバッグ情報を受信し、該デバッグ情報を出力する。例えば、デバッグ支援装置１０は、デバッグ情報送信部４１ｂから受診したデバッグ情報を出力するとともに、送信されたデバッグ情報をもとに既存のＷｅｂブラウザのデバッガと連携する。また、デバッグ支援装置１０は、例えば、ルールを編集する機能を有する。つまり、デバッグ支援装置１０では、例えば、ユーザがデバッグ情報を参照しつつ、ルールの作成や編集を行うことができる。
【００２２】
ここで、図２を用いて、デバッグ支援システム１００におけるデバッグ支援処理の全体的な流れを説明する。図２は、第１の実施形態に係るデバッグ支援システムにおけるデバッグ支援処理の全体的な流れを説明する図である。図２に例示するように、デバッグ支援システム１００のデバッグ情報抽象化部３２では、ＵＩ拡張のルールが具象化された拡張JavaScriptのデバッグ情報を、ＵＩ拡張のルールと同じ粒度に抽象化する抽象化処理を行う。
【００２３】
具体的には、デバッグ情報抽象化部３２は、ルールがプログラムに具象化されるときに、設定項目毎にデバッグ情報を出力するためのプログラムを挿入する。これにより、該ルールが既存アプリケーションに適用されたときに設定項目毎に抽象化されたデバッグ情報を得ることができるようにする。なお、抽象化処理の具体的な処理については、後に図６を用いて詳述する。
【００２４】
そして、端末装置４０では、拡張JavaScriptが適用されたＷｅｂページにおいて、デバッグ情報送信部４１ｂが、拡張ルールが既存アプリケーションに適用されたときに設定項目毎に抽象化されたデバッグ情報をデバッグ支援装置１０に送信する。
【００２５】
ここで、図３の例を用いて、抽象化されたデバッグ情報の出力例について説明する。図３は、抽象化されたデバッグ情報の出力例を示す図である。図３に例示するように、デバッグ支援装置１０は、ＵＩ拡張のルールと同じ粒度に抽象化されたデバッグ情報を出力する。これにより、ルールをデバッグするユーザは、ルールと同じ抽象度で、ＵＩ拡張のプログラムのデバッグ情報のみを確認することが可能である。
【００２６】
また、デバッグ支援装置１０は、抽象化されたデバッグ情報と詳細なデバッグ情報とを連携される機能を有していてもよい。ここで、図４の例を用いて、抽象化されたデバッグ情報と詳細なデバッグ情報とを連携される機能を説明する。図４は、抽象化されたデバッグ情報と詳細なデバッグ情報とを連携される機能を説明する図である。図４に例示するように、デバッグ支援装置１０は、抽象化されたデバッグ情報がユーザのクリック操作により選択された場合には、選択されたデバッグ情報に対応する文字列情報を検索キーとして検索し、検索した詳細なデバッグ情報を出力するようにしてもよい。
【００２７】
さらに、デバッグ支援装置１０は、抽象化されたルールが保持するパラメータ等のデータ領域をウォッチできる機能を有していてもよい。ここで、図５の例を用いて、デバッグ情報に関するパラメータをウォッチする機能を説明する。例えば、デバッグ支援装置１０は、抽象化されたルールが保持しているパラメータのデータ領域の名称を入力することで、抽象化されたルールが保持するパラメータの値を参照することができるようにしてもよい。
【００２８】
［デバッグ支援システムの処理手順］
次に、図６を用いて、第１の実施形態に係るデバッグ支援システム１００による抽象化処理の処理手順の例を説明する。図６は、第１の実施形態に係るデバッグ支援システムによる抽象化処理の流れの一例を示すフローチャートである。
【００２９】
図６に例示するように、デバッグ情報抽象化部３２は、予め設定されたＵＩ拡張のルールを取得し（ステップＳ１０１）、該ルールにおける設定項目を一つ取得する（ステップＳ１０２）。そして、デバッグ情報抽象化部３２は、設定項目ごとに、ＵＩ拡張のルールをプログラムに具象化する（ステップＳ１０３）。
【００３０】
そして、デバッグ情報抽象化部３２は、開始・終了を識別する識別子をつけて出力するプログラムを挿入し（ステップＳ１０４）、パラメータを出力するプログラムを挿入し（ステップＳ１０５）、例外情報を識別する識別子をつけて出力するプログラムを挿入する（ステップＳ１０６）。
【００３１】
その後、デバッグ情報抽象化部３２は、ルール中の全ての設定項目について完了したか否かを判定する（ステップＳ１０７）。そして、デバッグ情報抽象化部３２は、ルール中の全ての設定項目について完了していないと判定した場合には（ステップＳ１０７否定）、ステップＳ１０２に戻って、上記の処理を繰り返す。一方、デバッグ情報抽象化部３２は、ルール中の全ての設定項目について完了したと判定した場合には（ステップＳ１０７肯定）、処理を終了する。
【００３２】
ここで、図７の具体例を用いて、抽象化処理について説明する。図７は、第１の実施形態に係るデバッグ支援システムによる抽象化処理を説明するための図である。図７に例示するように、デバッグ情報抽象化部３２は、ルールおよび設定項目を取得し、設定項目ごとに、ＵＩ拡張のルールをプログラムに具象化する。そして、デバッグ情報抽象化部３２は、開始・終了を識別する識別子をつけて出力するプログラムを挿入する。ここで、図７における開始の識別子をつけて出力するプログラムに対応する箇所とは、「debuginfoTransfer(“値設定開始  (ID:  1000)”);」であり、終了の識別子をつけて出力するプログラムに対応する箇所とは、「debuginfoTransfer(“値設定終了  (ID:  1000)”);」である。  
【００３３】
そして、デバッグ情報抽象化部３２は、パラメータを出力するプログラムを挿入する。ここで、図７におけるパラメータを出力するプログラムに対応する箇所は、「debuginfoTransfer(“パラメータ１：設置住所,  パラメータ２：○○市１−２−３”);」である。続いて、デバッグ情報抽象化部３２は、例外情報を識別する識別子をつけて出力するプログラムを挿入する。ここで、図７における例外情報を識別する識別子をつけて出力するプログラムに対応する箇所は、文頭の「try  {」と、
文末の
「}  catch(e)  {
debuginfoTransfer(“値設定失敗  (ID:  1000),  “+e.message);  throw  e;
}」
である。
【００３４】
［第１の実施形態の効果］
第１の実施形態に係るデバッグ支援システム１００では、プロキシサーバ３０のデバッグ情報抽象化部３２は、拡張プログラムにおける所定のルールをプログラムに具象化する際に、該所定のルールに関するデバッグ情報を出力するためのプログラムを具象化したプログラムに追加する。そして、端末装置４０のデバッグ情報送信部４１ｂは、プログラムが追加された所定のルールについて、デバッグ情報をデバッグ支援装置１０に送信する。これにより、デバッグ支援システム１００は、デバッグを効率的に行って、ルール作成の効率向上およびルール作成の品質向上を図ることが可能である。
【００３５】
例えば、従来のデバッグはルールが具象化された状態（例えば、JavaScript（登録商標）などのプログラミング言語）で実施しなければならず、ルール作成時とデバッグ時とでは必要とする知識や情報に大きな乖離がある。ルール作成者は抽象化されたルール作成方法には習熟しているが、JavaScriptに精通していない場合が多く、これらで必要となる知識には大きな乖離があるため現実的にデバッグ作業の実施が困難である。仮にルール作成者がJavaScriptに精通していたとしても、抽象化されたルールに記述された情報と、JavaScriptのデバッガに出力された情報には大きな乖離があるため、JavaScriptのデバッガに出力された情報が抽象化されたルールのどこに対応する情報なのか判別するのが困難である。
【００３６】
また、例えば、従来のデバッグでは既存Ｗｅｂページに最初から存在するプログラム（例えば、JavaScript）と、ＵＩ拡張によって追加したプログラム（例えば、JavaScript）を分離してデバッグができない。つまり、従来のデバッガでは、既存のプログラムと、ＵＩ拡張技術によって追加されたプログラムを、一つのＷｅｂページに存在するプログラムとして分け隔てなく扱うため、デバッガに出力される情報も既存のプログラムの情報とＵＩ拡張によって追加されたプログラムの情報が混在して出力されるため、どの部分がＵＩ拡張のルール修正に必要な情報か分かり難い。
【００３７】
これに対して、第１の実施形態に係るデバッグ支援システム１００では、ＵＩ拡張のプログラムのデバッグ情報のみを外部に流通することで既存プログラムのデバッグ情報と分離する。そして、第１の実施形態に係るデバッグ支援システム１００では、デバッグ情報をプログラムの粒度からＵＩ拡張のルールと同じ粒度に抽象化するので、デバッグを効率的に行うことが可能である。
【００３８】
［第２の実施形態］
第２の実施形態に係るデバッグ支援装置１０では、ルールをデバッグするためにテストページを生成して表示するようにしてもよい。そこで、以下の第２の実施形態では、ルールをデバッグするために、該当ルールの適用先となるＷｅｂページの文書を取得し、テストページを生成してＷｅｂブラウザ上に表示することでルールの整合性をチェックする場合を例にして説明する。なお、第１の実施形態と同様の構成および処理については説明を省略する。
【００３９】
まず、図８を用いて、第２の実施形態のデバッグ支援システム１００Ａの構成例を説明する。図８は、第２の実施形態に係るデバッグ支援システムの構成例を示すブロック図である。デバッグ支援システム１００Ａは、例えば、図８に示すように、デバッグ支援装置１０、Ｗｅｂサーバ２０、プロキシサーバ３０および端末装置４０を有する。
【００４０】
デバッグ支援装置１０は、テストページ生成部１１ａ、ページ比較部１１ｂ、デバッグ情報出力部１１ｃおよびテスト実行部１１ｄを有する。また、デバッグ支援装置１０は、ルールエディタによって生成・編集されたルールファイル１２ａを記憶するルールＤＢ（Data  Base）１２を有する。ルールＤＢ１２に記憶されるルールは、例えば、適用先アプリケーションが特にＷｅｂページの場合には、ルールの適用条件として対象ＷｅｂページのＵＲＩやセレクタ情報が設定されている。
【００４１】
テストページ生成部１１ａは、デバッグ対象がウェブページの場合において、    模擬したテストページに関する情報を生成する。また、テストページ生成部１１ａは、デバッグ対象となるウェブページを模擬したテストアプリケーションを生成する。例えば、テストページ生成部１１ａは、ルールをデバッグするために該当ルールの適用先となるＷｅｂページの文書を取得し、ルールとの整合性をチェックしてルールに紐づけて文書情報をルールＤＢ１２に保存する。
【００４２】
ページ比較部１１ｂは、拡張プログラムにおける所定のルールのセレクタ情報とテストページの文書情報とのアンマッチが存在するか判定し、アンマッチが存在する場合には、警告を表示する。なお、ページ比較部１１ｂにより実行される処理を行うか否かは、設定により任意に変更することが可能である。
【００４３】
デバッグ情報出力部１１ｃは、ＵＩ拡張のルールと同じ粒度に抽象化されたデバッグ情報を出力する。これにより、ルールをデバッグするユーザは、ルールと同じ抽象度で、ＵＩ拡張のプログラムのデバッグ情報のみを確認することが可能である。
【００４４】
テスト実行部１１ｄは、テストページ生成部１１ａによって生成されたテストページに関する情報に拡張プログラムにおける所定のルールを適用する。例えば、テスト実行部１１ｄは、ルールのデバッグのために、デバッグ対象のルールから紐づけて保存された文書情報を読み取り対象ページを模擬したテストページをＷｅｂブラウザ１３上で表示してルールＤＢ１２に保存された拡張機能を適用する。
【００４５】
ここで、図９を用いて、デバッグ支援システム１００Ａにおけるデバッグ支援処理の全体的な流れを説明する。図９は、第２の実施形態に係るデバッグ支援システムにおけるデバッグ支援処理の全体的な流れを説明する図である。なお、図２で説明した処理について説明を省略する。
【００４６】
テストページ生成部１１ａは、例えば、オフライン環境において、デバッグ対象となるＷｅｂページを模擬したテストページ１３ａを生成する。また、ページ比較部１１ｂは、ＵＩ拡張のルールにおけるセレクタ情報とページの文書情報のアンマッチを検出して警告を表示する。なお、テストページ生成部１１ａおよびページ比較部１１ｂの具体的な処理については、後に図１０を用いて詳述する。
【００４７】
そして、テスト実行部１１ｄは、ＵＩ拡張のルールの変換によって本来のルールの適用先を模擬したテストページ１３ａへ適用し、ルールが適用されたテストページ１３ａをＷｅｂブラウザ１３で表示する。なお、テスト実行部１１ｄの具体的な処理については、後に図１３を用いて詳述する。
【００４８】
次に、図１０を用いて、第２の実施形態に係るデバッグ支援システム１００Ａによるテストページ生成処理の処理手順の例を説明する。図１０は、第２の実施形態に係るデバッグ支援システムによるテストページ生成処理の流れの一例を示すフローチャートである。
【００４９】
図１０に例示するように、テストページ生成部１１ａは、対象Ｗｅｂページの文書を取得し（ステップＳ２０１）、該文書中にフレームが存在するか判定する（ステップＳ２０２）。この結果、テストページ生成部１１ａは、文書中にフレームが存在する場合には（ステップＳ２０２肯定）、全てのフレームについて再帰的に文書を取得し（ステップＳ２０３）、ステップＳ２０４の処理に進む。また、テストページ生成部１１ａは、文書中にフレームが存在しない場合には（ステップＳ２０２否定）、そのままステップＳ２０４の処理に進む。
【００５０】
ステップＳ２０４において、テストページ生成部１１ａは、取得した全文書をルールと紐付けて各々固有なファイル名で保存し（ステップＳ２０４）、取得した全文書を探索し、フレームの文書のＵＲＩを示す属性値を前記Ｓ２０４のステップで保存した固有のファイル名に置換する（ステップＳ２０５）。
【００５１】
かかる処理について、図１１の具体例を用いて説明する。図１１は、第２の実施形態に係るデバッグ支援システムによるテストページ生成処理を説明するための図である。図１１に例示するように、テストページ生成部１１ａは、対象Ｗｅｂページの文書を取得するとともに、フレームの文書を取得し、全文書をルールと紐付けて各々固有なファイル名で保存する。そして、テストページ生成部１１ａは、フレームの文書のＵＲＩを示す属性値「“/hoge/index.html”」を固有のファイル名「“固有名2.html”」に置換する。
【００５２】
図１０の説明に戻って、ページ比較部１１ｂは、ルール中にセレクタ情報が登録されているか判定する（ステップＳ２０６）。この結果、ページ比較部１１ｂは、ルール中にセレクタ情報が登録されていないと判定した場合には（ステップＳ２０６否定）、そのまま処理を終了する。また、ページ比較部１１ｂは、ルール中にセレクタ情報が登録されていると判定した場合には（ステップＳ２０６肯定）、ルール中のセレクタ情報を参照し（ステップＳ２０７）、保存した文書からセレクタ情報を探索する（ステップＳ２０８）。
【００５３】
この結果、ページ比較部１１ｂは、セレクタ情報の探索に失敗した場合には、ルールの修正が必要である旨の警告を表示し（ステップＳ２１０）、ステップＳ２１１の処理に進む。また、ページ比較部１１ｂは、セレクタ情報の探索に成功した場合には、そのままステップＳ２１１の処理に進む。
【００５４】
かかる処理について、図１２の具体例を用いて説明する。図１２は、第２の実施形態に係るデバッグ支援システムによるテストページ生成処理を説明するための図である。図１２の例では、入力されたルール「Ｒｕｌｅ１」の条件として、適用先のＵＲＩが「http://domain/index.html」が設定され、セレクタ情報として「id=msgold」が設定されているものとする。
【００５５】
そして、図１２に例示するように、ページ比較部１１ｂは、ルール中のセレクタ情報「id=msgold」を参照し、保存した文書からセレクタ情報「id=msgold」を探索する。図１２の例では、Ｗｅｂページ更新により文書中のセレクタ情報が変化している。この結果、ページ比較部１１ｂは、セレクタ情報の探索に失敗し、ルールの修正が必要である旨の警告を表示する。ここで、警告を表示する方法はどのような方法であってもよく、例えば、テストページ生成部１１ａは、セレクタのリスト上で修正が必要なセレクタ情報のＵＩを赤文字で警告するようにしてもよいし、画面キャプチャ上で修正が必要なセレクタ情報のＵＩを赤枠表示して警告するようにしてもよい。そして、図１２の例では、ユーザが警告を確認し、Ｒｕｌｅ１のセレクタ情報を「id=msgnew」に手動で更新する。なお、セレクタ情報を「id=msgnew」に自動で更新するようにしてもよい。
【００５６】
図１０の説明に戻って、ステップＳ２１１において、ページ比較部１１ｂは、ルール中の全てのセレクタ情報を参照したかを判定する（ステップＳ２１１）。この結果、ページ比較部１１ｂは、ルール中の全てのセレクタ情報を参照していない場合には（ステップＳ２１１否定）、ステップＳ２０７の処理に戻って、上記の処理を繰り返す。また、ページ比較部１１ｂは、ルール中の全てのセレクタ情報を参照した場合には（ステップＳ２１１肯定）、処理を終了する。
【００５７】
なお、ページ比較部１１ｂは、単独で機能することもできる。これにより、ＵＲＬやＩＤなどルールが保持している情報を設定者が変更した場合に、該ルールが正しく動作するかなど、ルール変更時の回帰テスト、複数のルールの連携のテストなどに用いることができる。
【００５８】
次に、図１３を用いて、第２の実施形態に係るデバッグ支援システム１００Ａによるテスト実行処理の処理手順の例を説明する。図１３は、第２の実施形態に係るデバッグ支援システムによるテスト実行処理の流れの一例を示すフローチャートである。
【００５９】
図１３に例示するように、テスト実行部１１ｄは、ルールに紐付けられたテストページの全文書を取得し（ステップＳ３０１）、ルールに設定された条件である適用対象ＷｅｂページのＵＲＩをテストページのＵＲＩに置換する（ステップＳ３０２）。
【００６０】
そして、テスト実行部１１ｄは、Ｗｅｂブラウザ１３を起動して取得した全文書を読み込んで表示し（ステップＳ３０３）、Ｗｅｂブラウザ１３に表示したテストページ１３ａに置換後ルールを適用する（ステップＳ３０４）。
【００６１】
かかる処理について、図１４の具体例を用いて説明する。図１４は、第２の実施形態に係るデバッグ支援システムによるテスト実行処理を説明するための図である。図１４の例では、入力されたルール「Ｒｕｌｅ１」の条件として、適用先のＵＲＩが「http://domain/index.html」が設定され、セレクタ情報として「id=msgold」が設定されているものとする。
【００６２】
図１４に例示するように、テスト実行部１１ｄは、ルールに紐付けられたテストページの全文書を取得し、ルールに設定された条件である適用対象ＷｅｂページのＵＲＩ「http://domain/index.html」をテストページのＵＲＩ「\\ディレクトリ\固有名1.html」に置換し、Ｒｕｌｅ１´とする。そして、テスト実行部１１ｄは、Ｗｅｂブラウザ１３を起動して取得した全文書を読み込んで表示し、Ｗｅｂブラウザ１３に表示したテストページ１３ａに置換後ルールを適用する。
【００６３】
［第２の実施形態の効果］
このように、第２の実施形態に係るデバッグ支援システム１００Ａでは、オフライン環境でのデバッグを行うことができる。例えば、従来のルール作成者の環境では、ＵＩ拡張を適用する既存Ｗｅｂページにネットワーク的にアクセスできない環境でルールを作成することが想定されるが、従来のデバッガではこのような環境での利用が困難であった。つまり、従来のデバッガではＷｅｂページの開発者が該当ページをデバッグすることを想定しているため、デバッグ時点で該当ページにアクセスできることを暗に前提としている。そのため、オフライン環境など該当ページにアクセスできず、該当ページの情報を取得できない環境ではそのままでは利用できない。また、ルール作成者環境ではデバッガ等開発者モードに利用制限が加えられている場合もある。
【００６４】
また、従来のＵＩ拡張では、Ｗｅｂページの開発者ではなく利用者が、該当ページに対して拡張を追加するものであるため、該当ページの情報を取得できない環境でルールを作成することが想定される。そのような場合、従来のデバッガを用いるためには、Ｗｅｂページの開発者から該当ページの情報を取得してオフラインで利用できるように環境を整えるなどの対応が必要であった。
【００６５】
これに対して、第２の実施形態に係るデバッグ支援システム１００Ａでは、オフライン環境でのデバッグを行うことができる。つまり、デバッグ支援システム１００Ａでは、ＵＩ拡張のデバッグに必要な情報（フレーム構造と各フレームの文書）に絞ったページ情報取得ならびにオフライン利用可能にするための文書の属性置換を行い、ルールをテストページに適用可能にするためのルール変換を行う。このため、オフライン環境で模擬したテストページにルールを適用し、ルールが適用されたテストページをＷｅｂブラウザで表示することで、オフライン環境でのデバッグを行うことが可能である。
【００６６】
また、ルールを適用するＷｅｂページは頻繁に更新されるケースがある。このような場合にはルールの修正が必要となるが、このような場合にはＷｅｂページのどこが変更されたのかを調査し、該当変更箇所がルールに影響をあたるか（ルールの変更が必要か）を判断しなければならない。このような作業を、頻繁に更新されるＷｅｂページに対して実施するのは非効率である。しかしながら、第２の実施形態に係るデバッグ支援システム１００Ａでは、ページ比較部１１ｂによりルールの修正が必要な場所を警告表示する、あるいは自動で修正することができる。これにより、Ｗｅｂページの更新によるルールの修正・デバッグ作業を効率的に実施可能である。
【００６７】
（システム構成等）
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００６８】
また、本実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００６９】
（プログラム）
また、上記実施形態において説明したデバッグ支援装置が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、実施形態に係るデバッグ支援装置１０が実行する処理をコンピュータが実行可能な言語で記述したデバッグ支援プログラムを作成することもできる。この場合、コンピュータがデバッグ支援プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかるデバッグ支援プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたデバッグ支援プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。
【００７０】
図１５は、デバッグ支援プログラムを実行するコンピュータを示す図である。図１５に例示するように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有し、これらの各部はバス１０８０によって接続される。
【００７１】
メモリ１０１０は、図１５に例示するように、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、図１５に例示するように、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、図１５に例示するように、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、図１５に例示するように、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、図１５に例示するように、例えばディスプレイ１１３０に接続される。
【００７２】
ここで、図１５に例示するように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、上記の、デバッグ支援プログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０９０に記憶される。
【００７３】
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出し、各種処理手順を実行する。
【００７４】
なお、デバッグ支援プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、デバッグ支援プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００７５】
１０  デバッグ支援装置
１１ａ  テストページ生成部
１１ｂ  ページ比較部
１１ｃ  デバッグ情報出力部
１１ｄ  テスト実行部
１２  ルールＤＢ
１２ａ  ルールファイル
１３  Ｗｅｂブラウザ
１３ａ  テストページ
２０  Ｗｅｂサーバ
３０  プロキシサーバ
３１  拡張機能追加部
３２  デバッグ情報抽象化部
４０  端末装置
４１  Ｗｅｂブラウザ
４１ａ  拡張機能実行部
４１ｂ  デバッグ情報送信部
１００  デバッグ支援システム
【図１】
2020123268.tif 000003
【図２】
2020123268.tif 000004
【図３】
2020123268.tif 000005
【図４】
2020123268.tif 000006
【図５】
2020123268.tif 000007
【図６】
2020123268.tif 000008
【図７】
2020123268.tif 000009
【図８】
2020123268.tif 000010
【図９】
2020123268.tif 000011
【図１０】
2020123268.tif 000012
【図１１】
2020123268.tif 000013
【図１２】
2020123268.tif 000014
【図１３】
2020123268.tif 000015
【図１４】
2020123268.tif 000016
【図１５】
2020123268.tif 000017