(57)【要約】【課題】ネットワークで接続されたデバイスを有効に活用して、ユーザに提供されるサービスの質を向上させる。【解決手段】ネットワーク上でクライアントとして機能する第１の情報処理装置からのタスクに関する処理の要求を受信する受信部と、自装置のスケジューラとしての優先度の上記ネットワーク上の情報処理装置の中での順位が第１の所定の順位以上である場合に、上記タスクを上記ネットワーク上でノードとして機能する１または複数の第２の情報処理装置に割り振るスケジューリング部と、上記１または複数の第２の情報処理装置に上記割り振られたタスクに関する処理の実行要求を送信する送信部とを含む情報処理装置が提供される。【選択図】図５
2013061700.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上でクライアントとして機能する第１の情報処理装置からのタスクに関する処理の要求を受信する受信部と、
自装置のスケジューラとしての優先度の前記ネットワーク上の情報処理装置の中での順位が第１の所定の順位以上である場合に、前記タスクを前記ネットワーク上でノードとして機能する１または複数の第２の情報処理装置に割り振るスケジューリング部と、
前記１または複数の第２の情報処理装置に前記割り振られたタスクに関する処理の実行要求を送信する送信部と
を備える情報処理装置。
【請求項２】
前記スケジューリング部は、自装置のスケジューラとしての優先度の順位が前記第１の所定の順位よりも下である場合に機能を停止する、請求項１に記載の情報処理装置。
【請求項３】
前記スケジューリング部は、自装置のスケジューラとしての優先度の順位が前記第１の所定の順位以上であって第２の所定の順位よりも下である場合に、前記スケジューラとしての優先度の順位が前記第２の所定の順位以上である前記ネットワーク上の他の情報処理装置の前記スケジューリング部の機能の一部を代行する、請求項１に記載の情報処理装置。
【請求項４】
前記スケジューリング部は、前記他の情報処理装置の前記スケジューリング部の機能に障害が生じた場合に、該スケジューリング部の機能の全部を代行する、請求項３に記載の情報処理装置。
【請求項５】
前記スケジューラとしての優先度は、前記情報処理装置の現在の処理能力に基づいて算出される、請求項１に記載の情報処理装置。
【請求項６】
前記スケジューラとしての優先度は、前記情報処理装置の将来の処理能力の予測値に基づいて算出される、請求項１に記載の情報処理装置。
【請求項７】
前記スケジューラとしての優先度は、前記情報処理装置の通信状態に基づいて算出される、請求項１に記載の情報処理装置。
【請求項８】
前記スケジューリング部は、前記タスクが実行時に所定のサービス指標を達成するように、前記１または複数の第２の情報処理装置の処理能力に応じて前記タスクを割り振る、請求項１に記載の情報処理装置。
【請求項９】
前記スケジューリング部は、前記１または複数の第２の情報処理装置の現在の処理能力または将来の処理能力の予測値に応じて前記タスクの割り振りを動的に変更する、請求項８に記載の情報処理装置。
【請求項１０】
前記受信部は、複数の前記タスクからなるアプリケーションに関する処理の要求として前記タスクに関する処理の要求を受信し、
前記スケジューリング部は、前記アプリケーションを前記タスクに分割する、請求項１に記載の情報処理装置。
【請求項１１】
ネットワーク上でクライアントとして機能する第１の情報処理装置からのタスクに関する処理の要求を受信することと、
自装置のスケジューラとしての優先度の前記ネットワーク上の情報処理装置の中での順位が第１の所定の順位以上である場合に、前記タスクを前記ネットワーク上でノードとして機能する１または複数の第２の情報処理装置に割り振ることと、
前記１または複数の第２の情報処理装置に前記割り振られたタスクに関する処理の実行要求を送信することと
を含む情報処理方法。
【請求項１２】
ネットワーク上でクライアントとして機能する第１の情報処理装置からのタスクに関する処理の要求を受信する機能と、
自装置のスケジューラとしての優先度の前記ネットワーク上の情報処理装置の中での順位が第１の所定の順位以上である場合に、前記タスクを前記ネットワーク上でノードとして機能する１または複数の第２の情報処理装置に割り振る機能と、
前記１または複数の第２の情報処理装置に前記割り振られたタスクに関する処理の実行要求を送信する機能と
をコンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１３】
ネットワーク上でクライアントとして機能する第１の情報処理装置からのタスクに関する処理の要求を受信する受信部と、
前記タスクを前記ネットワーク上でノードとして機能する１または複数の第２の情報処理装置に割り振るスケジューリング部と、
前記１または複数の第２の情報処理装置に前記割り振られたタスクに関する処理の実行要求を送信する送信部と
を有する前記ネットワーク上の複数の情報処理装置を含み、
前記複数の情報処理装置のうち、スケジューラとしての優先度の順位が第１の所定の順位以上の情報処理装置は前記スケジューリング部の機能を有効にし、残りの情報処理装置は前記スケジューリング部の機能を無効にする情報処理システム。
【請求項１４】
前記残りの情報処理装置は、前記クライアントまたは前記ノードとして機能する、請求項１３に記載の情報処理システム。
【請求項１５】
前記複数の情報処理装置のうち、前記スケジューラとしての優先度の順位が前記第１の所定の順位以上であって第２の所定の順位以上である情報処理装置は、マスタスケジューラとして機能し、
前記複数の情報処理装置のうち、前記スケジューラとしての優先度の順位が前記第１の所定の順位以上であって第２の所定の順位よりも下である情報処理装置は、スレーブスケジューラとして機能し、
前記スレーブスケジューラとして機能する情報処理装置は、前記マスタスケジューラとして機能する情報処理装置の前記スケジューリング部の機能のうちの一部を代行する、請求項１３に記載の情報処理システム。
【請求項１６】
前記マスタスケジューラとして機能する情報処理装置の前記スケジューリング部の機能に障害が生じた場合に、前記スレーブスケジューラとして機能する情報処理装置が代わりに前記マスタスケジューラとして機能する、請求項１５に記載の情報処理システム。
【請求項１７】
前記スケジューラとしての優先度は、前記情報処理装置の現在の処理能力に基づいて算出される、請求項１３に記載の情報処理システム。
【請求項１８】
前記スケジューラとしての優先度は、前記情報処理装置の将来の処理能力の予測値に基づいて算出される、請求項１３に記載の情報処理システム。
【請求項１９】
前記スケジューラとしての優先度は、前記情報処理装置の通信状態に基づいて算出される、請求項１３に記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理装置、情報処理方法、記録媒体および情報処理システムに関する。
【背景技術】
【０００２】
従来、マイクロコントローラを有する家電機器などのデバイスをコンピュータにネットワーク経由で接続し、連携して動作させる技術が知られている。例えば、下記の特許文献１には、コンピュータが、一連の動作のための分割されたプログラムを各デバイスの機能に応じて割り当て、さらにデバイス間の通信手順を決定する技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−１９９８６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年、デバイスの高機能化が進んでいる。例えば、高い画像処理能力を有するテレビやゲーム機が普及している。また、スマートフォンやタブレット型ＰＣ（Personal  Computer）の普及によって、ユーザが複数の情報処理端末を所有することも一般的になってきている。こうしたデバイスは、いずれも高い情報処理能力をもっているが、その分ユーザに提供する機能も高度化しており、各デバイス単独では必ずしも十分なサービスの質を確保できるとは限らない。
【０００５】
そこで、本開示では、ネットワークで接続されたデバイスを有効に活用して、ユーザに提供されるサービスの質を向上させることが可能な、新規かつ改良された情報処理装置、情報処理システム、情報処理方法および記録媒体を提案する。
【課題を解決するための手段】
【０００６】
本開示の一実施形態によれば、ネットワーク上でクライアントとして機能する第１の情報処理装置からのタスクに関する処理の要求を受信する受信部と、自装置のスケジューラとしての優先度の上記ネットワーク上の情報処理装置の中での順位が第１の所定の順位以上である場合に、上記タスクを上記ネットワーク上でノードとして機能する１または複数の第２の情報処理装置に割り振るスケジューリング部と、上記１または複数の第２の情報処理装置に上記割り振られたタスクに関する処理の実行要求を送信する送信部とを含む情報処理装置が提供される。
【０００７】
また、本開示の別の実施形態によれば、ネットワーク上でクライアントとして機能する第１の情報処理装置からのタスクに関する処理の要求を受信することと、自装置のスケジューラとしての優先度の上記ネットワーク上の情報処理装置の中での順位が第１の所定の順位以上である場合に、上記タスクを上記ネットワーク上でノードとして機能する１または複数の第２の情報処理装置に割り振ることと、上記１または複数の第２の情報処理装置に上記割り振られたタスクに関する処理の実行要求を送信することとを含む情報処理方法が提供される。
【０００８】
また、本開示にさらに別の実施形態によれば、ネットワーク上でクライアントとして機能する第１の情報処理装置からのタスクに関する処理の要求を受信する機能と、自装置のスケジューラとしての優先度の上記ネットワーク上の情報処理装置の中での順位が第１の所定の順位以上である場合に、上記タスクを上記ネットワーク上でノードとして機能する１または複数の第２の情報処理装置に割り振る機能と、上記１または複数の第２の情報処理装置に上記割り振られたタスクに関する処理の実行要求を送信する機能とをコンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体が提供される。
【０００９】
また、本開示のさらに別の実施形態によれば、ネットワーク上でクライアントとして機能する第１の情報処理装置からのタスクに関する処理の要求を受信する受信部と、上記タスクを上記ネットワーク上でノードとして機能する１または複数の第２の情報処理装置に割り振るスケジューリング部と、上記１または複数の第２の情報処理装置に上記割り振られたタスクに関する処理の実行要求を送信する送信部とを有する上記ネットワーク上の複数の情報処理装置を含み、上記複数の情報処理装置のうち、スケジューラとしての優先度の順位が第１の所定の順位以上の情報処理装置は上記スケジューリング部の機能を有効にし、残りの情報処理装置は上記スケジューリング部の機能を無効にする情報処理システムが提供される。
【００１０】
本開示によれば、ネットワーク上のあるデバイス（クライアント）から依頼されたタスクの処理を、ネットワーク上の他のデバイス（ノード）に割り当てるにあたり、割り当ての処理をするスケジューラとして、スケジューラにより適した情報処理装置が用いられる。また、情報処理装置は、一時的にスケジューラとして用いられていなくても、潜在的にスケジューラとして機能することが可能であるため、例えばスケジューラとして機能していた情報処理装置がその機能を果たさなくなった場合にも、別の情報処理装置をスケジューラとして処理を続行することが可能である。従って、タスクの分散処理を効率よく安定して実行することができる。
【発明の効果】
【００１１】
以上説明したように本開示によれば、ネットワークで接続されたデバイスを有効に活用して、ユーザに提供されるサービスの質を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】本開示の一実施形態に係る情報処理システムの一例を示す図である。
【図２】本開示の一実施形態に係る情報処理システムの概略的な機能構成を示す図である。
【図３】本開示の一実施形態に係るローディングの処理シーケンスを示す図である。
【図４】本開示の一実施形態に係るタスク実行の処理シーケンスを示す図である。
【図５】本開示の一実施形態に係るスケジューラの変更手順を示す図である。
【図６】本開示の実施形態における機能の動的読み込みの例を示す図である。
【図７】本開示の実施形態におけるリソースの借用の例を示す図である。
【図８】本開示の実施形態における並行処理の例を示す図である。
【図９】本開示の実施形態におけるパイプライン処理の例を示す図である。
【図１０】本開示の実施形態におけるマルチデバイスインストールの例を示す図である。
【図１１】本開示の実施形態におけるインタラクティブアプリケーションの例を示す図である。
【図１２】本開示の実施形態におけるオートスケーリングデプロイの例を示す図である。
【図１３】本開示の実施形態におけるフェイルオーバーの例を示す図である。
【図１４】本開示の実施形態におけるオートレプリケーションおよびキャッシュの例を示す図である。
【図１５】本開示の実施形態における自動再デプロイの例を示す図である。
【図１６】本開示の実施形態に係る情報処理装置のハードウェア構成を示すブロック図である。
【発明を実施するための形態】
【００１３】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書および図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１４】
なお、説明は以下の順序で行うものとする。
１．システム構成
２．タスク処理シーケンス
３．スケジューラの管理
４．その他
５．実現されうる機能の例
６．ハードウェア構成
７．補足
【００１５】
（１．システム構成）
図１は、本開示の一実施形態に係る情報処理システムの一例を示す図である。図１を参照すると、情報処理システム１０では、複数の情報処理装置１００が、ネットワーク２００を介して互いに接続されている。図示された例において、情報処理装置１００は、ＰＣ（Personal  Computer）１００ａ、サーバ１００ｂ、モバイル端末１００ｃ、およびテレビ１００ｄとして例示されている。なお、以下に説明する本開示の実施形態は、情報処理装置１００の種類および数に関わらず適用されうるものであり、図１に示される情報処理装置１００はその一例にすぎない。ネットワーク２００は、有線および無線を問わない各種のネットワークであり、例えばモバイル端末に接続するための基地局２００ａなどがその中に含まれてもよい。
【００１６】
ここで、複数の情報処理装置１００は、所定の条件に基づく論理的なトポロジを構成している。図示された例において、情報処理装置１００は、ユーザＵが保持している装置という条件に基づく論理的なトポロジを構成している。なお、ユーザＵが保持している装置とは、必ずしもユーザＵが物理的に所有している装置を意味するものではなく、ユーザＵが利用可能な装置という意味である。従って、例えば、テレビ１００ｄはユーザＵが家族と共用しているものでありえ、サーバ１００ｂはユーザＵが利用登録をしているサービスを提供するためのサーバでありうる。
【００１７】
図２は、本開示の一実施形態に係る情報処理システムの概略的な機能構成を示す図である。図２を参照すると、情報処理システム１０には、機能として、クライアント１２０と、スケジューラ１４０と、ノード１６０とが含まれる。図１において例示された情報処理装置１００は、これらの機能のうちの少なくとも１つを有する。つまり、情報処理システム１０に含まれる情報処理装置１００は、クライアント１２０であるか、スケジューラ１４０であるか、ノード１６０であるか、またはこれらのうちの２つ以上を兼ねる。
【００１８】
上記の各機能は、例えば、各情報処理装置１００にインストールされたミドルウェアによって実現されうる。これは、ミドルウェア１２２，１４１，１６１として図示されている。このミドルウェアは、情報処理装置１００のそれぞれにインストールされるものであってもよいし、また情報処理装置１００のうちの１つにインストールされ、そこからネットワーク２００を通じて他の情報処理装置１００にロードされるものであってもよい。後述するように、それぞれの情報処理装置１００がクライアント１２０、スケジューラ１４０、またはノード１６０の機能のうちのその機能を実現するかは、状況に応じて変化する。それゆえ、各情報処理装置１００にインストールされるミドルウェアは、上記の各機能に共通のものであってもよい。
【００１９】
かかる情報処理システム１０では、クライアント１２０が、ユーザからアプリケーションまたはタスクの実行要求を受け付ける。この実行要求に先立って、またはこの実行要求に応じて、クライアント１２０は、スケジューラ１４０にアプリケーションのローディングを要求し、さらに上記の実行要求に応じてタスクの実行を要求する。スケジューラ１４０は、上記の要求に応じてノード１６０にアプリケーションを構成するタスクをローディングさせ、さらにタスクを実行させる。
【００２０】
なお、クライアント１２０、スケジューラ１４０、およびノード１６０は、いずれも、情報処理システム１０に複数存在しうる。クライアント１２０が複数存在する場合、スケジューラ１４０は、それぞれのクライアント１２０からのアプリケーションまたはタスクの実行要求を並列的に処理する。ノード１６０が複数存在する場合、スケジューラ１４０は、それぞれのノード１６０の能力などに応じてタスクを分散させる。スケジューラ１４０が複数存在する場合、それぞれのスケジューラ１４０は、協調して１つのスケジューラ１４０の機能を実現する。
【００２１】
以下、クライアント１２０、スケジューラ１４０、およびノード１６０のそれぞれの機能構成について、詳細に説明する。なお、それぞれの機能は、後述する情報処理装置１００のハードウェア構成を用いて実現されうる。
【００２２】
（クライアント）
クライアント１２０は、アプリケーション１２１と、ミドルウェア１２２とを含む。ミドルウェア１２２は、タスク実行要求受付部１２３、端末検出部１２４、およびリクエスト送信部／レスポンス受信部１２５を含む。
【００２３】
実行要求受付部１２３は、ユーザによるタスクの実行要求を受け付ける。ここで実行が要求されるタスクは、クライアント１２０にインストールされているアプリケーション１２１であってもよいし、またそうではないタスクであってもよい。
【００２４】
リクエスト送信部／レスポンス受信部１２５は、スケジューラ１４０に、アプリケーションのローディング要求およびタスクの実行要求を送信する。ここで、タスクの実行要求は、タスク実行要求受付部１２３が受け付けるユーザの実行要求に応じて送信されるが、アプリケーションのローディング要求は、ユーザの実行要求に先立って送信されてもよい。送信先であるスケジューラ１４０は、端末検出部１２４によって予め検出され、その情報はリストとして保持されている。なお、後述するように、タスクの実行要求は、スケジューラ１４０ではなくノード１６０に送信されてもよい。
【００２５】
また、リクエスト送信部／レスポンス受信部１２５は、アプリケーションのローディング要求やタスクの実行要求に対するレスポンスを、スケジューラ１４０またはノード１６０から受信する。なお、後述するように、クライアント１２０がミドルウェア１２２を搭載しない構成によって同等の機能を実現することも可能である。つまり、クライアント１２０は、必ずしもミドルウェア１２２を搭載しなくてよい。
【００２６】
（スケジューラ）
スケジューラ１４０は、ミドルウェア１４１を含み、ミドルウェア１４１は、端末応答部１４２、リクエスト受信部／レスポンス送信部１４３、監視部１４４、習慣解析部１４５、ノード管理部１４６、アプリケーション解析部１４７、レスポンス解析部１４８、端末検出／応答部１４９、およびリクエスト送信部／レスポンス受信部１５０を含む。
【００２７】
端末応答部１４２は、クライアント１２０の端末検出部１２４によるスケジューラの検出に対して、スケジューラ１４０の存在を通知する。リクエスト受信部／レスポンス送信部１４３は、クライアント１２０からアプリケーションのローディング要求およびタスクの実行要求を受信し、これらの要求に対するレスポンスをクライアント１２０に送信する。
【００２８】
監視部１４４は、スケジューラ１４０として機能している情報処理装置１００の情報を監視する。監視部１４４によって取得される情報は、例えば、スペック情報（ＣＰＵ（Central  Processing  Unit）の処理能力、メモリの容量、最大回線速度、ストレージの容量、バッテリの容量など）、およびプレゼンス情報（ＣＰＵの使用率、メモリの残量、現在の回線速度、ストレージの残量、バッテリの残量など）である。後述するように、ノード１６０も同様の監視部１６４を有する。
【００２９】
習慣解析部１４５は、監視部１４４が取得する情報のうち、刻々変化するプレゼンス情報のログを解析して、スケジューラ１４０として機能している情報処理装置１００の習慣的な使用状態（電源は頻繁に切られるか、継続的にスタンバイ状態になっているか、継続的にオンラインになっているか、どの時間帯のＣＰＵ使用率が高いか、など）の情報を取得する。後述するように、ノード１６０も同様の習慣解析部１６５を有する。
【００３０】
ノード管理部１４６は、ノード１６０において取得されたスペック情報やプレゼンス情報（監視部１６４が取得）、習慣的な使用状態の情報（習慣解析部１６５が取得）、保有するリソースの情報（後述するリソース管理部１６６が取得）、ノード１６０にロードされたタスクの情報、タスクの使用状態の情報（後述するタスク監視部１６８が取得）などの情報を取得し、保持する。これらの情報は、例えば、端末検出／応答部１４９がノード１６０を検出するときに取得され、またリクエスト送信部／レスポンス受信部１５０がノード１６０からのレスポンスおよびノード１６０からのノード状態変化の通知を受信したときに更新される。ノード管理部１４６は、例えば、タスクの使用状態の情報に基づいて、ノード１６０のタスク読込／実行部１６９にロードされているタスクのアンロードを指示してもよい。
【００３１】
アプリケーション解析部１４７は、クライアント１２０からアプリケーションのローディング要求が受信された場合に、当該アプリケーションに関する情報（後述するアプリケーションマニフェスト）、およびノード管理部１４６が保持している情報などに基づいて、アプリケーションを複数のタスクに分解し、各タスクを適切なノード１６０に割り当ててローディングさせる。ここで、アプリケーション解析部１４７は、各タスクが必要とするプログラムや、所定のサービス指標を満たすために必要とされる実行環境の情報に基づいて、各タスクを割り当てるノード１６０を決定する。ここで、所定のサービス指標とは、例えば高効率、クライアントへの高レスポンス、低コスト、低消費電力、高可用性、高品質などのＫＰＩ（Key  Performance  Indicator）であり、アプリケーションごとに予め設定されたもの、またはユーザが設定したものでありうる。ここで、アプリケーション解析部１４７は、各ノード１６０へのタスクの割り当てを、例えばノード１６０のプレゼンス情報に基づく現在の処理能力や、習慣的な使用状態の情報に基づく将来の処理能力の予測値などに応じて、動的に変更する。
【００３２】
レスポンス解析部１４８は、タスクのローディング要求およびタスクの実行要求に対する処理結果のレスポンスがノード１６０から受信された場合に、レスポンスを解析して適切な処理を実行する。例えば、ノード１６０から、タスクのローディングまたはタスクの実行においてエラーが発生したことを示すレスポンスが受信された場合、レスポンス解析部１４８は、ノードの再選択、およびローディング要求または実行要求の再送をアプリケーション解析部１４７に依頼する。また、レスポンス解析部１４８は、所定の時間以内にタスクのローディングまたはタスクの実行のレスポンスが取得されない場合にも、ノード１６０に障害が発生したか、他の処理を実行するために処理能力が低下していると判断し、ノードの再選択、およびローディング要求または実行要求の再送をアプリケーション解析部１４７に依頼してもよい。
【００３３】
端末検出／応答部１４９は、上記の各部の処理に先立って、情報処理システム１０に含まれる他のスケジューラ１４０およびノード１６０を検出し、その情報をリストとして保持する。また、端末検出／応答部１４９は、他のスケジューラ１４０の端末検出／応答部１４９およびノード１６０の端末検出／応答部１６２によるスケジューラの検出に対して、スケジューラ１４０の存在を通知する。
【００３４】
リクエスト送信部／レスポンス受信部１５０は、アプリケーション解析部１４７の解析結果に従って、ノード１６０にタスクのローディング要求およびタスクの実行要求を送信する。また、リクエスト送信部／レスポンス受信部１５０は、これらの要求に対するレスポンスをノード１６０から受信する。なお、上記の例では、クライアント１２０がミドルウェア１２２を搭載する例を記載したが、ミドルウェアを使わない構成も可能である。例えば、クライアント１２０に汎用のブラウザを搭載し、同等の機能を実現させることが可能である。具体的には、クライアント１２０のブラウザが、スケジューラ１４０のＩＰアドレス（ホスト名でもよい）をＵＲＬとして指定し、実行したいタスク内容をパラメータとして、スケジューラ１４０に渡す構成も可能である。その場合、リクエスト受信部／レスポンス送信部１４３にＨＴＴＰサーバの機能をもたせることとなる。
【００３５】
（ノード）
ノード１６０は、ミドルウェア１６１と、内部リソース１７１とを含む。ミドルウェア１６１は、端末検出／応答部１６２、リクエスト受信部／レスポンス送信部１６３、監視部１６４、習慣解析部１６５、リソース管理部１６６、タスク解析部１６７、タスク監視部１６８、およびタスク読込／実行部１６９を含む。
【００３６】
端末検出／応答部１６２は、以下の各部の処理に先立って、情報処理システム１０に含まれるスケジューラ１４０を検出し、その情報をリストとして保持する。また、端末検出／応答部１６２は、スケジューラ１４０の端末検出／応答部１４９の検出に対して、ノード１６０の存在を通知する。リクエスト受信部／レスポンス送信部１６３は、スケジューラ１４０またはクライアント１２０からタスクのローディング要求およびタスクの実行要求を受信し、これらの要求に対するレスポンスをスケジューラ１４０またはクライアント１２０に送信する。
【００３７】
監視部１６４および習慣解析部１６５は、上述したようにスケジューラ１４０の監視部１４４および習慣解析部１４５と同様の機能である。監視部１６４および習慣解析部１６５は、取得した情報をリクエスト受信部／レスポンス送信部１６３を介してスケジューラ１４０に提供する。ここで、監視部１６４は、例えば、プレゼンス情報（ＣＰＵの使用率、メモリの残量、現在の回線速度、ストレージの残量、バッテリの残量など）の値に予め閾値を設定し、それぞれの値が閾値を上回った、または下回った場合に、リクエスト受信部／レスポンス送信部１６３を介してスケジューラ１４０にノード状態変化の通知を送信してもよい。
【００３８】
リソース管理部１６６は、ノード１６０が保有している内部リソース１７１の情報を取得し、保持する。内部リソース１７１は、例えば、ノード１６０として機能している情報処理装置１００のハードウェア、ソフトウェア、およびデータなどの情報である。リソース管理部１６６は、取得した情報をリクエスト受信部／レスポンス送信部１６３を介してスケジューラ１４０に提供する。
【００３９】
タスク解析部１６７は、スケジューラ１４０からタスクのローディング要求が受信された場合に、当該タスクに関する情報（後述するタスクマニフェスト）などに基づいて、タスクを実行するのに必要なプログラムをタスク読込／実行部１６９にロードする。ここで、プログラムは、スケジューラ１４０、またはその他の情報処理装置１００からロードされる。
【００４０】
タスク監視部１６８は、ノード１６０にロードされたタスクの使用状況の情報（例えば、それぞれのタスクのＣＰＵの使用率、メモリの使用量、タスクの実行回数または単位時間あたりのアクセス数）を監視する。タスク監視部１６８は、取得した情報をリクエスト受信部／レスポンス送信部１６３を介してスケジューラ１４０に提供する。タスク監視部１６８は、例えば、タスクの使用頻度に予め閾値を設定し、使用頻度が閾値を上回る、または下回るタスクについての情報をスケジューラ１４０に提供してもよい。また、タスク監視部１６８は、この情報に基づいて、タスク読込／実行部１６９にロードされているタスクのアンロードを指示してもよい。
【００４１】
タスク読込／実行部１６９は、必要に応じて内部リソースインターフェース１７０を介して内部リソース１７１を利用し、タスクをロードおよび実行する。上述のように、タスク読込／実行部１６９は、タスク解析部１６７の解析結果に従って、タスクを実行するのに必要なプログラムをロードする。また、タスク読込／実行部１６９は、タスクＡ〜タスクＤとして図示されているように、ロードしたタスクを並列に保持している。これらのタスクは、例えば使用頻度が低いような場合には、タスク監視部１６８、またはタスク監視部１６８からの情報を取得するスケジューラ１４０のノード管理部１４６からの指示に従ってアンロードされる。アンロードされたタスクは、ストレージに格納されて再度必要になった場合にはそこから読み出されてもよい。また、アンロードされたタスクは、ストレージの容量が不足するような場合には破棄され、再度必要になった場合には外部からロードされてもよい。
【００４２】
（２．タスク処理シーケンス）
（ローディング）
図３は、本開示の一実施形態に係るローディングの処理シーケンスを示す図である。図３には、クライアント１２０からアプリケーションのローディング要求が送信される場合の、クライアント１２０、スケジューラ１４０およびノード１６０の間の処理シーケンスが示されている。
【００４３】
ステップＳ１０１〜Ｓ１０５は、必ずしもクライアント１２０によるアプリケーションのローディング要求とは関係なく、スケジューラ１４０とノード１６０との間で実行される処理シーケンスである。上述のように、ノード１６０は、ノード１６０として機能している情報処理装置１００の状態が変化した場合、ノード情報（スペック情報、プレゼンス情報、習慣的な使用状態の情報、保有するリソースの情報など）をアップデートする（ステップＳ１０１）。ノード１６０の監視部１６４は、このときのアップデート情報をスケジューラ１４０に送信する（ステップＳ１０３）。スケジューラ１４０では、ノード管理部１４６がこの情報を受信し、保持しているノード情報を更新する（ステップＳ１０５）。
【００４４】
ローディングの処理シーケンスでは、まず、クライアント１２０のリクエスト送信部／レスポンス受信部１２５が、アプリケーションのローディング要求をスケジューラ１４０に送信する（ステップＳ１０７）。アプリケーションのローディング要求は、少なくとも対象となるアプリケーションを一意に識別するためのアプリケーション識別子を含む。スケジューラ１４０では、リクエスト受信部／レスポンス送信部１４３がこの要求を受信する。
【００４５】
以下のステップＳ１０９〜Ｓ１２９は、後にローディングフローＳ１５０として参照されるシーケンスである。ここで、まず、スケジューラ１４０のアプリケーション解析部１４７は、上記のアプリケーション識別子によって識別される、ローディングの対象となるアプリケーションについて、アプリケーションマニフェストを取得する（ステップＳ１０９）。アプリケーションマニフェストは、当該アプリケーションの各タスクを実行するためのプログラム、および当該アプリケーションによって提供されるサービスが所定のサービス指標（例えば高効率、クライアントへの高レスポンス、低コスト、低消費電力、高可用性、高品質などのＫＰＩ）を満たすために必要とされる実行環境の情報を少なくとも含む情報である。アプリケーションマニフェストは、スケジューラ１４０の内外のデータベースから取得されてもよいし、またクライアント１２０において既知である場合にはクライアント１２０からスケジューラ１４０に送信されてもよい。
【００４６】
次に、アプリケーション解析部１４７は、アプリケーションマニフェストに基づいて、ローディングの対象となるアプリケーションを、タスクに分解する（ステップＳ１１１）。アプリケーションはタスクの集合であるため、１または複数のタスクに分解することが可能である。
【００４７】
さらに、アプリケーション解析部１４７は、アプリケーションマニフェストと、ノード管理部１４６が保持しているノード情報とに基づいて、アプリケーションを分解したタスクを割り当てるノード１６０を決定する（ステップＳ１１３）。ここで、アプリケーション解析部１４７は、各ノード１６０のスペック情報やプレゼンス情報、習慣的な使用状態の情報、保有するリソースの情報などに基づいて、アプリケーションによって提供されるサービスが所定のサービス指標を満たせるように、タスクを割り当てるノード１６０を決定する。
【００４８】
なお、ステップＳ１１１，Ｓ１１３でのアプリケーション解析部１４７の処理には、ユーザが設定したサービス指標（例えば高効率、クライアントへの高レスポンス、低コスト、低消費電力、高可用性、高品質など）が用いられてもよい。
【００４９】
また、１つのタスクは、１つのノード１６０に割り当てられてもよいし、複数のノード１６０に割り当てられてもよい。例えば、アプリケーションが、情報処理システム１０に含まれる情報処理装置１００のそれぞれに保持されているデータにアクセスして所定の処理を実行するようなものである場合、“保持しているデータに所定の処理を実行する”というタスクが複数の情報処理装置１００のそれぞれに割り当てられる。
【００５０】
ここで、ノード１６０にタスクＴが割り当てられた場合、ノード１６０は、このローディングの処理ではタスクＴを実行するために必要なプログラムＰをロードし、後のタスク実行の処理では、プログラムＰを用いてタスクＴを実行する。つまり、このローディングの処理の時点で、後にアプリケーションの各タスクを実行するノード１６０が決定され、それぞれのノード１６０に予めタスクを実行するためのプログラムがロードされる。そのため、タスクの実行のときには、予め決定されたノード１６０に各タスクが割り当てられ、予めロードされたプログラムによって円滑にタスクが実行される。
【００５１】
次に、アプリケーション解析部１４７は、ステップＳ１１３においてすべてのタスクを割り当てるノード１６０が決定したか否か、すなわちすべてのタスクを割り当て可能であるか否かを判定する（ステップＳ１１５）。ここで、すべてのタスクを割り当て可能であると判定されなかった場合、例えばタスクを割り当てるノード１６０が不足している場合、アプリケーション解析部１４７は、リクエスト受信部／レスポンス送信部１４３を介してクライアント１２０にその旨を示すレスポンスを送信する（ステップＳ１１７）。
【００５２】
ここで送信されるレスポンスは、例えば、単純にタスクの割り当てが不能であることを示すものであってもよいし、またユーザにタスク割り当てを可能にするための行動を促すものであってもよい。タスク割り当てを可能にするための行動は、例えば、オフラインになっているためにノード１６０として機能せず、タスクの割り当てがされない情報処理装置１００を、オンラインにしてノード１６０として機能させることである。また、情報処理システム１０に含まれる情報処理装置１００だけではすべてのタスクを割り当てることが難しい場合には、共用サーバの利用登録や、新たな情報処理装置の借用、または情報処理装置１００への新たな機能のインストールを促してもよい。
【００５３】
ステップＳ１１５において、すべてのタスクを割り当て可能であると判定された場合、リクエスト送信部／レスポンス受信部１５０が、タスクのローディング要求をノード１６０に送信する（ステップＳ１１９）。タスクのローディング要求は、少なくとも対象となるタスクを一意に識別するためのタスク識別子を含む。ノード１６０では、リクエスト受信部／レスポンス送信部１６３がこの要求を受信する。
【００５４】
次に、ノード１６０のタスク解析部１６７は、上記のタスク識別子によって識別される、ローディングの対象となるタスクについて、タスクマニフェストを取得する（ステップＳ１２１）。タスクマニフェストは、当該タスクに関する情報であり、タスクを実行するためのプログラムを少なくとも含む情報である。タスクマニフェストは、スケジューラ１４０、またはノード１６０の内外のデータベースから取得されてもよいし、またクライアント１２０において既知である場合にはクライアント１２０からノード１６０に送信されてもよい。
【００５５】
次に、タスク解析部１６７は、タスクマニフェストに基づいて、タスクを実行するためのプログラムをタスク読込／実行部１６９にロードする（ステップＳ１２３）。それから、リクエスト受信部／レスポンス送信部１６３が、ローディングの処理結果をレスポンスとしてスケジューラ１４０に送信する（ステップＳ１２５）。
【００５６】
スケジューラ１４０では、リクエスト送信部／レスポンス受信部１５０がローディングの処理結果を受信する。レスポンス解析部１４８は、タスクを割り当てた各ノード１６０からレスポンスとして受信した処理結果を集約し、確認する。具体的には、レスポンス解析部１４８は、いずれかのタスクのローディング処理結果でエラーが検出されたか否かを判定する（ステップＳ１２７）。ここで、エラーが検出されたと判定された場合、レスポンス解析部１４８は、エラーが検出されたタスクについて、アプリケーション解析部１４７にノード１６０の再決定を依頼し、このタスクについて、ステップＳ１１３以降の処理が再度実行される。
【００５７】
一方、ステップＳ１２７で、エラーが検出されたと判定されなかった場合、つまりすべてのタスクがいずれかのノード１６０にロードされた場合、ノード管理部１４６が、各ノード１６０にロードされたタスクの情報を保存する（ステップＳ１２９）。ノード管理部１４６は、これ以降、各ノード１６０にロードされたタスクの使用状態の情報（例えば、各ノードに何のタスクが保存されているかの情報、タスクの保存場所の情報、それぞれのタスクのＣＰＵの使用率、メモリの使用量、タスクの実行回数または単位時間あたりのアクセス数）をタスク監視部１６８から取得し、この情報を管理する。次に、スケジューラ１４０で集約されたローディングの処理結果が、レスポンスとしてリクエスト受信部／レスポンス送信部１４３からクライアント１２０に送信される（ステップＳ１３１）。
【００５８】
以上で、ローディングの処理シーケンスが終了する。これによって、クライアント１２０がユーザから実行を要求されるアプリケーションまたはタスクを、ノード１６０の連携によって実行するために、各ノード１６０にタスクが割り当てられ、実行に必要なプログラムがロードされた状態になった。
【００５９】
なお、上記の例では、ローディングの処理シーケンスはクライアント１２０からの要求をトリガーとして実行されたが、一旦実行された後は、スケジューラ１４０の判断によって適宜再実行されうる。具体的には、タスクを割り当てられたノード１６０として機能していた情報処理装置１００がオフラインになったことが検出された場合、ノード管理部１４６は、そのノード１６０に割り当てられていたタスクの再割り当て（ステップＳ１１３）および再度のローディング要求（ステップＳ１１９）をアプリケーション解析部１４７に依頼する。
【００６０】
また、タスクが実行されるようになった後に、あるノード１６０に割り当てられた特定のタスクの使用頻度が高いことが検出された場合、ノード管理部１４６は、そのノードに割り当てられているタスクを複製して新たなタスクとし、この新たなタスクを他のノード１６０に割り当て（ステップＳ１１３）、ローディング要求（ステップＳ１１９）することをアプリケーション解析部１４７に依頼する。
【００６１】
このようにして、スケジューラ１４０によるノード１６０へのタスクの割り当ては、ノード管理部１４６が検出する各ノード１６０の状態に応じて動的に変化し、その時々の各ノード１６０の状態に応じた最適な割り当てが実現される。
【００６２】
（タスク実行）
図４は、本開示の一実施形態に係るタスク実行の処理シーケンスを示す図である。図４には、クライアント１２０からアプリケーションまたはタスクの実行要求が送信される場合の、クライアント１２０、スケジューラ１４０およびノード１６０の間の処理シーケンスが示されている。
【００６３】
まず、クライアント１２０のリクエスト送信部／レスポンス受信部１２５が、アプリケーションまたはタスクの実行要求をスケジューラ１４０に送信する（ステップＳ２０１）。アプリケーションまたはタスクの実行要求は、少なくとも対象となるアプリケーションまたはタスクを一意に識別するためのアプリケーション識別子またはタスク識別子を含む。スケジューラ１４０では、リクエスト受信部／レスポンス送信部１４３がこの要求を受信する。
【００６４】
ここで、アプリケーションの実行要求が受信された場合、次に、アプリケーション解析部１４７は、実行対象となるアプリケーションをタスクに分解する（ステップＳ２０３）。分解後のタスクについても、タスク識別子が取得される。これによって、アプリケーションの実行が要求された場合も、タスクの実行が要求された場合も、実行対象はタスク識別子によって特定可能になる。一方、タスクの実行要求を受けた場合は、あらかじめ分解されている点が異なるだけで、上記と同じである。
【００６５】
次に、ノード管理部１４６は、保持している各ノード１６０の割り当てタスクの情報に対して、実行対象のタスク識別子で検索クエリを発行し、実行対象のタスクを割り当てられているノード１６０を検索する（ステップＳ２０５）。取得された情報に基づいて、ノード管理部１４６は、実行対象のタスク識別子によって特定されるタスクのすべてが、いずれかのノード１６０に割り当てられているか否かを判定する（ステップＳ２０７）。ここで、いずれのノード１６０にも割り当てられていないタスクがあると判定された場合、ノード管理部１４６は、アプリケーション解析部１４７に依頼して、図３に示すローディングフローＳ１５０を再実行する（ステップＳ２０９）。
【００６６】
なお、いずれのノード１６０にも割り当てられていないタスクがある場合は、例えば、ローディングフローＳ１５０が予め実行されておらず、実行対象となるタスクがどのノード１６０にも割り当てられていない場合である。逆に言えば、ローディングフローＳ１５０が予め実行されていなくても、実行対象となるタスクのすべてが、偶然、いずれかのノード１６０に割り当てられていれば、上記のステップＳ２０９は実行されなくてもよい。
【００６７】
また、上記の場合の別の例は、ローディングフローＳ１５０によって各ノード１６０にタスクを割り当てたにもかかわらず、タスクの実行時にノード１６０として機能する情報処理装置１００がオフラインになっており、かつタスクの実行が即時性を求められる場合である。例えば、タスクの実行が即時性を求められず、また習慣的な使用状態の情報から当該情報処理装置１００がまもなくオンラインになることが予測されるような場合には、上記のステップＳ２０９を実行せず、情報処理装置１００がオンラインになるまで待機してもよい。
【００６８】
ステップＳ２０７において、実行対象となるタスクのすべてが、いずれかのノード１６０に割り当てられていると判定された場合、および、ステップＳ２０９が実行された後、アプリケーション解析部１４７は、タスクが割り当てられているノード１６０中からタスク実行ノードを決定する（ステップＳ２１１）。それから、リクエスト送信部／レスポンス受信部１５０が、タスクの実行要求をノード１６０に送信する（ステップＳ２１３）。タスクの実行要求は、少なくとも対象となるタスクを一意に識別するためのタスク識別子を含む。また、タスクの実行要求は、タスクの入力データを含んでもよい。ノード１６０では、リクエスト受信部／レスポンス送信部１６３がこの要求を受信する。
【００６９】
ここで、例えば、タスクが１つのノード１６０に割り当てられている場合、そのノード１６０がタスク実行ノードになる。また、例えば、タスクが複数のノード１６０に割り当てられている場合、タスク実行ノードは、その中で最も高いサービス指標を実現できるノードであってもよい。また、例えば、タスクの実行の処理負荷が大きい場合などには、複数のタスク実行ノードが設定されてもよい。この場合、タスクの入力データは、分割されて各タスク実行ノードに送信される。
【００７０】
付加的なステップとして、次に、ノード１６０の監視部１６４は、ノード１６０のプレゼンス情報（ＣＰＵの使用率、メモリの残量、現在の回線速度、ストレージの残量、バッテリの残量など）が、タスクの実行に十分なプレゼンスを示しているか否かを判定する（ステップＳ２１５）。ここで、例えばプレゼンスがタスクの割り当て時に比べて悪化するなどして、タスクの実行に十分なプレゼンスが示されていない場合、監視部１６４はリクエスト受信部／レスポンス送信部１６３を介してスケジューラ１４０にその旨を通知し（ステップＳ２１７）、スケジューラ１４０のアプリケーション解析部１４７はタスク実行ノードを決定しなおす（ステップＳ２１１）。
【００７１】
ステップＳ２１５で、タスクの実行に十分なプレゼンスが示されていると判定された場合、タスク読込／実行部１６９がタスクを実行する（ステップＳ２１９）。上述のように、タスク読込／実行部１６９は、内部リソースインターフェース１７０を介して内部リソース１７１を利用してタスクを実行してもよい。
【００７２】
実行されるタスクが、実行結果を生じるタスクである場合、タスク読込／実行部１６９によるタスクの実行後に、リクエスト受信部／レスポンス送信部１６３が、タスクの実行結果をレスポンスとしてスケジューラ１４０に送信する（ステップＳ２２１）。実行結果を生じるタスクとは、例えば、入力データに所定の処理をして出力データにするような処理である。
【００７３】
スケジューラ１４０では、リクエスト送信部／レスポンス受信部１５０が、タスクの実行結果を受信する。レスポンス解析部１４８は、タスクを実行した各ノード１６０からレスポンスとして受信したタスクの実行結果を集約し、確認する。具体的には、レスポンス解析部１４８は、いずれかのタスクの実行結果でエラーが検出されたか否かを判定する（ステップＳ２２３）。ここで、エラーが検出されたと判定された場合、レスポンス解析部１４８は、エラーが検出されたタスクについて、アプリケーション解析部１４７に依頼してタスク実行ノードを決定しなおす（ステップＳ２１１）。
【００７４】
ステップＳ２２３で、エラーが検出されたと判定されなかった場合、スケジューラ１４０で集約されたタスクの実行結果が、レスポンスとしてリクエスト受信部／レスポンス送信部１４３からクライアント１２０に送信される（ステップＳ２２５）。
【００７５】
以上で、タスク実行の処理シーケンスが終了する。これによって、クライアント１２０がユーザから実行を要求されたアプリケーションまたはタスクが、ノード１６０の連携によって実行される。
【００７６】
なお、上記の例では、タスク実行の処理シーケンスのトリガーとなるタスクの実行要求がスケジューラ１４０に向けて送信された。しかし、一度タスクが実行され、その実行結果によって各タスクを実行するノード１６０の情報がクライアント１２０に送信される場合、クライアント１２０はこの情報をキャッシュし、次回のタスク実行では直接ノード１６０にタスク実行要求を送信してもよい。このとき、ノード１６０からタスクがアンロードされていたり、ノード１６０として機能する情報処理装置１００がオフラインになっていたりして、ノード１６０がタスク実行要求に応えない場合、クライアント１２０は改めてスケジューラ１４０にタスク実行要求を送信する。
【００７７】
また、図３に示すローディングフローＳ１５０が予め実行されていない状態で、クライアント１２０がユーザからのアプリケーションまたはタスクの実行要求を取得した場合、上記のタスク実行の処理シーケンスに代えて、図３に示すローディングの処理シーケンスを実行し、ノード１６０にタスクのローディング要求を送信する（ステップＳ１１９）とともに必要であればタスクの入力データをも送信し、ノード１６０にタスクを実行するためのプログラムをロードさせる（ステップＳ１２３）とともにタスクを実行させてもよい。
【００７８】
（３．スケジューラの管理）
（スケジューラの選定）
上述のように、本開示の一実施形態に係る情報処理システム１０では、複数の情報処理装置１００が潜在的にスケジューラ１４０として機能しうる。これらの情報処理装置１００の中から、所定の手順によって、実際にスケジューラ１４０として機能する１または複数の情報処理装置１００が選定される。
【００７９】
タスクのローディングや実行の際には、クライアント１２０から指定されたアプリケーションの解析やタスクの割り振りの決定、各ノード１６０からの情報取得やローディングおよび実行の指示などのために、スケジューラ１４０には演算や通信のための負荷がかかる。この負荷は、クライアント１２０やノード１６０の数が多くなるほど増加する。クライアント１２０の数が多くなると、複数のタスクのローディングや実行の要求が輻輳する可能性があり、ノード１６０の数が多くなると、タスクのローディングや実行のための情報収集や解析が複雑になる。
【００８０】
そこで、タスクのローディングや実行に関するシステム全体のパフォーマンスを向上させるためには、できるだけ演算や通信の処理能力が高い情報処理装置１００がスケジューラ１４０として機能することが望ましい。本開示の一実施形態では、所定の手順によって、情報処理システム１０に含まれる情報処理装置１００の状態の変化に合わせて動的にスケジューラ１４０として機能する情報処理装置１００が変更されうる。
【００８１】
例えば、上記のように性能の面から考えると、据置型のゲーム機のように、処理能力が高いのに加えて、スタンバイ状態である時間が長く、有線で安定してネットワーク２００に接続されており、また固定電源で安定して電源を供給されているような情報処理装置１００が、スケジューラ１４０に適しているといえる。
【００８２】
また、例えば、通信の面から考えると、ネットワーク２００がインターネットなどを含み、情報処理装置１００間の通信時の遅延が問題になるような場合には、クライアント１２０またはノード１６０として機能しうるそれぞれの情報処理装置１００にアクセスするための遅延時間がより短い情報処理装置１００が、スケジューラ１４０に適しているといえる。
【００８３】
この他にも、Ｂｌｕｅｔｏｏｔｈ（登録商標）などの近距離無線通信によって、特定の情報処理装置１００ｘに限って通信が可能である情報処理装置１００ｙがシステムに含まれる場合、情報処理装置１００ｙと直接に通信可能である情報処理装置１００ｘをスケジューラ１４０として選定してもよい。ただし、この場合、情報処理装置１００ｘを通じて他の情報処理装置１００が情報処理装置１００ｙと通信することが可能であれば、他の情報処理装置１００をスケジューラ１４０とし、情報処理装置１００ｘがスケジューラ１４０からノード１６０として機能する情報処理装置１００ｙへの通信を中継してもよい。
【００８４】
ところで、上記で言及している情報処理装置１００の処理能力は、静的にはスペック情報（ＣＰＵの処理能力、メモリの容量、最大回線速度、ストレージの容量、バッテリの容量など）として示されるが、実際にはプレゼンス情報として示されるように動的に変化している。
【００８５】
例えば、上記の据置型のゲーム機の例では、多くの時間はスタンバイ状態であり、プレゼンス情報はスペック情報に近い処理能力を示すが、ひとたびユーザがゲームを始めると、ゲームを実行するために多くのリソースを消費するため、プレゼンス情報によって示される処理能力は、その残りのリソースによるものとなり、つまりスペック情報と比べて大きく低下する場合がある。
【００８６】
本開示の一実施形態では、このような場合に、ゲーム機が本来の機能であるゲームの実行のパフォーマンスを維持し、かつシステムにおけるスケジューラ１４０の機能のパフォーマンスをも維持するために、ゲーム機から他の情報処理装置１００にスケジューラ１４０の機能が委譲される。このような場合に実行される変更手順について、以下に説明する。
【００８７】
（スケジューラの変更手順）
図５は、本開示の一実施形態に係るスケジューラの変更手順を示す図である。図５には、情報処理システム１０に新たな情報処理装置１００ｐが新規に参加し、これが新たにスケジューラ１４０として機能する場合の、それまでスケジューラ１４０として機能していた情報処理装置１００ｒと、その他の通常のノード１６０として機能している情報処理装置１００ｑとの間の処理シーケンスが示されている。
【００８８】
情報処理装置１００ｐは、システムに追加されると、まず、既にシステムに参加していて通信可能な任意の情報処理装置１００ｑに、スケジューラ問い合わせを送信する（ステップＳ３０１）。この問い合わせは、システム内のどの情報処理装置１００がスケジューラ１４０として機能しているかを問い合わせるものである。問い合わせを受けた情報処理装置１００ｑは、スケジューラ１４０として機能しているのが情報処理装置１００ｒであることを示す応答を情報処理装置１００ｐに返信する（ステップＳ３０３）。
【００８９】
次に、情報処理装置１００ｐは、自らのスケジューラ１４０としての優先度を、その時点でスケジューラ１４０として機能している情報処理装置１００ｒに通知する（ステップＳ３０５）。ここで、スケジューラ１４０としての優先度とは、上記のように性能面または通信面などを考慮した結果、それぞれの情報処理装置１００がどのくらいスケジューラ１４０に適しているかを示す情報である。
【００９０】
次に、この時点でスケジューラ１４０として機能している情報処理装置１００ｒは、情報処理装置１００ｐを含むそれぞれの情報処理装置１００の優先度を解析する。具体的には、受信した情報処理装置１００ｐの優先度を、保持している他の情報処理装置１００の優先度と比較する。図示された例では、情報処理装置１００ｐの優先度が、情報処理装置１００ｒを含む他の情報処理装置１００の優先度よりも高い。このような場合、スケジューラ１４０として機能している情報処理装置１００ｒは、情報処理装置１００ｐを新たにスケジューラ１４０にするという役割変更を決定する（ステップＳ３０７）。
【００９１】
ここで、スケジューラ１４０としての優先度のいくつかの具体的な例について説明する。例えば、優先度は、それぞれの情報処理装置１００のプレゼンス情報に基づいて算出される指標値である。この場合、解析が行われるその時点での処理能力が最も高い情報処理装置１００が、スケジューラ１４０として選定されることになる。
【００９２】
また、優先度は、情報処理装置１００のプレゼンス情報に加えて、習慣的な使用状態の情報に基づく将来の処理能力の予測値を考慮して算出される指標値であってもよい。この場合、解析が行われるその時点での処理能力がある程度高く、またその後ある程度の期間その処理能力が持続される可能性が高い情報処理装置１００が、スケジューラとして選定されることになる。例えば、ユーザがほぼ毎日特定の時間からゲーム機でゲームをプレイする場合、その特定の時間の直前には、ゲーム機の優先度が低く算出される。これによって、例えば、一旦スケジューラ１４０を選定した後に、使用状況の変化によってすぐに選定しなおす必要が発生することを防ぐことができる。
【００９３】
さらに、優先度は、情報処理装置１００の通信状態を考慮して算出される指標値であってもよい。ここでいう通信状態は、例えば上述したように、情報処理装置１００がスケジューラになった場合に、クライアント１２０またはノード１６０として機能する他の情報処理装置１００にアクセスするための遅延時間や、近距離無線通信による特殊な通信環境などである。
【００９４】
次に、役割変更を決定した情報処理装置１００ｒは、役割変更の対象となった情報処理装置１００、ここでは情報処理装置１００ｐに、役割変更通知を送信する（ステップＳ３０９）。情報処理装置１００ｐに送信される役割変更通知には、新たにスケジューラ１４０として機能すべきことを示す情報が含まれる。役割変更通知を受信した情報処理装置１００ｐは、スケジューラ１４０として機能するためのセットアップを実行する（ステップＳ３１１）。
【００９５】
ここで、情報処理装置１００がスケジューラ１４０として機能するためのセットアップは、例えば、情報処理装置１００に共通してインストールされているミドルウェアの設定を変更して、スケジューラ１４０の機能を実現するようにすることであってもよい。また、情報処理装置１００にインストールされるミドルウェアがクライアント１２０、スケジューラ１４０、およびノード１６０の間で異なっていてもよい。この場合、情報処理装置１００ｐは、例えば、それまでスケジューラ１４０として機能していた情報処理装置１００ｒからミドルウェアをダウンロードしてインストールすることで、新たにスケジューラ１４０として機能するためのセットアップを実行してもよい。
【００９６】
スケジューラ１４０として機能するためのセットアップを完了した情報処理装置１００ｐは、システム内の他の情報処理装置１００に役割通知を送信する（ステップＳ３１３，Ｓ３１５）。情報処理装置１００ｐから送信される役割通知には、以後は情報処理装置１００ｐがスケジューラ１４０として機能することを示す情報が含まれる。ステップＳ３１３の役割通知を受信した情報処理装置１００ｑは、保持しているスケジューラ１４０として機能する情報処理装置１００の情報を更新し、以後は情報処理装置１００ｐをスケジューラ１４０として認識する。
【００９７】
一方、ステップＳ３１５の役割通知を受信した情報処理装置１００ｒは、他の情報処理装置１００がスケジューラ１４０として機能を開始したことを確認し、自らのスケジューラ１４０としての機能をＯＦＦにする（ステップＳ３１７）。図示された例では、この後、情報処理装置１００ｒは、ノード１６０としてシステムに参加する。ここで、情報処理装置１００ｒは、以後はノード１６０（およびクライアント１２０）として機能することを示す情報を含む役割通知を、システム内の他の情報処理装置１００に送信してもよい（ステップＳ３１９，Ｓ３２１）。情報処理装置１００ｐ，１００ｑは、この役割通知によって、情報処理装置１００ｒをノードとして認識してもよい。
【００９８】
なお、ステップＳ３１９，Ｓ３２１の役割通知が送信されない場合、情報処理装置１００ｐは、自らをスケジューラとしてセットアップするときに自動的に情報処理装置１００ｒをノード１６０として認識してもよい。また、この場合、情報処理装置１００ｑは、情報処理装置１００ｐが新たにスケジューラ１４０として機能することを示すステップＳ３１３の役割通知を受信した時点で、自動的に情報処理装置１００ｒをノード１６０として認識してもよい。
【００９９】
以上で、スケジューラの変更手順が終了する。なお、図示された例では、情報処理装置１００ｐが新たにシステムに追加された場合に手順が実行されたが、手順が実行されるケースはこれに限られない。例えば、既にシステムに参加している情報処理装置１００のプレゼンス情報が変化するなどして、スケジューラ１４０としての優先度が変化した場合に、上記の手順が実行されうる。また、その時点でのスケジューラ１４０からの指示によって、定期的に上記の手順が実行されうる。
【０１００】
これらの場合、スケジューラ１４０として機能している情報処理装置１００がどれであるかは既知であるため、ステップＳ３０１，Ｓ３０３の手順は省略されうる。また、定期的に上記の手順が実行されるような場合、情報処理装置１００ｐの優先度通知（ステップＳ３０５）とともに、情報処理装置１００ｑの優先度通知も実行されうる。
【０１０１】
上記の例において、それぞれの情報処理装置１００のスケジューラ１４０としての優先度を解析した結果、スケジューラ１４０として機能させることが適切な情報処理装置１００がないこともありうる。これは、例えば、スケジューラ１４０として機能しうるだけの処理能力を有する情報処理装置１００がシステムに含まれていない（どの情報処理装置１００もスペックが足りていない）場合や、それぞれの情報処理装置１００がユーザによって使用されていて余裕がない（どの情報処理装置１００もプレゼンスが十分ではない）場合である。
【０１０２】
このような場合、その時点でのスケジューラ１４０は、情報処理システム１０に、十分な処理能力を有する新たな情報処理装置１００を参加させ、その情報処理装置１００にスケジューラ１４０の機能を委譲してもよい。具体的には、例えば、ネットワーク２００上に、ユーザが使用可能であるが現在は使用されていないサーバがある場合に、スケジューラ１４０は、このサーバを情報処理システム１０に参加させ、スケジューラ１４０の機能を委譲する。
【０１０３】
なお、上記の例では、それぞれの情報処理装置１００が自らのスケジューラ１４０としての優先度を算出して通知するが、それ以外の場合もありうる。スケジューラ１４０は、ノード管理部１４６で各ノード１６０の情報を管理しているため、これらのノード１６０について、通知を受けることなくスケジューラ１４０が優先度を算出して比較する構成とすることも可能である。
【０１０４】
また、上記の例では、既に設定されているスケジューラ１４０が新たなスケジューラ１４０を選定するが、それ以外の場合もありうる。例えばシステムの使用開始直後や、スケジューラ１４０がオフラインになった場合などで、スケジューラ１４０が存在しない場合、情報処理装置１００のそれぞれが優先度の情報を交換し、互選のような形でスケジューラ１４０を決定してもよい。
【０１０５】
さらに、上記の例では、スケジューラ１４０として機能する情報処理装置１００は１つであるが、それ以外の場合もありうる。後述するように、情報処理システム１０には複数のスケジューラ１４０が存在することが可能であり、その場合、それぞれのスケジューラ１４０として機能する情報処理装置１００が上記の変更手順と同様の手順によって決定されうる。
【０１０６】
（複数のスケジューラが設定される場合）
次に、本開示の一実施形態において、スケジューラ１４０を複数設定する場合について説明する。上述のように、スケジューラ１４０として機能する情報処理装置１００には、演算や通信のために大きな負荷がかかる。そのために、処理能力が高い情報処理装置１００をスケジューラ１４０として機能させることも１つのやり方ではあるが、複数の情報処理装置１００にスケジューラ１４０の機能を分散させることも可能である。
【０１０７】
ここで、複数スケジューラ１４０が、互いに独立してタスクのローディングや実行を管理すると、例えば、あるノード１６０の負荷が小さい状態であるときに、その情報を取得した２つのスケジューラ１４０がほぼ同時にタスクを割り当て、今度はそのノード１６０に負荷が集中しすぎてしまうといったような不都合が生じる可能性がある。
【０１０８】
それゆえ、本開示の実施形態では、複数存在するスケジューラ１４０が所定の方式で協調してローディングやタスク実行を管理する。これによって、システム全体の状況を考慮した最適なスケジューリングが可能になるとともに、個々のノード１６０からの情報の取得や、個々のクライアント１２０からの要求の受付の処理をそれぞれのスケジューラ１４０に分散し、通信量や処理負荷の集中によるスケジューラ１４０の処理効率の低下を防ぐことができる。
【０１０９】
以下では、本開示の実施形態において複数のスケジューラ１４０の協働のために用いられうる方式の２つの例について説明する。
【０１１０】
（マスタ−スレーブ方式）
マスタ−スレーブ方式の場合、複数のスケジューラ１４０として、１つのマスタスケジューラ１４０ｍと、１または複数のスレーブスケジューラ１４０ｓとが選定される。この場合、スケジューラ１４０は、例えば、上述した優先度を基準にして選定される。具体的には、情報処理装置１００の中で優先度が最も高いものがマスタスケジューラ１４０ｍに選定され、それに次いで優先度が高いものがスレーブスケジューラ１４０ｓに選定される。スレーブスケジューラ１４０ｓは、マスタスケジューラ１４０ｍのスケジューラ１４０としての機能の一部を代行する。
【０１１１】
ここで、スレーブスケジューラ１４０ｓは、上述のスケジューラ１４０のうちの限定された機能を有する。例えば、スレーブスケジューラ１４０ｓは、直接ノード１６０から情報を取得することはしないが、マスタスケジューラ１４０ｍからノード管理部１４６の機能をレプリケートされる。また、例えば、スレーブスケジューラ１４０ｓは、ノード１６０に割り当てられるタスクの再配置はしないが、クライアント１２０からの実行要求を受け付ける。
【０１１２】
マスタスケジューラ１４０ｍとして機能している情報処理装置１００がオフラインになったり、ユーザから他の処理を要求されたりして、マスタスケジューラ１４０ｍとしての機能に障害が生じた場合、スレーブスケジューラ１４０ｓが昇格してマスタスケジューラ１４０ｍになる。つまり、この場合、スレーブスケジューラ１４０ｓが、それまでのマスタスケジューラ１４０ｍの機能の全部を代行する。スレーブスケジューラ１４０ｓが複数ある場合は、その中で最も優先度が高いものが昇格する。ここで、マスタスケジューラ１４０ｍでもスレーブスケジューラ１４０ｓでもない情報処理装置１００のうちで、最も優先度が高いものが、新たにスレーブスケジューラ１４０ｓとして補充されてもよい。
【０１１３】
なお、スレーブスケジューラ１４０ｓの数は、システムに含まれる情報処理装置１００の数や、クライアント１２０からの要求の頻度、およびマスタスケジューラ１４０ｍやスレーブスケジューラ１４０ｓとして機能している情報処理装置の可用性を考慮して決定されうる。
【０１１４】
また、スレーブスケジューラ１４０ｓは、マスタスケジューラ１４０ｍからノード管理部１４６の情報などをレプリケートされて機能するが、レプリケーションの頻度によっては、情報が古くてタスクの実行に支障をきたす場合がある。これは、例えば、クライアント１２０からの要求に従ってタスクを実行するときに、タスクを実行可能なノード１６０がなかったり、タスクが割り当てられているノード１６０にタスクがロードされていなかったりといったような状態である。
【０１１５】
この場合、スレーブスケジューラ１４０ｓは、マスタスケジューラ１４０ｍに、ノード管理部１４６の情報を再度レプリケートすることを要求し、最新の情報を取得することで対応しうる。また、スレーブスケジューラ１４０ｓは、実行するタスクのタスク識別子をブロードキャストで送信し、当該タスクを実行可能であるノード１６０を探索してそのノード１６０にタスクを割り当ててもよい。
【０１１６】
上記で図５に示したスケジューラの変更手順は、マスタ−スレーブ方式で複数のスケジューラ１４０が選定される場合にも適用されうる。例えば、システムに新たに参加した情報処理装置１００ｐが、その時点でマスタスケジューラ１４０ｍとして機能している情報処理装置１００ｒよりも優先度が高かった場合、マスタスケジューラ１４０ｍは、まず情報処理装置１００ｐをスレーブスケジューラ１４０ｓに選定して機能をレプリケートし、その後マスタスケジューラ１４０ｍとしての機能を委譲し、自らはスレーブスケジューラ１４０ｓになる。
【０１１７】
また、情報処理装置１００ｐが、その時点でマスタスケジューラ１４０ｍとして機能している情報処理装置１００ｒよりも優先度が低いが、スレーブスケジューラ１４０ｓとして機能している情報処理装置１００ｑよりも優先度が高かった場合、マスタスケジューラ１４０ｍは、情報処理装置１００ｐをスレーブスケジューラ１４０ｓに選定する。これによってスレーブスケジューラ１４０ｓの数が過剰になる場合、マスタスケジューラ１４０ｍは、情報処理装置１００ｑのスレーブスケジューラ１４０ｓとしての機能を停止しうる。
【０１１８】
（分散管理方式）
分散管理方式の場合、複数のスケジューラ１４０は、それぞれが別々のノード１６０を管理し、互いにノード１６０の情報をレプリケートしあう。それぞれのスケジューラ１４０は、タスクのロード、移動、複製、再配置などをする場合には他のスケジューラ１４０に通知し、同じノード１６０に同時にタスクがロードされてそのノード１６０に負荷が集中するといったような事態を防止する。
【０１１９】
複数のスケジューラ１４０は、様々な条件で選定されうる。例えば、複数のスケジューラ１４０は、クライアント１２０からの依頼に応じてタスクを実行するときの遅延がなるべく小さくなるように選定される。これは、具体的には、自宅および勤務先のような複数の異なる場所にそれぞれ情報処理装置１００が分布しているときに、それぞれの場所にスケジューラ１４０を配置するような場合である。
【０１２０】
この場合、それぞれの場所に位置する情報処理装置１００（クライアント１２０またはノード１６０として機能する）からスケジューラ１４０への通信の遅延を最小化することが可能である。従って、それぞれの場所に位置するノード１６０だけで実行可能なタスクを処理する場合、それぞれの場所の間（自宅から勤務先へ、またはその逆のような）の通信が必ずしも必要ではなくなり、タスクを実行するときの遅延は小さくなる。
【０１２１】
また、複数のスケジューラ１４０は、ネットワーク２００内の通信の安定性を考慮して選定されてもよい。例えば、無線通信でネットワーク２００に接続される情報処理装置１００ｘと、Ｂｌｕｅｔｏｏｔｈ（登録商標）などの近距離無線通信によって情報処理装置１００ｘに限って通信が可能である情報処理装置１００ｙとがシステムに含まれるとする。この場合、情報処理装置１００ｘをネットワーク２００に接続する無線通信が切断されると、情報処理装置１００ｘと情報処理装置１００ｙとは一時的に閉じたネットワークを形成する。
【０１２２】
このとき、情報処理装置１００ｘ，１００ｙのいずれもがスケジューラ１４０として選定されていなければ、閉じたネットワークの中にスケジューラ１４０が存在しなくなるため、無線通信の切断によって情報処理装置１００ｘ，１００ｙのいずれかをスケジューラ１４０として選定することになる。さらに、無線通信が回復すると、情報処理装置１００ｘ，１００ｙは、従前のスケジューラ１４０の管理下に戻ることになる。つまり、無線通信の状態によってスケジューラ１４０が頻繁に変わる可能性がある。これを防止するためには、例えば、予め、安定性が低い無線通信によって接続されている情報処理装置１００ｘをスケジューラ１４０として選定しておけばよい。
【０１２３】
（４．その他）
本開示の実施形態に係る情報処理システム１０では、ユーザおよび情報処理装置１００を、アカウントおよびサブアカウントによってそれぞれ管理することが望ましい。それぞれの情報処理装置１００は、アカウント情報によってユーザを認証し、第三者による使用を防ぐ。また、ノード１６０として機能する情報処理装置１００は、内部リソース１７１にアクセスするプログラムがロードされた場合、ロードを依頼したクライアント１２０を使用しているアカウントに、内部リソース１７１へのアクセス権限があるか否かを確認する。
【０１２４】
また、クライアント１２０は、アプリケーション１２１について、アプリケーションマニフェストなどの情報を用いて、利用するノード１６０の一覧や、アクセスするノード１６０の内部リソース１７１の情報をユーザに提示してもよい。これによって、ユーザは、タスクの実行に用いないノード１６０を指定したり（何らかの理由で特定の情報処理装置１００を使用したくない場合）、重視するサービス指標を指定したりすることが可能である。例えば、ユーザが重視するサービス指標として可用性が指定された場合、その情報を提供されたスケジューラ１４０は、サービスを提供するためのタスクを、常時稼動している可能性が高いネットワーク上のサーバに割り当てる。また、ユーザが重視するサービス指標として高レスポンスが指定された場合、その情報を提供されたスケジューラ１４０は、クライアント１２０として機能する情報処理装置１００からのルーティング距離がより近い情報処理装置１００にタスクを割り当てる。なお、ユーザは、例えば、後述の図１６の入力装置９１５を使って、上述のように重視するサービス指標を指定してもよい。
【０１２５】
（５．実現されうる機能の例）
以下、本開示の実施形態によって実現されうる機能のより具体的な例について説明する。
【０１２６】
（機能の動的読み込み）
図６は、本開示の実施形態における機能の動的読み込みの例を示す図である。図示された例では、テレビ１００ｄが、モバイル端末１００ｃ、またはネットワーク２００から機能を動的にローディングしている。
【０１２７】
本開示の実施形態では、このように、実行したい機能を情報処理装置１００が保持していなくても、他の情報処理装置１００やネットワーク２００からローディングして実行することが可能である。これは、実行したい機能が、テレビ１００ｄが自ら実行の指示を受けた機能であっても、クライアント１２０であるモバイル端末１００ｃからスケジューラ１４０を経てノード１６０として実行を依頼されたタスクであっても同様である。
【０１２８】
これによって、情報処理装置１００内に保持する機能を最小限にすることができ、メモリやストレージのリソースを有効に活用することができる。
【０１２９】
（リソースの借用）
図７は、本開示の実施形態におけるリソースの借用の例を示す図である。図示された例では、モバイル端末１００ｃが、実行を要求されたタスクをタブレット型ＰＣ１００ｅにロードさせ、タスクの実行をタブレット型ＰＣ１００ｅに依頼する。
【０１３０】
本開示の実施形態では、このように、クライアント１２０（モバイル端末１００ｃ）が要求されたタスクの実行をノード１６０（タブレット型ＰＣ１００ｅ）に依頼することが可能である。ここで、ノード１６０は、クライアント１２０よりも高い処理能力を有する、または一時的に使用されていない、いわば遊んでいる情報処理装置１００でありうる。この依頼は、モバイル端末１００ｃまたはタブレット型ＰＣ１００ｅのいずれかがスケジューラ１４０として機能することで実行されてもよいし、さらに別の情報処理装置１００がスケジューラ１４０として機能することで実行されてもよい。
【０１３１】
これによって、ユーザによって操作されているクライアント１２０（モバイル端末１００ｃ）のリソースを節約することができ、操作のレスポンスを早めてユーザビリティを向上させることができる。
【０１３２】
（並行処理）
図８は、本開示の実施形態における並行処理の例を示す図である。図示された例では、モバイル端末１００ｃが、実行を要求されたタスクをテレビ１００ｄ、タブレット型ＰＣ１００ｅ，１００ｆに割り振って処理している。
【０１３３】
本開示の実施形態では、このように、クライアント１２０（モバイル端末１００ｃ）が要求されたタスクの実行を、複数のノード１６０（テレビ１００ｄ、タブレット型ＰＣ１００ｅ，１００ｆ）に割り振って並行して処理することが可能である。ここで、ノード１６０は、必ずしもクライアント１２０よりも高い処理能力を有さなくてもよい。また、クライアント１２０自身も、ノード１６０としてタスクの実行に加わってもよい。この割り振りは、図示されている情報処理装置１００のいずれかがスケジューラ１４０として機能することで実行されてもよいし、さらに別の情報処理装置１００がスケジューラ１４０として機能することで実行されてもよい。
【０１３４】
これによって、クライアント１２０（モバイル端末１００ｃ）が単独でタスクを実行するよりも高速にタスクを実行することができる。また、それぞれのノード１６０が保持している情報に対する検索処理のような網羅的な処理も円滑に実行できる。
【０１３５】
（パイプライン処理）
図９は、本開示の実施形態におけるパイプライン処理の例を示す図である。図示された例では、モバイル端末１００ｃが実行を要求されたタスクが、まず要求Ｒｅｑ１によってテレビ１００ｄによって処理され、次いで要求Ｒｅｑ２によってタブレット型ＰＣ１００ｅによって処理され、さらに要求Ｒｅｑ３によってタブレット型ＰＣ１００ｆによって処理され、処理結果がレスポンスＲｅｓとしてモバイル端末１００ｃに返される。
【０１３６】
本開示の実施形態では、このように、クライアント１２０（モバイル端末１００ｃ）が要求されたタスクの実行を、複数のノード１６０（テレビ１００ｄ、タブレット型ＰＣ１００ｅ，１００ｆ）が直列的に処理していくことが可能である。ここで、実行が要求されているタスクは、例えば、まずテレビ１００ｄが有する画像処理機能を利用し、その結果がタブレット型ＰＣ１００ｅが有するプログラムを利用して処理され、さらにその結果がタブレット型ＰＣ１００ｆが有する別のプログラムを利用して処理される。スケジューラ１４０は、それぞれの情報処理装置１００が有する機能やプログラムなどの能力を考慮して、タスクの実行を複数のノード１６０に割り振る。
【０１３７】
これによって、それぞれの情報処理装置１００の特徴的な機能を活かしてタスクを円滑かつ迅速に実行することができる。タスク実行の要求とレスポンスはスケジューラ１４０によって集約されるため、クライアント１２０は要求の送信先とレスポンスの送信元が異なることを意識しなくてよい。
【０１３８】
（マルチデバイスインストール）
図１０は、本開示の実施形態におけるマルチデバイスインストールの例を示す図である。図示された例では、モバイル端末１００ｃが、実行しようとするアプリケーションをネットワーク２００からダウンロードした後に、コンポーネントごとに分割してテレビ１００ｄ、およびタブレット型ＰＣ１００ｅ，１００ｆにロードする。
【０１３９】
本開示の実施形態では、このように、クライアント１２０（モバイル端末１００ｃ）がダウンロードしたアプリケーションが、コンポーネント単位で分割されノード１６０（テレビ１００ｄ、タブレット型ＰＣ１００ｅ，１００ｆ）にロードされる。ここで、どのノード１６０にどのコンポーネントをロードするかは、スケジューラ１４０によって決定される。なお、アプリケーションのダウンロードは、スケジューラ１４０によって実行されてもよい。
【０１４０】
これによって、アプリケーションを自動的に最適な情報処理装置１００で実行することができる。また、アプリケーションのコンポーネント単位での分割は、スケジューラ１４０が行うため、アプリケーション自体は単一のパッケージとして提供することが可能であり、アプリケーションの開発が容易になる。
【０１４１】
（インタラクティブアプリケーション）
図１１は、本開示の実施形態におけるインタラクティブアプリケーションの例を示す図である。図示された例では、モバイル端末１００ｃ、テレビ１００ｄ、およびタブレット型ＰＣ１００ｅ，１００ｆに、それぞれアプリケーションのコンポーネントがロードされており、これらのコンポーネントがメッセージングしながら１つのアプリケーションとして動作している。
【０１４２】
本開示の実施形態では、このように、それぞれの情報処理装置１００が、クライアント１２０およびノード１６０の両方として機能しうる。これによって、複数の情報処理装置１００にロードされたコンポーネントを相互作用させて、１つのアプリケーションを実行することが容易になる。
【０１４３】
（オートスケーリングデプロイ）
図１２は、本開示の実施形態におけるオートスケーリングデプロイの例を示す図である。図示された例では、モバイル端末１００ｃが起動したアプリケーションを実行するためのタスクが、ネットワーク２００上のサーバ１００ｂ１〜１００ｂ３にロードされる。
【０１４４】
本開示の実施形態では、このように、クライアント１２０（モバイル端末１００ｃ）がアプリケーションを実行するためのタスクが、そのときの状況に応じて適切なノード１６０（サーバ１００ｂ１〜１００ｂ３）にロードされる。ここでタスクがロードされるノード１６０の数や位置は、クライアント１２０からのアクセス数やアクセス場所に応じて設定される。つまり、クライアント１２０からのアクセス数が多ければ、より多くのサーバ１００ｂにタスクがロードされる、また、クライアント１２０のアクセス場所により近い位置にあるサーバ１００ｂにタスクがロードされてもよい。
【０１４５】
これによって、アプリケーションの開発にあたって、負荷の分散や地域的な遅延の問題を考慮する必要がなくなり、開発が容易になる。
【０１４６】
（フェイルオーバー）
図１３は、本開示の実施形態におけるフェイルオーバーの例を示す図である。図示された例では、図９で示されたのと同様のパイプライン処理において、要求Ｒｅｑ２を受けるタブレット型ＰＣ１００ｅに障害が発生している。そこで、別の端末装置１００ｇに新たに要求Ｒｅｑ２が送信され、端末装置１００ｇからタブレット型ＰＣ１００ｆに要求Ｒｅｑ３が送信される。
【０１４７】
本開示の実施形態では、このように、タスクを実行するノード１６０に何らかの原因で障害が発生した場合、スケジューラ１４０が別のノード１６０にタスクの割り当てを切り替えて処理を継続し、クライアント１２０には何事もなかったかのようにレスポンスＲｅｓが返される。これによって、一部のノード１６０の障害に関わらずタスクを実行することができ、タスク実行の可用性を向上させることができる。
【０１４８】
（オートレプリケーション＆キャッシュ）
図１４は、本開示の実施形態におけるオートレプリケーションおよびキャッシュの例を示す図である。図示された例では、モバイル端末１００ｃからタブレット型ＰＣ１００ｆに送られるデータが、別のタブレット型ＰＣ１００ｅ、またはネットワーク２００上にレプリケートまたはキャッシュされる。
【０１４９】
本開示の実施形態では、このように、情報処理装置１００間でデータなどをやりとりするときに、装置間の通信の低可用性、高遅延性（一方の装置がオフラインになったり、ホッピング数が多かったりすることによる）の影響を回避するため、他の情報処理装置１００に自動的にデータをレプリケートしておいたり、ネットワーク２００上のより低遅延な位置にあるサーバにデータをキャッシュする。
【０１５０】
（自動再デプロイ）
図１５は、本開示の実施形態における自動再デプロイの例を示す図である。図示された例では、タスクを実行するモバイル端末１００ｃが移動するのに合わせて、連携先がテレビ１００ｄからネットワーク２００上のサーバへ、さらにタブレット型ＰＣ１００ｅへと動的に変化する。
【０１５１】
本開示の実施形態では、このように、クライアント１２０（モバイル端末１００ｃ）の移動などによる通信状況の変化に合わせて、タスク実行のための連携先となるノード１６０（テレビ１００ｄ、ネットワーク２００上のサーバ、およびタブレット型ＰＣ１００ｅ）が変化する。各ノード１６０にロードされたプログラムやデータは、連携先の変化に合わせて繰り返し移動、複製または再配置される。連携先の変更やプログラムならびにデータの移動、複製および再配置は、スケジューラ１４０によって実行される。このとき、スケジューラ１４０は、クライアント１２０との間の通信の遅延がより小さくなるノード１６０を連携先として選択する。
【０１５２】
これによって、クライアント１２０の物理的な位置などの状態が変化しても、タスクの実行時の遅延を最小化することができる。
【０１５３】
（６．ハードウェア構成）
以下、図１６を参照して、上記で説明された本開示の一実施形態に係る情報処理装置１００のハードウェア構成について説明する。図１６は、本開示の実施形態に係る情報処理装置のハードウェア構成を示すブロック図である。上述した情報処理装置１００の各機能構成（クライアント１２０、スケジューラ１４０、およびノード１６０として動作する場合の機能構成を含む）は、以下に説明するハードウェア構成によって実現されうる。
【０１５４】
情報処理装置１００は、ＣＰＵ９０１、ＲＯＭ９０３、およびＲＡＭ９０５を含む。さらに、情報処理装置１００は、ホストバス９０７、ブリッジ９０９、外部バス９１１、インターフェース９１３、入力装置９１５、出力装置９１７、ストレージ装置９１９、ドライブ９２１、接続ポート９２３、および通信装置９２５を含んでもよい。
【０１５５】
ＣＰＵ９０１は、演算処理装置および制御装置として機能し、ＲＯＭ９０３、ＲＡＭ９０５、ストレージ装置９１９、またはリムーバブル記録媒体９２７に記録された各種プログラムに従って、情報処理装置１００内の動作全般またはその一部を制御する。ＲＯＭ９０３は、ＣＰＵ９０１が使用するプログラムや演算パラメータなどを記憶する。ＲＡＭ９０５は、ＣＰＵ９０１の実行において使用するプログラムや、その実行において適宜変化するパラメータなどを一次記憶する。ＣＰＵ９０１、ＲＯＭ９０３、およびＲＡＭ９０５は、ＣＰＵバスなどの内部バスにより構成されるホストバス９０７により相互に接続されている。さらに、ホストバス９０７は、ブリッジ９０９を介して、ＰＣＩ（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）用のルータ、または、各種通信用のモデムなどであってもよい。通信装置９２５は、例えば、インターネットや他の通信機器との間で、ＴＣＰ／ＩＰなどの所定のプロトコルを用いて信号などを送受信する。また、通信装置９２５に接続される通信ネットワーク９３１は、有線または無線によって接続されたネットワークであり、例えば、インターネット、家庭内ＬＡＮ、赤外線通信、ラジオ波通信または衛星通信などである。
【０１６２】
以上、情報処理装置１００のハードウェア構成の一例を示した。上記の各構成要素は、汎用的な部材を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。かかる構成は、実施する時々の技術レベルに応じて適宜変更されうる。
【０１６３】
（７．補足）
本開示の実施形態の構成および作用効果についてまとめる。
【０１６４】
以上で説明した本開示の一実施形態によれば、ネットワーク上でクライアントとして機能する第１の情報処理装置からのタスクに関する処理の要求を受信する受信部と、自装置のスケジューラとしての優先度の上記ネットワーク上の情報処理装置の中での順位が第１の所定の順位以上である場合に、上記タスクを上記ネットワーク上でノードとして機能する１または複数の第２の情報処理装置に割り振るスケジューリング部と、上記１または複数の第２の情報処理装置に上記割り振られたタスクに関する処理の実行要求を送信する送信部とを含む情報処理装置が提供される。
【０１６５】
かかる構成によれば、スケジューラとして機能しうる情報処理装置の中で、スケジューラに適した情報処理装置が選択的にスケジューラとして機能する。スケジューラに適した情報処理装置とは、例えばスケジューラが実行する通信や演算の能力が高い情報処理装置である。このような情報処理装置がスケジューラに選ばれることによって、スケジューリングに要する処理時間や通信遅延がより少なくなり、システム全体としてのタスク実行時のパフォーマンスが向上する。なお、第１の所定の順位は、例えばスケジューラが１つだけ選定される場合には１、スケジューラがマスタスケジューラとスレーブスケジューラと合わせて３つ選定されるような場合には３といったように、選定されるスケジューラの数に対応した順位でありうる。また、タスクに関する処理は、例えばタスクのローディングおよび実行である。
【０１６６】
上記スケジューリング部は、自装置のスケジューラとしての優先度の順位が上記第１の所定の順位よりも下である場合に機能を停止してもよい。
【０１６７】
かかる構成によれば、スケジューラとして機能しうる情報処理装置の中で、スケジューラとして機能しない情報処理装置は、そのスケジューラに関する機能を停止させる。従って、これらの情報処理装置は、例えばシステムの中でクライアントやノードとして機能することも可能である。また、一時的に機能を停止させているものの、潜在的にはスケジューラとして機能することが可能な情報処理装置がシステムに存在することで、スケジューラがオフラインになったり、別途にユーザから要求された別の処理などのためにスケジューラとしてのパフォーマンスが低下してしまったりした場合にも、容易に代替のスケジューラを利用することが可能である。
【０１６８】
上記スケジューリング部は、自装置のスケジューラとしての優先度の順位が上記第１の所定の順位以上であって第２の所定の順位よりも下である場合に、上記スケジューラとしての優先度の順位が上記第２の所定の順位以上である上記ネットワーク上の他の情報処理装置の上記スケジューリング部の機能の一部を代行してもよい。
【０１６９】
かかる構成によれば、スケジューラとして機能する情報処理装置が、より上位のスケジューラ（マスタスケジューラ）と、より下位のスケジューラ（スレーブスケジューラ）に分けられ、スレーブスケジューラによってマスタスケジューラの機能の一部が代行される。これによって、よりスケジューラに適した情報処理装置を、スケジューラの主たる処理を担当するマスタスケジューラとして利用しつつ、その機能の一部をスレーブスケジューラが代行することで、マスタスケジューラのパフォーマンスをさらに向上させることができる。なお、第２の所定の順位は、第１の所定の順位よりも上位の順位であり、例えばマスタスケジューラが１つだけ選定される場合には１、３つ選定される場合（分散管理方式とマスタ−スレーブ方式を組み合わせる場合など）には３といったように、選定されるマスタスケジューラの数に対応した順位でありうる。
【０１７０】
上記スケジューリング部は、上記他の情報処理装置の上記スケジューリング部の機能に障害が生じた場合に、該スケジューリング部の機能の全部を代行してもよい。
【０１７１】
かかる構成によれば、マスタスケジューラがオフラインになったり、別途にユーザから要求された別の処理などのためにスケジューラとしてのパフォーマンスが低下してしまったりした場合にも、スレーブスケジューラをマスタスケジューラに昇格させることで、スケジューラの機能低下を防ぐことができる。予めマスタスケジューラとスレーブスケジューラとが選定されていると、マスタスケジューラの障害時の代替順位が明確であり、迅速にスケジューラの機能を移行させることができる。
【０１７２】
上記スケジューラとしての優先度は、上記情報処理装置の現在の処理能力に基づいて算出されてもよい。
【０１７３】
かかる構成によれば、各ノードの情報の取得および解析、タスクの割り振りなどのための演算を効率よく処理することが可能な情報処理装置がスケジューラに適した情報処理装置として選定され、スケジューラのパフォーマンスを向上させることができる。
【０１７４】
上記スケジューラとしての優先度は、上記情報処理装置の将来の処理能力の予測値に基づいて算出されてもよい。
【０１７５】
かかる構成によれば、情報処理装置がスケジューラに選定された後、その処理能力を維持できるか否かという基準でスケジューラを選定することができ、予測可能な情報処理装置の状態の変化（ユーザの習慣化した使用など）によってスケジューラのパフォーマンス低下が生じるのを防ぐことができる。
【０１７６】
上記スケジューラとしての優先度は、上記情報処理装置の通信状態に基づいて算出されてもよい。
【０１７７】
かかる構成によれば、クライアントおよびノードとの通信を効率よく処理したり、より少ない遅延時間で通信をしたりすることが可能な情報処理装置がスケジューラに適した情報処理装置として選定され、スケジューラのパフォーマンスを向上させることができる。
【０１７８】
上記スケジューリング部は、上記タスクが実行時に所定のサービス指標を達成するように、上記１または複数の第２の情報処理装置の処理能力に応じて上記タスクを割り振ってもよい。
【０１７９】
かかる構成によれば、タスクごとに所定のサービス指標を達成することを目標としてタスクがノードに割り振られる。この所定のサービス指標とは、例えば高効率、クライアントへの高レスポンス、低コスト、低消費電力、高可用性、高品質などのＫＰＩであり、タスクまたはアプリケーションごとに設定されているこれらの指標を達成知ることを目標とすることで、ユーザがタスクの実行にあたって必要としている品質を的確に向上させることができる。
【０１８０】
上記スケジューリング部は、上記１または複数の第２の情報処理装置の現在の処理能力または将来の処理能力の予測値に応じて上記タスクの割り振りを動的に変更してもよい。
【０１８１】
かかる構成によれば、単にノードとして機能する情報処理装置のスペックではなく、その情報処理装置の現時点での処理能力（例えばプレゼンス情報によって表される）や、将来の処理能力予測（例えば習慣的な使用状態の情報によって表される）に基づいてタスクが割り振られる。従って、実際のタスク処理の効率を向上させることができる。
【０１８２】
上記受信部は、複数の上記タスクからなるアプリケーションに関する処理の要求として上記タスクに関する処理の要求を受信し、上記スケジューリング部は、上記アプリケーションを上記タスクに分割してもよい。
【０１８３】
かかる構成によれば、アプリケーション自体は単一のパッケージであっても、実行時にこれをタスク（コンポーネント）に分割することができる。従ってアプリケーションの開発時にはコンポーネント単位での分割を意識する必要がなく、アプリケーションの開発が容易になる。
【０１８４】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【０１８５】
なお、以下のような構成も本開示の技術的範囲に属する。
（１）ネットワーク上でクライアントとして機能する第１の情報処理装置からのタスクに関する処理の要求を受信する受信部と、
自装置のスケジューラとしての優先度の前記ネットワーク上の情報処理装置の中での順位が第１の所定の順位以上である場合に、前記タスクを前記ネットワーク上でノードとして機能する１または複数の第２の情報処理装置に割り振るスケジューリング部と、
前記１または複数の第２の情報処理装置に前記割り振られたタスクに関する処理の実行要求を送信する送信部と
を備える情報処理装置。
（２）前記スケジューリング部は、自装置のスケジューラとしての優先度の順位が前記第１の所定の順位よりも下である場合に機能を停止する、前記（１）に記載の情報処理装置。
（３）前記スケジューリング部は、自装置のスケジューラとしての優先度の順位が前記第１の所定の順位以上であって第２の所定の順位よりも下である場合に、前記スケジューラとしての優先度の順位が前記第２の所定の順位以上である前記ネットワーク上の他の情報処理装置の前記スケジューリング部の機能の一部を代行する、前記（１）または（２）に記載の情報処理装置。
（４）前記スケジューリング部は、前記他の情報処理装置の前記スケジューリング部の機能に障害が生じた場合に、該スケジューリング部の機能の全部を代行する、前記（３）に記載の情報処理装置。
（５）前記スケジューラとしての優先度は、前記情報処理装置の現在の処理能力に基づいて算出される、前記（１）〜（４）のいずれか１項に記載の情報処理装置。
（６）前記スケジューラとしての優先度は、前記情報処理装置の将来の処理能力の予測値に基づいて算出される、前記（１）〜（５）のいずれか１項に記載の情報処理装置。
（７）前記スケジューラとしての優先度は、前記情報処理装置の通信状態に基づいて算出される、前記（１）〜（６）のいずれか１項に記載の情報処理装置。
（８）前記スケジューリング部は、前記タスクが実行時に所定のサービス指標を達成するように、前記１または複数の第２の情報処理装置の処理能力に応じて前記タスクを割り振る、前記（１）〜（７）のいずれか１項に記載の情報処理装置。
（９）前記スケジューリング部は、前記１または複数の第２の情報処理装置の現在の処理能力または将来の処理能力の予測値に応じて前記タスクの割り振りを動的に変更する、前記（８）に記載の情報処理装置。
（１０）前記受信部は、複数の前記タスクからなるアプリケーションに関する処理の要求として前記タスクに関する処理の要求を受信し、
前記スケジューリング部は、前記アプリケーションを前記タスクに分割する、前記（１）〜（９）のいずれか１項に記載の情報処理装置。
（１１）ネットワーク上でクライアントとして機能する第１の情報処理装置からのタスクに関する処理の要求を受信することと、
自装置のスケジューラとしての優先度の前記ネットワーク上の情報処理装置の中での順位が第１の所定の順位以上である場合に、前記タスクを前記ネットワーク上でノードとして機能する１または複数の第２の情報処理装置に割り振ることと、
前記１または複数の第２の情報処理装置に前記割り振られたタスクに関する処理の実行要求を送信することと
を含む情報処理方法。
（１２）ネットワーク上でクライアントとして機能する第１の情報処理装置からのタスクに関する処理の要求を受信する機能と、
自装置のスケジューラとしての優先度の前記ネットワーク上の情報処理装置の中での順位が第１の所定の順位以上である場合に、前記タスクを前記ネットワーク上でノードとして機能する１または複数の第２の情報処理装置に割り振る機能と、
前記１または複数の第２の情報処理装置に前記割り振られたタスクに関する処理の実行要求を送信する機能と
をコンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
（１３）  ネットワーク上でクライアントとして機能する第１の情報処理装置からのタスクに関する処理の要求を受信する受信部と、
前記タスクを前記ネットワーク上でノードとして機能する１または複数の第２の情報処理装置に割り振るスケジューリング部と、
前記１または複数の第２の情報処理装置に前記割り振られたタスクに関する処理の実行要求を送信する送信部と
を有する前記ネットワーク上の複数の情報処理装置を含み、
前記複数の情報処理装置のうち、スケジューラとしての優先度の順位が第１の所定の順位以上の情報処理装置は前記スケジューリング部の機能を有効にし、残りの情報処理装置は前記スケジューリング部の機能を無効にする情報処理システム。
（１４）前記残りの情報処理装置は、前記クライアントまたは前記ノードとして機能する、前記（１３）に記載の情報処理システム。
（１５）前記複数の情報処理装置のうち、前記スケジューラとしての優先度の順位が前記第１の所定の順位以上であって第２の所定の順位以上である情報処理装置は、マスタスケジューラとして機能し、
前記複数の情報処理装置のうち、前記スケジューラとしての優先度の順位が前記第１の所定の順位以上であって第２の所定の順位よりも下である情報処理装置は、スレーブスケジューラとして機能し、
前記スレーブスケジューラとして機能する情報処理装置は、前記マスタスケジューラとして機能する情報処理装置の前記スケジューリング部の機能のうちの一部を代行する、前記（１３）または（１４）に記載の情報処理システム。
（１６）前記マスタスケジューラとして機能する情報処理装置の前記スケジューリング部の機能に障害が生じた場合に、前記スレーブスケジューラとして機能する情報処理装置が代わりに前記マスタスケジューラとして機能する、前記（１５）に記載の情報処理システム。
（１７）前記スケジューラとしての優先度は、前記情報処理装置の現在の処理能力に基づいて算出される、前記（１３）〜（１６）のいずれか１項に記載の情報処理システム。
（１８）前記スケジューラとしての優先度は、前記情報処理装置の将来の処理能力の予測値に基づいて算出される、前記（１３）〜（１７）のいずれか１項に記載の情報処理システム。
（１９）前記スケジューラとしての優先度は、前記情報処理装置の通信状態に基づいて算出される、前記（１３）〜（１８）のいずれか１項に記載の情報処理システム。
【符号の説明】
【０１８６】
１０    情報処理システム
１００    情報処理装置
２００    ネットワーク
１２０    クライアント
１２２    ミドルウェア
１４０    スケジューラ
１４１    ミドルウェア
１４３    リクエスト受信部／レスポンス送信部
１４４    監視部
１４５    習慣解析部
１４６    ノード管理部
１４７    アプリケーション解析部
１４８    レスポンス解析部
１５０    リクエスト送信部／レスポンス受信部
１６０    ノード
１６１    ミドルウェア
１６４    監視部
１６５    習慣解析部
１６９    タスク読込／実行部
【図１】
2013061700.tif 000003
【図２】
2013061700.tif 000004
【図３】
2013061700.tif 000005
【図４】
2013061700.tif 000006
【図５】
2013061700.tif 000007
【図６】
2013061700.tif 000008
【図７】
2013061700.tif 000009
【図８】
2013061700.tif 000010
【図９】
2013061700.tif 000011
【図１０】
2013061700.tif 000012
【図１１】
2013061700.tif 000013
【図１２】
2013061700.tif 000014
【図１３】
2013061700.tif 000015
【図１４】
2013061700.tif 000016
【図１５】
2013061700.tif 000017
【図１６】
2013061700.tif 000018