JP5847744B2 - 処理装置、分散処理方法および分散処理プログラム - Google Patents

処理装置、分散処理方法および分散処理プログラム Download PDF

Info

Publication number
JP5847744B2
JP5847744B2 JP2013035768A JP2013035768A JP5847744B2 JP 5847744 B2 JP5847744 B2 JP 5847744B2 JP 2013035768 A JP2013035768 A JP 2013035768A JP 2013035768 A JP2013035768 A JP 2013035768A JP 5847744 B2 JP5847744 B2 JP 5847744B2
Authority
JP
Japan
Prior art keywords
processing
server
component
executed
processing device
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
JP2013035768A
Other languages
English (en)
Other versions
JP2014164567A (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.)
NTT Inc
NTT Inc USA
Original Assignee
Nippon Telegraph and Telephone Corp
NTT Inc USA
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, NTT Inc USA filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2013035768A priority Critical patent/JP5847744B2/ja
Publication of JP2014164567A publication Critical patent/JP2014164567A/ja
Application granted granted Critical
Publication of JP5847744B2 publication Critical patent/JP5847744B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Telephonic Communication Services (AREA)

Description

本発明は、処理装置、分散処理方法および分散処理プログラムに関する。
従来より、実行中のアプリケーションのバックグラウンド処理については実施されており、モバイル端末などの端末上で動作するアプリケーション(以下、「モバイル端末向けアプリ」と記す)においても、様々なバックグラウンド処理が実現可能となっている(例えば、非特許文献1参照)。
例えば、モバイル端末向けアプリを動作させるオペレーティング・システム(以下「モバイルOS」と記載する)の代表であるAndroid(登録商標)においては、Serviceとういうコンポーネントにモバイル端末向けアプリのバックグランド処理が実装されており、アプリのGUI操作(Activity)が停止した後もバックグラウンドで処理を継続できる仕組みとなる。
江川 崇、竹端 進、山田 暁通、麻野 耕一、山岡 敏夫、藤井 大助、藤田 泰介、佐野 徹郎 "Google Androidプログラミング入門"、163ページ、アスキー・メディアワークス、ISBN:4048679562、2009年7月1日
しかしながら、モバイル端末にインストールしたアプリケーションの増加と伴に、実行される様々なバックグラウンド処理も増加することになり、これらのバックグラウンド処理の増加が、端末の処理速度の低下などに影響を与えるという問題を生じさせている。この問題は、性能の高くないモバイル端末においてはより顕著である。このため、利用者が意識することなく端末における処理速度を向上させることが課題となる。
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、端末における処理速度を向上させることを目的とする。
上述した課題を解決し、目的を達成するために、本発明に係る処理装置は、ユーザインタフェースに係る処理を実行する第1のコンポーネントと内部処理を実行する第2のコンポーネントとが分離して実装されているアプリケーションを実行する処理装置において、前記処理装置によって実行された処理のメソッド、または、該処理装置とネットワークを介して接続され前記第2のコンポーネントに相当するコンポーネントを実装したサーバによって実行された処理のメソッドを記憶するキューと、前記第1のコンポーネントから前記第2のコンポーネントに対する呼出しがあったときに、通信の状況に応じて、前記第2のコンポーネントの処理を前記処理装置において実行するか、前記サーバにおいて実行するかを判断し、前記判断の結果に応じて、前記呼出しの呼出し先を前記処理装置と前記サーバとの間で切り替える切替部と、前記切替部によって呼出し先が前記処理装置に切り替えられた場合には、前記キューに記憶されたメソッドのうち、前記処理装置において未実行のメソッドを実行させるように制御し、前記切替部によって呼出し先がサーバに切り替えられた場合には、前記キューに記憶されたメソッドのうち、前記サーバにおいて未実行のメソッドを実行させるように制御する制御部と、前記処理装置または前記サーバにより前記コンポーネントの処理が実行された後、実行した処理のメソッドを前記キューに格納する格納部と、を有することを特徴とする。
また、本発明に係る分散処理方法は、ユーザインタフェースに係る処理を実行する第1のコンポーネントと内部処理を実行する第2のコンポーネントとが分離して実装されているアプリケーションを実行する処理装置において実行される分散処理方法であって、前記処理装置は、前記処理装置によって実行された処理のメソッド、または、該処理装置とネットワークを介して接続され前記第2のコンポーネントに相当するコンポーネントを実装したサーバによって実行された処理のメソッドを記憶するキューを備え、前記第1のコンポーネントから前記第2のコンポーネントに対する呼出しがあったときに、通信の状況に応じて、前記第2のコンポーネントの処理を前記処理装置において実行するか、前記サーバにおいて実行するかを判断し、前記判断の結果に応じて、前記呼出しの呼出し先を前記処理装置と前記サーバとの間で切り替える切替工程と、前記切替工程によって呼出し先が前記処理装置に切り替えられた場合には、前記キューに記憶されたメソッドのうち、前記処理装置において未実行のメソッドを実行させるように制御し、前記切替工程によって呼出し先がサーバに切り替えられた場合には、前記キューに記憶されたメソッドのうち、前記サーバにおいて未実行のメソッドを実行させるように制御する制御工程と、前記処理装置または前記サーバにより前記コンポーネントの処理が実行された後、実行した処理のメソッドを前記キューに格納する格納工程と、を含んだことを特徴とする。
また、本発明に係る分散処理プログラムは、ユーザインタフェースに係る処理を実行する第1のコンポーネントと内部処理を実行する第2のコンポーネントとが分離して実装されているアプリケーションを実行する処理装置において実行し、前記第2のコンポーネントに相当するコンポーネントを実装したサーバに対してネットワークを介して接続したコンピュータに、前記第1のコンポーネントから前記第2のコンポーネントに対する呼出しがあったときに、通信の状況に応じて、前記第2のコンポーネントの処理を前記処理装置において実行するか、前記サーバにおいて実行するかを判断し、前記判断の結果に応じて、前記呼出しの呼出し先を前記処理装置と前記サーバとの間で切り替える切替ステップと、前記切替ステップによって呼出し先が前記処理装置に切り替えられた場合には、前記処理装置によって実行された処理のメソッド、または、前記サーバによって実行された処理のメソッドを記憶するキューに記憶されたメソッドのうち、前記処理装置において未実行のメソッドを実行させるように制御し、前記切替ステップによって呼出し先がサーバに切り替えられた場合には、前記キューに記憶されたメソッドのうち、前記サーバにおいて未実行のメソッドを実行させるように制御する制御ステップと、前記処理装置または前記サーバにより前記コンポーネントの処理が実行された後、実行した処理のメソッドを前記キューに格納する格納ステップと、を実行させることを特徴とする。
実施形態に係る処理装置、分散処理方法および分散処理プログラムは、端末における処理速度を向上させ、通信環境の状況に応じてアプリケーションの分散処理環境を制御する仕組みを提供することが可能となる。
図1は、第一の実施形態に係るシステムの構成の一例を示す図である。 図2は、第一の実施形態に係るモバイル端末およびサーバの構成を説明するための図である。 図3は、従来のモバイル端末のアプリケーションの構成例を示す図である。 図4は、第一の実施形態に係るモバイル端末のアプリケーションの構成例を示す図である。 図5は、第一の実施形態に係るモバイル端末およびサーバの実装例を説明する図である。 図6は、従来のアプリケーション実行時の処理手順を示すシーケンス図である。 図7は、第一の実施形態に係るモバイル端末のアプリケーション実行処理の処理手順を示すシーケンス図である。 図8は、従来のコールバックによる実行処理の処理手順を示すシーケンス図である。 図9は、第一の実施形態に係るモバイル端末のコールバックによる実行処理の処理手順を示すシーケンス図である。 図10は、分散処理プログラムを実行するコンピュータを示す図である。
以下に添付図面を参照して、この発明に係る処理装置、分散処理方法および分散処理プログラムの実施形態を詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。
[第一の実施形態]
以下の実施形態では、第一の実施形態に係るシステムの構成、および影響評価装置による処理の流れを順に説明し、最後に第一の実施形態による効果を説明する。図1は、第一の実施形態に係るシステムの構成の一例を示す図である。第一の実施形態に係るシステムは、ネットワーク10、複数のモバイル端末20および複数のサーバ30を有する。また、各モバイル端末20および各サーバ30は、ネットワーク10を介して接続される。
ここでネットワーク10とは、例えば、3G(3rd Generation)や、LTE(Long Term Evolution)、WiFi(Wireless Fidelity)などである。また、モバイル端末20は、例えば、携帯電話、PHS(Personal Handyphone System)、PDA(Personal Digital Assistant)、タブレットPC(Personal Computer)等、インターネットに接続して、問い合わせサーバや他のユーザ端末との間で情報を送受信できるものであれば、任意の装置であってよい。また、モバイル端末に限定されず、家庭またはオフィスに設置されたコンピュータを使用してもよい。
ネットワーク10に対し、1または複数のモバイル端末20と1または複数のサーバ30が接続している。各モバイル端末20は、リチウムイオン電池などの二次電池で駆動され有線または無線によってネットワーク10に接続する物理デバイスである。サーバ30は、例えば、クラウド基盤上のものとして構成することができる。本実施形態では、モバイル端末20におけるアプリケーション(AP)のバックグラウンド処理をサーバ30上で実行させることにより、分散処理を実現している。
本実施形態においては、モバイル端末20のアプリケーションとして、MVC(モデル・ビュー・コントロール;MVC)などのデザインパターンにより、ユーザインタフェース(ビュー及びコントロール)のコンポーネントと内部処理(モデル)のコンポーネントが容易に分割可能なものであるとする。ここでは、モバイル端末20にある既存実行環境を本発明に基づいて改造し、サーバ30にも同等な実行環境を導入し、モバイル端末20のアプリケーションをサーバ30の環境にもインストールして実行できるようにしている。
また、例えば、モバイル端末20は、携帯電話、PHS(Personal Handyphone System)、PDA(Personal Digital Assistant)、タブレットPC(Personal Computer)等、インターネットに接続して、問い合わせサーバや他のユーザ端末との間で情報を送受信できるものであれば、任意の装置であってよい。また、モバイル端末に限定されず、家庭またはオフィスに設置されたコンピュータを使用してもよい。なお、各モバイル端末20および各サーバ30における通信は、無線通信に限定されるものではなく、有線通信であってもよい。
図2は、本実施形態におけるモバイル端末20とサーバ30の論理的な構成を示している。モバイル端末20において、モバイルOSによって実現される実行環境21が設けられており、実行環境21の上位にアプリケーション22が位置する。この実行環境21における機能として、切替部21a、制御部21bおよび格納部21cが設けられている。
切替部21aは、ユーザインタフェースのコンポーネントから内部処理のコンポーネントに対する呼出しがあったときに、通信の状況に応じて、内部処理のコンポーネントの処理をモバイル端末20において実行するか、サーバ30において実行するかを判断し、判断の結果に応じて、呼出しの呼出し先をモバイル端末20とサーバ30との間で切り替える。
例えば、切替部21aは、例えば、通信速度や電波強度を測定したり、通信可能か通信不可能かを識別する情報を外部から取得したりすることで、通信の状況を推定する。そして、切替部21aは、推定した通信の状況に応じて、呼出しの呼出し先をモバイル端末20とサーバ30との間で切り替える。例えば、切替部21aは、通信可能であれば、呼出しの呼出し先をサーバ30に切り替え、通信不可能であれば、呼出しの呼出し先をモバイル端末20に切り替える。また、切替部21aは、通信速度が所定の閾値以上であれば、呼出しの呼出し先をサーバ30に切り替え、通信速度が所定の閾値以下であれば、呼出しの呼出し先をモバイル端末20に切り替える。
制御部21bは、切替部21aによって呼出し先がモバイル端末20に切り替えられた場合には、キュー25に記憶されたメソッドのうち、モバイル端末20において未実行のメソッドを実行させるように制御し、切替部21aによって呼出し先がサーバ30に切り替えられた場合には、キュー25に記憶されたメソッドのうち、サーバ30において未実行のメソッドを実行させるように制御する。
格納部21cは、自装置またはサーバ30によりコンポーネントの処理が実行された後、実行したコンポーネントの処理のメソッドをキュー25に格納する。また、格納部21cは、実行した処理のメソッドとともに、該メソッドを実行したのがモバイル端末20であるのかサーバ30であるのかを示す情報を格納する。
アプリケーション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におけるこの機能に、呼出し先(及び通信先)を動的に切り替える仕組みである切替部21aを追加する。具体的には、呼出し先(及び通信先)を動的に切り替える切替部21aは、モバイル端末20の通信環境の状況に応じて、モデル関数の呼出先(及び通信先)を動的に切り替える。ここで、端末の無線通信状況としては、例えば、通信可能・不可能の識別等のほか回線の通信速度や電波強度などが挙げられる。
また、モバイル端末20は、呼び出し先を切り替える際に、呼び出されるモデル関数と引数を順番に保存しておくキュー25を有する。このキュー25をアプリケーション特性に応じて利用することでサーバ30とモバイル端末20のどちらで実行しても同じ結果が得られるようになる。ここでアプリケーション特性としては、コールバックを利用するかどうか、モデルが内部に状態を持つ(保持する)か、モデル(内部処理)の設定などが考えられる。
また、呼び出し先を切り替える処理は、処理を実行するたびに決定する。そして、サーバ30側で処理すると決まった場合には、呼出し先をサーバ30側のモデルに指定し、サーバ30側で当該モデルを処理させる。この時、キュー25にたまっている処理があればそれらを先に呼び出してからキュー25内の処理を実行する。また、モバイル端末20で処理すると決まった場合には、呼出し先をモバイル端末20側のモデルに指定し、ローカルで処理させることによって、オフラインでもアプリの実行を可能とする。
次に、モバイル端末20における実行環境21を構成するモバイルOSがAndroid(登録商標)OSである場合を例に挙げて、従来のアプリケーション構成の具体例を説明する。図3においては、この場合のモバイルOS上で動作する従来のアプリケーションの構成を示している。ここではAndroidOSを前提としているから、アプリケーション22は、ビュー及びコントロールに相当しユーザインタフェースを担当するActivityコンポーネントと、モデルに相当しバックグラウンド処理を担当するServiceコンポーネントから構成される。
Androidアプリでは、Activityがビュー・コントロールに相当し、Serviceがモデルのコンポーネントに相当する。また、Activityは、ユーザインタフェース処理を分担し、Serviceはバックグラウンド処理を分担する。また、Activityは、カーネル26にあるBinder Driverにより、呼び出し先のServiceの機能を定義するインタフェースとバインドする。
また、実行環境としてのカーネル26には、メソッド呼出し(例えばActivityコンポーネントからServiceコンポーネントの呼出し)及びプロセス間通信を実行するBinder Driverが設けられている。なお、図3及びそれ以降の図面において、モバイル端末20のカーネル26の中にセンサ23及びストレージ24が設けられ、カーネル36の中に仮想センサ33及びストレージ34が設けられているように記載されているが、これらは、カーネルの中に物理デバイスとしてのセンサ、仮想センサ及びストレージが設けられていることを意味するのではなく、カーネルを介してセンサ、仮想センサ及びストレージにアクセスできることを意味している。
次に、図4を用いて、本実施形態に係るモバイル端末20およびサーバ30のアプリケーション構成の具体例を説明する。図4に示すように、本実施形態に係るモバイル端末20でのカーネル26におけるBinder Driverを本発明の分散実行方法に適合するように改造し、サーバ30においてモバイル端末20と同等な、改造したBinder Driverを備えたOSの環境を導入する。また、モバイル端末20にあるアプリケーション22と同じアプリケーション32をサーバ30の環境にもインストールする。
本来、同じアプリケーションのActivityコンポーネントとServiceコンポーネントとは同一の端末に存在することが前提されているが、上述のように改造したBinder Driverにより、インターネットなどのネットワークを経由してモバイル端末20のActivityをサーバ30のServiceにバインドさせることを可能とする。モバイル端末20のBinder Driverは、メソッド呼出しの呼出し先を切り替える切替部21aとして機能する。さらに、モバイル端末20とサーバ30との間でストレージ24、34を同期させ、センサ情報も同期させることにより、サーバ30においてモバイル端末20のコンテキストを把握、利用することを可能とする。これらによって、サーバ30側のServiceコンポーネントは、モバイル端末20のServiceコンポーネントと同等な実行結果を得ることができる。
図5においては、モバイル端末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を介してライブラリに送られ、その結果、ライブラリを介して、モバイル端末20のストレージ24とサーバ30のストレージ34との間で、ストレージの同期が達成される。ここで示す例では、ローカルキャッシュとNFS(ネットワークファイルシステム;Network File System)とを組み合わせたファイルシステムを構築することで、SQLiteなどのアプリケーション特有ファイルについてのストレージ同期を実現している。ここに示したもの以外にも、ローカルのストレージとリモートのストレージとを同期させる手法として数多くのものが知られているから、それらの手法を用いてストレージ24、34を同期させるようにしてもよい。
図6に示す処理では、改造を行っていない従来のBinder Driverを用いた場合の処理を示している。Activityは、従来のAndroidと同じくContextというオブジェクトにサービスの利用を要求し(ステップS101)、サービスを呼び出すためのハンドラーを取得する(ステップS102)。
Activityは、Binder Driver経由でServiceのメソッドを呼び出す(ステップ103)。Binder Driverは、呼出命令をServiceにリレーし(ステップ104)、Serviceの実行結果を取得して(ステップ105)、それをActivityに返す(ステップ106)。
次に、第一の実施形態に係るモバイル端末20のアプリケーション実行処理について説明する。図7は、第一の実施形態に係るモバイル端末20のアプリケーション実行処理の処理手順を示すシーケンス図である。図7においては、改造されたBinder Driverを用いた場合の処理を示している。
図7に示すように、Activityは、従来のAndroidと同じくContextというオブジェクトにサービスの利用を要求し(ステップS201)、サービスを呼び出すためのハンドラーを取得する(ステップS202)。そして、Activityは、Binder Driver経由でServiceのメソッドを呼び出す(ステップ203)。このとき、Binder Driverは、通信状況を評価し、サーバ30側で処理するべきかどうか判断する(ステップS204)。
ステップS204において、Binder Driverは、サーバ30で処理するべきと判断した場合、モバイル端末20で実行されていない呼び出しがあるかをキュー25に確認し(ステップS205)、メソッド(以下、事前実行メソッドという)の応答を受信する(ステップS206)。そして、呼び出しがある場合は、まずその事前実行メソッドの呼び出しを行い(ステップS207)、呼出命令をサーバ30にあるServiceにリレーする(ステップS208)。そして、サーバ30のServiceは、Binder Driverを介してモバイル端末20のBinder Driverに実行結果を返す(ステップS209、210)。ここで、モバイル端末20では、サーバ30のServiceの実行結果を破棄する。
その後、サーバ30は、事前実行メソッドの呼び出しがキュー25になかった場合と同様に、モバイル端末20で処理すべきと判断された呼び出しを、従来のBinder Driverの機能と同じく、呼出命令を端末にあるServiceにリレーし(ステップS211)、サーバ30にあるServiceは、Binder Driverを介してモバイル端末20のServiceの実行結果を返す(ステップS212、213)。
また、ステップS204において、モバイル端末20で処理するべきと判断した場合、モバイル端末20で実行されていない呼び出しがあるかをキュー25に確認し(ステップS214)、事前実行メソッドの応答を受信する(ステップS215)。この結果、呼び出しがある場合は、まずその事前呼び出しを実行し(ステップS216)、実行結果をBinder Driverに返す(ステップS217)。ここで、モバイル端末20では、実行結果を破棄する。つまり、モバイル端末20での実行の場合及びサーバ30での実行の場合とも、キュー25に蓄積された事前呼び出しの実行結果については、すでに結果を受け取っているものであるため、取得された実行結果はそれぞれ破棄してもよい。
その後、事前実行メソッドの呼び出しがキュー25になかった場合と同様に、モバイル端末20で処理すべきと判断された呼び出しを、従来のBinder Driverの機能と同じく、呼出命令をモバイル端末20にあるServiceにリレーし(ステップS218)、Serviceの実行結果をBinder Driverに返す(ステップS219、S220)。
その後、Binder Driverは、今回実行された呼び出しについて、所定の条件に基づいて、キュー25に保存するか否かを判定する(ステップS221)。例えば、Binder Driverは、キュー25に入れる条件として、メソッドが、アプリケーションの設定を置くもの、アプリケーションが内部で状態を持つもの、コールバック関数を登録するもののいずれかに該当するか判定する。
この結果、キュー25に保存すると判定した場合には、メソッドをキュー25に入れて(ステップS222)、実行結果をActivityに返す。つまり、上記の条件にマッチするメソッドのみをキュー25に格納することで、呼び出し場所がモバイル端末20またはサーバ30に切り替えられた場合であっても実行結果が変わってしまうことを防止しつつ、アプリケーションの効率性を向上させることができる。例えば、アプリケーションが内部で状態を持つものについては、呼び出し場所が変更になると、処理結果が変わってしまうため、過程をキュー25に入れておくことで呼び出し場所が変更されても同じ実行結果を得ることができるようにする。なお、処理を簡潔化するために、上記の判定処理を省略し、全てのメソッドをキュー25に入れてもよい。
また、ステップS222の処理において、キュー25には、今回実行されたメソッドとともに、該メソッドをモバイル端末20またはサーバ30のいずれが実行したかを示す処理対象情報を格納する。つまり、上記の事前実行メソッドの呼び出し(ステップS207、216)時において、キュー25に記憶されたメソッドが、モバイル端末20またはサーバ30側で未実行であるかを、この処理対象情報から判断できるようにしている。一方、ステップS222において、キュー25に保存しないと判定した場合には、メソッドをキュー25に入れずに、実行結果をActivityに返す(ステップS223)。
また、上記の説明では、ActivityがBinder Driver経由でServiceのメソッドを呼び出した際に、Binder Driverが、通信状況を評価してサーバ30側で処理するべきと判断した場合に、サーバ30がキュー25に格納されたメソッドを実行する場合について説明した。しかし、これに限定されるものではなく、キュー25に格納されたメソッドについて、特にサーバ30で実行されるものについては、ネットワーク状態が変更された際に実行しておくことが考えられる。例えば、主なケースとしては、サーバ30は、ネットワーク断の際において、キュー25に入れられたものを、ネットワーク10がつながった際に実行するようにしてもよい。
また、次に、図8および図9を用いて、コールバックを利用した実行について説明する。コールバックを利用した実行とは、主に時間がかかる処理や非同期に結果が返されることを想定する呼び出しに対し、呼び出し元が生成したオブジェクトを事前に保存し、呼び出しの際には同オブジェクトを介して非同期結果を返却する実行方法の1つである。
まず、図8を用いて、従来のコールバックオブジェクトを利用した呼出の例について説明する。図8に示すように、Activityは、従来のAndroidと同じくContextというオブジェクトにサービスの利用を要求し(ステップS301)、Serviceを呼び出すためのハンドラーを取得する(ステップS302)。
そして、Activityは、コールバックオブジェクトの登録をServiceに要求する(ステップS303)。そして、Serviceは、コールバックオブジェクトをメモリに格納する(ステップS304)。Activityは、コールバック利用メソッドの呼出しを行う(ステップS305)。そして、Serviceは、受付応答をActivityに返す(ステップS306)。
その後、Serviceは、実際に処理を行った後、処理結果をコールバック利用メソッドに通知し(ステップS307)、コールバックメソッドを介してActivityに実行結果を返す(ステップS308)。
次に、図9を用いて、本実施形態におけるコールバックオブジェクトを利用した呼出の例について説明する。なお、図9では、コールバックオブジェクトの登録時は通信断(オフライン)、呼び出しの際は通信ありで、オフロードする場合の事例であることを前提に説明する。図9に示すように、まずActivityは、従来のAndroidと同じくContextというオブジェクトにサービスの利用を要求し(ステップS401)、Serviceを呼び出すためのハンドラーを取得する(ステップS402)。
そして、Activityは、コールバックオブジェクトの登録をBinder Driverに要求する(ステップS403)。そして、Binder Driverは、Serviceに要求するとともに(ステップS404)、キュー25にコールバックオブジェクトを登録する(ステップS405)。そして、Serviceは、コールバックオブジェクトをメモリに格納する(ステップS406)。つまり、コールバックオブジェクトの登録時は、通信断のためコールバックオブジェクトをサーバ30側に登録できないことから、モバイル端末20でコールバックオブジェクトの登録を実行する。このとき、メソッドの種類がコールバックオブジェクトを含むことから、上記したようにキュー25にも保存する。
次にServiceのメソッドに対する呼び出しがかかると(ステップS407)、サーバ30側で処理をすべきか判断し(ステップS408)、この時は通信があるためサーバ30での実行と決まる。その際に、Binder Driverは、まずキュー25の事前実行メソッドを確認し(ステップS409)、コールバック登録の応答を受け付けて、先ほどモバイル端末20のキュー25に登録したコールバックオブジェクトの登録メソッドを抽出する(ステップS410)。そして、モバイル端末20のBinder Driverは、まずコールバックオブジェクトの登録をサーバ30側のBinder Driverに行い(ステップS411)、呼出命令をサーバ30にあるServiceにリレーする(ステップS412)。
そして、サーバ30のServiceは、Binder Driverを介してモバイル端末20のBinder Driverに登録結果を返すとともに(ステップS413、S414)、メモリにコールバックオブジェクトを登録する(ステップS415)。続いて、モバイル端末20のServiceは、コールバック利用メソッドの呼び出しを行い、サーバ30側のBinder Driverを介してServiceにリレーする(ステップS416)。
そして、サーバ30のServiceは、Binder Driverを介して受付応答をモバイル端末20のBinder Driverに返す(ステップS417、418)。その後、サーバ30側のServiceは、実際に処理を行った後、処理結果をコールバック利用メソッドに通知し(ステップS419)、コールバックメソッドを介してActivityに実行結果を返す(ステップS420〜423)。
[第一の実施形態の効果]
上述してきたように、第一の実施形態にかかるモバイル端末20は、ユーザインタフェースのコンポーネントから内部処理のコンポーネントに対する呼出しがあったときに、通信の状況に応じて、内部処理のコンポーネントの処理をモバイル端末20において実行するか、サーバ30において実行するかを判断し、判断の結果に応じて、呼出しの呼出し先をモバイル端末20とサーバ30との間で切り替える。そして、モバイル端末20は、呼出し先がモバイル端末20に切り替えられた場合には、キュー25に記憶されたメソッドのうち、モバイル端末20において未実行のメソッドを実行させるように制御し、切替部21aによって呼出し先がサーバ30に切り替えられた場合には、キュー25に記憶されたメソッドのうち、サーバ30において未実行のメソッドを実行させるように制御する。そして、モバイル端末20またはサーバ30によりコンポーネントの処理が実行された後、実行したコンポーネントの処理のメソッドをキュー25に格納する。これにより、通信環境の状況に応じてアプリケーションの分散処理環境を制御する仕組みを提供することが可能となる。
また、モバイル端末内部で動作しているサービスを通信環境の状況に応じて動的にクラウド等のサーバ30側で実行させるような切替の制御を行うことができる。これにより、サーバの豊富なリソース(回線・メモリ等)を用いることで高速化を実現することが可能となる。また、キュー25を利用することで、呼び出し場所が変わることによる実行結果が変わってしまうことを防止することできる。さらに、実行環境の切替による処理の中断、処理結果の中間状態のリセット等が発生せず、切替えて利用する複数の実行環境のシームレス化を実現することが可能である。
特に、Androidサービスなどモバイル環境下においてモバイル端末20で無線通信を行うような場合は、モバイル端末20の性能や無線通信環境の制約の影響を受けやすいため、端末通信状態に応じてクラウド側で動作させることによって上記のとおり、モバイル端末以上の処理性能を実行環境の切替を意識せずに得ることができる。
[システム構成]
また、本実施形態において説明した各処理の内、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
[プログラム]
図10は、開示の技術に係る分散処理プログラムによる情報処理がコンピュータを用いて具体的に実現されることを示す図である。図10に例示するように、コンピュータ1000は、例えば、メモリ1010と、CPU(Central Processing Unit)1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。コンピュータ1000の各部はバス1080によって接続される。
メモリ1010は、図10に例示するように、ROM1011及びRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、図10に例示するように、ハードディスクドライブ1031に接続される。ディスクドライブインタフェース1040は、図10に例示するように、ディスクドライブ1041に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1041に挿入される。シリアルポートインタフェース1050は、図10に例示するように、例えばマウス1051、キーボード1052に接続される。ビデオアダプタ1060は、図10に例示するように、例えばディスプレイ1061に接続される。
ここで、図10に例示するように、ハードディスクドライブ1031は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、開示の技術に係る分散処理プログラムは、コンピュータによって実行される指令が記述されたプログラムモジュール1093として、例えばハードディスクドライブ1031に記憶される。
また、分散処理プログラムによる情報処理に用いられるデータは、プログラムデータ1094として、例えばハードディスクドライブ1031に記憶される。そして、CPU1020が、ハードディスクドライブ1031に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出し、各種の手順を実行する。
なお、分散処理プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1031に記憶される場合に限られない。例えば、プログラムモジュール1093やプログラムデータ1094は、着脱可能な記憶媒体に記憶されても良い。この場合、CPU1020は、ディスクドライブなどの着脱可能な記憶媒体を介してデータを読み出す。また、同様に、分散処理プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されても良い。この場合、CPU1020は、ネットワークインタフェースを介して他のコンピュータにアクセスすることで各種データを読み出す。
[その他]
なお、本実施形態で説明した分散処理プログラムは、インターネットなどのネットワークを介して配布することができる。また、制御プログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
10 ネットワーク
20 モバイル端末
21、31 実行環境
21a 切替部
21b 制御部
21c 格納部
22、32 アプリケーション
23 センサ
24、34 ストレージ
30 サーバ
33 仮想センサ

