次に、発明を実施するための形態について図面を参照して詳細に説明する。
(第1の実施の形態)
図1を参照すると、本発明の第1の実施の形態は、サーバ100と、クライアント110と、を含む。
サーバ100は、クライアント110から所定の要求を受信した場合に、サーバ側プログラムを実行して、その所定の要求に応じた実行結果を、クライアント110に送信する。
サーバ100は、Webサーバ101と、プログラム配信部102と、を含む。なお、Webサーバ101とプログラム配信部102は、別々のサーバ上に存在してもよい。
クライアント110は、一般的に、プログラム入手・実行クライアントと呼ぶことができる。クライアント110は、サーバ100と通信可能である。
クライアント110は、Webブラウザ実行部111と、仮想マシン112と、仮想マシン生成部112aと、入出力部120と、を含む。仮想マシン112は、管理モジュール113と、プログラム実行部114と、を含む。管理モジュール113は、プログラム管理部115と、要求受付・返答部116と、実行管理部117と、を含む。プログラム実行部114は、格納部118と、実行部119と、を含む。格納部118は、サーバ用格納部118aおよび118bと、OS(オペレーティングシステム)格納部118cと、を含む。実行管理部117と実行部119とは、実行動作部121に含まれる。プログラム管理部115と要求受付・返答部116は、管理部122に含まれる。Webブラウザ実行部111と入出力部120は、操作部123に含まれる。
仮想マシン112は、特定の言語のプログラムしか動作しないソフトウェア(例えば、JavaVM)を仮想マシン生成部112aが実行することによって生成されるものではない。仮想マシン112は、例えば、仮想マシン内で独立したオペレーティングシステムが動作可能なソフトウェア(例えば、VMWare(ブイエムウェア)(登録商標)やXen(ゼン)(登録商標))を仮想マシン生成部112aが実行することによって生成される。
仮想マシン生成部112aは、一般的に仮想マシン生成手段と呼ぶことができる。仮想マシン生成部112aは、VMWare(ブイエムウェア)やXen(ゼン)のようなソフトウェアを実行することによって、クライアント110内に仮想マシン112を生成する。
サーバ用格納部118aおよび118bのそれぞれは、一般的にサーバ用格納手段と呼ぶことができる。なお、サーバ用格納部の数は、2つに限らず、1以上であればよい。
OS格納部118cは、一般的にOS格納手段または他の格納手段と呼ぶことができる。OS格納部118cは、例えば、サーバ用格納部118aおよび118b内のプログラムを実行する際に用いられるオペレーティングシステム、さらに言えば、仮想マシン112が使用するオペレーティングシステムを格納する。OS格納部118cは、例えば、サーバ100が有するオペレーティングシステムと同じ種類のオペレーティングシステムを格納する。
要求受付・返答部116は、サーバ側プログラム(以下、単に「プログラム」と称する)を入手する旨の入手指示を、Webブラウザ実行部111から受け付ける。また、要求受付・返答部116は、入手されたプログラムを実行する旨の実行指示を、Webブラウザ実行部111から受け付ける。
プログラム管理部115は、要求受付・返答部116が入手指示を受け付けた場合に、サーバ100からプログラムを入手して、そのプログラムをサーバ用格納部118aまたは118bに格納し、かつ、格納部118のうちでアクセス可能な領域を、そのプログラムに対応づけて設定する。
管理部122は、一般的に管理手段と呼ぶことができる。管理部122は、サーバ100からプログラムを入手して、そのプログラムをサーバ用格納部118aまたは118bに格納する。
実行動作部121は、一般的に実行動作手段と呼ぶことができる。実行動作部121は、サーバ用格納部118aまたは118b内のプログラムを読み出し、格納部118のうち、そのプログラムに対応づけられた領域以外へのアクセスを禁止しながら、仮想マシン112上でそのプログラムを実行して、仮想マシン112上に、サーバ100に対応する特定サーバ(例えば、図1に示したWebサーバ)を生成する。
例えば、実行動作部121は、サーバ用格納部118aまたは118b内のプログラムを読み出し、格納部118のうち、そのプログラムを格納している格納部以外の格納部への書き込みを禁止しながら、仮想マシン112上でそのプログラムを実行して、仮想マシン112上に特定サーバを生成する。
特定サーバは、一般的に特定手段と呼ぶことができる。
特定サーバは、サーバ100が有する機能のうち、クライアントから所定の要求を受信した場合に、その所定の要求に応じた実行結果を、そのクライアントに送信する機能を有する。
本実施の形態では、実行動作部121は、OS格納部118c内のオペレーティングシステムを用いてサーバ用格納部118aまたは118b内のプログラムを実行する。
操作部123は、一般的に操作手段と呼ぶことができる。操作部123は、仮想マシン112内の特定サーバに所定の要求を送信し、その特定サーバからその所定の要求に応じた実行結果を受信して表示する。
Webブラウザ実行部111は、一般的に操作手段または通信手段と呼ぶことができる。
Webブラウザ実行部111は、Webブラウザを用いることによって、仮想マシン112内の特定サーバに所定の要求を送信し、その特定サーバから所定の要求に応じた実行結果を受信してその実行結果を表示する。
なお、Webブラウザ実行部111は、Webブラウザを用いることによって、サーバ100に所定の要求を送信し、サーバ100からその所定の要求に応じた実行結果を受信する。
入出力部120は、一般的に操作手段と呼ぶことができる。入出力部120は、仮想マシン112内の特定サーバに所定の要求を送信し、仮想マシン112内の特定サーバから所定の要求に応じた実行結果を受信してその実行結果を表示する。
これらは、つぎのように動作する。
まず、通常の利用形態では、Webブラウザ実行部111が、Webサーバ101にアクセスすると、Webサーバ101上でプログラムすなわちWebアプリケーションが実行され、その実行結果が、Webブラウザ実行部111に提供され、その実行結果が表示される。
次に、Webアプリケーションをオフライン化する場合について説明する。
図2は、Webアプリケーションをオフライン化する際のWebブラウザ実行部111の画面遷移を説明するための説明図である。
まず、画面201は、オンライン時に、Webサーバ101によってWebブラウザ実行部111に表示される画面である。
Webサーバ101は、画面201内に、「オフライン化」等の名前でリンクを用意する。ユーザが、Webブラウザ実行部111を使って、画面201内のリンクをクリックすると、Webブラウザ実行部111は、仮想マシン112内の管理モジュール113内の要求受付・返答部116に、オフライン化の要求を行う。このオフライン化の要求は、一般的に入手指示と呼ぶことができる。
ここで、Webブラウザ実行部111と要求受付・返答部116の通信には、最も簡単にはhttp(HyperText Transfer Protocol)が用いられる。
この場合、要求受付・返答部116が、httpサーバを動作させ、上記リンクを、そのhttpサーバへのハイパーリンクとする。例えば、仮想マシン112のIPアドレスとして192.168.0.10を用いるものとすると、そのhttpサーバへのリンクは、http://192.168.0.10/...となる。
この場合、Webブラウザ実行部111が、ユーザの操作に従って、画面201内のリンクをクリックすることで、要求受付・返答部116に、オフライン化の要求を送ることができる。
さらに、httpが提供する引数の機能を利用することで、付加的に必要な情報が、要求受付・返答部116に送られることができる。
本実施の形態では、必要となるプログラムを特定するためのURL(Uniform Resource Locator)、および、後で仮想マシン112内でプログラムを実行する際に必要となる起動・終了のためのコマンド等が、要求受付・返答部116に渡される。
さらに、リンク元のページ(画面201)のURLも、Referer(リファラ)の形で要求受付・返答部116に渡される。
なお、Webブラウザ実行部111と要求受付・返答部116との通信は、上記に限らない。
例えば、画面201内のリンクのURL scheme(スキーム)を特殊なプロトコルとし、Webブラウザ実行部111が、画面201内のリンクをクリックすることで、プロトコルハンドラとなる外部プログラムを起動し(あるいはプラグインの形で実現し)、Webブラウザ実行部111が、その外部プログラムを使って、要求受付・返答部116と独自のプロトコルで通信してもよい。
また、Webブラウザ実行部111と要求受付・返答部116との通信は、Webブラウザ実行部111が仮想マシン112を含む形で実現されてもよい。
ただし、Webブラウザ実行部111と要求受付・返答部116との通信は、要求受付・返答部116で動作するhttpサーバへのリンクとして実現された方が、任意のWebブラウザおよび仮想マシンを改造することなく、本実施の形態を実施できるため、好ましい。
画面201内のリンクをクリックすることで、オフライン化の要求が行われると、要求受付・返答部116は、プログラム管理部115に、オフライン化の要求の引数として渡された、プログラムを特定するためのURLを提供して、そのURLにて特定されるプログラムのダウンロードを依頼する。
プログラム管理部115は、ダウンロードの依頼を受け付けると、そのURLを用いて、サーバ100のプログラム配信部102から、ダウンロードを依頼されたプログラムをダウンロードする。
プログラムのダウンロード後、プログラム管理部115は、プログラム実行部114において、ダウンロードしたプログラムのインストールを行う。
ここで、「インストール」とは、ダウンロードしたプログラムをすぐに実行可能な状態にするための作業であり、その具体的内容は、プログラム実行部114の実現方法に依存する。
プログラム実行部114の実現方法とその実現方法に応じたインストール方法には、以下のようなものが考えられる。
最も単純には、プログラム管理部115が、プログラム実行部114内のサーバ用格納部内に、ダウンロードしたプログラム毎に、独立したディレクトリ(サーバ用格納部118aおよび118b)を作成し、そのディレクトリ(サーバ用格納部118aおよび118a)のそれぞれに、別々のプログラムを保存すればよい。
ただし、ダウンロードしたプログラムにコンピュータウィルス等が組み込まれていると、他のプログラムの記憶領域(ディレクトリ)、および、仮想マシン112内の他の記憶領域(他のサーバ用格納部およびOS格納部)が破壊される可能性がある。
このため、プログラム管理部115は、プログラム毎に、ユーザアカウントを分け、各プログラムが実行された際にアクセスできるディレクトリ(記憶領域、格納部)を制限する必要がある。
すなわち、プログラム管理部115は、ダウンロード要求のあったプログラム毎に、ユーザアカウントを新たに生成し、サーバ用格納部内にディレクトリを作成した上で、そのディレクトリへのアクセス許可を、その生成したユーザアカウントに与え、他のディレクトリへのアクセス許可を、その生成したユーザアカウントに与えず、ダウンロードしたプログラムを、そのディレクトリにコピー(保存)する。
あるいは、プログラム実行部114の実現方法とその実現方法に応じたインストール方法として、特許文献2に記載のシステムを用いてもよい。
すなわち、プログラム管理部115は、特許文献2に記載された、あるプロセスが、あるディレクトリ以下のものしか見ることができない(当該ディレクトリが最上位のディレクトリに見える)ようにする仕組みを利用して、プログラム間の隔離を実現する。
また、プログラム管理部115は、UnionFSなどの、ディレクトリを層構造で重ねる手法を用いてもよい。
この場合、プログラム管理部115は、新しい版のプログラムをインストールする際は、新しい版と古い版の差分のみをダウンロードし、そのダウンロードされた内容を古い版のディレクトリ上に重ねる。このため、プログラムのダウンロードを効率的に行うことが可能になる。また、プログラム管理部115は、プログラムのインストールが指定されると、そのプログラムに依存する他のプログラムを含め、自動的に必要な差分をダウンロードする。
さらに、プログラム実行部114として、仮想マシンが利用されてもよい。
この場合、仮想マシン112のさらに内側で仮想マシンが実行されることになる。この場合、ダウンロードしたプログラムは、仮想マシンのイメージとなり、プログラムの実行は仮想マシンの起動となる。
インストール終了後、要求受付・返答部116は、要求に応じてプログラムを起動・終了できるように、プログラム実行部114内のプログラムを設定する。
具体的には、要求受付・返答部116は、ある特定のURL(引数付きのものでもよい)に対するアクセスがあった場合に、そのURLに対応するプログラムを起動・終了するように、プログラム実行部114内のプログラムを設定する。
なお、Webブラウザ実行部111と仮想マシン112との通信が、Webブラウザ実行部111に対するプラグインで実現されている場合、または、Webブラウザ実行部111の内部に仮想マシン112を含む形で実現されている場合は、要求受付・返答部116は、独自プロトコルを用いることで、要求に応じてプログラムを起動・終了できるように、プログラム実行部114内のプログラムを設定する。
一方、プログラムのダウンロード・インストール・起動・終了設定を行っている間、Webブラウザ実行部111には、「現在オフライン化を行っています」といった内容の情報(例えば、「ただいまオフライン化中」)が表示される(画面202参照)。
Webブラウザ実行部111が画面202を表示することは、要求受付・返答部116が、画面202の内容を表示するためにHTMLで記載されたファイルを、Webブラウザ実行部111に返すことで実現できる。
そして、ダウンロード・インストールが終了すると、つまり、プログラム実行部114内のプログラムのオフライン化が完了すると、Webブラウザ実行部111には、「オフライン化が終了しました」といった内容の情報が表示される(画面203参照)。
Webブラウザ実行部111が画面203を表示することは、画面202で表示したHTMLのファイルを自動的にリフレッシュするように、要求受付・返答部116が、meta(メタ)タグでrefresh指定をすることなどで実現できる。
さらに、画面203の表示と同時に、Webブラウザ実行部111には、オフライン化したプログラムを起動するためのURLをブックマークすることをユーザに促す画面が表示される(画面204参照)。
Webブラウザ実行部111が画面204を表示することは、JavaScriptの機能を用いることで実現することが可能である。
なお、Webブラウザ実行部111と仮想マシン112との通信が、Webブラウザ実行部111に対するプラグインで実現されている場合、または、Webブラウザ実行部111の内部に仮想マシン112を含む形で実現されている場合は、Webブラウザ実行部111が、プログラム実行部114内のプログラムの状態に応じて、「現在オフライン化を行っています」、「オフライン化が終了しました」といった内容の情報を表示すればよい。
また、ブックマークへのURLの追加については、ブックマークを利用せず、自動的にそのURLを表示する専用のメニューを追加して実現することもできる。
「オフライン化が終了しました」といった内容の情報を表示する際には、Webブラウザ実行部111は、必要に応じて、元のURL(画面201に対応するURL)に戻るリンクを付加しておく。これは、Refererとして与えられたURLを利用することによって実現できる。
次に、オフライン化したWebアプリケーションを利用する場合について説明する。
まず、ユーザが、画面204を用いてブックマークしたURLに、Webブラウザ実行部111を使ってアクセスする。
そのURLへのアクセスが実行されると、要求受付・返答部116は、そのURLにて特定されるプログラムを実行する旨の実行指示を受け付ける。要求受付・返答部116は、その実行指示を受け付けると、実行管理部117に、そのURLに対応するプログラムの起動を依頼する。
実行管理部117は、起動の依頼を受け付けると、実行部119に、起動を依頼されたプログラムの実行を開始する指示を与える。
実行を開始するための具体的な処理は、プログラム実行部114の実現方法に依存する。
プログラム実行部114が、プログラム毎に、ディレクトリおよびアカウントを分けることで実現されている場合は、実行管理部117は、起動を依頼されたプログラムに対応するディレクトリおよびアカウントを用いて、起動を依頼されたプログラムを、実行部119に起動させればよい。
この場合、実行部119は、仮想サーバ用格納部118aまたは118b内のプログラムを、少なくとも、格納部118のうちでそのプログラムに対応づけられている領域以外へのアクセスを禁止しながら実行する。
プログラム実行部114が、特許文献2に記載のシステムを用いる場合は、実行管理部117は、そのシステムに起動を依頼することで、起動を依頼されたプログラムを起動できる。
この場合も、少なくとも、格納部118のうちで、そのプログラムに対応づけられている領域以外へのアクセスが禁止されながら、そのプログラムが実行される。
プログラム実行部114が仮想マシンで実現される場合は、実行管理部117は、プログラム実行部114として設定されている仮想マシンの起動を行う。
この場合も、少なくとも、格納部118のうちで、そのプログラムに対応づけられている領域以外へのアクセスが禁止されながら、そのプログラムが実行される。
実行管理部117は、現在実行中のプログラムを示す情報を記憶しておき、後でそのプログラムを終了する際等に備える。
また、実行管理部117は、起動処理が完了し、プログラムが利用可能になった時点で、その旨を要求受付・返答部116に伝える。
ここでは、起動したプログラムをプログラムAとする。
プログラムAは、Webアプリケーションのサーバ100側のプログラムである。プログラムAは、起動されると、サーバ100に対応するWebサーバ(特定サーバ)として動作する。
ここで、プログラムAにて実現されるWebサーバが利用する、TCP(Transmission Control Protocol)プロトコルにおけるポート番号と、要求受付・返答部116が利用するポート番号、および、他のプログラムが利用するポート番号は、互いに異なるようにする必要がある。
利用するポート番号は、一般には、プログラム、または、その設定ファイルに埋め込まれるため、なんらかのルールにより、あらかじめ重ならないように決められているものと仮定する。
同時に、プログラムが起動を開始し、利用可能になるまでの間、Webブラウザ実行部111では、「現在プログラムを起動しています」といった内容の情報が表示される(画面205参照)。
Webブラウザ実行部111が画面205を表示することは、要求受付・返答部116が、その内容を表示するための、HTMLで記載されたファイルを、Webブラウザ実行部111に返すことで実現できる。
そして、起動処理が終了し、プログラムが利用可能になったことが、実行管理部117から伝えられると、要求受付・返答部116は、Webブラウザ実行部111が表示している画面を、プログラムAが提供するWebサーバのURLにて特定される画面に、リダイレクトする旨の返答を、Webブラウザ実行部111に返す。
要求受付・返答部116がWebブラウザ実行部111にリダイレクトする旨の返答を提供することは、画面202から画面203への遷移と同様、要求受付・返答部116が、metaタグでrefresh指定をすることなどで実現できる。
なお、Webブラウザ実行部111と仮想マシン112との通信が、Webブラウザ実行部111に対するプラグインで実現されている場合、または、Webブラウザ実行部111の内部に仮想マシン112を含む形で実現されている場合は、Webブラウザ実行部111が、起動を依頼されたプログラムの状態に応じて、上記のような画面遷移を行えばよい。
これにより、Webブラウザ実行部111は、画面206を表示する。
画面206は、仮想マシン112内で動作するプログラムAがWebサーバとして動作することによって表示される。以上により、オフラインでのWebアプリケーションの実行が可能となる。
Webアプリケーションの種類によっては、Webサーバ101が持つ情報と、仮想マシン112内で動作するプログラムAが持つ情報とを、同期させる必要がある。
その場合は、情報を同期のための機能を、プログラムAが持ち、プログラムAを実行する実行部119が、ネットワーク接続が可能な際にWebサーバ101と通信し、情報の同期を行う。あるいは、特許文献2に記載の方法が用いられてもよい。
特許文献2に記載の技術では、層構造を持ったディレクトリが利用され、ある時点以降に変更があったファイルだけが別の層に置かれる。そして、同期時には、サーバとクライアントのうち、新しい版のプログラムを有している方から、古い版のプログラムを有している方に、変更があったファイルを送ることで、データの同期が行われる。
オフラインでのWebアプリケーションの利用が終了すると(画面207参照)、ローカルで動作していたWebサーバ(プログラムA)を停止させる必要がある。
このために、画面207に「ローカルサーバを停止します」といった内容のリンクが付加される。
ユーザが、Webブラウザ実行部111を用いて、画面207内のリンクをクリックすると、要求受付・返答部116に、そのWebサーバを実現しているプログラムAの停止が要求される。
この処理を実現するために、このリンクを、要求受付・返答部116で動作しているhttpサーバへのリンクとする。
要求受付・返答部116は、このリンクへのアクセスがあった際、要求元のWebページのRefererを参照する。
Referer内にはWebサーバのポートが記述されているため、要求受付・返答部116は、このポートを参照することで、どのプログラムからの停止要求かを判定することができる。
要求受付・返答部116は、停止の要求を受け付けると、実行管理部117に、要求のあったプログラムの停止を依頼する。実行管理部117は、その依頼に基づいて、要求のあったプログラムを実行部119が実行することを停止する。
なお、Webブラウザ実行部111と仮想マシン112との通信が、Webブラウザ実行部111に対するプラグインで実現されている場合、または、Webブラウザ実行部111の内部に仮想マシン112を含む形で実現されている場合は、直接、どのプログラムからの停止要求かを知ることができる。
以上では、すでにオフライン化済みのプログラムを更新する方法については触れなかったが、オフライン化済みのプログラムの更新を行うには、以下の方法が考えられる。
まず、第1の方法は、画面201で、オフライン化のリンク(あるいは同様の別の名前のリンク)がクリックされた際に、プログラム管理部115が、プログラム配信部102に対し、現在のプログラムの版を尋ね、現在のプログラムの版が既にダウンロード・インストール済みのプログラムの版よりも新しければ、現在の版のプログラムをダウンロード・インストールする。これにより、プログラムの更新が行われる。
また、別の方法は、画面205で、オフラインでプログラムを実行しようとした際、もし、ネットワーク接続が可能であれば、実行管理部117がプログラムの実行を開始する前に、プログラム管理部115が、プログラム配信部102に対し、現在のプログラムの版を尋ね、その版が既にダウンロード・インストール済みのプログラムの版よりも新しければ、現在の版のプログラムをダウンロード・インストールする。これにより、プログラムの更新が行われ、更新されたプログラムが実行される。
さらに別の方法として、プログラムの更新機能を、プログラム内部に作りこむことも考えられる。
この場合、オフラインで実行中のプログラムが、もしネットワーク接続が可能であれば、自身で新しい版の存在を確認し、自らを更新する。
次に、Webブラウザ実行部111のユーザインタフェースの制限をなくす場合について説明する。以降、このアプリケーション(プログラム)を「非ブラウザアプリケーション」と呼ぶ。なお、図1では、非ブラウザアプリケーションは、プログラムBとして表されている。
この場合の動作も、プログラムAをオフライン化する場合に類似している。
図3は、非ブラウザアプリケーションをオフライン化する際のWebブラウザ実行部111の画面遷移を説明するための説明図である。
まず、画面301は、オンライン時に、Webサーバ101によってWebブラウザ実行部111に表示されるWebページの画面である。
Webサーバ101は、画面301内に、非ブラウザアプリケーションのそれぞれに対応する複数のリンクを用意する。ユーザが、Webブラウザ実行部111を使って、画面301内のいずれかのリンクをクリックすると、図2の画面201においてリンクがクリックされた場合と同様、Webブラウザ実行部111は、要求受付・返答部116に、要求を送る。なお、この要求は、入手指示と実行指示とを兼ねる。
要求受付・返答部116は、この要求を受け取ると、クリックされたリンクに対応するプログラムのダウンロードとインストールを、プログラム管理部115に実行させる。ダウンロード・インストールの手順は、プログラムAをオフライン化する際と同様である。
ダウンロード・インストール中は、Webブラウザ実行部111に「お待ち下さい」のような画面(画面302参照)が表示される。この手順も、プログラムAをオフライン化する際と同様である。
ダウンロード・インストールが終了すると、要求受付・返答部116は、実行管理部117に対し、そのプログラムの実行を要求する。
実行管理部117は、その要求を受け付けると、実行部119に、そのプログラムの実行を開始させ、仮想マシン112上に特定サーバを生成する。このとき、入出力部120は、画面305を表示する。
入出力部120は、画面305を表示している間に、ユーザからの所定の要求(例えば、計算の依頼要求など)を受け付けると、その要求を、実行部119、すなわち、仮想マシン112上の特定サーバに送信し、その後、特定サーバから、その要求に応じた実行結果を受信し表示する。
ここで、プログラムB(非ブラウザアプリケーション)を実行している実行部119、つまり、仮想マシン112上の特定サーバが、入出力部120に、画面305を表示させる方法はいくつか考えられる。
第1の方法は、クライアント110内の入出力部120で、X Window Systemのサーバ(Xサーバ)が動作し、Xサーバが仮想マシン112内で動作するプログラムBとXプロトコルで通信することにより、入出力部120に、画面305を表示する方法である。
同様の手法として、VNC(Virtual Network Computing)(登録商標)やMicrosoft(登録商標) Windows(登録商標)のRemote Desktop Protocolなど、他の画面制御プロトコルを利用する方法も考えられる。
この場合、Xサーバ、あるいは、他のプロトコルでXサーバに相当するもの(入出力部120)が、Webブラウザ実行部111に組み込まれてもよい。この場合、起動するプログラムの画面をWebブラウザ実行部111のウインドウ内で表示することができる。
また、別の方法としては、仮想マシン112自身が提供する画面内に、画面305を表示する方法も考えられる。
ここで、仮想マシン112自身が提供する画面とは、仮想マシン112が、グラフィック関係のハードウェアを仮想化して有することで表示される表示である。この場合も、画面をWebブラウザ実行部111のウインドウ内で表示することも考えられる。
このように、Webブラウザ実行部111を介さず、プログラムBが直接画面描画を行えるようにできるため、Webブラウザ実行部111のユーザインタフェースの制限をなくすことができる。
プログラムBの起動が開始すると、Webブラウザ実行部111の画面は、画面302から画面303に遷移する。この実現方法は、プログラムAをオフライン化する際の画面202から画面203への遷移と同様である。
さらに、プログラムAをオフライン化する際と同様、プログラムBの起動を行うためのURLをブックマークすることをユーザに促す画面が、Webブラウザ実行部111に表示される(画面304参照)。
プログラムBの終了は、プログラムB自身が提供する画面(画面305)、例えば、入出力部120が表示する画面を用いて行われる。
プログラムBが終了すると、終了を示す通知が、プログラム実行部114(具体的には、実行部119)から実行管理部117に送られる。この通知により、実行管理部117は、プログラムBの実行状態を把握できる。
実行管理部117が、プログラムの終了を検知する方法は、実行管理部117の実装に依存するが、最も簡単には、定期的に、実行中のプログラムのプロセスの状態を監視すればよい。
次に、非ブラウザアプリケーションをオフラインで利用する場合について説明する。
これも、オフライン化したプログラムAを利用する場合と同様、ユーザが、Webブラウザ実行部111を使って、画面304でブックマークしたURLにアクセスする。
この操作により、要求受付・返答部116は、実行管理部117に、登録されたプログラムBの起動を依頼する。
実行管理部117は、プログラムBの実行を開始する。
Webブラウザ実行部111は、プログラムBが起動するまでは、画面306のように、「ただいま起動中です」というような画面を表示し、起動が完了した時点で、表示画面を、画面307のような「プログラムを起動しました」というような画面に遷移する。
以上の動作は、オフライン化したプログラムAを利用する場合と同様である。
プログラムBが実行部119で起動され、仮想マシン112上で特定サーバが起動すると、入出力部120は、画面308を表示する。この場合も、プログラムBの実行が終了すると、終了を示す通知が、実行部119(仮想マシン112上の特定サーバ)から実行管理部117に送られる。
さらに、ダウンロード・インストールしたプログラムBの更新についても、オフライン化したプログラムAの場合と同様である。
また、仮想マシン112上で実行しているプログラムに、何らかのトラブルが起こったときのため、ユーザが、プログラムの停止・再起動・起動や、更新および削除、さらに仮想マシン112の再起動を直接行うためのインタフェースを用意することも考えられる。
この場合、Webブラウザ実行部111が、ユーザからの指示に従って、要求受付・返答部116のhttpサーバ上の管理用の特定のURLにアクセスする。
図4は、要求受付・返答部116のhttpサーバ上の管理用の特定のURLにアクセスされた際に表示される画面例を示した説明図である。
なお、Webブラウザ実行部111と仮想マシン112との通信が、Webブラウザ実行部111に対するプラグインで実現されている場合、または、Webブラウザ実行部111の内部に仮想マシン112を含む形で実現されている場合は、Webブラウザ実行部111自身に組込みの特定のメニューから、図4に示した画面が表示される。
図4に示した画面を通じて、ユーザは、プログラムの状態の確認や、停止・再起動・起動や更新および削除、さらに仮想マシンの再起動を直接行う。
プログラムの停止・再起動・起動が要求された場合は、要求受付・返答部116は、実行管理部117に、その要求を行う。
プログラムの更新および削除が要求された場合は、要求受付・返答部116は、プログラム管理部115に、その要求を行う。
仮想マシン112の再起動が要求された場合は、要求受付・返答部116は、仮想マシン112の再起動を行うコマンドを実行することで、再起動を行う。
次に、動作の概要を説明する。
Webブラウザ実行部111が、Webサーバ101が提供するWebページを表示し、そのページ上のリンクをクリックすることで、仮想マシン112上で動作する管理モジュール113に、プログラムを入手する旨の要求が送られる。
管理モジュール113は、プログラムを入手する旨の要求を受けると、プログラム配信部102から、プログラムをダウンロードし、仮想マシン112内にインストールする。
そして、Webブラウザ実行部111が、管理モジュール113に、プログラムを実行する旨の要求を送ると、仮想マシン112内で、ダウンロードしたプログラムが実行される。
ダウンロードするプログラムとして、サーバ100で動作するWebサーバプログラムと同じ機能を提供するプログラムを用いることで、Webアプリケーションをオフラインで実行することができる。
また、ダウンロードするプログラムとして、Webブラウザ実行部111を介さずにユーザと直接対話する処理を実行させるプログラムを用いることで、Webブラウザのユーザインタフェースの制限を無くすことができる。
次に、図5から図8のシーケンス図を参照して本実施の形態の全体の動作について説明する。
図5は、Webアプリケーションをオフライン化する際の動作を示したシーケンス図である。以下、Webアプリケーションをオフライン化する際の動作を、図5を用いて説明する。
まず、ステップ501では、通常のWebアプリケーションと同様、Webブラウザ実行部111は、Webサーバ101にアクセスすることで、Webアプリケーションを利用する。
次に、図2の画面201内の「オフライン化」等の名前のリンクをクリックすることで、Webブラウザ実行部111は、要求受付・返答部116に対し、オフライン化を要求する(ステップ502)。
要求受付・返答部116は、オフライン化の要求を受け付けると、「現在オフライン化を行っています」といった内容の返答を、Webブラウザ実行部111に対して返す(ステップ503)。
続いて、要求受付・返答部116は、プログラム管理部115に対して、オフライン化が要求されたプログラムのダウンロード・インストールの要求を行う(ステップ504)。
プログラム管理部115は、ダウンロード・インストールの要求を受け付けると、サーバ100のプログラム配信部102に対して、ダウンロード要求を行い、オフライン化が要求されたプログラムのダウンロードを行う(ステップ505)。
続いて、プログラム管理部115は、ダウンロードしたプログラムを、プログラム実行部114にインストールし(ステップ506)、終了通知を、要求受付・返答部116に送る(ステップ507)。
要求受付・返答部116は、終了通知を受け取ると、まず、ダウンロードしたプログラムを起動・終了するためのインタフェース(URLなど)を設定する(ステップ508)。
次に、要求受付・返答部116は、Webブラウザ実行部111に対して「オフライン化が終了しました」といった内容の返答を返す。同時に、要求受付・返答部116は、Webブラウザ実行部111から直接ステップ508で設定したインタフェースにアクセスして、プログラムを起動できるように、URLをブックマークするなどの設定を行う(ステップ509)。
図6は、オフライン化したWebアプリケーションを利用する際の動作を示したシーケンス図である。以下、オフライン化したWebアプリケーションを利用する際の動作を、図6を用いて説明する。
まず、ステップ601で、ブックマークからURLがアクセスされる等、先に設定したインタフェースから、プログラムの起動要求が行われる。
プログラムの起動要求が行われると、要求受付・返答部116に対し、実行要求が行われる(ステップ602)。
要求受付・返答部116は、Webブラウザ実行部111に対し、「現在起動中です」といった内容の返答を返す(ステップ603)。
続いて、要求受付・返答部116は、実行管理部117に対し、アクセスされたURLに対応するプログラムの実行を要求する(ステップ604)。
実行管理部117は、プログラムの実行の要求を受け付けると、プログラム実行部114において、そのプログラムを実行する(ステップ605)。
プログラムの実行が開始すると、実行管理部117は、起動が終了したという通知を、要求受付・返答部116に返す(ステップ606)。
要求受付・返答部116は、起動が終了したという通知を受け付けると、Webブラウザ実行部111に、起動が終了したという返答を返す(ステップ607)。
Webブラウザ実行部111は、その返答を受け、実行が開始されたプログラムにて提供されるWebサーバにアクセスし(ステップ608)、Webアプリケーションのオフラインでの利用を開始する(ステップ609)。
例えば、Webアプリケーション中の「ローカルサーバを停止します」といった内容のリンクがクリックされるなどして、Webアプリケーションのオフラインでの利用が終了すると、要求受付・返答部116に、プログラムの終了要求が送られる(ステップ610)。
要求受付・返答部116は、プログラムの終了要求を受け付けると、実行管理部117に停止要求を行う(ステップ611)。
実行管理部117は、停止要求を受け付けると、プログラム実行部114において、終了が要求されたプログラムを停止する(ステップ612)。
図7は、非ブラウザアプリケーションを実行する際の動作を示したシーケンス図である。以下、非ブラウザアプリケーションを実行する際の動作を、図7を用いて説明する。
ステップ701では、Webブラウザ実行部111は、Webサーバ101にアクセスすることで、非ブラウザアプリケーションを実行するためのリンクを表示する。
そのリンクがクリックされることで、Webブラウザ実行部111は、要求受付・返答部116に対して、そのリンクに対応するプログラム(以下「対応プログラム」と称する)のダウンロード・インストール、さらに、その実行を要求する(ステップ702)。
要求受付・返答部116は、それらの要求を受け付けると、「処理中です。お待ち下さい」といった内容の返答を、Webブラウザ実行部111に返す(ステップ703)。
続いて、要求受付・返答部116は、プログラム管理部115に対し、対応プログラムのダウンロード・インストールの要求を行う(ステップ704)。
プログラム管理部115は、その要求を受け付けると、サーバ100のプログラム配信部102に対して、ダウンロード要求を行い、対応プログラムのダウンロードを行う(ステップ705)。
続いて、プログラム管理部115は、ダウンロードした対応プログラムをインストールし(ステップ706)、終了通知を、要求受付・返答部116に送る(ステップ707)。
次に、要求受付・返答部116は、終了通知を受け付けると、実行管理部117に対し、対応プログラムの実行要求を行う(ステップ708)。
実行管理部117は、対応プログラムの実行要求を受け付けると、プログラム実行部114において、対応プログラムを実行する(ステップ709)。
実行が開始されると、対応プログラムを実行するプログラム実行部114は、対応プログラム自身が管理する画面を表示する(ステップ710)。
続いて、実行管理部117は、起動が終了したという通知を、要求受付・返答部116に返す(ステップ711)。
要求受付・返答部116は、起動が終了したという通知を受け取ると、まず、ダウンロードしたプログラムを起動・終了するためのインタフェース(URLなど)を設定する(ステップ712)。
次に、要求受付・返答部116は、Webブラウザ実行部111に対して「プログラムを起動しました」といった内容の返答を返す。同時に、要求受付・返答部116は、Webブラウザ実行部111がステップ712で設定されたインタフェースに直接アクセスしてプログラムを起動できるように、URLをブックマークするなどの設定を行う(ステップ713)。
プログラムの利用が終了し、ユーザが終了処理を行うと(ステップ714)、プログラム実行部114が、それを検知し、プログラムの終了を、実行管理部117に通知する(ステップ715)。
図8は、オフラインで非ブラウザアプリケーションを実行する際の動作を説明するためのシーケンス図である。以下、オフラインで非ブラウザアプリケーションを実行する際の動作を、図8を用いて説明する。
まず、ステップ801で、ブックマークからURLをアクセスする等、先に設定したインタフェースから、プログラムの起動要求が生成される。
プログラムの起動要求が生成されると、要求受付・返答部116に対し、実行要求が送信される(ステップ802)。
要求受付・返答部116は、実行要求を受け付けると、Webブラウザ実行部111に対し、「現在起動中です」といった内容の返答を返す(ステップ803)。
続いて、要求受付・返答部116は、実行管理部117に対し、起動が要求されたプログラム(以下「要求プログラム」と称する)の実行を要求する(ステップ804)。
実行管理部117は、その要求に応じて、プログラム実行部114において、要求プログラムを実行する(ステップ805)。
要求プログラムの実行が開始されると、要求プログラムは、自身が管理する画面を表示する(ステップ806)。
また、要求プログラムの実行が開始されると、実行管理部117は、起動が終了したという通知を、要求受付・返答部116に返す(ステップ807)。
要求受付・返答部116は、その通知を受け付けると、Webブラウザ実行部111に、起動が終了したという返答を返す(ステップ808)。
プログラムの利用が終了し、ユーザが終了処理を行うと(ステップ809)、プログラム実行部114が、それを検知し、プログラムの終了を、実行管理部117に通知する(ステップ810)。
次に、本実施の形態の効果を説明する。
第1の効果は、Webアプリケーションのサーバ側で動作するプログラムが、クライアントにダウンロードされ、オフライン時には、クライアントが、そのプログラムに従ってクライアント上で動作するWebサーバにアクセスすることで、Webアプリケーションをオフラインで実行できることである。
ここで、サーバ側で動作するプログラムをダウンロードする際には、インストールに相当するユーザの作業を不要にでき、また、クライアントのオペレーティングシステムの種類による制限がなく、セキュリティ上の危険性も無く、かつ、既存のWebアプリケーションを大幅に改変する必要もなくなる。
その理由は、クライアント側で仮想マシンを動作させ、ダウンロードしたプログラムを仮想マシン上で実行するためである。
これにより、ダウンロードしたプログラムを自動的にインストールするように仮想マシンにおける実行環境を設定することができる。
また、ダウンロードしたプログラムは、仮想マシン上で動作するため、ダウンロードしたプログラムにコンピュータウィルスが組み込まれていても、その影響をクライアント本体側に及ぼすことを防止することが可能になる。
また、仮想マシン上で動作するオペレーティングシステムは、クライアントのオペレーティングシステムに依存しないため、サーバからダウンロードするプログラムは、クライアントのオペレーティングシステムに対応しなくてもよい。
さらに、既存のWebアプリケーションのサーバ側のオペレーティングシステムと、仮想マシン上で動作するオペレーティングシステムを同じものにすることで、既存のWebアプリケーションのサーバ側で動作するプログラムを、ほとんど変更すること無しに、クライアントの仮想マシン上で動作させることができる。
第2の効果は、HTMLとその拡張(JavaScriptなど)で記述できる範囲に制限された、Webブラウザのユーザインタフェースの制限をなくせることである。
ここで、アプリケーションは、Javaなどの特定の言語ではなく、任意のプログラミング言語を利用できる。
その理由は、クライアント側で仮想マシンを動作させ、ダウンロードしたプログラムを仮想マシン上で実行するためである。これにより、仮想マシン上で動作するプログラムなら、どのような言語で記述しても動作する。
本実施の形態によれば、クライアント110内の実行動作部121は、実行予定のプログラムが格納されていない記憶領域への書き込みを禁止しながら、仮想マシン112上でサーバ用格納部118aまたは118b内のプログラムを実行して、仮想マシン112上にサーバ100に対応する特定サーバを生成する。
この特定サーバは、クライアント110内の操作部123から、所定の要求(例えば、計算要求)を受信し、操作部123に、その所定の要求の実行結果を送信する。
このため、特定サーバが書き込み(アクセス)できる領域を制限しながら、例えば、Webアプリケーションをオフラインで実行でき、それにより、ユーザの入力に対する応答を高速にし、また、サーバ100の計算負荷およびネットワーク負荷を軽減できるシステムを、セキュリティ上の危険性を低くしながら実現できる。
よって、例えば、ダウンロードしたプログラムにコンピュータウィルスが組み込まれていても、その影響をクライアント本体側に及ぼすことを防止することが可能になる。従って、クライアントにおいて、サーバから受け付けたプログラムに対するセキュリティを向上することができる。
また、本実施の形態では、管理部122と実行動作部121とは、仮想マシン112に含まれる。
この場合、サーバ100に対応する機能を実現する構成部を、仮想マシン112内にまとめることが可能になる。
また、本実施の形態では、特定サーバからOS格納部118cへのアクセスが制限される。この場合、ダウンロードしたプログラムにコンピュータウィルスが組み込まれていても、仮想マシン112のオペレーティングシステムにコンピュータウィルスの影響が及ぶことを防止可能になる。
また、本実施の形態では、OS格納部118cには、サーバ100格納されているオペレーティングシステムと同じ種類のオペレーティングシステムが格納される。この場合、サーバ100内のプログラムを変更することなく、サーバ用格納部118aまたは118bに格納することが可能になる。
また、本実施の形態では、Webブラウザ実行部111は、Webブラウザを用いることによって、サーバ100に所定の要求を送信し、サーバ100からその所定の要求に応じた実行結果を受信して表示し、また、Webブラウザを用いることによって、特定サーバに所定の要求を送信し、特定サーバからその所定の要求に応じた実行結果を受信して表示する。
この場合、Webブラウザ実行部111を用いることによって、サーバ100と仮想マシン112内の特定サーバとのいずれとも通信することが可能になる。よって、ユーザは、Webブラウザ実行部111を用いることによって、サーバ100と仮想マシン112内の特定サーバとを同じように使うことが可能になる。
また、本実施の形態では、Webブラウザ実行部111は、Webブラウザを用いることによって、サーバ100に所定の要求を送信し、サーバ100からその所定の要求に応じた実行結果を受信して表示する。入出力部120は、仮想マシン112内の特定サーバに所定の要求を送信し、特定サーバからその所定の要求に応じた実行結果を受信して表示する。
この場合、仮想マシン112内の特定サーバは、Webブラウザ実行部111ではなく、入出力部120と通信する。よって、仮想マシン112内の特定サーバからの実行結果を、Webブラウザ実行部111のインターフェースで表示できない形式で記載することも可能になる。
(第2の実施の形態)
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。
図9を参照すると、本発明の第2の実施の形態は、プログラム制御により動作するサーバコンピュータ900と、プログラム制御により動作するクライアントコンピュータ910と、を含む。
サーバコンピュータ900は、Webサーバプログラム901およびプログラム配信プログラム902を搭載している。
例えば、サーバコンピュータ900は、Webサーバプログラム901とプログラム配信プログラム902とが記載された、バードディスク等のコンピュータにて読み取り可能な記録媒体を含む。
サーバコンピュータ900は、その記録媒体からWebサーバプログラム901を読み取り実行することによって、図1に示したWebサーバ101として機能する。また、サーバコンピュータ900は、その記録媒体からプログラム配信プログラム902を読み取り実行することによって、図1に示したプログラム配信部102として機能する。
クライアントコンピュータ910は、Webブラウザプログラム911および仮想マシンプログラム912を搭載している。
例えば、クライアントコンピュータ910は、Webブラウザプログラム911と仮想マシンプログラム912とが記載された、バードディスク等のコンピュータにて読み取り可能な記録媒体を含む。
クライアントコンピュータ910は、その記録媒体からWebブラウザプログラム911を読み取り実行することによって、図1に示したWebブラウザ実行部111(さらに言えば、操作部113)として機能する。また、クライアントコンピュータ910は、その記録媒体から仮想マシンプログラム912を読み取り実行することによって、図1に示した仮想マシン112および仮想マシン生成部112aとして機能する。
上記各実施の形態は、Webアプリケーションを用いてきた分野、すなわち、文書編集、スプレッドシート、プレゼンテーションソフトウェア、メールクライアント、さらにEコマースやブログ、SNS(Social Networking Service)、ゲームといった用途に適用できる。また、上記各実施の形態は、企業における業務アプリケーション用途にも適用可能である。
以上、各実施形態を参照して本願発明を説明したが、本願発明は上記各実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2008年9月19日に出願された日本出願特願2008−241372を基礎とする優先権を主張し、その開示の全てをここに取り込む。