(57)【特許請求の範囲】
【請求項１】
アプリケーションの動作環境および前記アプリケーションから要求される機能を示す機能情報を取得する情報取得部と、
前記動作環境および前記機能情報に応じたプログラムを取得するプログラム取得部と、
を備え、
前記プログラムは、前記機能情報に対応するプログラム群から前記動作環境と前記プログラム群を構成する各々のプログラムのメタ情報とに基づいて選択され、
前記プログラム群を構成する各々のプログラムのメタ情報は、動作環境に関する情報と当該プログラムにより提供される機能を示す情報とを含み、
前記プログラムの動作環境に関する情報は、当該プログラムの動作履歴に基づいて更新される、
情報処理装置。
【請求項２】
前記情報処理装置は、
前記プログラム取得部により取得されたプログラムを実行するプログラム実行部をさらに備える、
請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、
前記プログラム実行部によるプログラムの実行結果を前記アプリケーションに出力する実行結果出力部をさらに備える、
請求項２に記載の情報処理装置。
【請求項４】
前記プログラムの実行状況は、前記プログラムの動作履歴に追加され、前記プログラムの動作履歴に基づいた前記プログラムのメタ情報の更新に利用される、
請求項１に記載の情報処理装置。
【請求項５】
前記プログラム取得部は、前記プログラムを取得するに際して、前記プログラムのメタ情報に基づいて関連プログラムを取得する、
請求項１に記載の情報処理装置。
【請求項６】
前記情報取得部は、機能レベルを取得し、
前記プログラム取得部は、前記機能レベルに応じたプログラムを取得する、
請求項１に記載の情報処理装置。
【請求項７】
前記プログラム取得部は、前記情報取得部により複数のアプリケーションの各々から取得された機能情報が共通する場合には、当該各々のプログラムの取得動作の一部または全部を共通化する、
請求項１に記載の情報処理装置。
【請求項８】
前記プログラム取得部は、前記情報取得部により複数のアプリケーションの各々から取得された機能情報が共通する場合には、前記情報取得部により複数のアプリケーションの各々から取得された機能レベルに基づいて、当該各々のプログラムの取得動作の一部または全部を共通化する、
請求項１に記載の情報処理装置。
【請求項９】
前記プログラム取得部は、前記情報取得部により複数の機能情報が取得された場合、前記複数の機能情報の各々に関連付けられる優先度に基づいて、当該各々のプログラムを取得する、
請求項１に記載の情報処理装置。
【請求項１０】
前記プログラム取得部は、前記プログラム実行部による前記プログラムの実行が失敗した場合に、前記プログラムとは別のプログラムを前記動作環境および前記機能情報に応じて取得し直す、
請求項２に記載の情報処理装置。
【請求項１１】
前記動作環境は、前記アプリケーションを動作させる前記情報処理装置の能力を示す情報を含む、
請求項１に記載の情報処理装置。
【請求項１２】
前記動作環境は、前記アプリケーションを動作させる前記情報処理装置の状態を示す情報を含む、
請求項１に記載の情報処理装置。
【請求項１３】
前記プログラム取得部は、前記アプリケーションを動作させる情報処理装置の状態が変化した場合に、前記プログラムとは別のプログラムを変化後の情報処理装置の状態および前記機能情報に応じて取得し直す、
請求項１２に記載の情報処理装置。
【請求項１４】
アプリケーションの動作環境および前記アプリケーションから要求される機能を示す機能情報を取得することと、
前記動作環境および前記機能情報に応じたプログラムを取得することと、
を含み、
前記プログラムは、前記機能情報に対応するプログラム群から前記動作環境と前記プログラム群を構成する各々のプログラムのメタ情報とに基づいて選択され、
前記プログラム群を構成する各々のプログラムのメタ情報は、動作環境に関する情報と当該プログラムにより提供される機能を示す情報とを含み、
前記プログラムの動作環境に関する情報は、当該プログラムの動作履歴に基づいて更新される、
情報処理方法。
【請求項１５】
アプリケーションの動作環境および前記アプリケーションから要求される機能を示す機能情報に応じたプログラムを検索するプログラム検索部と、
前記プログラム検索部による検索により得られたプログラムを提供するプログラム提供部と、
を備え、
前記プログラムは、前記機能情報に対応するプログラム群から前記動作環境と前記プログラム群を構成する各々のプログラムのメタ情報とに基づいて選択され、
前記プログラム群を構成する各々のプログラムのメタ情報は、動作環境に関する情報と当該プログラムにより提供される機能を示す情報とを含み、
前記プログラムの動作環境に関する情報は、当該プログラムの動作履歴に基づいて更新される、
サーバ装置。
【請求項１６】
アプリケーションの動作環境および前記アプリケーションから要求される機能を示す機能情報に応じたプログラムを検索することと、
検索により得られたプログラムを提供することと、
を含み、
前記プログラムは、前記機能情報に対応するプログラム群から前記動作環境と前記プログラム群を構成する各々のプログラムのメタ情報とに基づいて選択され、
前記プログラム群を構成する各々のプログラムのメタ情報は、動作環境に関する情報と当該プログラムにより提供される機能を示す情報とを含み、
前記プログラムの動作環境に関する情報は、当該プログラムの動作履歴に基づいて更新される、
検索方法。
【請求項１７】
情報処理装置とサーバ装置とを有し、
前記情報処理装置は、
アプリケーションの動作環境および前記アプリケーションから要求される機能を示す機能情報を取得する情報取得部を備え、
前記サーバ装置は、
前記動作環境および前記機能情報に応じたプログラムを検索するプログラム検索部と、
前記プログラム検索部による検索により得られたプログラムを前記情報処理装置に提供するプログラム提供部と、
を備え、
前記プログラムは、前記機能情報に対応するプログラム群から前記動作環境と前記プログラム群を構成する各々のプログラムのメタ情報とに基づいて選択され、
前記プログラム群を構成する各々のプログラムのメタ情報は、動作環境に関する情報と当該プログラムにより提供される機能を示す情報とを含み、
前記プログラムの動作環境に関する情報は、当該プログラムの動作履歴に基づいて更新される、
情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理装置、情報処理方法、サーバ装置、検索方法および情報処理システムに関する。
【背景技術】
【０００２】
近年、スマートフォンなどのモバイル機器の普及に伴い、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）のみならずモバイル機器にもユーザが自由にアプリケーションをインストールすることが一般的になってきている。このように、アプリケーションは、様々な機器にインストールされ、様々なサービスをユーザに提供し得る。アプリケーションによるサービス提供時には、アプリケーションから様々な機能が要求されるが、かかる機能はプログラムの実行により実現され得る。実行されるプログラムは、例えば、サーバ装置から取得される（例えば、特許文献１参照）。【０００３】
ここで、アプリケーションの動作環境も様々であるため、例えば、同一のアプリケーションによって同一の機能が要求される複数の場面があったとしても、各場面においてアプリケーションの動作環境までも同一であるとは限らない。したがって、アプリケーションの動作環境が異なる場合であっても、プログラムの実行により適切な機能がアプリケーションに対して提供されるようにするため、様々な技術が開発されている。【０００４】
例えば、アプリケーションから要求される機能に対応するプログラムをあらかじめ冗長に構成しておく技術がある。かかる技術によれば、アプリケーションの動作環境が異なる複数の場面においても、冗長に構成されたプログラムを取得して実行することにより適切な機能がアプリケーションに提供され得る。【０００５】
また、例えば、アプリケーションの動作環境毎に異なるアプリケーションを用意する技術も存在する。かかる技術によれば、アプリケーション毎に異なるプログラムが実行されるため、アプリケーションに対応するプログラムを取得して実行することにより適切な機能がアプリケーションに提供され得る。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１１６６６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、アプリケーションから要求される機能に対応するプログラムをあらかじめ冗長に構成しておく技術では、冗長なプログラムを用意するための手間が掛かってしまう。また、アプリケーションの動作環境毎に異なるアプリケーションを用意する技術では、動作環境毎に異なるアプリケーションを用意するための手間が掛かってしまう。【０００８】
したがって、アプリケーションが要求する機能を実現するためのプログラムをアプリケーションの動作環境を考慮して容易に取得するための技術が提供されることが望ましい。
【課題を解決するための手段】
【０００９】
本開示によれば、アプリケーションの動作環境および前記アプリケーションから要求される機能を示す機能情報を取得する情報取得部と、前記動作環境および前記機能情報に応じたプログラムを取得するプログラム取得部と、を備える、情報処理装置が提供される。【００１０】
また、本開示によれば、アプリケーションの動作環境および前記アプリケーションから要求される機能を示す機能情報を取得することと、前記動作環境および前記機能情報に応じたプログラムを取得することと、を含む、情報処理方法が提供される。【００１１】
また、本開示によれば、アプリケーションの動作環境および前記アプリケーションから要求される機能を示す機能情報に応じたプログラムを検索するプログラム検索部と、前記プログラム検索部による検索により得られたプログラムを提供するプログラム提供部と、を備える、サーバ装置が提供される。【００１２】
また、本開示によれば、アプリケーションの動作環境および前記アプリケーションから要求される機能を示す機能情報に応じたプログラムを検索することと、検索により得られたプログラムを提供することと、を含む、検索方法が提供される。【００１３】
また、本開示によれば、情報処理装置とサーバ装置とを有し、前記情報処理装置は、アプリケーションの動作環境および前記アプリケーションから要求される機能を示す機能情報を取得する情報取得部を備え、前記サーバ装置は、前記動作環境および前記機能情報に応じたプログラムを検索するプログラム検索部と、前記プログラム検索部による検索により得られたプログラムを前記情報処理装置に提供するプログラム提供部と、を備える、情報処理システムが提供される。
【発明の効果】
【００１４】
以上説明したように本開示によれば、アプリケーションが要求する機能を実現するためのプログラムをアプリケーションの動作環境を考慮して容易に取得するための技術を提供することが可能である。
【図面の簡単な説明】
【００１５】
【図１】本開示の実施形態に係る情報処理システムの構成例を示す図である。
【図２】本開示の実施形態に係る情報処理システムの概要を示す図である。
【図３】本開示の実施形態に係る情報処理装置の機能構成例を示す図である。
【図４】本開示の実施形態に係るサーバ装置の機能構成例を示す図である。
【図５】プログラム検索の機能の一例を示す図である。
【図６】プログラム検索の機能の一例を示す図である。
【図７】プログラム検索の機能の一例を示す図である。
【図８】プログラム検索の機能の一例を示す図である。
【図９】プログラム検索の機能の一例を示す図である。
【図１０】プログラム検索の機能の一例を示す図である。
【図１１】動作履歴の更新の機能の一例を示す図である。
【図１２】メタ情報の更新の機能の一例を示す図である。
【図１３】本開示の実施形態に係る情報処理システムの動作の流れを示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書および図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１７】
また、本明細書および図面において、実質的に同一の機能構成を有する複数の構成要素を、同一の符号の後に異なるアルファベットを付して区別する場合もある。ただし、実質的に同一の機能構成を有する複数の構成要素の各々を特に区別する必要がない場合、同一符号のみを付する。
【００１８】
また、以下に示す項目順序に従って当該「発明を実施するための形態」を説明する。
１．実施形態
１−１．情報処理システムの構成例
１−２．情報処理システムの概要
１−３．情報処理装置の機能構成例
１−４．サーバ装置の機能構成例
１−５．プログラム検索の機能
１−６．動作履歴の更新の機能
１−７．メタ情報の更新の機能
１−８．情報処理システムの動作例
２．むすび
【００１９】
＜＜１．実施形態＞＞
まず、本開示の実施形態について順次詳細に説明する。
【００２０】
＜１−１．情報処理システムの構成例＞
まず、本開示の実施形態に係る情報処理システム１の構成例について説明する。図１は、本開示の実施形態に係る情報処理システム１の構成例を示す図である。
【００２１】
図１に示したように、本開示の実施形態に係る情報処理システム１は、一例として、情報処理装置１０とサーバ装置２０とを備える。情報処理装置１０およびサーバ装置２０の各々は、ネットワーク３０に接続されており、ネットワーク３０を介して相互に通信可能にされている。ただし、図１に示した構成は一例に過ぎない。例えば、図１には、１台の情報処理装置１０がネットワーク３０に接続されているが、複数の情報処理装置１０がネットワーク３０に接続されていてもよい。また、ネットワーク３０は、インターネットであってもよいし、無線ＬＡＮであってもよいし、３Ｇ回線であってもよいし、他のネットワークであってもよい。
【００２２】
情報処理装置１０は、アプリケーションを起動すると、アプリケーションにより要求される機能を実現するためのプログラムを、ネットワーク３０を介してサーバ装置２０から取得する。情報処理装置１０は、例えば、スマートフォン、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、Ｔａｂｌｅｔ型コンピュータなどの任意の種類の装置であってよい。情報処理装置１０により起動されるアプリケーションや、アプリケーションから要求される機能を実現するためのプログラムの種類は特に限定されない。
【００２３】
サーバ装置２０は、情報処理装置１０において起動されているアプリケーションから要求される機能を実現するためのプログラムを検索する。また、サーバ装置２０は、かかる検索により得られたプログラムを、ネットワーク３０を介して情報処理装置１０に提供する。サーバ装置２０は、例えば、ＰＣなどの任意の種類の装置であってよい。また、図１に示したように、サーバ装置２０は、情報処理装置１０とは別体に構成されていてもよいし、情報処理装置１０と一体化されていてもよい。
【００２４】
なお、サーバ装置２０は、一般的には事業者に管理されるコンピュータにより実現され得るが、本明細書におけるサーバ装置２０は、かかる例に限定されず、あらゆる機器によって実現され得る。例えば、本明細書におけるサーバ装置２０は、ホームサーバ等の機器によっても実現され得る。
【００２５】
ここで、上記したように、アプリケーションの動作環境は様々であるため、例えば、同一のアプリケーションによって同一の機能が要求される複数の場面があったとしても、各場面においてアプリケーションの動作環境までも同一であるとは限らない。したがって、アプリケーションの動作環境が異なる場合であっても、プログラムの実行により適切な機能がアプリケーションに対して提供されるのが望ましい。
【００２６】
しかし、アプリケーションから要求される機能に対応するプログラムをあらかじめ冗長に構成しておく技術や、アプリケーションの動作環境毎に異なるアプリケーションを用意する技術では、プログラムやアプリケーションを用意するための手間が掛かってしまう。したがって、本開示の実施形態では、アプリケーションが要求する機能を実現するためのプログラムをアプリケーションの動作環境を考慮して容易に取得するための技術を提案する。
【００２７】
以上、本開示の実施形態に係る情報処理システム１の構成例について説明した。続いて、本開示の実施形態に係る情報処理システム１の概要について説明する。
【００２８】
＜１−２．情報処理システムの概要＞
図２は、本開示の実施形態に係る情報処理システム１の概要を示す図である。図２に示したように、情報処理装置１０は、アプリケーションを起動することが可能である。図２には、情報処理装置１０により起動され得るアプリケーションとして、アプリケーションＡ１、アプリケーションＡ２およびアプリケーションＡ３が示されているが、情報処理装置１０により起動され得るアプリケーションの数は特に限定されない。アプリケーションは、例えば、制御部１１０による制御に従って起動される。ここでは、制御部１１０による制御に従ってアプリケーションＡ２が起動された場合を例に説明する。
【００２９】
アプリケーションＡ２が起動されている状態においては、アプリケーションＡ２から機能が要求される。機能の種類は特に限定されないが、例えば、アプリケーションＡ２から要求される機能は、後に説明するように画像に映る顔を解析する顔解析の機能などであってもよい。例えば、制御部１１０は、要求される機能を示す機能情報をアプリケーションＡ２から取得する。一方、制御部１１０は、アプリケーションＡ２の動作環境を取得する。
【００３０】
アプリケーションＡ２の動作環境は、例えば、情報処理装置１０により起動されているＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）から取得されてもよいが、動作環境を提供する主体は特に限定されない。アプリケーションＡ２の動作環境は、例えば、アプリケーションＡを動作させる情報処理装置１０の能力を示す情報を含んでいてもよいし、アプリケーションＡ２を動作させる情報処理装置１０の状態を示す情報を含んでいてもよい。
【００３１】
情報処理装置１０の能力は、情報処理装置１０に関する情報のうち静的な情報に相当する。情報処理装置１０の能力は、特に限定されないが、例えば、情報処理装置１０を動作させるためのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の性能であってもよいし、情報処理装置１０を動作させるためのメモリの性能であってもよい。
【００３２】
また、情報処理装置１０の能力は、情報処理装置１０の動作に使用されるストレージの容量であってもよいし、情報処理装置１０による最大通信速度であってもよい。また、情報処理装置１０の能力は、情報処理装置１０により使用される電池の容量であってもよいし、情報処理装置１０において動作可能なプログラム言語であってもよい。また、情報処理装置１０の能力は、情報処理装置１０が使用できる所定のハードウェア（例えば、ディスプレイ、チューナ、タッチパネル、カメラなど）の有無に関する情報であってもよい。
【００３３】
一方、情報処理装置１０の状態は、情報処理装置１０に関する情報のうち動的な情報に相当する。例えば、情報処理装置１０の状態は、特に限定されないが、例えば、情報処理装置１０にインストールされているアプリケーションの種類であってもよいし、情報処理装置１０にインストールされているＯＳのバージョンであってもよいし、情報処理装置１０が対応可能なプログラム言語のサポート状態であってもよい。
【００３４】
また、情報処理装置１０の状態は、ユーザが登録済みの外部サービスのアカウント情報であってもよいし、既に取得したプログラムの種類であってもよい。また、情報処理装置１０の状態は、情報処理装置１０が有するハードウェアのリソース情報（例えば、ＣＰＵの空き、メモリの空き、電池残量、ストレージの空きなど）であってもよいし、情報処理装置１０により使用される通信方式（例えば、ｗｉ−ｆｉ、３Ｇなど）であってもよいし、情報処理装置１０による通信速度であってもよい。
【００３５】
また、情報処理装置１０の状態は、情報処理装置１０により使用されるハードウェア（例えば、ディスプレイなど）の電源が入っているか否かであってもよいし、所定のプログラムの動作に関する情報（例えば、当該プログラムを動作させる時期、時間、場所など）であってもよい。また、情報処理装置１０の状態は、実行中のプロセスに関する情報（例えば、実行中のプロセスの種類、数など）であってもよいし、情報処理装置１０との接続デバイスの種類であってもよい。ただし、接続デバイスは、静的な情報に相当する可能性もある。
【００３６】
このようにして、制御部１１０により動作環境および機能情報が取得されると、制御部１１０は、動作環境および機能情報に応じたプログラムを取得する。より詳細には、まず、サーバ装置２０においては、プログラムが機能毎に用意されている。図２に示した例では、機能Ｆ１に対応するプログラムとして、プログラムＰ１−１およびプログラムＰ１−２が用意されており、機能Ｆ２に対応するプログラムとして、プログラムＰ２−１およびプログラムＰ２−２が用意されている。なお、機能の種類は特に限定されない。また、各機能に対応するプログラムの数も特に限定されない。
【００３７】
サーバ装置２０の制御部２１０は、情報処理装置１０の制御部１１０から動作環境および機能情報を取得すると、機能情報に対応するプログラムを選択する。図２には、機能情報が機能Ｆ２を示している場合を想定し、制御部２１０は、機能情報に対応するプログラムとして、プログラムＰ２−１およびプログラムＰ２−２を選択する例が示されている。続いて、制御部２１０は、動作環境に応じたプログラムを選択する。図２には、動作環境に基づいてプログラムＰ２−２を選択する例が示されている。
【００３８】
このように選択されたプログラムは、サーバ装置２０の制御部２１０により提供され、情報処理装置１０の制御部１１０により取得される。制御部１１０は、取得したプログラムを実行し、実行結果をアプリケーションＡ２に提供することにより、アプリケーションＡ２から要求された機能が実現される。なお、アプリケーションＡ２の動作環境（例えば、上記の静的な情報など）が既にサーバ装置２０により取得されている場合には、当該動作環境を再度用いればよいため、制御部２１０および制御部２１０による動作環境の取得は省略され得る。
【００３９】
このように、本開示の実施形態においては、動作環境および機能情報に応じたプログラムが情報処理装置１０により取得される。したがって、アプリケーションが要求する機能を実現するためのプログラムをアプリケーションの動作環境を考慮して容易に取得することが可能である。
【００４０】
以上、本開示の実施形態に係る情報処理システム１の概要について説明した。続いて、本開示の実施形態に係る情報処理装置１０の機能構成例について説明する。
【００４１】
＜１−３．情報処理装置の機能構成例＞
図３は、本開示の実施形態に係る情報処理装置１０の機能構成例を示す図である。図３に示したように、情報処理装置１０は、制御部１１０、入力部１２０、通信部１３０、記憶部１４０および出力部１５０を備える。また、制御部１１０は、情報取得部１１１、プログラム取得部１１２、プログラム実行部１１３、実行結果出力部１１４および実行状況出力部１１５を備える。
【００４２】
制御部１１０は、ＣＰＵまたはＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）などのプロセッサに相当する。制御部１１０は、記憶部１４０または他の記憶媒体に記憶されるアプリケーションおよびプログラムを実行することにより、制御部１１０が有する様々な機能を発揮する。情報取得部１１１、プログラム取得部１１２、プログラム実行部１１３、実行結果出力部１１４および実行状況出力部１１５の各機能については後に説明する。
【００４３】
入力部１２０は、ユーザからの操作を受け付ける機能を有する。入力部１２０は、ユーザからの操作を操作情報として制御部１１０に出力する。操作情報は制御部１１０により用いられ、例えば、プログラムの実行に用いられる。図２に示した例では、入力部１２０が情報処理装置１０に組み込まれているが、入力部１２０は情報処理装置１０の外部に存在してもよい。
【００４４】
通信部１３０は、例えば、ネットワーク３０に接続するための通信デバイスなどにより構成された通信インタフェースである。通信部１３０は、例えば、ネットワーク３０を介してサーバ装置２０と通信を行うことが可能である。通信部１３０によるネットワーク３０を介した通信は、無線によりなされてもよいし、有線によりなされてもよい。
【００４５】
記憶部１４０は、半導体メモリまたはハードディスクなどの記憶媒体を用いて、制御部１１０により実行されるアプリケーションおよびプログラムを記憶する。また、記憶部１４０は、アプリケーションやプログラムの実行に使用されるデータを記憶することもできる。図３に示した例では、記憶部１４０は情報処理装置１０に組み込まれているが、記憶部１４０は情報処理装置１０の外部に存在してもよい。
【００４６】
出力部１５０は、制御部１１０による制御に従って情報を出力する機能を有する。例えば、出力部１５０は、アプリケーションに対する操作情報の入力をユーザに行わせるための情報を出力させる機能を有していてもよい。また、例えば、出力部１５０は、アプリケーションの実行結果を出力することによりユーザにサービスを提供する機能を有していてもよい。出力部１５０は、画面を表示する表示装置であってもよいし、音声を出力する音声出力装置であってもよいし、他の出力装置であってもよい。
【００４７】
以上、本開示の実施形態に係る情報処理装置１０の機能構成例について説明した。続いて、本開示の実施形態に係るサーバ装置２０の機能構成例について説明する。
【００４８】
＜１−４．サーバ装置の機能構成例＞
図４は、本開示の実施形態に係るサーバ装置２０の機能構成例を示す図である。図４に示したように、サーバ装置２０は、制御部２１０、通信部２３０および記憶部２４０を備える。また、制御部２１０は、プログラム検索部２１１、プログラム提供部２１２、実行状況取得部２１３およびメタ情報更新部２１４を備える。
【００４９】
制御部２１０は、ＣＰＵまたはＤＳＰなどのプロセッサに相当する。制御部２１０は、記憶部２４０または他の記憶媒体に記憶されるプログラムを実行することにより、制御部２１０が有する様々な機能を発揮する。プログラム検索部２１１、プログラム提供部２１２、実行状況取得部２１３およびメタ情報更新部２１４の各機能については後に説明する。
【００５０】
通信部２３０は、例えば、ネットワーク３０に接続するための通信デバイスなどにより構成された通信インタフェースである。通信部２３０は、例えば、ネットワーク３０を介して情報処理装置１０と通信を行うことが可能である。通信部２３０によるネットワーク３０を介した通信は、無線によりなされてもよいし、有線によりなされてもよい。
【００５１】
記憶部２４０は、半導体メモリまたはハードディスクなどの記憶媒体を用いて、制御部２１０により実行されるプログラムを記憶する。また、記憶部２４０は、プログラムの実行に使用されるデータを記憶することもできる。図４には、記憶部２４０により記憶されるデータの例として動作履歴およびメタ情報が示されているが、これらの情報については後に説明する。図４に示した例では、記憶部２４０はサーバ装置２０に組み込まれているが、記憶部２４０はサーバ装置２０の外部に存在してもよい。
【００５２】
以上、本開示の実施形態に係るサーバ装置２０の機能構成例について説明した。続いて、本開示の実施形態に係るプログラム検索機能の詳細について説明する。
【００５３】
＜１−５．プログラム検索の機能＞
図５は、プログラム検索の機能の一例を示す図である。図５に示すように、情報処理装置１０の情報取得部１１１は、アプリケーションＡ２から要求される機能を示す機能情報をアプリケーションＡ２から取得する。ここでは、一例として、情報処理装置１０が有する画像に対して顔解析を行う機能がアプリケーションＡ２から要求された場合を想定する。また、情報取得部１１１は、アプリケーションＡ２の動作環境を取得する。ここでは、一例として、情報処理装置１０が備えるＣＰＵに掛かる負荷（以下、単に「ＣＰＵ負荷」とも言う。）ｐ０２が取得された場合を想定する。ここでは、ＣＰＵ負荷は、ＣＰＵの使用量である場合を想定するが、ＣＰＵ負荷は、ＣＰＵ使用率であってもよい。
【００５４】
続いて、プログラム取得部１１２は、動作環境および機能情報に応じたプログラムを取得する。プログラムの取得は、どのようなタイミングでなされてもよい。例えば、プログラム取得部１１２は、ユーザ操作によりプログラムの取得指示がなされた場合にプログラムを取得してもよいし、アプリケーションＡ２からの通知によりプログラムの取得指示がなされた場合にプログラムを取得してもよい。また、プログラム取得部１１２は、アプリケーションＡ２がインストールされた場合にプログラムを取得してもよいし、情報処理装置１０の状態が変化したときにプログラムを取得してもよい。
【００５５】
まず、プログラム取得部１１２は、プログラムを取得するため、動作環境および機能情報をサーバ装置２０に通知する。ただし、プログラム取得部１１２は、既にプログラムを取得している場合には、既に取得しているプログラムを使用すればよいため、改めて動作環境および機能情報をサーバ装置２０に通知する必要はない。また、プログラム取得部１１２は、プログラムの取得に失敗した場合には、既に取得されているプログラムをプログラム実行部１１３に実行させてもよい。
【００５６】
続いて、サーバ装置２０のプログラム検索部２１１は、動作環境および機能情報をプログラム取得部１１２から取得すると、動作環境および機能情報に応じたプログラムを検索する。例えば、プログラム検索部２１１は、機能情報に対応するプログラム群から動作環境とプログラム群を構成する各々のプログラムのメタ情報とに基づいてプログラムを選択する。
【００５７】
図５に示した例では、プログラム検索部２１１は、顔解析の機能に相当する機能Ｆ２のプログラム群（プログラムＰ２−１およびプログラムＰ２−２）から動作環境とプログラム群を構成する各々のプログラムのメタ情報とに基づいてプログラムを選択する。プログラム群を構成する各々のプログラムのメタ情報は、動作環境に関する情報と当該プログラムにより提供される機能を示す情報とを含んでいてもよい。
【００５８】
図５には、メタ情報として、プログラムＰ２−１のメタ情報およびプログラムＰ２−２のメタ情報が示されている。プログラムＰ２−１のメタ情報には、プログラムＰ２−１により提供される機能を示す情報「顔解析」と動作環境に関する情報「ｐ１＜ＣＰＵ負荷Ｐ＜ｐ２」とが含まれている。また、プログラムＰ２−２のメタ情報には、プログラムＰ２−２により提供される機能を示す情報「顔解析」と動作環境に関する情報「ｐ３＜ＣＰＵ負荷Ｐ＜ｐ４」とが含まれている。
【００５９】
動作環境に関する情報は、例えば、機能毎に用意されたテストコードの実行状況に基づいて開発者などによりあらかじめ設定されてもよい。例えば、プログラムＰ２−２の実行により小さなＣＰＵ負荷が掛かるという実行状況が得られた場合には、情報処理装置１０のＣＰＵ負荷Ｐがより大きい場合にプログラムＰ２−１が使用されるように設定されてもよい。また、プログラムＰ２−１の実行により大きなＣＰＵ負荷が掛かるという実行状況が得られた場合には、情報処理装置１０のＣＰＵ負荷Ｐがより小さい場合にプログラムＰ２−２が使用されるように設定されてもよい。
【００６０】
テストコードを実行するコンピュータは、サーバ装置２０であってもよいし、サーバ装置２０以外の装置であってもよい。例えば、複数の装置を用意して、複数の装置においてテストコードを実行してもよいし、開発者のコンピュータにおいてテストコードを実行してもよい。また、テストコードの実行結果は、メタ情報生成以外の目的で使用されてもよい。例えば、テストコードの実行結果は、プログラムが不正なリソースへのアクセスを行っていないかを監視するためのセキュリティ目的で使用されてもよい。
【００６１】
プログラムにより提供される機能を示す情報は、例えば、開発者などによりあらかじめ設定されてもよい。プログラムにより提供される機能を示す情報は、既に登録されている１または複数の情報から開発者などにより選択されてもよい。また、プログラムにより提供される機能を示す情報は、まだ登録されていない場合には、開発者などにより新たに追加された上で選択されてもよい。
【００６２】
図５に示した例では、動作環境の一例としてのＣＰＵ負荷ｐ０２がプログラムＰ２−１の動作環境に関する情報「ｐ１＜ＣＰＵ負荷Ｐ＜ｐ２」に記載された条件を満たす場合を想定している。かかる場合、プログラム検索部２１１は、当該条件を満たすプログラムＰ２−１を選択する。プログラム提供部２１２は、プログラム検索部２１１による検索により得られたプログラムをプログラム取得部１１２に提供する。図５に示した例では、プログラム提供部２１２は、プログラム検索部２１１により選択されたプログラムＰ２−１をプログラム取得部１１２に提供する。
【００６３】
なお、ここでは、プログラム検索部２１１は、サーバ装置２０に組み込まれている例を示しているが、情報処理装置１０がメタ情報をサーバ装置２０から取得できる場合には、プログラム検索部２１１は、情報処理装置１０の内部に存在していてもよい。また、プログラム提供部２１２は、サーバ装置２０に組み込まれている例を示しているが、プログラム提供部２１２は、サーバ装置２０の外部に存在してもよい。かかる場合には、プログラムの存在位置がプログラム検索部２１１からプログラム取得部１１２に通知され、プログラム取得部１１２は、サーバ装置２０の外部に存在するプログラム提供部２１２からプログラムの提供を受けてもよい。
【００６４】
情報処理装置１０のプログラム取得部１１２は、プログラム検索部２１１により提供されたプログラムを取得し、プログラム実行部１１３は、プログラム取得部１１２により取得されたプログラムを実行する。実行結果出力部１１４は、プログラム実行部１１３によるプログラムの実行結果をアプリケーションに出力する。図５に示した例では、プログラム取得部１１２によりプログラムＰ２−１が取得される場合を想定しているため、アプリケーションＡ２にプログラムＰ２−１の実行結果を出力する。
【００６５】
なお、プログラム取得部１１２は、プログラム実行部１１３によるプログラムの実行が失敗した場合に、取得したプログラムとは別のプログラムを動作環境および機能情報に応じて取得し直してもよい。例えば、プログラム取得部１１２は、機能情報に対応するプログラムが複数存在する場合には、動作環境に基づいて当該複数のプログラムの中から当該別のプログラムを取得してもよい。
【００６６】
以上に示したように、本開示の実施形態においては、動作環境および機能情報に応じたプログラムが情報処理装置１０により取得される。したがって、アプリケーションが要求する機能を実現するためのプログラムをアプリケーションの動作環境を考慮して容易に取得することが可能である。また、動作環境および機能情報に応じたプログラムの実行結果が容易にアプリケーションに提供される。
【００６７】
なお、図５に示した例では、情報処理装置１０のＣＰＵ負荷Ｐをアプリケーションの動作環境として使用したが、アプリケーションの動作環境は、上記したように、特に限定されない。例えば、アプリケーションの動作環境は、情報処理装置１０の通信速度であってもよい。例えば、外部のサーバの顔解析の機能を利用する二つのプログラムが存在する場合、情報処理装置１０の通信速度がより大きい場合には、当該外部のサーバにより大きいデータを転送する必要があるものの、当該外部のサーバからより高精度の解析結果が得られるプログラムが取得されればよい。一方、情報処理装置１０の通信速度がより小さい場合には、当該外部のサーバからより低精度の解析結果を得られるものの、当該外部のサーバにより小さいデータを転送すれば済むプログラムが取得されればよい。また、例えば、アプリケーションの動作環境は、情報処理装置１０が使用するメモリの空きであってもよい。
【００６８】
また、例えば、アプリケーションの動作環境は、情報処理装置１０が通信に使用する通信方式（例えば、３Ｇ回線、ｗｉ−ｆｉなど）であってもよい。例えば、通信方式が「３Ｇ回線」である場合には、ネットワーク３０の混み具合が大きいことが予想されるため、外部のサーバによる処理が不要なプログラムの動作環境に関する情報に「通信方式：３Ｇ回線」が設定されてもよい。また、例えば、通信方式が「ｗｉ−ｆｉ」である場合には、ネットワーク３０の混み具合が小さいことが予想されるため、外部のサーバによる処理が必要なプログラムの動作環境に関する情報に「通信方式：ｗｉ−ｆｉ」が設定されてもよい。
【００６９】
プログラム検索の機能の例は、図５に示した例に限定されない。以下、プログラム検索の機能の他の例を説明する。なお、以下のプログラム検索の機能の例では、図５に示した例との相違について主に説明する。
【００７０】
図６は、プログラム検索の機能の一例を示す図である。この例では、アプリケーションから機能情報以外にその機能がどの程度のレベルの機能であるかを示す機能レベルが出力される。図６に示すように、情報取得部１１１は、アプリケーションＡ２から機能情報以外に機能レベルを取得してもよい。かかる場合、プログラム取得部１１２は、機能レベルに応じたプログラムを取得してもよい。
【００７１】
図６に示した例では、プログラムＰ２−１のメタ情報には、機能レベル「高精度」がさらに含まれている。また、プログラムＰ２−２のメタ情報には、機能レベル「低精度」がさらに含まれている。この例では、アプリケーションＡ２から出力された機能レベルの一例としての「高精度」がプログラムＰ２−１の動作環境に関する情報「高精度」の条件を満たす場合を想定している。かかる場合、プログラム検索部２１１は、当該条件を満たすプログラムＰ２−１を選択すればよい。
【００７２】
なお、図６には、プログラムにより提供される機能が「高精度」であるか「低精度」であるかを示す情報が機能レベルとして使用される場合について示したが、機能レベルは、かかる例に限定されない。例えば、機能レベルは、リアルタイム性を要求するか否かを示す情報であってもよい。例えば、機能レベルが「リアルタイム性なし」であるプログラムは、処理により多くの時間を要するがハードウェア（例えば、ＣＰＵ、メモリなど）に与える負荷はより小さいプログラムであってもよい。また、機能レベルが「リアルタイム性あり」であるプログラムは、ハードウェア（例えば、ＣＰＵ、メモリなど）に与える負荷はより大きいが処理により短い時間を要するプログラムであってもよい。また、図６には、機能レベルが２段階の場合について示されているが、機能レベルは３段階以上であってもよい。
【００７３】
図７は、プログラム検索の機能の一例を示す図である。この例では、プログラム取得部１１２が、プログラム提供部２１２により提供されるプログラム以外に関連プログラムも取得する。プログラム提供部２１２により提供されるプログラムが実行される場合、そのプログラムと関連性を有するプログラムも実行される可能性が高いからである。関連プログラムは、プログラム提供部２１２により提供されるプログラムと関連性を有するプログラムである。
【００７４】
例えば、関連プログラムは、プログラム提供部２１２により提供されるプログラムから呼び出されるプログラムであってもよいし、プログラム提供部２１２により提供されるプログラムを呼び出すプログラムであってもよい。また、例えば、関連プログラムは、プログラム提供部２１２により提供されるプログラムと他のプログラムが同一のプログラムから呼び出される場合、当該他のプログラムであってもよい。すなわち、関連プログラムは、プログラム提供部２１２により提供されるプログラムと直接的または間接的に結合されて実行されるプログラムであってもよい。
【００７５】
図７に示した例では、プログラムＰ２−１のメタ情報には、関連プログラム「プログラムＲ１」がさらに含まれている。また、プログラムＰ２−２のメタ情報には、関連プログラム「プログラムＲ２」がさらに含まれている。この例では、プログラム提供部２１２により提供されるプログラムＰ２−１の関連プログラム「プログラムＲ１」がさらにプログラム取得部１１２に提供される。
【００７６】
なお、各プログラムのメタ情報は、後に説明するように、メタ情報更新部２１４により更新され得る。したがって、プログラム提供部２１２により提供されるプログラムと結合されて実行されたプログラムが複数存在する場合、当該複数のプログラムの中から実行状況に基づいて選択されたプログラムが、関連プログラムとしてメタ情報に含まれてもよい。かかる場合には、プログラム提供部２１２により提供されるプログラムとより関連性の強いプログラムが関連プログラムとして取得される。
【００７７】
関連プログラムが取得されるタイミングは、特に限定されない。例えば、関連プログラムは、当該プログラムの前に実行されるプログラムの実行段階に基づいて逐次的に取得されてもよい。逐次的に関連プログラムが取得されることにより、例えば、当該関連プログラムの前に実行されたプログラムをメモリから消去するとともに、関連プログラムの取得を行うようにすれば、プログラムを記憶するために使用されるメモリの容量を低減させることが可能である。
【００７８】
図８は、プログラム検索の機能の一例を示す図である。この例では、情報取得部１１１が、アプリケーションＡ２から複数の機能情報を取得した場合を想定する。かかる場合には、プログラム取得部１１２は、複数の機能情報の各々に関連付けられる優先度に基づいて、当該各々のプログラムを取得してもよい。優先度は、アプリケーションＡ２から取得されてもよいし、あらかじめ各機能に対して優先度が関連付けられていてもよい。
【００７９】
図８に示した例では、情報取得部１１１により、アプリケーションＡ２から顔解析の機能を示す機能情報および音声解析の機能を示す機能情報が取得されている。ここで、例えば、音声解析の機能Ｆ１の優先度が顔解析の機能Ｆ２の優先度よりも高い場合には、音声解析の機能Ｆ１のプログラムの提供が顔解析の機能Ｆ２のプログラムの提供よりも優先されてもよい。
【００８０】
例えば、音声解析の機能Ｆ１のプログラムは優先度を考慮しない場合と同様に提供されてもよい。また、顔解析の機能Ｆ２のプログラムに関しては、優先度を考慮しない場合にはより処理負荷の大きいプログラムＰ２−１が提供され、優先度を考慮した場合にはより処理負荷のより小さいプログラムＰ２−２が提供されてもよい。音声解析の機能Ｆ１のプログラムも実行される場合を考慮すると、処理負荷のより小さいプログラムＰ２−２が実行されるのが望ましいことが想定されるからである。
【００８１】
図９は、プログラム検索の機能の一例を示す図である。この例では、情報取得部１１１が、複数のアプリケーションの各々から機能情報を取得した場合を想定する。かかる場合には、プログラム取得部１１２は、複数のアプリケーションの各々から取得された機能情報が共通する場合には、当該各々のプログラムの取得動作の一部または全部を共通化してもよい。このような共通化によれば、プログラムの取得動作に掛かる処理負荷を軽減することが可能となる。
【００８２】
図９に示した例では、情報取得部１１１により、アプリケーションＡ１およびアプリケーションＡ２の各々から顔解析の機能を示す機能情報が取得されている。各アプリケーションの動作環境も共通している。したがって、プログラム取得部１１２は、顔解析の機能Ｆ２に対応するプログラムＰ２−１の取得動作の全部を共通化すればよい。
【００８３】
プログラム検索部２１１により顔解析の機能を示す機能情報および動作環境の例としてのＣＰＵ負荷ｐ０２に基づいて検索が行われ、プログラムＰ２−１が取得されると、プログラム提供部２１２によりプログラムＰ２−１がプログラム取得部１１２に提供される。プログラム取得部１１２によりプログラムＰ２−１が取得された場合、プログラム実行部１１３は、プログラムＰ２−１を実行し、実行結果出力部１１４は、プログラムＰ２−１の実行結果をアプリケーションＡ１およびアプリケーションＡ２に提供すればよい。
【００８４】
なお、アプリケーションＡ１およびアプリケーションＡ２の動作環境が異なる場合などには、アプリケーションＡ１から要求された機能に対応するプログラムとアプリケーションＡ２から要求された機能に対応するプログラムとにおいて異なる可能性がある。そのような場合であっても、提供される双方のプログラムの一部が共通していれば、取得動作の一部を共通化することが可能である。
【００８５】
また、アプリケーションＡ１およびアプリケーションＡ２の各々から機能レベルが取得される場合も想定される。かかる場合、プログラム提供部２１２は、アプリケーションＡ１およびアプリケーションＡ２の各々から取得された機能情報が共通する場合には、アプリケーションＡ１およびアプリケーションＡ２の各々から取得された機能レベルに基づいて、当該各々のプログラムの取得動作の一部または全部を共通化してもよい。
【００８６】
例えば、上記した例では、機能レベルが「高精度」の顔解析のプログラムＰ２−１と機能レベルが「低精度」の顔解析のプログラムＰ２−２とは、実行により提供される機能が類似していると考えられる。このため、プログラムＰ２−１とプログラムＰ２−２とは共通部分を有している可能性が高い。したがって、当該共通部分の取得動作は共通化することが可能であると考えられる。
【００８７】
また、共通化されるプログラムは、顔解析のプログラムに限定されない。例えば、アプリケーションＡ１およびアプリケーションＡ２の各々は、位置を測定するプログラムであってもよい。例えば、機能レベルが「高精度」の測位プログラムＰ２−１と機能レベルが「低精度」の測位プログラムＰ２−２とが存在する場合、プログラムＰ２−１とプログラムＰ２−２とは共通部分を有している可能性が高い。したがって、当該共通部分の取得動作は共通化することが可能であると考えられる。
【００８８】
図１０は、プログラム検索の機能の一例を示す図である。この例では、動作環境が変化した場合を想定する。かかる場合には、プログラム取得部１１２は、取得したプログラムとは別のプログラムを変化後の動作環境および機能情報に応じて取得し直してもよい。アプリケーションの動作環境の変化によって適切なプログラムが変わってしまう可能性があるからである。動作環境は、例えば、情報処理装置１０の状態であってもよい。このような再度のプログラムの取得によれば、アプリケーションの動作環境の変化に応じたプログラムの取得を行うことが可能となる。なお、ユーザ操作により動作環境の変化を示す情報が明示的に与えられてもよい。
【００８９】
また、ここでは、プログラム取得部１１２は、改めてサーバ装置２０からプログラムを取得し直す例を示しているが、プログラム取得部１１２は、優先順位に関連付けられたプログラムをあらかじめ複数取得しておいてもよい。その場合、プログラム実行部１１３は、優先順位の高いプログラムから実行するようにし、プログラム取得部１１２は、アプリケーションの動作環境の変化に応じて、既に取得してある複数のプログラムから次に優先度の高いプログラムを取得してもよい。
【００９０】
図１０に示した例では、情報取得部１１１は、アプリケーションＡ２の動作環境の一例として、情報処理装置１０のＣＰＵ負荷ｐ０２が取得されていた場合を想定する。そして、ＣＰＵ負荷がｐ０２からｐ０２’に変化した場合を想定する。かかる場合、プログラム取得部１１２は、顔解析の機能Ｆ２に対応するプログラム群から、変化後のＣＰＵ負荷ｐ０２’に応じたプログラムを取得し直せばよい。例えば、変化後のＣＰＵ負荷ｐ０２’に対応するプログラムがプログラムＰ２−２に変化した場合、プログラム提供部２１２は、プログラムＰ２−２をプログラム取得部１１２に提供すればよい。
【００９１】
なお、ここではＣＰＵ負荷が変化した場合を例に説明したが、動作環境の変化は、ＣＰＵ負荷の変化に限定されない。例えば、動作環境の変化は、電池残量の変化であってもよい。例えば、電池残量が多い場合には、消費電力が高いが処理が高速なプログラムを実行するのが望ましいが、電池残量が少ない場合には、処理が低速であるが消費電力が低いプログラムを実行するのが望ましいと考えられるからである。
【００９２】
以上、本開示の実施形態に係るプログラム検索機能の詳細について説明した。続いて、本開示の実施形態に係る動作履歴の更新の機能の詳細について説明する。
【００９３】
＜１−６．動作履歴の更新の機能＞
図１１は、動作履歴の更新の機能の一例を示す図である。図１１に示すように、情報処理装置１０の実行状況出力部１１５は、プログラム実行部１１３によるプログラムの実行状況をサーバ装置２０に出力してもよい。サーバ装置２０の実行状況取得部２１３は、実行状況を当該プログラムの動作履歴に追加してもよい。ここで実行状況が追加された動作履歴は、後に説明するメタ情報の更新に利用され得る。プログラムの実行状況は特に限定されない。
【００９４】
図１１に示した例では、プログラムＰ２−１がプログラム実行部１１３により実行された場合を想定している。かかる場合、実行状況出力部１１５は、プログラム実行部１１３によるプログラムＰ２−１の実行状況を実行状況取得部２１３に出力する。プログラムＰ２−１の実行状況は、プログラムＰ２−１の実行に要した処理時間であってもよい。図１１に示した例では、処理時間ｔ３が実行状況取得部２１３に出力されている。
【００９５】
例えば、最も長い処理時間ｔ１および２番目に長い処理時間ｔ２が既にプログラムＰ２−１の動作履歴に登録されているとする。実行状況取得部２１３は、実行状況出力部１１５から処理時間ｔ３を取得すると、取得した処理時間ｔ３を当該プログラムＰ２−１の動作履歴に追加してもよい。また、図１１に示すように、実行状況取得部２１３は、最も長い処理時間ｔ３、２番目に長い処理時間ｔ１および３番目に長い処理時間ｔ２までを当該プログラムＰ２−１の動作履歴に登録することにしてもよい。このように、実行状況取得部２１３は、より好ましくない実行状況のみを動作履歴に登録してもよい。
【００９６】
以上、本開示の実施形態に係る動作履歴の更新の機能の詳細について説明した。続いて、本開示の実施形態に係るメタ情報の更新の機能の詳細について説明する。
【００９７】
＜１−７．メタ情報の更新の機能＞
図１２は、メタ情報の更新の機能の一例を示す図である。図１２に示すように、情報処理装置１０のメタ情報更新部２１４は、プログラムの動作履歴に基づいてメタ情報を更新してもよい。例えば、メタ情報更新部２１４は、プログラムの動作履歴に基づいて、プログラムの動作環境に関する情報を更新してもよい。
【００９８】
図１２に示した例では、プログラムＰ２−１の動作履歴に最も長い処理時間ｔ３が新たに追加されている。例えば、メタ情報更新部２１４は、処理時間ｔ３が追加される前と処理時間ｔ３が追加された後とにおいて、動作履歴に登録されている処理時間の平均値を比較すると、処理時間ｔ３が追加された後の平均値がより大きくなる。したがって、メタ情報更新部２１４は、例えば、ＣＰＵ負荷がより高い状況でプログラムＰ２−１を実行させるのが好ましいと判断し、ＣＰＵ負荷の下限値をｐ１からｐ１'に高めてもよい。ｐ１'の決定の手法は特に限定されないが、例えば、平均値に基づいて定められていてもよい。
【００９９】
例えば、上記した例では、メタ情報更新部２１４がプログラムの処理時間に基づいて動作環境に関する情報の一例としてのＣＰＵ負荷を更新する例を示したが、メタ情報更新部２１４によって更新される情報はＣＰＵ負荷に限定されない。例えば、メタ情報更新部２１４は、プログラムの処理時間が所定時間よりも長い場合には、そのプログラムのメタ情報に当該プログラムの提供を制限する旨を追加してもよい。
【０１００】
また、例えば、実行状況は、プログラム実行時におけるユーザのキャンセル操作の度合い（例えば、キャンセル操作頻度、キャンセル操作率など）であってもよい。かかる場合には、例えば、実行状況取得部２１３によってキャンセル操作の度合いが動作履歴として蓄積される。そのとき、例えば、メタ情報更新部２１４は、キャンセル操作の度合いが所定の度合いよりも大きい場合には、そのプログラムの満足度が低いと考えられるため、そのプログラムのメタ情報に当該プログラムの提供を制限する旨を追加してもよい。
【０１０１】
また、上記した例では、情報処理装置１０からサーバ装置２０にプログラムの実行状況としてプログラムの処理時間が出力されることとしたが、実行状況は、かかる例に限定されない。例えば、実行状況は、処理時間と動作環境との組み合わせであってもよい。かかる場合には、例えば、実行状況取得部２１３によって動作環境毎の処理時間が動作履歴として蓄積される。そのとき、例えば、メタ情報更新部２１４は、処理時間が所定時間よりも長い動作環境が存在する場合には、そのプログラムのメタ情報に当該動作環境に対するプログラムの提供を制限する旨を追加してもよい。
【０１０２】
また、例えば、実行状況は、プログラム実行時におけるエラー発生度合い（例えば、エラー発生頻度、エラー発生率など）と動作環境との組み合わせであってもよい。かかる場合には、例えば、実行状況取得部２１３によって動作環境毎のエラー発生度合いが動作履歴として蓄積される。そのとき、例えば、メタ情報更新部２１４は、エラー発生度合いが所定の度合いよりも大きい動作環境が存在する場合には、そのプログラムのメタ情報に当該動作環境に対するプログラムの提供を制限する旨を追加してもよい。
【０１０３】
また、例えば、実行状況には、プログラムが実行された時間帯または位置を示す情報が含まれていてもよい。かかる場合には、例えば、実行状況取得部２１３によってかかる情報が動作履歴として蓄積される。そのとき、例えば、メタ情報更新部２１４は、プログラムの実行状況を時間帯毎に解析することも可能であり、位置毎に解析することも可能である。また、メタ情報更新部２１４は、その解析結果に基づいて時間帯毎または位置毎にメタ情報を更新することができる。
【０１０４】
また、例えば、実行状況には、当該プログラムと直接的または間接的に結合されて実行された他のプログラム（例えば、当該プログラムと同時に動作するプログラム）を示す情報が含まれていてもよい。かかる場合には、例えば、実行状況取得部２１３によってかかる情報が動作履歴として蓄積される。そのとき、例えば、メタ情報更新部２１４は、プログラムの実行状況を当該他のプログラム毎に解析することも可能であり、当該他のプログラム毎に解析することも可能である。また、メタ情報更新部２１４は、その解析結果に基づいて当該他のプログラム毎にメタ情報を更新することができる。
【０１０５】
なお、ここでは、メタ情報更新部２１４がサーバ装置２０に組み込まれている例を示したが、情報処理装置１０が動作履歴を取得できる場合には、メタ情報更新部２１４は、情報処理装置１０に存在してもよい。また、メタ情報更新部２１４は、サーバ装置２０とは異なるサーバに組み込まれていてもよい。
【０１０６】
以上、本開示の実施形態に係るメタ情報の更新の機能の詳細について説明した。続いて、以下では、本開示の実施形態に係る情報処理システム１の動作の流れについて説明する。
【０１０７】
＜１−８．情報処理システムの動作例＞
図１３は、本開示の実施形態に係る情報処理システム１の動作の流れを示すフローチャートである。なお、図１３に示す動作は、本開示の実施形態に係る情報処理システム１の動作の一例を示したに過ぎないため、本開示の実施形態に係る情報処理システム１の動作の流れは、図１３に示した動作の流れに限定されない。
【０１０８】
図１３に示すように、まず、情報取得部１１１は、起動されているアプリケーションから機能情報を取得する（Ｓ１）。続いて、情報取得部１１１は、当該アプリケーションの動作環境を取得する（Ｓ２）。ここで、機能情報および動作環境の取得順序は特に限定されない。続いて、プログラム取得部１１２は、情報取得部１１１によって取得された機能情報および動作環境をサーバ装置２０に出力し（Ｓ３）、サーバ装置２０のプログラム検索部２１１は、機能情報および動作環境を取得する（Ｓ４）。
【０１０９】
続いて、プログラム検索部２１１は、機能情報および動作環境に応じたプログラムをメタ情報に基づいて検索し（Ｓ５）、プログラム提供部２１２は、プログラム検索部２１１による検索によって得られたプログラムを情報処理装置１０に出力する（Ｓ６）。続いて、情報処理装置１０のプログラム取得部１１２は、サーバ装置２０からプログラムを取得し（Ｓ７）、プログラム実行部１１３は、プログラム取得部１１２により取得されたプログラムを実行する（Ｓ８）。
【０１１０】
続いて、実行結果出力部１１４は、プログラム実行部１１３によるプログラムの実行結果をアプリケーションに出力し（Ｓ９）、実行状況出力部１１５は、プログラム実行部１１３によるプログラムの実行状況をサーバ装置２０に出力する（Ｓ１０）。続いて、サーバ装置２０の実行状況取得部２１３は、情報処理装置１０から実行状況を取得し（Ｓ１１）、メタ情報更新部２１４は、実行状況取得部２１３により取得された実行状況に基づいてメタ情報を更新する（Ｓ１２）。
【０１１１】
以上、本開示の実施形態について説明した。
【０１１２】
＜２．むすび＞
以上説明したように、本開示の実施形態によれば、アプリケーションの動作環境および前記アプリケーションから要求される機能を示す機能情報を取得する情報取得部と、前記動作環境および前記機能情報に応じたプログラムを取得するプログラム取得部と、を備える、情報処理装置が提供される。かかる構成によれば、アプリケーションが要求する機能を実現するためのプログラムをアプリケーションの動作環境を考慮して容易に取得するための技術が提供される。
【０１１３】
また、アプリケーションは、そのアプリケーションの動作環境を意識することなく要求する機能を実現することができる。さらに、アプリケーションは、要求する機能レベルを満たすプログラムを自動的に選択して実行することができる。アプリケーションが要求する機能が実現されない場合には、他のプログラムを取得して実行することができるため、アプリケーションの可用性を高くすることができる。さらに、プログラムの開発者は、アプリケーションを更新することなく機能を実現するためのプログラムの更新を行うことが可能である。
【０１１４】
なお、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【０１１５】
例えば、本明細書の情報処理システム１の動作における各ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はない。例えば、情報処理システム１の動作における各ステップは、フローチャートとして記載した順序と異なる順序で処理されても、並列的に処理されてもよい。
【０１１６】
また、情報処理装置１０に内蔵されるＣＰＵ、ＲＯＭおよびＲＡＭなどのハードウェアを、上述した情報処理装置１０の構成と同等の機能を発揮させるためのコンピュータプログラムも作成可能である。また、該コンピュータプログラムを記憶させた記憶媒体も提供される。
【０１１７】
同様に、サーバ装置２０に内蔵されるＣＰＵ、ＲＯＭおよびＲＡＭなどのハードウェアを、上述したサーバ装置２０の構成と同等の機能を発揮させるためのコンピュータプログラムも作成可能である。また、該コンピュータプログラムを記憶させた記憶媒体も提供される。
【０１１８】
なお、以下のような構成も本開示の技術的範囲に属する。
（１）
アプリケーションの動作環境および前記アプリケーションから要求される機能を示す機能情報を取得する情報取得部と、
前記動作環境および前記機能情報に応じたプログラムを取得するプログラム取得部と、
を備える、情報処理装置。
（２）
前記情報処理装置は、
前記プログラム取得部により取得されたプログラムを実行するプログラム実行部をさらに備える、
前記（１）に記載の情報処理装置。
（３）
前記情報処理装置は、
前記プログラム実行部によるプログラムの実行結果を前記アプリケーションに出力する実行結果出力部をさらに備える、
前記（２）に記載の情報処理装置。
（４）
前記プログラムは、前記機能情報に対応するプログラム群から前記動作環境と前記プログラム群を構成する各々のプログラムのメタ情報とに基づいて選択される、
前記（１）〜（３）のいずれか一項に記載の情報処理装置。
（５）
前記プログラム群を構成する各々のプログラムのメタ情報は、動作環境に関する情報と当該プログラムにより提供される機能を示す情報とを含む、
前記（４）に記載の情報処理装置。
（６）
前記プログラムの動作環境に関する情報は、当該プログラムの動作履歴に基づいて更新される、
前記（５）に記載の情報処理装置。
（７）
前記プログラム実行部による前記プログラムの実行状況は、前記プログラムの動作履歴に追加され、前記プログラムの動作履歴に基づいた前記プログラムのメタ情報の更新に利用される、
前記（６）に記載の情報処理装置。
（８）
前記プログラム取得部は、前記プログラムを取得するに際して、前記プログラムのメタ情報に基づいて関連プログラムを取得する、
前記（４）〜（７）のいずれか一項に記載の情報処理装置。
（９）
前記情報取得部は、機能レベルを取得し、
前記プログラム取得部は、前記機能レベルに応じたプログラムを取得する、
前記（１）〜（８）のいずれか一項に記載の情報処理装置。
（１０）
前記プログラム取得部は、前記情報取得部により複数のアプリケーションの各々から取得された機能情報が共通する場合には、当該各々のプログラムの取得動作の一部または全部を共通化する、
前記（１）〜（９）のいずれか一項に記載の情報処理装置。
（１１）
前記プログラム取得部は、前記情報取得部により複数のアプリケーションの各々から取得された機能情報が共通する場合には、前記情報取得部により複数のアプリケーションの各々から取得された機能レベルに基づいて、当該各々のプログラムの取得動作の一部または全部を共通化する、
前記（１）〜（９）のいずれか一項に記載の情報処理装置。
（１２）
前記プログラム取得部は、前記情報取得部により複数の機能情報が取得された場合、前記複数の機能情報の各々に関連付けられる優先度に基づいて、当該各々のプログラムを取得する、
前記（１）〜（１１）のいずれか一項に記載の情報処理装置。
（１３）
前記プログラム取得部は、前記プログラム実行部による前記プログラムの実行が失敗した場合に、前記プログラムとは別のプログラムを前記動作環境および前記機能情報に応じて取得し直す、
前記（２）に記載の情報処理装置。
（１４）
前記動作環境は、前記アプリケーションを動作させる前記情報処理装置の能力を示す情報を含む、
前記（１）〜（１３）のいずれか一項に記載の情報処理装置。
（１５）
前記動作環境は、前記アプリケーションを動作させる前記情報処理装置の状態を示す情報を含む、
前記（１）〜（１３）のいずれか一項に記載の情報処理装置。
（１６）
前記プログラム取得部は、前記アプリケーションを動作させる情報処理装置の状態が変化した場合に、前記プログラムとは別のプログラムを変化後の情報処理装置の状態および前記機能情報に応じて取得し直す、
前記（１５）に記載の情報処理装置。
（１７）
アプリケーションの動作環境および前記アプリケーションから要求される機能を示す機能情報を取得することと、
前記動作環境および前記機能情報に応じたプログラムを取得することと、
を含む、情報処理方法。
（１８）
アプリケーションの動作環境および前記アプリケーションから要求される機能を示す機能情報に応じたプログラムを検索するプログラム検索部と、
前記プログラム検索部による検索により得られたプログラムを提供するプログラム提供部と、
を備える、サーバ装置。
（１９）
アプリケーションの動作環境および前記アプリケーションから要求される機能を示す機能情報に応じたプログラムを検索することと、
検索により得られたプログラムを提供することと、
を含む、検索方法。
（２０）
情報処理装置とサーバ装置とを有し、
前記情報処理装置は、
アプリケーションの動作環境および前記アプリケーションから要求される機能を示す機能情報を取得する情報取得部を備え、
前記サーバ装置は、
前記動作環境および前記機能情報に応じたプログラムを検索するプログラム検索部と、
前記プログラム検索部による検索により得られたプログラムを前記情報処理装置に提供するプログラム提供部と、
を備える、情報処理システム。
【符号の説明】
【０１１９】
１      情報処理システム
１０    情報処理装置
２０    サーバ装置
３０    ネットワーク
１１０  制御部
１１１  情報取得部
１１２  プログラム取得部
１１３  プログラム実行部
１１４  実行結果出力部
１１５  実行状況出力部
１２０  入力部
１３０  通信部
１４０  記憶部
１５０  出力部
２１０  制御部
２１１  プログラム検索部
２１２  プログラム提供部
２１３  実行状況取得部
２１４  メタ情報更新部
２３０  通信部
２４０  記憶部
【図１】
0005949904.tif 000002
【図２】
0005949904.tif 000003
【図３】
0005949904.tif 000004
【図４】
0005949904.tif 000005
【図５】
0005949904.tif 000006
【図６】
0005949904.tif 000007
【図７】
0005949904.tif 000008
【図８】
0005949904.tif 000009
【図９】
0005949904.tif 000010
【図１０】
0005949904.tif 000011
【図１１】
0005949904.tif 000012
【図１２】
0005949904.tif 000013
【図１３】
0005949904.tif 000014