図1は、実施例に係るウェブページ表示システムを示す構成図である。ウェブページ表示システムは、端末装置1及びウェブサーバ(サーバ)2を有する。
端末装置1及びウェブサーバ(サーバ)2は、インターネットなどのネットワークNWを介して接続され、通信を行う。ネットワークNWは、LTE(Long Term Evolution)などの無線通信ネットワーク、及び光ファイバ通信などの有線ネットワークの少なくとも一方を含む。
端末装置1は、例えば、スマートフォンなどのモバイル端末装置や、パーソナルコンピュータなどである。端末装置1は、インターネットエクスプローラ(登録商標)などのブラウザ(ウェブ(Web)ページ(ホームページ)の閲覧用ソフトウェア)がインストールされている。
端末装置1は、該ソフトウェアを用いて、ユーザから入力された情報に基づいて生成されたリクエストデータREQをウェブサーバ2に送信する。リクエストデータREQは、ウェブページのアドレス(宛先)を示すURL(Uniform Resource Locator)、及び、ウェブページの内容に影響する各種の変数を含む。
ウェブサーバ2は、アクセスしてきた端末装置1にウェブページを提供する。ウェブサーバ2は、端末装置1から受信したリクエストデータREQに応じて、ウェブページを表示するためのレスポンスデータRESを端末装置1に送信する。レスポンスデータRESは、HTML(Hyper Text Markup Language)などのマークアップ言語により構成されている。端末装置1は、ブラウザを用いて、ウェブサーバ2から受信したレスポンスデータRESに基づいてウェブページを画面に表示する。
次に、ウェブサーバ2の構成を説明する。図2は、ウェブサーバ2の例を示す構成図である。
ウェブサーバ2は、CPU20、ROM(Read Only Memory)21、RAM(Random Access Memory)22、HDD23、通信処理部24、可搬型記憶媒体用ドライブ25、入力処理部26、及び画像処理部27などを備えている。CPU20は、演算処理手段であり、所定のプログラムに従って動作する。CPU20は、各部21〜27とバス28を介して接続されている。
RAM22は、CPU20のワーキングメモリとして用いられる。また、ROM21及びHDD23は、CPU20を動作させるプログラムなどを記憶する記憶手段として用いられる。また、HDD23には、ウェブサーバ2が提供するウェブページが含まれるウェブページデータベース(DB)23aが格納されている。通信処理部24は、例えばネットワークカードであり、ネットワークNWを介して、端末装置1などの他装置と通信を行う通信手段である。
可搬型記憶媒体用ドライブ25は、可搬型記憶媒体250に対して、情報の書き込みや情報の読み出しを行う装置である。可搬型記憶媒体250の例としては、USBメモリ(USB: Universal Serial Bus)、CD−R(Compact Disc Recordable)、及びメモリカードなどが挙げられる。なお、CPU20を動作させるプログラムは、可搬型記憶媒体250に格納されてもよい。
ウェブサーバ2は、情報の入力操作を行うための入力デバイス260、及び、画像を表示するためのディスプレイ270を、さらに備える。入力デバイス260は、キーボード及びマウスなどの入力手段であり、入力された情報は、入力処理部26を介してCPU20に出力される。ディスプレイ270は、液晶ディスプレイなどの画像表示手段であり、表示される画像データは、CPU20から画像処理部27を介してディスプレイに出力される。なお、入力デバイス260及びディスプレイ270に代えて、これらの機能を備えるタッチパネルなどのデバイスを用いることもできる。
CPU20は、ROM21、またはHDD23などに格納されているプログラム、または可搬型記憶媒体用ドライブ25が可搬型記憶媒体250から読み取ったプログラムを実行する。なお、プログラムは、通信処理部24を介してダウンロードされたものであってもよい。
CPU20は、プログラムを実行すると、端末装置1からのリクエストデータREQに応じて、HDD23内のウェブページDB23aからデータを読み出し、レスポンスデータRESとして端末装置1に送信する。端末装置1は、レスポンスデータRESを用いてウェブページを表示する。
図3には、ウェブページの例が示されている。ウェブページの一例として、図3(a)は、ブログ編集用のウェブページの表示内容を示し、図3(b)は、ブログ確認用のウェブページの表示内容を示す。なお、ブログ編集用のウェブページのURLは、「http://example.com/edit」とし、ブログ確認用のウェブページのURLは、「http://example.com/confirm」とする。
ユーザは、ブログ編集用のウェブページにおいて、タイトル欄80及び内容欄81に、ブログのタイトル及び内容をそれぞれ入力する。タイトル及び内容の入力後、ユーザは、送信ボタン82を押下することで、ブログ確認用のウェブページを端末装置1に表示させる。このとき、端末装置1は、URL「http://example.com/confirm」を含むリクエストデータREQをウェブサーバ2に送信する。リクエストデータREQは、URL以外にも、タイトル及び内容をそれぞれ示す変数(パラメータ)「title」及び「contents」を含む。
ブログ確認用のウェブページには、変数「title」及び「contents」に基づいてタイトル83及び内容84がそれぞれ表示される。ユーザは、変更確定ボタンを押下することで、ログ編集用のウェブページにおいて編集したブログのタイトル及び内容を確定させる。
このように、URL「http://example.com/confirm」のウェブページは、リクエストデータREQの変数「title」及び「contents」に応じて表示内容が異なる。つまり、リクエストデータREQに応じて送信されるレスポンスデータRESの内容は、変数「title」及び「contents」に応じて変化する。
図4には、レスポンスデータRESの例が示されている。本例では、図3(a)に示されたウェブページにおいて、ユーザが、タイトル欄80及び内容欄81に文字列「新機能のご紹介」及び「利便性向上を実現」をそれぞれ入力し、送信ボタン82を押下したと仮定する。このとき、ウェブサーバ2に送信されるレスポンスデータRESには、変数「title」及び「contents」として、文字列「新機能のご紹介」及び「利便性向上を実現」がそれぞれ含まれる。
上述したように、図3(b)のブログ確認用のウェブページには、変数「title」及び「contents」に基づいてタイトル83及び内容84がそれぞれ表示される。このため、ブログ確認用のウェブページのレスポンスデータRESには、符号70,71で示されるように、文字列「新機能のご紹介」及び「利便性向上を実現」がそれぞれ含まれる。
このように、ウェブサーバ2は、受信したリクエストデータREQの変数に応じたレスポンスデータRESを送信する。このため、仮に、端末装置1が、ウェブサーバ2との通信が切断されたとき、予めキャッシュしたキャッシュデータにより代替のウェブページを表示した場合、表示内容は、キャッシュデータの取得時の内容となる。
つまり、キャッシュデータにより表示された代替のウェブページは、変数「title」及び「contents」とは無関係に、一定の内容となる。しかも、キャッシュデータを用いて表示されたウェブページの内容の真偽を検証する手段が存在しないため、ウェブページを閲覧したユーザが誤った情報を取得するおそれがある。
そこで、実施例に係るウェブページ表示システムでは、端末装置1が、リクエストデータREQに応じ変化するウェブサーバ2のレスポンスデータRESの規則を学習する。そして、端末装置1は、ウェブサーバ2との通信が切断時、学習した規則に従って代替レスポンスデータRESxを生成し、代替レスポンスデータRESxに基づいてウェブページを表示する。これにより、ウェブページの表示の利便性が向上する。
また、端末装置1は、通信の復旧時にウェブサーバ2から得たレスポンスデータRESと比較することにより、代替レスポンスデータRESxを用いて表示したウェブページの真偽を検証する。以下に、端末装置1の構成について説明する。
図5は、端末装置1の例を示す構成図である。端末装置1は、CPU10、ROM11、RAM12、HDD13、通信処理部14、可搬型記憶媒体用ドライブ15、入力処理部16、及び画像処理部17などを備えている。
CPU10は、演算処理手段であり、所定のプログラムに従って動作する。CPU10は、各部11〜17とバス18を介して接続されている。なお、端末装置1は、ソフトウェアにより動作するものに限定されず、CPU10に代えて、特定用途向け集積回路などのハードウェアが用いられてもよい。
RAM12は、CPU10のワーキングメモリとして用いられる。また、ROM11及びHDD13は、CPU10を動作させるプログラムなどを記憶する記憶手段として用いられる。例えば、HDD13には、ブラウザプログラム13a及びプロキシプログラム(ウェブページ表示プログラム)13bが格納されている。
ブラウザプログラム13aは、ウェブページを閲覧するためのブラウザとして、CPU10を機能させる。プロキシプログラム13bは、CPU10を、ウェブサーバ2に代わるレスポンスデータRES(代替レスポンスデータRESx)の生成手段として機能させる。なお、HDD13には、上記の機能を実行するために用いられる各種のデータベースも格納されている。
また、通信処理部14は、例えばネットワークカードであり、ネットワークNWを介して、ウェブサーバ2と通信を行う通信手段である。可搬型記憶媒体用ドライブ15は、可搬型記憶媒体150に対して、情報の書き込みや情報の読み出しを行う装置である。可搬型記憶媒体150の例としては、USBメモリ、CD−R、及びメモリカードなどが挙げられる。なお、ブラウザプログラム13a及びプロキシプログラム13bは、可搬型記憶媒体150に格納されてもよい。
端末装置1は、情報の入力操作を行うための入力デバイス160、及び、画像を表示するためのディスプレイ170を、さらに備える。入力デバイス160は、キーボード及びマウスなどの入力手段であり、入力された情報は、入力処理部16を介してCPU10に出力される。ディスプレイ170は、液晶ディスプレイなどの画像表示手段であり、表示される画像データは、CPU10から画像処理部17を介してディスプレイに出力される。なお、入力デバイス160及びディスプレイ170に代えて、これらの機能を備えるタッチパネルなどのデバイスを用いることもできる。
CPU10は、ROM11、またはHDD13などに格納されているプログラム、または可搬型記憶媒体用ドライブ15が可搬型記憶媒体150から読み取ったプログラムを実行する。このプログラムには、OS(Operating System)だけでなく、上記のブラウザプログラム13a及びプロキシプログラム13bも含まれる。なお、プログラムは、通信処理部14を介してダウンロードされたものであってもよい。
CPU10は、ブラウザプログラム13a及びプロキシプログラム13bを実行すると、ブラウザ機能部101及びプロキシ機能部102がそれぞれ形成される。ブラウザ機能部101は、上記のブラウザに相当し、ユーザから入力処理部16を介して入力された情報に基づいてリクエストデータREQを生成し、通信処理部14を介してウェブサーバ2に送信する。また、ブラウザ機能部101は、ウェブサーバ2から通信処理部14を介して受信したレスポンスデータRES、または、プロキシ機能部102が生成した代替レスポンスデータRESxに基づいてウェブページをディスプレイ170に表示する。
プロキシ機能部102は、ウェブサーバ2との通信状態に応じて、3つの異なる処理を実行する。このため、プロキシ機能部102は、例えば周期的に通信処理部14にアクセスすることにより、ウェブサーバ2との通信状態を検出する。なお、本実施例において、プロキシ機能部102は、ブラウザ機能部101から独立しているが、これに限定されず、ブラウザの一部(ブラウザプラグインなど)として、ブラウザ機能部101と一体化されていてもよい。
図6は、通信状態の判定処理の例を示すフローチャートである。本処理は、例えば周期的に実行される。
プロキシ機能部102は、通信処理部14にアクセスすることにより、ウェブサーバ2との通信状態を検出する(ステップSt1)。通信処理部14は、通信状態として、例えば、ウェブサーバ2との通信のエラーレートや、ウェブサーバ2との通信セッションの切断の有無などを、プロキシ機能部102に通知する。なお、プロキシ機能部102は、OSにより提供されるネットワーク接続確認用のAPI(Application Programming Interface)やコマンドなどを用いて通信処理部14にアクセスする。
プロキシ機能部102は、ウェブサーバ2との通信状態が正常であるか否かを判定する(ステップSt2)。プロキシ機能部102は、例えば、ウェブサーバ2との通信のエラーレートが所定の閾値以下である場合、またはウェブサーバ2との通信セッションが存続している場合、通信状態を正常と判定する。
通信状態が正常である場合(ステップSt2のYes)、プロキシ機能部102は、前回の通信状態の判定結果が異常であるか否かを判定する(ステップSt3)。前回の通信状態の判定結果が異常ではない場合(ステップSt3のNo)、プロキシ機能部102は、ウェブサーバ2からのレスポンスデータRESの学習処理を行う(ステップSt6)。
つまり、ウェブサーバ2との通信が正常に維持されている間(オンライン時)、プロキシ機能部102は、リクエストデータREQの変数に応じて変化するレスポンスデータRESの規則を学習し、学習した規則を反映したレスポンステンプレートを生成または更新する。レスポンステンプレートは、ウェブサーバ2との通信の切断時に用いられる代替レスポンスデータRESxを生成するための基礎となるデータである。
通信状態が異常である場合(ステップSt2のNo)、プロキシ機能部102は、代替レスポンスデータRESxによるウェブページの表示処理を行う(ステップSt5)。プロキシ機能部102は、例えば、ウェブサーバ2との通信のエラーレートが所定の閾値より大きい場合、またはウェブサーバ2との通信セッションが消失している場合、通信状態を異常と判定する。
つまり、ウェブサーバ2との通信が切断された場合(オフライン時)、プロキシ機能部102は、ブラウザ機能部101から入力されたリクエストデータREQに応じた代替レスポンスデータRESxを生成し、ブラウザ機能部101に出力する。すなわち、プロキシ機能部102は、ウェブサーバ2からのレスポンスデータRESを推測して、推測結果に基づいて代替レスポンスデータRESxを生成する。また、プロキシ機能部102は、ウェブサーバ2との通信が切断中、リクエストデータREQ及び代替レスポンスデータRESxのログをHDD13に保存する。
また、前回の通信状態の判定結果が異常である場合(ステップSt3のYes)、プロキシ機能部102は、代替レスポンスデータRESxの検証処理を行う(ステップSt4)。つまり、ウェブサーバ2との通信が復旧した場合、プロキシ機能部102は、HDD13から、リクエストデータREQ及び代替レスポンスデータRESxのログを読み出して、代替レスポンスデータRESxの検証を行う。より具体的には、プロキシ機能部102は、ウェブサーバ2にリクエストデータREQを送信し、受信したレスポンスデータRESと、代替レスポンスデータRESxとを比較する。
このように、プロキシ機能部102は、ウェブサーバ2との通信状態に応じて、3つの異なる処理(ステップSt4〜St6)を実行する。以下に各処理について説明する。
図7には、端末装置1の学習処理(ステップSt6)の様子が示されている。プロキシ機能部102は、ブラウザ機能部101から出力されたリクエストデータREQを、通信処理部14に中継する。通信処理部14は、リクエストデータREQを、ネットワークNWを介してウェブサーバ2に送信する。
また、通信処理部14は、ウェブサーバ2から受信したレスポンスデータRESをプロキシ機能部102に出力する。プロキシ機能部102は、通信処理部14から入力されたレスポンスデータRESをブラウザ機能部101に中継する。
プロキシ機能部102は、リクエストデータREQに応じて変化するレスポンスデータRESの規則を学習する。より具体的には、プロキシ機能部102は、HDD13に格納された変換規則データベース(DB)131が示す各変換規則を用いて、リクエストデータREQ内の変数を変換する。プロキシ機能部102は、レスポンスデータRESから、変換後の変数に一致する箇所を検出することで(符号102b)、レスポンステンプレートを生成する。
図8には、変換規則DB131の例が示されている。本例において、変換規則DB131は、複数の変換規則を列挙するリストの形態で示されているが、他の形態で構成されてもよい。
「規則ID」は、変換規則の識別番号である。「名称」は、変換規則の名称である。「変換式」は、変数の変換に用いられる式であり、スクリプト言語などにより記述されている。「変換式」において、リクエストデータREQ内の変数(入力変数)は、「$in」と表記され、変換後の変数(出力変数)は、「$out」と表記されている。
例えば、規則ID「0」の「単純埋め込み」の場合、図3及び図4の例のように、リクエストデータREQ内の変数(title,及びcontents)は、そのままレスポンスデータRES内に挿入される。規則ID「1」の「インクリメント」の場合、リクエストデータREQ内の変数は、1が加算されて、レスポンスデータRES内に挿入される。規則ID「2」の「改行変換」の場合、リクエストデータREQ内の変数は、改行コード「\n」であるとき、HTMLの改行コード「<br>」に変換されて、レスポンスデータRES内に挿入される。
「一致率リスト」は、当該規則による変換後の変数が、レスポンスデータRES内の当該箇所の変数に一致する確率(%)を、使用回数ごと「,」(カンマ)で区切って示す。「一致率リスト」は、過去の通信結果に基づいて算出された確率を列挙したものである。すなわち、「一致率リスト」内の最初(「一致率リスト」欄内の最も左)の数値は、1回目の使用時に一致した後、2回目の使用時も一致する確率を示し、その次の数字は、1回目及び2回目の使用時に一致した後、3回目の使用時も一致する確率を示す。一般的に表すと、「一致率リスト」内の左からN番目(N:整数)の数字は、1〜N回目の使用時に一致した後、N+1回目の使用時も一致する確率を示す。
例えば、規則ID「0」の「単純埋め込み」の場合、1回目の使用時に一致した後、2回目の使用時も一致する確率は、90(%)であり、1回目及び2回目の使用時に一致した後、3回目の使用時も一致する確率は、95(%)である。また、規則ID「1」の「インクリメント」の場合、1回目の使用時に一致した後、2回目の使用時も一致する確率は、80(%)であり、1回目及び2回目の使用時に一致した後、3回目の使用時も一致する確率は、95(%)である。なお、変換規則DB131は、ユーザが入力した情報に基づいて生成されてもよいし、機械的な学習手段などにより自動的に生成されてもよい。
プロキシ機能部102は、変換規則DB131内の各変換規則を用いて、変数を変換し、レスポンスデータRESから、変換後の変数に一致する箇所を検出し(符号102a参照)、該箇所を変数に置換することにより、レスポンステンプレートを生成する。レスポンステンプレートは、ウェブサーバ2との通信が切断されたときに用いられる代替レスポンスデータの基礎となるデータである。生成されたレスポンスデータは、HDD13内の代替レスポンスデータベース(DB)132に登録される。
図9には、代替レスポンスDB132の例が示されている。レスポンステンプレートは、URLごとに登録されている。レスポンステンプレートは、上記の検出処理102bで検出されたレスポンスデータRES内の箇所を、変数(「$a」,「$b」)で置き換えたものと、適用された変換規則の変換式(カッコ内参照)とを含む。
また、代替レスポンスDB132には、レスポンステンプレートごとに、当該レスポンステンプレートの「使用回数」、「規則ID」、及び「一致率」が登録されている。「使用回数」は、プロキシ機能部102が当該レスポンステンプレートに基づいて代替レスポンスデータRESxを生成した回数を示す。なお、レスポンステンプレートの生成時、「使用回数」は1回を示す。
「規則ID」は、図8に示された変換規則のうち、当該レスポンステンプレートに適用される1以上の変換規則の規則IDを示す。例えば、「http://example.com/contents」のレスポンステンプレートは、規則ID「0」の「単純埋め込み」の変換規則が適用される。このため、当該ウェブページの代替レスポンスデータRESxは、リクエストデータREQ内の変数「title」及び「contents」を、レスポンステンプレート内の「$a」及び「$b」に入力することにより生成される。
「一致率」は、図8に示された変換規則の「一致率リスト」から、「使用回数」に応じて選択された確率を示す。例えば、「http://example.com/contents」のレスポンステンプレートは、規則ID「0」の「単純埋め込み」の変換規則が適用され、「使用回数」は1回である。このため、該レスポンステンプレートの「一致率」は、規則ID「0」の「一致率リスト」内の数字のうち、最初の数字である90(%)となる。
また、「http://example.org/profile」のレスポンステンプレートは、規則ID「2」の「改行変換」の変換規則が適用され、「使用回数」は3回である。このため、該レスポンステンプレートの「一致率」は、規則ID「2」の「一致率リスト」内の数字のうち、左から3番目の数字である90(%)となる。なお、「一致率」は、後述するように、レスポンステンプレートの使用可否の判定に用いられる。
プロキシ機能部102は、レスポンステンプレートを用いて代替レスポンスデータRESxを生成する。しかし、レスポンステンプレートは、URLごとに生成されるため、ウェブサーバ2にアクセスするたびに生成され、増加する。このため、プロキシ機能部102は、例えば使用頻度に応じて、レスポンステンプレートを削除してもよい。
また、プロキシ機能部102は、リクエストデータREQをウェブサーバ2に送信するたびに、代替レスポンスDB132を用いて、送信したリクエストデータに応じた代替レスポンスデータRESxを生成する。プロキシ機能部102は、生成した代替レスポンスデータRESxと、ウェブサーバ2から受信したレスポンスデータRESと比較(符号102a参照)し、該比較結果に基づいて、レスポンステンプレート(つまり変換規則)を更新する。これにより、プロキシ機能部102は、代替レスポンスDB132の内容を充実させ、代替レスポンスデータRESxの確実性を向上することができる。
図10は、学習処理の例を示すフローチャートである。本処理は、図6のステップSt6において実行される。
プロキシ機能部102は、ブラウザ機能部101からのリクエストデータREQの入力の検出の有無を判定する(ステップSt11)。プロキシ機能部102は、リクエストデータREQの入力が検出されない場合(ステップSt11のNo)、処理を終了する。プロキシ機能部102は、リクエストデータREQの入力が検出された場合(ステップSt11のYes)、代替レスポンスDB132に、リクエストデータREQ内のURLに対応するレスポンステンプレートが登録されているか否かを判定する(ステップSt12)。
レスポンステンプレートが登録されていない場合(ステップSt12のNo)、プロキシ機能部102は、通信処理部14を介し、リクエストデータREQをウェブサーバ2に送信する(ステップSt19)。次に、プロキシ機能部102は、通信処理部14を介し、ウェブサーバ2からレスポンスデータRESを受信する(ステップSt20)。図3のウェブページの例を挙げると、リクエストデータREQに、変数「title」及び「contents」として、文字列「新機能のご紹介」及び「利便性向上を実現」がそれぞれ含まれる場合、レスポンスデータRESは、図4に示される内容となる。
次に、プロキシ機能部102は、レスポンスデータRESから、リクエストデータREQ内の変数の変換結果(変換後の変数)に一致する箇所を検出する(ステップSt21)。このとき、プロキシ機能部102は、変換規則DB131に登録された変換規則を順次に使用して変数を変換し、レスポンスデータRES内の一致箇所を検出する。
次に、プロキシ機能部102は、検出結果に基づいて、レスポンステンプレートを生成する(ステップSt22)。次に、プロキシ機能部102は、生成したレスポンステンプレートを、代替レスポンスDB132に登録する(ステップSt23)。
図11には、レスポンステンプレートの生成例が示されている。図11は、ウェブサーバ2への初回のアクセスにおいて、図4のレスポンスデータRESに基づいて生成された代替レスポンスDB132内のレスポンステンプレートを示す。
図4のレスポンスデータRESのうち、文字列「新機能のご紹介」及び「利便性向上を実現」の箇所70,71は、変数「title」及び「contents」を、規則ID「0」の「単純埋め込み」で変換したものに一致する。このため、レスポンステンプレートは、文字列「新機能のご紹介」及び「利便性向上を実現」の箇所70,71を、規則ID「0」の「単純埋め込み」が適用される変数「$a」及び「$b」で置換することにより生成される。なお、生成されたレスポンステンプレートの「一致率」は、「使用回数」が1回であるため、90(%)となる。
生成したレスポンステンプレートの登録後、プロキシ機能部102は、ウェブサーバ2から受信したレスポンスデータRESをブラウザ機能部101に出力し(ステップSt25)、処理を終了する。これにより、ディスプレイ170に、レスポンスデータRESに基づくウェブページが表示される。
また、レスポンステンプレートが登録されている場合(ステップSt12のYes)、プロキシ機能部102は、リクエストデータREQ内のURLに応じたレスポンステンプレートに基づいて、代替レスポンスデータRESxを生成する(ステップSt13)。なお、以下の処理の説明では、一例として、代替レスポンスDB132に、図11に示されたレスポンステンプレートが登録されていることを前提とする。
次に、プロキシ機能部102は、通信処理部14を介し、リクエストデータREQをウェブサーバ2に送信する(ステップSt14)。次に、プロキシ機能部102は、通信処理部14を介し、ウェブサーバ2からレスポンスデータRESを受信する(ステップSt15)。次に、プロキシ機能部102は、代替レスポンスデータRESxとレスポンスデータRESを比較する(ステップSt16)。
例えば、ウェブサーバ2への2度目のアクセスにおいて、レスポンスデータRESが、変数「title」及び「contents」として、文字列「新機能のご紹介」及び「新機能の概要」をそれぞれ含むとする。この場合、レスポンスデータRESは、図12に示される内容となる。
また、当該URLのレスポンステンプレート(図11参照)は、規則ID「0」の「単純埋め込み」が適用される。このため、代替レスポンスデータRESxは、レスポンステンプレート内の変数「$a」及び「$b」を、文字列「新機能のご紹介」及び「新機能の概要」によりそれぞれ置換することにより生成される。このため、代替レスポンスデータRESxは、図12に示されたレスポンスデータRESと同様の内容となる。つまり、代替レスポンスデータRESxは、レスポンスデータRESと一致する。
代替レスポンスデータRESxとレスポンスデータRESが一致する場合(ステップSt17のYes)、プロキシ機能部102は、レスポンステンプレートの一致率を更新する(ステップSt18)。
図13には、一致率の更新例が示されている。レスポンステンプレートの使用回数は、ウェブサーバ2へのアクセスが2度目であるので、2回となる。このため、一致率は、図8の規則ID「0」の「単純埋め込み」の一致率リスト内の数字のうち、左から2番目の数字、つまり95(%)となる。
レスポンステンプレートの一致率の更新後、プロキシ機能部102は、上記のステップSt25の処理を行い、処理を終了する。
また、代替レスポンスデータRESxとレスポンスデータRESが一致しない場合(ステップSt17のNo)、プロキシ機能部102は、レスポンステンプレートを削除する(ステップSt24)。次に、プロキシ機能部102は、上記のステップSt21〜St23の処理を実行することにより、レスポンステンプレートを再生成する。つまり、プロキシ機能部102は、リクエストデータREQの変数に応じて変化するレスポンスデータRESの規則を更新する。レスポンステンプレートを再生成後、プロキシ機能部102は、上記のステップSt25の処理を行い、処理を終了する。
例えば、ウェブサーバ2への3度目のアクセスにおいて、レスポンスデータRESが、変数「title」及び「contents」として、文字列「新機能のご紹介」及び「利便性向上を実現\n処理を高速化」をそれぞれ含むとする。ここで、「\n」は、改行コードを示す。この場合、プロキシ機能部102は、図13に示されるレスポンステンプレートに基づいて、図14に示される代替レスポンスデータRESxを生成する。
また、ウェブサーバ2が送信するレスポンスデータRESは、図15に示される内容となる。この場合、レスポンスデータRES内の改行コード73は「<br>」であるのに対し、代替レスポンスデータRESx内の改行コード72は「\n」である。このため、プロキシ機能部102は、レスポンスデータRESと代替レスポンスデータRESxを比較した結果(ステップSt16)、両者を不一致と判定して(ステップSt17のNo)、レスポンステンプレートを更新する(ステップSt21〜St23)。
図16には、この場合のレスポンステンプレートの更新例が示されている。本例では、リクエストデータREQ内の変数「title」(「新機能のご紹介」)は、レスポンスデータRES内の文字列「新機能のご紹介」に一致する。このため、レスポンステンプレートは、変数「title」に関して、規則ID「0」の「単純埋め込み」が適用される(「レスポンステンプレート」欄内の「$a」参照)。
また、リクエストデータREQ内の変数「contents」(「利便性向上を実現\n処理を高速化」)は、レスポンスデータRES内の文字列「利便性向上を実現<br>処理を高速化」に対応する。つまり、「\n」の改行コード72は、「<br>」の改行コード73に変換されている。このため、レスポンステンプレートは、変数「contents」に関して、規則ID「2」の「改行変換」が適用される(「レスポンステンプレート」欄内の「$b」参照)。
したがって、レスポンステンプレートの「規則ID」として、「0」及び「2」が登録される。また、「使用回数」は、レスポンステンプレートが再生成されたので、「1」となる。「一致率」は、規則ID「0」,「1」の一致率リスト内の1回目に該当する数字のうち、最小の数字である80(%)が選択される。
このように、プロキシ機能部102は、リクエストデータREQ内の変数に応じて変化するレスポンスデータRESの規則を学習し、代替レスポンスDB132内のレスポンステンプレートを生成及び更新する。このため、以下に述べるウェブページの表示処理において、正確な代替レスポンスデータRESxが生成され、代替のウェブページの精度を向上される。
図17には、端末装置1のウェブページの表示処理(ステップSt5)の様子が示されている。ここで、端末装置1は、符号9で示されるように、ウェブサーバ2との通信が切断されている。なお、図17において、図7と共通する構成については同一の符号を付し、その説明を省略する。
プロキシ機能部102は、ブラウザ機能部101からリクエストデータREQが入力されると、代替レスポンスDB132を用いて、リクエストデータREQに応じた代替レスポンスデータRESxを生成し、ブラウザ機能部101に出力する。すなわち、プロキシ機能部102は、上記の学習処理において学習した変換規則に従い、リクエストデータREQに応じた代替レスポンスデータRESxを生成し、ブラウザ機能部101により代替レスポンスデータRESxに基づいてウェブページを表示する。
また、プロキシ機能部102は、リクエストデータREQ内の変数及び代替レスポンスデータRESxを、HDD13内のログデータベース(DB)133に記録する。図18には、ログDB133の例が示されている。リクエストデータREQ内の変数(「key1」、「key2」)及び代替レスポンスデータRESxは、URLごとに記録される。ログデータベース(DB)133は、後述するレスポンステンプレートの検証処理に用いられる。
図19は、ウェブページの表示処理の例を示すフローチャートである。本処理は、図6のステップSt5において実行される。
プロキシ機能部102は、ブラウザ機能部101からのリクエストデータREQの入力の検出の有無を判定する(ステップSt31)。プロキシ機能部102は、リクエストデータREQの入力が検出されない場合(ステップSt31のNo)、処理を終了する。プロキシ機能部102は、リクエストデータREQの入力が検出された場合(ステップSt31のYes)、代替レスポンスDB132に、リクエストデータREQ内のURLに対応するレスポンステンプレートが登録されているか否かを判定する(ステップSt32)。
レスポンステンプレートが登録されていない場合(ステップSt32のNo)、プロキシ機能部102は、ユーザにエラーを通知し(ステップSt37)、処理を終了する。より具体的には、プロキシ機能部102は、ブラウザ機能部101に、当該URLのウェブページが表示できない旨のメッセージを、ディスプレイ170に表示させる。
レスポンステンプレートが登録されている場合(ステップSt32のYes)、プロキシ機能部102は、代替レスポンスDB132から、当該レスポンステンプレートの一致率を検索し、一致率>閾値THの成否を判定する(ステップSt33)。一致率>閾値THが成立しない場合(ステップSt33のNo)、プロキシ機能部102は、ユーザにエラーを通知し(ステップSt37)、処理を終了する。これにより、精度が低いレスポンステンプレートの使用が防止される。
また、一致率>閾値THが成立する場合(ステップSt33のYes)、プロキシ機能部102は、レスポンステンプレートに基づいて代替レスポンスデータRESxを生成する(ステップSt34)。代替レスポンスデータRESxの生成については、図14などを参照して述べた通りである。
次に、プロキシ機能部102は、生成した代替レスポンスデータRESxをブラウザ機能部101に出力する(ステップSt35)。これにより、ディスプレイ170に、代替レスポンスデータRESxに基づくウェブページが表示される。したがって、ユーザは、端末装置1とウェブサーバ2の通信が切断された場合でも、図3(b)に例示されたブログの確認用ウェブページのように、入力した情報に基づいて表示内容が変化するウェブページを閲覧できる。
次に、プロキシ機能部102は、ログDB133に、リクエストデータREQ内の変数及び代替レスポンスデータRESxを記録する(ステップSt36)。このようにして、ウェブページの表示処理は行われる。
このように、プロキシ機能部102は、予め学習したレスポンスデータRESの規則に従って、ウェブサーバ2に代わり、疑似的な代替レスポンスデータRESxを生成し、代替レスポンスデータRESxに基づいてウェブページを表示する。したがって、端末装置1は、リクエストデータREQに応じたウェブページを表示することができる。ウェブページの精度(正確さ)は、上記の学習処理だけでなく、レスポンステンプレートの検証処理によっても高めることができる。
図20には、端末装置1のレスポンステンプレートの検証処理(図6のステップSt4)の様子が示されている。ここで、端末装置1とウェブサーバ2の通信は、復旧している。なお、図20において、図7及び図17と共通する構成については同一の符号を付し、その説明を省略する。
プロキシ機能部102は、ウェブサーバ2との通信が復旧すると、ログDB133からリクエストデータREQ内の変数及び代替レスポンスデータRESxを読み出す。プロキシ機能部102は、読み出した変数を、当該URLとともにリクエストデータREQに含めて、ウェブサーバ2に送信する。
プロキシ機能部102は、ウェブサーバ2から受信したレスポンスデータRESと、ログDB133から読み出した代替レスポンスデータRESxとを比較し(符号102c)、比較結果を、ユーザに通知するためにブラウザ機能部101に出力する。これにより、例えば、代替レスポンスデータRESxを用いて表示したウェブページと、ウェブサーバ2から受信したレスポンスデータRESを用いて表示されるウェブページの差分が、ディスプレイ170に表示される。したがって、ユーザは、ウェブページから誤った情報を取得したことを認識するとともに、正しい情報を取得することができる。
また、プロキシ機能部102は、上記の比較結果に基づいて代替レスポンスDB132内のレスポンステンプレート(つまり変換規則)を更新する。これにより、プロキシ機能部102は、代替レスポンスDB132の内容を充実させ、代替レスポンスデータRESxの確実性を向上することができる。なお、レスポンステンプレートの検証処理は、ログDB133に記録されている全てのリクエストデータREQ内の変数及び代替レスポンスデータRESxについて実行される。
図21は、レスポンステンプレートの検証処理の例を示すフローチャートである。本処理は、図6のステップSt4において実行される。
プロキシ機能部102は、ブラウザ機能部101を介して、ウェブサーバ2との通信が復旧したことを、ユーザに通知する(ステップSt41)。次に、プロキシ機能部102は、ログDB133が空であるか否かを判定する(ステップSt42)。ログDB133が空である場合(ステップSt42のYes)、プロキシ機能部102は、処理を終了する。
また、ログDB133が空ではない場合(ステップSt42のNo)、プロキシ機能部102は、ログDB133から、リクエストデータREQ内の変数及び代替レスポンスデータRESxを読み出す(ステップSt43)。次に、プロキシ機能部102は、及びログDB133から読み出した変数、及び当該URLを含むリクエストデータREQを生成して、ウェブサーバ2に送信する(ステップSt44)。
次に、プロキシ機能部102は、ウェブサーバ2から通信処理部14を介してレスポンスデータRESを受信する(ステップSt45)。次に、プロキシ機能部102は、受信したレスポンスデータRESと、ログDB133から読み出した代替レスポンスデータRESxとを比較する(ステップSt46)。すなわち、プロキシ機能部102は、サーバとの通信の切断中に生成されたリクエストデータREQをウェブサーバ2に送信し、ウェブサーバ2から受信したレスポンスデータRESを、代替レスポンスデータRESxと比較する。
レスポンスデータRESと代替レスポンスデータRESxが一致した場合(ステップSt47のYes)、プロキシ機能部102は、ログDB133から、レスポンスデータRESと代替レスポンスデータRESxを削除して(ステップSt48)、処理を終了する。
また、レスポンスデータRESと代替レスポンスデータRESxが不一致である場合(ステップSt47のNo)、プロキシ機能部102は、ブラウザ機能部101を介して、不一致の箇所をユーザに通知する(ステップSt49)。次に、プロキシ機能部102は、代替レスポンスDB132から、当該レスポンステンプレートを削除する(ステップSt50)。
次に、プロキシ機能部102は、レスポンスデータRESから、リクエストデータREQ内の変数の変換結果(変換後の変数)に一致する箇所を検出する(ステップSt51)。このとき、プロキシ機能部102は、変換規則DB131に登録された変換規則を順次に使用して変数を変換し、レスポンスデータRES内の一致箇所を検出する。
次に、プロキシ機能部102は、検出結果に基づいて、レスポンステンプレートを生成する(ステップSt52)。次に、プロキシ機能部102は、生成したレスポンステンプレートを、代替レスポンスDB132に登録し(ステップSt53)、処理を終了する。このようにして、レスポンステンプレートの検証処理は実行される。
このように、プロキシ機能部102は、ウェブサーバ2との通信の切断中にブラウザ機能部101から入力されたリクエストデータREQに応じて生成した代替レスポンスデータRESxを、ウェブサーバ2から受信したレスポンスデータRESと比較する。これにより、ユーザは、代替レスポンスデータRESxに基づいて表示されたウェブページの内容を検証できる。
これまで述べたように、実施例に係るウェブページ表示システムは、端末装置1と、サーバ(ウェブサーバ)2とを有する。サーバ2は、受信したリクエストデータREQに応じて、レスポンスデータRESを送信する。端末装置1は、ユーザから入力された情報に基づいて生成されたリクエストデータREQをサーバ2に送信し、サーバ2から受信したレスポンスデータRESに基づいてウェブページを表示する。
端末装置1は、リクエストデータREQに応じて変化するレスポンスデータRESの規則を学習する。端末装置1は、サーバ2との通信が切断された場合、学習した規則に従い、リクエストデータREQに応じた代替レスポンスデータRESxを生成し、代替レスポンスデータRESxに基づいてウェブページを表示する。
上記の構成によると、端末装置1は、サーバ2との通信の切断中、レスポンスデータRESの規則に従った代替レスポンスデータRESxに基づいてウェブページを表示する。このため、ユーザは、サーバ2との通信の切断中でも、例えばブログの更新内容の確認用のウェブページ(図3(b)参照)のように、ユーザの入力に応じて表示内容が変化するウェブページを閲覧できる。
したがって、実施例に係るウェブページ表示システムは、ウェブページの表示の利便性を向上することができる。
また、実施例に係るウェブページ表示プログラムは、以下の処理をコンピュータ(CPU)10に実行させる。
処理(1):ユーザから入力された情報に基づいて生成されたリクエストデータREQをサーバ(ウェブサーバ)2に送信する。
処理(2):サーバ2から受信したレスポンスデータRESに基づいてウェブページを表示する。
処理(3):リクエストデータREQに応じて変化する前記レスポンスデータの規則を学習する。
処理(4):サーバ2との通信が切断された場合、学習した規則に従い、リクエストデータREQに応じた代替レスポンスデータRESxを生成し、代替レスポンスデータRESxに基づいてウェブページを表示する。
実施例に係るウェブページ表示プログラムは、上記のウェブページ表示システムと同様の構成を含むので、上述した内容と同様の作用効果を奏する。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体(ただし、搬送波は除く)に記録しておくことができる。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD(Digital Versatile Disc)、CD−ROM(Compact Disc Read Only Memory)などの可搬型記録媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
なお、以上の説明に関して更に以下の付記を開示する。
(付記1) 受信したリクエストデータに応じて、レスポンスデータを送信するサーバと、
ユーザから入力された情報に基づいて生成された前記リクエストデータを前記サーバに送信し、前記サーバから受信した前記レスポンスデータに基づいてウェブページを表示する端末装置とを有し、
前記端末装置は、
前記リクエストデータに応じて変化する前記レスポンスデータの規則を学習し、
前記サーバとの通信が切断された場合、学習した前記規則に従い、前記リクエストデータに応じた代替レスポンスデータを生成し、前記代替レスポンスデータに基づいてウェブページを表示することを特徴とするウェブページ表示システム。
(付記2) 前記端末装置は、前記サーバとの通信が復旧した場合、前記サーバとの通信の切断中に生成された前記リクエストデータを前記サーバに送信し、前記サーバから受信した前記レスポンスデータを、前記代替レスポンスデータと比較し、該比較結果に基づいて前記規則を更新することを特徴とする付記1に記載のウェブページ表示システム。
(付記3) 前記端末装置は、前記サーバとの通信が復旧した場合、前記サーバとの通信の切断中に生成された前記リクエストデータを前記サーバに送信し、前記サーバから受信した前記レスポンスデータを、前記代替レスポンスデータと比較し、該比較結果をユーザに通知することを特徴とする付記1または2に記載のウェブページ表示システム。
(付記4) 前記端末装置は、前記リクエストデータを前記サーバに送信するたびに、送信した前記リクエストデータに応じた前記代替レスポンスデータを生成して、前記サーバから受信した前記レスポンスデータと比較し、該比較結果に基づいて前記規則を更新することを特徴とする付記1乃至3の何れかに記載のウェブページ表示システム。
(付記5) ユーザから入力された情報に基づいて生成されたリクエストデータをサーバに送信し、
前記サーバから受信したレスポンスデータに基づいてウェブページを表示し、
前記リクエストデータに応じて変化する前記レスポンスデータの規則を学習し、
前記サーバとの通信が切断された場合、学習した前記規則に従い、前記リクエストデータに応じた代替レスポンスデータを生成し、前記代替レスポンスデータに基づいてウェブページを表示する、処理を、コンピュータに実行させることを特徴とするウェブページ表示プログラム。
(付記6) 前記サーバとの通信が復旧した場合、前記サーバとの通信の切断中に生成された前記リクエストデータを前記サーバに送信し、前記サーバから受信した前記レスポンスデータを、前記代替レスポンスデータと比較し、該比較結果に基づいて前記規則を更新する処理を、さらに前記コンピュータに実行させることを特徴とする付記5に記載のウェブページ表示プログラム。
(付記7) 前記サーバとの通信が復旧した場合、前記サーバとの通信の切断中に生成された前記リクエストデータを前記サーバに送信し、前記サーバから受信した前記レスポンスデータを、前記代替レスポンスデータと比較し、該比較結果をユーザに通知する、処理を、さらに前記コンピュータに実行させることを特徴とする付記5または6に記載のウェブページ表示プログラム。
(付記8) 前記リクエストデータを前記サーバに送信するたびに、送信した前記リクエストデータに応じた前記代替レスポンスデータを生成して、前記サーバから受信した前記レスポンスデータと比較し、該比較結果に基づいて前記規則を更新する、処理を、さらに前記コンピュータに実行させることを特徴とする付記5乃至7の何れかに記載のウェブページ表示プログラム。