説明

ユーザ操作のログ記録方法およびその装置

【課題】GUIの状態の取得頻度を高速に取得し、GUIの状態の再現性の高い内容をログに記録すること。
【解決手段】直接アクセス機能を用いて現在のGUIの状態を初期状態として取得し、ログとして記憶装置に出力して記録し(S31)、イベント検出機能により最前面ウインドウ以外のGUIの状態の変更イベントまたはウインドウの消滅イベントを検出するリスナを設定し(S32)、ログ記録終了の指示が入力されるまでの間(S33,S38)、取得タイミングの指定を満たせば直接アクセス機能を用いて最前面ウインドウのGUIの状態をログとして記憶装置に出力して記録し(S34,S35)、さらにイベント検出機能により前記イベントが検出されているか調べ、そのイベント情報をログとして記憶装置に出力して記録する(S36,S37)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、グラフィカルユーザインタフェースに対するユーザ操作のログを記録する技術に関する。
【背景技術】
【0002】
コンピュータ上で動作するアプリケーションプログラム(以下、アプリケーション)などのソフトウェアによって実現される、企業における業務システム等の情報処理システム向けのソリューションとして、近年、ユーザ操作のログ(記録)を活用した技術が数多く提案されている。これらは、情報処理システムを構成するコンピュータの端末装置(以下、情報システム端末)におけるユーザの操作を記録・蓄積し、セキュリティ違反となる操作が行われていないことの監視を実現したり、操作のボトルネックを分析することにより業務の効率化を達成する用途に用いられている。
【0003】
前述した情報処理システムの多くは、ユーザビリティ向上のためのユーザインタフェースとして、グラフィカルユーザインタフェース(以下、GUI)を採用している。従って、前記のユーザ操作のログを活用した技術においても、GUIに対するユーザ操作を記録・蓄積することが必要となる。
【0004】
GUIに対するユーザ操作は、主にマウスの操作やキーボードへの入力であり、情報システム端末のオペレーティングシステム(以下、OS)のイベントとして、発生時刻などの情報とともに検出することができる。また、GUIの状態に関してもOSのイベントとして、ウインドウのオープンやクローズの発生を、アプリケーションのプロセス名、イベントの発生時刻などの情報とともに検出することが可能である。
【0005】
前記のユーザ操作のログを活用した技術の多くは、OSが一般的に具備するイベントをログとして記録・蓄積するものとなっている。セキュリティ目的で、ユーザ操作とそのアプリケーションのウインドウの起動を把握するなどの単純な分析を行う場合、ログに記録する内容としては十分と考えられる。しかし、ユーザが業務の中で、ウインドウ内のどのようなGUI部品に対してどのような操作を行い、結果としてウインドウ内の表示がどのように変化したかを正確に把握するためには、記録する情報が不十分である。
【0006】
セキュリティや業務分析においては、ユーザ操作時の状況(コンテキスト)を把握することが分析の精度を向上させる上で重要である。例えば、分析の観点として、アプリケーションのウインドウに表示されているデータの初期化ボタンを押下する操作を、ログから違反操作として検出する場合を考える。しかし、実際にはこのような操作すべてが違反操作というわけではない。トラブルが発生し、どうしてもデータを初期化する必要があったのかもしれないし、管理者が必要に応じて実施した操作かもしれない。本当に違反操作であるかの判断は、データの初期化ボタンを押した時、あるいはそれ以前のアプリケーションのウインドウ内のGUI部品の表示状態を精密に調査し、ユーザ操作のコンテキストを把握する必要がある。
【0007】
このようにユーザ操作の内容や意図を正確に把握するためには、マウスの操作やキーボードへの入力、アプリケーションのウインドウの開閉に関するイベントだけでなく、ウインドウ内のGUI部品の表示状態をログに記録する必要がある。
【0008】
[従来技術]
アプリケーションのウインドウ内のGUI部品の表示状態をログとして記録する方法としては、大きく分けて2つの方法がある。
【0009】
1つ目の方法は、ログを取得する情報システム端末、あるいはアプリケーションに、ウインドウ内のGUI部品の表示状態を出力する専用のソフトウェア(プラグイン)を組み込む方法である。この方法は、プラグインが適用可能であれば確実にGUI部品の表示状態の情報を取得できるものの、情報システム端末やアプリケーションによっては、そもそもプラグインをインストールできないものも存在するため、汎用性に乏しいという問題がある(非特許文献1参照)。
【0010】
2つ目の方法は、情報システム端末における表示装置の画面や動画を記録し、ウインドウ内の表示状態を識別する方法である。この方法は、ウインドウ内のGUI部品の表示状態を識別する技術の精度によって結果が左右されるという問題があるが、表示装置の画面や動画は情報システム端末やアプリケーションによらず取得できるため、汎用性の高い手法といえる(非特許文献2参照)。
【0011】
特に前者の方法では、近年、UIオートメーション(非特許文献3参照)やJava(登録商標) Accessibility API(非特許文献4参照)などのGUIアクセシビリティ技術が進歩し、.NETやJava(登録商標)、Webをベースとしたアプリケーションにおいて、ある程度、汎用的にウインドウ内のGUI部品の表示状態を出力することが可能になっている。また、GUIを有するアプリケーションに関してアクセシビリティ技術の標準化(非特許文献5参照)が進んでおり、将来的には、このようなGUIアクセシビリティ技術が適用可能なアプリケーションが増えることが想定される。このように前者の方法の場合、汎用性についても改善が進んでいる。
【0012】
GUIアクセシビリティ技術の多くは、ログ取得プログラムからアプリケーションに直接アクセスし、ウインドウ内のGUI部品の表示状態を取得する機能(以降、「直接アクセス機能」と呼ぶ。)と、ログ取得プログラムがリスナ(何らかのイベントの発生を検出し、それを通知する機能を備えたプログラム)を設定し、ウインドウ内のGUI部品の表示状態の変更をイベントとして検出する機能(以降、「イベント検出機能」と呼ぶ。)との2つを具備しているのが一般的である。
【0013】
これ以降では、ソフトウェアが表示装置の画面上に表示するウインドウの表示状態および当該ウインドウ内のGUI部品の表示状態のことを、単に「GUIの状態」と呼ぶことにする。
【発明の概要】
【発明が解決しようとする課題】
【0014】
ところで、ユーザ操作のログを取得する場合は、情報システム端末でアプリケーションを起動し、そのバックグラウンドでログ取得プログラムを動作させなければならない。よって、ログ取得プログラムには、アプリケーションと並行で動作させても、ユーザ操作に対するアプリケーションの応答を悪化させないことが求められる。しかし、マウスの操作やキーボードへの入力だけでなく、アプリケーションのGUIの状態までログに記録する場合、記録する情報が膨大になる。それに伴い、ログ取得プログラムの処理時間も長くなり、アプリケーションの応答に影響を与える場合がある。
【0015】
この問題に対しては、例えば、アプリケーションから検出して記録する情報を分析に必要なものだけに制限し、GUIの状態の取得処理時間を短縮する方法や、直接アクセス機能を利用したGUIの状態の取得頻度を下げるといった対応が考えられる。あるいは、イベント検出機能を用いて、以前のGUIの状態から変更された差分のみを検出して記録するなどの方法もある。これらの方法は、ユーザ操作に対するアプリケーションの応答性能を改善する意味においては有効な方法ではあるが、その反面、ユーザ操作に対するアプリケーションのGUIの状態をログから再現するという点においては、品質が低下する。
【0016】
また、アプリケーションから検出して記録する情報を制限すれば、関心のない情報については操作状況の再現が不可能になる。ログに記録していない情報については、あとから分析することが不可能であるため、この方法を採用する場合、関心のある情報が事前に明確になっている必要がある。しかし、ログの分析では、往々にして分析の過程で、興味のある情報が変化することがあり、事前に関心のある情報を明確にするのは困難である。
【0017】
直接アクセス機能を利用したGUIの状態の取得頻度を下げると、状態を取得したあるタイミングから、次に状態を取得するタイミングまでの間の細かいGUIの状態の遷移については再現が不可能となる。
【0018】
また、イベント検出機能を用いて、以前のGUIの状態から変更された差分のみを検出する場合は、確かにGUIの状態の遷移を細かく再現することができる。しかし、その一方で、アプリケーションや情報の種類によっては、変更されたことをイベントとして検出できない場合が存在する。例えば、一般的にGUIの変更により大量のイベントが発生し、イベントキューでオーバーフローを起こした場合、それらのイベントはログ取得プログラムに通知されず、廃棄されてしまう。従って、この方法の場合、ログを取得する時間の経過とともに、アプリケーションのGUIの状態とログに記録されたGUIの状態とが不一致になる確率が高くなり、かつ不一致の度合いも大きくなるという問題がある。
【0019】
以上のことから、ログ取得プログラムにおいては、ユーザ操作に対する情報システム端末の応答性能、あるいはログ記録対象ソフトウェアの応答性能に応じてGUIの状態を高速に取得し、GUIの状態の再現性の高い内容をログに記録するという課題を解決する必要がある。
【課題を解決するための手段】
【0020】
本発明では、GUIの状態を高速に取得し、GUIの状態の再現性の高い内容をログに記録するという課題を解決するために、以下の特徴を有する。
【0021】
本発明の第一の発明として、
任意のコンピュータ上で動作するログ記録対象ソフトウェアが当該任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータの入力装置および表示装置を介して提供するGUIに対するユーザ操作のログとして、前記ログ記録対象ソフトウェアがGUIとして前記表示装置の画面上に表示するウインドウの表示状態および当該ウインドウ内のGUI部品の表示状態で表されるGUIの状態を、前記任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータの記憶装置に記録する方法であって、
前記任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータが、
入力装置より入力された、ログの取得対象から除外するGUI部品またはその属性情報を指定する条件、並びに直接アクセス機能を用いてログ記録対象ソフトウェアのGUIの状態を取得するタイミングの指定を記憶装置に登録する第1のステップと、
入力装置より入力されたログ記録開始の指示により、直接アクセス機能を用いて現在のGUIの状態を初期状態として取得し、ログとして記憶装置に出力して記録する第2のステップと、
イベント検出機能により最前面ウインドウ以外のGUIの状態の変更イベントまたはウインドウの消滅イベントを検出するリスナを設定する第3のステップとを具備するとともに、
第3のステップの後、入力装置よりログ記録終了の指示が入力されるまでの間繰り返される、
直接アクセス機能を用いてログ記録対象ソフトウェアのGUIの状態を取得するタイミングの指定に応じて、最前面ウインドウのGUIの状態をログとして記憶装置に出力して記録する第4のステップと、
イベント検出機能により最前面ウインドウ以外のGUIの状態の変更イベントまたはウインドウ消滅イベントが検出されているか調べ、そのイベント情報をログとして記憶装置に出力して記録する第5のステップとを具備する
ことを特徴とする。
【0022】
本発明の第二の発明として、
第一の発明における第4のステップにあっては、
タイムスタンプの情報とともに、直接アクセス機能を用いて、アプリケーションから直接、最前面ウインドウのGUIの状態を取得し、ウインドウまたはGUI部品をノードとし、包含関係をノード間の親子関係で表現し、さらに各ノードは属性情報を有する表現形式で出力し、入力されたログの取得対象から除外するGUI部品またはその属性情報を指定する条件と合致するノードまたはその属性情報を出力から除外する
ことを特徴とする。
【0023】
本発明の第三の発明として、
第一の発明における第4のステップにあっては、
直接アクセス機能を用いてアプリケーションのGUIの状態を取得するタイミングの指定において、時刻指定、またはインターバル指定、またはユーザ操作の指定により、ログの出力・記録の頻度を変更可能とする
ことを特徴とする。
【0024】
本発明の第四の発明として、
第一の発明における第5のステップにあっては、
イベント検出時のタイムスタンプの情報と、イベント検出機能により検出したイベントの最前面ウインドウ以外の属性情報の値の変更、または最前面ウインドウ以外のGUI部品の生成、またはウインドウもしくは最前面ウインドウ以外のGUI部品の消滅のイベントのいずれであるかを示すイベント種別の情報とともに、
最前面ウインドウ以外の属性情報の値の変更イベントであれば、変更対象と対応するGUIの状態の木構造表現におけるノードを特定する情報、変更対象である属性名およびその変更後の値を、
また、最前面ウインドウ以外のGUI部品の生成イベントであれば、生成対象と対応するGUIの状態の木構造表現におけるノードを特定する情報、生成対象の属性情報および親ノードを特定する情報を、
また、ウインドウもしくは最前面ウインドウ以外のGUI部品の消滅の変更イベントであれば、消滅対象と対応するGUIの状態の木構造表現におけるノードを特定する情報をそれぞれ出力する
ことを特徴とする。
【0025】
本発明の第五の発明として、
任意のコンピュータ上で動作するログ記録対象ソフトウェアが当該任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータの入力装置および表示装置を介して提供するGUIに対するユーザ操作のログとして、前記ログ記録対象ソフトウェアがGUIとして前記表示装置の画面上に表示するウインドウの表示状態および当該ウインドウ内のGUI部品の表示状態で表されるGUIの状態を、前記任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータの記憶装置に記録する装置であって、
前記任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータ上に設けられた次の装置、即ち
入力装置と、
記憶装置と、
ログ記録対象ソフトウェアに直接アクセスしてGUIの状態もしくは最前面ウインドウのみのGUIの状態を取得する直接アクセス機能部と、
最前面ウインドウ以外のGUIの状態の変更イベントまたはウインドウの消滅イベントを検出するリスナを設定し、GUIの状態変更に伴って発生するこれらのイベントを検出するイベント検出機能部と、
入力装置より、ログの取得対象から除外するGUI部品またはその属性情報を指定する条件、並びに直接アクセス機能部を用いてログ記録対象ソフトウェアのGUIの状態を取得するタイミングの指定が入力されると、これらを記憶装置に登録し、また、入力装置よりログ記録開始の指示が入力されると、直接アクセス機能部を用いて現在のGUIの状態を初期状態として取得し、ログとして記憶装置に出力して記録し、イベント検出機能部を用いて最前面ウインドウ以外のGUIの状態の変更イベントまたはウインドウの消滅イベントを検出するリスナを設定し、その後、入力装置よりログ記録終了の指示が入力されるまでの間、直接アクセス機能部を用いてログ記録対象ソフトウェアのGUIの状態を取得するタイミングの指定に応じて、最前面ウインドウのGUIの状態をログとして記憶装置に出力して記録し、さらに、イベント検出機能部により最前面ウインドウ以外のGUIの状態の変更イベントまたはウインドウ消滅イベントが検出されているか調べ、そのイベント情報をログとして記憶装置に出力して記録するログ取得制御部とを具備する
ことを特徴とする。
【発明の効果】
【0026】
本発明によれば、GUIアクセシビリティ技術あるいはプラグインを用いて、ユーザ操作のログとしてGUIの状態を記録するとき、情報システム端末の性能やログ記録対象ソフトウェアの性能に応じて、ユーザ操作に対するソフトウェアの応答性能を損なわず、かつGUIの状態を詳細に再現可能な情報をログに記録することが可能になる。
【図面の簡単な説明】
【0027】
【図1】本発明の操作ログを記録する方法を実施する装置の実施の形態の一例を示す構成図である。
【図2】本発明における直接アクセス機能およびイベント検出機能の初期化手続きの処理フローである。
【図3】本発明におけるGUIの状態のログ記録手続きの処理フローである。
【図4】アプリケーションにおけるGUIの状態とこれを木構造を用いて表現した例を示す説明図である。
【図5】木構造におけるノードが保持する属性情報の表現形式の例を示す説明図である。
【図6】ログの取得対象から除外するGUI部品またはその属性情報を指定する条件の例を示す説明図である。
【図7】変更イベント検出時のイベントの種類に応じたログの出力内容を示す説明図である。
【図8】図4のGUIの状態を初期状態として取得した木構造表現を示す説明図である。
【図9】ユーザ操作後のGUIの状態の例を示す説明図である。
【図10】図9のGUIの状態を取得した木構造表現を示す説明図である。
【図11】図4から図9へのGUIの状態の変更イベントの記録内容を示す説明図である。
【図12】ユーザ操作後のGUIの状態の別の例を示す説明図である。
【図13】図12のGUIの状態を取得した木構造表現を示す説明図である。
【図14】ユーザ操作後のGUIの状態のさらに別の例を示す説明図である。
【図15】図14のGUIの状態を取得した木構造表現を示す説明図である。
【図16】図12から図14へのGUIの状態の変更イベントの記録内容を示す説明図である。
【発明を実施するための形態】
【0028】
図1は本発明のユーザ操作のログ記録方法を実施する装置の実施の形態の一例、ここでは周知のコンピュータ上に実現した例を示すもので、図中、1は入力装置、2は記憶装置、3は表示装置、4はコンピュータである。
【0029】
入力装置1は、キーボード、マウス等からなり、ユーザがコンピュータ4に所定の情報、ここではログの取得対象から除外するGUI部品またはその属性情報を指定する条件、直接アクセス機能を用いてアプリケーション(ログ記録対象ソフトウェア)のGUIの状態を取得するタイミングの指定、並びにログ記録開始およびログ記録終了の指示を入力するためのものである。また、本来はログに記録するユーザ操作の種別の指定も入力する。これは、例えばマウスの操作であれば、クリック操作、ダブルクリック操作、ドラッグ操作、押下したマウスボタンの種類などであり、キーボードへの入力であれば、押したキーの内容、キーダウン、キーアップなどである。本発明では、ユーザが操作したときのGUIの状態をログに記録する方法に焦点にあてている。説明を簡単にするために、ユーザ操作の種別の記録方法については、公知の技術と同様として説明を割愛する。
【0030】
記憶装置2は、前述した所定の情報を初期設定値として記憶するとともに、コンピュータ4が実施する図2および図3の手続きによって取得し出力したログを記録するためのものである。表示装置3は、液晶ディスプレイ、CRT等からなり、アプリケーションの画面を表示するとともに、コンピュータ4が実施する図2、図3の手続き中の画面を表示するためのものである。
【0031】
コンピュータ4は、前述した公知のGUIアクセシビリティ技術によって実現される直接アクセス機能部5およびイベント検出機能部6を含み、入力装置1より入力された情報をもとに、図2および図3の手続きに従い、直接アクセス機能部5およびイベント検出機能部6を用いてユーザ操作のログを取得し、これを記憶装置2に出力して記録し、この際、ログ取得制御部7を構成する。
【0032】
直接アクセス機能部5は、ログ取得制御部7が実施する図3の手続きのS31およびS35のステップにおいてGUIの状態の木構造表現を構築するために、アプリケーションに直接アクセスしてGUIの状態もしくは最前面ウインドウのみのGUIの状態を取得する。また、イベント検出機能部6は、ログ取得制御部7が実施する図3の手続きのS32のステップにおいて最前面ウインドウ以外のGUIの状態の変更イベントまたはウインドウの消滅イベント、詳細には最前面ウインドウ以外の属性情報の値の変更、または最前面ウインドウ以外のGUI部品の生成、またはウインドウもしくは最前面ウインドウ以外のGUI部品の消滅のイベントを検出するリスナを設定し、S37のステップにおいてGUIの状態の変更に伴って発生するこれらのイベントを検出する。
【0033】
ログ取得制御部7は、入力装置1より、ログの取得対象から除外するGUI部品またはその属性情報を指定する条件、並びに直接アクセス機能を用いてアプリケーションのGUIの状態を取得するタイミングの指定が入力されると、図2の手続きを実施し、直接アクセス機能部5およびイベント検出機能部6の初期化を行う。
【0034】
図2の手続きにおけるS21のステップの直接アクセス機能部5の初期設定は、具体的には、入力装置1より入力されたログの取得対象から除外するGUI部品またはその属性情報を指定する条件と、直接アクセス機能部5を用いてアプリケーションのGUIの状態を取得するタイミングの指定とを記憶装置2に登録することである。
【0035】
以下、まず、ログの取得対象から除外するGUI部品またはその属性情報を指定する条件について説明する。
【0036】
前述のように、本発明の目的の1つは、ユーザが操作を実施したときのGUIの状態を再現可能なようにログに記録することである。GUIの状態は、アプリケーションの表示ウインドウの集合で形式的に表現する。表示されているウインドウは、ウインドウやその内部に表示されたGUI部品をノードとする木構造で表現する。ノード間の親子関係はウインドウやGUI部品間の表示の包含関係に相当する。例えば、ウインドウ内にボタンのGUI部品がある場合には、そのウインドウに対応するノードとボタンに対応するノードとの間には親子関係が存在する。
【0037】
ウインドウやGUI部品は、一般的には属性情報を保持する。例えば、表示位置、サイズ、名前、GUI部品の型(ラベル、テキストボックス、コンボボックス等)、プロセスIDなどを挙げることができる。さらにウインドウであれば、そのウインドウや内部のGUI部品に対してユーザからの操作が可能か否かなどの情報や最前面に表示されているかの情報、ラベルなどのGUI部品であれば表示されている文字列やそのフォント、フォントサイズ、色等の情報、テキストボックスなどのGUI部品であればその設定値などが付加される。各ノードは、対応するGUI部品におけるこのような属性情報の値を保持する。注意すべきは、取得可能な属性情報は、利用するGUIアクセシビリティ技術やプラグインの機能によって決定されることである。
【0038】
図4にアプリケーションにおけるGUIの状態とこれを木構造を用いて表現した例を示す。この例では、GUIの状態はアプリケーションが2つのウインドウと7つのGUI部品を表示している。図5に図4におけるGUIの状態表現において、木構造におけるノードが保持する属性情報の表現形式を示す。ここでは、ウインドウ1と対応するノードのみの属性情報を示す。
【0039】
属性情報は、属性名とその値の対の集合で表現される。この例では、GUIアクセシビリティ技術によって、名前、型(ウインドウ、ラベル、テキストボックス、コンボボックス等)、プロセスID、設定値が取得可能とする。値が空欄のものは、その属性名に対する値が設定されていないことを意味する(この例の属性名である設定値はテキストボックスなどのユーザからの入力値を値として持ち、ウインドウ1は特にユーザからの入力がないため空欄としている。)。
【0040】
本発明では、GUIアクセシビリティ技術によって、必要な情報をアプリケーションから取得し、図4や図5の例のようなGUIの状態の表現を再現可能なようにログに記録する。ログとして記録する情報は、GUIアクセシビリティ技術などの機能の制限がない限り、多くの情報を取得すべきである。これは、先にも述べたように、ログの分析が進む過程で、分析の観点が変化するためである。しかし、事前に明らかに関心のない情報が判明している場合には、入力装置1よりログの取得対象から除外するGUI部品またはその属性情報の条件を指定することができる。
【0041】
ログの取得対象から除外するGUI部品またはその属性情報を指定する条件は、GUI部品あるいはウインドウ自体を取得対象から除外する、もしくはGUI部品やウインドウ自体は取得するがそのうちの特定の属性情報のみ除外するという条件の種類と、除外対象の具体的な指定情報である条件の内容とから構成される。また、条件の内容とは、条件の種類がGUI部品あるいはウインドウ自体を取得対象から除外するものである場合は、属性名とその値の関係を指定する情報であり、条件の種類がGUI部品やウインドウ自体は取得するがそのうちの特定の属性情報のみ除外するものである場合は、属性名とその値の関係を指定する情報と、その関係が成立するときに除外する属性名を指定する情報である。ここで、関係は一般的な四則演算や大小、等号、不等号などで表現でき、複数の属性名とその値の関係を命題論理記号で組み合わせても良い。図6にログの取得対象から除外するGUI部品またはその属性情報を指定する条件の例を示す。
【0042】
図2の手続きのS21のステップにおける直接アクセス機能部5の初期設定では、このようなログの取得対象から除外するGUI部品またはその属性情報を指定する条件を登録する。また同様に、入力装置1より入力されている直接アクセス機能利用時のGUIの状態を取得するタイミングの指定も登録する。直接アクセス機能利用時のGUIの状態の取得タイミングの指定では、取得時刻指定、またはGUIの状態を取得して次のGUIの状態を取得するインターバルの長さの指定、またはユーザの特定操作(例えばマウスクリックやキーダウン等)に合わせて取得する指定を行うことができる。
【0043】
図2の手続きにおけるS22のステップのイベント検出機能部6の初期設定は、入力装置1より入力されたログの取得対象から除外するGUI部品またはその属性情報を指定する条件を記憶装置2に登録する。
【0044】
また、ログ取得制御部7は、入力装置1より、ログ記録開始の指示が入力されると、直接アクセス機能部5やイベント検出機能部6を利用して、アプリケーションのGUIの状態を取得し、ログとして出力して記憶装置2に記録する。具体的には図3の手続きを実施する。
【0045】
まず、S31のステップにて、直接アクセス機能部5を利用し、現在のGUIの状態の図4および図5のような木構造表現を初期状態として取得し、取得時のタイムスタンプとともにログとして記憶装置2に出力して記録する。
【0046】
次に、S32のステップにて、イベント検出機能部6を利用してGUIの状態変化を記録するため、ここでは最前面ウインドウ以外の属性情報の値の変更、または最前面ウインドウ以外のGUI部品の生成、またはウインドウもしくは最前面ウインドウ以外のGUI部品の消滅のイベントを検出するリスナを設定する。
【0047】
S33からS38のステップは、入力装置1よりログ記録終了の指示が入力されるまで繰り返し実施し、取得した情報をログとして記憶装置2に出力して記録する。
【0048】
即ち、まずS34のステップにて、事前に入力されている直接アクセス機能利用時のGUIの状態の取得タイミングの指定を参照し、現在の状況がそのタイミングの指定に適合しているか調べる。例えば、タイミングの指定が時刻指定であれば、現在の時刻がその時刻であるかを調べる。また、タイミングの指定がインターバル指定であるなら、前にGUIの状態を取得した時刻から指定されたインターバルの期間、時間が経過してるかを調べる。また、タイミングの指定がユーザ操作の指定であれば、ユーザ操作のOSのイベントが発生しているかを調べる。
【0049】
S34のステップにおいて、タイミングの指定と現在の状況が合致している場合には、続くS35のステップで直接アクセス機能部5により、最前面のウインドウのGUIの状態を取得する。例えば、現在表示されているGUIが図4である場合を考える。住所登録ウインドウが最前面ウインドウであるとすると、S35のステップで取得するGUIの状態は、図4におけるウインドウ1をルートノードとする木構造と各ノードが保持する属性情報のみとなる。前述のように、ログ記録対象ソフトウェアの応答性能を損ねないためには、ログ取得処理の高速化が必要になる。直接アクセス機能部5で全てのGUI部品の状態を取得すると処理時間が長くなるため、本発明では最前面ウインドウのGUIの状態に限定して取得する。これによって取得処理の高速化を達成することができる。このように取得した最前面ウインドウのGUIの状態を、取得時のタイムスタンプとともにログとして出力する。その後は、イベント検出機能部6によるログ出力を行うためにS36へ進む。
【0050】
もし、S34のステップにおいて、直接アクセス機能利用時のGUIの状態の取得タイミングの指定を参照し、現在の状況が、そのタイミングの指定に適合していない場合には、ログを出力するタイミングではないため、S35の直接アクセス機能部5によるログ出力は飛ばして、S36へ進む。
【0051】
S36のステップでは、S32のステップでリスナを登録したことによって、GUI状態の変更を検出したイベントが発生しているかを調べる。もし発生しているのなら、そのイベントの内容を、続くS37のステップにてログとして出力する。S32で登録したリスナは最前面ウインドウ以外の属性情報の値の変更、または最前面ウインドウ以外のGUI部品の生成、またはウインドウもしくは最前面ウインドウ以外のGUI部品の消滅のイベントに関するものであることに注意されたい。S35のステップでは、処理の高速化のため直接アクセス機能部5により取得するGUIの状態を最前面ウインドウに関する情報に限定している。そのため、背面ウインドウの状態変化やウインドウの消滅などの情報を取得することができない。そこでS37のステップでイベント検出機能部6により、これらの情報を補完する。出力するイベントの内容は、S31で取得したGUIの状態の木構造表現を、出力したイベントの内容に応じて修正することで、現在のGUIの状態の木構造表現の再現が可能なようにする必要がある。そこで変更イベントを検出した場合、イベント発生のタイムスタンプとともに、そのイベントの種類に応じて、少なくとも図7のような情報を出力して記録する。
【0052】
即ち、イベントの種類が、最前面ウインドウ以外の属性値の変更であった場合、変更のあったGUI部品またはウインドウと対応するGUIの状態表現におけるノードを特定する情報と、変更のあった属性名および値を出力する。例えば、図4のGUIの状態における住所の隣のテキストボックスに“日本”という文字列が入力され、GUIの状態が変化したしたことをイベントで検知したとする。そのイベントからは、GUIの状態表現におけるノードを特定する情報として“部品3”を、変更のあった属性名の情報として“設定値”を、さらに変更後の値の情報として“日本”をログに出力する。
【0053】
同様に、イベントの種類が最前面ウインドウ以外のGUI部品の生成であった場合、生成されたGUI部品と対応するノードを特定する情報およびその属性情報を記録する。さらに、生成されたGUI部品と対応するノードの親ノードの情報を出力する。例えば、図4のGUIの状態におけるエラー画面ウインドウの確認ボタンが新規に生成され、GUIの状態が変化したしたことをイベントで検知したとする。この場合は、GUIの状態表現におけるノードを特定する情報として“部品7”および確認ボタンの属性情報を出力し、さらに、該当のボタンは、エラー画面ウインドウに含まれるため、親ノードの情報として“ウインドウ2”を出力する。
【0054】
さらに、イベントの種類が、ウインドウや最前面ウインドウ以外のGUI部品の消滅であった場合は、消滅したウインドウまたはGUI部品と対応するノードを特定する情報を出力する。例えば、図4のGUIの状態におけるエラー画面ウインドウが消滅し、GUIの状態が変化したしたことをイベントで検知したとする。この場合は、消滅したウインドウまたはGUI部品と対応するノードを特定する情報として、“ウインドウ2”を出力する。
【0055】
一般に、ユーザ操作に対するGUIの変化は、最前面ウインドウにて多発する。本発明では、最前面ウインドウのGUIの状態を直接アクセス機能部5にて取得し、イベント検出機能部6では取得しない(リスナを登録しない)。これによって、検知するイベントの量を大きく削減することができ、結果としてイベントキューのオーバーフローによるイベント廃棄を防止し、GUIの状態変化を正確に検知することができる。
【0056】
S36のステップにおいて、変更イベントを検出できていない場合には、イベントの記録は不要であるため、S37のステップを飛ばして手続きを継続する。
【0057】
以上のように、S33からS38のステップを、入力装置1よりログ記録終了の指示が入力されるまで繰り返す。
【0058】
なお、S31やS35のステップにおいて、直接アクセス機能部5によりGUIの状態の木構造表現を取得するとき、もし事前にログの取得対象から除外するGUI部品またはその属性情報を指定する条件が入力されていれば、その条件に合致するGUI部品またはその属性情報は取得対象としない。また、S37のステップにおいて検出したイベントが、やはり前述の条件に合致するGUI部品またはその属性情報に関する変更だった場合、ログ出力を実施しない。
【0059】
なお、前述した実施の形態では、直接アクセス機能部5、イベント検出機能部6およびログ取得制御部7をコンピュータ4上で実現した例を示したが、ハードウェアで実現しても良い。また、これらの各装置が、適切な通信路を通じて相互に接続された複数のコンピュータ(ハードウェア資源)上に分散して存在し、相互に通信し合いながら実行することもできる。
【0060】
本発明の装置がログの記録対象とするソフトウェアは、コンピュータ4において動作しても良いし、適切な通信路を通じて相互に接続された別のコンピュータ(ハードウェア資源)上で動作していても良い。
【実施例1】
【0061】
ここでは、本発明の実施例として、図1の構成をとった場合におけるユーザ操作のログ記録方法を説明する。
【0062】
まず、本発明を利用するにあたって、事前にログの取得対象から除外するGUI部品またはその属性情報を指定する条件を入力装置1より入力する。ここでは、図6の情報を入力する。さらに、入力装置1より、直接アクセス機能部5でGUIの状態を取得するタイミングの指定を行う。
【0063】
タイミングの指定は、実運用上はアプリケーションが動作する情報システム端末(コンピュータ)の性能を考慮して設定する必要がある。先にも述べたように、直接アクセス機能部5によるGUIの状態の取得は、頻度を増やせば、ユーザ操作に対するアプリケーションの応答性能を劣化させるケースがある。ここではユーザのマウスクリックおよびキーボード入力のときのみ、直接アクセス機能部5でGUIの状態を取得するようにタイミングを指定するものとする。
【0064】
前述したように入力装置1より各種の初期パラメータが入力されると、コンピュータ4におけるログ取得制御部7は、図2の手続きを実施し、入力パラメータを記憶装置2に登録して直接アクセス機能部5およびイベント検出機能部6を初期化する。
【0065】
次に、入力装置1よりログ記録開始の指示が入力されると、コンピュータ4のログ取得制御部7は、図3の手続きを実施する。このときの情報システム端末のGUIの状態が図4に示されたもので、さらにGUIアクセシビリティ技術もしくは専用プラグインで取得可能な属性情報が、図5に示された属性名のように名前、型、プロセスID、設定値の情報であると仮定して、実施例の説明を継続する。
【0066】
まず、図3の手続きに従って、S31のステップを実施し、直接アクセス機能部5が図4のGUIの状態を初期状態としてアプリケーションから取得する。本実施例では、図6に示されたログの取得対象から除外するGUI部品またはその属性情報を指定する条件があるため、ここで取得するGUIの状態の木構造表現は、図8のようになる。但し、ここでのウインドウやGUI部品のプロセスIDはすべて“1111”である。図6の条件3により型がタイトルバーである部品1および部品5のノードが取得対象から除外されている。また同様に、図6の条件2により型がウインドウであるウインドウ1およびウインドウ2の属性情報から設定値の情報が除外されていることに注意されたい。S31では、図8の情報と取得時のタイムスタンプを、例えばXMLのような構造データの表現形式で記憶装置2に記録する。
【0067】
続いてログ取得制御部7は図3のS32のステップに進み、イベント検出機能部6を用いてイベント検出のためのリスナを設定する。リスナは最前面ウインドウ以外の属性情報の値の変更、または最前面ウインドウ以外のGUI部品の生成、またはウインドウもしくは最前面ウインドウ以外のGUI部品の消滅のイベントに関するもののみを登録する。リスナの設定後は、入力装置1よりログ記録終了の指示が入力されるまで、S33からS38のステップを繰り返す。
【0068】
ここで、例えば図4の現在のGUIの状態において、ユーザがエラー画面ウインドウの確認ボタンを押下し、エラー画面ウインドウが消滅して図9のようなGUIの状態になったときを考える。このとき、ログ取得制御部7は、直接アクセス機能部5によるログ取得タイミングがマウスクリックと指定されているため、図3のS34、S35とステップを実行する。
【0069】
S35のステップでは直接アクセス機能部5を利用して、図9の最前面ウインドウのGUIの状態の木構造表現を取得し、取得時のタイムスタンプとともに、GUIの状態の木構造表現をXML形式などで記憶装置2に記録する。ここで取得したGUIの状態の木構造表現を図10に示す。ここでは最前面ウインドウのGUIの状態しか取得しないため、高速にログ取得処理を実施することができる。その一方で、ここで取得した情報からはそれまで最前面ウインドウであったエラー画面ウインドウが消滅したのか、それとも背面に配置されたのか判断できないことに注意されたい。これらを判定できるようにするために、続く図3のS36のステップでイベント検出機能部6を利用する。
【0070】
また、この際、イベント検出機能部6により、エラー確認ウインドウが消滅したことを正しく検出できている場合、検出したイベント情報を図7の内容に従って、イベント検出時のタイムスタンプとともに記憶装置2に記録する。記憶装置2に記録するイベントの内容を図11に示す(タイムスタンプはイベントの発生やGUIの状態取得の順序が特定できる情報であれば、特に形式は問わない)。なお、実際は、エラー確認ウインドウのタイトルバーの消滅のイベントも同時に発生するが、ログの取得対象から除外するGUI部品またはその属性情報を指定する条件である図6の条件3と合致するため、記録対象から除外する。
【0071】
正確にイベントを検出できれば、S31で取得した初期のGUIの状態に対して、イベントの情報を反映させることで、現在のGUIの状態を再現できることに注意されたい。
【0072】
例えば、図8の初期のGUIの状態の木構造表現に対して、図11で取得したイベントの内容からウインドウ2、部品6、部品7のノードおよびその属性情報を削除することで、図10とまったく同一のGUI状態の木構造表現を取得することができる。
【0073】
イベントは、GUIの状態の変化に関する情報のみを検出できるため、少ないデータ量で詳細にGUIの状態を再現可能にするという特徴がある。しかし、問題点は、先にも述べたようにGUIの状態が変化したのにもかかわらず、大量のイベントが併発するなどして、イベントを検出できない場合があることである。
【0074】
本発明では、表示が頻繁に変化しイベントが多発する最前面ウインドウのGUIの状態については直接アクセス機能部5で取得し、それ以外のGUIの変化はイベント検出機能部6で取得する。よって、検出するイベントを限定する(登録するリスナを限定する)ことができ、イベントの大量検知によるイベントの検出漏れを防止することが可能となる。
【0075】
次に、ユーザが図9のGUIの状態に対して、住所の隣のテキストボックスに「日本」とキーボード入力し、図12のようなGUIの状態になった場合を考える。この場合、ログ取得制御部7は、図3の手続きにおいて、S34、S35、S36、S38のステップを実施する。直接アクセス機能部5を利用して状態を取得するタイミングの指定がキーボード入力としているS35のステップにて、最前面ウインドウのGUIの状態が取得される。取得した情報を図13に示す。図12のような変更に伴い、最前面ウインドウのGUI部品の属性値の変更イベントが本来発生するが、S32のステップで登録したリスナが最前面以外のウインドウのGUI部品の属性値の変更に限定されている。そのためS36のステップではイベントが発生せず、S37でイベント検出機能部6によるイベント検出が行われない。結果として、ここでのキーボード入力に対しては、図13の情報が記憶装置2に記録される。
【0076】
最後に、図12のGUIの状態に対して、ユーザが登録ボタンをマウスクリックし、図14のように新規に「登録完了です。」というラベルのGUI部品が住所登録ウインドウに生成され、さらに最前面に結果ウインドウが表示された場合のログ取得制御部7の動作を説明する。
【0077】
このとき、図3の手続きのS34、S35、S36、S37のステップが実施される。マウスクリックが行われるため、S35の直接アクセス機能部5による最前面ウインドウのGUIの状態の取得が実施され、ここでは結果ウインドウに対する図15の木構造表現が取得時のタイムスタンプとともに、記憶装置2に記録される。また、続くS36のイベントで背面ウインドウで新たに生成されたラベルのGUI部品のイベントが検出され、S37のステップにより図16の情報が記憶装置2に記録される。
【0078】
本実施例のように、本発明は、直接アクセス機能によるGUIの状態取得を最前面ウインドウに限定することで取得処理の高速化を実現でき、さらに背面ウインドウのGUIの状態変化のみを検出することでイベントの大量検知による検知漏れを防止することができる。このようにログ取得対象ソフトウェアの応答性能を劣化させずに、正確なGUIの状態変化を記録することが可能となる。
【符号の説明】
【0079】
1:入力装置、2:記憶装置、3:表示装置、4:コンピュータ、5:直接アクセス機能部、6:イベント検出機能部、7:ログ取得制御部。
【先行技術文献】
【非特許文献】
【0080】
【非特許文献1】K. D. Fenstermacher and M. Ginsburg, "A Lightweight Framework for Cross-Application User Monitoring", IEEE Computer, Vol.35, Issue 3, pp. 51-59, 2002
【非特許文献2】高橋、毛利、織田、岩山、"PC作業可視化のためのアプリ操作ログ推測手法"、情報処理学会創立50周年記念(第72回)全国大会講演論文集、pp.4-541 - 4-542、2010
【非特許文献3】“UIオートメーションの概要”、[online]、Microsoft Corporation、[平成23年7月5日検索]、インターネット<URL:http://msdn.microsoft.com/ja-jp/library/ms747327(v=vs.80).aspx>
【非特許文献4】“Java IDL”、[online]、Sun Microsystems, Inc.、[平成23年10月14日検索]、インターネット<URL:http://java.sun.com/j2se/1.4/ja/docs/ja/guide/access/index.html>
【非特許文献5】“日立のユニバーサルデザイン”、[online]、株式会社日立製作所、[平成23年10月14日検索]、インターネット<URL:http://www.hitachi.co.jp/universaldesign/ria/ajax/wai-aria/index.html>

