(57)【特許請求の範囲】
【請求項１】
画像形成装置であって、
当該画像形成装置にインストールされている複数のプログラムから参照される設定項目に対する設定値を記憶する記憶手段と、
前記複数のプログラムのそれぞれから、当該プログラムの状態を示すと共に、異常状態であるプログラムについては、当該異常状態に関連する前記設定項目に関して当該プログラムが予定している値である期待値を含む状態情報を取得する第一の取得手段と、
前記第一の取得手段によって前記期待値が取得された前記設定項目に関して、前記記憶手段に記憶されている設定値を取得する第二の取得手段と、
前記第一の取得手段によって取得された前記期待値と前記第二の取得手段によって取得された前記設定値とを出力する出力手段とを有する画像形成装置。
【請求項２】
前記期待値と前記設定値とが異なる前記設定項目に、前記期待値を設定する更新手段を有する請求項１記載の画像形成装置。
【請求項３】
当該画像形成装置にインストールされている複数のプログラムから参照される設定項目に対する設定値を記憶する記憶手段を有する画像形成装置が、
前記複数のプログラムのそれぞれから、当該プログラムの状態を示すと共に、異常状態であるプログラムについては、当該異常状態に関連する前記設定項目に関して当該プログラムが予定している値である期待値を含む状態情報を取得する第一の取得手順と、
前記第一の取得手順において前記期待値が取得された前記設定項目に関して、前記記憶手段に記憶されている設定値を取得する第二の取得手順と、
前記第一の取得手順において取得された前記期待値と前記第二の取得手順において取得された前記設定値とを出力する出力手順とを実行するプログラム管理方法。
【請求項４】
前記期待値と前記設定値とが異なる前記設定項目に、前記期待値を設定する更新手順を有する請求項３記載のプログラム管理方法。
【請求項５】
当該画像形成装置にインストールされている複数のプログラムから参照される設定項目に対する設定値を記憶する記憶手段を有する画像形成装置に、
前記複数のプログラムのそれぞれから、当該プログラムの状態を示すと共に、異常状態であるプログラムについては、当該異常状態に関連する前記設定項目に関して当該プログラムが予定している値である期待値を含む状態情報を取得する第一の取得手順と、
前記第一の取得手順において前記期待値が取得された前記設定項目に関して、前記記憶手段に記憶されている設定値を取得する第二の取得手順と、
前記第一の取得手順において取得された前記期待値と前記第二の取得手順において取得された前記設定値とを出力する出力手順とを実行させるプログラム管理プログラム。
【請求項６】
前記期待値と前記設定値とが異なる前記設定項目に、前記期待値を設定する更新手順を有する請求項５記載のプログラム管理プログラム。
【請求項７】
請求項５又は６記載のプログラム管理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置、プログラム管理方法、プログラム管理プログラム、及び記録媒体に関する。
【背景技術】
【０００２】
従来、その出荷後にアプリケーションプログラム（以下、単に「アプリケーション」という。）等をプラグインとして追加可能な画像形成装置が存在する。各アプリケーションの状態は、それぞれ他のアプリケーションから独立して遷移しうる。具体的には、アプリケーションごとに起動制御や停止制御等を行うことができる。起動されたアプリケーションは、起動状態となるが、起動状態において、アプリケーションの状態は更に詳細に分類されうる。同様に、停止されたアプリケーションは、停止状態となるが、停止状態において、アプリケーションの状態は更に分類されうる。
【０００３】
或るアプリケーションが動作不正等の異常状態となった場合、その原因は、必ずしも当該アプリケーションの内部要因に限定されない。アプリケーションの外部要因によっても、アプリケーションは異常状態となる可能性がある。アプリケーションの内部要因とは、例えば、当該アプリケーションに関する設定情報の設定ミス等、基本的に影響範囲が当該アプリケーションに限定される要因である。一方、アプリケーションの外部要因とは、アプリケーションの動作環境に対する設定情報等、その影響範囲が複数のアプリケーションに及ぶ要因である。外部要因の一例としては、例えば、画像形成装置における有効な通信プロトコルの設定や、ＤＮＳ（Domain Name System）の設定等が挙げられる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、或るアプリケーションが異常状態となった場合、当該異常状態が、当該アプリケーションの内部要因によるものなのか、或いは外部要因によるものなのかを判断するのは、困難な場合がある。異常状態の原因解析のため、ログを出力するアプリケーションも存在するが、ログの内容は、当該アプリケーションの開発者でなければ解読が困難な場合が多い。
【０００５】
特に、外部要因に関しては、外部要因としての設定項目に対する設定値が不正であるとは限らない。設定値としては、設定可能な値が設定されているが、当該値が、異常状態の特定のアプリケーションが期待している値と異なることが原因である場合もある。このような、外部要因としての設定項目に対する設定値と、アプリケーションの期待値との不整合は、当該設定値を期待値に修正することにより容易に解消することができる。それにも拘わらず、当該不整合がアプリケーションの異常状態の原因であることを突き止めること自体が困難であるため、ユーザ又はサービスマン等には、異常状態の解消のために必要以上の作業負担が課せられるという問題がある。
【０００６】
本発明は、上記の点に鑑みてなされたものであって、プログラムの管理負担を軽減させることのできる画像形成装置、プログラム管理方法、プログラム管理プログラム、及び記録媒体の提供を目的とする。
【課題を解決するための手段】
【０００７】
そこで上記課題を解決するため、本発明は、プログラムをインストール可能な画像形成装置であって、前記プログラムより当該画像形成装置の設定項目に対する期待値を取得する第一の取得手段と、前記設定項目に対する設定値を当該画像形成装置より取得する第二の取得手段と、前記設定項目ごとに前記期待値と前記設定値とを関連付けて出力する出力手段とを有する。
【０００８】
このような画像形成装置では、プログラムの管理負担を軽減させることができる。
【発明の効果】
【０００９】
本発明によれば、プログラムの管理負担を軽減させることができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態における機器管理システムの構成例を示す図である。
【図２】本発明の実施の形態における機器管理サーバのハードウェア構成例を示す図である。
【図３】本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。
【図４】本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。
【図５】ＳＤＫアプリ及びＳＤＫプラットフォームの機能構成例を示す図である。
【図６】ＳＤＫアプリとシステム設定との関係の一例を説明するための図である。
【図７】ＳＤＫアプリが有する状態の例を説明するための図である。
【図８】本実施の形態の画像形成装置が実行する処理手順の一例を説明するためのシーケンス図である。
【図９】監視対象記憶部の構成例を示す図である。
【図１０】外部状態情報の応答の構成例を示す図である。
【図１１】内部状態情報の構成例を示す図である。
【図１２】状態取得結果データの一例を示す図である。
【図１３】本実施の形態の画像形成装置が実行する処理手順の一例を説明するための第二のシーケンス図である。
【図１４】アプリ状態管理部がＳＤＫプラットフォームの一部として実装される例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態における機器管理システムの構成例を示す図である。同図の機器管理システム１において、一以上の画像形成装置１０、機器管理サーバ２０、及びユーザ端末３０等は、ＬＡＮ（Local Area Network）又はインターネット等のネットワーク４０（有線又は無線の別は問わない）を介して通信可能に接続されている。
【００１２】
画像形成装置１０は、印刷、スキャン、コピー、及びＦＡＸ送受信等の機能を一台の筐体によって実現する複合機である。但し、いずれか一つの機能を単体で有する機器が画像形成装置１０として用いられてもよい。画像形成装置１０には、機能拡張等を目的としてプログラム（後述されるＳＤＫアプリ１５２）のインストール又はアンインストール等が可能である。
【００１３】
機器管理サーバ２０は、ユーザ端末３０より転送される要求に応じ、画像形成装置１０を遠隔的に管理又は操作するコンピュータである。機器管理サーバ２０は、例えば、画像形成装置１０の状態や、画像形成装置１０にインストールされているプログラムの状態等を監視する。
【００１４】
ユーザ端末３０は、マウス及びキーボード等の入力手段、並びに液晶ディスプレイ等の表示手段等を備え、機器管理システム１のユーザインタフェースとして機能するコンピュータである。例えば、ユーザ端末３０は、機器管理サーバ２０に対する要求をユーザに入力させ、当該要求に応じて機器管理サーバ２０より返信される情報を表示する。
【００１５】
図２は、本発明の実施の形態における機器管理サーバのハードウェア構成例を示す図である。図２の機器管理サーバ２０は、それぞれバスBで相互に接続されているドライブ装置２００と、補助記憶装置２０２と、メモリ装置２０３と、ＣＰＵ２０４と、インタフェース装置２０５とを有する。
【００１６】
機器管理サーバ２０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体２０１によって提供される。プログラムを記録した記録媒体２０１がドライブ装置２００にセットされると、プログラムが記録媒体２０１からドライブ装置２００を介して補助記憶装置２０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体２０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置２０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１７】
メモリ装置２０３は、プログラムの起動指示があった場合に、補助記憶装置２０２からプログラムを読み出して格納する。ＣＰＵ２０４は、メモリ装置２０３に格納されたプログラムに従って機器管理サーバ２０に係る機能を実行する。インタフェース装置２０５は、ネットワークに接続するためのインタフェースとして用いられる。
【００１８】
なお、機器管理サーバ２０が直接的にユーザによって操作されてもよい。その場合、機器管理サーバ２０は、入力手段及び表示手段等を備えていればよい。
【００１９】
図３は、本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。同図において、画像形成装置１０は、コントローラ１１、スキャナ１２、プリンタ１３、モデム１４、操作パネル１５、ネットワークインタフェース１６、及びＳＤカードスロット１７等のハードウェアを有する。
【００２０】
コントローラ１１は、ＣＰＵ１１１、ＲＡＭ１１２、ＲＯＭ１１３、ＨＤＤ１１４、及びＮＶＲＡＭ１１５等を有する。ＲＯＭ１１３には、各種のプログラムやプログラムによって利用されるデータ等が記録されている。ＲＡＭ１１２は、プログラムをロードするための記憶領域や、ロードされたプログラムのワーク領域等として用いられる。ＣＰＵ１１１は、ＲＡＭ１１２にロードされたプログラムを処理することにより、各種の機能を実現する。ＨＤＤ１１４には、プログラムやプログラムが利用する各種のデータ等が記録される。ＮＶＲＡＭ１１５には、各種の設定情報等が記録される。
【００２１】
スキャナ１２は、原稿より画像データを読み取るためのハードウェア（画像読取手段）である。プリンタ１３は、印刷データを印刷用紙に印刷するためのハードウェア（印刷手段）である。モデム１４は、電話回線に接続するためのハードウェアであり、ＦＡＸ通信による画像データの送受信を実行するために用いられる。操作パネル１５は、ユーザからの入力の受け付けを行うためのボタン等の入力手段や、液晶パネル等の表示手段等を備えたハードウェアである。ネットワークインタフェース１６は、ＬＡＮ等のネットワーク（有線又は無線の別は問わない。）に接続するためのハードウェアである。ＳＤカードスロット１７は、ＳＤカード８０に記録されたプログラムを読み取るために利用される。すなわち、画像形成装置１０では、ＲＯＭ１１３に記録されたプログラムだけでなく、ＳＤカード８０に記録されたプログラムもＲＡＭ１１２にロードされ、実行されうる。なお、他の記録媒体（例えば、ＣＤ−ＲＯＭ又はＵＳＢ（Universal Serial Bus）メモリ等）によってＳＤカード８０が代替されてもよい。すなわち、ＳＤカード８０の位置付けに相当する記録媒体の種類は、所定のものに限定されない。この場合、ＳＤカードスロット１７は、記録媒体の種類に応じたハードウェアによって代替されればよい。
【００２２】
図４は、本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。同図において、画像形成装置１０は、標準アプリ１５１、ＳＤＫアプリ１５２、ＳＤＫプラットフォーム１５３、コントロールサービス１５４、及びＯＳ１５５等を有する。
【００２３】
標準アプリ１５１は、画像形成装置１０に標準的に（出荷時に予め）実装されているアプリケーションの集合である。同図では、スキャンアプリ１５１１、印刷アプリ１５１２、コピーアプリ１５１３、及びＦＡＸアプリ１５１４が例示されている。スキャンアプリ１５１１は、スキャンジョブを実行する。印刷アプリ１５１２は印刷ジョブを実行する。コピーアプリ１５１３は、コピージョブを実行する。ＦＡＸアプリ１５１４は、ＦＡＸの送信ジョブ又は受信ジョブを実行する。
【００２４】
コントロールサービス１５４は、各種のハードウェアリソース等を制御するための機能を上位アプリケーション等に対して提供したり、画像形成装置１０の基盤的な機能等を実行したりするソフトウェアモジュール群である。
【００２５】
ＳＤＫアプリ１５２は、画像形成装置１０の出荷後において、画像形成装置１０の機能拡張等を図るためのプラグインとして追加的にインストールされるアプリケーションプログラムである。したがって、ＳＤＫアプリ１５２の機能は、所定のものに限定されない。例えば、ＳＤＫアプリ１５２は、ＳＤカード８０から又はネットワークを介して画像形成装置１０にインストールされる。
【００２６】
ＳＤＫプラットフォーム１５３は、ＳＤＫアプリ１５２の実行環境を実現する。各ＳＤＫアプリ１５２は、ＳＤＫプラットフォーム１５３が提供するＡＰＩ（Application Program Interface）を利用して開発される。例えば、ＳＤＫプラットフォーム１５３は、スキャン機能を利用させるためのインタフェース、印刷機能を利用させるためのインタフェース、コピー機能を利用させるためのインタフェース等をＳＤＫアプリ１５２に提供する。なお、ＳＤＫプラットフォーム１５３のＡＰＩは公開されており、サードベンダ等によってもＳＤＫアプリ１５２は開発されうる。また、当該ＡＰＩは、異機種間において平滑化されている。したがって、ＳＤＫアプリ１５２に関して、機種に応じて異なる実装が行われる必要性は低い。
【００２７】
ＯＳ１５５は、いわゆるＯＳ（Operating System）である。画像形成装置１０上の各ソフトウェアは、ＯＳ１５５上においてプロセス又はスレッドとして動作する。
【００２８】
ＳＤＫアプリ１５２及びＳＤＫプラットフォーム１５３について、更に詳しく説明する。図５は、ＳＤＫアプリ及びＳＤＫプラットフォームの機能構成例を示す図である。
【００２９】
同図には、ＳＤＫアプリ１５２として、ＳＤＫアプリ１５２ａと、それ以外のＤＫアプリ１５２とが例示されている。ＳＤＫアプリ１５２ａは、本実施の形態においてアプリ状態管理部１５２ａとして機能するＳＤＫアプリ１５２である。以降では、他のＳＤＫアプリ１５２との混同を避けるため、ＳＤＫアプリ１５２ａを、「アプリ状態管理部１５２ａ」と呼ぶ。
【００３０】
アプリ状態管理部１５２ａは、自分（アプリ状態管理部１５２ａ）以外のＳＤＫアプリ１５２の状態の監視等に利用される。同図において、アプリ状態管理部１５２ａは、通信制御部１６１、アプリ状態提供部１６２、アプリ状態取得部１６３、システム設定取得部１６４、システム設定更新部１６５、及び監視対象記憶部１６６等を有する。
【００３１】
監視対象記憶部１６６は、例えば、ＮＶＲＡＭ１１５を用いて、状態の監視対象とするＳＤＫアプリ１５２の識別情報を記憶する。
【００３２】
アプリ状態提供部１６２は、ネットワークを介して受信される、ＳＤＫアプリ１５２の状態を示す情報（状態情報）の取得要求に応じ、監視対象記憶部１６６において監視対象として指定されているＳＤＫアプリ１５２の状態情報等を、取得要求元に返信する。本実施の形態において、状態情報の取得要求元は、機器管理サーバ２０である。
【００３３】
アプリ状態取得部１６３は、各ＳＤＫアプリ１５２より、当該ＳＤＫアプリ１５２の状態情報を取得する。
【００３４】
システム設定取得部１６４は、画像形成装置１０の設定情報を構成する各項目（設定項目又は設定パラメータ）の現在の設定値（現在値）を、コントロールサービス１５４より取得する。画像形成装置１０の設定情報とは、画像形成装置１０単位に設定される設定情報をいう。画像形成装置１０単位であるから、ＳＤＫアプリ１５２ごとに設定される設定情報は、画像形成装置１０の設定情報ではない。本実施の形態において、画像形成装置１０の設定情報を、「システム設定」という。システム設定は、複数のＳＤＫアプリ１５２から共用又は参照されうる。したがって、システム設定は、複数のＳＤＫアプリ１５２の振る舞い又は動作に影響を与えうる。
【００３５】
システム設定更新部１６５は、システム設定の設定値を更新する。
【００３６】
通信制御部１６１は、機器管理サーバ２０からの状態情報の取得要求を受信したり、各ＳＤＫアプリ１５２より取得された状態情報を機器管理サーバ２０に送信したりする。
【００３７】
アプリ状態管理部１５２ａ以外の各ＳＤＫアプリ１５２は、自アプリ状態通知部１７１、自アプリ状態保存部１７２、及び自アプリ状態記憶部１７３等を有する。
【００３８】
自アプリ状態通知部１７１は、例えば、ＲＡＭ１１２を用いて、当該ＳＤＫアプリ１５２の現在の状態を把握している。すなわち、自アプリ状態通知部１７１は、当該ＳＤＫアプリ１５２の現在の状態を示す状態情報をＲＡＭ１１２に記憶させている。自アプリ状態通知部１７１は、アプリ状態取得部１６３からの状態情報の取得要求応じ、ＲＡＭ１１２に記憶させている状態情報を応答する。
【００３９】
自アプリ状態保存部１７２は、当該ＳＤＫアプリ１５２が停止状態に移行する際に、自アプリ状態通知部１７１より状態情報を取得し、当該状態情報を自アプリ状態記憶部１７３に書き込む（保存する）。
【００４０】
自アプリ状態記憶部１７３は、例えば、ＮＶＲＡＭ１１５等を用いて状態情報を記憶する。すなわち、ＮＶＲＡＭ１１５中において、当該ＳＤＫアプリ１５２に関連付けられている記憶領域に当該ＳＤＫアプリ１５２の状態情報が記録される。
【００４１】
一方、ＳＤＫプラットフォーム１５３は、複合機クラスライブラリ１８１、仮想マシン１８２、ネイティブプログラムインタフェース１８３、及びアプリ管理部１８４等を有する。
【００４２】
複合機クラスライブラリ１８１は、ＳＤＫプラットフォーム１５３のＡＰＩを提供する、Ｊａｖａ（登録商標）のクラスライブラリである。当該ＡＰＩを介した要求は、必要に応じてコントロールサービス１５４に伝達される。コントロールサービス１５４による処理結果は、複合機クラスライブラリ１８１に返却される。複合機クラスライブラリ１８１は、当該処理結果を、上記ＡＰＩに即した形式に変換し、ＳＤＫアプリ１５２に返却する。
【００４３】
ネイティブプログラムインタフェース１８３は、複合機クラスライブラリ１８１からコントロールサービス１５４への要求の伝達等を、ＪＮＩ（Java（登録商標） Native Interface）の機構を用いて実現する。すなわち、コントロールサービス１５４は、ネイティブコードによって実装されているため、ネイティブプログラムインタフェース１８３が必要とされる。
【００４４】
仮想マシン１８２は、Ｊａｖａ（登録商標）のバイトコードによる命令の解釈及び実行を行う、いわゆるＪａｖａ（登録商標）仮想マシンである。各ＳＤＫアプリ１５２は、仮想マシン１８２によってスレッドとして起動される。
【００４５】
アプリ管理部１８４は、主としてＳＤＫアプリ１５２のライフサイクルを管理する。具体的には、アプリ管理部１８４は、ＳＤＫアプリ１５２をユーザに操作させるための管理画面を表示させる。アプリ管理部１８４は、当該管理画面を介した入力に応じ、ＳＤＫアプリ１５２のインストール、起動、停止、又はアンインストール等を実行する。アプリ管理部１８４は、また、画像形成装置１０にインストールされているＳＤＫアプリ１５２の一覧情報を、例えば、ＮＶＲＡＭ１１５を用いて管理する。
【００４６】
なお、ＳＤＫプラットフォーム１５３は、それ自身、画像形成装置１０にインストールされるアプリケーションの一種である。例えば、ＳＤＫプラットフォーム１５３は、ＳＤカード８０から又はネットワークを介して画像形成装置１０にインストールされる。但し、ＳＤＫプラットフォーム１５３は、ＳＤＫアプリ１５２とは異なり、ＯＳ１５５上で一つのプロセスとして動作する。
【００４７】
コントロールサービス１５４は、各種のシステム設定の管理部を有する。同図には、認証設定管理部１５４１、ネットワーク設定管理部１５４２、印刷設定管理部１５４３、セキュリティ設定管理部１５４４、及び省電力設定管理部１５４５等が例示されている。
【００４８】
認証設定管理部１５４１は、システム設定の一部である認証設定を管理する。認証設定とは、ユーザの認証に関する設定情報や課金に関する設定情報である。認証設定の一例として、ユーザ情報（ユーザ名、パスワード等）、認証方式、外部の認証サーバの識別情報、及び課金のタイミングに関する設定等が挙げられる。
【００４９】
ネットワーク設定管理部１５４２は、システム設定の一部であるネットワーク設定を管理する。ネットワーク設定とは、ネットワーク通信に関する設定情報である。ネットワーク設定の一例として、有効なプロトコルやＤＮＳ（Domain Name System）に関する設定が挙げられる。
【００５０】
印刷設定管理部１５４３は、システム設定の一部である印刷設定を管理する。印刷設定とは、印刷ジョブ又は印刷アプリ１５１２に関する設定情報である。印刷設定の一例として、有効なプリンタ言語の設定が挙げられる。
【００５１】
セキュリティ設定管理部１５４４は、システム設定の一部であるセキュリティ設定を管理する。セキュリティ設定とは、セキュリティに関する設定情報である。
【００５２】
省電力設定管理部１５４５は、システム設定の一部である省電力設定を管理する。省電力設定とは、省電力モードに関する設定情報である。省電力設定の一例として、省電力状態へ移行するタイミングに関する設定が挙げられる。
【００５３】
図６は、ＳＤＫアプリとシステム設定との関係の一例を説明するための図である。同図には、実装されている機能に応じて、依存するシステム設定の例が示されている。依存するシステム設定とは、ＳＤＫアプリ１５２の動作に影響を与えるシステム設定をいう。
【００５４】
例えば、認証系機能が実装されているＳＤＫアプリ１５２は、認証設定の影響を受ける。認証系機能とは、例えば、ユーザ認証機能、課金機能等である。印刷系機能が実装されているＳＤＫアプリ１５２は、印刷設定の影響を受ける。印刷系機能には、印刷機能以外に、コピー機能等も含まれる。画像形成装置１０において、コピーは、スキャンと印刷との組み合わせとして扱われるからである。通信系機能が実装されているＳＤＫアプリ１５２は、ネットワーク設定の影響を受ける。通信系機能とは、例えば、ファイル配信機能、ネットワーク認証機能等である。
【００５５】
このように、ＳＤＫアプリ１５２とシステム設定とは、密接な関係を有する。例えば、システム設定の現在値が、或るＳＤＫアプリ１５２の期待又は予定している値に一致しない場合、当該ＳＤＫアプリ１５２は、正常に動作しない可能性がある。
【００５６】
続いて、本実施の形態におけるＳＤＫアプリ１５２が有する状態について説明する。図７は、ＳＤＫアプリが有する状態の例を説明するための図である。
【００５７】
本実施の形態において、ＳＤＫアプリ１５２の状態は、二種類有る。一つは外部状態であり、もう一つは内部状態である。外部状態とは、ＳＤＫアプリ１５２の外部（本実施の形態では、アプリ管理部１８４）が把握している状態である。すなわち、外部状態は、アプリ管理部１８４が管理する、ＳＤＫアプリ１５２のライフサイクルとほぼ同義である。したがって、外部状態の分類は、各ＳＤＫアプリ１５２に対して共通である。
【００５８】
一方、内部状態は、各ＳＤＫアプリ１５２の内部において管理されている状態である。すなわち、内部状態は、各ＳＤＫアプリ１５２に固有の仕様に基づいて、ＳＤＫアプリ１５２ごとに定義された状態である。したがって、内部状態の分類は、ＳＤＫアプリ１５２ごとに異なりうる。各ＳＤＫアプリ１５２の自アプリ状態通知部１７１、自アプリ状態保存部１７２、及び自アプリ状態記憶部１７３が扱う状態情報は、内部状態に関する状態情報である。
【００５９】
本実施の形態において、外部状態は、起動状態、停止状態、及び未インストール状態に分類される。未インストール状態は、画像形成装置１０にインストールされていない状態である。起動状態は、インストール済みのＳＤＫアプリ１５２がＲＡＭ１１２にロードされ、起動されている（例えば、スレッドとして起動されている）状態である。停止状態は、インストール済みのＳＤＫアプリ１５２が停止している状態である。
【００６０】
内部状態の分類として、同図には、正常状態、処理中状態、警告状態、及びエラー状態が例示されている。上記したように、内部状態の分類は、ＳＤＫアプリ１５２に依存する。したがって、当該分類は、一例に過ぎない。
【００６１】
正常状態は、ＳＤＫアプリ１５２が起動していて、処理を正常に実行可能な状態である。処理中状態は、ＳＤＫアプリ１５２が起動していて、処理中の状態である。警告状態は、ＳＤＫアプリは起動しているが、軽微な異常が発生又は異常の発生の可能性が予期される状態である。軽微な異常とは、例えば、動作の継続は可能であるが、一部の機能に関して支障が生じる可能性の有る異常である。エラー状態は、ＳＤＫアプリ１５２は起動しているが、重大な異常が発生している状態である。重大な異常とは、例えば、動作の継続が不可能な異常である。
【００６２】
なお、外部状態と内部状態とは、階層構造を形成する。すなわち、内部状態における各状態は、外部状態におけるいずれかの状態に属する。同図では、外部状態が起動状態である場合に、正常状態、処理中状態、警告状態、又はエラー状態のいずれかの内部状態が発生することが示されている。
【００６３】
停止状態に属する内部状態は、便宜上、省略されている。上記したように、ＳＤＫアプリ１５２が停止状態に移行する際、停止状態へ移行する直前の内部状態が、自アプリ状態保存部１７２によって自アプリ状態記憶部１７３に記録される。したがって、本実施の形態では、停止状態に属する内部状態は、起動状態に属する内部状態とほぼ同様である。
【００６４】
未インストール状態に関しては、内部状態は無い。インストールされていなければ、内部状態は発生し得ないからである。
【００６５】
以下、画像形成装置１０の処理手順について説明する。図８は、本実施の形態の画像形成装置が実行する処理手順の一例を説明するためのシーケンス図である。
【００６６】
ステップＳ１０１において、機器管理サーバ２０は、ユーザ端末３０からの要求に応じ、ＳＤＫアプリ１５２の状態情報の取得要求を画像形成装置１０に送信する。当該取得要求の送信先となる画像形成装置１０は、例えば、機器管理サーバ２０に予め識別情報（ＩＰアドレス等）が登録されている一以上の画像形成装置１０であってもよいし、ユーザ端末３０からの要求において指定されている一以上の画像形成装置１０であってもよい。
【００６７】
画像形成装置１０のアプリ状態管理部１５２ａの通信制御部１６１は、当該取得要求を受信すると、アプリ状態提供部１６２に状態情報の取得要求を入力する（Ｓ１０２）。アプリ状態提供部１６２は、当該取得要求の入力に応じ、監視対象記憶部１６６に記憶されている情報を取得する（Ｓ１０３）。
【００６８】
図９は、監視対象記憶部の構成例を示す図である。同図に示されるように、監視対象記憶部１６６は、状態の監視対象とするＳＤＫアプリ１５２のプロダクトＩＤの一覧を記憶する。プロダクトＩＤとは、本実施の形態において、各ＳＤＫアプリ１５２の識別情報である。同図では、プロダクトＩＤが、「１１９０３６４８９」、「２０４７５２１８９」、「４８５４０８１６３」、又は「６３６４９１０００」である４つのＳＤＫアプリ１５２が監視対象として指定されている例が示されている。なお、監視対象記憶部１６６の内容が空である場合、画像形成装置１０にインストールされている全てのＳＤＫアプリ１５２が監視対象とされてもよい。
【００６９】
続いて、アプリ状態提供部１６２は、監視対象記憶部１６６より取得されたプロダクトＩＤ群を指定して、状態情報の取得要求をアプリ状態取得部１６３に入力する（Ｓ１０４）。アプリ状態取得部１６３は、状態情報の取得要求に応じ、当該取得要求に指定されたプロダクトＩＤ群を指定して、外部状態の取得をアプリ管理部１８４に対して要求する（Ｓ１０５）。
【００７０】
アプリ管理部１８４は、指定されたプロダクトＩＤ群に係る各ＳＤＫアプリ１５２の外部状態を示す状態情報（外部状態情報）をプロダクトＩＤに関連付けてアプリ状態取得部１６３に応答する（Ｓ１０６）。
【００７１】
図１０は、外部状態情報の応答の構成例を示す図である。同図に示されるように、アプリ管理部１８４は、プロダクトＩＤごとに、当該プロダクトＩＤに係るＳＤＫアプリ１５２の外部状態情報を応答する。
【００７２】
なお、ＳＤＫアプリ１５２のインストール処理、起動処理、又は停止処理等を実行するのはアプリ管理部１８４である。したがって、アプリ管理部１８４は、各ＳＤＫアプリ１５２が、起動状態であるか又は停止状態であるかを示す状態情報を、例えば、ＮＶＲＡＭ１１５を用いて管理している。したがって、ステップＳ１０６では、ＮＶＲＡＭ１１５に記録されている状態情報が応答される。
【００７３】
続いて、アプリ状態取得部１６３は、ステップＳ１０４において入力された状態情報の取得要求に指定されたプロダクトＩＤ群に係る各ＳＤＫアプリ１５２に対して、内部状態の問い合わせ（内部状態を示す状態情報の取得要求）を行う。具体的には、起動状態のＳＤＫアプリ１５２については、アプリ状態取得部１６３は、当該ＳＤＫアプリ１５２の自アプリ状態通知部１７１に対して、内部状態の問い合わせを行う（Ｓ１０７）。当該自アプリ状態通知部１７１は、問い合わせに応じ、当該ＳＤＫアプリ１５２の内部状態を示す状態情報（内部状態情報）をアプリ状態取得部１６３に応答する（Ｓ１０８）。また、停止状態のＳＤＫアプリ１５２については、アプリ状態取得部１６３は、当該ＳＤＫアプリ１５２の自アプリ状態記憶部１７３より、当該ＳＤＫ１５２の内部状態情報を取得する（Ｓ１０９、Ｓ１１０）。自アプリ状態記憶部１７３より取得される内部状態情報は、当該ＳＤＫアプリ１５２が停止状態に移行する際に、自アプリ状態保存部１７２によって自アプリ状態記憶部１７３に書き込まれた（記録された）内部状態情報である。
【００７４】
各ＳＤＫアプリ１５２から取得される内部状態を情報は、例えば、図１１に示されるような構成を有する。
【００７５】
図１１は、内部状態情報の構成例を示す図である。同図には、問い合わせ先のＳＤＫアプリ１５２の内部状態に応じた状内部態情報の具体例（１）、（２）、及び（３）が示されている。（１）、（２）、及び（３）は、内部状態及び拡張情報の項目から構成される点において共通する。
【００７６】
（１）は、正常状態のＳＤＫアプリ１５２より取得される内部状態情報の具体例である。正常状態のＳＤＫアプリ１５２からは、内部状態の項目に正常状態を示す値が記録された内部状態情報が取得される。
【００７７】
（２）は、警告状態のＳＤＫアプリ１５２より取得される内部状態情報の具体例である。警告状態のＳＤＫアプリ１５２からは、内部状態の項目に警告状態を示す値が記録され、拡張情報の項目に、警告状態の原因ごとに、詳細メッセージ及び状態コードが記録された内部状態情報が取得される。詳細メッセージとは、警告状態の原因の内容を示すメッセージである。状態コードは、警告状態の原因を識別するための番号（識別子）である。例えば、状態コードは、ＳＤＫアプリ１５２の開発者等が理解可能な情報である。
【００７８】
（３）は、エラー状態のＳＤＫアプリ１５２より取得される内部状態情報の具体例である。エラー状態のＳＤＫアプリ１５２からは、内部状態の項目にエラー状態を示す値が記録され、拡張情報の項目に、エラー状態の原因ごとに、詳細メッセージ、状態コード、システム設定の期待値が記録された内部状態情報が取得される。詳細メッセージ及び状態コードについては、（２）における説明より自明であるため、その説明は省略する。システム設定の期待値は、エラー状態の原因に関連するシステム設定の設定項目に関して、当該ＳＤＫアプリ１５２が期待している（又は正常動作の前提として予定している）設定値である。例えば、同図では、「認証サーバに接続できません」というエラー状態の原因に関して、設定項目「ＩＰｖ４」に対する期待値は「有効」であることが示されている。このことは、「ＩＰｖ４」に対する設定値が「有効」になっていることが、認証サーバに接続可能な前提であることを示す。すなわち、このことは、「ＩＰｖ４」に対する設定値が、「有効」になっていることの確認を要求するメッセージであるともいえる。
【００７９】
「拡張外部課金設定１」又は「拡張外部課金設定２」に関しても同様である。
【００８０】
なお、内部状態情報に含まれている、システム設定の期待値に関する情報は、該当する設定項目に対する現在の設定値（現在値）が、期待値と異なることについてまでは言及していない。本実施の形態において、アプリ状態管理部１５２ａを除く各ＳＤＫアプリ１５２には、システム設定の現在値を取得するための所定のＡＰＩを呼び出すことができず、現在値を知る術がないからである。各ＳＤＫアプリ１５２が、当該ＡＰＩを呼び出すことができないのは、当該ＡＰＩが、例えば、セキュリティ上の観点から画像形成装置１０のメーカ以外には公開されていないからである。本実施の形態では、アプリ状態管理部１５２ａは、画像形成装置１０のメーカによって開発されたものであり、他のＳＤＫアプリ１５２は、サードベンダによって開発されたものである。
【００８１】
但し、プログラムロジックにおいて、当該ＡＰＩの呼び出し元がアプリ状態管理部１５２ａに限定されるようにしてもよい。例えば、アプリ状態管理部１５２ａに係るプロダクトＩＤを有するＳＤＫアプリ１５２から当該ＡＰＩが呼び出されたときは、当該ＡＰＩの実装内容が実行され、それ以外の場合は、当該ＡＰＩの実装内容の実行が拒否されるようにしてもよい。
【００８２】
なお、図１１に示される構成は、一例である。内部状態情報には、更に詳細な情報が含まれていてもよいし、状態コードは含まれていなくてもよい。すなわち、内部状態情報の内容は、ＳＤＫアプリ１５２の開発者に依存する。但し、各ＳＤＫアプリ１５２の内部状態情報は、アプリ状態管理部１５２ａが解読可能な形式である必要がある。
【００８３】
続いて、アプリ状態取得部１６３は、各ＳＤＫアプリ１５２より取得された外部状態情報及び内部状態情報をアプリ状態提供部１６２に応答する（Ｓ１１１）。なお、各内部状態情報には、当該内部状態情報の取得先のＳＤＫアプリ１５２のプロダクトＩＤが関連付けられて、アプリ状態提供部１６２に応答される。
【００８４】
アプリ状態提供部１６２は、各内部状態情報を確認し、システム設定の期待値が含まれている場合、当該システム設定の設定項目の識別名（設定項目名）を指定して、システム設定の現在値の取得をシステム設定取得部１６４に要求する（Ｓ１１２）。図１１の（３）に示される内部状態情報に関する場合、「ＩＰｖ４」、「拡張外部課金設定１」、及び「拡張外部課金設定２」の設定項目名が指定されて、現在値の取得が要求される。
【００８５】
システム設定取得部１６４は、指定された各設定項目名に対する現在値の取得を、コントロールサービス１５４に要求する（Ｓ１１３）。当該要求は、厳密には、ＳＤＫプラットフォーム１５３の複合機クラスライブラリ１８１の所定のＡＰＩ（図１１の説明の説明において言及したＡＰＩ）を呼び出すことによって行われる。複合機クラスライブラリ１８１は、ネイティブプログラムインタフェース１８３を介して、コントロールサービス１５４に対して、現在値の取得を要求する。現在値の取得要求先は、現在値の取得対象の設定項目を管理する各管理部である。例えば、「ＩＰｖ４」については、ネットワーク設定管理部１５４２が、「拡張外部課金設定１」、及び「拡張外部課金設定２」については、認証設定管理部１５４１が、現在値の取得要求先となる。システム設定取得部１６４は、各設定項目の管理先がいずれかであるのかを知っている。斯かる知識は、予めシステム設定取得部１６４のロジックとして実装されていてもよいし、外部ファイル等に記録されていてもよい。外部ファイルには、設定項目名と管理先の識別情報との対応情報が記録されていればよい。
【００８６】
設定項目の現在値の取得を要求された管理部（例えば、ネットワーク設定管理部１５４２、認証設定管理部１５４１）は、指定された設定項目の現在値を、例えば、ＮＶＲＡＭ１１５より取得し、取得された現在値をシステム設定取得部１６４に応答する（Ｓ１１４）。当該応答は、ネイティブプログラムインタフェース１８３及び複合機クラスライブラリ１８１を介して行われる。
【００８７】
システム設定取得部１６４は、取得された各設定項目の現在値を、アプリ状態提供部１６２に応答する（Ｓ１１５）。続いて、アプリ状態提供部１６２は、ステップＳ１１１において取得された外部状態情報及び内部状態情報と、ステップＳ１１５において取得されたシステム設定の現在値とを相互に関連付けて（統合して）、状態情報の取得結果を示すデータ（状態取得結果データ）を生成する（Ｓ１１６）。
【００８８】
図１２は、状態取得結果データの一例を示す図である。同図に示されるように、状態取得結果データは、プロダクトＩＤごと（監視対象のＳＤＫアプリ１５２ごと）に、外部状態情報及び内部状態情報を含む。また、内部状態が警告状態又はエラー状態であるＳＤＫアプリ１５２に関しては、拡張情報として、詳細情報及び状態コードを含む。更に、内部状態がエラー状態であるＳＤＫアプリ１５２に関しては、拡張情報の一部として、エラー状態の原因に関連するシステム設定の設定項目ごとに、期待値及び現在値を含む。すなわち、期待値と現在値とは対比可能なように関連付けられて状態取得結果データに含められる。
【００８９】
同図の例によれば、例えば、プロダクトＩＤが「６３６４９１０００」であるＳＤＫアプリ１５２が、起動状態においてエラー状態であることが分かる。また、当該ＳＤＫアプリ１５２は、システム設定の設定項目「ＩＰｖ４」に関して、「有効」を期待値とするのに対し、現在値は「無効」であることが分かる。一方、「拡張外部課金設定１」及び「拡張外部課金設定２」については、現在値は、期待値に一致していることが分かる。
【００９０】
なお、同図では、「有効」又は「無効」が設定可能な設定項目が例示されているが、文字列や数値等が設定可能な設定項目に関しても、本実施の形態は有効である。
【００９１】
続いて、アプリ状態提供部１６２は、生成された状態取得結果データを通信制御部１６１に応答（出力）する（Ｓ１１７）。なお、状態取得結果データの出力先は、例えば、ＨＤＤ１１４であってもよいし、印刷用紙であってもよい。すなわち、アプリ状態提供部１６２は、印刷アプリ１５１２に対して状態取得結果データの印刷を要求する。印刷アプリ１５１２は、要求に応じ、状態取得結果データの印刷を、プリンタ１３に実行させる。
【００９２】
続いて、通信制御部１６１は、当該状態取得結果データを、ステップＳ１０１における状態情報の取得要求に対する応答として返信する（Ｓ１１８）。当該状態取得結果データを受信した機器管理サーバ２０は、例えば、当該状態取得結果データを含む画面をユーザ端末３０に表示させる。当該画面は、例えば、Ｗｅｂページであってもよい。または、機器管理サーバ２０は、当該状態取得結果データを含む電子メールをユーザ端末３０に送信してもよい。
【００９３】
ユーザは、ユーザ端末３０において表示される状態取得結果データを参照して、プロダクトＩＤが「６３６４９１０００」であるＳＤＫアプリ１５２が、エラー状態であること等を知ることができる。また、ユーザは、当該エラー状態は、システム設定の設定項目「ＩＰｖ４」の現在値が「無効」であることが原因である可能性を知ることができる。そこで、ユーザは、画像形成装置１０の「ＩＰｖ４」の設定値を「有効」に更新させることにより、当該エラー状態を解消することができる。
【００９４】
なお、現在値と期待値とが一致しない場合に、現在値の更新が自動的に実行されてもよい。この場合の処理手順について説明する。
【００９５】
図１３は、本実施の形態の画像形成装置が実行する処理手順の一例を説明するための第二のシーケンス図である。図１３中、図８と同一ステップには同一ステップ番号を付し、その説明は省略する。
【００９６】
図１３では、ステップＳ１２１以降の処理手順が、図８と異なる。ステップＳ１２１において、アプリ状態提供部１６２は、状態取得結果データにおいて、現在値と期待値とが一致しない設定項目（図１１の例では、「ＩＰｖ４」）に関して、設定項目名と当該期待値とを指定してシステム設定の更新をシステム設定更新部１６５に要求する（Ｓ１２１）。システム設定更新部１６５は、更新対象の設定項目（ＩＰｖ４）について、指定された期待値への更新をコントロールサービス１５４（ネットワーク設定管理部１５４２）に要求する（Ｓ１２２）。当該要求が、複合機クラスライブラリ１８１及びネイティブプログラムインタフェース１８３を介して行われるのは、ステップＳ１１３と同様である。また、システム設定更新部１６５は、各設定項目の管理先がいずれかであるのかを知っているのは、システム設定取得部１６４と同様である。
【００９７】
なお、システム設定更新部１６５は、コントロールサービス１５４にシステム設定の更新を要求する前に、各ＳＤＫアプリ１５２に対して、更新対象の設定項目名及びこれから設定しようとしている値（期待値）を指定して、更新の許否を問い合わせてもよい。すなわち、これから行おうとする更新によって、悪影響を受けるＳＤＫアプリ１５２が発生する可能性があるからである。問い合わせを行った全てのＳＤＫアプリ１５２より更新の許可が得られた場合に、コントロールサービス１５４に対してシステム設定の更新が要求されるようにしてもよい。
【００９８】
設定項目の現在値の更新を要求されたコントロールサービス（ネットワーク管理部）は、更新対象の設定項目の現在値を、指定された期待値によって更新し、更新結果（更新の成否）をシステム設定更新部１６５に応答する（Ｓ１２３）。システム設定部は、当該更新結果をアプリ状態提供部１６２に応答する（Ｓ１２４）。
【００９９】
アプリ状態提供部１６２は、必要に応じて状態取得結果データを更新し、当該状態取得結果データを、通信制御部１６１に応答する（Ｓ１２５）。例えば、更新に成功した場合、更新された設定項目に関して、更新されたことを示す情報が状態取得結果データに追加されてもよい。ステップＳ１２６は、ステップＳ１１８（図８）と同様である。
【０１００】
上述したように、本実施の形態によれば、異常状態（エラー状態）のＳＤＫアプリ１５２が存在する場合に、当該ＳＤＫアプリ１５２がシステム設定の設定項目に関して期待する設定値（期待値）と、当該設定項目に現在設定されている値（現在値）とが対比可能なように関連付けられて出力される。したがって、ユーザ等は、当該異常状態の原因を、容易に把握することができる。
【０１０１】
また、期待値と現在値とが一致しない設定項目について、自動的に期待値が設定されることにより、ユーザ等の作業負担を更に軽減することができる。
【０１０２】
なお、本実施の形態では、アプリ状態管理部１５２ａが一つのＳＤＫアプリ１５２ａとして実装される例について説明した。このような実施形態は、既に市場に流通している画像形成装置１０を用いて本実施の形態を実施する際に特に有効である。アプリ状態管理部１５２ａとしてのＳＤＫアプリ１５２ａを斯かる画像形成装置１０にインストールすればよいからである。
【０１０３】
すなわち、本実施の形態において、アプリ状態管理部１５２ａが一つのＳＤＫアプリ１５２ａとして構成される例を説明したのは、既に市場に流通している画像形成装置１０の利便性を考慮したためであり、技術的な制約に基づくものではない。したがって、アプリ状態管理部１５２ａは、例えば、ＳＤＫプラットフォーム１５３内に実装されてもよい。
【０１０４】
図１４は、アプリ状態管理部がＳＤＫプラットフォームの一部として実装される例を示す図である。図１４中、図５と同一部分には同一符号を付し、その説明は省略する。
【０１０５】
同図において、アプリ状態管理部１５２ａは、ＳＤＫプラットフォーム１５３に含まれている。このような構成によれば、アプリ状態管理部１５２ａとしてのＳＤＫアプリ１５２ａをインストールしなくとも、本実施の形態を実施することができる。但し、既に市場に流通している画像形成装置１０に関しては、ＳＤＫプラットフォーム１５３のバージョンアップ等が必要とされる。
【０１０６】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【０１０７】
１            機器管理システム
１０          画像形成装置
１１          コントローラ
１２          スキャナ
１３          プリンタ
１４          モデム
１５          操作パネル
１６          ネットワークインタフェース
１７          ＳＤカードスロット
２０          機器管理サーバ
３０          ユーザ端末
４０          ネットワーク
８０          ＳＤカード
１１１        ＣＰＵ
１１２        ＲＡＭ
１１３        ＲＯＭ
１１４        ＨＤＤ
１１５        ＮＶＲＡＭ
１５１        標準アプリ
１５２        ＳＤＫアプリ
１５２ａ      アプリ状態管理部
１５３        ＳＤＫプラットフォーム
１５４        コントロールサービス
１５５        ＯＳ
１６１        通信制御部
１６２        アプリ状態提供部
１６３        アプリ状態取得部
１６４        システム設定取得部
１６５        システム設定更新部
１６６        監視対象記憶部
１７１        自アプリ状態通知部
１７２        自アプリ状態保存部
１７３        自アプリ状態記憶部
１８１        複合機クラスライブラリ
１８２        仮想マシン
１８３        ネイティブプログラムインタフェース
１８４        アプリ管理部
２００        ドライブ装置
２０１        記録媒体
２０２        補助記憶装置
２０３        メモリ装置
２０４        ＣＰＵ
２０５        インタフェース装置
１５１１      スキャンアプリ
１５１２      印刷アプリ
１５１３      コピーアプリ
１５１４      ＦＡＸアプリ
１５４１      認証設定管理部
１５４２      ネットワーク設定管理部
１５４３      印刷設定管理部
１５４４      セキュリティ設定管理部
１５４５      省電力設定管理部
Ｂ            バス
【先行技術文献】
【特許文献】
【０１０８】
【特許文献１】特開２００４−３１２７１１号公報
【図１】
0005793872.tif 000002
【図２】
0005793872.tif 000003
【図３】
0005793872.tif 000004
【図４】
0005793872.tif 000005
【図５】
0005793872.tif 000006
【図６】
0005793872.tif 000007
【図７】
0005793872.tif 000008
【図８】
0005793872.tif 000009
【図９】
0005793872.tif 000010
【図１０】
0005793872.tif 000011
【図１１】
0005793872.tif 000012
【図１２】
0005793872.tif 000013
【図１３】
0005793872.tif 000014
【図１４】
0005793872.tif 000015