(57)【要約】【課題】  アプリケーションの使用環境に応じて、動的にアプリケーションを実行するプロセスを決定することを目的とする。【解決手段】  アプリケーションを実行するプロセスを管理し、アプリケーションの実行の履歴情報である実行履歴情報を取得し、取得したアプリケーションの実行履歴情報に基づいて、アプリケーションを実行するプロセスを決定し、前記アプリケーションを、前記決定されたプロセス上で実行する。【選択図】  図６
2020144448.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションを実行するプロセスを管理する管理手段と、
アプリケーションの実行の履歴情報である実行履歴情報を取得手段と、
前記取得したアプリケーションの実行履歴情報に基づいて、前記アプリケーションを実行するプロセスを決定する決定手段と、
前記アプリケーションを、前記決定されたプロセス上で実行する実行手段を有する情報処理装置。
【請求項２】
前記管理手段は、複数のプロセスを管理することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記決定手段は、前記アプリケーションを実行するプロセスを、前記管理手段で管理されている実行中のプロセスを選択するか、あるいは、新しいプロセスを生成し、生成されたプロセスを選択するかを、決定することを特徴とする請求項１又は請求項２に記載の情報処理装置。
【請求項４】
前記実行履歴情報は、アプリケーションのエラーに関する履歴情報を含み、
前記決定手段は、前記アプリケーションのエラーに関する履歴情報に基づいて、前記アプリケーションを実行するプロセスを決定することを特徴とする請求項１乃至３何れか１項に記載の情報処理装置。
【請求項５】
前記実行履歴情報から、前記アプリケーションのスコアを計算する計算手段をさらに有し、
前記決定手段は、前記計算されたスコアに基づいて、前記アプリケーションを実行するプロセスを決定することを特徴とする請求項１乃至４の何れか１項に記載の情報処理装置。
【請求項６】
前記スコアは、少なくとも、前記アプリケーションの安全性を考慮したスコアであることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記スコアは、少なくとも、前記アプリケーションの予測実行時間を考慮したスコアであることを特徴とする請求項５に記載の情報処理装置。
【請求項８】
前記スコアは、少なくとも、前記アプリケーション間の連携に関するスコアを考慮したスコアであることを特徴とする請求項５に記載の情報処理装置。
【請求項９】
アプリケーションを実行するプロセスを管理する情報処理装置の制御方法であって、
アプリケーションの実行の履歴情報である実行履歴情報を取得工程と、
前記取得したアプリケーションの実行履歴情報に基づいて、前記アプリケーションを実行するプロセスを決定する決定工程と、
前記アプリケーションを、前記決定されたプロセス上で実行する実行工程を有する情報処理装置の制御方法。
【請求項１０】
前記管理工程は、複数のプロセスを管理することを特徴とする請求項９に記載の情報処理装置の制御方法。
【請求項１１】
前記決定工程は、前記アプリケーションを実行するプロセスを、前記管理されている実行中のプロセスを選択するか、あるいは、新しいプロセスを生成し、生成されたプロセスを選択するかを、決定することを特徴とする請求項９又は請求項１０に記載の情報処理装置の制御方法。
【請求項１２】
前記実行履歴情報は、アプリケーションのエラーに関する履歴情報を含み、
前記決定工程は、前記アプリケーションのエラーに関する履歴情報に基づいて、前記アプリケーションを実行するプロセスを決定することを特徴とする請求項９乃至１１何れか１項に記載の情報処理装置の制御方法。
【請求項１３】
前記実行履歴情報から、前記アプリケーションのスコアを計算する計算工程をさらに有し、
前記決定工程は、前記計算されたスコアに基づいて、前記アプリケーションを実行するプロセスを決定することを特徴とする請求項９乃至１２の何れか１項に記載の情報処理装置の制御方法。
【請求項１４】
前記スコアは、少なくとも、前記アプリケーションの安全性を考慮したスコアであることを特徴とする請求項１３に記載の情報処理装置の制御方法。
【請求項１５】
請求項１乃至８の何れか１項に記載の情報処理装置としてコンピュータを機能させるための該コンピュータで読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションを実行するプロセスに関する。
【背景技術】
【０００２】
電子機器にはユーザの必要に応じてソフトウェアであるアプリケーションを追加・実行する仕組みが備わることがある。電子機器上のソフトウェアはＯＳ上のプロセスで実行される。アプリケーションをプロセスで実行する方法としては、ひとつのプロセスで複数のアプリケーションを実行する方式がある。また、電子機器には複数のプロセスを実行できるリソースを備えるものがあり、ひとつのアプリケーションが不正な処理を行っても他のアプリケーションに影響を与えないように、アプリケーションを実行するプロセスを分ける方法（特許文献１）がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１３４６９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１では、プロセスの分け方が自社製アプリケーション実行用プロセスと他社製アプリケーション実行用プロセスに固定されており、アプリケーションの使用環境に応じて、動的にプロセスを設定することができない。
【０００５】
本発明は上記の課題に鑑みてなされたものであり、アプリケーションの使用環境に応じて、動的にアプリケーションを実行するプロセスを決定する技術を提供する。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明の情報処理装置は、アプリケーションを実行するプロセスを管理する管理手段と、アプリケーションの実行の履歴情報である実行履歴情報を取得手段と、前記取得したアプリケーションの実行履歴情報に基づいて、前記アプリケーションを実行するプロセスを決定する決定手段と、前記アプリケーションを、前記決定されたプロセス上で実行する実行手段を有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、アプリケーションの使用環境に応じて、動的にアプリケーションを実行するプロセスを決定することが可能である。
【図面の簡単な説明】
【０００８】
【図１】情報管理装置のハードウェア構成の一例を示す概略図
【図２】情報管理装置上に構築するシステム構成の一例を示す模式図
【図３】アプリケーション管理フレームワーク２０３の構成を示す模式図
【図４】アプリケーション管理フレームワーク２０３とアプリケーション実行環境２０２を実行するプロセスの構成を示す模式図
【図５】実施形態１にかかるデバイス起動処理のフローチャート
【図６】実施形態１にかかるアプリケーション起動処理のフローチャート
【図７】実施形態１にかかるアプリケーション実行処理のフローチャート
【図８】実施形態１の変形例１にかかるアプリケーション起動処理のフローチャート
【図９】実施形態２にかかるアプリケーション起動処理のフローチャート
【図１０】実施形態３にかかるアプリケーション起動処理のフローチャート
【図１１】実施形態３にかかる安全性に基づく加点処理のフローチャート
【図１２】実施形態３にかかる予測実行時間に基づく加点処理のフローチャート
【図１３】実施形態３にかかるアプリ間の連携に基づく加点処理のフローチャート
【図１４】実施形態１にかかるアプリケーションのリスト
【図１５】実施形態１にかかるアプリケーションの実行履歴管理テーブル
【図１６】実施形態１にかかるプロセス管理テーブル
【図１７】実施形態１の変形例１にかかるアプリケーション実行処理のフローチャート
【図１８】実施形態１の変形例１にかかるアプリケーションの実行履歴管理テーブル
【図１９】実施形態２にかかるアプリケーションの連携履歴管理テーブル
【図２０】実施形態２にかかるアプリケーション実行処理のフローチャート
【図２１】実施形態３にかかるプロセスへの加点を集計するテーブル
【図２２】実施形態１の変形例２にかかるアプリケーション起動処理のフローチャート
【発明を実施するための形態】
【０００９】
以下、添付の図面を参照して、本発明の好適な実施形態を詳細に説明する。
【００１０】
＜実施形態１＞
図１は、一般的な情報管理装置（情報処理装置）１０１のハードウェア構成の一例を示す図である。図１に示されるように情報管理装置１０１は、ハードウェア構成として、ＣＰＵ１１を含む。
【００１１】
ＣＰＵ１１が、記憶装置１３に記憶されている後述するアプリケーションやプログラム実行環境等の各々に対応するプログラムに基づき処理を行うことによって、後述する各機能、又はフローチャートを実現する。
【００１２】
また、ＣＰＵ１１には、バス１０を介して、入力装置１２、記憶装置１３、表示装置１４及び外部接続ＩＦ１５が接続されている。入力装置１２は、情報を入力するキーボード及び／又はマウスである。記憶装置１３は、例えば、ＲＯＭ、ＲＡＭ、ハードディスク装置等を含み、上述した各プログラム以外に、プログラムに基づく処理で用いられるデータ等を記憶する。表示装置１４は、画面等を表示するディスプレイである。外部接続ＩＦ１５は、ネットワークインタフェース、外部機器との各種接続インタフェースである。
【００１３】
尚、ＣＰＵ１１はプログラムを実行することで各種の手段として機能することが可能である。なお、ＣＰＵ１１と協調して動作するＡＳＩＣなどの制御回路がこれらの手段として機能してもよい。また、ＣＰＵ１１と情報管理装置１０１の動作を制御する制御回路との協調によってこれらの手段が実現されてもよい。また、ＣＰＵ１１は単一のものである必要はなく、複数であってもよい。この場合、複数のＣＰＵ１１は分散して処理を実行することが可能である。また、複数のＣＰＵ１１は単一のコンピュータに配置されていてもよいし、物理的に異なる複数のコンピュータに配置されていてもよい。なお、ＣＰＵ１１がプログラムを実行することで実現する手段が専用の回路によって実現されてもよい。
【００１４】
次に、情報管理装置１０１上に構築するシステム構成について、図２を用いて説明する。図２は、情報管理装置１０１のシステム構成の一例を示す図である。
【００１５】
オペレーティングシステム２０１は、システム全体の基盤となるソフトウェアである。オペレーティングシステム２０１上で動作するソフトウェアは、プロセスという単位で実行され、管理される。アプリケーション実行環境２０２は、例えば仮想マシンのように、オペレーティングシステム２０１上のプロセスでありながら、自身の上でアプリケーションが動作する環境を提供するソフトウェアである。
【００１６】
アプリケーション管理フレームワーク２０３は、アプリケーション２０４の動作状態を管理する機能をもつ。また、アプリケーション管理フレームワークはアプリケーション間のデータ共有やアプリケーションが提供するサービスの共有といった、アプリケーション間の連携を実現する仕組みをもつ。この仕組みは、ＯＳＧｉ  Ｓｅｒｖｉｃｅ  Ｐｌａｔｆｏｒｍ（以降ＯＳＧｉと記す）のＩＦをベースとする。ＯＳＧｉは、ひとつのプロセス上で複数のアプリケーションを管理する仕様である。ひとつのプロセスだけで複数のアプリケーションを動かすことで、組み込み機器でも省リソースで多くの機能を実現できる特徴がある。
【００１７】
このＩＦをＪａｖａ（登録商標）言語のＲｅｍｏｔｅ  Ｍｅｔｈｏｄ  Ｉｎｖｏｃａｔｉｏｎ（ＲＭＩ）やプロセス間通信で実装することで、プロセスをまたいだアプリケーション間の連携の仕組みを実現する。これにより、アプリケーションは、連携したいアプリケーションが同一プロセス上であるかどうかを意識することなくＯＳＧｉのＩＦを利用するだけで、他のアプリケーションと連携することができる。
【００１８】
図４のアプリケーション管理フレームワーク２０３とアプリケーション実行環境２０２を実行するプロセスの構成を示す図で実装の例を説明する。図４では３つのプロセスが実行中の例を示している。アプリケーション管理フレームワーク２０３は、プロセス間でのアプリケーション間の連携を行う部分と、プロセス内でのアプリケーション間の連携を行う部分で構成される。
【００１９】
また、アプリケーション管理フレームワーク２０３は、アプリケーション実行時に他のプロセス上で動作しているアプリケーション管理フレームワーク２０３に指示を出すことや、新たにプロセスを生成することも行う。各プロセスではアプリケーション実行環境２０２が実行される。また、既存のプロセスで新しいアプリケーション２０４を起動する際には、そのプロセス上のアプリケーション管理フレームワーク２０３で起動の処理が行われる。
【００２０】
具体的に、本実施形態におけるアプリケーション実行環境２０２はＪＲＥ（Ｊａｖａ  Ｒｕｎｔｉｍｅ  Ｅｎｖｉｒｏｎｍｅｎｔ）とする。ＪＲＥとは、Ｊａｖａ（登録商標）言語で開発されたソフトウェアを実行するために必要なソフトウェアのセットである。ＪＲＥは、クラスライブラリ、ＪａｖａＶＭ（Ｊａｖａ言語にて記述されたアプリケーションを実行するためのソフトウェア）を含む。
【００２１】
すべてのアプリケーションをそれぞれ異なるプロセスで実行すると、アプリケーション数が増加した場合に情報管理装置１０１のメモリ量が不足してしまう。また、プロセスの生成には時間もかかるため、情報管理装置１０１の応答性能が低下することもある。そこで、アプリケーションを実行するプロセスをどのように選択するかが課題となる。
【００２２】
プロセスを分ける目的は、消費するリソースを削減しつつ、予期せぬ動作や不具合を行う可能性が低い、つまり、安全性の高いアプリケーションが、他のアプリケーションの予期せぬ動作や不具合によって受ける影響を小さくすることである。安全性の高いアプリケーションは、他の安全性の高いアプリケーションと同じプロセス上で実行しても、予期せぬ動作を行う可能性が低いため、問題になることが少ない。
【００２３】
そこで、アプリケーション２０４の安全性にもとづいて、アプリケーション管理フレームワーク２０３がアプリケーション２０４を実行するプロセスの選択、またはプロセスの生成を行う実施形態を説明する。
【００２４】
図３はアプリケーション管理フレームワーク２０３が備える機能を示す図である。アプリケーション２０４は、アプリケーションの名前やベンダーなどの静的な属性情報を記載したマニフェストファイルを含む。アプリケーション管理フレームワーク２０３は、このマニフェストファイルの情報を取得するための属性情報取得手段３０１を備える。実行履歴情報を管理する実行履歴管理手段３０２については、後述する。また、アプリケーション管理フレームワーク２０３は、アプリケーション２０４を新規に生成したプロセスで実行するためのプロセス管理手段３０３を備えている。また、アプリケーション管理フレームワーク２０３は、実行するアプリケーションのスコアを計算するスコア計算手段３０４を備える。スコア計算手段３０４の詳細については、後述する。また、アプリケーション管理フレームワーク２０３は、アプリケーション２０４のインストール、起動、停止、アップデートを制御するアプリケーション管理手段３０５を備える。
【００２５】
はじめに、デバイスが起動するときのアプリケーション管理フレームワーク２０３の動作について、図５を用いて説明する。図５は、デバイスの起動処理の流れを示すフローチャートである。
【００２６】
デバイスの起動が開始されると、アプリケーション管理フレームワーク２０３は、インストール済みのアプリケーションのリストであるアプリケーションリストを読み込む（Ｓ５０１）。アプリケーションリストの例を図１４に示す。アプリケーションリストにはアプリケーション２０４を識別できるアプリ名と、そのアプリケーションをデバイス起動時に起動するべきかの情報が記載されている。
【００２７】
そして、アプリケーション管理フレームワーク２０３は、リスト内に起動するアプリがあるかどうかを確認する（Ｓ５０２）。起動するアプリがある場合は、リストの上位から未起動のアプリケーションを起動対象として選択する（Ｓ５０３）。そして、選択したアプリケーションの起動を開始する（Ｓ５０４）。Ｓ５０４の詳細については後述する。Ｓ５０２において起動すべきアプリが残っていなければ、デバイスの起動処理は終了する。
【００２８】
次にＳ５０４の詳細として、アプリケーション管理フレームワーク２０３がアプリケーション２０４を起動する処理を、図６のアプリケーション起動処理のフローチャートを用いて説明する。起動対象のアプリケーション２０４をアプリＸと記述する。
【００２９】
アプリケーション管理フレームワーク２０３は、アプリＸの起動を開始すると、アプリＸの実行履歴を読み込む（Ｓ６０１）。アプリの実行履歴を管理するテーブルを、図１５に示す。
【００３０】
実行履歴から、アプリＸのスコアを計算する（Ｓ６０２）。本実施形態では、スコアはアプリの安全性に関する値を用いる。具体的には、今までに実行した時間と発生したエラー回数から、エラーの発生率を求める。スコアが高いほど安全という意味になるように、「１−エラー発生率」をスコアとする。もし、アプリＸの実行履歴がない場合は、安全のためにスコアを０とする。尚、エラー発生率の求め方やスコアの求め方は一例であり、他の求め方でもよい。
【００３１】
そして、求めたスコアがしきい値以上であるかを確認する（Ｓ６０３）。しきい値はデバイスの設定画面などから指定できるものとする。本実施形態の場合、しきい値を０．９５とすると、１時間実行しても９５％以上の確率で安全なアプリケーションであるかを確認することになる。
【００３２】
Ｓ６０３でしきい値未満の場合、他のアプリケーションと同じプロセスで動かすと、そのプロセス上のアプリケーションまでエラーに巻き込まれるリスクがある。そのため、しきい値以下ならば、実行用に新しいプロセスを生成する（Ｓ６０７）。
【００３３】
アプリケーション管理フレームワーク２０３は生成したプロセスを管理する。管理に用いるテーブルの例を図１６に示す。プロセス管理テーブルには、プロセスを識別するためのプロセスＩＤ、そのプロセスで実行中のアプリケーション、そのプロセスで動かしているアプリケーションがしきい値以上かどうかを示す情報がある。このプロセス管理テーブルはデバイス起動時に毎回空の状態で新規に作成する。
【００３４】
プロセスを生成すると、プロセス管理テーブルを更新する。そして、生成したプロセスを、アプリＸを実行するプロセスとして選択する（Ｓ６０８）。そして、選択したプロセス上でアプリＸを実行する（Ｓ６０６）。Ｓ６０６の詳細については後述する。
【００３５】
Ｓ６０４でしきい値以上の場合、アプリＸはほかのアプリと一緒にひとつのプロセスで動かしても他プリからの受ける可能性が少ないといえる。そこで、しきい値以上のアプリを実行中のプロセスがあるかを確認する（Ｓ６０４）。プロセスがなければ、Ｓ６０７でプロセスを生成する。しきい値以上のアプリを実行中のプロセスがあれば、アプリＸを実行するプロセスとして選択する（Ｓ６０５）。そして、Ｓ６０６でアプリＸを実行する。
【００３６】
次に、Ｓ６０６の詳細について、図７と図１５を用いて説明する。図７はアプリケーションの実行処理のフローチャートである。
【００３７】
アプリケーション管理フレームワーク２０３は、アプリの実行履歴からアプリＸの最終状態が起動中かどうかを確認する（Ｓ７０１）。アプリＸが正常に終了していれば、最終状態は停止中のはずである。しかし、前回のアプリＸの実行中に予期せぬエラーでプロセスがクラッシュした場合、最終状態が起動中のままとなる。その場合、実行履歴のエラー回数が更新できていないので、エラー回数を更新する（Ｓ７０２）。
【００３８】
そして、実行を開始する前に、実行履歴の最終状態を起動中に更新する（Ｓ７０４）。これにより、実行中にエラーが生じてプロセスが停止してしまっても、次回の実行時にエラー回数を正しく更新できる。
【００３９】
そして、プロセス管理テーブルの実行中のアプリに、アプリＸを追加する（Ｓ７０５）。そして、アプリＸを実行する（Ｓ７０６）。アプリの実行中にエラーが発生したかどうかは、アプリケーション管理フレームワーク２０３が随時確認している（Ｓ７０７）。また、アプリＸの停止の指示も、随時確認している（Ｓ７０８）。このように、アプリＸはアプリケーション管理フレームワーク２０３に監視された状態で、エラーか停止の指示があるまで、実行され続ける。
【００４０】
Ｓ７０７でエラーが発生した場合、アプリケーション管理フレームワーク２０３は実行履歴のエラー回数を更新する（Ｓ７０９）。そして、実行履歴の実行時間に、アプリＸが実行されていた時間を加算して更新する（Ｓ７１０）。そして、実行履歴の最終状態を停止中に更新する（Ｓ７１１）。そして、プロセス管理テーブルからアプリＸを消去する（Ｓ７１２）。
【００４１】
Ｓ７０８でアプリＸの停止が指示されると、アプリケーション管理フレームワーク２０３はアプリＸを停止する（Ｓ７０３）。
【００４２】
以上、アプリケーション管理フレームワーク２０３がアプリケーション２０４を起動するときの処理の手順について説明した。なお、本実施形態ではスコアの計算に実行履歴すべてを用いたが、履歴を月単位や週単位に分割して管理し、最近の履歴だけを使ってスコアを計算してもよい。
【００４３】
本実施形態によれば、アプリケーション実行のために消費するリソース量を削減しつつ、アプリケーションが、他のアプリケーションの不具合によって受ける影響を小さくすることが可能となる。具体的に説明すると、同じプロセスで実行されている安全性が高いアプリケーションは、不具合の可能性が高い、つまり、安全性が低いアプリケーションの影響を受けることがなくなる。さらに、複数のアプリケーションを実行するプロセスをすべて異なるものにすると、プロセスごとにリソースを消費するが、安全性の高いアプリケーションは同じプロセスにすることで、リソース量を削減することができる。
【００４４】
本実施形態によれば、プロセス決定に履歴を用いることで、ユーザごとにアプリケーションの使い方が異なる環境においても、アプリケーションの実行に要するリソース量を削減しつつ安全性が高いアプリケーションの実行が可能となる。
【００４５】
＜実施形態１の変形例１＞
実施形態１では、安全なアプリケーションであるかを判定するために、エラー回数と実行時間を用いた。しかし、例えば、単位時間あたりのエラー率が低くても、長時間実行されるアプリケーションならば、いずれエラーが発生すると予測されるので、独立したプロセスで実行することが好ましい。
【００４６】
そこで、アプリケーションの実行時間も考慮して、実行するプロセスを決定する例を、実施形態１の変形例１として説明する。以下、実施形態１と同じ構成や処理については説明を省略する。
【００４７】
図８は、アプリケーションを起動する処理の流れを示すフローチャートである。図１７は、アプリケーションを実行する処理の流れを示すフローチャートである。図１８はアプリの実行履歴を管理するテーブルである。
【００４８】
図８は、Ｓ８０１、Ｓ８０２以外、図６と同じである。Ｓ８０１は、アプリＸが一時的なアプリであるかを確認する。この確認は、実行履歴を管理するテーブルの起動回数と実行時間から、１起動あたりの平均実行時間を算出し、平均実行時間が所定の時間より短いかを比較して行う。平均実行時間が所定の時間より短い場合は、アプリＸが一時的なアプリであるであると判定する。尚、一時的なアプリであるかどうかの判定方法は、一例であり、例えば、実行時間で判定してもよい。
【００４９】
Ｓ８０２の詳細について、図１７と図１８を用いて説明する。図７はアプリケーションの実行処理のフローチャートである。図１８は、Ｓ１７０１以外、図７と同じである。Ｓ１７０１は、図１８のアプリの実行履歴を管理するテーブルにおいて、実行履歴の起動回数を更新する。
【００５０】
＜実施形態１の変形例２＞
実施形態１では、スコアがしきい値以上でなければ、新しいプロセスを生成する例を示した。実施形態１の変形例２では、スコアがしきい値以上でなくても、しきい値みかんの青プリを実行するプロセスがあれば、そのプロセスを選択する例を示す。実施形態１の変形例２は、生成されるプロセスが２つまでになり、リソース制限が厳しい場合に有効である。そして、安全性の高いアプリケーションは同じプロセスで実行することで、少なくとも、安全性が高いアプリケーションは、安全性が低いアプリケーションからの影響を受けることはなくなる。以下、実施形態１と同じ構成や処理については説明を省略する。
【００５１】
図２２は、Ｓ２２０１は、しきい値未満のアプリを実行中のプロセスがあるかどうかを判定する。Ｓ２２０１で、あると判定された場合はＳ２２０２に進み、ないと判定された場合はＳ６０７へ進む。プロセス管理テーブルは、図１６と同様であるが、本変形例では、生成されるプロセスが２つまでという点が異なる。
【００５２】
本変形例によれば、リソース制限が厳しい場合であっても、アプリケーションが、他のアプリケーションの不具合によって受ける影響を小さくすることが可能となる。
【００５３】
＜実施形態２＞
アプリケーション管理フレームワーク２０３が管理するアプリケーション２０４は、他のアプリケーションと連携して動作することもある。たとえば、ログインを管理するログインアプリと連携して、ログイン済みのユーザだけに機能を提供することがある。連携する場合はアプリケーション２０４間でデータのやり取りが発生するため、同一プロセスでこれらのアプリケーションが動作する方が、パフォーマンスが向上する。
【００５４】
ＯＳＧｉの仕様では、アプリケーションは他のアプリケーションが提供する機能（ＡＰＩ）を利用できる。そのためには、アプリケーション２０４のマニフェストに、連携対象のアプリケーションを記載する。しかし、連携するかどうかの２択では、プロセスを選択する情報として不十分である。アプリケーションが起動時に一度だけ連携する場合、別プロセスで動作してもパフォーマンスへの影響は少ない。しかし、実行中に何度も連携する場合、別プロセスで実行するとパフォーマンスに影響しうる。
【００５５】
そこで、他のアプリケーションとの連携の強さによって、実行するプロセスを選択する例を、実施形態２として説明する。
【００５６】
図９はアプリＸの起動の処理の流れを示すフローチャートである。図１９は、アプリケーションの連携履歴を管理するテーブルである。図９は、Ｓ９０１、Ｓ９０２、Ｓ９０３、９０４以外は、図７の各ステップと同じである。
【００５７】
Ｓ９０１は、アプリケーションＸの連携履歴を読み込み、Ｓ９０２は、アプリＸと他のアプリとの連携スコアを計算する。計算方法の一例は、ＡＰＩ実行回数÷起動時間とする。しきい値は、予め設定された値とする。ここでは、例えば２０とする。Ｓ９０３は、しきい値以上で最も高い連携スコアをもつ他のアプリを実行中のプロセスがあるかを確認する実行中のプロセスがあれば、Ｓ６０５へ、なければ、Ｓ６０７へ進む。Ｓ９０４は、アプリＸの実行を行う。
【００５８】
次に、Ｓ９０４の詳細について、図２０を用いて説明する。図２０は、アプリＸの実行の処理の流れを示すフローチャートである。Ｓ２００１では、アプリケーション管理フレームワーク２０３が、アプリＸが他のアプリのＡＰＩを利用したかどうか判定する。Ｓ２００２は、アプリＸが他のアプリのＡＰＩを実行するたびに、連携履歴テーブルを更新する。
【００５９】
以上、他のアプリケーションとの連携の強さによって実行するプロセスを選択する実施形態を説明した。なお、実際の環境では、デバイスにログインするアカウントごとにアプリケーションの使い方が異なるため、連携する他のアプリケーションが変わることもある。そのため、図１９に示した連携履歴は一つのテーブルで管理するのではなく、ログインしたユーザごとにテーブルを作ってもよい。
【００６０】
実施形態２の変形例として、実施形態１の変形例２と同様に、生成されるプロセスが２つまでにするようにしてもよい。
【００６１】
＜実施形態３＞
実施形態１では安全性、実施形態１の変形例では実行時間、実施形態２では他のアプリケーションとの連携の強さによって、実行するプロセスを選択した。これらを総合的に評価して実行するプロセスを選択する例を、実施形態３として説明する。図２１は、プロセスの選択のための点数を管理するテーブルの例である。
【００６２】
図１０はアプリケーションを起動する処理の流れを示すフローチャートである。起動を開始すると、Ｓ６０１と同様に実行履歴を読み込む（Ｓ１００１）。そして、安全性に基づいて、実行候補のプロセスに加点する（Ｓ１００２）。図２１の例では、プロセスＰ１に加点している。Ｓ１００１の処理の詳細については後述する。
【００６３】
そして、予測実行時間に基づいて、実行候補のプロセスに加点する（Ｓ１００３）。そして、他のアプリケーションとの連携に基づいて、加点する（Ｓ１００４）。Ｓ１００３，Ｓ１００４の詳細については後述する。
【００６４】
そして、加点が最も多いプロセスを選択し（Ｓ１００５）、選択したプロセスが新規プロセスかを確認する（Ｓ１００６）。新規プロセスならば、Ｓ６０７と同様に新しいプロセスを生成する（Ｓ１００７）。そして、Ｓ９０５と同様にアプリケーションを実行する（Ｓ１００８）。
【００６５】
次に、Ｓ１００２の詳細について説明する。図１１はＳ１００２の処理のフローチャートである。まず、Ｓ６０２と同様にスコアを計算する（Ｓ１１０１）。そして、Ｓ６０３，Ｓ６０４と同様にスコアとプロセスの確認を行う（Ｓ１１０２，Ｓ１１０３）。そして、Ｓ１１０３で実行中のプロセスがあれば、実行中のプロセスに加点する（Ｓ１１０４）。Ｓ１１０３で実行中のプロセスがなければ、新しいプロセスに加点する（Ｓ１１０５）。図２１の例では、Ｎ１プロセスへの加点となる。
【００６６】
次に、Ｓ１００３の詳細について説明する図１２はＳ１００３の処理のフローチャートである。まず、Ｓ８０２と同様にアプリＸのスコアを計算する（Ｓ１２０２）。そして、Ｓ８０３，Ｓ８０４，Ｓ８０５と同様に一時的に利用されるアプリか、スコアがしきい値以上か、しきい値以上のアプリを実行中のプロセスがあるかを確認する（Ｓ１２０３，Ｓ１２０４，Ｓ１２０５）。実行中のプロセスがあれば、そのプロセスに加点する（Ｓ１２０６）。プロセスがなければ、新しいプロセスに加点する（Ｓ１２０７）。
【００６７】
次に、Ｓ１００４の詳細について説明する。図１３はＳ１００４の処理のフローチャートである。まず、Ｓ９０８と同様に、連携履歴を読み込む（Ｓ１３０５）。そして、Ｓ９０と同様に連携スコアを計算する（Ｓ１３０１）。そして、連携対象アプリを実行中のプロセスがあるかを確認する（Ｓ１３０２）。そして、プロセスがあれば、そのプロセスに加点する（Ｓ１３０３）。加える点数について、一つのプロセスだけに限って加点する必要はない。ただし、連携スコアのとりえる値は、ほかのスコアと同等に扱うために、０から１までの値に正規化することが好ましい。Ｓ１３０２で、プロセスがひとつもなければ、新しいプロセスに加点する（Ｓ１３０４）。
【００６８】
実施形態３の変形例として、実施形態１の変形例２と同様に、生成されるプロセスが２つまでにするようにしてもよい。その場合は、図２２と同様に、しきい値以上のアプリを実行するためのプロセスと閾値未満のアプリを実行するためのプロセスとを生成するようにすればよい。
【００６９】
＜その他の実施形態＞
以上説明した実施形態１〜３では、アプリケーションの実行履歴から安全性のスコアを求めた。しかし、実行履歴以外の情報を使う方法もある。具体的には、アプリケーションが使うＡＰＩである。ＡＰＩには、エラーが起きやすいものがある。特にＪＮＩ（Ｊａｖａ  Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ）は、Ｃ言語で直接メモリやスタックを操作できるため、エラーが発生しやすい。また、ネットワーク系のＡＰＩも、予期せぬ通信遅延でエラーが発生しやすい。
【００７０】
アプリケーション管理フレームワーク２０３は、アプリケーション管理手段３０５を用いてアプリケーション２０４の実行ファイルを解析することで、エラーが発生しやすいＡＰＩを利用しているかどうかを実行前に確認できる。エラーが発生しやすいＡＰＩを利用している場合は、Ｓ６０２におけるスコアを必ず０にすることで、より安全にアプリケーションを実行できる。
【００７１】
以上説明した実施形態によれば、環境に応じてプロセス設定することで、ユーザごとにアプリケーションの使い方が異なる環境においても、安全性やパフォーマンスを考慮したプロセス設定を行うことができる。
【００７２】
以上、実施形態例を詳述したが、本発明は例えば、システム、装置、方法、プログラム若しくは記録媒体（記憶媒体）等としての実施態様をとることが可能である。具体的には、複数の機器（例えば、ホストコンピュータ、インタフェース機器、撮像装置、ｗｅｂアプリケーション等）から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【００７３】
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのプログラムコード（コンピュータプログラム）を記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給する。係る記憶媒体は言うまでもなく、コンピュータ読み取り可能な記憶媒体である。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【図１】
2020144448.tif 000003
【図２】
2020144448.tif 000004
【図３】
2020144448.tif 000005
【図４】
2020144448.tif 000006
【図５】
2020144448.tif 000007
【図６】
2020144448.tif 000008
【図７】
2020144448.tif 000009
【図８】
2020144448.tif 000010
【図９】
2020144448.tif 000011
【図１０】
2020144448.tif 000012
【図１１】
2020144448.tif 000013
【図１２】
2020144448.tif 000014
【図１３】
2020144448.tif 000015
【図１４】
2020144448.tif 000016
【図１５】
2020144448.tif 000017
【図１６】
2020144448.tif 000018
【図１７】
2020144448.tif 000019
【図１８】
2020144448.tif 000020
【図１９】
2020144448.tif 000021
【図２０】
2020144448.tif 000022
【図２１】
2020144448.tif 000023
【図２２】
2020144448.tif 000024