JP5751711B2 - コンテキスト・アウェアに分散処理可能な処理装置、方法、及びプログラム - Google Patents

コンテキスト・アウェアに分散処理可能な処理装置、方法、及びプログラム Download PDF

Info

Publication number
JP5751711B2
JP5751711B2 JP2012012241A JP2012012241A JP5751711B2 JP 5751711 B2 JP5751711 B2 JP 5751711B2 JP 2012012241 A JP2012012241 A JP 2012012241A JP 2012012241 A JP2012012241 A JP 2012012241A JP 5751711 B2 JP5751711 B2 JP 5751711B2
Authority
JP
Japan
Prior art keywords
component
processing
server
terminal device
application
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.)
Expired - Fee Related
Application number
JP2012012241A
Other languages
English (en)
Other versions
JP2013152541A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2012012241A priority Critical patent/JP5751711B2/ja
Publication of JP2013152541A publication Critical patent/JP2013152541A/ja
Application granted granted Critical
Publication of JP5751711B2 publication Critical patent/JP5751711B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Telephone Function (AREA)
  • Telephonic Communication Services (AREA)

Description

本発明は、モバイルOS(オペレーティング・システム)の下で実行されるアプリケーションの実行に関し、特に、アプリケーションのバックグラウンド処理の実行をモバイル端末とサーバとの間で分散させる技術に関する。
スマートフォンやタブレット端末などのモバイル端末は、リチウムイオン電池などの二次電池(バッテリー)からの電力で動作し、モバイルOSによるプロセス管理及びメモリ管理の下で各種のアプリケーション(AP;アプリあるいはアプリケーションプログラムとも呼ばれる)を実行可能である。典型的なモバイル端末では、その表示画面上では1つのアプリケーションのみが実行されているように見えるが、実際には同時に他の種々のアプリケーションのバックグラウンド処理が実行されていることが多い。
また、モバイル端末で実行されるアプリケーションは、MVC(モデル・ビュー・コントロール;Model View Control)というデザインパターンにより設計されることが多い。MVCでは、プログラムであるアプリケーションは、モデルとビューとコントロールという3つのコンポーネントに分けられる。モデルは、アプリケーションが実行すべき処理の手続きを規定するものであり、ビューは、モデルからデータを取り出して見やすい形態で利用者に表示するものであり、コントロールは、利用者からの入力に対して応答し、それを処理するコンポーネントである。ビューとコントロールとによって、利用者に対する入出力のインタフェース(すなわちユーザインタフェース)が提供され、モデルによってユーザインタフェースの処理からは分離したそのアプリケーションに固有の内部処理が実行されることになる。
非特許文献1に記載されるように、代表的なモバイルOSの1つのであるAndroid(登録商標)OSの環境では、アプリケーションは、ビューとコントロールとをまとめたActivityというコンポネントとモデルに対応するServiceというコンポーネントとから構成される。そして、Serviceコンポーネントにアプリケーションのバックグラウンド処理が実装されており、アプリケーションのGUI(グラフィカルユーザインタフェース)処理に相当するActivityコンポーネントの動作が停止した後も、バックグラウンドで処理を継続できるようになっている。
江川 崇、竹端 進、山田 暁通、麻野 耕一、山岡 敏夫、藤井 大助、藤田 泰介、佐野 徹郎、「Google Androidプログラミング入門」、163ページ、アスキー・メディアワークス、ISBN:4048679562、2009年7月1日
モバイル端末にインストールされるアプリケーションの数の増加に伴って、実行されるバックグラウンド処理の処理量も増加し、モバイル端末の電池消費の加速や処理速度の低下などの問題が生じる。
本発明の目的は、モバイルOSの下で実行されるアプリケーションについてそのバックグラウンド処理の分散処理を行ってモバイル端末の電池消費を低減し、処理速度を向上させることができる処理装置、方法及びプログラムを提供することにある。
本発明の第1の処理装置は、ユーザインタフェースに係る処理を実行する第1のコンポーネントと内部処理を実行する第2のコンポーネントとが分離して実装されているアプリケーションを実行する処理装置において、アプリケーションの実行に係るデータを格納するストレージと、第1のコンポーネントから第2のコンポーネントに対する呼出しがあったときに、処理装置のコンテキストとアプリケーションの属性とに基づき、第2のコンポーネントの処理を処理装置において実行するか、ネットワークを介して処理装置に接続して第2のコンポーネントに相当するコンポーネントを実装したサーバにおいて実行するかを判断し、判断の結果に応じて、呼出しの呼出し先を処理装置の第2のコンポーネントとサーバとの間で切り替える切替手段と、処理装置のストレージとサーバのストレージとの間でデータを同期させる同期手段と、を有することを特徴とする。
本発明の第2の処理装置は、ユーザインタフェースに係る処理を実行する第1のコンポーネントと内部処理を実行する第2のコンポーネントとが分離して実装されているアプリケーションを実行する端末装置にネットワークを介して接続する処理装置において、第2のコンポーネントに相当するコンポーネントが実装されており、端末装置に設けられるストレージと同期したストレージと、端末装置から呼出しを受けたときに実装されたコンポーネントを実行して実行結果を端末装置に返す制御手段と、を有することを特徴とする。
本発明の処理方法は、ユーザインタフェースに係る処理を実行する第1のコンポーネントと内部処理を実行する第2のコンポーネントとが分離して実装されているアプリケーションを実行する端末装置と、サーバとを有し、端末装置とサーバとがネットワークを介して接続しているシステムにおける処理方法において、第2のコンポーネントに相当するコンポーネントをサーバに実装し、端末装置においてアプリケーションの実行に係るデータを格納するストレージとサーバのストレージとを同期させ、端末装置において第1のコンポーネントから第2のコンポーネントに対する呼出しがあったときに、処理装置のコンテキストとアプリケーションの属性とに基づき、第2のコンポーネントの処理を端末装置において実行するかサーバにおいて実行するかを判断し、判断の結果に応じて、呼出しの呼出し先を処理装置の第2のコンポーネントとサーバとの間で切り替え、サーバが呼出し先に指定されたときに、サーバにおいて、サーバに実装されたコンポーネントによって呼出しの処理を実行し、実行した結果を前記呼出しに対応する実行結果として端末装置に返すことを特徴とする。
上記の構成を採用することにより、利用者に意識させることなくモバイル端末のコンテキストとアプリケーションの属性とに応じて、モバイル端末で実行されるそのアプリケーションのバックグラウンド処理について、当該モバイル端末上で実行するかクラウド基盤等のサーバ上で実行するかのいずれか適切な環境での実行が可能になる。すなわち、バックグラウンド処理について、コンテキスト・アウェアな分散処理を行うことが可能になる。その結果、バックグラウンド処理時にモデルコンポーネント(Andoroid(登録商標)OSであればServiceコンポーネント)をモバイル端末上で動作させなくて済むようになって、モバイル端末の省電力化を図ることができ、サーバが有する豊富なリソース(計算能力、回線帯域、メモリ容量など)を利用することができてバックグラウンド処理の高速化を図ることができる。また、バックグラウンド処理がモバイル端末上で動作していることに伴って他のアプリケーションの動作速度が低下することも防止できる。
本発明の実施の一形態の分散処理方法が適用されるシステムの全体構成の一例を示すブロック図である。 本発明の実施の一形態の分散処理方法を説明する図である。 モバイル端末及びサーバの実装例を説明する図である。 従来のアプリケーションの構成を示す図である。 第1の具体例を説明する図である。 アプリケーション実行の従来の処理を示すシーケンス図である。 第1の具体例におけるアプリケーション実行の処理を示すシーケンス図である。 ProxyクラスとStubクラスを有するアプリケーションの構成を示す図である。 第2の具体例を説明する図である。 第2の具体例におけるアプリケーション実行の処理を示すシーケンス図である。
図1は、本発明の実施の一形態のアプリケーション実行方法が適用されるシステムの全体構成を示している。ネットワーク10に対し、1または複数のモバイル端末20と1または複数のサーバ30が接続している。各モバイル端末20は、リチウムイオン電池などの二次電池で駆動され無線によってネットワーク10に接続する物理デバイスである。サーバ30は、例えば、クラウド基盤上のものとして構成することができる。本実施形態では、モバイル端末20におけるアプリケーション(AP)のバックグラウンド処理をコンテキスト・アウェアにサーバ30上で実行させることにより、分散処理を実現している。
本実施形態においては、モバイル端末20のアプリケーションとして、MVC(モデル・ビュー・コントロール;MVC)などのデザインパターンにより、ユーザインターフェース(ビュー及びコントロール)のコンポーネントと内部処理(モデル)のコンポーネントが容易に分割可能なものであるとする。ここでは、モバイル端末20にある既存実行環境を本発明に基づいて改造し、サーバ30にも同等な実行環境を導入し、モバイル端末20のアプリケーションをサーバ30の環境にもインストールして実行できるようにしている。
図2は、本実施形態におけるモバイル端末20とサーバ30の論理的な構成を示している。モバイル端末20において、モバイルOSによって実現される実行環境21が設けられており、実行環境21の上位にアプリケーション22が位置する。アプリケーション22は、MVCのデザインパターンによるものであって、ビュー及びコントロールのコンポーネントとモデルのコンポーネントから構成されている。また、実行環境21の下位には、ハードウェアコンポーネントとして、GPS(全地球測位システム;Global Positioning System)センサや電池残量計、加速度センサなどの各種のセンサ23と、アプリケーション22の実行に関連したデータ等を格納するストレージ(記憶装置)24とが設けられている。ストレージ24は、例えば、フラッシュメモリを有するメモリカードなどによって構成される。同様にサーバ30には、そのOSによって実現される実行環境31が設けられており、実行環境31の上位に、モバイル端末20のアプリケーション22と同等のアプリケーション32が位置する。実行環境21の下位には、ハードウェアコンポーネントとしてセンサをシミュレートする仮想センサ33と、アプリケーション32の実行に関連したデータ等を格納するストレージ(記憶装置)34とが設けられている。ストレージ34は、例えば、HDD(ハードディスク装置)によって構成される。
従来のモバイル端末では、その実行環境に、アプリケーションにおけるビュー及びコントロールのコンポーネントからモデルのコンポーネントへの関数呼出し(あるいはメソッド呼出し)及びプロセス間通信の機能が設けられている。本実施形態では、モバイル端末20の実行環境21におけるこの機能に、モバイル端末20のコンテキストとアプリケーション22の属性とに応じて呼出し先(及び通信先)を動的に切り替える仕組みである切替部25を追加する。具体的には、例えば、切替部25を備えるようにモバイルOSを改造すればよい。モバイル端末20のコンテキストとは、モバイル端末20の所在地(GPSあるいは無線LAN情報から取得)、回線状況、電池残量、メモリ残量、ストレージ残量、実行中プロセス数、利用者のプレゼンスなどの様々な状況である。これらのコンテキストは、例えばセンサ23から取得されるものであったり、モバイルOSに本来備えられている機能によって取得されるものであったりする。アプリケーション22の属性とは、アプリケーション22が利用するリソース、実装された機能、実行時間(システム情報により集計)などのことである。
呼出し先(及び通信先)を動的に切り替える切替部25は、モバイル端末のコンテキストとアプリケーションの属性とに基づいて評価を行い、アプリケーション22のバックグラウンド処理をモバイル端末20自体で実行するべきか、サーバ30側で実行するべきかを決定する。具体的には、下記の判定結果(1)〜(3)のいずれかが真(TRUE)となった場合に、サーバ30側で処理させる。
(1)[モバイル端末で実行した場合の時間]>[サーバで実行した場合の時間+伝送遅延+データ転送時間];
(2)[モバイル端末で実行した場合の電池消費率]>[サーバで実行させるためのバッテリー消費率(分散処理に伴うネットワーク転送のオーバーヘッドなど)];
(3)[モバイル端末で実行した場合の実行終了時の電池消費率見込み]<0%<[サーバで実行するための事前準備としてモバイル端末からサーバへのデータ転送が終了した時の電池消費率見込み]。
サーバ30側で処理すると決定したら、切替部25は、呼出し先をサーバ30側のアプリケーション32のモデルに指定し、サーバ30側で処理させる。ネットワーク10に複数のサーバ30が接続していてそのいずれのサーバ30もバックグラウンド処理を実行可能である場合には、切替部25は、それらのサーバ30の中から最適な(例えば、モバイル端末から見て最寄りである、あるいは、特定のバックグラウンド処理に特化しているなど)サーバを選択することが好ましい。このように最適なサーバを選択することによって、伝搬遅延の最小化や処理のさらなる高速化を達成することができる。例えば、モバイル端末20のセンサ23としてGPSセンサが設けられているとして、GPSセンサからのGPS情報(例えばモバイル端末20の所在地の経緯度情報)により、利用者が利用可能なサーバの所在地(GPS情報)一覧からそのモバイル端末に最寄りのサーバを選択し、選択したサーバ上でのモデルのコンポーネント(すなわちバックグラウンド処理)を実行させることにより、ネットワーク転送遅延を最小限に抑えることができる。
モバイル端末20のストレージ24はアプリケーション22の実行に関連したデータ等を格納し、サーバ30のストレージ34はアプリケーション32の実行に関連したデータ等を格納しているから、モバイル端末20が起動されているときにそのストレージ24を常にサーバ30側のストレージ34と同期させ、さらにサービス利用時などに必要に応じてモバイル端末20でのセンサ情報(GPS、傾き、方位、加速度などのセンサ23で得られる情報)をサーバ30に転送させて仮想センサ33で得られた情報とすることにより、モデルコンポーネントの処理(バックグラウンド処理)をモバイル端末20で実行してもサーバ30で実行しても同じ結果が得られる。
また、モバイル端末20においてバックグラウンド処理を実行すると決定したら、切替部25は、呼出し先をモバイル端末20側のモデルのコンポーネントに指定し、ローカルで処理させる。これにより、モバイル端末20がサーバ30からオフラインの状態にあるときでも、アプリケーション22の実行が可能になる。
図3は、モバイル端末20とサーバ30との間でストレージ24,34の同期を実現するためのソフトウェアの実装例を示している。モバイル端末20もサーバ30も、ソフトウェア階層として、カーネル26,36の上にライブラリがあり、ライブラリの上にアプリケーション22,32が位置している。モバイル端末20においてライブラリには、汎用のライブラリlibcとキャッシュ動作を実現するライブラリECSが含まれている。カーネル26には、ファイル関係の機能として、VFS(仮想ファイルシステム;Virtual File System)とLinux(登録商標)の1モジュールであるFuse(Filesystem in Userspace)が実装されている。アプリケーション22は、ファイルアクセスに際しては、ファイルAPIによりVFSにアクセスする。このアクセスは、VFSからFuseを介してライブラリECSに送られ、その結果、ライブラリECSを介して、モバイル端末20のストレージ24とサーバ30のストレージ34との間で、ストレージの同期が達成される。ここで示す例では、ローカルキャッシュとNFS(ネットワークファイルシステム;Network File system)とを組み合わせたファイルシステムを構築することで、SQLiteなどのアプリケーション特有ファイルについてのストレージ同期を実現している。ここに示したもの以外にも、ローカルのストレージとリモートのストレージとを同期させる手法として数多くのものが知られているから、それらの手法を用いてストレージ24,34を同期させるようにしてもよい。
次に、モバイル端末20における実行環境21を構成するモバイルOSがAndroid(登録商標)OSである場合を例に挙げて、本実施形態の具体例を説明する。図4は、この場合のモバイルOS上で動作する従来のアプリケーションの構成を示している。ここではAndroid(登録商標)OSを前提としているから、アプリケーションは、ビュー及びコントロールに相当しユーザインタフェースを担当するActivityコンポーネントと、モデルに相当しバックグラウンド処理を担当するServiceコンポーネントから構成される。実行環境としてのカーネル26には、メソッド呼出し(例えばActivityコンポーネントからServiceコンポーネントの呼出し)及びプロセス間通信を実行するBinder Driverが設けられている。Activityは、Binder Driverにより、呼び先のServiceの機能を定義するインターフェースとバインドする。なお図4及びそれ以降の図面において、モバイル端末20のカーネル26の中にセンサ23及びストレージ24が設けられ、カーネル36の中に仮想センサ33及びストレージ34が設けられているように記載されているが、これらは、カーネルの中に物理デバイスとしてのセンサ、仮想センサ及びストレージが設けられていることを意味するのではなく、カーネルを介してセンサ、仮想センサ及びストレージにアクセスできることを意味している。
ここでは、具体例を2つ提示する。図5〜図7は第1の具体例を説明するためのものであり、図8〜図10は第2の具体例を説明するものである。
第1の具体例は、OSのカーネルを改造することを前提とし、そのため、モバイル端末は専用OS端末となるが、アプリケーションのバイトコードには改変を要さず、既存のアプリケーションをそのまま使用できるものである。
図5に示すように、第1の具体例では、モバイル端末20でのカーネル26におけるBind Driverを本発明の分散実行方法に適合するように改造し、サーバ30においてモバイル端末20と同等な、改造したBinder Driver(図において「Binder Driver(独自)」と表記)を備えたOSの環境を導入する。また、モバイル端末20にあるアプリケーション22と同じアプリケーション32をサーバ30の環境にもインストールする。本来、同じアプリケーションのActivityコンポーネントとServiceコンポーネンツトとは同一の端末に存在することが前提されているが、上述のように改造したBinder Driverにより、インターネットなどのネットワークを経由してモバイル端末20のActivityをサーバ30のServiceにバインドさせることを可能とする。モバイル端末20のBinder Driverは、メソッド呼出しの呼出し先を切り替える切替手段として機能する。さらに、モバイル端末20とサーバ30との間でストレージ24,34を同期させ、センサ情報も同期させることにより、サーバ30においてモバイル端末20のコンテキストを把握、利用することを可能とする。これらによって、サーバ30側のServiceコンポーネントは、モバイル端末20のServiceコンポーネントと同等な実行結果を得ることができる。
図6は、改造を行っていない従来のBind Driverを用いた場合の処理を示している。ActivityはBinder Driver経由でServiceのメソッドを呼び出す(ステップ101)。Binder Driverは、呼出命令をServiceにリレーし(ステップ102)、Serviceの実行結果を取得して(ステップ103)それをActivityに返す(ステップ104)。
図7は、第1の具体例において改造されたBind Driverを用いた場合の処理を示している。モバイル端末20のActivityはBinder Driver経由でServiceのメソッドを呼び出す(ステップ111)。この時、モバイル端末20の改造されたBinder Driverは、モバイル端末20のコンテキスト(様々な周辺状況)とアプリケーションの属性情報(AndroidManifest.xmlファイルに記載されている情報)とを評価し、モバイル端末20で実行するべきかサーバ30側で処理するべきかどうか判断する(ステップ112)。モバイル端末20のコンテキストとは、例えば、(GPSあるいは無線LAN情報に基づく)モバイル端末20の所在地、回線状況、方位、温度、電池残量、メモリ残量、ストレージ残量、実行中プロセス数、利用者のプレゼンスなどのことである。アプリケーションの属性情報とは、利用するリソース、実装された機能、実行時間(システム情報により集計)など、アプリケーションに対するServiceに関する情報である。ステップ111での判断では、具体的には、例えば、下記の判定結果(1)〜(3)にいずれかが真(TRUE)となった場合に、サーバ側30で処理させるものとする。これらの評価は、Serviceを呼出すごとに実施する。評価基準自体は複数のアプリケーションにおいて共通である。
(1)[モバイル端末で実行した場合の時間]>[サーバで実行した場合の時間+伝送遅延+データ転送時間];
(2)[モバイル端末で実行した場合の電池消費率]>[サーバで実行させるためのバッテリー消費率(分散処理に伴うネットワーク転送のオーバーヘッドなど)];
(3)[モバイル端末で実行した場合の実行終了時の電池消費率見込み]<0%<[サーバで実行するための事前準備としてモバイル端末からサーバへのデータ転送が終了した時の電池消費率見込み]。
モバイル端末20を所持している利用者がその現在地を移動するなどのコンテキストの変化に応じ、モバイル端末20側かサーバ30側かの評価結果は適宜変化する可能性があるが、サーバ30側でのServiceが完了しない限り、コンテキストの条件としてはモバイル端末20側の処理が適しているとなっても、実行中のServiceについては、モバイル端末20上での処理には移行しない。ただし、モバイル端末20がサーバ30から完全にオフラインになった場合には、Serviceの処理はモバイル端末20に移行する。
コンテキストの例としては、以下のようなものが挙げられる:
例)モバイル端末20内のプロセス数が多い、あるいはメモリ残量が少ない時、モバイル端末20で処理を実行した場合の時間が長引いてしまうため、呼出し先をサーバ30に指定する;
例)ネットワーク転送量の大きいServiceは、使用するネットワークの転送能力に応じ、転送能力の小さいネットワーク(例えば3G回線)の使用時にはモバイル端末20側で実行するが、転送能力の大きなネットワーク(例えばWi−Fiネットワーク)へのアクセスが可能になった場合に、呼出し先にサーバ30に指定する;
例)回線状況の悪い場合、呼出し先をモバイル端末20に指定する。
ステップ112においてモバイル端末20で処理するべきと判断した場合、Binder Driverは、従来のものと同様に、モバイル端末20のServiceに呼出し命令をリレーし(ステップ113)、Serviceのからの実行結果を受け取って(ステップ114)、Activityに返す(ステップ115)。
一方、ステップ112においてサーバ30側で処理するべきと判断した場合には、モバイル端末20のBinder Driverは、ネットワーク経由で所定のサーバ30内のBinder Driverに対して呼出し命令を転送する(ステップ116)。サーバ30内のBinder Driverは、同じサーバ30内部にあるServiceに呼出し命令をリレーする(ステップ117)。このServiceでの実行結果は、サーバ30のBinder Driverとモバイル端末20のBinder Driverとを経由して、モバイル端末20のActivityに返される(ステップ118〜120)。なお、サーバ30内のBinder Driverも本発明に適合するように改造されており、モバイル端末20から呼出しを受けたときにサーバ30においてServiceコンポーネントを実行して実行結果をモバイル装置20に返す制御手段として機能する。
次に、図8〜図10によって第2の具体例を説明する。
第2の具体例では、OSのカーネルを改造せず、汎用のモバイル端末に本発明を適用するものである。そのため実行させるようとする既存のアプリケーションに手を加えるとともに、本実施形態に基づくロジックが実装された専用アプリケーション27を予めモバイル端末20にインストールしておく。既存のアプリケーションについては、そのソースコード自体を改修する必要はないが、実行コード(インストールファイル)を生成する際に、本発明に対応した専用ツールを使用するようにする。
従来、Android(登録商標)OS上で動作するアプリケーションを開発する場合、アプリケーションのServiceコンポーネントが提供する機能については、AIDL(Android Interface Definition Language)ファイルで定義する。開発環境のAIDLツールを使用すると、AIDLファイルから、Proxyと呼ばれるクラス(ActivityがServiceを呼び出すためのクラス)とStubと呼ばれるクラス(ServiceがActivityからの要求を受け取るためのクラス)が生成される。そして、Serviceのソースコードをコンパイルすると、これらのクラスも一緒にコンパイルされる。図8に示すように、モバイル端末20にアプリケーションとしてServiceをインストールすると、ProxyはActivityコンポーネントに配布される。Activityは、Proxy経由でStubを呼出し、Serviceの様々な機能を利用する。
図9は、第2の具体例の全体構成を示している。第2の具体例では、実行させようとするアプリケーションの開発時に本発明に対応した専用AIDLツールを使用することと、本発明に基づくロジックが実装された専用アプリケーション27,37を予めモバイル端末20及びサーバ30にそれぞれインストールしておくこととを前提としている。
専用AIDLツールは、AIDLファイルから、本発明に基づいた独自Proxyクラスと独自Stubクラスを生成する。AIDLファイル自体は、本発明を意識することなく記述することが可能であり、したがって、既存のアプリケーションを本発明に対応させる際に改変する必要はない。専用AIDLツールによって生成される独自Proxyクラスでは、直接にServiceのStubを呼び出さず、専用アプリケーション27のStubを呼び出すように改造されている。専用アプリケーション27は、そのStubが呼び出されたときに、モバイル端末20のコンテキスト(様々な周辺状況)とアプリケーションの属性情報(AndroidManifest.xmlファイル)とを評価し、呼び出されたStubに対応するServiceのメソッドをサーバ30側で処理すべきかモバイル端末20で処理すべきかを判断するものである。
図10は、第2の具体例での処理を示している。モバイル端末20のActivityはカーネル26のBinder Driver経由でServiceのメソッドを呼び出す(ステップ131)。このとき、Activityの独自Proxyは専用アプリケーション27のStubを呼び出すように構成されるから、呼出し命令はカーネル26から専用アプリケーション27に送られる(ステップ132)。専用アプリケーション27は、モバイル端末20のコンテキストとアプリケーションの属性情報とを評価し、モバイル端末20で実行するべきかサーバ30側で処理するべきかどうか判断する(ステップ133)。モバイル端末20のコンテキストの例やステップ133での判断基準などは、第1の具体例と同様である。
ステップ133においてモバイル端末20で処理するべきと判断した場合、専用アプリケーション27は、モバイル端末20のServiceに呼出し命令をリレーし(ステップ134)、Serviceからの実行結果は、カーネル26のBinder Driverを経由してActivityに返される(ステップ135〜136)。
一方、ステップ133においてサーバ30側で処理するべきと判断した場合には、モバイル端末20の専用アプリケーション27は、ネットワーク経由で所定のサーバ30内の専用アプリケーション37に対して呼出し命令を転送する(ステップ137)。サーバ30内の専用アプリケーション37は、同じサーバ30内部にあるServiceに呼出し命令をリレーする(ステップ138)。このServiceでの実行結果は、サーバ30の専用アプリケーション37とモバイル端末20の専用アプリケーション27及びBinder Driverとを経由して、モバイル端末20のActivityに返される(ステップ139〜141)。
専用アプリケーション27,37は、基本ロジックとしては第1の具体例での独自のBind Driverと同等のものであるが、実装されるレイヤがカーネルでなくてアプリケーションレイヤであるから、OSのカーネルを改造することなく、汎用のモバイル端末にも導入可能である。
以上、本発明の好ましい実施形態を説明したが、モバイル端末もサーバもハードウェアとしてはコンピュータそのものであるから、上述したモバイル端末及びサーバのいずれの機能もコンピュータ上でプログラムを実行させることによっても実現できる。
例えば、モバイル端末20は、ユーザインタフェースに係る処理を実行する第1のコンポーネントと内部処理を実行する第2のコンポーネントとが分離して実装されているアプリケーションを実行し、第2のコンポーネントに相当するコンポーネントを実装したサーバ30に対してネットワークを介して接続したコンピュータに、そのコンピュータにおいてアプリケーションの実行に係るデータを格納するストレージとサーバ30のストレージとの間でデータを同期させる処理と、第1のコンポーネントから第2のコンポーネントに対する呼出しがあったときに、そのコンピュータでのコンテキストとアプリケーションの属性とに基づき、第2のコンポーネントの処理をそのコンピュータにおいて実行するかサーバ30において実行するかを判断し、判断の結果に応じて、呼出しの呼出し先をそのコンピュータの第2のコンポーネントとサーバ30との間で切り替える処理と、を実行させるプログラムを読み込ませ、このプログラムを実行させることによって実現できる。
同様にサーバ30は、ユーザインタフェースに係る処理を実行する第1のコンポーネントと内部処理を実行する第2のコンポーネントとが分離して実装されているアプリケーションを実行するモバイル端末20に対してネットワークを介して接続するコンピュータに、そのコンピュータのストレージをモバイル端末20においてアプリケーションの実行に係るデータを格納するストレージに同期させる処理と、モバイル端末20から呼出しを受けたときに、第2のコンポーネントに対応するコンポーネントを実行して実行結果をモバイル端末20に返す処理と、を実行させるプログラムを読み込ませ、このプログラムを実行させることによって実現できる。
10 ネットワーク
20 モバイル端末
21,31 実行環境
22,32 アプリケーション
23 センサ
24,34 ストレージ
25 判定部
26,36 カーネル
27,37 専用アプリケーション
30 サーバ
33 仮想センサ

