(57)【要約】【課題】通知元が発した通知を、その通知の宛先のプログラムに常に通知する方式では、プログラムがその情報を受け取っても実際には利用せずに終わる場合にも通知が行われることになり、通知やそのための処理が無駄になる。【解決手段】プログラム管理部１２０は、各表示プログラム１１４の表示態様（例えば前面表示、非表示等）を管理している。通知仲介部１３０は、外部モジュール２００から通知が到来した場合、その通知の宛先（例えば通知が示す情報項目によって決まる）の表示プログラム１１４が前面表示状態であれば、その通知を直ちにその表示プログラム１１４に渡す。一方、その宛先の表示プログラム１１４が非表示状態であれば、その通知を渡さない。通知仲介部１３０は、その通知の内容をキャッシュする。非表示状態であった宛先の表示プログラム１１４が前面表示となった際、通知仲介部１３０のキャッシュを参照することで、通知の内容を知る。【選択図】図１
2019074920.tif 000002
【特許請求の範囲】
【請求項１】
通知元から通知を受信する受信手段と、
受信した前記通知の宛先のプログラムの状態に応じて、その通知を前記プログラムに渡すか否かを制御する通知制御手段と、
を含む仲介装置。
【請求項２】
前記プログラムの状態とは、当該プログラムが生成した表示要素の表示に関する状態であり、
前記通知制御手段は、前記宛先のプログラムが生成した表示要素が表示されている状態であれば前記通知を当該プログラムに渡し、当該表示要素が表示されていない状態であれば前記通知を当該プログラムに渡さない、請求項１に記載の仲介装置。
【請求項３】
前記通知制御手段は、前記宛先のプログラムが生成した表示要素が表示されていない状態であっても、当該プログラムの前記状態が予め登録された特定の状態である場合には、前記通知を当該プログラムに渡す、請求項２に記載の仲介装置。
【請求項４】
前記プログラムの状態とは、当該プログラムのライフサイクル状態であり、
前記通知制御手段は、前記宛先のプログラムのライフサイクル状態が、メモリ上にロード済みである状態であれば前記通知を当該プログラムに渡し、前記ライフサイクル状態が前記メモリ上にロードされていない状態であれば前記通知を当該プログラムに渡さない、請求項３に記載の仲介装置。
【請求項５】
前記通知制御手段は、前記宛先のプログラムの前記ライフサイクル状態が、前記メモリ上にロード中の状態であれば、ロードが完了したときに前記通知を当該プログラムに渡す、請求項４に記載の仲介装置。
【請求項６】
各プログラムからそれぞれ当該プログラムがどの状態のときに通知を受け取るかを示す通知設定を記憶する設定記憶手段、を更に含み、
前記通知制御手段は、前記宛先のプログラムの状態が当該プログラムの前記通知設定の示す状態に該当すれば前記通知を当該プログラムに渡し、そうでなければ前記通知を当該プログラムに渡さない、請求項１に記載の仲介装置。
【請求項７】
前記通知設定は、前記プログラムと前記通知の対象である情報項目との組合せ毎に、当該プログラムがどの状態の時に当該情報項目についての前記通知を受け取るかを示すものであり、
前記通知制御手段は、前記宛先のプログラムが、当該宛先のプログラムと、前記受信手段が受信した前記通知の対象である前記情報項目と、の組合せに対応する前記通知設定が示す状態に該当すれば前記通知を当該プログラムに渡し、そうでなければ前記通知を当該プログラムに渡さない、請求項６に記載の仲介装置。
【請求項８】
前記各プログラムを管理する常駐プログラムから、前記各プログラムについての前記通知設定の登録を受け付けて前記設定記憶手段に記憶させる手段、を更に含む請求項７に記載の仲介装置。
【請求項９】
前記常駐プログラムから登録された前記各プログラムの各通知設定に含まれる前記通知の対象の前記情報項目のリストを、通知して欲しい情報項目を示すリストとして前記通知元に登録する手段、を更に含む請求項８に記載の仲介装置。
【請求項１０】
各プログラムからそれぞれ当該プログラムがどの状態のときに通知を受け取らないかを示す通知設定を記憶する手段、を更に有し、
前記通知制御手段は、前記宛先のプログラムの状態が当該プログラムの前記通知設定の示す状態に該当すれば前記通知を当該プログラムに渡さず、そうでなければ前記通知を当該プログラムに渡す、請求項１に記載の仲介装置。
【請求項１１】
コンピュータを、
通知元から通知を受信する受信手段、
受信した前記通知の宛先のプログラムの状態に応じて、その通知を前記プログラムに渡すか否かを制御する通知制御手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仲介装置及びプログラムに関する。
【背景技術】
【０００２】
特許文献１には、ファイアウォールの介在等によりイベントを直接通知できない端末間でのイベント通知を効率よく行うためにイベント通知仲介システムを設けることが開示されている。
【０００３】
特許文献２に開示された装置は、バックグラウンドで処理を実行可能な情報処理装置であって、アプリケーションからの要求に応じて処理が実行される際に、バックグラウンドにおける別の処理の実行を制御する制御手段を備える。制御手段は、アプリケーションからの要求に応じて、別の処理がバックグラウンドにて実行されないように抑制し、アプリケーションから抑制の解除の要求が指示されない場合、抑制を開始してから所定の期間が経過した際に、抑制を解除する。
【０００４】
特許文献３に開示された装置は、スレッドとして実行されるアプリケーションのライフサイクルの管理を行うアプリケーション管理手段と、アプリケーションのライフサイクルに影響する画像形成装置のイベントをアプリケーション管理手段に通知するイベント通知手段とを備える。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２００９／０８８０４８号
【特許文献２】特開２００５−２６９４３９号公報
【特許文献３】特開２０１６−１００７３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
通知元が発した通知を、その通知の宛先のプログラムに常に通知する方式では、プログラムがその情報を受け取っても実際には利用せずに終わる場合にも通知が行われることになり、通知やそのための処理が無駄になる場合がある。
【課題を解決するための手段】
【０００７】
請求項１に係る発明は、通知元から通知を受信する受信手段と、受信した前記通知の宛先のプログラムの状態に応じて、その通知を前記プログラムに渡すか否かを制御する通知制御手段と、を含む仲介装置である。
【０００８】
請求項２に係る発明は、前記プログラムの状態とは、当該プログラムが生成した表示要素の表示に関する状態であり、前記通知制御手段は、前記宛先のプログラムが生成した表示要素が表示されている状態であれば前記通知を当該プログラムに渡し、当該表示要素が表示されていない状態であれば前記通知を当該プログラムに渡さない、請求項１に記載の仲介装置である。
【０００９】
請求項３に係る発明は、前記通知制御手段は、前記宛先のプログラムが生成した表示要素が表示されていない状態であっても、当該プログラムの前記状態が予め登録された特定の状態である場合には、前記通知を当該プログラムに渡す、請求項２に記載の仲介装置である。
【００１０】
請求項４に係る発明は、前記プログラムの状態とは、当該プログラムのライフサイクル状態であり、前記通知制御手段は、前記宛先のプログラムのライフサイクル状態が、メモリ上にロード済みである状態であれば前記通知を当該プログラムに渡し、前記ライフサイクル状態が前記メモリ上にロードされていない状態であれば前記通知を当該プログラムに渡さない、請求項３に記載の仲介装置である。
【００１１】
請求項５に係る発明は、前記通知制御手段は、前記宛先のプログラムの前記ライフサイクル状態が、前記メモリ上にロード中の状態であれば、ロードが完了したときに前記通知を当該プログラムに渡す、請求項４に記載の仲介装置である。
【００１２】
請求項６に係る発明は、各プログラムからそれぞれ当該プログラムがどの状態のときに通知を受け取るかを示す通知設定を記憶する設定記憶手段、を更に含み、前記通知制御手段は、前記宛先のプログラムの状態が当該プログラムの前記通知設定の示す状態に該当すれば前記通知を当該プログラムに渡し、そうでなければ前記通知を当該プログラムに渡さない、請求項１に記載の仲介装置である。
【００１３】
請求項７に係る発明は、前記通知設定は、前記プログラムと前記通知の対象である情報項目との組合せ毎に、当該プログラムがどの状態の時に当該情報項目についての前記通知を受け取るかを示すものであり、前記通知制御手段は、前記宛先のプログラムが、当該宛先のプログラムと、前記受信手段が受信した前記通知の対象である前記情報項目と、の組合せに対応する前記通知設定が示す状態に該当すれば前記通知を当該プログラムに渡し、そうでなければ前記通知を当該プログラムに渡さない、請求項６に記載の仲介装置である。
【００１４】
請求項８に係る発明は、前記各プログラムを管理する常駐プログラムから、前記各プログラムについての前記通知設定の登録を受け付けて前記設定記憶手段に記憶させる手段、を更に含む請求項７に記載の仲介装置である。
【００１５】
請求項９に係る発明は、前記常駐プログラムから登録された前記各プログラムの各通知設定に含まれる前記通知の対象の前記情報項目のリストを、通知して欲しい情報項目を示すリストとして前記通知元に登録する手段、を更に含む請求項８に記載の仲介装置である。
【００１６】
請求項１０に係る発明は、各プログラムからそれぞれ当該プログラムがどの状態のときに通知を受け取らないかを示す通知設定を記憶する手段、を更に有し、前記通知制御手段は、前記宛先のプログラムの状態が当該プログラムの前記通知設定の示す状態に該当すれば前記通知を当該プログラムに渡さず、そうでなければ前記通知を当該プログラムに渡す、請求項１に記載の仲介装置である。
【００１７】
請求項１１に係る発明は、コンピュータを、通知元から通知を受信する受信手段、受信した前記通知の宛先のプログラムの状態に応じて、その通知を前記プログラムに渡すか否かを制御する通知制御手段、として機能させるためのプログラムである。
【発明の効果】
【００１８】
請求項１、１１に係る発明によれば、通知元が発した通知をその通知の宛先のプログラムに常に通知する方式と比べて、通知やそのための処理が無駄になりにくくすることができる。
【００１９】
請求項２に係る発明によれば、表示に直ちに反映されない通知を宛先のプログラムに渡すことにより生じる可能性のある無駄を低減することができる。
【００２０】
請求項３に係る発明によれば、表示要素を表示中でなくても通知を渡すことが必要な状態のプログラムに対して、通知を渡すことができる。
【００２１】
請求項４に係る発明によれば、ロード済みでないプログラムに対して通知を渡すことによる無駄を低減することができる。
【００２２】
請求項５に係る発明によれば、ロード中の宛先のプログラムに対して通知を渡すことを試行する方式と比べて、無駄な試行を低減することができる。
【００２３】
請求項６又は１０に係る発明によれば、プログラム毎に、そのプログラムの特徴に応じて通知を渡すか否かを制御することができる。
【００２４】
請求項７に係る発明によれば、通知の対象である情報項目毎に、宛先のプログラムに通知を渡してよい状態を規定することができる。
【００２５】
請求項８に係る発明によれば、新たなプログラムが導入された場合等に、仲介装置に対して人手で通知設定を登録する手間をなくすことができる。
【００２６】
請求項９に係る発明によれば、通知元に対して通知が必要な情報項目を知らせることができる。
【図面の簡単な説明】
【００２７】
【図１】実施形態のシステム構成の例を示す図である。
【図２】ウェブブラウザが実行するプログラムの例を説明する図である。
【図３】ホーム画面の例を示す図である。
【図４】コピー画面の例を示す図である。
【図５】デバイス画面の例を示す図である。
【図６】一般設定画面の例を示す図である。
【図７】一般設定画面から呼び出される他の設定画面の例を示す図である。
【図８】エラー画面の例を示す図である。
【図９】コピー画面にバナーが表示された状態を例示する図である。
【図１０】通知登録テーブルの例を示す図である。
【図１１】外部モジュールが保持している個々の情報項目のデータ内容と、そのデータ内容が変化する理由とを示す図である。
【図１２Ａ】表示態様管理モジュールが保持する表示態様の管理情報のある時点の状態を示す図である。
【図１２Ｂ】表示態様管理モジュールが保持する表示態様の管理情報のある時点の状態を示す図である。
【図１２Ｃ】表示態様管理モジュールが保持する表示態様の管理情報のある時点の状態を示す図である。
【図１２Ｄ】表示態様管理モジュールが保持する表示態様の管理情報のある時点の状態を示す図である。
【図１２Ｅ】表示態様管理モジュールが保持する表示態様の管理情報のある時点の状態を示す図である。
【図１２Ｆ】表示態様管理モジュールが保持する表示態様の管理情報のある時点の状態を示す図である。
【図１２Ｇ】表示態様管理モジュールが保持する表示態様の管理情報のある時点の状態を示す図である。
【図１２Ｈ】表示態様管理モジュールが保持する表示態様の管理情報のある時点の状態を示す図である。
【図１２Ｉ】表示態様管理モジュールが保持する表示態様の管理情報のある時点の状態を示す図である。
【図１２Ｊ】表示態様管理モジュールが保持する表示態様の管理情報のある時点の状態を示す図である。
【図１２Ｋ】表示態様管理モジュールが保持する表示態様の管理情報のある時点の状態を示す図である。
【図１２Ｌ】表示態様管理モジュールが保持する表示態様の管理情報のある時点の状態を示す図である。
【図１２Ｍ】表示態様管理モジュールが保持する表示態様の管理情報のある時点の状態を示す図である。
【図１２Ｎ】表示態様管理モジュールが保持する表示態様の管理情報のある時点の状態を示す図である。
【図１２Ｏ】表示態様管理モジュールが保持する表示態様の管理情報のある時点の状態を示す図である。
【図１２Ｐ】表示態様管理モジュールが保持する表示態様の管理情報のある時点の状態を示す図である。
【図１２Ｑ】表示態様管理モジュールが保持する表示態様の管理情報のある時点の状態を示す図である。
【図１３】外部モジュールから通知を受信したときの通知仲介部の処理の手順を例示する図である。
【図１４】外部モジュールから通知を受信したときの通知仲介部の処理の手順の別の例を示す図である。
【図１５】外部モジュールから通知を受信したときの通知仲介部の処理の手順の更に別の例を示す図である。
【発明を実施するための形態】
【００２８】
図１に、本実施形態のシステムの例を示す。例示するシステムは、画像形成装置に搭載されるソフトウエアシステムであり、ウェブブラウザ１００と外部モジュール２００とを含む。
【００２９】
ウェブブラウザ１００は、画像形成装置のＵＩ（ユーザインタフェース）処理を担うソフトウエア要素である。このウェブブラウザ１００は、外部モジュール２００内のウェブサーバ等のサーバから供給されるウェブページの表示やウェブアプリケーションの実行を行う。ウェブブラウザ１００は、プログラム１１０、プログラム管理部１２０、及び通知仲介部１３０を含む。
【００３０】
プログラム１１０は、ウェブブラウザ１００上で実行可能なプログラムである。プログラム１１０は、例えばウェブアプリケーションの形で外部モジュール２００内のウェブサーバ（図示省略）から提供され、ウェブブラウザ１００上で実行される。プログラム１１０は、ウェブブラウザ１００上で実行されることにより、画像形成装置のＵＩを構成する要素処理（例えばある目的のための画面の表示と、その画面上の各部へのタッチ操作を受け付ける処理）を実現する。後述するホーム画面（「Home」）やコピー画面（「Copy」）のように、ＵＩを構成する要素毎にプログラム１１０が存在する。
【００３１】
図示例では、プログラム１１０は、１つの常駐プログラム１１２と、１以上の表示プログラム１１４とを含む。常駐プログラム１１２は、対応する1以上の表示プログラム１１４を管理する。表示プログラム１１４は、ＵＩを構成する画面、ウインドウ、ダイアログ等の表示要素を画面表示したり、その表示要素に対するユーザの入力を受け付けたりするための処理を実行する。
【００３２】
常駐プログラム１１２は、ユーザからの指示や外部モジュール２００の状態に応じて、必要な表示プログラム１１４を起動したり、その表示プログラム１１４が生成する画面等の表示要素を表示したりする指示を、プログラム管理部１２０に対して行う。プログラム管理部１２０を介して、指示された表示プログラム１１４が起動されたり、起動済みのその表示プログラム１１４が生成した画面等の表示要素が、画像形成装置が備える表示装置に表示されたりする。表示プログラム１１４によって表示される画面は、ＧＵＩ（グラフィカルユーザインタフェース）を構成しており、ユーザの指示を受け、その指示に応じて外部モジュールを操作し、コピー、スキャン等のジョブを実行する。また、表示プログラム１１４は、外部モジュール２００から通知される情報を、表示要素内に表示する。これにより、例えば、トナーの消費やエラー状況が画面表示される。また表示プログラム１１４は、自らが表示している表示要素に対してその表示要素を閉じる旨のユーザの指示を受けると、プログラム管理部１２０に対して自らの非表示及び削除を指示する。これに応じて、プログラム管理部１２０は、その表示プログラムを非表示とする処理、更に削除（メモリからアンロード）を行う。また、常駐プログラム１１２が外部モジュール２００の状態の通知を受けて、対応する表示プログラム１１４の非表示、削除を実施することもある。
【００３３】
プログラム管理部１２０は、ウェブブラウザ１００上で実行される各プログラム１１０（特にその中の表示プログラム１１４）の状態を管理する。管理されるプログラムの状態には、ライフサイクル状態と表示態様とがある。
【００３４】
ライフサイクル状態とは、その表示プログラム１１４が、プログラムのライフサイクルにおけるどのステージにあるかを示す状態である。最も簡単な例では、ライフサイクルの状態は、その表示プログラム１１４がウェブブラウザ１００上で実行中（言い換えればメモリ上にロード済み）である第１状態（ロード済み状態とも呼ぶ）と、そうでない第２状態（非ロード済み状態とも呼ぶ）の２つに大別される。非ロード済み状態は、ロード中でまだロードが完了していない状態（ロード中状態）、メモリ上からの削除中の状態（削除中状態）、及びまったくロードされていない状態（未ロード状態）、の３つに分けることもできる。各表示プログラム１１４のライフサイクル状態は、ライフサイクル管理モジュール１２２により管理されている。
【００３５】
表示態様とは、実行中状態にある表示プログラム１１４が生成する画面等の表示要素が画像形成装置付属の表示装置に表示されているか否かに関する状態である。簡単な例では、表示態様は、実際に表示装置に表示されている「表示」状態と、表示されていない「非表示」の２段階の状態である。また、階層的な複数の表示要素を切り替えて表示する場合を想定して「表示」状態を、「前面表示」と「背面表示」に細分化してもよい。前面表示状態の表示要素は表示装置に表示されている（従ってユーザの目に見える）のに対し、背面表示状態の表示要素は、メモリ上に画像データとしては存在するが、表示装置の画面上では、その前面表示状態の表示要素の下に隠れて見えない（表示されない）。なお、「非表示」状態の表示要素は、画像データがメモリ上に存在していてもよいし、存在していなくてもよい。存在していない場合は、その表示要素を再度表示する場合、画像データを再度生成する必要がある。各表示プログラムの表示態様は、表示態様管理モジュール１２４に管理されている。
【００３６】
プログラム管理部１２０は、ライフサイクル管理モジュール１２２及び表示態様管理モジュール１２４に管理されている各表示プログラムのライフサイクルや表示態様の情報を、他のプログラムに提供する機能を持つ。
【００３７】
通知仲介部１３０は、外部モジュール２００からの通知を各プログラム１１０に仲介する処理を担う。どの通知をどのプログラム１１０に、どの場合に通知するかは、イベント管理部１３２に設定されている（詳細は後述）。通知仲介部１３０は、外部モジュール２００から通知を受け取った場合、その通知の送り先のプログラムと、そのプログラムが通知を送るべき状態にあるか否かとを、イベント管理部１３２を参照して判定する。そして、その判定に従って、通知を送るべき状態のプログラムにその通知の情報を送る。
【００３８】
外部モジュール２００は、ＵＩであるウェブブラウザ１００からみて外部にあるモジュールであることを意味し、ここでは画像形成装置本体の制御を行うソフトウエアモジュールのことである。例えば、外部モジュール２００は、画像形成装置が内蔵する印刷機構、用紙送り機構、スキャン機構、ファックス装置等をユーザの指示に応じて制御する。また、外部モジュール２００は、ユーザから指示されたコピー、スキャン等の処理（ジョブ）の処理順序や実行を管理する。また、外部モジュール２００は、画像形成装置の各部に設けられたセンサの信号から、それら各部の状態を検知し、その状態の情報を保持・管理する。外部モジュール２００は、自分が管理している各ジョブの状態、各種センサの信号が示す各種状態（例えば用紙やトナー等の状態）、画像形成装置のコンフィギュレーション、オプション（例えば後処理装置）の有無などの情報項目を情報保持部２０２に保持し、管理している。
【００３９】
また外部モジュール２００が備える情報通知管理部２０４は、情報保持部２０２が保持する情報項目のうちのどれをウェブブラウザ１００側に通知するのかを管理している。例えば情報通知管理部２０４には、ウェブブラウザ１００（通知仲介部１３０）から通知の対象として登録された情報項目のリストが保持される。
【００４０】
また外部モジュール２００は、WebSocketサーバ２０６及びＳＯＡＰサーバ２０８を有する。WebSocketサーバ２０６は、WebSocket規格に準拠した通信により情報をウェブブラウザ１００に提供する。ＳＯＡＰサーバ２０８は、ＳＯＡＰプロトコルを用いて情報をウェブブラウザ１００に提供する。
【００４１】
次に、プログラム１１０の具体例を説明する。画像形成装置のＵＩを構成するプログラム１１０には、図２に例示するようにHome、Copy、Contacts、Device、Fault等の識別名（図中の「プログラム名」）で識別されるプログラムがある。
【００４２】
Homeプログラムは、画像形成装置のＵＩのホーム画面（すなわち最上位の操作メニューを表示する画面）を構成するためのプログラムである。Homeプログラムは、表示プログラム１１４として「home」という識別名（「表示プログラム名」）のプログラムを起動する。このhome表示プログラムにより表示されるホーム画面３００の例を図３に示す。このホーム画面３００には、画像形成装置が提供するコピー、スキャン、ファックス送信等の各機能を使用するための画面を呼び出すためのＧＵＩボタン３０２が並べて表示される。また、ホーム画面３００には、現在この画像形成装置にログインしているユーザ（すなわちこの画面を見て操作しているユーザ）のユーザＩＤを表示するユーザ表示欄３０４、設定を初期状態にリセットするためのリセットボタン３０６などが表示される。なお、このホーム画面３００をはじめとして、プログラム１１０群が生成する各種の画面は、タッチパネル型の表示装置に表示されることを想定したものである。
【００４３】
Copyプログラムは、「copy」及び「idcopy」という２つの表示プログラム１１４を有する。
【００４４】
copy表示プログラムは、図４に例示する通常のコピー指示入力用のコピー画面４００を生成し、その画面からの入力を受け付けるプログラムである。例示のコピー画面４００には、コピー部数の入力を受け付けて表示する部数入力欄４０２、部数入力欄４０２に数値を入力するためのテンキー４０４、及び複数の詳細設定欄４０６が表示される。図では、詳細設定欄４０６として出力カラー（OutPut Coler）の欄のみが示されるが、その下の画面表示範囲の外に更にいくつかの設定項目についての詳細設定欄４０６が画面外に存在しており、画面をスクロールすることで隠れているそれら詳細設定欄４０６が表示される。詳細設定欄４０６には、当該設定項目についての現在の値（図示例では出力カラーが「自動検出」（Auto Detect））が表示されており、ユーザがその詳細設定欄４０６にタッチすることで、当該設定項目の値を変更するための別画面が表示される。
【００４５】
また、idcopy表示プログラムは、免許証やパスポート等の身分証明書やＩＤカードの複数の面の画像を１枚の用紙に印刷するＩＤカードコピー機能の操作画面（図示省略）を生成し、操作を受け付けるためのプログラムである。
【００４６】
通常のコピー（copy表示プログラム）とＩＤカードコピー（idcopy表示プログラム）とは、利用する設定項目や処理時に参照する情報項目等の多くが共通しているので、それらを共通のCopyプログラムの常駐プログラム１１２で管理している。
【００４７】
またDeviceプログラムは、画像形成装置全体についての設定画面（図５のデバイス画面５００等）を表示し、それら設定画面に対するユーザの入力を受け付ける。画像形成装置全体についての設定画面群は、階層構造をなしている。図５に例示したデバイス画面５００は、その階層構造における最上位の画面であり、ホーム画面３００内の「デバイス」ボタンが押下されると表示される。このデバイス画面５００は、図２に示したdevice表示プログラムにより生成される。デバイス画面５００には、装置設定項目のカテゴリ５０２のリストが表示され、このリスト内のカテゴリ５０２がタッチ操作で選択されると、そのカテゴリ５０２の画面が表示される。例えば、デバイス画面５００上の「General（一般）」カテゴリ５０２がタッチされると、図６に例示する一般設定画面５１０が表示される。この一般設定画面５１０は、図２に示したgeneral表示プログラムにより生成される。一般設定画面５１０には、一般設定項目５１２のリストが表示される。図には「Measurement（寸法の単位）」や「Date & Time（日付と時刻）」といった一般設定項目５１２が例示されている。一般設定画面５１０のリストからタッチ操作により一般設定項目５１２が選択されると、その設定項目についての設定画面５２０（図７参照）が表示される。図７は、「Measurement（寸法の単位）」が選択された場合に表示される設定画面５２０を例示している。図７の設定画面５２０には、寸法の単位に関する２つの詳細設定項目５２２が示されている。１つ目の詳細設定項目５２２は、
ＵＩに表示される寸法の「Unit（単位）」としてインチ（inch）が選択されていることを示し、２つ目は用紙のサイズ（Paper Size）もインチ単位であることを示している。詳細設定項目５２２の欄にタッチすると、その項目の単位を変更するための変更画面（図示省略）が表示される。この設定画面５２０は、図２に示したmeasurement表示プログラムにより生成される。
【００４８】
ホーム画面３００上で「デバイス」ボタンが押下されると、まずdevice表示プログラムが起動され、デバイス画面５００が表示される。ユーザがデバイス画面５００上で「General」画面の表示を指示すると、device表示プログラムがデバイスの常駐プログラム１１２にgeneral表示プログラムの起動を依頼する。常駐プログラム１１２はdevice表示プログラムの子画面としてgeneral表示プログラムを起動するよう、プログラム管理部１２０に起動を依頼する。起動が完了すると常駐プログラム１１２はgeneral表示プログラムの生成した一般設定画面５１０を表示するようプログラム管理部１２０に依頼する。一般設定画面５１０に対してユーザがMesurement画面表示を指示すると、同様の流れでプログラム管理部１２０を介してmeasurement表示プログラムが起動され、設定画面５２０が表示されることとなる。このとき、プログラム管理部１２０は、Device−General−Mesurementという画面間の階層関係を管理していると共に、それら階層関係のある画面群のうち、現在どの画面が前面に表示されており、どの画面がその裏に隠れているのかを把握している。
【００４９】
Faultプログラムは複数のエラーをユーザに知らせるためのいくつかの表示プログラムをもつ。図８に、画像形成装置の前面カバー（Front Door）が開かれた場合に表示されるエラー画面６００を例示する。このエラー画面６００は、図２の表に挙げたfaultcommon表示プログラムによって表示される。Faultプログラムの常駐プログラム１１２は、画像形成装置にエラーが発生したことを検知できるよう、外部モジュール２００から装置のエラーに関する情報項目について通知を受け取る旨の登録を予め通知仲介部１３０に行う。登録された情報はイベント管理部１３２に保持される。また、通知仲介部１３０は、外部モジュール２００の情報通知管理部２０４に対して、装置のエラーに関する情報項目について通知を受け取る旨の登録を行う。前面カバーが開かれたことを外部モジュール２００が検知すると、情報保持部２０２が保持する装置エラーに関する情報項目のデータ内容が、前面カバーが開いていることを示す値へと更新される。WebSocketサーバ２０６は、この更新を受けて、装置のエラーに関する情報項目について通知を受け取る旨の登録があるかどうか情報通知管理部２０４に問い合わせ、そのような登録があれば、WebSocketプロトコルを用いてウェブブラウザ１００に対してその情報項目のデータ内容の更新を知らせる通知を送信する。ウェブブラウザ１００の通知仲介部１３０は、その情報項目が通知対象とする旨の登録がFaultプログラムからなされているので、Faultプログラムに対してその通知を送信する。この通知には、前面カバーが開いていることを示すデータ内容が含まれる。Faultプログラムの常駐プログラム１１２は、受け取った通知の内容から、faultcommon表示プログラムを選択して起動し、その情報内容に対応した画面内容を表示する。すなわちこの場合、faultcommon表示プログラムは、前面カバーが開いているという状態とそれに対する対処法を示すエラー画面６００を生成し表示する。
【００５０】
Bannerプログラムは、バナーを生成し、表示するためのプログラムであり、banner表示プログラムやjobbanner表示プログラムを含む。バナーは、画面（すなわち画像形成装置付属の表示装置の全表示領域）の一部に表示される表示領域である。Bannerプログラムは、他の表示プログラムからユーザにメッセージを表示したい場合に起動され、そのメッセージを示したバナーを表示する。バナーは、その下のレイヤー（層）にある画面を部分的に隠す。図９には、コピー画面４００の下端部にバナー７００が表示されている状態を示す。このバナー７００は、部数入力欄４０２に入力された部数の値が、許容範囲を逸脱していることを示すメッセージを表示する。コピー画面４００の下側の一部分は、このバナー７００により隠されるが、上側の大部分は表示されたままである。バナー７００は、予め設定された時間が経過すると消去される。また、図示は省略したが、バナー７００内に、そのバナー７００を消去するためのボタンを設けてもよい。
【００５１】
なお、図２のレイヤーの欄は、プログラム１１０内の表示プログラム１１４が生成した画面（コピー画面４００やデバイス画面５００等）が属する仮想的なレイヤー（層）を示す。複数の画面の表示が競合した場合、各画面を生成したプログラム１１０のレイヤーの優先順に従って、それら複数の画面のうちのどれを前面に表示するかを決める。
【００５２】
次に、画像形成装置の電源投入時における、このシステムの動作を説明する。
【００５３】
画像形成装置に電源が投入されると、まずこの装置の主制御部である外部モジュール２００が起動される。起動された外部モジュール２００は、ＵＩを担当するウェブブラウザ１００を起動する。起動されたウェブブラウザ１００は、設定に従って画像形成装置内のウェブサーバ（図示省略）から、各プログラム１１０の常駐プログラム１１２群、並びに、プログラム管理部１２０及び通知仲介部１３０のプログラムをダウンロードして起動する。起動された各常駐プログラム１１２は、外部モジュール２００から通知して欲しい情報項目を通知仲介部１３０に対して登録する。より詳しくは、この登録では、常駐プログラム１１２が管理する表示プログラム１１４（すなわち常駐プログラム１１２と同じプログラム１１０に属する表示プログラム１１４）のうち、外部モジュール２００からの通知を必要とする表示プログラム１１４ごとに、その表示プログラム１１４に対して通知して欲しい情報項目（後述する図１０では「情報ＩＤ」）と、その表示プログラム１１４がどの状態（例えば後述する「表示態様」）のときにその情報項目についての通知を受け取るのか（あるいはどの状態のときに受け取らないのか）を示す情報（図１０では「通知方法」）と、を含む登録項目を、通知仲介部１３０に登録する。この登録の内容はイベント管理部１３２内の通知登録テーブル（図示省略）に保持される。また起動された通知仲介部１３０は、WebSocket等のプロトコルで通信できるよう外部モジュール２００と接続を行い、各常駐プログラム１１２から登録された通知対象の情報項目を、外部モジュール２００に登録する。外部モジュール２００は、通知仲介部１３０から登録された通知対象の情報項目のリストを保持している。
【００５４】
図１０に、イベント管理部１３２に保持される通知登録テーブルのデータ内容を例示する。このテーブルには、個々の登録毎に１つの行（エントリ）が含まれる。１つの行には、「プログラム名」、「表示プログラム名」、「情報ＩＤ」、「通知方法」、「キャッシュ要否」等の項目が登録される。
【００５５】
「プログラム名」は、情報項目についての通知を依頼した依頼元のプログラム１１０の識別名である。
【００５６】
「表示プログラム名」は、そのプログラム１１０内で当該情報項目の通知を受ける表示プログラム１１４の識別名である。「情報ＩＤ」は、通知の対象である情報項目の識別情報である。なお、図１０の例において、表示プログラム名「baseframe」は、同じ行内のプログラム名が示すプログラム１１０の常駐プログラム１１２を示す。常駐プログラム１１２が通知を受け取り、その通知に対応する表示プログラム１１４を起動するなどの場合があるため、常駐プログラム１１２も通知の宛先となり得る。
【００５７】
「通知方法」は、その表示プログラム１１４がどのような状態（例えば表示態様）にあるときに、外部モジュール２００から受け取ったその情報項目についての通知をその表示プログラム１１４に渡すかを示す。例えば、通知方法が「前面表示時」である場合、通知仲介部１３０は、同じ行内の表示プログラム１１４の表示態様が「前面表示」であるときに限り、同じ行内の情報ＩＤが示す情報項目についての通知をその表示プログラム１１４に渡す。また、通知方法が「表示時」の場合、通知仲介部１３０は、同じ行内の表示プログラム１１４の表示態様が何らかの「表示」状態に対応する場合、すなわち「前面表示」や「背面表示」などのように、表示プログラム１１４が生成した画面のデータがメモリ上に存在する場合（ただし実際に表示されていない場合もある）に、対応する情報項目に関する通知を、対応する表示プログラム１１４に送る。また、通知方法が「常時」である場合、プログラム管理部１２０は、同じ行内の表示プログラム１１４の表示態様によらず、同じ行内の情報ＩＤが示す情報項目についての通知をその表示プログラム１１４に渡す。すなわち、「常時」の場合は、表示プログラム１１４の表示態様が「非表示」（すなわち表示装置に表示されない）であっても、その表示プログラム１１４に通知が送られる。
【００５８】
通知登録テーブルの右端の項目「キャッシュ要否」は、同じ行の情報ＩＤに対応する情報項目についての通知の内容のキャッシュが必要か否かを示す。「キャッシュ要否」の値が「要」の場合、通知仲介部１３０（イベント管理部１３２）は、対応する情報項目についての通知のデータ内容をキャッシュする。すなわち、イベント管理部１３２は、「キャッシュ要否」が「要」である個々の情報ＩＤに対応付けて、その情報ＩＤに対応する情報項目についての最新の通知のデータ内容を保持（キャッシュ）する。その情報項目について新たな通知が到来した場合、その情報項目のキャッシュ内容はその新たな通知のデータ内容へと更新される。キャッシュした情報項目のデータ内容は、起動された表示プログラム１１４から参照される場合がある。
【００５９】
図１０に例示した各エントリの情報は、それぞれ当該エントリのプログラム名に対応するプログラム１１０の常駐プログラム１１２が、画像形成装置の起動時に、通知仲介部１３０に登録する。
【００６０】
なお、通知仲介部１３０は、画像形成装置の起動時に各プログラム１１０からの登録により通知登録テーブルを生成した場合、その通知登録テーブル内に登録された情報ＩＤのリストを、通知対象を示す情報として外部モジュール２００に登録する。図１０に例示したように、通知登録テーブル内には、同じ情報ＩＤが複数の表示プログラムのエントリに通知対象として登録されているが、外部モジュール２００には、このような重複がない、各通知対象の情報ＩＤを１つずつ示したリストが登録される。
【００６１】
図１１に、外部モジュール２００が情報保持部２０２内に保持している個々の情報項目の情報ＩＤに対応付けて、その情報項目のデータ内容（「内容」）と、そのデータ内容が変化する理由（「変化理由」）を示す。
【００６２】
例えば、情報項目「PaperTray」（すなわち情報ＩＤの値が「PaperTray」である情報項目のこと）は、データ内容として、画像形成装置が備える各用紙トレイ（図示例では、２つの用紙トレイＴｒａｙ１とＴｒａｙ２）について、当該用紙トレイ内の用紙のサイズと、その用紙トレイの状態とを持つ。用紙トレイの状態は、その用紙トレイが画像形成装置本体に挿入された状態か抜かれた状態かのいずれかである。また、この情報項目内のある用紙トレイの用紙サイズの値は、その用紙トレイ内に収容される用紙のサイズが変更されるのに応じて変化する。また、この情報項目内の、ある用紙トレイの状態の値は、その用紙トレイが抜かれたとき、その用紙トレイが挿されたとき、及びその用紙トレイが故障したときに、それぞれ変化する。例えば用紙トレイが抜かれたときには、その状態の値は「挿入済み」から「抜き出された」に変化し、故障した場合には「挿入済み」から「故障中」に変化する。
【００６３】
また情報項目「DeviceFault」には、データ内容として、画像形成装置の前面カバーのエラー情報、オプションのエラー情報が含まれる。例えばオプジョンのエラー情報は、画像形成装置にオプションとして付属する両面装置や後処理装置（Finisher）が故障した場合に、「正常」を示す値から「故障」を示す値に変化する。
【００６４】
次に、プログラム管理部１２０の機能について説明する。プログラム管理部１２０は、それぞれのプログラム１１０から表示プログラム１１４の起動や表示の要求があったとき、前面表示とする表示プログラムを決める。すなわち、複数の画面の表示要求が競合する場合には、所定のレイヤー優先順にしたがって前面に表示する画面を決める。例えば、図２に示された３つのレイヤーApplication、Fault、Bannerの中では、Faultが最も優先順位が高く、次位がBannerであり、最下位がApplicationである。表示対象として競合している画面同士のレイヤーが異なる場合は、そのうち優先順位が最も高いレイヤーの画面を前面表示とし、他の画面は非表示とする。また競合している画面のレイヤーがすべて同じ場合には、表示要求を受け付けた時間が最新の画面が前面表示される。すなわち、新たに来た表示要求に係る画面のレイヤーが、現在前面表示されている画面のレイヤーと同順位の場合、現在表示されている画面は非表示となり、その新たな表示要求に係る画面が前面表示される。例えばCopyプログラムとScanプログラムは共にApplicationレイヤーであり、それら両方から画面の表示要求を受けた場合、プログラム管理部１２０は、時間的に後に要求された方の画面を前面表示の対象と決定する。また、Copyプログラムの画面（例えばコピー画面４００）が表示されているときに、より高順位のFaultレイヤーに該当するFaultプログラムの画面の表示要求があれば、Faultプログラムの画面が表示される。
【００６５】
ここで、ウェブブラウザ１００が使用可能なメモリ容量に限りがあるため、起動を要求されたすべての表示プログラム１１４を生成（起動）済み状態（すなわちメモリ上にロードされている状態）としておく余裕はない。そこで、プログラム管理部１２０は、メモリ上にロードする表示プログラム１１４の数に上限を設け、原則その上限を超える数の表示プログラム１１４がメモリ上に同時にロードされている状態とならないように制御する。すなわち、プログラム管理部１２０は、いずれかの常駐プログラム１１２から新たな表示プログラム１１４の生成（起動、ロード）が要求された場合、その時点でメモリ上にある表示プログラム１１４の数が上限に達していれば、原則、その中の１つの表示プログラム１１４（例えば現在表示中の表示プログラム１１４以外でもっとも生成時刻が古いもの）を削除し、その代わりに新たに要求された表示プログラム１１４をロードする。削除された表示プログラム１１４と同じプログラム１１０に属する常駐プログラム１１２は、プログラム管理部１２０から、その表示プログラム１１４が削除された旨を通知される。削除されたその表示プログラム１１４の画面を再度表示する場合には、その常駐プログラム１１２は、再度プログラム管理部１２０に対してその表示プログラム１１４の生成及び表示を要求する。
【００６６】
ここで説明した表示プログラム１１４の同時ロード数の上限制御の例外の一つは、home表示プログラムにより表示されるホーム画面３００である。ホーム画面３００は、表示装置上にどの画面が表示されている場合でも、画像形成装置に設けられている機械式のホームキーや、表示中の画面内のＧＵＩのホームキーが押下されると表示する必要があり、即応性が求められる。このため、home表示プログラムは常にメモリ上にロードされた状態とする。メモリ上の表示プログラム１１４の数が上限を超える場合でも、home表示プログラムは削除の対象にはならない。
【００６７】
また表示プログラム１１４の同時ロード数の上限制御の例外の別の例として、上に例示したDeviceプログラム内のdevice、general、measurement表示プログラム１１４のように階層（親子）関係がある表示プログラム１１４がある。メモリ上にロードされている表示プログラム１１４に対して階層関係上で先祖に該当する表示プログラム１１４は、上述の上限制御において削除の対象には選ばれない。
【００６８】
次に、図１２Ａ〜図１２Ｑを参照して、プログラム管理部１２０の表示態様管理モジュール１２４が保持する表示態様の管理情報の変遷の具体例を説明する。以下の例は、ウェブブラウザ１００が同時に実行可能な表示プログラム１１４の上限数が２である場合の例である。
【００６９】
まず画像形成装置に電源が投入されてウェブブラウザ１００が起動されると、ウェブブラウザ１００が、最初に起動するものとして設定されているhome表示プログラム１１４を起動する。これにより画像形成装置付属の表示装置にホーム画面３００が表示される。図１２Ａには、この時点での表示態様管理モジュール１２４内の管理情報の内容が示される。管理情報には、メモリ上にロードされている（すなわち起動済みで未削除）の表示プログラム１１４毎に１つの行（エントリ）が含まれる。個々のエントリには、ＰＩＤ、プログラム名、表示プログラム名、親表示プログラム名、表示態様及びレイヤー等の項目が含まれる。ＰＩＤは、その表示プログラム１１４に付与されたＩＤ（識別情報）である。プログラム名は、その表示プログラム１１４が属するプログラム１１０の識別名である。表示プログラム名はその表示プログラム１１４自身の識別名であり、親表示プログラム名は、階層（親子）関係をなす表示プログラム１１４群（例えば上述したDeviceプログラムに属するdevice、general、measurement）において、当該表示プログラム１１４の親に該当する表示プログラム１１４の識別名である。レイヤーは、その表示プログラム１１４が属するレイヤー（図２参照）である。図１２Ａに示すように、ウェブブラウザ１００が起動された時点の管理情報には、home表示プログラムが「前面表示」状態であることを示すエントリのみが含まれる。
【００７０】
次に、ホーム画面３００上でコピーボタンが押下されると、copy表示プログラムが起動され、これによりコピー画面４００が表示される。このとき、図１２Ｂに示すように、copy表示プログラムは「前面表示」となる。また、それまで「前面表示」状態であったhome表示プログラムは、同じレイヤーのcopy表示プログラムは「前面表示」となったことにより、いわば押し出され、「非表示」に変化する。
【００７１】
次に、コピー画面４００が表示されている状態でホームボタンが押下されると、ホーム画面３００が表示されてhome表示プログラムの表示態様が「前面表示」に変化し、copy表示プログラムの表示態様が「非表示」に変化する（図１２Ｃ参照）。
【００７２】
次に、ホーム画面３００上のＦＡＸボタンが押下されると、ＦＡＸ画面が表示され、fax表示プログラムが「前面表示」となる。その代わりにhome表示プログラムは「非表示」となる（図１２Ｄ参照）。
【００７３】
次に、ホームボタンが押下されると、ホーム画面３００が表示され、図１２Ｅに示すように、home表示プログラムが「前面表示」となり、代わってfax表示プログラムが「非表示」になる。
【００７４】
次に、ホーム画面３００上のコピーボタンが押下されると、コピー画面４００が表示され、copy表示プログラムの表示態様が「前面表示」となる。一方、home表示プログラムが「非表示」となる（図１２Ｆ参照）。
【００７５】
次に、CopyプログラムからBannerプログラムにメッセージ表示が要求されると、banner表示プログラムが起動される。そして、banner表示プログラムがバナーを生成して表示し、そのバナー内にメッセージを表示する。例えばユーザが入力したコピー部数が上限値を超えた場合には、Copyプログラムからの要求に応じて図９に例示するバナー７００が表示される。この結果、図１２Ｇに示すように、プログラム管理部１２０の管理情報では、banner表示プログラムが「前面表示」となる。また、図９に例示したようにバナー７００は表示装置の全表示領域のうちの下端近傍の一部にしか表示されないため、コピー画面４００の残りの大部分は表示されたままとなる。このため、管理情報内のcopy表示プログラムの表示態様は「前面表示」のままとなる。そして、メモリ上に同時にロード可能な表示プログラムの数を上限数２以下に制限する制御により、fax表示プログラムがメモリ上から削除される。すなわち、home表示プログラムは上限数の制御の枠外として常にメモリ上に残るので、これ以外のbanner、copy、faxの各表示プログラムの中から上限数である２個がメモリ上に残ることになる。この場合、今回新たに生成され前面表示となったbannnerと、ひきつづき前面表示状態であるcopyとの２つがメモリ上に残り、faxは削除されることになる。このため、図１２Ｇに示す管理情報からは、fax表示プログラムのエントリはなくなっている。
【００７６】
次に、バナー表示後、所定の時間が経過すると、そのバナーが非表示となり、コピー画面４００が表示領域全域に表示された状態となる。バナーは、コピー画面４００等のようにユーザから入力を受け付ける画面と異なり、再度表示が必要になる可能性は極めて低いので、banner表示プログラムをメモリ上に残しておくメリットはない。このためbanner表示プログラムはメモリから削除される。このときの表示態様管理モジュール１２４内の管理情報は図１２Ｈに示す状態となる。
【００７７】
次に、ホームボタンが押下されると、ホーム画面３００が前面表示となり、コピー画面４００は非表示となる（図１２Ｉ参照）。
【００７８】
次に、ホーム画面３００のデバイスボタン（図３参照）が押下されると、デバイス画面５００（図５参照）が前面表示となり、ホーム画面３００及びコピー画面は非表示となる。この結果、図１２Ｊに示すように、管理情報では、デバイス画面５００を生成するdevice表示プログラムの表示態様が前面表示となり、home及びcopyの各表示プログラムの表示態様は非表示となる。
【００７９】
次に、ユーザがデバイス画面５００上の「General」（一般設定）にタッチすると、general表示プログラムが起動され、この表示プログラムが生成する一般設定画面５１０（図６参照）が表示される。この結果、図１２Ｋに示すように、general表示プログラムの表示態様が前面表示となる。また、general表示プログラムは、前述の通り階層関係においてdevice表示プログラムの子に該当するので、図１２Ｋの管理情報では、general表示プログラムのエントリの親表示プログラム名の欄にdevice表示プログラムの識別名が登録される。一方、それまで表示されていたデバイス画面５００は、一般設定画面５１０に隠されて非表示となり、図１２Ｋの管理情報におけるdevice表示プログラムの表示態様の値は背面表示となる。背面表示という表示態様は、非表示よりも再表示されやすい状態である。なお、互いに階層関係にある一群の表示プログラムは、同時ロード可能な表示プログラム数の上限制御において１つとカウントされるので（またhomeは上限制御における表示プログラム数にはカウントされないので）、copy表示プログラムはメモリ上に残り、管理情報にも非表示として残る。
【００８０】
次にホームボタンが押下されると、図１２Ｌに示すように、home表示プログラムの表示態様が前面表示となり、device及びgeneralの各表示プログラムの表示態様は非表示となる。
【００８１】
次に、ホーム画面３００上のアドレス帳ボタンが押下されると、Contactsプログラム中のaddressbook表示プログラム（図２参照）が生成するアドレス帳画面が前面表示となる。一方、home表示プログラムの表示態様は非表示となる。また、addressbook表示プログラムが新たにロードされることで、同時ロード数の上限制御により、共に非表示であるcopy表示プログラムと、device及びgeneral表示プログラム（これら２つで１つとカウント）とのうち、より古いcopy表示プログラムがメモリから削除される。その結果、表示態様管理モジュール１２４内の管理情報は、図１２Ｍに示す状態となる。
【００８２】
次に、ユーザが画像形成装置の前面カバーを開いたとする。この場合、外部モジュール２００からウェブブラウザ１００に対して、情報ＩＤが「DeviceFault」（図１０参照）で、データ内容として前面カバーが開いたことを示す値を含んだ通知が送られる。これを受け取った通知仲介部１３０は、情報ＩＤ「DeviceFault」の通知を「常時」待ち受けているFaultプログラムの常駐プログラム１１２（プログラム名「baseframe」）に対して、その通知を渡す。その常駐プログラム１１２は、その通知に応じてfaultcommon表示プログラムを起動する。faultcommon表示プログラムは、その通知に応じて、前面カバーが開いていることを示すエラー画面６００（図８参照）を表示する。この結果、図１２Ｎに示すように、faultcommon表示プログラムの表示態様が前面表示となる。また、それまで表示されていたアドレス帳画面を管理しているaddressbook表示プログラムは、新たに表示されたFaultプログラムの画面よりも優先度が低いレイヤーに属するので、表示態様は背面表示となる。それまで前面表示されていたアドレス帳画面は、エラー画面６００に係るエラーが解消されると再び表示することになるので、addressbook表示プログラムは非表示ではなく、背面表示となる。また、今回のfaultcommon表示プログラムの起動により、同時ロード数の上限制御が行われ、非表示で最も古いdevice及びgeneralの表示プログラム（これらは一体に扱われる）がメモリから削除され、表示態様管理モジュール１２４の管理情報からもそれら表示プログラムのエントリは削除される。
【００８３】
次に前面カバーが閉められると、前面カバーが開いているというエラー状態は解消し、外部モジュール２００はその旨を知らせる通知をウェブブラウザ１００に送る。ウェブブラウザ１００の通知仲介部１３０は、その通知をfaultcommon表示プログラム及びこれに対応する常駐プログラムに渡す。これにより、それらまで表示していたエラー画面６００は非表示となり、faultcommon表示プログラムは一時的な表示のためのものであり近々に再度表示される可能性はほぼ無いので、メモリ上から削除される。これに伴い、それまで背面表示状態であったアドレス帳画面が前面表示となる。この結果、表示態様管理モジュール１２４内の管理情報は図１２Ｏに示す状態となる。
【００８４】
次に、ホームボタンが押下されると、ホーム画面３００が前面表示となり、アドレス帳画面は非表示となる。表示態様管理モジュール１２４内の管理情報は図１２Ｐに示す状態となる。
【００８５】
次に、ホーム画面３００内のコピーボタンが押下されると、copy表示プログラムが起動され、この表示プログラムが生成したコピー画面４００が前面に表示される。コピーボタン押下の直前の時点では、copy表示プログラムはメモリ上にロードされていないので、コピーボタンが押下されると、プログラム管理部１２０は新たなＰＩＤ（プログラムＩＤ。この場合は「９」）を採番し、copy表示プログラムに付与する。表示態様管理モジュール１２４内の管理情報は図１２Ｑに示す状態となる。
【００８６】
次に、外部モジュール２００の動作について説明する。
【００８７】
前述の通り、外部モジュール２００の情報通知管理部２０４には、ウェブブラウザ１００の通知仲介部１３０から登録された通知対象の情報項目のリストが保持されている。情報保持部２０２に保持された情報項目の値に変化があった場合、外部モジュール２００は、その情報項目が通知対象であるかどうかをそのリストに基づいて判定する。この判定の結果、その変化した情報項目が通知対象であれば、WebSocketサーバ２０６又はＳＯＡＰサーバ２０８のうちその情報項目に対応するサーバが、その情報項目の変化をウェブブラウザ１００に通知する。この通知には、その情報項目の情報ＩＤと、変化後の値とが含まれる。なお、値が変化した情報項目が通知対象でない（すなわちそのリストに含まれない）場合は、その情報項目の変化はウェブブラウザ１００には通知されない。
【００８８】
次に、通知仲介部１３０の機能について説明する。上述の通り、通知仲介部１３０には、各プログラム１１０の起動時に登録された情報を保持する通知登録テーブル（図１０参照）がある。通知仲介部１３０は、外部モジュール２００から通知対象の情報項目についての通知を受け取った場合、通知登録テーブルを参照して、その通知を処理する。この処理の手順を図１３に示す。
【００８９】
この手順では、通知仲介部１３０は、外部モジュール２００から受け取った通知に含まれる情報ＩＤを取得し（Ｓ１０）、取得した情報ＩＤを含むエントリを通知登録テーブルから抽出する（Ｓ１２）。例えば、通知登録テーブルの登録内容が図１０に示すものであり、外部モジュール２００から受け取った通知に含まれる情報ＩＤが「DeviceFault」である場合、（プログラム名，表示プログラム名，通知方法，キャッシュ要否）がそれぞれ（Device，baseframe，常時，要）、（Device，device，表示時，要）、（Device，notification，前面表示時，要）、（Fault，baseframe，常時，不要）、（Fault，faultcommon，前面表示時，不要）である４つのエントリが抽出される。
【００９０】
Ｓ１２で情報ＩＤに対応するエントリが１つも抽出されない場合は、処理を終了する（図１３では省略）。Ｓ１２で１以上のエントリが抽出された場合には、それらエントリごとに、Ｓ１６〜Ｓ２０の処理が行われる。
【００９１】
すなわち、通知仲介部１３０は、処理対象のエントリ内の通知方法が「常時」か否かを判定し（Ｓ１４）、「常時」でない場合、そのエントリ内の「表示プログラム名」に対応する表示プログラムの現在の表示態様を表示態様管理モジュール１２４から取得する（Ｓ１６）。次に通知仲介部１３０は、取得した現在の表示態様が、当該エントリ内の通知方法に該当するか否かを判定する（Ｓ１８）。例えば、エントリ内の通知方法が「前面表示時」である場合には、Ｓ１６で取得した表示態様が「前面表示」である場合に限り、Ｓ１８の判定結果がＹｅｓとなる。また、エントリ内の通知方法が「表示時」である場合には、Ｓ１６で取得した表示態様が「非表示」以外の場合（すなわち「前面表示」又は「背面表示」の場合）に、Ｓ１８の判定結果がＹｅｓとなる。
取得した表示態様が当該エントリの通知方法に該当すれば、通知仲介部１３０は、その表示プログラム１１４に対して、当該通知の情報内容（情報ＩＤと、情報項目の値（変化後のもの）とを含む）を通知する（Ｓ２０）。この通知を受けた表示プログラム１１４は、その表示プログラム１１４が生成している画面に、その通知の内容を反映させる。これにより、現在表示されているその表示プログラム１１４の画面の画像が、外部モジュール２００からの通知の内容を反映したものに変化する。例えば、ある用紙トレイ内の用紙サイズが変更され、その用紙トレイの識別情報と変更後の用紙サイズを含んだ通知が外部モジュール２００から送信され、かつ現在copy表示プログラムによるコピー画面４００が前面表示されている場合、その変更後の用紙サイズの情報がコピー画面４００上の当該用紙トレイの用紙サイズの表示に反映される。
【００９２】
一方、Ｓ１６で取得した表示態様が当該エントリの通知方法に該当しない場合、通知仲介部１３０は、Ｓ２０の処理をスキップする。
【００９３】
また、Ｓ１４で通知方法が「常時」と判定した場合、通知仲介部１３０は、その表示プログラム１１４に対して、当該通知の情報内容を通知する（Ｓ２０）。
【００９４】
また、図１３では省略したが、通知仲介部１３０は、外部モジュール２００から受信した通知内の情報ＩＤを含むエントリであって、「キャッシュ要否」の項目の値が「要」であるエントリが通知登録テーブル内に１以上あれば、その通知の情報（情報ＩＤと、当該情報項目の値（変化後の値）を含む）をキャッシュする。すなわち、通知仲介部１３０は、情報ＩＤ毎に、その情報ＩＤに対応付けてその情報ＩＤが示す情報項目の最新の値を保持するキャッシュを有しており、受信した通知がキャッシュ「要」であれば、キャッシュ内のその通知の情報ＩＤに対応する最新の値を、その通知が示す値へと更新する。なお、キャッシュされた情報項目の値は、その情報項目を表示に用いる表示プログラム１１４が「前面表示」に遷移する際（すなわちＵＩの表示装置に表示される際）に、その表示プログラム１１４により参照され、その表示プログラム１１４が生成する画面に反映される。
【００９５】
図１３の手順では、外部モジュール２００からのある情報ＩＤについての通知を受け取る旨を示すエントリが通知登録テーブル（図１０参照）に登録されていることを前提としている。そして、通知仲介部１３０は、そのエントリ内の表示プログラム１１４に対して通知を渡すか否かを、その表示プログラム１１４の表示態様が、そのエントリの通知方法に該当するか否かで判定した。表示プログラム１１４が非表示である場合、その表示プログラム１１４の生成する画面は現在表示されておらず、またその画面が近い将来表示されるかどうかも未定である。したがって、仮にこの段階で通知をその表示プログラム１１４に渡すことができたとしても、渡した通知が無駄になる可能性が高い。したがって、非表示の表示プログラム１１４には通知は渡されない。また、「背面表示」のように「前面表示」と「非表示」の中間的な意味合いを持つ表示態様の場合、当該表示態様の表示プログラム１１４にその通知を渡すべきかどうか（渡した通知が無駄になる可能性が低いかどうか）は、表示プログラム１１４毎に異なる。したがって、「前面表示」と「非表示」の中間的な意味合いの表示態様である場合にある情報ＩＤについての通知を渡すべきであると判断される表示プログラム１１４については、通知登録テーブル内のその情報ＩＤとその表示プログラムとのペアを含んだエントリの通知方法は、「表示時」（すなわち背面表示等の場合も通知される）とされる。逆に、「前面表示」と「非表示」の中間的な意味合いの表示態様である場合にある情報ＩＤについての通知を渡すべきでないと判断される表示プログラム１１４については、通知登録テーブル内のその情報ＩＤとその表示プログラムとのペアを含んだエントリの通知方法は、「前面表示時」とされる。
【００９６】
図１３の手順では、外部モジュール２００からの通知を表示プログラム１１４に渡すかどうかを、通知登録テーブル内の対応するエントリ内の通知方法を参照して決めたが、これは一例に過ぎない。より簡素な方法として、Ｓ１６で取得した表示プログラム１１４の表示態様が前面表示か否かをＳ１８で判定し、前面表示の場合は、Ｓ２０で当該表示プログラム１１４に通知を渡し、前面表示でない場合にはＳ２０をスキップするという手順を用いてもよい。現在「前面表示」でない表示プログラム１１４にその通知を渡しても、渡した通知が無駄になる可能性が高いので、このような簡素な手順でもある程度の効果を見込める。
【００９７】
図１３の手順は、外部モジュール２００からの通知を渡す表示プログラム１１４の絞込を、それら各表示プログラム１１４の現在の表示態様（図１２Ａ〜図１２Ｑ参照）に基づいて行った。別の例として、ライフサイクル管理モジュール１２２が管理する各表示プログラム１１４のライフサイクル状態に応じて、通知先の絞込を行ってもよい。
【００９８】
ライフサイクル管理モジュール１２２には、各表示プログラム１１４がロード済み状態及び非ロード済み状態のいずれであるかを示す情報が少なくとも保持されている。すなわち、プログラム管理部１２０は、未ロード状態の表示プログラム１１４を起動する指示を受けた場合、その表示プログラム１１４をメモリにロードして実行するが、このときその表示プログラム１１４のロードが完了した時点で、ライフサイクル管理モジュール１２２内のその表示プログラム１１４のライフサイクル状態を「非ロード済み状態」から「ロード済み状態」へと変更する。また、プログラム管理部１２０は、「ロード済み状態」の表示プログラム１１４をメモリから削除する処理を開始すると、ライフサイクル管理モジュール１２２内のその表示プログラム１１４のライフサイクル状態を「非ロード済み状態」へと変更する。なお、プログラム管理部１２０が表示プログラム１１４をメモリから削除するケースには、その表示プログラム１１４に対応する常駐プログラム１１２から表示プログラム１１４の削除指示が到来した場合と、上述した同時ロード数の上限制御によりプログラム管理部１２０自体がいずれかの表示プログラム１１４を選択して削除する場合とがある。前者の場合の例としては、例えばエラー表示用のFaultプログラムの常駐プログラム１１２が、エラー画面６００を表示した後所定時間が経過して、そのエラー画面６００を生成していた表示プログラム１１４を削除する場合がある。
【００９９】
図１４に、ライフサイクル状態に基づき絞込を行う場合の通知仲介部１３０の処理手順の一例を示す。
【０１００】
この手順では、図１３の手順のＳ１０及びＳ１２と同様、通知仲介部１３０は、外部モジュール２００から受け取った通知に含まれる情報ＩＤを取得し（Ｓ３０）、取得した情報ＩＤを含むエントリを通知登録テーブルから抽出する（Ｓ３２）。Ｓ３２で情報ＩＤに対応するエントリが１つも抽出されない場合は、処理を終了する。Ｓ３２で１以上のエントリが抽出された場合には、それらエントリごとに、Ｓ３４〜Ｓ３８の処理が行われる。
【０１０１】
すなわち、通知仲介部１３０は、処理対象のエントリ内の「表示プログラム名」に対応する表示プログラムの現在のライフサイクル状態をライフサイクル管理モジュール１２２から取得する（Ｓ３４）。次に通知仲介部１３０は、取得した現在のライフサイクル状態が「ロード済み状態」であるかどうかを判定する（Ｓ３６）。判定結果が「ロード済み状態」であれば、通知仲介部１３０は、その表示プログラム１１４に対して、当該通知の情報内容を通知する（Ｓ３８）。この通知を受けた表示プログラム１１４は、その表示プログラム１１４が生成している画面の画像又は当該表示プログラム１１４が管理している内部状態に、その通知の内容を反映させる。一方、Ｓ３４で取得したライフサイクル状態が「ロード済み状態」でない場合、通知仲介部１３０は、Ｓ３８の処理をスキップする。
【０１０２】
このように図１４に示した処理手順では、外部モジュール２００からの通知を受け取るものとして登録された表示プログラム１１４がロード済み状態である場合にのみ、通知仲介部１３０はその通知をその表示プログラム１１４に渡す。非ロード済み状態の表示プログラム１１４は次にいつロードされ、表示画面を生成するのか分からないので、仮に外部モジュール２００からの通知をその表示プログラム１１４に渡すことができたとしても、その通知は使われずに無駄になる可能性が高い。むしろ、通知仲介部１３０のキャッシュ内に各情報項目の最新の値を保持しておくことで、非ロード済み状態の表示プログラム１１４がその後起動したときに必要な情報項目の最新の値が得られるようにしておけば十分である。
【０１０３】
図１４の手順では、表示プログラム１１４のライフサイクル状態がロード済み状態か非ロード済み状態かに応じて通知を制御した。別の例として、より詳細なライフサイクル状態を用いて通知を制御してもよい。例えば、非ロード済み状態を、ロード中状態、削除中状態、未ロード状態に細分する例を考える。この場合、通知仲介部１３０は、ある表示プログラムについてＳ３４で取得したライフサイクル状態がロード中状態であれば、その表示プログラム１１４のロードが完了するのを待ち、完了したら、その表示プログラム１１４に通知を渡す。一方、その表示プログラム１１４についてＳ３４で取得したライフサイクル状態が削除中状態又は未ロード状態であれば、通知をその表示プログラム１１４には渡さない。ロード済み状態の場合は、図１４の手順と同様、Ｓ３８で表示プログラム１１４に通知を渡す。
【０１０４】
次に、図１５を参照して、表示プログラム１１４の表示態様とライフサイクル状態の両方を考慮する場合の通知仲介部１３０の処理手順を説明する。
【０１０５】
図１５の手順は、Ｓ３０〜Ｓ３６までは図１４の手順と同じである。図１４の手順では、Ｓ３６で表示プログラム１１４のライフサイクル状態がロード済み状態と判定された場合、通知仲介部１３０は必ずその表示プログラム１１４に対して通知を渡した。これに対して、図１５の手順では、Ｓ３６で表示プログラム１１４がロード済み状態と判定した場合、通知仲介部１３０は、図１３のＳ１４〜Ｓ２０の処理を行うことで、その表示プログラム１１４に対して通知を行うか否かを、その表示プログラム１１４の表示態様に基づいて制御する。
【０１０６】
以上に説明した本発明の実施形態はあくまで一例に過ぎず、本発明の範囲内で様々な変形が可能である。例えば、上記実施形態ではウェブ（ＷＷＷ :World Wide Web）技術によりＵＩを構築したが、ウェブ技術以外の方法でＵＩを構築した場合でも、上記実施形態の手法は適用可能である。また、上記実施形態は、画像形成装置のＵＩに適用した場合の例であったが、画像形成装置以外の装置の情報処理機構が実行する各プログラムに外部モジュールからの通知を渡す場合にも上記実施形態の手法は適用可能である。
【０１０７】
以上に例示したウェブブラウザ１００及び外部モジュール２００は、コンピュータに上述の各機能を表すプログラムを実行させることにより実現される。ここで、コンピュータは、例えば、ハードウエアとして、ＣＰＵ等のマイクロプロセッサ、ランダムアクセスメモリ（ＲＡＭ）およびリードオンリメモリ（ＲＯＭ）等のメモリ（一次記憶）、フラッシュメモリやＳＳＤ（ソリッドステートドライブ）、ＨＤＤ（ハードディスクドライブ）や等の固定記憶装置を制御するコントローラ、各種Ｉ／Ｏ（入出力）インタフェース、ローカルエリアネットワークなどのネットワークとの接続のための制御を行うネットワークインタフェース等が、たとえばバス等を介して接続された回路構成を有する。それら各機能の処理内容が記述されたプログラムがネットワーク等の経由でフラッシュメモリ等の固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがＲＡＭに読み出されＣＰＵ等のマイクロプロセッサにより実行されることにより、上に例示した機能モジュール群が実現される。
【符号の説明】
【０１０８】
１００  ウェブブラウザ、１１０  プログラム、１１２  常駐プログラム、１１４  表示プログラム、１２０  プログラム管理部、１２２  ライフサイクル管理モジュール、１２４  表示態様管理モジュール、１３０  通知仲介部、１３２  イベント管理部、２００  外部モジュール、２０２  情報保持部、２０４  情報通知管理部、２０６  WebSocketサーバ、２０８  ＳＯＡＰサーバ。
【図１】
2019074920.tif 000003
【図２】
2019074920.tif 000004
【図３】
2019074920.tif 000005
【図４】
2019074920.tif 000006
【図５】
2019074920.tif 000007
【図６】
2019074920.tif 000008
【図７】
2019074920.tif 000009
【図８】
2019074920.tif 000010
【図９】
2019074920.tif 000011
【図１０】
2019074920.tif 000012
【図１１】
2019074920.tif 000013
【図１２Ａ】
2019074920.tif 000014
【図１２Ｂ】
2019074920.tif 000015
【図１２Ｃ】
2019074920.tif 000016
【図１２Ｄ】
2019074920.tif 000017
【図１２Ｅ】
2019074920.tif 000018
【図１２Ｆ】
2019074920.tif 000019
【図１２Ｇ】
2019074920.tif 000020
【図１２Ｈ】
2019074920.tif 000021
【図１２Ｉ】
2019074920.tif 000022
【図１２Ｊ】
2019074920.tif 000023
【図１２Ｋ】
2019074920.tif 000024
【図１２Ｌ】
2019074920.tif 000025
【図１２Ｍ】
2019074920.tif 000026
【図１２Ｎ】
2019074920.tif 000027
【図１２Ｏ】
2019074920.tif 000028
【図１２Ｐ】
2019074920.tif 000029
【図１２Ｑ】
2019074920.tif 000030
【図１３】
2019074920.tif 000031
【図１４】
2019074920.tif 000032
【図１５】
2019074920.tif 000033