(57)【要約】【課題】アプリのライフサイクル管理をより柔軟に行うことを可能とする。【解決手段】処理手段を介してアプリケーションに関する処理を実行する情報処理装置において、アプリケーションに関する処理を指示する設定ジョブを取得する取得手段と、処理手段が設定ジョブに含まれる処理の操作権限を有しているか否かを判定する判定手段と、判定手段により処理手段が設定ジョブに含まれる所定の処理の操作権限を有していないと判定された場合、所定の処理の操作権限を処理手段に委譲する委譲手段と、委譲手段により所定の処理の操作権限が委譲された処理手段による所定の処理の完了後、処理手段から所定の処理の操作権限を剥奪する剥奪手段と、を有する。【選択図】図１１
2017073035.tif 000002
【特許請求の範囲】
【請求項１】
処理手段を介してアプリケーションに関する処理を実行する情報処理装置であって、
アプリケーションに関する処理を指示する設定ジョブを取得する取得手段と、
前記処理手段が前記設定ジョブに含まれる処理の操作権限を有しているか否かを判定する判定手段と、
前記判定手段により前記処理手段が前記設定ジョブに含まれる所定の処理の操作権限を有していないと判定された場合、前記所定の処理の操作権限を前記処理手段に委譲する委譲手段と、
前記委譲手段により前記所定の処理の操作権限が委譲された前記処理手段による前記所定の処理の完了後、前記処理手段から前記所定の処理の操作権限を剥奪する剥奪手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記判定手段は、前記アプリケーションが、前記所定の処理が禁止された第１種のアプリケーション、所定の条件に応じて前記所定の処理が可能な第２種のアプリケーション、条件によらず前記所定の処理が可能な第３種のアプリケーション、の何れであるかを判定し、
前記処理手段は、前記アプリケーションのタイプが前記第１種のアプリケーションである場合は、前記委譲手段による前記所定の処理の操作権限の委譲を行うことなく前記所定の処理をエラー終了し、前記アプリケーションのタイプが前記第２種のアプリケーションである場合は、前記委譲手段による前記所定の処理の操作権限の委譲を行い前記所定の処理を実行し、前記アプリケーションのタイプが前記第３種のアプリケーションである場合は、前記委譲手段による前記所定の処理の操作権限の委譲を行うことなく前記所定の処理を実行する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記所定の条件は、予め用意された一時許可リストに、前記アプリケーションに対する前記所定の処理が含まれていることである
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記所定の条件は、予め用意された一時許可リストに、前記処理手段による前記アプリケーションに対する前記所定の処理が含まれていることである
ことを特徴とする請求項２に記載の情報処理装置。
【請求項５】
前記所定の条件は、前記情報処理装置が前記アプリケーションのライセンスを有していることを更に含む
ことを特徴とする請求項３又は４に記載の情報処理装置。
【請求項６】
前記取得手段は、前記情報処理装置を管理する管理装置に定期的にポーリングすることで前記設定ジョブを取得する
ことを特徴とする請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項７】
前記取得手段がユーザによる入力を介して前記設定ジョブを取得した場合に、前記情報処理装置に前記ユーザの権限をログインコンテキストに基づいて決定する決定手段を更に有し、
前記所定の条件は、前記ユーザの権限が所定の権限を有していることを更に含む
ことを特徴とする請求項２乃至５の何れか１項に記載の情報処理装置。
【請求項８】
前記所定の処理は、前記アプリケーションのインストール処理及びアップデート処理を含む
ことを特徴とする請求項１乃至７の何れか１項に記載の情報処理装置。
【請求項９】
処理手段を介してアプリケーションに関する処理を実行する情報処理装置の制御方法であって、
アプリケーションに関する処理を指示する設定ジョブを取得する取得工程と、
前記処理手段が前記設定ジョブに含まれる処理の操作権限を有しているか否かを判定する判定工程と、
前記判定工程により前記処理手段が前記設定ジョブに含まれる所定の処理の操作権限を有していないと判定された場合、前記所定の処理の操作権限を前記処理手段に委譲する委譲工程と、
前記委譲工程により前記所定の処理の操作権限が委譲された前記処理手段による前記所定の処理の完了後、前記処理手段から前記所定の処理の操作権限を剥奪する剥奪工程と、
を含むことを特徴とする情報処理装置の制御方法。
【請求項１０】
コンピュータを、請求項１乃至８の何れか１項に記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置におけるアプリケーションの管理技術に関するものである。
【背景技術】
【０００２】
近年、画像形成装置においては、ＪＡＶＡ（登録商標）環境に代表されるようなアプリケーション（以降、単に「アプリ」と呼ぶ）動作環境が提供されている。ＪＡＶＡ（登録商標）の持つプログラムの可搬性を利用して、拡張可能なアプリを提供する技術が提案されている。画像形成装置の機能やユーザビィリティの向上を図るために、ＪＡＶＡ（登録商標）環境などの環境下で動作するアプリを作成し、画像形成装置にインストールすることで、当該アプリにより画像形成装置において所望の機能を実現できる。
【０００３】
アプリプラットフォームとしては、組み込み機器向けのＪＡＶＡ（登録商標）アプリプラットフォームである、ＯＳＧｉ（Open Services Gateway Initiative）が知られている（非特許文献１）。ＯＳＧｉでは、ソフトウェアモジュールの管理単位として“バンドル”を定義しており、インストール／開始／停止／更新／アンインストールからなるライフサイクルを管理するための仕様を定義している。ここで、バンドルとは、ＪＡＶＡ（登録商標）モジュールのことを指し、本発明においては、アプリと同義である。このようなアプリプラットフォームは、コピー、スキャン、プリント等の組み込み機能やアプリのライフサイクル管理機能をＡＰＩ（Application Programming Interface）として提供する。アプリは適切な権限（Permission）が与えられていれば、それらのＡＰＩを利用することができる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】「ＯＳＧｉ Ｓｅｒｖｉｃｅ Ｐｌａｔｆｏｒｍ，Ｒｅｌｅａｓｅ４」，ｈｔｔｐ：／／ｗｗｗ．ｏｓｇｉ．ｏｒｇ／Ｄｏｗｎｌｏａｄ／Ｒｅｌｅａｓｅ４Ｖ４０，２００５年１０月
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述の従来技術においては、アプリ毎にライフサイクル管理をおこなうアプリを制限することが出来ないという問題がある。また、ライフサイクル管理の権限を持つアプリが、権限を持たないアプリの提供するライフサイクル管理用のＡＰＩを利用することが出来ないという問題がある。
【０００６】
本発明は、このような問題に鑑みてなされたものであり、アプリのライフサイクル管理をより柔軟に行うことを可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述の問題点を解決するため、本発明に係る情報処理装置は以下の構成を備える。すなわち、処理手段を介してアプリケーションに関する処理を実行する情報処理装置において、アプリケーションに関する処理を指示する設定ジョブを取得する取得手段と、前記処理手段が前記設定ジョブに含まれる処理の操作権限を有しているか否かを判定する判定手段と、前記判定手段により前記処理手段が前記設定ジョブに含まれる所定の処理の操作権限を有していないと判定された場合、前記所定の処理の操作権限を前記処理手段に委譲する委譲手段と、前記委譲手段により前記所定の処理の操作権限が委譲された前記処理手段による前記所定の処理の完了後、前記処理手段から前記所定の処理の操作権限を剥奪する剥奪手段と、を有する。
【発明の効果】
【０００８】
本発明によれば、アプリのライフサイクル管理をより柔軟に行うことを可能とする技術を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】複合機を含む情報処理システムの構成を例示的に示す図である。
【図２】複合機のハードウェア構成を示す図である。
【図３】複合機のソフトウェア構成を示す図である。
【図４】アプリ管理画面を例示的に示す図である。
【図５】管理サーバーのハードウェア構成を示す図である。
【図６】アプリ配信サーバーのハードウェア構成を示す図である。
【図７】アプリライフサイクル管理アプリと他のアプリとの関係を示す図である。
【図８】アプリライフサイクル管理アプリの詳細構成を示す図である。
【図９】複合機によるポーリング処理のフローチャートである。
【図１０】アプリ関連設定ジョブの実行処理を説明するフローチャートである。
【図１１】インストールジョブの実行処理の詳細フローチャートである。
【図１２】停止ジョブの実行処理の詳細フローチャートである。
【図１３】開始ジョブの実行処理の詳細フローチャートである。
【図１４】アップデートジョブの実行処理の詳細フローチャートである。
【図１５】アンインストールジョブの実行処理の詳細フローチャートである。
【図１６】操作権限有無の判定処理を説明するフローチャートである。
【図１７】操作権限の委譲処理を説明するフローチャートである。
【図１８】操作権限の剥奪処理を説明するフローチャートである。
【図１９】管理システム操作画面を例示的に示す図である。
【図２０】アプリ関連設定ジョブ及びアプリ情報の例を示す図である。
【図２１】各種マニフェストファイルを例示的に示す図である。
【図２２】手動操作に基づくアプリ関連設定ジョブの実行処理を説明するフローチャートである。
【発明を実施するための形態】
【００１０】
以下に、図面を参照して、この発明の好適な実施の形態を詳しく説明する。なお、以下の実施の形態はあくまで例示であり、本発明の範囲を限定する趣旨のものではない。
【００１１】
（第１実施形態）
本発明に係る情報処理装置の第１実施形態として、複合機を含む情報処理システムを例に挙げて以下に説明する。なお、以下の説明では、コピーやファックス、プリンタなどの複数の機能を一つの筐体に収納した複合機に適用した例を示す。しかしながら、他の形態の情報処理装置にも適用可能である。例えば携帯電話端末など、アプリを追加／削除可能な情報処理装置であれば本発明を適用することができる。
【００１２】
＜システム構成の説明＞
図１は、複合機を含む情報処理システムの構成を例示的に示す図である。以下では、複合機１００におけるアプリケーション（以下では単にアプリと呼ぶ）が、管理サーバー２００及びアプリ配信サーバー３００によって遠隔管理されている状況を想定して説明する。そのため、複合機１００、管理サーバー２００、アプリ配信サーバー３００は、インターネットなどのネットワーク１０を介して相互に通信可能に接続されている。なお、複合機１００とネットワーク１０との間には、ファイアウォール２０を設けてもよい。
【００１３】
ファイアウォール２０は、公衆回線やインターネットなどの外部ネットワークを通じて複合機１００に侵入した第三者により不正が行われないように、外部との境界を流れるデータを監視し、不正なアクセスを検出・遮断する。なお、ファイアウォール２０は、必須というわけではなく、存在しなくともよい。
【００１４】
複合機１００は、複写機にスキャナやプリンタ、ファクシミリ、ファイル送信機能等の複数の機能を統合した情報処理装置である。複合機１００は、ＬＡＮ（Local Area Network）などのネットワークによりファイアウォール２０に接続されている。
【００１５】
管理サーバー２００は、複合機１００を遠隔管理する装置である。管理サーバー２００は、複合機の開発企業や販売企業のサービスセンター等に設置されたサーバー装置であり、各種の管理データを格納するデータベースを備えている。データベースには、顧客ごとに、管理対象の複合機に関する管理情報が格納されている。管理情報は、例えば、製品番号、製品構成、機体識別番号、設置場所情報、インストール又はアンインストールしたアプリの情報等で構成される。これにより、管理対象である複合機におけるアプリの状態を特定することができる。
【００１６】
アプリ配信サーバー３００は、管理サーバー２００と同じく、複合機の開発企業や販売企業のデータセンター等に設置されたサーバー装置であり、複合機に追加することが出来るアプリを管理するデータベースを備えている。データベースには、アプリの名称やアプリを識別するＩＤ（以下「アプリＩＤ」）、アプリを使用する権利を識別する情報（以下「アプリ使用権ＩＤ」）等の情報が格納されている。また、指定されたアプリに対するアプリ使用権ＩＤを発行する機能とアプリを複合機にインストールするために必要なライセンスファイルを発行する機能も有している。
【００１７】
そして、第１実施形態の情報処理システムは、遠隔管理を実現するため、各装置にＲＰＣ（Remote Procedure Call）により、相互実装するアプリのメソッドに対する処理の要求、応答を送受信する機能を有している。また、ＲＰＣを実現するために、ＨＴＴＰ（Hyper Text Transfer Protocol）、ＳＯＡＰ（Simple Object Access Protocol）等のプロトコルを利用することができる。
【００１８】
また、複合機１００とネットワーク１０との間にファイアウォール２０が存在する場合、管理サーバー２００から直接に複合機１００に要求を送信しようとしても、ファイアウォール２０に要求が遮断される。しかし、先に複合機１００から管理サーバー２００に要求を送信し、ＨＴＴＰレスポンスに管理サーバー２００からの要求を載せるという方式を用いることで、管理サーバー２００からの要求がファイアウォール２０を通過して複合機１００まで届くようになる。
【００１９】
＜管理サーバー２００およびアプリ管理サーバー３００の説明＞
図５は、管理サーバー２００のハードウェア構成を示す図である。図６は、アプリ配信サーバー３００のハードウェア構成を示す図である。
【００２０】
管理サーバー２００は、コントローラユニット２０００、操作部２０２０、表示部２０３０を含む。コントローラユニット２０００は、ＣＰＵ（Central Processing Unit）２００３を含む。同様に、アプリ管理サーバー３００は、コントローラユニット３０００、操作部３０２０、表示部３０３０を含む。コントローラユニット３０００は、ＣＰＵ３００３を含む。管理サーバー２００の構成及びアプリ管理サーバー３００の構成はほぼ同様のため、以下では、主に管理サーバー２００に関して説明する。
【００２１】
ＣＰＵ２００３は、ＲＯＭ（Read Only Memory）２００６に記憶されているブートプログラムによりＯＳ（Operating System）を起動する。管理サーバー２００の場合、ＣＰＵ２００３は、ＯＳ上で、ＨＤＤ（Hard Disk Drive）２００５に記憶されている管理アプリプログラムを実行して各種処理を実行する。アプリ配信サーバー３００の場合、ＣＰＵ３００３は、ＯＳ上で、ＨＤＤ３００５に記憶されているアプリ配信プログラムを実行して各種処理を実行する。ＲＡＭ（Random Access Memory）２００４は、ＣＰＵ２００３のワーキングメモリとして用いられる。
【００２２】
管理サーバー２００の場合、ＨＤＤ２００５は、管理プログラムと複合機にアプリ設置実施を指示するアプリ関連設定ジョブ情報等を記憶する。アプリ配信サーバー３００の場合、ＨＤＤ３００５は、アプリ配信プログラムと配信可能なアプリに関する情報等を記憶する。
【００２３】
システムバス２０１０には、ＲＯＭ２００６およびＲＡＭ２００４の他に、操作部Ｉ／Ｆ２００１、表示部Ｉ／Ｆ２００２、ネットワークＩ／Ｆ２００７が接続されている。操作部Ｉ／Ｆ２００１は、ポインティングデバイスやキーボード等を含む操作部２０２０とのインターフェースであり、操作部２０２０を介してユーザーから入力された情報をＣＰＵ２００３に送信する。表示部Ｉ／Ｆ２００２は、ディスプレイ等を含む表示部２０３０に表示すべき画面データを表示部２０３０に対して出力する。ネットワークＩ／Ｆ２００７は、ネットワーク１０を通じて接続している各装置との間でデータの送受信を行う。
【００２４】
管理サーバー２００で管理されるアプリ関連設定ジョブ情報は、複合機を識別する情報とアプリを識別する情報、アプリの使用権情報を識別するアプリ使用権ＩＤ、アプリの状態を指示するアプリ状態指示情報等で構成される情報である。このアプリ関連設定ジョブ情報は後述する管理システム連携アプリがアプリをデバイスに設置するときに使用する。なお、アプリ関連設定ジョブ情報の詳細については図１９及び図２０を参照して後述する。
【００２５】
アプリ配信サーバー３００は、複合機１００からのアプリ取得要求として複合機の識別番号とアプリ使用権ＩＤを受付すると、そのアプリ使用権ＩＤに対応したアプリのアプリファイルとライセンスファイルをセットで情報処理装置に返信する。
【００２６】
＜複合機１００の説明＞
図２は、複合機１００のハードウェア構成を示す図である。複合機１００はコントローラユニット１０００を含み、コントローラユニット１０００には、画像入力デバイスであるスキャナ１０７０や画像出力デバイスであるプリンタ１０９５が接続されるとともに、操作部１０１２が接続される。
【００２７】
コントローラユニット１０００は、スキャナ１０７０で読み取られた画像データをプリンタ１０９５により印刷出力するコピー機能を実現するための制御を行う。コントローラユニット１０００は、ＣＰＵ１００１を有し、ＣＰＵ１００１は、ＲＯＭ１００３に格納されているブートプログラムによりＯＳを立ち上げる。
【００２８】
ＣＰＵ１００１は、このＯＳ上で、ＨＤＤ１００４に格納されているプログラムを実行し、これによって各種処理を実行する。このＣＰＵ１００１の作業領域としてはＲＡＭ１００２が用いられる。ＲＡＭ１００２は、作業領域を提供するとともに、画像データを一時記憶するための画像メモリー領域を提供する。ＨＤＤ１００４は、上記プログラムや画像データを格納する。
【００２９】
ＣＰＵ１００１には、システムバス１００７を介して、ＲＯＭ１００３およびＲＡＭ１００２、操作部インターフェース（操作部Ｉ／Ｆ）１００６、ネットワークインターフェース（ネットワークＩ／Ｆ）１０１０、ＵＳＢホストインターフェース（ＵＳＢホストＩ／Ｆ）１０１３、画像バスインターフェース（画像バスＩ／Ｆ）１００５が接続される。
【００３０】
操作部Ｉ／Ｆ１００６は、タッチパネルを有する操作部１０１２とのインターフェースであり、操作部１０１２に表示すべき画像データを操作部１０１２に対して出力する。
【００３１】
操作部Ｉ／Ｆ１００６は、操作部１０１２においてユーザーにより入力された情報をＣＰＵ１００１に送出する。
【００３２】
ネットワークＩ／Ｆ１０１０は、複合機１００をネットワーク１０に接続するためのインターフェースである。ＵＳＢホストＩ／Ｆ１０１３は、ＵＳＢストレージ１０１４と通信するインターフェース部である。ＵＳＢホストＩ／Ｆ１０１３は、ＨＤＤ１００４に格納されているデータをＵＳＢストレージ１０１４に出力する。また、ＵＳＢホストＩ／Ｆ１０１３は、ＵＳＢストレージ１０１４に格納されているデータを入力し、ＣＰＵ１００１にそれを伝える。ＵＳＢホストＩ／Ｆ１０１３には、ＵＳＢストレージ１０１４を含む複数のＵＳＢデバイスが接続可能である。
【００３３】
ＵＳＢストレージ１０１４は、データを格納する外部記憶装置であり、ＵＳＢホストＩ／Ｆ１０１３に対して着脱可能である。
【００３４】
画像バスＩ／Ｆ１００５は、システムバス１００７と、画像データを高速で転送する画像バス１００８とを接続し、データ形式を変換するためのバスブリッジである。画像バス１００８は、ＰＣＩバスまたはＩＥＥＥ１３９４等によって構成される。画像バス１００８上には、デバイスＩ／Ｆ１０２０、スキャナ画像処理部１０８０、プリンタ画像処理部１０９０が設けられる。
【００３５】
デバイスＩ／Ｆ１０２０には、スキャナ１０７０およびプリンタ１０９５が接続され、デバイスＩ／Ｆ１０２０は、画像データの同期系／非同期系の変換を行う。スキャナ画像処理部１０８０は、入力画像データに対し補正、加工、編集を行う。プリンタ画像処理部１０９０は、プリント出力画像データに対してプリンタ１０９５に応じた補正、解像度変換などを行う。
【００３６】
＜複合機１００のソフトウェア構成＞
図３は、複合機１００のソフトウェア構成を示す図である。なお、各機能を実現するソフトウェアはＲＯＭ１００３、もしくは、ＨＤＤ１００４に保存され、ＣＰＵ１００１にて実行される。また、実行時に使用する各種情報はＲＡＭ１００３もしくはＨＤＤ１００４に保持してソフトウェア機能間での各種情報のやりとりを行う。さらに外部機器との通信は、ネットワークＩ／Ｆ１０１０を用いて通信を行う。
【００３７】
複合機１００のソフトウェアは、ＯＳ３０１を有し、ＯＳ３０１上にアプリプラットフォーム３０２が構成されている。アプリプラットフォーム３０２は、基本的には、ＪＡＶＡ（登録商標）仮想マシン（ＶＭ）３０３のランタイム環境として構成されている。より詳細には、アプリプラットフォーム３０２は、インタプリタとしてのＪＡＶＡ（登録商標）ＶＭ３０３、ライブラリ３０４、ＯＳＧｉフレームワーク３０５、システムアプリ３０６を備えて構成されている。ライブラリ３０４は、ＪＡＶＡ（登録商標）標準のＡＰＩライブラリを含んで構成されている。
【００３８】
ＯＳＧｉフレームワーク３０５は、ＯＳＧｉ仕様に準拠した動作を行うモジュールである。ＯＳＧｉフレームワーク３０５では、単一のＪＡＶＡ（登録商標）ＶＭ３０３上に複数のアプリを動作させる事が可能であり、アプリのライフサイクルの管理やアプリ間通信機能などを提供する。
【００３９】
＜システムアプリ（第１種のアプリケーション）＞
システムアプリ３０６は、後述する拡張システムアプリ３２０や一般アプリ３１０を管理する。また、システムアプリ３０６は、拡張システムアプリ３２０や一般アプリ３１０に対して、複合機１００を操作するためのＡＰＩをＯＳＧｉサービスとして提供する。なお、システムアプリ３０６は、例えば出荷時に複合機１００にプリインストールされ、出荷後においてはアップデート、停止、アンインストールすることは出来ない（禁止されている）ように構成されている。
【００４０】
以下では、システムアプリの例として、アプリ配信インストールアプリ３２１、インストール制御アプリ３０７、アプリ管理ＵＩ提供アプリ３０８、ログインアプリ３０９、アプリライフサイクル管理アプリ３１２について説明する。
【００４１】
インストール制御アプリ３０７は、アプリとアプリを使用するためのライセンスとを関連付けて管理するためのアプリである。例えば、暗号化されたＪＡＶＡ（登録商標）アプリのファイルをライセンスファイルに含まれる鍵情報で復号し、ＯＳＧｉフレームワーク３０５にインストールする等、ＯＳＧｉの仕様には無い機能を提供する。また、インストール制御アプリ３０７は、インストールやアップデート、開始や停止といった操作をＡＰＩとして他のアプリに提供する。
【００４２】
アプリ管理ＵＩ提供アプリ３０８は、インストール制御アプリ３０７を利用して、アプリのインストール、開始、停止、アンインストールを行うための操作画面をＷＥＢページとして提供するアプリである。アプリ管理ＵＩ提供アプリ３０８が提供する画面は、複合機１００が接続しているのと同じＬＡＮに接続している管理用ＰＣ（不図示）にインストールされているブラウザでアクセスして使用する。アプリ管理ＵＩ提供アプリ３０８は、主に顧客（システム管理者）や複合機１００の販売会社等に所属するサービスマンが使用する。
【００４３】
アプリ配信インストールアプリ３２１は、アプリ配信サーバー３００と通信することでアプリとライセンスを取得し、インストールやアップデートをＡＰＩとして他のアプリに提供するためのアプリである。なお、アプリ配信インストールアプリ３２１は、アプリ管理ＵＩ提供アプリ３０８と同様にインストール制御アプリ３０７を使用する。なお、アプリ配信インストールアプリ３２１は、後述する管理システムを使用したアプリのライフサイクル管理において、管理サーバー通信アプリ３１１の停止やアンインストールといった操作をおこなう権限を有さないアプリの例として使用する。
【００４４】
ログインアプリ３０９は、複合機１００を使用するユーザーを識別し、現在複合機１００にログインしているユーザーのログイン情報を、図２１に示すログインコンテキスト２２００として他のアプリに提供するアプリである。
【００４５】
アプリライフサイクル管理アプリ３１２は、管理サーバー通信アプリ３１１を使用して管理サーバー２００からアプリ関連設定ジョブ情報を取得し、アプリのライフサイクル管理をおこなうアプリである。そのため、ユーザー向けの操作画面を有さずともよい。アプリライフサイクル管理アプリ３１２は、インストールないしアップデートの場合はアプリ配信インストールアプリ３２１が提供するＡＰＩを利用する。一方、開始や停止、アンインストールの場合は直接インストール制御アプリ３０７が提供するＡＰＩを利用する。なお、アプリライフサイクル管理アプリ３１２は、後述する管理システムを使用したアプリのライフサイクル管理において、管理サーバー通信アプリ３１１の停止やアンインストールといった操作をおこなう権限を有するアプリの例として使用する。
【００４６】
＜拡張システムアプリ（第２種のアプリケーション）＞
拡張システムアプリ３２０は、アプリプラットフォーム３０２上で動作する複合機１００の機能を拡張したり、複合機１００を操作するためのＡＰＩを提供したりするなど、主として複合機１００の開発企業がインストールするアプリの総称である。拡張システムアプリ３２０は、複合機１００にプリインストールされる場合もあれば、出荷後にインストールされる場合もある。なお、拡張システムアプリは、所定の条件に応じてアップデートや停止、アンインストールすることが可能である。以下では、所定の条件として、一時許可リスト２１１０を利用する例について説明するが、条件はこれに限定されない。
【００４７】
以下、拡張システムアプリの例として、管理サーバー通信アプリ３１１について説明する。
【００４８】
管理サーバー通信アプリ３１１は、管理サーバー２００と通信してアプリ関連設定ジョブ情報を取得するためのアプリである。また、管理サーバー通信アプリ３１１は管理サーバー２００のＩＰアドレスやＵＲＬ、認証するための鍵などの接続情報を有するとともに、管理サーバー２００の通信プロトコルに従って通信するアプリである。なお、管理サーバー通信アプリ３１１は、出荷状態で複合機１００にプリインストールされるものの、市場でアップデートされることがある。例えば、接続する管理サーバー２００のＩＰアドレスやＵＲＬなどの接続情報が変更になる場合や通信プロトコルが変更になる場合等で、アプリのアップデートが必要となるケースである。
【００４９】
なお、管理サーバー通信アプリ３１１はアプリライフサイクル管理アプリ３１２がアプリのライフサイクル管理のために利用しているため、停止やアンインストールされてしまうとアプリライフサイクル管理アプリ３１２の動作に影響が出る。例えば、複合機１００を利用する顧客がアプリの使用契約を結んだときに管理サーバー通信アプリ３１１が停止している場合、管理サーバー２００からアプリのインストール指示を受けられないことになる。従って、管理サーバー通信アプリ３１１の停止やアンインストールといった操作は、ＵＩを持たないアプリライフサイクル管理アプリ３１２のような、ユーザーが簡単に操作出来ないようなアプリに限定して許可する必要がある。なお、管理サーバー通信アプリ３１１は、後述する管理システムを使用したアプリのライフサイクル管理において、管理サーバー通信アプリ３１１の停止やアンインストールといった操作を特定のアプリに限定して許可するときの操作対象のアプリの例として使用する。
【００５０】
図２１は、各種ファイルの例を示す図である。マニフェストファイル２１００は、管理サーバー通信アプリ３１１が宣言する項目を記述したファイルである。項目２１０１は、アプリのアプリタイプを記述する。例えば、ログインアプリ３０９を除いたシステムアプリ３０６の場合は“ＳｙｓｔｅｍＡｐｐ”、ログインアプリ３０９の場合は“ＬｏｇｉｎＡｐｐ”、拡張システムアプリ３２０の場合は“ＳｙｓｔｅｍＡｐｐ−Ｅｘ”、一般アプリ３１０の場合は“ＮｏｒｍａｌＡｐｐ”を記述する。
【００５１】
また、拡張システムアプリ３２０の中でも、管理サーバー通信アプリ３１１のように開始や停止、アンインストールといった操作をある特定のアプリに限定して許可する場合は“ＳｙｓｔｅｍＡｐｐ−ＰｒｉｖＥｘ”を指定する。加えて、項目２１０２において、操作を許可する特定のアプリのアプリＩＤを記述する（本例では、アプリライフサイクル管理アプリ３１２のアプリＩＤ）。なお、操作するアプリが複数存在する場合は、カンマ（，）区切りで記述することが出来る。
【００５２】
＜一般アプリ（第３種のアプリケーション）＞
一般アプリ３１０は、アプリプラットフォーム３０２上で動作する複合機１００の機能を拡張するなど、主として複合機１００の開発企業とは異なるサードベンダーが開発するアプリの総称である。
【００５３】
以下、一般アプリの例として、サードベンダー製アプリ３１３について説明する。
【００５４】
サードベンダー製アプリ３１３は、例えば印刷ジョブを一旦複合機の中に保存し、複合機のタッチパネル画面上で印刷設定を確認しながら、必要なジョブだけを印刷できる機能を有し、利用者は利用料金の支払い状況に応じてアプリを利用することが出来るようなアプリである。
【００５５】
図７は、アプリライフサイクル管理アプリ３１２と他のアプリとの関係を示す図である。具体的には、アプリ管理ＵＩ提供アプリ３０８、インストール制御アプリ３０７、管理サーバー通信アプリ３１１との関係を示している。
【００５６】
＜アプリ管理ＵＩ提供アプリ３０８を使用したアプリのライフサイクル管理＞
顧客あるいは複合機１００の販売会社等に所属するサービスマンが、顧客サイトにあるＰＣにインストールされたブラウザを使用して複合機１００にアクセスすることで、アプリ管理ＵＩ提供アプリ３０８を使用したアプリのライフサイクル管理を行うことが出来る。以下、図４を参照して、アプリ管理ＵＩ提供アプリ３０８を使用したアプリの管理について説明する。また、併せてアプリの状態やアプリとライセンスの関係についても説明する。
【００５７】
図４は、アプリ管理ＵＩ提供アプリ３０８が提供するアプリ管理画面５００を例示的に示す図である。アプリ管理画面５００は、複合機１００にインストールされているアプリの状態を操作するための画面である。
【００５８】
アプリケーション名５０１は、インストール制御アプリ３０７を使用し、一般アプリ３１０と拡張システムアプリ３２０に該当するアプリケーション情報を取得し、アプリの名称を一覧に表示する。この例の場合、一般アプリ３１０に該当するアプリケーションＡ５０５とアプリケーションＢ５０６、拡張システムアプリ３２０に該当する管理サーバー通信アプリ３１１の３つが管理されている。
【００５９】
インストール日５０２は、各アプリがインストールされた日付である。アプリケーションＩＤ５０３は、各アプリに一意に割り振られたＩＤを表示している。状態５０４は、各アプリの状態を示している。アプリが開始状態であれば開始、停止状態であれば停止と表示される。
【００６０】
開始ボタン５０９／停止ボタン５０８は、アプリの開始停止を切り替える指示ボタンである。開始状態のアプリの場合、停止ボタンとなり、停止状態のアプリの場合、開始ボタンとなる。開始状態のアプリ（本例では、「アプリケーションＡ５０５」）の停止ボタン５０８を押下すると、その状態５０４は停止に変更される。一方、停止状態のアプリ（本例では、「アプリケーションＢ５０６」）の開始ボタン５０９を押下すると、その状態５０４は開始に変更される。
【００６１】
無効化状態停止ボタン５１０は、アプリ管理ＵＩ提供アプリ３０８が管理サーバー通信アプリ３１１に対して停止する権限を持っていないため、無効化されて押下することが出来ない状態となっている。
【００６２】
アンインストールボタン５１１は、アプリのアンインストールするための指示ボタンである。アプリケーションＡ５０５のアンインストールボタン５１１を押下すると、アプリケーションＡ５０５をアンインストールする。無効化状態アンインストールボタン５１３は、アプリ管理ＵＩ提供アプリ３０８が管理サーバー通信アプリ３１１に対してアンインストールする権限を持っていないため、無効化されて押下することが出来ない状態となっている。
【００６３】
＜管理システムによるアプリの管理＞
アプリの管理は、複合機１００の販売会社等に所属するオペレーターが、複合機１００の販売会社等のサイトにあるＰＣ（不図示）等にインストールされているブラウザを使用して、管理サーバー２００が提供する管理システム操作画面にアクセスし、操作する事で管理サーバー２００にアプリ関連設定ジョブを登録する。登録されたジョブは、複合機１００にインストールされた管理サーバー通信アプリ３１１及びアプリライフサイクル管理アプリ３１２が、定期的にポーリングすることで取得し、ジョブの指示に従って複合機１００を設定する事で行う。
【００６４】
図１９は、管理サーバー２００が提供する管理システム操作画面１９００を例示的に示す図である。管理システム操作画面１９００は、複合機一覧画面１９１０、複合機管理画面１９２０、インストール設定画面１９４０、状態操作設定画面１９６０によって構成される。
【００６５】
複合機一覧画面１９１０は、顧客毎に顧客が所有する複合機を一覧で表示するための画面である。複合機一覧画面１９１０は、顧客名１９１１、複合機ＩＤ１９１２、製品名１９１３、状態１９１４、参照ボタン１９１５によって構成される。顧客名１９１１は、顧客の名称、複合機ＩＤ１９１２は、顧客サイトで運用されている複合機を識別するＩＤ、製品名１９１３は、顧客サイトで運用されている複合機の製品名をそれぞれ表示する。
【００６６】
状態１９１４は、顧客サイトで運用されている複合機に対する操作の状態を表示する。状態としては、処理待ちと処理済みがある。アプリ関連設定ジョブを登録後、複合機側での設定処理が終了するまでの状態が処理待ちで、設定処理終了後に複合機のアプリの状態が通知されると処理済みとなる。参照ボタン１９１５は、複合機ＩＤで識別される各機器の複合機管理画面１９２０に遷移するためのボタンである。
【００６７】
複合機管理画面１９２０は、複合機にインストール可能なアプリの状態を管理するための画面である。複合機管理画面１９２０は、詳細ボタン１９１５ａが押下されたときに表示する、複合機ＩＤが“ＸＸＸ００００１”である複合機（ここでは、複合機１００）の複合機管理画面である。複合機管理画面１９２０は、顧客名１９２１及び複合機ＩＤ１９２２、製品名１９２３、アプリＩＤ１９２５、アプリ名１９２６、状態１９２７、状態操作１９２８、状態操作ボタン１９２９、アプリインストールボタン１９３０によって構成される。
【００６８】
顧客名１９２１は、複合機を所有している顧客の名称、複合機ＩＤ１９２２は、複合機を識別するＩＤ、製品名１９２３は、複合機の製品名をそれぞれ表示する。アプリＩＤ１９２５は、複合機にインストールされているか、インストールされる予定のアプリを識別するためのＩＤを表示する。アプリ名１９２６は、複合機にインストールされているか、インストールされる予定のアプリの名称を表示する。
【００６９】
状態１９２７は、複合機にインストールされているか、インストールされる予定のアプリの状態を表示する。状態操作１９２８は、複合機にインストールされているか、インストールされる予定のアプリに対して可能である状態操作をボタンとして表示する。
【００７０】
状態操作ボタン１９２９は、アプリの状態操作の設定を行うための状態操作設定画面１９６０に遷移するためのボタンである。アプリインストールボタン１９３０は、インストール設定画面１９４０に遷移するためのボタンである。
【００７１】
インストール設定画面１９４０は、アプリのインストール設定を行うための画面である。インストール設定画面１９４０は、複合機ＩＤ１９４１及びアプリ選択プルダウン１９４２、登録ボタン１９４５によって構成される。
【００７２】
複合機ＩＤ１９４１は、インストールするアプリを選択する複合機を識別するＩＤを表示する。アプリ選択プルダウン１９４２は、複合機ＩＤで識別される複合機にインストールすることができるアプリを選択するプルダウンメニューである。登録ボタン１９４５は、選択したアプリをインストールするためのインストールジョブを登録するためのボタンである。
【００７３】
図２０（ａ）は、管理サーバー２００に登録されたアプリ関連設定ジョブのデータ構成を示す図である。
【００７４】
アプリ関連設定ジョブ２０００は、ジョブプロパティ２０１０によって構成される。ジョブプロパティ２０１０は、アプリ関連設定ジョブのプロパティである。アプリ関連設定ジョブ２０１０は、アプリＩＤ２０１１及びジョブ種別２０１２、アプリ使用権ＩＤ２０１３によって構成される。
【００７５】
アプリＩＤ２０１１は、状態を操作するアプリのＩＤである。ジョブ種別２０１２は、ジョブの種別である。インストールジョブであれば“Ｉｎｓｔａｌｌ”、開始ジョブであれば“Ｓｔａｒｔ”、停止ジョブであれば“Ｓｔｏｐ”、アップデートジョブであれば“Ｕｐｄａｔｅ”、アンインストールジョブであれば“Ｕｎｉｎｓｔａｌｌ”となる。
【００７６】
アプリ使用権ＩＤ２０１３は、アプリ配信サーバー３００からアプリを取得するために必要なアプリ使用権ＩＤである。この情報は、インストールジョブとアップデートジョブの場合に必須となる。
【００７７】
図２０（ｂ）は、複合機１００から管理サーバー２００に送信するアプリ情報の例を示す図である。この情報により管理サーバー２００は複合機１００のアプリの状態を把握出来るようになる。
【００７８】
アプリ情報２０２０は、アプリ数情報２０３０及び個別アプリ情報２０４０によって構成される。アプリ数情報２０３０は、アプリライフサイクル管理アプリ３１２が管理しているアプリの数である。個別アプリ情報２０４０は、アプリライフサイクル管理アプリ３１２で管理しているアプリの情報である。個別アプリ情報２０４０は、アプリＩＤ情報２０４１、状態情報２０４２、バージョン情報２０４３によって構成される。アプリＩＤ情報２０４１は、アプリを識別するためのＩＤである。
【００７９】
状態情報２０４２は、アプリの状態を示す情報である。開始状態は“Ｓｔａｒｔｅｄ”、停止状態は“Ｓｔｏｐｅｄ”、インストール済み状態は“Ｉｎｓｔａｌｌｅｄ”となる。バージョン情報２０４３は、アプリのバージョン情報である。
【００８０】
図８は、アプリライフサイクル管理アプリの詳細構成を示す図である。アプリインストール配信アプリは、アプリ配信インストールアプリ３２１を備えている。アプリ配信インストールアプリ３２１は、アプリ配信サーバー３００とＨＴＴＰ等のプロトコルで通信し、アプリ配信サーバー３００からアプリファイルとライセンスファイルを取得し、インストール制御アプリ３０７を使用して複合機１００にアプリファイルとライセンスファイルをインストールする。なお、新規アプリのインストールの他、既存アプリのアップデートも実行することが出来る。
【００８１】
管理サーバー通信アプリ３１１は、通信処理部８５１を備えている。アプリライフサイクル管理アプリ３１２は、周期処理部８０１と最終通信時刻管理部８０２、管理対象アプリ管理部８０３、アプリインストール処理部８０５、アプリアンインストール処理部８０６、アプリ開始処理部８０７、アプリ停止処理部８０８を備えている。
【００８２】
通信処理部８５１は、管理サーバー２００とＨＴＴＰ等のプロトコルで通信し、レスポンスにより管理サーバー２００からのアプリ関連設定ジョブ情報を受信する。また、複合機１００にインストールされているアプリの情報を送信する。
【００８３】
周期処理部８０１は、管理サーバー通信アプリ３１１が備える通信処理部８５１を使用して、定期的に管理サーバー２００と通信し、アプリ関連設定ジョブ情報を受信した場合には、アプリ関連設定ジョブ情報に従い複合機１００の設定を行う。また、一定期間管理サーバー２００と通信出来なかった場合には、管理サーバー２００から受信したアプリ関連設定ジョブ情報をもとにインストールしたアプリを停止する。
【００８４】
最終通信時刻管理部８０２は、管理サーバー２００と最後に通信が成功した日時の情報を保管する。管理対象アプリ管理部８０３は、管理サーバー２００から受信したアプリ関連設定ジョブ情報によりインストールしたアプリを識別する情報を保管する。
【００８５】
アプリインストール処理部８０５は、インストール制御アプリ３０７を使用してアプリファイルとライセンスファイルを複合機１００にインストールする。アプリアンインストール処理部８０６は、インストール制御アプリ３０７を使用して複合機１００からアプリとライセンスをアンインストールする。
【００８６】
アプリ開始処理部８０７は、インストール制御アプリ３０７を使用して停止状態のアプリを開始する。アプリ停止処理部８０８は、インストール制御アプリ３０７を使用して開始状態のアプリを停止する。アプリ停止処理部８０８が停止したアプリは、アプリ管理ＵＩ提供アプリ３０８からは開始することが出来ない。
【００８７】
アプリ情報取得処理部８１０は、インストール制御アプリ３０７を使用してインストールされているアプリの情報を取得する。
【００８８】
＜システムの動作＞
図９は、複合機によるポーリング処理のフローチャートである。ここでは、ポーリング処理は、複合機１００が管理サーバー２００からアプリ関連設定ジョブを取得するために定期的に実行されることを想定する。
【００８９】
ステップＳ９０１では、周期処理部８０１は、ポーリング終了指示があるか否かを判断する。ポーリング終了指示があった場合は、処理を終了する。そうで無い場合は、ステップＳ９０２に遷移する。
【００９０】
ステップＳ９０２では、周期処理部８０１は、アプリ関連設定ジョブ実行処理を実行する。なお、ステップＳ９０２についての処理の詳細は、図１０を参照して後述する。ステップＳ９０３では、周期処理部８０１は、一定時間スリープし、ステップＳ９０１に遷移する。
【００９１】
図１０は、アプリ関連設定ジョブ（Ｓ９０２）の実行処理を説明するフローチャートである。
【００９２】
ステップＳ１００１では、周期処理部８０１は、通信処理部８５１を使用して管理サーバー２００からアプリ関連設定ジョブ情報を取得する。ステップＳ１００２では、周期処理部８０１は、通信処理部８５１が管理サーバー２００から受信したアプリ関連設定ジョブ情報を解析する。ステップＳ１００３では、ステップＳ１００２で解析により、アプリ関連設定ジョブが存在する場合はステップＳ１００４に遷移し、ジョブが存在しない場合は処理を終了する。
【００９３】
ステップＳ１００４では、周期処理部８０１は、ジョブの種別を判断する。ジョブがインストールジョブであった場合は、ステップＳ１００５に遷移する。ジョブが停止ジョブであった場合は、ステップＳ１００６に遷移する。ジョブが開始ジョブであった場合は、ステップＳ１００７に遷移する。ジョブがアンインストールジョブであった場合は、ステップＳ１００８に遷移する。ジョブがアップデートジョブであった場合は、ステップＳ１００９に遷移する。
【００９４】
ステップＳ１００５では、周期処理部８０１及びアプリインストール処理部８０５は、アプリ配信インストールアプリ３２１を使用し、インストール処理を実行する。なお、ステップＳ１００５のインストール処理の詳細は、図１１を参照して後述する。ステップＳ１００６では、周期処理部８０１及びアプリ停止処理部８０８は、停止処理を実行する。なお、ステップＳ１００６の停止処理の詳細は、図１２を参照して後述する。ステップＳ１００７では、周期処理部８０１及びアプリ開始処理部８０７は、開始処理を実行する。なお、ステップＳ１００７の開始処理の詳細は、図１３を参照して後述する。
【００９５】
ステップＳ１００８では、周期処理部８０１及びアプリアンインストール処理部８０６はアンインストール処理を実行する。なお、ステップＳ１００８のアンインストール処理の詳細は、図１５を参照して後述する。ステップＳ１００９では、周期処理部８０１及びアプリインストール処理部８０５は、アプリ配信インストールアプリ３２１を使用し、アップデート処理を実行する。なお、ステップＳ１００９のアップデート処理の詳細は、図１４を参照して後述する。
【００９６】
ステップＳ１０１０では、周期処理部８０１は、アプリ情報取得処理部８１０を使用してインストールされているアプリの情報を取得し、通信処理部８５１を使用して管理サーバー２００にアプリの情報を送信する。これにより、管理サーバー２００が管理する複合機１００のアプリ情報が最新の状態に更新される。
【００９７】
ステップＳ１０１２では、周期処理部８０１は、アプリ関連設定ジョブをすべて処理したか否かを判定する。すべて処理した場合は、処理を終了する。アプリ関連設定ジョブが残っている場合は、Ｓ１００４に進む。
【００９８】
＜権限の委譲処理、アプリ操作処理（Ｓ１００５〜Ｓ１００９）の詳細＞
以下、図１１〜図１５において、前述のステップＳ１００５〜ステップＳ１００９のジョブ実行処理について詳しく説明する。まず、図１６〜図１８において、これから述べる図１１〜図１５の説明に共通する、権限判定処理、および権限の委譲処理と剥奪処理について説明を述べる。
【００９９】
図２１に示す一時許可リスト２１１０は、アプリに対して一時的に権限を委譲した場合に、権限移譲に関する情報が書き込まれる予め用意された管理ファイルである。以下の説明では、委譲した権限を剥奪した際に、委譲の際書き込まれた情報を削除する形態について説明している。ただし、一時許可リストをログとして構成してもよく、その場合は、委譲した権限を剥奪した際に、当該委譲が無効になったことを示す情報を追記する。
【０１００】
項目２１１１は、操作権限を委譲する処理をおこなったアプリのアプリＩＤである。項目２１１２は、操作権限が委譲されたアプリのアプリＩＤである。項目２１１３は、操作対象のアプリのアプリＩＤである。項目２１１４は、操作権限が委譲された処理を示しており、例えば、“ｕｐｄａｔｅ”はアップデート処理、“ｓｔｏｐ”は停止処理、“ｓｔａｒｔ”は開始処理、“ｉｎｓｔａｌｌ”はインストール処理、“ｕｎｉｎｓｔａｌｌ”はアンインストール処理、にそれぞれ対応づけられる。
【０１０１】
図１６は、操作権限有無の判定処理を説明するフローチャートである。すなわち、アプリに関する所定の操作（インストール処理など）を行う権限を有しているか否かを判定する。
【０１０２】
ステップＳ１６０１では、インストール制御アプリ３０７は、操作対象となるアプリのマニフェストファイル２１００の項目２１０１を取得する。なお、マニフェストファイルについては非特許文献１に詳細に記載されているので、説明は省略する。
【０１０３】
ステップＳ１６０２では、ステップＳ１６０１で取得した項目２１０１が“ＳｙｓｔｅｍＡｐｐ”の場合は判定ＮＧを返して処理を終了し、“ＳｙｓｔｅｍＡｐｐ−ＰｒｉｖＥｘ”の場合はステップＳ１６０３に遷移する。アプリタイプが“ＳｙｓｔｅｍＡｐｐ”でも“ＳｙｓｔｅｍＡｐｐ−ＰｒｉｖＥｘ”でもない場合は判定ＯＫを返して処理を終了する。
【０１０４】
ステップＳ１６０３では、インストール制御アプリ３０７は、操作対象となるアプリのマニフェストファイル２１００の項目２１０２を取得する。ステップＳ１６０４では、インストール制御アプリ３０７は、操作要求をしたアプリのアプリＩＤを取得する。ステップＳ１６０５では、Ｓ１６０３で取得した項目２１０２とＳ１６０４で取得したアプリＩＤが一致する場合は判定ＯＫを返して処理を終了し、一致しない場合はステップＳ１６０６に遷移する。
【０１０５】
ステップＳ１６０６では、インストール制御アプリ３０７は、一時許可リスト２１１０を読み込む。ステップＳ１６０７では、Ｓ１６０６で読み込んだ一時許可リスト２１１０の項目２１１２と処理を要求したアプリのアプリＩＤが一致する場合はステップＳ１６０８に遷移し、一致しない場合は判定ＮＧを返して処理を終了する。ステップＳ１６０８では、Ｓ１６０６で読み込んだ一時許可リスト２１１０の項目２１１３と処理対象のアプリのアプリＩＤが一致する場合はステップＳ１６０９に遷移し、一致しない場合は判定ＮＧを返して処理を終了する。ステップＳ１６０９では、Ｓ１６０６で読み込んだ一時許可リスト２１１０の項目２１１４と要求された処理が一致する場合は判定ＯＫを返して処理を終了し、一致しない場合は判定ＮＧを返して処理を終了する。
【０１０６】
図１７は、操作権限の委譲処理を説明するフローチャートである。具体的には、アプリに関する所定の操作（インストール処理など）を行う権限を委譲する処理である。
【０１０７】
ステップＳ１７０１では、インストール制御アプリ３０７は、操作対象となるアプリのマニフェストファイル２１００の項目２１０１を取得する。ステップＳ１７０２では、ステップＳ１７０１で取得した項目２１０１が“ＳｙｓｔｅｍＡｐｐ−ＰｒｉｖＥｘ”の場合はステップＳ１７０３に遷移し、アプリタイプが“ＳｙｓｔｅｍＡｐｐ−ＰｒｉｖＥｘ”ではない場合は処理を終了する。
【０１０８】
ステップＳ１７０３では、インストール制御アプリ３０７は、操作対象となるアプリのマニフェストファイル２１００の項目２１０２を取得する。ステップＳ１７０４では、インストール制御アプリ３０７は、操作要求をしたアプリのアプリＩＤを取得する。
【０１０９】
ステップＳ１７０５では、Ｓ１７０３で取得した項目２１０２とＳ１７０４で取得したアプリＩＤが一致する場合はステップＳ１７０６に遷移し、一致しない場合はエラー終了する。
【０１１０】
ステップＳ１７０６では、インストール制御アプリ３０７は、一時許可リスト２１１０に、操作権限を委譲する処理をおこなったアプリのアプリＩＤ、操作権限が委譲されたアプリのアプリＩＤ、操作対象のアプリのアプリＩＤ、操作権限を委譲する処理のデータを追加する。但し、既に全く同じデータが存在する場合は、新たに追加しない。
【０１１１】
図１８は、操作権限の剥奪処理を説明するフローチャートである。ここでは、図１７の処理で委譲した操作権限を剥奪し、本来の操作権限の状態に戻す処理を行う。
【０１１２】
ステップＳ１８０１では、インストール制御アプリ３０７は、操作対象となるアプリのマニフェストファイル２１００の項目２１０１を取得する。ステップＳ１８０２では、ステップＳ１８０１で取得した項目２１０１が“ＳｙｓｔｅｍＡｐｐ−ＰｒｉｖＥｘ”の場合はステップＳ１８０３に遷移し、アプリタイプが“ＳｙｓｔｅｍＡｐｐ−ＰｒｉｖＥｘ”ではない場合は処理を終了する。
【０１１３】
ステップＳ１８０３では、インストール制御アプリ３０７は、操作対象となるアプリのマニフェストファイル２１００の項目２１０２を取得する。ステップＳ１８０４では、インストール制御アプリ３０７は、操作要求をしたアプリのアプリＩＤを取得する。
【０１１４】
ステップＳ１８０５では、Ｓ１８０３で取得した項目２１０２とＳ１８０４で取得したアプリＩＤが一致する場合はステップＳ１８０６に遷移し、一致しない場合はエラー終了する。
【０１１５】
ステップＳ１８０６では、インストール制御アプリ３０７は、一時許可リスト２１１０から、操作権限を委譲する処理をおこなったアプリのアプリＩＤ、操作権限が委譲されたアプリのアプリＩＤ、操作対象のアプリのアプリＩＤ、操作権限を委譲する処理をキーとしてデータを削除する。
【０１１６】
ステップＳ１６０３では、インストール制御アプリ３０７は、操作対象となるアプリのマニフェストファイル２１００の項目２１０２を取得する。ステップＳ１６０４では、インストール制御アプリ３０７は、操作要求をしたアプリのアプリＩＤを取得する。
【０１１７】
ステップＳ１６０５では、Ｓ１６０３で取得した項目２１０２とＳ１６０４で取得したアプリＩＤが一致する場合は判定ＯＫを返して処理を終了し、一致しない場合はステップＳ１６０６に遷移する。
【０１１８】
ステップＳ１６０６では、インストール制御アプリ３０７は、一時許可リスト２１１０を読み込む。ステップＳ１６０７では、Ｓ１６０６で読み込んだ一時許可リスト２１１０の項目２１１２と処理を要求したアプリのアプリＩＤが一致する場合はステップＳ１６０８に遷移し、一致しない場合は判定ＮＧを返して処理を終了する。ステップＳ１６０８では、Ｓ１６０６で読み込んだ一時許可リスト２１１０の項目２１１３と処理対象のアプリのアプリＩＤが一致する場合はステップＳ１６０９に遷移し、一致しない場合は判定ＮＧを返して処理を終了する。ステップＳ１６０９では、Ｓ１６０６で読み込んだ一時許可リスト２１１０の項目２１１４と要求された処理が一致する場合は判定ＯＫを返して処理を終了し、一致しない場合は判定ＮＧを返して処理を終了する。
【０１１９】
図１１は、インストールジョブの実行処理（Ｓ１００５）の詳細フローチャートである。
【０１２０】
ステップＳ１１０１では、周期処理部８０１は、アプリ関連設定ジョブ情報からアプリ使用権ＩＤを取り出す。ステップＳ１１０２では、アプリインストール処理部８０５は、インストール制御アプリ３０７を使用し、アプリ配信インストールアプリ３２１に対して、アプリをインストールするための権限を委譲する。
【０１２１】
ステップＳ１１０３では、アプリ配信インストールアプリ３２１は、アプリインストール処理部８０５から受け取ったアプリ使用権ＩＤを使用してアプリ配信サーバー３００からアプリファイルとライセンスファイルを取得する。ここでは、アプリファイルは、最新のバージョン、あるいは、指定されたバージョンのアプリファイルを取得する。さらに、アプリ配信インストールアプリ３２１は、インストール制御アプリ３０７のインストール処理を呼び出す。その際、アプリ配信サーバー３００から取得したアプリファイルとライセンスファイルを渡す。
【０１２２】
ステップＳ１１０４では、インストール制御アプリ３０７は、アプリ配信インストールアプリ３２１がステップＳ１１０３で取得したアプリケーションに対して、インストール処理を実行する権限を有しているか否かの判定をおこなう。ステップＳ１１０５では、ステップＳ１１０４の判定に問題がない場合はステップＳ１１０６に進み、問題がある場合はエラー終了する。
【０１２３】
ステップＳ１１０６では、インストール制御アプリ３０７は、アプリファイルとライセンスファイルをインストールする。インストール処理の完了後、ステップＳ１１０７では、アプリインストール処理部８０５は、インストール制御アプリ３０７を使用し、アプリ配信インストールアプリ３２１に対して、アプリをインストールするための権限を剥奪する。
【０１２４】
ステップＳ１１０８では、周期処理部８０１は、ステップＳ１１０６でのインストール処理の結果を判断する。インストールに成功した場合はステップＳ１１０７に遷移し、失敗した場合は処理を終了する。
【０１２５】
ステップＳ１１０９では、周期処理部８０１は、インストールしたアプリの識別情報とアプリ使用権ＩＤを管理対象アプリ管理部８０３に保存する。
【０１２６】
以上、説明した処理により、インストール対象のアプリによってインストールを許可されたアプリが、インストールが許可されていないアプリの機能を利用し、複合機１００にアプリをインストールすることが出来るようになる。
【０１２７】
図１２は、停止ジョブの実行処理（Ｓ１００６）の詳細フローチャートである。
【０１２８】
ステップＳ１２０１では、周期処理部８０１は、アプリ関連設定ジョブ情報から停止するアプリＩＤを取り出し、アプリ停止処理部８０８に渡す。更に、アプリ停止処理部８０８は、周期処理部８０１から受け取ったアプリＩＤを指定し、インストール制御アプリ３０７の停止処理を呼び出す。
【０１２９】
ステップＳ１２０２では、インストール制御アプリ３０７は、アプリライフサイクル管理アプリ３１２がステップＳ１２０１で取得したアプリＩＤのアプリに対して、停止処理を実行する権限を有しているか否かの判定をおこなう。ステップＳ１２０３では、ステップＳ１２０２の判定に問題がない場合はステップＳ１２０４に進み、問題がある場合はエラー終了する。ステップＳ１２０４では、インストール制御アプリ３０７はアプリを停止する。
【０１３０】
以上、説明した処理により、停止対象のアプリによって停止を許可されたアプリだけが、複合機１００のアプリを停止することが出来るようになる。
【０１３１】
図１３は、開始ジョブの実行処理（Ｓ１００７）の詳細フローチャートである。
【０１３２】
ステップＳ１３０１では、周期処理部８０１は、アプリ関連設定ジョブ情報から開始するアプリＩＤを取り出し、アプリ開始処理部８０７に渡す。更に、アプリ開始処理部８０７は、周期処理部８０１から受け取ったアプリＩＤを指定し、インストール制御アプリ３０７の開始処理を呼び出す。
【０１３３】
ステップＳ１３０２では、インストール制御アプリ３０７は、アプリライフサイクル管理アプリ３１２がステップＳ１３０１で取得したアプリＩＤのアプリに対して、開始処理を実行する権限を有しているか否かの判定をおこなう。ステップＳ１３０３では、ステップＳ１３０２の判定に問題がない場合はステップＳ１３０４に進み、問題がある場合はエラー終了する。ステップＳ１３０４では、インストール制御アプリ３０７はアプリを開始する。
【０１３４】
以上、説明した処理により、開始対象のアプリによって開始を許可されたアプリだけが、複合機１００のアプリを開始することが出来るようになる。
【０１３５】
図１４は、アップデートジョブの実行処理（Ｓ１００９）の詳細フローチャートである。
【０１３６】
ステップＳ１４０１では、周期処理部８０１は、アプリ関連設定ジョブ情報からアプリＩＤを取り出す。ステップＳ１４０２では、周期処理部８０１は、管理対象アプリ管理部８０３からステップＳ１４０１で取り出したアプリＩＤに対応したアプリ使用権ＩＤを取得する。ステップＳ１４０３では、アプリインストール処理部８０５は、インストール制御アプリ３０７を使用することで、アップデート対象のアプリの状態を取得する。
【０１３７】
ステップＳ１４０４では、アップデート対象のアプリが開始している（すなわち実行中である）場合はステップＳ１４０５に遷移し、開始していない場合はステップＳ１４０８に遷移する。
【０１３８】
ステップＳ１４０５では、インストール制御アプリ３０７は、アプリライフサイクル管理アプリ３１２がステップＳ１４０１で取得したアプリＩＤのアプリに対して、停止処理を実行する権限を有しているか否かの判定をおこなう。ステップＳ１４０６では、ステップＳ１４０５の判定に問題がない場合はステップＳ１４０７に進み、問題がある場合はエラー終了する。
【０１３９】
ステップＳ１４０７では、インストール制御アプリ３０７は、アプリを停止する。なお、ここでアプリを停止する理由としては、ＯＳＧｉの仕様上、開始しているアプリはアップデートすることができないためである。
【０１４０】
ステップＳ１４０８では、アプリインストール処理部８０５は、インストール制御アプリ３０７を使用し、アプリ配信インストールアプリ３２１に対して、アプリをアップデートするための権限を委譲する。
【０１４１】
ステップＳ１４０９では、アプリ配信インストールアプリ３２１は、ステップＳ１４０２で取得したアプリ使用権ＩＤを使用してアプリ配信サーバー３００からアプリファイルとライセンスファイルを取得する。ここでは、アプリファイルは、最新のバージョン、あるいは、指定されたバージョンのアプリファイルを取得する。続いて、アプリ配信インストールアプリ３２１は、インストール制御アプリ３０７のアップデート処理を呼び出す。その際、アプリ配信サーバー３００から取得したアプリファイルとライセンスファイルを渡す。
【０１４２】
ステップＳ１４１０では、インストール制御アプリ３０７は、アプリ配信インストールアプリ３２１がステップＳ１４０８で取得したアプリケーションに対して、アップデート処理を実行する権限を有しているか否かの判定をおこなう。ステップＳ１４１１では、ステップＳ１４１０の判定に問題がない場合はステップＳ１４１２に進み、問題がある場合はエラー終了する。ステップＳ１４１２では、インストール制御アプリ３０７は、アプリファイルとライセンスファイルをアップデートする。
【０１４３】
アップデート処理の完了後、ステップＳ１４１３では、アプリインストール処理部８０５は、インストール制御アプリ３０７を使用し、アプリ配信インストールアプリ３２１に対して、アプリをアップデートするための権限を剥奪する。
【０１４４】
ステップＳ１４１４では、ステップＳ１４０７の停止処理がおこなわれていない場合は処理を終了し、停止処理がおこなわれていた場合はＳ１４１５に遷移し、アプリインストール処理部８０５は、インストール制御アプリ３０７を利用して、アプリの開始処理を呼び出す。
【０１４５】
ステップＳ１４１５では、インストール制御アプリ３０７は、アプリライフサイクル管理アプリ３１２がステップＳ１４０１で取得したアプリＩＤのアプリに対して、開始処理を実行する権限を有しているか否かの判定をおこなう。ステップＳ１４１６では、ステップＳ１４１５の判定に問題がない場合はステップＳ１４１７に進み、問題がある場合はエラー終了する。ステップＳ１４１８では、インストール制御アプリ３０７は、アプリを開始する。
【０１４６】
以上、説明した処理により、インストール対象のアプリによってインストールを許可されたアプリが、インストールが許可されていないアプリの機能を利用し、複合機１００のアプリをアップデートすることが出来るようになる。
【０１４７】
図１５は、アンインストールジョブの実行処理（Ｓ１００８）の詳細フローチャートである。
【０１４８】
ステップＳ１５０１では、周期処理部８０１は、アプリ関連設定ジョブ情報からアンインストールするアプリＩＤを取り出し、アプリアンインストール処理部８０６に渡す。更に、アプリアンインストール処理部８０６は、周期処理部８０１から受け取ったアプリＩＤを指定し、インストール制御アプリ３０７のアンインストール処理を呼び出す。
【０１４９】
ステップＳ１５０２では、インストール制御アプリ３０７は、アプリライフサイクル管理アプリ３１２がステップＳ１５０１で取得したアプリＩＤのアプリに対して、アンインストール処理を実行する権限を有しているか否かの判定をおこなう。ステップＳ１５０３では、ステップＳ１５０２の判定に問題がない場合はステップＳ１５０４に進み、問題がある場合はエラー終了する。ステップＳ１５０４では、インストール制御アプリ３０７はアプリをアンインストールする。
【０１５０】
ステップＳ１５０５では、周期処理部８０１は、ステップＳ１５０１で取り出したアプリＩＤに対応したアプリの識別情報とアプリ使用権ＩＤを管理対象アプリ管理部８０３から削除する。
【０１５１】
以上、説明した処理により、アンインストール対象のアプリによってアンインストールを許可されたアプリだけが、複合機１００のアプリをアンインストールすることが出来るようになる。
【０１５２】
以上説明したとおり第１実施形態によれば、アプリ毎にライフサイクル管理をおこなうアプリを制限することが可能になる。加えて、制限された状況下であっても、権限を持つアプリが権限を持たないアプリの提供するライフサイクル管理用のＡＰＩを利用することが可能になり、アプリの操作に係る管理性を向上するとともに既存資源の有効利用が可能となる。
【０１５３】
（第２実施形態）
第２実施形態では、アプリの操作権限を持たないアプリに一時的に権限を委譲し、権限を必要とするアプリを操作する形態について説明する。例えば、ＯＳ資源の逼迫や障害発生等が発生した場合、緊急で停止やアンインストールが必要になることがある。しかし、アプリライフサイクル管理アプリ３１２は前述したように、管理サーバー２００への定期的なポーリングによってアプリの処理要求を実行するため、ポーリング間隔によっては処理が実行されるまでに時間がかかり即時に対応が出来ない場合がある。
【０１５４】
一方、アプリ管理ＵＩ提供アプリ３０８は複合機１００の販売会社等に所属するサービスマンのみに操作が限定されているわけではない。すなわち、顧客（システム管理者）も操作が出来てしまうという問題がある。つまり、複合機１００の販売会社等に所属するサービスマンに限り、アプリの操作権限を持たないアプリ管理ＵＩ提供アプリ３０８によるアプリの操作を許可する必要がある。そこで、第２実施形態では、ログインコンテキスト２２００を利用して、現在操作しているユーザがサービスマンであるか否かを決定し、判定に基づいて一時的な権限の委譲を行う。
【０１５５】
図２１に示すログインコンテキスト２２００は、ログインアプリ３０９を通して正規にログイン処理を実行した場合にのみ、ログインアプリ３０９から取得することが出来るデータである。項目２２０１はログインしたユーザーＩＤである。項目２２０２はログインしたユーザーが所属するドメインである。項目２２０３はログインしたユーザーのロールであり、管理者権限であれば“Ａｄｍｉｎｉｓｔｒａｔｏｒ”、サービスマンであれば“Ｓｅｒｖｉｃｅｍａｎ”、一般ユーザーであれば“Ｇｅｎｅｒａｌ”、ゲストユーザーであれば“Ｇｕｅｓｔ”等が設定される。すなわち、コンテキスト２２００を参照することにより、ログインしているユーザの権限を決定することが可能である。
【０１５６】
図２１に示すパーミッションファイル２３００は、アプリ管理ＵＩ提供アプリ３０８が宣言するファイルである。項目２３０１はアプリ管理ＵＩ提供アプリ３０８の持つ権限を宣言する。本例では、ＯＳＧｉフレームワークのライフサイクル管理機能にアクセスできる権限を有していることを示している。
【０１５７】
図２２は、手動操作に基づくアプリ関連設定ジョブの開始処理を説明するフローチャートである。
【０１５８】
ステップＳ２４０１では、アプリ管理ＵＩ提供アプリ３０８は、ログインアプリ３０９を利用してログインコンテキスト２２００を取得し、アプリライフサイクル管理アプリ３１２が提供するＡＰＩに渡す。
【０１５９】
ステップＳ２４０２では、アプリライフサイクル管理アプリ３１２は、ステップＳ２４０１で取得したログインコンテキスト２２００の項目２２０３が“Ｓｅｒｖｉｃｅｍａｎ”であるかを判定し、ＹｅｓであればステップＳ２４０３に遷移し、Ｎｏであればエラー終了する。すなわち、アプリライフサイクル管理アプリ３１２に関する操作権限を有するユーザであるか否かを判定する。
【０１６０】
ステップＳ２４０３では、アプリライフサイクル管理アプリ３１２は、操作要求をしたアプリのパーミッションファイル２３００を取得する。ステップＳ２４０４では、アプリライフサイクル管理アプリ３１２は、ステップＳ２４０３で取得したパーミッションファイル２３００の項目２３０１が“ｏｒｇ．ｏｓｇｉ．ｆｒａｍｅｗｏｒｋ．ＡｄｍｉｎＰｅｒｍｉｓｓｉｏｎ”であるかを判定し、ＹｅｓであればステップＳ２４０５に遷移し、Ｎｏであればエラー終了する。ステップＳ２４０５では、アプリライフサイクル管理アプリ３１２は、アプリ関連設定ジョブ実行処理を実行し、処理を終了する。
【０１６１】
以上説明したとおり第２実施形態によれば、本来は操作権限を持たないアプリであっても、一時的に操作権限を委譲することにより、操作権限を必要とするアプリを操作することが可能となる。
【０１６２】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１６３】
３０１：ＯＳプラットフォーム；  ３０２：アプリプラットフォーム；  ３０３：ＪａｖａＶＭ；  ３０４：ライブラリ；  ３０５：ＯＳＧｉフレームワーク；  ３０６：システムアプリ；  ３１０：拡張システムアプリ；  ３２０：一般アプリ
【図１】
2017073035.tif 000003
【図２】
2017073035.tif 000004
【図３】
2017073035.tif 000005
【図４】
2017073035.tif 000006
【図５】
2017073035.tif 000007
【図６】
2017073035.tif 000008
【図７】
2017073035.tif 000009
【図８】
2017073035.tif 000010
【図９】
2017073035.tif 000011
【図１０】
2017073035.tif 000012
【図１１】
2017073035.tif 000013
【図１２】
2017073035.tif 000014
【図１３】
2017073035.tif 000015
【図１４】
2017073035.tif 000016
【図１５】
2017073035.tif 000017
【図１６】
2017073035.tif 000018
【図１７】
2017073035.tif 000019
【図１８】
2017073035.tif 000020
【図１９】
2017073035.tif 000021
【図２０】
2017073035.tif 000022
【図２１】
2017073035.tif 000023
【図２２】
2017073035.tif 000024