Claims (7)

  1. ユーザインタフェースに係る処理を実行する第1のコンポーネントと内部処理を実行する第2のコンポーネントとが分離して実装されているアプリケーションを実行する処理装置において、
    前記処理装置によって実行された処理のメソッド、または、該処理装置とネットワークを介して接続され前記第2のコンポーネントに相当するコンポーネントを実装したサーバによって実行された処理のメソッドを記憶するキューと、
    前記第1のコンポーネントから前記第2のコンポーネントに対する呼出しがあったときに、通信の状況に応じて、前記第2のコンポーネントの処理を前記処理装置において実行するか、前記サーバにおいて実行するかを判断し、前記判断の結果に応じて、前記呼出しの呼出し先を前記処理装置と前記サーバとの間で切り替える切替部と、
    前記切替部によって呼出し先が前記処理装置に切り替えられた場合には、前記キューに記憶されたメソッドのうち、前記処理装置において未実行のメソッドを実行させるように制御し、前記切替部によって呼出し先がサーバに切り替えられた場合には、前記キューに記憶されたメソッドのうち、前記サーバにおいて未実行のメソッドを実行させるように制御する制御部と、
    前記処理装置または前記サーバにより前記コンポーネントの処理が実行された後、実行した処理のメソッドを前記キューに格納する格納部と、
    を有することを特徴とする処理装置。
  2. アプリケーションの実行に係るデータを記憶するストレージと、
    前記処理装置のストレージと前記サーバのストレージとの間でデータを同期させる同期部と、
    をさらに備えることを特徴とする請求項1に記載の処理装置。
  3. 前記切替部は、通信速度に関する情報、電波強度に関する情報、通信可能か通信不可能かを識別する識別情報のいずれか一つまたは複数を取得し、取得した情報を用いて、通信の状況を推定し、該通信の状況に応じて、前記第2のコンポーネントの処理を前記処理装置において実行するか、前記サーバにおいて実行するかを判断することを特徴とする請求項1または2に記載の処理装置。
  4. 前記格納部は、前記実行した処理のメソッドが、アプリケーションの設定を置くもの、アプリケーションが内部で状態を持つもの、コールバック関数を登録するもののいずれかに該当するか判定し、該当すると判定した場合には、前記メソッドを前記キューに格納することを特徴とする請求項1〜3のいずれか一つに記載の処理装置。
  5. 前記格納部は、実行した処理のメソッドとともに、該メソッドを実行したのが前記処理装置であるのか前記サーバであるのかを示す情報を格納することを特徴とする請求項1〜4のいずれか一つに記載の処理装置。
  6. ユーザインタフェースに係る処理を実行する第1のコンポーネントと内部処理を実行する第2のコンポーネントとが分離して実装されているアプリケーションを実行する処理装置において実行される分散処理方法であって、
    前記処理装置は、前記処理装置によって実行された処理のメソッド、または、該処理装置とネットワークを介して接続され前記第2のコンポーネントに相当するコンポーネントを実装したサーバによって実行された処理のメソッドを記憶するキューを備え、
    前記第1のコンポーネントから前記第2のコンポーネントに対する呼出しがあったときに、通信の状況に応じて、前記第2のコンポーネントの処理を前記処理装置において実行するか、前記サーバにおいて実行するかを判断し、前記判断の結果に応じて、前記呼出しの呼出し先を前記処理装置と前記サーバとの間で切り替える切替工程と、
    前記切替工程によって呼出し先が前記処理装置に切り替えられた場合には、前記キューに記憶されたメソッドのうち、前記処理装置において未実行のメソッドを実行させるように制御し、前記切替工程によって呼出し先がサーバに切り替えられた場合には、前記キューに記憶されたメソッドのうち、前記サーバにおいて未実行のメソッドを実行させるように制御する制御工程と、
    前記処理装置または前記サーバにより前記コンポーネントの処理が実行された後、実行した処理のメソッドを前記キューに格納する格納工程と、
    を含んだことを特徴とする分散処理方法。
  7. ユーザインタフェースに係る処理を実行する第1のコンポーネントと内部処理を実行する第2のコンポーネントとが分離して実装されているアプリケーションを実行する処理装置において実行し、前記第2のコンポーネントに相当するコンポーネントを実装したサーバに対してネットワークを介して接続したコンピュータに、
    前記第1のコンポーネントから前記第2のコンポーネントに対する呼出しがあったときに、通信の状況に応じて、前記第2のコンポーネントの処理を前記処理装置において実行するか、前記サーバにおいて実行するかを判断し、前記判断の結果に応じて、前記呼出しの呼出し先を前記処理装置と前記サーバとの間で切り替える切替ステップと、
    前記切替ステップによって呼出し先が前記処理装置に切り替えられた場合には、前記処理装置によって実行された処理のメソッド、または、前記サーバによって実行された処理のメソッドを記憶するキューに記憶されたメソッドのうち、前記処理装置において未実行のメソッドを実行させるように制御し、前記切替ステップによって呼出し先がサーバに切り替えられた場合には、前記キューに記憶されたメソッドのうち、前記サーバにおいて未実行のメソッドを実行させるように制御する制御ステップと、
    前記処理装置または前記サーバにより前記コンポーネントの処理が実行された後、実行した処理のメソッドを前記キューに格納する格納ステップと、
    を実行させることを特徴とする分散処理プログラム。
