(57)【要約】【課題】ＧＵＩアプリケーションのＧＵＩ要素ごとにイベント検出処理を実装する必要のない操作記録装置を提供することを目的とする。【解決手段】一以上のＧＵＩ要素を含むＧＵＩアプリケーションにおけるユーザの操作を記録する操作記録装置であって、前記ＧＵＩ要素において検出されたイベントのうち、所定の型のイベントを検出するイベント検出手段と、ＧＵＩ要素の型の情報を用いて、検出された該イベントから前記ユーザの操作に関するイベントを特定するイベント特定手段と、特定された前記イベントの情報を記録するイベント情報記録手段と、を有する、操作記録装置を提供する。【選択図】図２
2013239155.tif 000002
【特許請求の範囲】
【請求項１】
一以上のＧＵＩ要素を含むＧＵＩアプリケーションにおけるユーザの操作を記録する操作記録装置であって、
前記ＧＵＩ要素において検出されたイベントのうち、所定の型のイベントを検出するイベント検出手段と、
ＧＵＩ要素の型の情報を用いて、検出された該イベントから前記ユーザの操作に関するイベントを特定するイベント特定手段と、
特定された前記イベントの情報を記録するイベント情報記録手段と、
を有する、操作記録装置。
【請求項２】
前記イベント特定手段は、前記ＧＵＩ要素の名称の情報をさらに用いて、前記イベントを特定する、
請求項１に記載の操作記録装置。
【請求項３】
前記ＧＵＩ要素の名称の情報は、前記ＧＵＩ要素に係る属性情報として定義される、
請求項２に記載の操作記録装置。
【請求項４】
前記所定の型のイベントの発生を前記イベント検出手段に通知するイベント通知手段
を有し、
前記イベント通知手段は、木構造を有する前記一以上のＧＵＩ要素において発生したイベントを、前記一以上のＧＵＩ要素のうちの根ノードのＧＵＩ要素に通知する、
請求項１乃至３何れか一項に記載の操作記録装置。
【請求項５】
前記イベント通知手段が通知する前記イベントは、ＷＰＦにおけるトンネルイベントである、
請求項４に記載の操作記録装置。
【請求項６】
前記イベント特定手段は、前記イベント検出手段が検出した前記イベントの発生した前記ＧＵＩ要素の型が、予め用意されたＧＵＩ要素の型のリストに含まれる場合に、該イベントを前記ユーザの操作に関するイベントと特定する、
請求項１乃至５何れか一項に記載の操作記録装置。
【請求項７】
前記イベントの情報は、前記ＧＵＩ要素に係る属性情報の値を含む、
請求項１乃至６何れか一項に記載の操作記録装置。
【請求項８】
一以上のＧＵＩ要素を含むＧＵＩアプリケーションにおけるユーザの操作を記録する操作記録方法であって、
前記ＧＵＩ要素において検出されたイベントのうち、所定の型のイベントを検出するイベント検出段階と、
ＧＵＩ要素の型の情報を用いて、検出された該イベントから前記ユーザの操作に関するイベントを特定するイベント特定段階と、
特定された前記イベントの情報を記録するイベント情報記録段階と、
を有する、操作記録方法。
【請求項９】
一以上のＧＵＩ要素を含むＧＵＩアプリケーションにおけるユーザの操作を記録する操作記録方法をコンピュータに実行させる操作記録プログラムであって、
前記ＧＵＩ要素において検出されたイベントのうち、所定の型のイベントを検出するイベント検出段階と、
ＧＵＩ要素の型の情報を用いて、検出された該イベントから前記ユーザの操作に関するイベントを特定するイベント特定段階と、
特定された前記イベントの情報を記録するイベント情報記録段階と、
をコンピュータに実行させる、操作記録プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、操作記録装置、操作記録方法及び操作記録プログラムに関し、特に、ＧＵＩアプリケーションにおけるユーザ操作を記録する操作記録装置、操作記録方法及び操作記録プログラムに関する。
【背景技術】
【０００２】
ＧＵＩ（Graphical  User  Interface）を用いたアプリケーションにおいて、ユーザの操作の履歴を取得して保管する仕組みが存在する。ユーザの操作は、アプリケーションを構成するＧＵＩ要素において発生するイベント（例えば、「確認」ボタン上でのマウスの左ボタンのクリックや、テキストボックス内でのキーボード入力操作等）を検出することによって、取得することができる。このようにして取得されたユーザの操作の履歴は、例えば、ユーザの操作に起因して生じたアプリケーションの問題を解析するために用いられる。
【０００３】
特許文献１には、計算機システム内で発生したイベントを検出し、イベントＩＤ又はイベントメッセージが所定の条件を満たすイベントを保存する、イベント制御装置が開示されている。
【０００４】
特許文献２には、アプリケーションの起動、ウィンドウのオープン又は文字入力のようなユーザの操作を、アプリケーション又はウィンドウのＩＤと合わせて記憶する機構が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３４１８０３４号
【特許文献２】特開２００４−２１４３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、既存の方法においては、ＧＵＩ要素において発生するイベントを検出するために、各ＧＵＩ要素において、イベントを検出して記録する処理を実装する必要があった。このため、ＧＵＩ要素の追加又は変更が行われるたびに、そのような処理を追加又は変更する必要があり、実装のためのコストがかかっていた。
【０００７】
本発明は、このような問題に鑑みてなされたものであり、ＧＵＩアプリケーションのＧＵＩ要素ごとにイベント検出処理を実装する必要のない操作記録装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し目的を達成するため、本発明の一実施形態における操作記録装置は、
一以上のＧＵＩ要素を含むＧＵＩアプリケーションにおけるユーザの操作を記録する操作記録装置であって、
前記ＧＵＩ要素において検出されたイベントのうち、所定の型のイベントを検出するイベント検出手段と、
ＧＵＩ要素の型の情報を用いて、検出された該イベントから前記ユーザの操作に関するイベントを特定するイベント特定手段と、
特定された前記イベントの情報を記録するイベント情報記録手段と、
を有する。
【０００９】
また、本発明の一実施形態における操作記録方法は、
一以上のＧＵＩ要素を含むＧＵＩアプリケーションにおけるユーザの操作を記録する操作記録方法であって、
前記ＧＵＩ要素において検出されたイベントのうち、所定の型のイベントを検出するイベント検出段階と、
ＧＵＩ要素の型の情報を用いて、検出された該イベントから前記ユーザの操作に関するイベントを特定するイベント特定段階と、
特定された前記イベントの情報を記録するイベント情報記録段階と、
を有する。
【００１０】
また、本発明の一実施形態における操作記録プログラムは、
一以上のＧＵＩ要素を含むＧＵＩアプリケーションにおけるユーザの操作を記録する操作記録方法をコンピュータに実行させる操作記録プログラムであって、
前記ＧＵＩ要素において検出されたイベントのうち、所定の型のイベントを検出するイベント検出段階と、
ＧＵＩ要素の型の情報を用いて、検出された該イベントから前記ユーザの操作に関するイベントを特定するイベント特定段階と、
特定された前記イベントの情報を記録するイベント情報記録段階と、
をコンピュータに実行させる、操作記録プログラムである。
【発明の効果】
【００１１】
本発明によれば、ＧＵＩアプリケーションのＧＵＩ要素ごとにイベント検出処理を実装する必要のない操作記録装置を提供できる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態における操作記録装置のハードウェア構成の例を表す図。
【図２】本発明の一実施形態における操作記録装置の機能ブロックの例を表す図。
【図３】ＧＵＩアプリケーションを構成するＧＵＩ要素の要素ツリーの例を表す図。
【図４】本発明の一実施形態における操作記録装置によるＧＵＩアプリケーションの起動時の処理を表すフローチャート。
【図５】本発明の一実施形態における操作記録装置によるイベント検出処理を表すフローチャート。
【図６】本発明の一実施形態における操作記録装置による操作履歴の記録処理を表すフローチャート。
【図７】本発明の一実施形態における操作記録装置による操作履歴の記録処理を表すフローチャート。
【図８】本発明の一実施形態における操作記録装置が用いるイベント抽出条件定義テーブルの例を表す図。
【図９】本発明の一実施形態における操作記録装置が用いる対象要素型定義テーブルの例を表す図。
【図１０】本発明の一実施形態における操作記録装置が用いる対象要素テーブルの例を表す図。
【図１１】本発明の一実施形態における操作記録装置が出力する操作履歴情報の例を表す図。
【図１２】ＧＵＩアプリケーションの表示例を表す図。
【図１３】ＧＵＩアプリケーションのＸＡＭＬファイルの例を表す図。
【図１４】本発明の一実施形態における操作記録装置によるＧＵＩアプリケーションの起動時の処理を表すフローチャート。
【図１５】本発明の一実施形態における操作記録装置によるイベント検出処理を表すフローチャート。
【図１６】本発明の一実施形態における操作記録装置が用いる対象要素名定義テーブルの例を表す図。
【図１７】本発明の一実施形態における操作記録装置が用いる対象要素型定義テーブルの例を表す図。
【図１８】本発明の一実施形態における操作記録装置が用いる対象要素テーブルの例を表す図。
【図１９】本発明の一実施形態における操作記録装置が出力する操作履歴情報の例を表す図。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態を図面に基づいて説明する。
【００１４】
１．概要
２．ハードウェア構成
３．機能構成
４．処理フロー
４．１  ＧＵＩアプリケーションの起動時の処理フロー
４．２  イベント検出処理フロー
４．３  操作履歴の記録処理フロー
５．応用例
【００１５】
（１．概要）
まず、本発明の一実施形態における操作記録装置の構成の概要について説明する。当該操作記録装置と、操作の記録対象となるＧＵＩアプリケーションは、Ｍｉｃｒｏｓｏｆｔ（登録商標）社によって開発された、ＷＰＦ（Windows  Presentation  Foundation）のフレームワークを用いて構成することができる。
【００１６】
ＷＰＦにおいては、ＧＵＩアプリケーションを構成するＧＵＩ要素が、例えば図３で表されるような木構造３００（以下、「要素ツリー」と呼ぶ）を構成する。図３の例では、ルート要素３１０（根ノード）は「Window」要素であり、その子要素（子ノード）として、「Canvas」要素と「Grid」要素が存在する。そして、「Grid」要素の下に、さらに子要素としての「Button」要素と「Checkbox」要素が存在する。ＷＰＦでは、これらのＧＵＩ要素に対して行われるユーザの入力に応じて、バブルイベントとトンネルイベントの二種類のイベントが発生する。ＷＰＦは、バブルイベントが発生すると、最初にイベントの発生元のＧＵＩ要素に登録されたイベントハンドラを呼び出し、要素ツリー３００のルート要素３１０に到達するまで、順次、親要素のイベントハンドラを呼び出す。一方、ＷＰＦは、トンネルイベントが発生すると、最初にルート要素３１０に登録されたイベントハンドラを呼び出す。そして、その後、要素ツリー３００に従って、イベント発生元の要素まで、順次、子要素のイベントハンドラを呼び出す。これらのイベントの発生に伴って呼び出されたイベントハンドラは、ＷＰＦから、イベント発生元であるＧＵＩ要素の情報や、ＧＵＩ要素の状態を示すプロパティ（属性情報）を含む、イベント付帯情報を受信する。なお、要素ツリー３００は、ＷＰＦによるＧＵＩアプリケーションに含まれる、ＸＡＭＬ（Extensible  Application  Markup  Language）形式のファイルから取得することができる。
【００１７】
本発明の一実施形態における操作記録装置は、要素ツリー３００のルート要素３１０に対してイベント検出処理を行うイベントハンドラを登録することで、要素ツリーを構成する全ての子要素におけるトンネルイベントのイベント付帯情報を取得することができる。その結果、要素ツリーを構成するＧＵＩ要素ごとに、イベント検出処理を実装する必要がなくなる。
【００１８】
（２．ハードウェア構成）
図１を用いて、本発明の一実施形態における操作記録装置１００のハードウェア構成について説明する。図１で例示される操作記録装置１００は、ＣＰＵ１０２と、ＲＯＭ１０４と、ＲＡＭ１０６と、ＨＤＤ１０８と、通信装置１１０と、表示装置１１２と、入力装置１１４と、バス１１６を有する。
【００１９】
ＣＰＵ１０２は、当該操作記録装置１００の動作制御を行うシステムプログラムや、ユーザアプリケーションを実行する。ＲＯＭ１０４は、ＣＰＵ１０２が実行するシステムプログラム等を記憶する。ＲＡＭ１０６は、ＣＰＵ１０２のワークエリアを構成する。ＨＤＤ１０８は、システムプログラム、ユーザアプリケーション及びユーザデータ等を記憶する。通信装置１１０は、例えば、有線又は無線の通信インターフェースとその制御装置を含み、外部の装置と通信を行うために用いられる。表示装置１１２は、例えば、ディスプレイ及びグラフィックスコントローラを含み、ユーザに対して情報を提示する。入力装置１１４は、例えばキーボードやマウス、タッチパネルのような、ユーザから入力を受け付ける。バス１１６は、操作記録装置１００を構成する上記装置を相互に接続し、データのやり取りを行う。
【００２０】
上記構成により、本発明の一実施形態における操作記録装置１００は、ＧＵＩアプリケーションのＧＵＩ要素ごとにイベント検出処理を実装する必要のない操作記録装置を提供することができる。
【００２１】
（３．機能構成）
次に、図２を用いて、本発明の一実施形態における操作記録装置１００の機能ブロックについて説明する。図２には、操作記録装置１００が備える様々な要素のうち、本実施形態の説明に特に関連する要素が示されている。図２における操作記録装置１００は、入力手段２００と、イベント通知手段２０２と、登録手段２０４と、対象イベント管理手段２０６と、イベント検出手段２０８と、イベント特定手段２１０と、対象要素管理手段２１２と、操作履歴記録手段２１４と、表示手段２１６を有する。
【００２２】
入力手段２００は、ＧＵＩアプリケーションを利用するユーザが、入力装置１１４を通じて行った入力を受け付ける。当該入力の情報（例えば、マウスのどのボタンがクリックされたか、どのキー入力がなされたか、等）は、ＯＳ（Operating  System）を通じて、イベント通知手段２０２に通知される。
【００２３】
イベント通知手段２０２は、入力手段２００におけるユーザからの入力を、入力イベントとして、イベント検出手段２０８に通知する。当該通知は、イベント通知手段２０２が、後述する登録手段２０４によってルート要素３１０に登録された、イベントハンドラとしてのイベント検出手段２０８を呼び出すことによって行われる。また、イベント通知手段２０２は、当該通知とともに、イベント付帯情報をイベント検出手段２０８に渡す。イベント通知手段２０２は、ＷＰＦの機能を用いて実現できる。
【００２４】
登録手段２０４は、イベント検出手段２０８を、イベントハンドラとしてイベント通知手段２０２に登録する。より詳細には、登録手段２０４は、後述する対象イベント管理手段２０６において特定されたイベントの型についてのイベントを取得できるよう、イベント検出手段２０８を、要素ツリーのルート「Window」に対して登録する。ＷＰＦにおける、イベントハンドラの登録手続きは、以下の通りである。  
要素オブジェクト.イベント型  +=  イベントハンドラ
要素オブジェクトとは、ＧＵＩ要素のオブジェクト（インスタンス）を表す。本実施形態では、図３に示すように、ルート要素３１０である「Window」のオブジェクトを指定する。イベント型とは、ユーザからの入力の態様に応じて予め定義されたイベントの型であり、例えば、「PreviewMouseLeftButtonDown」や、「PreviewKeyDown」等がある。「PreviewMouseLeftButtonDown」は、マウスの左ボタンがクリックされたときに発生するトンネルイベントの型を表す。また、「PreviewKeyDown」は、キーボードのボタンが押下されたときに発生するトンネルイベントを表す。本実施形態では、ルート要素３１０において、要素ツリー３００を構成する子要素全てのイベントを全て検出できるように、トンネルイベントの型を指定する。本実施形態においては、イベントハンドラは、イベント検出手段２０８に相当する。登録手段２０４は、後述する対象イベント管理手段２０６によって特定されたイベント型について、イベント検出手段２０８を登録する。
【００２５】
対象イベント管理手段２０６は、登録手段２０４がイベントハンドラを登録する時に指定すべき、イベントの型を特定する。当該イベントの型は、例えば図８に示されるイベント抽出条件定義テーブル８００によって定義される。図８に示されるイベント抽出条件定義テーブル８００は、イベントＩＤと、イベント型と、イベント表記名の項目を含む。イベントＩＤは、検出されたイベントの型を特定するために付されたＩＤである。イベント型は、検出対象となるイベントの型を表す。イベント表記名は、イベントの型を、ユーザにとってわかりすい表現にするための表記名である。イベント表記名は、後に、操作の履歴を記録する際に用いられる。先述した登録手段２０４は、当該対象イベント管理手段２０６によって特定されたイベントの型の、イベント情報を検出できる。なお、イベント抽出条件定義テーブル８００は、ユーザによって予め定義されてもよい。また、対象イベント管理手段２０６は、必要に応じて、イベント抽出条件定義テーブル８００に記載された内容を追加又は削除してもよい。
【００２６】
イベント検出手段２０８は、イベント通知手段２０２からの通知を受けて、対象イベント管理手段２０６によって特定されたイベントの型のイベントを検出する。また、イベント検出手段２０８は、イベント検知手段２０４から、イベント発生元要素の情報や、ＧＵＩ要素の状態を示すプロパティを含む、イベント付帯情報を受け取る。例えば、ＷＰＦにおいて、イベントハンドラであるイベント検出手段２０８は、イベント検知手段２０４から、イベント付帯情報を含むオブジェクトへの参照を、引数として受け取る。受け取ったイベント付帯情報は、イベント特定手段２１０に渡される。
【００２７】
イベント特定手段２１０は、イベント検出手段２０８からイベント付帯情報を受け取る。そして、受け取ったイベント付帯情報のイベント発生元のＧＵＩ要素の型が、後述する対象要素管理手段２１２によって指定されたＧＵＩ要素の型であれば、イベント付帯情報から、所定のプロパティ情報を取得する。所定のプロパティ情報とは、例えば、要素の型が「System.Windows.Controls.Button」である場合には、ＧＵＩ要素のオブジェクト名及びボタンのラベルであってもよい。取得されるプロパティ情報は任意である。取得すべきプロパティ情報は、後述する対象要素管理手段２１２によって特定される。取得されたプロパティ情報は、イベント発生日時情報、当該要素型の要素表記名、及び特定されたイベントのイベント表記名とともに、操作履歴情報として、操作履歴記録手段２１４に渡される。ここで、イベント発生日時情報には、例えば、イベント検出手段２０８がイベントを検出した日時を格納することができる。イベント発生日時情報は、任意のタイミングで取得することができる。要素表記名は、特定したイベントの発生元要素の要素表記名であり、例えば、後述する対象要素テーブル１０００（図１０）を参照することで取得できる。イベント表記名は、特定したイベントのイベント表記名であり、例えば、図８のイベント抽出条件定義テーブル８００を参照することで取得できる。なお、イベント検出手段２０８から受け取ったイベント付帯情報が、対象要素管理手段２１２によって指定された要素の型についての情報を含まない場合には、操作履歴記録手段２１４に対して、情報は渡されない。
【００２８】
対象要素管理手段２１２は、操作履歴の記録の対象となるＧＵＩ要素の型と、取得すべきＧＵＩ要素の状態を表すプロパティを特定する。ＧＵＩ要素の型は、例えば図１０に示される対象要素テーブル１０００によって定義される。図１０に示される対象要素テーブル１０００は、要素ＩＤと、要素型と、要素表記名と、取得プロパティ１と、取得プロパティ２の項目を含む。要素ＩＤは、要素の型を特定するために付されたＩＤである。要素型は、情報を取得すべき対象となるＧＵＩ要素の型である。要素表記名は、ＧＵＩ要素をわかりすく表現した表記名である。要素表記名は、後に、ユーザの操作の履歴を記録する際に用いられる。取得プロパティ１、２は、ＧＵＩ要素から取得すべきプロパティを示す。ＧＵＩ要素から取得可能なプロパティは、ＧＵＩ要素の型によってそれぞれ異なる。本実施形態において、指定可能なプロパティの種類や個数は、任意である。先述したイベント特定手段２１０は、受け取ったイベント付帯情報から、イベント発生元の要素の型を特定し、対象要素テーブル１０００の要素型の項目を参照することで、当該イベント付帯情報が、操作履歴として記録すべき情報であるかを判定する。なお、図１０に示される対象要素テーブル１０００は、図９に示される対象要素型定義テーブル９００に基づいて、自動的に生成されたものである。対象要素型定義テーブル９００は、予めユーザによって定義された、情報を取得すべき要素型を定義したテーブルである。対象要素管理手段２１２は、予め、対象要素型定義テーブル９００で定義された要素型のうち、操作記録の対象であるＧＵＩアプリケーションに含まれる要素型のみを抽出し、対象要素テーブル１０００を生成する。なお、ＧＵＩアプリケーションに含まれるＧＵＩ要素の型は、ＸＡＭＬ形式で表現される要素ツリー３００の情報として、取得可能である。
【００２９】
操作履歴記録手段２１４は、イベント特定手段２１２から受け取った操作履歴情報を記録する。図１１は、記録された操作履歴情報をテーブル形式で格納した例を表す。格納される各項目のうち、イベント発生日時、要素表記名、イベント表記名は、上述した通りである。また、取得プロパティ１、２には、対象要素テーブル１０００（図１０）で指定され、イベント特定手段２１０において取得されたプロパティの値が格納される。例えば、図１１の要素表記名「ボタン」に関する記録は、図１０における要素型「System.Windows.Controls.Button」から取得された「Name」プロパティの値は「button1」であり、「Label」プロパティの値は「確認」であったことを示している。また、詳細については後述するが、操作履歴記録手段２１４は、操作履歴の記録処理に関して、性能重視の方式と、確実性重視の方式の、二通りの形態をとることができる。前者の方式では、当該操作履歴の記録処理命令が、メモリ上に配置されたキューに蓄積され、別スレッドから、キューに蓄積された記録処理が随時実行される。一方、後者の方式では、操作履歴の記録を逐次出力する。なお、操作履歴記録手段２１４は、例えばファイル形式やデータベースへの書き込みのような、任意の方法で操作履歴情報を記録する。
【００３０】
表示手段２１６は、ユーザからの指示により、操作履歴記録手段２１４によって格納された操作履歴を表示装置１１２上に表示する。
【００３１】
上記構成により、本発明の一実施形態における操作記録装置１００は、ＧＵＩアプリケーションのＧＵＩ要素ごとに操作履歴情報を記録する処理を実装する必要がなくなり、開発コストの低減に寄与する。また、ユーザによって予めイベント抽出条件を定義可能とすることで、ユーザの所望する操作履歴の情報を記録することができる。特に、ユーザは、イベント抽出条件の定義を随時追加又は変更することができ、所望のイベントのみを選択的に記録することが出来る。
【００３２】
なお、イベント特定手段２１０、操作履歴記録手段２１４は、イベント検出手段２０８の一部として実現されてもよい。
【００３３】
（４．処理フロー）
次に、図４−図７を用いて、本発明の一実施形態における操作記録装置１００の処理フローについて説明する。
【００３４】
（４．１  ＧＵＩアプリケーションの起動時の処理フロー）
まず、図４を用いて、ＧＵＩアプリケーションの起動時の処理フローについて説明する。
【００３５】
ステップＳ４００において、操作履歴の記録対象となるＧＵＩアプリケーションが起動されると、当該処理が開始する。
【００３６】
ステップＳ４０２において、対象イベント管理手段２０６は、ユーザによって予め定義されたイベント抽出条件定義テーブル８００（図８）を読み込み、操作履歴取得の対象とするイベント（トンネルイベント）を特定する。
【００３７】
ステップＳ４０４において、登録手段２０４は、対象イベント管理手段２０６によって特定されたイベントのイベント型を対象として、イベントハンドラ（イベント検出手段２０８）を、要素ツリー３００のルート要素３１０に登録する。
【００３８】
ステップＳ４０６において、対象要素管理手段２１２は、ユーザによって予め定義された対象要素型定義テーブル９００（図９）と、ＧＵＩアプリケーションを構成するＧＵＩ要素の要素ツリー３００を照合する。そして、ＧＵＩアプリケーションに実際に含まれるＧＵＩ要素の中から、操作履歴の対象とすべきＧＵＩ要素を抽出して、対象要素テーブル１０００（図１０）を生成する。
【００３９】
以上により、本発明の一実施形態における操作記録装置１００は、ＧＵＩアプリケーションで発生したイベントのうち、ユーザによって予め指定されたイベント型のイベントを検出することができる。また、ユーザによって予め指定されたＧＵＩ要素のうち、ＧＵＩアプリケーションを構成するＧＵＩ要素で発生したイベントを検出することができる。
【００４０】
（４．２  イベント検出処理フロー）
次に、図５を用いて、イベント検出処理フローについて説明する。
【００４１】
ステップＳ５００において、ＧＵＩアプリケーション上で、ユーザが入力手段２００を通じて入力操作を行うと、当該処理が開始する。
【００４２】
ステップＳ５０２において、イベント通知手段２０２は、ユーザからの入力に対応するイベント（トンネルイベント）を、イベント検出手段２０８（ルート要素３１０の各イベント型に対して登録されたイベントハンドラ）に通知する。この時、イベント通知手段２０２は、イベント発生元要素の情報や、ＧＵＩ要素の状態を示すプロパティを含む、イベント付帯情報を、イベント検出手段２０８に渡す。
【００４３】
ステップＳ５０４において、イベント検出手段２０８は、イベントを検出し、イベント付帯情報を受け取る。受け取ったイベント付帯情報は、イベント特定手段２１０に渡される。
【００４４】
ステップＳ５０６において、イベント特定手段２１０は、イベント付帯情報から、イベント発生元であるＧＵＩ要素の型についての情報を取得する。
【００４５】
ステップＳ５０８において、イベント特定手段２１０は、イベント発生元要素の型と、対象要素テーブル１０００（図１０）の要素型を比較して、該当するものがあるか照合を行う。その結果、該当するものがある場合には、ステップＳ５１０に進む。該当するものがない場合には、ステップＳ５１４に進み、処理を終了する。
【００４６】
ステップＳ５１０において、イベント特定手段２１０は、イベント付帯情報から、イベント発生元要素のプロパティ情報を取得する。取得すべきプロパティ情報は、対象要素テーブル１０００（図１０）によって定義され、イベント発生元要素の型によって異なる。また、イベント特定手段２１０は、イベント発生日時情報、イベント発生元要素の要素表記名、特定されたイベントのイベント表記名を取得する。そして、イベント発生日時情報、イベント発生元要素の要素表記名、特定されたイベントのイベント表記名、プロパティ情報を、操作履歴情報として、操作履歴記録手段２１４に渡す。
【００４７】
ステップＳ５１２において、操作履歴記録手段２１４は、イベント特定手段２１０から受け取った情報を、操作履歴として記録する。記録された操作履歴を格納するテーブルの例を図１１に示す。ここで、操作履歴記録手段２１４は、操作履歴の記録処理に関して、性能重視の方式と、確実性重視の方式の、二通りの形態をとることができる。それぞれの方式の処理については後述する。
【００４８】
このように、本発明の一実施形態における操作記録装置１００は、ユーザによって指定されたイベントの型と要素の型に基づいて、操作履歴を取得することができる。ユーザは、記録された操作履歴を用いて、アプリケーションの実際の利用状況を把握することが可能となる。また、ユーザは、記録された操作履歴を用いて、アプリケーションに問題が発生した場合の原因調査や、問題の再現を行うことができる。
【００４９】
（４．３  操作履歴の記録処理フロー）
次に、図６、７を用いて、操作履歴の記録処理フローについて説明する。上述したように、操作履歴記録手段２１４は、操作履歴の記録処理に関して、性能重視の方式と、確実性重視の方式の、２種類の実施方式を選択的に利用することができる。記録された操作履歴は、後に、表示手段２１６によって、ユーザに対して提示されてもよい。
【００５０】
図６は、性能重視の方式における処理フローを表す。当該方式においては、操作履歴記録手段２１４は、二つのスレッドによる並列処理によって、操作履歴を記録する。
【００５１】
ステップＳ６００において、操作履歴記録手段２１４の第一スレッドによる処理が開始する。
【００５２】
ステップＳ６０２において、操作履歴記録手段２１４は、イベント特定手段２１０から受け取った操作履歴情報の記録処理命令を、メモリ上に配置された操作履歴記録キューに記録する。当該記録処理は、後述する第二スレッド（ステップＳ６５０−Ｓ６５８）において、並列に処理される。
【００５３】
ステップＳ６０４において、当該処理は終了する。
【００５４】
ステップＳ６５０において、操作履歴記録手段２１４の第二スレッドによる処理が開始する。
【００５５】
ステップＳ６５２において、操作履歴記録手段２１４は、操作履歴記録キューを読み込む。
【００５６】
ステップＳ６５４において、操作履歴記録キューが空である場合には、ステップＳ６５８に進み、処理を終了する。操作履歴記録キューが空でない場合には、ステップＳ６５６に進む。
【００５７】
ステップＳ６５６において、操作履歴記録手段２１４は、操作履歴記録キューに記録された、操作履歴情報記録処理を実行し、操作履歴を出力する。図１１は、記録された操作履歴情報をテーブル形式で格納した例を表す。その後、ステップＳ６５２に戻り、再度操作履歴記録キューを読み込む。
【００５８】
図７は、確実性重視の方式における処理フローを表す。当該方式においては、操作履歴記録手段２１４は、単一のスレッドにおいて、操作履歴情報を順次出力する。
【００５９】
ステップＳ７００において、当該処理が開始する。
【００６０】
ステップＳ７０２において、操作履歴記録手段２１４は、イベント特定手段２１０から受け取った操作履歴情報を、操作履歴として出力する。図１１は、記録された操作履歴情報をテーブル形式で格納した例を表す。
【００６１】
ステップＳ７０４において、当該処理は終了する。
【００６２】
このように、本発明の一実施形態における操作記録装置１００は、ユーザが予め指定したイベントを記録するため、記録に必要な操作履歴のデータ容量の削減が可能である。また、ユーザが予め指定したイベントを記録するため、無用な計算機処理を行う必要がなくなり、アプリケーションに負荷を与えることなく操作履歴情報を記録することができる。また、操作記録装置１００の性能や、操作を記録するアプリケーションの特性に応じて、二種類の操作履歴の記録方式を選択的に利用することができる。
【００６３】
なお、本実施形態は、ＷＰＦに対応したＧＵＩアプリケーションを例に挙げて説明したが、本発明は、その例に限定されない。
【００６４】
（５．応用例）
以上のように、本発明の一実施形態における操作記録装置１００は、イベント型とＧＵＩ要素の型の情報を元に、操作履歴を取得することにより、ＧＵＩアプリケーションのＧＵＩ要素ごとにイベント検出処理を実装する必要がなくなる。
【００６５】
ここで、図１２は、一般的なＧＵＩアプリケーションによる画面１５０の表示例を表す。図１２の画面１５０は、登録ボタン１５１と、中止ボタン１５２と、テキストボックス１５３、１５４と、ラベル１５５、１５６を有する。また、この画面１５０に対応する、ＸＡＭＬファイルの内容の例を、図１３に示す。このような画面１５０において、上述した操作記録装置１００を用い、以下の条件の操作履歴を取得することを考える。
【００６６】
要素型    ：「System.Windows.Controls.Buton」（図９参照）
イベント  ：「PreviewMouseLeftButtonDown」  （図８参照）
結果として、操作記録装置１００は、登録ボタン１５１及び中止ボタン１５２に関する操作履歴を取得することになる。
【００６７】
このような場合に、ユーザは、何れか一方のボタンのみに関する操作履歴の取得を望む場合がある。そこで、以下では、このような要求に応えるための、応用例による操作記録装置１００Ａを説明する。なお、操作記録装置１００Ａのハードウェア構成は、図１に示した例と同様である。また、操作記録装置１００Ａの機能ブロック図は、図２に示した例と同様であるが、一部の手段の処理内容が相違する。そこで、以下では、相違点に着目して、説明を行う。
【００６８】
（機能構成）
既に説明した、操作記録装置１００の対象要素管理手段２１２は、図１０を用いて述べたように、対象要素テーブル１０００を用いて、操作履歴の取得対象となるＧＵＩ要素を管理する。対象要素テーブルは、図９の対象要素型定義テーブル９００に基づいて生成されたものである。
【００６９】
一方、応用例における操作記録装置１００Ａの対象要素管理手段２１２において、対象要素テーブルは、対象要素型定義テーブル９００と、図１６に例示される、対象要素名定義テーブル９１０とに基づいて生成される。
【００７０】
対象要素名定義テーブル９１０は、操作履歴の取得対象となる要素を、要素型と要素名を用いて、さらに絞り込むために用いられる。図１６の対象要素名定義テーブル９１０は、要素名ＩＤと、要素名と、要素型の項目を含む。要素名ＩＤは、項目ごとに付されるＩＤである。要素名は、ＧＵＩ要素に付される名前であり、図１３のＸＡＭＬファイルにおいて、「Name」プロパティで示される。また、要素型は、ＧＵＩ要素の型を表している。対象要素名定義テーブル９１０は、対象要素型定義テーブル９００と同様に、ユーザにより、予め生成される。
【００７１】
図１６に例示される対象要素名定義テーブル９１０は、図１２の画面１５０及び図１３のＸＡＭＬファイルに対応して作成されたものである。対象要素名定義テーブル９１０は、要素型「System.Windows.Controls.Button」の要素のうち、要素名が「SubmitBtn」の要素についての操作履歴の取得を目的として生成されている。すなわち、同じ要素型の、要素名「CancelBtn」についての操作履歴は、取得対象とされていない。
【００７２】
図１８は、図１６の対象要素名定義テーブル９１０と、図１７の対象要素型定義テーブル９００とに基づいて生成された、対象要素テーブル１０１０である。ここで、図１７の対象要素型定義テーブル９００は、図９の対象要素型定義テーブル９００と同様の項目を有するが、一部、異なるデータを含む。図１８の対象要素テーブル１０１０は、図１０の対象要素テーブル１０００と比べ、新たに「要素名」の項目を有する。この項目は、図１６の対象要素名定義テーブル９１０の項目「要素名」に対応する。
【００７３】
操作記録装置１００Ａの対象要素管理手段２１２は、対象要素名定義テーブル９１０と、要素ツリー３００とを照合し、要素ツリー３００に含まれる要素から、対象要素名定義テーブル９１０に定義された要素名を持つ要素を抽出する。そして、抽出した要素を、さらに対象要素型定義テーブル９００と照合し、要素型一致するものを抽出して、対象要素テーブル１０１０を生成する。
【００７４】
図１８の対象要素テーブル１０１０は、要素型「System.Windows.Controls.Button」の要素のうち、要素名が「SubmitBtn」の要素の項目を含むが、図１３のＸＡＭＬファイルに含まれる、要素名が「CancelBtn」の要素の項目は含まない。
【００７５】
生成された対象要素テーブル１０１０は、後に、画面１５０上でイベントが検出された際に参照され、当該イベントの要素名及び要素型が、対象要素テーブル１０１０に定義されている場合に、当該ＧＵＩ要素に係る操作履歴が記録される。従って、図１８の例では、要素型「System.Windows.Controls.Button」の要素のうち、「SubmitBtn」に関する操作履歴のみが取得され、「CancelBtn」については取得されない。
【００７６】
（ＧＵＩアプリケーションの起動時の処理フロー）
図１４は、図４に対応し、操作記録装置１００Ａの、ＧＵＩアプリケーションの起動時の処理フローを表す。
【００７７】
ステップＳ７００において、操作履歴の記録対象となるＧＵＩアプリケーションが起動されると、当該処理が開始する。
【００７８】
ステップＳ７０２において、対象イベント管理手段２０６は、ユーザによって予め定義されたイベント抽出条件定義テーブル８００（図８）を読み込み、操作履歴取得の対象とするイベント（トンネルイベント）を特定する。
【００７９】
ステップＳ７０４において、登録手段２０４は、対象イベント管理手段２０６によって特定されたイベントのイベント型を対象として、イベントハンドラ（イベント検出手段２０８）を、要素ツリー３００のルート要素３１０に登録する。
【００８０】
ステップＳ７０６において、対象要素管理手段２１２は、対象要素名定義テーブル９１０（図１６）と要素ツリー３００とを照合し、要素ツリー３００に含まれる要素から、対象要素名定義テーブル９１０（図１６）に定義された要素名を持つ要素を抽出する。図１６の例では、例えば、要素型「System.Windows.Controls.Button」の要素が抽出される。そして、抽出した要素を、さらに対象要素型定義テーブル９００（図１７）と照合し、要素型が一致するものを抽出して、対象要素テーブル１０１０（図１８）を生成する。図１７は、上記の要素型「System.Windows.Controls.Button」の項目を含むため、図１７の同項目を含む対象要素テーブル１０１０が生成される。
【００８１】
以上により、本発明の一実施形態における操作記録装置１００Ａは、ＧＵＩアプリケーションで発生したイベントのうち、ユーザによって予め指定されたイベント型のイベントを検出することができる。また、ユーザによって予め指定された名前を有するＧＵＩ要素に関する操作履歴のみを記録することができる。
【００８２】
なお、対象要素名定義テーブル９１０がユーザによって生成されていない場合には、ステップＳ７０６において、図４のステップＳ４０６と同様の処理を行ってもよい。
【００８３】
（イベント検出処理フロー）
図１５は、本発明の一実施形態における操作記録装置１００Ａのイベント検出処理フローのフローチャートである。図１５のフローチャートは、既に説明した、図５のフローチャートと対応する。
【００８４】
ステップＳ８００において、ＧＵＩアプリケーション上で、ユーザが入力手段２００を通じて入力操作を行うと、当該処理が開始する。
【００８５】
ステップＳ８０２において、イベント通知手段２０２は、ユーザからの入力に対応するイベント（トンネルイベント）を、イベント検出手段２０８（ルート要素３１０の各イベント型に対して登録されたイベントハンドラ）に通知する。この時、イベント通知手段２０２は、イベント発生元要素の情報や、ＧＵＩ要素の状態を示すプロパティを含む、イベント付帯情報を、イベント検出手段２０８に渡す。
【００８６】
ステップＳ８０４において、イベント検出手段２０８は、イベントを検出し、イベント付帯情報を受け取る。受け取ったイベント付帯情報は、イベント特定手段２１０に渡される。
【００８７】
ステップＳ８０６において、イベント特定手段２１０は、イベント付帯情報から、イベント発生元であるＧＵＩ要素の型についての情報を取得する。
【００８８】
ステップＳ８０８において、イベント特定手段２１０は、イベント発生元要素の型と、対象要素テーブル１０１０（図１８）の要素型を比較して、該当するものがあるか照合を行う。その結果、該当するものがある場合には、ステップＳ８１０に進む。該当するものがない場合には、ステップＳ８１４に進み、処理を終了する。
【００８９】
ステップＳ８１０において、イベント特定手段２１０は、イベント付帯情報から、イベント発生元要素のプロパティ情報を取得する。取得すべきプロパティ情報は、対象要素テーブル１０１０によって定義され、イベント発生元要素の型によって異なる。
【００９０】
また、イベント特定手段２１０は、イベント発生日時情報、イベント発生元要素の要素表記名、特定されたイベントのイベント表記名を取得する。そして、イベント発生日時情報、イベント発生元要素の要素表記名、特定されたイベントのイベント表記名、プロパティ情報を、操作履歴情報として、操作履歴記録手段２１４に渡す。
【００９１】
ステップＳ８１２において、操作履歴記録手段２１４は、イベント特定手段２１０から受け取った情報を、操作履歴として記録する。記録された操作履歴を格納するテーブルの例を図１９に示す。
【００９２】
図１９の操作履歴情報１１００は、図１２の画面１５０上の二つのボタンのうち、登録ボタン１５１についての操作履歴のみを格納する。取得プロパティ１（「SubmitBtn」）及び取得プロパティ２（「登録」）は、図１８の対象要素テーブル１０１０で指定された各プロパティ（「Name」及び「Content」）の値である。ここでは、取得プロパティ１として、図１６で用いた要素名が、履歴として出力されている。
【００９３】
このように、本発明の一実施形態における操作記録装置１００Ａは、ユーザが予め指定したイベントを記録するため、記録に必要な操作履歴のデータ容量の削減が可能である。また、ユーザが予め指定したイベントを記録するため、無用な計算機処理を行う必要がなくなり、アプリケーションに負荷を与えることなく操作履歴情報を記録することができる。
【符号の説明】
【００９４】
１００  操作記録装置
２００  入力手段
２０２  イベント通知手段
２０４  登録手段
２０６  対象イベント管理手段
２０８  イベント検出手段
２１０  イベント特定手段
２１２  対象要素管理手段
２１４  操作履歴記録手段
２１６  表示手段
【図１】
2013239155.tif 000003
【図２】
2013239155.tif 000004
【図３】
2013239155.tif 000005
【図４】
2013239155.tif 000006
【図５】
2013239155.tif 000007
【図６】
2013239155.tif 000008
【図７】
2013239155.tif 000009
【図８】
2013239155.tif 000010
【図９】
2013239155.tif 000011
【図１０】
2013239155.tif 000012
【図１１】
2013239155.tif 000013
【図１２】
2013239155.tif 000014
【図１３】
2013239155.tif 000015
【図１４】
2013239155.tif 000016
【図１５】
2013239155.tif 000017
【図１６】
2013239155.tif 000018
【図１７】
2013239155.tif 000019
【図１８】
2013239155.tif 000020
【図１９】
2013239155.tif 000021