(57)【要約】  ウェブアプリケーションに対するユーザの操作を検出して記録すること。  本システムは、アプリケーション画面から、ユーザが文字列を入力するための文字列入力要素と、ウェブアプリケーションに対して所定の動作の実行を指示するための実行指示要素とをそれぞれ抽出する。本システムは、文字列入力要素および実行指示要素の、ウェブアプリケーションにおける役割を推定する。本システムは、文字列入力要素と実行指示要素とを関連付け、文字列入力要素に入力される入力文字列を抽出する。本システムは、ひな形データと入力文字列とに基づいて、ユーザ操作を記録したユーザ操作記録データを生成する。
2013128645.tif 000002
【特許請求の範囲】
【請求項１】
サーバ上で稼働するウェブアプリケーションに対するクライアント端末を用いたユーザ操作を検出するためのユーザ操作検出システムであって、
前記ウェブアプリケーションが提供するアプリケーション画面から、ユーザが文字列を入力するための文字列入力要素と、前記ウェブアプリケーションに対して所定の動作の実行を指示するための実行指示要素とをそれぞれ抽出する第１要素抽出部と、
抽出された前記文字列入力要素および前記実行指示要素の、前記ウェブアプリケーションにおける役割を推定する役割推定部と、
前記文字列入力要素と前記実行指示要素とを関連付ける要素関連付け部と、
前記実行指示要素に関連付けられた前記文字列入力要素に入力される入力文字列を抽出する文字列抽出部と、
ウェブアプリケーションの種類に応じて用意されるひな形データであって、前記ウェブアプリケーションに対するユーザ操作を記録するためのひな形データを記憶するひな形記憶部と、
前記文字列抽出部により抽出された前記入力文字列に対応するひな形データを前記ひな形記憶部から取得し、取得した前記ひな形データと前記入力文字列とに基づいて、ユーザ操作を記録したユーザ操作記録データを生成するユーザ操作記録データ生成部と、
を備えるユーザ操作検出システム。
【請求項２】
前記アプリケーション画面は、複数の要素を木構造に配置した木構造データから形成されており、
前記要素関連付け部は、前記木構造データにおける構造上の関係に基づいて、前記文字列入力要素と前記実行指示要素とを関連付ける、
請求項１に記載のユーザ操作検出システム。
【請求項３】
前記役割推定部は、推定対象の要素の属性値に基づいて前記推定対象の要素の役割を推定する第１役割推定部を含んでおり、
前記第１役割推定部は、
前記文字列入力要素の属性値に基づいて前記文字列入力要素の役割を推定し、
前記実行指示要素の属性値に基づいて前記実行指示要素の役割を推定する、
請求項２に記載のユーザ操作検出システム。
【請求項４】
前記第１役割推定部は、キーワードと役割と確信度とを対応づけて管理する役割データベースを使用することができ、
前記第１役割推定部は、
前記文字列入力要素の前記属性値に含まれるキーワードと同一のキーワードに対応づけられている役割および確信度を前記役割データベースから取得することで、前記文字列入力要素の役割を推定し、
前記実行指示要素の前記属性値に含まれるキーワードと同一のキーワードに対応づけられている役割および確信度を前記役割データベースから取得することで、前記実行指示要素の役割を推定する、
請求項３に記載のユーザ操作検出システム。
【請求項５】
前記ユーザ操作記録データ生成部は、前記入力文字列と前記ひな形記憶部に記憶されている各ひな形データとの適合する度合いを示す適合度を算出し、最も適合度の高いひな形データを前記入力文字列に対応するひな形データであるとして選択する、
請求項４に記載のユーザ操作検出システム。
【請求項６】
前記ユーザ操作記録データ生成部は、選択された前記ひな形データと前記入力文字列との適合度を、前記ユーザ操作記録データに関連付けて出力する、
請求項５に記載のユーザ操作検出システム。
【請求項７】
予め設定される第１タイミングが到来すると、前記第１要素抽出部と前記役割推定部および前記要素関連付け部は作動し、
予め設定される第２タイミングが到来すると、前記文字列抽出部および前記ユーザ操作記録データ生成部が作動する、
請求項６に記載のユーザ操作検出システム。
【請求項８】
前記木構造データには、前記木構造データを構成する前記複数の要素のデザインを規定するデザインデータが関連付けられており、
前記デザインデータに基づいて、前記文字列入力要素と前記実行指示要素とをそれぞれ抽出する第２要素抽出部をさらに備えており、
前記役割推定部は、推定対象の要素に関連する所定の関連要素に基づいて前記推定対象の要素の役割を推定する第２役割推定部を、さらに含んでおり、
前記第２役割推定部は、
前記第２要素抽出部により抽出される前記文字列入力要素と前記実行指示要素とを、推定対象の要素として扱い、
前記デザインデータに基づいて、前記木構造データから前記推定対象の要素に関連する前記所定の関連要素を全て取得し、
取得された前記所定の関連要素のそれぞれについて、前記推定対象の要素との関連の度合いを示す所定の関連度を取得し、
前記所定の関連度に基づいて、前記所定の関連要素の中から一つを選択し、
選択された前記所定の関連要素の属性値に基づいて、前記推定対象の前記文字列入力要素および前記実行指示要素の役割をそれぞれ推定する、
請求項７に記載のユーザ操作検出システム。
【請求項９】
前記所定の関連要素は、前記推定対象の要素から所定の距離内に存在するテキスト要素である、
請求項８に記載のユーザ操作検出システム。
【請求項１０】
前記所定の関連度は、距離に基づく関連度、位置関係に基づく関連度、構造関係に基づく関連度のうち、いずれか少なくとも一つである、
請求項９に記載のユーザ操作検出システム。
【請求項１１】
前記第１役割推定部による第１推定結果と前記第２役割推定部による第２推定結果とに基づいて、前記推定対象の要素の役割が決定される、
請求項１０に記載のユーザ操作検出システム。
【請求項１２】
前記クライアント端末と前記サーバとの通信内容を取得する通信取得部と、
前記通信内容から文字列を抽出する通信文字列抽出部と、
をさらに備え、
前記ユーザ操作記録データ生成部は、
前記文字列抽出部により抽出された前記入力文字列と、前記通信文字列抽出部により抽出された通信文字列とを照合することで、前記通信文字列と前記文字列入力要素との対応関係を特定し、
前記入力文字列に対応する前記ひな形データと前記通信文字列とに基づいて、前記ユーザ操作記録データを生成する、
請求項１に記載のユーザ操作検出システム。
【請求項１３】
前記クライアント端末から前記サーバへの通信内容を取得する通信取得部と、
前記通信内容からファイルデータを抽出するファイルデータ抽出部と、
さらに備え、
前記ユーザ操作記録データ生成部は、抽出された前記ファイルデータに関する情報を含めて、前記ユーザ操作記録データを生成する、
請求項１に記載のユーザ操作検出システム。
【請求項１４】
前記第１タイミングは、前記アプリケーション画面を構成するための前記木構造データの読込みが完了した場合であり、
前記第２タイミングは、前記文字列入力要素に関連付けられた前記実行指示要素への操作が検出された場合である、
請求項７に記載のユーザ操作検出システム。
【請求項１５】
サーバ上で稼働するウェブアプリケーションに対するクライアント端末を用いたユーザ操作を、クライアント端末で検出するためのユーザ操作検出方法であって、
前記クライアント端末は、所定のコンピュータプログラムを記憶するメモリと、前記メモリから前記所定のコンピュータプログラムを読み込んで実行するマイクロプロセッサと、前記サーバと通信するための通信インターフェース回路とを備えており、
前記マイクロプロセッサが前記所定のコンピュータプログラムを実行することで、前記クライアント端末は、
前記ウェブアプリケーションが提供するアプリケーション画面から、ユーザが文字列を入力するための文字列入力要素と、前記ウェブアプリケーションに対して所定の動作の実行を指示するための実行指示要素とをそれぞれ抽出する第１要素抽出ステップと、
抽出された前記文字列入力要素および前記実行指示要素の、前記ウェブアプリケーションにおける役割を推定する役割推定ステップと、
前記文字列入力要素と前記実行指示要素とを関連付ける要素関連付けステップと、
前記実行指示要素に関連付けられた前記文字列入力要素に入力される入力文字列を抽出する文字列抽出ステップと、
ウェブアプリケーションの種類に応じて用意されるひな形データであって、前記ウェブアプリケーションに対するユーザ操作を記録するためのひな形データを記憶するひな形記憶部から、前記文字列抽出ステップにより抽出された前記入力文字列に対応するひな形データを取得し、取得した前記ひな形データと前記入力文字列とに基づいて、ユーザ操作を記録したユーザ操作記録データを生成するユーザ操作記録データ生成ステップと、
を実行する、
ユーザ操作検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザ操作検出システムおよびユーザ操作検出方法に関する。
【背景技術】
【０００２】
近年、企業が管理するパーソナルコンピュータ（PC）またはスマートフォンなどの、クライアント端末におけるユーザ操作を監視する製品が着目されている。【０００３】
ユーザ操作を監視する製品は、デバイスおよびファイルの単なるアクセスログを監視者に提供するだけでなく、「ユーザが或る日時に或るファイルをどのように処理した」等のように、コンテキストを含めたログを提供する。特許文献１によると、ログの取得範囲は、ブラウザ、メーラ、ファイラなどの各種デスクトップアプリケーションのほかに、プリンタなどのデバイスにも及ぶ。【０００４】
特許文献１に記載の技術では、クライアント端末上のファイルI/O（Input/Output）および通信I/Oを監視するだけでなく、クライアント端末上で作動するアプリケーションプログラムの画面も監視する。特許文献１記載の技術は、ユーザ操作により入手されるファイルに識別子をあらかじめ付与する。特許文献１記載の技術は、ユーザ操作によりファイルが出力されようとする際に、そのファイルに付与された識別子を検証することで、出力が許可されるか否か判定する。【０００５】
一方、クラウドサービスまたはRIA（Rich Internet Application）などのWeb系技術の進歩により、アプリケーションは、デスクトップアプリケーションとして提供されるだけでなく、クライアント側とサーバ側との間でデータ通信することで具現化されるWebアプリケーションとしても提供され始めている。【０００６】
ユーザは、クライアント端末に搭載されるWeb（WWW）ブラウザなどのWebアプリケーション表示ソフトウェアを用いて、Webアプリケーションを提供するサーバにアクセスする。アプリケーション構築に必要なデータをブラウザとサーバとが通信することで、ユーザは、Webアプリケーションを利用することができる。【０００７】
ブラウザは、サーバから得たデータから画面を描写する。ユーザは、その画面に対して所定の操作を行う。ブラウザは、そのユーザ操作などにより発生したイベントを契機に、サーバにリクエストを送信する。サーバからのレスポンスを得ると、ブラウザは、そのレスポンスデータを用いて画面を再描画する。【０００８】
具体的に説明すると、ブラウザとサーバとは、HTTP（Hyper Text Transfer Protocol）を通信プロトコルとして、HTML（Hyper Text Markup Language）、CSS（Cascading Style Sheet）、JavaScript（登録商標）などの、リソースファイルを通信する。ブラウザは、これらリソースファイルを用いて、アプリケーション画面を描画する。【０００９】
HTMLは、画面および文書の構成を記述するファイルである。CSSは、画面全体およびHTMLに記載される各種部品の見栄えを記述するファイルである。Javascriptは、HTMLに記載される各種部品の動作を規定するファイルである。【００１０】
HTMLは標準規格であり、テキスト形式でアプリケーション構造を表現するための言語である。HTMLの例を図２２に示す。HTMLでは、タグなどの区切り文字を用いて、文書を構成する。【００１１】
区切り文字によって区別される語彙は、要素、属性、テキストなどである。図２２においては、htmlおよびtitleなどのタグにより囲まれた語彙が要素であり、hrefが属性名であり、”http：//〜”が属性値、”リンク1”などがテキストである。なお、図２２は、HTMLの基本となる構造を示しているにすぎず、例えばスタイルの記述およびJavaScriptコードなどを省略している。【００１２】
ブラウザは、テキスト形式で表現されるHTMLを、コンピュータが解析可能なフォーマットであるバイナリ形式に変換する必要がある。HTMLは、当該文書に含まれる要素およびテキストなどが入れ子構造となるよう設計される。つまり、HTMLでは、或る要素およびテキストは必ず一つの親要素を持つ。この特性を利用して、HTML文書は、n進木の木構造データとして取り扱うことができる。【００１３】
具体的には、頂点となる要素をルートノードとし、そのルートノードに続く要素、属性またはテキストを、ルートノードの子ノード、もしくはその子ノードの子ノードとして、連結する。一般に、このHTMLから変換された木構造データをDOMツリーと呼ぶ。図２３は、図２２のHTMLを木構造データ化した一例である。図２３では、属性およびテキストを１ノードとしているが、これに限定しない。【００１４】
つまり、図２２のHTMLにおいて、a要素を構成するノードは、その内部に属性名であるhrefおよび属性値”http：//〜”を持つノードとして構成することもできる。HTMLを解析するHTML文書処理装置を利用するアプリケーションに提供すべきAPI（Application
Programming Interface）が定義されている一方、当該HTML文書処理装置のHTML内部の表現方法が定義されていないためである。【００１５】
特許文献２記載の技術では、Webアプリケーションを構成するHTMLの各要素のプロパティを特定して、他のフォーマットに変換できる。特許文献２では、対象XML（eXtensible Markup Language）文書のスキーマをオントロジーモデルに変換する。特許文献２の技術では、他のXML文書の要素と対象XML文書の要素との対応関係を、変換されたオントロジーモデルを利用して抽出し、要素間の対応関係を示す変換ルールが記載されたXSLT（XSL Transformations）を自動生成する。なお、スキーマとは、XML文書内の要素がどの要素や属性を持つことができるかといった、対象XML文書が準拠する規格情報を格納しているファイルである。【００１６】
特許文献３記載の技術では、Webアプリケーションの画面から、ユーザが入力した文字列を取得できる。特許文献３では、宛先票などの画像データから文字列を抽出し、抽出した文字列の特徴を解析することで、郵便番号および住所氏名などを特定する。特許文献３では、対象文字列に数字が含まれていれば郵便番号であると推定し、対象文字列に住所データベースに含まれる部分文字列が含まれていれば住所であると推定し、対象文字列に氏名データベースに含まれる部分文字列が含まれていれば氏名であると推定する。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２０１１-１８６８６１号公報
【特許文献２】特開２００３-２３３５２８号公報
【特許文献３】特開平５-２１７０１５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
特許文献１記載の技術では、Webアプリケーションが動作するブラウザのファイル入出力情報、及び、そのファイル入出力が発生したWebアプリケーションのURI（Uniform Resource Identifier）の情報しか監視していない。従って、特許文献１の技術では、Webアプリケーション上のユーザ操作を、「ユーザが或る日時にWebアプリケーション上で何をどう処理した」という精度で記録することができない。【００１９】
具体的に、Webメールアプリケーションを例に説明する。特許文献１記載の技術では、ユーザがWebメールアプリケーションにおいて、メールにファイルを添付するという操作を実行した際に、「Webメールアプリケーションのドメインにファイルをアップロードした」というログが生成されるだけである。しかし、真に取得すべきは、「ユーザAが何時何分に宛先Bに〜メールを送信という内容とともにファイルを送信した」という精度のログである。【００２０】
特許文献１記載の技術では、Webアプリケーション上のユーザ操作を把握していないため、所望の精度のログを取得することができない。より正確には、特許文献１記載の技術では、Webアプリケーションを構成する各要素に対して、ユーザがどういう意図を持って何を入力したか、ということを全く把握できない。【００２１】
特許文献２記載の技術を、Webアプリケーション上のユーザ操作ログの取得のために使用できた場合は、特定の要素に指定される特定の属性から、その要素の続柄を導出して、操作ログフォーマットに変換できるかもしれない。【００２２】
しかしながら、現状の多くのWebアプリケーションを構成するHTMLは、対象の続柄を導出するための属性を含んでいない要素で構成されている。つまり、メタデータと属性とが定義されており、その定義に従ったHTMLで構成されるWebアプリケーションであれば、特許文献２記載の技術により、Webアプリケーション上のユーザ操作ログを取得できる可能性がある。しかし、現在利用されている多くのWebアプリケーションに対して、特許文献２記載の技術は有効ではない。【００２３】
特許文献３記載の技術を、Webアプリケーション上のユーザ操作ログを取得するために使用することは難しい。第一に、特許文献３記載の技術では、ユーザのアプリケーション操作が完了したかを判断できないため、どのタイミングで文字列を取得すれば良いか全く判断できない。従って、特許文献３記載の技術では、ユーザ操作ログの解析に適した文字列を取得することができない。【００２４】
第二に、特許文献３記載の技術では、住所データベースおよび氏名データベースを用意し、かつ、それらデータベースを随時更新する必要がある。従って、特許文献３記載の技術は、膨大なストレージ容量を必要とし、データベース更新の手間もかかり、コストが増大する。【００２５】
第三に、特許文献３記載の技術は、ユーザが入力するかもしれない入力枠群をWebアプリケーション画面内から抽出して、その入力枠の集合内の文字列を解析する必要があるため、処理負荷が高い。従って、多数のユーザについてユーザ操作ログを監視する場合は、処理速度が遅くなり、使い勝手も悪くなる。【００２６】
本発明は、上述の課題を考慮してなされたものであり、ウェブアプリケーションに対するクライアント端末を用いたユーザ操作を、比較的簡易な構成で取得することができるようにしたユーザ操作検出システムおよびユーザ操作検出方法を提供することにある。
【課題を解決するための手段】
【００２７】
本発明に係るユーザ操作検出システムは、サーバ上で稼働するウェブアプリケーションに対するクライアント端末を用いたユーザ操作を検出するためのユーザ操作検出システムであって、ウェブアプリケーションが提供するアプリケーション画面から、ユーザが文字列を入力するための文字列入力要素と、ウェブアプリケーションに対して所定の動作の実行を指示するための実行指示要素とをそれぞれ抽出する第１要素抽出部と、抽出された文字列入力要素および実行指示要素の、ウェブアプリケーションにおける役割を推定する役割推定部と、文字列入力要素と実行指示要素とを関連付ける要素関連付け部と、実行指示要素に関連付けられた文字列入力要素に入力される入力文字列を抽出する文字列抽出部と、ウェブアプリケーションの種類に応じて用意されるひな形データであって、ウェブアプリケーションに対するユーザ操作を記録するためのひな形データを記憶するひな形記憶部と、文字列抽出部により抽出された入力文字列に対応するひな形データをひな形記憶部から取得し、取得したひな形データと入力文字列とに基づいて、ユーザ操作を記録したユーザ操作記録データを生成するユーザ操作記録データ生成部と、を備える。【００２８】
アプリケーション画面は、複数の要素を木構造に配置した木構造データから形成されており、要素関連付け部は、木構造データにおける構造上の関係に基づいて、文字列入力要素と実行指示要素とを関連付けることができる。
【図面の簡単な説明】
【００２９】
【図１】実施例に係るシステムの構成例を示すブロック図である。
【図２】Webアプリケーションを解析する処理を示すフローチャートである。
【図３】監視対象のボタン要素を検出し、そのホタン要素にテキストボックス要素を関連づける処理を示すフローチャートである。
【図４】イベントを受信した場合の処理を示すフローチャートである。
【図５】意味データベースの構成例を示す図である。
【図６】テキストボックスとその意味、及び関連するボタンの組を示す図である。
【図７】ユーザ操作のログを生成するフォーマットテンプレートの構成例を示す。
【図８】第２実施例に係るシステムの構成例を示すブロック図である。
【図９】Webアプリケーションを解析する処理を示すフローチャートである。
【図１０】対象要素とその周囲に存在するテキストとの関係を解析する処理を示すフローチャートである。
【図１１】ボタン要素のイベントを付加する処理を示すフローチャートである。
【図１２】第３実施例に係るシステムの構成例を示すブロック図である。
【図１３】Webアプリケーションから出力される解析対象データの例を示す。
【図１４】Webアプリケーションの通信解析を示すフローチャートである。
【図１５】第４実施例に係るシステムの構成例を示すブロック図である。
【図１６】Webアプリケーションの通信解析を示すフローチャートである。
【図１７】第５実施例に係るシステムの構成例を示すブロック図である。
【図１８】Webアプリケーションの通信解析を示すフローチャートである。
【図１９】Webアプリケーションの画面例を示す。
【図２０】Webアプリケーションの第一のHTML構成を例示する図である。
【図２１】Webアプリケーションの第二のHTML構成を例示する図である。
【図２２】HTML文書を例示する図である。
【図２３】DOMツリーを例示する図である。
【発明を実施するための形態】
【００３０】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。
【００３１】
なお、本明細書では、実施形態において使用される情報を、「ａａａ表」という表現で説明しているが、これに限らず、例えば、「ａａａリスト」、「ａａａデータベース」、「ａａａキュー」等の他の表現を用いてもよい。本実施形態で用いられる情報が、データ構造に依存しないことを示すために、「ａａａ情報」と呼ぶこともある。
【００３２】
本実施形態で使用される情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」という表現を用いることがあるが、これらは互いに置換が可能である。
【００３３】
さらに、本実施形態の処理動作の説明では、「コンピュータプログラム」または「モジュール」を動作主体（主語）として説明することがある。プログラムまたはモジュールは、マイクロプロセッサによって実行される。プログラムまたはモジュールは、定められた処理を、メモリ及び通信ポート（通信制御装置）を用いながら実行する。従って、プロセッサを動作主体（主語）として読み替えても良い。
【００３４】
プログラムまたはモジュールを主語として開示された処理は、管理サーバ等の計算機等が行う処理として読み替えてもよい。さらに、コンピュータプログラムの一部または全ては、専用ハードウェアによって実現されてもよい。コンピュータプログラムは、プログラム配布サーバまたは記憶メディアによって計算機にインストールされてもよい。
【実施例１】
【００３５】
本実施例では、図２０に示すHTMLにより構成されているWebアプリケーション（図１９）を想定する。図２０には、HTMLにおいて一般的なフォームが記述されている。本実施例が対象とするWebアプリケーションは、一つのform要素内に複数の入力枠が存在し、さらに、フォームを送信させるための実行要素を含む。本実施例では、一つのform要素内に、ユーザが操作可能な全ての入力枠が存在する。それら入力枠は、本システムによる取得対象の要素である。【００３６】
具体的に説明する。本実施例の対象とするWebアプリケーションは、type属性として”text”を持つinput要素またはtextarea要素がform要素の入れ子として存在する、入力枠を備える。その入力枠は、ユーザにより操作可能である。さらに、本実施例の対象とするWebアプリケーションは、type属性として”submit”を持つinput要素として存在する、フォーム送信実行ボタンを備える。但し、上記の説明は、本発明の理解を容易にするためのものであり、本発明の範囲を上記の例に限定するものではない。【００３７】
図１は、Webアプリケーションに対するユーザ操作を検出して解析するためのシステムを示す構成図である。【００３８】
まず最初に、本システムが適用される計算機システムは、サーバ１と、クライアント端末１０とが通信ネットワークで接続されている。サーバ１は、例えば、電子メールソフトウェア、文章管理ソフトウェア、掲示板、チャットソフトウェア、電子会議ソフトウェアなどのようなWebアプリケーション１Ａを備える。【００３９】
クライアント端末１０は、例えば、ユーザの使用するパーソナルコンピュータ、タブレット型端末、携帯電話、携帯情報端末などのように、Webアプリケーション１Ａを利用可能なコンピュータ端末である。【００４０】
クライアント端末１０は、コンピュータプログラムなどを記憶するメモリ１１と、メモリ１１の記憶するコンピュータプログラムを実行するマイクロプロセッサ（CPU）１２と、サーバ１との通信を行うための通信インターフェース１３とを含む。【００４１】
マイクロプロセッサ１２は、メモリ１１に記憶された所定のコンピュータプログラム（ウェブブラウザ）を読み込んで実行する。さらに、マイクロプロセッサ１２は、ウェブブラウザに実装された各種ソフトウェア部品なども実行する。【００４２】
なお、サーバ１およびクライアント端末１０、メモリ１１、マイクロプロセッサ１２、通信インターフェース１３は、他の実施例では図示を省略する。通信インターフェース１３の機能は、後述するデータ通信制御部３１０として示される。【００４３】
本実施例のユーザ操作検出システムは、それぞれ後述するように、Webアプリケーション基盤１００と、操作ログ受信部１０１とを備える。【００４４】
Webアプリケーション基盤１００は、例えば、ブラウザのように構成される。なお、図１のWebアプリケーション基盤１００は、本発明の理解および実施に必要な範囲で記載されている。図１では、画面を描画するレンダリングエンジン、JavaScriptコードをパースし実行する仮想マシン、HTMLを木構造に展開してDOMツリーを生成するパーサなどは、省略されている。【００４５】
操作ログ受信部１０１は、後述する操作ログ生成部１２９により生成される、ユーザの操作ログを操作ログ生成部１２９から受信する。本実施例では、操作ログ受信部１０１の実装方法を限定しない。操作ログ受信部１０１は、例えば、Webアプリケーション基盤１００と同一端末にて動作するソフトウェアとして構成してもよいし、他の端末にて動作するソフトウェアとして構成してもよいし、さらには、ハードウェア装置として構成してもよい。例えば、操作ログ受信部１０１は、ユーザを管理する管理者の使用するコンピュータ端末に設けてもよいし、ユーザ操作を管理するための管理サーバに設けてもよい。【００４６】
本実施例に示すシステムがクライアント端末監視システムなどの一部である場合、操作ログ受信部１０１は、受信したユーザ操作ログをクライアント端末の管理者に送信する手続きをとるだろう。【００４７】
Webアプリケーション基盤１００は、例えば、イベント発生部１１０と、Webアプリケーション解析部１１１とを備える。【００４８】
イベント発生部１１０は、様々なイベントを発生させ、Webアプリケーション解析部１１１にイベント情報を通知する。たいていのWebアプリケーション基盤１００は、機能を追加することができる。そのような機能追加は、例えば、拡張機能、アドオン、アドイン、エクステンションなどの名前で呼ばれる。以降、機能追加を拡張機能と記載する。【００４９】
Webアプリケーション解析部１１１を拡張機能としてブラウザなどに実装すると、イベント発生部１１０は、様々なタイミングで発生するイベントを、Webアプリケーション解析部１１１に通知する。様々なタイミングとは、例えば、Webアプリケーションのリソースの読み込みを開始する際、Webアプリケーションの全リソースを読み込み完了した際、Webアプリケーションでのレンダリングが完了してユーザがアプリケーション画面上でマウスまたはキーボードなどを操作した際、などである。なお、マウス操作によるイベントの発生タイミングには、例えば、マウスボタンが押された際、マウスボタンが押された状態から離された際などのように詳細に分割されている。【００５０】
Webアプリケーション解析部１１１は、例えば、イベント取得部１２０、要素抽出部１２１、要素解析部１２２、属性要素意味推定部１２３、意味DB１２４、ボタン要素イベント付加部１２５、テキスト要素バッファ部１２６、一時メモリ１２７、テキスト抽出部１２８、操作ログ生成部１２９、ログテンプレート１３０を含んで構成される。なお、本実施例では、Webアプリケーション解析部１１１を拡張機能として実装するが、これは説明を容易にするためであり、本発明の実装方法を限定するものでない。【００５１】
図２〜図４を参照して、Webアプリケーション解析部１１１の有する内部機能をそれぞれ説明する。【００５２】
図２は、Webアプリケーションを解析する処理を示すフローチャートである。図２において、イベント取得部１２０は、イベント発生部１１０から通知されるイベント情報を受信し、イベント種別を判定する（T１０１）。イベント取得部１２０は、受信すべきイベントかどうかを判定する（Ｔ１０２）。受信すべきイベントではない場合（Ｔ１０２：ＮＯ）、本処理は終了する。【００５３】
本実施例におけるイベント取得部１２０は、Webアプリケーションを構成する全リソースの読み込みが完了したときに発生するイベント（このイベントの発生は第１タイミングの例である）と、指定する要素がマウスもしくはキーボードにより選択されたときに発生するイベント（このイベントの発生は第２タイミングの例である）のみを取得するものとする。但し、この限定は説明を容易にするためであり、本発明の範囲を限定するものではない。【００５４】
以下、イベント取得部１２０が、Webアプリケーションを構成する全リソースの読み込みが完了したときに発生するイベントを受信した場合の動作を説明する。【００５５】
要素抽出部１２１は、WebアプリケーションのDOMツリーを読み込む（T１０３）。Webアプリケーション解析部１１１を拡張機能として実装する場合、このDOMツリーにアクセスすることができる。【００５６】
続いて、要素抽出部１２１は、ループ処理用一時変数であるiを初期化して（Ｔ１０３）、DOMツリーの全要素を探索する。要素抽出部１２１は、要素解析部１２２に、DOMツリー内の要素を一つずつ渡しながら（T１０５）、ループ変数iをインクリメントする（T１１８）。このループ処理は、要素抽出部１２１が全要素を要素解析部１２２に渡すまで（Ｔ１０５：ＹＥＳ）、繰り返される。このループ処理の終了後、図３で後述する処理Ｂへ進む（T１１９）。【００５７】
要素解析部１２２は、要素抽出部１２１により提供される要素の、要素名と属性とを解析する（Ｔ１０６）。要素解析部１２２は、要素抽出部１２１と共に「第１要素抽出部」の例を構成する。【００５８】
具体的には、要素解析部１２２は、ユーザがテキストを入力するためのテキストボックスを構成する要素と、ユーザがクリック操作もしくはキーボードのEnter入力などで選択できるボタン要素とを抽出し（T１０６）、それら抽出要素を属性要素意味推定部１２３に渡す（T１０７）。【００５９】
「文字列入力要素」の例であるテキストボックス要素は、例えば、要素名がinputであってtype属性がtextである要素、または、textarea要素などで指定される。「実行指示要素」の例であるボタン要素は、要素名がinputであってtype属性がsubmit、reset、もしくはbuttonである要素、または要素名がbuttonである要素などで指定される。【００６０】
なお、本実施例における要素解析部１２２は、type属性が”reset”であるinput要素を属性要素意味推定部１２３に渡さない。type属性が”reset”であるボタン要素は、Webアプリケーションに入力されたデータがWebアプリケーションを提供するサーバに送信されることを中断するためのボタンだからである。本実施例では、Webアプリケーションを提供するサーバに送信されるデータを監視するものであるため、要素解析部１２２は、type属性が”reset”であるボタン要素を属性要素意味推定部１２３に渡さない。【００６１】
なお、対象要素として、テキストボックス要素およびボタン要素の例を述べたが、これは説明を容易にするためであり、他の要素を解析対象としてもよい。【００６２】
要素解析部１２２は、解析結果を要素抽出部１２１に戻す。この解析結果は、対象要素がテキストボックス要素かボタン要素であれば真を、そうでなければ偽となる。要素抽出部１２１は、要素解析部１２２での解析結果を受け、その結果が偽であれば、次の要素に処理を遷移する（T１０７：ＮＯ）。【００６３】
要素解析部１２２は、対象要素がテキストボックス要素またはボタン要素のいずれかである場合（Ｔ１０７：ＹＥＳ）、その要素を属性要素意味推定部１２３に渡す。【００６４】
「役割推定部」または「第１役割推定部」の例である属性要素意味推定部１２３は、要素解析部１２２から受け取った要素の属性に基づいて、その要素の意味（役割）を推定する（Ｔ１０８）。具体例に、属性要素意味推定部１２３は、意味データベース１２４に格納されるキーワードと意味との組を参照し、属性に指定されている属性値と一致するキーワードを見つけ、その結果、属性に指定されている属性値に対応する意味とその確信度とを得る（T１０８）。参照する属性としては、id、name、class、valueなど、一般に用いられる属性を例に挙げることができる。【００６５】
図５に示す意味データベース（DB）１２４を説明する。意味DB１２４は、「役割データベース」の例である。図５によると、あるテキストボックス要素のid属性の属性値が”to”であれば、そのテキストボックス要素の意味は”宛先”であり、その確信度は”１”である。【００６６】
あるボタン要素のvalue属性の属性値が”quxsend”であれば、そのボタン要素の意味は”送信実行ボタン”であり、その確信度は”０.５”である。なお、図５では、２行目に例示される”/.+to.+/”などのように、正規表現書式で記載している。これは、説明を容易にするためであり、意味DB１２４の実装方法、特に、キーワードの表現方法を限定するものではない。【００６７】
図５では、キーワードそのものが”意味”とほぼ同義である場合のみ、その確信度を１としている。本実施例では、汎用的な属性を利用して意味を推定しており、意味推定の確率を向上させるために、このような値付けとした。なお、意味DB１２４の確信度は、上記の”１”または”０．５”のいずれかの値に決定する必要はなく、それら以外の他の値に設定してもよい。また、確信度を管理者が手動で修正したり、または自動的に確信度を調整したりする構成でもよい。【００６８】
なお、意味DB１２４では、監視対象に関連する文字列のみを、キーとして用意すればよい。つまり、監視対象のWebアプリケーションにおいて、監視を希望するテキストボックス要素またはボタン要素に関連する文字列のみをキーとして、意味DB１２４に登録しておけばよい。従って、従来技術で述べたような広範囲にわたって住所および氏名を格納するDBに比べて、意味DB１２４のサイズを小さくすることができる。【００６９】
属性要素意味推定部１２３は、取得した意味の確信度が所定値α（０以上１以下）以上であれば、意味が確定したものと判定し、テキスト要素バッファ部１２６もしくはボタン要素イベント付加部１２５に、対象要素を渡す（T１０９）。属性要素意味推定部１２３は、対象要素がテキストボックス要素であればテキスト要素バッファ部１２６に（T１１０）、対象要素がボタン要素であればボタン要素イベント付加部１２５に、それぞれ渡す（T１１２）。【００７０】
テキスト要素バッファ部１２６は、属性要素意味推定部１２３より渡された要素がテキストボックス要素であるか確認して（Ｔ１１０：ＹＥＳ）、そのテキストボックス要素を、属性要素意味推定部１２３により導出された意味と組にして、一時メモリ１２７に登録する（T１１１）。【００７１】
「要素意味関連付け部」の例であるボタン要素イベント付加部１２５は、属性要素意味推定部１２３より渡された要素がボタン要素であることを確認して（Ｔ１１２：ＹＥＳ）、そのボタン要素をバッファする（T１１３）。【００７２】
図３を参照して、ボタン要素イベント付加部１２５の動作を説明する。ボタン要素イベント付加部１２５は、処理を開始すると（Ｔ１２０）、まず最初に、ループ変数iを初期化する（T１２１）。【００７３】
続いて、ボタン要素イベント付加部１２５は、図２のステップT１１３にてバッファされた全てのボタン要素に対して、ループ内部処理を実行する（T１２２）。ループ処理では、変数iをインクリメントし（T１２５）、全てのバッファされたボタン要素に関してループが完了した場合（Ｔ１２２：ＹＥＳ）、本処理を終了する（T１２７）。【００７４】
ボタン要素イベント付加部１２５のループ内部処理を説明する。ボタン要素イベント付加部１２５は、対象ボタン要素の構造的な関連度を導出する（T１２３）。ステップT１２３にて導出した関連度が所定の定量値W以上であれば（T１２４：ＹＥＳ）、ボタン要素イベント付加部１２５は、そのボタン要素に対する、マウスまたはキーボードによるイベントを取得するよう登録する（T１２５）。【００７５】
さらに、ボタン要素イベント付加部１２５は、ステップＴ１２５で登録したボタン要素との関連性を持つテキストボックス要素の集合に対し、当該ボタン要素を関連付ける（T１２６）。【００７６】
ボタン要素の構造的な関連度とは、ステップＴ１１１にてバッファされたテキストボックス要素の集合との関連性を示す。本実施例の対象とするWebアプリケーションの場合、ステップＴ１１１にてバッファされたテキストボックス要素の集合と同一のform要素に属しているかで、ボタン要素の関連度が導出される。【００７７】
一例として、次のように関連度を導出することができる。図２１において、宛先のメールアドレス、件名もしくは本文を入力するための、テキストボックス要素の集合と、「検索」ボタンとを比較する。「検索」ボタンは、上記のテキストボックス要素の集合とは別のform要素に属すため、その関連度は”０”であると設定できる。【００７８】
一方、「送信」ボタンは、上記のテキストボックス要素の集合と同一のform要素に属すため、その関連度を”１”に設定できる。ここで、W=１とすると、「送信」ボタンを構成するボタン要素が、上記のテキストボックス要素に入力されたデータを送信するためのトリガである。【００７９】
ゆえに、ボタン要素イベント付加部１２５は、所定値Ｗ以上の関連度を有するボタン要素をイベント登録し（Ｔ１２５）、そのボタン要素と関連するテキストボックス要素の集合に、当該ボタン要素を関連付ける（Ｔ１２６）。【００８０】
ステップＴ１２６でのテキストボックス要素とボタン要素を関連付ける方法、およびその関連付けの保存方法は、特に限定しない。図２０のWebアプリケーションにおいて、前述の処理により、一時メモリ１２７に保存される要素の視覚的一例を、図６に示す。【００８１】
続けて、図４を用いて、イベント取得部１２０が、指定する要素がマウスもしくはキーボードにより選択されたときのイベントを、受信した際の動作を説明する。指定する要素がマウスもしくはキーボードにより選択されたときのイベントとは、前述のステップＴ１２５にて登録したボタン要素が選択されたときに発生するイベントである。つまり、登録したボタン要素がマウスによりクリックされた場合、もしくは登録したボタン要素がキーボードにて選択された状態でEnterキーが押された場合、のいずれかの場合に発生するイベントを意味する。【００８２】
「文字列抽出部」の例であるテキスト抽出部１２８は、ステップＴ１１１にて登録されたテキストボックス要素の集合において、イベントの発生したボタン要素との関連性がある全てのテキストボックス要素からテキストを抽出する（Ｔ１３０〜Ｔ１３５）。【００８３】
イベントの発生したボタン要素のことを、発生したイベントの対象となるボタン要素、つまり、発生イベント対象ボタン要素と呼ぶことがある。発生イベント対象ボタン要素は、例えば、所定のイベント（マウス等による操作時に発生するイベント）が発生したかを監視される監視対象であるボタン要素である。従って、監視対象ボタン要素と呼ぶこともできる。【００８４】
テキスト抽出部１２８は、発生イベント対象ボタン要素に関連するテキストボックス要素の有無を確認する（Ｔ１３１）。発生イベント対象ボタン要素に関連するテキストボックス要素が無い場合（Ｔ１３１：ＮＯ）、本処理は終了する（Ｔ１４０）。【００８５】
発生イベント対象ボタン要素に関連するテキストボックス要素がある場合（Ｔ１３１：ＹＥＳ）、テキスト抽出部１２８は、ループ変数iを初期化し（Ｔ１３２）、関連するテキストボックス要素の全てから、ユーザが入力した文字列を抽出する（Ｔ１３４）。テキスト抽出部１２８は、各テキストボックス要素から文字列を抽出する際に、必要に応じて、ループ変数iをインクリメントする（Ｔ１３５）。【００８６】
「ユーザ操作記録データ生成部」の例である操作ログ生成部１２９は、「ひな形記憶部」の例であるログテンプレート１３０から、文字列に対応するテンプレートを用いて、ユーザ操作のログを生成する（Ｔ１３６，Ｔ１３７）。ログテンプレートは、どのような表現手段でも良いが、一例を図７に示す。図７によると、メールに関する操作ログの場合、宛先、件名、本文を入力できる空白文字列（＜div name=”意味”＞＜/div＞）と、それらをつなぐ文字列とで構成される。【００８７】
操作ログ生成部１２９は、一時メモリ１２７に保持された各項目の「意味DB１２４における対応する意味」項（図６）と、空白文字列のname属性に指定される値（図７）とを照合することにより、発生イベント対象ボタン要素との関連性があるテキストボックス要素と、ログテンプレート１３０の各空白文字列とを接続することができる。【００８８】
操作ログ生成部１２９による操作ログ生成の例を説明する。まず、操作ログ生成部１２９は、発生イベント対象ボタン要素との関連性を有するテキストボックス要素集合がどのテンプレートに最もマッチするかを判定する必要がある（Ｔ１３６）。【００８９】
マッチング判定方法の例を説明する。各テンプレートの空白文字列が埋まらなかった数をNfとする。各テンプレートに対して余った発生イベント対象ボタン要素との関連性があるテキストボックス要素の数をNrとする。操作ログ生成部１２９は、Nf+Nrの合計値が最も少ないテンプレートを採用する。Nf+Nrの合計値は「適合度」の例である。【００９０】
テキスト抽出部１２８は、前述までの処理（Ｔ１３１〜Ｔ１３５）にて、宛先としての文字列（メールアドレスなど）と、件名としての文字列と、本文としての文字列とを取得している。この場合、メールテンプレートに関しては、Nf=０、Nr=０であるため、Nf+Nr=０となる。同様に、メッセージテンプレートに関しては、Nf=０、Nr=２であるため、Nf+Nr=２となる。さらに、ドキュメント管理のテンプレートに関しては、Nf=１、Nr=２であるため、Nf+Nr=３となる。【００９１】
この結果、バッファされた文字列に対してメールテンプレートが最もマッチすることがわかる。そこで、操作ログ生成部１２９は、メールテンプレートの空白文字列にそれぞれ対応する、発生イベント対象ボタン要素との関連性があるテキストボックス要素のテキストを挿入して、操作ログを生成する（Ｔ１３７）。最終的に、操作ログ生成部１２９は、生成した操作ログを操作ログ受信部１０１に送信して（Ｔ１３８）、本処理を終了する（Ｔ１３９）。【００９２】
ログテンプレートとのマッチング結果を操作ログに添付しても良い。例えば、Nf+Nrの合計値を、操作ログに含めてもよいし、もしくは操作ログと一緒に送信してもよい。【００９３】
Webアプリケーションを構成する全リソースの読み込みが完了したときに生じるイベントをイベント取得部１２０が受信した際の動作と、指定する要素がマウスもしくはキーボードにより選択されたときに生じるイベントをイベント取得部１２０が受信した際の動作を容易に説明するために、本実施例では、各イベント受信後に、操作ログ取得に必要な処理を行った。【００９４】
上記の方法に代えて、次のような方法を用いても良い。即ち、Webアプリケーションを構成する全リソースの読み込みが完了したときに発生するイベントをイベント取得部１２０が受信した場合に、そのWebアプリケーションを構成するリソースを全てバッファしておく。そして、指定する要素がマウスもしくはキーボードにより選択されたときに発生するイベントをイベント取得部１２０が受信した場合に、操作ログの生成に必要なテキストを取得する。【００９５】
この方法によれば、上述した操作ログ取得処理をイベント受信時とは別のタイミングで実施することができる。この方法は、例えば、非力なCPUしか持たないクライアント端末において、Webアプリケーション上のユーザ操作ログを取得する場合に有効である。【００９６】
本実施例では説明を容易にするために、Webアプリケーション基盤１００にて提供される拡張機能として、Webアプリケーション解析部１１１を実装する例を示した。これに代えて、例えば、クライアントとサーバとの間の通信路上に監視装置を配置し、その監視装置においてWebアプリケーション上のユーザ操作ログを監視する構成でもよい。つまり、その監視装置は、Webアプリケーション基盤１００と同等のWebアプリケーション構成能力を備えており、クライアントとサーバとの間で送受信されるリクエストデータとレスポンスデータを全て監視する。これにより、監視装置は、本実施例と同等の監視性能を持つことができる。【００９７】
以上詳細に述べた本実施例によれば、汎用的な属性を持つ要素から当該要素の利用目的もしくは意味を獲得し、抽出したテキストボックス要素集合と別途抽出したボタン要素との関連性を導出する。そして、本実施例では、複数の要素及びそれらの意味からWebアプリケーションの主目的を推測し、ユーザがテキストボックス要素に入力した文字列を適切なタイミングで取得でき、最終的に、Webアプリケーション上のユーザの操作のログを取得することができる。
【実施例２】
【００９８】
第２実施例を説明する。以下、第１実施例との相違を中心に説明する。本実施例では、図２１のHＴMLにより構成されているWebアプリケーション（図１９）を想定する。図２１は、図２０に示すようにform要素によりフォーム送信を実行するのでない。図２１では、宛先または件名を入力するための入力枠は、テキストボックス要素であるinputまたはtextareaで構成されている。しかし、本文を入力するための入力枠は、div要素で構成されている。【００９９】
事実、一部のWebアプリケーションは、テキストボックス要素であるinputまたはtextarea要素では実現できない高度な処理を実現するために、div要素などを使用する。例えばリッチテキスト表現で本文を表現するような場合に、div要素およびインナーHＴMLによりテキストボックスを実現する。なお、div要素とは、div要素で囲んだ範囲のデータをひとかたまりのものとして取り扱うためのHTML要素である。インナーHTMLは、特定のHTML要素の内容を一括して書き換える場合に使用される。【０１００】
図２１では詳細な記述を省略しているが、本文を入力するための入力枠を構成するdiv要素へのクリックを検知すると、種々の処理がJavaScriptコードにより実現される。種々の処理としては、例えば、過去に入力された文字列とクリックされた位置とを検出し、点滅カーソルを表示する処理がある。他の例として、キーアップイベントを監視し、キーアップイベント発生時に対象キーの文字を入力し、さらに、その文字が日本語などへの変換が必要な文字である場合は、IME（Input Method Editor）の出力である、漢字などの文字列の入力を検知し、その文字列をdiv要素に挿入する。【０１０１】
図２１では、テキストボックス要素と同様に、フォーム送信ボタンは、フォーム送信をsubmitするinput要素で構成されていない。ボタンに見えるスタイルを適用することで、div要素によって独自にフォーム送信ボタンを設計している。スタイルシートは「デザインデータ」の例である。【０１０２】
一部のWebアプリケーションは、ボタンを自由にデザインするために、このような構成を採用している。図２１では詳細な記述を省略しているが、ボタン要素であるdiv要素がクリックされると、idが”to”、”subject”、”main”である、宛先、件名、本文を構成する各要素に入力された文字列をそれぞれ取得して、フォームデータを形成する。そして、JavaScriptにおける非同期通信ライブラリXMLHttpRequestを利用して、フォーム送信を実行する。【０１０３】
このような独自ボタンを配置する別の例として、図２０の構成を挙げる。図２０に示すように、テキストボックス要素をform要素内に配置し、送信実行ボタンである要素を隠し要素として配置する。その代わりに、疑似送信実行ボタンを、div要素または汎用ボタン要素（＜button
type=”button”＞＜/button＞）により作成する。疑似送信実行ボタンがクリックされた時に、隠された本物の送信実行ボタンがクリックされるよう、JavaScriptコードにて制御する。【０１０４】
なお、図２１の例及び図２０の例は、本実施例の説明を容易にするためであり、本発明の範囲を限定するものでない。【０１０５】
本実施例のWebアプリケーションは、フォームを構成するために、標準規格に準拠したform要素を利用しない。Webアプリケーションの自由度を高めるためである。本実施例のWebアプリケーションは、ユーザの入力を可能とする、もしくはユーザに入力可能と思わせる入力対象要素を備える。さらに、本実施例のWebアプリケーションは、そのWebアプリケーションの提供サーバに対し、入力対象要素に入力された文字列を送信するよう、ユーザが要求するためのボタン、もしくはユーザにボタンと思わせる要素を有する。【０１０６】
図８は、本実施例に係るWebアプリケーション解析システムを示す構成図である。Webアプリケーション基盤２００は、イベント発生部１１０と、Webアプリケーション解析部２１１とを備える。
Webアプリケーション基盤２００とWebアプリケーション基盤１００とを比較すると、Webアプリケーション解析部１１１がWebアプリケーション解析部２１１に変更されている点が異なる。【０１０７】
本実施例におけるWebアプリケーション解析部２１１は、イベント取得部１２０、要素抽出部１２１、要素解析部１２２、属性要素意味推定部１２３、意味DB１２４、テキスト要素バッファ部１２６、一時メモリ１２７、テキスト抽出部１２８、操作ログ生成部１２９、ログテンプレート１３０を備える。さらに、本実施例のWebアプリケーション解析部２１１は、スタイル解析部１３１、隣接テキスト抽出部１３２、関連度導出部１３３、関連テキスト要素意味推定部１３４、要素意味推定部１３５、ボタン要素イベント付加部１２５に代わるボタン要素イベント付加部１３６を、備える。【０１０８】
以下、図８のWebアプリケーション解析部２１１内の各部位の説明を、図９〜図１１を用いて行う。【０１０９】
図９は、Webアプリケーション解析処理のフローチャートである。ステップＴ１００〜Ｔ１０７の処理を完了し、ステップＴ１０７の結果が偽であれば（Ｔ１０７：ＮＯ）、スタイル解析部１３１は、スタイルを用いた要素の判定を行う（Ｔ２００）。【０１１０】
対象要素がテキストボックス要素であると判定するための基準例を説明する。スタイルシートにおいて、対象要素のcursorプロパティが”text”であること、background-colorプロパティが他のテキストボックス要素と同じ値が指定されていること、などの条件を満たすことを、テキストボックス要素であると判定するための基準として用いてもよい。さらに、上記２つの条件のうちいずれか１つを満足している場合に対象要素がテキストボックス要素であると判定してもよいし、もしくは、上記２つの条件の全てを満足している場合に対象要素がテキストボックス要素であると判定してもよい。【０１１１】
対象要素がボタン要素であると判定するための基準例を説明する。スタイルシートにおいて、対象要素のcursorプロパティが”auto”、”default”、”pointer”のいずれかであること、div要素またはspan要素のように汎用として利用される汎用要素が１の深さに、つまり直接にテキストノードタイプの要素を持っていること、文字列間にないアンカーを付けることができるa要素が１の深さにテキストノードタイプの要素を持っていること、ボタンに見えるスタイルを指定していること、などの条件を挙げることができる。ボタンに見えるスタイルを指定するとは、具体的に、対象要素のbackground-colorプロパティに対して、borderプロパティに濃い色を用いていること、などである。これらの条件のうち、いずれか１つの条件を満たした場合に、対象要素がボタン要素であると判定してもよいし、いずれか複数の条件を満たした場合もしくは全ての条件を満たした場合に、対象要素がボタン要素であると判定してもよい。【０１１２】
スタイル解析部１３１は、要素抽出部１２１と共に「第２要素抽出部」の例を構成することができる。スタイル解析部１３１は、前述の判定結果が真であれば（Ｔ２０１：ＹＥＳ）、対象要素を属性要素意味推定部１２３に渡し（Ｔ１０８へ）、判定結果が偽であれば（Ｔ２０１：ＮＯ）、要素抽出部１２１に結果を返す（Ｔ１１８へ）。【０１１３】
属性要素意味推定部１２３は、ステップＴ１０８を実施し、ステップＴ１０８にて導出された確信度を要素意味推定部１３５に渡す。以降、属性要素意味推定部１２３により導出された確信度を、推定確率Paと表記する。この推定確率Paは、対象要素毎に導出されるため、そのインデックスを併記する。従って、ある対象要素nについて属性要素意味推定部１２３により導出された推定確率を、Panと表記する。【０１１４】
隣接テキストによる意味解析を行うために、属性要素意味推定部１２３は、隣接テキスト抽出部１３２に対象要素を渡し（Ｔ２０２）、推定確率を合計する（Ｔ２０３）。隣接テキストによる意味解析等は、図１０にて後述する。【０１１５】
対象要素の意味が確定していれば（Ｔ２０４：ＹＥＳ）、ステップＴ１１０以降を実施し、意味が確定していなければ（Ｔ２０４：ＮＯ）、対象要素に関する意味推定処理は終了する。【０１１６】
図１０を用いて、隣接テキスト抽出部１３２、関連度導出部１３３、関連テキスト要素意味推定部１３４、要素意味推定部１３５の動作、つまり図９のステップＴ２０２の動作の詳細を説明する。隣接テキスト抽出部１３２、関連度導出部１３３、関連テキスト要素意味推定部１３４、は、「第２役割推定部」の例を構成する。要素意味推定部１３５は、例えば、「第１役割推定部の推定結果と第２役割推定部の推定結果とに基づいて、推定対象の要素の役割を最終的に決定する役割最終決定部」と表現してもよい。【０１１７】
隣接テキスト抽出部１３２は、属性要素意味推定部１２３から対象要素を渡されると（Ｔ２１０）、ループ変数であるiを初期化し（Ｔ２１１）、対象要素から距離S以内に存在する近傍テキスト（隣接テキストとも呼ぶ）を探索する（Ｔ２１２）。【０１１８】
距離Sは、例えば、DOMツリーにおける１ノード間の移動を基本単位としている。２ノード離れている場合、距離Sは”２”となる。これに代えて、対象要素の近傍のHＴMLのみをレンダリングし、画像X-Y座標上の１ピクセルを基本単位として、距離Sを定義してもよい。３ピクセル離れている場合、距離Sは”３”となる。いずれの方法で距離Sを定義してもよい。【０１１９】
隣接テキスト抽出部１３２は、探索対象ノードがテキストノードであれば（Ｔ２１３：ＹＥＳ）、そのテキストノードをバッファリングする（Ｔ２１４）。ステップＴ２１２，Ｔ２１３，Ｔ２１４の操作を、距離S内のノード集合に関して繰り返す（Ｔ２１５）。距離S内に存在するテキストの探索が完了すると（Ｔ２１２：ＹＥＳ）、次のステップに進むために、ステップＴ２１４でバッファしたテキストノード配列を、関連度導出部１３３に渡す。距離S内に存在するテキストノードは「所定の関連要素」の例である。【０１２０】
関連度導出部１３３は、ループ変数であるiを初期化し（Ｔ２１５）、ステップＴ２１４にてバッファしたテキストノード配列の全要素に関して、関連度をそれぞれ導出する（Ｔ２１６）。【０１２１】
対象要素と隣接テキストノード間の関連度は、例えば、両者の距離（Ｔ２１７）に基づいて、もしくは両者の位置関係（Ｔ２１８）に基づいて、もしくは両者の構造関係（Ｔ２１９）に基づいて、導出される。【０１２２】
対象要素と隣接テキストノード間の距離、位置関係、構造関係という複数指標に基づく導出方法の例は後述するが、それらの方法に限定しない。また、複数指標からそれぞれ算出される関連度同士の優劣も特に問わない。さらに、どの指標から先に関連度を計算するかの、計算準位も特に問わない。【０１２３】
対象要素と隣接テキストノードとの間の距離を導出する例を説明する。前述のように、DOMツリーにおける１ノード間移動を基本単位として距離を算出してもよいし、対象要素と隣接テキストノードの近傍のみレンダリングして画像を取得し、その画像のX-Y座標上の１ピクセルを基本単位として距離を算出してもよい。【０１２４】
図２１において、宛先を入力する要素”＜input
type=”text” id=”to” size=”１００”＞”を対象要素とする場合、ノード間移動を１単位とする方法を距離算出方法とするなら、”Ｔo:”の距離は４となり、”CCを追加”の距離は６となり、”BCCを追加”の距離は６となる。【０１２５】
図２１の下側に示す”件名：”は、効率的なノード移動であれば、その距離は５となるため、非効率な距離計測が望ましい。具体的に説明する。宛先を入力する要素”＜input type=”text” id=”to” size=”１００”＞ ”から”件名：”にノード間を移動する場合、線形に探索すると、”CCを追加”および”BCCを追加”を格納する要素集合”＜tr＞＜td＞＜/td＞＜td＞＜span id=”cc”＞CCを追加＜/span＞＜/td＞＜td＞＜span id=”bcc”＞BCCを追加＜/span＞＜/td＞＜/tr＞”を経由する。【０１２６】
その移動距離も考慮に入れると、宛先を入力する要素”＜input type=”text” id=”to” size=”１００”＞”から”件名：”までの距離は、１９となる。”Ｔo:”、”CCを追加”、”BCCを追加”までの距離も変化するが、それらは”件名：”までの距離と比較して小さな距離である。【０１２７】
対象要素と隣接テキストノードとの間の位置関係を導出する例を説明する。Webアプリケーションの利用する言語に応じて、対象要素と隣接テキストノードの位置関係の持つ意味は異なる。【０１２８】
例えば、日本語または英語のように、左から右に、上から下に文章が記載される言語の場合、対象要素の上もしくは左に位置するテキストノードの方が、対象要素の他の位置（例えば右）に存在するテキストノードよりも、関連性があると判定できる。場合によっては、対象要素の下に配置されたテキストノードも、対象要素と強い関連性を有する。【０１２９】
他の判断指標として、複数のテキストノードが並列に配置されている場合は、それらのテキストノードと対象要素との関連性を低く評価する方法もある。【０１３０】
図２１において、宛先を入力する要素” ＜input type=”text” id=”to” size=”１００”＞ ”を対象要素とする場合に、テキストノードの位置に基づいて関連性を算出する方法を説明する。この場合、対象要素の左に位置する”Ｔo:”の関連性は”２”と、対象要素の下に位置する”CCを追加”及び”BCCを追加”の関連性はそれぞれ”１”と設定される。さらに、並列する複数テキストノードの関連性を下げるという方法によれば、
”CCを追加”及び”BCCを追加”の関連性は下げられて”０”となる。従って、最終的には、”Ｔo:”の関連性は”２”、”CCを追加”及び”BCCを追加”の関連性はそれぞれ”０”と、設定される。【０１３１】
対象要素と隣接テキストノードの間の構造関係に基づいて、関連性を導出する例を説明する。構造関係に基づいて関連性を求める方法としては、例えば、label要素を用いたラベリングに基づいて関連性を導出する方法、兄弟ノードかどうかで関連性を導出する方法、もしくは、テーブルの同行に格納されているかどうかで関連性を導出する方法などが挙げられる。つまり、対象要素と隣接テキストノードとの間の構造関係とは、Webアプリケーション画面の構造上の関係であると言うこともできる。【０１３２】
図２１において、宛先を入力する要素”＜input
type=”text” id=”to” size=”１００”＞”を対象要素とする場合、label要素によりひも付けられている”Ｔo:”の関連度は、”１”に設定できる。この場合、兄弟ノードは無く、どのテキストノードも関連性をもたない。さらに、”Ｔo:”は、テーブル構造において同列に格納されるため、最終的に関連度を２とできる。【０１３３】
なお、兄弟ノードの定義は、１要素を単位としても良く、部分要素集合を単位としても良い。具体的に、＜div＞＜div＞＜div＞A＜/div＞＜/div＞＜/div＞＜div＞＜div＞＜div＞B＜/div＞＜/div＞＜/div＞という部分構造化文書において、＜div＞＜div＞＜div＞A＜/div＞＜/div＞＜/div＞、及び＜div＞＜div＞＜div＞B＜/div＞＜/div＞＜/div＞のそれぞれを１つのまとまりとすると、両者は兄弟ノード関係にある。【０１３４】
最終的に導出した、距離関係に基づく関連性、位置関係に基づく関連性、構造関係に基づく関連性を正規化して、全ての関連度を統合する（Ｔ２２０）。正規化の方法、統合の方法は特に規定しない。一例として、下記の式１に示すように、a,b,cの係数により各関連度の重みを調整し、全関連度を加算することで統合する方法が挙げられる。なお、式１において、Cは隣接テキストノードの最終関連度、a,b,cは係数、Dは距離の逆数、Pは位置関係による関連度、Sは構造関係による関連度を示す。【０１３５】
C = aD + bP + cS・・・（式１）【０１３６】
関連度導出部１３３は、ステップＴ２１７からＴ２２０までの処理を、ステップＴ２１４にてバッファした配列に格納される全てのテキストノードに対して実施する。【０１３７】
全てのテキストノードについてステップＴ２１７〜Ｔ２２０の処理を完了した場合（Ｔ２１６：ＹＥＳ）、関連度導出部１３３は、ステップＴ２１４にてバッファしたテキストノード配列に格納されている全てのテキストノードのうち最も高い関連度Cを持つ隣接テキストノードを導出し、その隣接テキストノード及び対象要素を、関連テキスト要素意味推定部１３４に渡す（Ｔ２２２）。関連テキスト要素意味推定部１３４は、隣接テキスト要素に基づいて対象要素の意味を推定する機能である。【０１３８】
関連テキスト要素意味推定部１３４は、ステップＴ２２２で導出した最も関連度の高い隣接テキストノードに基づいて、対象要素の意味を解析する（Ｔ２２３）。この意味解析処理は、上述したステップＴ１０８と同様に、関連度導出部１３３から渡された隣接テキストノードの文字列から意味を推定する。【０１３９】
具体例に説明する。関連テキスト要素意味推定部１３４は、意味データベース（DB）１２４に格納されるキーと意味の組を参照し、隣接テキストノードの文字列に対応するキーを見つけ、その意味に対応する確信度を取得する（Ｔ２２３）。【０１４０】
関連テキスト要素意味推定部１３４は、ステップＴ２２３で取得した確信度を、要素意味推定部１３５に渡す。ここで、関連テキスト要素意味推定部１３４により導出された確信度を推定確率Pbと表記する。このPbは、対象要素毎に導出されるため、そのインデックスを併記する。即ち、ある対象要素nについて関連テキスト要素意味推定部１３４により導出された推定確率を、Pbnと表記する。【０１４１】
要素意味推定部１３５は、属性要素意味推定部１２３より渡される推定確率Panと関連テキスト要素意味推定部１３４より渡される推定確率Pbnとから、その対象要素の最終的な推定確率Pnを導出する。推定確率Pnの算出方法は特に問わない。一例として、下記の式２に示すように、係数βによる重み付けにより算出する方法がある。【０１４２】
Pn =βPan + （１-β）Pbn （０＜=β＜=１）・・・（式２）【０１４３】
要素意味推定部１３５は、導出した推定確率Pnがα（０以上１以下）以上であれば、テキスト要素バッファ部１２６もしくはボタン要素イベント付加部１３６のいずれかに、対象要素を渡す（図９のＴ２０３、Ｔ２０４）。要素意味推定部１３５は、対象要素がテキストボックス要素であればテキスト要素バッファ部１２６に（Ｔ１１０）、対象要素がボタン要素であればボタン要素イベント付加部１３６に、渡す（Ｔ１１２）。【０１４４】
続けて、図１１を用いて、ボタン要素イベント付加部１３６の動作を説明する。ボタン要素イベント付加部１３６は、図３で述べたステップＴ１２０〜Ｔ１２３を実施し、ステップＴ１２３で導出する関連度が所定値W以上であれば（Ｔ２３０：ＹＥＳ）、ステップＴ１２５を実施する。【０１４５】
実施例１では、ステップＴ１２３において、同一form内のボタンに対して構造的関連性があると判定する、関連度導出方法を例示した。しかし、本実施例は、formの一要素としてのsubmitボタン（＜input type=”submit”＞）を有していない。さらに一般的に、type属性として”submit”または”button”を持つ、input要素もしくはbutton要素で構成されていないボタンが使用されている場合、関連度が”０”となる。そこで、本実施例では、上記問題に対応すべく、ステップＴ２３１〜Ｔ２３８を用意している。【０１４６】
ボタン要素イベント付加部１３６は、関連度が所定値W未満であると判定した場合（Ｔ２３０：ＮＯ）、テキスト要素バッファ部１２６により一時メモリ１２７に保存されるテキストボックス要素集合から、ステップＴ１３３〜Ｔ１３６で説明した方法を用いて、Webアプリケーションの種別を判定する（Ｔ２３１）。【０１４７】
ボタン要素イベント付加部１３６は、ステップＴ１１３にてバッファされているボタン要素集合に関する全ての文字列を取得する（Ｔ２３２）。ボタン要素イベント付加部１３６は、ループ変数iを初期化し（Ｔ２３３）、ステップＴ１１３でバッファされているボタン要素集合全てに対して、Webアプリケーション関連度を導出する（Ｔ２３５）。【０１４８】
バッファされている各ボタン要素に対してWebアプリケーション関連度を導出する方法は特に限定しない。一例として、ステップＴ１０９で述べたと同等に、ステップＴ２３２で取得した文字列をキーに意味DB１２４を参照し、その文字列に対応する”意味”および”確信度”を取得し、その確信度をWebアプリケーション関連度として用いることができる。【０１４９】
図５に示す意味DB１２４を例に挙げて説明する。ボタン要素から得た文字列が”send”であれば、Webアプリケーション関連度は”１”となる。ボタン要素から得た文字列が”quxsend”であれば、Webアプリケーション関連度は”０.５”となる。ボタン要素から得た文字列に対応するキーが、意味DB１２４に存在しない場合、Webアプリケーション関連度は”０”となる。【０１５０】
ボタン要素イベント付加部１３６は、ステップＴ２３５を、ステップＴ１１３にてバッファされているボタン要素集合の全てに対して実施するために、ループ変数iをインクリメントし（Ｔ２３６）、ステップＴ２３４に戻る。【０１５１】
ステップＴ１１３にてバッファされているボタン要素集合全てに関して、Webアプリケーション関連度を導出した場合（Ｔ２３４：ＹＥＳ）、ボタン要素イベント付加部１３６は、最も高いWebアプリケーション関連度を有するボタン要素を、確定ボタン要素の候補とする。ボタン要素イベント付加部１３６は、確定ボタン要素候補の確信度が所定値γ（０≦γ≦１）以上であれば、その候補を確定ボタン要素とする（Ｔ２３７）。【０１５２】
ボタン要素イベント付加部１３６は、確定ボタン要素が決定していれば（Ｔ２３８：ＹＥＳ）、ステップＴ１２５を実施する。確定ボタン要素が決まっていない場合（Ｔ２３８：ＮＯ）、ステップＴ１２５に移る。【０１５３】
なお、操作ログの出力方法は、実施例１と同様である。操作ログ生成の際に、式２に示す係数βの推奨値を、ユーザに提案してもよい。例えば係数βを０と設定している場合において、その結果、推定確率Pan=１、Pbn=０.２等になった場合は、係数βの値を上げるべきである。【０１５４】
このように構成される本実施例も実施例１と同様の効果を奏する。さらに、本実施例では、汎用的な属性を持つ要素（div要素など）の利用目的もしくは意味を推定することができる。【０１５５】
本実施例では、低負荷に、スキーマまたはDTD（Document Type Definition）などの意味推定に利用できるメタデータを持たない要素で構成されたHTMLで記載されたWebアプリケーションについても、ユーザ操作ログを取得することができる。【０１５６】
本実施例では、標準規格に定められているテキストボックス要素およびボタン要素を利用せず、スタイルシートなどのデザインを工夫することでユーザにテキストボックスおよびボタンを認識させるWebアプリケーションに対応できる。本実施例では、このような表現の自由度の高いWebアプリケーションに対応しており、テキストボックスまたはボタンとしてユーザに見せかける要素から、その目的もしくは意味を推定できる。そして、抽出したテキストボックス要素集合と抽出したボタン要素との関連性を検出できる。【０１５７】
さらに、本実施例では、ユーザにボタンと認識させる要素と、テキストボックス要素集合との関連性を導出し、複数の要素及びその意味からWebアプリケーションの主目的を推測できる。そして、本実施例では、ユーザがテキストボックス要素に入力した文字列を適切なタイミングで取得でき、最終的に、Webアプリケーション上のユーザの操作のログを取得することができる。
【実施例３】
【０１５８】
図１２〜図１４を参照して、第３実施例を説明する。Webアプリケーションとしては、例えば、Web上でメールを作成し送受信するためのWebメールアプリケーション、Web上でドキュメントを作成し保存等するためのWebドキュメント作成アプリケーションなどがある。【０１５９】
それらのWebアプリケーションの中には、ユーザが入力した文字列を自動的にWebアプリケーション提供サーバに送信してバックアップするアプリケーションがある。例えば、その種のWebアプリケーションは、ユーザが文字列を入力したタイミングで、もしくは定期的に、ユーザの入力した文字列を取得して、サーバに送信する。そこで本実施例では、ユーザの入力した文字列を自動的にサーバに送信するWebアプリケーションについての操作ログを取得する。【０１６０】
実施例１では、ユーザが送信実行ボタンを選択したタイミングで、ユーザの入力した文字列をWebアプリケーション提供サーバに送信する場合を例に挙げて説明したが、本実施例では、送信実行ボタンの操作とは別に、所定タイミングで自動的に、ユーザが入力した文字列をWebアプリケーション提供サーバに送信する場合を想定する。【０１６１】
図１２は、本実施例に係るWebアプリケーション解析システムの構成図である。Webアプリケーション基盤３００は、データ通信制御部３１０と、Webアプリケーション通信解析部３１１とを備える。【０１６２】
データ通信制御部３１０は、Webアプリケーション基盤３００における通信制御を担当するモジュールである。データ通信制御部３１０は、Webアプリケーションのリソース読み込み、Webアプリケーション実行時の、リクエスト処理およびレスポンス受信などを制御する。【０１６３】
Webアプリケーション通信解析部３１１は、Webアプリケーションの通信を監視する。Webアプリケーション通信解析部３１１の通信監視方法、つまり、Webアプリケーション通信解析部３１１の実装箇所は特に問わない。Webアプリケーション通信解析部３１１の通信監視方法の例を以下に挙げる。しかし、本発明は、それらの例に限定されない。【０１６４】
第一の通信監視方法として、図１２に示すように、Webアプリケーション基盤３００と同一のメモリ空間内に侵入する方法がある。一般に、グローバルフックと呼ばれる方法などを用いて、フック対象のアプリケーションが利用するAPIをフックする。これにより、侵入モジュールに制御を遷移させることができる。【０１６５】
図１２の例では、Webアプリケーション基盤３００内にWebアプリケーション通信解析部３１１を侵入させ、データ通信制御部３１０が利用する通信ライブラリAPIをWebアプリケーション通信解析部３１１が用意する疑似APIに変更する。これにより、Webアプリケーション通信解析部３１１は、データ通信制御部３１０が通信しようとするデータを観測することができる。本実施例では、この方法を採用している。【０１６６】
第二の通信監視方法として、通信ライブラリが利用するAPIをフックする方法が挙げられる。但し、通信ライブラリが、例えばTCP/IPなどのように、HTTPよりも下位の通信を制御するライブラリの場合、HTTPS（Hypertext Transfer
Protocol over Secure Socket Layer）を用いた通信を観測することは難しい。HTTPSとは、SSL（Secure Socket Layer）を利用した通信であり、Webアプリケーション基盤３００がHTTPSを用いて通信すると、その通信内容を観測するのは難しい。【０１６７】
一般に、HTTPSなどのHTTPレイヤで暗号化されたデータを、それ以下のレイヤで観測する場合を説明する。この場合、WebアプリケーションとWebアプリケーション提供サーバとの間の暗号通信路を、Webアプリケーション通信解析モジュール（Webアプリケーション通信解析部３１１）の前後で分割する。即ち、Webアプリケーションとサーバとの間の暗号通信路を、WebアプリケーションとWebアプリケーション通信解析モジュールとの間と、Webアプリケーション通信解析モジュールとWebアプリケーション提供サーバとの間とに、分割する。【０１６８】
そして、例えば、HTTPSにより暗号化されたデータをWebアプリケーションがWebアプリケーション提供サーバに送信する場合に、Webアプリケーション通信解析モジュールは、WebアプリケーションとWebアプリケーション通信解析モジュールとの間の通信路用の暗号鍵を用いて暗号化データを復号し、平文データを獲得する。【０１６９】
さらに、何かしらの解析に必要な処理を実施して、Webアプリケーション通信解析モジュールとWebアプリケーション提供サーバとの間の通信路用の暗号鍵を用いて、平文データを暗号化する必要がある。【０１７０】
第三の通信監視方法として、Webアプリケーション通信監視モジュールをプロキシソフトウェアとして実装する方法がある。この方法は、第二の方法と同様に、SSLへの対応を行う必要がある。【０１７１】
第四の方法として、Webアプリケーション通信監視モジュールを、物理的プロキシサーバまたは物理的ゲートウェイとして実装する方法がある。この方法も、第二の方法および第三の方法と同様に、SSLへの対応が必要である。【０１７２】
Webアプリケーション通信解析部３１１は、データ取得部３２０、マルチパート抽出部３２１、ヘッダ解析部３２２、属性要素意味推定部１２３、意味DB１２４、テキストバッファ部３２３、一時メモリ１２７、操作ログ生成部１２９、ログテンプレート１３０を備えて構成されている。【０１７３】
図１４を参照して、Webアプリケーション通信解析部３１１の動作を説明する。図１３に、解析対象データの例を示す。図１３は、説明を容易にするために用意されたものであり、本実施例の解析対象データは図１３に示すものに限定されない。【０１７４】
データ通信制御部３１０は、Webアプリケーション基盤３００の上位モジュールなどから、マルチパートデータを受信する（S１００）。その後、データ通信制御部３１０は、さらに下位のライブラリを呼ぶなどして、Webアプリケーション通信解析部３１１の疑似APIを呼び出す（S１０１）。その結果、データ取得部３２０は、データ通信制御部３１０が通信しようとするデータを受信できる。なお、本実施例のマルチパートデータとは、複数パートから構成されるデータであり、各パートのデータの集合体である。例えば、Webアプリケーションが電子メールアプリケーションの場合、宛先パート、件名パート、本文パートなどのように複数パートのデータを含むマルチパートデータを、そのWebアプリケーションを提供するためのサーバに送信する。【０１７５】
マルチパート抽出部３２１は、マルチパートデータをパート毎に分割し、各パートのデータを抽出する（S１０２）。【０１７６】
ヘッダ解析部３２２は、ステップS１０２にて抽出された複数パートの中から１つのパートを処理対象パートとして選択し、処理対象パートからヘッダ情報を取得し、さらに、そのヘッダ情報から属性値を取得する（S１０３）。図１３の場合、ヘッダ解析部３２２は、nameヘッダの値、具体的には”to”および”cc”などの値を取得する。【０１７７】
属性要素意味推定部１２３は、図２のステップＴ１０８，Ｔ１０９で述べたと同様の処理を行う（S１０４）。【０１７８】
テキストバッファ部３２３は、処理対象パート内のボディデータを抽出し、Ｔ１１１と同様の処理を行う（S１０５）。【０１７９】
Webアプリケーション通信解析部３１１は、ステップS１０２からS１０５までの処理を、全てのパートデータに関して繰り返し実施する。【０１８０】
操作ログ生成部１２９は、図４のステップＴ１３６〜Ｔ１３８で述べた処理と同様の処理を行い、操作ログを生成し（S１０６）、生成した操作ログを操作ログ受信部１０１に送信する（S１０７）。【０１８１】
Webアプリケーション通信解析部３１１は、疑似APIの対象である本物のAPIを呼び出し、最終的に、制御をデータ通信制御部３１０に返す（S１０８）。【０１８２】
このように構成される本実施例も、Webアプリケーションに対するユーザ操作を監視して、操作ログを取得し保存することができる。さらに、本実施例では、WebアプリケーションとWebアプリケーション提供サーバとの通信を監視するため、Webアプリケーションからサーバに向けて送信するデータから、Webアプリケーション上のユーザ操作のログを取得することができる。従って、ユーザの入力した文字列（データ）をWebアプリケーションが自動的に取得してサーバに送信する場合でも、操作ログを取得できる。
【実施例４】
【０１８３】
図１５および図１６を参照して第４実施例を説明する。本実施例も、前記実施例３と同様に、ユーザが入力した文字列を自動的にWebアプリケーション提供サーバに送信するケースを想定する。【０１８４】
図１５は、本実施例に係るWebアプリケーション解析システムの構成例を示す。以下のブロック図では、ブロックの名称を省略し、符号のみを示す場合がある。【０１８５】
Webアプリケーション基盤４００は、イベント発生部１１０と、Webアプリケーション解析部４１１と、データ通信制御部３１０と、Webアプリケーション通信解析部４１２とを備える。【０１８６】
本実施例におけるWebアプリケーション解析部４１１は、実施例２で述べたWebアプリケーション解析部２１１に類似する構成と、実施例３で述べたWebアプリケーション通信解析部３１１に類似する構成とを備える。【０１８７】
即ち、Webアプリケーション解析部４１１は、イベント取得部１２０、要素抽出部１２１、要素解析部１２２、属性要素意味推定部１２３、意味DB１２４、テキスト要素バッファ部１２６、一時メモリ１２７、テキスト抽出部１２８、スタイル解析部１３１、隣接テキスト抽出部１３２、関連度導出部１３３、関連テキスト要素意味推定部１３４、要素意味推定部１３５、ボタン要素イベント付加部１３６を備える。それら機能ブロックの動作も、図９〜図１１で述べた動作と同様である。【０１８８】
なお、本実施例のWebアプリケーション解析部４１１は、実施例２のWebアプリケーション解析部２１１に類似する構成に代えて、実施例１のWebアプリケーション解析部１１１と類似の構成（イベント取得部１２０〜一時メモリ１２７までを持つ構成）を備えてもよい。つまり、本実施例は、実施例２と実施例３の結合として記載することもできるし、実施例１と実施例３の結合として記載することもできる。【０１８９】
Webアプリケーション通信解析部４１２は、「通信取得部」の例であるデータ取得部３２０、マルチパート抽出部３２１、パートテキスト抽出部４２０、データ照合部４２１、操作ログ生成部１２９、ログテンプレート１３０を備える。データ取得部３２０は「通信取得部」の例である。パートテキスト抽出部４２０は、マルチパート抽出部３２１と共に「通信文字列抽出部」の例を構成する。【０１９０】
Webアプリケーション通信解析部４１２の通信監視方法、つまり、Webアプリケーション通信解析部４１２の実装箇所は、特に問わない。本実施例では、実施例３と同様、説明を容易にするために、Webアプリケーション基盤４００と同一のメモリ空間内に侵入する方法を用いる。これ以外の実装箇所に、Webアプリケーション通信解析部４１２を設けてもよい。【０１９１】
図１６を参照して、本実施例におけるWebアプリケーション通信解析部４１２の動作を説明する。解析対象データの例として図１３を用いる。図１３は、説明を容易にするために用意されており、本実施例の解析対象データは、図１３の例に限定されない。【０１９２】
Webアプリケーション通信解析部４１２は、図１４で述べたステップS１００〜S１０２を実施する。その後、データ取得部３２０は、データを取得したことをイベント情報として、テキスト抽出部１２８に通知する。【０１９３】
テキスト抽出部１２８は、データ取得部３２０から通知されるイベント情報を契機に、一時メモリ１２７に格納されている全てのテキストボックス要素から、ユーザが入力したデータを抽出する。【０１９４】
一方、パートテキスト抽出部４２０は、各パートのボディテキストを抽出する（S１０５）。図１３の例では、name=”to”のパートからは、”example@example.com”のテキストを抽出する。【０１９５】
データ照合部４２１は、ステップS１０５にて抽出されたテキストと、テキスト抽出部１２８により抽出されたユーザ入力テキストとを比較照合する（S１１０）。ステップS１１０での照合の結果、パートから抽出されたデータとユーザ入力テキストとが一致する場合、ステップS１０５にて抽出されたテキストがどのテキストボックスに入力されたデータかを判別することができる。その結果、ステップS１０５にて抽出されたテキストの意味を推定することができる。【０１９６】
なお、照合するデータは、パート内の全てのテキストでもよいし、一部のテキストでもよい。また、テキストの照合方法は既知の方法を用いればよい。本実施例ではテキスト照合方法を特に問わない。【０１９７】
ステップS１０２、S１０５、S１１０を全てのパートについて繰り返すことで、データ通信制御部３１０により通信されるデータに含まれているテキストと、そのテキストの意味とを判定できる。【０１９８】
判定されたテキストとその意味との組で構成されるデータを使って、操作ログ生成部１２９は、操作ログを生成し（S１０６）、この操作ログを操作ログ受信部１０１に送信する（S１０７）。最後に、制御はデータ通信制御部３１０に返される（S１０８）。【０１９９】
このように構成される本実施例も、Webアプリケーションに対するユーザ操作のログを取得することができる。本実施例は、実施例２および実施例３で述べた効果を奏する。または、上述の通り、本実施例は、Webアプリケーション解析部４１１として実施例１のWebアプリケーション解析部１１１に類似する構成を用いることで、実施例１および実施例３で述べた効果を奏する。
【実施例５】
【０２００】
図１７および図１８を参照して第５実施例を説明する。本実施例では、ユーザデータが複数のデータに分割されて送信される場合を想定する。【０２０１】
具体的には、図１９に示すWebアプリケーションにおいて、ユーザが電子メールにファイルを添付するための操作を行うと、ユーザが電子メールの送信を実行するボタンを選択するよりも前に、添付ファイルがWebアプリケーション提供サーバに送信される。本実施例は、このようなケースに対応する。【０２０２】
つまり、一部のデータがユーザによる送信実行の選択とは別のタイミングに送信され、他のデータがユーザによる送信実行選択のタイミングで送信される場合である。この場合、ユーザは一連の動作（Webアプリケーション上で、添付ファイル付きのメールを送信するという動作）を実行している。従って、出力すべきユーザ操作ログは１つにまとまっているべきである。添付ファイルの選択に関するログと、添付ファイル付き電子メールの送信に関するログとに分かれるべきではない。【０２０３】
図１７は、本実施例に係るWebアプリケーション解析システムの構成例を示す。Webアプリケーション基盤５００は、イベント発生部１１０と、Webアプリケーション解析部５１１と、データ通信制御部３１０と、Webアプリケーション通信解析部５１２とを備えて構成される。【０２０４】
本実施例におけるWebアプリケーション解析部５１１は、イベント取得部１２０、要素抽出部１２１、要素解析部１２２、属性要素意味推定部１２３、意味DB１２４、テキスト要素バッファ部１２６、一時メモリ１２７、テキスト抽出部１２８、操作ログ生成部１２９、ログテンプレート１３０、スタイル解析部１３１、隣接テキスト抽出部１３２、関連度導出部１３３、関連テキスト要素意味推定部１３４、要素意味推定部１３５、ボタン要素イベント付加部１３６とを有する。それら機能ブロック１２０〜１３６の動作内容は、図９〜図１１で述べた通りである。【０２０５】
本実施例のWebアプリケーション解析部５１１は、実施例２で述べたWebアプリケーション解析部２１１と同様の構成を備えている。これに代えて、Webアプリケーション解析部５１１を、実施例１で述べたWebアプリケーション解析部１１１と類似構成（イベント取得部１２０〜一時メモリ１２７までの構成）を有するように構成してもよい。【０２０６】
Webアプリケーション通信解析部５１２は、データ取得部３２０、マルチパート抽出部３２１、パートテキスト解析部５２０、送信データバッファ部５２１で構成される。Webアプリケーション通信解析部５１２の通信監視方法、つまり、Webアプリケーション通信解析部５１２の実装箇所は、特に問わない。本実施例では、実施例３と同様に、説明を容易にするために、Webアプリケーション基盤５００と同一のメモリ空間内に侵入する方法を用いるが、この実装箇所に限定されない。パートテキスト解析部５２０は、マルチパート抽出部３２１と共に「ファイルデータ抽出部」の例を構成する。【０２０７】
図１８を用いて、本実施例におけるWebアプリケーション解析部５１１と、Webアプリケーション通信解析部５１２の動作を説明する。なお、解析対象データの例として、図１３を用いる。なお、図１３は、説明を容易にするために用意されるものであり、本実施例の解析対象データを限定するものではない。【０２０８】
Webアプリケーション解析部５１１は、イベント発生部１１０からのイベントを受信し、図９〜図１１に示す処理を実施する（S１３０）。【０２０９】
データ通信制御部３１０は、上位からマルチパートデータを受信し（S１００）、下位のAPIを呼ぶ。それにより、Webアプリケーション通信解析部５１２に制御が遷移する（S１０１）。【０２１０】
Webアプリケーション通信解析部５１２は、マルチパートデータから各パートのデータを抽出する（S１０２）。続いて、パートテキスト解析部５２０は、各パートのヘッダを解析し、そのパートのコンテンツがファイルであれば、そのファイルに関する情報を送信データバッファ部５２１に保持させる（S１２０）。【０２１１】
パートテキスト解析部５２０が送信データバッファ部５２１に送付する「ファイルに関する情報」の内容は、特に問わない。ファイルに関する情報には、例えば、ファイルそのもの、ファイルのハッシュ値、ファイル名などを含めてもよい。また、パートテキスト解析部５２０によるパートヘッダの解析内容および解析方法は、特に問わない。パートテキスト解析部５２０は、例えば、解析対象のパートのヘッダに”filename”属性が付与されているか、などを解析する。【０２１２】
Webアプリケーション解析部５１１は、イベント発生部１１０からのイベントを受けて、図４で述べたステップＴ１３０〜Ｔ１３６を実施する（S１３１）。【０２１３】
続けて、操作ログ生成部１２９は、テキスト抽出部１２８から得られるユーザ入力文字列情報と、送信データバッファ部５２１から得られるファイル情報とに基づいて操作ログを生成する（S１０６）。操作ログ生成部１２９は、操作ログを操作ログ受信部１０１に送信する（S１０７）。【０２１４】
操作ログ生成部１２９に入力されるデータがテキスト抽出部１２８から得られるユーザ入力文字列情報だけの場合、つまり、送信データバッファ部５２１にファイル情報が格納されていない場合、実施例１や実施例２と同様に処理すれば良い。【０２１５】
操作ログ生成部１２９に入力されるデータが送信データバッファ部５２１から得られるファイル情報だけの場合、つまり、Webアプリケーションが単なるファイルアップローダのような種類のアプリケーションである場合、「ファイルをアップロードした」などの操作ログが取得されることになる。【０２１６】
なお、Webアプリケーションがファイルアップローダのようなアプリケーションである場合、イベント取得部１２０が獲得するイベントは、Webアプリケーションにおける現在のセッションもしくはページが終了したタイミング、もしくは終了しようとしているタイミングで、通知されるイベントである。【０２１７】
このように構成される本実施例も、Webアプリケーションに対するユーザ操作のログを取得することができる。さらに、本実施例では、電子メールにファイルを添付して送信する等のように、ユーザのWebアプリケーションに対する一連の操作の中で、ユーザの入力するデータが複数に分割され場合でも、一つの操作ログを取得できる。つまり、本実施例では、分割されたデータごとにそれぞれ操作ログを作成するのではなく、一連の動作について一つの操作ログを作成する。従って、システム管理者は、Webアプリケーションに対するユーザ操作を監視しやすくなり、使い勝手が向上する。【０２１８】
なお、本発明は、上述した実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。例えば、実施例１と実施例３を結合させた構成、実施例１と実施例５を結合させた構成、実施例４と実施例５を結合させた構成、実施例１と実施例３と実施例５を結合させた構成も、本発明の範囲に含まれる。【０２１９】
さらに、本発明は、例えば、以下のようにコンピュータプログラムの発明として表現することもできる。
「表現１．
コンピュータを、サーバ上で稼働するウェブアプリケーションに対するユーザ操作を検出するためのユーザ操作検出システムとして機能させるためのコンピュータプログラムであって、
前記コンピュータに、
前記ウェブアプリケーションが提供するアプリケーション画面から、ユーザが文字列を入力するための文字列入力要素と、前記ウェブアプリケーションに対して所定の動作の実行を指示するための実行指示要素とをそれぞれ抽出する第１要素抽出部と、
抽出された前記文字列入力要素および前記実行指示要素の、前記ウェブアプリケーションにおける役割を推定する役割推定部と、
前記文字列入力要素と前記実行指示要素とを関連付ける要素関連付け部と、
前記実行指示要素に関連付けられた前記文字列入力要素に入力される入力文字列を抽出する文字列抽出部と、
ウェブアプリケーションの種類に応じて用意されるひな形データであって、前記ウェブアプリケーションに対するユーザ操作を記録するためのひな形データを記憶するひな形記憶部と、
前記文字列抽出部により抽出された前記入力文字列に対応するひな形データを前記ひな形記憶部から取得し、取得した前記ひな形データと前記入力文字列とに基づいて、ユーザ操作を記録したユーザ操作記録データを生成するユーザ操作記録データ生成部と、
をそれぞれ実現させるコンピュータプログラム。
表現２．
前記アプリケーション画面は、複数の要素を木構造に配置した木構造データから形成されており、
前記要素関連付け部は、前記木構造データにおける構造上の関係に基づいて、前記文字列入力要素と前記実行指示要素とを関連付ける、
表現１に記載のコンピュータプログラム。
表現３．
前記役割推定部は、推定対象の要素の属性値に基づいて前記推定対象の要素の役割を推定する第１役割推定部を含んでおり、
前記第１役割推定部は、
前記文字列入力要素の属性値に基づいて前記文字列入力要素の役割を推定し、
前記実行指示要素の属性値に基づいて前記実行指示要素の役割を推定する、
表現１または２のいずれかに記載のコンピュータプログラム。
表現４．
前記第１役割推定部は、キーワードと役割と確信度とを対応づけて管理する役割データベースを使用することができ、
前記第１役割推定部は、
前記文字列入力要素の前記属性値に含まれるキーワードと同一のキーワードに対応づけられている役割および確信度を前記役割データベースから取得することで、前記文字列入力要素の役割を推定し、
前記実行指示要素の前記属性値に含まれるキーワードと同一のキーワードに対応づけられている役割および確信度を前記役割データベースから取得することで、前記実行指示要素の役割を推定する、
表現３に記載のコンピュータプログラム。
表現５．
前記ユーザ操作記録データ生成部は、前記入力文字列と前記ひな形記憶部に記憶されている各ひな形データとの適合する度合いを示す適合度を算出し、最も適合度の高いひな形データを前記入力文字列に対応するひな形データであるとして選択する、
表現１〜４のいずれか１項に記載のコンピュータプログラム。
表現６．
前記ユーザ操作記録データ生成部は、選択された前記ひな形データと前記入力文字列との適合度を、前記ユーザ操作記録データに関連付けて出力する、
表現５に記載のコンピュータプログラム。
表現７．
予め設定される第１タイミングが到来すると、前記第１要素抽出部と前記役割推定部および前記要素関連付け部は作動し、
予め設定される第２タイミングが到来すると、前記文字列抽出部および前記ユーザ操作記録データ生成部が作動する、
表現１〜６のいずれか１項に記載のコンピュータプログラム。
表現８．
前記木構造データには、前記木構造データを構成する前記複数の要素のデザインを規定するデザインデータが関連付けられており、
前記デザインデータに基づいて、前記文字列入力要素と前記実行指示要素とをそれぞれ抽出する第２要素抽出部をさらに備えており、
前記役割推定部は、推定対象の要素に関連する所定の関連要素に基づいて前記推定対象の要素の役割を推定する第２役割推定部を、さらに含んでおり、
前記第２役割推定部は、
前記第２要素抽出部により抽出される前記文字列入力要素と前記実行指示要素とを、推定対象の要素として扱い、
前記デザインデータに基づいて、前記木構造データから前記推定対象の要素に関連する前記所定の関連要素を全て取得し、
取得された前記所定の関連要素のそれぞれについて、前記推定対象の要素との関連の度合いを示す所定の関連度を取得し、
前記所定の関連度に基づいて、前記所定の関連要素の中から一つを選択し、
選択された前記所定の関連要素の属性値に基づいて、前記推定対象の前記文字列入力要素および前記実行指示要素の役割をそれぞれ推定する、
表現１〜７のいずれか１項に記載のコンピュータプログラム。
表現９．
前記所定の関連要素は、前記推定対象の要素から所定の距離内に存在するテキスト要素である、
表現８に記載のコンピュータプログラム。
表現１０．
前記所定の関連度は、距離に基づく関連度、位置関係に基づく関連度、構造関係に基づく関連度のうち、いずれか少なくとも一つである、
表現８または９のいずれか１項に記載のコンピュータプログラム。
表現１１．
前記第１役割推定部による第１推定結果と前記第２役割推定部による第２推定結果とに基づいて、前記推定対象の要素の役割が決定される、
表現８〜１０のいずれか１項に記載のコンピュータプログラム。
表現１２．
前記クライアント端末と前記サーバとの通信内容を取得する通信取得部と、
前記通信内容から文字列を抽出する通信文字列抽出部と、
をさらに備え、
前記ユーザ操作記録データ生成部は、
前記文字列抽出部により抽出された前記入力文字列と、前記通信文字列抽出部により抽出された通信文字列とを照合することで、前記通信文字列と前記文字列入力要素との対応関係を特定し、
前記入力文字列に対応する前記ひな形データと前記通信文字列とに基づいて、前記ユーザ操作記録データを生成する、
表現１〜１１のいずれか１項に記載のコンピュータプログラム。
表現１３．
前記クライアント端末から前記サーバへの通信内容を取得する通信取得部と、
前記通信内容からファイルデータを抽出するファイルデータ抽出部と、
さらに備え、
前記ユーザ操作記録データ生成部は、抽出された前記ファイルデータに関する情報を含めて、前記ユーザ操作記録データを生成する、
表現１〜１２のいずれか１項に記載のコンピュータプログラム。」
さらに、本発明は以下のように表現してもよい。
「表現１
木構造データを構成できる構造化文書を入力し、前記木構造データから、ユーザが文字列を入力可能な要素と、ユーザが選択可能なボタン要素を要素名と属性により抽出する要素名要素抽出手段と、
木構造データを構成できる構造化文書を入力し、入力された前記木構造データから、ユーザが文字列を入力可能な要素と、ユーザが選択可能なボタン要素を、当該要素のスタイルもしくはデザインに着目し抽出するスタイル要素抽出手段と、
抽出された要素の全ての属性から得られる属性値から、当該要素の利用目的もしくは意味を導出する属性要素意味推定手段と、
前記属性要素意味推定手段から導出される前記属性推定意味Panと、前記関連テキスト要素意味推定手段から導出される前記隣接テキスト推定意味Pbnから要素推定意味Pnを、
Pn = βPan + (1-β)Pbn (0<=β<=1)の式にて導出する要素意味推定手段と、
抽出された要素に隣接するテキストから、当該要素の利用目的もしくは意味を導出する関連テキスト要素意味推定手段と、
抽出されたユーザが文字列を入力可能な要素の集合と、ユーザが選択可能なボタン要素を関連付ける要素関連付け手段と、
Webアプリケーション毎に用意される、穴埋め可能な定型文書もしくは、テキスト要素の挿入が可能な構造化文書を提供し、穴埋め可能な定型文書の場合は穴、テキスト要素の挿入が可能な構造化文書の場合はテキスト要素に対応すべき意味データが属性として添付されている変換データ提供手段と、
抽出されたユーザが文字列を入力可能な要素の集合から得られるそれぞれの意味データ集合と変換データ提供手段にて提供される穴埋め可能な定型文書もしくは、テキスト要素の挿入が可能な構造化文書の意味データ集合を照合し、適合度の高い穴埋め可能な定型文書もしくは、テキスト要素の挿入が可能な構造化文書を選択する変換文書提供手段と、
ユーザが入力した文字列を抽出し、文書変換手段により得られる適合度の高い穴埋め可能な定型文書もしくは、テキスト要素の挿入が可能な構造化文書に対して、穴埋め可能な定型文書の場合は穴、テキスト要素の挿入が可能な構造化文書の場合はテキスト要素に、意味データが適合し対応する、抽出したユーザが入力した文字列を割り当て、文書を変換する文書変換手段と、
を具備することを特徴とするユーザ操作検出システム。
表現２．
表現１のユーザ検知システムにおいて、
前記入力木構造データから、ユーザが文字列を入力可能な要素と、ユーザが選択可能なボタン要素を、
当該要素の要素名、もしくは当該要素の要素名と当該要素の属性の組、もしくは当該要素のスタイルに記述される項目において、文字列入力を促すデザイン、ボタンを促すデザインが指定されるスタイル情報を使って、抽出する
ユーザ操作検出システム。」
【符号の説明】
【０２２０】
１００  Webアプリケーション基盤
１０１  操作ログ受信部
１１０  イベント発生部
１１１  Webアプリケーション解析部
１２０  イベント取得部
１２１  要素抽出部
１２２  要素解析部
１２３  属性要素意味推定部
１２４  意味DB
１２５  ボタン要素イベント付加部
１２６  テキスト要素バッファ部
１２７  一時メモリ
１２８  テキスト抽出部
１２９  操作ログ生成部
１３０  ログテンプレート
１３１  スタイル解析部
１３２  隣接テキスト抽出部
１３３  関連度導出部
１３４  関連テキスト要素意味推定部
１３５  要素意味推定部
１３６  ボタン要素イベント付加部
２００  Webアプリケーション基盤
２１１  Webアプリケーション解析部
３００  Webアプリケーション基盤
３１０  データ通信制御部
３１１  Webアプリケーション通信解析部
３２０  データ受信部
３２１  マルチパート抽出部
３２２  ヘッダ解析部
３２３  テキストバッファ部
４００  Webアプリケーション基盤
４１１  Webアプリケーション解析部
４１２  Webアプリケーション通信解析部
４２０  パートテキスト抽出部
４２１  データ照合部  
５００  Webアプリケーション基盤
５１１  Webアプリケーション解析部
５１２  Webアプリケーション通信解析部
５２０  パートテキスト解析部
５２１  送信データバッファ部
【図１】
2013128645.tif 000003
【図２】
2013128645.tif 000004
【図３】
2013128645.tif 000005
【図４】
2013128645.tif 000006
【図５】
2013128645.tif 000007
【図６】
2013128645.tif 000008
【図７】
2013128645.tif 000009
【図８】
2013128645.tif 000010
【図９】
2013128645.tif 000011
【図１０】
2013128645.tif 000012
【図１１】
2013128645.tif 000013
【図１２】
2013128645.tif 000014
【図１３】
2013128645.tif 000015
【図１４】
2013128645.tif 000016
【図１５】
2013128645.tif 000017
【図１６】
2013128645.tif 000018
【図１７】
2013128645.tif 000019
【図１８】
2013128645.tif 000020
【図１９】
2013128645.tif 000021
【図２０】
2013128645.tif 000022
【図２１】
2013128645.tif 000023
【図２２】
2013128645.tif 000024
【図２３】
2013128645.tif 000025
【国際調査報告】
2013128645.tif 000026
2013128645.tif 000027
2013128645.tif 000028
2013128645.tif 000029