Claims (6)

  1. ユーザインタフェースに係る処理を実行する第1のコンポーネントと内部処理を実行する第2のコンポーネントとが分離して実装されているアプリケーションを実行する処理装置において、
    前記アプリケーションの実行に係るデータを格納するストレージと、
    前記第1のコンポーネントから前記第2のコンポーネントに対する呼出しがあったときに、前記処理装置のコンテキストと前記アプリケーションの属性とに基づき、前記第2のコンポーネントの処理を前記処理装置において実行するか、ネットワークを介して前記処理装置に接続して前記第2のコンポーネントと同じコンポーネントを実装したサーバにおいて実行するかを判断し、前記判断の結果に応じて、前記呼出しの呼出し先を前記処理装置の前記第2のコンポーネントと前記サーバとの間で切り替える切替手段と、
    前記処理装置の前記ストレージと前記サーバのストレージとの間でデータを同期させる同期手段と、
    を有し、
    前記ネットワークに複数の前記サーバが接続し、前記切替手段は、前記第2のコンポーネントの処理に関して前記複数のサーバの内のうち、前記処理装置の最寄りのサーバを最適なサーバとして選択して前記呼出し先に指定することを特徴とする処理装置。
  2. 前記処理装置のコンテキストを構成するデータの少なくとも1つを検出するセンサをさらに備える、請求項1に記載の処理装置。
  3. ユーザインタフェースに係る処理を実行する第1のコンポーネントと内部処理を実行する第2のコンポーネントとが分離して実装されているアプリケーションを実行する端末装置と、複数の処理装置とがネットワークを介して接続しているシステムにおける処理装置において、
    前記第2のコンポーネントと同じコンポーネントが実装されており、
    前記端末装置に設けられるストレージと同期したストレージと、
    前記端末装置から呼出しを受けたときに前記実装されたコンポーネントを実行し、実行した結果を前記呼出しに対応する実行結果として前記端末装置に返す制御手段と、
    を有し、
    前記端末装置において前記第1のコンポーネントから前記第2のコンポーネントに対する呼出しがあり、前記端末装置のコンテキストと前記アプリケーションの属性とに基づき前記端末装置が前記第2のコンポーネントを前記複数の処理装置のいずれかにおいて実行すると判断して最適な処理装置として当該処理装置を選択した場合に、前記端末装置から呼び出されることを特徴とする処理装置。
  4. ユーザインタフェースに係る処理を実行する第1のコンポーネントと内部処理を実行する第2のコンポーネントとが分離して実装されているアプリケーションを実行する端末装置と、サーバとを有し、前記端末装置と前記サーバとがネットワークを介して接続しているシステムにおける処理方法において、
    前記第2のコンポーネントと同じコンポーネントを前記サーバに実装することと、
    前記端末装置において前記アプリケーションの実行に係るデータを格納するストレージと前記サーバのストレージとを同期させることと、
    前記端末装置において前記第1のコンポーネントから前記第2のコンポーネントに対する呼出しがあったときに、前記端末装置のコンテキストと前記アプリケーションの属性とに基づき、前記第2のコンポーネントの処理を前記端末装置において実行するか前記サーバにおいて実行するかを判断し、前記判断の結果に応じて、前記呼出しの呼出し先を前記端末装置の前記第2のコンポーネントと前記サーバとの間で切り替えることと、
    前記サーバが前記呼出し先に指定されたときに、前記サーバにおいて、前記サーバに実装された前記コンポーネントによって前記呼出しの処理を実行して結果を前記端末装置に返すことと、
    を有し、
    前記ネットワークに複数の前記サーバが接続し、前記端末装置において、前記第2のコンポーネントの処理に関して前記複数のサーバの内のうち、前記処理装置の最寄りのサーバを最適なサーバとして選択して前記呼出し先に指定することを特徴とする、処理方法。
  5. ユーザインタフェースに係る処理を実行する第1のコンポーネントと内部処理を実行する第2のコンポーネントとが分離して実装されているアプリケーションを実行し、前記第2のコンポーネントと同じコンポーネントを実装したサーバに対してネットワークを介して接続したコンピュータに、
    前記コンピュータにおいて前記アプリケーションの実行に係るデータを格納するストレージと前記サーバのストレージとの間でデータを同期させるために、前記コンピュータにおいて必要となる処理と、
    前記第1のコンポーネントから前記第2のコンポーネントに対する呼出しがあったときに、前記コンピュータでのコンテキストと前記アプリケーションの属性とに基づき、前記第2のコンポーネントの処理を前記コンピュータにおいて実行するか前記サーバにおいて実行するかを判断し、前記判断の結果に応じて、前記呼出しの呼出し先を前記処理装置の前記第2のコンポーネントと前記サーバとの間で切り替える処理と、
    を実行させ、
    さらに前記ネットワークに複数の前記サーバが接続しており、前記コンピュータに、前記第2のコンポーネントの処理に関して前記複数のサーバの内のうち、前記処理装置の最寄りのサーバを最適なサーバとして選択して前記呼出し先に指定する処理を実行させるプログラム。
  6. ユーザインタフェースに係る処理を実行する第1のコンポーネントと内部処理を実行する第2のコンポーネントとが分離して実装されているアプリケーションを実行する端末装置と、複数のコンピュータとがネットワークを介して接続しているシステムにおけるコンピュータに、
    前記コンピュータのストレージを前記端末装置において前記アプリケーションの実行に係るデータを格納するストレージに同期させるために、前記コンピュータにおいて必要となる処理と、
    前記端末装置から呼出しを受けたときに、前記第2のコンポーネントと同じコンポーネントを実行し、実行した結果を前記呼出しに対応する実行結果として前記端末装置に返す処理と、
    を実行させ、
    前記コンピュータは、前記端末装置において前記第1のコンポーネントから前記第2のコンポーネントに対する呼出しがあり、前記端末装置のコンテキストと前記アプリケーションの属性とに基づき前記端末装置が前記第2のコンポーネントを前記ネットワークに接続された前記複数のコンピュータのいずれかにおいて実行すると判断して、前記処理装置の最寄りのコンピュータを最適なコンピュータとして当該コンピュータを選択した場合における、前記端末装置から呼び出しを待ち受ける処理を実行させる、プログラム。
