JPWO2010032558A1 - プログラム入手・実行クライアント、プログラム入手・実行方法および記録媒体 - Google Patents

プログラム入手・実行クライアント、プログラム入手・実行方法および記録媒体 Download PDF

Info

Publication number
JPWO2010032558A1
JPWO2010032558A1 JP2010529688A JP2010529688A JPWO2010032558A1 JP WO2010032558 A1 JPWO2010032558 A1 JP WO2010032558A1 JP 2010529688 A JP2010529688 A JP 2010529688A JP 2010529688 A JP2010529688 A JP 2010529688A JP WO2010032558 A1 JPWO2010032558 A1 JP WO2010032558A1
Authority
JP
Japan
Prior art keywords
server
program
unit
execution
virtual machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2010529688A
Other languages
English (en)
Other versions
JP5541160B2 (ja
Inventor
拓也 荒木
拓也 荒木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2010529688A priority Critical patent/JP5541160B2/ja
Publication of JPWO2010032558A1 publication Critical patent/JPWO2010032558A1/ja
Application granted granted Critical
Publication of JP5541160B2 publication Critical patent/JP5541160B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2109Game systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

クライアントから所定要求を受信した場合にサーバ側プログラムを実行して所定要求に応じた実行結果をクライアントに送信するサーバと通信可能なクライアントは、サーバ用格納部と他の格納部とを有する仮想マシンを生成する仮想マシン生成部と、サーバから前記プログラムを入手してサーバ用格納部に格納する管理部と、他の格納部への書き込みを禁止しながら仮想マシン上でサーバ用格納部内のサーバ側プログラムを実行して所定要求を受信した場合に所定要求に応じた実行結果を所定要求の送信元に送信する特定部を仮想マシン上に生成する実行動作部と、特定部に所定要求を送信し特定部から所定要求に応じた実行結果を受信して表示する操作部を含む。

Description

本発明は、プログラム入手・実行クライアント、プログラム入手・実行方法および記録媒体に関する。
特には、本発明は、クライアントのWeb(ウェブ)ブラウザを用いて利用されるサーバ内のサーバ側プログラムを、クライアント側にダウンロードし、そのサーバ側プログラムを実行する、プログラム入手・実行クライアント、プログラム入手・実行方法およびプログラムに関する。
サーバとクライアントからなるサーバ・クライアントシステムが知られている。
特許文献1には、サーバが、クライアントが単独で使用するプログラムを、クライアントに送信し、クライアントが、そのプログラムを仮想マシンの仮想領域に格納して、そのプログラムを実行する、ソフトウェアレンタルシステムが記載されている。
このシステムでは、クライアントは、例えばWebブラウザを用いることなく、仮想マシンの仮想領域内のプログラムを単独で実行する。
特許文献2には、プログラムを管理する技術が記載されている。具体的には、特許文献2には、あるプロセスが、あるディレクトリ以下のものしか見ることができない(当該ディレクトリが最上位のディレクトリに見える)ようにする技術が記載されている。
一方、サーバが、クライアントのWebブラウザからの要求に応じて、プログラム本体を実行し、その実行結果をクライアントに送信し、クライアントのWebブラウザが、その実行結果の表示を行う、サーバ・クライアントシステムが普及している。
以下、クライアントのWebブラウザからの要求に応じてサーバ上で実行され、その実行結果をクライアントのWebブラウザに送信するプログラムを、「Webアプリケーション」と呼ぶ。
例えば、非特許文献1に記載の、Webブラウザを用いた文書、スプレッドシートおよびプレゼンテーションソフトウェア、並びに、非特許文献2に記載のメールクライアントが、Webアプリケーションとしてあげられる。
しかし、Webアプリケーションには、以下のような問題点がある。
まず、サーバがプログラムの本体を動作する。このため、クライアントが、ネットワークを介してサーバに接続されていない場合、クライアントは、Webアプリケーションを利用できない。
また、ネットワークの通信速度が遅い場合、クライアントの入力に対するプログラムの応答が遅くなる。
さらに、多くのクライアントが同じWebアプリケーションを同時に利用すると、サーバでの計算負荷およびネットワーク負荷が大きくなる。
上記問題点を解決するためのシステムが、特許文献3、特許文献4、非特許文献3、非特許文献4、非特許文献5、非特許文献6、および、非特許文献7に記載されている。
特許文献3、特許文献4、非特許文献3、非特許文献4、非特許文献5、非特許文献6、非特許文献7のそれぞれに記載のシステムでは、クライアントが、サーバと同様の機能を持つ。このため、クライアントがサーバと接続されていなくても、クライアントは、Webアプリケーションをオフラインで実行することができる。以下、各システムについて説明する。
特許文献3に記載のシステムは、WebブラウザおよびWebサーバを持つクライアントと、Webサーバを持つサーバと、から構成される。
クライアントが、ネットワークを介してサーバと接続されている場合、クライアント側のWebブラウザが、サーバ側のWebサーバにアクセスする。これにより、Webアプリケーションが実行され、また、クライアント側のWebサーバが、サーバ側のWebサーバと、データを交換する。
一方、クライアントが、ネットワークを介してサーバと接続されていない場合、クライアント側のWebブラウザは、クライアント側のWebサーバにアクセスする。これにより、Webアプリケーションがオフラインで実行される。
特許文献4に記載のシステムは、Webブラウザを利用した業務システムに関する。このシステムでは、オフライン業務ソフトウェアが、サーバからクライアントにダウンロードされる。オフライン時は、クライアントが、オフライン業務ソフトウェアを利用する。このため、オフラインで業務を実行することが可能となる。
非特許文献3に記載のシステムは、Webブラウザのプラグインとして、データベースを用いる。データベース内に、Webアプリケーションの実行に必要な情報が保存される。このシステムでは、Webアプリケーションのプログラムの本体が、JavaScript(登録商標)で記述される。Webアプリケーションのプログラムの本体が、Webブラウザ内で実行される。
これにより、クライアントが、ネットワークを介してサーバに接続されていない場合でも、クライアントは、データベース内の情報と、JavaScriptで記述されたプログラムと、を用いて、Webアプリケーションを実行することができる。
非特許文献4に記載のシステムは、Webブラウザのプラグインとして、JavaVMを搭載し、Webブラウザ内部で、Java(登録商標)で記述されたプログラムを実行する。
非特許文献5および6には、非特許文献4に記載のシステムと同様のシステムが記載されている。非特許文献5に記載の技術は、Flash(登録商標)をプラグインとして用い、言語としてActionScriptを用いる必要がある。非特許文献6に記載の技術は、NET Frameworkのサブセットをプラグインとして用い、言語としてNET Frameworkに対応したものを用いる必要がある。
非特許文献7に記載のシステムは、ブラウザから透過的にプログラムをダウンロードして実行する。Webブラウザ上のリンクをクリックすることで、必要なプログラムがダウンロードされ実行される。
再公表特許WO2002/033543号公報 特開2008−165377号公報 特開2000−276410号公報 特開2004−94682号公報
[平成20年7月16日検索]インターネット<URL:http://www.google.com/google-d-s/intl/ja/tour1.html> [平成20年7月16日検索]インターネット<URL: https://mail.google.com/mail/> [平成20年7月16日検索]インターネット<URL: http://gears.google.com/> [平成20年7月16日検索]インターネット<URL: http://java.sun.com/applets/> [平成20年7月16日検索]インターネット<URL: http://www.adobe.com/products/flash/about/> [平成20年7月16日検索]インターネット<URL: http://silverlight.net/> [平成20年7月16日検索]インターネット<URL: http://msdn.microsoft.com/en-us/library/aa751972(VS.85).aspx>
クライアントが、サーバ側にあるプログラムを受け付けて実行することによって、Webアプリケーションをオフラインで実行する技術、つまり、特許文献3、特許文献4、非特許文献3、非特許文献4、非特許文献5、非特許文献6および非特許文献7のそれぞれに記載の技術には、以下のような問題点があった。
クライアントが受け付けたプログラムにコンピュータウィルスが組み込まれていた場合、システムが破壊されてしまうという問題点があった。また、クライアントが受け付けたプログラムに不具合がある場合、このプログラムの不具合が、クライアント内の他のプログラムまたはデータに悪影響を与える可能性があるという問題があった。
つまり、クライアントは、サーバから受け付けたプログラムに対するセキュリティが低いという課題があった。
特許文献1に記載のシステムでも、例えば、クライアントが受け付けたプログラムにコンピュータウィルスが組み込まれていた場合、システムが破壊されてしまう。つまり、特許文献1に記載のシステムでも、クライアントは、サーバから受け付けたプログラムに対するセキュリティが低いという課題があった。
また、特許文献2、非特許文献1および2には、上記課題が生じるための前提となる技術、具体的には、クライアントが、サーバ側にあるプログラムを受け付けて実行することによって、Webアプリケーションをオフラインで実行する技術が記載されていない。
このため、特許文献2、非特許文献1および2に記載の技術では、当然のことながら、上記課題、つまり、クライアントは、サーバから受け付けたプログラムに対するセキュリティが低いという課題は解決されていない。
本発明の目的は、上述した課題を解決する、プログラム入手・実行クライアント、プログラム入手・実行方法および記録媒体を提供することにある。
本発明のプログラム入手・実行クライアントは、クライアントから所定の要求を受信した場合にサーバ側プログラムを実行して当該所定の要求に応じた実行結果を当該クライアントに送信するサーバと、通信可能なプログラム入手・実行クライアントであって、サーバ用格納手段と、他の格納手段と、を有する仮想マシンを生成する仮想マシン生成手段と、前記サーバから前記サーバ側プログラムを入手して当該サーバ側プログラムを前記サーバ用格納手段に格納する管理手段と、前記他の格納手段への書き込みを禁止しながら、前記仮想マシン上で前記サーバ用格納手段内のサーバ側プログラムを実行して、前記所定の要求を受信した場合に当該所定の要求に応じた実行結果を当該所定の要求の送信元に送信する特定手段を、当該仮想マシン上に生成する実行動作手段と、前記特定手段に前記所定の要求を送信し、当該特定手段から前記所定の要求に応じた実行結果を受信して表示する操作手段と、を含む。
本発明のプログラム入手・実行方法は、クライアントから所定の要求を受信した場合にサーバ側プログラムを実行して当該所定の要求に応じた実行結果を当該クライアントに送信するサーバと、通信可能なプログラム入手・実行クライアントが行うプログラム入手・実行方法であって、サーバ用格納手段と、他の格納手段と、を有する仮想マシンを生成し、前記サーバから前記サーバ側プログラムを入手して当該サーバ側プログラムを前記サーバ用格納手段に格納し、前記他の格納手段への書き込みを禁止しながら、前記仮想マシン上で前記サーバ用格納手段内のサーバ側プログラムを実行して、前記所定の要求を受信した場合に当該所定の要求に応じた実行結果を当該所定の要求の送信元に送信する特定手段を、当該仮想マシン上に生成し、前記特定手段に前記所定の要求を送信し、当該特定手段から前記所定の要求に応じた実行結果を受信して表示する。
本発明の記録媒体は、クライアントから所定の要求を受信した場合にサーバ側プログラムを実行して当該所定の要求に応じた実行結果を当該クライアントに送信するサーバと通信可能であり、かつ、Webブラウザが搭載されているコンピュータに、サーバ用格納手段と、他の格納手段と、を有する仮想マシンを生成する仮想マシン生成手順と、前記サーバから前記サーバ側プログラムを入手して当該サーバ側プログラムを前記サーバ用格納手段に格納する管理手順と、前記他の格納手段への書き込みを禁止しながら、前記仮想マシン上で前記サーバ用格納手段内のサーバ側プログラムを実行して、前記Webブラウザから前記所定の要求を受信した場合に当該所定の要求に応じた実行結果を当該Webブラウザに送信する特定手段を、当該仮想マシン上に生成する実行動作手順と、を実行させるプロクラムが記録されたコンピュータ読み取り可能な記録媒体である。
本発明によれば、クライアントがサーバ側にあるプログラムを受け付けて実行する場合におけるセキュリティを向上させることが可能になる。
本発明の第1の実施の形態の構成を示すブロック図である。 Webアプリケーションをオフラインで利用する際の、Webブラウザの画面遷移を示す図である。 非ブラウザアプリケーションを利用する際の、Webブラウザと非ブラウザアプリケーションの画面遷移を示す図である。 ユーザがプログラムを直接管理する際のブラウザの画面を示す図である。 Webアプリケーションをオフライン化する際の動作を示すシーケンス図である。 オフライン化したWebアプリケーションを利用する際の動作を示すシーケンス図である。 非ブラウザアプリケーションを実行する際の動作を示すシーケンス図である。 オフラインで非ブラウザアプリケーションを実行する際の動作を示すシーケンス図である。 本発明の第2の実施の形態の構成を示すブロック図である。
次に、発明を実施するための形態について図面を参照して詳細に説明する。
(第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を基礎とする優先権を主張し、その開示の全てをここに取り込む。
100 サーバ
101 Webサーバ
102 プログラム配信部
110 クライアント
111 Webブラウザ実行部
112 仮想マシン
112a 仮想マシン生成部
113 管理モジュール
114 プログラム実行部
115 プログラム管理部
116 要求受付・返答部
117 実行管理部
118 格納部
118a、118b サーバ用格納部
118c OS格納部
119 実行部
120 入出力部
121 実行動作部
122 管理部
123 操作部
900 サーバコンピュータ
910 クライアントコンピュータ

Claims (12)

  1. クライアントから所定の要求を受信した場合にサーバ側プログラムを実行して当該所定の要求に応じた実行結果を当該クライアントに送信するサーバと、通信可能なプログラム入手・実行クライアントであって、
    サーバ用格納手段と、他の格納手段と、を有する仮想マシンを生成する仮想マシン生成手段と、
    前記サーバから前記サーバ側プログラムを入手して当該サーバ側プログラムを前記サーバ用格納手段に格納する管理手段と、
    前記他の格納手段への書き込みを禁止しながら、前記仮想マシン上で前記サーバ用格納手段内のサーバ側プログラムを実行して、前記所定の要求を受信した場合に当該所定の要求に応じた実行結果を当該所定の要求の送信元に送信する特定手段を、当該仮想マシン上に生成する実行動作手段と、
    前記特定手段に前記所定の要求を送信し、当該特定手段から前記所定の要求に応じた実行結果を受信して表示する操作手段と、を含むプログラム入手・実行クライアント。
  2. 前記管理手段と前記実行動作手段とは、前記仮想マシンに含まれる、請求項1に記載のプログラム入手・実行クライアント。
  3. 前記他の格納手段は、前記仮想マシン用のオペレーティングシステムを格納するOS格納手段を含み、
    前記仮想マシンは、前記OS格納手段内のオペレーティングシステムで動作する、請求項1または2に記載のプログラム入手・実行クライアント。
  4. 前記OS格納手段は、前記サーバに格納されているオペレーティングシステムと同じ種類のオペレーティングシステムを格納する、請求項3に記載のプログラム入手・実行クライアント。
  5. 前記操作手段は、Webブラウザを用いることによって、前記サーバに前記所定の要求を送信し、前記サーバから当該所定の要求に応じた実行結果を受信して表示し、また、前記Webブラウザを用いることによって、前記特定手段に前記所定の要求を送信し、当該特定手段から前記所定の要求に応じた実行結果を受信して表示する、請求項1から4のいずれか1項に記載のプログラム入手・実行クライアント。
  6. Webブラウザを用いることによって、前記サーバに前記所定の要求を送信し、前記サーバから当該所定の要求に応じた実行結果を受信する通信手段をさらに含む、請求項1から4のいずれか1項に記載のプログラム入手・実行クライアント。
  7. クライアントから所定の要求を受信した場合にサーバ側プログラムを実行して当該所定の要求に応じた実行結果を当該クライアントに送信するサーバと、通信可能なプログラム入手・実行クライアントが行うプログラム入手・実行方法であって、
    サーバ用格納手段と、他の格納手段と、を有する仮想マシンを生成し、
    前記サーバから前記サーバ側プログラムを入手して当該サーバ側プログラムを前記サーバ用格納手段に格納し、
    前記他の格納手段への書き込みを禁止しながら、前記仮想マシン上で前記サーバ用格納手段内のサーバ側プログラムを実行して、前記所定の要求を受信した場合に当該所定の要求に応じた実行結果を当該所定の要求の送信元に送信する特定手段を、当該仮想マシン上に生成し、
    前記特定手段に前記所定の要求を送信し、当該特定手段から前記所定の要求に応じた実行結果を受信して表示する、プログラム入手・実行方法。
  8. 前記他の格納手段は、前記仮想マシン用のオペレーティングシステムを格納するOS格納手段を含み、
    前記仮想マシンは、前記OS格納手段内のオペレーティングシステムで動作する、請求項7に記載のプログラム入手・実行方法。
  9. 前記OS格納手段は、前記サーバに格納されているオペレーティングシステムと同じ種類のオペレーティングシステムを格納する、請求項8に記載のプログラム入手・実行方法。
  10. クライアントから所定の要求を受信した場合にサーバ側プログラムを実行して当該所定の要求に応じた実行結果を当該クライアントに送信するサーバと通信可能であり、かつ、Webブラウザが搭載されているコンピュータに、
    サーバ用格納手段と、他の格納手段と、を有する仮想マシンを生成する仮想マシン生成手順と、
    前記サーバから前記サーバ側プログラムを入手して当該サーバ側プログラムを前記サーバ用格納手段に格納する管理手順と、
    前記他の格納手段への書き込みを禁止しながら、前記仮想マシン上で前記サーバ用格納手段内のサーバ側プログラムを実行して、前記Webブラウザから前記所定の要求を受信した場合に当該所定の要求に応じた実行結果を当該Webブラウザに送信する特定手段を、当該仮想マシン上に生成する実行動作手順と、を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
  11. 前記他の格納手段は、前記仮想マシン用のオペレーティングシステムを格納するOS格納手段を含み、
    前記仮想マシンは、前記OS格納手段内のオペレーティングシステムで動作する、請求項10に記載の記録媒体。
  12. 前記OS格納手段は、前記サーバに格納されているオペレーティングシステムと同じ種類のオペレーティングシステムを格納する、請求項11に記載の記録媒体。
JP2010529688A 2008-09-19 2009-07-28 プログラム入手・実行クライアント、プログラム入手・実行方法およびプログラム Active JP5541160B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010529688A JP5541160B2 (ja) 2008-09-19 2009-07-28 プログラム入手・実行クライアント、プログラム入手・実行方法およびプログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2008241372 2008-09-19
JP2008241372 2008-09-19
PCT/JP2009/063411 WO2010032558A1 (ja) 2008-09-19 2009-07-28 プログラム入手・実行クライアント、プログラム入手・実行方法および記録媒体
JP2010529688A JP5541160B2 (ja) 2008-09-19 2009-07-28 プログラム入手・実行クライアント、プログラム入手・実行方法およびプログラム

Publications (2)

Publication Number Publication Date
JPWO2010032558A1 true JPWO2010032558A1 (ja) 2012-02-09
JP5541160B2 JP5541160B2 (ja) 2014-07-09

Family

ID=42039400

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010529688A Active JP5541160B2 (ja) 2008-09-19 2009-07-28 プログラム入手・実行クライアント、プログラム入手・実行方法およびプログラム

Country Status (2)

Country Link
JP (1) JP5541160B2 (ja)
WO (1) WO2010032558A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5852103B2 (ja) * 2011-04-27 2016-02-03 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路
WO2013042411A1 (ja) * 2011-09-22 2013-03-28 九州日本電気ソフトウェア株式会社 アプリケーション管理装置、アプリケーション管理方法、及びコンピュータ読み取り可能な記録媒体
JP6055366B2 (ja) * 2013-04-23 2016-12-27 株式会社Nttドコモ 仮想Webサーバプログラム及び機能代行方法
CN114327504A (zh) * 2021-12-01 2022-04-12 阿里巴巴(中国)有限公司 通信方法及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4242819B2 (ja) * 2004-10-06 2009-03-25 株式会社日立製作所 オフライン作業可能な端末を有する計算機システム
JP4324975B2 (ja) * 2006-09-27 2009-09-02 日本電気株式会社 負荷低減システム、計算機、及び負荷低減方法

Also Published As

Publication number Publication date
JP5541160B2 (ja) 2014-07-09
WO2010032558A1 (ja) 2010-03-25

Similar Documents

Publication Publication Date Title
US8161160B2 (en) XML-based web feed for web access of remote resources
EP3408745B1 (en) Automatically updating a hybrid application
JP6410280B2 (ja) ウェブサイト・アクセス方法、装置、およびウェブサイト・システム
EP2815311B1 (en) Using an application cache to update resources of installed applications
US20070260702A1 (en) Web browser architecture for virtual machine access
JP4857349B2 (ja) ポータル・システム内で非同期ポータル・ページを提供するための方法、システム、およびコンピュータ・プログラム
JP4748819B2 (ja) クライアントプログラム、端末、方法、サーバシステムおよびサーバプログラム
JP2019032883A (ja) ウェブアプリケーションを実施する方法、装置、サーバ、及びシステム
KR101661784B1 (ko) 웹 브라우저를 통한 애플리케이션으로의 컨텐츠 입력 메소드
JP6081472B2 (ja) 専用のキャッシュを管理するためのシステム及び方法
CA2839006C (en) Methods for making ajax web applications bookmarkable and crawlable and devices thereof
KR20130093006A (ko) 웹 애플리케이션 홈 버튼
US20110191431A1 (en) Method and system for updating display screens
JP2018045704A (ja) リモーティングセッションを通じた非サポートファイル形式の開封
KR20140038989A (ko) 자동화된 사용자 인터페이스 객체 변환 및 코드 생성
US8370467B1 (en) Method for seamlessly providing incremental application updates to users while serving continuous live traffic
JP2007328419A (ja) 制御プログラムおよび通信システム
AU2016202576B2 (en) Techniques for evaluating applications through use of an auxiliary application
JP5936103B2 (ja) クライアントでJavaメソッドを呼び出すシステム、コンピュータ、方法及びプログラム
JP5541160B2 (ja) プログラム入手・実行クライアント、プログラム入手・実行方法およびプログラム
US11561814B2 (en) Browser-driven capture of application installations for application virtualization
CN105389096A (zh) 基于浏览器的数据交互方法及装置
Zhang et al. Elastic HTML5: Workload offloading using cloud-based web workers and storages for mobile devices
JP6806351B1 (ja) 情報処理方法、コンピュータプログラム及び情報処理装置
CN110362322B (zh) 电子装置与其离线更新程序的方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120611

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131008

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131129

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140408

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140408

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140421

R150 Certificate of patent or registration of utility model

Ref document number: 5541160

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150