(57)【要約】      （修正有）【課題】ホストバンドルにインストールされていない状態でフラグメントバンドルを保持し、その後、ユーザが必要なときだけそのフラグメントバンドルをホストバンドルにインストールできる情報処理装置を提供する。【解決手段】複数のフラグメントバンドルを仮インストールし、更にユーザの必要に応じて、アプリ表示リスト１４００によって、フラグメントバンドル１４０３をホストバンドルへインストールする。【選択図】図１４
2015230622.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションが動作する情報処理装置であって、
第一のアプリケーションと、前記第一のアプリケーションを拡張するための第二のアプリケーションとを動作させるフレームワークと、
前記フレームワークへのアプリケーションのインストールを制御するインストール制御手段と
を備え、
前記インストール制御手段は、
前記第二のアプリケーションのインストールの指示を受け付けた場合、前記第二のアプリケーションのデータを第一の記憶領域に保持し、
前記インストールの指示を受け付けた後に前記第二のアプリケーションの有効化の指示を受け付けた場合に、前記第一の記憶領域に保持された前記第二のアプリケーションのデータを用いて前記フレームワークへ前記第二のアプリケーションのインストールを行うことを特徴とする情報処理装置。
【請求項２】
前記インストール制御手段は、
前記第二のアプリケーションをインストールする際に、当該第二のアプリケーションのデータを前記第一の記憶領域から、インストールされたアプリケーションのデータが保持される第二の記憶領域へ移動させることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記インストール制御手段は、有効化されている前記第二のアプリケーションに対する無効化の指示を受け付けた際に、前記第二のアプリケーションのデータを前記第二の記憶領域から前記第一の記憶領域へ移動させて前記フレームワークからアンインストールすることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記インストール制御手段は、前記第二のアプリケーションのデータが前記第一の記憶領域に保持されている際に、当該第二のアプリケーションのアンインストールの指示を受け付けた場合、当該第二のアプリケーションのデータを前記第一の記憶領域から削除することを特徴とする請求項２または３に記載の情報処理装置。
【請求項５】
前記第一のアプリケーションを拡張してインストール可能な第二のアプリケーションの数の上限の情報を保持する手段を更に有し、
前記インストール制御手段は、前記上限の情報に基づいて、前記第二のアプリケーションのデータを前記第一の記憶領域もしくは前記第二の記憶領域に配置することでインストールの制御を行うことを特徴とする請求項２乃至４のいずれか一項に記載の情報処理装置。
【請求項６】
前記インストール制御手段は、
新たな第二のアプリケーションのインストールの指示を受け付けた場合、当該新たな第二のアプリケーションのインストールにより前記上限を超えるか否かを判定し、
前記上限を超えると判定された場合に、すでにインストールされている第二のアプリケーションのうち無効化させる第二のアプリケーションの指定を受け付け、
前記指定された第二のアプリケーションのデータを前記第二の記憶領域から前記第一の記憶領域へ移動させて前記フレームワークからアンインストールする
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記インストール制御手段は更に、前記第二のアプリケーションに対する、インストール、アンインストール、有効化、および無効化の指示を受け付けるための管理画面を表示することを特徴とする請求項１乃至６のいずれか一項に記載の情報処理装置。
【請求項８】
前記管理画面は、前記第一のアプリケーションと当該第一のアプリケーションを拡張する前記第二のアプリケーションとを対応づけて表示することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記第一のアプリケーションのデータ、前記第二のアプリケーションのデータ、および前記情報処理装置の起動時のインストールの設定情報を保持する手段を更に有し、
前記インストール制御手段は、前記設定情報に基づき、前記第一のアプリケーションおよび前記第二のアプリケーションに対する起動時のインストールの制御を行うことを特徴とする請求項１乃至８のいずれか一項に記載の情報処理装置。
【請求項１０】
前記フレームワークは、Ｏｐｅｎ  Ｓｅｒｖｉｃｅｓ  Ｇａｔｅｗａｙ  Ｉｎｉｔｉａｔｉｖｅ（ＯＳＧｉ）であり、
前記第一のアプリケーションは、前記ＯＳＧｉにおけるホストバンドルであり、
前記第二のアプリケーションは、前記ＯＳＧｉにおけるフラグメントバンドルである
ことを特徴とする請求項１乃至９のいずれか一項に記載の情報処理装置。
【請求項１１】
情報処理装置におけるアプリケーションの管理方法であって、
前記情報処理装置は、第一のアプリケーションと、前記第一のアプリケーションを拡張するための第二のアプリケーションとを動作させるフレームワークを備え、
前記第二のアプリケーションのインストールの指示を受け付けた場合、前記第二のアプリケーションのデータを第一の記憶領域に保持する工程と、
前記インストールの指示を受け付けた後に前記第二のアプリケーションの有効化の指示を受け付けた場合に、前記第一の記憶領域に保持された前記第二のアプリケーションのデータを用いて前記フレームワークへ前記第二のアプリケーションのインストールを行う工程と
を有することを特徴とするアプリケーションの管理方法。
【請求項１２】
第一のアプリケーションと、前記第一のアプリケーションを拡張するための第二のアプリケーションとを動作させるフレームワークを備えたコンピュータに、
前記第二のアプリケーションのインストールの指示を受け付けた場合、前記第二のアプリケーションのデータを第一の記憶領域に保持する工程、
前記インストールの指示を受け付けた後に前記第二のアプリケーションの有効化の指示を受け付けた場合に、前記第一の記憶領域に保持された前記第二のアプリケーションのデータを用いて前記フレームワークへ前記第二のアプリケーションのインストールを行う工程
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、アプリケーションの管理方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、画像形成装置において、Ｊａｖａ（登録商標）環境に代表されるようなアプリケーション（以下、単に「アプリ」）の動作環境が提供されている。Ｊａｖａ（登録商標）の持つプログラムの可搬性を利用して、拡張可能なアプリを提供する技術が提案されている。画像形成装置の機能やユーザビィリティの向上を図るために、Ｊａｖａ（登録商標）環境などの環境下で動作するアプリを作成し、画像形成装置にインストールすることで、当該アプリにより所望の機能を実現できる。
【０００３】
アプリプラットフォームとしては、組み込み機器向けのＪａｖａ（登録商標）プラットフォームである、ＯＳＧｉ（Ｏｐｅｎ  Ｓｅｒｖｉｃｅｓ  Ｇａｔｅｗａｙ  Ｉｎｉｔｉａｔｉｖｅ）Ｓｅｒｖｉｃｅ  Ｐｌａｔｆｏｒｍがある（非特許文献１）。ＯＳＧｉでは、ソフトウェアモジュールの管理単位としてバンドルを定義しており、インストール／開始／停止／更新／アンインストールからなるライフサイクルを管理するための仕様を定義している。このようなアプリプラットフォームは、コピー、スキャン、プリント等の組み込み機能をアプリに提供することができる。
【０００４】
ＯＳＧｉには、ホストバンドルとフラグメントバンドルという仕組みがある。フラグメントバンドルとは、単独では動作せず、ホストバンドルのクラスローダ空間にバンドル自身を追加（アタッチ）する形式のバンドルである。アプリの修正または拡張時に、フラグメントバンドルを用いてホストバンドルの機能を修正または拡張することで、インストールするファイルサイズが小さくでき効率的にモジュールの配布が可能となる。一方、ホストバンドルとは、フラグメントバンドルの追加対象としているバンドルを指す。フラグメントバンドルは、単独では動作しないので、開始、停止という概念もない。よって、ホストバンドルのように、インストールはするが、利用する時まで開始をせず、利用する時になって初めてバンドルを開始する、といった利用ができない。また、ホストバンドルへのフラグメントバンドルのインストールは、ＯＳＧｉの仕様上、特にその数に制限を設けていない。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】ＯＳＧｉ  Ａｌｌｉａｎｃｅ、“ＯＳＧｉ  Ｓｅｒｖｉｃｅ  Ｐｌａｔｆｏｒｍ，Ｒｅｌｅａｓｅ４”、［ｏｎｌｉｎｅ］、２００５年１０月、ＯＳＧｉ  Ａｌｌｉａｎｃｅ、［平成２６年５月２７日検索］、インターネット＜http://www.osgi.org/Download/Release4V40＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ここで、ホストバンドルと同様に、複数のフラグメントバンドルのデータの保持はするが、ホストバンドルにアタッチされていない状態（以降、「仮インストール」と呼ぶ）にしておく。そして、利用する時になって初めてフラグメントバンドルを利用可能な状態、つまりホストバンドルにアタッチ（インストール）された状態にしたいという要望がある。これが実現することで、複数のフラグメントバンドルを仮インストールしておき、ユーザの必要に応じて、利用するフラグメントバンドルを選択してインストールすることが可能となる。また、実際にインストールするまでリソースの使用量を抑えることが可能となる。しかし、ＯＳＧｉの仕様上、このような要望に対応した機能はない（課題１）。
【０００７】
更に、フラグメントバンドルに対し、ユーザがフラグメントバンドルをインストールすることなく、予め画像形成装置に仮インストールすることで実現したいという要望がある。予め仮インストールされたフラグメントバンドルは、ユーザの必要に応じて、利用するフラグメントバンドルを選択してインストールすることが可能となる。しかし、ＯＳＧｉの仕様上、このような要望に対応した機能はない（課題２）。
【０００８】
また、ＯＳＧｉの仕様上、１つのホストバンドルに対するフラグメントバンドルの追加可能数に制限を加える仕組みはない。そのため、フラグメントバンドルによる機能拡張を想定するアプリがあり、ユーザにそのアプリを試用版で使わせたい場合、試用版ではフラグメントバンドルの追加数に一定の制限を設け、正規版アプリとの差別化を図ることができない。よって、フラグメントバンドルに対し仮インストールからホストバンドルにインストールを行う際に、フラグメントバンドルのインストールできる個数を制限できない（課題３）。
【課題を解決するための手段】
【０００９】
上記課題を解決するために本願発明は以下の構成を有する。すなわち、アプリケーションが動作する情報処理装置であって、第一のアプリケーションと、前記第一のアプリケーションを拡張するための第二のアプリケーションとを動作させるフレームワークと、前記フレームワークへのアプリケーションのインストールを制御するインストール制御手段とを備え、前記インストール制御手段は、前記第二のアプリケーションのインストールの指示を受け付けた場合、前記第二のアプリケーションのデータを第一の記憶領域に保持し、前記インストールの指示を受け付けた後に前記第二のアプリケーションの有効化の指示を受け付けた場合に、前記第一の記憶領域に保持された前記第二のアプリケーションのデータを用いて前記フレームワークへ前記第二のアプリケーションのインストールを行う。
【発明の効果】
【００１０】
本発明によれば、複数のフラグメントバンドルを仮インストールしておくことができ、更にユーザの必要に応じて、フラグメントバンドルをホストバンドルへインストールすることが可能となる。
【図面の簡単な説明】
【００１１】
【図１】本願発明に係る画像形成装置のハードウェア構成例を示す図。
【図２】本願発明に係る画像形成装置のソフトウェアの階層構成を示す図。
【図３】アプリのインストールする流れを示す図。
【図４】フラグメントバンドルの概念図。
【図５】アプリ管理画面、インストール画面の構成例を示す図。
【図６】フラグメントバンドル上限数を指定したマニフェストファイルを示す図。
【図７】ＯＳＧｉでのアプリ管理状態を示す図。
【図８】第一の実施形態を説明するためのブロック図。
【図９】第一の実施形態を説明するためのブロック図。
【図１０】第一の実施形態に係る仮インストール時のシーケンス図。
【図１１】第一の実施形態に係る有効化処理時のシーケンス図。
【図１２】第一の実施形態に係る無効化処理時のシーケンス図。
【図１３】第一の実施形態に係るアンインストール時のシーケンス図。
【図１４】第一の実施形態に係るアプリ表示リスト生成を説明するための図。
【図１５】第二の実施形態を説明するためのブロック図。
【図１６】第二の実施形態に係る初期化リストを示す図。
【図１７】第二の実施形態に係るインストーラ制御サービスの処理フローチャート。
【図１８】第三の実施形態を説明するためのブロック図。
【図１９】第三の実施形態に係るインストーラ制御サービスの処理フローチャート。
【図２０】第三の実施形態に係るアプリ管理サービスの処理フローチャート。
【図２１】第三の実施形態に係るダイアログの構成例を示す図。
【図２２】第三の実施形態に係るダイアログの構成例を示す図。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について図面を用いて説明する。まず、本明細書にて用いる用語の定義を行う。本明細書においては、Ｊａｖａ（登録商標）プラットフォームとして、ＯＳＧｉのフレームワークの使用を前提として説明し、アプリ、バンドル、モジュールはそれぞれ同義として扱う。ここでのモジュールは、具体的には、Ｊａｖａモジュールが該当する。
【００１３】
「ホストバンドル」とは、フラグメントバンドルの追加対象となるバンドルである。「フラグメントバンドル」とは、単独では動作せず、ホストバンドルのクラスローダ空間に自分自身を追加するバンドルである。ホストバンドルへフラグメントバンドルを追加すること（つまり、ホストバンドルへアタッチすること）を、以降、「フラグメントバンドルのインストール」と呼ぶ。同様に、ホストバンドルに追加状態にあるフラグメントバンドルを削除することを、以降「フラグメントバンドルのアンインストール」と呼ぶ。
【００１４】
ＯＳＧｉの仕様上、ホストバンドル：フラグメントバンドル＝１：Ｎの関係にある。また、ＯＳＧｉの仕様上、フラグメントバンドルは、１つのホストバンドルにのみ追加できる。また、上記のインストール／アンインストールの他に「仮インストール」という状態を扱う。この仮インストールは、フラグメントバンドルのデータは保持しているが、ホストバンドルにアタッチ（インストール）されていない状態を指す。なお、フラグメントバンドル以外を対象としてインストール／アンインストールと記述した場合には、上記のアタッチを意味するものではないものとする。
【００１５】
また、本明細書において便宜上、ホストバンドルを「第一のアプリケーション」とも記載し、フラグメントバンドルを「第二のアプリケーション」とも記載する。
【００１６】
［ハードウェア構成］
図１は、印刷機能やスキャン機能、ネットワーク通信機能などを備える画像形成装置１３０のハードウェア構成例を示す図である。画像形成装置１３０は、ＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）やネットワークプリンタなどのネットワークデバイスなどいずれのものであっても構わない。図１において、コントローラ１００は、画像形成装置１３０の全体を制御する。コントローラ１００は、スキャナ部１１３やプリンタ部１１４と電気的に接続され、一方でＬＡＮ１１６を介して外部デバイスと接続される。
【００１７】
ＣＰＵ１０１は、ＲＯＭ１０２に記憶された制御プログラム等に基づいて接続中の各種ハードウェアとのアクセスを統括的に制御し、またコントローラ１００内部で行われる各種処理についても統括的に制御する。ＲＯＭ１０２は読み出し専用の不揮発記憶領域であり、画像形成装置１３０のブートプログラムなどが格納されている。ＲＡＭ１０３は、ＣＰＵ１０１が動作するためのシステムワークメモリであり、各種データを一時記憶するためのメモリである。ＲＡＭ１０３は、記憶した内容を電源オフ後も保持可能なＦＲＡＭ（登録商標）およびＳＲＡＭ、もしくは電源オフ後に記憶内容が消去されるＤＲＡＭなどにより構成される。ＨＤＤ１０４は、不揮発記憶領域であり、システムアプリなどを格納する。後述するインストール対象のアプリを含むファームウェアは、ＨＤＤ１０４に格納される。
【００１８】
操作部Ｉ／Ｆ１０５は、システムバス１１９と操作部１１８を接続するインタフェース部である。具体的には、操作部Ｉ／Ｆ１０５は、操作部１１８に表示するデータをシステムバス１１９から受け取って操作部１１８に表示させ、また操作部１１８からの入力情報をシステムバス１１９へ出力する。画像形成装置１３０に対するユーザの指示や情報提示の受け付けは、操作部１１８を介して行う。ネットワークＩ／Ｆ１０６は、ＬＡＮ１１６、ＷＡＮ１１７、及びシステムバス１１９に接続し、外部との情報の入出力を行う。スキャナＩ／Ｆ１０８は、スキャナ部１１３から受取った画像データを画像形成部１０９へ送信する。画像形成部１０９は、画像データの方向変換、画像圧縮、伸張などを行う。プリンタＩ／Ｆ１１０は、画像形成部１０９から送られた画像データを受取り、画像形成後にプリンタ部１１４に送信する。プリンタ部１１４は、受信した画像データの印刷を行う。
【００１９】
なお、図３に示す、ユーザが操作する情報処理装置であるＰＣ３００は、Ｗｅｂブラウザが動作する一般的なものであればよく、ハードウェアおよびソフトウェア構成の説明はここでは省略する。
【００２０】
［ソフトウェア構成］
図２は、画像形成装置１３０のソフトウェアの階層構成を示す図である。なお、図２以降に示す各ソフトウェアは、ＲＯＭ１０２もしくはＨＤＤ１０４に保存され、ＣＰＵ１０１にて読み出されて実行される。また、実行時に使用する各種情報は、ＲＡＭ１０３もしくはＨＤＤ１０４に保持され、ソフトウェア機能間で各種情報のやりとりが行われる。さらに外部機器との通信は、ネットワークＩ／Ｆ１０６を用いて通信を行う。
【００２１】
ソフトウェア２００は、オペレーティングシステム（ＯＳ）プラットフォーム２０１を有し、ＯＳプラットフォーム２０１上にソフトウェアプラットフォーム２０２が構成される。ソフトウェアプラットフォーム２０２は、ＪａｖａＶＭ２０３のランタイム環境として構成され、インタプリタとしてのＪａｖａＶＭ２０３、フレームワーク群２０４、およびライブラリ２０５を備えて構成される。ライブラリ２０５は、標準のＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）ライブラリを含んで構成される。フレームワーク群２０４は、フレームワークの一つとしてＯＳＧｉ２０６を含んで構成される。ＯＳＧｉ２０６は、単一のＪａｖａＶＭ２０３上に複数のアプリを動作させる。更に、ＯＳＧｉ拡張部２１１は、ＯＳＧｉ２０６に対し必要に応じて機能を拡張可能である。ＯＳＧｉ２０６は、アプリのライフサイクルの管理やアプリ間通信機能などを提供する。ＯＳＧｉ２０６上には、複数のシステムサービスがプリインストールされている。システムサービスには、複数のアプリ群を管理し、新たなアプリの追加、更新、削除をするためのアプリ管理サービス２０８がある。アプリ管理サービス２０８は、インストール制御サービス２０７と連携して、アプリの追加、更新、削除を行う。画像形成装置１３０の起動時に、ＯＳＧｉ２０６は、ＨＤＤ１０４に保存されたサービス起動順リスト（不図示）に従い、ログインアプリ２０９、インストール制御サービス２０７、アプリ管理サービス２０８などのサービスを起動する。なお、フレームワーク群２０４は、ＯＳＧｉ２０６以外のフレームワークを含んでいてもよく、ここではその説明は省略する。
【００２２】
一般アプリ２１０は、画像形成装置１３０において各種処理をユーザに提供する。例えば、画像の加工や圧縮アプリ、印刷制限などの部門管理を行うアプリなどが挙げられる。その他のインストールされたアプリとして、ログインユーザを管理するログインアプリ２０９がある。ログインアプリ２０９は、ログイン中に任意のアプリから任意のタイミングでログイン情報の問い合わせに備え、停止できない特性を持つアプリである。仮にログインアプリが停止していた場合、ログイン情報の取得ができなくなるため、例えば、ログイン情報に紐づくデータを利用しているようなアプリがある場合、データの取得に失敗し、その動作に支障が生じる。ここでのログイン情報とは、画像形成装置１３０に現時点でログインしているユーザのログイン名やメールアドレスなどの情報を指す。ログインアプリ２０９は、上述したような特性を持つため、画像形成装置１３０が起動中において必ず１つが動作する。
【００２３】
各種機能を実現する一般アプリ２１０は、アプリ管理サービス２０８の管理下で動作する。アプリ管理サービス２０８は、管理下に追加されたアプリのバージョンを含むアプリ情報や、ライセンス情報などを保持する。さらにアプリ管理サービス２０８は、画像形成装置１３０内のアプリのアンインストール指示に応答し、一般アプリ２１０を管理対象から外す処理を行う。一般アプリ２１０およびログインアプリ２０９は、図４を用いて後述するホストバンドルとフラグメントバンドルという形態で、提供することが可能である。インストール制御サービス２０７は、各種アプリのインストール／アンインストールの制御を行う。インストール制御サービス２０７、アプリ管理サービス２０８、ＯＳＧｉ２０６の詳細な連携については、図を用いて後述する。
【００２４】
［アプリのインストール］
図３は、ユーザが、ＰＣ３００から画像形成装置１３０へ、アプリをインストールする際の流れを示す概念図である。ユーザは、ＰＣ３００のＷＥＢブラウザ（不図示）に図５のインストール画面５３０で示すＷＥＢページで構成されたアプリのインストールＵＩ３０１を表示させる。ユーザは、インストールＵＩ３０１からインストールしたいアプリを指定することで、画像形成装置１３０へアプリのインストールの指示を行う。インストールＵＩ３０１で指定されたアプリのデータを受信したアプリ管理サービス２０８は、それをインストール制御サービス２０７に渡す。アプリのデータを受信したインストール制御サービス２０７は、ＯＳＧｉ２０６にインストールを依頼し、ＯＳＧｉ２０６はそのアプリのインストールを行う。インストールされたアプリは、アプリ管理サービス２０８によって管理される。
【００２５】
［バンドルの構成］
図４は、フラグメントバンドルの概念を説明するための図である。ここでは、ホストバンドル４００に対して、言語ローカライズリソースを有する２つのフラグメントバンドル４０１、４０２がインストールされる例を示している。なお、ここでの言語ローカライズリソースは、ホストバンドル４００を、各国（本例では日本および中国）の言語に対応させるためのリソースを示す。ホストバンドルにフラグメントバンドルをインストールするためには、ＯＳＧｉの仕様上、以下に示すマニフェスト、及びバンドルパーミッションの指定が必要となる。
・ホストバンドルのマニフェストファイル４０３
Ｂｕｎｄｌｅ−ＭａｎｉｆｅｓｔＶｅｒｓｉｏｎ：“２”を指定
Ｂｕｎｄｌｅ−ＳｙｍｂｏｌｉｃＮａｍｅ：フレームワーク内で一意な名前を付与
・フラグメントバンドルのマニフェストファイル４０５
Ｂｕｎｄｌｅ−ＭａｎｉｆｅｓｔＶｅｒｓｉｏｎ：“２”を指定
Ｆｒａｇｍｅｎｔ−Ｈｏｓｔ：ホストバンドルのマニフェストファイル４０３に記載の＜ホストのバンドルシンボリック名＞を指定。本値が一致することでホストバンドルとフラグメントバンドルが同一アプリの構成要素であることを示す
・ホストバンドルのパーミッション４０４
ＢｕｎｄｌｅＰｅｒｍｉｓｓｉｏｎ：［バンドルシンボリック名，ＨＯＳＴ］
・フラグメントバンドルのパーミッション４０６
ＢｕｎｄｌｅＰｅｒｍｉｓｓｉｏｎ：［バンドルシンボリック名，ＦＲＡＧＭＥＮＴ］
【００２６】
上記条件を満足する状態でフラグメントバンドルをインストールした場合、ＯＳＧｉ２０６は、フラグメントバンドルのマニフェスト情報からホストバンドルを特定し、ホストバンドルのクラスパスにフラグメントバンドル自身のクラスパスの追加を行う。ここで「クラスパス」とは、Ｊａｖａ（登録商標）アプリを実行する場合に、ＪａｖａＶＭがどの場所からクラスファイルを読み込めばよいかを、指定するための情報である。更に、ホストバンドルのクラスローダによって、フラグメントバンドル内の全てのクラスとリソースがロードされる。ここで、「クラスローダ」とは、クラスのロードやリソースの検索を担当するオブジェクトである。全てのクラスは、クラスローダによってＪａｖａＶＭにロードされ、アプリから利用可能となる。なお、ホストバンドルのクラスローダによるロードの実行は、ホストバンドル起動時に行われるため、必ずホストバンドルを一度停止し、クラスパスを追加した上でロードする必要がある。よって、ホストバンドルが停止していない場合は、インストールに失敗する。フラグメントバンドルがインストールされた後は、ホストバンドルの一部として利用可能となる。
【００２７】
本例では、フラグメントバンドル４０１、４０２として日本語リソースおよび中国語リソースがホストバンドル４００にインストール（アタッチ）される。インストール後、ホストバンドル４００が、これらの言語ローカライズリソースとしての日本語リソースおよび中国語リソースを利用し、リソースの言語の切り替えが可能となる。つまり、ホストバンドル４００のＵＩ上の標準の表示は英語であるが、ホストバンドル４００のＵＩ上でリソースの切り替え指定をすることで、日本語表示や中国語表示が可能となるようにホストバンドルが拡張される。なお、リソースとしては、ここで示したような言語リソースだけでなく、イメージリソースであってもよい。標準では英語表示のイメージを利用していたが、ホストバンドル４００のＵＩ上でリソースの切り替え指定をすることで、日本語または中国語のイメージ表示に切り替えることが可能である。このような目的のフラグメントバンドルを「リソース用フラグメントバンドル」と呼ぶ。更に、このようなリソースの追加だけでなく、アプリの機能拡張的なことも可能である。例えば、標準機能として提供されたＵＩを、フラグメントバンドルを追加することで、よりリッチなＵＩになるように機能拡張することが可能である。このような目的のフラグメントバンドルを「機能拡張用フラグメントバンドル」と呼ぶ。
【００２８】
更に、ホストバンドルがログインアプリ２０９の場合の例として、ホストバンドル部分でログインに関する基本的な処理を担う。その一方で、フラグメントバンドル部分で、例えばＩＣカード認証のようなＩＣカードをかざすことで、そのＩＣカードに載っている情報によりログインするといったＵＩ部分を補うといった構成をとることも可能となる。
【００２９】
また、フラグメントバンドルのアンインストールも同様にホストバンドルのクラスパスにフラグメントバンドル自身のクラスパスの削除を行い、更に、ホストバンドルのクラスローダによって、再度ホストバンドルに必要なクラスをロードする必要がある。そのため、同様にフラグメントバンドルのアンインストールは、必ずホストバンドルが停止した状態で行う必要がある。
【００３０】
［ＵＩ画面］
図５は、アプリ管理サービス２０８における、一般アプリ２１０のアプリ管理画面５００とインストール画面５３０を示す図である。ここでは、一般アプリ２１０の管理画面で説明するが、ログインアプリ２０９の管理画面についても同様の画面とする。
【００３１】
まず、一般アプリ２１０のアプリ管理画面５００について説明する。アプリケーション名５０１は、管理されている一般アプリ名を表示する。この例の場合、アプリケーションＡ５０５とアプリケーションＢ５０６の２つが管理されている。更に、アプリケーションＡ５０５をホストバンドルとして、フラグメントバンドルＡ５０７およびフラグメントバンドルＢ５０８が管理されている。この場合、フラグメントバンドルＡ５０７およびフラグメントバンドルＢ５０８は、そのホストバンドルに紐づいていることが分かるように、アプリケーションＡ５０５と関連付けて表示される。インストール日５０２は、各アプリがインストールされた日付である。アプリケーションＩＤ５０３は、各アプリに一意に割り振られたアプリケーションＩＤを表示する。
【００３２】
状態５０４は、各アプリの状態を示す。ホストバンドルであるアプリの状態が開始であれば「開始」、停止であれば「停止」と表示される。また、フラグメントバンドルに対しては、ホストバンドルにインストール（アタッチ）されている場合は「有効」と表示され、仮インストール状態の場合は「無効」と表示される。開始ボタン５１６／停止ボタン５１３は、ホストバンドルであるアプリの開始停止を切り替える指示ボタンである。開始状態のアプリの場合、停止ボタンが表示され、停止状態のアプリの場合、開始ボタンが表示される。有効化ボタン５１５／無効化ボタン５１４は、フラグメントバンドルの有効／無効を切り替えるための指示ボタンである。
【００３３】
本例に示す各ボタンについて、具体的には、開始状態のアプリ（本例では、「アプリケーションＡ５０５」）の停止ボタン５１３を押下すると、その状態５０４は停止に変更される。一方、停止状態のアプリ（本例では、「アプリケーションＢ５０６」）の開始ボタン５１６を押下すると、その状態５０４は「開始」に変更される。有効状態のアプリ（本例では、「フラグメントバンドルＡ５０７」）の無効化ボタン５１４を押下すると、その状態５０４は「無効」に変更される。一方、無効状態のアプリ（本例では、「フラグメントバンドルＢ５０８」）の有効化ボタン５１５を押下すると、その状態５０４は「有効」に変更される。
【００３４】
アンインストールボタン５１７〜５２０は、各アプリのアンインストールを指示するための指示ボタンである。フラグメントバンドルのアンインストールは、フラグメントバンドルのみが対象となる。例えば、フラグメントバンドルＡ５０７のアンインストールボタン５１８が押下されると、フラグメントバンドルＡ５０７だけがアンインストールされる。一方、ホストバンドルである、アプリケーションＡ５０５のアンインストールボタン５１７を押下時は、アプリケーションＡ５０５に加え、それに紐づいたフラグメントバンドルＡ５０７とフラグメントバンドルＢ５０８も同時にアンインストールされる。
【００３５】
次に、インストール画面５３０について説明する。参照ボタン５３３は、ファイルパスを選択する画面（不図示）を表示する。その選択画面でアプリファイルを指定すると、アプリケーションファイルのパス５３１にアプリファイルへのパスが入力される。アプリは、セキュリティやビジネス上の観点からインストール処理において、アプリを復号するためのライセンスファイルが必要となる場合がある。その場合、参照ボタン５３４を押下すると、ファイルパスを選択する画面（不図示）を表示する。その選択画面でライセンスファイルを指定すると、ライセンスファイルのパス５３２にライセンスファイルへのパスが入力される。インストールボタン５３５が押下されると、アプリケーションファイルのパス５３１で指定したアプリのインストールが開始される。フラグメントバンドルがインストールに指定された場合、フラグメントバンドルは、一旦、仮インストールされる。
【００３６】
［マニフェストファイル］
図６は、ホストバンドル４００におけるマニフェストファイル６００の記述の一部を示す図である。マニフェストファイル６００には、バージョンや、Ｊａｖａ（登録商標）アプリのｊａｒファイルのプロパティ値が記述される。また、マニフェストファイル６００では、マニフェスト項目とそれに対する値という形式で記述される。なお、マニフェストファイルに含まれる記述のうち、本願発明に直接関連しない記述に関しては、説明を省略する。フラグメントバンドル個数の上限値（Ｆｒａｇｍｅｎｔ−ＭａｘＣｏｕｎｔ）６０１は、マニフェスト項目の中の一つであり、そのホストバンドルにインストール可能なフラグメントバンドルの個数の上限値（以降、フラグメント上限値）を意味する。この例では、フラグメント上限値に“１”が指定されている。すなわち、フラグメントバンドルを１つインストール可能であることを示している。また、特別な値として、“＊”が指定されている場合、上限値に制限がない状態を示す。このマニフェスト項目は、ホストバンドルでしか意味をなさないため、ホストバンドルでない通常アプリ及びフラグメントバンドルでは記述されない。
【００３７】
［管理構成］
図７は、ＯＳＧｉ２０６によるアプリとマニフェストファイルに記述された値のメモリ上での管理状態７０８を示す図である。まず、画像形成装置１３０にインストールされ、ＯＳＧｉ２０６によって管理されているアプリの全体像を説明する。本例において、ホストバンドルである一般アプリＡ７００に対し、フラグメント上限値７０１として“２”が記述されている。また、フラグメントバンドルであるフラグメントＸ７０２及びフラグメントＹ７０３が一般アプリＡ７００にインストールされている。同様に、ホストバンドルである一般アプリＢ７０４に対し、フラグメント上限値７０５として“１”が記述されている。また、フラグメントバンドルであるフラグメントＺ７０６が一般アプリＢ７０４にインストールされている。更に、ホストバンドルでもフラグメントバンドルでもない通常アプリである一般アプリＣ７０７がインストールされている。
【００３８】
ＯＳＧｉ２０６は、管理状態７０８で示す情報をメモリ上に保持する。具体的には、アプリがホストバンドルであるか否かの情報、アプリのマニフェストファイルに記述されたフラグメント上限値、及びアプリがホストバンドルである場合にアプリに紐づいているフラグメントバンドルとの関連性が管理される。これらは、対象とするアプリ名や、マニフェストファイルに記述された項目値などをキーとして指定することで、それに紐づいた値を取得できる。対象とするアプリ名及びその状態は、ＯＳＧｉ２０６の管理状態７０８から取得可能である。
【００３９】
インストール制御サービス２０７は、ＯＳＧｉ２０６に問い合わせることにより、そのホストバンドルとフラグメントバンドルの関連性、フラグメント上限値、及びフラグメントバンドルの数などの情報を取得することが可能となる。取得方法として、具体的には、一般アプリＡとホストバンドルをキーとして指定することで、一般アプリＡ７００がホストバンドルか否かの情報が取得可能である。また、一般アプリＡとフラグメント上限値をキーとして指定することで、上限値“２”を取得可能である。一般アプリＡとフラグメントバンドルをキーとして指定することで、一般アプリＡ７００に紐づくフラグメントＸとフラグメントＹ、及びその数が“２”であることを取得可能である。
【００４０】
＜第一の実施形態＞
本実施形態では、一般アプリに対するフラグメントバンドルの仮インストールに関する実施形態を示す。なお本実施形態は、上述した課題１を解決する例となる。
【００４１】
図８は、本実施形態を説明するためのブロック図である。ホストバンドルである一般アプリＡ８００に、フラグメントバンドルであるフラグメントＸ８０１を仮インストールする場合を示す。ここでは、画像形成装置１３０は、インストール作業フォルダ８０２、アプリフォルダ８０３、および仮インストールフォルダ８０４の３つの記憶領域を有し、これらの記憶領域はＨＤＤ１０４等に設けられる。各記憶領域の役割、およびそれらに配置されるファイル（データ）については処理の流れと共に説明する。
【００４２】
まず、インストール制御サービス２０７は、インストール指示時に指定されたライセンスファイルによりフラグメントＸ８０１を復号化し、インストール作業フォルダ８０２に配置する。その後、インストール制御サービス２０７は、復号化されたフラグメントＸ８０５のマニフェストファイルに記載されているホストバンドル情報から、ホストバンドルが、一般アプリＡ８００であることを特定した上で、仮インストールフォルダ８０４に配置する。仮インストールフォルダ８０４に配置されているフラグメントバンドルは、仮インストールの状態であり、この状態ではＯＳＧｉ２０６の管理下にはない。また、８０７で示すように、ホストバンドルである一般アプリＡ８００のユニークなアプリＩＤをフォルダ名としたフォルダの配下に、フラグメントＸ８０６を配置する。
【００４３】
図９は、図８で仮インストールされたフラグメントＸ８０６を有効化する際の流れを示す図である。ユーザの有効化指示９０１により、インストール制御サービス２０７は、無効状態で仮インストールされているフラグメントＸ８０６の有効化処理を行う。インストール制御サービス２０７は、フラグメントＸ８０６を有効化（つまり、ホストバンドルにアタッチ）することにより、フラグメントＸ８０６のデータがアプリフォルダ８０３に配置される。この状態では、フラグメントＸ８０６はＯＳＧｉ２０６の管理下にあり、一般アプリＡ８００とフラグメントＸ９００の関連性をＯＳＧｉ２０６が保持する。
【００４４】
一方、ユーザの無効化指示９０２により、インストール制御サービス２０７は、有効状態でインストールされているフラグメントＸ９００の無効化処理を行う。無効化処理により、フラグメントＸ９００は、再び仮インストールフォルダ８０４に無効状態として配置される。したがって、フラグメントの有効状態／無効状態のそれぞれにおいて、フラグメントのデータを移動させ、格納するフォルダを切り替える。
【００４５】
［処理シーケンス］
以下に本実施形態に係るフラグメントバンドルに対する処理について説明する。なお、ホストバンドルであるアプリのインストール／アンインストールについては、従来の方法を用いるものとし、ここでは説明を省略する。なお、図１０〜図１３に示す実線矢印は、処理の要求やデータの送信を示し、破線矢印は要求等に対する応答を示す。
【００４６】
（仮インストール）
図１０は、ユーザがフラグメントバンドルを選択して、インストールボタン５３５を押下することにより、フラグメントバンドルが仮インストールされる処理の流れ、データの流れを示すシーケンス図である。なお、本実施形態では、画像形成装置１３０内の各処理は、ＣＰＵ１０１が対応するプログラムを読み出して実行することにより、各動作として実現される。
【００４７】
Ｓ１０００にて、ユーザ１０５０は、インストールしたいアプリとそれに対応したライセンスファイルを選択し、インストールボタン５３５を押下する。Ｓ１００１にて、アプリ管理サービス２０８は、指定されたアプリとライセンスファイル（ファイル１０５１）を、インストール作業フォルダ８０２にアップロードする。
【００４８】
Ｓ１００２にて、アプリ管理サービス２０８は、インストール制御サービス２０７に指定されたアプリのインストールを要求する。ここでのインストール要求に対しては、仮インストールまでが行われることとなる。Ｓ１００３にて、インストール制御サービス２０７は、インストール作業フォルダ８０２にアップロードされた、ライセンスファイルからアプリを復号化する。更に、インストール制御サービス２０７は、アプリのマニフェストファイルの値からフラグメントバンドルであることを判定した場合、復号化したアプリファイル１０５２のファイル名を自身のアプリＩＤに変更し、仮インストールフォルダ８０４に配置する。このとき、図８に示したように、ホストバンドルのアプリＩＤをフォルダ名とするフォルダの配下に配置される。Ｓ１００５にて、インストール制御サービス２０７は、インストール作業フォルダ８０２にアップロードされた、アプリとライセンスファイル（ファイル１０５１）を削除する。以上により、フラグメントバンドルは画像形成装置１３０に仮インストールされ、無効状態となる。
【００４９】
（有効化）
図１１は、図１０の処理の後、ユーザ１０５０が無効状態のフラグメントバンドルの有効化ボタン５１５を押下することにより、フラグメントバンドルが有効化される処理の流れ、データの流れを示すシーケンス図である。
【００５０】
Ｓ１１００にて、ユーザ１０５０は、仮インストールしたフラグメントバンドルの有効化ボタンを押下する。Ｓ１１０１にて、アプリ管理サービス２０８は、選択されたアプリ（フラグメントバンドル）のアプリＩＤとともに、インストール制御サービス２０７に有効化処理を要求する。Ｓ１１０２にて、インストール制御サービス２０７は、ＯＳＧｉ２０６に、ファイルパスを指定してインストールを要求する。ここで、ファイルパスは、アプリ管理サービス２０８から受信したアプリＩＤを基に作成される。具体的には、指定されたフラグメントバンドルのアプリＩＤおよび、そのフラグメントバンドルに対応するホストバンドルのアプリＩＤから作成される。
【００５１】
Ｓ１１０３にて、ＯＳＧｉ２０６は、インストール制御サービス２０７から受信したファイルパスで指示された仮インストールフォルダ８０４に配置されているアプリファイル１０５２をインストールする。Ｓ１１０４にて、ＯＳＧｉ２０６は、インストールのために、アプリフォルダ８０３にアプリを“ｉｎｓ０．ｊａｒ”という名前のｊａｒファイル１１５０にてインストールする。なお、ここでのファイル名は一例であり、これに限定するものではない。インストールが成功した後、Ｓ１１０５にて、インストール制御サービス２０７は、仮インストールフォルダに配置したアプリファイル１０５２を削除する。以上により、フラグメントバンドルは有効化され、有効状態となる。
【００５２】
（無効化）
図１２は、図１１の処理の後、ユーザ１０５０が有効状態のフラグメントバンドルの無効化ボタン５１４を押下することにより、フラグメントバンドルが無効化される処理の流れ、データの流れを示すシーケンス図である。
【００５３】
Ｓ１２００にて、ユーザ１０５０は、有効状態のフラグメントファイルの無効化ボタンを押下する。Ｓ１２０１にて、アプリ管理サービス２０８は、選択されたアプリ（フラグメントバンドル）のアプリＩＤとともに、インストール制御サービス２０７に無効化処理をする。Ｓ１２０２において、インストール制御サービス２０７は、ＯＳＧｉ２０６から、アプリのｊａｒファイル１１５０（ｉｎｓ０．ｊａｒ）のファイルパスを取得する。Ｓ１２０３にて、インストール制御サービス２０７は、Ｓ１２０２で取得したファイルパスを基に、アプリフォルダに配置されたｊａｒファイル１１５０を仮インストールフォルダ８０４にアプリファイル１２５０としてコピーする。Ｓ１２０５にて、インストール制御サービス２０７は、ＯＳＧｉ２０６に、アンインストールを要求する。ここでのアンインストールにより、フラグメントバンドルは、仮インストールの状態となる。Ｓ１２０６にて、ＯＳＧｉ２０６は、アプリフォルダ８０３から、ｊａｒファイル１１５０（ｉｎｓ０．ｊａｒファイル）を削除する。以上により、フラグメントバンドルは無効化され、無効状態となる。
【００５４】
（アンインストール）
図１３は、図１２の処理の後、ユーザ１０５０が無効状態のフラグメントバンドルのアンインストールボタン５１９を押下することにより、フラグメントバンドルがアンインストールされる処理の流れ、データの流れを示すシーケンス図である。
【００５５】
Ｓ１３００にて、ユーザ１０５０は、無効状態のフラグメントバンドルのアンインストールボタンを押下する。Ｓ１３０１にて、アプリ管理サービス２０８は、選択されたアプリのアプリＩＤとともに、インストール制御サービス２０７にアンインストール処理を要求する。インストール制御サービス２０７は、指定されたファイルパスにより、仮インストールフォルダ８０４からアプリファイル１２５０を削除する。ここで、ファイルパスは、アプリ管理サービス２０８から受信したアプリＩＤを基に作成される。以上により、仮ンストールの状態のフラグメントバンドルはアンインストールされる。
【００５６】
［アプリ表示リストの作成］
図１４は、図５で示したアプリ管理画面５００を表示するためのアプリ表示リスト１４００を、アプリ管理サービス２０８が作成する方法を説明するための図である。
【００５７】
Ｓ１４５０にて、アプリ管理サービス２０８は、インストール制御サービス２０７にアプリ表示リストの情報を要求する。Ｓ１４５１にて、インストール制御サービス２０７は、ＯＳＧｉ２０６からアプリリスト１４０１の一覧を取得する。更に、インストール制御サービス２０７は、取得したアプリリスト１４０１の中にホストバンドルがあるか否かをＯＳＧｉ２０６に問い合わせる。ＯＳＧｉ２０６は、フラグメントバンドルのインストール時に、ホストバンドルとフラグメントバンドルの関連性を破線１４０２に示すように保持する。よって、インストール制御サービス２０７は、指定されたホストバンドルに紐づくフラグメントバンドルの情報を取得可能である。
【００５８】
Ｓ１４５２にて、インストール制御サービス２０７は、ホストバンドルに紐づくフラグメントバンドルを仮インストールフォルダ１４０４から探索する。これらの情報を基に、アプリ表示リスト１４００が作成され、アプリ管理サービス２０８へ提供される。アプリ管理サービス２０８は、作成されたアプリ表示リスト１４００の情報に従って、アプリ管理画面５００上にアプリを表示する。
【００５９】
以上、本実施形態により、仮インストールという状態により、フラグメントバンドルをホストバンドルにアタッチせずに保持する状態を設ける。これにより、画像形成装置のリソースの使用量を抑えることが可能となる。また、フラグメントバンドルの仮インストール、有効化、無効化、無効化からのアンインストールを制御し、その状態を管理／表示することが可能となる。
【００６０】
＜第二の実施形態＞
本実施形態では、予めファームウェアに組み込んだフラグメントバンドルを、第一の実施形態で示した仮インストールの状態、または、ホストバンドルへアタッチする実施形態を示す。本実施形態は、第一の実施形態に加え、更に上述した課題２を解決する例となる。
【００６１】
図１５は、本実施形態を説明するための図である。ファーム１５０１には、図１６で示す初期化リスト１５０２、及びシステムバンドルＡ１５０３、フラグメントＸ１５０４、およびフラグメントＹ１５０５が配置される。ここで、フラグメントＸ１５０４およびフラグメントＹ１５０５は、システムバンドルＡ１５０３をホストバンドルとするフラグメントバンドルである。ファーム１５０１に含まれる各データは、ＨＤＤ１０４等に保持されているものとする。
【００６２】
図１６は、初期化リスト１５０２の内容を示し、画像形成装置１３０が起動した際のアプリのインストールの制御に関する設定情報を示す。初期化リスト１５０２の項目１６００は、アプリを特定するための名称である。この名称は、ユニークなアプリＩＤを指定してもよい。項目１６０１（ｓｔａｒｔ）は、アプリの初期状態が開始／停止／有効／無効を指定する。この項目の値として、開始／停止については、システムバンドルが対象となる。また、有効／無効については、フラグメントバンドルが対象となる。項目１６０２（ｓｔａｒｔｌｅｖｅｌ）は、アプリのスタートレベルを示す。この数値が小さい順番にＯＳＧｉ２０６は、ファーム１５０１に配置されたバンドルをインストールし、項目１６０１に従った初期状態にする。ここで、記述１６０３は、システムバンドルＡ１５０３について示し、初期状態は「開始（ｏｎ）」、スタートレベルは「５」であることを意味する。記述１６０４は、フラグメントＸ１５０４について示し、初期状態は「有効（ｏｎ）」、スタートレベルは「２０」であることを意味する。記述１６０５は、フラグメントＹ１５０５について示し、初期状態は「無効（ｏｆｆ）」、スタートレベルは「２１」であることを意味する。
【００６３】
図１５の説明に戻る。画像形成装置１３０の初回起動時に、ＯＳＧｉ２０６は、初期化リスト１５０２に従い、スタートレベルの値が小さい順番にバンドルをインストールする。本例では、ＯＳＧｉ２０６は、まず、スタートレベルが“５”のシステムバンドルＡ１５０３をインストールする。その後、ＯＳＧｉ２０６は、スタートレベルが“２０”のフラグメントＸ１５０４をインストールする。この時、ＯＳＧｉ２０６は、初期化リスト１５０２の項目１６０１に従い、フラグメントＸを有効状態でインストールする（図５の１５０６）。更に、ＯＳＧｉ２０６は、スタートレベルが“２１”のフラグメントＹ１５０５をインストールする。この時、ＯＳＧｉ２０６は、初期化リストの項目１６０１に従い、フラグメントＹ１５０５を無効状態として仮インストールする（図１５の１５０７）。
【００６４】
［処理フロー］
図１７は、ＯＳＧｉ２０６による起動時のバンドルのインストール処理のフローチャートを示す。本処理は、画像形成装置１３０のＣＰＵ１０１がＨＤＤ１０４等に格納されたプログラムを読み出して実行することにより、実現される。
【００６５】
バンドルインストール処理が開始すると、Ｓ１７０１にて、ＯＳＧｉ２０６は、初期化リスト１５０２を読み込む。Ｓ１７０２にて、ＯＳＧｉ２０６は、初期化リスト１５０２の項目１６０２のスタートレベルの値が最も小さいバンドルのマニフェストファイルを読み込む。Ｓ１７０３にて、ＯＳＧｉ２０６は、マニフェストファイルに基づき、着目しているバンドルがシステムバンドルかフラグメントバンドルかを判定する。バンドルがシステムバンドルの場合（Ｓ１７０３にてＮＯ）、Ｓ１７０４にて、ＯＳＧｉ２０６は、システムバンドルのインストール処理を行う。インストール処理の後、Ｓ１７０８へ進む。
【００６６】
一方、着目しているバンドルがフラグメントバンドルである場合（Ｓ１７０３にてＹＥＳ）、Ｓ１７０５にて、ＯＳＧｉ２０６は、初期化リスト１５０２の項目１６０１の初期化状態を読み取り、「ＯＮ」が指定されているか否かを確認する。ＯＮの場合（Ｓ１７０５にてＹＥＳ）、Ｓ１７０６にて、ＯＳＧｉ２０６は、フラグメントバンドルの有効化処理を行う。一方、ＯＦＦの場合（Ｓ１７０５にてＮＯ）、Ｓ１７０７にて、ＯＳＧｉ２０６は、フラグメントバンドルの無効化処理を行う。Ｓ１７０８にて、ＯＳＧｉ２０６は、初期化リスト１５０２に含まれる全てのバンドルをインストールしたか否かを確認する。全てのバンドルをインストールしていない場合（Ｓ１７０８にてＮＯ）、Ｓ１７０２に戻り、ＯＳＧｉ２０６は、次のバンドルに対して処理を実行する。全てのバンドルをインストールした場合（Ｓ１７０８にてＹＥＳ）、本処理フローを終了する。
【００６７】
以上、本実施形態により、フラグメントバンドルをホストバンドルにインストール（アタッチ）することなく、予め画像形成装置に仮インストールする構成を提供することが可能となる。
【００６８】
＜第三の実施形態＞
本実施形態では、第一の実施形態で示したフラグメントバンドルの仮インストールから有効化する処理の際に、有効化可能なフラグメントバンドル数に制限をかける実施形態を示す。本実施形態は、第一の実施形態に加え、更に上述した課題３を解決する例となる。
【００６９】
図１８は、本実施形態を説明するための図である。ホストバンドルである一般アプリＡ１８００は、フラグメント上限値１８０１として“２”が記述されている。また、フラグメントバンドルであるフラグメントＸ１８０２及びフラグメントＹ１８０３がインストールされている。この場合のＯＳＧｉ２０６のメモリ上での管理状態を管理状態１８０５として示す。更に、フラグメントＺ１８０４は、一般アプリＡ１８００をホストバンドルとするフラグメントバンドルであり、仮インストールされている。
【００７０】
この状態でフラグメントＺ１８０４を有効化することを考える。インストール制御サービス２０７は、ＯＳＧｉ２０６に一般アプリＡ１８００のフラグメント上限値（ＦｒａｇｍｅｎｔＭａｘＣｏｕｎｔ）を問い合わせる。この場合、フラグメント上限値として“２”が取得される。また、インストール制御サービス２０７は、ＯＳＧｉ２０６に現在の一般アプリＡ１８００のフラグメントバンドル数を問い合わせる。この場合、フラグメントバンドル数として“２”が取得される。この状況において、フラグメントＺ１８０４をインストールした場合には、フラグメント上限値を超えてしまう。よって、インストール制御サービス２０７は、フラグメントＺ１８０４の有効化を許可しない。
【００７１】
［処理フロー］
（インストール許可／不許可判定）
図１９は、図１８で示した状況における、インストール制御サービス２０７のフラグメントバンドルインストール時のインストールの許可／不許可を判定するフローチャートである。本処理フローは、画像形成装置１３０のＣＰＵ１０１が、ＨＤＤ１０４等に格納されたプログラムを読み出して実行することにより、実現される。
【００７２】
インストール制御サービス２０７は、ユーザによる有効化ボタンの押下に起因するアプリ管理サービス２０８からの有効化指示によって、本処理を開始する。Ｓ１９０１にて、インストール制御サービス２０７は、ＯＳＧｉ２０６からインストール対象のホストバンドルのフラグメント上限値（ＦＭＣ）を取得する。ここでＦＭＣは、インストール対象のホストバンドルである一般アプリＡとフラグメント上限値をキーとして取得される。
【００７３】
Ｓ１９０２にて、インストール制御サービス２０７は、ＯＳＧｉ２０６からインストール対象のホストバンドルに追加されているフラグメントバンドル数（ＦＣ）を取得する。ここでＦＣは、インストール対象のホストバンドルである一般アプリＡとフラグメントバンドルをキーとして取得される。
【００７４】
Ｓ１９０３にて、インストール制御サービス２０７は、ＦＭＣ＞ＦＣ、あるいは、ＦＭＣ＝＊の条件を満たすか否かを判定する。上記条件を満たす場合（Ｓ１９０３にてＹＥＳ）、Ｓ１９０４にて、インストール制御サービス２０７は、フラグメントバンドルの有効化を許可する。そして、本処理フローを終了する。一方、上記条件を満たさない場合（Ｓ１９０３にてＮＯ）、Ｓ１９０５にて、インストール制御サービス２０７は、フラグメントバンドルの有効化を許可しない。その後、本処理フローを終了する。
【００７５】
（インストール切り替え）
図２０は、図１９とは別の処理の例を示す。図２０は、既にホストバンドルにアタッチされたフラグメントバンドルが上限数に達していた場合にエラーとして処理するのではなく、現在のフラグメントバンドルを無効化し、新たなフラグメントバンドルの有効化処理を行うフローチャートを示す。つまり、アタッチするフラグメントバンドルを切り替える処理を行う。本処理フローは、画像形成装置１３０のＣＰＵ１０１が、ＨＤＤ１０４等に格納されたプログラムを読み出して実行することにより、実現される。
【００７６】
Ｓ２００１にて、アプリ管理サービス２０８は、インストール対象のホストバンドルのフラグメント上限値（ＦＭＣ）を取得する。Ｓ２００２にて、アプリ管理サービス２０８は、ＦＭＣ＝１であるか否かを判定する。ＦＭＣ＝１である場合（Ｓ２００２にてＹＥＳ）、Ｓ２００３にて、アプリ管理サービス２０８は、図２１に示す確認ダイアログ２１００を表示する。図２１は、ホストバンドルのフラグメント上限値が“１”である場合の確認ダイアログ２１００の構成例を示す図である。この場合、ホストバンドルにインストールされているフラグメントバンドル数も１つである。
【００７７】
Ｓ２００４にて、アプリ管理サービス２０８は、ユーザから「はい」ボタン２１０１の押下を受け付けたか否かを判定する。「はい」ボタン２１０１の押下を受け付けた場合（Ｓ２００４にてＹＥＳ）、無効化するべきフラグメントバンドルは１つしかないため、Ｓ２００５にて、アプリ管理サービス２０８は、現時点でアタッチされているフラグメントバンドルを無効化する。その後、Ｓ２００６にて、アプリ管理サービス２０８は、新たに有効化対象のフラグメントバンドルの有効化処理を行う。その後、本処理フローを終了する。
【００７８】
アプリ管理サービス２０８は、「いいえ」ボタン２１０２の押下を受け付けた場合（Ｓ２００４にてＮＯ）、本処理フローを終了する。
【００７９】
一方、ＦＭＣが２以上である場合（Ｓ２００２にてＮＯ）、Ｓ２００７にて、アプリ管理サービス２０８は、図２２に示す確認ダイアログ２２００を表示する。図２２は、ホストバンドルのフラグメント上限値が“２”以上である場合の確認ダイアログ２２００の構成例を示す図である。図１８で示した状況で説明すると、ホストバンドルのフラグメント上限値が“２”であり、現時点でのホストバンドルにインストールされているフラグメントバンドル数も“２”である。したがって、有効化されているフラグメントバンドルのうち、どのフラグメントバンドルを無効化するかをユーザに確認する必要がある。そのため、アプリ管理サービス２０８は、確認ダイアログ２２００において、ユーザからチェックボックス２２０１、２２０２により、無効化するフラグメントバンドルの選択を受け付ける。
【００８０】
Ｓ２００８にて、アプリ管理サービス２０８は、ユーザにより１つ以上のフラグメントバンドルが選択され、「ＯＫ」ボタン２２０３の押下を受け付けたか否かを判定する。「ＯＫ」ボタン２２０３の押下を受け付けた場合（Ｓ２００８にてＹＥＳ）、Ｓ２００９にて、アプリ管理サービス２０８は、選択されたフラグメントバンドルを全て無効化する。その後、Ｓ２０１０にて、アプリ管理サービス２０８は、有効化しようとしたフラグメントバンドルの有効化処理を行う。その後、本処理フローを終了する。
【００８１】
アプリ管理サービス２０８は、「キャンセル」ボタン２２０４の押下を受け付けた場合（Ｓ２００８にてＮＯ）、本処理フローを終了する。
【００８２】
以上、本実施形態により、フラグメントバンドルの上限数に基づくフラグメントバンドルのインストール処理の制御が可能となる。
【００８３】
＜その他の実施形態＞
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００８４】
２０１…ＯＳプラットフォーム、２０２…ソフトウェアプラットフォーム、２０３…ＪａｖａＶＭ、２０６…ＯＳＧｉ、２１１…ＯＳＧｉ拡張部２１１、２０７…インストール制御サービス、２０８…アプリ管理サービス、２０９…ログインアプリ、２０１…一般アプリ
【図１】
2015230622.tif 000003
【図２】
2015230622.tif 000004
【図３】
2015230622.tif 000005
【図４】
2015230622.tif 000006
【図５】
2015230622.tif 000007
【図６】
2015230622.tif 000008
【図７】
2015230622.tif 000009
【図８】
2015230622.tif 000010
【図９】
2015230622.tif 000011
【図１０】
2015230622.tif 000012
【図１１】
2015230622.tif 000013
【図１２】
2015230622.tif 000014
【図１３】
2015230622.tif 000015
【図１４】
2015230622.tif 000016
【図１５】
2015230622.tif 000017
【図１６】
2015230622.tif 000018
【図１７】
2015230622.tif 000019
【図１８】
2015230622.tif 000020
【図１９】
2015230622.tif 000021
【図２０】
2015230622.tif 000022
【図２１】
2015230622.tif 000023
【図２２】
2015230622.tif 000024