JP2013035768A 2013-02-26 2013-02-26 処理装置、分散処理方法および分散処理プログラム Expired - Fee Related JP5847744B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013035768A JP5847744B2 (ja) 2013-02-26 2013-02-26 処理装置、分散処理方法および分散処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013035768A JP5847744B2 (ja) 2013-02-26 2013-02-26 処理装置、分散処理方法および分散処理プログラム

Publications (2)

Publication Number Publication Date
JP2014164567A JP2014164567A (ja) 2014-09-08
JP5847744B2 true JP5847744B2 (ja) 2016-01-27

Family

ID=51615106

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013035768A Expired - Fee Related JP5847744B2 (ja) 2013-02-26 2013-02-26 処理装置、分散処理方法および分散処理プログラム

Country Status (1)

Country Link
JP (1) JP5847744B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019135578A (ja) * 2018-02-05 2019-08-15 株式会社東芝 クラウドシステム、クラウドサーバ、エッジサーバおよびユーザ装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11306151A (ja) * 1998-04-27 1999-11-05 Fujitsu Ltd 分散オブジェクト処理装置及びプログラム記憶媒体
JP4555000B2 (ja) * 2003-06-20 2010-09-29 株式会社エヌ・ティ・ティ・ドコモ アプリケーションの適応的レプリケーションをサーバサイドコードユニットを用いて実行する方法および装置

