(57)【特許請求の範囲】
【請求項１】
自装置の状態に基づいて、起動されたプログラムを自装置または他装置の何れで実行するかを決定し、他装置で実行すると決定した場合、自装置の状態情報を付加した第１の実行要求を、近距離無線通信で接続された代理サーバ装置に送信する、プログラム実行手段を備えるクライアント装置と、
前記第１の実行要求を受信して、付加された前記状態情報に基づいて、前記プログラムを自装置または他装置の何れで実行するかを決定し、他装置で実行すると決定した場合、第２の実行要求を、遠距離無線通信で接続されたクラウドサーバ装置に送信する実行要求管理手段を備える前記代理サーバ装置と、
前記第２の実行要求を受信して、前記プログラムを実行する第２の代理実行手段を備える、前記クラウドサーバ装置と、を包含するプログラム実行システム。
【請求項２】
前記クライアント装置の前記プログラム実行手段は、自装置が、操作中である場合、または、前記代理サーバ装置と前記近距離無線通信が不可能なとき、自装置で実行すると決定し、その他の場合は他装置で実行すると決定し、
前記代理サーバ装置の前記実行要求管理手段は、前記状態情報に基づいて、前記クライアント装置が、装着中若しくは移動中であって、かつ、最後の操作からの経過時間が所定時間以内であると判断した時に自装置で実行し、その他の場合他装置で実行すると判断する、請求項１のプログラム実行システム。
【請求項３】
前記クライアント装置の前記プログラム実行手段は、前記第１の実行要求に、自装置のメモリ情報を付加して送信し、
前記代理サーバ装置は、さらに、前記クライアント装置のスペック情報と前記メモリ情報から仮想的な前記クライアント装置の実行環境を生成する実行環境生成手段と、
生成された仮想的な前記実行環境で前記プログラムを実行する第１の代理実行手段と、を備え、
前記クラウドサーバ装置の前記第２の代理実行手段は、前記代理サーバ装置で生成されて自装置に送信された仮想的な前記実行環境で前記プログラムを実行する、請求項１乃至請求項２の何れか１項のプログラム実行システム。
【請求項４】
前記クライアント装置は、さらに、前記プログラムからアクセスされるリソースと、当該リソースへのアクセスを行うリソース情報アクセス手段とを備え、
前記代理サーバ装置は、自装置、または、前記クラウドサーバ装置で実行される前記プログラムの前記クライアント装置の前記リソースへのアクセス要求を受けて、前記アクセス要求を前記リソース情報アクセス手段に転送する、クライアントリソース情報アクセス手段を備える、請求項１乃至請求項３の何れか１項のプログラム実行システム。
【請求項５】
クライアント装置が、自装置の状態に基づいて、起動されたプログラムを自装置または他装置の何れで実行するかを決定し、他装置で実行すると決定した場合、自装置の状態情報を付加した第１の実行要求を、近距離無線通信で接続された代理サーバ装置に送信し、
前記代理サーバ装置が、前記第１の実行要求を受信して、付加された前記状態情報に基づいて、前記プログラムを自装置または他装置の何れで実行するかを決定し、他装置で実行すると決定した場合、第２の実行要求を、遠距離無線通信で接続されたクラウドサーバ装置に送信し、
前記クラウドサーバ装置が、前記第２の実行要求を受信して、前記プログラムを実行する、プログラム実行方法。
【請求項６】
前記クライアント装置は、自装置が、操作中である場合、または、前記代理サーバ装置と前記近距離無線通信が不可能なとき、自装置で実行すると決定し、その他の場合は他装置で実行すると決定し、
前記代理サーバ装置は、前記状態情報に基づいて、前記クライアント装置が、装着中若しくは移動中であって、かつ、最後の操作からの経過時間が所定時間以内であると判断した時に自装置で実行し、その他の場合他装置で実行すると判断する、請求項５のプログラム実行方法。
【請求項７】
前記クライアント装置は、前記第１の実行要求に、自装置のメモリ情報を付加して送信し、
前記代理サーバ装置は、さらに、前記クライアント装置のスペック情報と前記メモリ情報から仮想的な前記クライアント装置の実行環境を生成し、
生成された仮想的な前記実行環境で前記プログラムを実行し、
前記クラウドサーバ装置は、前記代理サーバ装置で生成されて自装置に送信された仮想的な前記実行環境で前記プログラムを実行する、請求項５乃至請求項６の何れか１項のプログラム実行方法。
【請求項８】
前記クライアント装置は、さらに、前記プログラムからアクセスされるリソースと、当該リソースへのアクセスを行い、
前記代理サーバ装置は、自装置、または、前記クラウドサーバ装置で実行される前記プログラムの前記クライアント装置の前記リソースへのアクセス要求を受けて、前記アクセス要求を前記クライアント装置に転送する、請求項５乃至請求項７の何れか１項のプログラム実行方法。
【請求項９】
コンピュータを、
自装置の状態に基づいて、起動されたプログラムを自装置または他装置の何れで実行するかを決定し、他装置で実行すると決定した場合、自装置の状態情報を付加した第１の実行要求を、近距離無線通信で接続された第２のコンピュータに送信する第１のコンピュータとして機能させ、
前記第１の実行要求を受信して、付加された前記状態情報に基づいて、前記起動されたプログラムを自装置または他装置の何れで実行するかを決定し、他装置で実行すると決定した場合、第２の実行要求を、遠距離無線通信で接続された第３のコンピュータに送信する前記第２のコンピュータとして機能させ、
前記第２の実行要求を受信して、前記起動されたプログラムを実行する前記第３のコンピュータとして機能させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム実行システム、プログラム実行方法、および、プログラム、特に、ユーザが利用するクライアント端末の使用状況に応じて、プログラムの実行場所を選択する、プログラム実行システム、プログラム実行方法、および、プログラムに関する。
【背景技術】
【０００２】
プログラムのコンパイルや演算量の多いプログラムの実行は、非常にコストが高く、身に着けて使用するような端末（以降、スマート端末）、例えば、腕時計型端末や眼鏡型端末が実行すると、CPU(Central Processing Unit)リソースや、バッテリーを急激に消費してしまう。一方、ユーザインタフェース関連のプログラムの実行をスマート端末以外の場所で実行すると、レスポンスが悪化してしまう。したがって、プログラムを適切な場所で実行することが重要になる。
【０００３】
上記のような問題を解決する為の技術例が、特許文献１と特許文献２に開示されている。これらの文献の技術は、スマート端末が実行するプログラムを、サーバ装置上でコンパイルしてスマート端末に送信する。サーバ装置上では、スマート端末に合わせたコンパイルが実行される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2000-122871号公報
【特許文献２】特許第5529027号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の文献が開示するシステムは、プログラムのコンパイルはサーバ装置が実施するが、コンパイルされたプログラム自体の実行はスマート端末が実施する。このため、バックグラウンドで実行するようなプログラムの為にも、スマート端末のCPUリソースやバッテリーが消費してしまう。
【０００６】
本発明は、上記問題を解決する、プログラム実行システム、プログラム実行方法、および、プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の１実施の形態のプログラム実行システムは、自装置の状態に基づいて、起動されたプログラムを自装置または他装置の何れで実行するかを決定し、他装置で実行すると決定した場合、自装置の状態情報を付加した第１の実行要求を、近距離無線通信で接続された代理サーバ装置に送信する、プログラム実行手段を備えるクライアント装置と、
前記第１の実行要求を受信して、付加された前記状態情報に基づいて、前記プログラムを自装置または他装置の何れで実行するかを決定し、他装置で実行すると決定した場合、第２の実行要求を、遠距離無線通信で接続されたクラウドサーバ装置に送信する実行要求管理手段を備える前記代理サーバ装置と、
前記第２の要求を受信して、前記プログラムを実行する第２の代理実行手段を備える、前記クラウドサーバ装置と、を包含する。
【０００８】
本発明の１実施の形態のプログラム実行方法は、  クライアント装置が、自装置の状態に基づいて、起動されたプログラムを自装置または他装置の何れで実行するかを決定し、他装置で実行すると決定した場合、自装置の状態情報を付加した第１の実行要求を、近距離無線通信で接続された代理サーバ装置に送信し、
前記代理サーバ装置が、前記第１の実行要求を受信して、付加された前記状態情報に基づいて、前記プログラムを自装置または他装置の何れで実行するかを決定し、他装置で実行すると決定した場合、第２の実行要求を、遠距離無線通信で接続されたクラウドサーバ装置に送信し、
前記クラウドサーバ装置が、前記第２の要求を受信して、前記プログラムを実行する。
【０００９】
本発明の１実施の形態のプログラムは、第１のコンピュータに、自装置の状態に基づいて、起動されたプログラムを自装置または他装置の何れで実行するかを決定し、他装置で実行すると決定した場合、自装置の状態情報を付加した第１の実行要求を、近距離無線通信で接続された第２のコンピュータに送信する処理を実行させる第１のプログラムと、
前記第２のコンピュータに、前記第１の実行要求を受信して、付加された前記状態情報に基づいて、前記プログラムを自装置または他装置の何れで実行するかを決定し、他装置で実行すると決定した場合、第２の実行要求を、遠距離無線通信で接続された第３のコンピュータに送信する処理を実行させる第２のプログラムと、
前記第３のコンピュータに、前記第２の要求を受信して、前記プログラムを実行する処理を実行させる第３のプログラムを包含する。
【発明の効果】
【００１０】
本発明にかかるプログラム実行システムは、クライアント端末の使用状況に応じて、プログラムの実行場所を選択することにより、ユーザが使用するスマート端末のＣＰＵリソースやバッテリーの消費を抑制する。
【図面の簡単な説明】
【００１１】
【図１】図１は、第１の実施の形態にかかるプログラム実行システム６の構成図である。
【図２】図２は、クライアント１、代理サーバ２、クラウド３の各部の関係の一部を示す図である。
【図３】図３は、端末状態管理表１０４の例を示す図である。
【図４】図４は、プログラム実行場所判断部１０５１の動作フローチャートである。
【図５】図５は、クライアント管理表２０２の例を示す図である。
【図６】図６は、クラウド管理表２０３の例を示す図である。
【図７】図７は、プログラム管理表２０６の例を示す図である。
【図８】図８は、代理実行環境管理表３０２の例を示す図である。
【図９】図９は、クライアント１の登録動作の様子を示す図である。
【図１０】図１０は、プログラムの登録動作の様子を示す図である。
【図１１】図１１は、端末状態の更新動作の様子を示す図である。
【図１２】図１２は、クラウド３の状態の更新動作の様子を示す図である。
【図１３】図１３は、クライアント１でのプログラム実行動作の様子を示す図である。
【図１４】図１４は、代理サーバ２でのプログラム実行動作の様子を示す図である。
【図１５】図１５は、クラウド３でのプログラム実行動作の様子を示す図である。
【図１６】図１は、第２の実施の形態にかかるプログラム実行システム６の構成図である。
【発明を実施するための形態】
【００１２】
＜第１の実施の形態＞
＜構成と各部の動作＞
図１は、本実施の形態にかかるプログラム実行システム６の構成図である。プログラム実行システム６は、各々１台以上の、クライアント装置（以降、クライアント１）、代理サーバ装置（以降、代理サーバ２）、及び、クラウドサーバ装置（以降、クラウド３）を包含する。
【００１３】
クライアント１は、スマートグラスやスマートウォッチなどの小型の情報端末であり、CPU（Central Processing Unit）の計算能力や記憶容量が小さい。また代理サーバ２は、スマートフォン、タブレット端末などの中型の情報端末であり、CPUの計算能力や記憶容量はクライアント１と比較して大きい。クラウド３は、クライアント１や代理サーバ２と比較して大きなCPUの計算能力や記憶容量を有する。ここで、クラウド３は、複数のデータセンタに分散されて配置されたサーバ群に属するサーバ装置などであるが、オフィスなどに設置された１台のサーバ装置であっても良い。
【００１４】
１台の代理サーバ２には、１台以上のクライアント１が近距離無線通信４で接続されている。近距離無線通信４は、例えば、Bluetooth（登録商標）である。クライアント１と代理サーバ２は、近距離無線通信４経由で、低遅延かつ高速に通信が可能である。１台以上の代理サーバ２と１台以上のクラウド３は、遠距離無線通信５で接続されている。遠距離無線通信５は、例えば、代理サーバ２の近傍に有る無線ＬＡＮ（Local Area Network）のアクセスポイントを経由したインターネット通信網である。遠距離無線通信５は、近距離無線通信４に比べ、大きな遅延が発生する。
【００１５】
クライアント１は、以下の各部を備えている。
【００１６】
クライアント登録要求部１０１は、クライアント１が近距離無線通信４を経由して代理サーバ２へ初めて通信する際に、代理サーバ２に自身の識別子（以降、ID(Identification)）と計算能力、記憶容量、通信能力等のスペック情報を登録する。
【００１７】
プログラム登録要求部１０２は、初回の通信時に、代理サーバ２にクライアント１のプログラムを登録する、もしくは新たにプログラムを導入した場合に当該プログラムを代理サーバ２に登録する。
【００１８】
端末状態取得部１０３は、自装置について、操作状態か未操作状態か、身に着けている状態か外した状態か、端末が移動している状態か停止している状態か、電波が届いているか届いていないかの端末状態情報を一定間隔で取得し端末状態管理表１０４に記録する。端末状態取得部１０３は、例えば、所定時間内にタッチパネルやマイクロフォンからの操作入力があれば操作中、温感センサーから人の体温が報告されれば装着中、GPS（Global Positioning System）から位置の変化が報告されれば移動中と判断する。
【００１９】
端末状態管理表１０４は、端末状態取得部１０３から得られた状態情報を記録する表である。図３は、端末状態管理表１０４の例を示す図である。本図において、端末状態管理表１０４は、操作状態（Yes）か否（No）か、装着されている（Yes）か否（No）か、移動中（Yes）か停止中（No）か、電波の受信可（Yes）か否（No）かを記録する表である。
【００２０】
プログラム実行部１０５は、クライアント１を操作するユーザやクライアント１の内部プロセスから、プログラムの実行を要求された際に、当該プログラムを、クライアント１、または、他装置（代理サーバ２、クラウド３）の何れで実行するのが適切かを判断し、自装置で実行したり、代理サーバ２に実行を依頼したりする。
【００２１】
プログラム実行部１０５は、プログラム実行場所判断部１０５１と、プログラム実行要求部１０５２を備える。
【００２２】
プログラム実行場所判断部１０５１は、端末状態管理表１０４からクライアント１の端末状態を取得し、当該端末状態に基づいて、プログラムを自装置で実行するか、リモート実行環境である他装置、すなわち代理サーバ２またはクラウド３、で実行するかを決定する。
【００２３】
図４は、プログラム実行場所判断部１０５１の動作フローチャートである。クライアント１が代理サーバ２と通信可能であるかを判定し（Ｓ１）、通信不可であれば（Ｓ１でＮＧ）、プログラム実行場所判断部１０５１は、起動されたプログラムを自装置で実行すると決定する。
【００２４】
クライアント１が代理サーバ２と通信可能であれば（Ｓ１でＯＫ）、プログラム実行場所判断部１０５１は、自装置が操作中であるかを判定する（Ｓ２）。操作中であれば（Ｓ２でＹｅｓ）、プログラム実行場所判断部１０５１は、起動されたプログラムは、例えば、ユーザインタフェース関連のプログラムで高いレスポンスが要求されると判断し、自装置で実行すると決定する。
【００２５】
操作中でなければ（Ｓ２でＮｏ）、プログラム実行場所判断部１０５１は、自装置が装着中あるいは移動中であるかを判定する（Ｓ３およびＳ４）。装着中であれば（Ｓ３でＹｅｓ）、プログラム実行場所判断部１０５１は、起動されたプログラムは、例えば、比較的短時間内に結果が要求されるプログラムで、中くらいのレスポンスが要求されるとして、代理サーバ２またはクラウド３で実行すると決定する。装着中でなく（Ｓ３でＮｏ）、移動中である場合も（Ｓ４でＹｅｓ）、プログラム実行場所判断部１０５１は同様な決定をする。なお、この場合、プログラムを代理サーバ２およびクラウド３の何れで実行するかは、代理サーバ２が、例えば、自身の処理能力に基づいて決定する。
【００２６】
上記の何れでもない場合（Ｓ４でＮｏ）、クライアント１は、例えば、机の上などに放置されている。この場合、プログラム実行場所判断部１０５１は、起動されたプログラムは、例えば、タイマー、センサーの通知、通信メッセージの受信で起動され、バックグラウンドで実行しても問題ないプログラムであると判断する。そして、プログラム実行場所判断部１０５１は、当該プログラムは低レスポンスで構わないとして、クラウド３で実行すると決定する。
【００２７】
プログラム実行要求部１０５２は、プログラム実行場所判断部１０５１がプログラムを他装置で実行すると決定した際に、プログラムの実行要求を代理サーバ２に送信する。
【００２８】
プログラムの実行要求は、プログラム実行場所判断部１０５１の決定情報、メモリイメージの情報を含む。プログラムの実行要求は、さらに、最後の操作からの経過時間等、代理サーバ２が中くらいのレスポンスが要求されるプログラムの実行場所を決定する為の情報を含んでいても良い。また、プログラムの実行要求は、プログラム実行場所判断部１０５１の決定情報の代わりに、端末状態管理表１０４に格納されているような端末状態情報を含んでいても良い。この場合、代理サーバ２で、プログラム実行場所判断部１０５１のＳ３、Ｓ４のような判断を行えば良い。プログラム実行場所判断部１０５１の決定情報は、端末の状態情報に基づいて決定される情報である。この意味で、プログラムの実行要求に付加される、プログラム実行場所判断部１０５１の決定情報と端末状態情報とをまとめて、状態情報と呼ぶ。
【００２９】
リソース情報アクセス部１０７は、リソース１０８の情報にアクセスする。また、リソース情報アクセス部１０７は、代理サーバ２からリソース１０８へのアクセス要求が発行された場合、リソース１０８の情報を返信する。リソース情報アクセス部１０７は、一般的な仮想ファイルシステム（ＶＦＳ）における仮想的なリソースアクセス手法のような公知技術を用いる。
【００３０】
リソース１０８は、例えば、クライアント１上のファイルデータやセンサーデータである。
【００３１】
メモリイメージ取得部１０９は、クライアント１上のメモリの全体および一部のイメージを取得する。
【００３２】
代理サーバ２は、以下の各部を備えている。
【００３３】
クライアント登録部２０１は、クライアント１のクライアント登録要求部１０１から送信されたクライアント登録要求から、クライアント１のIDとスペック情報を取り出して、クライアント管理表２０２に記録する。さらに、クライアント登録部２０１は、プログラム実行環境生成部２０４が作成した仮想的な代理実行環境をクライアント管理表２０２に登録すると共に、クラウド管理表２０３からクラウド３を選択し、当該クラウド３へ当該代理実行環境を送信する。
【００３４】
クライアント管理表２０２は、クライアント１の登録番号、ID、スペック情報、代理実行環境を記録する表である。図５は、クライアント管理表２０２の例を示す図である。ここで、代理実行環境は、例えば、クライアント１から送信されてきた中間言語で記述されたプログラムを代理サーバ２上で実行する仮想マシン（ＶＭ：Virtual Machine）、および、そのような仮想マシンをクラウド３上に生成する為の仮想マシン定義情報である。クライアント管理表２０２は、当該仮想マシンおよび仮想マシン定義情報ファイルへのポインタ情報を格納している。クライアント１、代理サーバ２、および、クラウド３のアーキテクチャが同じであれば、仮想マシンは、共通アーキテクチャの命令を実行する仮想マシンであっても良い。代理実行環境は、クライアント１から送信されたスペック情報を満足するように生成される。
【００３５】
クラウド管理表２０３は、クラウド３の登録番号、アドレス情報、クライアントリストを記録する表である。図６は、クラウド管理表２０３の例を示す図である。ここで、アドレス情報は、クラウド３のＩＰ（Internet Protocol）アドレスである。クライアントリストは、代理サーバ２が転送し、当該クラウド３でプログラムを実行中のクライアント１のリストである。接続状態は、現在の通信可否を示す。
【００３６】
プログラム実行環境生成部２０４は、クライアント１のスペック情報とメモリイメージから仮想的な代理実行環境を生成する。
【００３７】
プログラム登録部２０５は、クライアント１のプログラム登録要求部１０２から送信されたクライアント１のプログラムの中間コードやバイナリコードを、プログラム解析コンパイル部２０７を用いて解析させ、その結果をプログラム管理表２０６に記録する。送信されてきたプログラムがソースの場合、プログラム登録部２０５は、プログラム解析コンパイル部２０７を用いて、ソースプログラムを、中間言語、または、プログラム実行システム６の共通アーキテクチャのバイナリコードにコンパイルする。
【００３８】
プログラム管理表２０６は、プログラムの登録番号、中間コードまたはバイナリ形式のプログラムを格納するファイルの識別名、バイナリコードのサイズ、I/O有無を記録する表である。図７は、プログラム管理表２０６の例を示す図である。
【００３９】
プログラム解析コンパイル部２０７は、クライアント１のプログラムのソースやバイナリコード、中間コードを解析およびコンパイルし、識別名を付与、バイナリコードのサイズやバイナリコード内のオフセット情報、I/O有無を解析する。
【００４０】
クラウド状態取得部２０８は、クラウド３に対して定期的に接続を確認し、その結果をクラウド管理表２０３の接続状態列に記録する。
【００４１】
プログラム実行要求管理部２０９は、クライアント１のプログラム実行要求部１０５２から送信されたプログラム実行要求から要求プログラムと状態情報、メモリイメージの情報、さらに付加されていれば最後の操作からの経過時間等、を取得する。続いて、プログラム実行要求管理部２０９は、クライアント管理表２０２から要求クライアント１の代理実行環境を取得し、プログラム管理表２０６から要求プログラムを取得する。
【００４２】
プログラム実行要求管理部２０９は、状態情報が、中レスポンス要求を示していれば、プログラム代理実行部２１０に依頼して、要求プログラムを代理サーバ２で実行し、クライアント１へ実行した結果のメモリイメージとリソース１０８への操作情報を返送する。状態情報が低レスポンス要求を示していれば、プログラム実行要求管理部２０９は、メモリイメージと代理実行環境、プログラムをクラウド３へ送信し、プログラムの実行を要求する。なお、プログラム実行要求管理部２０９は、状態情報が中レスポンス要求を示していても、最後の操作からの経過時間が一定時間以内である場合に限り、要求プログラムを代理サーバ２で実行することとしても良い。ここで、一定時間は、代理サーバ２がその処理能力に基づいて決定する値である。
【００４３】
また、プログラム実行要求管理部２０９は、状態情報が中レスポンス要求を示していれば、クライアント管理表２０２のスペック情報や代理サーバ２の負荷状態から代理サーバ２で実行するかクラウド３で実行するかを判断し、プログラムを代理サーバ２実行またはプログラムの実行をクラウド３に要求しても良い。
【００４４】
プログラム代理実行部２１０は、プログラム実行要求管理部２０９からプログラムの代理実行を要求された際に、代理実行環境である仮想マシンに、要求されたプログラムと、クライアント１のメモリイメージをロードしてプログラムを実行し、メモリが変更された後のイメージを取得してプログラム実行要求管理部２０９に返信する。代理実行環境でプログラムを実行している際に、クライアント１のリソース１０８へのアクセスが必要になった場合、プログラムは、代理実行環境経由で、クライアントリソースアクセス部２１１にクライアント１のリソース１０８のアクセスを依頼し、結果を受け取る。
【００４５】
クライアントリソースアクセス部２１１は、プログラム代理実行部２１０が実行するプログラムからクライアント１のリソース１０８へのアクセスを要求された際、クライアント１のリソース情報アクセス部１０７にリソース１０８へのアクセスを要求する。さらに、クライアントリソースアクセス部２１１は、クライアント１から返却されたリソース１０８のデータをプログラム代理実行部２１０で実行されるプログラムに渡す。
【００４６】
クライアントリソースアクセス部２１１は、クラウド３のプログラム代理実行部３０３が実行するプログラムからリソース１０８へのアクセスを要求された際にも、クライアント１のリソース情報アクセス部１０７にリソース１０８へのアクセスを要求する。さらに、クライアントリソースアクセス部２１１は、クライアント１から返却されたリソース１０８のデータをプログラム代理実行部３０３が実行するプログラムに渡す。
【００４７】
クライアントリソースアクセス部２１１は、一般的な仮想ファイルシステム（ＶＦＳ）における仮想的なリソースアクセス手法のような公知技術を用いる。
クラウド３は、以下の各部を備えている。
【００４８】
代理実行環境登録部３０１は、代理サーバ２のクライアント登録部２０１から送信されたクライアント１の代理実行環境に基づいて仮想マシンを生成し、代理実行環境管理表３０２に記録する。
【００４９】
代理実行環境管理表３０２は、代理実行環境の登録番号とクライアント１のID、代理サーバ２のID、代理実行環境を記録する表である。図８は、代理実行環境管理表３０２の例を示す図である。代理実行環境管理表３０２は、代理実行環境登録部３０１が生成した仮想マシンへのポインタ情報を格納している。
【００５０】
プログラム代理実行部３０３は、代理サーバ２のプログラム実行要求管理部２０９から送信されたメモリイメージと代理実行環境、プログラムを受信する。さらに、プログラム代理実行部３０３は、代理実行環境管理表３０２から代理実行環境の仮想マシンにアクセスし、要求されたプログラムおよびメモリイメージを当該代理実行環境にロードし、当該プログラムを実行する。実行後、プログラム代理実行部３０３は、メモリが変更された後のイメージを取得してプログラム実行要求管理部２０９経由で、プログラム実行要求部１０５２へ返信する。
【００５１】
クライアントリソースアクセス部３０４は、プログラム代理実行部３０３が実行するプログラムからクライアント１のリソース１０８へのアクセスを要求された際に、代理サーバ２のクライアントリソースアクセス部２１１にリソース１０８へのアクセスを要求する。さらに、クライアントリソースアクセス部３０４は、代理サーバ２から返却されたリソース１０８をプログラム代理実行部３０３が実行するプログラムに渡す。リソース１０８の情報授受は、代理実行環境を経由して行われる。クライアントリソースアクセス部３０４は、一般的な仮想ファイルシステム（ＶＦＳ）における仮想的なリソースアクセス手法のような公知技術を用いる。
【００５２】
図２は、以上説明した、クライアント１、代理サーバ２、クラウド３の各部の関係の一部を示す図である。
【００５３】
クライアント１のクライアント登録要求部１０１、プログラム登録要求部１０２、端末状態取得部１０３、プログラム実行部１０５、リソース情報アクセス部１０７、および、メモリイメージ取得部１０９は、論理回路で構成される。これらの各部は、コンピュータ装置であるクライアント１のメモリ（図示されず）にロードされて、CPU（図示されず）で実行されるプログラムにより実現されても良い。端末状態管理表１０４は、クライアント１のメモリ（図示されず）内の領域である。
【００５４】
代理サーバ２のクライアント登録部２０１、プログラム実行環境生成部２０４、プログラム登録部２０５、プログラム解析コンパイル部２０７、クラウド状態取得部２０８、プログラム実行要求管理部２０９、プログラム代理実行部２１０、および、クライアントリソースアクセス部２１１は、論理回路で構成される。これらの各部は、コンピュータ装置である代理サーバ２のメモリ（図示されず）にロードされて、CPU（図示されず）で実行されるプログラムにより実現されても良い。クライアント管理表２０２、クラウド管理表２０３、および、プログラム管理表２０６は、代理サーバ２のメモリ（図示されず）内の領域である。
【００５５】
クラウド３の代理実行環境登録部３０１、プログラム代理実行部３０３、クライアントリソースアクセス部３０４は、論理回路で構成される。これらの各部は、コンピュータ装置であるクラウド３のメモリ（図示されず）にロードされて、CPU（図示されず）で実行されるプログラムにより実現されても良い。代理実行環境管理表３０２は、クラウド３のメモリ（図示されず）内の領域である。
【００５６】
＜各部の動作連携＞
上述した各部の動作連携を、図９から図１５を用いて説明する。
【００５７】
図９は、クライアント１の登録動作の様子を示す図である。
【００５８】
クライアント１は、代理サーバ２との初回の接続時に、クライアント登録要求部１０１で、代理サーバ２に自身のクライアントIDとスペック情報を送信する。
【００５９】
クライアント登録部２０１は、クライアント１のクライアント登録要求部１０１から送信されたクライアント登録要求からクライアント１のIDとスペック情報を取り出して、クライアント管理表２０２に記録する。さらに、クライアント登録部２０１は、プログラム実行環境生成部２０４にて作成した仮想的な代理実行環境をクライアント管理表２０２に登録すると共に、クラウド管理表２０３から１つのクラウド３を選択し、当該クラウド３へ該当代理実行環境を送信する。
【００６０】
代理実行環境登録部３０１は、代理サーバ２のクライアント登録部２０１から送信されたクライアント１の代理実行環境を代理実行環境管理表３０２に記録する。
【００６１】
図１０は、プログラムの登録動作の様子を示す図である。
【００６２】
プログラム登録要求部１０２は、初回の通信時に、代理サーバ２にクライアント１のプログラムを登録する、もしくは新たにプログラムを導入した場合に当該プログラムを代理サーバ２に登録するため、プログラムのソースやバイナリコード、中間コードを送信する。
【００６３】
プログラム登録部２０５は、クライアント１のプログラム登録要求部１０２から送信されたクライアント１のプログラムの中間コードやバイナリコードを、プログラム解析コンパイル部２０７を用いて解析させ、その結果をプログラム管理表２０６に記録する。送信されてきたプログラムがソースの場合、プログラム登録部２０５は、プログラム解析コンパイル部２０７を用いて、ソースプログラムを、中間言語、または、プログラム実行システム６の共通アーキテクチャのバイナリコードにコンパイルする。
【００６４】
図１１は、端末状態の更新動作の様子を示す図である。
【００６５】
端末状態取得部１０３は、自装置について、操作状態か未操作状態か、身に着けている状態か外した状態か、端末が移動している状態か停止している状態か、電波が届いているか届いていないかの端末状態情報を一定間隔で取得し、端末状態管理表１０４に記録する。
【００６６】
図１２は、クラウド３の状態の更新動作の様子を示す図である。
【００６７】
クラウド状態取得部２０８は、クラウド３に対して定期的に接続を確認し、その結果をクラウド管理表２０３に記録する。
【００６８】
図１３は、クライアント１でのプログラム実行動作の様子を示す図である。
【００６９】
クライアント１を操作するユーザやクライアント１の内部プロセスからプログラムの実行を要求された際に、プログラム実行部１０５は、プログラム実行場所判断部１０５１が、高レスポンスを要求する為自装置で実行すると決定したプログラムを実行する。当該プログラムは、実行の際にリソース１０８へのアクセスが必要な場合は、リソース情報アクセス部１０７によってリソース１０８へアクセスし、情報を取得する。
【００７０】
図１４は、代理サーバ２でのプログラム実行動作の様子を示す図である。
【００７１】
これは、クライアント１を操作するユーザやクライアント１の内部プロセスからプログラムの実行を要求された際に、プログラム実行場所判断部１０５１が、当該プログラムは中くらいのレスポンスを要求すると決定した場合の動作である。この場合、プログラム実行部１０５は、メモリイメージ取得部１０９からクライアント１のメモリイメージを取得し、プログラム実行要求部１０５２によって、代理サーバ２に対してプログラムの実行要求を送信する。
【００７２】
プログラム実行要求管理部２０９は、クライアント１のプログラム実行要求部１０５２から送信されたプログラム実行要求から要求プログラムと状態情報、メモリイメージの情報、さらに付加されていれば最後の操作からの経過時間等、を取得する。続いて、プログラム実行要求管理部２０９は、クライアント管理表２０２から要求クライアント１の代理実行環境を取得し、プログラム管理表２０６から要求プログラムを取得する。
【００７３】
プログラム実行要求管理部２０９は、状態情報が中レスポンス要求を示していれば、プログラム代理実行部２１０に依頼して、要求プログラムを代理サーバ２で実行し、クライアント１へ実行した結果のメモリイメージとリソース１０８への操作情報を返送する。なお、プログラム実行要求管理部２０９は、状態情報が中レスポンス要求を示していても、最後の操作からの経過時間が一定時間以内である場合に限り、プログラム代理実行部２１０に依頼して、要求プログラムを代理サーバ２で実行しても良い。
【００７４】
プログラム代理実行部２１０は、プログラム実行要求管理部２０９からプログラムの代理実行を要求された際に、代理実行環境である仮想マシンに、要求されたプログラムと、クライアント１のメモリイメージをロードしてプログラムを実行する。さらに、プログラム代理実行部２１０は、メモリが変更された後のイメージを取得してプログラム実行要求管理部２０９へ返信する。代理実行環境でプログラムを実行している際に、クライアント１のリソース１０８へのアクセスが必要になった場合、プログラムは、代理実行環境経由で、クライアントリソースアクセス部２１１にクライアント１のリソース１０８のアクセスを依頼し、結果を受け取る。
【００７５】
プログラム実行要求部１０５２は、プログラム実行要求管理部２０９から返されたメモリイメージをクライアント１のメモリに展開し、リソース操作を実行してクライアント１の状態をプログラム実行後の状態にする。
【００７６】
図１５は、クラウド３でのプログラム実行動作の様子を示す図である。
【００７７】
これは、クライアント１を操作するユーザやクライアント１の内部プロセスからプログラムの実行を要求された際に、プログラム実行場所判断部１０５１が、当該プログラムは中くらいのレスポンス、または、低レスポンスを要求すると決定した場合の動作である。プログラム実行部１０５は、メモリイメージ取得部１０９からクライアント１のメモリイメージを取得し、プログラム実行要求部１０５２によって、代理サーバ２に対してプログラムの実行要求を送信する。
【００７８】
プログラム実行要求管理部２０９は、クライアント１のプログラム実行要求部１０５２から送信されたプログラム実行要求から要求プログラムと状態情報、メモリイメージの情報、さらに付加されていれば最後の操作からの経過時間等、を取得する。続いて、プログラム実行要求管理部２０９は、クライアント管理表２０２から要求クライアント１の代理実行環境を取得し、プログラム管理表２０６から要求プログラムを取得する。
【００７９】
プログラム実行要求管理部２０９は、状態情報が、低レスポンス要求を示していれば、プログラム代理実行部３０３に依頼して、要求プログラムをクラウド３で実行し、クライアント１へ実行した結果のメモリイメージとリソース１０８への操作情報を返送する。なお、プログラム実行要求管理部２０９は、状態情報が中レスポンス要求を示していても、最後の操作からの経過時間が一定時間以内でなければ、プログラム代理実行部３０３に依頼して、要求プログラムをクラウド３で実行しても良い。
【００８０】
プログラム代理実行部３０３は、代理サーバ２のプログラム実行要求管理部２０９から送信されたメモリイメージと代理実行環境、要求プログラムを受信する。さらに、プログラム代理実行部３０３は、代理実行環境管理表３０２から代理実行環境の仮想マシンにアクセスし、要求されたプログラムおよびメモリイメージを当該代理実行環境にロードし、当該プログラムを実行する。実行後、プログラム代理実行部３０３は、メモリが変更された後のイメージを取得してプログラム実行要求管理部２０９へ返信する。代理実行環境でプログラムを実行している際に、クライアント１のリソース１０８へのアクセスが必要になった場合、プログラムは、代理実行環境経由で、クライアントリソースアクセス部３０４にクライアント１のリソース１０８のアクセスを依頼し、結果を受け取る。
【００８１】
クライアントリソースアクセス部３０４は、プログラム代理実行部３０３が実行するプログラムからクライアント１のリソース１０８へのアクセスを要求された際に、代理サーバ２のクライアントリソースアクセス部２１１にリソース１０８へのアクセスを要求する。さらに、クライアントリソースアクセス部３０４は、代理サーバ２から返却されたリソース１０８をプログラム代理実行部３０３が実行するプログラムに渡す。
【００８２】
プログラム実行要求部１０５２は、プログラム実行要求管理部２０９から返されたメモリイメージをクライアント１のメモリに展開し、リソース操作を実行してクライアント１の状態をプログラム実行後の状態にする。
【００８３】
＜効果＞
本発明にかかるプログラム実行システム６は、スマート端末等のクライアント１の使用状況に応じて、プログラムの実行場所を選択することにより、ユーザが使用するクライアント１のＣＰＵリソースやバッテリーの消費を抑制する。
【００８４】
その理由は、プログラム実行部１０５が、クライアント１の使用状況を判定し、高レスポンスが求められない状況で起動されたプログラムを、代理サーバ２、または、クラウド３に実行させるからである。
【００８５】
＜第２の実施形態＞
図１６は、本実施の形態にかかるプログラム実行システム６の構成図である。
【００８６】
プログラム実行システム６は、プログラム実行部１０５を備えるクライアント１、プログラム実行要求管理部２０９を備える代理サーバ２、及び、プログラム代理実行部３０３を備えるクラウド３を包含する。
【００８７】
プログラム実行部１０５は、自装置の状態に基づいて、起動されたプログラムを自装置または他装置の何れで実行するかを決定し、他装置で実行すると決定した場合、自装置の状態情報を付加した第１の実行要求を、近距離無線通信４で接続された代理サーバ２に送信する。
【００８８】
プログラム実行要求管理部２０９は、第１の実行要求を受信して、付加された状態情報に基づいて、プログラムを自装置または他装置の何れで実行するかを決定し、他装置で実行すると決定した場合、第２の実行要求を遠距離無線通信５で接続されたクラウド３に送信する。
【００８９】
プログラム代理実行部３０３は、第２の要求を受信して、プログラムを実行する。
【００９０】
本発明にかかるプログラム実行システム６は、スマート端末等のクライアント１の使用状況に応じて、プログラムの実行場所を選択することにより、ユーザが使用するクライアント１のＣＰＵリソースやバッテリーの消費を抑制する。
【００９１】
その理由は、プログラム実行部１０５が、クライアント１の使用状況を判定し、高レスポンスが求められない状況で起動されたプログラムを、代理サーバ２、または、クラウド３に実行させるからである。
【００９２】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００９３】
１    クライアント
２    代理サーバ
３    クラウド
４    近距離無線通信
５    遠距離無線通信
６    プログラム実行システム
１０１    クライアント登録要求部
１０２    プログラム登録要求部
１０３    端末状態取得部
１０４    端末状態管理表
１０５    プログラム実行部
１０７    リソース情報アクセス部
１０８    リソース
１０９    メモリイメージ取得部
２０１    クライアント登録部
２０２    クライアント管理表
２０３    クラウド管理表
２０４    プログラム実行環境生成部
２０５    プログラム登録部
２０６    プログラム管理表
２０７    プログラム解析コンパイル部
２０９    プログラム実行要求管理部
２１０    プログラム代理実行部
２１１    クライアントリソースアクセス部
３０１    代理実行環境登録部
３０２    代理実行環境管理表
３０３    プログラム代理実行部
３０４    クライアントリソースアクセス部
１０５１    プログラム実行場所判断部
１０５２    プログラム実行要求部
【図１】
0006740600.tif 000002
【図２】
0006740600.tif 000003
【図３】
0006740600.tif 000004
【図４】
0006740600.tif 000005
【図５】
0006740600.tif 000006
【図６】
0006740600.tif 000007
【図７】
0006740600.tif 000008
【図８】
0006740600.tif 000009
【図９】
0006740600.tif 000010
【図１０】
0006740600.tif 000011
【図１１】
0006740600.tif 000012
【図１２】
0006740600.tif 000013
【図１３】
0006740600.tif 000014
【図１４】
0006740600.tif 000015
【図１５】
0006740600.tif 000016
【図１６】
0006740600.tif 000017