(57)【要約】【課題】操作の内容を確実に記録して、操作記録の再現時には確実に検証を行う。【解決手段】プロセッサとメモリを有する計算機であって、当該計算機で稼働するプログラムが出力する画面に対する操作をフックして、当該操作が特定の操作の場合には、当該操作の情報をログとして記憶するログ収集部と、前記プログラムが稼働しているときに、前記ログを読み込んで前記画面に対する操作を再現するログ再現部と、を有し、前記ログ収集部は、前記受け付けた操作が特定の操作の場合には、前記特定の操作に対応する画面の第１のキャプチャ画像を取得し、前記第１のキャプチャ画像に含まれる第１の文字列を抽出して前記ログに格納する。【選択図】図１
2019106093.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとメモリを有する計算機であって、
当該計算機で稼働するプログラムが出力する画面に対する操作をフックして、当該操作が特定の操作の場合には、当該操作の情報をログとして記憶するログ収集部と、
前記プログラムが稼働しているときに、前記ログを読み込んで前記画面に対する操作を再現するログ再現部と、を有し、
前記ログ収集部は、
前記特定の操作に対応する画面の第１のキャプチャ画像を取得し、前記第１のキャプチャ画像に含まれる第１の文字列を抽出して前記ログに格納することを特徴とする計算機。
【請求項２】
請求項１に記載の計算機であって、
前記ログ再現部は、
読み込んだログが特定の操作の場合には、前記特定の操作に対応する画面の第２のキャプチャ画像を取得し、前記第２のキャプチャ画像に含まれる第２の文字列を抽出し、前記第１のキャプチャ画像と第２のキャプチャ画像を比較し、かつ、前記第１の文字列と第２の文字列を比較して、操作が正常に再現されたか否かを判定することを特徴とする計算機。
【請求項３】
請求項１に記載の計算機であって、
前記ログ再現部は、
再現を実行するログの指定と、再現を実行する再現条件を受け付けて、当該再現条件に応じて前記指定されたログの再現を行うことを特徴とする計算機。
【請求項４】
請求項３に記載の計算機であって、
前記再現条件は、
再現を繰り返す繰返し回数であることを特徴とする計算機。
【請求項５】
請求項３に記載の計算機であって、
前記再現条件は、
再現中に一時停止を行うことを特徴とする計算機。
【請求項６】
請求項４に記載の計算機であって、
前記ログ再現部は、
前記ログの操作内容を編集して、ログの再現のパターンを変更することを特徴とする計算機。
【請求項７】
請求項１に記載の計算機であって、
前記ログ再現部は、
前記第１の文字列または第１のキャプチャ画像と比較する検証条件を受け付けて、受け付けた検証条件に基づいて、前記ログが正常に再現されたか否かを判定することを特徴とする計算機。
【請求項８】
プロセッサとメモリを有する計算機がログを再現するログの再現方法であって、
前記計算機は、当該計算機で稼働するプログラムが出力する画面に対する操作をフックする第１のステップと、
前記計算機は、前記フックした操作が特定の操作の場合には、当該操作の情報をログとして記憶する第２のステップと、
前記計算機は、前記プログラムが稼働しているときに、前記ログを読み込んで前記画面に対する操作を再現する第３のステップと、を含み、
前記第２のステップは、
前記特定の操作に対応する画面の第１のキャプチャ画像を取得し、前記第１のキャプチャ画像に含まれる第１の文字列を抽出して前記ログに格納することを特徴とするログの再現方法。
【請求項９】
請求項８に記載のログの再現方法であって、
前記第３のステップは、
読み込んだログが特定の操作の場合には、前記特定の操作に対応する画面の第２のキャプチャ画像を取得し、前記第２のキャプチャ画像に含まれる第２の文字列を抽出し、前記第１のキャプチャ画像と第２のキャプチャ画像を比較し、かつ、前記第１の文字列と第２の文字列を比較して、操作が正常に再現されたか否かを判定することを特徴とするログの再現方法。
【請求項１０】
請求項８に記載のログの再現方法であって、
前記第３のステップは、
再現を実行するログの指定と、再現を実行する再現条件を受け付けて、当該再現条件に応じて前記指定されたログの再現を行うことを特徴とするログの再現方法。
【請求項１１】
請求項１０に記載のログの再現方法であって、
前記再現条件は、
再現を繰り返す繰返し回数であることを特徴とするログの再現方法。
【請求項１２】
請求項１０に記載のログの再現方法であって、
前記再現条件は、
再現中に一時停止を行うことを特徴とするログの再現方法。
【請求項１３】
請求項１１に記載のログの再現方法であって、
前記第３のステップは、
前記ログの操作内容を編集して、ログの再現のパターンを変更することを特徴とするログの再現方法。
【請求項１４】
請求項８に記載のログの再現方法であって、
前記第３のステップは、
前記第１の文字列または第１のキャプチャ画像と比較する検証条件を受け付けて、受け付けた検証条件に基づいて、前記ログが正常に再現されたか否かを判定することを特徴とするログの再現方法。
【請求項１５】
プロセッサとメモリを有する計算機がログを再現させるためのプログラムを格納した記憶媒体であって、
当該計算機で稼働するプログラムが出力する画面に対する操作をフックする第１のステップと、
前記フックした操作が特定の操作の場合には、当該操作の情報をログとして記憶する第２のステップと、
前記プログラムが稼働しているときに、前記ログを読み込んで前記画面に対する操作を再現する第３のステップと、を含み、
前記第２のステップは、
前記特定の操作に対応する画面の第１のキャプチャ画像を取得し、前記第１のキャプチャ画像に含まれる第１の文字列を抽出して前記ログに格納させる
ことを前記計算機に実行させるためのプログラムを格納した非一時的な計算機読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機の操作を記録して、記録された情報を再現する技術に関する。
【背景技術】
【０００２】
計算機では、マウス及びキーボードの入力装置と表示装置の画像を併用したＧＵＩ（Graphical User Interface）を利用した操作が広く普及している。また、ユーザが行ったＧＵＩにおける操作を記録して、当該記録を再現することで、単純作業を自動化する技術も知られている（例えば、特許文献１、２）。
【０００３】
特許文献１では、操作記録を基にコンピュータプログラムを自動実行する際に、コンピュータプログラムを実行する環境に依存して、自動実行の結果と、操作記録の内容を検証する技術が開示される。
【０００４】
特許文献１では、操作記録を生成する際には画面のキャプチャ指令を受け付けた時を契機として、キャプチャ画像を記録する。そして、操作記録の再現時には、キャプチャ指令が発生した時点で、再現中の画面をキャプチャし、操作記録のキャプチャ画像と比較して異常の有無を判定していた。
【０００５】
また、特許文献２では、操作記録ファイルにキャプチャの採取と保存の指令を示すイベントを登録しておき、操作記録の再現時にはイベントを契機として再現中の画面の内容をキャプチャし、保存する。そして、ユーザは、自動実行でＧＵＩ操作を再生させた後に、キャプチャ画像を確認することで表示内容を確認できると共に、ＧＵＩ操作が正常に再生されたか否かを判断することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−１４３０４４号公報
【特許文献２】特開２００７−２５９２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
前記従来例では、操作の内容をキャプチャ指令やイベントとして操作記録（ログ）に予め設定しておくため、キャプチャ指令やイベントのない期間の操作については、操作が正常に再現された否かを判定できない、という問題があった。
【０００８】
そこで本発明は、上記問題点に鑑みてなされたもので、操作の内容を確実に記録して、操作記録の再現時には確実に検証を行うことを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、プロセッサとメモリを有する計算機であって、当該計算機で稼働するプログラムが出力する画面に対する操作をフックして、当該操作が特定の操作の場合には、当該操作の情報をログとして記憶するログ収集部と、前記プログラムが稼働しているときに、前記ログを読み込んで前記画面に対する操作を再現するログ再現部と、を有し、前記ログ収集部は、前記受け付けた操作が特定の操作の場合には、前記特定の操作に対応する画面の第１のキャプチャ画像を取得し、前記第１のキャプチャ画像に含まれる第１の文字列を抽出して前記ログに格納する。
【発明の効果】
【００１０】
したがって、本発明は、ログの収集時に特定の操作（マウス操作またはキーボード操作）を契機としてキャプチャ画像と文字列を取得し、ログの再現時にマウス操作またはキーボード操作を契機としてキャプチャ画像と文字列を取得して比較する。これにより、計算機に対する操作が正常に再現されたことを判定することが可能となって、操作を検証する精度を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施例を示し、操作の記録と操作の再現を行う計算機の一例を示すブロック図である。
【図２】本発明の実施例を示し、計算機で行われる処理の一例を示すフローチャートである。
【図３】本発明の実施例を示し、ログテーブルの一例を示す図である。
【図４】本発明の実施例を示し、ログの収集処理の一例を示すフローチャートである。
【図５】本発明の実施例を示し、ログ表示画面の一例を示す図である。
【図６】本発明の実施例を示し、再現条件と検証条件を設定するログ表示画面の一例を示す図である。
【図７】本発明の実施例を示し、ログの再現処理の一例を示すフローチャートである。
【図８】本発明の実施例を示し、検証条件の一例を示す図である。
【図９】本発明の実施例を示し、確認ダイアログの一例を示す図である。
【図１０】本発明の実施例を示し、停止を含む再現条件を設定する画面の一例を示す図である。
【図１１】本発明の実施例を示し、ログの再現時に停止を含む場合の処理の一例を示すフローチャートである。
【図１２】本発明の実施例を示し、確認ダイアログの一例を示す図である。
【図１３】本発明の実施例を示し、ログの再現時に繰り返しを含む場合の処理の一例を示すフローチャートである。
【図１４】本発明の実施例を示し、ログの再現時に繰り返しを含む場合の画面の遷移を示す図である。
【図１５】本発明の実施例を示し、ログの再現時に値を変化させる繰り返しを含む場合の画面の遷移を示す図である。
【図１６】本発明の実施例を示し、ログの再現時に入力を変化させる繰り返しを含む場合の画面の遷移を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態を添付図面に基づいて説明する。
【００１３】
図１は、本発明の実施例を示し、計算機に対する操作の記録をログとして記録して、所望のタイミングでログの再現を行う計算機の一例を示すブロック図である。
【００１４】
計算機１は、ＣＰＵ１１と、メモリ１２と、補助記憶装置１３と、通信インタフェース１４と、キーボードやマウスを含む入力デバイス２１に接続された入力インタフェース１５と、ディスプレイ等の表示装置２０に接続された出力インタフェース１６を含む。
【００１５】
メモリ１２には、ログ収集部１１０と、画像キャプチャ部１１１と、文字列抽出部１１２と、ログ再現部１１３と、アプリケーション１１４がプログラムとしてロードされ、ＣＰＵ１１によって実行される。補助記憶装置１３は、収集されたログをログテーブル１２０に格納する。なお、通信インタフェース１４は図示しないネットワークに接続される。
【００１６】
ログ収集部１１０は、計算機１の利用者１００がアプリケーション１１４を操作するときのログを取得してログテーブル１２０へ記録する。画像キャプチャ部１１１は、ログを取得する際に計算機１が表示装置２０へ出力する画像を取得して補助記憶装置１３へ格納する。ログ収集部１１０は、所定の契機で画像キャプチャ部１１１にキャプチャ画像を取得する指令を送出する。キャプチャ画像は、特定の時点に表示されている画面の内容をスナップショットとして記録した情報（例えば、ビットマップ等）である。
【００１７】
文字列抽出部１１２は、ログ収集部１１０が出力した画像から文字列を抽出して、補助記憶装置１３へ格納する。ログ再現部１１３は、補助記憶装置１３に格納されたログテーブル１２０のログから、利用者１００が操作したアプリケーション１１４またはＯＳ（図示省略）で、操作を再現する。
【００１８】
ＣＰＵ１１は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、ＣＰＵ１１は、ログ収集プログラムに従って処理することログ収集部１１０として機能する。他のプログラムについても同様である。さらに、ＣＰＵ１１は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
【００１９】
図２は、計算機１で行われるログの収集処理の一例を示すフローチャートである。この処理は、計算機１の利用者１００が、所望のタイミングで開始することができる。なお、この処理を開始する前に、ログを取得するアプリケーション１１４が起動していることが前提である。また、ＯＳに対する利用者１００の操作をログの対象としても良い。
【００２０】
まず、ステップＳ１では、計算機１の利用者１００がログ収集部１１０を起動して、アプリケーション１１４のログの収集を開始させる。
【００２１】
ステップＳ２では、ログ収集部１１０が、後述するように、アプリケーション１１４に対する利用者１００の操作のログ（操作情報）を取得して、補助記憶装置１３のログテーブル１２０に取得したログを格納する。
【００２２】
ステップＳ３では、計算機１の利用者１００が所定の操作によって、ログ収集部１１０を終了させる。
【００２３】
ステップＳ４では、ログ再現部１１３がログテーブル１２０を読み込んで、取得したログからログ表示画面を生成して表示装置２０へ出力する。ステップＳ５では、利用者１００がログ表示画面でログの再現条件または検証条件を設定する。ログの再現条件は、例えば、再現するログの指定や、繰り返して再現を実行する場合の繰り返し数や、再現する入力操作の変更などを含む。一方、ログの検証条件は、文字列の比較や値の比較に関する情報を含む。
【００２４】
ステップＳ６では、ログ再現部１１３が、設定された再現条件でログテーブル１２０のログの内容を実行し、利用者１００がアプリケーション１１４に対して行った計算機１の操作を再現する。また、ログ再現部１１３は、ログ表示画面で設定された検証条件に基づいて、再現中のログの抽出文字列２１７を検証する。ステップＳ７では、ログ再現部１１３は、利用者１００によって指定されたログの範囲について再現が完了する。
【００２５】
ステップＳ８では、ログ再現部１１３が、再度再現を実行するか否かを利用者１００に問い合わせる。再び再現の実行が要求された場合には、ログ再現部１１３は、ログ表示画面を出力してからステップＳ５に戻って上記処理を繰り返す。再現を終了する場合は、ステップＳ９に進む。
【００２６】
ステップＳ９では、ログ収集部１１０が、操作のログを収集するか否かを問い合わせる。操作のログを収集する場合には、ステップＳ１に戻って上記処理を繰り返す。そうでない場合には、処理を終了する。
【００２７】
以上の処理によって、ログ収集部１１０が、計算機１の利用者１００が操作したアプリケーション１１４に対する操作内容をログとしてログテーブル１２０に蓄積し、ログの収集が完了するとログ再現部１１３がログテーブル１２０からログを読み込んで、操作の再現を実行する。ログ再現部１１３が、ログの再現を実行する際には、再現するログの範囲の指定や、繰り返して再現を実行する場合の繰り返し数や、再現する操作の変更などを実現することができる。
【００２８】
図３は、ログ収集部１１０が書き込むログテーブル１２０の一例を示す図である。ログテーブル１２０は、時間１２１と、対象アプリ１２２と、操作１２３と、対象オブジェクト１２４と、アプリ位置１２５と、アプリサイズ１２６と、キャプチャ画像パス１２７と、拡大画像パス１２８と、抽出文字列１２９をひとつのエントリに含む。
【００２９】
時間１２１には、ログが取得された日時が格納される。対象アプリ１２２には、ログが取得されたときにアクティブなアプリケーション１１４の名称（または識別子）が格納される。
【００３０】
操作１２３には、入力デバイス２１から特定の操作（マウス操作またはキーボード操作）を受け付けたときに取得した操作情報が格納される。入力デバイス２１の操作がマウス操作の場合には、表示装置２０のスクリーン上の座標（Ｘ、Ｙ）が格納される。また、入力デバイス２１の操作がキーボード操作の場合には、受け付けた文字コードまたは文字が格納される。対象オブジェクト１２４には、入力フィールドなどの操作対象の要素の名称が格納される。
【００３１】
アプリ位置１２５には、アクティブなアプリケーション１１４の基準位置（例えば、左上の基点）に対応するスクリーン上の座標（Ｘ、Ｙ）が格納される。アプリサイズ１２６には、アクティブなアプリケーション１１４のスクリーン上のウィンドウサイズ（幅：Ｗ、高さ：Ｈ）が格納される。
【００３２】
キャプチャ画像パス１２７には、キャプチャ画像が格納された補助記憶装置１３のパスが格納される。拡大画像パス１２８には、拡大キャプチャ画像を格納した補助記憶装置１３のパスが格納される。抽出文字列１２９には、キャプチャ画像または拡大キャプチャ画像から抽出した文字列が格納される。なお、キャプチャ画像や拡大キャプチャ画像をログテーブル１２０に格納するようにしてもよい。
【００３３】
図４は、ログ収集部１１０で行われるログ収集処理の一例を示すフローチャートである。この処理は、図２のステップＳ２で行われる処理である。
【００３４】
ログ収集部１１０は、利用者１００が入力デバイス２１を操作するのを待ち受ける（Ｓ１）。マウスやキーボードなどの入力デバイス２１が操作されると、ステップＳ１１へ進む。
【００３５】
ステップＳ１１では、ログ収集部１１０が計算機１に対する入力デバイス２１の操作をフックし、当該操作が特定の操作（マウス操作またはキーボード操作）のときには、操作情報をログとして取得する。なお、入力デバイス２１の操作は、アプリケーション１１４やＯＳが表示装置２０に出力する画面に対する操作である。入力デバイス２１の操作をフックする技術については、公知または周知の技術を用いれば良いので、詳述はしない。
【００３６】
マウス操作がマウスクリック（特定の操作）の場合、ログ収集部１１０は、クリック座標（Ｘ，Ｙ）を取得し、日時と、アクティブになっているアプリケーション名等の情報をログとしてログテーブル１２０に追加する。なお、クリック座標（Ｘ，Ｙ）は、表示装置２０のスクリーンの絶対座標とする。
【００３７】
ログ収集部１１０は、日時をログテーブル１２０の時間１２１へ格納し、アクティブなアプリケーション名を対象アプリ１２２へ格納し、クリック位置を操作１２３に格納し、操作対象の要素の名称を対象オブジェクト１２４へ格納し、アプリケーション１１４の基準位置をアプリ位置１２５へ格納し、アプリケーション１１４のウィンドウサイズをアプリサイズ１２６に格納する。
【００３８】
ステップＳ１２では、画像キャプチャ部１１１が、アクティブになっているアプリケーション１１４の画像をキャプチャして、キャプチャ画像を補助記憶装置１３に格納し、格納先をログテーブル１２０のキャプチャ画像パス１２７に書き込む。キャプチャ画像は、表示装置２０のスクリーン全体の画像でも良いし、アプリケーションのアクティブウィンドウの画像でもよい。
【００３９】
ステップＳ１３では、文字列抽出部１１２が、ステップＳ１２で取得したキャプチャ画像に含まれる文字列を抽出して、ログテーブル１２０の抽出文字列１２９に書き込む。なお、キャプチャ画像からの文字列の抽出は、周知又は公知の文字認識技術を適用すれば良い。
【００４０】
ステップＳ１４では、画像キャプチャ部１１１が、クリック座標（Ｘ，Ｙ）の周辺について所定のサイズでキャプチャし、拡大キャプチャ画像として補助記憶装置１３に格納し、格納先をログテーブル１２０の拡大画像パス１２８に書き込む。拡大キャプチャ画像は、例えば、クリック座標を含む予め設定した長方形の画像であり、クリック座標の周辺の５０×１０ドットなどの領域の画像である。
【００４１】
ステップＳ１５では、文字列抽出部１１２が、ステップＳ１４で取得した拡大キャプチャ画像に含まれる文字列を抽出して、ログテーブル１２０の抽出文字列１２９に追加する。
【００４２】
ステップＳ１６では、ログ収集部１１０がキーボード操作（特定の操作）をフックして操作情報を取得する。ログ収集部１１０は、押し下げられたキーの値と、日時と、アクティブになっているアプリケーション名等の情報含めてログテーブル１２０に追加する。
【００４３】
すなわち、ログ収集部１１０は、日時をログテーブル１２０の時間１２１へ格納し、アクティブなアプリケーション名を対象アプリ１２２へ格納し、キーの値を操作１２３に格納し、操作対象の要素の名称を対象オブジェクト１２４へ格納し、アプリケーション１１４の基準位置をアプリ位置１２５へ格納し、アプリケーション１１４のウィンドウサイズをアプリサイズ１２６に格納する。
【００４４】
ステップＳ１７では、画像キャプチャ部１１１が、キーボード操作の際にアクティブになっているアプリケーションの画像をキャプチャして、キャプチャ画像を補助記憶装置１３に格納し、格納先をログテーブル１２０のキャプチャ画像パス１２７に書き込む。キャプチャ画像は、上記マウス操作と同様に取得される。
【００４５】
ステップＳ１８では、文字列抽出部１１２が、キーボード操作の場合にステップＳ１７で取得したキャプチャ画像に含まれる文字列を抽出して、ログテーブル１２０の抽出文字列１２９に書き込む。
【００４６】
ステップＳ１９では、画像キャプチャ部１１１が、キーボード操作の対象オブジェクト１２４の周辺について所定のサイズでキャプチャし、拡大キャプチャ画像として補助記憶装置１３に格納し、格納先をログテーブル１２０の拡大画像パス１２８に書き込む。拡大キャプチャ画像は、上記マウス操作の拡大キャプチャ画像と同様である。
【００４７】
ステップＳ２０では、文字列抽出部１１２が、キーボード操作の場合に、ステップＳ１９で取得した拡大キャプチャ画像に含まれる文字列を抽出して、ログテーブル１２０の抽出文字列１２９に追加する。
【００４８】
次に、ステップＳ２１では、ログ収集部１１０が、ログの収集を終了するか否かを判定する。所定のキーボード操作または所定のマウス操作が行われていなければ、ログの収集を続行するためステップＳ１０に戻って上記処理を繰り返す。一方、所定のキーボード操作または所定のマウス操作が行われた場合には、ログの収集処理を終了する。
【００４９】
上記処理によって、マウス操作（マウスクリック）またはキーボード操作（キーの押し下げ）を契機として、アクティブなアプリケーション１１４のキャプチャ画像２１５と拡大画像２１６が取得され、各キャプチャ画像に含まれる文字列が抽出文字列２１７に格納される。
【００５０】
本実施例では、マウス操作やキーボード操作が発生すると、自動的に操作の内容がログとしてログテーブル１２０に蓄積される。
【００５１】
図５は、ログ表示画面２１０の一例を示す図である。この画面は、図２のステップＳ４で表示装置２０に出力される。
【００５２】
ログ表示画面２１０は、再現２１１と、時間２１２と、対象アプリ２１３と、操作２１４と、キャプチャ画像２１５と、拡大画像２１６と、抽出文字列２１７と、条件２１８と、停止２１９をひとつのエントリに含む。
【００５３】
再現２１１には、再現の条件設定時に、再現するログを選択するためのチェックボックスが表示される。時間２１２には、ログが取得された時刻が格納され、ログテーブル１２０の時間１２１に対応する。
【００５４】
対象アプリ２１３には、ログ取得時のアクティブなアプリケーション１１４の名称が表示され、ログテーブル１２０の対象アプリ１２２に対応する。操作２１４には、マウスクリックの座標またはキーボード操作のキーの値が表示され、ログテーブル１２０の操作１２３に対応する。
【００５５】
キャプチャ画像２１５には、アクティブなアプリケーション１１４を含むキャプチャ画像が縮小表示される。キャプチャ画像２１５は、ログテーブル１２０のキャプチャ画像パス１２７でオブジェクトに関連付けられる。
【００５６】
拡大画像２１６には、マウス操作またはキーボード操作の対象となるアプリケーション１１４の拡大キャプチャ画像が縮小表示される。拡大画像２１６は、ログテーブル１２０の拡大画像パス１２８でオブジェクトに関連付けられる。
【００５７】
抽出文字列２１７は、キャプチャ画像または拡大キャプチャ画像に含まれる文字列が表示される。抽出文字列２１７は、ログテーブル１２０の抽出文字列１２９に対応する。条件２１８には、後述するように、再現するログを検証するための条件を設定することができる。停止２１９には、再現する際に、一時停止させるログを指定することができる。
【００５８】
なお、再現２１１と、条件２１８と、停止２１９のフィールドは、ログテーブル１２０に追加しても良いし、時間２１２に対応付けてメモリ１２に格納しても良い。
【００５９】
図６は、再現条件と検証条件を設定する際のログ表示画面２１０の一例を示す図である。ログ表示画面２１０は、図２のステップＳ５で表示装置２０に出力される。再現条件を設定する際には、利用者１００が入力デバイス２１を操作して、ログ表示画面２１０の再現２１１のチェックボックスにチェックを入れて、操作の再現を実行する行（ログ）を選択する。本実施例では、図中Ｌ２〜Ｌ６の行が、再現の対象として選択された例を示す。
【００６０】
また、利用者１００は入力デバイス２１を操作して、ログ表示画面２１０の条件２１８に検証条件を設定することができる。図示の例では、行Ｌ２の抽出文字列２１７が「アプリ１」に一致することが再現時の検証条件として設定され、行Ｌ６の抽出文字列２１７の値が「１１１±１０％」であることが検証条件として設定される。
【００６１】
なお、本実施例では、利用者１００の操作によって、各行毎に再現を行うか否かの条件や、再現の一時停止などの条件をログの再現条件として設定され、再現時の文字列の比較や値の比較を行う条件を検証条件として設定することができる。
【００６２】
ログ表示画面２１０は、再現の繰り返し回数を指定する回数繰り返し３０２と、ログの再現を開始する実行ボタン３０１を含む。利用者１００は入力デバイス２１で実行ボタン３０１をクリックすることで、再現処理を開始させることができる。
【００６３】
図７は、ログの再現処理の一例を示すフローチャートである。この処理は、図２のステップＳ６で行われる処理である。
【００６４】
ステップＳ３１では、ログ再現部１１３が、ログ表示画面２１０で設定された再現２１１のチェックボックスがチェックされた再現対象行の情報と、条件２１８に設定された検証条件を取得する。
【００６５】
ステップＳ３２では、ログ再現部１１３が、再現対象行に対応するログテーブル１２０を参照して、各フィールドの値を変数に設定する。すなわち、ログ再現部１１３は、ログテーブル１２０の対象アプリ１２２の内容を対象アプリＡｐに設定し、操作１２３の内容を操作Ｏｐに設定し、対象オブジェクト１２４の内容を対象オブジェクトＯｂに設定し、アプリ位置１２５の内容をアプリ位置Ｐｓに設定し、アプリサイズ１２６の内容をアプリサイズＳｚに設定し、キャプチャ画像パス１２７の内容をキャプチャ画像パスＰ０に設定し、拡大画像パス１２８の内容を拡大画像パスＰ１に設定し、抽出文字列２１７の内容を抽出文字列Ｗｄに設定する。
【００６６】
次にステップＳ３３では、ログ再現部１１３が、キャプチャ画像パスＰ０に基づいて補助記憶装置１３からキャプチャ画像を取得し、拡大画像パスＰ１に基づいて補助記憶装置１３から拡大キャプチャ画像を取得してメモリ１２に保持する。
【００６７】
ステップＳ３４では、ログ再現部１１３が、現在計算機１で実行中のプロセスから対象アプリＡｐを検索する。そして、実行プロセス中に対象アプリＡｐが存在する場合、当該対象アプリＡｐを最前面（アクティブ）に移動して、アプリケーション１１４の位置をアプリ位置Ｐｓに設定し、ウィンドウサイズをアプリサイズＳｚに設定する。
【００６８】
一方、現在計算機１で実行中のプロセスに対象アプリＡｐが存在しない場合には、ログの再現が不能であるので、再現処理を終了する。
【００６９】
ステップＳ３５では、ログ再現部１１３が、操作Ｏｐの内容が座標の場合は、マウス操作であるので、取得した座標の位置までマウスポインタを移動する。一方、ログ再現部１１３は、操作Ｏｐの内容がキーボード操作の場合は、対象オブジェクトＯｂを入力位置に設定する。
【００７０】
ステップＳ３６では、画像キャプチャ部１１１が、アクティブなアプリケーション１１４の画像をキャプチャしてキャプチャ画像Ｃ０とする。次に、画像キャプチャ部１１１はキャプチャ画像Ｃ０を文字列抽出部１１２に送信する。文字列抽出部１１２は、ステップＳ３７で、受信したキャプチャ画像Ｃ０から文字列Ｗ０を抽出する。
【００７１】
次に、ステップＳ３８では、画像キャプチャ部１１１が、マウスポインタの座標または対象オブジェクトＯｂの周辺の画像を所定のサイズでキャプチャしてキャプチャ画像Ｃ１とする。
【００７２】
次に、画像キャプチャ部１１１はキャプチャ画像Ｃ１を文字列抽出部１１２に送信する。文字列抽出部１１２は、ステップＳ３９で、受信したキャプチャ画像Ｃ１から文字列Ｗ１を抽出する。
【００７３】
ステップＳ４０では、ログ再現部１１３が、次のオブジェクトを比較する。
・キャプチャ画像パスＰ０のキャプチャ画像と、再現処理で取得したキャプチャ画像Ｃ０
・拡大画像パスＰ１の拡大キャプチャ画像と、再現処理で取得したキャプチャ画像Ｃ１
・抽出文字列Ｗｄと再現処理で取得した文字列Ｗ０、Ｗ１
【００７４】
ログ再現部１１３は、上記３種類のオブジェクトの比較結果が一致、または部分一致の場合には、操作Ｏｐに対応するマウス操作またはキーボード操作を実行してから、ステップＳ４１に進む。すなわち、ログ再現部１１３は、キャプチャ画像と文字列の検証条件を満足し、ログの再現が正常に行われたと判定して、ログの入力を再現する。
【００７５】
一方、ログ再現部１１３は、上記３種類のオブジェクトの比較結果が全て一致しない場合には、ログの再現が正常に行われなかったと判定して、図９に示すダイアログＤ１を表示装置２０に出力する。ダイアログＤ１を出力した後、利用者１００が「終了」を選択した場合、ログ再現部１１３は再現処理を終了する。利用者１００が「続行」を選択した場合、ログ再現部１１３はステップＳ４１に進む。
【００７６】
ステップＳ４１では、ログ再現部１１３が、全ての再現対象行について処理を実行したか否かを判定し、完了していなければステップＳ３２へ戻って、次の行について上記処理を繰り返し、そうでなければ処理を終了する。
【００７７】
上記処理によって、ログテーブル１２０から再現２１１のチェックボックスで選択した行について選択することができ、ログ再現部１１３が、操作Ｏｐを再現する直前に取得したキャプチャ画像Ｃ０と拡大したキャプチャ画像Ｃ１を取得し、これらのキャプチャ画像と、ログ収集部１１０が取得したキャプチャ画像（Ｐ０）と拡大キャプチャ画像（Ｐ１）とを比較し、さらに、ログ収集部１１０が取得した文字列Ｗｄと、ログ再現部１１３が取得した文字列Ｗ０、Ｗ１を比較することで、検証の精度を向上させることができる。
【００７８】
このように、ログ収集部１１０は、マウス操作やキーボード操作をトリガとして、キャプチャ画像と文字列の取得を実施し、ログ再現部１１３も、ログテーブル１２０の内容に従ってマウス操作やキーボード操作を再現し、操作Ｏｐを実行する前にキャプチャ画像と文字列の取得を行う。
【００７９】
そして、ログ収集部１１０が取得したキャプチャ画像と文字列と、ログ再現部１１３が取得したキャプチャ画像と文字列を比較することで、操作の内容を自動的かつ確実に記録して、ログの再現時には確実に検証を行うことが可能となる。
【００８０】
また、ログの再現時には図１０に示すログ表示画面２１０において、条件２１８に検証の条件を設定することができるので、エラーや問題点の検出を容易に実現することができる。検証の条件としては、図８に示すような内容を設定することができる。
【００８１】
検証の条件は、図８で示すように、条件指定方法４０１と意味４０２で次のように定義される。条件指定方法４０１＝「一致」の場合、ログの収集処理で取得したキャプチャ画像２１５と、ログの再現処理で収集したキャプチャ画像Ｃ０が一致していれば、ログ再現部１１３は検証条件を満足したと判定する。一方、キャプチャ画像２１５と、キャプチャ画像Ｃ０が一致しなければ、ログ再現部１１３は図９に示したダイアログＤ１を出力して、検証条件を満足していないことを通知する。
【００８２】
条件指定方法４０１＝「文字列Ａ、一致」の場合、ログの収集処理で取得した抽出文字列１２９と、「文字列Ａ」が一致していれば、ログ再現部１１３は検証条件を満足したと判定する。一方、抽出文字列１２９と、「文字列Ａ」が一致しなければ、ログ再現部１１３は図９に示したダイアログＤ１を出力して、検証条件を満足していないことを通知する。
【００８３】
なお、図７の検証条件は、上記キャプチャ画像の「一致」と、「文字列Ａ、一致」をデフォルトの検証条件とした例を示している。
【００８４】
条件指定方法４０１＝「文字列Ｎ０、文字列Ｎ１、………、一致」の場合、ログの収集処理で取得した抽出文字列１２９と、「文字列Ｎ０、文字列Ｎ１、…」の複数の文字列のうちいずれかが一致していれば、ログ再現部１１３は検証条件を満足したと判定する。一方、抽出文字列１２９が「文字列Ｎ０、文字列Ｎ１、…」のいずれかと一致しなければ、ログ再現部１１３は図９に示したダイアログＤ１を出力して、検証条件を満足していないことを通知する。
【００８５】
条件指定方法４０１＝「数値Ｂ±１０」の場合、ログの収集処理で取得した抽出文字列１２９を数値に変換した値が、「数値Ｂ±１０」％の範囲にあれば、ログ再現部１１３は検証条件を満足したと判定する。一方、抽出文字列１２９を数値に変換した値が、「Ｂ±１０」％の範囲を超えていれば、ログ再現部１１３は図９に示したダイアログＤ１を出力して、検証条件を満足していないことを通知する。
【００８６】
条件指定方法４０１＝「数値Ｃ以上数値Ｄ以下」の場合、ログの収集処理で取得した抽出文字列１２９を数値に変換した値が、数値Ｃ以上かつ数値Ｄ以下であれば、ログ再現部１１３は検証条件を満足したと判定する。一方、抽出文字列１２９を数値に変換した値が、数値Ｃを超えるか、数値Ｄ未満の場合には、ログ再現部１１３は図９に示したダイアログＤ１を出力して、検証条件を満足していないことを通知する。
【００８７】
条件指定方法４０１＝「日付Ｅ以上日付Ｆ以下」の場合、ログの収集処理で取得した抽出文字列１２９を日付に変換した値が、日付Ｅ以上かつ日付Ｆ以下であれば、ログ再現部１１３は検証条件を満足したと判定する。一方、抽出文字列１２９を数値に変換した値が、日付Ｅを超えるか、日付Ｆ未満の場合には、ログ再現部１１３は図９に示したダイアログＤ１を出力して、検証条件を満足していないことを通知する。
【００８８】
＜停止処理＞
図１０は、本実施例の変形例１を示し、停止を含む再現条件と検証条件を設定するログ表示画面２１０の一例を示す図である。
【００８９】
ログ表示画面２１０は、図２のステップＳ５で表示装置２０に出力される。再現条件を設定する際には、前記利用者１００が入力デバイス２１を操作して、ログ表示画面２１０の再現２１１のチェックボックスにチェックを入れて、操作の再現を実行する行を選択する。図示の例では図中Ｌ１〜Ｌ４の行（ログ）が、再現の対象として選択された例を示す。利用者１００は入力デバイス２１で実行ボタン３０１をクリックすることで、再現処理を開始させることができる。
【００９０】
また、利用者１００は入力デバイス２１を操作して、ログ表示画面２１０の停止２１９に一時停止させるチェックボックスをチェックすることができる。図示の例では、行Ｌ３でログの再現を一次的に停止させる例を示す。
【００９１】
ログ表示画面２１０の停止２１９でチェックボックスをチェックすることで、所望のログで一時停止させて、計算機１の操作を検証することができる。
【００９２】
また、利用者１００は入力デバイス２１を操作して、ログ表示画面２１０の回数繰り返し３０２に繰り返しの回数を設定することができる。利用者１００は、回数繰り返し３０２に所望の値を設定して実行ボタン３０１をクリックすることで、ログ再現部１１３は再現２１１がチェックされたログについて、回数繰り返し３０２まで再現を繰り返す。
【００９３】
図１１は、停止を含むログの再現処理の一例を示すフローチャートである。この処理は、図７に示したフローチャートのステップＳ４０をステップＳ５０に置き換えたもので、その他のステップＳ３１〜Ｓ３９、Ｓ４１は、図７と同様である。
【００９４】
ステップＳ５０では、ログ再現部１１３が、キャプチャ画像パスＰ０のキャプチャ画像と、再現処理で取得したキャプチャ画像Ｃ０を比較し、拡大画像パスＰ１のキャプチャ画像と、再現処理で取得したキャプチャ画像Ｃ１を比較し、抽出文字列Ｗｄと再現処理で取得した文字列Ｗ０、Ｗ１を比較する。ログ再現部１１３は、これら３つの比較結果が一致または部分一致の場合には、当該ログの停止２１９（図中Ｓｔ）がチェックされているか否かを判定する。
【００９５】
ログ再現部１１３は、当該ログの停止２１９（図中Ｓｔ）がチェックされていなければ、前記図７と同様にしてマウス操作またはキーボード操作を実行する。一方、当該ログの停止２１９（図中Ｓｔ）がチェックされていた場合、ログ再現部１１３は、図１２に示す確認ダイアログＤ２を表示して、利用者１００の操作を待ち受ける。
【００９６】
利用者１００が確認ダイアログＤ２の「実行」をクリックすることで上記マウス操作またはキーボード操作を実行してからステップＳ４１へ進む。利用者１００が確認ダイアログＤ２の「終了」をクリックした場合には、処理を終了する。
【００９７】
なお、ログ再現部１１３は、上記３つの比較結果が一致しない場合には、図９に示した確認ダイアログＤ１を表示して、再現の継続の可否について指令を待ち受ける。ログ再現部１１３は、受け付けた指令が「続行」であればマウス操作またはキーボード操作の処理を行ってからステップＳ４１へ進む。
【００９８】
以上のように、ログ再現部１１３は、ログ表示画面２１０の停止２１９がチェックされたログで一時停止を実施することができ、利用者１００は所望の位置で再現を一時停止して検証を行うことができる。
【００９９】
＜繰り返し処理＞
図１３は、繰り返しを含むログの再現処理の一例を示すフローチャートである。この処理は、図７に示したフローチャートのステップＳ４０とステップＳ４１の間にステップＳ６０を追加したもので、その他のステップＳ３１〜Ｓ４１は、図７と同様である。
【０１００】
ステップＳ６０では、図６または図１０のログ表示画面２１０の回数繰り返し３０２に値が設定されている場合、ログ再現部１１３は、再現２１１がチェックされたログを回数繰り返し３０２の値までログの再現処理を繰り返すことができる。
【０１０１】
図１４は、同じ操作の繰り返しを含むログの再現処理の一例を示す図である。図中ログ表示画面２１０は、行Ｌ１〜Ｌ３について再現２１１がチェックされ、「１００＋１０」の入力の後に、「Ｂａｃｋｓｐａｃｅ」で一文字を削除し、次に「１」を入力する処理を回数繰り返し３０２の「３」回繰り返す例を示す。なお、図中の表示２２０は操作対象のフィールドの値を示す。
【０１０２】
図示の例では、ログテーブル１２０の内容に従って、再現対象のログを３回繰り返し、１回目の繰り返し後のログ表示画面２１０−１から、２回目の繰り返し後のログ表示画面２１０−２と、３回目の繰り返し後のログ表示画面２１０−３へ遷移する。
【０１０３】
図１５は、値を変更して繰り返しを行うログの再現処理の一例を示す図である。図中ログ表示画面２１０は、行Ｌ３の操作２１４が、変数ｃ＝１から、増分値ｃ＋＝２で値を変化させる例を示す。
【０１０４】
まず、１回目の繰り返しのログ表示画面２１０−１では、「１００＋１０」の入力の後に、「Ｂａｃｋｓｐａｃｅ」で一文字を削除し、次に「１」を入力する。２回目の繰り返しのログ表示画面２１０−２では、「１００＋１０」の入力の後に、「Ｂａｃｋｓｐａｃｅ」で一文字を削除し、次に「３」を入力する。
【０１０５】
さらに、３回目の繰り返しのログ表示画面２１０−３では、「１００＋１０」の入力の後に、「Ｂａｃｋｓｐａｃｅ」で一文字を削除し、次に「５」を入力する。
【０１０６】
このように、ログ表示画面２１０でログの操作２１４の内容を編集してから、繰り返して再現することにより、ログの再現のパターンを変化させた場合の検証を行うことができる。
【０１０７】
図１６は、入力を変更して繰り返しを行うログの再現処理の一例を示す図である。図中ログ表示画面２１０は、行Ｌ３の操作２１４が、値＝１を、増分値（３）で入力を変化させる例を示す。
【０１０８】
まず、１回目の繰り返しのログ表示画面２１０−１では、「１００＋１」の入力の後に、「Ｂａｃｋｓｐａｃｅ」で一文字を削除し、次に「１」を１回入力する。２回目の繰り返しのログ表示画面２１０−２では、「１００＋１」の入力の後に、「Ｂａｃｋｓｐａｃｅ」で一文字を削除し、次に「１」を３回入力する。
【０１０９】
さらに、３回目の繰り返しのログ表示画面２１０−３では、「１００＋１０」の入力の後に、「Ｂａｃｋｓｐａｃｅ」で一文字を削除し、次に「１」を６回入力する。
【０１１０】
このように、ログ表示画面２１０でログの操作２１４の内容を編集してから、繰り返して再現することにより、入力回数を変化させて、ログの再現のパターンを変化させた場合の検証を行うことができる。
【０１１１】
なお、上記では、「１」を入力する回数を変化させる例を示したが、これに限定されるものではなく、例えば、カーソルキーの入力回数や方向を変化させてもよく、スプレッドシートの操作の再現に適用することができる。
【０１１２】
以上のように、本実施例によれば、マウス操作またはキーボード操作が発生すると、アクティブなアプリケーション１１４のキャプチャ画像２１５と拡大画像２１６が取得された後、各キャプチャ画像に含まれる文字列が抽出文字列２１７に格納され、自動的に操作の内容がログとしてログテーブル１２０に蓄積される。
【０１１３】
そして、ログの再現処理では、選択されたログについて、ログ再現部１１３が、操作Ｏｐを再現する直前に取得したキャプチャ画像Ｃ０と拡大したキャプチャ画像Ｃ１を取得し、これらのキャプチャ画像と、ログの収集処理で取得されたキャプチャ画像（Ｐ０）と拡大キャプチャ画像（Ｐ１）とを比較し、さらに、ログの収集処理で取得した文字列Ｗｄと、ログの再現処理で取得した文字列Ｗ０、Ｗ１を比較することで、計算機１に対する操作が正常に再現されたことを判定することが可能となって、操作を検証する精度を向上させることができる。
【０１１４】
また、操作２１４を編集してから、回数繰り返し３０２を設定してログの再現処理を実施することで、値や入力を変化させた場合について計算機１に対する操作を検証することができる。
【０１１５】
すなわち、前記従来例では、操作記録の内容をそのまま再現するだけであるため、操作記録を用いて入力操作を変化させるテストを行うことが難しいという問題があった。これに対して、本実施例では、操作２１４を編集して繰り返しの再現処理を実施することで、操作や値を変化させる再現処理が可能となる。
【０１１６】
例えば、計算機１での作業をログテーブル１２０に蓄積し、ログの再現処理を行うことで、作業の手順書の生成を容易に行うことができる。また、単純作業の繰り返しなど、計算機１を用いた作業の問題点を抽出することができる。
【０１１７】
また、計算機１で取得したログを他の計算機に読み込ませ、他の計算機でログ再現部１１３を稼働させれば、計算機１で行った操作を他の計算機で実施することができ、例えば、ソフトウェアの設定などの管理業務を自動化することが可能となる。
【０１１８】
上記実施例では、計算機１で操作のログを収集して、計算機１でログを再現する例を示したが、複数の計算機のログをひとつの計算機が収集して、当該計算機で再現を実施してもよい。
【０１１９】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
【０１２０】
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【０１２１】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１２２】
１  計算機
１１  ＣＰＵ
１２  メモリ
１３  補助記憶装置
２０  表示装置
２１  入力デバイス
１１０  ログ収集部
１１１  画像キャプチャ部
１１２  文字列抽出部
１１３  ログ再現部
１１４  アプリケーション
１２０  ログテーブル
【図１】
2019106093.tif 000003
【図２】
2019106093.tif 000004
【図３】
2019106093.tif 000005
【図４】
2019106093.tif 000006
【図５】
2019106093.tif 000007
【図６】
2019106093.tif 000008
【図７】
2019106093.tif 000009
【図８】
2019106093.tif 000010
【図９】
2019106093.tif 000011
【図１０】
2019106093.tif 000012
【図１１】
2019106093.tif 000013
【図１２】
2019106093.tif 000014
【図１３】
2019106093.tif 000015
【図１４】
2019106093.tif 000016
【図１５】
2019106093.tif 000017
【図１６】
2019106093.tif 000018