(57)【特許請求の範囲】
【請求項１】
クライアントから所定の要求を受信した場合にサーバ側プログラムを実行して当該所定の要求に応じた実行結果を当該クライアントに送信するサーバと、通信可能なプログラム入手・実行クライアントであって、
サーバ用格納手段と、他の格納手段と、を有する仮想マシンを生成する仮想マシン生成手段と、
前記サーバから前記サーバ側プログラムを入手して当該サーバ側プログラムを前記サーバ用格納手段に格納する管理手段と、
前記他の格納手段への書き込みを禁止しながら、前記仮想マシン上で前記サーバ用格納手段内のサーバ側プログラムを実行して、前記所定の要求を受信した場合に当該所定の要求に応じた実行結果を当該所定の要求の送信元に送信する特定手段を、当該仮想マシン上に生成する実行動作手段と、
前記特定手段に前記所定の要求を送信し、当該特定手段から前記所定の要求に応じた実行結果を受信して表示する操作手段と、を含むプログラム入手・実行クライアント。
【請求項２】
前記管理手段と前記実行動作手段とは、前記仮想マシンに含まれる、請求項１に記載のプログラム入手・実行クライアント。
【請求項３】
前記他の格納手段は、前記仮想マシン用のオペレーティングシステムを格納するＯＳ格納手段を含み、
前記仮想マシンは、前記ＯＳ格納手段内のオペレーティングシステムで動作する、請求項１または２に記載のプログラム入手・実行クライアント。
【請求項４】
前記ＯＳ格納手段は、前記サーバに格納されているオペレーティングシステムと同じ種類のオペレーティングシステムを格納する、請求項３に記載のプログラム入手・実行クライアント。
【請求項５】
前記操作手段は、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ブラウザは、クライアント側のWebサーバにアクセスする。これにより、Webアプリケーションがオフラインで実行される。【００１９】
特許文献４に記載のシステムは、Webブラウザを利用した業務システムに関する。このシステムでは、オフライン業務ソフトウェアが、サーバからクライアントにダウンロードされる。オフライン時は、クライアントが、オフライン業務ソフトウェアを利用する。このため、オフラインで業務を実行することが可能となる。【００２０】
非特許文献３に記載のシステムは、Webブラウザのプラグインとして、データベースを用いる。データベース内に、Webアプリケーションの実行に必要な情報が保存される。このシステムでは、Webアプリケーションのプログラムの本体が、JavaScript（登録商標）で記述される。Webアプリケーションのプログラムの本体が、Webブラウザ内で実行される。【００２１】
これにより、クライアントが、ネットワークを介してサーバに接続されていない場合でも、クライアントは、データベース内の情報と、JavaScriptで記述されたプログラムと、を用いて、Webアプリケーションを実行することができる。【００２２】
非特許文献４に記載のシステムは、Webブラウザのプラグインとして、JavaVMを搭載し、Webブラウザ内部で、Java（登録商標）で記述されたプログラムを実行する。【００２３】
非特許文献５および６には、非特許文献４に記載のシステムと同様のシステムが記載されている。非特許文献５に記載の技術は、Flash（登録商標）をプラグインとして用い、言語としてActionScriptを用いる必要がある。非特許文献６に記載の技術は、NET  Frameworkのサブセットをプラグインとして用い、言語としてNET  Frameworkに対応したものを用いる必要がある。【００２４】
非特許文献７に記載のシステムは、ブラウザから透過的にプログラムをダウンロードして実行する。Webブラウザ上のリンクをクリックすることで、必要なプログラムがダウンロードされ実行される。
【先行技術文献】
【特許文献】
【００２５】
【特許文献１】再公表特許ＷＯ２００２／０３３５４３号公報
【特許文献２】特開２００８−１６５３７７号公報
【特許文献３】特開２０００−２７６４１０号公報
【特許文献４】特開２００４−９４６８２号公報
【非特許文献】
【００２６】
【非特許文献１】[平成２０年７月１６日検索］インターネット<URL:http://www.google.com/google-d-s/intl/ja/tour1.html>
【非特許文献２】[平成２０年７月１６日検索］インターネット<URL:  https://mail.google.com/mail/>
【非特許文献３】[平成２０年７月１６日検索］インターネット<URL:  http://gears.google.com/>
【非特許文献４】[平成２０年７月１６日検索］インターネット<URL:  http://java.sun.com/applets/>
【非特許文献５】[平成２０年７月１６日検索］インターネット<URL:  http://www.adobe.com/products/flash/about/>
【非特許文献６】[平成２０年７月１６日検索］インターネット<URL:  http://silverlight.net/>
【非特許文献７】[平成２０年７月１６日検索］インターネット<URL:  http://msdn.microsoft.com/en-us/library/aa751972(VS.85).aspx>
【発明の概要】
【発明が解決しようとする課題】
【００２７】
クライアントが、サーバ側にあるプログラムを受け付けて実行することによって、Webアプリケーションをオフラインで実行する技術、つまり、特許文献３、特許文献４、非特許文献３、非特許文献４、非特許文献５、非特許文献６および非特許文献７のそれぞれに記載の技術には、以下のような問題点があった。【００２８】
クライアントが受け付けたプログラムにコンピュータウィルスが組み込まれていた場合、システムが破壊されてしまうという問題点があった。また、クライアントが受け付けたプログラムに不具合がある場合、このプログラムの不具合が、クライアント内の他のプログラムまたはデータに悪影響を与える可能性があるという問題があった。【００２９】
つまり、クライアントは、サーバから受け付けたプログラムに対するセキュリティが低いという課題があった。【００３０】
特許文献１に記載のシステムでも、例えば、クライアントが受け付けたプログラムにコンピュータウィルスが組み込まれていた場合、システムが破壊されてしまう。つまり、特許文献１に記載のシステムでも、クライアントは、サーバから受け付けたプログラムに対するセキュリティが低いという課題があった。【００３１】
また、特許文献２、非特許文献１および２には、上記課題が生じるための前提となる技術、具体的には、クライアントが、サーバ側にあるプログラムを受け付けて実行することによって、Webアプリケーションをオフラインで実行する技術が記載されていない。【００３２】
このため、特許文献２、非特許文献１および２に記載の技術では、当然のことながら、上記課題、つまり、クライアントは、サーバから受け付けたプログラムに対するセキュリティが低いという課題は解決されていない。【００３３】
本発明の目的は、上述した課題を解決する、プログラム入手・実行クライアント、プログラム入手・実行方法および記録媒体を提供することにある。
【課題を解決するための手段】
【００３４】
本発明のプログラム入手・実行クライアントは、クライアントから所定の要求を受信した場合にサーバ側プログラムを実行して当該所定の要求に応じた実行結果を当該クライアントに送信するサーバと、通信可能なプログラム入手・実行クライアントであって、サーバ用格納手段と、他の格納手段と、を有する仮想マシンを生成する仮想マシン生成手段と、前記サーバから前記サーバ側プログラムを入手して当該サーバ側プログラムを前記サーバ用格納手段に格納する管理手段と、前記他の格納手段への書き込みを禁止しながら、前記仮想マシン上で前記サーバ用格納手段内のサーバ側プログラムを実行して、前記所定の要求を受信した場合に当該所定の要求に応じた実行結果を当該所定の要求の送信元に送信する特定手段を、当該仮想マシン上に生成する実行動作手段と、前記特定手段に前記所定の要求を送信し、当該特定手段から前記所定の要求に応じた実行結果を受信して表示する操作手段と、を含む。【００３５】
本発明のプログラム入手・実行方法は、クライアントから所定の要求を受信した場合にサーバ側プログラムを実行して当該所定の要求に応じた実行結果を当該クライアントに送信するサーバと、通信可能なプログラム入手・実行クライアントが行うプログラム入手・実行方法であって、サーバ用格納手段と、他の格納手段と、を有する仮想マシンを生成し、前記サーバから前記サーバ側プログラムを入手して当該サーバ側プログラムを前記サーバ用格納手段に格納し、前記他の格納手段への書き込みを禁止しながら、前記仮想マシン上で前記サーバ用格納手段内のサーバ側プログラムを実行して、前記所定の要求を受信した場合に当該所定の要求に応じた実行結果を当該所定の要求の送信元に送信する特定手段を、当該仮想マシン上に生成し、前記特定手段に前記所定の要求を送信し、当該特定手段から前記所定の要求に応じた実行結果を受信して表示する。【００３６】
本発明の記録媒体は、クライアントから所定の要求を受信した場合にサーバ側プログラムを実行して当該所定の要求に応じた実行結果を当該クライアントに送信するサーバと通信可能であり、かつ、Webブラウザが搭載されているコンピュータに、サーバ用格納手段と、他の格納手段と、を有する仮想マシンを生成する仮想マシン生成手順と、前記サーバから前記サーバ側プログラムを入手して当該サーバ側プログラムを前記サーバ用格納手段に格納する管理手順と、前記他の格納手段への書き込みを禁止しながら、前記仮想マシン上で前記サーバ用格納手段内のサーバ側プログラムを実行して、前記Webブラウザから前記所定の要求を受信した場合に当該所定の要求に応じた実行結果を当該Webブラウザに送信する特定手段を、当該仮想マシン上に生成する実行動作手順と、を実行させるプロクラムが記録されたコンピュータ読み取り可能な記録媒体である。
【発明の効果】
【００３７】
本発明によれば、クライアントがサーバ側にあるプログラムを受け付けて実行する場合におけるセキュリティを向上させることが可能になる。
【図面の簡単な説明】
【００３８】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】Webアプリケーションをオフラインで利用する際の、Webブラウザの画面遷移を示す図である。
【図３】非ブラウザアプリケーションを利用する際の、Webブラウザと非ブラウザアプリケーションの画面遷移を示す図である。
【図４】ユーザがプログラムを直接管理する際のブラウザの画面を示す図である。
【図５】Webアプリケーションをオフライン化する際の動作を示すシーケンス図である。
【図６】オフライン化したWebアプリケーションを利用する際の動作を示すシーケンス図である。
【図７】非ブラウザアプリケーションを実行する際の動作を示すシーケンス図である。
【図８】オフラインで非ブラウザアプリケーションを実行する際の動作を示すシーケンス図である。
【図９】本発明の第２の実施の形態の構成を示すブロック図である。
【発明を実施するための形態】
【００３９】
次に、発明を実施するための形態について図面を参照して詳細に説明する。
【００４０】
（第１の実施の形態）
図１を参照すると、本発明の第１の実施の形態は、サーバ１００と、クライアント１１０と、を含む。
【００４１】
サーバ１００は、クライアント１１０から所定の要求を受信した場合に、サーバ側プログラムを実行して、その所定の要求に応じた実行結果を、クライアント１１０に送信する。
【００４２】
サーバ１００は、Webサーバ１０１と、プログラム配信部１０２と、を含む。なお、Webサーバ１０１とプログラム配信部１０２は、別々のサーバ上に存在してもよい。
【００４３】
クライアント１１０は、一般的に、プログラム入手・実行クライアントと呼ぶことができる。クライアント１１０は、サーバ１００と通信可能である。
【００４４】
クライアント１１０は、Webブラウザ実行部１１１と、仮想マシン１１２と、仮想マシン生成部１１２ａと、入出力部１２０と、を含む。仮想マシン１１２は、管理モジュール１１３と、プログラム実行部１１４と、を含む。管理モジュール１１３は、プログラム管理部１１５と、要求受付・返答部１１６と、実行管理部１１７と、を含む。プログラム実行部１１４は、格納部１１８と、実行部１１９と、を含む。格納部１１８は、サーバ用格納部１１８ａおよび１１８ｂと、ＯＳ（オペレーティングシステム）格納部１１８ｃと、を含む。実行管理部１１７と実行部１１９とは、実行動作部１２１に含まれる。プログラム管理部１１５と要求受付・返答部１１６は、管理部１２２に含まれる。Webブラウザ実行部１１１と入出力部１２０は、操作部１２３に含まれる。
【００４５】
仮想マシン１１２は、特定の言語のプログラムしか動作しないソフトウェア（例えば、JavaVM）を仮想マシン生成部１１２ａが実行することによって生成されるものではない。仮想マシン１１２は、例えば、仮想マシン内で独立したオペレーティングシステムが動作可能なソフトウェア（例えば、VMWare（ブイエムウェア）（登録商標）やXen（ゼン）（登録商標））を仮想マシン生成部１１２ａが実行することによって生成される。
【００４６】
仮想マシン生成部１１２ａは、一般的に仮想マシン生成手段と呼ぶことができる。仮想マシン生成部１１２ａは、VMWare（ブイエムウェア）やXen（ゼン）のようなソフトウェアを実行することによって、クライアント１１０内に仮想マシン１１２を生成する。
【００４７】
サーバ用格納部１１８ａおよび１１８ｂのそれぞれは、一般的にサーバ用格納手段と呼ぶことができる。なお、サーバ用格納部の数は、２つに限らず、１以上であればよい。
【００４８】
ＯＳ格納部１１８ｃは、一般的にＯＳ格納手段または他の格納手段と呼ぶことができる。ＯＳ格納部１１８ｃは、例えば、サーバ用格納部１１８ａおよび１１８ｂ内のプログラムを実行する際に用いられるオペレーティングシステム、さらに言えば、仮想マシン１１２が使用するオペレーティングシステムを格納する。ＯＳ格納部１１８ｃは、例えば、サーバ１００が有するオペレーティングシステムと同じ種類のオペレーティングシステムを格納する。
【００４９】
要求受付・返答部１１６は、サーバ側プログラム（以下、単に「プログラム」と称する）を入手する旨の入手指示を、Webブラウザ実行部１１１から受け付ける。また、要求受付・返答部１１６は、入手されたプログラムを実行する旨の実行指示を、Webブラウザ実行部１１１から受け付ける。
【００５０】
プログラム管理部１１５は、要求受付・返答部１１６が入手指示を受け付けた場合に、サーバ１００からプログラムを入手して、そのプログラムをサーバ用格納部１１８ａまたは１１８ｂに格納し、かつ、格納部１１８のうちでアクセス可能な領域を、そのプログラムに対応づけて設定する。
【００５１】
管理部１２２は、一般的に管理手段と呼ぶことができる。管理部１２２は、サーバ１００からプログラムを入手して、そのプログラムをサーバ用格納部１１８ａまたは１１８ｂに格納する。
【００５２】
実行動作部１２１は、一般的に実行動作手段と呼ぶことができる。実行動作部１２１は、サーバ用格納部１１８ａまたは１１８ｂ内のプログラムを読み出し、格納部１１８のうち、そのプログラムに対応づけられた領域以外へのアクセスを禁止しながら、仮想マシン１１２上でそのプログラムを実行して、仮想マシン１１２上に、サーバ１００に対応する特定サーバ（例えば、図１に示したWebサーバ）を生成する。
【００５３】
例えば、実行動作部１２１は、サーバ用格納部１１８ａまたは１１８ｂ内のプログラムを読み出し、格納部１１８のうち、そのプログラムを格納している格納部以外の格納部への書き込みを禁止しながら、仮想マシン１１２上でそのプログラムを実行して、仮想マシン１１２上に特定サーバを生成する。
【００５４】
特定サーバは、一般的に特定手段と呼ぶことができる。
【００５５】
特定サーバは、サーバ１００が有する機能のうち、クライアントから所定の要求を受信した場合に、その所定の要求に応じた実行結果を、そのクライアントに送信する機能を有する。
【００５６】
本実施の形態では、実行動作部１２１は、ＯＳ格納部１１８ｃ内のオペレーティングシステムを用いてサーバ用格納部１１８ａまたは１１８ｂ内のプログラムを実行する。
【００５７】
操作部１２３は、一般的に操作手段と呼ぶことができる。操作部１２３は、仮想マシン１１２内の特定サーバに所定の要求を送信し、その特定サーバからその所定の要求に応じた実行結果を受信して表示する。
【００５８】
Webブラウザ実行部１１１は、一般的に操作手段または通信手段と呼ぶことができる。
【００５９】
Webブラウザ実行部１１１は、Webブラウザを用いることによって、仮想マシン１１２内の特定サーバに所定の要求を送信し、その特定サーバから所定の要求に応じた実行結果を受信してその実行結果を表示する。
【００６０】
なお、Webブラウザ実行部１１１は、Webブラウザを用いることによって、サーバ１００に所定の要求を送信し、サーバ１００からその所定の要求に応じた実行結果を受信する。
【００６１】
入出力部１２０は、一般的に操作手段と呼ぶことができる。入出力部１２０は、仮想マシン１１２内の特定サーバに所定の要求を送信し、仮想マシン１１２内の特定サーバから所定の要求に応じた実行結果を受信してその実行結果を表示する。
【００６２】
これらは、つぎのように動作する。
【００６３】
まず、通常の利用形態では、Webブラウザ実行部１１１が、Webサーバ１０１にアクセスすると、Webサーバ１０１上でプログラムすなわちWebアプリケーションが実行され、その実行結果が、Webブラウザ実行部１１１に提供され、その実行結果が表示される。
【００６４】
次に、Webアプリケーションをオフライン化する場合について説明する。
【００６５】
図２は、Webアプリケーションをオフライン化する際のWebブラウザ実行部１１１の画面遷移を説明するための説明図である。
【００６６】
まず、画面２０１は、オンライン時に、Webサーバ１０１によってWebブラウザ実行部１１１に表示される画面である。
【００６７】
Webサーバ１０１は、画面２０１内に、「オフライン化」等の名前でリンクを用意する。ユーザが、Webブラウザ実行部１１１を使って、画面２０１内のリンクをクリックすると、Webブラウザ実行部１１１は、仮想マシン１１２内の管理モジュール１１３内の要求受付・返答部１１６に、オフライン化の要求を行う。このオフライン化の要求は、一般的に入手指示と呼ぶことができる。
【００６８】
ここで、Webブラウザ実行部１１１と要求受付・返答部１１６の通信には、最も簡単にはhttp（HyperText  Transfer  Protocol）が用いられる。
【００６９】
この場合、要求受付・返答部１１６が、httpサーバを動作させ、上記リンクを、そのhttpサーバへのハイパーリンクとする。例えば、仮想マシン１１２のIPアドレスとして192.168.0.10を用いるものとすると、そのhttpサーバへのリンクは、http://192.168.0.10/...となる。
【００７０】
この場合、Webブラウザ実行部１１１が、ユーザの操作に従って、画面２０１内のリンクをクリックすることで、要求受付・返答部１１６に、オフライン化の要求を送ることができる。
【００７１】
さらに、httpが提供する引数の機能を利用することで、付加的に必要な情報が、要求受付・返答部１１６に送られることができる。
【００７２】
本実施の形態では、必要となるプログラムを特定するためのURL（Uniform  Resource  Locator）、および、後で仮想マシン１１２内でプログラムを実行する際に必要となる起動・終了のためのコマンド等が、要求受付・返答部１１６に渡される。
【００７３】
さらに、リンク元のページ（画面２０１）のURLも、Referer（リファラ）の形で要求受付・返答部１１６に渡される。
【００７４】
なお、Webブラウザ実行部１１１と要求受付・返答部１１６との通信は、上記に限らない。
【００７５】
例えば、画面２０１内のリンクのURL  scheme（スキーム）を特殊なプロトコルとし、Webブラウザ実行部１１１が、画面２０１内のリンクをクリックすることで、プロトコルハンドラとなる外部プログラムを起動し（あるいはプラグインの形で実現し）、Webブラウザ実行部１１１が、その外部プログラムを使って、要求受付・返答部１１６と独自のプロトコルで通信してもよい。
【００７６】
また、Webブラウザ実行部１１１と要求受付・返答部１１６との通信は、Webブラウザ実行部１１１が仮想マシン１１２を含む形で実現されてもよい。
【００７７】
ただし、Webブラウザ実行部１１１と要求受付・返答部１１６との通信は、要求受付・返答部１１６で動作するhttpサーバへのリンクとして実現された方が、任意のWebブラウザおよび仮想マシンを改造することなく、本実施の形態を実施できるため、好ましい。
【００７８】
画面２０１内のリンクをクリックすることで、オフライン化の要求が行われると、要求受付・返答部１１６は、プログラム管理部１１５に、オフライン化の要求の引数として渡された、プログラムを特定するためのURLを提供して、そのURLにて特定されるプログラムのダウンロードを依頼する。
【００７９】
プログラム管理部１１５は、ダウンロードの依頼を受け付けると、そのURLを用いて、サーバ１００のプログラム配信部１０２から、ダウンロードを依頼されたプログラムをダウンロードする。
【００８０】
プログラムのダウンロード後、プログラム管理部１１５は、プログラム実行部１１４において、ダウンロードしたプログラムのインストールを行う。
【００８１】
ここで、「インストール」とは、ダウンロードしたプログラムをすぐに実行可能な状態にするための作業であり、その具体的内容は、プログラム実行部１１４の実現方法に依存する。
【００８２】
プログラム実行部１１４の実現方法とその実現方法に応じたインストール方法には、以下のようなものが考えられる。
【００８３】
最も単純には、プログラム管理部１１５が、プログラム実行部１１４内のサーバ用格納部内に、ダウンロードしたプログラム毎に、独立したディレクトリ（サーバ用格納部１１８ａおよび１１８ｂ）を作成し、そのディレクトリ（サーバ用格納部１１８ａおよび１１８ａ）のそれぞれに、別々のプログラムを保存すればよい。
【００８４】
ただし、ダウンロードしたプログラムにコンピュータウィルス等が組み込まれていると、他のプログラムの記憶領域（ディレクトリ）、および、仮想マシン１１２内の他の記憶領域（他のサーバ用格納部およびＯＳ格納部）が破壊される可能性がある。
【００８５】
このため、プログラム管理部１１５は、プログラム毎に、ユーザアカウントを分け、各プログラムが実行された際にアクセスできるディレクトリ（記憶領域、格納部）を制限する必要がある。
【００８６】
すなわち、プログラム管理部１１５は、ダウンロード要求のあったプログラム毎に、ユーザアカウントを新たに生成し、サーバ用格納部内にディレクトリを作成した上で、そのディレクトリへのアクセス許可を、その生成したユーザアカウントに与え、他のディレクトリへのアクセス許可を、その生成したユーザアカウントに与えず、ダウンロードしたプログラムを、そのディレクトリにコピー（保存）する。
【００８７】
あるいは、プログラム実行部１１４の実現方法とその実現方法に応じたインストール方法として、特許文献２に記載のシステムを用いてもよい。
【００８８】
すなわち、プログラム管理部１１５は、特許文献２に記載された、あるプロセスが、あるディレクトリ以下のものしか見ることができない（当該ディレクトリが最上位のディレクトリに見える）ようにする仕組みを利用して、プログラム間の隔離を実現する。
【００８９】
また、プログラム管理部１１５は、UnionFSなどの、ディレクトリを層構造で重ねる手法を用いてもよい。
【００９０】
この場合、プログラム管理部１１５は、新しい版のプログラムをインストールする際は、新しい版と古い版の差分のみをダウンロードし、そのダウンロードされた内容を古い版のディレクトリ上に重ねる。このため、プログラムのダウンロードを効率的に行うことが可能になる。また、プログラム管理部１１５は、プログラムのインストールが指定されると、そのプログラムに依存する他のプログラムを含め、自動的に必要な差分をダウンロードする。
【００９１】
さらに、プログラム実行部１１４として、仮想マシンが利用されてもよい。
【００９２】
この場合、仮想マシン１１２のさらに内側で仮想マシンが実行されることになる。この場合、ダウンロードしたプログラムは、仮想マシンのイメージとなり、プログラムの実行は仮想マシンの起動となる。
【００９３】
インストール終了後、要求受付・返答部１１６は、要求に応じてプログラムを起動・終了できるように、プログラム実行部１１４内のプログラムを設定する。
【００９４】
具体的には、要求受付・返答部１１６は、ある特定のURL（引数付きのものでもよい）に対するアクセスがあった場合に、そのURLに対応するプログラムを起動・終了するように、プログラム実行部１１４内のプログラムを設定する。
【００９５】
なお、Webブラウザ実行部１１１と仮想マシン１１２との通信が、Webブラウザ実行部１１１に対するプラグインで実現されている場合、または、Webブラウザ実行部１１１の内部に仮想マシン１１２を含む形で実現されている場合は、要求受付・返答部１１６は、独自プロトコルを用いることで、要求に応じてプログラムを起動・終了できるように、プログラム実行部１１４内のプログラムを設定する。
【００９６】
一方、プログラムのダウンロード・インストール・起動・終了設定を行っている間、Webブラウザ実行部１１１には、「現在オフライン化を行っています」といった内容の情報（例えば、「ただいまオフライン化中」）が表示される（画面２０２参照）。
【００９７】
Webブラウザ実行部１１１が画面２０２を表示することは、要求受付・返答部１１６が、画面２０２の内容を表示するためにHTMLで記載されたファイルを、Webブラウザ実行部１１１に返すことで実現できる。
【００９８】
そして、ダウンロード・インストールが終了すると、つまり、プログラム実行部１１４内のプログラムのオフライン化が完了すると、Webブラウザ実行部１１１には、「オフライン化が終了しました」といった内容の情報が表示される（画面２０３参照）。
【００９９】
Webブラウザ実行部１１１が画面２０３を表示することは、画面２０２で表示したHTMLのファイルを自動的にリフレッシュするように、要求受付・返答部１１６が、meta（メタ）タグでrefresh指定をすることなどで実現できる。
【０１００】
さらに、画面２０３の表示と同時に、Webブラウザ実行部１１１には、オフライン化したプログラムを起動するためのURLをブックマークすることをユーザに促す画面が表示される（画面２０４参照）。
【０１０１】
Webブラウザ実行部１１１が画面２０４を表示することは、JavaScriptの機能を用いることで実現することが可能である。
【０１０２】
なお、Webブラウザ実行部１１１と仮想マシン１１２との通信が、Webブラウザ実行部１１１に対するプラグインで実現されている場合、または、Webブラウザ実行部１１１の内部に仮想マシン１１２を含む形で実現されている場合は、Webブラウザ実行部１１１が、プログラム実行部１１４内のプログラムの状態に応じて、「現在オフライン化を行っています」、「オフライン化が終了しました」といった内容の情報を表示すればよい。
【０１０３】
また、ブックマークへのURLの追加については、ブックマークを利用せず、自動的にそのURLを表示する専用のメニューを追加して実現することもできる。
【０１０４】
「オフライン化が終了しました」といった内容の情報を表示する際には、Webブラウザ実行部１１１は、必要に応じて、元のURL（画面２０１に対応するURL）に戻るリンクを付加しておく。これは、Refererとして与えられたURLを利用することによって実現できる。
【０１０５】
次に、オフライン化したWebアプリケーションを利用する場合について説明する。
【０１０６】
まず、ユーザが、画面２０４を用いてブックマークしたURLに、Webブラウザ実行部１１１を使ってアクセスする。
【０１０７】
そのURLへのアクセスが実行されると、要求受付・返答部１１６は、そのURLにて特定されるプログラムを実行する旨の実行指示を受け付ける。要求受付・返答部１１６は、その実行指示を受け付けると、実行管理部１１７に、そのURLに対応するプログラムの起動を依頼する。
【０１０８】
実行管理部１１７は、起動の依頼を受け付けると、実行部１１９に、起動を依頼されたプログラムの実行を開始する指示を与える。
【０１０９】
実行を開始するための具体的な処理は、プログラム実行部１１４の実現方法に依存する。
【０１１０】
プログラム実行部１１４が、プログラム毎に、ディレクトリおよびアカウントを分けることで実現されている場合は、実行管理部１１７は、起動を依頼されたプログラムに対応するディレクトリおよびアカウントを用いて、起動を依頼されたプログラムを、実行部１１９に起動させればよい。
【０１１１】
この場合、実行部１１９は、仮想サーバ用格納部１１８ａまたは１１８ｂ内のプログラムを、少なくとも、格納部１１８のうちでそのプログラムに対応づけられている領域以外へのアクセスを禁止しながら実行する。
【０１１２】
プログラム実行部１１４が、特許文献２に記載のシステムを用いる場合は、実行管理部１１７は、そのシステムに起動を依頼することで、起動を依頼されたプログラムを起動できる。
【０１１３】
この場合も、少なくとも、格納部１１８のうちで、そのプログラムに対応づけられている領域以外へのアクセスが禁止されながら、そのプログラムが実行される。
【０１１４】
プログラム実行部１１４が仮想マシンで実現される場合は、実行管理部１１７は、プログラム実行部１１４として設定されている仮想マシンの起動を行う。
【０１１５】
この場合も、少なくとも、格納部１１８のうちで、そのプログラムに対応づけられている領域以外へのアクセスが禁止されながら、そのプログラムが実行される。
【０１１６】
実行管理部１１７は、現在実行中のプログラムを示す情報を記憶しておき、後でそのプログラムを終了する際等に備える。
【０１１７】
また、実行管理部１１７は、起動処理が完了し、プログラムが利用可能になった時点で、その旨を要求受付・返答部１１６に伝える。
【０１１８】
ここでは、起動したプログラムをプログラムＡとする。
【０１１９】
プログラムＡは、Webアプリケーションのサーバ１００側のプログラムである。プログラムＡは、起動されると、サーバ１００に対応するWebサーバ（特定サーバ）として動作する。
【０１２０】
ここで、プログラムＡにて実現されるWebサーバが利用する、TCP（Transmission  Control  Protocol）プロトコルにおけるポート番号と、要求受付・返答部１１６が利用するポート番号、および、他のプログラムが利用するポート番号は、互いに異なるようにする必要がある。
【０１２１】
利用するポート番号は、一般には、プログラム、または、その設定ファイルに埋め込まれるため、なんらかのルールにより、あらかじめ重ならないように決められているものと仮定する。
【０１２２】
同時に、プログラムが起動を開始し、利用可能になるまでの間、Webブラウザ実行部１１１では、「現在プログラムを起動しています」といった内容の情報が表示される（画面２０５参照）。
【０１２３】
Webブラウザ実行部１１１が画面２０５を表示することは、要求受付・返答部１１６が、その内容を表示するための、HTMLで記載されたファイルを、Webブラウザ実行部１１１に返すことで実現できる。
【０１２４】
そして、起動処理が終了し、プログラムが利用可能になったことが、実行管理部１１７から伝えられると、要求受付・返答部１１６は、Webブラウザ実行部１１１が表示している画面を、プログラムＡが提供するWebサーバのURLにて特定される画面に、リダイレクトする旨の返答を、Webブラウザ実行部１１１に返す。
【０１２５】
要求受付・返答部１１６がWebブラウザ実行部１１１にリダイレクトする旨の返答を提供することは、画面２０２から画面２０３への遷移と同様、要求受付・返答部１１６が、metaタグでrefresh指定をすることなどで実現できる。
【０１２６】
なお、Webブラウザ実行部１１１と仮想マシン１１２との通信が、Webブラウザ実行部１１１に対するプラグインで実現されている場合、または、Webブラウザ実行部１１１の内部に仮想マシン１１２を含む形で実現されている場合は、Webブラウザ実行部１１１が、起動を依頼されたプログラムの状態に応じて、上記のような画面遷移を行えばよい。
【０１２７】
これにより、Webブラウザ実行部１１１は、画面２０６を表示する。
【０１２８】
画面２０６は、仮想マシン１１２内で動作するプログラムＡがWebサーバとして動作することによって表示される。以上により、オフラインでのWebアプリケーションの実行が可能となる。
【０１２９】
Webアプリケーションの種類によっては、Webサーバ１０１が持つ情報と、仮想マシン１１２内で動作するプログラムＡが持つ情報とを、同期させる必要がある。
【０１３０】
その場合は、情報を同期のための機能を、プログラムＡが持ち、プログラムＡを実行する実行部１１９が、ネットワーク接続が可能な際にWebサーバ１０１と通信し、情報の同期を行う。あるいは、特許文献２に記載の方法が用いられてもよい。
【０１３１】
特許文献２に記載の技術では、層構造を持ったディレクトリが利用され、ある時点以降に変更があったファイルだけが別の層に置かれる。そして、同期時には、サーバとクライアントのうち、新しい版のプログラムを有している方から、古い版のプログラムを有している方に、変更があったファイルを送ることで、データの同期が行われる。
【０１３２】
オフラインでのWebアプリケーションの利用が終了すると（画面２０７参照）、ローカルで動作していたWebサーバ（プログラムＡ）を停止させる必要がある。
【０１３３】
このために、画面２０７に「ローカルサーバを停止します」といった内容のリンクが付加される。
【０１３４】
ユーザが、Webブラウザ実行部１１１を用いて、画面２０７内のリンクをクリックすると、要求受付・返答部１１６に、そのWebサーバを実現しているプログラムＡの停止が要求される。
【０１３５】
この処理を実現するために、このリンクを、要求受付・返答部１１６で動作しているhttpサーバへのリンクとする。
【０１３６】
要求受付・返答部１１６は、このリンクへのアクセスがあった際、要求元のWebページのRefererを参照する。
【０１３７】
Referer内にはWebサーバのポートが記述されているため、要求受付・返答部１１６は、このポートを参照することで、どのプログラムからの停止要求かを判定することができる。
【０１３８】
要求受付・返答部１１６は、停止の要求を受け付けると、実行管理部１１７に、要求のあったプログラムの停止を依頼する。実行管理部１１７は、その依頼に基づいて、要求のあったプログラムを実行部１１９が実行することを停止する。
【０１３９】
なお、Webブラウザ実行部１１１と仮想マシン１１２との通信が、Webブラウザ実行部１１１に対するプラグインで実現されている場合、または、Webブラウザ実行部１１１の内部に仮想マシン１１２を含む形で実現されている場合は、直接、どのプログラムからの停止要求かを知ることができる。
【０１４０】
以上では、すでにオフライン化済みのプログラムを更新する方法については触れなかったが、オフライン化済みのプログラムの更新を行うには、以下の方法が考えられる。
【０１４１】
まず、第１の方法は、画面２０１で、オフライン化のリンク（あるいは同様の別の名前のリンク）がクリックされた際に、プログラム管理部１１５が、プログラム配信部１０２に対し、現在のプログラムの版を尋ね、現在のプログラムの版が既にダウンロード・インストール済みのプログラムの版よりも新しければ、現在の版のプログラムをダウンロード・インストールする。これにより、プログラムの更新が行われる。
【０１４２】
また、別の方法は、画面２０５で、オフラインでプログラムを実行しようとした際、もし、ネットワーク接続が可能であれば、実行管理部１１７がプログラムの実行を開始する前に、プログラム管理部１１５が、プログラム配信部１０２に対し、現在のプログラムの版を尋ね、その版が既にダウンロード・インストール済みのプログラムの版よりも新しければ、現在の版のプログラムをダウンロード・インストールする。これにより、プログラムの更新が行われ、更新されたプログラムが実行される。
【０１４３】
さらに別の方法として、プログラムの更新機能を、プログラム内部に作りこむことも考えられる。
【０１４４】
この場合、オフラインで実行中のプログラムが、もしネットワーク接続が可能であれば、自身で新しい版の存在を確認し、自らを更新する。
【０１４５】
次に、Webブラウザ実行部１１１のユーザインタフェースの制限をなくす場合について説明する。以降、このアプリケーション（プログラム）を「非ブラウザアプリケーション」と呼ぶ。なお、図１では、非ブラウザアプリケーションは、プログラムＢとして表されている。
【０１４６】
この場合の動作も、プログラムＡをオフライン化する場合に類似している。
【０１４７】
図３は、非ブラウザアプリケーションをオフライン化する際のWebブラウザ実行部１１１の画面遷移を説明するための説明図である。
【０１４８】
まず、画面３０１は、オンライン時に、Webサーバ１０１によってWebブラウザ実行部１１１に表示されるWebページの画面である。
【０１４９】
Webサーバ１０１は、画面３０１内に、非ブラウザアプリケーションのそれぞれに対応する複数のリンクを用意する。ユーザが、Webブラウザ実行部１１１を使って、画面３０１内のいずれかのリンクをクリックすると、図２の画面２０１においてリンクがクリックされた場合と同様、Webブラウザ実行部１１１は、要求受付・返答部１１６に、要求を送る。なお、この要求は、入手指示と実行指示とを兼ねる。
【０１５０】
要求受付・返答部１１６は、この要求を受け取ると、クリックされたリンクに対応するプログラムのダウンロードとインストールを、プログラム管理部１１５に実行させる。ダウンロード・インストールの手順は、プログラムＡをオフライン化する際と同様である。
【０１５１】
ダウンロード・インストール中は、Webブラウザ実行部１１１に「お待ち下さい」のような画面（画面３０２参照）が表示される。この手順も、プログラムＡをオフライン化する際と同様である。
【０１５２】
ダウンロード・インストールが終了すると、要求受付・返答部１１６は、実行管理部１１７に対し、そのプログラムの実行を要求する。
【０１５３】
実行管理部１１７は、その要求を受け付けると、実行部１１９に、そのプログラムの実行を開始させ、仮想マシン１１２上に特定サーバを生成する。このとき、入出力部１２０は、画面３０５を表示する。
【０１５４】
入出力部１２０は、画面３０５を表示している間に、ユーザからの所定の要求（例えば、計算の依頼要求など）を受け付けると、その要求を、実行部１１９、すなわち、仮想マシン１１２上の特定サーバに送信し、その後、特定サーバから、その要求に応じた実行結果を受信し表示する。
【０１５５】
ここで、プログラムＢ（非ブラウザアプリケーション）を実行している実行部１１９、つまり、仮想マシン１１２上の特定サーバが、入出力部１２０に、画面３０５を表示させる方法はいくつか考えられる。
【０１５６】
第１の方法は、クライアント１１０内の入出力部１２０で、X  Window  Systemのサーバ（Xサーバ）が動作し、Xサーバが仮想マシン１１２内で動作するプログラムＢとXプロトコルで通信することにより、入出力部１２０に、画面３０５を表示する方法である。
【０１５７】
同様の手法として、VNC（Virtual  Network  Computing）（登録商標）やMicrosoft（登録商標）  Windows（登録商標）のRemote  Desktop  Protocolなど、他の画面制御プロトコルを利用する方法も考えられる。
【０１５８】
この場合、Xサーバ、あるいは、他のプロトコルでXサーバに相当するもの（入出力部１２０）が、Webブラウザ実行部１１１に組み込まれてもよい。この場合、起動するプログラムの画面をWebブラウザ実行部１１１のウインドウ内で表示することができる。
【０１５９】
また、別の方法としては、仮想マシン１１２自身が提供する画面内に、画面３０５を表示する方法も考えられる。
【０１６０】
ここで、仮想マシン１１２自身が提供する画面とは、仮想マシン１１２が、グラフィック関係のハードウェアを仮想化して有することで表示される表示である。この場合も、画面をWebブラウザ実行部１１１のウインドウ内で表示することも考えられる。
【０１６１】
このように、Webブラウザ実行部１１１を介さず、プログラムＢが直接画面描画を行えるようにできるため、Webブラウザ実行部１１１のユーザインタフェースの制限をなくすことができる。
【０１６２】
プログラムＢの起動が開始すると、Webブラウザ実行部１１１の画面は、画面３０２から画面３０３に遷移する。この実現方法は、プログラムＡをオフライン化する際の画面２０２から画面２０３への遷移と同様である。
【０１６３】
さらに、プログラムＡをオフライン化する際と同様、プログラムＢの起動を行うためのURLをブックマークすることをユーザに促す画面が、Webブラウザ実行部１１１に表示される（画面３０４参照）。
【０１６４】
プログラムＢの終了は、プログラムＢ自身が提供する画面（画面３０５）、例えば、入出力部１２０が表示する画面を用いて行われる。
【０１６５】
プログラムＢが終了すると、終了を示す通知が、プログラム実行部１１４（具体的には、実行部１１９）から実行管理部１１７に送られる。この通知により、実行管理部１１７は、プログラムＢの実行状態を把握できる。
【０１６６】
実行管理部１１７が、プログラムの終了を検知する方法は、実行管理部１１７の実装に依存するが、最も簡単には、定期的に、実行中のプログラムのプロセスの状態を監視すればよい。
【０１６７】
次に、非ブラウザアプリケーションをオフラインで利用する場合について説明する。
【０１６８】
これも、オフライン化したプログラムＡを利用する場合と同様、ユーザが、Webブラウザ実行部１１１を使って、画面３０４でブックマークしたURLにアクセスする。
【０１６９】
この操作により、要求受付・返答部１１６は、実行管理部１１７に、登録されたプログラムＢの起動を依頼する。
【０１７０】
実行管理部１１７は、プログラムＢの実行を開始する。
【０１７１】
Webブラウザ実行部１１１は、プログラムＢが起動するまでは、画面３０６のように、「ただいま起動中です」というような画面を表示し、起動が完了した時点で、表示画面を、画面３０７のような「プログラムを起動しました」というような画面に遷移する。
【０１７２】
以上の動作は、オフライン化したプログラムＡを利用する場合と同様である。
【０１７３】
プログラムＢが実行部１１９で起動され、仮想マシン１１２上で特定サーバが起動すると、入出力部１２０は、画面３０８を表示する。この場合も、プログラムＢの実行が終了すると、終了を示す通知が、実行部１１９（仮想マシン１１２上の特定サーバ）から実行管理部１１７に送られる。
【０１７４】
さらに、ダウンロード・インストールしたプログラムＢの更新についても、オフライン化したプログラムＡの場合と同様である。
【０１７５】
また、仮想マシン１１２上で実行しているプログラムに、何らかのトラブルが起こったときのため、ユーザが、プログラムの停止・再起動・起動や、更新および削除、さらに仮想マシン１１２の再起動を直接行うためのインタフェースを用意することも考えられる。
【０１７６】
この場合、Webブラウザ実行部１１１が、ユーザからの指示に従って、要求受付・返答部１１６のhttpサーバ上の管理用の特定のURLにアクセスする。
【０１７７】
図４は、要求受付・返答部１１６のhttpサーバ上の管理用の特定のURLにアクセスされた際に表示される画面例を示した説明図である。
【０１７８】
なお、Webブラウザ実行部１１１と仮想マシン１１２との通信が、Webブラウザ実行部１１１に対するプラグインで実現されている場合、または、Webブラウザ実行部１１１の内部に仮想マシン１１２を含む形で実現されている場合は、Webブラウザ実行部１１１自身に組込みの特定のメニューから、図４に示した画面が表示される。
【０１７９】
図４に示した画面を通じて、ユーザは、プログラムの状態の確認や、停止・再起動・起動や更新および削除、さらに仮想マシンの再起動を直接行う。
【０１８０】
プログラムの停止・再起動・起動が要求された場合は、要求受付・返答部１１６は、実行管理部１１７に、その要求を行う。
【０１８１】
プログラムの更新および削除が要求された場合は、要求受付・返答部１１６は、プログラム管理部１１５に、その要求を行う。
【０１８２】
仮想マシン１１２の再起動が要求された場合は、要求受付・返答部１１６は、仮想マシン１１２の再起動を行うコマンドを実行することで、再起動を行う。
【０１８３】
次に、動作の概要を説明する。
【０１８４】
Webブラウザ実行部１１１が、Webサーバ１０１が提供するWebページを表示し、そのページ上のリンクをクリックすることで、仮想マシン１１２上で動作する管理モジュール１１３に、プログラムを入手する旨の要求が送られる。
【０１８５】
管理モジュール１１３は、プログラムを入手する旨の要求を受けると、プログラム配信部１０２から、プログラムをダウンロードし、仮想マシン１１２内にインストールする。
【０１８６】
そして、Webブラウザ実行部１１１が、管理モジュール１１３に、プログラムを実行する旨の要求を送ると、仮想マシン１１２内で、ダウンロードしたプログラムが実行される。
【０１８７】
ダウンロードするプログラムとして、サーバ１００で動作するWebサーバプログラムと同じ機能を提供するプログラムを用いることで、Webアプリケーションをオフラインで実行することができる。
【０１８８】
また、ダウンロードするプログラムとして、Webブラウザ実行部１１１を介さずにユーザと直接対話する処理を実行させるプログラムを用いることで、Webブラウザのユーザインタフェースの制限を無くすことができる。
【０１８９】
次に、図５から図８のシーケンス図を参照して本実施の形態の全体の動作について説明する。
【０１９０】
図５は、Webアプリケーションをオフライン化する際の動作を示したシーケンス図である。以下、Webアプリケーションをオフライン化する際の動作を、図５を用いて説明する。
【０１９１】
まず、ステップ５０１では、通常のWebアプリケーションと同様、Webブラウザ実行部１１１は、Webサーバ１０１にアクセスすることで、Webアプリケーションを利用する。
【０１９２】
次に、図２の画面２０１内の「オフライン化」等の名前のリンクをクリックすることで、Webブラウザ実行部１１１は、要求受付・返答部１１６に対し、オフライン化を要求する（ステップ５０２）。
【０１９３】
要求受付・返答部１１６は、オフライン化の要求を受け付けると、「現在オフライン化を行っています」といった内容の返答を、Webブラウザ実行部１１１に対して返す（ステップ５０３）。
【０１９４】
続いて、要求受付・返答部１１６は、プログラム管理部１１５に対して、オフライン化が要求されたプログラムのダウンロード・インストールの要求を行う（ステップ５０４）。
【０１９５】
プログラム管理部１１５は、ダウンロード・インストールの要求を受け付けると、サーバ１００のプログラム配信部１０２に対して、ダウンロード要求を行い、オフライン化が要求されたプログラムのダウンロードを行う（ステップ５０５）。
【０１９６】
続いて、プログラム管理部１１５は、ダウンロードしたプログラムを、プログラム実行部１１４にインストールし（ステップ５０６）、終了通知を、要求受付・返答部１１６に送る（ステップ５０７）。
【０１９７】
要求受付・返答部１１６は、終了通知を受け取ると、まず、ダウンロードしたプログラムを起動・終了するためのインタフェース（URLなど）を設定する（ステップ５０８）。
【０１９８】
次に、要求受付・返答部１１６は、Webブラウザ実行部１１１に対して「オフライン化が終了しました」といった内容の返答を返す。同時に、要求受付・返答部１１６は、Webブラウザ実行部１１１から直接ステップ５０８で設定したインタフェースにアクセスして、プログラムを起動できるように、URLをブックマークするなどの設定を行う（ステップ５０９）。
【０１９９】
図６は、オフライン化したWebアプリケーションを利用する際の動作を示したシーケンス図である。以下、オフライン化したWebアプリケーションを利用する際の動作を、図６を用いて説明する。
【０２００】
まず、ステップ６０１で、ブックマークからURLがアクセスされる等、先に設定したインタフェースから、プログラムの起動要求が行われる。
【０２０１】
プログラムの起動要求が行われると、要求受付・返答部１１６に対し、実行要求が行われる（ステップ６０２）。
【０２０２】
要求受付・返答部１１６は、Webブラウザ実行部１１１に対し、「現在起動中です」といった内容の返答を返す（ステップ６０３）。
【０２０３】
続いて、要求受付・返答部１１６は、実行管理部１１７に対し、アクセスされたURLに対応するプログラムの実行を要求する（ステップ６０４）。
【０２０４】
実行管理部１１７は、プログラムの実行の要求を受け付けると、プログラム実行部１１４において、そのプログラムを実行する（ステップ６０５）。
【０２０５】
プログラムの実行が開始すると、実行管理部１１７は、起動が終了したという通知を、要求受付・返答部１１６に返す（ステップ６０６）。
【０２０６】
要求受付・返答部１１６は、起動が終了したという通知を受け付けると、Webブラウザ実行部１１１に、起動が終了したという返答を返す（ステップ６０７）。
【０２０７】
Webブラウザ実行部１１１は、その返答を受け、実行が開始されたプログラムにて提供されるWebサーバにアクセスし（ステップ６０８）、Webアプリケーションのオフラインでの利用を開始する（ステップ６０９）。
【０２０８】
例えば、Webアプリケーション中の「ローカルサーバを停止します」といった内容のリンクがクリックされるなどして、Webアプリケーションのオフラインでの利用が終了すると、要求受付・返答部１１６に、プログラムの終了要求が送られる（ステップ６１０）。
【０２０９】
要求受付・返答部１１６は、プログラムの終了要求を受け付けると、実行管理部１１７に停止要求を行う（ステップ６１１）。
【０２１０】
実行管理部１１７は、停止要求を受け付けると、プログラム実行部１１４において、終了が要求されたプログラムを停止する（ステップ６１２）。
【０２１１】
図７は、非ブラウザアプリケーションを実行する際の動作を示したシーケンス図である。以下、非ブラウザアプリケーションを実行する際の動作を、図７を用いて説明する。
【０２１２】
ステップ７０１では、Webブラウザ実行部１１１は、Webサーバ１０１にアクセスすることで、非ブラウザアプリケーションを実行するためのリンクを表示する。
【０２１３】
そのリンクがクリックされることで、Webブラウザ実行部１１１は、要求受付・返答部１１６に対して、そのリンクに対応するプログラム（以下「対応プログラム」と称する）のダウンロード・インストール、さらに、その実行を要求する（ステップ７０２）。
【０２１４】
要求受付・返答部１１６は、それらの要求を受け付けると、「処理中です。お待ち下さい」といった内容の返答を、Webブラウザ実行部１１１に返す（ステップ７０３）。
【０２１５】
続いて、要求受付・返答部１１６は、プログラム管理部１１５に対し、対応プログラムのダウンロード・インストールの要求を行う（ステップ７０４）。
【０２１６】
プログラム管理部１１５は、その要求を受け付けると、サーバ１００のプログラム配信部１０２に対して、ダウンロード要求を行い、対応プログラムのダウンロードを行う（ステップ７０５）。
【０２１７】
続いて、プログラム管理部１１５は、ダウンロードした対応プログラムをインストールし（ステップ７０６）、終了通知を、要求受付・返答部１１６に送る（ステップ７０７）。
【０２１８】
次に、要求受付・返答部１１６は、終了通知を受け付けると、実行管理部１１７に対し、対応プログラムの実行要求を行う（ステップ７０８）。
【０２１９】
実行管理部１１７は、対応プログラムの実行要求を受け付けると、プログラム実行部１１４において、対応プログラムを実行する（ステップ７０９）。
【０２２０】
実行が開始されると、対応プログラムを実行するプログラム実行部１１４は、対応プログラム自身が管理する画面を表示する（ステップ７１０）。
【０２２１】
続いて、実行管理部１１７は、起動が終了したという通知を、要求受付・返答部１１６に返す（ステップ７１１）。
【０２２２】
要求受付・返答部１１６は、起動が終了したという通知を受け取ると、まず、ダウンロードしたプログラムを起動・終了するためのインタフェース（URLなど）を設定する（ステップ７１２）。
【０２２３】
次に、要求受付・返答部１１６は、Webブラウザ実行部１１１に対して「プログラムを起動しました」といった内容の返答を返す。同時に、要求受付・返答部１１６は、Webブラウザ実行部１１１がステップ７１２で設定されたインタフェースに直接アクセスしてプログラムを起動できるように、URLをブックマークするなどの設定を行う（ステップ７１３）。
【０２２４】
プログラムの利用が終了し、ユーザが終了処理を行うと（ステップ７１４）、プログラム実行部１１４が、それを検知し、プログラムの終了を、実行管理部１１７に通知する（ステップ７１５）。
【０２２５】
図８は、オフラインで非ブラウザアプリケーションを実行する際の動作を説明するためのシーケンス図である。以下、オフラインで非ブラウザアプリケーションを実行する際の動作を、図８を用いて説明する。
【０２２６】
まず、ステップ８０１で、ブックマークからURLをアクセスする等、先に設定したインタフェースから、プログラムの起動要求が生成される。
【０２２７】
プログラムの起動要求が生成されると、要求受付・返答部１１６に対し、実行要求が送信される（ステップ８０２）。
【０２２８】
要求受付・返答部１１６は、実行要求を受け付けると、Webブラウザ実行部１１１に対し、「現在起動中です」といった内容の返答を返す（ステップ８０３）。
【０２２９】
続いて、要求受付・返答部１１６は、実行管理部１１７に対し、起動が要求されたプログラム（以下「要求プログラム」と称する）の実行を要求する（ステップ８０４）。
【０２３０】
実行管理部１１７は、その要求に応じて、プログラム実行部１１４において、要求プログラムを実行する（ステップ８０５）。
【０２３１】
要求プログラムの実行が開始されると、要求プログラムは、自身が管理する画面を表示する（ステップ８０６）。
【０２３２】
また、要求プログラムの実行が開始されると、実行管理部１１７は、起動が終了したという通知を、要求受付・返答部１１６に返す（ステップ８０７）。
【０２３３】
要求受付・返答部１１６は、その通知を受け付けると、Webブラウザ実行部１１１に、起動が終了したという返答を返す（ステップ８０８）。
【０２３４】
プログラムの利用が終了し、ユーザが終了処理を行うと（ステップ８０９）、プログラム実行部１１４が、それを検知し、プログラムの終了を、実行管理部１１７に通知する（ステップ８１０）。
【０２３５】
次に、本実施の形態の効果を説明する。
【０２３６】
第１の効果は、Webアプリケーションのサーバ側で動作するプログラムが、クライアントにダウンロードされ、オフライン時には、クライアントが、そのプログラムに従ってクライアント上で動作するWebサーバにアクセスすることで、Webアプリケーションをオフラインで実行できることである。
【０２３７】
ここで、サーバ側で動作するプログラムをダウンロードする際には、インストールに相当するユーザの作業を不要にでき、また、クライアントのオペレーティングシステムの種類による制限がなく、セキュリティ上の危険性も無く、かつ、既存のWebアプリケーションを大幅に改変する必要もなくなる。
【０２３８】
その理由は、クライアント側で仮想マシンを動作させ、ダウンロードしたプログラムを仮想マシン上で実行するためである。
【０２３９】
これにより、ダウンロードしたプログラムを自動的にインストールするように仮想マシンにおける実行環境を設定することができる。
【０２４０】
また、ダウンロードしたプログラムは、仮想マシン上で動作するため、ダウンロードしたプログラムにコンピュータウィルスが組み込まれていても、その影響をクライアント本体側に及ぼすことを防止することが可能になる。
【０２４１】
また、仮想マシン上で動作するオペレーティングシステムは、クライアントのオペレーティングシステムに依存しないため、サーバからダウンロードするプログラムは、クライアントのオペレーティングシステムに対応しなくてもよい。
【０２４２】
さらに、既存のWebアプリケーションのサーバ側のオペレーティングシステムと、仮想マシン上で動作するオペレーティングシステムを同じものにすることで、既存のWebアプリケーションのサーバ側で動作するプログラムを、ほとんど変更すること無しに、クライアントの仮想マシン上で動作させることができる。
【０２４３】
第２の効果は、HTMLとその拡張（JavaScriptなど）で記述できる範囲に制限された、Webブラウザのユーザインタフェースの制限をなくせることである。
【０２４４】
ここで、アプリケーションは、Javaなどの特定の言語ではなく、任意のプログラミング言語を利用できる。
【０２４５】
その理由は、クライアント側で仮想マシンを動作させ、ダウンロードしたプログラムを仮想マシン上で実行するためである。これにより、仮想マシン上で動作するプログラムなら、どのような言語で記述しても動作する。
【０２４６】
本実施の形態によれば、クライアント１１０内の実行動作部１２１は、実行予定のプログラムが格納されていない記憶領域への書き込みを禁止しながら、仮想マシン１１２上でサーバ用格納部１１８ａまたは１１８ｂ内のプログラムを実行して、仮想マシン１１２上にサーバ１００に対応する特定サーバを生成する。
【０２４７】
この特定サーバは、クライアント１１０内の操作部１２３から、所定の要求（例えば、計算要求）を受信し、操作部１２３に、その所定の要求の実行結果を送信する。
【０２４８】
このため、特定サーバが書き込み（アクセス）できる領域を制限しながら、例えば、Webアプリケーションをオフラインで実行でき、それにより、ユーザの入力に対する応答を高速にし、また、サーバ１００の計算負荷およびネットワーク負荷を軽減できるシステムを、セキュリティ上の危険性を低くしながら実現できる。
【０２４９】
よって、例えば、ダウンロードしたプログラムにコンピュータウィルスが組み込まれていても、その影響をクライアント本体側に及ぼすことを防止することが可能になる。従って、クライアントにおいて、サーバから受け付けたプログラムに対するセキュリティを向上することができる。
【０２５０】
また、本実施の形態では、管理部１２２と実行動作部１２１とは、仮想マシン１１２に含まれる。
【０２５１】
この場合、サーバ１００に対応する機能を実現する構成部を、仮想マシン１１２内にまとめることが可能になる。
【０２５２】
また、本実施の形態では、特定サーバからＯＳ格納部１１８ｃへのアクセスが制限される。この場合、ダウンロードしたプログラムにコンピュータウィルスが組み込まれていても、仮想マシン１１２のオペレーティングシステムにコンピュータウィルスの影響が及ぶことを防止可能になる。
【０２５３】
また、本実施の形態では、ＯＳ格納部１１８ｃには、サーバ１００格納されているオペレーティングシステムと同じ種類のオペレーティングシステムが格納される。この場合、サーバ１００内のプログラムを変更することなく、サーバ用格納部１１８ａまたは１１８ｂに格納することが可能になる。
【０２５４】
また、本実施の形態では、Webブラウザ実行部１１１は、Webブラウザを用いることによって、サーバ１００に所定の要求を送信し、サーバ１００からその所定の要求に応じた実行結果を受信して表示し、また、Webブラウザを用いることによって、特定サーバに所定の要求を送信し、特定サーバからその所定の要求に応じた実行結果を受信して表示する。
【０２５５】
この場合、Webブラウザ実行部１１１を用いることによって、サーバ１００と仮想マシン１１２内の特定サーバとのいずれとも通信することが可能になる。よって、ユーザは、Webブラウザ実行部１１１を用いることによって、サーバ１００と仮想マシン１１２内の特定サーバとを同じように使うことが可能になる。
【０２５６】
また、本実施の形態では、Webブラウザ実行部１１１は、Webブラウザを用いることによって、サーバ１００に所定の要求を送信し、サーバ１００からその所定の要求に応じた実行結果を受信して表示する。入出力部１２０は、仮想マシン１１２内の特定サーバに所定の要求を送信し、特定サーバからその所定の要求に応じた実行結果を受信して表示する。
【０２５７】
この場合、仮想マシン１１２内の特定サーバは、Webブラウザ実行部１１１ではなく、入出力部１２０と通信する。よって、仮想マシン１１２内の特定サーバからの実行結果を、Webブラウザ実行部１１１のインターフェースで表示できない形式で記載することも可能になる。
【０２５８】
（第２の実施の形態）
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。
【０２５９】
図９を参照すると、本発明の第２の実施の形態は、プログラム制御により動作するサーバコンピュータ９００と、プログラム制御により動作するクライアントコンピュータ９１０と、を含む。
【０２６０】
サーバコンピュータ９００は、Webサーバプログラム９０１およびプログラム配信プログラム９０２を搭載している。
【０２６１】
例えば、サーバコンピュータ９００は、Webサーバプログラム９０１とプログラム配信プログラム９０２とが記載された、バードディスク等のコンピュータにて読み取り可能な記録媒体を含む。
【０２６２】
サーバコンピュータ９００は、その記録媒体からWebサーバプログラム９０１を読み取り実行することによって、図１に示したWebサーバ１０１として機能する。また、サーバコンピュータ９００は、その記録媒体からプログラム配信プログラム９０２を読み取り実行することによって、図１に示したプログラム配信部１０２として機能する。
【０２６３】
クライアントコンピュータ９１０は、Webブラウザプログラム９１１および仮想マシンプログラム９１２を搭載している。
【０２６４】
例えば、クライアントコンピュータ９１０は、Webブラウザプログラム９１１と仮想マシンプログラム９１２とが記載された、バードディスク等のコンピュータにて読み取り可能な記録媒体を含む。
【０２６５】
クライアントコンピュータ９１０は、その記録媒体からWebブラウザプログラム９１１を読み取り実行することによって、図１に示したWebブラウザ実行部１１１（さらに言えば、操作部１１３）として機能する。また、クライアントコンピュータ９１０は、その記録媒体から仮想マシンプログラム９１２を読み取り実行することによって、図１に示した仮想マシン１１２および仮想マシン生成部１１２ａとして機能する。
【０２６６】
上記各実施の形態は、Webアプリケーションを用いてきた分野、すなわち、文書編集、スプレッドシート、プレゼンテーションソフトウェア、メールクライアント、さらにＥコマースやブログ、ＳＮＳ（Social  Networking  Service）、ゲームといった用途に適用できる。また、上記各実施の形態は、企業における業務アプリケーション用途にも適用可能である。
【０２６７】
以上、各実施形態を参照して本願発明を説明したが、本願発明は上記各実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０２６８】
この出願は、２００８年９月１９日に出願された日本出願特願２００８−２４１３７２を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０２６９】
１００  サーバ
１０１  Webサーバ
１０２  プログラム配信部
１１０  クライアント
１１１  Webブラウザ実行部
１１２  仮想マシン
１１２ａ  仮想マシン生成部
１１３  管理モジュール
１１４  プログラム実行部
１１５  プログラム管理部
１１６  要求受付・返答部
１１７  実行管理部
１１８  格納部
１１８ａ、１１８ｂ  サーバ用格納部
１１８ｃ  ＯＳ格納部
１１９  実行部
１２０  入出力部
１２１  実行動作部
１２２  管理部
１２３  操作部
９００  サーバコンピュータ
９１０  クライアントコンピュータ
【図１】
0005541160.tif 000002
【図２】
0005541160.tif 000003
【図３】
0005541160.tif 000004
【図４】
0005541160.tif 000005
【図５】
0005541160.tif 000006
【図６】
0005541160.tif 000007
【図７】
0005541160.tif 000008
【図８】
0005541160.tif 000009
【図９】
0005541160.tif 000010