(57)【要約】【課題】  画像処理装置上の複数のアプリケーションが同一のライブラリを抱えることにより、ライブラリの数だけリソース資源を消費する無駄を解決することを目的とする。【解決手段】  画像処理装置は、画像処理装置にアプリケーションがインストールされるときに、このアプリケーションが画像処理装置で共有するライブラリを含むかどうか判定し、アプリケーションが画像処理装置で共有するライブラリを含むと判定された場合、当該ライブラリを元に、画像処理装置のシステムアプリケーションとして機能するライブラリアプリケーションを作成し、当該アプリケーションから当該ライブラリを削除することにより、作成されたライブラリアプリケーションを参照するアプリケーションを作成する。【選択図】  図３
2016081281.tif 000002
【特許請求の範囲】
【請求項１】
画像処理装置にアプリケーションがインストールされるときに、前記アプリケーションが画像処理装置で共有するライブラリを含むかどうか判定する判定手段と、
前記判定手段により前記アプリケーションが画像処理装置で共有するライブラリを含むと判定された場合、前記ライブラリを元に、画像処理装置のシステムアプリケーションとして機能するライブラリアプリケーションを作成する第一の作成手段と、
前記アプリケーションから前記ライブラリを削除することにより、前記第一の作成手段により作成されたライブラリアプリケーションを参照するアプリケーションを作成する第二の作成手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記第二の作成手段により作成されたアプリケーションが前記第一の作成手段により作成されたライブラリアプリケーションを利用しているかどうかに基づいて、前記ライブラリアプリケーションのライフサイクル管理を行なう管理手段をさらに有することを特徴とする、請求項１記載の画像処理装置。
【請求項３】
前記第一及び第二の作成手段は、同一のライブラリを参照するアプリケーションが２種類以上インストールされた場合に、それぞれの作成処理を実行することを特徴とする、請求項１または２記載の画像処理装置。
【請求項４】
前記管理手段によるライフサイクル管理は前記ライブラリアプリケーションの停止または削除を含むことを特徴とする、請求項２または３記載の画像処理装置。
【請求項５】
画像処理装置にアプリケーションがインストールされるときに、前記アプリケーションが画像処理装置で共有するライブラリを含むかどうかを、判定手段により判定する工程と、
前記判定手段により前記アプリケーションが画像処理装置で共有するライブラリを含むと判定された場合、前記ライブラリを元に、画像処理装置のシステムアプリケーションとして機能するライブラリアプリケーションを、第一の作成手段により作成する工程と、
前記アプリケーションから前記ライブラリを削除することにより、前記第一の作成手段により作成されたライブラリアプリケーションを参照するアプリケーションを、第二の作成手段により作成する工程と、
を有することを特徴とする、画像処理装置における画像処理方法。
【請求項６】
請求項１乃至４のいずれか１項記載の画像処理装置をコンピュータで実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のアプリケーション（以下、「アプリ」）を動作させるプラットフォーム（以下、「PF」）を備える画像処理装置および画像処理装置の制御方法に関する。
【背景技術】
【０００２】
画像処理装置は、一般的に、スキャナやプリンタなどの各種機能をアプリ単位で動作させるアプリPF環境を有している。アプリPF環境には、例えばJava（登録商標）環境が用いられており、Java（登録商標）の持つプログラムの可搬性を利用した拡張可能なアプリが、画像処理装置上で実現されている。また、アプリPFには、例えばJava（登録商標）環境の場合、フレームワークとしてOSGi（登録商標）が用いられている。OSGi（登録商標）では、アプリの管理単位としてバンドルを定義し、インストール/開始/停止/アンインストールなどアプリのライフサイクルを管理する。ここで、「バンドル」とはJava（登録商標）モジュールを指すものとし、本発明においてはアプリと同義で用いる。また、OSGi（登録商標）では、モジュール境界が明確に定義されており、明示的に宣言しない限り、各アプリ間では参照関係を持たないよう、バンドルの依存関係を管理する。この環境、フレームワークを組み合わせることで、Java（登録商標）の可搬性を損なうことなく、かつアプリの管理を行うことが可能となるアプリPF環境を、画像処理装置は提供することができる。
【０００３】
一方で、アプリPF環境では、アプリが実行可能な機能は、通常アプリPF環境で提供される機能と、自身のアプリで実装されている機能に限られる。即ち、インストールされている別のアプリで実現可能な機能が提供されていても、自身のアプリの機能としては実行することはできない。そのため、アプリ開発者は、アプリPF環境で提供される機能以外の機能をアプリに追加する際、以下の手段をとる必要がある。一点目は、アプリ自身に機能を直接実装する方法である。二点目は、機能をライブラリ化してアプリに含ませる方法である。三点目は、アプリが有するマニフェストファイル（以下、「MF」）にパッケージを公開する宣言を定義した機能用アプリを作成し、使用する側のアプリのMFに当該機能用アプリのパッケージに依存する宣言を追加する方法である。この中では、開発コストが抑えられ、運用も比較的容易である二点目のライブラリ提供方式が多く使用されており、ソフトウェア開発キット（SDK）でベンダに対し提供されるライブラリも存在する。
【０００４】
近年、画像処理装置上で稼働するアプリの多機能化が進んでいる。この多くの機能をアプリPF環境で実現するために、アプリは、アプリPF環境では提供されない機能をライブラリとして数多く含むことになり、アプリが肥大化している。一方で、画像処理装置で使用できるリソース資源量は、一般的な情報処理装置よりも限られているため、あるアプリをインストールすることで資源が圧迫され、他のアプリをインストールできなくなってしまう事態を引き起こす。特に、画像処理装置上で、複数のアプリが同一のライブラリを抱える状況も発生しており、単一のライブラリを共有できれば一つ分のリソース資源量で済む所を、アプリの所有ライブラリ分ごとに消費してしまい、リソース資源の使用に無駄が発生している。
【０００５】
一方、画像処理装置本体のモデル情報からMF資源可能使用量を書き換えたアプリをインストール可能とする技術が存在している（特許文献１）。前述のMFを書き換えたアプリをインストールする方法より、前述のアプリへの機能追加手段の三点目を行う構成による解決策が考えられる。すなわち、事前にパッケージの公開宣言を定義したライブラリ機能用アプリを作成し、画像処理装置にインストールする。その後、ライブラリを使用するアプリをインストールする際に、当該ライブラリ機能用アプリが存在していれば、アプリのMFに、機能用アプリのパッケージに依存する宣言を追加する、という形態である。しかし、ライブラリを有することによるアプリのリソース量の肥大化自体は防ぐことはできない。また、アプリ開発者が事前にライブラリ機能用アプリを作成しなくてはならず、開発コストも増加してしまう。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−１５５４７８
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述のように、画像処理装置上で、複数のアプリが同一のライブラリを抱えることがあり、そのために、リソース資源量をアプリの所有ライブラリ分ごとに消費してしまい、リソース資源の使用に無駄が発生する。また、事前にパッケージの公開宣言を定義したライブラリ機能用アプリを作成する手法においては、アプリ開発者が事前に当該ライブラリ機能用アプリを作成しなくてはならず、開発コストが増加してしまうという問題があった。
【０００８】
本発明は上記問題を鑑みてなされたものであり、画像処理装置上に特定のライブラリを抱えるアプリがインストールされた際に、含まれるライブラリから依存関係を定義したMFを有するライブラリ機能用アプリを作成する。そして当該インストールアプリから含まれているライブラリを削除し、当該ライブラリ機能用アプリの参照関係を有するMFの書き換えを行ったアプリとしてインストール可能とすることを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、本発明は、画像処理装置にアプリケーションがインストールされるときに、前記アプリケーションが画像処理装置で共有するライブラリを含むかどうか判定する判定手段と、前記判定手段により前記アプリケーションが画像処理装置で共有するライブラリを含むと判定された場合、前記ライブラリを元に、画像処理装置のシステムアプリケーションとして機能するライブラリアプリケーションを作成する第一の作成手段と、前記アプリケーションから前記ライブラリを削除することにより、前記第一の作成手段により作成されたライブラリアプリケーションを参照するアプリケーションを作成する第二の作成手段とを有する画像処理装置を提供する。
【発明の効果】
【００１０】
本発明によれば、同一のライブラリを含む複数のアプリの使用において、ライブラリ分のリソース資源使用量を単一ライブラリのリソース資源使用量とすることができ、画像処理装置におけるアプリのリソース資源使用量を効率的に削減することができる。加えて、アプリが抱えているライブラリからライブラリアプリを作成することより、アプリ開発者のリソース資源量削減のための開発コストも削減することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】実施例１に係るシステム構成図
【図２】実施例１に係る画像処理装置と情報処理装置のハードウェア構成図
【図３】実施例１に係る画像処理装置と情報処理装置のソフトウェア構成図
【図４】実施例１に係る共有ライブラリアプリ管理部のバンドルとインストールするフラグメントバンドルの概念図
【図５】実施例１に係る共有ライブラリリストファイルの概念図
【図６】実施例１に係る共有ライブラリアプリ管理部の共有ライブラリリストファイルへの共有ライブラリ名追記処理手順を示すシーケンス図
【図７】実施例１に係る共有ライブラリアプリ管理部の共有ライブラリリストファイルへの共有ライブラリ名追記処理全景図
【図８】実施例１に係る共有ライブラリアプリ管理部の共有ライブラリリストファイルへの共有ライブラリ名追記処理後の共有ライブラリリストファイル図
【図９】実施例１に係るアプリインストール時の共有ライブラリアプリ管理部のライブラリシステムアプリ作成判定処理手順を示すシーケンス図
【図１０】実施例１に係るアプリインストール時の共有ライブラリアプリ管理部のライブラリシステムアプリ作成判定処理全景図
【図１１】実施例１に係るアプリインストール時の共有ライブラリアプリ管理部のライブラリシステムアプリ作成判定で判定条件に用いられるインストールアプリのMF、及びライブラリのMFの構成図
【図１２】実施例１に係る共有ライブラリアプリ管理部のライブラリシステムアプリ作成処理手順を示すシーケンス図
【図１３】実施例１に係る共有ライブラリアプリ管理部のライブラリシステムアプリ作成処理全景図
【図１４】実施例１に係る共有ライブラリアプリ管理部が作成するライブラリシステムアプリの構成図
【図１５】実施例１に係る共有ライブラリアプリ管理部のライブラリシステムバンドル作成処理後の共有ライブラリリストファイル図
【図１６】実施例１に係る共有ライブラリアプリ管理部のインストールされたアプリからライブラリを削除したアプリの作成処理手順を示すシーケンス図
【図１７】実施例１に係る共有ライブラリアプリ管理部のインストールされたアプリからライブラリを削除したアプリの作成処理全景図
【図１８】実施例１に係る共有ライブラリアプリ管理部が作成するライブラリを削除したアプリの構成図
【図１９】実施例１に係る共有ライブラリアプリ管理部のインストールされたアプリからライブラリを削除したアプリの作成処理後の共有ライブラリリストファイル図
【図２０】実施例２に係る共有ライブラリアプリ管理部のライブラリシステムアプリ停止処理手順を示すシーケンス図
【図２１】実施例２に係る共有ライブラリアプリ管理部のライブラリシステムアプリ起動処理手順を示すシーケンス図
【図２２】実施例２に係る共有ライブラリアプリ管理部の共有ライブラリリストファイル更新処理手順を示すシーケンス図
【図２３】実施例２に係る共有ライブラリアプリ管理部のライブラリシステムアプリ削除処理手順を示すシーケンス図
【図２４】実施例２に係る共有ライブラリアプリ管理部の共有ライブラリリストファイル削除処理手順を示すシーケンス図
【図２５】実施例３に係る共有ライブラリアプリ管理部のライブラリシステムアプリ作成処理手順を示すシーケンス図
【図２６】実施例３に係る共有ライブラリアプリ管理部の共有ライブラリリストファイルへの共有ライブラリ名追記後の共有ライブラリリストファイル図
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための最良の形態について図面を用いて説明する。なお、以下の記述において、アプリケーションソフトウエアを「アプリ」と略記し、システムアプリケーションを「システムアプリ」と略記する。
【００１３】
＜実施例１＞
実施例１のシステム構成について、図１から図５を用いて説明する。図１は、本実施例の情報処理システム全体の構成例である。本システムは、ネットワーク102を介して通信する、画像処理装置100と情報処理装置101から構成される。
【００１４】
画像処理装置100は、画像形成装置、画像読取装置、画像送信機能などの各種画像処理機能を有する装置である。なお画像処理装置100は、プリンタ、コピー機、ファクス装置、またはスキャナ装置である。あるいは、それら複数の機能を一台の筐体で実現する複合装置MFP（Multi Functional Peripheral）でもよい。情報処理装置101は、Webブラウザなどを介し画像処理装置100の操作をリモートで行うための、コンピュータなどの情報処理装置である。
【００１５】
図２は、本実施例の画像処理装置100と情報処理装置101のハードウェア構成例である。画像処理装置100は、情報処理装置101などと通信を行うネットワーク装置201、キーボードなどユーザ操作を受け付けるユーザ入力装置202、液晶ディスプレイなど操作画面を表示するUI表示装置203を有する。更に画像処理装置100は、装置全体を制御するCPU204、CPU204のワークスペースを提供するRAM205、画像原稿を読み取る読取装置206、画像データを印刷する印刷装置207、各種制御プログラムなどを記憶する記憶装置208を有する。なお、画像処理装置100を構成する各装置は、メインバス200で接続され、相互にデータの送受信が可能となる。なお、ユーザ入力装置202とUI表示装置203を別々の装置として記載しているが、これらの装置が一体となった操作部となっていてもよい。
【００１６】
次に情報処理装置101は、画像処理装置100などと通信を行うネットワーク装置211、装置全体を制御するCPU212、CPU212のワークスペースを提供するRAM213、各種制御プログラムなどを記録する記憶装置214から構成される。また情報処理装置101を構成する各装置は、メインバス210で接続され、相互にデータの送受信が可能となる。
【００１７】
図３は、本実施例の画像処理装置100と情報処理装置101のソフトウェア構成例である。図３に示す各機能部は、画像処理装置100 では、CPU204が記憶装置208に記憶される制御プログラムをRAM205上に読み出して実行することで実現される。また、情報処理装置101では、CPU212が記憶装置214に記憶される制御プログラムをRAM213上に読み出して実行することで実現される。
【００１８】
まず、情報処理装置101が備えるソフトウェアについて説明する。情報処理装置101は、通信部300、Webブラウザ310を有する。通信部300は、ネットワーク装置211を制御してHTTP通信を行うソフトウェアである。Webブラウザ310は、通信部300を介して、画像処理装置100のライフサイクル管理部371などで提供される操作画面を表示する。また、Webブラウザ310は、表示された操作画面を通じて入力されたユーザからの入力情報を、通信部300を介して画像処理装置100へ送信する。なお、本実施例では、画像処理装置100との通信にWebブラウザ310を用いているが、ライフサイクル管理部371と通信するためのプロトコルに対応したソフトウェア構成であれば実現構成に制限はない。
【００１９】
次に、画像処理装置100が備えるソフトウェアについて説明する。画像処理装置100は、アプリケーションプラットフォーム320（以下、「アプリPF320」）を有する。アプリPF320は、制御APIを介して画像処理装置100を制御する、アプリを実行可能な実行基盤である。また、アプリPF320は、実行基盤としてJava（登録商標）VM330、フレームワーク340、アプリ記憶領域350を有する。
【００２０】
フレームワーク340は、アプリをバンドル単位でライフサイクル管理、依存関係管理を行うOSGi（登録商標）341、その他プラットフォームを構成するためのクラスライブラリ群342を有する。ここで、バンドルは、アプリを構成するJarファイルに加え、アプリ名、バージョン情報、バンドル起動時実行クラスなどのメタデータを記述した不図示のマニフェストファイル（以下、「MF」）を有するものとする。OSGi（登録商標）341では、各アプリの情報として、このMF内のメタデータ情報を保存し管理に用いる。アプリ記憶領域350は、記憶装置208に保存され、フレームワーク340上で管理されるアプリを有する。また、アプリ記憶領域350は、アプリ部360、システムアプリ部370を有する。
【００２１】
アプリ部360は、画像処理装置100を制御するためのアプリで構成される。本実施例では、App A361が情報処理装置101からライフサイクル管理部371を通じてインストールされるものとする。システムアプリ部370は、アプリPF320を構成する機能を提供するアプリで構成される。システムアプリ部370は、ライフサイクル管理部371、共有ライブラリアプリ管理部373、ライブラリシステムアプリ376（ライブラリアプリケーション）を有する。
【００２２】
ライフサイクル管理部371は、アプリ記憶領域350上のアプリをフレームワーク340に指示することでライフサイクル管理を行うアプリである。また、ライフサイクル管理部371は、アプリのインストールなどの操作を行う操作部（不図示）を提供し、通信部372によりネットワーク装置201を介したHTTP通信による情報処理装置101からのアプリのインストール指示などの操作を受信する。なお、本実施例では、ライフサイクル管理部371は、Java（登録商標） ServletによるWebアプリとしているが、情報処理装置101と通信し、アプリのインストール指示などの操作部を提供するものであれば構成に制限はない。
【００２３】
共有ライブラリアプリ管理部373は次の機能を有するアプリである。即ち、共有するライブラリ情報を管理し、アプリ部360にインストールされるアプリに対して、当該ライブラリ情報を元に当該インストールアプリが抱えるライブラリからライブラリシステムアプリ376を作成する。その後、当該インストールアプリからライブラリを抜いたアプリを作成する。共有ライブラリアプリ管理部373は、共有するライブラリ情報に用いるためのフラグメントバンドル374、当該ライブラリ情報を管理する共有ライブラリリストファイル375を有する。フラグメントバンドル374の構成は図４を用いて、共有ライブラリリストファイルの構成は図５を用いて後述する。ライブラリシステムアプリ376は、共有ライブラリアプリ管理部373により作成されるシステムアプリである。本実施例では、App A361が抱えていたライブラリが共有対象であるライブラリとし、当該ライブラリを元に作成されるアプリをシステムアプリとする。
【００２４】
図４を用いて、本実施例における共有ライブラリアプリ管理部373が使用する共有ライブラリアプリ管理部バンドル400、及び共有ライブラリアプリ管理部バンドル400に追加するフラグメントバンドル374の構成を説明する。「フラグメントバンドル」とは、OSGi（登録商標）341において、単独では動作せず、ホストバンドルのクラスローダ空間に自身を追加する拡張アプリのことをさす。なお、「ホストバンドル」とは、フラグメントバンドルの追加対象となるアプリ本体をさすバンドルのことであり、本実施例では、ホストバンドルは、共有ライブラリアプリ管理部373のバンドル（共有ライブラリアプリ管理部バンドル400）が該当する。共有ライブラリアプリ管理部バンドル400は、自身の機能を構成するJARファイル401、パーミッションファイル402、MF405を有する。
【００２５】
パーミッションファイル402は、バンドルに対して特定のリソースにアクセスする権利があるかどうか、権限の定義が記載されたファイルである。本実施例では、パーミッションファイル402は、一般的なパーミッション定義403に加え、共有ライブラリアプリ管理部バンドル400がホストバンドルとして機能するための、ホストバンドルパーミッション設定404の記述を有する。ホストバンドルパーミッション設定404は、MF405記載の対象のBundle-SymbolicNameがホストとなることを、OSGi（登録商標）341が許可するために用いられる。
【００２６】
MF405は、OSGi（登録商標）341により共有ライブラリアプリ管理部バンドル400がバンドルとして機能するための一般的なメタデータ406に加え、ホストバンドルとして機能するためのホストバンドルメタデータ407を有する。ホストバンドルメタデータ407は、Bundle-ManifestVersionおよびBundle-SymbolicNameを有し、それぞれ“2”および“フレームワーク内で一意な名前（UUIDなど）”で指定される。また、MF405は、システムアプリ宣言設定408を有する。システムアプリ宣言設定408は、フレームワーク340が、このMFを有するバンドルがシステムアプリか通常のアプリかを判断するために使用される。システムアプリ宣言設定408を有するバンドルは、フレームワーク340によりシステムアプリと判断され、システムアプリ部370で管理される。システムアプリ宣言設定408を有さないバンドルは、フレームワーク340により通常のアプリと判断され、アプリ部360で管理される。
【００２７】
フラグメントバンドル374は、自身の機能を構成するJARファイル411、パーミッションファイル412、MF415を有する。パーミッションファイル412は、一般的なパーミッション定義413に加え、フラグメントバンドル374がフラグメントバンドルとして機能するためのフラグメントバンドルパーミッション設定414の記述を有する。フラグメントバンドルパーミッション設定414は、MF415記載の対象のBundle-SymbolicNameがフラグメントとなることを、OSGi（登録商標）341が許可するために用いられる。
【００２８】
MF415は、OSGi（登録商標）341によりフラグメントバンドル374がバンドルとして機能するための一般的なメタデータ416に加え、フラグメントバンドルとして機能するためのフラグメントバンドルメタデータ417を有する。フラグメントバンドルメタデータ417は、ホストバンドルメタデータ407と同様Bundle-ManifestVersion、Bundle-SymbolicNameを有する。加えて、フラグメントバンドルメタデータ417は、Fragument-Hostを有する。OSGi（登録商標）341は、この項目に記載されたBundle-SymbolicNameと一致するバンドルをホストバンドルと判断し、フラグメントバンドルを追加させる。また、MF415は、共有するライブラリ名418、共有するライブラリ所有パッケージリスト419のメタデータを有する。当該メタデータは、OSGi（登録商標）341により、共有ライブラリアプリ管理部373にフラグメントバンドルがインストールされた時に用いられる。共有ライブラリアプリ管理部373は、当該メタデータを含むフラグメントバンドル374がインストールされた時、共有ライブラリリストファイル375に当該記載情報を追記する。共有ライブラリアプリ管理部373は、共有ライブラリリストファイル375に記載された共有するライブラリ名418、共有するライブラリ所有パッケージリスト419を元に、ライブラリシステムアプリ376を作成するか判断する。更に、MF415は、ホストバンドルメタデータ407と同様にシステムアプリ宣言設定408を有する。
【００２９】
図５を用いて、本実施例における共有ライブラリアプリ管理部373が使用する共有ライブラリリストファイル375の構成を説明する。共有ライブラリリストファイル375には、共有ライブラリアプリ管理部373にフラグメントバンドル374がインストールされた時に、フラグメントバンドル374に記載された共有するライブラリ名とその所有パッケージリストが追記される。また、ライブラリシステムアプリ376として存在するライブラリのバージョンと、ライブラリシステムアプリ376を利用するアプリ名が追記される。共有ライブラリリストファイル375は、あるアプリがアプリPF320にインストールされるときに、共有ライブラリアプリ管理部373により、ライブラリシステムアプリ376を新規作成するかの判断のために用いられる。共有ライブラリリストファイル375は、共有ライブラリ情報500を一つのフォーマットとして有する。
【００３０】
共有ライブラリ情報500は、共有ライブラリ名部501、動作ライブラリシステムアプリ部502で構成される。共有ライブラリ名部501は、共有対象となるライブラリ名、所有パッケージリストを有し、“<共有ライブラリ名>.jar : （<所有パッケージ名>）*”のフォーマットで構成される。なお、所有パッケージリストが異なる場合、同名の共有ライブラリでも別々の共有ライブラリ名部として管理される。動作ライブラリシステムアプリ部502は、システムアプリ部370で稼働中のライブラリシステムアプリのバージョン情報503、利用アプリ名504を有し、“<ライブラリバージョン> : （<利用アプリ名>）*”のフォーマットで構成される。動作ライブラリシステムアプリ部502は、同名のライブラリシステムアプリ376でありながらバージョンが異なるものが複数稼動していた場合、共有ライブラリ名部501一つに対して複数記載を有する。
【００３１】
次に、本実施例におけるシステムライブラリアプリ作成処理について図６から図１９を用いて説明する。図６は、共有ライブラリアプリ管理部373の共有ライブラリリストファイルへの共有ライブラリ名追加処理手順を示すシーケンス図である。また、図７は、当該シーケンス中の情報処理装置101と画像処理装置100のソフトウェア構成図である。以降、図７のようなシーケンス中のソフトウェア構成図を表す図中のステップ番号は、対応するシーケンス図（この場合図６）のステップ番号で示す処理が行われていることを表す。また、シーケンス中の処理を可視化するために一部構成物の削除、追加を行っているが、図３のソフトウェア構成図と同一の情報処理装置101と画像処理装置100を指すものとする。
【００３２】
図６に示すシーケンスにおいて、ステップS601では、管理者600がユーザ入力装置202から、Webブラウザ310に対しライフサイクル管理部371へアクセスするURLを入力する（不図示）。ステップS602では、Webブラウザ310が通信部300を介してHTTP Requestをライフサイクル管理部371へ送信する。ステップS603では、ライフサイクル管理部371がそのリクエストに対し、アプリのライフサイクル管理用操作画面を構成するHTMLデータ（不図示）を、Http Responseとして通信部372を介してWebブラウザ310に送信する。ステップS604では、Webブラウザ310が受け取ったHTMLデータを解析し、Webブラウザ310上に画面の表示を行う。
【００３３】
ステップS605では、管理者600がユーザ入力装置202から、Webブラウザ310に対し、記憶装置214に保存されている共有ライブラリアプリ管理部373のフラグメントバンドル374をインストールする指示を入力する（不図示）。ステップS606では、Webブラウザ310が通信部300を介してHTTP Requestをライフサイクル管理部371へ送信する。ここでのHTTP Requestには、ライフサイクル管理部371に対する、共有ライブラリアプリ管理部373へのフラグメントバンドル374インストール指示と、フラグメントバンドル374のデータが含まれる。
【００３４】
ステップS607では、ライフサイクル管理部371がWebブラウザ310のリクエストに対し、共有ライブラリアプリ管理部373へフラグメントバンドル374をインストールする指示をOSGi（登録商標）341に行う。ステップS608では、OSGi（登録商標）341が共有ライブラリアプリ管理部373にフラグメントバンドル374のリソース情報を追加する（フラグメントバンドル374をインストールする）。
【００３５】
ステップS609では、共有ライブラリアプリ管理部373が、追加されたリソース情報の中で、MFに“SharedLibraryName”、“SharedLibraryPackage”情報が記載されているか判断する。記載がされていた場合のみ、ステップS610-S612の処理を行う。ステップS610では、共有ライブラリアプリ管理部373が、共有ライブラリリストファイル374を自身が有するか判定する。ステップS610の判定において共有ライブラリリストファイル374が存在しなかった場合、ステップ611において、共有ライブラリアプリ管理部373は、共有ライブラリリストファイル374を新規に作成する。ステップ612では、共有ライブラリアプリ管理部373が共有ライブラリリストファイル374に“SharedLibraryName”、“SharedLibraryPackage”情報を追記する。
【００３６】
ステップS613では、ライフサイクル管理部371が、一連の処理終了後にリクエストに対する処理の完了通知を行う画面を構成するHTMLデータ（不図示）をHttp Responseとして通信部372を介してWebブラウザ310に送信する。ステップS614では、Webブラウザ310が受け取ったHTPLデータを解析し、Webブラウザ310上に画面の表示を行う。
【００３７】
図８は、図６のシーケンスによる、共有ライブラリアプリ管理部373へフラグメントバンドル374がインストールされた後の共有ライブラリリストファイル375の構成図である。共有ライブラリリストファイル375は、フラグメントバンドル374記載の“SharedLibraryName”、“SharedLibraryPackage”情報を共有ライブラリ情報800として有する。図６のシーケンスにおいて、共有ライブラリアプリ管理部373は、“sample.library”パッケージを所有する“samplelib.jar”ライブラリを、共有するライブラリ情報として持つ。
【００３８】
図９は、共有ライブラリアプリ管理部373のライブラリシステムアプリ376作成判定処理手順を示すシーケンス図である。また、図１０は、当該シーケンス中の情報処理装置101と画像処理装置100のソフトウェア構成図である。なお、共有ライブラリアプリ管理部373のライブラリシステムアプリ376作成は、ライフサイクル管理部371を通じたアプリのインストール処理が実行される際に行われる。そのため図９のシーケンスでは、ライフサイクル管理部371によるアプリのインストール処理と合わせてライブラリシステムアプリ376の作成判定処理手順が示されている。また、説明の煩雑化を避けるため、ライブラリシステムアプリ376の作成（ステップS908）、ライブラリを抜いたアプリの作成（ステップS909）処理は、後述のシーケンス図で別途説明する。
【００３９】
図９に示すシーケンスにおいて、ステップS601-S604は、図６のステップS601-S604と同等である。よって説明を省略する。ステップS900では、管理者600が、ユーザ入力装置202からWebブラウザ310に対し、記憶装置214に保存されているアプリ（本実施例ではApp A361）をインストールする指示を入力する（不図示）。
【００４０】
ステップS901では、Webブラウザ310が、通信部300を介してHTTP Requestをライフサイクル管理部371へ送信する。ここでのHTTP Requestには、ライフサイクル管理部371に対する、アプリインストール指示とApp A361のデータが含まれる。
【００４１】
ステップS902では、ライフサイクル管理部371が、Webブラウザ310のリクエストに対し、App A361をアプリ部360にインストールする指示をOSGi（登録商標）341に行う。ステップS903では、OSGi（登録商標）341が、アプリ部360にApp A361のデータを格納し、バンドルとしてインストールする。
【００４２】
ステップS904では、OSGi（登録商標）341が、共有ライブラリアプリ管理部373に対しバンドルがインストールされた旨のイベントを通知する。なお、本実施例では、共有ライブラリアプリ管理部373は、OSGi（登録商標）341フレームワークで提供されるバンドルのライフサイクル変化イベント通知を検知するイベントリスナを有するものとする。
【００４３】
ステップS905では、共有ライブラリアプリ管理部373が、OSGi（登録商標）341によりインストールされたバンドルから、所有するライブラリ名、所有パッケージ名、バージョン情報を取得する。ここで、OSGi（登録商標）341がバンドルとしてインストールするApp A361の構成、及びステップS905で取得する情報を、図１１を用いて説明する。
【００４４】
図１１において、App A361は、App A361自身の機能を構成するJARファイル1100、MF1101、及びライブラリファイル1110を有する。MF1101は、OSGi（登録商標）341によりバンドルとして機能するための一般的なメタデータ1102を有する。本実施例では、App A361がライブラリを抱えるアプリであるため、MF1101はクラスパス項目1103を有する。ステップS905では、共有ライブラリアプリ管理部373がクラスパス項目1103を取得する。ライブラリファイル1110は、ライブラリ自身の機能を構成するJARファイル1111、MF1112を有する。JARファイル1111は、パッケージ及びクラスファイルなどで構成され、ステップS905では、共有ライブラリアプリ管理部373がJARファイル1111のパッケージ情報を取得する。MF1112は、JARファイルを構成する一般的なメタデータ1113に加え、当該JARファイルがライブラリであることを表すライブラリバージョン情報項目1114を有する。ステップS905では、共有ライブラリアプリ管理部373がライブラリバージョン情報項目1114を取得する。
【００４５】
図９におけるシーケンス図の説明に戻る。ステップS906では、共有ライブラリアプリ管理部373が、ステップS905で取得した情報と、共有ライブラリ情報800記載の情報が一致するか判定する（判定手段）。インストールされたバンドルにライブラリが含まれていない、及び所有するライブラリ名、所有パッケージ名情報が一致しない場合、以降のステップS907-S909は実行されない。
【００４６】
ステップS907では、共有ライブラリアプリ管理部373が、動作ライブラリシステムアプリ部502記載のバージョン情報とステップS905で取得したバージョン情報が一致するか判定する（判定手段）。ステップS907でバージョン情報が一致しない、すなわち該当するライブラリシステムアプリが存在しないと判定された場合のみ、ステップS908で、共有ライブラリアプリ管理部373がライブラリシステムアプリの作成を行う（第一の作成手段）。当該作成処理は後述の図１２を用いて説明する。ステップS907でバージョン情報が一致し、すなわち該当するライブラリシステムアプリが存在すると判定された場合、ステップS908は行われない。ステップS909では、共有ライブラリアプリ管理部373が、該当するライブラリを抜いたアプリの作成を行う（第二の作成手段）。当該作成処理は、後述の図１６を用いて説明する。
【００４７】
ステップS910では、ライフサイクル管理部371が、一連の処理終了後に、リクエストに対する処理の完了通知を行う画面を構成するHTMLデータ（不図示）をHttp Responseとして通信部372を介してWebブラウザ310に送信する。ステップS911では、Webブラウザ310が、受け取ったHTPLデータを解析し、Webブラウザ310上に画面の表示を行う。
【００４８】
図１２は、共有ライブラリアプリ管理部373のライブラリシステムアプリ376作成処理手順を示すシーケンス図である。また、図１３は、当該シーケンス中の情報処理装置101と画像処理装置100のソフトウェア構成図である。なお、図１２のシーケンスは、図９のシーケンスのステップS908内で行われる処理である。
【００４９】
図１２に示すシーケンスにおいて、ステップS1200では、共有ライブラリアプリ管理部373が、App A361の有する共有対象のライブラリファイルをシステムアプリ部370にコピーする。ステップS1201では、共有ライブラリアプリ管理部373が、コピーしたライブラリに対しMFの修正、ダミークラスファイルの追加を行い、ライブラリシステムアプリ376として作成する。
【００５０】
図１４を用いて、共有ライブラリアプリ管理部373が、作成するライブラリシステムアプリ376の構成を説明する。ライブラリシステムアプリ376は、ライブラリファイル1110が有しているJARファイル1111、MF1112に加え、ダミークラスファイル1410を有する。
【００５１】
MF1112は、一般的なメタデータ1113、ライブラリバージョン情報項目1114に加え、OSGi（登録商標）341によりバンドルとして機能するための情報1400が追加されている。また、バンドルバージョン情報1401として、ライブラリバージョン情報項目1114と同じ値を持つ項目が追加される。当該項目は、OSGi（登録商標）341において、異なるバージョンであれば同バンドル名であっても独立して管理するための判断に用いられる。また、後述する共有ライブラリリストファイル375へのバージョン情報の追記には、共有ライブラリアプリ管理部373が、バンドルバージョン情報1401を記載する。
【００５２】
MF1112はまた、OSGi（登録商標）341に対するバンドルのActivatorインタフェースが実装されたクラスの宣言として、DummyActivatorクラスが記載されたActivator項目1402を有する。MF1112はまた、フレームワーク340がライブラリシステムアプリ376をシステムアプリとして判断するための、システムアプリ宣言設定1403を有する。MF1112はさらに、OSGi（登録商標）341において、ライブラリシステムアプリ376が他のアプリに対し公開するインタフェースを明示するExport項目1404を有する。Export項目1404は、自身のバージョンの所有パッケージのクラス全てを公開する記述として記載される。
【００５３】
ダミークラスファイル1410は、Java（登録商標）のクラスファイルとして、OSGi（登録商標）341のフレームワーク上で起動、停止といったライフサイクルに関するAPIのみを有する。ダミークラスファイル1410をライブラリファイル1110に追加することで、OSGi（登録商標）341のフレームワーク上での管理が可能となる。なお、ダミークラスファイル1410は、OSGi（登録商標）341によるライフサイクル管理のAPIに関する処理以外は何も行わない。
【００５４】
図１２におけるシーケンス図の説明に戻る。ステップS1202では、共有ライブラリアプリ管理部373が、システムアプリ部370へライブラリシステムアプリ376をインストール、起動する指示をOSGi（登録商標）341に行う。ステップS1203では、OSGi（登録商標）341が、ライブラリシステムアプリ376をバンドルとしてインストール、起動する。ステップS1204では、OSGi（登録商標）341が、共有ライブラリアプリ管理部373に対しライブラリシステムアプリ376のインストール、起動結果のイベントを通知する。
【００５５】
ステップS1205では、当該イベントが成功終了であった場合、ステップS1206として、共有ライブラリアプリ管理部373が、共有ライブラリリストファイル375へライブラリシステムアプリ376のバージョン情報を追記する。ここで追記される情報は、ライブラリシステムアプリ376のバンドルバージョン情報1401である。
【００５６】
ステップS1207は、当該イベントが失敗終了であった場合のステップを示す。ステップS1203のインストール、起動処理が失敗するのは、例えば画像処理装置100の記憶装置208のメモリ資源量がステップS1201の処理中に上限に達し、ダミークラスファイル1410の追加に失敗した場合などである。ステップS1208では、共有ライブラリアプリ管理部373が、ライブラリシステムアプリ376をアンインストールする指示をOSGi（登録商標）341に行う。ステップS1209では、OSGi（登録商標）341が、ライブラリシステムアプリ376をアンインストールする。ステップS1210では、共有ライブラリアプリ管理部373がライブラリシステムアプリ376を削除する。この処理は、ステップS1209のアンインストール処理が、OSGi（登録商標）341フレームワークからのキャッシュ情報の削除であり、共有ライブラリアプリ管理部373が作成したライブラリシステムアプリ376本体を削除するために実行される。ステップS1207-S1210の結果、ライブラリシステムアプリ376は、共有ライブラリアプリ管理部373により作成されなくなる。しかしながら、App A361はアプリPF320上にインストールされているため、ライフサイクル管理371はApp A361のインストール処理を正常に終了することが可能となる。
【００５７】
図１５は、図１２のシーケンスによる、共有ライブラリアプリ管理部373のライブラリシステムアプリ376作成処理後の共有ライブラリリストファイル375の構成図である。共有ライブラリリストファイル375は、図８記載の情報に加え、動作ライブラリシステムアプリ部502として、ライブラリシステムアプリ376のバージョン情報1500を有する。
【００５８】
図１６は、共有ライブラリアプリ管理部373のライブラリ抜きアプリ作成処理手順を示すシーケンス図である。また、図１７は、当該シーケンス中の情報処理装置101と画像処理装置100のソフトウェア構成図である。なお、図１６のシーケンスは、図９のシーケンスのステップS909内で行われる処理である。
【００５９】
図１６のシーケンスにおいて、ステップS1601では、共有ライブラリアプリ管理部373が、図９のシーケンス処理のステップS905から得たバージョン情報が、共有ライブラリリストファイル375のバージョン情報1500内に存在するか判定する。この処理は、ライブラリ抜きのアプリとして作成するアプリが参照するライブラリシステムアプリ376が、システムアプリ部370上に存在しているかの判定である。すなわち、図１２の処理が行われた場合で、ライブラリシステムアプリ376の作成に失敗した場合は、ステップS1602以降の処理は行われない。
【００６０】
ステップS1602では、共有ライブラリアプリ管理部373がApp A361をシステムアプリ部370にコピーする。ステップS1603では、共有ライブラリアプリ管理部373が、コピーしたApp Aに対しMFの修正、ライブラリシステムアプリと同名のライブラリの削除を行い、ライブラリ抜きApp A1600として作成する。
【００６１】
図１８を用いて、共有ライブラリアプリ管理部373が作成するライブラリ抜きApp A1600の構成を説明する。ライブラリ抜きApp A1600は、App A361が有しているJARファイル1100、MF1101を有する。MF1101は、OSGi（登録商標）341によりバンドルとして機能するための一般的なメタデータ1102を有する。加えて、共有ライブラリアプリ管理部373が、App A361のクラスパス項目1103から、ライブラリシステムアプリとして存在するライブラリの項目を削除したクラスパス項目1800を有する。ステップS905では、共有ライブラリアプリ管理部373がクラスパス項目1103を取得する。MF1101は、OSGi（登録商標）341において、ライブラリ抜きApp A1600が他のアプリに対し依存するインタフェースを明示するImport項目1801を有する。Import項目1801は、ライブラリシステムアプリ376のExport項目と同等の記載がされ、当該バージョンでの所有パッケージのクラス全てに依存する記述が追加される。
【００６２】
図１６におけるシーケンス図の説明に戻る。ステップS1604では、共有ライブラリアプリ管理部373が、アプリ部360へライブラリ抜きApp A1600をインストール、起動する指示をOSGi（登録商標）341に行う。ここで、共有ライブラリアプリ管理部373は、インストールに加え起動を指示するが、後述するステップにおいて、ライブラリ抜きApp A1600の作成が正常終了したかを判定するためである。後述するステップで正常終了判定が得られれば、共有ライブラリアプリ管理部373は、停止する指示をOSGi（登録商標）341に行う。
【００６３】
ステップS1605では、OSGi（登録商標）341が、ライブラリ抜きApp A1600をバンドルとしてインストール、起動する。ステップS1606では、OSGi（登録商標）341が、共有ライブラリアプリ管理部373に対しライブラリ抜きApp A1600のインストール、起動結果のイベントを通知する。
【００６４】
ステップS1607では、当該イベントが成功終了であった場合、ステップS1608として、共有ライブラリアプリ管理部373が、共有ライブラリリストファイル375へライブラリ抜きApp A1600のアプリ名を追記する。ここで追記される情報は、ライブラリ抜きApp A1600のアプリ名（“Bundle-Name”）であるが、App A361のアプリ名から修正を加えないため、App A361のアプリ名が追記されることと同義になる。
【００６５】
ステップS1609では、共有ライブラリアプリ管理部373が、アプリ部360へApp A361をアンインストールする指示をOSGi（登録商標）341に行う。ステップS1610では、OSGi（登録商標）341が、App A361をバンドルとしてアンインストールする。ステップS1611では、共有ライブラリアプリ管理部373が、アプリ部360へライブラリ抜きApp A1600を停止する指示をOSGi（登録商標）341に行う。ステップS1612では、OSGi（登録商標）341が、ライブラリ抜きApp A1600をバンドルとして停止する。
【００６６】
ステップS1613は、当該イベントが失敗終了であった場合のステップを示す。ステップS1605のインストール処理が失敗するのは、画像処理装置100の記憶装置208のメモリ資源量がステップS1602の処理中に上限に達し、MF1101が破損した場合などである。
【００６７】
ステップS1614では、共有ライブラリアプリ管理部373が、ライブラリ抜きApp A1600をアンインストールする指示をOSGi（登録商標）341に行う。ステップS1615では、OSGi（登録商標）341がライブラリ抜きApp A1600をアンインストールする。ステップS1616では、共有ライブラリアプリ管理部373がライブラリ抜きApp A1600を削除する。ステップS1613-S1616の結果、ライブラリ抜きApp A1600は、共有ライブラリアプリ管理部373により作成されなくなる。しかしながら、App A361はアプリPF320上にインストールされているため、ライフサイクル管理371はApp A361のインストール処理を正常に終了することが可能となる。
【００６８】
図１９は、図１６のシーケンスによる、共有ライブラリアプリ管理部373のライブラリ抜きApp A1600作成処理後の共有ライブラリリストファイル375の構成図である。共有ライブラリリストファイル375は、図１５記載の情報に加え、動作ライブラリシステムアプリ部502に利用アプリ名1900を追加して有する。
【００６９】
以上により、実施例１では、ライブラリを含むアプリの使用において、共有ライブラリアプリ管理部373がライブラリシステムアプリ376を作成することで、ライブラリ分のリソース資源使用量を単一ライブラリ分に集約することが可能になる。この構成により、画像処理装置100におけるアプリのリソース資源使用量を効率的に削減することが可能となる。
【００７０】
なお、本実施例では、共有するライブラリ情報の管理に用いるため、共有ライブラリアプリ管理部373に対するフラグメントバンドル374にライブラリ情報を記載し、インストールすることを行っている。しかしながら、ライブラリ情報を共有ライブラリアプリ管理部373に提供することが可能であれば、構成に制限はない。
【００７１】
例えば、共有ライブラリアプリ管理部373に、ライフサイクル管理部371のように操作部を提供するUI画面を備える。管理者600は、その画面を通じて、ライブラリ情報の入力、またはライブラリ情報を有する共有ライブラリリストファイル375データの送信を行う形式でもよい。または、フラグメントバンドル374に記載するライブラリ情報を、アプリ本体のMF（本実施例ではApp A361のMF1101）に追記する。そして、ライフサイクル管理部371を通じたアプリのインストール処理において、共有ライブラリアプリ管理部373が、FMのライブラリ情報を共有ライブラリリストファイル375に追記し、その後図９のシーケンス処理を行う形式でもよい。
【００７２】
＜実施例２＞
次に本発明の第2の実施例を説明する。実施例１の構成では、共有ライブラリアプリ管理部373が作成したライブラリシステムアプリ376は、ライフサイクル管理部371を通じてインストールされるものではない。即ち、管理者600は、ライフサイクル管理部371からの指示によりライブラリシステムアプリ376のライフサイクルを管理することはできない。そのため、ライブラリシステムアプリ376を参照するアプリがアプリPF320上から存在しなくなっても、ライブラリシステムアプリ376が起動し続け、その分リソース資源を消費し続けてしまう。
【００７３】
そこで、実施例２では、共有ライブラリアプリ管理部373が、ライブラリシステムアプリ376を利用するアプリのライフサイクルの変化に応じて、ライブラリシステムアプリ376のライフサイクル管理を行う処理を追加する（管理手段）。以下、図２０から図２４を用いて説明する。なお、実施例２の処理は、実施例１で説明した処理が完了した状態から行われるものとする。
【００７４】
図２０は、本実施例の共有ライブラリアプリ管理部373のライブラリシステムアプリ376停止処理手順を示すシーケンス図である。ステップS2000では、管理者600が、ユーザ入力装置202からWebブラウザ310に対し、画像処理装置100で起動中のアプリ（本実施例ではApp A361）を停止する指示を入力する（不図示）。ステップS2001では、Webブラウザ310が、通信部300を介してHTTP Requestをライフサイクル管理部371へ送信する。ここでのHTTP Requestには、ライフサイクル管理部371に対するApp A361のアプリ停止指示が含まれる。
【００７５】
ステップS2002では、ライフサイクル管理部371が、Webブラウザ310のリクエストに対し、アプリ部360のライブラリ抜きApp A1600を停止する指示をOSGi（登録商標）341に行う。ステップS2003では、OSGi（登録商標）341が、アプリ部360のライブラリ抜きApp A1600に対し、バンドルの起動停止を行う。ステップS2004では、OSGi（登録商標）341が、共有ライブラリアプリ管理部373に対しライブラリ抜きApp A1600が停止された旨のイベントを通知する。
【００７６】
ステップS2005では、共有ライブラリアプリ管理部373が、OSGi（登録商標）341により停止されたバンドルからアプリ名を取得する。
【００７７】
ステップS2006では、共有ライブラリアプリ管理部373が、ステップS2005で取得した情報と利用アプリ名1900が一致するか判定する。利用アプリ名1900が一致しない場合、以降のステップS2008-S2014は実行しない。
【００７８】
ステップS2007では、共有ライブラリアプリ管理部373が、共有ライブラリリストファイル375内のバージョン情報1500に対する利用アプリ名1900が、停止されたアプリ以外に存在するか判定する。記載が存在した場合、ステップS2008で、共有ライブラリアプリ管理部373が、OSGi（登録商標）341が管理するバンドルのライフサイクル情報を取得する。なお、バンドルのライフサイクル情報には、OSGi（登録商標）341がバンドルとして保有するアプリのMFの情報、及びバンドルの起動状態が管理されている。
【００７９】
ステップS2009では、共有ライブラリアプリ管理部373が、当該情報から、共有ライブラリリストファイル375内のバージョン情報1500に対する利用アプリ名1900が全て停止しているか判断する。判定の結果、利用アプリ全てが停止していた場合、ステップS2010では、共有ライブラリアプリ管理部373が、バージョン情報1500に対応するライブラリシステムアプリ376の停止指示をOSGi（登録商標）341に行う。ステップS2011では、OSGi（登録商標）341が、当該ライブラリシステムアプリ376に対し、バンドルの起動停止を行う。
【００８０】
ステップS2007に対し、ステップS2012は、共有ライブラリアプリ管理部373が、共有ライブラリリストファイル375内のバージョン情報1500に対する利用アプリ名1900が、停止されたアプリ以外に存在しなかった場合である。ステップS2013では、共有ライブラリアプリ管理部373が、共有ライブラリリストファイル375内のバージョン情報1500に対応するライブラリシステムアプリ376を停止する指示をOSGi（登録商標）341に行う。ステップS2014では、OSGi（登録商標）341が、当該ライブラリシステムアプリ376に対し、バンドルの起動停止を行う。
【００８１】
ステップS2015では、ライフサイクル管理部371が、一連の処理終了後に、リクエストに対する処理の完了通知を行う画面を構成するHTMLデータ（不図示）をHttp Responseとして通信部372を介してWebブラウザ310に送信する。ステップS2016では、Webブラウザ310が、受け取ったHTPLデータを解析し、Webブラウザ310上に画面の表示を行う。
【００８２】
図２１は、本実施例の共有ライブラリアプリ管理部373のライブラリシステムアプリ376起動処理手順を示すシーケンス図である。ステップS2100では、管理者600が、ユーザ入力装置202からWebブラウザ310に対し、画像処理装置100で停止中のアプリ（本実施例ではApp A361）を起動する指示を入力する（不図示）。
【００８３】
ステップS2101では、Webブラウザ310が、通信部300を介してHTTP Requestをライフサイクル管理部371へ送信する。ここでのHTTP Requestには、ライフサイクル管理部371に対するApp A361のアプリ起動指示が含まれる。
【００８４】
ステップS2102では、ライフサイクル管理部371が、Webブラウザ310のリクエストに対し、アプリ部360のライブラリ抜きApp A1600を起動する指示をOSGi（登録商標）341に行う。ステップS2103では、OSGi（登録商標）341が、アプリ部360のライブラリ抜きApp A1600に対し、バンドルの起動開始を行う。ここで、ステップS2104として、ライブラリ抜きApp A1600から、起動処理に例外が発生した通知をOSGi（登録商標）341が受信する。これは、ライブラリ抜きApp A1600が依存するライブラリシステムアプリ376が停止しており、ライブラリシステムアプリ376に関する処理を行えないため発生する。
【００８５】
ステップS2105では、OSGi（登録商標）341が、共有ライブラリアプリ管理部373に対しライブラリ抜きApp A1600で例外が発生した旨のイベントを通知する。なお、本実施例では、共有ライブラリアプリ管理部373は、OSGi（登録商標）341フレームワークで提供されるバンドルの例外発生を検知するイベントリスナを有するものとする。ステップS2106では、共有ライブラリアプリ管理部373が、OSGi（登録商標）341により起動され、例外が発生したバンドルからアプリ名を取得する。
【００８６】
ステップS2107では、共有ライブラリアプリ管理部373が、ステップS2106で取得した情報と利用アプリ名1900が一致するか判定する。利用アプリ名1900が一致しない場合、以降のステップS2108-S2112は実行しない。
【００８７】
ステップS2108では、共有ライブラリアプリ管理部373が、利用アプリ名1900に対応するバージョン情報1500に対応するライブラリシステムアプリ376の開始指示をOSGi（登録商標）341に行う。ステップS2109では、OSGi（登録商標）341が、当該ライブラリシステムアプリ376に対し、バンドルの起動開始を行う。
【００８８】
ステップS2110では、OSGi（登録商標）341が、共有ライブラリアプリ管理部373に対しライブラリシステムアプリ376が起動された旨のイベントを通知する。ステップS2110に対し、ステップS2111では、共有ライブラリアプリ管理部373が、ライブラリ抜きApp A1600を起動する指示をOSGi（登録商標）341に行う。ステップS2112では、OSGi（登録商標）341が、ライブラリ抜きApp A1600に対し、バンドルの起動開始を行う。
【００８９】
ステップS2113では、ライフサイクル管理部371が、一連の処理終了後に、リクエストに対する処理の完了通知を行う画面を構成するHTMLデータ（不図示）をHttp Responseとして通信部372を介してWebブラウザ310に送信する。ステップS2114では、Webブラウザ310が、受け取ったHTPLデータを解析し、Webブラウザ310上に画面の表示を行う。
【００９０】
図２２は、本実施例の共有ライブラリアプリ管理部373の共有ライブラリリストファイル375更新処理手順を示すシーケンス図である。ステップS2200では、管理者600が、ユーザ入力装置202からWebブラウザ310に対し、画像処理装置100に存在するアプリ（本実施例ではApp A361）を削除する指示を入力する（不図示）。
【００９１】
ステップS2201では、Webブラウザ310が、通信部300を介してHTTP Requestをライフサイクル管理部371へ送信する。ここでのHTTP Requestには、ライフサイクル管理部371に対するApp A361のアプリ削除指示が含まれる。
【００９２】
ステップS2202では、ライフサイクル管理部371が、Webブラウザ310のリクエストに対し、アプリ部360のライブラリ抜きApp A1600を削除する指示をOSGi（登録商標）341に行う。ステップS2203では、OSGi（登録商標）341が、アプリ部360のライブラリ抜きApp A1600に対し、バンドルのアンインストールを行う。ステップS2204では、OSGi（登録商標）341が、共有ライブラリアプリ管理部373に対しライブラリ抜きApp A1600が削除された旨のイベントを通知する。ステップS2205では、共有ライブラリアプリ管理部373が、OSGi（登録商標）341に対し、バンドルとして管理されているアプリのライフサイクル情報を取得し、その中から管理アプリ名の一覧を参照する。
【００９３】
ステップS2206では、共有ライブラリアプリ管理部373が、ステップS2205で取得した情報の中に、利用アプリ名1900が存在するか判定する。利用アプリ名1900が存在し、かつ、ステップS2205で取得した管理アプリ情報内に存在しないアプリ名がある場合のみ、以降のステップS2207-S2210が実行される。
【００９４】
ステップS2207では、共有ライブラリアプリ管理部373が、ステップS2205で取得した情報の中に存在しなかった利用アプリ名1900を共有ライブラリリストファイル375から削除する。すなわち、共有ライブラリリストファイル375は、図１９の状態から図１５の状態に変化する。ステップS2208では、共有ライブラリアプリ管理部373が、ステップS2207で削除した利用アプリ名1900に対するバージョン情報1500に、その他に利用アプリ名1900が記載されているか判定する。利用アプリ名1900がない場合、ステップS2209では、共有ライブラリアプリ管理部373が、共有ライブラリリストファイル375内のバージョン情報1500に対応するライブラリシステムアプリ376の停止指示をOSGi（登録商標）341に行う。ステップS2210では、OSGi（登録商標）341が、当該ライブラリシステムアプリ376に対しバンドルの起動停止を行う。
【００９５】
ステップS2211では、ライフサイクル管理部371が、一連の処理終了後に、リクエストに対する処理の完了通知を行う画面を構成するHTMLデータ（不図示）をHttp Responseとして通信部372を介してWebブラウザ310に送信する。ステップS2212では、Webブラウザ310が、受け取ったHTPLデータを解析し、Webブラウザ310上に画面の表示を行う。
【００９６】
図２３は、本実施例の共有ライブラリアプリ管理部373のライブラリシステムアプリ376削除処理手順を示すシーケンス図である。本削除処理は、図１５のように、共有ライブラリリストファイル375において、利用アプリ名1900が存在しなくなったバージョン情報1500に対応するライブラリシステムアプリ376に対して実行される。また、ライフサイクル管理部371からの一連のバンドルライフサイクル変化処理の、ライブラリシステムアプリ376再作成処理発生による応答時間の遅延を考慮し、フレームワーク340が再起動されたタイミングで実施される。本実施例では、フレームワーク340が再起動されるケースとして、管理者600により画像処理装置100の電源が落とされている状態から電源を入れられ、起動処理中である場合の削除処理手順を示す。なお、画像処理装置100の構成は、図２２のシーケンスが実施された後の状態と等しいものとする。
【００９７】
図２３のシーケンスにおいて、S2300では、管理者600が、ユーザ入力装置202から画像処理装置100に対し、電源を入れ画像処理装置100を起動する指示を入力する（不図示）。ステップS2301では、画像処理装置100が、自身の起動処理において、アプリPF320のフレームワーク340を起動する。フレームワーク340では、OSGi（登録商標）341の開始などを順次行う。ステップS2302では、OSGi（登録商標）341が、システムアプリ部360の共有ライブラリアプリ管理部373に対し、バンドルの起動開始を行う。
【００９８】
ステップS2303では、共有ライブラリアプリ管理部373が、自身の起動処理中に行う処理である。共有ライブラリアプリ管理部373が、共有ライブラリリストファイル375を参照し、利用アプリ名1900が存在しないバージョン情報1500が存在するか判定する。存在した場合、ステップS2304では、共有ライブラリアプリ管理部373が、共有ライブラリリストファイル375の当該バージョン情報1500を削除する。すなわち、共有ライブラリリストファイル375は、図１５の状態から図８の状態に変化する。ステップS2305では、共有ライブラリアプリ管理部373が、当該バージョン情報1500に対応するライブラリシステムアプリ376を削除する指示をOSGi（登録商標）341に行う。ステップS2306では、OSGi（登録商標）341が、当該ライブラリシステムアプリ376に対し、バンドルのアンインストールを行う。
【００９９】
ステップS2307では、画像処理装置100が、フレームワーク340の起動完了通知、及びその他起動処理を完了させ、UI表示装置203上にその旨の通知を行う。
【０１００】
なお、本実施例では、本削除処理は、フレームワーク340が再起動されたタイミングに限定されるものではない。即ち、管理者600により、ライフサイクル管理部371を介したアプリのインストールが行われた時に、画像処理装置100のリソース資源量が上限に達しインストールに失敗した場合でもよい。この場合、共有ライブラリリストファイル375において、図１５のように、利用アプリ名1900が存在しなくなったバージョン情報1500に対応するライブラリシステムアプリ376に対して削除処理が実行される。
【０１０１】
図２４は、本実施例の共有ライブラリアプリ管理部373の共有ライブラリリストファイル375削除処理手順を示すシーケンス図である。ステップS2400では、管理者600が、ユーザ入力装置202からWebブラウザ310に対し、画像処理装置100に存在する共有ライブラリアプリ管理部373のフラグメントバンドル374を削除する指示を入力する（不図示）。ステップS2401では、Webブラウザ310が、通信部300を介してHTTP Requestをライフサイクル管理部371へ送信する。ここでのHTTP Requestには、ライフサイクル管理部371に対する、共有ライブラリアプリ管理部373のフラグメントバンドル374の削除指示が含まれる。
【０１０２】
ステップS2402では、ライフサイクル管理部371が、Webブラウザ310のリクエストに対し、システムアプリ部370の共有ライブラリアプリ管理部373のフラグメントバンドル374を削除する指示をOSGi（登録商標）341に行う。ステップS2403では、OSGi（登録商標）341が、共有ライブラリアプリ管理部373のフラグメントバンドル374に対し、バンドルのアンインストールを行う。
【０１０３】
ステップS2404では、共有ライブラリアプリ管理部373が、フラグメントバンドル374に対し、MFにおいて“SharedLibraryName”、“SharedLibraryPackage”情報が記載されているか判断する。記載がされていた場合のみ、ステップS2405-S2408の処理を行う。
【０１０４】
ステップS2405では、共有ライブラリアプリ管理部373が、ステップS2205で判定した情報から、共有ライブラリリストファイル375の同名の共有ライブラリ名部800を参照する。共有ライブラリ名部800において、付随するバージョン情報1500、及び利用アプリ情報1900が存在しないかを、共有ライブラリアプリ管理部373が判定する。ステップS2405で当該情報が存在しなかった場合、ステップS2406では、共有ライブラリアプリ管理部373が、共有ライブラリ名部800のライブラリ名、パッケージ情報を削除する。即ち、当該ライブラリが共有するライブラリの対象から外されたことを意味する。ステップS2407では、共有ライブラリアプリ管理部373が、ステップS2406の削除処理で、共有ライブラリリストファイル375内の共有ライブラリ情報500が存在しなくなったか判定する。存在しなくなった場合、ステップS2408では、共有ライブラリアプリ管理部373が、共有ライブラリリストファイル375を削除する。
【０１０５】
ステップS2409では、ライフサイクル管理部371が、一連の処理終了後に、リクエストに対する処理の完了通知を行う画面を構成するHTMLデータ（不図示）をHttp Responseとして通信部372を介してWebブラウザ310に送信する。ステップS2410では、Webブラウザ310が、受け取ったHTPLデータを解析し、Webブラウザ310上に画面の表示を行う。
【０１０６】
以上により、実施例２では、共有ライブラリアプリ管理部373が、ライブラリシステムアプリ376の利用アプリのライフサイクルの変化に応じたライブラリシステムアプリ376のライフサイクル管理を行うことで、リソース資源消費量の効率化が可能となる。
【０１０７】
＜実施例３＞
次に本発明の第3の実施例を説明する。実施例１の構成では、共有ライブラリアプリ管理部373が作成したライブラリシステムアプリ376は、ダミークラスファイル1410の追加が行われており、元のライブラリファイルよりサイズが大きくなる。そのため、ライブラリシステムアプリ376を利用するアプリが1種類のみの場合、ライブラリシステムアプリ376を作成すると逆にリソース資源消費量が多くなってしまう。そこで、実施例３では、共有ライブラリアプリ管理部373が、同一の共有するライブラリを参照するアプリが２種類以上インストールされた時点で、ライブラリシステムアプリ376の作成、ライブラリ抜きアプリの作成を行う処理を追加する。以下、図２５から図２６を用いて説明する。
【０１０８】
図２５は、本実施例の共有ライブラリアプリ管理部373のライブラリシステムアプリ376作成処理手順を示すシーケンス図である。本実施例では、インストールされるフラグメントバンドル374、App A361は実施例１と同等のものとする。また、新たにインストールされるアプリとして、App B2500を用いる。App B2500は、App A361と同等のライブラリファイル1110を有する。また、App B2500は、App A361のJARファイル1100、MF1101から、JARファイル1100、MF1101のメタデータ1102のみをApp B2500自身の機能を構成するものに変更したファイル群を有する。上記以外の構成は、App B2500はAppA361と差がないものとする。
【０１０９】
ステップS2502では、図６におけるシーケンスの処理を実行する。すなわち、ステップS2502により、画像処理装置100は図６のシーケンスの処理実行後と同等の状態を有する。ステップS2503では、管理者600が、ユーザ入力装置202からWebブラウザ310に対し、記憶装置214に保存されているアプリ（本実施例ではApp A361）をインストールする指示を入力する（不図示）。ステップS2504では、Webブラウザ310が、通信部300を介してHTTP Requestをライフサイクル管理部371へ送信する。ここでのHTTP Requestには、ライフサイクル管理部371に対するアプリインストール指示とApp A361のデータが含まれる。
【０１１０】
ステップS2505では、ライフサイクル管理部371が、Webブラウザ310のリクエストに対し、App A361をアプリ部360にインストールする指示をOSGi（登録商標）341に行う。ステップS2506では、OSGi（登録商標）341が、アプリ部360にApp A361のデータを格納し、バンドルとしてインストールする。ステップS2507では、OSGi（登録商標）341が、共有ライブラリアプリ管理部373に対しバンドルがインストールされた旨のイベントを通知する。
【０１１１】
ステップS2508では、共有ライブラリアプリ管理部373が、OSGi（登録商標）341によりインストールされたバンドルから、所有するライブラリ名、所有パッケージ名、バージョン情報を取得する。ステップS2509では、共有ライブラリアプリ管理部373が、該当する共有ライブラリ名部800部分に、バージョン情報1500、利用アプリ情報1900、未作成フラグ2600を追記する。なお、ステップS2509では、実際の処理では共有ライブラリアプリ管理部373によるライブラリシステムアプリ、及びライブラリ抜きアプリ作成用の判定処理が行われる。本実施例では共有ライブラリリストファイル375への追記処理が行われることが自明なため、記載を省略している。上記判定処理の詳細は、以降のステップS2518-S2524で説明する。
【０１１２】
図２６を用いて、共有ライブラリアプリ管理部373追記後の共有ライブラリリストファイル375の構成を説明する。共有ライブラリリストファイル375は、図１９記載の情報に加え、動作ライブラリシステムアプリ部1500に未作成フラグ2600を追加して有する。未作成フラグ2600は、動作ライブラリシステムアプリ部1500として記載されるバージョンのライブラリシステムアプリが未作成であることを表す。該当するライブラリシステムアプリが作成された時点で、共有ライブラリアプリ管理部373が、未作成フラグ2600を削除する。
【０１１３】
図２５におけるシーケンス図の説明に戻る。ステップS2510では、ライフサイクル管理部371が、一連の処理終了後に、リクエストに対する処理の完了通知を行う画面を構成するHTMLデータ（不図示）をHttp Responseとして通信部372を介してWebブラウザ310に送信する。ステップS2511では、Webブラウザ310が、受け取ったHTPLデータを解析し、Webブラウザ310上に画面の表示を行う。
【０１１４】
ステップS2512では、管理者600が、ユーザ入力装置202からWebブラウザ310に対し、記憶装置214に保存されているアプリ（本実施形態ではApp B2500）をインストールする指示を入力する（不図示）。ステップS2513では、Webブラウザ310が、通信部300を介してHTTP Requestをライフサイクル管理部371へ送信する。ここでのHTTP Requestには、ライフサイクル管理部371に対するアプリインストール指示とApp B2500のデータが含まれる。
【０１１５】
ステップS2514では、ライフサイクル管理部371が、Webブラウザ310のリクエストに対し、App B2500をアプリ部360にインストールする指示をOSGi（登録商標）341に行う。ステップS2515では、OSGi（登録商標）341が、アプリ部360にApp B2500のデータを格納し、バンドルとしてインストールする。ステップS2516では、OSGi（登録商標）341が、共有ライブラリアプリ管理部373に対しバンドルがインストールされた旨のイベントを通知する。
【０１１６】
ステップS2517では、共有ライブラリアプリ管理部373が、OSGi（登録商標）341によりインストールされたバンドルから、所有するライブラリ名、所有パッケージ名、バージョン情報を取得する。ステップS2518では、共有ライブラリアプリ管理部373が、ステップS905で取得した情報と、共有ライブラリ情報800記載の情報が一致するか判定する。インストールされたバンドルにライブラリが含まれていない、及び所有するライブラリ名、所有パッケージ名情報が一致しない場合、以降のステップS2519-S2524は実行しない。
【０１１７】
ステップS2519では、共有ライブラリアプリ管理部373が、共有ライブラリリストファイル375内のバージョン情報1500とステップS905で取得したバージョン情報が一致し、かつ未作成フラグ2600が存在するか判定する。ステップS2519でバージョン情報1500が一致し、かつ未作成フラグ2600が存在する場合、ステップS2520で、共有ライブラリアプリ管理部373が、ライブラリシステムアプリ376の作成を行う。当該作成処理は、下記変更点以外、図１２のシーケンス処理と同等のものである。即ち、共有対象ライブラリのコピー（ステップS1200）のコピー元がApp B2500である点、及び共有ライブラリリストファイル375にバージョン情報の追記（ステップS1206）が行われない点である。
【０１１８】
ステップS2521では、共有ライブラリアプリ管理部373が、該当するライブラリを抜いたアプリの作成を行う。当該作成処理は、下記変更点以外、図１６のシーケンス処理と同等のものである。即ち、App A361のライブラリ抜きApp A1600の作成処理も行われる点である。この場合、利用アプリ名1900に記載があるアプリ（本実施例ではApp A361）から順に処理される。また、当該処理中での共有ライブラリリストファイル375への利用アプリ名の追記処理（ステップS1608）の代わりに、未作成フラグ2600の削除処理が行われる。
【０１１９】
ステップS2519でバージョン情報1500が一致し、かつ未作成フラグ2600が存在しなかった場合（ステップS2522）、ステップS2523で、共有ライブラリアプリ管理部373が該当するライブラリを抜いたアプリの作成を行う。当該作成処理は、図１６のシーケンス処理と同等のものである。ステップS2519でバージョン情報が一致しなかった場合（ステップS2524）、上述のステップS2509と同等の処理を行なう。
【０１２０】
ステップS2525では、ライフサイクル管理部371が、一連の処理終了後に、リクエストに対する処理の完了通知を行う画面を構成するHTMLデータ（不図示）をHttp Responseとして通信部372を介してWebブラウザ310に送信する。ステップS2526では、Webブラウザ310が、受け取ったHTPLデータを解析し、Webブラウザ310上に画面の表示を行う。
【０１２１】
以上により、実施例３では、共有ライブラリアプリ管理部373が、同一の共有するライブラリを参照するアプリが２種類以上インストールされた時点で、ライブラリシステムアプリ376の作成、ライブラリ抜きアプリの作成を行うことが可能となる。この構成により、ライブラリシステムアプリ376の利用アプリが単一の場合に発生する、リソース資源消費量の増加を防ぐことが可能となる。
【０１２２】
なお、本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【図１】
2016081281.tif 000003
【図２】
2016081281.tif 000004
【図３】
2016081281.tif 000005
【図４】
2016081281.tif 000006
【図５】
2016081281.tif 000007
【図６】
2016081281.tif 000008
【図７】
2016081281.tif 000009
【図８】
2016081281.tif 000010
【図９】
2016081281.tif 000011
【図１０】
2016081281.tif 000012
【図１１】
2016081281.tif 000013
【図１２】
2016081281.tif 000014
【図１３】
2016081281.tif 000015
【図１４】
2016081281.tif 000016
【図１５】
2016081281.tif 000017
【図１６】
2016081281.tif 000018
【図１７】
2016081281.tif 000019
【図１８】
2016081281.tif 000020
【図１９】
2016081281.tif 000021
【図２０】
2016081281.tif 000022
【図２１】
2016081281.tif 000023
【図２２】
2016081281.tif 000024
【図２３】
2016081281.tif 000025
【図２４】
2016081281.tif 000026
【図２５】
2016081281.tif 000027
【図２６】
2016081281.tif 000028