Also Published As

Publication number Publication date
JP2014164567A (ja) 2014-09-08

Similar Documents

Publication Publication Date Title
US11314559B2 (en) Method for balanced scale out of resources in distributed and collaborative container platform environment
CN109144679B (zh) 中断请求的处理方法、装置及虚拟化设备
CN104899126B (zh) 对宿主机中容器进行本地实时监控的方法、装置及系统
TWI559153B (zh) 分散式計算架構
JP7100154B2 (ja) プロセッサコアのスケジューリング方法、装置、端末及び記憶媒体
WO2018157836A1 (zh) 一种可编程硬件的资源管理方法、可编程硬件设备及存储介质
US20140289414A1 (en) Api for resource discovery and utilization
WO2019127191A1 (zh) 一种多操作系统共享文件系统的方法、装置和电子设备
CN103530167A (zh) 一种虚拟机内存数据的迁移方法及相关装置和集群系统
JP5751711B2 (ja) コンテキスト・アウェアに分散処理可能な処理装置、方法、及びプログラム
CN111475483A (zh) 数据库迁移方法、装置及计算设备
JPWO2017179537A1 (ja) ソフトウェア更新制御装置、ソフトウェア更新制御システム、ソフトウェア更新制御方法、及び、ソフトウェア更新制御プログラムが格納された記録媒体
US20200117513A1 (en) Systems and methods for splitting processing between device resources and cloud resources
JP5907179B2 (ja) 仮想マシン制御プログラム、仮想マシン制御方法および情報処理装置
KR20140096784A (ko) 마이크로서버 환경의 소프트웨어 이주 방법 및 이를 지원하는 장치
CN104517067B (zh) 访问数据的方法、装置及系统
CN106502759A (zh) 一种数据访问方法、代码调用方法及虚拟机监视器
JPWO2014087654A1 (ja) データ送信装置、データ送信方法、及び記録媒体
JP5847744B2 (ja) 処理装置、分散処理方法および分散処理プログラム
US20250244908A1 (en) Cloud Computing Technology-Based Data Migration Method and Cloud Management Platform
CN102799480B (zh) 虚拟化系统中关闭中断的方法和装置
CN114448909A (zh) 基于ovs的网卡队列轮询方法、装置、计算机设备及介质
CN107688479B (zh) Android系统网络集群及其搭建的方法、Android系统网络集群数据处理的方法和系统
CN104516952B (zh) 一种内存分区部署方法与装置
CN117178258A (zh) 加速器控制系统、加速器控制方法和加速器控制程序

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150226

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20151001

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20151005

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151013

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151125

R150 Certificate of patent or registration of utility model

Ref document number: 5847744

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees