(57)【要約】【課題】既存のアプリケーションプログラムを改造することなく、その実行中に発生するイベントを検知し、所定のフォーマットのイベントログを残すこと。【解決手段】イベント発生検知部１１により、予め定められた特定のイベントの発生を検知し、当該特定のイベントの種別をその発生時刻とともに制御部１４に通知し、テキスト取得部１２により、前記特定のイベントと関連する予め定められた特定のテキストを取得して制御部１４に通知し、制御部１４から前記特定のイベントの種別とともに前記特定のテキスト及びイベント発生時刻を受け取ったイベントログ記録部１３により、前記特定のイベントの種別に前記特定のテキスト及びイベント発生時刻を関連付け、予め定められたフォーマットで記録する。【選択図】図１
2011145830.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ上で動作する所定のアプリケーションプログラムの実行中に発生したイベントに、当該イベントと関連する少なくともテキスト及びイベント発生時刻を関連付けて記録するイベントログ抽出方法であって、
イベント発生検知部と、テキスト取得部と、イベントログ記録部と、これらを制御する制御部とを用い、
イベント発生検知部が、予め定められた特定のイベントの発生を検知し、当該発生を検知した特定のイベントの種別をその発生時刻とともに制御部に通知し、
制御部が、イベント発生検知部から前記特定のイベントの種別をその発生時刻とともに受け取り、当該特定のイベントと関連する予め定められた特定のテキストの取得をテキスト取得部に依頼し、
テキスト取得部が、制御部から前記特定のイベントと関連する予め定められた特定のテキストの取得の依頼を受け取り、取得した特定のテキストのうち当該依頼に対応するテキストを制御部に通知し、
制御部が、テキスト取得部から前記特定のイベントに関連する予め定められた特定のテキストを受け取り、前記特定のイベントの種別とともにこれと関連する特定のテキスト及びイベント発生時刻をイベントログ記録部に通知し、
イベントログ記録部が、制御部から前記特定のイベントの種別とともに前記特定のテキスト及びイベント発生時刻を受け取り、前記特定のイベントの種別に前記特定のテキスト及びイベント発生時刻を関連付け、予め定められたフォーマットで記録する
ことを特徴とするイベントログ抽出方法。
【請求項２】
コンピュータ上で動作する所定のアプリケーションプログラムの実行中に発生したイベントに、当該イベントと関連する少なくともテキスト及びイベント発生時刻を関連付けて記録するイベントログ抽出方法であって、
イベント発生検知部と、テキスト取得部と、イベントログ記録部と、これらを制御する制御部とを用い、
イベント発生検知部が、複数の種別の特定のイベントの発生を検知し、当該発生を検知した特定のイベントの種別をその発生時刻とともに制御部に通知し、
制御部が、イベント発生検知部から前記特定のイベントの種別をその発生時刻とともに受け取り、イベントの複数の種別と当該イベントの各種別に対応するテキストの種別とを管理する対応表より当該特定のイベントの種別に対応するテキストの種別を特定し、前記特定のイベントの種別に対応する種別の特定のテキストの取得をテキスト取得部に依頼し、
テキスト取得部が、制御部から前記特定のイベントの種別に対応する種別の特定のテキストの取得の依頼を受け取り、取得した特定のイベントの種別に対応する種別の特定のテキストのうち当該依頼に対応するを制御部に通知し、
制御部が、テキスト取得部から前記特定のイベントの種別に対応する種別の特定のテキストを受け取り、前記特定のイベントの種別とともに当該特定のイベントの種別に対応する種別の特定のテキスト及びイベント発生時刻をイベントログ記録部に通知し、
イベントログ記録部が、制御部から前記特定のイベントの種別とともに当該特定のイベントの種別に対応する種別の特定のテキスト及びイベント発生時刻を受け取り、前記特定のイベントの種別に対応する種別の特定のテキスト及びイベント発生時刻を関連付け、予め定められたフォーマットで記録する
ことを特徴とするイベントログ抽出方法。
【請求項３】
コンピュータ上で動作する所定のアプリケーションプログラムの実行中に発生したイベントに、当該イベントと関連する少なくともテキスト及びイベント発生時刻を関連付けて記録するイベントログ抽出装置であって、
少なくともイベント発生検知部と、テキスト取得部と、イベントログ記録部と、制御部とからなり、
予め定められた特定のイベントの発生を検知し、当該発生を検知した特定のイベントの種別をその発生時刻とともに制御部に通知するイベント発生検知部と、
前記特定のイベントと関連する予め定められた特定のテキストを取得し、制御部から前記特定のテキストの取得の依頼を受け取ると、取得した特定のテキストのうち当該依頼に対応するテキストを制御部に通知するテキスト取得部と、
制御部から前記特定のイベントの種別とともに前記特定のテキスト及びイベント発生時刻を受け取り、前記特定のイベントの種別に前記特定のテキスト及びイベント発生時刻を関連付け、予め定められたフォーマットで記録するイベントログ記録部と、
イベント発生検知部から前記特定のイベントの種別をその発生時刻とともに受け取り、当該特定のイベントと関連する予め定められた特定のテキストの取得をテキスト取得部に依頼し、テキスト取得部から前記特定のイベントと関連する予め定められた特定のテキストを受け取り、前記特定のイベントの種別とともに前記特定のテキスト及びイベント発生時刻をイベントログ記録部に通知する制御部とを備えた
ことを特徴とするイベントログ抽出装置。
【請求項４】
コンピュータ上で動作する所定のアプリケーションプログラムの実行中に発生したイベントに、当該イベントと関連する少なくともテキスト及びイベント発生時刻を関連付けて記録するイベントログ抽出装置であって、
少なくともイベント発生検知部と、テキスト取得部と、イベントログ記録部と、制御部とからなり、
複数の種別の特定のイベントの発生を検知し、当該発生を検知した特定のイベントの種別をその発生時刻とともに制御部に通知するイベント発生検知部と、
前記複数の種別の特定のイベントに対応する種別の特定のテキストを取得し、制御部から前記特定のイベントの種別に対応する種別の特定のテキストの取得の依頼を受け取ると、前記取得した特定のイベントの種別に対応する種別の特定のテキストのうち当該依頼に対応するテキストを制御部に通知するテキスト取得部と、
制御部から前記特定のイベントの種別とともに当該特定のイベントの種別に対応する種別の特定のテキスト及びイベント発生時刻を受け取り、前記特定のイベントの種別に対応する種別の特定のテキスト及びイベント発生時刻を関連付け、予め定められたフォーマットで記録するイベントログ記録部と、
イベントの複数の種別と当該イベントの各種別に対応するテキストの種別とを管理する対応表を有し、イベント発生検知部から前記特定のイベントの種別をその発生時刻とともに受け取り、前記対応表より当該特定のイベントの種別に対応するテキストの種別を特定し、前記特定のイベントの種別に対応する種別の特定のテキストの取得をテキスト取得部に依頼し、テキスト取得部から前記特定のイベントの種別に対応する種別の特定のテキストを受け取り、前記特定のイベントの種別とともに当該特定のイベントの種別に対応する種別の特定のテキスト及びイベント発生時刻をイベントログ記録部に通知する制御部とを備えた
ことを特徴とするイベントログ抽出装置。
【請求項５】
アプリケーションプログラムの実行中に当該アプリケーションプログラムとオペレーティングシステムとの間でやりとりされる画面制御情報のうち、特定のイベントの発生に伴ってやりとりされる特定の画面制御情報を検出することで当該特定のイベントの発生を検知するイベント発生検知部を備えた
ことを特徴とする請求項３または４に記載のイベントログ抽出装置。
【請求項６】
アプリケーションプログラムの実行中に発生する通信データのうち、特定のイベントの発生に伴って送受信される特定の通信データを検出することで当該特定のイベントの発生を検知するイベント発生検知部を備えた
ことを特徴とする請求項３または４に記載のイベントログ抽出装置。
【請求項７】
アプリケーションプログラムの実行中に表示装置に表示される表示画面の画像情報から特定のイベントの発生に伴って生じる特定の画面の変化を認識することで当該特定のイベントの発生を検知するイベント発生検知部を備えた
ことを特徴とする請求項３または４に記載のイベントログ抽出装置。
【請求項８】
アプリケーションプログラムの実行中に追加または更新されるデータベース中のテーブルのデータのうち、特定のイベントの発生に伴って追加または更新されるデータを検出することで当該特定のイベントの発生を検知するイベント発生検知部を備えた
ことを特徴とする請求項３または４に記載のイベントログ抽出装置。
【請求項９】
アプリケーションプログラムを操作中のユーザをカメラで撮影した映像情報から特定のイベントの発生をもたらすユーザの特定の画像を認識する、又はアプリケーションプログラムの実行中に表示装置に表示される表示画面をカメラで撮影した映像情報から特定のイベントの発生に伴って生じる特定の画面の変化を認識することで当該特定のイベントの発生を検知するイベント発生検知部を備えた
ことを特徴とする請求項３または４に記載のイベントログ抽出装置。
【請求項１０】
アプリケーションプログラムの実行中に当該アプリケーションプログラムから出力されるイベントログのうち、特定のイベントの発生に伴って出力される特定のイベントログを検出することで当該特定のイベントの発生を検知するイベント発生検知部を備えた
ことを特徴とする請求項３または４に記載のイベントログ抽出装置。
【請求項１１】
特定のイベントの発生を検知する機能部を追加、変更または削除可能なアダプタとして実装することで、特定のイベントの検知対象を切り替え可能としたイベント発生検知部を備えた
ことを特徴とする請求項３または４に記載のイベントログ抽出装置。
【請求項１２】
前記特定のイベントと関連する予め定められた特定のテキストを定期的あるいは前記テキストが発生する度に取得し、その取得時刻とともに記録しておき、制御部から前記特定のテキストの取得の依頼を前記特定のイベントの発生時刻とともに受け取ったときは、前記記録した特定のテキストのうち、当該特定のイベント発生時刻を元に通知すべき特定のテキストを判断して制御部に通知するテキスト取得部を備えた
ことを特徴とする請求項３または４に記載のイベントログ抽出装置。
【請求項１３】
アプリケーションプログラムの実行中に当該アプリケーションプログラムとオペレーティングシステムとの間でやりとりされる画面制御情報から特定のイベントに関連する予め定められた特定のテキストを取得するテキスト取得部を備えた
ことを特徴とする請求項３または４に記載のイベントログ抽出装置。
【請求項１４】
アプリケーションプログラムの実行中に発生する通信データから特定のイベントに関連する予め定められた特定のテキストを取得するテキスト取得部を備えた
ことを特徴とする請求項３または４に記載のイベントログ抽出装置。
【請求項１５】
アプリケーションプログラムの実行中に表示装置に表示される表示画面の画像情報から特定のイベントに関連する予め定められた特定のテキストを取得するテキスト取得部を備えた
ことを特徴とする請求項３または４に記載のイベントログ抽出装置。
【請求項１６】
アプリケーションプログラムの実行中に追加または更新されるデータベース中のテーブルのデータから特定のイベントに関連する予め定められた特定のテキストを取得するテキスト取得部を備えた
ことを特徴とする請求項３または４に記載のイベントログ抽出装置。
【請求項１７】
アプリケーションプログラムを操作中のユーザをカメラで撮影した映像情報、又はアプリケーションプログラムの実行中に表示装置に表示される表示画面をカメラで撮影した映像情報から特定のイベントに関連する予め定められた特定のテキストを取得するテキスト取得部を備えた
ことを特徴とする請求項３または４に記載のイベントログ抽出装置。
【請求項１８】
アプリケーションプログラムの実行中に当該アプリケーションプログラムから出力されるイベントログから特定のイベントに関連する予め定められた特定のテキストを取得するテキスト取得部を備えた
ことを特徴とする請求項３または４に記載のイベントログ抽出装置。
【請求項１９】
特定のテキストを取得する機能部を追加、変更または削除可能なアダプタとして実装することで、特定のテキストの取得対象を切り替え可能としたテキスト取得部を備えた
ことを特徴とする請求項３または４に記載のイベントログ抽出装置。
【請求項２０】
コンピュータを、請求項３乃至１９のいずれかに記載のイベントログ抽出装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションプログラム（以下、アプリケーション）の実行中に発生するイベントについて、少なくとも当該イベントに関連するテキスト及びイベント発生時刻と関連付けて記録するアプリケーションのイベント管理技術に関する。
【背景技術】
【０００２】
顧客へのサービス提供や社内での決済、他企業への発注など、様々なオーダに対して効率的に業務を行うため、処理の進め方を定義し、それに合わせて多くの業務システム（プログラム）が開発され、利用されている。業務の進め方を常に適切な状態に保ち、また業務システムの有効利用により業務効率を上げるため、業務の進め方の改善（ＢＰＭ）の重要性が認識されている。ＢＰＭでは、現在の業務の状況を把握し、問題点を分析し、その解決策を複数考えた上で、効果的な解決案を選択して実際の業務や業務システムに反映する。業務は外部要因により頻繁に変化するので、特にこれらの業務の現状の把握から業務システムへの反映という一連のステップを短期間で継続的に繰り返し実施することがＢＰＭでは必要となる。しかしながら、従来、これらのステップを実施するのに多くの稼動がかかるため、継続的に行われない場合が多かった。
【０００３】
一方、業務システムは、ユーザの操作の開始や終了、エラーの発生時など特徴的なイベントについて、オーダの進捗状況の管理、システムのデバッグやトラブルシューティングのために、それらをイベントログとして残すことがある。そのイベントログは、実際の業務の状況に即した情報であるため、ＢＰＭにおいて現状の業務プロセスを把握する、あるいは業務プロセスの問題点を分析する上で非常に有益な情報である。
【０００４】
［従来技術］
実際、特許文献１には、業務分析のためにイベントログを用いて、オーダごとにどのような順序で処理が行われたかを把握したり、ユーザごとにどのような順序で業務をこなしているのかを把握するために、オーダやユーザなど業務を分析する上で、キーになる情報（キー情報）を元にイベントの発生順序を並列性も含めて推定する技術が提案されている。特許文献１によると、イベントログに残された各イベントの「イベントの種別」と「イベントの発生時刻」と「キー情報」とを入力として、キー情報ごとに並列性も考慮した上で、イベントの発生順序を推定することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許４３８０５９６号公報
【特許文献２】特許３８１７４４２号公報
【非特許文献】
【０００６】
【非特許文献１】”ソフトウェアのテスト効率と精度を向上させるＧＵＩ画面の自動操作技術”、東芝レビュー、Vol.63、No.6、2008、インターネット＜ＵＲＬ：http://www.toshiba.co.jp/tech/review/2008/06/63#06pdf/f03.pdf＞
【非特許文献２】”クライアント自律操作エージェントの柔軟な構成方法”、IEICE technical report 108(396)、社団法人電子情報通信学会、2009-01-15、pp.41-46
【非特許文献３】インターネット＜ＵＲＬ：http://yokohama.cool.ne.jp/chokuto/urawaza/hsgetmsg1.html＞
【非特許文献４】データベーストリガー、インターネット＜ＵＲＬ：http://ja.wikipedia.org/wiki/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%83%88%E3%83%AA%E3%82%AC＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、業務システムがイベントログを残すのは、デバッグやトラブルシューティングが目的であり、業務分析で有益なイベントの種別とは一般に異なる。残されるイベントの種別が不足している場合、イベントログを出力するようにアプリケーションを改造することが要求され、本技術を適用する上でのネックになっている。また、イベントログが残される場合でも、必要な項目が不足しているときには、同様にアプリケーションを改造することが要求されるという問題があった。さらにまた、イベントログは特定のフォーマットで出力されるわけはなく、アプリケーションごとに様々なフォーマットで出力されるために、既存技術を適用するには、予めフォーマットを変換する必要があり、そのための稼動も問題であった。
【０００８】
一方、業務システムなどのアプリケーションの動作に伴い、当該アプリケーション以外の箇所にも様々なイベントが生じたり、先のキー情報に相当するテキストが発生する。そして、これらには、適切な手段を用いることで外部からアクセス可能である。以下、アクセス可能な手段をいくつか紹介する。
【０００９】
［オペレーティングシステム（ウィンドウ制御）］
始めにオペレーティングシステム（以下、ＯＳ）のウィンドウ制御機能を用いる方法を紹介する。
【００１０】
Windows（登録商標）やLinux（登録商標）などの最近の多くのＯＳは、一つの画面上に複数のウィンドウを表示可能である。これらのＯＳでは、統一的なルックアンドフィールを提供したり、複雑なウィンドウ管理をアプリケーションから切り離したりするために、ウィンドウ管理はＯＳが一元的に行う。そのため、ＯＳはウィンドウ管理用のアプリケーションプログラムインタフェース（以下、ＡＰＩ）を提供しており、アプリケーションはこのＡＰＩによりウィンドウ管理を実現する。
【００１１】
例えば、Windows（登録商標）であれば、アプリケーションはＯＳが提供するＡＰＩを介してウィンドウメッセージと呼ばれるメッセージをＯＳとやりとりすることでウィンドウ管理を実現している。このメッセージには様々な種類があり、例えば、新規ウィンドウの作成、アクティブなウィンドウの切り替えなどが実現される。さらに、マウス操作やキーボード操作もウィンドウ管理と同じ仕組みで行われており、例えば、特定のウィンドウの特定のボタンをマウスでクリックした、というイベントも検知可能である。一方、これらの情報は外部から取得することもできるので、イベント発生検知部はこれらの手段を用いることで、ウィンドウ上で発生した特定のイベントの検知が可能となる（非特許文献１，２参照）。
【００１２】
さらに、ウィンドウメッセージを用いれば、画面に表示されている文字列について、そのテキスト値を取得することはもちろん、文字色を取得することも可能である。また、図６に示すようなリストでオーダの一覧が表示され、そこから一つを選択することで処理対象のオーダを指定するウィンドウの場合、それぞれの行の各項目の値の取得はもちろん、選択された行を特定することもでき、その行の各項目の値を取得することもできる（非特許文献３参照）。従って、テキスト取得部はこれらの手段を用いることで、ウィンドウ上に表示された特定のキー情報の取得も可能である。
【００１３】
［表示画面］
また、イベントの検知やテキストの取得に、操作により生じる表示画面の変化を利用することも可能である。例えば、Windows（登録商標）であれば、アクティブなウィンドウをプリントスクリーン機能によりビットマップ画像として保存することができ、この画像をイベントの検知やテキストの取得に用いることができる。また、最近の画像認識技術（特許文献２参照）によれば、ビットマップ画像から文字列をかなりの精度で抽出することも可能である。
【００１４】
これらを鑑みると、イベント発生検知部は、アプリケーションの各ウィンドウの特徴（ウィンドウタイトルやウィンドウサイズ）を予め管理しておき、定期的に記録したアクティブなウィンドウのビットマップ画像から各ウィンドウの特徴を抽出することで、アクティブなウィンドウが切り替わるような特定のイベントを検知できる。
【００１５】
また、テキスト取得部は、レイアウトや色に関する条件から特定のキー情報を取得することも可能である。
【００１６】
［通信］
また、イベントの検知やテキストの取得に、操作により生じる通信の情報を利用することも可能である。例えば、クライアントとサーバで通信を行うアプリケーションにおいて、特定の操作をした際に、その操作に付随したデータがサーバに送信されるケースであれば、イベントの発生検知部はその送信データを検知することで、通信を伴うような特定のイベントを検知することができる。
【００１７】
また、テキスト取得部は、通信データ中にキー情報が含まれていれば、それを取得する手段を組み込み、実行することで、通信データ中に含まれる特定のキー情報を取得することが可能である。
【００１８】
［データベース管理システム］
また、データベース管理システム（以下、ＤＢＭＳ）を用いるアプリケーションであれば、操作に伴い発生するＤＢＭＳの変化によりイベントの検知やテキストの取得が可能である。そのために例えば、一般のＤＢＭＳで具備するトリガーという機能を用いることが考えられる。トリガーを用いると、特定のテーブルに変化（行の追加、行の削除、行の更新）があったことを検知したり、追加された行を特定することが可能である。
【００１９】
従って、例えば、ある操作をした際に、特定のテーブルに行が追加されるようなケースであれば、イベント発生検知部は、そのテーブルの行の追加をトリガーにより検知することで、ＤＢＭＳに変化が生じるような特定のイベントを検知することは可能である。
【００２０】
また、例えば、操作により追加された行にキー情報が含まれる場合には、テキスト取得部は、トリガーにより特定のテーブルの追加行を検知し、その行の特定のカラムから値を取得することで、特定のキー情報を取得できる。
【００２１】
さらに、アプリケーション操作中のユーザの動きや表示画面をカメラで撮影し、それらを画像解析することで、特定のイベントを検知したり、特定のテキストを取得することも可能である。
【００２２】
もちろん、アプリケーションが元々出力しているイベントログを対象にすることも可能である。
【課題を解決するための手段】
【００２３】
本発明は上記問題、背景技術に鑑みてなされたもので、
コンピュータ上で動作する所定のアプリケーションプログラムの実行中に発生したイベントに、当該イベントと関連する少なくともテキスト及びイベント発生時刻を関連付けて記録するイベントログ抽出方法であって、
イベント発生検知部と、テキスト取得部と、イベントログ記録部と、これらを制御する制御部とを少なくとも用い、
イベント発生検知部が、予め定められた特定のイベントの発生を検知し、当該発生を検知した特定のイベントの種別をその発生時刻とともに制御部に通知し、
制御部が、イベント発生検知部から前記特定のイベントの種別をその発生時刻とともに受け取り、当該特定のイベントと関連する予め定められた特定のテキストの取得をテキスト取得部に依頼し、
テキスト取得部が、制御部から前記特定のイベントと関連する予め定められた特定のテキストの取得の依頼を受け取り、取得した特定のテキストのうち当該依頼に対応するテキストを制御部に通知し、
制御部が、テキスト取得部から前記特定のイベントと関連する予め定められた特定のテキストを受け取り、前記特定のイベントの種別とともに前記特定のテキスト及びイベント発生時刻をイベントログ記録部に通知し、
イベントログ記録部が、制御部から前記特定のイベントの種別とともに前記特定のテキスト及びイベント発生時刻を受け取り、前記特定のイベントの種別に前記特定のテキスト及びイベント発生時刻を関連付け、予め定められたフォーマットで記録する
ことを特徴とするイベントログ抽出方法を提案する。
【００２４】
イベント発生検知部は、従来技術やその他、対象のアプリケーションにて利用可能な手段により、操作に該当する特定のイベントの発生を検知する。実際のアプリケーションでは、イベントの発生の検知に利用可能な手段はアプリケーションに依存するので、アプリケーションに合わせて取捨選択する必要があるが、これらをアダプタとして組み込むことで、アプリケーションに合わせて切り替え可能とする。
【００２５】
テキスト取得部は、従来技術やその他、対象のアプリケーションにて利用可能な手段により、特定のキー情報を取得する。実際のアプリケーションでは、テキストの取得に利用可能な手段はアプリケーションの環境に依存するので、アプリケーションに合わせて取捨選択する必要があるが、これらをアダプタとして組み込むことで、アプリケーションに合わせて切り替え可能とする。
【００２６】
さらに、イベント発生検知部とテキスト取得部は独立であり、イベントの検知とテキストの取得はそれぞれ別々の手段により取得することも可能である。例えば、イベント発生検知部ではＯＳのウィンドウ制御機能を利用して特定のイベントの発生を検知し、それに関連したテキストの取得のために、テキスト取得部ではＤＢＭＳから特定のテキストを取得することも可能である。
【００２７】
このとき、テキスト取得部では、制御部からの依頼によりテキストの取得が行うが、イベントの発生検知後では、画像表示などテキストが取得できないケースがある。そのため、テキスト取得部は、特定のテキストを定期的あるいは前記テキストが発生する度に取得し、取得時間と合わせて記録しておく必要がある。そして、制御部からテキストの取得依頼を前記特定のイベントの発生時刻とともに受け取った場合には、前記記録したテキストのうち、この特定のイベント発生時刻を元に通知すべきテキストを判断して制御部へ返す。
【００２８】
また、時刻の取得には、ＯＳなど時刻を取得可能な手段を用いる。
【発明の効果】
【００２９】
本発明によれば、これまで操作記録を取得することができなかったアプリケーションでも、改造を加えることなく任意の操作の記録を抽出することが可能となる。
【図面の簡単な説明】
【００３０】
【図１】本発明のイベントログ抽出装置の実施の形態を示す構成図
【図２】図１のイベントログ抽出装置の動作フローチャート
【図３】本発明の実施例のハードウェア構成を示す説明図
【図４】本発明の実施例のソフトウェア構成を示す説明図
【図５】実施例における表示画面の一例を示す説明図
【図６】実施例における表示画面の一例を示す説明図
【図７】実施例における表示画面の一例を示す説明図
【図８】ウィンドウメッセージによるイベント抽出のようすを示す説明図
【図９】画像認識によるイベント抽出のようすを示す説明図
【図１０】ＤＢＭＳのトリガーによるイベント抽出のようすを示す説明図
【発明を実施するための形態】
【００３１】
図１は本発明のイベントログ抽出装置の実施の形態の一例を示すもので、図中、１１はイベント発生検知部、１２はテキスト取得部、１３はイベントログ記録部、１４は制御部である。
【００３２】
イベント発生検知部１１は、予め定められた特定のイベントの発生を検知し、当該発生を検知した特定のイベントの種別をその発生時刻とともに制御部１４に通知する。ここで、イベント発生検知部１１は、特定のイベントの発生を検知する機能部を追加、変更または削除可能なアダプタとして実装することで、アプリケーションに合わせて特定のイベントの検知対象を切り替え可能としている。
【００３３】
テキスト取得部１２は、前記特定のイベントと関連する予め定められた特定のテキストを取得し、制御部１４から前記特定のテキストの取得の依頼を受け取ると、前記取得した特定のテキストのうち当該依頼に対応するテキストを制御部１４に通知する。ここで、テキスト取得部１２は、特定のテキストを取得する機能部を追加、変更または削除可能なアダプタとして実装することで、アプリケーションに合わせて特定のテキストの取得対象を切り替え可能としている。また、テキスト取得部１２は、前記特定のイベントと関連する予め定められた特定のテキストを定期的あるいは前記テキストが発生する度に取得し、その取得時刻とともに記録しておき、制御部１４から前記特定のテキストの取得の依頼を前記特定のイベントの発生時刻とともに受け取ったときは、前記記録した特定のテキストのうち、当該特定のイベント発生時刻を元に通知すべき特定のテキストを判断して制御部１４に通知する。例えばイベント発生時刻の直前または直後あるいは同時刻のいずれかに取得した特定のテキストを制御部１４に通知するようにしても良い。
【００３４】
イベントログ記録部１３は、制御部１４から前記特定のイベントの種別とともに前記特定のテキスト及びイベント発生時刻を受け取り、前記特定のイベントの種別に前記特定のテキスト及びイベント発生時刻を関連付け、予め定められたフォーマットで記録する。
【００３５】
制御部１４は、イベント発生検知部１１から前記特定のイベントの種別をその発生時刻とともに受け取り、当該特定のイベントと関連する予め定められた特定のテキストの取得を（必要に応じて前記特定のイベントの発生時刻とともに通知して）テキスト取得部１２に依頼し、テキスト取得部１２から前記特定のイベントと関連する予め定められた特定のテキストを受け取り、前記特定のイベントの種別とともに前記特定のテキスト及びイベント発生時刻をイベントログ記録部１３に通知する。
【００３６】
図２は図１のイベントログ抽出装置の動作フローチャートを示すもので、以下、本発明のイベントログ抽出方法における処理の流れを簡単に説明する。
【００３７】
まず、イベント発生検知部１１が、予め定められた特定のイベントの発生を検知し（ｓ１）、当該発生を検知した特定のイベントの種別をその発生時刻とともに制御部１４に通知する（ｓ２）。
【００３８】
次に、制御部１４が、イベント発生検知部１１から前記特定のイベントの種別をその発生時刻とともに受け取り、当該特定のイベントと関連する予め定められた特定のテキストの取得をテキスト取得部１２に依頼する（ｓ３）。
【００３９】
次に、テキスト取得部１２が、制御部１４から前記特定のイベントと関連する予め定められた特定のテキストの取得の依頼を受け取って当該依頼に対応するテキストを制御部１４に通知する（ｓ４）。
【００４０】
次に、制御部１４が、テキスト取得部１２から前記特定のイベントに関連する予め定められた特定のテキストを受け取り、前記特定のイベントの種別とともにこれと関連する特定のテキスト及びイベント発生時刻をイベントログ記録部１３に通知する（ｓ５）。
【００４１】
最後に、イベントログ記録部１３が、制御部１４から前記特定のイベントの種別とともに前記特定のテキスト及びイベント発生時刻を受け取り、前記特定のイベントの種別に前記特定のテキスト及びイベント発生時刻を関連付け、予め定められたフォーマットで記録する（ｓ６）。
【実施例１】
【００４２】
図３は本発明の実施例のハードウェア構成の一例、ここではアプリケーションがクライアント・サーバ環境で動作し、ユーザはクライアントでアプリケーションを操作する場合の例を示すもので、図中、１はサーバ、２はクライアント、３はディスプレイ、４はキーボード、５はポインティングデバイス（マウス）、６はカメラ、７はサーバ１及びクライアント２間を接続する通信回線である。
【００４３】
図４は本発明の実施例のソフトウェア構成の概要を示すもので、図中、１０は本発明のイベントログ抽出装置、２０はアプリケーション、３０はＯＳ、４０はＤＢＭＳである。
【００４４】
ここで、アプリケーション２０は、ＯＳ３０のウィンドウ制御機能を介してディスプレイ３に表示される表示画面上のウィンドウを管理し、また、ＤＢＭＳ４０を利用するものとする。なお、クライアント・サーバ環境で動作するアプリケーションの場合、サーバ１及びクライアント２の双方に対応するアプリケーションが存在することになるが、図４では便宜上、これらを同一視して描いている。
【００４５】
また、イベントログ抽出装置１０は通常、クライアント２上に実装され、クライアント２上のＯＳ、ミドルウェアまたはハードウェアを通じてアプリケーション２０に係るイベント発生検知及びテキスト取得を行う。具体的には、イベントログ抽出装置１０は、ＯＳ３０のウィンドウ制御機能を介してディスプレイ３の表示画面上のウィンドウの状態を取得し、また、ＤＢＭＳ４０から直接もしくはＯＳ３０を介してその状態を取得する。また、イベントログ抽出装置１０は、ディスプレイ３の表示画面上のアクティブなウィンドウの情報（画像情報）をＯＳ３０の画像取り込み機能（例えば、Windows（登録商標）であればプリントスクリーン機能）等によりビットマップ画像として取得することもでき、また、図示しないが、カメラ６からの情報（画像情報）や通信回線７上の情報も、直接もしくはＯＳ３０を介して取得可能であるとする。
【００４６】
また、本発明は、１台のコンピュータ上で動作するアプリケーションについても同様に適用可能であり、その場合、アプリケーションはクライアント上のみで動作し、サーバはＤＢＭＳの管理のみ行うような構成としても良い。
【００４７】
本実施例で想定するアプリケーション２０は、ユーザがオーダを一つ選択し、そのオーダに対して、どの工場から出荷するかを選択するアプリケーションであり、以下、その動作について各タイミングの時刻の例とともに説明する。
【００４８】
クライアント２でアプリケーション２０を起動（イベント(1)）する（時刻10:00:00）と、図５に示す画面１０１がアクティブなウィンドウとして表示される。
【００４９】
画面１０１は、ウィンドウのタイトルは、”オーダ選択”であり、ウィンドウの上段に文字列”オーダ選択”表示され、中段に左クリックで選択可能なオーダのリスト（選択されたオーダは文字と地の色が反転する）が表示（図６に示す画面１０２）され、下段に”商品手配”ボタンを具備する。オーダのリストは、選択可能なオーダが行単位で表示され、オーダについての情報として、オーダＩＤ、顧客名及び受付日が表示される。
【００５０】
ユーザはオーダのリストからオーダを一つ選択、本実施例では図６に示すように”オーダ２”を選択（左クリック）（イベント(2)）した（時刻10:05:00）後、”商品手配”ボタンを左クリック（イベント(3)）する（時刻10:06:00）。すると、それと同時刻（実際にはイベント(3)の後であるが、本実施例では説明の都合上、同時刻と仮定する。）にＯＳ３０のウィンドウ制御機能により当該イベント(3)に相当するウィンドウ制御のイベントがアプリケーション２０に通知され、それと同時刻に画面１０１（１０２）はクローズされる。そしてその３秒後に図７に示す画面１０３がアクティブなウィンドウとして表示される。
【００５１】
画面１０３は、ウィンドウのタイトルが”商品手配”であり、ウィンドウの上段に文字列”商品手配”、中段に手配を行う工場を選択するリスト、下段に”発送処理”ボタン”及び”戻る”ボタンを具備する。
【００５２】
ユーザはこの画面１０３で商品を手配する工場を選択（イベント(4)）した（時刻10:10:00）後、”発送処理”ボタンを左クリック（イベント(5)）する（時刻10:11:00）。
【００５３】
次に、以上の手順を行ったときにサーバ１・クライアント２間で送受信される通信データについて説明する。
【００５４】
サーバ１とクライアント２との通信は、SOAP/HTTPで行われ、SOAPメッセージがHTTPにより送信される。
【００５５】
まず、アプリケーション２０を起動（イベント(1)）すると、それと同時刻に（実際にはイベント(1)の後であるが、本実施例では説明の都合上、同時刻と仮定する。）に、以下のSOAPメッセージ（メッセージデータ１）により、オーダの一覧がサーバ１からクライアント２に送信される。
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Header />
<SOAP-ENV:Body>
<ns1:getOrderList xmlns:ns1="urn:xmethods-getOrderList"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<orderList>
<order>
<orderid>オーダ１</orderid>
<customerName>顧客1</customerName>
<date>12/1</date>
</order>
<order>
<orderid>オーダ２</orderid>
<customerName>顧客2</customerName>
<date>12/2</date>
</order>
<order>
<orderid>オーダ３</orderid>
<customerName>顧客3</customerName>
<date>12/3</date>
</order>
</orderList>
</ns1:getOrderList>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
続いて、イベント(3)が発生すると、それと同時刻（実際にはイベント(3)の後であるが、本実施例では説明の都合上、同時刻と仮定する。）に以下のSOAPメッセージ（メッセージデータ２）により、ユーザが選択したオーダのオーダＩＤがクライアント２からサーバ１へ通知される。特徴として、サーバの呼び出しメソッドの名称”setOrderId”が含まれ、これにより他のイベントの通信と区別可能である。また、ユーザが選択したオーダのオーダＩＤは”orderid”タグに含まれる。
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Header />
<SOAP-ENV:Body>
<ns1:setOrderId xmlns:ns1="urn:xmethods-setOrderId"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<orderid>オーダ２</orderid>
</ns1:setOrderId>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
続いて、クライアント２がメッセージデータ２を送信してから３秒後にサーバ１は、クライアント２へ工場のリストを通知する。このときのSOAPデータ（メッセージデータ３）を以下に示す。
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Header />
<SOAP-ENV:Body>
<ns1:getFactoryList xmlns:ns1="urn:xmethods-getFactoryList"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<factoryList>
<factory>
<factoryName>工場A</factoryName>
<amount>100</amount>
<date>12/6</date>
</factory>
<factory>
<factoryName>工場B</factoryName>
<amount>200</amount>
<date>12/7</date>
</factory>
<factory>
<factoryName>工場C</factoryName>
<amount>300</amount>
<date>12/8</date>
</factory>
</factoryList>
</ns1:getFactoryList>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
また、サーバ１では、操作の対象のオーダを記録するために、ＤＢＭＳ４０で”オーダテーブル”を管理しており、このオーダテーブルには、操作対象のオーダＩＤを格納する”オーダＩＤ”カラムと、顧客名を格納する”顧客名”カラムと、オーダの商品ＩＤを格納する”商品ＩＤ”カラムとが存在する。オーダテーブルには、イベント(3)を実行すると、それと同時刻（実際にはイベント(3)の後であるが、本実施例では説明の都合上、同時刻と仮定する。）にユーザが指定したオーダについての情報が追加され、本実施例においては図１０のオーダテーブルの２行目（オーダ２，顧客２，商品Ｂ）が追加される。
【００５６】
以上を踏まえて、時刻10:06:00に発生したイベント(3)のイベントログをイベントログ抽出装置１０により抽出する方法を説明する。なお、イベント(3)に関連したテキストは、イベント(3)が行われた際に”オーダ選択”ウィンドウのオーダＩＤリストのうち、選択状態であった行のオーダＩＤ（本実施例では、”オーダ２”）であるとする。
【００５７】
＜イベント検知＞
始めに、イベントログ抽出装置１０のイベント発生検知部１１が時刻10:06:00に発生したイベント(3)の発生を検知する方法を説明する。なお、本実施例では、説明のため、複数の方法で検知可能な環境を想定しているが、実際にはこれらの中からいずれかを取捨選択し、組み込むことになる。以下、それぞれの方法を説明する。
【００５８】
［イベント検知方法１］
イベント発生検知部１１は、ＯＳ３０のウィンドウ制御機能を用いて、オーダ選択画面の”商品手配”ボタンが”左クリックされた”というウィンドウに関するイベントを検知することで、イベント(3)の発生を検知し、その時刻をＯＳ３０より取得することで発生時刻（時刻10:06:00）を取得する（図８）。
【００５９】
［イベント検知方法２］
イベント発生検知部１１は、クライアント２からの送信データのうち、”urn:xmethods-setOrderId”という文字列を含む送信データ（メッセージデータ２）の発生を検知することで、イベント(3)の発生を検知し、その時刻をＯＳ３０より取得することで発生時刻（時刻10:06:00）を取得する。
【００６０】
［イベント検知方法３］
イベント発生検知部１１は、定期的、例えば１秒ごとに記録したアクティブなウィンドウのビットマップ画像を解析し、ウィンドウタイトル”オーダ選択”から”商品手配”に変化したウィンドウタイトルの変化を検知することで、イベント(3)の発生を検知できる。本実施例の場合、時刻10:06:00にアクティブなウィンドウのウィンドウタイトルが”オーダ選択”であったことを認識し、時刻10:06:03に”商品選択”であったことを認識することで、時刻10:06:00にイベント(3)が発生したことを検知する（図９）。
【００６１】
［イベント検知方法４］
イベント発生検知部１１は、ＤＢＭＳ４０のトリガーにより、オーダテーブルに新たに行（本実施例では、”オーダ２”，”顧客２”，”商品Ｂ”）が追加されたことを検知することで、イベント(3)の発生を検知し、その時刻をＯＳ３０より取得することで発生時刻（時刻10:06:00）を取得する（図１０）。
【００６２】
＜テキスト取得＞
続いて、イベントログ抽出装置１０のテキスト取得部１２がイベント(3)に関連したテキストを取得する方法を説明するが、制御部１４からテキスト取得部１２に通知されるイベント発生時刻を10:06:00として説明する。キー情報の取得についても、説明のため複数の手段を利用可能であるが、実際にはいずれかを取捨選択して組み込むことになる。以下、それぞれの方法を説明する。
【００６３】
［テキスト取得方法１］
テキスト取得部１２は、ＯＳ３０のウィンドウ制御機能を用いて、オーダ選択画面のリストから選択状態である行の左端のカラム値を特定のテキストとして定期的（例えば１秒ごと）に取得し、取得した時刻と取得したテキストを合わせて記録しており、制御部１４からイベント(3)に関連したテキストの取得依頼を当該イベント(3)の発生時刻10:06:00とともに受け取ると、このイベント(3)の発生時刻10:06:00を元に、イベント(3)の発生時刻10:06:00の、例えば直前（時刻10:05:59）に取得したテキストを制御部１４に通知する（図８）。
【００６４】
［テキスト取得方法２］
テキスト取得部１２は、クライアント２から送信される送信データのうち、”urn:xmethods-setOrderId”という文字列を含む送信データが発生する度に、当該送信データから"orderid”タグに含まれるテキストを取得し、取得した時刻と取得したテキストを合わせて記録しており、制御部１４からイベント(3)に関連したテキストの取得依頼を当該イベント(3)の発生時刻10:06:00とともに受け取ると、このイベント(3)の発生時刻10:06:00を元に、例えば同時刻（10:06:00）に取得したテキストを制御部１４に通知する。
【００６５】
［テキスト取得方法３］
テキスト取得部１２は、アクティブなウィンドウのビットマップ画像を定期的（例えば１秒ごと）に記録し、それを画像解析することで、ウィンドウタイトルが”オーダ選択”のウィンドウの文字列”オーダＩＤ”の下側の文字列のうちテキストの表示色が白色のテキストを定期的に取得し、取得した時刻と取得したテキストを合わせて記録しており、制御部１４からイベント(3)に関連したテキストの取得依頼を当該イベント(3)の発生時刻10:06:00とともに受け取ると、このイベント(3)の発生時刻10:06:00を元に、ウィンドウタイトルが”オーダ選択”であるウィンドウが表示されている、イベント(3)の発生時刻10:06:00の、例えば直前（時刻10:05:59）に取得したテキストを制御部１４に通知する（図９）。
【００６６】
［テキスト取得方法４］
テキスト取得部１２は、ＤＢＭＳ４０のトリガーにより、オーダテーブルの新規追加行の”オーダＩＤ”カラムの値を毎回取得し、取得した時刻と取得したテキストを合わせて記録しており、制御部１４からイベント(3)に関連したテキストの取得依頼を当該イベント(3)の発生時刻10:06:00とともに受け取ると、このイベント(3)の発生時刻10:06:00を元に、例えば同時刻（時刻10:06:00）に取得したテキストを制御部１４に通知する（図１０）。
【００６７】
以上を踏まえると、イベント(3)のイベントログを抽出するための手順は以下のようになる。
【００６８】
イベント検知部１１にイベント検知方法１〜４のいずれかを予め組み込んでおき、イベント検知部１１がイベントの発生を検知すると、その発生時刻をＯＳ３０から取得し、イベントの種別をその発生時刻とともに制御部１４に通知する。
【００６９】
制御部１４は、テキスト取得部１２にテキストの取得を依頼する。
【００７０】
テキスト取得部１２にテキスト取得方法１〜４のいずれかを組み込んでおき、テキスト取得部１２は、取得して記録したテキストのうち、イベント発生時刻を元に通知すべきテキストを判断し、これを制御部１４に通知する。
【００７１】
制御部１４は、イベントの種別とともにこれと関連するテキスト及びイベント発生時刻を記録部１３へ通知する。
【００７２】
記録部１３は、イベントの種別にテキスト及びイベント発生時刻を関連付け、予め定められたフォーマットで記録する。
【００７３】
以上の手順で、イベント(3)のイベントログ、ここではイベント種別”商品手配”、テキスト”オーダ２”、発生時刻”10:06:00”のイベントログの抽出が可能となる（イベント(3)を”商品手配”と置き換えた。）。
【００７４】
なお、カメラ６でアプリケーション２０を操作中の画面を撮影した映像情報を画像情報とみなせば、［イベント検知方法３］及び［テキスト取得方法３］で説明した方法と同様な方法で特定のイベントを検知し、また、その画像情報から特定のイベントに関連する予め定められた特定のテキストを取得することも可能である。さらにまた、アプリケーション２０から出力されるイベントログのうち、特定のイベントの発生に伴って出力される特定のイベントログを検出することで当該特定のイベントの発生を検知し、また、そのイベントログから特定のイベントに関連する予め定められた特定のテキストを取得することも可能である。
【００７５】
また、これまでは、抽出対象のイベントが一種類の場合について説明したが、複数の種別のイベントを抽出するようにしても良い。
【００７６】
この場合、イベント発生検知部は、複数の種別の特定のイベントの発生を検知し、当該発生を検知した特定のイベントの種別をその発生時刻とともに制御部に通知するものとする。
【００７７】
また、テキスト取得部は、前記複数の種別の特定のイベントに対応する種別の特定のテキストを取得し、制御部から前記特定のイベントの種別に対応する種別の特定のテキストの取得の依頼を受け取ると、前記取得した特定のイベントの種別に対応する種別の特定のテキストのうち当該依頼に対応するテキストを制御部に通知するものとする。
【００７８】
また、イベントログ記録部は、制御部から前記特定のイベントの種別とともに当該特定のイベントの種別に対応する種別の特定のテキスト及びイベント発生時刻を受け取り、前記特定のイベントの種別に対応する種別の特定のテキスト及びイベント発生時刻を関連付け、予め定められたフォーマットで記録するものとする。
【００７９】
また、制御部は、イベントの複数の種別と当該イベントの各種別に対応するテキストの種別とを管理する対応表を有し、イベント発生検知部から前記特定のイベントの種別をその発生時刻とともに受け取り、前記対応表より当該特定のイベントの種別に対応するテキストの種別を特定し、前記特定のイベントの種別に対応する種別の特定のテキストの取得をテキスト取得部に依頼し、テキスト取得部から前記特定のイベントの種別に対応する種別の特定のテキストを受け取り、前記特定のイベントの種別とともに当該特定のイベントの種別に対応する種別の特定のテキスト及びイベント発生時刻をイベントログ記録部に通知するものとする。
【００８０】
さらにまた、これまでの説明では、イベント発生検知部で検知した時刻を「イベント発生時刻」と記したが、［イベント検知方法３］等のような、定期的に取得した画像を解析した結果からイベントの発生を検知する場合では、厳密にはイベントの発生を検知した時刻となる。従って、本発明でいう「イベント発生時刻」には、イベント発生時刻相当の「イベント検知時刻」も含まれるものとする。
【００８１】
また、実施例の説明で、各イベントの発生時刻において、実際にはあるイベントの後に起こるイベントについても説明上、同時刻と仮定した箇所が複数あるが、一般的に業務分析で興味のある時間的スケールとコンピュータ内部の時間的スケールを比較すると、後者の方が比較にならない程高速なので、前記過程は現実的である。
【００８２】
なお、本発明は、周知のコンピュータに媒体もしくは通信回線を介して、図１の構成図に示された機能を実現するプログラムあるいは図２のフローチャートに示された手順を備えるプログラムをインストールすることによっても実現可能である。
【符号の説明】
【００８３】
１：サーバ、２：クライアント、３：ディスプレイ、４：キーボード、５：ポインティングデバイス、６：カメラ、７：通信回線、１０：イベントログ抽出装置、１１：イベント発生検知部、１２：テキスト取得部、１３：イベントログ記録部、１４：制御部、２０：アプリケーション、３０：ＯＳ、４０：ＤＢＭＳ。
【図１】
2011145830.tif 000003
【図２】
2011145830.tif 000004
【図３】
2011145830.tif 000005
【図４】
2011145830.tif 000006
【図５】
2011145830.tif 000007
【図６】
2011145830.tif 000008
【図７】
2011145830.tif 000009
【図８】
2011145830.tif 000010
【図９】
2011145830.tif 000011
【図１０】
2011145830.tif 000012