(57)【特許請求の範囲】
【請求項１】
モバイルＯＳ上で動作可能なアプリケーションを実行するアプリケーション実行装置において、
前記アプリケーションの状態制御を行い、前記アプリケーションの実行時のメモリ状態とステータス情報とを示すアプリケーションデータを他のアプリケーション実行装置との間で共有するために前記アプリケーション実行装置で必要となる処理を実行し、前記アプリケーションの操作終了が入力されたときに、前記アプリケーション実行装置での前記アプリケーションを終了しするとともに前記共有された前記アプリケーションデータに基づいて前記他のアプリケーション実行装置において前記アプリケーションの実行を継続させるために前記他のアプリケーション実行装置に対して第１の通知を送信し、前記アプリケーションの操作開始が入力されたときに、前記他のアプリケーション実行装置に対して前記アプリケーションの実行を終了させるための第２の通知を送信するとともに前記共有されているアプリケーションデータに基づいて前記アプリケーションを起動する連携機能手段と、
終状態を保持するキャッシュメモリと、を備え、
前記他のアプリケーション実行装置との間での前記アプリケーションデータの共有に失敗したときに、前記キャッシュメモリに取得されたアプリケーションデータに基づいて前記アプリケーションを起動することを特徴とするアプリケーション実行装置。
【請求項２】
モバイルＯＳ上で動作可能なアプリケーションを実行する第１の処理装置と、第２の処理装置とがネットワークを介して接続したアプリケーション実行システムにおいて、
前記第１の処理装置は、前記第１の処理装置での前記アプリケーションの状態制御を行い、前記アプリケーションの実行時のメモリ状態とステータス情報とを示すアプリケーションデータを前記第２の処理装置との間で共有するために前記第１の処理装置で必要となる処理を実行し、前記アプリケーションの操作終了が入力されたときに、前記第１の処理装置での前記アプリケーションを終了して前記第２の処理装置に対して第１の通知を送信し、前記アプリケーションの操作開始が入力されたときに、前記第２の処理装置に対して第２の通知を送信するとともに前記共有されているアプリケーションデータに基づいて前記第１の処理装置において前記アプリケーションを起動する第１の連携機能手段と、
終状態を保持するキャッシュメモリと、
を備え、
前記第２の処理装置は、前記第２の処理装置での仮想実行環境下における前記アプリケーションの実行に関する状態制御を行い、前記アプリケーションデータを前記第１の処理装置との間で共有するために前記第２の処理装置で必要となる処理を実行し、前記第１の処理装置から前記第１の通知があったときに、前記共有された前記アプリケーションデータに基づいて前記第２の処理装置において前記アプリケーションを起動し、前記第１の処理装置から前記第２の通知があったときに前記第２の処理装置における前記アプリケーションの実行を終了する第２の連携機能手段を備え、
前記第１の処理装置は、前記第２の処理装置との間での前記アプリケーションデータの共有に失敗したときに、前記キャッシュメモリに取得されたアプリケーションデータに基づいて前記アプリケーションを起動することを特徴とするアプリケーション実行システム。
【請求項３】
ファイルシステムに実装されたファイルを前記第１の処理装置と前記第２の処理装置との間で共有し、前記ファイルに前記アプリケーションデータを格納することにより前記アプリケーションデータを前記第１の処理装置と前記第２の処理装置との間で共有する、請求項２に記載のアプリケーション実行システム。
【請求項４】
前記アプリケーションデータにおける差分情報または更新情報を前記第１の処理装置と前記第２の処理装置との間で共有することにより前記アプリケーションデータを前記第１の処理装置と前記第２の処理装置との間で共有する、請求項２または３に記載のアプリケーション実行システム。
【請求項５】
ネットワークを介してサーバと接続し、終状態を保持するキャッシュメモリを備え、アプリケーションを実行するコンピュータに、
前記アプリケーションの状態制御を行う処理と、
前記アプリケーションの実行時のメモリ状態とステータス情報とを示すアプリケーションデータを前記サーバとの間で共有するために当該コンピュータにおいて実行することが必要となる処理と、
前記アプリケーションの操作終了が入力されたときに、前記コンピュータでの前記アプリケーションを終了するとともに、前記共有された前記アプリケーションデータに基づいて前記サーバにおいて前記アプリケーションの実行を継続させるために前記サーバに対して第１の通知を送信する処理と、
前記アプリケーションの操作開始が入力されたときに、前記サーバに対して前記アプリケーションの実行を終了させるための第２の通知を送信するとともに、前記共有されているアプリケーションデータに基づいて前記アプリケーションを起動する処理と、
前記サーバとの間での前記アプリケーションデータの共有に失敗したときに、前記キャッシュメモリに取得されたアプリケーションデータに基づいて前記アプリケーションを起動する処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スマートフォンやタブレット端末などのモバイル（移動）端末におけるアプリケーションプログラムの実行に関し、特に、モバイル端末上で実行されるアプリケーションのバックグラウンド処理をサーバで実行できるようにする技術に関する。
【背景技術】
【０００２】
スマートフォンやタブレット端末などのモバイル端末は、リチウムイオン電池などの二次電池（バッテリー）からの電力で動作し、モバイルＯＳ（オペレーティングシステム）によるプロセス管理及びメモリ管理の下で各種のアプリケーション（ＡＰ；アプリあるいはアプリケーションプログラムとも呼ばれる）を実行可能である。典型的なモバイル端末では、フロントエンドジョブとして１つのアプリケーションの画面がその端末のディスプレイに表示されるが、同時に、種々のアプリケーションのバックグラウンド処理を実行することができる。例えば、モバイルＯＳの１つであるＡｎｄｒｏｉｄ（登録商標）ＯＳを用いるモバイル端末では、アプリケーションのＧＵＩ（グラフィカルユーザインタフェース）処理に相当するActivityというコンポーネントが実装されて画面処理を実行するが、ユーザ操作によってそのアプリケーションの画面がディスプレイから消えた後も、バックグラウンドで処理を継続できるようになっている。
【０００３】
図９は、モバイル端末におけるアプリケーションのバックグラウンド処理を説明する図である。ここに示した例では、モバイル端末１１において実行されるアプリケーション１２は、ネットワークを介してウェブサイト９０に接続してウェブサイト９０から情報を取得し、処理を行い、処理結果を画面に表示するものである。モバイル端末１１には、フラッシュメモリなどのメモリカードなどからなるストレージ（記憶装置）１３も設けられている。
【０００４】
ユーザ操作（ステップ１０１）によってアプリケーション１２が起動されると、アプリケーション１２は、フロントエンドジョブとして実行され、ウェブサイト９０にアクセスして情報を取得し、処理結果を画面に表示する。ユーザはこのアプリケーション１２を利用することができる（ステップ１０２）。ユーザ操作終了が入力されると（ステップ１０３）、アプリケーション１２はモバイル端末１１の表示画面上からは消えるものの、バックグラウンド処理を続行し、ウェブサイト９０からの情報取得を継続して実行する（ステップ１０４）。ユーザ操作終了は、例えば、アプリケーションのＧＵＩにおける終了の選択や、他のアプリケーションを起動することなどによって入力される。バックグラウンド処理における情報取得は、例えば、ポーリング動作などによって行われる。その後、ユーザがこのアプリケーションを再開する操作を行うと（ステップ１０５）、アプリケーション１２は再びフロントエンドジョブとしてウェブサイト９０からの情報の取得の処理及び結果の画面への表示を行う（ステップ１０６）。この状態は、次にユーザ操作終了（ステップ１０７）が入力するまで継続する。
【０００５】
モバイル端末にインストールされるアプリケーションの数の増加に伴って、実行されるバックグラウンド処理の処理量も増加し、モバイル端末の電池消費の加速や処理速度の低下などの問題が生じている。一般にモバイルＯＳでは、アプリケーションの実行を制御するタスクマネージャと呼ばれる特別なプログラムが実装されており（例えば、非特許文献１を参照）、アプリケーションはこのタスクマネージャによって動作（例えば起動と停止）が制御されるようになっている。モバイル端末にインストールされることを前提とするアプリケーションをモバイルアプリケーションと呼ぶ。一般的なモバイルアプリケーションは、アプリケーションの動作を完全に停止した際にその停止直前の状態からそのアプリケーションを再度開始することができるようにするために、停止時点での実行メモリのデータ（いわゆるメモリイメージ）及びアプリケーションのステータス情報をストレージ１３内に保存するデータ永続化処理を行い、また、ストレージ１３内に保存されたデータを実行メモリに展開しステータス情報を読出すデータ復元処理をアプリケーションの再開時に行うように構成されている。以下、実行メモリのデータとステータス情報をまとめてアプリケーションデータと呼ぶことにする。永続化処理と復元処理を実行することによって、アプリケーションの再開時には、アプリケーションを停止した時点と同じメモリ状態、ステータス状態となるので、アプリケーションは、実行停止時点の状態からそのまま実行を再開することになる。
【０００６】
図１０は、タスクマネージャを備えるモバイル端末におけるアプリケーションの実行を説明する図である。モバイル端末１１で実行されるアプリケーション１２は、図９において説明したものと同様のものである。モバイル端末１１は、ストレージ１３を備えるとともに、タスクマネージャ１４が実装されている。ユーザ操作（ステップ１１１）によってアプリケーション１２が起動されてフロントエンドジョブとして実行されると、アプリケーション１２は、ウェブサイト９０からの情報取得と処理結果の画面表示とを実行し、ユーザによるこのアプリケーション１２の利用を可能にする（ステップ１１２）。ユーザ操作終了が入力されると（ステップ１１３）、タスクマネージャ１４がユーザ操作終了の入力を検知し（ステップ１１４）、アプリケーション１２の動作を終了させる（ステップ１１５）。データ永続化処理により、アプリケーションのデータがストレージ１３に保存される（ステップ１１６）。
【０００７】
その後、ユーザ操作によってアプリケーション１２の再開の指示が入力されると（ステップ１１７）、ストレージ１３からアプリケーションデータが復元され（ステップ１１８）、アプリケーション１２は、先にステップ１１５で終了した状態から動作を再開し、ウェブサイト９０からの情報取得などを実行する（ステップ１１９）。アプリケーション１２は、次にユーザ操作終了（ステップ１２０）が入力するまで、実行を継続する。
【０００８】
しかしながら、タスクマネージャ１４によりアプリケーション１２を完全に終了させた場合には、バックグラウンド処理がなされないので消費電力を削減することはできるものの、アプリケーション１２の再開時に最新情報がアプリケーション１２に与えられていない。そのため、アプリケーション１２を停止していた期間に発生した情報のすべてをウェブサイト９０から取得し、取得したデータに対する処理を一括して行わなければならなくなり、それらのための接続時間やデータ処理時間が長くなり、その結果、モバイルアプリケーション特有の速度感が失われ、特に、最新データの表示までに時間がかかるようになる、という問題が生じる。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】金子  寛人、「スマホ＆携帯の電池切れ対策」、日経パソコン、2011年7月11日号、62〜69頁
【発明の概要】
【発明が解決しようとする課題】
【００１０】
モバイル端末においては、アプリケーションのバックグラウンド処理を実行させると、その分、電池消費が加速し、また、フロントエンドで実行しているアプリケーションの処理速度の低下などの問題が生じる。その一方で、タスクマネージャなどにより、バックグラウンド処理を実行させずにアプリケーションを停止した場合には、アプリケーションの再開時に大量の処理を実行しなければならないので、そのアプリケーション特有の速度感が失われる、という問題を生じる。
【００１１】
本発明の目的は、アプリケーション自体を改変することなく、モバイル端末における電池消費を削減し、しかもアプリケーションの処理の高速化を達成することができるアプリケーション実行装置、システム及びプログラムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明のアプリケーション実行装置は、モバイルＯＳ上で動作可能なアプリケーションを実行するアプリケーション実行装置において、アプリケーションの状態制御を行い、アプリケーションの実行時のメモリ状態とステータス情報とを示すアプリケーションデータを他のアプリケーション実行装置との間で共有するために前記アプリケーション実行装置で必要となる処理を実行し、アプリケーションの操作終了が入力されたときに、アプリケーション実行装置でのアプリケーションを終了しするとともに共有されたアプリケーションデータに基づいて他のアプリケーション実行装置においてアプリケーションの実行を継続させるために他のアプリケーション実行装置に対して第１の通知を送信し、アプリケーションの操作開始が入力されたときに、前記他のアプリケーション実行装置に対して前記アプリケーションの実行を終了させるための第２の通知を送信するとともに共有されているアプリケーションデータに基づいてアプリケーションを起動する連携機能手段と、終状態を保持するキャッシュメモリと、を備え、他のアプリケーション実行装置との間でのアプリケーションデータの共有に失敗したときに、キャッシュメモリに取得されたアプリケーションデータに基づいてアプリケーションを起動することを特徴とする。
【００１４】
本発明のアプリケーション実行システムは、モバイルＯＳ上で動作可能なアプリケーションを実行する第１の処理装置と、第２の処理装置とがネットワークを介して接続したアプリケーション実行システムにおいて、第１の処理装置は、第１の処理装置でのアプリケーションの状態制御を行い、アプリケーションの実行時のメモリ状態とステータス情報とを示すアプリケーションデータを第２の処理装置との間で共有するために第１の処理装置で必要となる処理を実行し、アプリケーションの操作終了が入力されたときに、第１の処理装置でのアプリケーションを終了して第２の処理装置に対して第１の通知を送信し、アプリケーションの操作開始が入力されたときに、第２の処理装置に対して第２の通知を送信するとともに共有されているアプリケーションデータに基づいて第１の処理装置においてアプリケーションを起動する第１の連携機能手段と、終状態を保持するキャッシュメモリと、を備え、第２の処理装置は、第２の処理装置での仮想実行環境下におけるアプリケーションの実行に関する状態制御を行い、アプリケーションデータを第１の処理装置との間で共有するために第２の処理装置で必要となる処理を実行し、第１の処理装置から第１の通知があったときに、共有されたアプリケーションデータに基づいて第２の処理装置においてアプリケーションを起動し、第１の処理装置から第２の通知があったときに第２の処理装置におけるアプリケーションの実行を終了する第２の連携機能手段を備え、第１の処理装置は、第２の処理装置との間でのアプリケーションデータの共有に失敗したときに、キャッシュメモリに取得されたアプリケーションデータに基づいてアプリケーションを起動することを特徴とする。
【発明の効果】
【００１５】
本発明では、上記の構成を採用し、アプリケーション実行装置と他のアプリケーション実行装置との間で、あるいはモバイル端末とサーバとの間でアプリケーションデータを共有できるようにすることにより、アプリケーションを改変することなく、アプリケーションのバックグラウンド処理の実行をサーバ側にシームレスに移行でき、モバイル端末側での電池消費を削減することができる。特に、バックグラウンド処理がポーリング通信などのデータの有無によらずに通信を行うような処理の場合に、モバイル端末の電池消費を大きく削減することができる。また本発明によれば、モバイル端末でのアプリケーションの再起動を、バックグラウンドアプリケーションでの動作と同程度に高速に行えるようになるようになる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施の一形態のアプリケーション実行方法が適用されるシステムの全体構成の一例を示すブロック図である。
【図２】（ａ）はモバイル端末の論理構成を示すブロック図であり、（ｂ）はサーバ上に実装される仮想モバイル端末の論理構成を示すブロック図である。
【図３】モバイル端末から仮想モバイル端末へのアプリケーション実行のシームレスな移行を説明する図である。
【図４】モバイル端末から仮想モバイル端末へのアプリケーション実行のシームレスな移行の処理を説明するシーケンス図である。
【図５】仮想モバイル端末からモバイル端末へのアプリケーション実行のシームレスな移行を説明する図である。
【図６】仮想モバイル端末からモバイル端末へのアプリケーション実行のシームレスな移行の処理を説明するシーケンス図である。
【図７】モバイル端末及び仮想モバイル端末の実装例を説明する図である。
【図８】課金モデルの一例を示す図である。
【図９】モバイル端末におけるアプリケーションのバックグラウンド処理を示すシーケンス図である。
【図１０】タスクマネージャを備えるモバイル端末におけるアプリケーション実行を示すシーケンス図である。
【発明を実施するための形態】
【００１７】
次に、本発明の実施の形態について、図面を参照して説明する。
【００１８】
図１は、本発明の実施の一形態のアプリケーション実行方法が適用されるシステムの全体構成を示している。ネットワーク１０に対し、複数のモバイル端末１１が接続している。各モバイル端末１１は、二次電池で駆動され無線によってネットワーク１０に接続する物理的な実体を有するデバイスである。ネットワーク１０には、データセンタなどに配置されたサーバ２０とウェブサイト９０なども接続している。サーバ２０には、仮想実行環境として複数の仮想モバイル端末２１が、モバイル端末１１と例えば１対１の関係になるように構築されている。ここでのサーバ２０は、例えば、クラウド基盤上のものとして構成することができる。本実施形態では、モバイル端末１１におけるアプリケーション（ＡＰ）のバックグラウンド処理を、サーバ２０上の仮想モバイル端末２１との間でシームレスに実行し、さらに、モバイル端末１１と仮想モバイル端末２１との間でのデータ共有の仕組みを構築することによって、モバイル端末１１でのバックグラウンド処理の実行を抑制してモバイル端末１１の電池消費を低減する。また、バックグラウンド処理自体は仮想モバイル端末２１で実行しておりその結果をデータ共有によってモバイル端末１１において利用可能とするので、モバイル端末１１でのアプリケーション実行再開時に直ちに最新のデータを利用できるようになって、アプリケーションの処理速度が向上し、アプリケーションの高速起動が可能になる。
【００１９】
図２（ａ）はモバイル端末１１の論理構成の一例を示している。モバイル端末１１は、モバイルＯＳ（不図示）によって制御されるものであり、モバイルＯＳ上で動作するアプリケーション１２が実装されている。また、モバイル端末１１と仮想モバイル端末２１との間でバックグラウンド処理をシームレスに実行しデータ共有を実現するための連携機能１５が、アプリケーション１２からは独立したプログラムとしてモバイル端末１１に実装されている。モバイル端末１１には、モバイルＯＳによって制御される記憶装置として、フラッシュメモリなどのメモリカードなどからなるストレージ（記憶装置）１３も設けられている。ストレージ１３は、モバイルＯＳでのファイルシステムが構築されるものであってもよいし、他の形態でデータ等を格納するものであってもよい。
【００２０】
ここで連携機能１５について説明する。連携機能１５は、例えば、モバイルＯＳにおけるライブラリの１つとして実現できるものであり、図１０に示したモバイル端末におけるタスクマネージャの機能を拡張したものである。連携機能１５は、（１）アプリケーション１２の動作状況がフロントエンド動作なのかバックグラウンド動作なのかあるいは終了動作なのかを把握する機能と、（２）アプリケーション１２に対して起動及び終了を指示するアプリケーション状態制御機能と、（３）アプリケーション１２の永続化処理のためにアプリケーションデータを取得する機能と、（４）モバイル端末１１と仮想モバイル端末２１との間でのデータ共有あるいはデータ同期を実際に実行するストレージ共有機能１６と、（５）永続化処理のためにアプリケーションデータをストレージ１３に書き込むデータ反映機能と、を備えている。これらの機能は、連携機能１５の中においてそれぞれ機能ブロックとして実装されるものである。
【００２１】
図２（ｂ）はサーバ２０において構築される仮想モバイル端末２１の論理構成を示している。仮想モバイル端末２１は、モバイル端末１１と同等の機能を仮想実行環境の下で実現したものであり、モバイル端末１１のモバイルＯＳと同等のＯＳによって制御され、このＯＳ上で動作するアプリケーション２２が実装されている。アプリケーション２２は、モバイル端末１１のアプリケーション１２と同じもの（少なくともバックグラウンド処理に関して同一の処理を実行するもの）である。また、仮想モバイル端末２１には、モバイル端末１１の連携機能１５と連携してモバイル端末１１と仮想モバイル端末２１との間でバックグラウンド処理をシームレスに実行しデータ共有を実現するための連携機能２５が、アプリケーション２２からは独立したプログラムとして実装されている。連携機能２５の内部には、モバイル端末１１と仮想モバイル端末２１との間でのデータ同期あるいはデータ共有を実際に実行するストレージ共有機能２６も含んでいる。ストレージ２３は、仮想モバイル端末２１におけるアプリケーションデータを含むデータを格納するためのものであり、仮想モバイル端末２１におけるＯＳでのファイルシステムが構築されるものであってもよいし、他の形態でデータ等を格納するものであってもよい。ストレージ２３は、実装形態としては、例えば、サーバ２０に設けられたＨＤＤ（ハードディスク装置）内の記憶領域として確保されるものである。
【００２２】
連携機能２５は、連携機能１５と同様のものであるが、アプリケーションのバックグラウンド処理のみを行う仮想モバイル端末２１に実装されるものであるから、アプリリケーションのフロントエンド動作に関連する機能は含んでいなくてよい。
【００２３】
次に、本実施形態におけるアプリケーションの実行の動作について、図３〜図６を用いて説明する。ここでは、アプリケーション１２，２２は、いずれも、連携機能１５，２５から終了を指示された場合にストレージ１３，２３に対してアプリケーションデータの書込みを行う永続化処理と、起動を指示された場合にストレージ１３，２３からアプリケーションデータを読出す復元処理を実行できるものであるとする。現在、モバイルＯＳの下で動作するアプリケーションでは、永続化処理及び復元処理の機能を備えているものは一般的である。ここでは、図９及び図１０に示したものと同様に、ネットワークを介してウェブサイト９０に接続してウェブサイト９０から情報を取得し、処理を行い、処理結果を画面に表示するアプリケーションを例に挙げて説明する。
【００２４】
まず、図３及び図４により、モバイル端末１１からサーバ２０上の仮想モバイル端末２１へのアプリケーション実行のシームレスな移行について説明する。ここでは、モバイル端末１１でのアプリケーションのバックグラウンド処理動作をサーバ２０側で実行させることにより、モバイル端末１１での電池消費を低減する。
【００２５】
モバイル端末１１に対するユーザ操作（図４のステップ１３１）によってアプリケーション１２が起動し、アプリケーション１２は、フロントエンドジョブとして実行され、ウェブサイト９０にアクセスして情報を取得し、処理結果をモバイル端末１１の画面に表示する。ユーザはこのアプリケーション１２を利用することができる（ステップ１３２）。ユーザ操作終了が入力すると（ステップ１３３）、連携機能２５がユーザ操作終了の入力を検知し（ステップ１３４）、図３の［１］に示すようにアプリケーション１２の動作を終了させる（ステップ１３５）。図３の［２］に示すように、連携機能１５はデータ永続化処理を実行し、アプリケーションデータがストレージ１３に保存される（ステップ１３６）。ここでストレージ１３に保存されたアプリケーションデータを考えると、このアプリケーションデータをモバイル端末１１とは異なる処理装置の記憶装置に転送し、その処理装置においてその記憶装置からアプリケーションデータの復元処理を行い、復元したアプリケーションデータに基づいてアプリケーション１２と同じ処理を実行したとすると、結局は、アプリケーション１２の実行がモバイル端末１１からそのモバイル端末１１とは異なる処理装置にマイグレーションされたことになる。この実施形態では、モバイル端末１１とは異なる処理装置がサーバ２０上の仮想モバイル端末２１であるとして、仮想モバイル端末２１に対してアプリケーション１２のマイグレーションを行う。
【００２６】
このマイグレーションのために、モバイル端末１１の連携機能１５は、ストレージ１３に保存されたアプリケーションデータを取得し（ステップ１３７）、ネットワーク１０を介して、サーバ２０上の仮想モバイル端末２１の連携機能２５に対してアプリケーションデータを通知する（ステップ１３８）。これを受けて仮想モバイル端末２１の連携機能２５は、受け取ったアプリケーションデータをストレージ２３に反映する（ステップ１３９）。これにより、図３の［２’］に示すように、モバイル端末１１と仮想モバイル端末２１との間でアプリケーションデータに関しストレージ１３，２３に格納されている情報が同期し、モバイル端末１１と仮想モバイル端末２１とはアプリケーションデータを情報として共有することになる。また、ステップ１３８でのアプリケーションデータの通知は、仮想モバイル端末２１に対し、そのアプリケーションデータに基づいてアプリケーション２２を起動することを指示するを意味する（図３の［３］）。そこで連携機能２５は、図３の［４］に示すようにアプリケーション２２を起動し（ステップ１４０）、アプリケーション２２はストレージ２３からアプリケーションデータを復元して（ステップ１４１）、実行を開始する（ステップ１４２）。ここでアプリケーション２２は、アプリケーション１２でのバックグラウンド処理と同じ処理を実行し、ウェブサイト９０からの情報取得を継続して実行する。
【００２７】
以上の処理により、モバイル端末１１から仮想モバイル端末２１へのアプリケーションのマイグレーションが実現したことになる。ここでは、モバイル端末１１側でアプリケーション１２が終了した時の実行結果とそのときのメモリイメージとを表しているアプリケーションデータについて、モバイル端末１１のストレージ１３と仮想モバイル端末２１のストレージ２３間で同期させ、その後、仮想モバイル端末２１においてアプリケーションデータの復元処理を行い、アプリケーション２２を起動している。言い換えれば、アプリケーションのプログラムコード自体はマイグレーションの対象とはなっていない。モバイル端末１１でのアプリケーション終了時のメモリ状態が仮想モバイル端末２１で復元されるので、仮想モバイル端末２１ではアプリケーションの継続動作が可能となる。
【００２８】
次に、図５及び図６を用いて、上述のように仮想モバイル端末２１においてアプリケーション２２が実行されているとして、モバイル端末１１においてアプリケーション１１を再度起動した場合の処理を説明する。この場合、アプリケーション実行が仮想モバイル端末２１からモバイル端末１１にシームレスに移行する。
【００２９】
図４のステップ１４２に示すように、仮想モバイル端末２１上でアプリケーション２２がウェブサイト９０から情報を取得する処理を実行しているものとする。ここで、図５の［１］に示すようにユーザ操作によりアプリケーション起動の指示がモバイル端末１１に入力されると（図６のステップ１５１）、モバイル端末１１の連携機能１５はこのユーザ操作の開始を検知し（ステップ１５２）、仮想モバイル端末２２の連携機能２５に対してアプリケーションデータを要求する（ステップ１５３）。このアプリケーションデータの要求は、図５の［２］に示すように、仮想モバイル端末２１に対するアプリケーションの終了指示でもある。その結果、仮想モバイル端末２１の連携機能２５は、アプリケーション２２の動作を終了させる（ステップ１５４）。図５の［３］に示すように、連携機能２５はデータ永続化処理を実行し、アプリケーションデータがストレージ２３に保存される（ステップ１５５）。次に、連携機能２５は、ストレージ２３に保存されたアプリケーションデータを取得し（ステップ１５６）、ネットワーク１０を介して、モバイル端末１１の連携機能１５に対してアプリケーションデータを通知する（ステップ１５７）。これを受けてモバイル端末１１の連携機能１５は、受け取ったアプリケーションデータをストレージ１３に反映する（ステップ１５８）。これにより、図５の［３’］に示すように、仮想モバイル端末２１とモバイル端末１１との間でアプリケーションデータに関しストレージ２３，１３に格納されている情報が同期し、仮想モバイル端末２１とモバイル端末１１とはアプリケーションデータを情報として共有することになる。情報が同期されたのち、連携機能１５は、図５の［４］に示すようにアプリケーション１２を起動し（ステップ１５９）、アプリケーション１２はストレージ１３からアプリケーションデータを復元する（ステップ１６０）。以上の処理によって、仮想モバイル端末２１からモバイル端末１１へのアプリケーションのマイグレーションが実現したことになる。この段階では、モバイル端末１１上においてアプリケーション１２はフロントエンドでは動作してはいない。次に、ユーザ操作が入力すると（ステップ１６１）、アプリケーション１２はフロントエンドでの動作を開始し、ウェブサイト９０からの情報取得を行って、ユーザによるアプリケーション利用を可能にする（ステップ１６２）。この状態は、次にユーザ操作終了（ステップ１６３）が入力するまで継続する。
【００３０】
図５及び図６に示した処理においても、アプリケーションのプログラムコード自体はマイグレーションの対象とはなっておらず、アプリケーションデータについて、仮想モバイル端末２１のストレージ２３とモバイル端末１１のストレージ１３間で同期させ、その後、モバイル端末１１においてアプリケーションデータの復元処理を行い、アプリケーション１２を起動している。この場合も、モバイル端末１１でのアプリケーションの継続動作が可能となっている。
【００３１】
次に、本実施形態でのストレージ１３，２３でのデータ同期、データ共有の機構について説明する。上述した説明から明らかなように、モバイル端末１１と仮想モバイル端末２１との間でアプリケーション実行をシームレスに移行するためには、一方の端末においてアプリケーションの動作を終了させて永続化処理を行い、そのときのアプリケーションデータを他方の端末のストレージに転送して他方の端末において復元処理を行えばよい。しかしながら、アプリケーションの実行をモバイル端末１１と仮想モバイル端末２１との間で切り替えるたびに、その時点でのアプリケーションデータの全体を相手方の端末に転送するのは、アプリケーションデータのサイズが大きい場合には効率が悪く、アプリケーションの高速起動の妨げともなり得る。ユーザにとってはモバイル端末１１でのアプリケーション起動の速度感が重要であるから、特に、仮想モバイル端末２１からモバイル端末１１へのアプリケーションデータ通知の効率化、高速化が望まれる。
【００３２】
そこで、アプリケーションデータの全体を１回で送信することを避けて処理の効率化を図るために、例えば、アプリケーションデータをファイルに格納してそのファイル自体をモバイル端末１１と仮想モバイル端末２１との間で共有することが考えられる。その場合、共有対象のファイルをファイルシステムとして、モバイル端末１１では連携機能１５内のストレージ共有機能１６にマウントポイントを設け、仮想モバイル端末２１では連携機能２５内のストレージ共有機能２６にマウントポイントを設け、それらのマウントポイントに共有対象のファイルをマウントしてしまえばよい。具体的な実装としては、モバイル端末１１やサーバ２０とは別個に設けられたネットワークストレージをモバイル端末１１のモバイルＯＳと仮想モバイル端末２１のＯＳとがマウントするものや、仮想モバイル端末２１のストレージ２３をモバイル端末１１のストレージ共有機能１６内にマウントするものがある。仮想モバイル端末２１のストレージ２３をモバイル端末１１にマウントする場合には、モバイル端末１１側にキャッシュ機能を持たせるようにしてもよい。
【００３３】
あるいは、モバイル端末１１のストレージ１３に格納されているアプリケーションデータと仮想モバイル端末２１のストレージ２３に格納されているアプリケーションデータとの差分情報あるいは更新情報のみをモバイル端末１１と仮想モバイル端末２１との間で共有することで、アプリケーションデータの全体を１回で送信することを避けて処理の効率化を図ることができる。共有の形態としては、例えば、差分情報あるいは更新情報をモバイル端末１１と仮想モバイル端末２１との間で転送することが考えられる。この場合、モバイル端末１１でのアプリケーション１２の起動時にすべての差分情報を送信すると処理が遅くなる恐れがあるので、仮想モバイル端末２１においてアプリケーション２２が動作している期間中に適度なタイミングで差分情報あるいは更新情報をモバイル端末１１に送信し、この送信の都度、モバイル端末１１においてストレージ１３内のアプリケーションデータを更新するようにしてもよい。本実施形態では、データ共有を実現する連携機能１５，２５によって差分情報や更新情報の送信やそれに基づくデータ更新を実行するので、モバイル端末１１においてアプリケーション１２が動作していなくても、アプリケーションデータの更新が可能になる。アプリケーションが対象とするデータのフォーマット（例えば、テキストデータなのか、データベースのデータなのか、静止画像データなのか、動画像データなのか）に応じて、差分情報や更新情報の構成を最適化することによって、差分情報などの送信に要する時間を短縮でき、アプリケーションのより高速な起動と処理とを可能にする。また、アプリケーションデータの差分情報や更新情報の共有の形態としては、上述したファイルシステムを用い、そのファイルシステムに実装されたファイルに差分情報あるいは更新情報を格納し、このファイルをモバイル端末１１と仮想モバイル端末２１が共有するという形態もある。ファイル共有による形態によれば、差分情報などをモバイル端末１１と仮想モバイル端末２１との間で実際に転送しなくてよくなるので、差分情報などのファイルサイズが大きい場合に処理の効率化を図ることができる。
【００３４】
モバイル端末１１は、一般に無線によってネットワーク１０に接続しており、モバイル端末１１の移動中にサーバ２０との接続が遮断されるなどの可能性もある。その場合、モバイル端末１１と仮想モバイル端末２１との間のアプリケーションデータの共有が途中で失敗することになる。そのような場合に備え、終状態保持機能としてアプリケーションデータを一時保存するキャッシュメモリをモバイル端末１１に設け、仮想モバイル端末２１との間でのアプリケーションデータの共有に失敗したときに、キャッシュメモリに保持されているアプリケーションデータに基づいてアプリケーション１２を起動するようにしてもよい。このように終状態保持機能を設けると、アプリケーションデータの共有に失敗した場合に、仮想モバイル端末２１で実行されたバックグラウンド処理の結果は反映されないが、アプリケーションの動作は確保できる。このような構成は、最終ステータスが重要なアプリケーション（例えば、Ｔｗｉｔｔｅｒ（登録商標）ＡＰＩ（アプリケーション・プログラミング・インタフェース））の場合に有効である。
【００３５】
図７は、モバイル端末１１及び仮想モバイル端末２１でのソフトウェア実装の一例を示している。モバイル端末１１も仮想モバイル端末２１も、ソフトウェア階層として、カーネルの上にライブラリがあり、ライブラリの上にミドルウェアがあり、最上位にActivityが位置している。モバイル端末１１においてライブラリには、汎用のライブラリｌｉｂｃと連携機能１５が配置されている。カーネルには、ファイル関係の機能として、ＶＦＳ（仮想ファイルシステム；Virtual File System）とＬｉｎｕｘ（登録商標）の１モジュールであるＦｕｓｅ(Filesystem in Userspace)が実装されている。アプリケーションであるActivityは、ファイルアクセスに際しては、ファイルＡＰＩによりＶＦＳにアクセスする。バックグラウンド処理を仮想モバイル端末２１にシームレスに移行することをしない通常のアプリケーションの場合、そのアプリケーションからのストレージ１３内のファイルへのアクセスは、ＶＦＳを用いて行われる。一方、連携機能１５を利用する場合には、ＶＦＳからＦｕｓｅを介して連携機能１５にアクセスする。その結果、連携機能１５を介して、モバイル端末１１のストレージ１３と仮想モバイル端末２１のストレージ２３との間で、アプリケーションデータの共有が可能になる。
【００３６】
図８は、本実施形態のアプリケーション実行方法の適用の一例を説明する図である。本実施形態のアプリケーション実行方法は、モバイル端末向けのリソース貸出しサービスに適用することがある。従来もネットワーク上のデータストレージを提供して課金するサービスがあるが、ここで示すリソース貸出しサービスは、モバイル端末１１での電池消費の節約を目的とする実行環境を提供する。したがって、課金モデルとしては、例えば、サーバ２０上の仮想モバイル端末２１でのバックグラウンド処理に係るＣＰＵ利用時間やそれに伴って節約されたモバイル端末１１での電池節約量に応じた課金を行うものが考えられる。さらに、仮想モバイル端末２１側でのストレージ利用量や、モバイル端末１１と仮想モバイル端末２１との間でのデータ転送量に応じた課金を行ってもよい。
【００３７】
以上、本発明の好ましい実施形態を説明したが、モバイル端末もサーバもハードウェアとしてはコンピュータそのものであるから、上述したモバイル端末及びサーバのいずれの機能もコンピュータ上でプログラムを実行させることによっても実現できる。
【００３８】
例えば、モバイル端末１１は、ネットワークを介してサーバ２０と接続し、アプリケーションを実行するコンピュータに、アプリケーションの状態制御を行う処理と、アプリケーションの実行時のメモリ状態とステータス情報とを示すアプリケーションデータをサーバ２０との間で共有する処理と、アプリケーションの操作終了が入力されたときに、コンピュータでのアプリケーションを終了してサーバ２０に対して、共有されたアプリケーションデータに基づいてアプリケーションの実行を継続させる処理と、アプリケーションの操作開始が入力されたときに、共有されているアプリケーションデータに基づいてアプリケーションを起動する処理と、を実行させるプログラムを読み込ませ、そのプログラムを実行させることによって実現できる。
【００３９】
同様にサーバ２０は、ネットワークを介してモバイル端末１１と接続し、モバイル端末１１において動作可能なアプリケーションを仮想実行するコンピュータに、仮想実行されるアプリケーションの状態制御を行う処理と、アプリケーションの実行時のメモリ状態とステータス情報とを示すアプリケーションデータをモバイル端末１１との間で共有する処理と、モバイル端末１１からの第１の通知があったときに、共有されたアプリケーションデータに基づいてアプリケーションを起動し、モバイル端末１１からの第２の通知があったときにアプリケーションの実行を終了する処理と、を実行させるプログラムを読み込ませ、このプログラムを実行させることによって実現できる。ここで第１の通知及び第２通知は、モバイル端末１１からコンピュータに対して送信されるイベントメッセージであり、例えば、第１の通知はアプリケーションの起動指示などであり、第２の通知はアプリケーションの終了指示などである。
【符号の説明】
【００４０】
１０    ネットワーク
１１    モバイル端末
１２，２２    アプリケーション
１３，２３    ストレージ
１４    タスクマネージャ
１５，２５    連携機能
１６，２６    ストレージ共有機能
２０    サーバ
２１    仮想モバイル端末
【図１】
0005705757.tif 000002
【図２】
0005705757.tif 000003
【図３】
0005705757.tif 000004
【図４】
0005705757.tif 000005
【図５】
0005705757.tif 000006
【図６】
0005705757.tif 000007
【図７】
0005705757.tif 000008
【図８】
0005705757.tif 000009
【図９】
0005705757.tif 000010
【図１０】
0005705757.tif 000011