【特許請求の範囲】
【請求項1】
任意のコンピュータ上で動作するログ記録対象ソフトウェアが当該任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータの入力装置および表示装置を介して提供するGUIに対するユーザ操作のログとして、前記ログ記録対象ソフトウェアがGUIとして前記表示装置の画面上に表示するウインドウの表示状態および当該ウインドウ内のGUI部品の表示状態で表されるGUIの状態を、前記任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータの記憶装置に記録する方法であって、
前記任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータが、
入力装置より入力された、ログの取得対象から除外するGUI部品またはその属性情報を指定する条件、並びに直接アクセス機能を用いてログ記録対象ソフトウェアのGUIの状態を取得するタイミングの指定を記憶装置に登録する第1のステップと、
入力装置より入力されたログ記録開始の指示により、直接アクセス機能を用いて現在のGUIの状態を初期状態として取得し、ログとして記憶装置に出力して記録する第2のステップと、
イベント検出機能により最前面ウインドウ以外のGUIの状態の変更イベントまたはウインドウの消滅イベントを検出するリスナを設定する第3のステップとを具備するとともに、
第3のステップの後、入力装置よりログ記録終了の指示が入力されるまでの間繰り返される、
直接アクセス機能を用いてログ記録対象ソフトウェアのGUIの状態を取得するタイミングの指定に応じて、最前面ウインドウのGUIの状態をログとして記憶装置に出力して記録する第4のステップと、
イベント検出機能により最前面ウインドウ以外のGUIの状態の変更イベントまたはウインドウ消滅イベントが検出されているか調べ、そのイベント情報をログとして記憶装置に出力して記録する第5のステップとを具備する
ことを特徴とするユーザ操作のログ記録方法。
【請求項2】
第4のステップにあっては、
タイムスタンプの情報とともに、直接アクセス機能を用いて、アプリケーションから直接、最前面ウインドウのGUIの状態を取得し、ウインドウまたはGUI部品をノードとし、包含関係をノード間の親子関係で表現し、さらに各ノードは属性情報を有する表現形式で出力し、入力されたログの取得対象から除外するGUI部品またはその属性情報を指定する条件と合致するノードまたはその属性情報を出力から除外する
ことを特徴とする請求項1に記載のユーザ操作のログ記録方法。
【請求項3】
第4のステップにあっては、
直接アクセス機能を用いてアプリケーションのGUIの状態を取得するタイミングの指定において、時刻指定、またはインターバル指定、またはユーザ操作の指定により、ログの出力・記録の頻度を変更可能とする
ことを特徴とする請求項1に記載のユーザ操作のログ記録方法。
【請求項4】
第5のステップにあっては、
イベント検出時のタイムスタンプの情報と、イベント検出機能により検出したイベントの最前面ウインドウ以外の属性情報の値の変更、または最前面ウインドウ以外のGUI部品の生成、またはウインドウもしくは最前面ウインドウ以外のGUI部品の消滅のイベントのいずれであるかを示すイベント種別の情報とともに、
最前面ウインドウ以外の属性情報の値の変更イベントであれば、変更対象と対応するGUIの状態の木構造表現におけるノードを特定する情報、変更対象である属性名およびその変更後の値を、
また、最前面ウインドウ以外のGUI部品の生成イベントであれば、生成対象と対応するGUIの状態の木構造表現におけるノードを特定する情報、生成対象の属性情報および親ノードを特定する情報を、
また、ウインドウもしくは最前面ウインドウ以外のGUI部品の消滅の変更イベントであれば、消滅対象と対応するGUIの状態の木構造表現におけるノードを特定する情報をそれぞれ出力する
ことを特徴とする請求項1に記載のユーザ操作のログ記録方法。
【請求項5】
任意のコンピュータ上で動作するログ記録対象ソフトウェアが当該任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータの入力装置および表示装置を介して提供するGUIに対するユーザ操作のログとして、前記ログ記録対象ソフトウェアがGUIとして前記表示装置の画面上に表示するウインドウの表示状態および当該ウインドウ内のGUI部品の表示状態で表されるGUIの状態を、前記任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータの記憶装置に記録する装置であって、
前記任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータ上に設けられた次の装置、即ち
入力装置と、
記憶装置と、
ログ記録対象ソフトウェアに直接アクセスしてGUIの状態もしくは最前面ウインドウのみのGUIの状態を取得する直接アクセス機能部と、
最前面ウインドウ以外のGUIの状態の変更イベントまたはウインドウの消滅イベントを検出するリスナを設定し、GUIの状態変更に伴って発生するこれらのイベントを検出するイベント検出機能部と、
入力装置より、ログの取得対象から除外するGUI部品またはその属性情報を指定する条件、並びに直接アクセス機能部を用いてログ記録対象ソフトウェアのGUIの状態を取得するタイミングの指定が入力されると、これらを記憶装置に登録し、また、入力装置よりログ記録開始の指示が入力されると、直接アクセス機能部を用いて現在のGUIの状態を初期状態として取得し、ログとして記憶装置に出力して記録し、イベント検出機能部を用いて最前面ウインドウ以外のGUIの状態の変更イベントまたはウインドウの消滅イベントを検出するリスナを設定し、その後、入力装置よりログ記録終了の指示が入力されるまでの間、直接アクセス機能部を用いてログ記録対象ソフトウェアのGUIの状態を取得するタイミングの指定に応じて、最前面ウインドウのGUIの状態をログとして記憶装置に出力して記録し、さらに、イベント検出機能部により最前面ウインドウ以外のGUIの状態の変更イベントまたはウインドウ消滅イベントが検出されているか調べ、そのイベント情報をログとして記憶装置に出力して記録するログ取得制御部とを具備する
ことを特徴とするユーザ操作のログ記録装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2013−97616(P2013−97616A)
【公開日】平成25年5月20日(2013.5.20)
【国際特許分類】
【出願番号】特願2011−240554(P2011−240554)
【出願日】平成23年11月1日(2011.11.1)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】