(57)【要約】【課題】複数のプログラム実行環境が混在する場合のプログラムの管理を簡便化すること。【解決手段】第１のプログラム実行環境と第２のプログラム実行環境とを有する情報処理装置であって、前記第１のプログラム実行環境に対応した第１のプログラムのインストールを制御する第１の制御部と、前記第１のプログラムからの要求に応じて、前記第２のプログラム実行環境に対応した第２のプログラムのインストールを制御する第２の制御部と、を有する。【選択図】図２
2019175399.tif 000002
【特許請求の範囲】
【請求項１】
第１のプログラム実行環境と第２のプログラム実行環境とを有する情報処理装置であって、
前記第１のプログラム実行環境に対応した第１のプログラムのインストールを制御する第１の制御部と、
前記第１のプログラムからの要求に応じて、前記第２のプログラム実行環境に対応した第２のプログラムのインストールを制御する第２の制御部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記第２の制御部は、前記第１のプログラムのアンインストールに伴い、前記第１のプログラムからの要求に応じてインストールされた前記第２のプログラムをアンインストールする、
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記第２の制御部は、前記第１のプログラムのインストールに伴って前記第１のプログラムから要求される前記第２のプログラムのインストールの要求に応じ、当該第２のプログラムのインストールを制御する、
ことを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
第１のプログラム実行環境と第２のプログラム実行環境とを有する情報処理装置が、
前記第１のプログラム実行環境に対応した第１のプログラムのインストールを制御する第１の制御手順と、
前記第１のプログラムからの要求に応じて、前記第２のプログラム実行環境に対応した第２のプログラムのインストールを制御する第２の制御手順と、
を実行することを特徴とする情報処理方法。
【請求項５】
第１のプログラム実行環境と第２のプログラム実行環境とを有する情報処理装置に、
前記第１のプログラム実行環境に対応した第１のプログラムのインストールを制御する第１の制御手順と、
前記第１のプログラムからの要求に応じて、前記第２のプログラム実行環境に対応した第２のプログラムのインストールを制御する第２の制御手順と、
を実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及び情報処理プログラムに関する。
【背景技術】
【０００２】
画像形成装置や携帯端末等の組み込み機器（以下、単に「機器」という。）の中には、出荷前に工場で組み込まれるアプリケーションの他に、出荷後にユーザの使用目的に合わせて追加的にインストールされるアプリケーション（以下、「追加アプリ」という。）をインストール可能なものが有る。
【０００３】
追加アプリについては、追加アプリのインストール先の機器におけるプログラム実行環境（例えば、ＯＳ（Operating System）等。以下「プラットフォーム」という。）が予定している形式で作成される必要が有る。例えば、追加アプリは、当該追加アプリのライフサイクル（インストール、起動、停止、アンインストール等）をインストール先のプラットフォームが管理可能とするためのメソッドを備えると共に、斯かる管理を可能とするためのファイル構成を有している必要が有る。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、機器に対して第２のプラットフォームを追加し、当該第２のプラットフォーム上で動作するアプリケーションを機器にインストールしたいといった要望が有る。第２のプラットフォームの一例としてＷｅｂコンテナが挙げられ、第２のプラットフォーム上で動作するアプリケーションの一例としてサーブレット等のＷｅｂアプリが挙げられる。
【０００５】
この場合、機器は、２以上のプラットフォームを有することになる。プラットフォームごとにアプリケーションのインストール方法等が異なるため、ユーザは、新たに機器にインストールするアプリがいずれのプラットフォームに対応するのかを意識して、当該プラットフォームに応じた操作を行う必要が有る。
【０００６】
本発明は、上記の点に鑑みてなされたものであって、複数のプログラム実行環境が混在する場合のプログラムの管理を簡便化することを目的とする。
【課題を解決するための手段】
【０００７】
そこで上記課題を解決するため、本発明は、第１のプログラム実行環境と第２のプログラム実行環境とを有する情報処理装置であって、前記第１のプログラム実行環境に対応した第１のプログラムのインストールを制御する第１の制御部と、前記第１のプログラムからの要求に応じて、前記第２のプログラム実行環境に対応した第２のプログラムのインストールを制御する第２の制御部と、を有する。
【発明の効果】
【０００８】
複数のプログラム実行環境が混在する場合のプログラムの管理を簡便化することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態における画像形成装置１０のハードウェア構成例を示す図である。
【図２】本発明の実施の形態における画像形成装置１０の機能構成例を示す図である。
【図３】Ｗｅｂアプリ６０とＳＤＫアプリ４０との親子関係を説明するための図である。
【図４】Ｗｅｂアプリ６０のインストール処理の処理手順の一例を説明するためのシーケンス図である。
【図５】Ｗｅｂアプリ６０のインストール後の画像形成装置１０の機能構成例を示す図である。
【図６】Ｗｅｂアプリ６０のアンインストール処理の処理手順の第１の例を説明するためのシーケンス図である。
【図７】Ｗｅｂアプリ６０のアンインストール処理の処理手順の第２の例を説明するためのシーケンス図である。
【図８】複数の子アプリの共通機能が実装される親アプリの例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態における画像形成装置１０のハードウェア構成例を示す図である。図１において、画像形成装置１０は、コントローラ１１、スキャナ１２、プリンタ１３、モデム１４、操作パネル１５、ネットワークインタフェース１６、及びＳＤカードスロット１７等のハードウェアを有する。
【００１１】
コントローラ１１は、ＣＰＵ１１１、ＲＡＭ１１２、ＲＯＭ１１３、ＨＤＤ１１４、及びＮＶＲＡＭ１１５等を有する。ＲＯＭ１１３には、各種のプログラムやプログラムによって利用されるデータ等が記憶されている。ＲＡＭ１１２は、プログラムをロードするための記憶領域や、ロードされたプログラムのワーク領域等として用いられる。ＣＰＵ１１１は、ＲＡＭ１１２にロードされたプログラムを処理することにより、各種の機能を実現する。ＨＤＤ１１４には、プログラムやプログラムが利用する各種のデータ等が記憶される。ＮＶＲＡＭ１１５には、各種の設定情報等が記憶される。
【００１２】
スキャナ１２は、原稿より画像データを読み取るためのハードウェア（画像読取手段）である。プリンタ１３は、印刷データを印刷用紙に印刷するためのハードウェア（印刷手段）である。モデム１４は、電話回線に接続するためのハードウェアであり、ＦＡＸ通信による画像データの送受信を実行するために用いられる。操作パネル１５は、ユーザからの入力の受け付けを行うためのボタン等の入力手段や、液晶パネル等の表示手段等を備えたハードウェアである。液晶パネルは、タッチパネル機能を有していてもよい。この場合、当該液晶パネルは、入力手段の機能をも兼ねる。ネットワークインタフェース１６は、ＬＡＮ等のネットワーク（有線又は無線の別は問わない。）に接続するためのハードウェアである。ＳＤカードスロット１７は、ＳＤカード８０に記憶されたプログラムを読み取るために利用される。すなわち、画像形成装置１０では、ＲＯＭ１１３に記憶されたプログラムだけでなく、ＳＤカード８０に記憶されたプログラムもＲＡＭ１１２にロードされ、実行されうる。なお、他の記録媒体（例えば、ＣＤ−ＲＯＭ又はＵＳＢ（Universal Serial Bus）メモリ等）によってＳＤカード８０が代替されてもよい。すなわち、ＳＤカード８０の位置付けに相当する記録媒体の種類は、所定のものに限定されない。この場合、ＳＤカードスロット１７は、記録媒体の種類に応じたハードウェアによって代替されればよい。
【００１３】
図２は、本発明の実施の形態における画像形成装置１０の機能構成例を示す図である。図２において、画像形成装置１０は、アプリプラットフォーム２０、１以上の組み込みアプリ３０、１以上のＳＤＫアプリ４０、及びＷｅｂコンテナアプリ５０等を有する。これら各部は、画像形成装置１０にインストールされた１以上のプログラムが、ＣＰＵ１１１に実行させる処理により実現される。画像形成装置１０は、また、関連情報記憶部７０を利用する。関連情報記憶部７０は、例えば、ＨＤＤ１１４、又は画像形成装置１０にネットワークを介して接続可能な記憶装置等を用いて実現可能である。
【００１４】
アプリプラットフォーム２０は、組み込みアプリ３０やＳＤＫアプリ４０を管理すると共に、組み込みアプリ３０やＳＤＫアプリ４０のプラットフォームとして機能する。本実施の形態において、プラットフォームとは、アプリケーションプログラム（以下「アプリ」という。）の管理や、当該アプリの実行環境として機能するソフトウェアをいう。アプリの管理とは、例えば、インストール、起動、停止、アンインストール等である。アプリの実行環境とは、アプリを制御するためのＡＰＩ（Application Program Interface）及び当該ＡＰＩの実装を含むソフトウェアをいう。なお、Ａｎｄｒｏｉｄ（登録商標）等のＯＳ（Operating System）等がアプリプラットフォーム２０とされてもよい。
【００１５】
図２において、アプリプラットフォーム２０は、ＳＤＫインストール制御部２１を含む。ＳＤＫインストール制御部２１は、アプリプラットフォーム２０に対するＳＤＫアプリ４０のインストール及びアンインストールを制御する。
【００１６】
組み込みアプリ３０は、画像形成装置１０の出荷前に工場で組み込まれるアプリである。ＳＤＫアプリ４０は、画像形成装置１０の出荷後にユーザの使用目的に合わせて追加的にインストールされるアプリである。例えば、ＳＤＫアプリ４０は、ＳＤＫアプリ４０の開発用のＳＤＫ（ Software Development Kit）を利用して作成されてもよい。
【００１７】
なお、ＳＤＫアプリ４０は、アプリプラットフォーム２０が予定している形式で作成される。例えば、ＳＤＫアプリ４０は、当該ＳＤＫアプリ４０のライフサイクル（インストール、起動、停止、アンインストール等）をインストール先のプラットフォームが管理可能とするためのメソッドを備えると共に、斯かる管理を可能とするためのファイル構成を有する。
【００１８】
Ｗｅｂコンテナアプリ５０は、例えば、Ｔｏｍｃａｔ（登録商標）等のように、一般的なＷｅｂコンテナとして機能するアプリケーションプログラムである。すなわち、Ｗｅｂコンテナアプリ５０は、サーブレット等のＷｅｂアプリ６０に対するプラットフォームとして機能する。Ｗｅｂコンテナアプリ５０は、ＨＴＴＰ（Ｓ）ポートを開き、外部からのＨＴＴＰ（HyperText Transfer Protocol）リクエストのＵＲＬ（Uniform Resource Locator）に応じ、当該ＵＲＬに対応するＷｅｂアプリ６０に当該ＨＴＴＰリクエストの内容を通知する。
【００１９】
図２において、Ｗｅｂコンテナアプリ５０は、Ｗｅｂインストール制御部５１を含む。Ｗｅｂインストール制御部５１は、Ｗｅｂアプリ６０のインストール及びアンインストールを制御する。なお、Ｗｅｂインストール制御部５１の機能（Ｗｅｂアプリ６０のインストール及びアンインストールの制御等）は、外部からＡＰＩを介して呼びだし可能である。
【００２０】
なお、Ｗｅｂコンテナアプリ５０は、組み込みアプリ３０として作成されてもよいし、ＳＤＫアプリ４０として作成されてもよい。すなわち、本実施の形態においてＷｅｂコンテナアプリ５０は、アプリプラットフォーム２０によって管理されるアプリの一つである。但し、Ｗｅｂコンテナアプリ５０は、アプリプラットフォーム２０の管理外のアプリであってもよい。
【００２１】
Ｗｅｂアプリ６０は、サーブレット等のＷｅｂアプリケーションである。Ｗｅｂアプリ６０は、Ｗｅｂコンテナから通知されるリクエストの内容に応じた処理を実行する。なお、Ｗｅｂアプリ６０は、アプリプラットフォーム２０とは直接的には関係を有さない。すなわち、Ｗｅｂアプリ６０は、アプリプラットフォーム２０の管理下にはない。Ｗｅｂアプリ６０は、アプリプラットフォーム２０が予定している形式を有さないからである。
【００２２】
ところで、図２において、Ｗｅｂアプリ６０を示す矩形は、破線によって示されている。当該破線は、Ｗｅｂアプリ６０がまだ画像形成装置１０にインストールされていない状態を示す。
【００２３】
上記のように、本実施の形態の画像形成装置１０は、アプリプラットフォーム２０とＷｅｂコンテナアプリ５０といった２つのプラットフォームを有する。この状態において、ユーザがＷｅｂアプリ６０をインストールしたい場合、ユーザは、ＳＤＫアプリ４０とは異なった方法で（すなわち、Ｗｅｂコンテナアプリ５０に従った方法で）当該Ｗｅｂアプリ６０をインストールする必要がある。斯かる煩雑さを解消するために、本実施の形態では、Ｗｅｂアプリ６０がＳＤＫアプリ４０に対して関連付けられる。本実施の形態において、斯かる関連付けをＷｅｂアプリ６０とＳＤＫアプリ４０との親子関係という。
【００２４】
図３は、Ｗｅｂアプリ６０とＳＤＫアプリ４０との親子関係を説明するための図である。図３に示されるように、Ｗｅｂアプリ６０とＳＤＫアプリ４０との親子関係において、ＳＤＫアプリ４０が親（親アプリ）であり、Ｗｅｂアプリ６０が子（子アプリ）である。図３において、ＳＤＫアプリ４０ａは、Ｗｅｂアプリ６０ａ、６０ｂ及び６０ｃの３つのＷｅｂアプリ６０の親アプリである例が示されている。
【００２５】
親アプリとしてのＳＤＫアプリ４０ａは、当該ＳＤＫアプリ４０ａに固有の機能を有していなくてもよく、当該ＳＤＫアプリ４０ａのインストールに伴って、子アプリとしてのＷｅｂアプリ６０をインストールし、当該ＳＤＫアプリ４０ａのアンインストールに伴って、子アプリとしてのＷｅｂアプリ６０をアンインストールする機能を有していればよい。その結果、ユーザは、親アプリを、ＳＤＫアプリ４０に従った方法（すなわち、アプリプラットフォーム２０に従った方法）でインストール又はアンインストールすることで、当該親アプリに関連付けられているＷｅｂアプリ６０のインストール又はアンインストールを行うことができる。
【００２６】
なお、図３では、１つのＳＤＫアプリ４０ａに対して３つのＷｅｂアプリ６０が子アプリとして関連付いている例が示されているが、親アプリと子アプリとの関係は、１対１でもよいし、１対多でもよい。
【００２７】
図２における関連情報記憶部７０には、Ｗｅｂコンテナアプリ５０に対してインストールされたＷｅｂアプリ６０に関する親子関係を示す情報が記憶される。
【００２８】
以下、画像形成装置１０において実行される処理手順について説明する。図４は、Ｗｅｂアプリ６０のインストール処理の処理手順の一例を説明するためのシーケンス図である。
【００２９】
ステップＳ１０１において、ユーザは、画像形成装置１０の操作パネル１５を介して、インストール対象のＷｅｂアプリ６０に対応するＳＤＫアプリ４０ａ（親アプリ）を選択して、インストール指示を入力する。なお、当該親アプリのインストールパッケージ（書庫ファイル）は、例えば、画像形成装置１０に挿入されたＳＤカード８０等の外部記録媒体に記憶されていてもいし、画像形成装置１０とネットワークを介して接続されるコンピュータに記憶されていてもよい。
【００３０】
当該指示に応じ、アプリプラットフォーム２０のＳＤＫインストール制御部２１は、選択された親アプリのインストールパッケージを取得し、当該インストールパッケージを用いて当該親アプリのインストールを行う（Ｓ１０２）。その結果、親アプリのインストールパッケージに含まれているファイル群が、アプリプラットフォーム２０が予定している（期待している）フォルダ構成で、例えば、ＨＤＤ１１４に形成されているファイルシステムに展開される。但し、当該ファイル群の中には、当該親アプリの子アプリであるＷｅｂアプリ６０のインストールパッケージ（書庫ファイル）が含まれている。
【００３１】
続いて、ＳＤＫインストール制御部２１は、アプリプラットフォーム２０上の各アプリに対して、新たなアプリ（当該親アプリ）のインストールを通知する。したがって、当該通知は、Ｗｅｂコンテナアプリ５０にも通知される（Ｓ１０３）。なお、ステップＳ１０３における通知は、アプリプラットフォーム２０によっては（すなわち、ＯＳ等によっては）、実行されなくてもよい。
【００３２】
続いて、ＳＤＫインストール制御部２１は、画像形成装置１０を再起動させる（Ｓ１０４）。画像形成装置１０の再起動は、ＳＤＫインストール制御部２１が自動的に行ってもよい。又は、ＳＤＫインストール制御部２１が再起動を促すメッセージを操作パネル１５に表示し、ユーザによる操作に応じて画像形成装置１０が再起動されてもよい。
【００３３】
再起動が完了すると、アプリプラットフォーム２０は、アプリプラットフォーム２０上のアプリのうち、画像形成装置１０の起動のイベントについてイベントハンドラを設定しているアプリに対して、画像形成装置１０の起動の完了を通知する。したがって、親アプリが、インストールに応じて当該イベントハンドラを設定しておくことで、当該親アプリにも画像形成装置１０の起動の完了が通知される（Ｓ１０５）。
【００３４】
親アプリは、画像形成装置１０の起動の完了の通知を契機として、子アプリのインストールに関する処理を開始する。但し、親アプリが画像形成装置１０の起動時にアプリプラットフォーム２０によって自動的に起動される際には、インストール後の最初の親アプリの起動時が、当該処理の契機とされてもよい。又は、画像形成装置１０の再起動後に、ＳＤＫインストール制御部２１から親アプリに対してインストールの完了が通知される場合には、当該通知が当初処理の契機とされてもよい。又は、親アプリがインストール指示を受け付けるためのボタン等を操作パネル１５に表示し、当該ボタン等に対する操作が当該処理の契機とされてもよい。
【００３５】
まず、親アプリは、Ｗｅｂコンテナアプリ５０から、Ｗｅｂコンテナアプリ５０上にインストールされているＷｅｂアプリ６０の属性情報（Ｗｅｂアプリ６０の識別情報（以下「ＷｅｂアプリＩＤ」という。）や、バージョン情報等を含む情報）の一覧情報を取得し（Ｓ１０６、Ｓ１０７）、当該親アプリの子アプリのうち、インストールされていない子アプリの有無を判定する。すなわち、当該親アプリの子アプリのうち、当該一覧情報に含まれていないＷｅｂアプリＩＤに係る子アプリの有無が判定される。該当する子アプリが無い場合、ステップＳ１１１以降は実行されない。
【００３６】
一方、該当する子アプリ（以下、「対象子アプリ」という。）が１以上有る場合、対象子アプリごとに、ステップＳ１１１〜Ｓ１１４が実行される。
【００３７】
ステップＳ１１１において、親アプリは、当該親アプリのインストール先のいずれかのフォルダに格納されている対象子アプリのインストールパッケージと、当該親アプリの識別情報である親アプリパッケージ名とを含むインストール要求を、Ｗｅｂコンテナアプリ５０のＷｅｂインストール制御部５１に入力する。
【００３８】
当該インストール要求に応じ、Ｗｅｂインストール制御部５１は、対象子アプリのインストールパッケージを利用して、対象子アプリをＷｅｂコンテナアプリ５０に対してインストール（ｄｅｐｌｏｙ）する（Ｓ１１２）。続いて、Ｗｅｂインストール制御部５１は、対象子アプリのＷｅｂアプリＩＤを、当該インストール要求に含まれている親アプリパッケージ名に関連付けて関連情報記憶部７０に記憶する（Ｓ１１３）。続いて、Ｗｅｂインストール制御部５１は、インストール結果を親アプリに対して応答する。当該インストール結果は、インストールの成否を示す情報である。
【００３９】
全ての対象子アプリについてステップＳ１１１〜Ｓ１１４が実行されると、Ｗｅｂインストール制御部５１は、Ｗｅｂコンテナアプリ５０を再起動することで、当該各子アプリのインストールを有効化する（Ｓ１１５）。
【００４０】
その後、インストールされた子アプリは、例えば、ユーザによって入力されるリクエストに対し（Ｓ１２１）、レスポンスを返信できるようになる（Ｓ１２２）。なお、厳密には、当該リクエストは、Ｗｅｂコンテナアプリ５０を介して当該子アプリに入力され、当該レスポンスは、Ｗｅｂコンテナアプリ５０を介して返信される。
【００４１】
図４の処理手順が実行されることにより、図２に示した画像形成装置１０の機能構成は、例えば、図５に示されるように変化する。
【００４２】
図５は、Ｗｅｂアプリ６０のインストール後の画像形成装置１０の機能構成例を示す図である。図５には、親アプリとしてのＳＤＫアプリ４０ａが、アプリプラットフォーム２０上にインストールされ、ＳＤＫアプリ４０ａの子アプリであるＷｅｂアプリ６０ａ、６０ｂ及び６０ｃがＷｅｂコンテナアプリ５０上にインストールされた状態が示されている。
【００４３】
なお、親アプリと子アプリとの関係が１対１ではなく、１対Ｎ（Ｎ＞１の整数）である場合、親アプリは、（Ｎ−１）個の他の親アプリ（便宜上、「兄弟アプリ」という。）をインストールすることで、結果的にＮ個の親アプリとＮ個の子アプリとがインストールされるようにしてもよい。この場合、Ｎ個のそれぞれの親アプリの名称を、Ｎ個のそれぞれのＷｅｂアプリ６０の機能に対応した名称としてもよい。そうすることで、例えば、アプリプラットフォーム２０に対して、インストールされているアプリの一覧の表示が要求された場合に、当該Ｎ個の親アプリが表示されるようになる。その結果、ユーザに対しては、当該Ｎ個の親アプリの存在によって、Ｎ個のＷｅｂアプリ６０の存在を示すことができる。
【００４４】
なお、図４の処理手順によれば、親アプリによって子アプリのインストールが制御されるため、インストール処理を親アプリに応じて柔軟に変化させることができる。例えば、或る親アプリが、機種に応じてインストールの対象とする子アプリを変えたい場合、当該親アプリは、例えば、ステップＳ１０５に続いて、画像形成装置１０の機種情報をアプリプラットフォーム２０に照会してもよい。当該親アプリは、照会結果に応じて、インストール対象とする子アプリを変化させてもよい。また、親アプリは、ステップＳ１０７において取得されるＷｅｂアプリ６０の一覧情報を参照して、子アプリとＷｅｂアプリＩＤが共通するＷｅｂアプリ６０が既にインストール済みであっても、子アプリの方が既存のＷｅｂアプリ６０よりもバージョンが新しい場合には、インストールを実行するようにしてもよい。
【００４５】
一方、親アプリではなく、Ｗｅｂコンテナアプリ５０が、ステップＳ１０３におけるインストールの通知に応じて、インストール対象の親アプリに関連付いている子アプリのインストールを行ってもよい。この場合、各親アプリにインストール処理を実装する必要が無くなるという利点はあるが、インストール処理を親アプリに応じて柔軟に変化させることができるといった利点は失われる。
【００４６】
続いて、Ｗｅｂアプリ６０のアンインストールについて説明する。図６は、Ｗｅｂアプリ６０のアンインストール処理の処理手順の第１の例を説明するためのシーケンス図である。
【００４７】
例えば、アプリプラットフォーム２０のＳＤＫインストール制御部２１が操作パネル１５に表示しているアプリ一覧画面に表示されているＳＤＫアプリ４０群の中から、いずれかのＷｅｂアプリ６０の親アプリであるＳＤＫアプリ４０がアンインストール対象として選択されて、アンインストール指示がユーザによって入力されると（Ｓ２０１）、ＳＤＫインストール制御部２１は、アンインストールの準備要求を当該親アプリに入力する（Ｓ２０２）。当該親アプリは、当該準備要求に応じ、自らが確保しているリソース等を解放する。
【００４８】
続いて、親アプリは、Ｗｅｂコンテナアプリ５０のＷｅｂインストール制御部５１に対して、当該親アプリの親アプリパッケージ名を含むアンインストール要求を入力する（Ｓ２０３）。Ｗｅｂインストール制御部５１は、当該アンインストール要求に応じ、当該アンインストール要求に含まれている親アプリパッケージ名に関連付けられて関連情報記憶部７０に記憶されているＷｅｂアプリＩＤを取得し、当該ＷｅｂアプリＩＤに係る子アプリをアンインストール（ｕｎｄｅｐｌｏｙ）する（Ｓ２０４）。この際、Ｗｅｂインストール制御部５１は、当該ＷｅｂアプリＩＤと当該ＷｅｂアプリＩＤに関連付けられている親アプリパッケージ名とを関連情報記憶部７０から削除する。
【００４９】
続いて、Ｗｅｂインストール制御部５１は、子アプリのアンインストール結果を当該親アプリに対して応答する（Ｓ２０５）。当該アンインストール結果は、子アプリのアンインストールの成否を示す情報である。続いて、当該親アプリは、アンインストールの準備結果をＳＤＫインストール制御部２１に応答する（Ｓ２０６）。当該準備結果は、アンインストールの可否を示す情報である。例えば、子アプリのアンインストールに成功した場合、アンインストールが可能であることが応答され、子アプリのアンインストールに失敗した場合、アンインストールが不可であることが応答されてもよい。
【００５０】
親アプリからの応答が、アンインストールが可能であることを示す場合、ＳＤＫインストール制御部２１は、当該親アプリをアンインストールする（Ｓ２０７）。その結果、当該親アプリを構成するファイル群が、ＨＤＤ１１４から削除される。
【００５１】
又は、Ｗｅｂアプリ６０のアンインストール処理は、図７に示される処理手順で実行されてもよい。図７は、Ｗｅｂアプリ６０のアンインストール処理の処理手順の第２の例を説明するためのシーケンス図である。図７中、図６と同一ステップには同一ステップ番号を付し、その説明は適宜省略する。
【００５２】
ユーザからのアンインストール指示に応じ（Ｓ２０１）、ＳＤＫインストール制御部２１は、親アプリをアンインストールする（Ｓ２０７）。
【００５３】
続いて、ＳＤＫインストール制御部２１は、ＳＤＫアプリ４０がアンインストールされたことを、アプリプラットフォーム２０上の各アプリに通知する。当該通知には、アンインストールされたＳＤＫアプリのパッケージ名（ここでは、親アプリパッケージ名）が含まれる。Ｗｅｂコンテナアプリ５０もアプリプラットフォーム２０上のアプリであるため、当該アンインストールが通知される（Ｓ２１１）。
【００５４】
Ｗｅｂコンテナアプリ５０のＷｅｂインストール制御部５１は、当該通知に含まれているパッケージ名に関連付けられて関連情報記憶部７０に記憶されているＷｅｂアプリＩＤが有れば、当該ＷｅｂアプリＩＤに係るＷｅｂアプリ６０をアンインストール（ｕｎｄｅｐｌｏｙ）する（Ｓ２０４）。
【００５５】
なお、図５におけるＳＤＫアプリ４０ａがアンインストールされた場合、画像形成装置１０の機能構成は、図２に示した状態に戻る。
【００５６】
なお、各親アプリの実装内容は類似する可能性が高い。したがって、アプリプラットフォーム２０の提供者等が、親アプリの雛型としてのソースコードを公開することで、サードベンダ等による親アプリの開発作業の負担の軽減が図られてもよい。
【００５７】
また、複数の子アプリが関連付く親アプリには、当該複数の子アプリに共通する機能又は子アプリ間で重複する機能（以下、「共通機能」という。）が実装されてもよい。図８は、複数の子アプリの共通機能が実装される親アプリの例を示す図である。各子アプリは、例えば、アプリ間通信等によって当該共通機能を呼び出せばよい。親アプリに共通機能が実装されることで、重複するソースコードを減らすことができるとともに、メモリの使用量を削減することができる。
【００５８】
また、子アプリが１つであるか複数であるかを問わず、親アプリが、アプリプラットフォーム２０のＡＰＩに対する中継点として機能してもよい。すなわち、子アプリが親アプリとのアプリ間通信等を介して、アプリプラットフォーム２０のＡＰＩを間接的に呼び出せるようにしてもよい。より詳しくは、子アプリから親アプリへ処理をリクエストし、親アプリが自身の権限の範囲内で当該リクエストに応じた処理をアプリプラットフォーム２０を利用して実行した後に、当該処理の結果を子アプリに返却するようにしてもよい。そうすることで、子アプリは、親アプリに許可されている権限の範囲内で、アプリプラットフォーム２０の機能を利用することができる。例えば、Ａｎｄｒｏｉｄ（登録商標）の場合、ファイルシステムや特定のデバイスへのリソースにアクセスする場合に、アプリのＭａｎｉｆｅｓｔファイルに当該デバイスに関するＰｅｒｍｉｓｓｉｏｎ宣言が必要になる。Ｗｅｂアプリ６０は、Ｗｅｂコンテナアプリ５０上で動作するプログラムであるため、このような権限を自由に付与することができない。そこで、親アプリに必要な権限を持たせることで、当該権限の範囲での処理をＷｅｂアプリ６０に実行させることができる。
【００５９】
また、親アプリが何らかの機能を有し、当該機能を操作パネル１５に表示される画面を介して提供する場合に、子アプリは、当該親アプリに関する設定をネットワークを介して受け付けるアプリであってもよい。
【００６０】
上述したように、本実施の形態によれば、アプリプラットフォーム２０及びＷｅｂコンテナアプリ５０といった、複数のプログラム実行環境が混在する場合において、ＳＤＫアプリ４０のインストール及びアンインストールによってＷｅｂアプリ６０のインストールやアンインストールを実現することができる。すなわち、複数のプログラム実行環境が混在する場合のプログラムの管理を簡便化することができる。したがって、ユーザが、ＳＤＫアプリ４０のインストール方法とは別に、Ｗｅｂアプリ６０のインストール方法を学習する必要性を低減することができる。
【００６１】
なお、３つ以上のプログラム実行環境が混在する場合において、本実施の形態が適用されてもよい。例えば、第１のプログラム実行環境に対してインストールされるプログラムが、第２のプログラム実行環境に対応するプログラム及び第３のプログラム実行環境に対応するプログラムのインストール及びアンインストールを実行してもよい。
【００６２】
なお、上記は、画像形成装置１０が情報処理装置の一例である例について説明したが、画像形成装置１０の操作パネル１５がスマートフォン又はタブレット端末等の情報処理装置によって実現される場合、当該情報処理装置に関して本実施の形態が適用されてもよい。又は、プロジェクタ、電子黒板、又はテレビ会議システム等の他の情報処理装置に関して本実施の形態が適用されてもよい。
【００６３】
なお、上記で説明した実施形態の各機能は、一又は複数の処理回路によって実現することが可能である。ここで、本明細書における「処理回路」とは、電子回路により実装されるプロセッサのようにソフトウェアによって各機能を実行するようプログラミングされたプロセッサや、上記で説明した各機能を実行するよう設計されたASIC(Application Specific Integrated Circuit)、DSP（digital signal processor）、FPGA（field programmable gate array）や従来の回路モジュール等のデバイスを含むものとする。
【００６４】
なお、本実施の形態において、画像形成装置１０は、情報処理装置の一例である。アプリプラットフォーム２０は、第１のプログラム実行環境の一例である。Ｗｅｂコンテナアプリ５０は、第２のプログラム実行環境の一例である。ＳＤＫインストール制御部２１は、第１の制御部の一例である。Ｗｅｂインストール制御部５１は、第２の制御部の一例である。
【００６５】
以上、本発明の実施の形態について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００６６】
１０          画像形成装置
１１          コントローラ
１２          スキャナ
１３          プリンタ
１４          モデム
１５          操作パネル
１６          ネットワークインタフェース
１７          ＳＤカードスロット
２０          アプリプラットフォーム
２１          ＳＤＫインストール制御部
３０          組み込みアプリ
４０          ＳＤＫアプリ
５０          Ｗｅｂコンテナアプリ
５１          Ｗｅｂインストール制御部
６０          Ｗｅｂアプリ
７０          関連情報記憶部
８０          ＳＤカード
１１１        ＣＰＵ
１１２        ＲＡＭ
１１３        ＲＯＭ
１１４        ＨＤＤ
１１５        ＮＶＲＡＭ
【先行技術文献】
【特許文献】
【００６７】
【特許文献１】特開２０１７−６８６５５号公報
【図１】
2019175399.tif 000003
【図２】
2019175399.tif 000004
【図３】
2019175399.tif 000005
【図４】
2019175399.tif 000006
【図５】
2019175399.tif 000007
【図６】
2019175399.tif 000008
【図７】
2019175399.tif 000009
【図８】
2019175399.tif 000010