(57)【要約】【課題】実行中のアプリケーションの機能を容易に向上させる。【解決手段】アプリケーションが使用するモジュールを定義するアプリケーション定義情報を取得する取得部と、上記アプリケーションが実行される装置の状況に応じて上記アプリケーション定義情報を書き換える書換部と、上記書き換えられたアプリケーション定義情報を上記アプリケーションが実行される装置に提供する提供部とを含む情報処理装置が提供される。【選択図】図３
2013254303.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションが使用するモジュールを定義するアプリケーション定義情報を取得する取得部と、
前記アプリケーションのプロセスが実行される装置の状況に応じて前記アプリケーション定義情報を書き換える書換部と、
前記書き換えられたアプリケーション定義情報を前記プロセスが実行される装置に提供する提供部と
を備える情報処理装置。
【請求項２】
前記アプリケーション定義情報は、前記プロセスの実行主体の変更に伴って前記情報処理装置と外部装置との間で送受信され、
前記書換部は、前記情報処理装置または前記外部装置のうち新たに前記プロセスの実行主体になる移動先装置の状況に応じて前記アプリケーション定義情報を書き換える、請求項１に記載の情報処理装置。
【請求項３】
前記書換部は、前記アプリケーション定義情報によって定義される前記モジュールを、前記移動先装置の前記送受信の時の処理能力、または前記送受信後の予測される処理能力に適合したモジュールに書き換える、請求項２に記載の情報処理装置。
【請求項４】
前記書換部は、前記アプリケーション定義情報によって定義される前記モジュールを、前記移動先装置の利用可能なリソース量に応じて書き換える、請求項３に記載の情報処理装置。
【請求項５】
前記書換部は、前記アプリケーション定義情報によって定義される前記モジュールを、前記移動先装置のバッテリ残量に応じて書き換える、請求項３に記載の情報処理装置。
【請求項６】
前記書換部は、前記アプリケーション定義情報によって定義される前記モジュールが前記移動先装置においてアップグレードされている場合に、前記モジュールを該アップグレードされたモジュールに書き換える、請求項２に記載の情報処理装置。
【請求項７】
前記書換部は、前記アプリケーション定義情報によって定義される前記モジュールを、前記移動先装置が有する使用権限に適合したモジュールに書き換える、請求項２に記載の情報処理装置。
【請求項８】
前記取得部は、前記アプリケーション定義情報を前記外部装置から受信し、
前記書換部は、前記情報処理装置の状況に応じて前記アプリケーション定義情報を書き換え、
前記提供部は、前記書き換えられたアプリケーション定義情報を内部的に提供する、請求項２に記載の情報処理装置。
【請求項９】
前記取得部は、前記アプリケーション定義情報を内部的に取得するとともに、前記外部装置の状況を示す情報を前記外部装置から受信し、
前記書換部は、前記外部装置の状況に応じて前記アプリケーション定義情報を書き換え、
前記提供部は、前記書き換えられたアプリケーション定義情報を前記外部装置に送信する、請求項２に記載の情報処理装置。
【請求項１０】
前記取得部は、前記アプリケーションのプロセスにおける前記モジュールの実行状態を示す実行状態情報をさらに取得し、
前記書換部は、前記実行状態情報によって実行されていないことが示される前記モジュールについて前記アプリケーション定義情報を書き換える、請求項１に記載の情報処理装置。
【請求項１１】
前記書換部は、前記アプリケーション定義情報によって定義される前記モジュールを、前記アプリケーションのプロセスが実行される装置の処理能力に適合したモジュールに書き換える、請求項１に記載の情報処理装置。
【請求項１２】
アプリケーションが使用するモジュールを定義するアプリケーション定義情報を取得することと、
前記アプリケーションのプロセスが実行される装置の状況に応じて前記アプリケーション定義情報を書き換えることと、
前記書き換えられたアプリケーション定義情報を前記プロセスが実行される装置に提供することと
を含む情報処理方法。
【請求項１３】
アプリケーションが使用するモジュールを定義するアプリケーション定義情報を取得する機能と、
前記アプリケーションのプロセスが実行される装置の状況に応じて前記アプリケーション定義情報を書き換える機能と、
前記書き換えられたアプリケーション定義情報を前記プロセスが実行される装置に提供する機能と
をコンピュータに実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
プロセスマイグレーションは、実行主体の装置を変更しながらプロセスを持続的に実行するための技術である。近年、プロセスマイグレーションについて、様々な新たな技術が提案されている。例えば、非特許文献１では、チェックポイント／リスタート機構において、プロセスの実行中にプログラムのバグを修正する技術が記載されている。ここで、チェックポイント／リスタート機構は、実行中のプロセスの状態を予め保存しておき、障害発生時などには保存されていた情報を基にプロセスの実行状態を復元する技術である。非特許文献２には、アプリケーションがアクセスできるシステムリソースを制限できる機能と、アプリケーションを隔離するための仮想化環境を提供する機能とを実現するための技術が記載されている。仮想化環境にアプリケーションを移動するためには、チェックポイント／リスタート機構が用いられる。
【０００３】
また、特許文献１には、実行するのに特定のハードウェア構成を必要とするデバイス依存型コンポーネントについて、異なるハードウェアプラットフォームで実行できるように設計された代替コンポーネントのセットを用意することで、ハードウェア構成が異なる装置間でのプロセスマイグレーションを可能にする技術が記載されている。非特許文献３には、プロセスグループを“コンテナ”という単位で移動させる技術におけるプロセスＩＤの仮想化、グループの分離、ネットワークの分離と仮想化、リソースの仮想化などが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４４８１９４４号公報
【非特許文献】
【０００５】
【非特許文献１】室井雅仁ほか，“プログラムの更新を可能とするＣｈｅｃｋｐｏｉｎｔ／Ｒｅｓｔａｒｔ機構”，ＩＰＳＪ  ＳＩＧ  Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ，２０１０年８月３日，Ｖｏｌ．２０１０−ＯＳ−１１５，Ｎｏ．３
【非特許文献２】Shaya  Potter  et  al.，“Secure  Isolation  and  Migration  of  Untrusted  Legacy  Applications”，Columbia  University  Technical  Report  CUCS-005-04，２００４年１月
【非特許文献３】Andrey  Mirkin  et  al.，“Containers  checkpointing  and  live  migration”，Proceedings  of  the  Linux  Symposium，２００８年７月，Ｖｏｌ．２，ｐ．８５−９０
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記のような技術によってもなお、プロセスマイグレーションにおいてプロセスを実行しながらアプリケーションの機能を向上させていくことは容易ではなかった。例えば、非特許文献１では、実行中のプログラムのバグ修正が可能であるものの、そのためにはプロセスの実装が予備情報として必要になる。特許文献１でも同様に、プロセスの移動と同時の機能変更が可能であるが、そのためにはコンポーネントがデバイス依存型であるか非依存型であるかの情報や、依存型である場合の代替コンポーネントなどの情報といった予備情報が必要になる。従って、上記の技術では、任意のアプリケーションを実行しながら更新するといったことは困難であった。
【０００７】
そこで、本開示では、実行中のアプリケーションの機能を容易に向上させることが可能な、新規かつ改良された情報処理装置、情報処理方法およびプログラムを提案する。
【課題を解決するための手段】
【０００８】
本開示によれば、アプリケーションが使用するモジュールを定義するアプリケーション定義情報を取得する取得部と、上記アプリケーションが実行される装置の状況に応じて上記アプリケーション定義情報を書き換える書換部と、上記書き換えられたアプリケーション定義情報を上記アプリケーションが実行される装置に提供する提供部とを含む情報処理装置が提供される。
【０００９】
また、本開示によれば、アプリケーションが使用するモジュールを定義するアプリケーション定義情報を取得することと、上記アプリケーションのプロセスが実行される装置の状況に応じて上記アプリケーション定義情報を書き換えることと、上記書き換えられたアプリケーション定義情報を上記プロセスが実行される装置に提供することとを含む情報処理方法が提供される。
【００１０】
また、本開示によれば、アプリケーションが使用するモジュールを定義するアプリケーション定義情報を取得する機能と、上記アプリケーションのプロセスが実行される装置の状況に応じて上記アプリケーション定義情報を書き換える機能と、上記書き換えられたアプリケーション定義情報を上記プロセスが実行される装置に提供する機能とをコンピュータに実現させるためのプログラムが提供される。
【００１１】
アプリケーション定義情報は、アプリケーションが使用するモジュールを定義した情報である。この情報を、アプリケーションのプロセスが実行される装置の状況に応じて書き換えることで、装置の状況に適したモジュールを用いてアプリケーションのプロセスを実行することが可能になり、結果としてアプリケーションの機能が向上する。
【発明の効果】
【００１２】
以上説明したように本開示によれば、実行中のアプリケーションの機能を容易に向上させることができる。
【図面の簡単な説明】
【００１３】
【図１】本開示の第１の実施形態におけるプロセス移動の概要を示す図である。
【図２】本開示の第１の実施形態におけるプロセスの構成を示す図である。
【図３】本開示の第１の実施形態におけるプロセス移動の処理の例を示すフローチャートである。
【図４】本開示の第１の実施形態における移動元装置の概略的な機能構成を示すブロック図である。
【図５】本開示の第２の実施形態におけるプロセス移動の処理の例を示すフローチャートである。
【図６】本開示の第２の実施形態における移動先装置の概略的な機能構成を示すブロック図である。
【図７】情報処理装置のハードウェア構成を説明するためのブロック図である。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書および図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１５】
なお、説明は以下の順序で行うものとする。
１．第１の実施形態（移動先装置での書き換え）
２．第２の実施形態（移動元装置での書き換え）
３．ハードウェア構成
４．まとめ
【００１６】
（１．第１の実施形態）
まず、図１〜図４を参照して、本開示の第１の実施形態について説明する。
【００１７】
図１は、本開示の第１の実施形態におけるプロセス移動の概要を示す図である。図１には、移動元装置で実行されていたアプリケーションのプロセスが、移動先装置で引き続き実行される例が示されている。
【００１８】
移動元装置で移動対象のプロセスの実行が停止されると、アプリケーションのイメージ情報（Ｉｎｆｏ）が作成される。このイメージ情報は、アプリケーションが使用するモジュールを定義するアプリケーション定義情報と、アプリケーションのプロセスにおけるモジュールの実行状態を示す実行状態情報とを含みうる。イメージ情報は、ネットワークを介して移動元装置から移動先装置に送信される。移動先装置では、受信されたイメージ情報に基づいてプロセスの実行が再開される。
【００１９】
本実施形態では、イメージ情報が移動先装置に送信された後に、移動先装置において、イメージ情報のうちのアプリケーション定義情報が書き換えられる。移動先装置は、装置の状況、例えば処理能力や、ライブラリとして用意されているモジュールのバージョン、アプリケーションの使用権限などをチェックし、その結果に基づいてアプリケーション定義情報を書き換える。
【００２０】
移動先装置では、上記のように書き換えられたアプリケーション定義情報に従ってアプリケーションのプロセスの実行が再開される。それゆえ、移動先装置において、アプリケーションは、例えば移動先装置の処理能力により適応したモジュールや、より新しいバージョンのモジュール、使用権限に則したモジュールなどを用いて実行される。
【００２１】
図２は、本開示の第１の実施形態におけるプロセスの構成を示す図である。プロセスは、１または複数のソフトウェアモジュールＭ１，Ｍ２，・・・Ｍｎを含む。プロセスが実行されるときには、これらのモジュールが所定の順序で呼び出されて実行される。
【００２２】
上記のアプリケーション定義情報では、アプリケーションのプロセスで使用されるモジュールが定義されている。各モジュールは、固有情報を有する。固有情報は、例えば、図示されているように、バージョン情報Ｉ１０１、コンパイル時の最適化オプションＩ１０２、および更新優先度Ｉ１０３などを含みうる。
【００２３】
バージョン情報Ｉ１０１は、モジュールのバージョンを示す情報である。モジュールがアップグレードされると、バージョン情報Ｉ１０１によって示されるバージョンが変更される（例えばより大きな数になる）。従って、例えば２つの装置の間でモジュールのバージョン情報Ｉ１０１を参照すれば、どちらの装置のモジュールが新しいか、つまりアップグレードされているかを判定することが可能である。
【００２４】
コンパイル時の最適化オプションＩ１０２は、モジュールに設定されているコンパイル時の最適化オプション（以下、単に最適化オプションともいう）を示す情報である。最適化オプションが設定されていれば、モジュールをより効率的に実行することができ、動作の高速化や、リソースの節約が可能になる。なお、最適化オプションは、各装置の機種に依存して設定される場合があり、一般的にはその方が効果が高い。例えば、最適化オプションは、特定のタイプのＣＰＵについて設定され、そのタイプのＣＰＵで実行される場合に効率的な実行を実現するものでありうる。
【００２５】
更新優先度Ｉ１０３は、モジュールが更新可能である場合に、更新する優先度を示す情報である。例えば、更新優先度Ｉ１０３は、“０：更新不要”、“１：更新の優先度が低い”、“２：更新の優先度が高い”といったように、段階的に設定されていてもよい。後述するように、アプリケーション定義情報に定義されるモジュールは、様々な基準によって更新されるが、更新の優先度を直接定義する情報として更新優先度Ｉ１０３が用いられてもよい。
【００２６】
図３は、本開示の第１の実施形態におけるプロセス移動の処理の例を示すフローチャートである。
【００２７】
まず、移動元装置において、アプリケーションのプロセスの実行が停止される（ステップＳ１０１）。ここで、プロセスの実行状態が保存される（ステップＳ１０２）。プロセスの実行状態は、例えば上述したイメージ情報として保存される。イメージ情報は、アプリケーション定義情報と、実行状態情報とを含む。実行状態を保存した後、移動元装置でアプリケーションのプロセスが消去される（ステップＳ１０３）。
【００２８】
次に、移動元装置から移動先装置へ、実行状態情報およびアプリケーション定義情報を転送する（ステップＳ１０４）。ここで転送される実行状態情報およびアプリケーション定義情報は、上記のステップＳ１０２で得られたものである。
【００２９】
続いて、移動先装置で、アプリケーション定義情報を更新する処理が実行される。まず、上記のステップＳ１０４で転送された実行状態情報を参照して、変更可能なモジュールを決定する（ステップＳ１０５）。ここでいう変更可能なモジュールは、実行状態情報によって、停止前のプロセスで実行されていないことが示されるモジュールでありうる。これは、停止前のプロセスで実行されていたモジュールを変更した場合、移動先装置でプロセスの実行を再開したときに、実行途中のモジュールが整合しなくなってしまうのを防ぐためである。
【００３０】
次に、移動先装置のモジュールの固有情報を取得する（ステップＳ１０６）。本実施形態では、アプリケーション定義情報の更新が移動先装置で実行されるため、ここでのモジュールの固有情報は、内部的に取得される。モジュールの固有情報は、上述のように、バージョン情報、最適化オプション、および更新優先度などの情報を含みうる。ここで固有情報が取得されるモジュールは、例えば移動先装置にライブラリとして用意されているモジュールでありうる。
【００３１】
次に、上記のステップＳ１０５で決定された変更可能なモジュールの中で、プロセスの実行を再開するにあたりアップグレード可能なモジュールがあるか否かを判定する（ステップＳ１０７）。アップグレード可能であるか否かは、例えば、移動先装置のモジュールのバージョン情報によって示されるバージョンが、アプリケーション定義情報に含まれるモジュールのバージョン情報によって示されるバージョンよりも新しいか否かによって判定されうる。さらに、移動先装置のモジュールの更新優先度、またはアプリケーション定義情報に含まれるモジュールの更新優先度を参照して、更新の優先度が高い場合にモジュールのアップグレードが可能であると判定してもよい。
【００３２】
上記のステップＳ１０７において、アップグレード可能なモジュールがあった場合、当該モジュールについてアプリケーション定義情報が書き換えられる（ステップＳ１０８）。より具体的には、元のアプリケーション定義情報におけるモジュールの定義が、移動先装置に存在するより新しいバージョンのモジュールに書き換えられる。
【００３３】
次に、移動先装置の現在の処理能力、または今後予測される処理能力に関する情報を取得する（ステップＳ１０９）。現在の処理能力は、この後移動先装置でアプリケーションの実行が再開される時の処理能力とみなされる。一方、今後予測される処理能力は、移動先装置でアプリケーションの実行がある程度継続された時点での処理能力とみなされる。
【００３４】
ここで、“処理能力”は、仕様上の静的な処理能力（ＣＰＵの処理能力や、メモリ容量など）ではなく、動的な処理能力（ＣＰＵの使用率や、空きメモリ量、バッテリ残量など）を意味しうる。つまり、上記のステップＳ１０８では、移動先装置でアプリケーションの実行が再開された場合に、どの程度の処理能力（処理速度、利用可能メモリ量、利用可能電力など）でアプリケーションが実行されるかを示す情報が取得されるともいえる。
【００３５】
次に、上記のステップＳ１０５で決定された変更可能なモジュールの中で、プロセスの実行を再開するにあたり、移動先装置の処理能力により適したモジュールがあるか否かを判定する（ステップＳ１１０）。例えば、モジュールの中には、高い処理能力を要するが高度な機能を実現するモジュールと、低い処理能力で済むが機能はシンプルなモジュールとが選択的に用意されている場合もある。このような場合は、移動先装置の処理能力に応じたモジュールを選択することが望ましい。また、例えば、移動先装置のＣＰＵで利用可能なコンパイル時の最適化オプションが用意されているモジュールを選択すれば、移動先装置の処理能力をより有効に利用することが可能である。
【００３６】
上記のステップＳ１１０では、例えば、ステップＳ１０９で取得した移動先装置の処理能力に関する情報と、ステップＳ１０６で取得した移動先装置のモジュールの固有情報とを参照して、移動先装置でアプリケーションの実行に利用するのにより適したモジュールがあるか否かを判定する。ここで、より適したモジュールがあると判定された場合、当該モジュールについてアプリケーション定義情報が書き換えられる（ステップＳ１１１）。より具体的には、元のアプリケーション定義情報におけるモジュールの定義が、移動先装置に存在するより適したモジュールに書き換えられる。
【００３７】
次に、移動先装置で、実行状態情報および書き換えられたアプリケーション定義情報を用いて、アプリケーションのプロセスの実行が再開される（ステップＳ１１２）。再開以降にアプリケーションによって用いられるモジュールは、上記のステップＳ１０８およびステップＳ１１１の書き換えによって新たにアプリケーション定義情報に定義されたモジュールでありうる。
【００３８】
図４は、本開示の第１の実施形態における移動先装置の概略的な機能構成を示すブロック図である。図４を参照すると、移動先装置１００は、通信部１１０と、書換部１２０と、提供部１３０と、記憶部１４０と、実行部１５０とを含む。移動先装置１００は、例えば後述する情報処理装置のハードウェア構成によって実現されうる。
【００３９】
通信部１１０は、プロセス移動の際にアプリケーション定義情報を移動元装置から取得して、書換部１２０に提供する取得部としても機能する。さらに、通信部１１０は、実行状態情報を移動元装置から取得して書換部１２０に提供してもよい。通信部１１０は、例えば通信装置などを用いて実現されうる。
【００４０】
書換部１２０は、移動後のプロセスが実行される装置、すなわち移動先装置１００の状況に応じて、通信部１１０が取得したアプリケーション定義情報を書き換える。書換部１２０は、通信部１１０が取得した実行状態情報を参照したり、記憶部１４０などから取得される移動先装置１００の状況に関する情報に基づいて、アプリケーション定義情報を書き換えてもよい。書換部１２０も、例えばＣＰＵを用いてソフトウェア的に実現されうる。
【００４１】
例えば、書換部１２０は、記憶部１４０から移動先装置１００のモジュールの固有情報を取得し、アプリケーション定義情報によって定義されているモジュールが移動先装置１００においてアップグレードされている場合に、モジュールをアップグレードされたモジュールに書き換えてもよい。かかる書き換えによって、例えば、プロセスの移動の機会を利用してモジュールの不具合修正が可能になる。
【００４２】
また、例えば、書換部１２０は、記憶部１４０から移動先装置１００の現在または将来の処理能力に関する情報を取得し、アプリケーション定義情報によって定義されているモジュールを、移動先装置１００の処理能力に適合したモジュールに書き換えてもよい。ここで、書換部１２０は、例えば、移動先装置１００の利用可能なリソース量に応じて、定義されるモジュールを書き換えてもよい（例えば、利用可能なリソース量が比較的少ないモバイル装置から、多くのリソースを利用可能なレコーダやゲーム機にプロセスを移動するような場合。その逆もありうる）。また、書換部１２０は、例えば、移動先装置１００のバッテリ残量に応じて、定義されるモジュールを書き換えてもよい（例えば、電源に接続された据え置きの装置から、モバイル装置にプロセスを移動するような場合。その逆もありうる）。
【００４３】
さらに、例えば、書換部１２０は、記憶部１４０から移動先装置１００のアプリケーションの使用権限に関する情報を取得し、アプリケーション定義情報によって定義されているモジュールを、移動先装置１００の使用権限に適合したモジュールに書き換えてもよい。かかる書き換えによって、例えば、他の装置での使用に制限があるアプリケーションであっても、移動先装置１００で使用可能な範囲でプロセスを移動させ、実行することが可能になる。
【００４４】
提供部１３０は、書換部１２０によって書き換えられたアプリケーション定義情報を、記憶部１４０に提供する。また、提供部１３０は、通信部１１０によって取得された実行状態情報を、アプリケーション定義情報とともに記憶部１４０に提供する。アプリケーション定義情報および実行状態情報は、そのまま記憶部１４０に格納されてもよいし、あるいはこれらの情報を元にして記憶部１４０に格納されている情報が更新されてもよい。提供部１３０は、例えばＣＰＵを用いてソフトウェア的に実現されうる。
【００４５】
記憶部１４０は、移動先装置１００でのアプリケーションの実行に関する各種の情報を持続的または一時的に格納する。記憶部１４０には、例えば、アプリケーションが使用するモジュールのプログラムや、これらの実行状態を示す情報などが格納される。上記の提供部１３０によって提供されたアプリケーション定義情報や実行状態情報は、記憶部１４０に格納されている情報に反映される。記憶部１４０は、ＲＡＭやＲＯＭ、ストレージ装置、リムーバブル記録媒体などの各種記憶手段によって実現されうる。
【００４６】
実行部１５０は、移動先装置１００でアプリケーションのプロセスを実行する。実行部１５０は、例えば、記憶部１４０に格納された定義に従ってモジュールを呼び出して実行する。このときに実行部１５０が参照する定義は、上記の書換部１２０によって書き換えられたアプリケーション定義情報に基づく定義である。実行部１５０も、例えばＣＰＵを用いてソフトウェア的に実現されうる。
【００４７】
なお、移動元装置の機能構成も、上記の移動先装置１００の機能構成と類似したものにすることが可能である。ただし、本実施形態では、移動先装置でアプリケーション定義情報が書き換えられるため、移動元装置は必ずしも上記の書換部１２０の機能構成を有さなくてもよい。
【００４８】
（２．第２の実施形態）
次に、図５および図６を参照して、本開示の第２の実施形態について説明する。なお、プロセス移動の概要、およびプロセスの構成については、上記の第１の実施形態と同様であるため、詳細な説明は省略する。
【００４９】
図５は、本開示の第２の実施形態におけるプロセス移動の処理の例を示すフローチャートである。
【００５０】
まず、移動元装置において、アプリケーションのプロセスの実行が停止される（ステップＳ２０１）。ここで、プロセスの実行状態が保存される（ステップＳ２０２）。プロセスの実行状態は、例えば上述したイメージ情報として保存される。イメージ情報は、アプリケーション定義情報と、実行状態情報とを含む。実行状態を保存した後、移動元装置でアプリケーションのプロセスが消去される（ステップＳ２０３）。
【００５１】
続いて、移動元装置で、アプリケーション定義情報を更新する処理が実行される。つまり、本実施形態では、第１の実施形態とは異なり、アプリケーション定義情報が移動元装置で書き換えられた上で、移動先装置に転送される。まず、上記のステップＳ２０２で得られた実行状態情報を参照して、変更可能なモジュールを決定する（ステップＳ２０４）。第１の実施形態と同様に、ここでいう変更可能なモジュールは、実行状態情報によって、停止前のプロセスで実行されていないことが示されるモジュールでありうる。
【００５２】
次に、移動元装置から移動先装置にアクセスして、移動先装置のモジュールの固有情報を取得する（ステップＳ２０５）。モジュールの固有情報は、上述のように、バージョン情報、最適化オプション、および更新優先度などの情報を含みうる。ここで固有情報が取得されるモジュールは、例えば移動先装置にライブラリとして用意されているモジュールでありうる。
【００５３】
次に、上記のステップＳ２０４で決定された変更可能なモジュールの中で、移動先装置でアプリケーションのプロセスの実行を再開するにあたりアップグレード可能なモジュールがあるか否かを判定する（ステップＳ２０６）。アップグレード可能であるか否かは、例えば、移動先装置のモジュールのバージョン情報によって示されるバージョンが、アプリケーション定義情報に含まれるモジュールのバージョン情報によって示されるバージョンよりも新しいか否かによって判定されうる。さらに、移動先装置のモジュールの更新優先度、またはアプリケーション定義情報に含まれるモジュールの更新優先度を参照して、更新の優先度が高い場合にモジュールのアップグレードが可能であると判定してもよい。
【００５４】
上記のステップＳ２０６において、アップグレード可能なモジュールがあった場合、当該モジュールについてアプリケーション定義情報が書き換えられる（ステップＳ２０７）。より具体的には、元のアプリケーション定義情報におけるモジュールの定義が、移動先装置に存在するより新しいバージョンのモジュールに書き換えられる。
【００５５】
次に、移動元装置から移動先装置にアクセスして、移動先装置の現在の処理能力、または今後予測される処理能力に関する情報を取得する（ステップＳ２０８）。現在の処理能力は、この後イメージ情報が移動先装置に送信され、移動先装置でアプリケーションの実行が再開される時の処理能力とみなされる。一方、今後予測される処理能力は、移動先装置でアプリケーションの実行がある程度継続された時点での処理能力とみなされる。
【００５６】
次に、上記のステップＳ２０４で決定された変更可能なモジュールの中で、移動先装置でアプリケーションのプロセスの実行を再開するにあたり、移動先装置の処理能力により適したモジュールがあるか否かを判定する（ステップＳ２０９）。ここでは、例えば、ステップＳ２０８で取得した移動先装置の処理能力に関する情報と、ステップＳ２０５で取得した移動先装置のモジュールの固有情報とを参照して、移動先装置でアプリケーションの実行に利用するのにより適したモジュールがあるか否かを判定する。より適したモジュールがあると判定された場合、当該モジュールについてアプリケーション定義情報が書き換えられる（ステップＳ２１０）。より具体的には、元のアプリケーション定義情報におけるモジュールの定義が、移動先装置に存在するより適したモジュールに書き換えられる。
【００５７】
次に、移動元装置から移動先装置へ、実行状態情報およびアプリケーション定義情報を転送する（ステップＳ２１１）。ここで転送される実行状態情報は、上記のステップＳ２０２で得られたものである。また、ここで転送されるアプリケーション定義情報は、上記のステップＳ２０２で得られ、ステップＳ２０７およびステップＳ２１０で必要に応じて書き換えられたものである。
【００５８】
次に、移動先装置で、転送された実行状態情報およびアプリケーション定義情報を用いて、アプリケーションのプロセスの実行が再開される（ステップＳ２１２）。再開以降にアプリケーションによって用いられるモジュールは、上記のステップＳ２０７およびステップＳ２１０の書き換えによって新たにアプリケーション定義情報に定義されたモジュールでありうる。
【００５９】
図６は、本開示の第２の実施形態における移動元装置の概略的な機能構成を示すブロック図である。図６を参照すると、移動元装置２００は、取得部２１０と、書換部２２０と、通信部２３０と、記憶部２４０と、実行部２５０とを含む。移動元装置２００は、例えば後述する情報処理装置のハードウェア構成によって実現されうる。
【００６０】
取得部２１０は、プロセス移動の際にアプリケーション定義情報を取得して、書換部２２０に提供する。さらに、取得部２１０は、実行状態情報を取得して書換部２２０に提供してもよい。アプリケーション定義情報および実行状態情報は、記憶部２４０から取得されてもよいし、あるいは記憶部２４０に格納された情報を基に取得部２１０が生成してもよい。取得部２１０は、例えばＣＰＵを用いてソフトウェア的に実現されうる。
【００６１】
書換部２２０は、プロセス移動の際に、移動後のプロセスが実行される装置、すなわち移動先装置の状況に応じて、取得部２１０が取得したアプリケーション定義情報を書き換える。書換部２２０は、さらに、取得部２１０が取得した実行状態情報を参照したり、通信部２３０を介して取得される移動先装置の状況に関する情報に基づいて、アプリケーション定義情報を書き換えてもよい。書換部２２０も、例えばＣＰＵを用いてソフトウェア的に実現されうる。なお、書換部２２０による具体的な書き換えの例については、上記の第１の実施形態と同様でありうる。
【００６２】
通信部２３０は、書換部２２０によって書き換えられたアプリケーション定義情報を、移動後のプロセスが実行される装置、すなわち移動先装置に提供する提供部としても機能する。また、通信部２３０は、取得部２１０によって取得された実行状態情報を、アプリケーション定義情報とともに提供する。通信部２３０は、移動先装置の状況に関する情報を受信し、書換部２２０に提供してもよい。通信部２３０は、例えば通信装置などを用いて実現されうる。
【００６３】
記憶部２４０は、移動元装置２００でのアプリケーションの実行に関する各種の情報を持続的または一時的に格納する。記憶部２４０には、例えば、アプリケーションが使用するモジュールのプログラムや、これらの実行状態を示す情報などが格納される。アプリケーションのプロセスの移動時に生成されるアプリケーション定義情報や実行状態情報は、記憶部２４０に格納されている情報を基にして生成されうる。記憶部２４０は、ＲＡＭやＲＯＭ、ストレージ装置、リムーバブル記録媒体などの各種記憶手段によって実現されうる。
【００６４】
実行部２５０は、移動元装置２００でアプリケーションのプロセスを実行する。実行部２５０は、例えば、記憶部２４０に格納された定義に従ってモジュールを呼び出して実行する。このとき、実行部２５０は、モジュールの実行状態を記憶部２４０に記録する。実行部２５０も、例えばＣＰＵを用いてソフトウェア的に実現されうる。
【００６５】
なお、移動先装置の機能構成も、上記の移動元装置２００の機能構成と類似したものにすることが可能である。ただし、本実施形態では、移動元装置でアプリケーション定義情報が書き換えられるため、移動先装置は必ずしも上記の書換部２２０の機能構成を有さなくてもよい。
【００６６】
（３．ハードウェア構成）
次に、図７を参照して、本開示の実施形態に係る情報処理装置のハードウェア構成について説明する。図７は、情報処理装置のハードウェア構成を説明するためのブロック図である。図示された情報処理装置９００は、例えば、上記の実施形態における移動先装置１００および移動元装置２００などを実現しうる。
【００６７】
情報処理装置９００は、ＣＰＵ（Central  Processing  unit）９０１、ＲＯＭ（Read  Only  Memory）９０３、およびＲＡＭ（Random  Access  Memory）９０５を含む。また、情報処理装置９００は、ホストバス９０７、ブリッジ９０９、外部バス９１１、インターフェース９１３、入力装置９１５、出力装置９１７、ストレージ装置９１９、ドライブ９２１、接続ポート９２３、通信装置９２５を含んでもよい。情報処理装置９００は、ＣＰＵ９０１に代えて、またはこれとともに、ＤＳＰ（Digital  Signal  Processor）などの処理回路を有してもよい。
【００６８】
ＣＰＵ９０１は、演算処理装置および制御装置として機能し、ＲＯＭ９０３、ＲＡＭ９０５、ストレージ装置９１９、またはリムーバブル記録媒体９２７に記録された各種プログラムに従って、情報処理装置９００内の動作全般またはその一部を制御する。ＲＯＭ９０３は、ＣＰＵ９０１が使用するプログラムや演算パラメータなどを記憶する。ＲＡＭ９０５は、ＣＰＵ９０１の実行において使用するプログラムや、その実行において適宜変化するパラメータなどを一次記憶する。ＣＰＵ９０１、ＲＯＭ９０３、およびＲＡＭ９０５は、ＣＰＵバスなどの内部バスにより構成されるホストバス９０７により相互に接続されている。さらに、ホストバス９０７は、ブリッジ９０９を介して、ＰＣＩ（Peripheral  Component  Interconnect/Interface）バスなどの外部バス９１１に接続されている。
【００６９】
入力装置９１５は、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチおよびレバーなど、ユーザによって操作される装置である。入力装置９１５は、例えば、赤外線やその他の電波を利用したリモートコントロール装置であってもよいし、情報処理装置９００の操作に対応した携帯電話などの外部接続機器９２９であってもよい。入力装置９１５は、ユーザが入力した情報に基づいて入力信号を生成してＣＰＵ９０１に出力する入力制御回路を含む。ユーザは、この入力装置９１５を操作することによって、情報処理装置９００に対して各種のデータを入力したり処理動作を指示したりする。
【００７０】
出力装置９１７は、取得した情報をユーザに対して視覚的または聴覚的に通知することが可能な装置で構成される。出力装置９１７は、例えば、ＬＣＤ（Liquid  Crystal  Display）、ＰＤＰ（Plasma  Display  Panel）、有機ＥＬ（Electro-Luminescence）ディスプレイなどの表示装置、スピーカおよびヘッドホンなどの音声出力装置、ならびにプリンタ装置などでありうる。出力装置９１７は、情報処理装置９００の処理により得られた結果を、テキストまたは画像などの映像として出力したり、音声または音響などの音声として出力したりする。
【００７１】
ストレージ装置９１９は、情報処理装置９００の記憶部の一例として構成されたデータ格納用の装置である。ストレージ装置９１９は、例えば、ＨＤＤ（Hard  Disk  Drive）などの磁気記憶部デバイス、半導体記憶デバイス、光記憶デバイス、または光磁気記憶デバイスなどにより構成される。このストレージ装置９１９は、ＣＰＵ９０１が実行するプログラムや各種データ、および外部から取得した各種のデータなどを格納する。
【００７２】
ドライブ９２１は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブル記録媒体９２７のためのリーダライタであり、情報処理装置９００に内蔵、あるいは外付けされる。ドライブ９２１は、装着されているリムーバブル記録媒体９２７に記録されている情報を読み出して、ＲＡＭ９０５に出力する。また、ドライブ９２１は、装着されているリムーバブル記録媒体９２７に記録を書き込む。
【００７３】
接続ポート９２３は、機器を情報処理装置９００に直接接続するためのポートである。接続ポート９２３は、例えば、ＵＳＢ（Universal  Serial  Bus）ポート、ＩＥＥＥ１３９４ポート、ＳＣＳＩ（Small  Computer  System  Interface）ポートなどでありうる。また、接続ポート９２３は、ＲＳ−２３２Ｃポート、光オーディオ端子、ＨＤＭＩ（High-Definition  Multimedia  Interface）ポートなどであってもよい。接続ポート９２３に外部接続機器９２９を接続することで、情報処理装置９００と外部接続機器９２９との間で各種のデータが交換されうる。
【００７４】
通信装置９２５は、例えば、通信ネットワーク９３１に接続するための通信デバイスなどで構成された通信インターフェースである。通信装置９２５は、例えば、有線または無線ＬＡＮ（Local  Area  Network）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、またはＷＵＳＢ（Wireless  USB）用の通信カードなどでありうる。また、通信装置９２５は、光通信用のルータ、ＡＤＳＬ（Asymmetric  Digital  Subscriber  Line）用のルータ、または、各種通信用のモデムなどであってもよい。通信装置９２５は、例えば、インターネットや他の通信機器との間で、ＴＣＰ／ＩＰなどの所定のプロトコルを用いて信号などを送受信する。また、通信装置９２５に接続される通信ネットワーク９３１は、有線または無線によって接続されたネットワークであり、例えば、インターネット、家庭内ＬＡＮ、赤外線通信、ラジオ波通信または衛星通信などである。
【００７５】
以上、情報処理装置９００のハードウェア構成の一例を示した。上記の各構成要素は、汎用的な部材を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。かかる構成は、実施する時々の技術レベルに応じて適宜変更されうる。
【００７６】
（４．まとめ）
以上で説明した本開示の実施形態では、プロセス移動の際にアプリケーション定義情報が書き換えられ、アプリケーションのプロセスにおいて使用されるモジュールが更新される。アプリケーション定義情報は、上記の実施形態にあるように、移動先装置で書き換えられてもよく、また移動元装置で書き換えられてもよい。あるいは、アプリケーション定義情報は、一旦移動元装置とも移動先装置とも異なるサーバなどの装置に送られ、そこで書き換えられてもよい。
【００７７】
プロセス移動時には、元々ある程度の時間処理が停止することがユーザによって予想されているため、その時間を利用して上記のようなモジュールの更新を実行することで、通常の実行中にモジュールを更新するよりも、ユーザが感じる更新の所要時間を短くすることができる。
【００７８】
また、アプリケーション定義情報の書き換えは、プロセスで実行されていないモジュールを対象にして実行されるため、プロセス移動およびモジュール更新が終了した後、プロセスの実行をそのまま継続させることができる。プロセスで実行されていたモジュールは更新されないことになるが、プロセス移動は一度限りではなく何度も実行されることが想定されるため、そのようなモジュールは他のプロセス移動の機会に更新されうる。
【００７９】
アプリケーション定義情報の書き換えにあたっては、モジュール単位で、例えばバージョン情報や、コンパイル時の最適化オプション、更新優先度といったような情報を参照して書き換えの有無を判定するため、アプリケーションの実装などに関する予備情報は必要とされない。従って、プロセス移動の対象になる任意のアプリケーションについて、アプリケーション定義情報を書き換えることができる。
【００８０】
なお、上記の実施形態では、プロセス移動の際にアプリケーション定義情報が書き換えられる例について説明したが、本開示の実施形態は、必ずしもプロセス移動が実行されない場合にも適用可能である。例えば、あるアプリケーションのプロセスを実行中に、他のプロセスの影響で、例えばＣＰＵの処理速度、利用可能メモリ量、または利用可能電力といったような装置の状況が変化した場合、かかる状況に応じてアプリケーション定義情報を書き換え、書き換えられたアプリケーション定義情報を用いて引き続き同じ装置でアプリケーションのプロセスを実行してもよい。
【００８１】
（効果の例）
以下、本開示の実施形態による効果の具体的な例を示す。
【００８２】
例えば、移動先装置の空きメモリ量が少ないことがわかった場合、メモリ使用量がより少ないバージョンのライブラリを使用するように、アプリケーション定義情報を書き換える。そうすると、プロセスの移動後も円滑にアプリケーションを実行することができる。一方、移動先装置の空きメモリ量が多いことがわかった場合には、メモリ使用量が多いが処理速度や高度な画像・音声表現が可能なバージョンのライブラリを使用するように、アプリケーション定義情報を書き換えてもよい。
【００８３】
また、例えば、移動先装置のＣＰＵの処理能力が高いことがわかった場合、処理は複雑だが、高度な画像・音声表現が可能なバージョンのライブラリを使用するようにアプリケーション定義情報を書き換える。そうすると、プロセスの移動後には移動先装置のＣＰＵの処理能力をフルに活かした画像・音声表現が楽しめる。一方、移動先装置のＣＰＵの処理能力が低い場合には、処理が単純でシンプルな画像・音声表現のバージョンのライブラリを使用するように、アプリケーション定義情報を書き換えてもよい。
【００８４】
また、例えば、移動先装置のバッテリ残量が少ないことがわかった場合、ＣＰＵやその他のデバイスに負担が少ないバージョンのライブラリを使用するように、アプリケーション定義情報を書き換える。そうすると、プロセスの移動後も、移動先装置のバッテリ残り時間が極端に短くなるといったようなことがなくなる。一方、移動先装置のバッテリ残量が多い、または電源に接続されている場合には、ＣＰＵやその他のデバイスを駆使するバージョンのライブラリを使用するように、アプリケーション定義情報を書き換えてもよい。
【００８５】
また、例えば、動画プレーヤのプロセスが移動される場合、移動時により新しいバージョンのライブラリをリンクさせるようにアプリケーション定義情報を書き換えることによって、移動後の動画プレーヤが新たなコーデックに対応するようになる。動画プレーヤ自体は、動画の再生を継続したまま移動するため、ユーザからは、いつの間にか動画プレーヤによって再生可能な動画形式が増えているように感じられる。
【００８６】
また、例えば、アプリケーションのプロセスを移動する場合、最近明らかになった脆弱性に対応しているバージョンのライブラリをリンクさせるようにアプリケーション定義情報を書き換えることによって、アプリケーションの実行を続けたまま、脆弱性に対応することが可能である。
【００８７】
また、例えば、ある装置でプレー中のゲームの機能制限版を友人に配布することも可能である。この場合、ゲームのアプリケーションのイメージ情報を生成し、イメージ情報に含まれるアプリケーション定義情報に定義されたモジュールを、時間制限つき（例えば３０分限定）のモジュールに書き換えたり、画像や音声の出力が制限されたモジュールに書き換えたりする。この場合、プロセスを移動元装置で停止して移動するのではなく、移動元装置でのプロセスの実行は継続したまま、イメージ情報を移動先装置に転送し、移動元装置と移動先装置との両方でプロセスを実行する。機能制限版による配布が可能になれば、配布自体は認められる場合が増えると考えられるため、結果的にユーザの利便性が向上する。
【００８８】
付加的な構成として、アプリケーションで使用されるライブラリの中に、移動先装置のライブラリと互換性がないものがある場合、プロセスの移動とともにライブラリをコピーしてもよい。また、プロセス移動にあたって、アプリケーションで使用されるライブラリと互換性のあるライブラリが用意されている装置を選択して移動先装置にしてもよい。そのような装置がない場合、プロセスの移動とともにライブラリをコピー（または移動）してもよい。アプリケーションが使用しているファイル（共有ライブラリ）の移動先装置との互換性については、移動元装置でアプリケーションのプロセスを停止する前に確認してもよいし、停止した後に確認してもよい。
【００８９】
本開示の実施形態は、例えば、上記で説明したような情報処理装置、情報処理システム、情報処理方法、コンピュータを情報処理装置として機能させるためのプログラム、および当該プログラムが記録された記録媒体を含む。
【００９０】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【００９１】
なお、以下のような構成も本開示の技術的範囲に属する。
（１）アプリケーションが使用するモジュールを定義するアプリケーション定義情報を取得する取得部と、
前記アプリケーションのプロセスが実行される装置の状況に応じて前記アプリケーション定義情報を書き換える書換部と、
前記書き換えられたアプリケーション定義情報を前記プロセスが実行される装置に提供する提供部と
を備える情報処理装置。
（２）前記アプリケーション定義情報は、前記プロセスの実行主体の変更に伴って前記情報処理装置と外部装置との間で送受信され、
前記書換部は、前記情報処理装置または前記外部装置のうち新たに前記プロセスの実行主体になる移動先装置の状況に応じて前記アプリケーション定義情報を書き換える、前記（１）に記載の情報処理装置。
（３）前記書換部は、前記アプリケーション定義情報によって定義される前記モジュールを、前記移動先装置の前記送受信の時の処理能力、または前記送受信後の予測される処理能力に適合したモジュールに書き換える、前記（２）に記載の情報処理装置。
（４）前記書換部は、前記アプリケーション定義情報によって定義される前記モジュールを、前記移動先装置の利用可能なリソース量に応じて書き換える、前記（３）に記載の情報処理装置。
（５）前記書換部は、前記アプリケーション定義情報によって定義される前記モジュールを、前記移動先装置のバッテリ残量に応じて書き換える、前記（３）または（４）に記載の情報処理装置。
（６）前記書換部は、前記アプリケーション定義情報によって定義される前記モジュールが前記移動先装置においてアップグレードされている場合に、前記モジュールを該アップグレードされたモジュールに書き換える、前記（２）〜（５）のいずれか１項に記載の情報処理装置。
（７）前記書換部は、前記アプリケーション定義情報によって定義される前記モジュールを、前記移動先装置が有する使用権限に適合したモジュールに書き換える、前記（２）〜（６）のいずれか１項に記載の情報処理装置。
（８）前記取得部は、前記アプリケーション定義情報を前記外部装置から受信し、
前記書換部は、前記情報処理装置の状況に応じて前記アプリケーション定義情報を書き換え、
前記提供部は、前記書き換えられたアプリケーション定義情報を内部的に提供する、前記（２）〜（７）のいずれか１項に記載の情報処理装置。
（９）前記取得部は、前記アプリケーション定義情報を内部的に取得するとともに、前記外部装置の状況を示す情報を前記外部装置から受信し、
前記書換部は、前記外部装置の状況に応じて前記アプリケーション定義情報を書き換え、
前記提供部は、前記書き換えられたアプリケーション定義情報を前記外部装置に送信する、前記（２）〜（７）のいずれか１項に記載の情報処理装置。
（１０）前記取得部は、前記アプリケーションのプロセスにおける前記モジュールの実行状態を示す実行状態情報をさらに取得し、
前記書換部は、前記実行状態情報によって実行されていないことが示される前記モジュールについて前記アプリケーション定義情報を書き換える、前記（１）〜（９）のいずれか１項に記載の情報処理装置。
（１１）前記書換部は、前記アプリケーション定義情報によって定義される前記モジュールを、前記アプリケーションのプロセスが実行される装置の処理能力に適合したモジュールに書き換える、前記（１）〜（１０）のいずれか１項に記載の情報処理装置。
（１２）アプリケーションが使用するモジュールを定義するアプリケーション定義情報を取得することと、
前記アプリケーションのプロセスが実行される装置の状況に応じて前記アプリケーション定義情報を書き換えることと、
前記書き換えられたアプリケーション定義情報を前記プロセスが実行される装置に提供することと
を含む情報処理方法。
（１３）アプリケーションが使用するモジュールを定義するアプリケーション定義情報を取得する機能と、
前記アプリケーションのプロセスが実行される装置の状況に応じて前記アプリケーション定義情報を書き換える機能と、
前記書き換えられたアプリケーション定義情報を前記プロセスが実行される装置に提供する機能と
をコンピュータに実現させるためのプログラム。
【符号の説明】
【００９２】
１００    移動元装置
１１０    通信部
１２０    書換部
１３０    提供部
１４０    記憶部
１５０    実行部
２００    移動先装置
２１０    取得部
２２０    書換部
２３０    通信部
２４０    記憶部
２５０    実行部
【図１】
2013254303.tif 000003
【図２】
2013254303.tif 000004
【図３】
2013254303.tif 000005
【図４】
2013254303.tif 000006
【図５】
2013254303.tif 000007
【図６】
2013254303.tif 000008
【図７】
2013254303.tif 000009