(57)【特許請求の範囲】
【請求項１】
プログラムのインストール手段と、
インストールされたプログラムからの操作要求に応じ、前記操作要求に応じた処理を記憶手段に記憶されるカウンタに関して実行するカウンタ管理手段とを有し、
前記カウンタ管理手段は、
前記プログラムがインストールされるときには、当該プログラムに関するカウンタを前記記憶手段に確保し、確保されたカウンタのカウンタ識別情報と前記プログラムのプログラム識別情報とを対応付けてカウンタ管理情報記憶手段に記録し、
前記プログラムがアンインストールされるときには、当該プログラムに関するカウンタの値と、前記カウンタ管理情報記憶手段に記録されている、当該プログラムのプログラム識別情報と前記カウンタ識別情報との対応付けは維持したまま、当該カウンタは使用されていないことを示す情報を前記カウンタ管理情報記憶手段に記録し、
インストールされるプログラムの前記プログラム識別情報が使用されていないカウンタのカウンタ識別情報と対応付けられている場合は、当該使用されていないカウンタを当該プログラムのカウンタとして確保し、当該カウンタが使用されていることを示す情報を前記カウンタ管理情報記憶手段に記録する画像形成装置。
【請求項２】
前記カウンタ管理手段は、
前記プログラムからの前記プログラム識別情報の入力に応じ、前記カウンタ管理情報記憶手段において該プログラム識別情報に対応付けられている前記カウンタ識別情報を該プログラムに通知し、
前記プログラムからの前記カウンタ識別情報を指定した前記操作要求に応じ、該カウンタ識別情報に係るカウンタに関して該操作要求に応じた処理を実行する請求項１記載の画像形成装置。
【請求項３】
前記カウンタ管理手段は、
インストールされるプログラムの前記プログラム識別情報が使用されていないカウンタのカウンタ識別情報と対応付けられている場合は、当該プログラムの付随情報において当該カウンタの使用が可能であることが示されているときに当該使用されていないカウンタを当該プログラムのカウンタとして確保する請求項１または２記載の画像形成装置。
【請求項４】
前記インストール手段は、インストールされた追加プログラムに関するカウンタが前記カウンタ管理手段によって前記記憶手段に確保できなかった場合は、当該追加プログラムのインストールを中止する請求項１乃至３いずれか一項記載の画像形成装置。
【請求項５】
前記カウンタ管理手段は、前記カウンタの値を減ずる操作要求を前記プログラムより受け付けない請求項１乃至４いずれか一項記載の画像形成装置。
【請求項６】
プログラムをインストール可能な画像形成装置が実行するカウンタ管理方法であって、
インストールされたプログラムからの操作要求に応じ、前記操作要求に応じた処理を記憶手段に記憶されるカウンタに関して実行するカウンタ管理手順を有し、
前記カウンタ管理手順は、
前記プログラムがインストールされるときに、当該プログラムに関するカウンタを前記記憶手段に確保し、確保されたカウンタのカウンタ識別情報と前記プログラムのプログラム識別情報とを対応付けてカウンタ管理情報記憶手段に記録するカウンタ確保手順と、
前記プログラムがアンインストールされるときに、当該プログラムに関するカウンタの値と、前記カウンタ管理情報記憶手段に記録されている、当該プログラムのプログラム識別情報と前記カウンタ識別情報との対応付けは維持したまま、当該カウンタは使用されていないことを示す情報を前記カウンタ管理情報記憶手段に記録するカウンタ解放手順と、
インストールされるプログラムの前記プログラム識別情報が使用されていないカウンタのカウンタ識別情報と対応付けられている場合は、当該使用されていないカウンタを当該プログラムのカウンタとして確保し、当該カウンタが使用されていることを示す情報を前記カウンタ管理情報記憶手段に記録するカウンタ継続使用手順と
を有するカウンタ管理方法。
【請求項７】
前記カウンタ管理手順は、
前記プログラムからの前記プログラム識別情報の入力に応じ、前記カウンタ管理情報記憶手段において該プログラム識別情報に対応付けられている前記カウンタ識別情報を該プログラムに通知するカウンタ識別情報通知手順と、
前記プログラムからの前記カウンタ識別情報を指定した前記操作要求に応じ、該カウンタ識別情報に係るカウンタに関して該操作要求に応じた処理を実行するカウンタ操作手順とを有する請求項６記載のカウンタ管理方法。
【請求項８】
前記カウンタ継続使用手順は、インストールされるプログラムの前記プログラム識別情報が使用されていないカウンタのカウンタ識別情報と対応付けられている場合は、当該プログラムの付随情報において当該カウンタの使用が可能であることが示されているときに当該使用されていないカウンタを当該プログラムのカウンタとして確保する請求項６または７記載のカウンタ管理方法。
【請求項９】
インストールされた追加プログラムに関するカウンタが前記カウンタ管理手順によって前記記憶手段に確保できなかった場合は、当該追加プログラムのインストールを中止する請求項６乃至８いずれか一項記載のカウンタ管理方法。
【請求項１０】
前記カウンタ管理手順は、前記カウンタの値を減ずる操作要求を前記プログラムより受け付けない請求項６乃至９いずれか一項記載のカウンタ管理方法。
【請求項１１】
プログラムをインストール可能な画像形成装置に、
インストールされたプログラムからの操作要求に応じ、前記操作要求に応じた処理を記憶手段に記憶されるカウンタに関して実行するカウンタ管理手順を実行させ、
前記カウンタ管理手順は、
前記プログラムがインストールされるときに、当該プログラムに関するカウンタを前記記憶手段に確保し、確保されたカウンタのカウンタ識別情報と前記プログラムのプログラム識別情報とを対応付けてカウンタ管理情報記憶手段に記録するカウンタ確保手順と、
前記プログラムがアンインストールされるときに、当該プログラムに関するカウンタの値と、前記カウンタ管理情報記憶手段に記録されている、当該プログラムのプログラム識別情報と前記カウンタ識別情報との対応付けは維持したまま、当該カウンタは使用されていないことを示す情報を前記カウンタ管理情報記憶手段に記録するカウンタ解放手順と、
インストールされるプログラムの前記プログラム識別情報が使用されていないカウンタのカウンタ識別情報と対応付けられている場合は、当該使用されていないカウンタを当該プログラムのカウンタとして確保し、当該カウンタが使用されていることを示す情報を前記カウンタ管理情報記憶手段に記録するカウンタ継続使用手順と
を有するカウンタ管理プログラム。
【請求項１２】
前記カウンタ管理手順は、
前記プログラムからの前記プログラム識別情報の入力に応じ、前記カウンタ管理情報記憶手段において該プログラム識別情報に対応付けられている前記カウンタ識別情報を該プログラムに通知するカウンタ識別情報通知手順と、
前記プログラムからの前記カウンタ識別情報を指定した前記操作要求に応じ、該カウンタ識別情報に係るカウンタに関して該操作要求に応じた処理を実行するカウンタ操作手順とを有する請求項１１記載のカウンタ管理プログラム。
【請求項１３】
前記カウンタ継続使用手順は、インストールされるプログラムの前記プログラム識別情報が使用されていないカウンタのカウンタ識別情報と対応付けられている場合は、当該プログラムの付随情報において当該カウンタの使用が可能であることが示されているときに当該使用されていないカウンタを当該プログラムのカウンタとして確保する請求項１１または１２記載のカウンタ管理プログラム。
【請求項１４】
インストールされた追加プログラムに関するカウンタが前記カウンタ管理手順によって前記記憶手段に確保できなかった場合は、当該追加プログラムのインストールを中止する請求項１１乃至１３いずれか一項記載のカウンタ管理プログラム。
【請求項１５】
前記カウンタ管理手順は、前記カウンタの値を減ずる操作要求を前記プログラムより受け付けない請求項１１乃至１４いずれか一項記載のカウンタ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置、カウンタ管理方法、及びカウンタ管理プログラムに関する。
【背景技術】
【０００２】
従来の画像形成装置において、装置上で動作するアプリケーションは予め固定的に組み込まれていた。したがって、画像形成装置内において、アプリケーションの利用に応じて課金額を管理する課金システムについても組み込み済みのアプリケーションに関して専用化かつ固定化されていた。
【０００３】
しかしながら、近年、ユーザニーズが多様化し、固定的に組み込まれたアプリケーションのみでは多様なユーザニーズに応えるのは困難な状況となってきた。そこで、アプリケーションプラットフォームのＡＰＩ（Application Program Interface）が外部に公開され、画像形成装置の開発元以外のサードベンダ等によっても画像形成装置において利用可能なアプリケーションの開発が可能とされ、アプリケーション単独で市場において流通している。ユーザは、自らの業務等に適したアプリケーションを購入し、画像形成装置にインストールすることで、画像形成装置の利便性を更に向上させ、業務の効率化等を図ることができる。
【０００４】
斯かるアプリケーション（以下、「プラグインアプリ」という。）に関する課金形態は、プラグインアプリの販売者によって任意に決められている。したがって、必ずしも売り切り方式ではなく、従量制を採用するプラグインアプリもある。従量制を採用するプラグインアプリについては、画像形成装置内において当該プラグインアプリが利用された回数をカウントする必要がある。プラグインアプリの販売者が、その回数に基づいて正当な対価を回収するためである。
【０００５】
但し、従来の画像形成装置の課金システムにおいてカウント可能な対象は、画像形成装置に予め組み込まれているアプリケーションに関する利用回数に限定されていた。したがって、従量制の課金形態を採用するプラグインアプリについては、プラグインアプリごとに独自の課金機能が実装されていた。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、プラグインアプリごとに独自に課金機能が実装された場合、以下のような問題があった。
【０００７】
第一に、プラグインアプリの開発コストが増加してしまうという問題があった。すなわち、プラグインアプリの開発者は、プラグインアプリ本来の機能に関する開発のみならず、課金機能についても開発しなければならない。その結果、正当な対価を回収するために、却ってコスト増を招いてしまうという状況が発生していた。
【０００８】
第二に、画像形成装置に組み込まれている課金システムは、ハード的及びソフト的に高い安全性が確保されているところ、プラグインアプリによる課金機能において同様の安全性を確保するのは困難であった。すなわち、プラグインアプリには、公開されているＡＰＩに関してのみアクセスが許可され、画像形成装置の課金システムがカウンタを管理するために利用する安全性の高い記録媒体への直接的なアクセスは許可されていないためである。したがって、プラグインアプリによるカウンタ値は改ざんされる可能性が有り、その信頼性に欠けるという問題があった。
【０００９】
第三に、画像形成装置の使用状況の確認作業が煩雑化するという問題があった。画像形成装置に関する使用状況（各種のカウンタ値（カウンタの値））の確認は、ユーザのオフィス等に派遣されるカスタマーエンジニア等と呼ばれる作業員によって行われる。プラグインアプリごとに独自の課金機能が実装されている場合、当該カスタマーエンジニアは、画像形成装置に予め組み込まれている課金システムによるカウンタの値に加え、各プラグインアプリによるカウンタ値を確認する必要がある。そのために、カスタマーエンジニアは、各プラグインのカウンタ値の確認方法学習しなければならなかった。
【００１０】
なお、特許文献１追加機能を提供するモジュールの使用状況についても、装置のシステムによって情報取得可能とし、追加機能の利用に応じて対価を得る手段を提供している。
しかしながら、当該手段はあくまでも装置に予め組み込まれた機能に対する使用状況を取得する機能に過ぎない。したがって、例えば、プラグインされたアプリケーションが装置の機能を利用せずに実現したサービスに対して使用状況を取得することはできない。
【００１１】
本発明は、上記の点に鑑みてなされたものであって、予め組み込まれてないアプリケーションの使用状況を適切に管理することのできる画像形成装置、カウンタ管理方法、及びカウンタ管理プログラムの提供を目的とする。
【課題を解決するための手段】
【００１２】
そこで上記課題を解決するため、本発明は、プログラムのインストール手段と、インストールされたプログラムからの操作要求に応じ、前記操作要求に応じた処理を記憶手段に記憶されるカウンタに関して実行するカウンタ管理手段とを有し、前記カウンタ管理手段は、前記プログラムがインストールされるときには、当該プログラムに関するカウンタを前記記憶手段に確保し、確保されたカウンタのカウンタ識別情報と前記プログラムのプログラム識別情報とを対応付けてカウンタ管理情報記憶手段に記録し、前記プログラムがアンインストールされるときには、当該プログラムに関するカウンタの値と、前記カウンタ管理情報記憶手段に記録されている、当該プログラムのプログラム識別情報と前記カウンタ識別情報との対応付けは維持したまま、当該カウンタは使用されていないことを示す情報を前記カウンタ管理情報記憶手段に記録し、インストールされるプログラムの前記プログラム識別情報が使用されていないカウンタのカウンタ識別情報と対応付けられている場合は、当該使用されていないカウンタを当該プログラムのカウンタとして確保し、当該カウンタが使用されていることを示す情報を前記カウンタ管理情報記憶手段に記録する。
【００１３】
このような画像形成装置では、予め組み込まれてないアプリケーションの使用状況を適切に管理することができる。
【発明の効果】
【００１４】
本発明によれば、予め組み込まれてないアプリケーションの使用状況を適切に管理することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。
【図２】本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。
【図３】本実施の形態におけるカウンタの管理形態を示す図である。
【図４】ＳＤＫアプリのインストール時における処理手順を説明するためのシーケンス図である。
【図５】ＳＤＫアプリの流通形式の例を示す図である。
【図６】カウンタ管理テーブルの構成例を示す図である。
【図７】ＳＤＫアプリに対してカウンタが確保されたときのカウンタ管理テーブルの例を示す図である。
【図８】二つのＳＤＫアプリがインストールされた場合のカウンタ管理テーブルの例を示す図である。
【図９】ＳＤＫアプリの起動時の処理手順を説明するためのシーケンス図である。
【図１０】ＳＤＫアプリによるカウンタの操作時の処理手順を説明するためのシーケンス図である。
【図１１】ＳＤＫアプリのアンインストール時における処理手順を説明するためのシーケンス図である。
【図１２】カウンタが解放されたときのカウンタ管理テーブル及びＮＶＲＡＭの状態を示す図である。
【図１３】カウンタの確保の可否の判定処理の処理手順を説明するためのフローチャートである。
【図１４】過去に使用履歴の有るカウンタが同一のＳＤＫアプリに対して確保された場合のカウンタ管理テーブルの例を示す図である。
【図１５】カウンタマネージャによるカウンタの表示処理の処理手順を説明するためのシーケンス図である。
【図１６】カウンタ値表示画面の表示例を示す図である。
【発明を実施するための形態】
【００１６】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。同図において、画像形成装置１０は、コントローラ１１、スキャナ１２、プリンタ１３、モデム１４、操作パネル１５、ネットワークインタフェース１６、及びＳＤカードスロット１７等のハードウェアを有する。
【００１７】
コントローラ１１は、ＣＰＵ１１１、ＲＡＭ１１２、ＲＯＭ１１３、ＨＤＤ（Hard Disk Drive）１１４、及びＮＶＲＡＭ（Non-volatile RAM）１１５等を有する。ＲＯＭ１１３には、各種のプログラムやプログラムによって利用されるデータ等が記録されている。ＲＡＭ１１２は、揮発性記憶手段の一例であり、プログラムをロードするための記憶領域や、ロードされたプログラムのワーク領域等として用いられる。ＣＰＵ１１１は、ＲＡＭ１１２にロードされたプログラムを処理することにより、各種の機能を実現する。ＨＤＤ１１４には、プログラムやプログラムが利用する各種のデータ等が記録される不揮発性の記録媒体である。ＮＶＲＡＭ１１５には、プログラムが利用する各種のデータの中でも、より高い安全性が必要とされるデータ等が記録される不揮発性の記録媒体である。
【００１８】
スキャナ１２は、原稿より画像データを読み取るためのハードウェアである。プリンタは１３、印刷データを印刷用紙に印刷するためのハードウェアである。モデム１４は、電話回線に接続するためのハードウェアであり、ＦＡＸ通信による画像データの送受信を実行するために用いられる。操作パネル１５は、ユーザからの入力の受け付けを行うめのボタン等の入力手段や、液晶パネル等の表示手段を備えたハードウェアである。ネットワークインタフェース１６は、ＬＡＮ等のネットワーク（有線又は無線の別は問わない。）に接続するためのハードウェアである。ＳＤカードスロット１７は、ＳＤカード８０に記録されたプログラムを読み取るために利用される。すなわち、画像形成装置１０では、ＲＯＭ１１３に記録されたプログラムだけでなく、ＳＤカード８０に記録されたプログラムもＲＡＭ１１２にロードされ、実行されうる。なお、他の記録媒体によってＳＤカード８０が代替されてもよい。例えば、ＣＤ−ＲＯＭ又はＵＳＢ（Universal Serial Bus）メモリ等であってもよい。すなわち、ＳＤカード８０の位置付けに相当する記録媒体の種類は、所定のものに限定されない。この場合、ＳＤカードスロット１７は、記録媒体の種類に応じたハードウェアによって代替されればよい。
【００１９】
図２は、本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。同図において、画像形成装置１０は、標準アプリ１２１、ＳＤＫアプリ１２２、ＳＤＫプラットフォーム１２３、及びコントロールサービス１２４等を有する。
【００２０】
標準アプリ１２１は、画像形成装置１０に標準的に（出荷時に予め）組み込まれているアプリケーションの集合である。同図では、スキャンアプリ１２１１、印刷アプリ１２１２、コピーアプリ１２１３、及びＦＡＸアプリ１２１４が例示されている。スキャンアプリ１２１１は、スキャンジョブを実行する。印刷アプリ１２１２は印刷ジョブを実行する。コピーアプリ１２１３は、コピージョブを実行する。ＦＡＸアプリ１２１４は、ＦＡＸの送信ジョブ又は受信ジョブを実行する。
【００２１】
コントロールサービス１２４は、各種のハードウェアリソース等を制御するための機能を上位アプリケーション等に対して提供するソフトウェアモジュール群であり、例えば、ネットワーク通信に関する機能、スキャナの制御機能、プリンタの制御機能、ＮＶＲＡＭ１１５へのアクセス機能等を提供する。
【００２２】
ＳＤＫアプリ１２２は、画像形成装置１０の出荷後において、画像形成装置１０の機能拡張を図るためのプラグインとして追加的にインストールされるアプリケーションである。同図では、ＳＤＫアプリ１２２として、アプリマネージャ１２２１、ＳＤＫアプリＡ１２２２、及びＳＤＫアプリＢ１２２３が例示されている。アプリマネージャ１２２１は、他のＳＤＫアプリ１２２のインストール、アンインストール、及び起動等を制御する特別なＳＤＫアプリ１２２であり、画像形成装置１０の出荷時において予めインストールされている。ＳＤＫアプリＡ１２２２及びＳＤＫアプリＢ１２２３については、単なる例示であり、その機能については特定しない。
【００２３】
ＳＤＫプラットフォーム１２３は、ＳＤＫアプリ１２２の実行環境を提供する。各ＳＤＫアプリ１２２は、ＳＤＫプラットフォーム１２３が提供するＡＰＩ（Application Program Interface）を利用して開発される。ＳＤＫプラットフォーム１２３のＡＰＩは公開されており、サードベンダ等によってもＳＤＫアプリ１２２は開発されうる。
【００２４】
同図において、ＳＤＫプラットフォーム１２３は、ＪＶＭ１２３１及びカウンタマネージャ１２３２等を含む。ＪＶＭ１２３１は、Ｊａｖａ（登録商標）仮想マシンである。すなわち、ＳＤＫプラットフォーム１２３内の各プログラムモジュール及びＳＤＫプラットフォーム１２３上で動作する各ＳＤＫアプリ１２２は、ＪＶＭ１２３１上で動作するＪａｖａ（登録商標）アプリケーションとして実装される。但し、このことは、本願発明の適用範囲がＪａｖａ（登録商標）によって実装されたプログラムに限定されることを意味するものではない。
【００２５】
カウンタマネージャ１２３２は、ＳＤＫアプリ１２２に対して、カウンタを操作するための共通のＡＰＩを提供するプログラムモジュールである。本実施の形態において、カウンタとは、ユーザによる利用状況（利用回数）を記録するための記憶領域をいう。カウンタに記録される値をカウンタ値という。カウンタ値は、主として課金のためのパラメータとして利用されるが、その用途は必ずしも限定されない。
【００２６】
その他、ＳＤＫプラットフォーム１２３は、例えば、スキャン機能を利用させるためのインタフェースを提供するプログラムモジュール、印刷機能を利用させるためのインタフェースを提供するプログラムモジュール、コピー機能を利用させるためのインタフェースを提供するプログラムモジュール等、各種のプログラムモジュールを含むが、本実施の形態においては便宜上省略する。
【００２７】
なお、図２は、各プログラムがＲＡＭ１１２にロードされた状態を示している。各プログラムの静的な配置位置については、標準アプリ１２１及びコントロールサービス１２４は、ＲＯＭ１１３に記録されており、ＳＤＫアプリ１２２及びＳＤＫプラットフォーム１２３に関しては、ＳＤカード８０に記録されている。したがって、ＳＤＫアプリ１２２及びＳＤＫプラットフォーム１２３を起動する場合、これらが記録されたＳＤカード８０がＳＤカードスロット１７にセットされている必要がある。ＳＤＫアプリ１２２は、処理の実行に応じて永続化する必要があるデータについては、ＨＤＤ１１４又は自らが記録されているＳＤカード８０に記録しておく。
【００２８】
画像形成装置１０におけるカウンタの管理形態について説明する。図３は、本実施の形態におけるカウンタの管理形態を示す図である。
【００２９】
本実施の形態において、カウンタは、ＮＶＲＡＭ１１５内に形成（確保）される。各カウンタにはＩＤ（カウンタＩＤ）が割り当てれ、カウンタＩＤによって区別される。
【００３０】
カウンタは、利用主体に応じて組み込みカウンタとプラグインカウンタとに区別することができる。組み込みカウンタは、標準アプリ１２１等、画像形成装置１０に予め組み込まれている機能に関するカウンタである。したがって、組み込みカウンタについてはカウンタごとにその用途は予め固定的に決められている。具体的には、カウンタＡは、モノクロコピーの枚数を記録するためのカウンタであり、カウンタＢは、カラーコピーの枚数を記録するためのカウンタであるといった具合である。一方、プラグインカウンタは、ＳＤＫアプリ１２２のためのカウンタである。画像形成装置１０に対してどのＳＤＫアプリ１２２がインストールされるかは予測することはできない。したがって、プラグインカウンタの用途はＳＤＫアプリ１２２のインストールに応じて決定される。
【００３１】
なお、組み込みカウンタとプラグインカウントとの区別は論理的なものに過ぎない。物理的には、両者は同様に管理される。具体的には、ＮＶＲＡＭ１１５上における記録形態に関して、両者の間に差異はない。なお、従来のＳＤＫアプリ１２２のカウンタは、ＳＤカード８０又はＨＤＤ１１４に形成せざるを得なかった。ＮＶＲＡＭ１１５へのアクセス手段は、ＳＤＫアプリ１２２には公開されていないからである。ＳＤカード８０又はＨＤＤ１１４へのアクセスは、一般的なＯＳ（Operating System）によって提供されているファイルシステムによって制御されるため、各種のプログラムから容易にアクセスが可能である。したがって、ＳＤカード８０又はＨＤＤ１１４に記録されるカウンタに対する信頼性及び安全性は必ずしも高いものではない。
【００３２】
一方、ＮＶＲＡＭ１１５に形成されたカウンタへのアクセスは、コントロールサービス１２４を介して行われる必要がある。コントロールサービス１２４のみが、各カウンタに関してＮＶＲＡＭ１１５上の記憶位置に関する知識を有するからである。したがって、例えば、標準アプリ１２１による組み込みカウンタのカウンタ値の更新についても、コントロールサービス１２４を介して行われる。
【００３３】
カウンタマネージャ１２３２は、ＳＤＫアプリ１２２に対するカウンタ（プラグインカウンタ）の確保、カウンタ値の更新、カウンタ値の参照、カウンタの解放等のインタフェース（ＡＰＩ）をＳＤＫアプリ１２２に対して提供する。カウンタマネージャ１２３２は、これらのインタフェースの呼び出しに応じ、呼び出されたインタフェースに応じたカウンタの操作をコントロールサービス１２４を介して実行する。なお、カウンタの確保とは、カウンタの利用者を割り当てること又はカウンタの利用権限を獲得することをいい、カウンタの解放とは、当該割り当て又は当該利用権限を解放するこという。
【００３４】
ここで重要なことは、コントロールサービス１２４は、カウンタ値を減じたり、クリア（削除）したりするためのインタフェースを上位に提供していないことである。したがって、カウンタマネージャ１２３２についても、カウンタ値を減じたり、クリアしたりするためのインタフェースはＳＤＫアプリ１２２に提供することはできない。すなわち、カウンタ値の更新に関しては、カウンタ値の加算しか行えない。また、カウンタの解放によってもカウンタ値がクリアされることはない。これにより、カウンタ値の不正なクリアが防止される。
【００３５】
なお、カウンタマネージャ１２３２は、カウンタ管理テーブル１２３３を利用して、カウンタの使用状況等を把握する。すなわち、カウンタ管理テーブル１２３３は、ＮＶＲＡＭ１１４に確保されたカウンタごとに、その使用状況を示す情報が記録されるテーブルであり、例えば、ＨＤＤ１１４又はＳＤＫプラットフォーム１２３が記録されたＳＤカード８０に保存される。
【００３６】
このように、カウンタの物理的な記憶場所がコントロールサービス１２４より上位層には隠蔽されていること、また、カウンタをクリアするためにインタフェース（手段）が上位層に対して提供されていないことにより、カウンタの安全性及び信頼性は適切に確保される。この点については、組み込みカウンタであろうとプラグインカウンタであろうと違いはない。したがって、プラグインカウンタは、組み込みカウンタと同様の安全性等が確保されているといえる。
【００３７】
以下、画像形成装置１０におけるプラグインカウンタの管理又は操作に関する処理手順について説明する。なお、以下において「カウンタ」というとき、特に明記されない限りプラグインカウンタのことを意味する。
【００３８】
図４は、ＳＤＫアプリのインストール時における処理手順を説明するためのシーケンス図である。
【００３９】
ＳＤＫアプリ１２２のインストールは、インストール対象のＳＤＫアプリ１２２（以下、「カレントアプリ」という。）が記録されたＳＤカード８０がＳＤカードスロット１７にセット（挿入）された状態において、アプリマネージャ１２２１によって制御される。アプリマネージャ１２２１が操作パネル１５に表示させるインストール画面を介してカレントアプリのインストールの開始指示が入力されると（Ｓ１０１）、アプリマネージャ１２２１は、カレントアプリによるカウンタの使用の要否を判定する。当該判定は、ＳＤＫアプリ１２２の付随情報又は属性情報に基づいて行われる。具体的には、ＳＤＫアプリ１２２は、図５に示される形式によってＳＤカード８０に記録されている（図５に示される形式によって流通する）。
【００４０】
図５は、ＳＤＫアプリの流通形式の例を示す図である。同図に示されるように、ＳＤＫアプリ１２２は、アプリ情報ファイルと、一つ以上のプログラムコンポーネントとを含む書庫化ファイル（例えば、ＪＡＲ（Java（登録商標） Archive）ファイル）として流通する。アプリ情報ファイルに記録されている情報（アプリ情報）が、上記において付随情報又は属性情報として表現した情報である。本実施の形態において、アプリ情報は、プロダクトＩＤ、アプリ名、バージョン、カウンタ使用フラグ、カウンタ名、自己カウンタ継続使用フラグ、他者カウンタ継続使用フラグ、及びカウンタ不使用モードフラグ等を含む。プロダクトＩＤは、各ＳＤＫアプリ１２２の製品ごとの識別情報（プログラム識別子）である。製品の一意性は、アプリ名及びバージョンによって確保される。アプリ名は、ＳＤＫアプリ１２２の名前である。バージョンは、ＳＤＫアプリ１２２のバージョンである。カウンタ使用フラグは、カウンタの使用が必要であるか（ｔｒｕｅ）否か（ｆａｌｓｅ）を示すフラグ情報である。カウンタ使用フラグの値がｔｒｕｅである場合、カウンタ名以降の値は有効となる。カウンタ名は、カウンタの名前である。自己カウンタ継続使用フラグは、過去に自ら（当該ＳＤＫアプリ１２２）が使用し、現在使用されてない（解放されている）カウンタが有る場合、当該カウンタを使用するか（ｔｒｕｅ）、使用しないか（ｆａｌｓｅ）を示す情報である。他者カウンタ継続使用フラグは、過去に他のＳＤＫアプリ１２２によって使用され、現在使用されていない（解放されている）カウンタが有る場合、当該カウンタを使用するか（ｔｒｕｅ）、使用しないか（ｆａｌｓｅ）を示す情報である。カウンタ不使用モードフラグは、確保できるカウンタが無い場合に、カウンタを使用せずに動作可能か（ｔｒｕｅ）否か（ｆａｌｓｅ）を示す情報である。
【００４１】
また、プログラムコンポーネントは、ＳＤＫアプリ１２２のプログラムの実体であり、例えば、Ｊａｖａ（登録商標）のクラスファイル等が相当する。
【００４２】
したがって、アプリマネージャ１２２１は、インストール対象とされたＳＤＫアプリ１２２のアプリ情報ファイルに記録されているカウンタ使用フラグを参照して、カレントアプリによるカウンタの使用の要否を判定する。当該カウンタ使用フラグの値がｔｒｕｅである場合、アプリマネージャ１２２１は、カレントアプリのアプリ情報を指定して、カウンタの確保要求をカウンタマネージャ１２３２に入力する（Ｓ１０２）。カウンタマネージャ１２３２は、カレントアプリのアプリ情報及びカウンタ管理テーブル１２３３の状態に基づいて、カレントアプリに対するカウンタの確保の可否を判定する（Ｓ１０３）。
【００４３】
図６は、カウンタ管理テーブルの構成例を示す図である。同図に示されるように、カウンタ管理テーブル１２３３は、予めＮＶＲＡＭ１１５上に確保されたカウンタごとに、カウンタＩＤ、カウンタ名、現プロダクトＩＤ、及び前プロダクトＩＤ等を管理するテーブルである。カウンタＩＤは、カウンタごとに一意なＩＤであり、ＮＶＲＡＭ１１５上における各カウンタの記憶位置（アドレス情報）と等価と考えてよい。カウンタ名は、カウンタを使用するＳＤＫアプリ１２２によって指定されるカウンタ名である。現プロダクトＩＤは、当該カウンタを現在使用しているＳＤＫアプリ１２２のプロダクトＩＤである。前プロダクトＩＤは、現プロダクトＩＤに係るＳＤＫアプリ１２２の前に当該カウンタを使用していたＳＤＫアプリ１２２のプロダクトＩＤである。すなわち、前プロダクトＩＤは、カウンタの過去の使用履歴を示す情報であると共に、当該カウンタを過去に使用したＳＤＫアプリ１２２（プロダクトＩＤ）と当該カウンタ（カウンタＩＤ）との対応付け維持するための情報であるといえる。
【００４４】
ステップＳ１１３の詳細については後述するが、少なくとも図６のように、前プロダクトＩＤ及び現プロダクトＩＤが記録されていないカウンタが存在する場合、アプリマネージャ１２２１は、カレントアプリに対するカウンタの確保は可能であると判定する。カウンタの確保が可能であると判定した場合、カウンタマネージャ１２３２は、確保可能なカウンタのカウンタＩＤを指定して、カウンタの確保要求をコントロールサービス１２４に入力する（Ｓ１０４）。
【００４５】
コントロールサービス１２４は、カウンタの確保要求に指定されたカウンタＩＤに係るカウンタを確保状態とする。確保状態とは、ＮＶＲＡＭ１１５の管理プログラムによって、当該カウンタが使用中であることが認識され、同一のカウンタＩＤの確保要求が当該管理プログラムによって拒否される状態をいう。
【００４６】
続いて、カウンタマネージャ１２３２は、カウンタ管理テーブル１２３３において、カレントアプリに対して確保されたカウンタに対するレコードのカウンタ名及び現プロダクトＩＤに、カレントアプリのアプリ情報に含まれているカウンタ名又はカレントアプリのプロダクトＩＤを記録する（Ｓ１０５）。
【００４７】
図７は、ＳＤＫアプリに対してカウンタが確保されたときのカウンタ管理テーブルの例を示す図である。同図では、カウンタＩＤが「１」のカウンタに対して、カウンタ名「ＡＰＬ０１」、プロダクトＩＤ「１０００００００」が記録された例が示されている。すなわち、同図は、カウンタＩＤが「１」のカウンタが、プロダクトＩＤが「１０００００００」であるＳＤＫアプリ１２２に割り当てられたことを示す。なお、本実施の形態において、現プロダクトＩＤとして記録された値は、カウンタが使用されていることを示す情報として用いられる。但し、他のフラグ情報をカウンタが使用されていることを示す情報として別途用意してもよい。
【００４８】
続いて、カウンタマネージャ１２３２は、カウンタの確保処理の処理結果をアプリマネージャ１２２１に通知する（Ｓ１０６）。カウンタが正常に確保できた場合は正常終了が通知され、カウンタの確保に失敗した場合は異常終了が通知される。アプリマネージャ１２２１は、正常終了が通知された場合、カレントアプリのインストール処理を継続する（Ｓ１０７）。したがって、他に異常が発生しなければ、カレントアプリは画像形成装置１０にインストールされる。
【００４９】
一方、異常終了が通知された場合、アプリマネージャ１２２１は、カレントアプリのインストールを中止する。インストールが中止されることにより、カレントアプリの提供者に対する不利益の発生を防止することができる。すなわち、カウンタが確保できないとうことは、カレントアプリについて課金を行うことができないことを意味する。したがって、カウンタが確保できないにも拘わらず、カレントアプリのインストールを実行してしまうと、カレントアプリに関して課金ができない状態のままユーザによる利用が可能となってしまう可能性がある。そうすると、カレントアプリの提供者は正当な対価を回収することができないからである。
【００５０】
図４の処理は、ＳＤＫアプリ１２２がインストールされるたびに実行される。したがって、カウンタを使用する新たなＳＤＫアプリ１２２がインストールされた場合、カウンタ管理テーブル１２３３の状態は、例えば、図８に示されるようになる。
【００５１】
図８は、二つのＳＤＫアプリがインストールされた場合のカウンタ管理テーブルの例を示す図である。同図では、カウンタＩＤが「２」のカウンタに対して、カウンタ名「ＡＰＬ０２」、プロダクトＩＤ「２０００００００」が記録された例が示されている。すなわち、同図は、カウンタＩＤが「２」のカウンタが、プロダクトＩＤが「２０００００００」であるＳＤＫアプリ１２２に割り当てられたことを示す。
【００５２】
なお、カレントアプリが複数のカウンタを必要としている場合、すなわち、カレントアプリのアプリ情報に複数のカウンタに関する情報が記録されている場合、ステップＳ１０２〜Ｓ１０６は、カウンタごとに実行される。アプリマネージャ１２２１は、全てのカウンタについて正常終了が通知された場合にインストールを継続し、少なくとも一つのカウンタについて異常終了が通知された場合にはインストールを中止する。
【００５３】
また、少なくとも一つのカウンタについて異常終了が通知された場合、アプリマネージャ１２２１は、それまでに正常終了が通知されたカウンタについて、図１１において説明される解放処理をカウンタマネージャ１２３２に実行させる。使用されないカウンタが確保されたままになるのを回避するためである。
【００５４】
続いて、ＳＤＫアプリ１２２の起動時の処理手順について説明する。図９は、ＳＤＫアプリの起動時の処理手順を説明するためのシーケンス図である。
【００５５】
ＳＤＫアプリ１２２は、起動されると、自らのプロダクトＩＤと自らが使用するカウンタのカウンタ名とを指定して、カウンタＩＤの取得要求をカウンタマネージャ１２３２に入力する（Ｓ２０１）。カウンタＩＤの取得要求に指定されるプロダクトＩＤ及びカウンタ名は、アプリ情報ファイルより取得されてもよいし、ＳＤＫアプリ１２２にハードコーディングされていてもよい。
【００５６】
続いて、カウンタマネージャ１２３２は、指定されたプロダクトＩＤを現プロダクトＩＤとし、指定されてカウンタ名が付与されたカウンタのカウンタＩＤをカウンタ管理テーブル１２３３に基づいて判定する（Ｓ２０２）。例えば、カウンタ管理テーブル１２３３が図７の状態において、指定されたプロダクトＩＤが「１０００００００」であり、カウンタ名が「ＡＰＬ０１」である場合、該当するカウンタＩＤは「１」であると判定される。
【００５７】
続いて、カウンタマネージャ１２３２は、判定結果としてのカウンタＩＤをＳＤＫアプリ１２２に返却する（Ｓ２０３）。なお、ＳＤＫアプリ１２２が使用するカウンタが複数有る場合、ステップＳ２０１〜Ｓ２０３は、カウンタの個数分繰り返される。
【００５８】
カウンタＩＤを取得したＳＤＫアプリ１２２は、当該カウンタＩＤに対応するカウンタの操作が可能となる。
【００５９】
図１０は、ＳＤＫアプリによるカウンタの操作時の処理手順を説明するためのシーケンス図である。
【００６０】
ＳＤＫアプリ１２２は、ジョブの実行時等において、対応するカウンタを更新する必要がある場合、当該カウンタのカウンタＩＤとカウンタ値の増分（加算値）を指定してカウンタの更新要求をカウンタマネージャ１２３２に入力する（Ｓ３０１）。カウンタマネージャ１２３２は、当該更新要求をコントロールサービス１２４に伝達する（Ｓ３０２）。コントロールサービス１２４は、ＮＶＲＡＭ１１４の管理プログラムを介して、指定されたカウントＩＤに対応するカウンタよりカウンタ値を読み込む（Ｓ３０３）。続いて、コントロールサービス１２４は、読み込まれたカウンタ値に対して増分を加算し、新たなカウンタ値を算出する（Ｓ３０４）。続いて、コントロールサービス１２４は、ＮＶＲＡＭ１１４の管理プログラムを介して、指定されたカウントＩＤに対応するカウンタに算出結果としてのカウンタ値を書き込む（Ｓ３０５）。続いて、コントロールサービス１２４は、カウント値の更新処理の処理結果（成否）をカウンタマネージャ１２３２に通知する（Ｓ３０６）。カウンタマネージャ１２３２は当該処理結果をＳＤＫアプリ１２２に通知する。
【００６１】
また、ＳＤＫアプリ１２２は、自らが使用するカウンタのカウンタ値を取得（参照）する必要がある場合、当該カウンタのカウンタＩＤを指定して、カウンタ値の取得要求をカウンタマネージャ１２３２に入力する（Ｓ３１１）。カウンタマネージャ１２３２は、当該カウンタ値の取得要求をコントロールサービス１２４に伝達する（Ｓ３１２）。コントロールサービス１２４は、ＮＶＲＡＭ１１４の管理プログラムを介して、指定されたカウントＩＤに対応するカウンタよりカウンタ値を読み込む（Ｓ３１３）。続いて、コントロールサービス１２４は、読み込んだカウンタ値をカウンタマネージャ１２３２に返却する（Ｓ３１４）。カウンタマネージャ１２３２は当該カウンタ値をＳＤＫアプリ１２２に返却する（Ｓ３１５）。
【００６２】
このように、ＳＤＫアプリ１２２によるカウンタの操作は、全てカウンタマネージャ１２３２を介して実行される。
【００６３】
続いて、ＳＤＫアプリ１２２のアンインストール時の処理手順について説明する。図１１は、ＳＤＫアプリのアンインストール時における処理手順を説明するためのシーケンス図である。
【００６４】
アプリマネージャ１２２１が操作パネル１５に表示させるアンインストール画面を介してアンインストール対象のＳＤＫアプリ１２２（以下、「カレントアプリ」という。）が選択され、アンインストールの開始指示が入力されると（Ｓ４０１）、アプリマネージャ１２２１は、カレントアプリによるカウンタの使用の要否をカウンタアプリのアプリ情報ファイルに基づいて判定する。
【００６５】
カレントアプリがカウンタの使用を必要としている場合、アプリマネージャ１２２１は、カレントアプリのアプリ情報に含まれているプロダクトＩＤ及びカウンタ名を指定して、カウンタの解放要求をカウンタマネージャ１２３２に入力する（Ｓ４０２）。
【００６６】
カウンタマネージャ１２３２は、カウンタ管理テーブル１２３３に基づいて、指定されたプロダクトＩＤ及びカウンタ名に対応するカウンタＩＤを判定する（Ｓ４０３）。続いて、カウンタマネージャ１２３２は、判定されたカウンタＩＤを指定して、カウンタの解放要求をコントロールサービス１２４に入力する（Ｓ４０４）。
【００６７】
コントロールサービス１２４は、カウンタの解放要求に指定されたカウンタＩＤに係るカウンタを解放状態とする。解放状態とは、ＮＶＲＡＭ１１５の管理プログラムによって、当該カウンタが使用されていないことが認識され、同一のカウンタＩＤに係る確保要求が当該管理プログラムによって許可される状態をいう。
【００６８】
続いて、カウンタマネージャ１２３２は、カウンタ管理テーブル１２３３を更新する（Ｓ４０５）。
【００６９】
図１２は、カウンタが解放されたときのカウンタ管理テーブル及びＮＶＲＡＭの状態を示す図である。
【００７０】
同図では、プロダクトＩＤが「２０００００００」であるＳＤＫアプリ１２２がアンインストールされた場合の例が示されている。この場合、カウンタＩＤが２のカウンタについて、カウンタ名が削除される。但し、カウンタ（カウンタＩＤ）と、ＳＤＫアプリ１２２（プロダクトＩＤ）との対応付けは維持される。すなわち、現プロダクトＩＤの値は完全に削除されるのではなく、前プロダクトＩＤに移動される。また、当該カウンタについてそれまでに記録されたカウンタ値についても、ＮＶＲＡＭ１１５内において記録されたままとされる。なお、現プロダクトＩＤの値は空となったことにより、当該カウンタは使用されていないことを示す情報が記録されたことになる。但し、他のフラグ情報をカウンタが使用されていないことを示す情報として別途用意してもよい。
【００７１】
続いて、カウンタマネージャ１２３２は、カウンタの解放処理の処理結果をアプリマネージャ１２２１に通知する（Ｓ４０６）。カウンタの解放処理が正常終了である場合、アプリマネージャ１２２１は、カレントアプリのアンインストールを実行する（Ｓ４０７）。
【００７２】
続いて、図４のステップＳ１０３の詳細について説明する。図１３は、カウンタの確保の可否の判定処理の処理手順を説明するためのフローチャートである。
【００７３】
ステップＳ１０３−１において、カウンタマネージャ１２３２は、カウンタ管理テーブル１２３３を参照して使用されていないカウンタが有るか否かを判定する。少なくとも現プロダクトＩＤの値が空である（記録されていない）カウンタが有る場合、カウンタマネージャ１２３２は使用されていないカウンタは有ると判定する。
【００７４】
使用されていないカウンタは有ると判定した場合（Ｓ１０３−１でＹＥＳ）、カウンタマネージャ１２３２は、カレントアプリのアプリ情報の自己カウンタ継続使用フラグの値を参照し、過去にカレントアプリによって使用されたカウンタの使用の可否を判定する（Ｓ１０３−２）。自己カウンタ継続使用フラグの値がｔｒｕｅである場合（Ｓ１０３−２でＹＥＳ）、カウンタマネージャ１２３２は、カレントアプリについて使用履歴の有るカウンタの有無をカウンタ管理テーブル１２３３を参照して判定する（Ｓ１０３−３）。カウンタアプリについて使用履歴の有るカウンタとは、カウンタ管理テーブル１２３３において、前プロダクトＩＤの値がカレントアプリのプロダクトＩＤと一致し、現プロダクトＩＤの値が空であるカウンタをいう。該当するカウンタが存在する場合（Ｓ１０３−３でＹＥＳ）、カウンタマネージャ１２３２は、当該カウンタを確保可能であると判定し、当該カウンタのカウンタＩＤを確保対象として記憶する（Ｓ１０３−４）。
【００７５】
この場合の典型例としては、カウンタ管理テーブル１２３３が図１２に示される状態において、プロダクトＩＤが「２０００００００」であるＳＤＫアプリ１２２が再インストールされた場合が挙げられる。この場合、後段において実行されるステップＳ１０５（図４）により、カウンタ管理テーブル１２３３は、図１４に示されるような状態となる。
【００７６】
図１４は、過去に使用履歴の有るカウンタが同一のＳＤＫアプリに対して確保された場合のカウンタ管理テーブルの例を示す図である。同図では、カウンタＩＤが「２」であるカウンタのカウンタ名、現プロダクトＩＤに対して、「ＡＰＬ−０２」、「２０００００００」が再度登録されている。なお、この場合、ＮＶＲＡＭ１１５に記録されているカウンタ値はそのまま引き継がれる。カウンタ値を初期化することはできないからである。
【００７７】
一方、自己カウンタ継続使用フラグがｆａｌｓｅである場合（Ｓ１０３−２でＮＯ）、又はカレントアプリについて使用履歴の有るカウンタが無かった場合（Ｓ１０３−３でＮＯ）、カウンタマネージャ１２３２は、使用履歴の無いカウンタの有無をカウンタ管理テーブル１２３３を参照して判定する（Ｓ１０３−５）。使用履歴の無いカウンタとは、カウンタ管理テーブル１２３３において、現プロダクトＩＤ及び前プロダクトＩＤの双方の値が空であるカウンタをいう。使用履歴の無いカウンタが有る場合（Ｓ１０３−５でＹＥＳ）、カウンタマネージャ１２３２は、当該カウンタを確保可能であると判定し、当該カウンタのカウンタＩＤを確保対象として記憶する（Ｓ１０３−６）。
【００７８】
この場合、後段において実行されるステップＳ１０５（図４）により、カウンタ管理テーブル１２３３は、図７又は図８において示したような状態となる。
【００７９】
また、使用履歴の無いカウンタが無い場合（Ｓ１０３−５でＮＯ）、カウンタマネージャ１２３２は、カレントアプリのアプリ情報の他者カウンタ継続使用フラグの値を参照し、過去に他のＳＤＫアプリ１２２によって使用されたカウンタの使用の可否を判定する（Ｓ１０３−７）。他者カウンタ継続使用フラグの値がｔｒｕｅである場合（Ｓ１０３−７でＹＥＳ）、カウンタマネージャ１２３２は、他のＳＤＫアプリ１２２について使用履歴の有るカウンタの有無をカウンタ管理テーブル１２３３を参照して判定する（Ｓ１０３−８）。他のＳＤＫアプリ１２２について使用履歴の有るカウンタとは、カウンタ管理テーブル１２３３において、前プロダクトＩＤの値がカレントアプリのプロダクトＩＤとは一致せず、現プロダクトＩＤの値が空であるカウンタをいう。該当するカウンタが存在する場合（Ｓ１０３−８でＹＥＳ）、カウンタマネージャ１２３２は、当該カウンタを確保可能であると判定し、当該カウンタのカウンタＩＤを確保対象として記憶する（Ｓ１０３−９）。
【００８０】
また、使用されていないカウンタが無い場合（Ｓ１０３−１でＮＯ）、他者カウンタ継続使用フラグの値がｆａｌｓｅである場合（Ｓ１０３−７でＮＯ）、又は他のＳＤＫアプリ１２２について使用履歴の有るカウンタが無い場合（Ｓ１０３−８でＮＯ）、カウンタマネージャ１２３２は、カレントアプリのカウンタ不使用モードフラグを参照する（Ｓ１０３−１０）。カウンタ不使用モードフラグがｔｒｕｅである場合（Ｓ１０３−１０でＹＥＳ）、カウンタマネージャ１２３２は、カウンタの確保は不可能であるが図１３の処理は正常終了であると判定する（Ｓ１０３−１１）。したがって、この場合、図４におけるステップＳ１０４及びＳ１０５は実行されないが、ステップＳ１０６において正常終了がアプリマネージャ１２２１に通知される。
【００８１】
一方、不使用モードフラグがｆａｌｓｅである場合（Ｓ１０３−１０でＮＯ）、カウンタマネージャ１２３２は、カウンタの確保は不可能であり、図１３の処理は異常終了であると判定する（Ｓ１０３−１２）。したがって、この場合、図４におけるステップＳ１０４及びＳ１０５は実行されず、ステップＳ１０６において異常終了がアプリマネージャ１２２１に通知される。
【００８２】
なお、ステップＳ１０９の判定が行われた場合、すなわち、他のＳＤＫアプリ１２２の使用履歴の有るカウンタが確保可能であると判定された場合、当該カウンタがカレントアプリに対して確保される。但し、当該カウンタには、当該他のアプリ１２２がアンインストールされるまでの使用状況に応じたカウンタ値（以下、「過去カウンタ値」という。）が記録されている。したがって、カレントアプリの使用状況の把握を可能とするためには、当該カウンタのカウンタ値から過去カウンタ値を減ずる処理（すなわち、差分を算出する処理）が必要とされる。差分を算出する処理は、カウンタマネージャ１２３２が実行すればよい。例えば、ステップＳ１０９の実行時において、過去カウンタ値を取得し、カウンタ管理テーブル１２３３に記録しておけばよい。この場合、カウンタ管理テーブル１２３３には過去カウンタ値を記録するための新たな列を設ければよい。カウンタマネージャ１２３２は、カウンタ値の取得が要求された場合は、コントロールサービス１２４を介してＮＶＲＡＭ１１５より取得されるカウンタ値より過去カウンタ値を減じた値を返却すればよい。又は、過去カウンタ値は、ＮＶＲＡＭ１１５に記録してよいもよい。例えば、カウンタごとに過去カウンタ値を記録するための領域をＮＶＲＡＭ１１５に設けておいてもよい。この場合、ＮＶＲＡＭ１１５におけるリソースの消費量は増加するが、過去カウンタ値についても安全に管理することができるという利点がある。なお、この場合、カウンタマネージャ１２３２は、カウンタ値の取得が要求された場合は、コントロールサービス１２４を介してＮＶＲＡＭ１１５より取得されるカウンタ値及び過去カウンタ値との差分を返却すればよい。
【００８３】
また、上記においては、カウンタマネージャ１２３２は、アプリ情報に基づいて各種の判断（例えば、ステップＳ１０３−２、Ｓ１０３−７、Ｓ１０３−１０等の判断）を行う例が示されているが、これらの判断は、インストール対象のＳＤＫアプリ１２２に問い合わせることにより取得される情報に基づいて動的に判断されてもよい。この場合、図４において、アプリマネージャは、ステップＳ１０２の実行前に、カレントアプリを仮にインストールし、起動状態としておけばよい。そうすることにより、カウンタマネージャは、カレントアプリと通信を行うことが可能となる。
【００８４】
ところで、カウンタマネージャ１２３２は、カスタマーエンジニア用に全カウンタの表示機能を備えている。続いて、カウンタマネージャ１２３２によるカウンタの表示処理について説明する。図１５は、カウンタマネージャによるカウンタの表示処理の処理手順を説明するためのシーケンス図である。
【００８５】
操作パネル１５を介して、カウンタ値の表示指示が入力されると、カウンタマネージャ１２３２は、カウンタ管理テーブル１２３３を参照して使用されているカウンタのカウンタＩＤを判定する（Ｓ５０１）。具体的には、現プロダクトＩＤが記録されているカウンタのカウンタＩＤが判定される。
【００８６】
続いて、カウンタマネージャ１２３２は、使用されているカウンタＩＤを一つ指定してコントロールサービス１２４に対してカウンタ値の取得要求を入力する（Ｓ５０２）。コントロールサービス１２４は、ＮＶＲＡＭ１１４の管理プログラムを介して、指定されたカウントＩＤに対応するカウンタよりカウンタ値を読み込む（Ｓ５０３）。続いて、コントロールサービス１２４は、読み込んだカウンタ値をカウンタマネージャ１２３２に返却する（Ｓ５０４）。
【００８７】
カウンタマネージャ１２３２は、使用されているカウンタが複数有る場合、ステップＳ５０２を使用されているカウンタの個数分繰り返す。その結果、使用されている全てのカウンタについてカウンタ値が取得される。
【００８８】
続いて、カウンタマネージャ１２３２は、使用されている各カウンタについて、カウンタ名と取得されたカウンタ値とを表示させる画面（カウンタ値表示画面）を操作パネル１５に表示させる（Ｓ５０５）。
【００８９】
図１６は、カウンタ値表示画面の表示例を示す図である。同図に示されるように、カウンタ値表示画面５１０には、カウンタごとにカウンタ名及びカウンタ値が表示される。同図では、６個のカウンタ（本実施の形態では全てのプラグインカウンタ）が使用されている例が示されている。
【００９０】
このように、各ＳＤＫアプリ１２２のカウンタ値が一覧表示されることで、カスタマーエンジニアは各ＳＤＫアプリのカウンタ値を容易に把握することができる。
【００９１】
上述したように、本実施の形態によれば、ＳＤＫアプリ１２２が利用するカウンタについても、標準アプリ１２１と同様にプラットフォーム側において管理することができる。したがって、各ＳＤＫアプリ１２２の開発効率を向上させることができる。また、各ＳＤＫアプリ１２２のカウンタの安全性及び信頼性を向上させることができる。更に、カスタマーエンジニアの作業負担を軽減することができる。
【００９２】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００９３】
１０          画像形成装置
１１          コントローラ
１２          スキャナ
１３          プリンタ
１４          モデム
１５          操作パネル
１６          ネットワークインタフェース
１７          ＳＤカードスロット
８０          ＳＤカード
１１１        ＣＰＵ
１１２        ＲＡＭ
１１３        ＲＯＭ
１１４        ＨＤＤ
１１５        ＮＶＲＡＭ
１２１        標準アプリ
１２２        ＳＤＫアプリ
１２３        ＳＤＫプラットフォーム
１２４        コントロールサービス
１２２１      アプリマネージャ
１２２２      ＳＤＫアプリＡ
１２２３      ＳＤＫアプリＢ
１２３１      ＪＶＭ
１２３２      カウンタマネージャ
【先行技術文献】
【特許文献】
【００９４】
【特許文献１】特開２００８−２０４２７０号公報
【図１】
0005381483.tif 000002
【図２】
0005381483.tif 000003
【図３】
0005381483.tif 000004
【図４】
0005381483.tif 000005
【図５】
0005381483.tif 000006
【図６】
0005381483.tif 000007
【図７】
0005381483.tif 000008
【図８】
0005381483.tif 000009
【図９】
0005381483.tif 000010
【図１０】
0005381483.tif 000011
【図１１】
0005381483.tif 000012
【図１２】
0005381483.tif 000013
【図１３】
0005381483.tif 000014
【図１４】
0005381483.tif 000015
【図１５】
0005381483.tif 000016
【図１６】
0005381483.tif 000017