JP2012012241A 2012-01-24 2012-01-24 コンテキスト・アウェアに分散処理可能な処理装置、方法、及びプログラム Expired - Fee Related JP5751711B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012012241A JP5751711B2 (ja) 2012-01-24 2012-01-24 コンテキスト・アウェアに分散処理可能な処理装置、方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012012241A JP5751711B2 (ja) 2012-01-24 2012-01-24 コンテキスト・アウェアに分散処理可能な処理装置、方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2013152541A JP2013152541A (ja) 2013-08-08
JP5751711B2 true JP5751711B2 (ja) 2015-07-22

Family

ID=49048848

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012012241A Expired - Fee Related JP5751711B2 (ja) 2012-01-24 2012-01-24 コンテキスト・アウェアに分散処理可能な処理装置、方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP5751711B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015049600A (ja) * 2013-08-30 2015-03-16 Necソリューションイノベータ株式会社 周辺機器制御装置、周辺機器制御方法および周辺機器制御プログラム
US10232709B2 (en) * 2016-02-19 2019-03-19 Xevo Inc. Dynamic application execution for automobile and cloud hybrid environments
JP2017173964A (ja) * 2016-03-22 2017-09-28 Kddi株式会社 通信端末、通信システム及び制御方法
JP6534956B2 (ja) * 2016-03-22 2019-06-26 Kddi株式会社 無線端末、サーバ、制御方法及び通信システム
EP3605259A4 (en) 2017-05-11 2020-04-22 Cloudminds (Shenzhen) Robotics Systems Co., Ltd. METHOD AND DEVICE FOR PROVIDING ROBOT SERVICE AND CONTROL, AND ELECTRONIC DEVICE
JP7051958B2 (ja) * 2020-09-09 2022-04-11 Kddi株式会社 通信端末、通信システム及び制御方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4555000B2 (ja) * 2003-06-20 2010-09-29 株式会社エヌ・ティ・ティ・ドコモ アプリケーションの適応的レプリケーションをサーバサイドコードユニットを用いて実行する方法および装置

