(57)【特許請求の範囲】
【請求項１】
任意のコンピュータ上で動作するログ記録対象ソフトウェアが当該任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータの入力装置および表示装置を介して提供するＧＵＩに対するユーザ操作のログとして、前記ログ記録対象ソフトウェアがＧＵＩとして前記表示装置の画面上に表示するウインドウの表示状態および当該ウインドウ内のＧＵＩ部品の表示状態で表されるＧＵＩの状態を、前記任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータの記憶装置に記録する方法であって、
前記任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータが、
入力装置より入力された、ログの取得対象から除外するＧＵＩ部品またはその属性情報を指定する条件、並びに直接アクセス機能を用いてログ記録対象ソフトウェアのＧＵＩの状態を取得するタイミングの指定を記憶装置に登録する第１のステップと、
入力装置より入力されたログ記録開始の指示により、直接アクセス機能を用いて現在のＧＵＩの状態を初期状態として取得し、ログとして記憶装置に出力して記録する第２のステップと、
イベント検出機能により最前面ウインドウ以外のＧＵＩの状態の変更イベントまたはウインドウの消滅イベントを検出するリスナを設定する第３のステップとを具備するとともに、
第３のステップの後、入力装置よりログ記録終了の指示が入力されるまでの間繰り返される、
直接アクセス機能を用いてログ記録対象ソフトウェアのＧＵＩの状態を取得するタイミングの指定に応じて、最前面ウインドウのＧＵＩの状態をログとして記憶装置に出力して記録する第４のステップと、
イベント検出機能により最前面ウインドウ以外のＧＵＩの状態の変更イベントまたはウインドウ消滅イベントが検出されているか調べ、そのイベント情報をログとして記憶装置に出力して記録する第５のステップとを具備する
ことを特徴とするユーザ操作のログ記録方法。
【請求項２】
第４のステップにあっては、
タイムスタンプの情報とともに、直接アクセス機能を用いて、アプリケーションから直接、最前面ウインドウのＧＵＩの状態を取得し、ウインドウまたはＧＵＩ部品をノードとし、包含関係をノード間の親子関係で表現し、さらに各ノードは属性情報を有する表現形式で出力し、入力されたログの取得対象から除外するＧＵＩ部品またはその属性情報を指定する条件と合致するノードまたはその属性情報を出力から除外する
ことを特徴とする請求項１に記載のユーザ操作のログ記録方法。
【請求項３】
第４のステップにあっては、
直接アクセス機能を用いてアプリケーションのＧＵＩの状態を取得するタイミングの指定において、時刻指定、またはインターバル指定、またはユーザ操作の指定により、ログの出力・記録の頻度を変更可能とする
ことを特徴とする請求項１に記載のユーザ操作のログ記録方法。
【請求項４】
第５のステップにあっては、
イベント検出時のタイムスタンプの情報と、イベント検出機能により検出したイベントの最前面ウインドウ以外の属性情報の値の変更、または最前面ウインドウ以外のＧＵＩ部品の生成、またはウインドウもしくは最前面ウインドウ以外のＧＵＩ部品の消滅のイベントのいずれであるかを示すイベント種別の情報とともに、
最前面ウインドウ以外の属性情報の値の変更イベントであれば、変更対象と対応するＧＵＩの状態の木構造表現におけるノードを特定する情報、変更対象である属性名およびその変更後の値を、
また、最前面ウインドウ以外のＧＵＩ部品の生成イベントであれば、生成対象と対応するＧＵＩの状態の木構造表現におけるノードを特定する情報、生成対象の属性情報および親ノードを特定する情報を、
また、ウインドウもしくは最前面ウインドウ以外のＧＵＩ部品の消滅の変更イベントであれば、消滅対象と対応するＧＵＩの状態の木構造表現におけるノードを特定する情報をそれぞれ出力する
ことを特徴とする請求項１に記載のユーザ操作のログ記録方法。
【請求項５】
任意のコンピュータ上で動作するログ記録対象ソフトウェアが当該任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータの入力装置および表示装置を介して提供するＧＵＩに対するユーザ操作のログとして、前記ログ記録対象ソフトウェアがＧＵＩとして前記表示装置の画面上に表示するウインドウの表示状態および当該ウインドウ内のＧＵＩ部品の表示状態で表されるＧＵＩの状態を、前記任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータの記憶装置に記録する装置であって、
前記任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータ上に設けられた次の装置、即ち
入力装置と、
記憶装置と、
ログ記録対象ソフトウェアに直接アクセスしてＧＵＩの状態もしくは最前面ウインドウのみのＧＵＩの状態を取得する直接アクセス機能部と、
最前面ウインドウ以外のＧＵＩの状態の変更イベントまたはウインドウの消滅イベントを検出するリスナを設定し、ＧＵＩの状態変更に伴って発生するこれらのイベントを検出するイベント検出機能部と、
入力装置より、ログの取得対象から除外するＧＵＩ部品またはその属性情報を指定する条件、並びに直接アクセス機能部を用いてログ記録対象ソフトウェアのＧＵＩの状態を取得するタイミングの指定が入力されると、これらを記憶装置に登録し、また、入力装置よりログ記録開始の指示が入力されると、直接アクセス機能部を用いて現在のＧＵＩの状態を初期状態として取得し、ログとして記憶装置に出力して記録し、イベント検出機能部を用いて最前面ウインドウ以外のＧＵＩの状態の変更イベントまたはウインドウの消滅イベントを検出するリスナを設定し、その後、入力装置よりログ記録終了の指示が入力されるまでの間、直接アクセス機能部を用いてログ記録対象ソフトウェアのＧＵＩの状態を取得するタイミングの指定に応じて、最前面ウインドウのＧＵＩの状態をログとして記憶装置に出力して記録し、さらに、イベント検出機能部により最前面ウインドウ以外のＧＵＩの状態の変更イベントまたはウインドウ消滅イベントが検出されているか調べ、そのイベント情報をログとして記憶装置に出力して記録するログ取得制御部とを具備する
ことを特徴とするユーザ操作のログ記録装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフィカルユーザインタフェースに対するユーザ操作のログを記録する技術に関する。
【背景技術】
【０００２】
コンピュータ上で動作するアプリケーションプログラム（以下、アプリケーション）などのソフトウェアによって実現される、企業における業務システム等の情報処理システム向けのソリューションとして、近年、ユーザ操作のログ（記録）を活用した技術が数多く提案されている。これらは、情報処理システムを構成するコンピュータの端末装置（以下、情報システム端末）におけるユーザの操作を記録・蓄積し、セキュリティ違反となる操作が行われていないことの監視を実現したり、操作のボトルネックを分析することにより業務の効率化を達成する用途に用いられている。
【０００３】
前述した情報処理システムの多くは、ユーザビリティ向上のためのユーザインタフェースとして、グラフィカルユーザインタフェース（以下、ＧＵＩ）を採用している。従って、前記のユーザ操作のログを活用した技術においても、ＧＵＩに対するユーザ操作を記録・蓄積することが必要となる。
【０００４】
ＧＵＩに対するユーザ操作は、主にマウスの操作やキーボードへの入力であり、情報システム端末のオペレーティングシステム（以下、ＯＳ）のイベントとして、発生時刻などの情報とともに検出することができる。また、ＧＵＩの状態に関してもＯＳのイベントとして、ウインドウのオープンやクローズの発生を、アプリケーションのプロセス名、イベントの発生時刻などの情報とともに検出することが可能である。
【０００５】
前記のユーザ操作のログを活用した技術の多くは、ＯＳが一般的に具備するイベントをログとして記録・蓄積するものとなっている。セキュリティ目的で、ユーザ操作とそのアプリケーションのウインドウの起動を把握するなどの単純な分析を行う場合、ログに記録する内容としては十分と考えられる。しかし、ユーザが業務の中で、ウインドウ内のどのようなＧＵＩ部品に対してどのような操作を行い、結果としてウインドウ内の表示がどのように変化したかを正確に把握するためには、記録する情報が不十分である。
【０００６】
セキュリティや業務分析においては、ユーザ操作時の状況（コンテキスト）を把握することが分析の精度を向上させる上で重要である。例えば、分析の観点として、アプリケーションのウインドウに表示されているデータの初期化ボタンを押下する操作を、ログから違反操作として検出する場合を考える。しかし、実際にはこのような操作すべてが違反操作というわけではない。トラブルが発生し、どうしてもデータを初期化する必要があったのかもしれないし、管理者が必要に応じて実施した操作かもしれない。本当に違反操作であるかの判断は、データの初期化ボタンを押した時、あるいはそれ以前のアプリケーションのウインドウ内のＧＵＩ部品の表示状態を精密に調査し、ユーザ操作のコンテキストを把握する必要がある。
【０００７】
このようにユーザ操作の内容や意図を正確に把握するためには、マウスの操作やキーボードへの入力、アプリケーションのウインドウの開閉に関するイベントだけでなく、ウインドウ内のＧＵＩ部品の表示状態をログに記録する必要がある。
【０００８】
［従来技術］
アプリケーションのウインドウ内のＧＵＩ部品の表示状態をログとして記録する方法としては、大きく分けて２つの方法がある。
【０００９】
１つ目の方法は、ログを取得する情報システム端末、あるいはアプリケーションに、ウインドウ内のＧＵＩ部品の表示状態を出力する専用のソフトウェア（プラグイン）を組み込む方法である。この方法は、プラグインが適用可能であれば確実にＧＵＩ部品の表示状態の情報を取得できるものの、情報システム端末やアプリケーションによっては、そもそもプラグインをインストールできないものも存在するため、汎用性に乏しいという問題がある（非特許文献１参照）。
【００１０】
２つ目の方法は、情報システム端末における表示装置の画面や動画を記録し、ウインドウ内の表示状態を識別する方法である。この方法は、ウインドウ内のＧＵＩ部品の表示状態を識別する技術の精度によって結果が左右されるという問題があるが、表示装置の画面や動画は情報システム端末やアプリケーションによらず取得できるため、汎用性の高い手法といえる（非特許文献２参照）。
【００１１】
特に前者の方法では、近年、ＵＩオートメーション（非特許文献３参照）やJava（登録商標） Accessibility API（非特許文献４参照）などのＧＵＩアクセシビリティ技術が進歩し、.NETやJava（登録商標）、Webをベースとしたアプリケーションにおいて、ある程度、汎用的にウインドウ内のＧＵＩ部品の表示状態を出力することが可能になっている。また、ＧＵＩを有するアプリケーションに関してアクセシビリティ技術の標準化（非特許文献５参照）が進んでおり、将来的には、このようなＧＵＩアクセシビリティ技術が適用可能なアプリケーションが増えることが想定される。このように前者の方法の場合、汎用性についても改善が進んでいる。
【００１２】
ＧＵＩアクセシビリティ技術の多くは、ログ取得プログラムからアプリケーションに直接アクセスし、ウインドウ内のＧＵＩ部品の表示状態を取得する機能（以降、「直接アクセス機能」と呼ぶ。）と、ログ取得プログラムがリスナ（何らかのイベントの発生を検出し、それを通知する機能を備えたプログラム）を設定し、ウインドウ内のＧＵＩ部品の表示状態の変更をイベントとして検出する機能（以降、「イベント検出機能」と呼ぶ。）との２つを具備しているのが一般的である。
【００１３】
これ以降では、ソフトウェアが表示装置の画面上に表示するウインドウの表示状態および当該ウインドウ内のＧＵＩ部品の表示状態のことを、単に「ＧＵＩの状態」と呼ぶことにする。
【発明の概要】
【発明が解決しようとする課題】
【００１４】
ところで、ユーザ操作のログを取得する場合は、情報システム端末でアプリケーションを起動し、そのバックグラウンドでログ取得プログラムを動作させなければならない。よって、ログ取得プログラムには、アプリケーションと並行で動作させても、ユーザ操作に対するアプリケーションの応答を悪化させないことが求められる。しかし、マウスの操作やキーボードへの入力だけでなく、アプリケーションのＧＵＩの状態までログに記録する場合、記録する情報が膨大になる。それに伴い、ログ取得プログラムの処理時間も長くなり、アプリケーションの応答に影響を与える場合がある。
【００１５】
この問題に対しては、例えば、アプリケーションから検出して記録する情報を分析に必要なものだけに制限し、ＧＵＩの状態の取得処理時間を短縮する方法や、直接アクセス機能を利用したＧＵＩの状態の取得頻度を下げるといった対応が考えられる。あるいは、イベント検出機能を用いて、以前のＧＵＩの状態から変更された差分のみを検出して記録するなどの方法もある。これらの方法は、ユーザ操作に対するアプリケーションの応答性能を改善する意味においては有効な方法ではあるが、その反面、ユーザ操作に対するアプリケーションのＧＵＩの状態をログから再現するという点においては、品質が低下する。
【００１６】
また、アプリケーションから検出して記録する情報を制限すれば、関心のない情報については操作状況の再現が不可能になる。ログに記録していない情報については、あとから分析することが不可能であるため、この方法を採用する場合、関心のある情報が事前に明確になっている必要がある。しかし、ログの分析では、往々にして分析の過程で、興味のある情報が変化することがあり、事前に関心のある情報を明確にするのは困難である。
【００１７】
直接アクセス機能を利用したＧＵＩの状態の取得頻度を下げると、状態を取得したあるタイミングから、次に状態を取得するタイミングまでの間の細かいＧＵＩの状態の遷移については再現が不可能となる。
【００１８】
また、イベント検出機能を用いて、以前のＧＵＩの状態から変更された差分のみを検出する場合は、確かにＧＵＩの状態の遷移を細かく再現することができる。しかし、その一方で、アプリケーションや情報の種類によっては、変更されたことをイベントとして検出できない場合が存在する。例えば、一般的にＧＵＩの変更により大量のイベントが発生し、イベントキューでオーバーフローを起こした場合、それらのイベントはログ取得プログラムに通知されず、廃棄されてしまう。従って、この方法の場合、ログを取得する時間の経過とともに、アプリケーションのＧＵＩの状態とログに記録されたＧＵＩの状態とが不一致になる確率が高くなり、かつ不一致の度合いも大きくなるという問題がある。
【００１９】
以上のことから、ログ取得プログラムにおいては、ユーザ操作に対する情報システム端末の応答性能、あるいはログ記録対象ソフトウェアの応答性能に応じてＧＵＩの状態を高速に取得し、ＧＵＩの状態の再現性の高い内容をログに記録するという課題を解決する必要がある。
【課題を解決するための手段】
【００２０】
本発明では、ＧＵＩの状態を高速に取得し、ＧＵＩの状態の再現性の高い内容をログに記録するという課題を解決するために、以下の特徴を有する。
【００２１】
本発明の第一の発明として、
任意のコンピュータ上で動作するログ記録対象ソフトウェアが当該任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータの入力装置および表示装置を介して提供するＧＵＩに対するユーザ操作のログとして、前記ログ記録対象ソフトウェアがＧＵＩとして前記表示装置の画面上に表示するウインドウの表示状態および当該ウインドウ内のＧＵＩ部品の表示状態で表されるＧＵＩの状態を、前記任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータの記憶装置に記録する方法であって、
前記任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータが、
入力装置より入力された、ログの取得対象から除外するＧＵＩ部品またはその属性情報を指定する条件、並びに直接アクセス機能を用いてログ記録対象ソフトウェアのＧＵＩの状態を取得するタイミングの指定を記憶装置に登録する第１のステップと、
入力装置より入力されたログ記録開始の指示により、直接アクセス機能を用いて現在のＧＵＩの状態を初期状態として取得し、ログとして記憶装置に出力して記録する第２のステップと、
イベント検出機能により最前面ウインドウ以外のＧＵＩの状態の変更イベントまたはウインドウの消滅イベントを検出するリスナを設定する第３のステップとを具備するとともに、
第３のステップの後、入力装置よりログ記録終了の指示が入力されるまでの間繰り返される、
直接アクセス機能を用いてログ記録対象ソフトウェアのＧＵＩの状態を取得するタイミングの指定に応じて、最前面ウインドウのＧＵＩの状態をログとして記憶装置に出力して記録する第４のステップと、
イベント検出機能により最前面ウインドウ以外のＧＵＩの状態の変更イベントまたはウインドウ消滅イベントが検出されているか調べ、そのイベント情報をログとして記憶装置に出力して記録する第５のステップとを具備する
ことを特徴とする。
【００２２】
本発明の第二の発明として、
第一の発明における第４のステップにあっては、
タイムスタンプの情報とともに、直接アクセス機能を用いて、アプリケーションから直接、最前面ウインドウのＧＵＩの状態を取得し、ウインドウまたはＧＵＩ部品をノードとし、包含関係をノード間の親子関係で表現し、さらに各ノードは属性情報を有する表現形式で出力し、入力されたログの取得対象から除外するＧＵＩ部品またはその属性情報を指定する条件と合致するノードまたはその属性情報を出力から除外する
ことを特徴とする。
【００２３】
本発明の第三の発明として、
第一の発明における第４のステップにあっては、
直接アクセス機能を用いてアプリケーションのＧＵＩの状態を取得するタイミングの指定において、時刻指定、またはインターバル指定、またはユーザ操作の指定により、ログの出力・記録の頻度を変更可能とする
ことを特徴とする。
【００２４】
本発明の第四の発明として、
第一の発明における第５のステップにあっては、
イベント検出時のタイムスタンプの情報と、イベント検出機能により検出したイベントの最前面ウインドウ以外の属性情報の値の変更、または最前面ウインドウ以外のＧＵＩ部品の生成、またはウインドウもしくは最前面ウインドウ以外のＧＵＩ部品の消滅のイベントのいずれであるかを示すイベント種別の情報とともに、
最前面ウインドウ以外の属性情報の値の変更イベントであれば、変更対象と対応するＧＵＩの状態の木構造表現におけるノードを特定する情報、変更対象である属性名およびその変更後の値を、
また、最前面ウインドウ以外のＧＵＩ部品の生成イベントであれば、生成対象と対応するＧＵＩの状態の木構造表現におけるノードを特定する情報、生成対象の属性情報および親ノードを特定する情報を、
また、ウインドウもしくは最前面ウインドウ以外のＧＵＩ部品の消滅の変更イベントであれば、消滅対象と対応するＧＵＩの状態の木構造表現におけるノードを特定する情報をそれぞれ出力する
ことを特徴とする。
【００２５】
本発明の第五の発明として、
任意のコンピュータ上で動作するログ記録対象ソフトウェアが当該任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータの入力装置および表示装置を介して提供するＧＵＩに対するユーザ操作のログとして、前記ログ記録対象ソフトウェアがＧＵＩとして前記表示装置の画面上に表示するウインドウの表示状態および当該ウインドウ内のＧＵＩ部品の表示状態で表されるＧＵＩの状態を、前記任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータの記憶装置に記録する装置であって、
前記任意のコンピュータもしくは当該任意のコンピュータに任意の通信路を通じて接続された他のコンピュータ上に設けられた次の装置、即ち
入力装置と、
記憶装置と、
ログ記録対象ソフトウェアに直接アクセスしてＧＵＩの状態もしくは最前面ウインドウのみのＧＵＩの状態を取得する直接アクセス機能部と、
最前面ウインドウ以外のＧＵＩの状態の変更イベントまたはウインドウの消滅イベントを検出するリスナを設定し、ＧＵＩの状態変更に伴って発生するこれらのイベントを検出するイベント検出機能部と、
入力装置より、ログの取得対象から除外するＧＵＩ部品またはその属性情報を指定する条件、並びに直接アクセス機能部を用いてログ記録対象ソフトウェアのＧＵＩの状態を取得するタイミングの指定が入力されると、これらを記憶装置に登録し、また、入力装置よりログ記録開始の指示が入力されると、直接アクセス機能部を用いて現在のＧＵＩの状態を初期状態として取得し、ログとして記憶装置に出力して記録し、イベント検出機能部を用いて最前面ウインドウ以外のＧＵＩの状態の変更イベントまたはウインドウの消滅イベントを検出するリスナを設定し、その後、入力装置よりログ記録終了の指示が入力されるまでの間、直接アクセス機能部を用いてログ記録対象ソフトウェアのＧＵＩの状態を取得するタイミングの指定に応じて、最前面ウインドウのＧＵＩの状態をログとして記憶装置に出力して記録し、さらに、イベント検出機能部により最前面ウインドウ以外のＧＵＩの状態の変更イベントまたはウインドウ消滅イベントが検出されているか調べ、そのイベント情報をログとして記憶装置に出力して記録するログ取得制御部とを具備する
ことを特徴とする。
【発明の効果】
【００２６】
本発明によれば、ＧＵＩアクセシビリティ技術あるいはプラグインを用いて、ユーザ操作のログとしてＧＵＩの状態を記録するとき、情報システム端末の性能やログ記録対象ソフトウェアの性能に応じて、ユーザ操作に対するソフトウェアの応答性能を損なわず、かつＧＵＩの状態を詳細に再現可能な情報をログに記録することが可能になる。
【図面の簡単な説明】
【００２７】
【図１】本発明の操作ログを記録する方法を実施する装置の実施の形態の一例を示す構成図である。
【図２】本発明における直接アクセス機能およびイベント検出機能の初期化手続きの処理フローである。
【図３】本発明におけるＧＵＩの状態のログ記録手続きの処理フローである。
【図４】アプリケーションにおけるＧＵＩの状態とこれを木構造を用いて表現した例を示す説明図である。
【図５】木構造におけるノードが保持する属性情報の表現形式の例を示す説明図である。
【図６】ログの取得対象から除外するＧＵＩ部品またはその属性情報を指定する条件の例を示す説明図である。
【図７】変更イベント検出時のイベントの種類に応じたログの出力内容を示す説明図である。
【図８】図４のＧＵＩの状態を初期状態として取得した木構造表現を示す説明図である。
【図９】ユーザ操作後のＧＵＩの状態の例を示す説明図である。
【図１０】図９のＧＵＩの状態を取得した木構造表現を示す説明図である。
【図１１】図４から図９へのＧＵＩの状態の変更イベントの記録内容を示す説明図である。
【図１２】ユーザ操作後のＧＵＩの状態の別の例を示す説明図である。
【図１３】図１２のＧＵＩの状態を取得した木構造表現を示す説明図である。
【図１４】ユーザ操作後のＧＵＩの状態のさらに別の例を示す説明図である。
【図１５】図１４のＧＵＩの状態を取得した木構造表現を示す説明図である。
【図１６】図１２から図１４へのＧＵＩの状態の変更イベントの記録内容を示す説明図である。
【発明を実施するための形態】
【００２８】
図１は本発明のユーザ操作のログ記録方法を実施する装置の実施の形態の一例、ここでは周知のコンピュータ上に実現した例を示すもので、図中、１は入力装置、２は記憶装置、３は表示装置、４はコンピュータである。
【００２９】
入力装置１は、キーボード、マウス等からなり、ユーザがコンピュータ４に所定の情報、ここではログの取得対象から除外するＧＵＩ部品またはその属性情報を指定する条件、直接アクセス機能を用いてアプリケーション（ログ記録対象ソフトウェア）のＧＵＩの状態を取得するタイミングの指定、並びにログ記録開始およびログ記録終了の指示を入力するためのものである。また、本来はログに記録するユーザ操作の種別の指定も入力する。これは、例えばマウスの操作であれば、クリック操作、ダブルクリック操作、ドラッグ操作、押下したマウスボタンの種類などであり、キーボードへの入力であれば、押したキーの内容、キーダウン、キーアップなどである。本発明では、ユーザが操作したときのＧＵＩの状態をログに記録する方法に焦点にあてている。説明を簡単にするために、ユーザ操作の種別の記録方法については、公知の技術と同様として説明を割愛する。
【００３０】
記憶装置２は、前述した所定の情報を初期設定値として記憶するとともに、コンピュータ４が実施する図２および図３の手続きによって取得し出力したログを記録するためのものである。表示装置３は、液晶ディスプレイ、ＣＲＴ等からなり、アプリケーションの画面を表示するとともに、コンピュータ４が実施する図２、図３の手続き中の画面を表示するためのものである。
【００３１】
コンピュータ４は、前述した公知のＧＵＩアクセシビリティ技術によって実現される直接アクセス機能部５およびイベント検出機能部６を含み、入力装置１より入力された情報をもとに、図２および図３の手続きに従い、直接アクセス機能部５およびイベント検出機能部６を用いてユーザ操作のログを取得し、これを記憶装置２に出力して記録し、この際、ログ取得制御部７を構成する。
【００３２】
直接アクセス機能部５は、ログ取得制御部７が実施する図３の手続きのＳ３１およびＳ３５のステップにおいてＧＵＩの状態の木構造表現を構築するために、アプリケーションに直接アクセスしてＧＵＩの状態もしくは最前面ウインドウのみのＧＵＩの状態を取得する。また、イベント検出機能部６は、ログ取得制御部７が実施する図３の手続きのＳ３２のステップにおいて最前面ウインドウ以外のＧＵＩの状態の変更イベントまたはウインドウの消滅イベント、詳細には最前面ウインドウ以外の属性情報の値の変更、または最前面ウインドウ以外のＧＵＩ部品の生成、またはウインドウもしくは最前面ウインドウ以外のＧＵＩ部品の消滅のイベントを検出するリスナを設定し、Ｓ３７のステップにおいてＧＵＩの状態の変更に伴って発生するこれらのイベントを検出する。
【００３３】
ログ取得制御部７は、入力装置１より、ログの取得対象から除外するＧＵＩ部品またはその属性情報を指定する条件、並びに直接アクセス機能を用いてアプリケーションのＧＵＩの状態を取得するタイミングの指定が入力されると、図２の手続きを実施し、直接アクセス機能部５およびイベント検出機能部６の初期化を行う。
【００３４】
図２の手続きにおけるＳ２１のステップの直接アクセス機能部５の初期設定は、具体的には、入力装置１より入力されたログの取得対象から除外するＧＵＩ部品またはその属性情報を指定する条件と、直接アクセス機能部５を用いてアプリケーションのＧＵＩの状態を取得するタイミングの指定とを記憶装置２に登録することである。
【００３５】
以下、まず、ログの取得対象から除外するＧＵＩ部品またはその属性情報を指定する条件について説明する。
【００３６】
前述のように、本発明の目的の１つは、ユーザが操作を実施したときのＧＵＩの状態を再現可能なようにログに記録することである。ＧＵＩの状態は、アプリケーションの表示ウインドウの集合で形式的に表現する。表示されているウインドウは、ウインドウやその内部に表示されたＧＵＩ部品をノードとする木構造で表現する。ノード間の親子関係はウインドウやＧＵＩ部品間の表示の包含関係に相当する。例えば、ウインドウ内にボタンのＧＵＩ部品がある場合には、そのウインドウに対応するノードとボタンに対応するノードとの間には親子関係が存在する。
【００３７】
ウインドウやＧＵＩ部品は、一般的には属性情報を保持する。例えば、表示位置、サイズ、名前、ＧＵＩ部品の型（ラベル、テキストボックス、コンボボックス等）、プロセスＩＤなどを挙げることができる。さらにウインドウであれば、そのウインドウや内部のＧＵＩ部品に対してユーザからの操作が可能か否かなどの情報や最前面に表示されているかの情報、ラベルなどのＧＵＩ部品であれば表示されている文字列やそのフォント、フォントサイズ、色等の情報、テキストボックスなどのＧＵＩ部品であればその設定値などが付加される。各ノードは、対応するＧＵＩ部品におけるこのような属性情報の値を保持する。注意すべきは、取得可能な属性情報は、利用するＧＵＩアクセシビリティ技術やプラグインの機能によって決定されることである。
【００３８】
図４にアプリケーションにおけるＧＵＩの状態とこれを木構造を用いて表現した例を示す。この例では、ＧＵＩの状態はアプリケーションが２つのウインドウと７つのＧＵＩ部品を表示している。図５に図４におけるＧＵＩの状態表現において、木構造におけるノードが保持する属性情報の表現形式を示す。ここでは、ウインドウ１と対応するノードのみの属性情報を示す。
【００３９】
属性情報は、属性名とその値の対の集合で表現される。この例では、ＧＵＩアクセシビリティ技術によって、名前、型（ウインドウ、ラベル、テキストボックス、コンボボックス等）、プロセスＩＤ、設定値が取得可能とする。値が空欄のものは、その属性名に対する値が設定されていないことを意味する（この例の属性名である設定値はテキストボックスなどのユーザからの入力値を値として持ち、ウインドウ１は特にユーザからの入力がないため空欄としている。）。
【００４０】
本発明では、ＧＵＩアクセシビリティ技術によって、必要な情報をアプリケーションから取得し、図４や図５の例のようなＧＵＩの状態の表現を再現可能なようにログに記録する。ログとして記録する情報は、ＧＵＩアクセシビリティ技術などの機能の制限がない限り、多くの情報を取得すべきである。これは、先にも述べたように、ログの分析が進む過程で、分析の観点が変化するためである。しかし、事前に明らかに関心のない情報が判明している場合には、入力装置１よりログの取得対象から除外するＧＵＩ部品またはその属性情報の条件を指定することができる。
【００４１】
ログの取得対象から除外するＧＵＩ部品またはその属性情報を指定する条件は、ＧＵＩ部品あるいはウインドウ自体を取得対象から除外する、もしくはＧＵＩ部品やウインドウ自体は取得するがそのうちの特定の属性情報のみ除外するという条件の種類と、除外対象の具体的な指定情報である条件の内容とから構成される。また、条件の内容とは、条件の種類がＧＵＩ部品あるいはウインドウ自体を取得対象から除外するものである場合は、属性名とその値の関係を指定する情報であり、条件の種類がＧＵＩ部品やウインドウ自体は取得するがそのうちの特定の属性情報のみ除外するものである場合は、属性名とその値の関係を指定する情報と、その関係が成立するときに除外する属性名を指定する情報である。ここで、関係は一般的な四則演算や大小、等号、不等号などで表現でき、複数の属性名とその値の関係を命題論理記号で組み合わせても良い。図６にログの取得対象から除外するＧＵＩ部品またはその属性情報を指定する条件の例を示す。
【００４２】
図２の手続きのＳ２１のステップにおける直接アクセス機能部５の初期設定では、このようなログの取得対象から除外するＧＵＩ部品またはその属性情報を指定する条件を登録する。また同様に、入力装置１より入力されている直接アクセス機能利用時のＧＵＩの状態を取得するタイミングの指定も登録する。直接アクセス機能利用時のＧＵＩの状態の取得タイミングの指定では、取得時刻指定、またはＧＵＩの状態を取得して次のＧＵＩの状態を取得するインターバルの長さの指定、またはユーザの特定操作（例えばマウスクリックやキーダウン等）に合わせて取得する指定を行うことができる。
【００４３】
図２の手続きにおけるＳ２２のステップのイベント検出機能部６の初期設定は、入力装置１より入力されたログの取得対象から除外するＧＵＩ部品またはその属性情報を指定する条件を記憶装置２に登録する。
【００４４】
また、ログ取得制御部７は、入力装置１より、ログ記録開始の指示が入力されると、直接アクセス機能部５やイベント検出機能部６を利用して、アプリケーションのＧＵＩの状態を取得し、ログとして出力して記憶装置２に記録する。具体的には図３の手続きを実施する。
【００４５】
まず、Ｓ３１のステップにて、直接アクセス機能部５を利用し、現在のＧＵＩの状態の図４および図５のような木構造表現を初期状態として取得し、取得時のタイムスタンプとともにログとして記憶装置２に出力して記録する。
【００４６】
次に、Ｓ３２のステップにて、イベント検出機能部６を利用してＧＵＩの状態変化を記録するため、ここでは最前面ウインドウ以外の属性情報の値の変更、または最前面ウインドウ以外のＧＵＩ部品の生成、またはウインドウもしくは最前面ウインドウ以外のＧＵＩ部品の消滅のイベントを検出するリスナを設定する。
【００４７】
Ｓ３３からＳ３８のステップは、入力装置１よりログ記録終了の指示が入力されるまで繰り返し実施し、取得した情報をログとして記憶装置２に出力して記録する。
【００４８】
即ち、まずＳ３４のステップにて、事前に入力されている直接アクセス機能利用時のＧＵＩの状態の取得タイミングの指定を参照し、現在の状況がそのタイミングの指定に適合しているか調べる。例えば、タイミングの指定が時刻指定であれば、現在の時刻がその時刻であるかを調べる。また、タイミングの指定がインターバル指定であるなら、前にＧＵＩの状態を取得した時刻から指定されたインターバルの期間、時間が経過してるかを調べる。また、タイミングの指定がユーザ操作の指定であれば、ユーザ操作のＯＳのイベントが発生しているかを調べる。
【００４９】
Ｓ３４のステップにおいて、タイミングの指定と現在の状況が合致している場合には、続くＳ３５のステップで直接アクセス機能部５により、最前面のウインドウのＧＵＩの状態を取得する。例えば、現在表示されているＧＵＩが図４である場合を考える。住所登録ウインドウが最前面ウインドウであるとすると、Ｓ３５のステップで取得するＧＵＩの状態は、図４におけるウインドウ１をルートノードとする木構造と各ノードが保持する属性情報のみとなる。前述のように、ログ記録対象ソフトウェアの応答性能を損ねないためには、ログ取得処理の高速化が必要になる。直接アクセス機能部５で全てのＧＵＩ部品の状態を取得すると処理時間が長くなるため、本発明では最前面ウインドウのＧＵＩの状態に限定して取得する。これによって取得処理の高速化を達成することができる。このように取得した最前面ウインドウのＧＵＩの状態を、取得時のタイムスタンプとともにログとして出力する。その後は、イベント検出機能部６によるログ出力を行うためにＳ３６へ進む。
【００５０】
もし、Ｓ３４のステップにおいて、直接アクセス機能利用時のＧＵＩの状態の取得タイミングの指定を参照し、現在の状況が、そのタイミングの指定に適合していない場合には、ログを出力するタイミングではないため、Ｓ３５の直接アクセス機能部５によるログ出力は飛ばして、Ｓ３６へ進む。
【００５１】
Ｓ３６のステップでは、Ｓ３２のステップでリスナを登録したことによって、ＧＵＩ状態の変更を検出したイベントが発生しているかを調べる。もし発生しているのなら、そのイベントの内容を、続くＳ３７のステップにてログとして出力する。Ｓ３２で登録したリスナは最前面ウインドウ以外の属性情報の値の変更、または最前面ウインドウ以外のＧＵＩ部品の生成、またはウインドウもしくは最前面ウインドウ以外のＧＵＩ部品の消滅のイベントに関するものであることに注意されたい。Ｓ３５のステップでは、処理の高速化のため直接アクセス機能部５により取得するＧＵＩの状態を最前面ウインドウに関する情報に限定している。そのため、背面ウインドウの状態変化やウインドウの消滅などの情報を取得することができない。そこでＳ３７のステップでイベント検出機能部６により、これらの情報を補完する。出力するイベントの内容は、Ｓ３１で取得したＧＵＩの状態の木構造表現を、出力したイベントの内容に応じて修正することで、現在のＧＵＩの状態の木構造表現の再現が可能なようにする必要がある。そこで変更イベントを検出した場合、イベント発生のタイムスタンプとともに、そのイベントの種類に応じて、少なくとも図７のような情報を出力して記録する。
【００５２】
即ち、イベントの種類が、最前面ウインドウ以外の属性値の変更であった場合、変更のあったＧＵＩ部品またはウインドウと対応するＧＵＩの状態表現におけるノードを特定する情報と、変更のあった属性名および値を出力する。例えば、図４のＧＵＩの状態における住所の隣のテキストボックスに“日本”という文字列が入力され、ＧＵＩの状態が変化したしたことをイベントで検知したとする。そのイベントからは、ＧＵＩの状態表現におけるノードを特定する情報として“部品３”を、変更のあった属性名の情報として“設定値”を、さらに変更後の値の情報として“日本”をログに出力する。
【００５３】
同様に、イベントの種類が最前面ウインドウ以外のＧＵＩ部品の生成であった場合、生成されたＧＵＩ部品と対応するノードを特定する情報およびその属性情報を記録する。さらに、生成されたＧＵＩ部品と対応するノードの親ノードの情報を出力する。例えば、図４のＧＵＩの状態におけるエラー画面ウインドウの確認ボタンが新規に生成され、ＧＵＩの状態が変化したしたことをイベントで検知したとする。この場合は、ＧＵＩの状態表現におけるノードを特定する情報として“部品７”および確認ボタンの属性情報を出力し、さらに、該当のボタンは、エラー画面ウインドウに含まれるため、親ノードの情報として“ウインドウ２”を出力する。
【００５４】
さらに、イベントの種類が、ウインドウや最前面ウインドウ以外のＧＵＩ部品の消滅であった場合は、消滅したウインドウまたはＧＵＩ部品と対応するノードを特定する情報を出力する。例えば、図４のＧＵＩの状態におけるエラー画面ウインドウが消滅し、ＧＵＩの状態が変化したしたことをイベントで検知したとする。この場合は、消滅したウインドウまたはＧＵＩ部品と対応するノードを特定する情報として、“ウインドウ２”を出力する。
【００５５】
一般に、ユーザ操作に対するＧＵＩの変化は、最前面ウインドウにて多発する。本発明では、最前面ウインドウのＧＵＩの状態を直接アクセス機能部５にて取得し、イベント検出機能部６では取得しない（リスナを登録しない）。これによって、検知するイベントの量を大きく削減することができ、結果としてイベントキューのオーバーフローによるイベント廃棄を防止し、ＧＵＩの状態変化を正確に検知することができる。
【００５６】
Ｓ３６のステップにおいて、変更イベントを検出できていない場合には、イベントの記録は不要であるため、Ｓ３７のステップを飛ばして手続きを継続する。
【００５７】
以上のように、Ｓ３３からＳ３８のステップを、入力装置１よりログ記録終了の指示が入力されるまで繰り返す。
【００５８】
なお、Ｓ３１やＳ３５のステップにおいて、直接アクセス機能部５によりＧＵＩの状態の木構造表現を取得するとき、もし事前にログの取得対象から除外するＧＵＩ部品またはその属性情報を指定する条件が入力されていれば、その条件に合致するＧＵＩ部品またはその属性情報は取得対象としない。また、Ｓ３７のステップにおいて検出したイベントが、やはり前述の条件に合致するＧＵＩ部品またはその属性情報に関する変更だった場合、ログ出力を実施しない。
【００５９】
なお、前述した実施の形態では、直接アクセス機能部５、イベント検出機能部６およびログ取得制御部７をコンピュータ４上で実現した例を示したが、ハードウェアで実現しても良い。また、これらの各装置が、適切な通信路を通じて相互に接続された複数のコンピュータ（ハードウェア資源）上に分散して存在し、相互に通信し合いながら実行することもできる。
【００６０】
本発明の装置がログの記録対象とするソフトウェアは、コンピュータ４において動作しても良いし、適切な通信路を通じて相互に接続された別のコンピュータ（ハードウェア資源）上で動作していても良い。
【実施例１】
【００６１】
ここでは、本発明の実施例として、図１の構成をとった場合におけるユーザ操作のログ記録方法を説明する。
【００６２】
まず、本発明を利用するにあたって、事前にログの取得対象から除外するＧＵＩ部品またはその属性情報を指定する条件を入力装置１より入力する。ここでは、図６の情報を入力する。さらに、入力装置１より、直接アクセス機能部５でＧＵＩの状態を取得するタイミングの指定を行う。
【００６３】
タイミングの指定は、実運用上はアプリケーションが動作する情報システム端末（コンピュータ）の性能を考慮して設定する必要がある。先にも述べたように、直接アクセス機能部５によるＧＵＩの状態の取得は、頻度を増やせば、ユーザ操作に対するアプリケーションの応答性能を劣化させるケースがある。ここではユーザのマウスクリックおよびキーボード入力のときのみ、直接アクセス機能部５でＧＵＩの状態を取得するようにタイミングを指定するものとする。
【００６４】
前述したように入力装置１より各種の初期パラメータが入力されると、コンピュータ４におけるログ取得制御部７は、図２の手続きを実施し、入力パラメータを記憶装置２に登録して直接アクセス機能部５およびイベント検出機能部６を初期化する。
【００６５】
次に、入力装置１よりログ記録開始の指示が入力されると、コンピュータ４のログ取得制御部７は、図３の手続きを実施する。このときの情報システム端末のＧＵＩの状態が図４に示されたもので、さらにＧＵＩアクセシビリティ技術もしくは専用プラグインで取得可能な属性情報が、図５に示された属性名のように名前、型、プロセスＩＤ、設定値の情報であると仮定して、実施例の説明を継続する。
【００６６】
まず、図３の手続きに従って、Ｓ３１のステップを実施し、直接アクセス機能部５が図４のＧＵＩの状態を初期状態としてアプリケーションから取得する。本実施例では、図６に示されたログの取得対象から除外するＧＵＩ部品またはその属性情報を指定する条件があるため、ここで取得するＧＵＩの状態の木構造表現は、図８のようになる。但し、ここでのウインドウやＧＵＩ部品のプロセスＩＤはすべて“1111”である。図６の条件３により型がタイトルバーである部品１および部品５のノードが取得対象から除外されている。また同様に、図６の条件２により型がウインドウであるウインドウ１およびウインドウ２の属性情報から設定値の情報が除外されていることに注意されたい。Ｓ３１では、図８の情報と取得時のタイムスタンプを、例えばＸＭＬのような構造データの表現形式で記憶装置２に記録する。
【００６７】
続いてログ取得制御部７は図３のＳ３２のステップに進み、イベント検出機能部６を用いてイベント検出のためのリスナを設定する。リスナは最前面ウインドウ以外の属性情報の値の変更、または最前面ウインドウ以外のＧＵＩ部品の生成、またはウインドウもしくは最前面ウインドウ以外のＧＵＩ部品の消滅のイベントに関するもののみを登録する。リスナの設定後は、入力装置１よりログ記録終了の指示が入力されるまで、Ｓ３３からＳ３８のステップを繰り返す。
【００６８】
ここで、例えば図４の現在のＧＵＩの状態において、ユーザがエラー画面ウインドウの確認ボタンを押下し、エラー画面ウインドウが消滅して図９のようなＧＵＩの状態になったときを考える。このとき、ログ取得制御部７は、直接アクセス機能部５によるログ取得タイミングがマウスクリックと指定されているため、図３のＳ３４、Ｓ３５とステップを実行する。
【００６９】
Ｓ３５のステップでは直接アクセス機能部５を利用して、図９の最前面ウインドウのＧＵＩの状態の木構造表現を取得し、取得時のタイムスタンプとともに、ＧＵＩの状態の木構造表現をＸＭＬ形式などで記憶装置２に記録する。ここで取得したＧＵＩの状態の木構造表現を図１０に示す。ここでは最前面ウインドウのＧＵＩの状態しか取得しないため、高速にログ取得処理を実施することができる。その一方で、ここで取得した情報からはそれまで最前面ウインドウであったエラー画面ウインドウが消滅したのか、それとも背面に配置されたのか判断できないことに注意されたい。これらを判定できるようにするために、続く図３のＳ３６のステップでイベント検出機能部６を利用する。
【００７０】
また、この際、イベント検出機能部６により、エラー確認ウインドウが消滅したことを正しく検出できている場合、検出したイベント情報を図７の内容に従って、イベント検出時のタイムスタンプとともに記憶装置２に記録する。記憶装置２に記録するイベントの内容を図１１に示す（タイムスタンプはイベントの発生やＧＵＩの状態取得の順序が特定できる情報であれば、特に形式は問わない）。なお、実際は、エラー確認ウインドウのタイトルバーの消滅のイベントも同時に発生するが、ログの取得対象から除外するＧＵＩ部品またはその属性情報を指定する条件である図６の条件３と合致するため、記録対象から除外する。
【００７１】
正確にイベントを検出できれば、Ｓ３１で取得した初期のＧＵＩの状態に対して、イベントの情報を反映させることで、現在のＧＵＩの状態を再現できることに注意されたい。
【００７２】
例えば、図８の初期のＧＵＩの状態の木構造表現に対して、図１１で取得したイベントの内容からウインドウ２、部品６、部品７のノードおよびその属性情報を削除することで、図１０とまったく同一のＧＵＩ状態の木構造表現を取得することができる。
【００７３】
イベントは、ＧＵＩの状態の変化に関する情報のみを検出できるため、少ないデータ量で詳細にＧＵＩの状態を再現可能にするという特徴がある。しかし、問題点は、先にも述べたようにＧＵＩの状態が変化したのにもかかわらず、大量のイベントが併発するなどして、イベントを検出できない場合があることである。
【００７４】
本発明では、表示が頻繁に変化しイベントが多発する最前面ウインドウのＧＵＩの状態については直接アクセス機能部５で取得し、それ以外のＧＵＩの変化はイベント検出機能部６で取得する。よって、検出するイベントを限定する（登録するリスナを限定する）ことができ、イベントの大量検知によるイベントの検出漏れを防止することが可能となる。
【００７５】
次に、ユーザが図９のＧＵＩの状態に対して、住所の隣のテキストボックスに「日本」とキーボード入力し、図１２のようなＧＵＩの状態になった場合を考える。この場合、ログ取得制御部７は、図３の手続きにおいて、Ｓ３４、Ｓ３５、Ｓ３６、Ｓ３８のステップを実施する。直接アクセス機能部５を利用して状態を取得するタイミングの指定がキーボード入力としているＳ３５のステップにて、最前面ウインドウのＧＵＩの状態が取得される。取得した情報を図１３に示す。図１２のような変更に伴い、最前面ウインドウのＧＵＩ部品の属性値の変更イベントが本来発生するが、Ｓ３２のステップで登録したリスナが最前面以外のウインドウのＧＵＩ部品の属性値の変更に限定されている。そのためＳ３６のステップではイベントが発生せず、Ｓ３７でイベント検出機能部６によるイベント検出が行われない。結果として、ここでのキーボード入力に対しては、図１３の情報が記憶装置２に記録される。
【００７６】
最後に、図１２のＧＵＩの状態に対して、ユーザが登録ボタンをマウスクリックし、図１４のように新規に「登録完了です。」というラベルのＧＵＩ部品が住所登録ウインドウに生成され、さらに最前面に結果ウインドウが表示された場合のログ取得制御部７の動作を説明する。
【００７７】
このとき、図３の手続きのＳ３４、Ｓ３５、Ｓ３６、Ｓ３７のステップが実施される。マウスクリックが行われるため、Ｓ３５の直接アクセス機能部５による最前面ウインドウのＧＵＩの状態の取得が実施され、ここでは結果ウインドウに対する図１５の木構造表現が取得時のタイムスタンプとともに、記憶装置２に記録される。また、続くＳ３６のイベントで背面ウインドウで新たに生成されたラベルのＧＵＩ部品のイベントが検出され、Ｓ３７のステップにより図１６の情報が記憶装置２に記録される。
【００７８】
本実施例のように、本発明は、直接アクセス機能によるＧＵＩの状態取得を最前面ウインドウに限定することで取得処理の高速化を実現でき、さらに背面ウインドウのＧＵＩの状態変化のみを検出することでイベントの大量検知による検知漏れを防止することができる。このようにログ取得対象ソフトウェアの応答性能を劣化させずに、正確なＧＵＩの状態変化を記録することが可能となる。
【符号の説明】
【００７９】
１：入力装置、２：記憶装置、３：表示装置、４：コンピュータ、５：直接アクセス機能部、６：イベント検出機能部、７：ログ取得制御部。
【先行技術文献】
【非特許文献】
【００８０】
【非特許文献１】K. D. Fenstermacher and M. Ginsburg, "A Lightweight Framework for Cross-Application User Monitoring", IEEE Computer, Vol.35, Issue 3, pp. 51-59, 2002
【非特許文献２】高橋、毛利、織田、岩山、"PC作業可視化のためのアプリ操作ログ推測手法"、情報処理学会創立５０周年記念（第７２回）全国大会講演論文集、pp.4-541 - 4-542、2010
【非特許文献３】“ＵＩオートメーションの概要”、［ｏｎｌｉｎｅ］、Microsoft Corporation、［平成２３年７月５日検索］、インターネット＜ＵＲＬ：http://msdn.microsoft.com/ja-jp/library/ms747327(v=vs.80).aspx＞
【非特許文献４】“Ｊａｖａ  ＩＤＬ”、［ｏｎｌｉｎｅ］、Sun Microsystems, Inc.、［平成２３年１０月１４日検索］、インターネット＜ＵＲＬ：http://java.sun.com/j2se/1.4/ja/docs/ja/guide/access/index.html＞
【非特許文献５】“日立のユニバーサルデザイン”、［ｏｎｌｉｎｅ］、株式会社日立製作所、［平成２３年１０月１４日検索］、インターネット＜ＵＲＬ：http://www.hitachi.co.jp/universaldesign/ria/ajax/wai-aria/index.html＞
【図１】
0005382743.tif 000002
【図２】
0005382743.tif 000003
【図３】
0005382743.tif 000004
【図４】
0005382743.tif 000005
【図５】
0005382743.tif 000006
【図６】
0005382743.tif 000007
【図７】
0005382743.tif 000008
【図８】
0005382743.tif 000009
【図９】
0005382743.tif 000010
【図１０】
0005382743.tif 000011
【図１１】
0005382743.tif 000012
【図１２】
0005382743.tif 000013
【図１３】
0005382743.tif 000014
【図１４】
0005382743.tif 000015
【図１５】
0005382743.tif 000016
【図１６】
0005382743.tif 000017