(57)【特許請求の範囲】
【請求項１】
コンピュータが実行するローカルストレージ管理方法であって、
ローカルストレージを使用するブラウザからサーバ宛てのリクエストを受信し、
前記リクエストに対応するレスポンスに、他のリクエストを送信する第１の処理を示すスクリプトを挿入して前記ブラウザに送信し、
前記ブラウザから前記他のリクエストを受信し、
前記他のリクエストに応じて、ブラウザ終了イベントを検出した場合に前記ローカルストレージに格納されたデータを送信し前記ローカルストレージから前記データを削除する第２の処理を示す他のスクリプトを含む他のレスポンスを、前記ブラウザに送信し、
前記ブラウザから前記データを受信し、
受信した前記データを前記ローカルストレージと異なる記憶領域に格納する、
ローカルストレージ管理方法。
【請求項２】
前記他のレスポンスを送信した後、前記記憶領域に格納されている他のデータを前記ブラウザに送信し、
前記他のスクリプトは、前記他のデータを受信し、受信した前記他のデータを前記ローカルストレージに格納する第３の処理を更に示す、
請求項１記載のローカルストレージ管理方法。
【請求項３】
前記第１の処理は、前記他のレスポンスの内容を前記レスポンスとは異なるウィンドウに表示させることを含む、
請求項１または２記載のローカルストレージ管理方法。
【請求項４】
前記記憶領域への前記データの格納では、前記データを暗号化する、
請求項１乃至３の何れか一項に記載のローカルストレージ管理方法。
【請求項５】
ブラウザが使用するローカルストレージと異なる記憶領域を含む記憶部と、
前記ブラウザからサーバ宛てのリクエストを受信し、
前記リクエストに対応するレスポンスに、他のリクエストを送信する第１の処理を示すスクリプトを挿入して前記ブラウザに送信し、
前記ブラウザから前記他のリクエストを受信し、
前記他のリクエストに応じて、ブラウザ終了イベントを検出した場合に前記ローカルストレージに格納されたデータを送信し前記ローカルストレージから前記データを削除する第２の処理を示す他のスクリプトを含む他のレスポンスを、前記ブラウザに送信し、
前記ブラウザから前記データを受信し、
受信した前記データを前記記憶領域に格納する制御部と、
を有するローカルストレージ管理装置。
【請求項６】
コンピュータに、
ローカルストレージを使用するブラウザからサーバ宛てのリクエストを受信し、
前記リクエストに対応するレスポンスに、他のリクエストを送信する第１の処理を示すスクリプトを挿入して前記ブラウザに送信し、
前記ブラウザから前記他のリクエストを受信し、
前記他のリクエストに応じて、ブラウザ終了イベントを検出した場合に前記ローカルストレージに格納されたデータを送信し前記ローカルストレージから前記データを削除する第２の処理を示す他のスクリプトを含む他のレスポンスを、前記ブラウザに送信し、
前記ブラウザから前記データを受信し、
受信した前記データを前記ローカルストレージと異なる記憶領域に格納する、
処理を実行させるローカルストレージ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はローカルストレージ管理方法、ローカルストレージ管理装置およびローカルストレージ管理プログラムに関する。
【背景技術】
【０００２】
ユーザがＷＷＷ（World Wide Web）を利用する場合、ユーザが使用する端末装置上でブラウザと呼ばれるアプリケーションソフトウェアが実行される。ブラウザは、Ｗｅｂサーバと呼ばれるサーバソフトウェアが動作するサーバ装置と通信し、通信結果に基づいて主に視覚的なユーザインタフェースを提供する。
【０００３】
ブラウザは、ＨＴＴＰ（Hypertext Transfer Protocol）リクエストをＷｅｂサーバに送信し、ＨＴＴＰリクエストで要求されたファイルを含むＨＴＴＰレスポンスを受信する。受信するファイルは、表示するＷｅｂページの内容を示し、例えば、ＨＴＭＬ（HyperText Markup Language）などのマークアップ言語を用いて記述される。受信するファイルに、ブラウザ上で実行されるプログラムであるスクリプトが付加されていることもある。ブラウザは、受信したファイルに基づいて、表示領域にＷｅｂページを描画（レンダリング）する。ファイルにスクリプトが付加されている場合、ブラウザは、スクリプトを実行し、実行結果に応じてＷｅｂページの表示を制御する。
【０００４】
スクリプトを活用することで、操作性の高いＷｅｂページをユーザに提供することが可能となる。一方で、スクリプトは第三者が作成したプログラムであり、セキュリティに対する脅威となる可能性があるため、受信したスクリプトをブラウザ上で無制限に実行することは好ましくない。そこで、ブラウザは、スクリプトによって実行できる処理を制限している。例えば、ネットワークアクセスに関して、ブラウザは、スクリプトから指定できるアクセス先を、スクリプトと同一のＷｅｂサイトなどに限定する。また、端末装置上のローカルの記憶領域に関して、ブラウザは、スクリプトから使用できる記憶領域をブラウザが管理する制限された記憶領域に限定する。
【０００５】
スクリプトから使用できるローカルの記憶領域に関して、従来は、「クッキー」と呼ばれる小容量のデータ格納先が使用されてきた。一方で、近年は、より操作性の高いＷｅｂページを実現するため、ブラウザ上でサイズの大きいデータを扱いたいというニーズが存在する。そこで、マークアップ言語の規格であるＨＴＭＬ５では、「ローカルストレージ」と呼ばれる大容量（例えば、１０ＭＢ以上）の記憶領域が定義された。ローカルストレージに格納されたデータは、ブラウザを終了しても保持される。
【０００６】
スクリプトは、ローカルストレージに様々なデータを格納させることができる。例えば、ブラウザがオフライン状態の間は、ユーザが入力したデータをローカルストレージに保存しておき、次にオンライン状態になったときに、ローカルストレージのデータをＷｅｂサーバにまとめて送信するＷｅｂページが考えられる。このように、ローカルストレージを活用することで、端末装置をネットワークに接続し続けなくても、ユーザがブラウザ上で断続的に様々な操作を行うことが可能となる。
【０００７】
なお、ユーザが異なる場所で同じ作業環境を利用できるようにするコンピュータ環境携帯装置が提案されている。コンピュータ環境携帯装置が第１のコンピュータに接続されると、コンピュータ環境携帯装置に記憶されたソフトウェアが実行されて、第１のコンピュータの作業環境に関するデータがコンピュータ環境携帯装置に保存される。コンピュータ環境携帯装置が第２のコンピュータに接続されると、保存されたデータが第２のコンピュータに書き込まれ、作業環境が第２のコンピュータ上に再現される。
【０００８】
また、データベースを有する管理サーバと、ブラウザを実行可能であり揮発性メモリを有する演算装置とを含む自動ログイン認証システムが提案されている。演算装置に対するログインが行われると、管理サーバのデータベースに記憶されているクッキーが演算装置の揮発性メモリに保存される。演算装置の電源終了ボタンが押下されると、演算装置の揮発性メモリに保存されたクッキーが管理サーバへ送信される。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００６−１４６９１２号公報
【特許文献２】特開２００９−１３９９７６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ところで、ユーザは、作成者やブランド名などの異なる複数の種類のブラウザを入手することができ、それら複数の種類のブラウザの中から好みのブラウザを選択して使用することができる。そのため、ユーザが一の種類のブラウザを主に使用し、その後、他の種類のブラウザを端末装置にインストールして当該他の種類のブラウザを主に使用するようになる場合がある。このとき、ユーザは、前に使用していた上記一の種類のブラウザを端末装置から削除（アンインストール）せずに残しておくことも多い。
【００１１】
しかし、ローカルストレージは、ブラウザ毎に設けられる。使用しなくなったブラウザまたは使用頻度が低くなったブラウザに対応するローカルストレージには、スクリプトまたはユーザ操作によって明示的に削除されない限り、古いデータが残っている可能性がある。そのため、ユーザが主に使用するブラウザを変更すると、ローカルストレージに残った古いデータが漏洩するリスクがあるという問題がある。例えば、盗難などによって端末装置が他のユーザによって不正使用されたときに、他のユーザが、端末装置の本来のユーザが前に使用していたブラウザを起動する可能性がある。このとき、既に消去されたとユーザが認識していた古いデータが、ブラウザ上に表示されてしまう可能性がある。
【００１２】
１つの側面では、本発明は、ローカルストレージの利用に関するセキュリティを向上させるローカルストレージ管理方法、ローカルストレージ管理装置およびローカルストレージ管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
１つの態様では、コンピュータが実行するローカルストレージ管理方法が提供される。ローカルストレージを使用するブラウザからサーバ宛てのリクエストを受信する。リクエストに対応するレスポンスに、他のリクエストを送信する第１の処理を示すスクリプトを挿入してブラウザに送信する。ブラウザから他のリクエストを受信する。他のリクエストに応じて、ブラウザ終了イベントを検出した場合にローカルストレージに格納されたデータを送信しローカルストレージからデータを削除する第２の処理を示す他のスクリプトを含む他のレスポンスを、ブラウザに送信する。ブラウザからデータを受信する。受信したデータをローカルストレージと異なる記憶領域に格納する。
【００１４】
また、１つの態様では、記憶部と制御部とを有するローカルストレージ管理装置が提供される。また、１つの態様では、コンピュータに実行させるローカルストレージ管理プログラムが提供される。
【発明の効果】
【００１５】
１つの側面では、ローカルストレージの利用に関するセキュリティを向上できる。
【図面の簡単な説明】
【００１６】
【図１】第１の実施の形態のローカルストレージ管理装置を示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】端末装置のハードウェア例を示すブロック図である。
【図４】端末装置の機能例を示すブロック図である。
【図５】ローカルデータテーブルの例を示す図である。
【図６】アクセス情報テーブルの例を示す図である。
【図７】Ｗｅｂアクセスの例を示すシーケンス図である。
【図８】Ｗｅｂページに付加されるスクリプトの例を示す図である。
【図９】制御ページに含まれるスクリプトの例を示す図である。
【図１０】プロキシ転送処理の手順例を示すフローチャートである。
【図１１】プロキシ移動処理の手順例を示すフローチャートである。
【図１２】ブラウザアクセス処理の手順例を示すフローチャートである。
【図１３】ブラウザ移動処理の手順例を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態のローカルストレージ管理装置を示す図である。
【００１８】
ローカルストレージ管理装置１０は、サーバ２とブラウザ１３との間で通信を中継する。サーバ２は、例えば、サーバアプリケーションとしてのＷｅｂサーバを実行するサーバ装置である。ブラウザ１３は、例えば、ローカルストレージ管理装置１０を介してサーバ２とＨＴＴＰ通信を行うクライアントアプリケーションとしてのＷｅｂブラウザである。ブラウザ１３は、ローカルストレージ管理装置１０上で実行されてもよいし、他の装置上で実行されていてもよい。後述するローカルストレージ管理装置１０の処理は、例えば、ブラウザ１３に対するプロキシサーバとして実装される。その場合、ブラウザ１３には、サーバ２へのアクセスがこのプロキシサーバを経由するよう設定される。
【００１９】
ブラウザ１３は、ブラウザ１３を実行する装置（例えば、ローカルストレージ管理装置１０）が備える記憶領域であるローカルストレージ１３ａを使用する。ブラウザ１３上で実行されるスクリプトによって、ローカルストレージ１３ａにデータ１３ｂを格納できる。ローカルストレージ１３ａは、例えば、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性の記憶装置上に形成される。ローカルストレージ１３ａに書き込まれたデータ１３ｂは、後述するようにブラウザ１３を終了しても維持される。
【００２０】
ローカルストレージ管理装置１０は、記憶部１１および制御部１２を有する。記憶部１１は、例えば、ＨＤＤやフラッシュメモリなどの不揮発性の記憶装置である。記憶部１１は、ローカルストレージ１３ａと異なる記憶領域１１ａを含む。制御部１２は、ブラウザ１３からサーバ２へのアクセスを制御する。制御部１２は、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などのプロセッサでもよい。また、制御部１２は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途の電子回路を含んでもよい。なお、プロセッサは、ＲＡＭ（Random Access Memory）などのメモリに記憶されたプログラムを実行する。複数のプロセッサの集合（マルチプロセッサ）を「プロセッサ」と呼ぶこともある。
【００２１】
ここで、制御部１２は、ブラウザ１３がサーバ２宛てのリクエスト１４を送信すると、ブラウザ１３からリクエスト１４を受信する。リクエスト１４は、例えば、ＵＲＬ（Uniform Resource Locator）などのアドレスを含むＨＴＴＰリクエストである。制御部１２は、リクエスト１４を受信すると、サーバ２にリクエスト１４を転送し、リクエスト１４に対応するレスポンス１５をサーバ２から受信する。レスポンス１５は、例えば、Ｗｅｂページの内容をＨＴＭＬを用いて記述したＨＴＭＬファイルを含む。ただし、リクエスト１４によって指定されたファイルをローカルストレージ管理装置１０でキャッシュしている場合には、キャッシュされたファイルを用いてレスポンス１５を生成してもよい。
【００２２】
制御部１２は、レスポンス１５にスクリプト１５ａを挿入してブラウザ１３に送信する。スクリプト１５ａは、リクエスト１６を送信する処理（第１の処理）を示す。リクエスト１６は、例えば、ＨＴＴＰリクエストである。リクエスト１６にＵＲＬが含まれる場合、ＵＲＬのプロトコルスキーム・ホスト名・ポート番号をリクエスト１４と同じにする。これにより、後述するレスポンス１５とレスポンス１７とが同じＷｅｂサイトに関するものと認識される。好ましくは、リクエスト１６に所定の文字列が含まれるようにする。
【００２３】
レスポンス１５を受信したブラウザ１３は、レスポンス１５に基づいて一のウィンドウにＷｅｂページを表示する。また、ブラウザ１３は、レスポンス１５に含まれるスクリプト１５ａを実行する。これにより、ブラウザ１３は、リクエスト１６を送信する。
【００２４】
制御部１２は、ブラウザ１３からリクエスト１６を受信する。すると、制御部１２は、リクエスト１６に対する応答として、レスポンス１７をブラウザ１３に送信する。レスポンス１７は、例えば、レスポンス１５とは異なるＷｅｂページであって制御用のＷｅｂページを示すＨＴＭＬファイルを含む。レスポンス１７を送信するか否かは、例えば、受信したリクエスト１６に所定の文字列が含まれているか否かによって判断できる。
【００２５】
レスポンス１７は、スクリプト１７ａを含む。スクリプト１７ａは、ブラウザ１３を終了させるブラウザ終了イベントを検出した場合に、ローカルストレージ１３ａに格納されたデータ１３ｂを送信し、ローカルストレージ１３ａからデータ１３ｂを削除する処理（第２の処理）を示す。レスポンス１５に基づくＷｅｂページとレスポンス１７に基づくＷｅｂページとは、同じＷｅｂサイトのものと認識されるようにする。これにより、スクリプト１７ａは、レスポンス１５に基づいて表示されたＷｅｂページ上で行われたローカルストレージ１３ａへのデータ１３ｂの書き込みを検出することができる。
【００２６】
レスポンス１７を受信したブラウザ１３は、レスポンス１７に基づいてＷｅｂページを表示する。例えば、ブラウザ１３は、レスポンス１７に基づく制御用のＷｅｂページを、レスポンス１５に基づくＷｅｂページとは異なるウィンドウに表示する。ここで言う「異なるウィンドウ」には、タブ型ブラウザにおける異なるタブが含まれてもよい。
【００２７】
ブラウザ１３は、ローカルストレージ１３ａにデータ１３ｂが書き込まれると、ローカルストレージ１３ａの更新を検出する。また、ブラウザ１３は、ブラウザ終了イベントを検出する。ブラウザ終了イベントは、例えば、ブラウザ１３を閉じるユーザ操作が行われたときに発行される。すると、ブラウザ１３は、スクリプト１７ａに従って、レスポンス１７の受信以降にローカルストレージ１３ａに書き込まれたデータ１３ｂをローカルストレージ管理装置１０に送信する。また、ブラウザ１３は、スクリプト１７ａに従って、ローカルストレージ１３ａからデータ１３ｂを削除する。
【００２８】
制御部１２は、ブラウザ１３からデータ１３ｂを受信する。すると、制御部１２は、受信したデータ１３ｂを記憶部１１の記憶領域１１ａに格納する。これにより、ブラウザ１３の終了時に、データ１３ｂがローカルストレージ１３ａから記憶領域１１ａに移動することになる。記憶領域１１ａは、ブラウザ１３からアクセスされない領域である。制御部１２は、データ１３ｂを暗号化して記憶領域１１ａに格納してもよい。また、制御部１２は、ブラウザ１３が再び起動した後、データ１３ｂを記憶領域１１ａからローカルストレージ１３ａに書き戻してもよい。このとき、制御部１２は、ローカルストレージ管理装置１０に対するユーザ認証が成功した場合のみ、データ１３ｂを書き戻してもよい。
【００２９】
第１の実施の形態のローカルストレージ管理装置１０によれば、リクエスト１４に対応するレスポンス１５に、リクエスト１６を送信するスクリプト１５ａが挿入されてブラウザ１３に送信される。リクエスト１６に応じて、ブラウザ１３の終了時に、ローカルストレージ１３ａに書き込まれたデータ１３ｂを送信しローカルストレージ１３ａからデータ１３ｂを削除するスクリプト１７ａを含むレスポンス１７がブラウザ１３に送信される。
【００３０】
その結果、ブラウザ１３の終了時に、ブラウザ１３が使用するローカルストレージ１３ａからローカルストレージ管理装置１０が管理する記憶領域１１ａに、データ１３ｂが移動する。よって、ブラウザ１３が使用されなくなるか、または、ブラウザ１３の使用頻度が低下しても、ブラウザ１３に対応するローカルストレージ１３ａに古いデータが残らなくなり、ブラウザ１３を通じて古いデータが漏洩するリスクを低減できる。
【００３１】
例えば、ローカルストレージ管理装置１０が、使用されなくなったブラウザ１３と新たなブラウザの両方を管理するとする。この場合、記憶領域１１ａに格納されたデータ１３ｂは、新たなブラウザを用いたユーザ操作を通じて上書き消去される可能性がある。すると、ブラウザ１３が起動した後、記憶領域１１ａに記憶されたデータをローカルストレージ１３ａに書き戻しても、古いデータ１３ｂはブラウザ１３上に再現されない。よって、ブラウザ１３を実行する装置が不正使用されても、古いデータ１３ｂが漏洩するリスクを低減できる。このように、使用するブラウザをユーザが変更しても、複数のブラウザのローカルストレージのデータを一元管理することで、古いデータを残さないようにできる。
【００３２】
また、例えば、記憶領域１１ａに格納したデータ１３ｂを暗号化し、ローカルストレージ管理装置１０に対するユーザ認証が成功した場合のみ、データ１３ｂを復号してローカルストレージ１３ａに書き戻すことも可能である。この場合、盗難などによってブラウザ１３を実行する装置が不正使用されても、データ１３ｂの漏洩を抑制できる。
【００３３】
また、レスポンス１５に基づくＷｅｂページとレスポンス１７に基づくＷｅｂページとが同じＷｅｂサイトに関するものと認識されるように、スクリプト１５ａによってリクエスト１６が生成される。また、レスポンス１７に基づくＷｅｂページは、レスポンス１５に基づくＷｅｂページとは別に表示される。これにより、ブラウザ１３は、セキュリティ上の制限に反することなくリクエスト１６を送信できる。また、スクリプト１７ａは、レスポンス１５に基づくＷｅｂページ上で行われたローカルストレージ１３ａの更新を検出できる。よって、ブラウザ１３を改変しなくても、ローカルストレージ管理装置１０は、ブラウザ１３の既存の仕様や制限のもとでローカルストレージ１３ａを管理できる。
【００３４】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。
第２の実施の形態の情報処理システムは、視覚的なユーザインタフェースであるＷｅｂページをユーザに提供するクライアントサーバ型のＷｅｂシステムである。この情報処理システムは、サーバ装置２１および端末装置１００，１００ａ，１００ｂを有する。サーバ装置２１と端末装置１００，１００ａ，１００ｂとは、ネットワーク２０に接続されている。ネットワーク２０は、例えば、インターネットなどの広域ネットワークである。
【００３５】
サーバ装置２１は、サーバアプリケーションとしてのＷｅｂサーバを実行するサーバコンピュータである。サーバ装置２１は、端末装置１００，１００ａ，１００ｂからＨＴＴＰリクエストを受信すると、ＨＴＴＰリクエストに含まれるＵＲＬに応じたＨＴＭＬファイルを生成し、ＨＴＭＬファイルを含むＨＴＴＰレスポンスを返信する。
【００３６】
ＨＴＭＬファイルは、Ｗ３Ｃ（World Wide Web Consortium）が策定したＨＴＭＬ５の規格に従って記述されている。ＨＴＭＬファイルには、端末装置１００，１００ａ，１００ｂで実行されるスクリプトが含まれていることがある。また、ＨＴＭＬファイルには、スクリプトを記述したスクリプトファイルへのリンクが含まれていることがある。
【００３７】
端末装置１００，１００ａ，１００ｂは、クライアントアプリケーションとしてのブラウザを実行するクライアントコンピュータである。端末装置１００，１００ａ，１００ｂは、ブラウザ上のユーザ操作に応じてＨＴＴＰリクエストをサーバ装置２１に送信し、ＨＴＭＬファイルを含むＨＴＴＰレスポンスを受信する。端末装置１００，１００ａ，１００ｂは、受信したＨＴＭＬファイルに基づいてＷｅｂページを表示する。
【００３８】
ＨＴＭＬファイルまたはＨＴＭＬファイルからリンクされたスクリプトファイルにスクリプトが含まれている場合、端末装置１００，１００ａ，１００ｂは、取得したスクリプトを実行してＷｅｂページの表示を制御する。端末装置１００，１００ａ，１００ｂには、複数のブラウザをインストールすることができる。なお、端末装置１００は、第１の実施の形態のローカルストレージ管理装置１０の一例である。
【００３９】
次に、端末装置１００，１００ａ，１００ｂの構成について説明する。
図３は、端末装置のハードウェア例を示すブロック図である。
端末装置１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６および通信インタフェース１０７を有する。上記のユニットは、それぞれバス１０８に接続されている。
【００４０】
ＣＰＵ１０１は、プログラムの命令を実行する演算回路を含むプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを備えてもよく、端末装置１００は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合（マルチプロセッサ）を「プロセッサ」と呼んでもよい。
【００４１】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、端末装置１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００４２】
ＨＤＤ１０３は、ＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。プログラムには、ローカルストレージ管理プログラムが含まれる。なお、端末装置１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００４３】
画像信号処理部１０４は、ＣＰＵ１０１からの命令に従って、端末装置１００に接続されたディスプレイ１１１に画像を出力する。ディスプレイ１１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ（ＰＤＰ：Plasma Display Panel）、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなどを用いることができる。
【００４４】
入力信号処理部１０５は、端末装置１００に接続された入力デバイス１１２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス１１２としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、端末装置１００に、複数の種類の入力デバイスが接続されていてもよい。
【００４５】
媒体リーダ１０６は、記録媒体１１３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体１１３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。媒体リーダ１０６は、例えば、記録媒体１１３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００４６】
通信インタフェース１０７は、ネットワーク２０に接続され、サーバ装置２１と通信を行う。通信インタフェース１０７は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局またはアクセスポイントと無線リンクで接続される無線通信インタフェースでもよい。
【００４７】
ただし、端末装置１００は、媒体リーダ１０６を備えなくてもよい。また、ディスプレイ１１１や入力デバイス１１２が、端末装置１００の筐体と一体に形成されてもよい。端末装置１００ａ，１００ｂおよびサーバ装置２１も、端末装置１００と同様のハードウェアを用いて実現できる。なお、ＣＰＵ１０１は、第１の実施の形態の制御部１２の一例である。ＨＤＤ１０３は、第１の実施の形態の記憶部１１の一例である。
【００４８】
図４は、端末装置の機能例を示すブロック図である。
端末装置１００は、ブラウザ１２０，１３０、ローカルストレージ１２４，１３４、プロキシサーバ１４０およびデータ記憶部１４４を有する。ローカルストレージ１２４，１３４およびデータ記憶部１４４は、例えば、ＨＤＤ１０３に確保した記憶領域として実現される。ブラウザ１２０，１３０およびプロキシサーバ１４０は、例えば、ＣＰＵ１０１が実行するプログラムのモジュールとして実現される。端末装置１００ａ，１００ｂも、端末装置１００と同様のモジュール構成によって実現できる。
【００４９】
ブラウザ１２０，１３０は、互いに異なる種類のＷｅｂブラウザである。ここで言う「異なる種類のＷｅｂブラウザ」には、ブランド名の異なるＷｅｂブラウザや、同じブランド名の異なるバージョンのＷｅｂブラウザが含まれる。ユーザは、ブラウザ１２０，１３０のうちの何れか一方を主に使用する。例えば、ユーザがブラウザ１２０を主に使用し、その後、端末装置１００にブラウザ１３０をインストールしてブラウザ１３０を主に使用するようになる場合が考えられる。このとき、ユーザは、ブラウザ１２０を端末装置１００からアンインストールせずに残しておくことがある。
【００５０】
ブラウザ１２０は、ＵＩ制御部１２１、スクリプト実行部１２２および通信部１２３を有する。ブラウザ１３０は、ＵＩ制御部１３１、スクリプト実行部１３２および通信部１３３を有する。ＵＩ制御部１３１、スクリプト実行部１３２および通信部１３３の機能は、ブラウザ１２０の同名のモジュールの機能と同様であるため、説明を省略する。
【００５１】
ＵＩ制御部１２１は、視覚的ユーザインタフェースとしてのＷｅｂページを制御する。ＵＩ制御部１２１は、ＨＴＭＬファイルを取得すると、ＨＴＭＬファイルの記載に基づいてＷｅｂページを描画（レンダリング）する。ＵＩ制御部１２１は、複数のウィンドウ（複数のタブであってもよい）を用いて、複数のＷｅｂページを同時にディスプレイ１１１に表示することが可能である。また、ＵＩ制御部１２１は、ユーザ操作を検出する。ユーザ操作には、ＵＲＬの入力、Ｗｅｂページ内のハイパーリンクのクリック、Ｗｅｂページ内の入力欄（フィールド）へのデータ入力などが含まれる。
【００５２】
スクリプト実行部１２２は、取得したＨＴＭＬファイルまたはＨＴＭＬファイルからリンクされたスクリプトファイルにスクリプトが含まれている場合、当該スクリプトを実行する。スクリプトは、例えば、高級言語で記載されたソースコードである。
【００５３】
スクリプトによって実行可能な処理には、ＨＴＴＰリクエストの送信が含まれる。送信したＨＴＴＰリクエストに対応して得られるＷｅｂページを、新たなウィンドウ（新たなタブであってもよい）を起動して表示することも可能である。ただし、セキュリティの観点から、スクリプトによって指定可能なアクセス先は、当該スクリプトとオリジンが同一のものに制限される。「オリジン」は、プロトコルスキームとホスト名とポート番号の組である。ＵＲＬがｈｔｔｐ：／／ｗｗｗ．ａ＊＊．ｃｏｍ／ｉｎｄｅｘ．ｈｔｍｌの場合、プロトコルスキームはｈｔｔｐであり、ホスト名はｗｗｗ．ａ＊＊．ｃｏｍであり、ポート番号は８０である（ポート番号が８０であるときはその記載を省略できる）。
【００５４】
また、スクリプトによって実行可能な処理には、Ｗｅｂソケットを用いた通信が含まれる。Ｗｅｂソケットを使用する場合、まず通信相手とコネクションを確立する。コネクションが確立されると、ブラウザ１２０と通信相手との間で双方向にメッセージを送信することができる。Ｗｅｂソケットを利用することで、ＨＴＴＰ通信とは異なり、サーバ側からブラウザ１２０に対する「プッシュ型通信」を実現することができる。
【００５５】
また、スクリプトによって実行可能な処理には、後述するように、ブラウザ１２０に対応するローカルストレージ１２４へのアクセスが含まれる。スクリプトによって、ローカルストレージ１２４にデータを書き込み、ローカルストレージ１２４からデータを読み出すことができる。ただし、セキュリティの観点から、スクリプトによって読み出すことができるデータは、当該スクリプト自身または当該スクリプトとオリジンが同一の他のスクリプトによって書き込まれたデータに制限される。
【００５６】
通信部１２３は、ＵＩ制御部１２１で検出されたユーザ操作またはスクリプトによる指示に応じて、ＨＴＴＰリクエストを送信する。また、通信部１２３は、送信したＨＴＴＰリクエストに対して、ＨＴＴＰレスポンスを受信する。第２の実施の形態では、通信部１２３は、ＨＴＴＰリクエストをプロキシサーバ１４０に送信するように設定されている。ＨＴＴＰレスポンスは、プロキシサーバ１４０から受信することになる。また、通信部１２３は、スクリプトによる指示に応じて、Ｗｅｂソケットのメッセージを送受信する。
【００５７】
ローカルストレージ１２４は、ブラウザ１２０に対応して設けられた不揮発性の記憶領域である。ローカルストレージ１２４は、オリジン毎に区分して、キーバリュー形式のデータを記憶する。１つのオリジンに対して、例えば、１０ＭＢ程度のデータを記憶することができる。スクリプト実行部１２２は、キーとバリュー（値）を対応付けてローカルストレージ１２４に書き込むことができる。また、スクリプト実行部１２２は、キーを指定してローカルストレージ１２４からバリューを読み出すことができる。ローカルストレージ１２４に記憶された一のオリジンに関するデータは、スクリプト実行部１２２において当該オリジンに属するスクリプトが実行されたときのみ参照できる。
【００５８】
ローカルストレージ１３４は、ブラウザ１３０に対応して設けられた不揮発性の記憶領域である。ローカルストレージ１３４は、ローカルストレージ１２４と同様に、オリジン毎に区分してキーバリュー形式のデータを記憶する。ローカルストレージ１３４に記憶された一のオリジンに関するデータは、スクリプト実行部１３２において当該オリジンに属するスクリプトが実行されたときのみ参照できる。
【００５９】
なお、ローカルストレージ１２４に記憶されたデータは、ブラウザ１２０が終了しても維持される。ローカルストレージ１２４は、ブラウザ１２０が端末装置１００からアンインストールされるまで解放されない。よって、ブラウザ１２０がユーザによって使用されなくなっても、明示的に削除しなければ、ローカルストレージ１２４に古いデータが残ったままになってしまう可能性がある。同様に、ローカルストレージ１３４に記憶されたデータは、ブラウザ１３０が終了しても維持される。ローカルストレージ１３４は、ブラウザ１３０が端末装置１００からアンインストールされるまで解放されない。
【００６０】
プロキシサーバ１４０は、ブラウザ１２０，１３０とサーバ装置２１との間でＨＴＴＰ通信を中継する。プロキシサーバ１４０は、アクセス転送部１４１、制御ページ生成部１４２およびデータ移動部１４３を有する。
【００６１】
アクセス転送部１４１は、ブラウザ１２０，１３０からＨＴＴＰリクエストを受信すると、ＨＴＴＰリクエストの所定の位置に所定の文字列が含まれているか、すなわち、制御用のＨＴＴＰリクエストであるか判断する。所定の位置としては、例えば、ＵＲＬに含まれるパス名、ＵＲＬの末尾に付加されたハッシュ（「＃」以下の文字）やクエリ（「？」以下の文字）、ＨＴＴＰリクエストがＰＯＳＴである場合のボディなどが挙げられる。
【００６２】
制御用のＨＴＴＰリクエストでない場合、アクセス転送部１４１は、サーバ装置２１に当該ＨＴＴＰリクエストを転送する。サーバ装置２１からＨＴＭＬファイルを含むＨＴＴＰレスポンスを受信すると、アクセス転送部１４１は、ＨＴＴＰリクエストを送信したブラウザ（ブラウザ１２０またはブラウザ１３０）にＨＴＴＰレスポンスを転送する。ただし、アクセス転送部１４１は、サーバ装置２１から取得したＨＴＭＬファイルをキャッシュしてもよい。ブラウザ１２０，１３０から指定されたＵＲＬに対応するＨＴＭＬファイルがキャッシュ中である場合、アクセス転送部１４１は、サーバ装置２１にＨＴＴＰリクエストを転送せず、キャッシュされているＨＴＭＬファイルを返信してもよい。
【００６３】
ＨＴＴＰレスポンスを送信するにあたり、アクセス転送部１４１は、ＨＴＴＰリクエストを送信したブラウザにおいて同じオリジンのＷｅｂページを閲覧中であるか、すなわち、あるＷｅｂサイトに対する２回目以降のＨＴＴＰリクエストであるか判断する。２回目以降のＨＴＴＰリクエストであるか否かは、後述するアクセス情報テーブルを参照して判断できる。最初のＨＴＴＰリクエストである場合、アクセス転送部１４１は、取得したＨＴＭＬファイルに所定のスクリプトを挿入する。このスクリプトは、ブラウザ１２０，１３０に、上記の制御用のＨＴＴＰリクエストを送信させるものである。
【００６４】
一方、制御用のＨＴＴＰリクエストである場合、アクセス転送部１４１は、当該ＨＴＴＰリクエストをサーバ装置２１に転送する代わりに制御ページ生成部１４２に転送する。アクセス転送部１４１は、制御ページ生成部１４２からＨＴＭＬファイルを含むＨＴＴＰレスポンスを受信し、ＨＴＴＰリクエストを送信したブラウザに転送する。ただし、アクセス転送部１４１を介さずにＨＴＴＰリクエストが当該ブラウザに返信されてもよい。
【００６５】
制御ページ生成部１４２は、アクセス転送部１４１からＨＴＴＰリクエストを受信すると、制御ページを表示するためのＨＴＭＬファイルを生成し、当該ＨＴＭＬファイルを含むＨＴＴＰレスポンスをアクセス転送部１４１に送信する。このＨＴＭＬファイルは、予め用意しておきＨＤＤ１０３に格納しておいてもよい。制御ページは、ローカルストレージ１２４，１３４とデータ記憶部１４４との間でデータを移動するスクリプトを記載した制御用のＷｅｂページである。制御ページは、データ移動用ページと言うこともできる。
【００６６】
制御ページのＵＲＬには、制御ページを呼び出した元のＷｅｂページと同じオリジンが含まれる。よって、ブラウザ１２０，１３０は、制御ページと元のＷｅｂページとはオリジンが同一であると認識する。ＨＴＭＬ５の仕様によれば、あるＷｅｂページのスクリプトは、オリジンが同一である他のＷｅｂページにおいて発生したローカルストレージの更新を検出することができる。ただし、ＨＴＭＬ５の仕様では、同じＷｅｂページ内で発生したローカルストレージの更新を検出できることは保証されていない。そこで、第２の実施の形態では、元のＷｅｂページとは別に、オリジンが同じ制御ページを用意している。
【００６７】
ブラウザ１２０，１３０において、制御ページは元のＷｅｂページとは別のウィンドウ（別のタブであってもよい）に表示される。制御ページは、ローカルストレージ１２４，１３４を管理するスクリプトを含んでいればよく、表示すべき文字や画像を含まなくてもよい。制御ページを表示するウィンドウは、ユーザから認識されにくいように、元のＷｅｂページと比べて十分に小さいサイズで画面上に配置するようにしてもよい。
【００６８】
データ移動部１４３は、ブラウザ１２０，１３０との間でＷｅｂソケットのコネクションを確立する。コネクションの確立は、制御ページに含まれるスクリプトに従って、ブラウザ１２０，１３０からの要求に応じて実行される。データ移動部１４３は、確立されたコネクションを用いて、ローカルストレージ１２４，１３４に格納されたデータを移動させる。Ｗｅｂソケットによる通信に代えて、ＨＴＴＰ通信を用いることも可能である。
【００６９】
ブラウザ１２０は、制御ページを表示した後にローカルストレージ１２４が更新されると、制御ページに含まれるスクリプトに従って、ローカルストレージ１２４に書き込まれたデータを検出する。また、ブラウザ１２０は、ブラウザ１２０を終了させるユーザ操作が行われると、ブラウザ１２０の終了を示すイベントを検出する。すると、ブラウザ１２０は、制御ページに含まれるスクリプトに従って、制御ページの表示中にローカルストレージ１２４に書き込まれたデータをプロキシサーバ１４０に送信する。そして、ブラウザ１２０は、ローカルストレージ１２４からデータを削除する。
【００７０】
同様に、ブラウザ１３０は、制御ページに含まれるスクリプトに従って、ローカルストレージ１３４に書き込まれたデータを検出する。また、ブラウザ１３０は、ブラウザ１３０の終了を示すイベントを検出すると、制御ページに含まれるスクリプトに従って、ローカルストレージ１３４に書き込まれたデータをプロキシサーバ１４０に送信する。そして、ブラウザ１３０は、ローカルストレージ１３４からデータを削除する。
【００７１】
これにより、データ移動部１４３は、ブラウザ１２０が終了するときにブラウザ１２０から更新データを受信する。また、データ移動部１４３は、ブラウザ１３０が終了するときにブラウザ１３０から更新データを受信する。データ移動部１４３は、更新データとしてのキーバリュー形式のデータを、データ記憶部１４４に格納する。すなわち、ブラウザ１２０が終了するとき、ローカルストレージ１２４に格納されたデータがデータ記憶部１４４に移動することになる。また、ブラウザ１３０が終了するとき、ローカルストレージ１３４に格納されたデータがデータ記憶部１４４に移動することになる。
【００７２】
ブラウザ１２０で次に制御ページが表示されると、ブラウザ１２０は、制御ページに含まれるスクリプトに従って、Ｗｅｂソケットを用いてデータ要求をプロキシサーバ１４０に送信する。データ移動部１４３は、ブラウザ１２０からデータ要求を受信すると、要求元の制御ページと同じオリジンについてのデータをデータ記憶部１４４から読み出し、ブラウザ１２０に送信する。ブラウザ１２０は、データ移動部１４３から受信したデータをローカルストレージ１２４に格納する。すなわち、あるＷｅｂサイトの閲覧がブラウザ１２０で開始されると、当該Ｗｅｂサイトに関するデータがデータ記憶部１４４からローカルストレージ１２４にコピーされることになる。
【００７３】
同様に、ブラウザ１３０で次に制御ページが表示されると、ブラウザ１３０は、制御ページに含まれるスクリプトに従って、データ要求をプロキシサーバ１４０に送信する。データ移動部１４３は、要求元の制御ページと同じオリジンについてのデータをデータ記憶部１４４から読み出し、ブラウザ１３０に送信する。ブラウザ１３０は、データ移動部１４３から受信したデータをローカルストレージ１３４に格納する。
【００７４】
ブラウザ１２０がローカルストレージ１２４に書き込んだデータと、ブラウザ１３０がローカルストレージ１３４に書き込んだデータとは、プロキシサーバ１４０において一元的に管理される。例えば、ブラウザ１２０が、あるキーに対応するバリューをローカルストレージ１２４に書き込んで終了し、その後にブラウザ１３０が、同じキーに対応するバリューをローカルストレージ１３４に書き込んだとする。その場合、ブラウザ１２０が保存した前のバリューは上書きされて、端末装置１００上に残らないことになる。
【００７５】
データ記憶部１４４は、キーバリュー形式のデータを記憶する。データ記憶部１４４は、プロキシサーバ１４０が管理する記憶領域であり、ローカルストレージ１２４，１３４とは別個に設けられる。データ記憶部１４４は、セキュリティの制約上、ブラウザ１２０，１３０からはアクセスできない。ローカルストレージ１２４，１３４からデータ記憶部１４４に移動されたデータは、データ記憶部１４４上で暗号化されている。また、データ記憶部１４４は、後述するアクセス情報テーブルを記憶する。
【００７６】
図５は、ローカルデータテーブルの例を示す図である。
ローカルデータテーブル１４５は、データ記憶部１４４に格納されている。ローカルデータテーブル１４５は、端末装置１００に保持するローカルデータを記憶する。ローカルデータテーブル１４５は、オリジン、キーおよび値の項目を有する。キーは、キーバリュー形式のデータを識別する文字列である。１つのオリジンの中で、キーは重複しない。値は、キーと対応付けられた文字列である。オリジンの項目には、キーと値の組を書き込んだスクリプトのオリジン（プロトコルスキームとホスト名とポート番号）を示す文字列が登録される。１つのオリジンに対して、キーと値の組を複数登録することができる。
【００７７】
ローカルストレージ１２４，１３４も、ローカルデータテーブル１４５と同様のデータ構造によって実現できる。ただし、データ記憶部１４４に格納されたローカルデータテーブル１４５上では、ローカルデータを秘匿するための暗号化が行われている。例えば、キーと値のうち少なくとも値が暗号化される。なお、１つのオリジンに対して、ローカルストレージ１２４，１３４に保存可能なデータの容量が予め設定されている。例えば、オリジン毎のローカルストレージ１２４，１３４の容量が１０ＭＢ程度に設定される。
【００７８】
図６は、アクセス情報テーブルの例を示す図である。
アクセス情報テーブル１４６は、データ記憶部１４４に格納されている。アクセス情報テーブル１４６は、ブラウザおよびオリジンの項目を有する。ブラウザの項目には、ブラウザ１２０，１３０の識別名が登録される。識別名には、ブラウザ１２０，１３０のブランド名やバージョン番号を含めてもよい。例えば、ブラウザ１２０の識別名が「ブラウザＡ」であり、ブラウザ１３０の識別名が「ブラウザＢ」である。オリジンの項目には、ブラウザ１２０，１３０がアクセス中のＷｅｂサイトのオリジンが登録される。
【００７９】
図６に示したアクセス情報テーブル１４６の例は、ブラウザ１２０が、ｈｔｔｐ：／／ｗｗｗ．ａ＊＊．ｃｏｍ／を含むＵＲＬのＷｅｂページとｈｔｔｐ：／／ｈｏｓｔ．ｂ＊＊．ｏｒｇ／を含むＵＲＬのＷｅｂページを表示していることを示している。
【００８０】
あるオリジンを含むＵＲＬを指定したＨＴＴＰリクエストをアクセス転送部１４１が受信すると、アクセス転送部１４１によって当該オリジンがアクセス情報テーブル１４６に登録される。アクセス情報テーブル１４６に登録されたオリジンは、登録から一定時間経過した後、アクセス情報テーブル１４６から削除されてもよい。また、あるブラウザがウィンドウを閉じたことまたは終了したことを検知し、検知したときに当該ブラウザに対応するオリジンをアクセス情報テーブル１４６から削除するようにしてもよい。
【００８１】
次に、ローカルデータを移動する処理の流れを説明する。
図７は、Ｗｅｂアクセスの例を示すシーケンス図である。
端末装置１００の電源がＯＮになった後、プロキシサーバ１４０が自動的に起動する。このとき、プロキシサーバ１４０は、ユーザに対してパスワードの入力を要求する（Ｓ１０）。ユーザから入力されたパスワードが予め登録されたものと一致する場合、ユーザ認証に成功し、プロキシサーバ１４０の全ての機能を利用することができる。プロキシサーバ１４０は、ローカルデータテーブル１４５に格納するデータを暗号化するとき、入力されたパスワードを暗号鍵として用いてもよい。また、プロキシサーバ１４０は、ローカルデータテーブル１４５に格納されたデータを復号するとき、入力されたパスワードを復号鍵として用いてもよい。一方、ユーザ認証に失敗した場合、少なくともデータ移動部１４３の機能の利用が制限される。これにより、端末装置１００が不正使用されても、ローカルデータテーブル１４５に格納されたデータを保護することができる。
【００８２】
ブラウザ１２０は、ユーザ操作によって、ＵＲＬが入力されたことまたはＵＲＬを指定したハイパーリンクがクリックされたことを検出する。すると、ブラウザ１２０は、当該ＵＲＬを含むＨＴＴＰリクエスト（Ｗｅｂページ要求）をプロキシサーバ１４０に送信する（Ｓ１１）。プロキシサーバ１４０は、サーバ装置２１にＷｅｂページ要求を転送する（Ｓ１２）。サーバ装置２１は、指定されたＵＲＬに対応するＷｅｂページのＨＴＭＬファイルを生成し、ＨＴＭＬファイルを含むＨＴＴＰレスポンスをプロキシサーバ１４０に送信する（Ｓ１３）。プロキシサーバ１４０は、ＷｅｂページのＨＴＭＬファイルにスクリプトを付加し、ブラウザ１２０に転送する（Ｓ１４）。
【００８３】
ブラウザ１２０は、ステップＳ１４のＷｅｂページに含まれるスクリプトを実行することで、制御用のＨＴＴＰリクエスト（制御ページ要求）をプロキシサーバ１４０に送信する（Ｓ１５）。制御ページ要求では、ステップＳ１１のＷｅｂページ要求と同じオリジンおよび所定の文字列を含むＵＲＬが指定される。プロキシサーバ１４０は、制御ページ要求に応じて、制御ページのＨＴＭＬファイルを生成し、制御ページのＨＴＭＬファイルを含むＨＴＴＰレスポンスをブラウザ１２０に送信する（Ｓ１６）。なお、制御ページは、ブラウザ１２０においてオリジン毎に１つ表示される。
【００８４】
ブラウザ１２０は、ステップＳ１６の制御ページに含まれるスクリプトを実行することで、プロキシサーバ１４０との間にＷｅｂソケットのコネクションを確立する。そして、ブラウザ１２０は、Ｗｅｂソケットのコネクションを用いて、オリジンを示す文字列を含むデータ要求のメッセージをプロキシサーバ１４０に送信する（Ｓ１７）。
【００８５】
プロキシサーバ１４０は、データ要求が示すオリジンに関するローカルデータを、データ記憶部１４４のローカルデータテーブル１４５から抽出する。このとき、プロキシサーバ１４０は、暗号化されて保存されているローカルデータを復号する。プロキシサーバ１４０は、Ｗｅｂソケットのコネクションを用いて、抽出したローカルデータを含むメッセージをブラウザ１２０に送信する（Ｓ１８）。ブラウザ１２０は、プロキシサーバ１４０から受信したローカルデータをローカルストレージ１２４に格納する（Ｓ１９）。これにより、ブラウザ１２０が前回終了する直前にローカルストレージ１２４に格納されていたローカルデータが、ローカルストレージ１２４に復元される。
【００８６】
ブラウザ１２０は、ステップＳ１６の制御ページに含まれるスクリプトを実行することで、ステップＳ１４のＷｅｂページまたはこれと同一オリジンのＷｅｂページ上でローカルストレージ１２４が更新されたことを検知する（Ｓ２０）。ローカルストレージ１２４を更新するスクリプトは、サーバ装置２１から取得するＨＴＭＬファイルに元々記述されている。ローカルストレージ１２４に書き込まれたキーバリュー形式のローカルデータは、更新データとして、制御ページ上でスクリプトによって保持される。
【００８７】
ブラウザ１２０は、ユーザがブラウザ１２０を終了させる操作（例えば、ブラウザ１２０の全てのウィンドウを閉じる操作など）を行うと、制御ページに含まれるスクリプトに従ってブラウザ終了イベントを検出する（Ｓ２１）。すると、ブラウザ１２０は、Ｗｅｂソケットのコネクションを用いて、制御ページ上に保持されている更新データおよびオリジンを示す文字列を含むメッセージを、プロキシサーバ１４０に送信する（Ｓ２２）。
【００８８】
プロキシサーバ１４０は、ブラウザ１２０から受信した更新データを暗号化し、ブラウザ１２０から通知されたオリジンと対応付けて、データ記憶部１４４のローカルデータテーブル１４５に格納する（Ｓ２３）。このとき、あるキーと第１の値の組がローカルデータテーブル１４５に登録されており、ブラウザ１２０から受信した更新データが当該キーと第２の値の組であった場合、古い第１の値は上書き消去されることになる。ブラウザ１２０は、更新データを送信した後、制御ページに含まれるスクリプトに従って、その制御ページのオリジンに関するローカルデータをローカルストレージ１２４から削除する（Ｓ２４）。ここで削除されるローカルデータには、ステップＳ１８でプロキシサーバ１４０から取得したものと、ステップＳ１９より後に書き込まれたものの両方が含まれる。
【００８９】
なお、ステップＳ１６の制御ページに従って送信される更新データは、その制御ページのオリジンに関してローカルストレージ１２４に書き込まれたローカルデータである。また、ステップＳ１６の制御ページに従ってローカルストレージ１２４から削除されるローカルデータは、その制御ページのオリジンに関するものである。ブラウザ１２０上で複数のＷｅｂサイトが閲覧されていた場合には、Ｗｅｂサイト毎に、当該Ｗｅｂサイトに対応する制御ページによってローカルデータの送信および削除が行われる。
【００９０】
図８は、Ｗｅｂページに付加されるスクリプトの例を示す図である。
ＨＴＭＬファイル３１は、例えば、上記のステップＳ１４においてプロキシサーバ１４０からブラウザ１２０に送信される。ＨＴＭＬファイル３１のスクリプトは、関数ｏｐｅｎＭｏｖｉｎｇＰａｇｅ（）および関数ｓｔｏｒａｇｅＵｐｄａｔｅ（）を含む。
【００９１】
関数ｏｐｅｎＭｏｖｉｎｇＰａｇｅ（）は、プロキシサーバ１４０によってＨＴＭＬファイル３１に挿入されたものである。関数ｏｐｅｎＭｏｖｉｎｇＰａｇｅ（）は、ＨＴＭＬファイル３１に基づくＷｅｂページが表示されるときに自動的に実行される。関数ｏｐｅｎＭｏｖｉｎｇＰａｇｅ（）は、ＨＴＭＬファイル３１のオリジンに所定のパス名（例えば、／Ｍｏｖｉｎｇ／ｍｏｖｉｎｇＰａｇｅ．ｈｔｍｌ）を連結したＵＲＬを生成する。このパス名が示すＨＴＭＬファイルは、サーバ装置２１に実在しないものでもよい。その場合、このＵＲＬは仮想的なＵＲＬであると言うことができる。関数ｏｐｅｎＭｏｖｉｎｇＰａｇｅ（）は、生成したＵＲＬに対応するＷｅｂページを、ＨＴＭＬファイル３１に基づくＷｅｂページとは異なるウィンドウ（異なるタブでもよい）に表示させる。
【００９２】
関数ｓｔｏｒａｇｅＵｐｄａｔｅ（）は、サーバ装置２１から取得したＨＴＭＬファイルに元々記述されていたものである。関数ｓｔｏｒａｇｅＵｐｄａｔｅ（）は、キーと値の組をローカルストレージ１２４に格納する。
【００９３】
図９は、制御ページに含まれるスクリプトの例を示す図である。
ＨＴＭＬファイル３２は、例えば、上記のステップＳ１６においてプロキシサーバ１４０からブラウザ１２０に送信される。ＨＴＭＬファイル３２のスクリプトは、変数ｅｖＤａｔａＳｅｔ、変数ｗｓ、データ要求処理、受信処理、関数ｕｐｄａｔｅＩＳｔｏｒａｇｅ（）、更新イベントリスナ登録処理、および、終了イベントリスナ登録処理を含む。
【００９４】
変数ｅｖＤａｔａＳｅｔは、ローカルストレージ１２４に書き込まれたキーバリュー形式のローカルデータ（更新データ）を一時的に保持する配列型変数である。なお、図９のスクリプト例では、スクリプト変数に更新データを格納することとしたが、スクリプトによってＨＴＭＬテキストを動的に書き換え、ＨＴＭＬテキストとして更新データを保持するようにしてもよい。このとき、ＨＴＭＬファイル３２に基づく制御ページ上に、更新データが表示されないようにしてもよいし、表示されるようにしてもよい。変数ｗｓは、プロキシサーバ１４０との間に確立したＷｅｂソケットのコネクションを示す。制御ページが表示されるときに、Ｗｅｂソケットのコネクションが確立される。
【００９５】
データ要求処理は、制御ページが表示されるとき、プロキシサーバ１４０が管理しているローカルデータをプロキシサーバ１４０に要求する。データ要求処理は、記号「０」とオリジンを示す文字列とを含むメッセージを、Ｗｅｂソケットのコネクションを用いて送信する。記号「０」は、メッセージがデータ要求であることを識別する記号である。受信処理は、データ要求処理の後、Ｗｅｂソケットのメッセージを受信したか判定し、Ｗｅｂソケットのメッセージを受信すると関数ｕｐｄａｔｅＩＳｔｏｒａｇｅ（）を呼び出す。関数ｕｐｄａｔｅＩＳｔｏｒａｇｅ（）は、受信したＷｅｂソケットのメッセージに含まれるキーと値の組を、ローカルストレージ１２４に格納する。
【００９６】
更新イベントリスナ登録処理は、制御ページが表示されるときに実行される。更新イベントリスナ登録処理は、ＨＴＭＬファイル３２と同じオリジンに関するキーと値の組がローカルストレージ１２４に書き込まれたときに、書き込まれたキーと値の組（更新データ）を含む更新イベント情報を取得できるように設定する。更新イベント情報を取得すると、更新イベント情報に含まれる更新データが変数ｅｖＤａｔａＳｅｔに挿入される。
【００９７】
終了イベントリスナ登録処理は、制御ページが表示されるときに実行される。終了イベントリスナ登録処理は、ブラウザ１２０を終了させるユーザ操作が行われたときに、ブラウザ１２０の終了を示す終了イベント情報を取得できるように設定する。終了イベント情報を取得すると、記号「１」とオリジンを示す文字列と変数ｅｖＤａｔａＳｅｔに格納されている更新データとを含むメッセージが、Ｗｅｂソケットのコネクションを用いてプロキシサーバ１４０に送信される。記号「１」は、メッセージが更新データを含むことを識別する記号である。また、終了イベント情報を取得すると、ローカルストレージ１２４に格納されている同一オリジンのローカルデータが削除される。
【００９８】
図１０は、プロキシ転送処理の手順例を示すフローチャートである。
このプロキシ転送処理は、プロキシサーバ１４０によって実行される。ここでは、ブラウザ１２０とプロキシサーバ１４０との間で通信を行う場合を想定する。ブラウザ１３０とプロキシサーバ１４０との間でも同様の通信が行われる。
【００９９】
（Ｓ３０）アクセス転送部１４１は、ＨＴＴＰリクエストを受信する。
（Ｓ３１）アクセス転送部１４１は、ステップＳ３０で受信したＨＴＴＰリクエストが制御ページ要求であるか判断する。制御ページ要求であるか否かは、例えば、ＵＲＬに所定のパス名が含まれているかによって判断できる。また、例えば、ＵＲＬに所定のハッシュまたはクエリが含まれているか、ＨＴＴＰリクエストの種類がＰＯＳＴでありボディに所定の文字列が含まれているかによって判断することもできる。制御ページ要求である場合はステップＳ３７に処理が進み、それ以外の場合はステップＳ３２に処理が進む。
【０１００】
（Ｓ３２）アクセス転送部１４１は、受信したＨＴＴＰリクエストをサーバ装置２１に転送する。アクセス転送部１４１は、転送したＨＴＴＰリクエストに対する応答として、ＨＴＭＬファイルを含むＨＴＴＰレスポンスを受信する。
【０１０１】
（Ｓ３３）アクセス転送部１４１は、ブラウザ１２０が、ステップＳ３２で取得したＨＴＭＬファイルと同じオリジンのＷｅｂサイトにアクセス済みであるか判断する。具体的には、アクセス転送部１４１は、ブラウザ１２０と対応付けて、取得したＨＴＭＬファイルのオリジンがアクセス情報テーブル１４６に登録されているか判断する。登録されている場合はステップＳ３６に処理が進み、登録されていない場合はステップＳ３４に処理が進む。なお、アクセス情報テーブル１４６のオリジンは、一定時間の経過、制御ページのクローズ、ブラウザ１２０の終了などに応じて削除され得る。
【０１０２】
（Ｓ３４）アクセス転送部１４１は、ブラウザ１２０と対応付けて、取得したＨＴＭＬファイルのオリジンをアクセス情報テーブル１４６に登録する。
（Ｓ３５）アクセス転送部１４１は、取得したＨＴＭＬファイルに所定のスクリプトを付加する。付加するスクリプトは、ステップＳ３２で取得したＨＴＭＬファイルと同じオリジンを含むＵＲＬを指定したものであって所定の文字列を含むＨＴＴＰリクエストを生成する処理を示す。付加するスクリプトは、例えば、図８に示したＨＴＭＬファイル３１に含まれる関数ｏｐｅｎＭｏｖｉｎｇＰａｇｅ（）である。
【０１０３】
（Ｓ３６）アクセス転送部１４１は、サーバ装置２１から受信したＨＴＴＰレスポンスをブラウザ１２０に転送する。ただし、上記のステップＳ３５によって、ＨＴＴＰレスポンスに含まれるＨＴＭＬファイルに所定のスクリプトが付加されていることがある。
【０１０４】
（Ｓ３７）アクセス転送部１４１は、ＨＴＴＰリクエストを制御ページ生成部１４２に転送する。制御ページ生成部１４２は、制御ページを示すＨＴＭＬファイルを生成し、生成したＨＴＭＬファイルを含むＨＴＴＰレスポンスをアクセス転送部１４１に送信する。アクセス転送部１４１は、制御ページ生成部１４２から受信したＨＴＴＰレスポンスをブラウザ１２０に転送する。制御ページのＨＴＭＬファイルには、ローカルデータの移動に関する処理を示すスクリプトが含まれている。
【０１０５】
このスクリプトは、制御ページが表示されたときにプロキシサーバ１４０とＷｅｂソケットのコネクションを確立する処理を示す。また、このスクリプトは、制御ページが表示されたときにＷｅｂソケットによってデータ要求をプロキシサーバ１４０に送信し、ローカルデータをプロキシサーバ１４０から受信してローカルストレージ１２４に格納する処理を示す。また、このスクリプトは、制御ページとオリジンが同一である他のＷｅｂページのスクリプトによってローカルストレージ１２４が更新されたことを検出し、更新データを保持する処理を示す。また、このスクリプトは、ブラウザ１２０の終了を検出し、ブラウザ１２０の終了時に更新データをプロキシサーバ１４０に送信すると共に、ローカルストレージ１２４からローカルデータを削除する処理を示す。
【０１０６】
図１１は、プロキシ移動処理の手順例を示すフローチャートである。
このプロキシ移動処理は、プロキシサーバ１４０によって実行される。ここでは、ブラウザ１２０とプロキシサーバ１４０との間で通信を行う場合を想定する。ブラウザ１３０とプロキシサーバ１４０との間でも同様の通信が行われる。
【０１０７】
（Ｓ４０）データ移動部１４３は、Ｗｅｂソケットのメッセージを受信する。
（Ｓ４１）データ移動部１４３は、ステップＳ４０で受信したメッセージが、データ要求であるか判断する。メッセージがデータ要求であることは、例えば、メッセージの先頭に含まれる記号が「０」であることを確認することで判断できる。メッセージがデータ要求である場合、ステップＳ４２に処理が進む。メッセージがデータ要求でない場合、すなわち、メッセージが更新データを含む場合、ステップＳ４４に処理が進む。なお、更新データを含むメッセージの先頭には、例えば、記号「１」が含まれている。
【０１０８】
（Ｓ４２）データ移動部１４３は、ステップＳ４０で受信したメッセージからオリジンを示す文字列を抽出する。データ移動部１４３は、データ記憶部１４４に記憶されたローカルデータテーブル１４５から、メッセージで指定されたオリジンに対応するローカルデータを全て検索する。このとき、データ移動部１４３は、ローカルデータを復号する。復号鍵としては、例えば、ユーザが入力したパスワードを用いることができる。
【０１０９】
（Ｓ４３）データ移動部１４３は、ステップＳ４２で復号したローカルデータを含むメッセージを、Ｗｅｂソケットを用いてブラウザ１２０に送信する。
（Ｓ４４）データ移動部１４３は、ステップＳ４０で受信したメッセージからオリジンを示す文字列と更新データを抽出する。データ移動部１４３は、更新データを暗号化する。暗号鍵としては、例えば、ユーザが入力したパスワードを用いることができる。
【０１１０】
（Ｓ４５）データ移動部１４３は、指定されたオリジンと対応付けて、ステップＳ４４で暗号化した更新データをローカルデータテーブル１４５に格納する。例えば、データ移動部１４３は、メッセージに含まれるキーがローカルデータテーブル１４５に存在しない場合、当該キーと値の組をローカルデータテーブル１４５に追加する。また、データ移動部１４３は、メッセージとローカルデータテーブル１４５の間で、キーが同じで値が異なる場合、ローカルデータテーブル１４５の当該キーに対応する値を上書きする。
【０１１１】
（Ｓ４６）データ移動部１４３は、データ記憶部１４４に記憶されたアクセス情報テーブル１４６から、メッセージで指定されたオリジンの情報を消去する。
図１２は、ブラウザアクセス処理の手順例を示すフローチャートである。
【０１１２】
このブラウザアクセス処理は、ブラウザ１２０によって実行される。ブラウザ１３０でもブラウザ１２０と同様の処理が行われ得る。
（Ｓ５０）通信部１２３は、プロキシサーバ１４０にＨＴＴＰリクエストを送信する。
【０１１３】
（Ｓ５１）通信部１２３は、プロキシサーバ１４０から、ＨＴＭＬファイルを含むＨＴＴＰレスポンスを受信する。ＵＩ制御部１２１は、取得したＨＴＭＬファイルに基づいてレンダリングを行い、あるウィンドウ（タブでもよい）にＷｅｂページを表示する。
【０１１４】
（Ｓ５２）スクリプト実行部１２２は、ステップＳ５１で取得したＨＴＭＬファイルに含まれるスクリプトを実行する。ここでは、スクリプト実行部１２２は、取得したＨＴＭＬファイルと同じオリジンを含むＵＲＬを指定しており所定の文字列を含むＨＴＴＰリクエストを生成する。通信部１２３は、スクリプト実行部１２２が生成したＨＴＴＰリクエストをプロキシサーバ１４０に送信する。このＨＴＴＰリクエストは、制御ページを示すＨＴＭＬファイルを取得するための制御ページ要求に相当する。
【０１１５】
（Ｓ５３）通信部１２３は、ステップＳ５２で送信したＨＴＴＰリクエストの応答として、ＨＴＭＬファイルを含むＨＴＴＰレスポンスをプロキシサーバ１４０から受信する。ＵＩ制御部１２１は、ステップＳ５１のＷｅｂページが表示されたウィンドウとは異なる新たなウィンドウ（新たなタブでもよい）を起動する。そして、ＵＩ制御部１２１は、取得したＨＴＭＬファイルに基づいてレンダリングを行い、新たなウィンドウに制御ページを表示する。ただし、制御ページには文字や画像が含まれない可能性がある。
【０１１６】
（Ｓ５４）スクリプト実行部１２２は、ステップＳ５３で取得したＨＴＭＬファイルに含まれるスクリプトを実行する。ここでは、スクリプト実行部１２２は、プロキシサーバ１４０とＷｅｂソケットのコネクションを確立するよう通信部１２３に指示する。通信部１２３は、指示に応じてＷｅｂソケットのコネクションを確立する。
【０１１７】
（Ｓ５５）スクリプト実行部１２２は、メッセージの種類を示す記号「０」と、ステップＳ５３で取得したＨＴＭＬファイルのオリジンを示す文字列とを含むデータ要求を生成する。通信部１２３は、ステップＳ５４で確立したＷｅｂソケットのコネクションを用いて、データ要求をプロキシサーバ１４０に送信する。
【０１１８】
（Ｓ５６）通信部１２３は、ステップＳ５４で確立したＷｅｂソケットのコネクションを用いて、ローカルデータを含むメッセージをプロキシサーバ１４０から受信する。スクリプト実行部１２２は、Ｗｅｂソケットのメッセージが受信されたことを検出し、メッセージに含まれるローカルデータをローカルストレージ１２４に保存する。
【０１１９】
図１３は、ブラウザ移動処理の手順例を示すフローチャートである。
このブラウザ移動処理は、ブラウザ１２０によって繰り返し実行される。ブラウザ１３０でもブラウザ１２０と同様の処理が行われ得る。
【０１２０】
（Ｓ６０）スクリプト実行部１２２は、前述のステップＳ５３で取得したＨＴＭＬファイルに含まれるスクリプトに従って、ローカルストレージ１２４に関する更新イベント情報を監視する。制御ページとオリジンが同一の他のＷｅｂページによってローカルストレージ１２４が更新された場合に、更新データを含む更新イベント情報が取得される。スクリプト実行部１２２は、ローカルストレージ１２４に関する更新イベント情報を取得したか判断する。ローカルストレージ１２４に関する更新イベント情報を取得した場合はステップＳ６１に処理が進み、取得していない場合はステップＳ６２に処理が進む。
【０１２１】
（Ｓ６１）スクリプト実行部１２２は、更新イベント情報から更新データを抽出する。スクリプト実行部１２２は、抽出した更新データを保持する。
（Ｓ６２）スクリプト実行部１２２は、前述のステップＳ５３で取得したＨＴＭＬファイルに含まれるスクリプトに従って、ブラウザ１２０の終了を示す終了イベント情報を監視する。ウィンドウを閉じるなどのユーザ操作によってブラウザ１２０が終了されるときに、終了イベント情報が取得される。スクリプト実行部１２２は、終了イベント情報を取得したか判断する。終了イベント情報を取得した場合はステップＳ６３に処理が進み、取得していない場合はブラウザ移動処理が終了する。
【０１２２】
（Ｓ６３）スクリプト実行部１２２は、前述のステップＳ５３で表示した制御ページに関して、更新データを保持しているか判断する。更新データを保持している場合はステップＳ６４に処理が進み、保持していない場合はステップＳ６５に処理が進む。
【０１２３】
（Ｓ６４）スクリプト実行部１２２は、メッセージの種類を示す記号「１」と、ステップＳ５３で取得したＨＴＭＬファイルのオリジンを示す文字列と、ステップＳ５３で表示した制御ページに関して保持している更新データとを含むメッセージを生成する。通信部１２３は、前述のステップＳ５４で確立したＷｅｂソケットのコネクションを用いて、生成したメッセージをプロキシサーバ１４０に送信する。
【０１２４】
（Ｓ６５）スクリプト実行部１２２は、前述のステップＳ５３で取得したＨＴＭＬファイルに含まれるスクリプトに従って、ローカルストレージ１２４を空にする。ここでローカルストレージ１２４から削除されるローカルデータは、ステップＳ５３で取得したＨＴＭＬファイルと同一オリジンについてのデータである。
【０１２５】
第２の実施の形態の情報処理システムによれば、ブラウザ１２０の終了時に、ブラウザ１２０が管理するローカルストレージ１２４からプロキシサーバ１４０が管理するデータ記憶部１４４にデータが移動する。また、ブラウザ１２０がＷｅｂサイトにアクセスする際には、当該Ｗｅｂサイトに関するデータがデータ記憶部１４４からローカルストレージ１２４にコピーされる。同様に、ブラウザ１３０の終了時に、ブラウザ１３０が管理するローカルストレージ１３４からデータ記憶部１４４にデータが移動する。また、ブラウザ１３０がＷｅｂサイトにアクセスする際には、当該Ｗｅｂサイトに関するデータがデータ記憶部１４４からローカルストレージ１３４にコピーされる。すなわち、ローカルストレージ１２４，１３４のデータが、プロキシサーバ１４０によって一元管理される。
【０１２６】
これにより、ブラウザ１２０が使用されなくなるか、または、ブラウザ１２０の使用頻度が低下しても、ローカルストレージ１２４に古いデータが残らなくなり、ブラウザ１２０を通じて当該古いデータが漏洩するリスクを低減できる。
【０１２７】
例えば、ユーザがブラウザ１２０を使用してＷｅｂサイトにアクセスし、ブラウザ１２０を終了させた後、ブラウザ１３０を使用して同じＷｅｂサイトにアクセスしたとする。この場合、プロキシサーバ１４０のデータ移動機能を利用しないと、ブラウザ１３０がローカルストレージ１３４を更新しても、ブラウザ１２０に対応するローカルストレージ１２４には古いデータが残ってしまう。これに対し、プロキシサーバ１４０のデータ移動機能を利用することで、ローカルストレージ１２４に古いデータが残らない。その後にユーザがブラウザ１２０を使用して上記Ｗｅｂサイトにアクセスした場合には、ブラウザ１３０によって更新されたデータがローカルストレージ１２４にコピーされることになり、上書き消去された古いデータは端末装置１００上に残らないことになる。
【０１２８】
また、ローカルストレージ１２４，１３４からデータ記憶部１４４に移動したデータは暗号化され、プロキシサーバ１４０に対するユーザ認証が成功した場合のみ、復号されてローカルストレージ１２４，１３４に書き戻される。よって、盗難などによって端末装置１００が不正使用されても、データ記憶部１４４のデータを保護することができる。
【０１２９】
また、元のＷｅｂページから制御ページを呼び出すＨＴＴＰリクエストでは、元のＷｅｂページと同じオリジンを含むＵＲＬを指定する。これにより、ブラウザ１２０，１３０のセキュリティの制限のもとでも、スクリプトによって当該ＨＴＴＰリクエストを送信することが許容される。また、ブラウザ１２０，１３０は、元のＷｅｂページのオリジンと制御ページのオリジンとが同一であると認識する。これにより、ＨＴＭＬ５の仕様のもとで、元のＷｅｂページまたはこれと同一オリジンのＷｅｂページ上でのローカルストレージ１２４，１３４の更新を検出することができる。また、ブラウザ１２０，１３０のセキュリティの制限のもとでも、制御ページのスクリプトによって、元のＷｅｂページと同じオリジンに関するローカルストレージ１２４，１３４のデータを読み書きすることができる。
【０１３０】
このように、ＨＴＭＬ５の仕様やブラウザ１２０，１３０のセキュリティの制限のもとでも、ローカルストレージ１２４，１３４のデータを移動することが可能となる。よって、既存のブラウザ１２０，１３０を改変しなくてもよく、データ移動を容易に実現できる。また、ブラウザ１２０，１３０のセキュリティを維持できる。
【０１３１】
なお、第１の実施の形態の情報処理は、ローカルストレージ管理装置１０にプログラムを実行させることで実現できる。第２の実施の形態の情報処理は、サーバ装置２１や端末装置１００，１００ａ，１００ｂにプログラムを実行させることで実現できる。
【０１３２】
プログラムは、コンピュータ読み取り可能な記録媒体（例えば、記録媒体１１３）に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、ＦＤおよびＨＤＤが含まれる。光ディスクには、ＣＤ、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）、ＤＶＤおよびＤＶＤ−Ｒ／ＲＷが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からＨＤＤなどの他の記録媒体（例えば、ＨＤＤ１０３）にプログラムをコピーして実行してもよい。
【符号の説明】
【０１３３】
２  サーバ
１０  ローカルストレージ管理装置
１１  記憶部
１１ａ  記憶領域
１２  制御部
１３  ブラウザ
１３ａ  ローカルストレージ
１３ｂ  データ
１４，１６  リクエスト
１５，１７  レスポンス
１５ａ，１７ａ  スクリプト
【図１】
0006365259.tif 000002
【図２】
0006365259.tif 000003
【図３】
0006365259.tif 000004
【図４】
0006365259.tif 000005
【図５】
0006365259.tif 000006
【図６】
0006365259.tif 000007
【図７】
0006365259.tif 000008
【図８】
0006365259.tif 000009
【図９】
0006365259.tif 000010
【図１０】
0006365259.tif 000011
【図１１】
0006365259.tif 000012
【図１２】
0006365259.tif 000013
【図１３】
0006365259.tif 000014