Also Published As

Publication number Publication date
JP2013152541A (ja) 2013-08-08

Similar Documents

Publication Publication Date Title
CA3092364C (en) Live migration of clusters in containerized environments
US20200358710A1 (en) Container-based mobile code offloading support system in cloud environment and offloading method thereof
US10275851B1 (en) Checkpointing for GPU-as-a-service in cloud computing environment
JP5751711B2 (ja) コンテキスト・アウェアに分散処理可能な処理装置、方法、及びプログラム
US10715460B2 (en) Opportunistic resource migration to optimize resource placement
US20190235904A1 (en) Cloning services in virtualized computing systems
US9858052B2 (en) Decentralized operating system
US10733019B2 (en) Apparatus and method for data processing
US11853820B2 (en) Cross-process communication method, apparatus, and device
US8966508B2 (en) Method for executing hybrid web application and apparatus therefor
EP2791787B1 (en) Autonomous network streaming
CN111045786B (zh) 一种云环境下的基于镜像分层技术的容器创建系统及方法
US20130332921A1 (en) Virtual machine image write leasing
CN104202332A (zh) 基于Linux内核的移动设备虚拟化系统及即时安装方法
Huang et al. Design and implementation of an edge computing platform architecture using Docker and Kubernetes for machine learning
US20150149615A1 (en) Process cage providing attraction to distributed storage
US10963538B2 (en) Client application for web application execution
US20170371707A1 (en) Data analysis in storage system
US20160321116A1 (en) Translating operating system processes
WO2012001444A1 (en) Virtual machine splitting method and system
JP6385471B2 (ja) 移行および遠隔ランタイム統合
EP3430510B1 (en) Operating system support for game mode
WO2012001445A1 (en) Virtual machine merging method and system
KR20190109638A (ko) 분산 파일 시스템을 기반으로 하는 빅데이터 처리 플랫폼의 태스크 스케줄링 방법, 이를 위한 컴퓨터 프로그램 및 컴퓨터 판독 가능 기록 매체
US11314700B1 (en) Non-native transactional support for distributed computing environments

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140710

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140722

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140916

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20141027

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20141031

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20141118

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150213

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20150220

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: 20150514

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150518

R150 Certificate of patent or registration of utility model

Ref document number: 5751711

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees