(57)【要約】【課題】操作場所の相違に関するアプリケーションの実装への影響を軽減すること。【解決手段】操作パネルに表示させる画面を生成し、該画面を操作パネルに表示させる第一の画面生成手段と、ネットワークを介して接続される情報処理装置に表示させる画面データを生成し、該画面データを情報処理装置に送信させる第二の画面生成手段と、前記操作パネル又は前記情報処理装置より入力されるアプリケーションの実行要求に応じて、該実行要求の入力元に応じて前記第一の画面生成手段又は前記第二の画面生成手段を前記アプリケーションの利用対象として選択するアプリケーション管理手段とを有し、前記画面生成手段は、共通のインタフェースによって画面の生成要求を受け付け、前記アプリケーションは、前記共通のインタフェースを利用して、前記アプリケーション管理手段によって選択された前記画面生成手段に対して画面の生成要求を入力する。【選択図】図３
2011008488.tif 000002
【特許請求の範囲】
【請求項１】
操作パネルに表示させる画面を生成し、該画面を前記操作パネルに表示させる第一の画面生成手段と、
ネットワークを介して接続される情報処理装置に表示させる画面データを生成し、該画面データを前記情報処理装置に送信させる第二の画面生成手段と、
前記操作パネル又は前記情報処理装置より入力されるアプリケーションの実行要求に応じ、該実行要求の入力元に基づいて前記第一の画面生成手段又は前記第二の画面生成手段を前記アプリケーションの利用対象として選択するアプリケーション管理手段とを有し、
前記第一の画面生成手段及び前記第二の画面生成手段は、共通のインタフェースによって画面の生成要求を受け付け、
前記アプリケーションは、前記共通のインタフェースを利用して、前記アプリケーション管理手段によって選択された前記第一の画面生成手段又は前記第二の画面生成手段に対して画面の生成要求を入力する画像形成装置。
【請求項２】
前記アプリケーション管理手段は、前記アプリケーションの実行要求の入力元と該アプリケーションとの対応情報を記憶手段に記録し、前記操作パネル又は前記情報処理装置より入力される前記画面に対する入力イベントに応じ、前記入力イベントの入力元に対応するアプリケーションを前記対応情報に基づいて判定し、判定されたアプリケーションに前記入力イベントを通知する請求項１記載の画像形成装置。
【請求項３】
前記アプリケーション管理手段は、複数の前記情報処理装置のそれぞれを識別可能なように前記対応情報を前記記憶手段に記録する請求項２記載の画像形成装置。
【請求項４】
前記アプリケーション管理手段は、前記アプリケーションの実行要求の入力元と該アプリケーションの実行単位との対応情報を前記記憶手段に記録する請求項２又は３記載の画像形成装置。
【請求項５】
画像形成装置が実行する情報処理方法であって、
操作パネルに表示させる画面を生成し、該画面を前記操作パネルに表示させる第一の画面生成手順と、
ネットワークを介して接続される情報処理装置に表示させる画面データを生成し、該画面データを前記情報処理装置に送信させる第二の画面生成手順と、
前記操作パネル又は前記情報処理装置より入力されるアプリケーションの実行要求に応じ、該実行要求の入力元に応じて前記第一の画面生成手順又は前記第二の画面生成手順を前記アプリケーションの利用対象として選択するアプリケーション管理手順とを有し、
前記第一の画面生成手順及び前記第二の画面生成手順は、共通のインタフェースによって画面の生成要求を受け付け、
前記アプリケーションは、前記共通のインタフェースを利用して、前記アプリケーション管理手順において選択された前記第一の画面生成手順又は前記第二の画面生成手順に対して画面の生成要求を入力する情報処理方法。
【請求項６】
前記アプリケーションの実行要求の入力元と該アプリケーションとの対応情報を記憶手段に記録する対応情報記録手順と、
前記操作パネル又は前記情報処理装置より入力される前記画面に対する入力イベントに応じ、前記入力イベントの入力元に対応するアプリケーションを前記対応情報に基づいて判定し、判定されたアプリケーションに前記入力イベントを通知するイベント通知手順とを有する請求項５記載の情報処理方法。
【請求項７】
前記対応情報記録手順は、複数の前記情報処理装置のそれぞれを識別可能なように前記対応情報を前記記憶手段に記録する請求項６記載の情報処理方法。
【請求項８】
前記対応情報記録手順は、前記アプリケーションの実行要求の入力元と該アプリケーションの実行単位との対応情報を前記記憶手段に記録する請求項６又は７記載の情報処理方法。
【請求項９】
画像形成装置を、
操作パネルに表示させる画面を生成し、該画面を前記操作パネルに表示させる第一の画面生成手段と、
ネットワークを介して接続される情報処理装置に表示させる画面データを生成し、該画面データを前記情報処理装置に送信させる第二の画面生成手段と、
前記操作パネル又は前記情報処理装置より入力されるアプリケーションの実行要求に応じ、該実行要求の入力元に応じて前記第一の画面生成手段又は前記第二の画面生成手段を前記アプリケーションの利用対象として選択するアプリケーション管理手段として機能させ、
前記第一の画面生成手段及び前記第二の画面生成手段は、共通のインタフェースによって画面の生成要求を受け付け、
前記アプリケーションは、前記共通のインタフェースを利用して、前記アプリケーション管理手段によって選択された前記第一の画面生成手段又は前記第二の画面生成手段に対して画面の生成要求を入力するプログラム。
【請求項１０】
前記アプリケーション管理手段は、前記アプリケーションの実行要求の入力元と該アプリケーションとの対応情報を記憶手段に記録し、前記操作パネル又は前記情報処理装置より入力される前記画面に対する入力イベントに応じ、前記入力イベントの入力元に対応するアプリケーションを前記対応情報に基づいて判定し、判定されたアプリケーションに前記入力イベントを通知する請求項９記載のプログラム。
【請求項１１】
前記アプリケーション管理手段は、複数の前記情報処理装置のそれぞれを識別可能なように前記対応情報を前記記憶手段に記録する請求項１０記載のプログラム。
【請求項１２】
前記アプリケーション管理手段は、前記アプリケーションの実行要求の入力元と該アプリケーションの実行単位との対応情報を前記記憶手段に記録する請求項１０又は１１記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置、情報処理方法、及びプログラムに関し、特にアプリケーションを実行可能な画像形成装置、情報処理方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、プリンタ、コピー機、ファクシミリ、スキャナ、及び複合機等の画像形成装置に対するユーザによる操作指示の入力は、各機器が備える操作パネルを介して行われていた。しかし、近年のネットワーク技術の進歩により、画像形成装置に関してもネットワークを介した遠隔的なユーザインタフェースが可能とされている（例えば、特許文献１）。
【０００３】
他方において、主に複合機と呼ばれる画像形成装置において、アプリケーションを動作させるためのプラットフォームを有し、当該プラットフォームが提供するＡＰＩ（Application Program Interface）が公開されているものがある（例えば、特許文献２）。このような画像形成装置対しては、上記ＡＰＩを利用して、画像形成装置のメーカー以外の外部のソフトウェアベンダ等によっても新たなアプリケーションの開発及びインストールが可能となる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記のようなプラットフォームを有する画像形成装置においては、多種多様なアプリケーションが開発され、市場に提供されることが望ましい。多種多様なアプリケーションを利用可能であることが画像形成装置の価値をより高めるからである。そのためには、プラットフォーム上におけるアプリケーションの開発が容易であることが求められる。すなわち、各ソフトウェアベンダにおけるアプリケーションの開発負担が少ないことが求められる。
【０００５】
近年のように、画像形成装置上のアプリケーションが操作パネルから（ローカルから）のみではなく、ネットワークを介して（リモートから）も利用されることが要求される状況において、プラットフォーム上で動作する各アプリケーションに、操作場所（ローカル又はリモート）の相違を意識させるは好ましくない。操作場所の相違は、単に、入力情報の入力元及び出力情報（処理結果）の出力先が異なるだけでなく、ユーザによる利用形態に大きな変化をもたらし、当該変化に対応するための実装が必要とされるからである。
【０００６】
すなわち、操作パネルを介して利用される場合、アプリケーションは、同時に利用するユーザは、常に一人であることを前提として実装されればよい。一方、ネットワークを介して利用される場合、仕様上の制限としてユーザ数を制限しない限り、不特定多数のユーザより同時に利用される可能性がある。具体的には、ユーザＡが操作パネルを介してアプリケーションａを利用している最中に、ユーザＢがネットワークを介してアプリケーションａを利用する可能性がある。更に、ユーザＣも同時にネットワークを介してアプリケーションａを利用する可能性がある。複数のユーザによって同時に利用される場合、各アプリケーションは各ユーザに対してそれぞれ矛盾のない処理を実行することが要求される。
【０００７】
なお、特許文献１に記載された技術は、画像形成装置の操作方法を遠隔的にサポートするためのものであり、上記のような複数ユーザによる同時利用は考慮されていないものと考える。すなわち、特許文献１において、操作パネルにおいて操作するユーザと、遠隔的に誘導を行うオペレータは、一つのアプリケーション（アプリケーションの起動単位）を共に操作するものである。したがって、二人のユーザが操作パネルを利用して相談しながら一つのアプリケーションを共に実行している形態と実質的に同じであると考える。
【０００８】
本発明は、上記の点に鑑みてなされたものであって、操作場所の相違に関するアプリケーションの実装への影響を軽減することのできる画像形成装置、情報処理方法、及びプログラムの提供を目的とする。
【課題を解決するための手段】
【０００９】
そこで上記課題を解決するため、本発明は、操作パネルに表示させる画面を生成し、該画面を前記操作パネルに表示させる第一の画面生成手段と、ネットワークを介して接続される情報処理装置に表示させる画面データを生成し、該画面データを前記情報処理装置に送信させる第二の画面生成手段と、前記操作パネル又は前記情報処理装置より入力されるアプリケーションの実行要求に応じて、該実行要求の入力元に応じて前記第一の画面生成手段又は前記第二の画面生成手段を前記アプリケーションの利用対象として選択するアプリケーション管理手段とを有し、前記第一の画面生成手段及び前記第二の画面生成手段は、共通のインタフェースによって画面の生成要求を受け付け、前記アプリケーションは、前記共通のインタフェースを利用して、前記アプリケーション管理手段によって選択された前記第一の画面生成手段又は前記第二の画面生成手段に対して画面の生成要求を入力する。
【００１０】
このような画像形成装置では、操作場所の相違に関するアプリケーションの実装への影響を軽減することができる。
【発明の効果】
【００１１】
本発明によれば、操作場所の相違に関するアプリケーションの実装への影響を軽減することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態におけるシステム構成例を示す図である。
【図２】本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。
【図３】本発明の実施の形態における画像形成装置及び情報処理装置のソフトウェア構成例を示す図である。
【図４】情報処理装置及び操作パネルからの蓄積文書印刷アプリの起動時の処理手順を説明するためのシーケンス図である。
【図５】アプリ対応テーブルの構成例を示す図である。
【図６】同時期に情報処理装置及び操作パネルから蓄積文書印刷アプリが起動された場合の各モジュールのロード状況を示す図である。
【図７】情報処理装置及び操作パネルからの操作による蓄積文書印刷アプリの印刷ジョブの実行時の処理手順を説明するためのシーケンス図である。
【図８】印刷ジョブ対応テーブルの構成例を示す図である。
【図９】同時期に複数の情報処理装置から蓄積文書印刷アプリが起動された場合の各モジュールのロード状況を示す図である。
【図１０】複数の情報処理装置からの操作による蓄積文書印刷アプリの印刷ジョブの実行時の処理手順を説明するためのシーケンス図である。
【発明を実施するための形態】
【００１３】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態におけるシステム構成例を示す図である。同図において、画像形成装置１０と情報処理装置２０ａ及び２０ｂ等とは、ＬＡＮ（Local Area Network）等のネットワーク（有線又は無線の別は問わない。）を介して通信可能に接続されている。
【００１４】
画像形成装置１０は、プリンタ、スキャナ、コピー機、ファクシミリ、又は複合機等である。本実施の形態では複合機であるとする。情報処理装置２０ａ又は２０ｂ（以下、双方を区別しない場合「情報処理装置２０」という。）は、一般的なＰＣ（Personal Computer）等のコンピュータであってもよいし、ＰＤＡ（Personal Digital Assistance）又は携帯電話等の携帯型の端末であってもよい。本実施の形態において、情報処理装置２０は、画像形成装置１０の操作パネル上と同様のユーザインタフェースを提供することが可能である。具体的には、情報処理装置２０は、画像形成装置１０の操作パネルに表示される画面と同様の画面を表示させ、当該画面を介して画像形成装置１０に対する操作指示を受け付けることが可能である。
【００１５】
なお、複数の画像形成装置１０がネットワークに接続されていてもよい。また、更に多数の情報処理装置２０がネットワークに接続されていてもよい。
【００１６】
図２は、本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。同図において、画像形成装置１０は、コントローラ１１、スキャナ１２、プリンタ１３、モデム１４、操作パネル１５、ネットワークインタフェース１６、及びＳＤカードスロット１７等のハードウェアを有する。
【００１７】
コントローラ１１は、ＣＰＵ１１１、ＲＡＭ１１２、ＲＯＭ１１３、及びＨＤＤ１１４等を有する。ＲＯＭ１１３には、各種のプログラムやプログラムによって利用されるデータ等が記録されている。ＲＡＭ１１２は、プログラムをロードするための記憶領域や、ロードされたプログラムのワーク領域等として用いられる。ＣＰＵ１１１は、ＲＡＭ１１２にロードされたプログラムを処理することにより、各種の機能を実現する。ＨＤＤ１１４には、プログラムやプログラムが利用する各種のデータ等が記録される。
【００１８】
スキャナ１２は、原稿より画像データを読み取るためのハードウェアである。プリンタは１３、印刷画像を印刷用紙に印刷するためのハードウェアである。モデム１４は、電話回線に接続するためのハードウェアであり、ＦＡＸ通信による画像データの送受信を実行するために用いられる。操作パネル１５は、ユーザからの入力の受け付けを行うめのボタン等の入力手段や、液晶パネル等の表示手段を備えたハードウェアである。ネットワークインタフェース１６は、ＬＡＮ等のネットワーク（有線又は無線の別は問わない。）に接続するためのハードウェアである。ＳＤカードスロット１７は、ＳＤカード８０に記録されたプログラムを読み取るために利用される。すなわち、画像形成装置１０では、ＲＯＭ１１３に記録されたプログラムだけでなく、ＳＤカード８０に記録されたプログラムもＲＡＭ１１２にロードされ、実行されうる。
【００１９】
図３は、本発明の実施の形態における画像形成装置及び情報処理装置のソフトウェア構成例を示す図である。同図において、画像形成装置１０は、標準アプリ１２１０、ＳＤＫアプリ１２２０、ＳＤＫプラットフォーム１２３０、及びサービス層１２４０等のソフトウェアを有する。
【００２０】
標準アプリ１２１０は、画像形成装置１０に標準的に（出荷時に予め）実装されているアプリケーションの集合である。同図では、スキャンアプリ１２１１、プリンタアプリ１２１２、コピーアプリ１２１３、及びＦＡＸアプリ１２１４が例示されている。スキャンアプリ１２１１は、スキャンジョブを実行する。プリンタアプリ１２１２はネットワークを介して印刷データを受信し、受信された印刷データに基づいて印刷ジョブを実行する。すなわち、画像形成装置１０の印刷ポート宛に送信される印刷データは、プリンタアプリ１２１２によって処理される。コピーアプリ１２１３は、コピージョブを実行する。ＦＡＸアプリ１２１４は、ＦＡＸの送信ジョブ又は受信ジョブを実行する。
【００２１】
サービス層１２４０は、各種のハードウェアリソースの制御機能や管理情報等の管理機能等を上位アプリケーション等に対して提供する部分である。同図において、サービス層１２４０は、オペパネ制御部１２４１、印刷ジョブキュー１２４２、及びプリンタ制御部１２４３等を含む。
【００２２】
オペパネ制御部１２４１は、操作パネル１５に対する画面の表示（描画）を行う。オペパネ制御部１２４１は、また、操作パネル１５に対する入力（ボタンの押下等）等を検知し、入力イベントの発行を行う。なお、「オペパネ」は、操作パネル（オペレーションパネル）の略語である。印刷ジョブキュー１２４２は、サービス層１２４０より上位のソフトウェアモジュールより印刷ジョブ（印刷データ）の入力を受付、ＲＡＭ１１２又はＨＤＤ１１４を利用して印刷ジョブを０〜複数個保持（蓄積）する。プリンタ制御部１２４３は、印刷ジョブキュー１２４２に保持されている印刷ジョブに基づいて、プリンタ１３を制御し、印刷用紙への出力（印刷）を実行する。プリンタ制御部１２４３は、また、プリンタ１３による印刷処理の進捗状況や実行結果（正常終了又は異常終了等）を印刷イベントとして印刷イベント管理部１２３５へ通知する。なお、スキャナ１２を制御してスキャンを実行するスキャナ制御部及びモデム１４を制御してＦＡＸ送受信を実行するＦＡＸ制御部等も存在するが、本実施の形態では印刷ジョブを実行する場合を例として説明するため、図示は省略されている。
【００２３】
ＳＤＫアプリ１２２０は、画像形成装置１０の出荷後において、画像形成装置１０の機能拡張を図るためのプラグインとして追加的にインストールされるアプリケーションである。同図では、ＳＤＫアプリ１２２０として、蓄積文書印刷アプリ１２２１が例示されている。
【００２４】
蓄積文書印刷アプリ１２２１は、画像形成装置１０のＨＤＤ１１４に保存（蓄積）されている画像データの印刷ジョブを制御するＳＤＫアプリ１２２０である。当該画像データは、例えば、スキャナ１２によって読み取られたり、ネットワークを介して受信されたりすることによりＨＤＤ１１４に蓄積される。
【００２５】
ＳＤＫプラットフォーム１２３０は、ＳＤＫアプリ１２２０の実行環境を提供する。すなわち、ＳＤＫプラットフォーム１２３０上で動作するアプリケーションがＳＤＫアプリ１２２０である。各ＳＤＫアプリ１２２０は、ＳＤＫプラットフォーム１２３０が提供するＡＰＩ（Application Program Interface）を介して画像形成装置１０の各種の機能を利用する（実行させる）ことができる。例えば、当該ＡＰＩ（以下、「ＳＤＫＡＰＩ」という。）は、スキャン機能を利用させるためのインタフェース、印刷機能を利用させるためのインタフェース、コピー機能を利用させるためのインタフェース等を含む。
【００２６】
同図において、ＳＤＫプラットフォーム１２３０は、印刷処理依頼部１２３１、操作イベント処理部１２３２、ローカル画面生成部１２３３、リモート画面生成部１２３４、印刷イベント管理部１２３５、印刷ジョブ対応テーブル１２３６、アプリ管理部１２３７、アプリ対応テーブル１２３８、及びサーバ通信部１２３９等を含む。各部は、例えば、ソフトウェアコンポーネントとして実装されてもよいし、オブジェクト指向プログラミングにおけるクラスとして実装されてもよい。以下、各部を「モジュール」ともいう。各部の中で、印刷処理依頼部１２３１、操作イベント処理部１２３２、及びローカル画面生成部１２３３若しくはリモート画面生成部１２３４は、印刷ジョブを実行するＳＤＫアプリ１２２０（例えば、蓄積文書印刷アプリ１２２１）の起動単位（例えば、スレッド又はプロセス）又はインスタンス単位（以下、「実行単位」によって総称する。）ごとにロード（インスタンス化）される。したがって、異なる実行単位に対してロードされた印刷処理依頼部１２３１、操作イベント処理部１２３２、及びローカル画面生成部１２３３若しくはリモート画面生成部１２３４は、自らが属するＳＤＫアプリ１２２０の処理状態に応じて異なる内部状態を有する。
【００２７】
印刷処理依頼部１２３１は、印刷処理の実行要求を受け付けるためのＳＤＫＡＰＩをＳＤＫアプリ１２２０に対して提供する。印刷処理依頼部１２３１は、ＳＤＫアプリ１２２０からの印刷処理の実行要求に基づいて、印刷ジョブを印刷イベント管理部１２３５に投入（入力）する。印刷処理依頼部１２３１は、また、印刷イベント管理部１２３５より通知される印刷イベントをＳＤＫアプリ１２２０に伝達する。
【００２８】
操作イベント処理部１２３２は、操作パネル１５又は情報処理装置２０に表示される画面（ＳＤＫアプリ１２２０の操作画面）に関する操作イベントに応じた処理を実行する。
【００２９】
ローカル画面生成部１２３３及びリモート画面生成部１２３４は、画面を生成等するためのＳＤＫＡＰＩをＳＤＫアプリ１２２０に対して提供する。ローカル画面生成部１２３３は、当該ＳＤＫＡＰＩを介して入力される画面の生成要求に応じて操作パネル１５に対応した形式の画面データを生成する。リモート画面生成部１２３４は、当該ＳＤＫＡＰＩを介して入力される画面の生成要求に応じて情報処理装置２０の画面制御部２２に対応した形式の画面データを生成する。なお、ローカル画面生成部１２３３及びリモート画面生成部１２３４が提供するＳＤＫＡＰＩは、共通のものである。したがって、ＳＤＫアプリ１２２０は、ローカル画面生成部１２３３及びリモート画面生成部１２３４を区別なく利用することができる。
【００３０】
印刷イベント管理部１２３５は、印刷処理依頼部１２３１から入力される印刷ジョブを印刷ジョブキュー１２４２に入力する。印刷イベント管理部１２３５は、また、プリンタ制御部１２４３が発行する印刷イベントを受信し、印刷処理依頼部１２３１に通知する。
【００３１】
印刷ジョブ対応テーブル１２３６は、印刷ジョブと印刷ジョブの実行要求元（ＳＤＫアプリ１２２０）との対応情報が記録されるテーブルであり、例えば、ＲＡＭ１１２又はＨＤＤ１１４内に生成される。印刷ジョブ対応テーブル１２３６において、印刷ジョブの実行要求元は、ＳＤＫアプリ１２２０の種類（名前）ごとではなく実行単位ごとに区別される。具体的には、同じ蓄積文書印刷アプリ１２２１であっても、実行単位が異なれば異なるものとして扱われる。すなわち、本実施の形態の画像形成装置１０は、情報処理装置２０からもＳＤＫアプリ１２２０を利用することが可能であり、同一種類のＳＤＫアプリ１２２１が同時期に複数起動される可能性が有るからである。印刷ジョブ対応テーブル１２３６は、印刷イベント管理部１２３５が印刷イベントの通知先を判定するために用いられる。したがって、印刷ジョブの実行要求元の識別情報としては、例えば、印刷イベントの通知用の関数又はメソッドのアドレス値（メモリ情報アドレス）等を利用してもよい。また、所定の通信プロトコルを利用して印刷イベントを通知するのであれば、当該通信プロトコルに応じた識別子（例えば、ポート番号やＵＲＬ（Uniform Resource Locator）等）であってもよい。本実施の形態において、当該関数又はメソッドは、印刷処理依頼部１２３１に実装されている。上記したように、印刷処理依頼部１２３１は、ＳＤＫアプリ１２２０の実行単位にロードされる。したがって、異なる実行単位にロードされた印刷処理部の関数のアドレス値は異なるものとなる。
【００３２】
アプリ管理部１２３７は、ＳＤＫアプリ１２２０の起動制御や、起動されたＳＤＫアプリ１２２０に関する状態の管理等を行う。
【００３３】
アプリ対応テーブル１２３８は、ＳＤＫアプリ１２２０の実行単位ごとに、操作場所（利用者）との対応情報が記録されるテーブルであり、例えば、ＲＡＭ１１２又はＨＤＤ１１４内に生成される。アプリ対応テーブル１２３８は、ＳＤＫアプリ１２２０からの要求に応じてローカル画面生成部１２３３又はリモート画面生成部１２３４によって生成される画面データの出力先の識別に利用される。アプリ対応テーブル１２３８は、また、画面データに基づいて表示される画面に対する操作イベントの通知先の実行単位の識別に利用される。操作場所の識別情報は、各情報処理装置２０と操作パネル１５とを識別可能な情報であればよい。例えば、情報処理装置２０に関してはＩＰアドレス、操作パネル１５に関しては操作パネル１５に対応した識別子（例えば、画像形成装置１０のＩＰアドレス）であればよい。
【００３４】
サーバ通信部１２３９は、ネットワーク通信を制御する。サーバ通信部１２３９は、基本的に情報処理装置２０からのリクエスト（要求）を受信し、当該リクエストに対するレスポンス（応答）を情報処理装置２０に返信する。本実施の形態において、情報処理装置２０からのリクエストは、画面の取得要求又は画面に対する操作イベント等であり、レスポンスは、画面データ等である。すなわち、本実施の形態において、情報処理装置２０は、表示された画面に対する入力に応じて実行すべき業務ロジック（印刷ジョブ等）については関与しない。情報処理装置２０は、画面に対して行われた操作の内容をそのまま画像形成装置１０に通知する。したがって、情報処理装置２０に提供される画面データが、操作パネル１５に表示される画面と同様又は同等の画面を表示させるものであれば、情報処理装置２０における操作感は、操作パネル１５における操作感と同様のものとなる。なお、リクエストとは非同期なイベントを通知するためのメッセージがサーバ通信部１２３９より情報処理装置２０へ送信されてもよい。
【００３５】
一方、情報処理装置２０は、クライアント通信部２１及び画面制御部２２等を有する。クライアント通信部２１は、画像形成装置１０に対してリクエストを送信し、画像形成装置１０からのレスポンスを受信する。画面制御部２２は、画像形成装置１０からのリクエストに含まれている画面データに基づく画面の表示や、表示された画面に対する入力イベントに応じた処理を行う。画面データの一例として、ＨＴＭＬ（HyperText Markup Language）データが挙げられる。ＨＭＬデータを利用する場合、画面制御部２２及びクライアント通信部２１は、Ｗｅｂブラウザによって実現されてもよい。
【００３６】
以下、画像形成装置１０及び情報処理装置２０による処理の処理手順について説明する。まず、一台の情報処理装置２０と画像形成装置１０の操作パネル１５とを介して、異なるユーザによって並行して蓄積文書印刷アプリ１２２１が利用される場合について説明する。
【００３７】
図４は、情報処理装置及び操作パネルからの蓄積文書印刷アプリの起動時の処理手順を説明するためのシーケンス図である。同図の説明において、情報処理装置２０ａを介して利用するユーザを「ユーザＡ」といい、画像形成装置１０の操作パネル１５を介して利用するユーザを「ユーザＢ」という。
【００３８】
情報処理装置２０ａにおいて、ユーザＡによって蓄積文書印刷アプリ１２２１の利用要求（実行要求）が入力されると、情報処理装置２０ａのクライアント通信部２１は、蓄積文書印刷アプリ１２２１の画面データの取得要求を画像形成装置１０に送信する（Ｓ１０１）。当該画面データの取得要求には、例えば、蓄積文書印刷アプリ１２２１の識別子（アプリＩＤ）、及び情報処理装置２０ａの識別情報（例えば、ＩＰアドレス）が含まれている。但し、情報処理装置２０ごとにユーザが異なることが保証される環境においては、情報処理装置２０ａの識別情報の代わりにユーザＡの識別情報（例えば、ユーザ名）が画面データの取得要求に含まれてもよい。また、当該画面データの取得要求は、例えば、ステップＳ１０１より前に表示されている、アプリケーションの選択画面において、蓄積文書印刷アプリ１２２１に対応するボタンがクリックされることにより送信される。なお、各情報処理装置２０には、例えば、画像形成装置１０のＩＰアドレスが予め記憶されている。
【００３９】
画像形成装置１０のサーバ通信部１２３９は、蓄積文書印刷アプリ１２２１の画面データの取得要求を受信すると、当該取得要求をアプリ管理部１２３７に通知する（Ｓ１０２）。アプリ管理部１２３７は、当該取得要求に含まれている情報処理装置２０ａの識別情報に対応する実行単位識別情報をアプリ対応テーブル１２３８より取得する（Ｓ１０３）。
【００４０】
図５は、アプリ対応テーブルの構成例を示す図である。同図において、アプリ対応テーブル１２３８は、操作場所識別情報と実行単位識別情報とを対応付けて管理可能とされている。操作場所識別情報は、実行中のＳＤＫアプリ１２２０の操作場所の識別情報である。実行単位識別情報は、ＳＤＫアプリ１２２０の実行単位ごとの識別情報である。実行単位識別情報は、アプリ管理部１２３７が、各実行単位にアクセス可能な情報であればどのようなものであってもよい。例えば、各実行単位に関するメモリ上のアドレス情報であってもよいし、各実行単位に対してＯＳ（Operating System）によって割り当てるＩＤ（スレッドＩＤ又はプロセスＩＤ等）であってもよい。
【００４１】
ステップＳ１０３において、アプリ管理部１２３７は、画面データの取得要求に含まれている情報処理装置２０ａの識別情報に一致する操作場所識別情報に対応する実行単位識別情報をアプリ対応テーブル１２３８より取得する。
【００４２】
情報処理装置２０ａから蓄積文書印刷アプリ１２２１がまだ実行されていない場合、当該実行単位識別情報は取得されない（Ｓ１０４）。この場合、アプリ管理部１２３７は、ＳＤＫプラットフォーム１２３０に含まれるモジュールの中で、蓄積文書印刷アプリ１２２１の実行単位ごとにロードが必要なモジュールをロードする。本実施の形態において、アプリ管理部１２３７は、情報処理装置２０ａに対応する実行単位に対応させて、リモート画面生成部１２３４ａ、印刷処理依頼部１２３１ａ、及び操作イベント処理部１２３２ａをロードする（Ｓ１０５、Ｓ１０６、Ｓ１０７）。なお、ロードは、例えば、各部に対応するオブジェクトの生成として実装されてもよい。また、各ＳＤＫアプリ１２２０が、ＳＤＫプラットフォーム１２３０におけるどのモジュールを必要としているかについては、例えば、アプリ管理部１２３７のロジックとして組み込まれていてもよいし、アプリ管理部１２３７の外部ファイル内に記述されていてもよい。アプリ管理部１２３７は、当該ロジック又は外部ファイルに基づいて、どのモジュールをロードすべきかを判断する。
【００４３】
ところで、本実施の形態において、画面データを生成するモジュールは、ローカル画面生成部１２３３及びリモート画面生成部１２３４の二種類存在するところ、ステップＳ１０５においてアプリ管理部１２３７は、リモート画面生成部１２３４をロードしている。これは、画面データの取得要求元が、操作パネル１５ではなく、情報処理装置２０であることに基づく。すなわち、ステップＳ１０５において、アプリ管理部１２３７は、画面データの取得要求に含まれている情報処理装置１０ａの識別情報が操作パネル１５に対応する識別情報と一致しないことに基づいて、リモート画面生成部１２３４をロード対象として選択しているのである。又は、アプリ管理部１２３７は、ステップＳ１０２における画面データの取得要求と、後述されるステップＳ１１１における画面の表示要求とを異なるインタフェース（関数又はメソッド）によって受け付けることにより要求元を区別し、ロード対象（ローカル画面生成部１２３３又はリモート画面生成部１２３４）を判断するようにしてもよい。
【００４４】
続いて、アプリ管理部１２３７は、情報処理装置２０ａに対応する実行単位である蓄積文書印刷アプリ１２２１ａを起動する（Ｓ１０８）。蓄積文書印刷アプリ１２２１ａの起動に際し、アプリ管理部１２３７は、ステップＳ１０５〜Ｓ１０７においてロードしたリモート画面生成部１２３４ａ、印刷処理依頼部１２３１ａ、及び操作イベント処理部１２３２ａの識別情報を蓄積文書印刷アプリ１２２１ａに提供（通知）する。すなわち、アプリ管理部１２３７は、リモート画面生成部１２３４ａ、印刷処理依頼部１２３１ａ、及び操作イベント処理部１２３２ａを利用することを蓄積文書印刷アプリ１２２１ａに指示する。各部の当該識別情報は、蓄積文書印刷アプリ１２２１が、各部にアクセス可能（各部を利用可能）な情報であればどのようなものであってもよい。例えば、各部がロードされたメモリ上のアドレス値であってもよい。なお、蓄積文書印刷アプリ１２２１ａと、リモート画面生成部１２３４ａ、印刷処理依頼部１２３１ａ、及び操作イベント処理部１２３２ａとは双方向に関連付けられる。すなわち、蓄積文書印刷アプリ１２２１ａがリモート画面生成部１２３４ａ、印刷処理依頼部１２３１ａ、及び操作イベント処理部１２３２ａを呼び出すことが可能であり、かつ、リモート画面生成部１２３４ａ、印刷処理依頼部１２３１ａ、及び操作イベント処理部１２３２ａが蓄積文書印刷アプリ１２２１ａを呼び出すことも可能である。
【００４５】
蓄積文書印刷アプリ１２２１ａは、起動処理の過程において、ＨＤＤ１１４に蓄積されている画像データの一覧情報を生成し、アプリ管理部１２３７よりその識別情報が通知されたリモート画面生成部１２３４ａに対して当該一覧情報を指定して初期画面の生成要求を入力する（Ｓ１０９）。リモート画面生成部１２３４は、当該一覧情報を含む初期画面を表示させる画面データを生成し、ＲＡＭ１１２に記録する。
【００４６】
蓄積文書印刷アプリ１２２１ａの起動処理が完了すると、アプリ管理部１２３７は、情報処理装置２０ａの識別情報と蓄積文書印刷アプリ１２２１ａの実行単位識別情報との対応情報をアプリ対応テーブル１２３８に登録（記録）する（Ｓ１１０）。続いて、アプリ管理部１２３７は、リモート画面生成部１２３４ａに対し、画面データの取得を要求する（Ｓ１１１）。リモート画面生成部１２３４ａは、ＲＡＭ１１２に記録しておいた画面データをアプリ管理部１２３７に出力する（Ｓ１１２）。アプリ管理部１２３７は、当該画面データの送信をサーバ通信部１２３９に出力する（Ｓ１１３）。サーバ通信部１２３９は、当該画面データを情報処理装置２０ａのクライアント通信部２１へ送信する（Ｓ１１４）。クライアント通信部２１は、受信された画面データを画面制御部２２に入力する（Ｓ１１５）。画面制御部２２は、当該画面データに基づいて蓄積文書印刷アプリ１２２１ａの初期画面を表示させる。
【００４７】
一方、画像形成装置１０の操作パネル１５を介して、ユーザＢによって蓄積文書印刷アプリ１２２１の利用要求（実行要求）が入力されると、オペパネ制御部１２４１は、アプリ管理部１２３７に対して蓄積文書印刷アプリ１２２１の初期画面の表示要求を入力する（Ｓ１２１）。当該表示要求には、例えば、蓄積文書印刷アプリ１２２１の識別子（アプリＩＤ）、及び操作パネル１５の識別情報が含まれている。
【００４８】
続いて、アプリ管理部１２３７は、当該表示要求に含まれている操作パネル１５の識別情報に対応する実行単位識別情報をアプリ対応テーブル１２３８より取得する（Ｓ１２２）。
【００４９】
操作パネル１５を介して蓄積文書印刷アプリ１２２１が実行中でない場合、当該実行単位識別情報は取得されない（Ｓ１２３）。この場合、アプリ管理部１２３７は、ＳＤＫプラットフォーム１２３０に含まれるモジュールの中で、蓄積文書印刷アプリ１２２１の実行単位ごとにロードが必要なモジュールをロードする。すなわち、アプリ管理部１２３７は、操作パネル１５に対応する実行単位に対応させて、ローカル画面生成部１２３３ｐ、印刷処理依頼部１２３１ｐ、及び操作イベント処理部１２３２ｐをロードする（Ｓ１２４、Ｓ１２５、Ｓ１２６）。なお、ステップＳ１２４において、アプリ管理部１２３７は、画面データの表示要求元が操作パネル１５であるため（情報処理装置２０ではないため）、ローカル画面生成部１２３３１０ｂをロード対象として選択する。
【００５０】
続いて、アプリ管理部１２３７は、操作パネル１５に対応する実行単位である蓄積文書印刷アプリ１２２１ｐを起動する（Ｓ１２７）。蓄積文書印刷アプリ１２２１ｐの起動に際し、アプリ管理部１２３７は、ステップＳ１２４〜Ｓ１２６においてロードしたローカル画面生成部１２３３ｐ、印刷処理依頼部１２３１ｐ、及び操作イベント処理部１２３２ｐの識別情報を蓄積文書印刷アプリ１２２１ｐに提供（通知）する。蓄積文書印刷アプリ１２２１ｐと、ローカル画面生成部１２３３ｐ、印刷処理依頼部１２３１ｐ、及び操作イベント処理部１２３２ｐとは双方向に関連付けられる。
【００５１】
蓄積文書印刷アプリ１２２１ｐは、起動処理の過程において、ＨＤＤ１１４に蓄積されている画像データの一覧情報を生成し、アプリ管理部１２３７よりその識別情報が通知されたローカル画面生成部１２３３ｐに対して当該一覧情報を指定して初期画面の生成要求を入力する（Ｓ１２８）。ローカル画面生成部１２３３は、当該一覧情報を含む初期画面を表示させる画面データを生成し、ＲＡＭ１１２に記録する。なお、当該画面データは操作パネル１５に対応したデータ形式によるものである。
【００５２】
蓄積文書印刷アプリ１２２１ｐの起動処理が完了すると、アプリ管理部１２３７は、操作パネル１５の識別情報と蓄積文書印刷アプリ１２２１ｐの実行単位識別情報との対応情報をアプリ対応テーブル１２３８に登録（記録）する（Ｓ１２９）。続いて、アプリ管理部１２３７は、ローカル画面生成部１２３３ｐに対し、画面の表示を要求する（Ｓ１３０）。ローカル画面生成部１２３３ｐは、ＲＡＭ１１２に記録しておいた画面データをオペパネ制御部１２４１に入力する（Ｓ１３１）。オペパネ制御部１２４１は、当該画面データに基づいて蓄積文書印刷アプリ１２２１ｐの初期画面を操作パネル１５に表示させる。（Ｓ１３１）。なお、オペパネ制御部１２４１の提供するインタフェースが、各種画面要素の描画命令（関数又はメソッド）の集合であって、画面データを入力情報とするもので無い場合、ローカル画面生成部１２３３ｐは、ステップＳ１２８の初期画面の生成要求時には画面データを生成せずに、ステップＳ１３０の画面の表示要求に応じて、表示対象とする画面の描画命令をオペパネ制御部１２４１に入力すればよい。
【００５３】
図４において説明したように、本実施の形態では、ＳＤＫアプリ１２２０（蓄積文書印刷アプリ１２２１）の操作場所の相違がＳＤＫプラットフォーム１２３０によって吸収される。すなわち、操作場所の相違は、アプリ管理部１２３７によって判断され、該判断結果に応じてリモート画面生成部１２３４又はローカル画面生成部１２３３がＳＤＫアプリ１２２０に提供される。ここで、リモート画面生成部１２３４及びローカル画面生成部１２３３のインタフェースは統一されている（共通化されている）。したがって、ＳＤＫアプリ１２２０の開発者は、操作パネル１５を介して操作される場合と情報処理装置２０を介して操作される場合とを区別することなくＳＤＫアプリ１２２０を実装することができる。
【００５４】
なお、図４では、便宜上、情報処理装置２０ａを介した操作と、操作パネル１５を介した操作とが直列的に示されている。但し、情報処理装置２０ａを介した操作と、操作パネル１５を介した操作とは並列的に行われてもよい。
【００５５】
図４の処理が実行された結果、画像形成装置１０のＲＡＭ１１５における各モジュールのロード状況は、図６に示されるようになる。
【００５６】
図６は、同時期に情報処理装置及び操作パネルから蓄積文書印刷アプリが起動された場合の各モジュールのロード状況を示す図である。
【００５７】
同図に示されるように、情報処理装置２０ａに対応させて、蓄積文書印刷アプリ１２２１ａ、リモート画面生成部１２３４ａ、操作イベント処理部１２３２ａ、及び印刷処理依頼部１２３１ａがロードされている。これらの集合を「情報処理装置用アプリデータ」という。また、操作パネル１５に対応させて、蓄積文書印刷アプリ１２２１ｐ、ローカル画面生成部１２３３ｐ、操作イベント処理部１２３２ｐ、及び印刷処理依頼部１２３１ｐがロードされている。これらの集合を「オペパネ用アプリデータ」という。
【００５８】
印刷イベント管理部１２３５、印刷ジョブキュー１２４２、印刷ジョブ対応テーブル１２３６、プリンタ制御部１２４３、オペパネ制御部１２４１、アプリ管理部１２３７、アプリ対応テーブル１２３８、及びサーバ通信部１２３９については、情報処理装置用アプリデータ及びオペパネ用アプリデータの双方より共通的に利用される。
【００５９】
図６の状態において、蓄積文書印刷アプリ１２２１の印刷ジョブが実行される際の処理手順を説明する。図７は、情報処理装置及び操作パネルからの操作による蓄積文書印刷アプリの印刷ジョブの実行時の処理手順を説明するためのシーケンス図である。
【００６０】
図４のステップＳ１１５に続いて、ユーザＡが、情報処理装置２０ａの表示装置に表示された初期画面において操作入力（ボタンの押下や、画像データの一覧における要素（行）の選択等）を行うと、画面制御部２２は当該操作入力に応じた操作イベントをクライアント通信部２１に通知する（Ｓ２０１）。なお、操作イベントは、操作の対象となった描画要素（ボタン、画像データの一覧における要素（行）等）の識別子、操作の種類（押下等）及び操作場所識別情報（情報処理装置２０ａの識別情報）等を含むデータである。
【００６１】
続いて、クライアント通信部２１は、操作イベントを画像形成装置１０のサーバ通信部１２３９に送信する（Ｓ２０２）。サーバ通信部１２３９は、受信された操作イベントをアプリ管理部１２３７に通知する（Ｓ２０３）。アプリ管理部１２３７は、操作イベントに含まれている操作場所識別情報に対応する実行単位識別情報をアプリ対応テーブル１２３８より取得する（Ｓ２０４）。続いて、アプリ管理部１２３７は、取得された実行単位識別情報に基づいて、操作イベント処理部１２３２ａに対して操作イベントを通知する（Ｓ２０５）。操作イベント処理部１２３２ａは、自らに関連付いている蓄積文書印刷アプリ１２２１ａに操作イベントを通知する（Ｓ２０６）。
【００６２】
続いて、蓄積文書印刷アプリ１２２１ａは、操作イベントの内容に応じた処理を実行する（Ｓ２０７）。例えば、操作イベントの内容が、画像データの一覧の中の要素の選択を示すものであれば、選択された要素の識別子をメモリ１１２に記録しておく。このようにして、蓄積文書印刷アプリ１２２１ａは、情報処理装置２０における操作状況（ボタン等の選択状況、画面の遷移状況）を把握する。
【００６３】
操作イベントの内容が、スタートボタン（ジョブの開始を指示するボタン）の押下を示すものである場合、蓄積文書印刷アプリ１２２１ａは、メモリ１１２に記録されている、画像データの一覧において選択された要素に対応する画像データの識別子を指定して印刷処理の実行を印刷処理依頼部１２３１ａに要求する（Ｓ２０８）。印刷処理依頼部１２３１ａは、当該画像データに関する印刷ジョブのジョブＩＤを採番し、当該印刷ジョブの実行要求を当該印刷ジョブに関する印刷イベントの通知先の識別情報（以下、「印刷イベント通知先識別情報」という。）と共に印刷イベント管理部１２３５に入力する（Ｓ２０９）。印刷対象の画像データも印刷イベント管理部１２３５に入力される。なお、本実施の形態において印刷イベント通知先識別情報は印刷処理依頼部１２３１のアドレス情報とする。したがって、ステップＳ２０９では、印刷処理依頼部１２３１ａのアドレス情報が印刷イベント通知先識別情報として印刷イベント管理部１２３５に入力される。
【００６４】
続いて、印刷イベント管理部１２３５は、印刷ジョブのジョブＩＤと印刷イベントの通知先識別情報とを対応付けて印刷ジョブ対応テーブル１２３６に登録（記録）する（Ｓ２１０）。
【００６５】
図８は、印刷ジョブ対応テーブルの構成例を示す図である。同図に示されるように、印刷ジョブ対応テーブル１２３６は、ジョブＩＤごとに印刷イベント通知先識別情報を登録可能とされている。
【００６６】
続いて、印刷イベント管理部１２３５は、印刷ジョブキュー１２４２に印刷ジョブを登録する（Ｓ２１１）。印刷ジョブキュー１２４２への印刷ジョブの登録とは、厳密には、印刷ジョブの実行要求の登録を意味する。印刷ジョブの実行要求には、印刷ジョブを実行するために必要な情報（ジョブＩＤ、印刷対象の画像データの識別情報等）が含まれる。
【００６７】
一方、蓄積文書印刷アプリ１２２１ａは、印刷処理の実行要求後、リモート画面生成部１２３４ａに対し、印刷中画面の生成を要求する（Ｓ２１２）。印刷中画面とは、例えば、印刷中であることを示すメッセージを表示させる画面である。リモート画面生成部１２３４ａは、印刷中画面の画面データを生成し、当該画面データの送信をアプリ管理部１２３７に要求する（Ｓ２１３）。アプリ管理部１２３７は、画面データの送信の要求元に係る実行単位識別情報に対応する操作場所識別情報をアプリ対応テーブル１２３８より取得する（Ｓ２１４）。続いて、アプリ管理部１２３７は、取得された操作場所識別情報を指定して当該画面データの送信をサーバ通信部１２３９に要求する（Ｓ２１５）。サーバ通信部１２３９は、指定された操作場所識別情報に対応する情報処理装置２０ａのクライアント通信部２１に当該画面データを送信する（Ｓ２１６）。クライアント通信部２１は、受信された画面データを画面制御部２２に入力する（Ｓ２１７）。画面制御部２２は、当該画面データに基づいて印刷中画面を情報処理装置２０ａの表示装置に表示させる。
【００６８】
他方において、プリンタ制御部１２４３は、印刷ジョブキュー１２４２をポーリングしている（Ｓ２２１）。プリンタ制御部１２４３は、印刷ジョブキュー１２４２に印刷ジョブが登録されていることを検知すると、登録されている印刷ジョブを実行する（Ｓ２２２）。すなわち、プリンタ制御部１２４３は、登録されている印刷ジョブに係る画像データの印刷をプリンタ１３に実行させる。
【００６９】
その後、プリンタ制御部１２４３は、印刷の終了を検知すると、印刷の終了を示す印刷イベントを印刷イベント管理部１２３５に通知する（Ｓ２２３）。なお、印刷イベントには、対応する印刷ジョブのジョブＩＤが含まれている。
【００７０】
印刷イベントを通知された印刷イベント管理部１２３５は、印刷イベントに含まれているジョブＩＤに対応する印刷イベント通知先識別情報を印刷ジョブ対応テーブル１２３６より取得する（Ｓ２２４）。続いて、印刷イベント管理部１２３５は、取得された印刷イベント通知先識別情報に基づいて、印刷処理依頼部１２３１ａに当該印刷イベントを通知する（Ｓ２２５）。印刷処理依頼部１２３１ａは、当該印刷イベントを蓄積文書印刷アプリ１２２１ａに通知する（Ｓ２２６）。続いて、蓄積文書印刷アプリ１２２１ａは、印刷イベントに応じた画面の生成をリモート画面生成部１２３４ａに要求する（Ｓ２２７）。ここでは、印刷の終了を通知するための印刷終了画面の生成が要求される。続いて、リモート画面生成部１２３４ａは、印刷終了画面の画面データを生成し、当該画面データの送信をアプリ管理部１２３７に要求する（Ｓ２２８）。アプリ管理部１２３７は、画面データの送信の要求元に係る実行単位識別情報に対応する操作場所識別情報をアプリ対応テーブル１２３８より取得する（Ｓ２２８）。続いて、アプリ管理部１２３７は、取得された操作場所識別情報を指定して当該画面データの送信をサーバ通信部１２３９に要求する（Ｓ２２９）。サーバ通信部１２３９は、指定された操作場所識別情報に対応する情報処理装置２０ａのクライアント通信部２１に当該画面データを送信する（Ｓ２３０）。クライアント通信部２１は、受信された画面データを画面制御部２２に入力する（Ｓ２３１）。画面制御部２２は、当該画面データに基づいて印刷終了画面を表示させる。なお、印刷ジョブの終了以外の印刷イベント（例えば、用紙切れ等のイベント）が発生した際においてもステップＳ２２３〜Ｓ２３２と同様の処理手順が実行される。
【００７１】
一方、情報処理装置２０ａからの要求に応じた印刷ジョブの実行中に、ユーザＢが、操作パネル１５に表示されている蓄積文書印刷アプリ１２２１ｐの初期画面において操作入力を行うと、オペパネ制御部１２４１は当該操作入力に応じた操作イベントをアプリ通信部に通知する（Ｓ２４１）。当該操作イベントは、情報処理装置２０の画面制御部２２より発行されるものと同様のデータ形式を有する（同様の情報を含む）。アプリ管理部１２３７は、操作イベントに含まれている操作場所識別情報に対応する実行単位識別情報をアプリ対応テーブル１２３８より取得する（Ｓ２４２）。続いて、アプリ管理部１２３７は、取得された実行単位識別情報に基づいて、操作イベント処理部１２３２ｐに対して操作イベントを通知する（Ｓ２４３）。操作イベント処理部１２３２ｐは、自らに関連付いている蓄積文書印刷アプリ１２２１ｐに操作イベントを通知する（Ｓ２４４）。
【００７２】
続いて、蓄積文書印刷アプリ１２２１ｐは、操作イベントの内容に応じた処理を実行する（Ｓ２４５）。例えば、操作イベントの内容が、画像データの一覧の中の要素の選択を示すものであれば、選択された要素の識別子をメモリ１１２に記録しておく。このようにして、蓄積文書印刷アプリ１２２１ｐは、操作パネル１５における操作状況を把握する。
【００７３】
操作イベントの内容が、スタートボタンの押下を示すものである場合、蓄積文書印刷アプリ１２２１ｐは、メモリ１１２に記録されている、画像データの一覧において選択された要素に対応する画像データの識別子を指定して印刷処理の実行を印刷処理依頼部１２３１ｐに要求する（Ｓ２４６）。印刷処理依頼部１２３１ｐは、当該画像データに関する印刷ジョブのジョブＩＤを採番し、当該印刷ジョブの実行要求を当該印刷ジョブに関する印刷イベント通知先識別情報と共に印刷イベント管理部１２３５に入力する（Ｓ２４７）。印刷対象の画像データも印刷イベント管理部１２３５に入力される。なお、ステップＳ２４７では、印刷処理依頼部１２３１ｐのアドレス情報が印刷イベント通知先識別情報として印刷イベント管理部１２３５に入力される。
【００７４】
続いて、印刷イベント管理部１２３５は、印刷ジョブのジョブＩＤと印刷イベントの通知先識別情報とを対応付けて印刷ジョブ対応テーブル１２３６に登録（記録）する（Ｓ２４８）。続いて、印刷イベント管理部１２３５は、印刷ジョブキュー１２４２に印刷ジョブを登録する（Ｓ２４９）。
【００７５】
一方、蓄積文書印刷アプリ１２２１ｐは、印刷処理の実行要求後、ローカル画面生成部１２３３ｐに対し、印刷中画面の生成を要求する（Ｓ２５０）。ローカル画面生成部１２３３ｐは、印刷中画面の画面データを生成し、当該画面データをオペパネ制御部１２４１に入力する（Ｓ２５１）。オペパネ制御部１２４１は、当該画面データに基づいて印刷中画面を操作パネル１５に表示させる。
【００７６】
他方において、プリンタ制御部１２４３は、印刷ジョブキュー１２４２をポーリングしている（Ｓ２６１）。プリンタ制御部１２４３は、印刷ジョブキュー１２４２に印刷ジョブが登録されていることを検知すると、登録されている印刷ジョブを実行する（Ｓ２６２）。その後、プリンタ制御部１２４３は、印刷の終了を検知すると、印刷の終了を示す印刷イベントを印刷イベント管理部１２３５に通知する（Ｓ２６３）。なお、印刷イベントには、対応する印刷ジョブのジョブＩＤが含まれている。
【００７７】
印刷イベントを通知された印刷イベント管理部１２３５は、印刷イベントに含まれているジョブＩＤに対応する印刷イベント通知先識別情報を印刷ジョブ対応テーブル１２３６より取得する（Ｓ２６４）。続いて、印刷イベント管理部１２３５は、取得された印刷イベント通知先識別情報に基づいて、印刷処理依頼部１２３１ｐに当該印刷イベントを通知する（Ｓ２６５）。印刷処理依頼部１２３１ｐは、当該印刷イベントを蓄積文書印刷アプリ１２２１ｐに通知する（Ｓ２６６）。続いて、蓄積文書印刷アプリ１２２１ｐは、印刷イベントに応じた画面の生成をローカル画面生成部１２３３ｐに要求する（Ｓ２６７）。ここでは、印刷の終了を通知するための印刷終了画面の生成が要求される。続いて、ローカル画面生成部１２３３ｐは、印刷終了画面の画面データを生成し、当該画面データをオペパネ制御部１２４１に入力する（Ｓ２６８）。オペパネ制御部１２４１は、当該画面データに基づいて印刷終了画面を操作パネル１５に表示させる。
【００７８】
図７において説明したように、本実施の形態では、操作パネル１５を介した操作と、ネットワークを介した操作とが並列的に行われた場合であっても（すなわち、同時（同時期）に複数のユーザによってＳＤＫアプリ１２２０が利用される場合であっても）、操作イベントの通知先や画面の出力先等が適切に判断される。ここで、操作イベントの通知先や画面の出力先の判断等は、ＳＤＫプラットフォーム１２３０によって行われため、各ＳＤＫアプリ１２２０は操作イベントの通知先や画面の出力先等を意識する必要はない。したがって、ＳＤＫアプリ１２２０の開発者は、操作パネル１５を介して操作される場合と情報処理装置２０を介して操作される場合とを区別することなくＳＤＫアプリ１２２０を実装することができる。なお、同時に利用可能なＳＤＫアプリ１２２０は、同一（同一の名前）のＳＤＫアプリ１２２０であるか異なるＳＤＫアプリ１２２０であるかは問わない。すなわち、図７においては、同一のＳＤＫアプリ１２２０（蓄積文書印刷アプリ１２２１）が同時に利用される例を示した。しかし、操作パネル１５を介して利用されるＳＤＫアプリ１２２０と異なるＳＤＫアプリ１２２０がネットワークを介して利用される場合についても、図７と同様の処理手順に基づいて実現されうる。
【００７９】
ところで、複数ユーザによるＳＤＫアプリ１２２０の同時利用が可能であることは、複数の情報処理装置２０において同時にＳＤＫアプリ１２２０が操作される場合にも当てはまる。例えば、情報処理装置２０ａ及び２０ｂより蓄積文書印刷アプリ１２２１が利用される場合、情報処理装置２０ごとに図４のステップＳ１０１〜Ｓ１１５において説明した処理が実行される。その結果、画像形成装置１０におけるモジュールのロード状況は図９に示されるようになる。
【００８０】
図９は、同時期に複数の情報処理装置から蓄積文書印刷アプリが起動された場合の各モジュールのロード状況を示す図である。
【００８１】
同図に示されるように、情報処理装置２０ａに対応させて、蓄積文書印刷アプリ１２２１ａ、リモート画面生成部１２３４ａ、操作イベント処理部１２３２ａ、及び印刷処理依頼部１２３１ａがロードされる。また、情報処理装置２０ｂに対応させて、蓄積文書印刷アプリ１２２１ｂ、リモート画面生成部１２３４ｂ、操作イベント処理部１２３２ｂ、及び印刷処理依頼部１２３１ｂがロードされる。他の部分については、図６と同様であるためその説明は省略する。また、図９では、オペパネ制御部１２４１は便宜上省略されている。
【００８２】
また、図１０は、複数の情報処理装置からの操作による蓄積文書印刷アプリの印刷ジョブの実行時の処理手順を説明するためのシーケンス図である。すなわち、図１０は、図９の状態において、蓄積文書印刷アプリ１２２１の印刷ジョブが実行される際の処理手順である。
【００８３】
同図において、各ステップの詳細は図７のステップＳ２０１〜Ｓ２３２において説明した通りである。すなわち、ステップＳ３０１〜Ｓ３３２は、情報処理装置２０ａに関する処理手順である。また、ステップＳ３４１〜Ｓ３７２は、情報処理装置２０ｂに関する処理手順である。
【００８４】
図１０に示されるように、本実施の形態の画像形成装置１０によれば、複数の情報処理装置２０よりネットワークを介して利用される場合にも操作イベントの通知先や画面データの出力先等が適切に判断される。
【００８５】
なお、操作パネル１５と複数の情報処理装置２０とより同時に利用される場合については、図７及び図１０の組み合わせにより自明であるため、その説明は省略する。
【００８６】
また、本実施の形態において、実行単位識別情報は、操作イベントの通知先の判断及び画面データの出力先の判断等、複数の用途に利用される。具体的には、図７のステップＳ２０４では、操作イベントを通知する操作イベント処理部１２３２を識別するための識別情報として利用され、ステップＳ２１４では、画面データの送信の要求元であるリモート画面生成部１２３４を識別するための識別情報として利用される。例えば、プログラム言語の仕様上の制限上等の理由により、一つの識別情報に基づいて操作イベント処理部１２３２及びリモート画面生成部１２３４等を識別することが困難な場合は、実行単位識別情報を複数の識別情報によって構成すればよい。具体的には、図４のステップＳ１１０において、アプリ管理部１２３７は、リモート画面生成部１２３４ａ及び操作イベント処理部１２３２ａ等のそれぞれの識別情報を実行単位識別情報としてアプリ対応テーブル１２３８に登録すればよい。同様に、ステップＳ１２９において、アプリ管理部１２３７は、ローカル画面生成部１２３３ｂ及び操作イベント処理部１２３２ｂ等のそれぞれの識別情報を実行単位識別情報としてアプリ対応テーブル１２３８に登録すればよい。
【００８７】
また、本実施の形態では、アプリ対応テーブル１２３８において、ＳＤＫアプリ１２２０の実行単位ごとに操作場所識別情報が対応付けられる例を説明した。但し、同一のＳＤＫアプリ１２２０の同時利用を制限する場合等、同一のＳＤＫアプリ１２２０が同時に利用されないことが保証される環境においては、ＳＤＫアプリ１２２０の種類ごと（アプリＩＤごと）に操作場所識別情報を対応づけるようにしてもよい。
【００８８】
また、アプリ対応テーブル１２３８内のエントリは、対応する実行単位が終了した際に削除される。同様に、印刷ジョブ対応テーブル１２３６のエントリは、対応する印刷ジョブが終了した際に削除される。
【００８９】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００９０】
１０          画像形成装置
１１          コントローラ
１２          スキャナ
１３          プリンタ
１４          モデム
１５          操作パネル
１６          ネットワークインタフェース
１７          ＳＤカードスロット
２０、２０ａ、２０ｂ    情報処理装置
２１          クライアント通信部
２２          画面制御部
８０          ＳＤカード
１１１        ＣＰＵ
１１２        ＲＡＭ
１１３        ＲＯＭ
１１４        ＨＤＤ
１２１０      標準アプリ
１２１１      スキャンアプリ
１２１２      プリンタアプリ
１２１３      コピーアプリ
１２１４      ＦＡＸアプリ
１２２０      ＳＤＫアプリ
１２２１      蓄積文書印刷アプリ
１２３０      ＳＤＫプラットフォーム
１２３１      印刷処理依頼部
１２３２      操作イベント処理部
１２３３      ローカル画面生成部
１２３４      リモート画面生成部
１２３５      印刷イベント管理部
１２３６      印刷ジョブ対応テーブル
１２３７      アプリ管理部
１２３８      アプリ対応テーブル
１２３９      サーバ通信部
１２４０      サービス層
１２４１      オペパネ制御部
１２４２      印刷ジョブキュー
１２４３      プリンタ制御部
【先行技術文献】
【特許文献】
【００９１】
【特許文献１】特開２００６−１４０８９８号公報
【特許文献２】特開２００７−１１０６８９号公報
【図１】
2011008488.tif 000003
【図２】
2011008488.tif 000004
【図３】
2011008488.tif 000005
【図４】
2011008488.tif 000006
【図５】
2011008488.tif 000007
【図６】
2011008488.tif 000008
【図７】
2011008488.tif 000009
【図８】
2011008488.tif 000010
【図９】
2011008488.tif 000011
【図１０】
2011008488.tif 000012