以下、本発明を実施するための形態について図面を参照して説明する。
図1は、本発明の実施形態の計算機システム1の構成例を示す図である。計算機システム1は、LAN(Local Area Network)等のネットワーク4を介して接続されたWebクライアント(クライアント装置)2と、Webサーバ(計算機)3とを備える。
Webクライアント2は、Webサーバ3によって提供される機能やデータを利用する計算機である。Webクライアント2は、CPU(Central Processing Unit)、メモリ、インタフェース(不図示)等を備えた一般的なコンピュータ装置である。このWebクライアント2は、Web操作画面表示部21、データ入力部22及びデータ送信部23を備える。
Web操作画面表示部21は、Webクライアント2からのリクエストに応じて、Webサーバ3からレスポンスとして送られてくるリソースに基づいて、表示装置24上にWeb操作画面を表示する。データ入力部22も、Webサーバ3からレスポンスとして送られてくるリソースに基づいて表示されたWeb操作画面上におけるユーザの操作情報(入力データ)を、Web操作画面上の各入力用エレメントに割り当てた変数に入力する。データ送信部23は、Web操作画面上の各入力用エレメントの変数に入力された入力データをWebサーバ3に送信する。
Webサーバ3は、Webクライアント2からのリクエストに応じて、Webクライアント2にWebアプリケーションのリソースやデータを提供する計算機である。このWebサーバ3は、DB構築支援部30を備える。
DB構築支援部30は、リアルタイムデータ解析部31、過去データ解析部32及びDB構築部33を含む。このDB構築支援部30は、Webクライアント2から受信した入力データ又はWeb操作履歴51に格納された操作履歴データに基づくDB構築を支援する。
リアルタイムデータ解析部31は、Webクライアント2からリアルタイムに受信した入力データを解析する。一方、過去データ解析部32は、Webクライアント2から過去に受信し、Web操作履歴51に蓄積された操作履歴データを解析する。これらリアルタイムデータ解析部31及び過去データ解析部32は、解析結果としてスキーマ定義71及びDB入力用データ72を生成する。DB構築部33は、生成されたスキーマ定義71及びDB入力用データ72に基づいて、Web解析用DB61を構築する。
リアルタイムデータ解析部31は、解析データ選定部34、スキーマ定義部35、スキーマ更新部36、データフィルタ部37及び入力データ生成部38を含む。
過去データ解析部32は、解析データ選定部34、スキーマ定義部35、スキーマ更新部36、履歴構成解析部39及びデータ抽出・生成部40を含む。
すなわちリアルタイムデータ解析部31及び過去データ解析部32は、解析データ選定部34、スキーマ定義部35及びスキーマ更新部36を共有する。
解析データ選定部34は、Webクライアント2から受信する入力データ又はWeb操作履歴51に格納された操作履歴データにおいて、解析すべきデータの項目を、クライント2に提示するWeb操作画面の画面構成に基づいて選定する。解析データ選定部34の詳細については、図5を用いて後述する。
スキーマ定義部35は、解析データ選定部34によって選定されたデータに基づいてスキーマを定義し、定義されたスキーマ(スキーマ定義71)を出力する。スキーマとは、作成すべきDBのデータ構成(本発明の実施形態ではテーブルの構成)を記述したものであり、スキーマ定義では、DBのデータ構成(本発明の実施形態ではテーブル構成)を記述する。なお、スキーマ定義部35の詳細については、図7を用いて後述する。スキーマ定義部35によって定義されたスキーマは、スキーマ更新部36によって更新(修正、変更)可能である。
スキーマ更新部36は、DB構築者又はWeb操作履歴解析者(以下、説明の便宜上「Webサーバ3のユーザ」という。)による指示に従って、スキーマ定義部35によって定義されたスキーマを更新する。
データフィルタ部37は、スキーマ定義部35によって定義されたスキーマに従って、Webクライアント2から受信した入力データをフィルタリングするデータフィルタリングプログラムを生成する。また、生成されたデータフィルタリングプログラムに従って、入力データをフィルタリングする。データフィルタ部37の詳細については、図9を用いて後述する。
入力データ生成部38は、データフィルタ部37によってフィルタリングされたデータに基づいて、DB入力用データ72を生成する。DB入力用データ72とは、スキーマ定義に基づいてCSV形式等の所定の形式で記述され、Web解析用DB61にロード可能なデータである。入力データ生成部38の詳細については、図12及び図14を用いて後述する。
履歴構成解析部39は、Web操作履歴51に格納された操作履歴データの構成を解析する。履歴構成解析部39の詳細については、図18、図29A及び図29Bを用いて後述する。
データ抽出・生成部40は、スキーマ定義71に従って、Web操作履歴51に格納された操作履歴データからデータを抽出し、抽出されたデータに基づいてDB入力用データ72を生成する。データ抽出・生成部40の詳細については、図17を用いて後述する。
Web操作履歴51は、Webクライアント2から受信したユーザの操作履歴データを蓄積するファイルである。ここでいう操作履歴データとは、プロトコルのヘッダや、タグ等のユーザによって入力されたデータとは直接関係のないデータも含む。
Web解析用DB61は、DB構築部33によってスキーマ定義71及びDB入力用データ72に基づいて構築されるデータベースである。
以上に示す構成により、本発明の実施形態の計算機システム1は、DB構築支援部30が、Webクライアント2から受信する入力データ又はWeb操作履歴51に格納された操作履歴データに基づくDBの構築を支援する。
図2は、本発明の実施形態のWebサーバ3の構成例を示す図である。
図2に示すWebサーバ3は、CPU310、ノースブリッジ320、サウスブリッジ330、SDRAM(Synchronous Dynamic Random Access Memory)340及び記憶装置350を備える。
CPU310は、記憶装置350に記憶された各種プログラムを実行する演算処理装置である。ノースブリッジ320は、PCIe(PCI express)バスを介して、LANカード360を接続するためのLANスロット(不図示)、SASカード370A、370Bを接続するためのSASスロット(不図示)に接続される。SDRAM340は、例えばDDR2(Double Data Rate 2)規格のSDRAMである。
サウスブリッジ330は、PCIeバスを介して、VGA(Video Graphics Array)カード380を接続するためのVGAスロット(不図示)に接続される。また、USBバスを介してUSBポート(不図示)に接続される。また、SATA(Serial Advanced Technology Attachment)規格の記憶装置350に接続される。
記憶装置350には、OS(Operating System)351、Webアプリケーション352、DB構築支援プログラム353、スキーマ定義71、DB入力用データ72、DBMS(Data Base Management System)354が格納される。DB構築支援プログラム353は、DB構築支援部30(図1参照)の各機能を実現するプログラムである。
このWebサーバ3は、LANカード360を介してネットワーク機器81に接続される。また、SASカード370A、370Bを介して記憶装置50、60に接続される。記憶装置50は、Web操作履歴51を記憶する。記憶装置60は、Web解析用DB61を記憶する。
このWebサーバ3は、VGAカード380を介してディスプレイ等の出力装置82に接続される。さらに、USBポートを介してキーボード、マウス等の入力装置83に接続される。
以上に示す構成において、Web操作履歴51及びWeb解析用DB61は、それぞれ別の記憶装置50、60に記憶されているが、この場合に限らない。例えば同じ記憶装置に記憶されてもよい。同様に、DB構築支援プログラム353、スキーマ定義71及びDB入力用データ72も記憶装置350に記憶されているが、この場合に限らない。例えば記憶装置50、60に記憶されてもよい。
図3は、本発明の実施形態の解析データ選定画面301の一例を示す図である。図3に示す解析データ選定画面301は、解析データ選定部34のプログラムを実行することによって出力装置82に表示される。Webサーバ3のユーザは入力装置83を用いて、解析データ選定画面301上でDB構築に必要な情報を入力する。
解析データ選定画面301は、Webサーバ3のユーザが解析対象のデータ範囲を選定するための選定画面302と、Webクライアント2の表示装置24上に表示されるWeb操作画面303とを含む。
Web操作画面303は、1又は複数のフォームからなる。フォームとは、Webクライアント2のユーザ(以下、「Webユーザ」という。)がデータを入力する入力画面の構成単位である。図3に示す例では、検索を実行するためのフォーム1(検索フォーム)、検索結果に対する絞り込みを実行するためのフォーム2(絞り込みフォーム)、絞り込み結果を発注するためのフォーム3(発注フォーム)の3つのフォームからなる。
選定画面302において、Webサーバ3のユーザは、解析対象のデータ範囲をフォーム単位で選定する。具体的には、解析対象のフォームを選択してチェックし、決定ボタンを押下する。そうすると、解析データ選定部34は、チェックされたフォームのデータを解析対象として選定する。
なお、以下、フォーム単位で解析対象のデータ範囲を選定する場合について説明するが、この場合には限らない。その他の構成単位で解析対象のデータ範囲を選定してもよい。
図4は、本発明の実施形態のスキーマ定義部35によって定義されるテーブル400の構成とフォームとの関係を示す図である。図4に示すテーブル400は、フォーム1(409)が解析対象として選定された場合に、フォーム1(409)の情報に基づいて定義されるテーブルである。
テーブルの定義では、テーブルを構成するデータ項目とその型情報を記述する。フォーム情報に基づいて定義されるテーブルは、フォーム内の入力データ記入欄(テキストボックスなどのエレメント)に関する項目(以下、「入力データ項目410」という。)、フォーム単位で生成される個々の入力データセットを識別するためのデータセットID、Webサーバ3側で処理する一連の入力データ処理を識別するためのシーケンスID、Webクライアント2側の一連のWeb操作を識別するためのセッションIDから成る。
入力データ項目410は、名前と型情報を持つ。そのため各データ入力項目の名前と型の情報を抽出してテーブルを記述する。図4の例では、Keyword:String403、Shohin_cd:String404、Kakaku: Number405となっている。
なお、Web操作画面303がHTML(HyperText Markup Language)によって記述される場合、フォーム内の入力データ項目の名前及び型情報は、それぞれwindow.document.form[i].element[j].name、window.document.form[i].element[j].typeで示される。
そこで、解析データ選定部34は、まず解析対象として選定されたフォームの番号を、HTML内のフォーム番号iに変換し、変換されたフォーム番号iに含まれる各エレメント(入力データの記入欄)jの名前及び型情報を抽出する。その後、スキーマ定義部35は、抽出された各エレメントjの名前及び型情報に基づいて、テーブルを定義する。
データセットID406により、テーブル内のデータセットを一意に識別できる。セッションID408により、同一セッション内に処理された入力データのセットを識別できる。シーケンスID407により、同一セッション内のデータセット(同一セッション内に異なる種類のフォームから入力されたデータセットが複数ある場合においても、従って異なるテーブル間のデータセットであっても)が入力された順番(の前後関係)を明確にすることができる。シーケンスID407には、例えばタイムスタンプを使用することができる。なお、データセットID406、シーケンスID407及びセッションID408には、Webサーバ3によってデータが挿入される。
図5は、本発明の実施形態の解析データ選定部34の制御ロジックを示すフローチャートである。解析データ選定部34は以下に示す制御ロジックを実行する。
まずステップ501において、解析データ選定部34は、図3に示すような解析データ選定画面301を提示する(S501)。Webサーバ3のユーザによって、解析データ選定画面301上で解析対象のフォームが選定されると、選定されたフォームのフォーム番号を取得する(S502)。具体的には、選定されたフォームのユーザインタフェース上の番号を、Web操作画面を記述するプログラム上の番号に変換する。
その後ステップ503において、解析データ選定部34は、ステップ502で取得されたフォーム番号のうち、いずれかのフォーム番号を選択する(S503)。その後ステップ504において、ステップ503で選択されたフォーム番号及びフォームの名前を記録する(S504)。ここでは、例えば記憶装置350(図2参照)に記録する(以下、同様)。
その後ステップ505において、解析データ選定部34は、ステップ503で選択されたフォーム番号のフォームに含まれるエレメント番号のうち、いずれかのエレメント番号を選択する(S505)。その後ステップ506及びステップ507において、ステップ505で選択されたエレメントの名前及び型情報をそれぞれ取得し、記録する(S506、S507)。
その後ステップ508及び509の処理により、全てのフォーム番号及び全てのエレメント番号に対して、一連の処理を繰り返す。
以上に示す処理により、解析データ選定部34は、解析データ選定画面301上で選定された解析対象の各フォームについて、フォーム内のエレメント(入力データ項目)に関する情報を抽出する。なお、以上に示す制御ロジックの全部又は一部は、スキーマ定義部35によって実行されてもよい。
図6は、本発明の実施形態の解析データ選定部34によって抽出される各フォーム内の入力データ項目の具体例を説明する図である。図6では、解析データ選定画面301(図3参照)上の全てのフォーム1、2、3が選定された場合に、図5に示す制御ロジックによって抽出される各フォーム内の入力データ項目に関する情報を示している。
フォーム1が選定された場合に抽出される情報は、(#1, kensaku, keyword:string, shohin_cd:string, kakaku:number)である。"#1"は、フォーム1を一意に識別するための識別子(ID)である。"kensaku"は、フォーム1の名前である。なお、フォームの名前は、当該フォームに基づいて生成されるテーブルの名前に使用される。"keyword:string"は、フォーム1に含まれる1番目のエレメントの名前及び型情報が、それぞれkeyword、String型であることを示す。"shohin_cd:string"は、フォーム1に含まれる2番目のエレメントの名前及び型情報が、それぞれshohin_cd、String型であることを示す。"kakaku:number"は、フォーム1に含まれる3番目のエレメントの名前及び型情報が、それぞれkakaku、Number型であることを示す。フォーム2、3については、ここでは説明を省略する。
図7は、本発明の実施形態のスキーマ定義部35の制御ロジックを示すフローチャートである。スキーマ定義部35は、以下に示す制御ロジックを実行することによって、各フォームに対応するスキーマ(ここではテーブル)を定義する。
まずステップ701において、スキーマ定義部35は、解析対象として選定された各フフォームの名前のうち、いずれかのフォームの名前をテーブル名として設定する(S701)。例えばフォーム1のフォーム名は"kensaku"であるので、フォーム1に対応して生成されるテーブルの名前を"Kensaku_Table"とする。
次にステップ702において、スキーマ定義部35は、フォームの名前に対応して抽出された各入力データ項目(型情報を含む)に基づいて、テーブルを生成する(S702)。例えばフォーム1のフォーム名"kensaku"に対応して抽出される各入力データ項目は、"keyword:string、shohin_cd:string、kakaku:number"である。そのため、このデータセットに基づいて、図4に示すようなテーブル400の入力データ項目410を挿入する。
その後ステップ703において、スキーマ定義部35は、ステップ702で生成されたテーブルに、データセットID(型情報を含む)を挿入する(S703)。図4に示す例では、テーブル400にデータセットID406とその属性を挿入する。
その後ステップ704において、スキーマ定義部35は、セッションIDの情報を取得する(S704)。セッションIDの情報とは、Webサーバ3上で実行されるWebアプリケーションに固有の情報である。なお、セッションIDに限定されるものではない。
その後ステップ705において、スキーマ定義部35は、ステップ702で生成されたテーブルに、セッションID(型情報を含む)を挿入する(S705)。図4に示す例では、テーブル400にセッションID408とその属性を挿入する。
その後ステップ706において、スキーマ定義部35は、ステップ702で生成されたテーブルに、シーケンスID(型情報を含む)を挿入する(S706)。図4に示す例では、テーブル400にシーケンスID407とその属性を挿入する。
その後ステップ707の処理により、解析対象として選定された全てのフォームについてステップ702〜706の処理を繰り返す。これにより、スキーマ定義部35は、解析対象として選定されたフォーム毎にテーブルを自動的に定義することができる。言い換えると、スキーマの定義に係る時間と手間を低減することができる。
図8は、本発明の実施形態のスキーマ定義部35によって生成されるテーブル800の具体例を示す図である。
図8に示すテーブル801、802及び803は、それぞれフォーム1、2、3から抽出されるデータセットに基づいて定義されたテーブルである。これらテーブル801、802及び803では、データセットID、シーケンスID及びセッションIDも定義される。
図9は、本発明の実施形態のデータフィルタ部37の制御ロジックを示すフローチャートである。図10は、本発明の実施形態のデータフィルタ部37によって生成されるデータフィルタリングプログラム1000の一例を示す図である。
スキーマ定義部35によるスキーマ定義が終了すると、データフィルタ部37は、以下に示す制御ロジックを実行することによって、図10に示すようなデータフィルタリングプログラム1000を自動的に生成する。
まずステップ901において、データフィルタ部37は、フィルタリングすべきデータ項目のセットの番号を選択する(S901)。ここでは、番号"#1"が選択されるものとする。
次にステップ902において、データフィルタ部37は、データフィルタリングを実行するためのフィルタリング関数を定義する(S902)。図10に示す例では、フィルタリング関数filtering_kensaku1003が定義される。
その後ステップ903において、データフィルタ部37は、ステップ902で定義されたフィルタリング関数内に、フィルタリングすべきデータセットをフィルタリングするためのコードを生成する(S903)。図10に示す例では、コード1004が生成される。コード1004は、各入力データ項目"keyword、shohin_cd、kakaku"の値をグローバル変数に保存するためのコードである。
その後ステップ904において、データフィルタ部37は、Webクライアント2からの入力データ受信時にステップ902で定義されたフィルタリング関数を呼び出すコードを生成する(S904)。図10に示す例では、コード1002が関数input_kensaku1001内に生成される。コード1002は、フィルタリング関数filtering_kensaku1003を呼び出すコードである。関数input_kensaku1001は、Webクライアント2からの入力データ受信時に呼び出される関数である。
ステップ905の処理により、全てのデータセットの番号についてステップ901〜904の処理を繰り返す。
以上に示す処理により、データフィルタ部37は、スキーマ定義部35によって定義されたテーブルに従って、データフィルタリングプログラムを自動的に生成する。
図11は、本発明の実施形態のデータ送信部23がデータフィルタ部37に送信するリクエスト1100の一例を示す図である。
図11に示すリクエスト1100には、Web操作画面303上のフォーム1(検索フォーム)に入力されたデータが記述されている。リクエスト1100には、メソッド名(GETメソッド又はPOSTメソッド。図11に示す例では、GETメソッド。)が記述されている。
GETメソッドのリクエストラインには、呼び出し対象のリソースのURL(Uniform Resource Locator)1101と、クエリ文字列1102とが記号"?"によって連結されて記述される。なお、URL1101は、絶対パスでも相対パスでもよい。クエリ文字列1102には、パラメータ名(フォーム内のエレメントの名前)と値のセットが"&"で連結されて記述される。図11に示すクエリ文字列1102の例では、パラメータkeywordとその値XXXX、パラメータshohin_cdとその値YYYYY、パラメータkakakuとその値UUUUUのセットが記述されている。
またリクエスト1100は、Date1103、Referer1104及びCookie1105のヘッダ情報を含む。Date1103には、リクエスト1100が発行された時間が記述される。Referer1104には、GETメソッドによって指定されたリソースのリンク元のURLが記述される。Cookie1105には、Webクライアント2とWebサーバ3との間のリクエスト1100の送受信に係わるセッションのIDが記述される。
図12は、本発明の実施形態のWebクライアント2及びWebサーバ3の動作の制御ロジックを示すシーケンス図である。ここでは、Webクライアント2がWebサーバ3にリクエストを送信する動作と、Webサーバ3が、受信したリクエストに基づいてクライントから送信されたデータをリアルタイムにフィルタリングし、DB入力用データ生成処理を実行する動作とを説明する。
まずWebクライアント2の動作について説明する。
まずステップ1201において、Webクライアント2は、Webユーザによる入力データ確定イベントを契機に、このイベントに対応するデータセットの値をHTTPのリクエストによりWebサーバ3に送信する(S1201)。ここでいう入力データ確定イベントとは、Webクライアント2のユーザがフォーム内の実行ボタンを押した際に発生するイベントである。確定イベントは、例えばWeb操作画面303上の検索フォームで、Webクライント2側のユーザがフォーム内に検索キーワードを入力した後、検索という実行ボタンを押下した時に発生する。
すなわちステップ1201では、Webクライアント2は、Web操作画面303上で入力データの確定イベントが発生すると、イベントを発生したフォーム内のデータセットの値をHTTPのリクエストによりWebサーバ3に送信する。
なお、Web操作画面303がHTMLによって記述される場合、Web操作画面303の情報を記述したHTMLファイルにおいて実行ボタンが押下された時に送信されるリクエストの種類及びそのリクエストにより呼び出されるリソースのURL(本実施例では、Webサーバ3上のリソース)が記述されている。これらの情報を利用して、フォーム内のデータセットの値を送信するHTTPのリクエストを作成し、Webサーバ3に送信する。その後処理を終了する。
次にWebサーバ3の動作について説明する。
以下に示すWebサーバ3の動作は、Webサーバ3がWebクライアント2に提供しているWebアプリケーションへのWebクライアント2のユーザのログインによって開始し、ログアウトによって終了する。
まずステップ1202において、Webサーバ3は、ステップ1201でWebクライアント2によって送信されたHTTPリクエストより、データセットの値を取得する(S1202)。
次にステップ1203において、Webサーバ3は、データフィルタリングプログラムを実行することにより、ステップ1202で取得されたデータセットの値をフィルタリングし、一時記録する(S1203)。データフィルタリングプログラムは、ステップ1201でWebクライアント2が送信したHTTPリクエストにより呼び出したプログラム(本実施例ではWebサーバ3内のプログラム)内で呼び出すことにより実行される。
図10で説明したフィルタリングプログラムは、Webクライアント2側のユーザにより、検索という名前の実行ボタンが押下された時に呼び出されるリソースとしてkensaku.phpプログラムを呼び出した場合の例である。このプログラムの中で、Webクライアント2より送信されたHTTPリクエストで送信されたフォーム内のエレメントの値(データセットの値)をフィルタするための関数filtering_kensaku1002を呼び出している。
次に、Webサーバ3は、Webクライアント2から送信されたHTTPリクエスト内で指定されたリソースのURLと、Referer情報とに基づいて、リクエスト送信元のフォームの名前を取得する(S1204)。具体的には、Referer情報により、フォームに関する情報を記述しているHTMLファイルを調べる。さらに該HTMLファイル内のフォームの情報にフォーム内の実行ボタンが押下された時のアクション情報に該URLが記述されているフォームを調べ、該当フォームの名前を取得する。
その後ステップ1205において、Webサーバ3は、フィルタリングされたデータセットを識別するためのデータセットIDを生成し、ステップ1204で取得された名前のファイルに記録する(S1205)。ファイルとは、例えばCSV形式のファイルである。ファイルの詳細については、図14を用いて後述する。
その後ステップ1206〜1208において、Webサーバ3は、シーケンスID、セッションID及びステップ1203でフィルタリングされたデータセットの値を、ステップ1205で取得された名前のファイルに記録する(S1206〜S1208)。
なお、ステップ1204において、Webサーバ3は、HTTPリクエスト内に記述された呼び出しリソースのURLと、Referer情報とに基づいて、フォームの情報を記述したHTMLファイルを調べ、リクエスト送信元のフォームの名前を取得したが、この場合には限らない。例えば、図13に示すような、フィルタリング関数とフォームの名前とが対応付けられたテーブル1300を予め作成し、呼び出されたフィルタリング関数に対応付けられたフォーム名を取得してもよい。
以上に示す処理により、Webクライアント2は、Webサーバ3にリクエストを送信する。一方、Webサーバ3は、受信したリクエストに基づいてリアルタイムフィルタリング及びDB入力用データ生成処理を自動的に実行する。これにより、DB入力用データの生成にかかる手間と時間を低減することができる。
図13は、本発明の実施形態のフィルタリング関数とフォーム名とを対応付けたテーブル1300の一例を示す図である。図13に示すテーブル1300は、データフィルタ部37がデータフィルタリングプログラムを生成する場合に併せて生成する。
テーブル1300は、フィルタリング関数1301と、フォームが属するHTMLファイルのURL1302と、フォーム名1303とを対応付けて格納する。なお、URL1302はオプショナルな情報である。但し、URL1302も対応付けることにより、異なるHTMLファイルに属する同じ名前のフォームが存在する場合でかつ、フォーム名から一意に定まるフィルタリング関数名を自動的に生成する場合であっても、フィルタリング関数名と、フィルタリングの対象となるフォームが属するURLにより、対応するフォーム名を特定することができる。
図14は、本発明の実施形態のDB入力用データ72の具体例を示す図である。
図14に示すDB入力用データ72は、DB入力用データ721〜723を含む。各DB入力用データ721〜723は、スキーマ定義部35によって定義されたテーブル毎、つまりフォーム毎に生成されるCSV形式のデータファイルである。ファイル名は、フォーム名に拡張子"_log"を連結したものである。
DB入力用データ721は、フォーム1(フォーム名kensaku)に対応して定義されたテーブルに基づいて生成されたデータファイルである。同様に、DB入力用データ722、723は、それぞれフォーム2、3(フォーム名はそれぞれshiborikomi、hattyuu)に対応して定義されたテーブルに基づいて生成されたデータファイルである。
各DB入力用データ721〜723の各エントリは、データセットID、シーケンスID、セッションID、各入力データ項目が","によって連結されている。これにより、各DB入力用データ721〜723を、それぞれの対応するテーブルに容易に格納することができる。
図15は、本発明の実施形態のフォームから取得可能なデータを説明する図である。ここでは、Webサーバ3が、解析対象として選定されたフォームから取得可能なデータについて説明する。
Webサーバ3は、解析データ選定画面301(図3参照)上で選定されたフォームに関する情報A及び情報Bを取得することができる。
情報Aは、選定されたフォームが記述されたHTMLのURLである。情報Bは、選定されたフォームの情報である。すなわち情報Bは、フォームの番号、フォームのアクション情報、フォームの名前及びフォーム内のエレメント名(入力データ項目名)を含む。フォームのアクション情報とは、フォーム内のデータを処理するリソースのパスである。
Webサーバ3は、Web操作履歴51に格納された操作履歴データから取得される情報A及び情報Bに基づいて、解析対象として選定されたフォームに関する情報の有無を確認することができる。
図16は、本発明の実施形態のWeb操作履歴51に格納された操作履歴データ1600の一例を示す図である。
図16に示す操作履歴データ1600は、Web操作画面303上のフォーム1(検索フォーム)に入力されたデータが格納されたHTTPリクエストである。操作履歴データ1600には、メソッド名(GETメソッド又はPOSTメソッド。図16に示す例では、GETメソッド。)が記述されている。
GETメソッドのリクエストラインには、呼び出し対象のリソースのURL1601と、クエリ文字列1602とが記号"?"によって連結されて記述される。なお、URL1601は、絶対パスでも相対パスでもよい。クエリ文字列1602には、パラメータ名(フォーム内のエレメントの名前)1603〜1605と値のセットが"&"で連結されて記述される。図16に示すクエリ文字列1602の例では、パラメータkeywordとその値XXXX、パラメータshohin_cdとその値YYYYY、パラメータkakakuとその値UUUUUのセットが記述されている。すなわち、URL1601及びクエリ文字列1602にはフォームから取得可能な情報Bが記録されている。
また操作履歴データ1600は、Date1606、Referer1607及びCookie1608のヘッダ情報を含む。Date1606には、操作履歴データ1600が発行された時間が記述される。Referer1607には、GETメソッドによって指定されたリソースのリンク元のURLが記述される。すなわち、フォームから取得可能な情報Aが記録される。Cookie1608には、Webクライアント2とWebサーバ3との間での操作履歴データ1600の送受信に係わるセッションのIDが記述される。
Webサーバ3は、操作履歴データ1600内のReferer1607から抽出されるURLと、URL1601に記述されたアクション情報との対応関係に基づいて、解析対象として選定されたフォームに関する情報が存在するか否かを確認することができる。また、解析対象として選定されたフォームに関する情報が存在する場合には、フォーム内の各データ入力項目(図16に示す例では、keyword、shohin_cd、kakaku)の変数の値を抽出することができる。
さらに、Webサーバ3は、Date1606、Cookie1608の情報に基づいて、それぞれシーケンスID、セッションIDを生成することができる。
図17は、本発明の実施形態のデータ抽出・生成部40の制御ロジックを示すフローチャートである。データ抽出・生成部40は、Web操作履歴51に格納された操作履歴データを解析することにより、スキーマ定義部35によって定義されたスキーマに対応するデータを抽出する。また、抽出されたデータに基づいて、DB入力用データ72を生成する。
まずステップ1701において、データ抽出・生成部40は、Web操作履歴51に格納された操作履歴データ(HTTPリクエスト)のReferer情報を参照し、解析対象として選定されたフォームが属するHTMLファイルのURLと一致するURLが記述された操作履歴データを検索する(S1701)。
次にステップ1702において、データ抽出・生成部40は、ステップ1701による検索の結果として抽出された操作履歴データに係るリソースのURLが、解析対象として選定されたフォームのアクション情報を示すものか否か確認する(S1702)。
その後ステップ1703において、データ抽出・生成部40は、ステップ1702においてYESの場合、ステップ1701で抽出された操作履歴データから、データセットの名前及び値を抽出し記録する(S1703)。
その後ステップ1704において、データ抽出・生成部40は、ステップ1701で抽出された操作履歴データ内のCookie情報から、セッションIDを抽出し記録する(S1704)。
その後ステップ1705において、データ抽出・生成部40は、ステップ1701で抽出された操作履歴データ内のDate情報を、シーケンスIDとして記録する(S1705)。
その後ステップ1706において、データ抽出・生成部40は、ステップ1701で抽出された操作履歴データを一意に識別するデータセットIDを生成する(S1706)。
その後ステップ1707において、データ抽出・生成部40は、ステップ1703〜1705で記録されたデータセット、セッションID、シーケンスID及びステップ1706で生成されたデータセットIDに基づいて、解析対象として選定されたフォームに対応するテーブルのDB入力用データを生成する(S1707)。具体的には、図14に示すようなDB入力用データ72を生成する。
以上に示す処理により、データ抽出・生成部40は、Web操作履歴51に格納された操作履歴データを解析することにより、スキーマ定義部35によって定義されたスキーマに対応するデータを抽出する。また、抽出されたデータに基づいて、DB入力用データ72を生成する。
図18は、本発明の実施形態の履歴構成解析部39の制御ロジックを示すフローチャートである。履歴構成解析部39は、Web操作履歴51に格納された各操作履歴データ(HTTPリクエスト)に基づいて、Web操作履歴51内に存在するフォームに関する情報を取得する。
まずステップ1801において、履歴構成解析部39は、Web操作履歴51内のいずれかの操作履歴データ(HTTPリクエスト)のReferer情報に記述されたURLを取得し記録する(S1801)。
次にステップ1802において、履歴構成解析部39は、処理対象の操作履歴データのリソースのURL情報を取得し記録する(S1802)。
その後ステップ1803において、履歴構成解析部39は、ステップ1801で取得されたURLのHTMLファイル内において、ステップ1802で取得されたリソースのURLがアクション情報として指定されたフォームを検索する(S1803)。
その後ステップ1804において、履歴構成解析部39は、ステップ1803による検索の結果として抽出されたフォームの番号を取得し記録する(S1804)。
その後ステップ1805において、履歴構成解析部39は、ステップ1803で取得されたフォームの情報が、フォーム情報テーブルに登録されているか否かを判定する(S1805)。なお、フォーム情報テーブルとは、Web操作履歴51内に存在するフォームに関する情報が記録されたテーブルである。フォーム情報テーブルの詳細については、図19を用いて後述する。
登録されている場合(S1805でYES)、ステップ1807に進む。一方、登録されていない場合(S1805でNO)、ステップ1806において、履歴構成解析部39は、ステップ1803で取得されたフォームの情報を、フォーム情報テーブルに登録する(S1806)。
その後ステップ1807の処理により、履歴構成解析部39は、Web操作履歴51内に存在する全ての操作履歴データについて、ステップ1801〜1806の処理を繰り返す。
以上に示す処理により、履歴構成解析部39は、Web操作履歴51に格納された各操作履歴データ(HTTPリクエスト)に基づいて、Web操作履歴51内に存在するフォームに関する情報を取得し、フォーム情報テーブルに登録する。
図19は、本発明の実施形態のフォーム情報テーブル1900の一例を示す図である。図19に示すフォーム情報テーブル1900は、図18に示す制御ロジックによって生成される。
フォーム情報テーブル1900では、Referer情報で指定されるURL1901、リソースのURL1902及びフォーム番号1903が対応付けられて登録される。なお、URL1901及びフォーム番号1903によって、フォームを一意に識別することができる。
図20は、本発明の実施形態のWeb操作履歴の解析データ選定画面2001の第一の例を示す図である。図20に示す解析データ選定画面2001は、解析データ選定部34のプログラムを実行することによって出力装置82に表示される。Webサーバ3のユーザは入力装置83を用いて、解析データ選定画面2001上で情報を入力する。
解析データ選定画面2001は、Webサーバ3のユーザが解析対象のデータ範囲を選定するための選定画面2002と、Webクライアント2の表示装置24上に表示されるWeb操作画面303とを含む。
なお、図20に示す選定画面2002では、図3に示す選定画面302と異なり、一部のフォーム(ここではフォーム2)が選択不能に表示される。
前述の図18に示す制御ロジックにより、履歴構成解析部39は、Web操作履歴51内に存在するフォーム、すなわち解析可能なフォームを抽出することができる。そこで、解析データ選定部34は、Web操作履歴51を解析する場合には、図19に示すフォーム情報テーブル1900に登録されているフォーム、すなわち解析可能なフォームのみを選定可能に提示する。これにより、解析不能なフォーム、すなわち解析してもデータが抽出されないフォームを予め解析対象から除外することができる。
図21は、本発明の実施形態のWeb操作履歴の解析データ選定画面2101の第二の例を示す図である。図21に示す解析データ選定画面2101は、解析データ選定部34のプログラムを実行することによって出力装置82に表示される。Webサーバ3のユーザは入力装置83を用いて、解析データ選定画面2101上で情報を入力する。
解析データ選定画面2101は、Webサーバ3のユーザが解析対象のデータ範囲を選定するための選定画面2102と、Webクライアント2の表示装置24上に表示されるWeb操作画面303とを含む。
なお、図21に示す選定画面2102では、図20に示す選定画面2002と異なり、選定されたフォームの解析結果をプレビュー(事前確認)するためのチェックボックスが設けられる。
選定画面2102において、Webサーバ3のユーザは、解析対象のデータ範囲をフォーム単位で選定する。さらに、解析対象として選定されたフォームの解析結果をプレビューする場合には、プレビュー用のチェックボックスをチェックし、決定ボタンを押下する。そうすると、Webサーバ3は、チェックされたフォームを解析し、解析結果を表示する。
図22は、本発明の実施形態のプレビュー解析の制御ロジックを示すフローチャートである。Webサーバ3は、以下に示す制御ロジックを実行することによって、解析対象として選定されたフォームの解析結果をプレビュー可能にする。
まずWebサーバ3のユーザによって、解析データ選定画面2101上で解析対象のフォームが選定されると、ステップ2201において、Webサーバ3は、選定されたフォームのフォーム番号を取得する(S2201)。具体的には、選定されたフォームのユーザインタフェース上の番号を、Web操作画面を記述するプログラム上の番号に変換する。
次にステップ2202において、Webサーバ3は、Web操作履歴51に格納されたいずれかの操作履歴データ(HTTPリクエスト)のReferer情報を参照し、解析対象として選定されたフォームが属するHTMLファイルのURLと一致するURLが記述された操作履歴データを検索する(S2202)。
その後ステップ2203において、Webサーバ3は、ステップ2202による検索の結果として抽出された操作履歴データに係るリソースのURLが、解析対象として選定されたフォームのアクション情報を示すものか否か確認する(S2203)。なお、解析対象として選定されたフォームは、フォーム番号によって識別される。
抽出された操作履歴データに係るリソースのURLが、選定されたフォームのアクション情報を示さない場合(S2204でNO)、ステップ2202に戻って別の操作履歴データについて処理を繰り返す。
一方、抽出された操作履歴データに係るリソースのURLが、選定されたフォームのアクション情報を示す場合(S2204でYES)、Webサーバ3は、ステップ2202で抽出されたフォームの番号を記録する(S2205)。
その後ステップ2206の処理により、Webサーバ3は、Web操作履歴51内に存在する全ての操作履歴データについて、ステップ2202〜2205の処理を繰り返す。
その後ステップ2207において、Webサーバ3は、ステップ2205で記録されたフォームの番号に基づいて、Web操作履歴51内に存在しないフォームを検索する(S2207)。
該当フォームがある場合(S2208でYES)、ステップ2209において、Webサーバ3は、該当フォーム、すなわちWeb操作履歴51内に存在しないフォームを表示する(S2209)。具体的には、Web操作履歴51内に存在しないフォームの番号を取得し、取得されたフォームの番号をユーザインタフェースの番号に変換し、ポップアップウィンドウに表示する。ステップ2209で表示される表示画面の例については、図23を用いて後述する。
一方、該当フォームがない場合(S2208でNO)、ステップ2210において、Webサーバ3は、解析対象として選定された全てのフォームのデータがWeb操作履歴51に存在する旨を、ポップアップウィンドウに表示する(S2210)。
図23は、本発明の実施形態のプレビュー解析結果の表示画面2300の第一の具体例を示す図である。図23に示す表示画面2300は、解析対象として選定されたフォーム(ここではフォーム2)がWeb操作履歴51内に存在しない場合に表示されるポップアップウィンドウである。
この表示画面2300によれば、Webサーバ3のユーザは、現在の設定が「Web操作履歴51内に存在しないフォーム(ここではフォーム2)のデータを取得し、リアルタイムにDB入力用データ72を生成する設定」であるかの確認を指示することができる。
設定を確認する場合、Webサーバ3のユーザは入力装置83を用いて"設定を確認する"ボタンを押下する。そうすると、Webサーバ3は後述する図27に示す制御ロジックを実行し、設定の確認結果を表示する。一方、プレビューを終了する場合、"プレビューを終了する"ボタンを押下する。そうすると、Webサーバ3はプレビューを終了する。
図24は、本発明の実施形態のプレビュー解析結果の表示画面2400の第二の具体例を示す図である。図24に示す表示画面2400は、図23の表示画面2300上で"設定を確認する"ボタンが押下された場合に表示されるポップアップウィンドウである。
この表示画面2400によれば、Webサーバ3のユーザは、現在の設定が「Web操作履歴51内に存在しないフォーム(ここではフォーム2)のデータを取得し、リアルタイムにDB入力用データ72を生成する設定」ではない場合に、設定変更を指示することができる。
設定を変更する場合、Webサーバ3のユーザは入力装置83を用いて"設定を変更し、プレビューを終了する"ボタンを押下する。そうすると、Webサーバ3は後述する図28に示す制御ロジックを実行し、設定を変更する。その後プレビューを終了する。一方、設定を変更しない場合、"設定を変更せずにプレビューを終了する"ボタンを押下する。そうすると、Webサーバ3はプレビューを終了する。
図25は、本発明の実施形態のリアルタイムデータ解析に係る現在の設定を登録する制御ロジックを示すフローチャートである。ここでは、解析対象として選定されたフォームのうち、リアルタイムにDB入力用データ72を生成するよう現在設定されているフォームを登録する。
まずステップ2501において、Webサーバ3は、Webサーバ3のユーザによって解析対象として選定されたフォームのうち、いずれかのフォームが属するHTMLファイルのURLを取得する(S2501)。
次にステップ2502において、Webサーバ3は、処理対象のフォームの番号を取得する(S2502)。
その後ステップ2503において、Webサーバ3は、処理対象のフォームについて、ステップ2501で取得されたURLと、ステップ2502で取得されたフォームの番号とを対応付けて設定テーブルに記録する(S2503)。
ここでいう設定テーブルとは、リアルタイムにDB入力用データ72を生成するよう現在設定されているフォームに関する情報を格納するテーブルである。設定テーブルの詳細については、図26を用いて後述する。
ステップ2504の処理により、Webサーバ3は、解析対象として選定された全てのフォームについて、ステップ2501〜2503の処理を繰り返す。
以上に示す処理により、Webサーバ3は、解析対象として選定されたフォームのうち、リアルタイムにDB入力用データ72を生成するよう現在設定されているフォームに関する情報を、設定テーブル2600に登録する。
図26は、本発明の実施形態の設定テーブル2600の一例を示す図である。設定テーブル2600は、リアルタイムにDB入力用データ72を生成するよう現在設定されているフォームに関する情報を格納する。
設定テーブル2600では、HTMLファイルのURL2601と、フォーム番号2602とが対応付けて格納される。Webサーバ3は設定テーブル2600を参照し、Web操作履歴51に存在しないフォームが、リアルタイムにDB入力用データ72を生成するよう現在設定されているフォームであるか否かを確認することができる。
図27は、本発明の実施形態のリアルタイムデータ解析に係る現在の設定を確認する制御ロジックを示すフローチャートである。
図23に示すような表示画面2300上で"設定を確認する"ボタンが押下されると、まずステップ2701において、Webサーバ3は、Web操作履歴51に存在しないと判定されたフォームに関する情報が設定テーブル2600に登録されているか検索する(S2701)。
具体的には、設定テーブル2600を参照し、Web操作履歴51に存在しないと判定されたフォームが所属するHTMLファイルのURLと、フォームの番号とが対応付けて登録されているか検索する。
登録されていない場合(S2702でNO)、ステップ2703において、Webサーバ3は、該当フォームの情報を返す(S2703)。該当フォームとは、Web操作履歴51に存在しないと判定されたフォームのうち、設定テーブル2600に登録されていないフォームである。またフォームの情報とは、フォームの属するHTMLファイルのURLと、フォームの番号とを含む。一方、登録されている場合(S2702でYES)、該当フォームがない旨を返す(S2704)。
その後ステップ2705において、Webサーバ3は、ステップ2703で返されたフォームの情報のうちのフォームの番号(プログラム上の番号)を、ユーザインタフェース上の番号に変換する(S2705)。
その後ステップ2706において、Webサーバ3は、変換後のフォームの番号をメッセージボックスで表示する(S2706)。ここでいうメッセージボックスとは、図24の表示画面2400に示すようなメッセージボックスである。
なお、ステップ2702からステップ2704に進んだ場合、ステップ2706では、Webサーバ3は、該当フォームがない旨、すなわちWeb操作履歴51に存在しないと判定されたフォームの全てが、リアルタイムにDB入力用データ72を生成するよう現在設定されている旨を表示してもよい。
以上に示す処理により、Webサーバ3は、ユーザによる設定確認指示に基づいて、リアルタイムデータ解析に係る現在の設定を確認し、確認結果を表示する。
図28は、本発明の実施形態のリアルタイムデータ解析に係る設定を変更する制御ロジックを示すフローチャートである。
図24に示すような表示画面2400上で"設定を変更し、プレビューを終了する"ボタンが押下されると、まずステップ2801において、Webサーバ3は、設定変更対象のフォームの入力データを、Web操作履歴51に記録する(S2801)。
次にステップ2802において、Webサーバ3は、設定変更対象のフォームに対応するスキーマ(テーブル)を新たに定義し、設定変更対象のフォームの入力データ(HTTPのリクエスト)に基づいて、リアルタイムにDB入力用データ72を生成する(S2802)。
以上に示す処理により、Webサーバ3は、Web操作履歴51に存在しないと判定されたフォームの入力データを、Web操作履歴51に記録するよう設定変更する。また、Web操作履歴51に存在しないと判定されたフォームに対応するスキーマを新たに定義し、このフォームの入力データをフィルタリングすることによって、リアルタイムにDB入力用データ72を生成する。
図29A及び図29Bは、本発明の実施形態の履歴構成解析部39の制御ロジックの変形例を示すフローチャートである。
ここでは、履歴構成解析部39は、Web操作履歴51に格納された各操作履歴データ(HTTPリクエスト)に基づいて、Web操作履歴51内に存在するフォームに関する情報を取得する。本変形例では、Web操作履歴51内に存在するフォーム毎に、操作履歴データの記録期間に関する情報も併せて取得する。なお、前述の図18と同様の処理については、同一の符号を付して重複する説明を適宜省略する。
ステップ2901において、履歴構成解析部39は、処理対象の操作履歴データ(HTTPリクエスト)のDate情報を、最新データとして登録する(S2901)。具体的には、図30に示すようなフォーム情報テーブル3000のDate情報3004、3005に登録する。
ステップ2902において、履歴構成解析部39は、処理対象の操作履歴データの期間情報を登録する(S2902)。
すなわちステップ2903において、履歴構成解析部39は、処理対象の操作履歴データのDate情報が最も新しいか否か判定する(S2903)。具体的には、処理対象の操作履歴データのDate情報と、フォーム情報テーブル3000のDate情報3004に格納されたDate情報との比較に基づいて判定する。
処理対象の操作履歴データのDate情報が最も新しい場合(S2903でYES)、履歴構成解析部39は、このDate情報を最も新しいDate情報として登録する(S2904)。
一方、処理対象の操作履歴データのDate情報が最も新しくはない場合(S2903でNO)、履歴構成解析部39は、処理対象の操作履歴データのDate情報が最も古いか否か判定する(S2905)。具体的には、処理対象の操作履歴データのDate情報と、フォーム情報テーブル3000のDate情報3005に格納されたDate情報との比較に基づいて判定する。
処理対象の操作履歴データのDate情報が最も古い場合(S2905でYES)、履歴構成解析部39は、このDate情報を最も古いDate情報として登録する(S2906)。一方、処理対象のデータのDate情報が最も古くはない場合(S2905でNO)、履歴構成解析部39は、ステップ2902の処理を終了する。
以上に示す処理により、履歴構成解析部39は、Web操作履歴51に格納された各操作履歴データ(HTTPリクエスト)に基づいて、Web操作履歴51内に存在するフォームに関する情報を取得する。本変形例では、Web操作履歴51内に存在するフォーム毎に、操作履歴データの記録期間に関する情報も併せて取得する。これにより、フォーム毎に解析可能な期間を調べることができる。
図30は、本発明の実施形態のフォーム情報テーブル3000の変形例を示す図である。図30に示すフォーム情報テーブル3000は、図29A及び図29Bに示す制御ロジックによって生成される。
フォーム情報テーブル3000では、Referer情報で指定されるURL3001、リソースのURL3002、フォーム番号3003、最も新しいデータのDate情報3004及び最も古いデータのDate情報3005が対応付けられて登録される。
なお、URL3001及びフォーム番号3003によって、フォームを一意に識別することができる。また、Date情報3004、3005によって、各フォームにおけるデータの存在期間を記録することができる。
図31は、本発明の実施形態の解析可能データ提示画面3100の一例を示す図である。図31に示す解析可能データ提示画面3100は、解析データ選定部34のプログラムを実行することによって出力装置82に表示される。
解析可能データ提示画面3100では、Webサーバ3のユーザによって選定された解析対象のフォーム毎に、Web操作履歴51内にデータが存在するか否かを示すデータの有無情報、及び、Web操作履歴51内にデータが存在する場合には解析可能な範囲(日時)を示す期間情報が示される。
前述の図29A及び29Bに示す制御ロジックにより、履歴構成解析部39は、Web操作履歴51内に存在する各フォームの解析可能な期間情報を抽出することができる。そこで、解析データ選定部34は、Web操作履歴51を解析する場合には、図30に示すフォーム情報テーブル3000に基づいて、解析可能なフォーム及び解析可能な期間情報を提示する。
図32は、本発明の実施形態のWeb操作履歴の解析データ選定画面3201の変形例を示す図である。図32に示す解析データ選定画面3201は、解析データ選定部34のプログラムを実行することによって出力装置82に表示される。Webサーバ3のユーザは入力装置83を用いて、解析データ選定画面3201上で情報を入力する。
解析データ選定画面3201は、Webサーバ3のユーザが解析対象のデータ範囲を選定するための選定画面3202と、選定画面3202上で選定されたフォームについての解析期間を設定するための解析期間設定メニュー3203と、Webクライアント2の表示装置24上に表示されるWeb操作画面303とを含む。
なお、図32に示す選定画面3202は、図21に示す選定画面2102と同様である。
前述の図29A及び29Bに示す制御ロジックにより、履歴構成解析部39は、Web操作履歴51内に存在する各フォームの解析可能な期間情報を抽出することができる。そこで、解析データ選定部34は、解析期間設定メニュー3203が選択された場合には、フォーム情報テーブル3000に基づいて、選定されたフォームの解析期間の設定画面を提示する。解析期間の設定画面の詳細については、図33を用いて後述する。
図33は、本発明の実施形態の解析期間設定画面3301の具体例を示す図である。図33に示す解析期間設定画面3301は、解析期間設定メニュー3203が選択された場合には、選定されたフォーム(図32ではフォーム1、3)の解析期間の設定を促す画面である。
Webサーバ3のユーザは入力装置83を用いて、解析期間設定画面3301上で解析対象期間の開始日時と終了日時を設定する。これにより、フォーム毎にWeb操作履歴51内の操作履歴データの解析期間を設定することができる。
図34は、本発明の実施形態のセッションテーブル3400の一例を示す図である。
セッションテーブル3400は、セッション情報を管理するためのテーブルである。セッション情報とは、セッションIDによって特定されるユーザ情報、セッションに係る時間情報及び地域情報等を含む。
このセッションテーブル3400と、スキーマ定義部35によって定義される各テーブルとは、セッションIDを介して相互に関連付けることができる。これにより、スキーマ定義部35によって定義される各テーブルに挿入されたデータを、セッションテーブル3400によって管理されるセッション情報を用いて多面的に解析することができる。また、セッションIDを介して各テーブルの構成要素であるデータの関係を分析することができる。
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。