(57)【要約】【課題】電子機器のハードウェア資源の制約に基づくアプリケーションの実行に関する制限を緩和させることのできる通信装置、電子機器、情報処理システム、アプリケーション実行方法、アプリケーション実行プログラム及び記録媒体の提供を目的とする。【解決手段】電子機器と通信する通信手段と、前記電子機器に関するアプリケーションとを備えた通信装置であって、前記通信手段は、前記電子機器において発生するイベントの受信に応じて当該イベントを前記アプリケーションに通知し、当該イベントに応じて実行される前記アプリケーションの処理における前記電子機器のハードウェア資源の操作要求を前記電子機器に送信することにより上記課題を解決する。【選択図】図１
2007188468.tif 000002
【特許請求の範囲】
【請求項１】
電子機器と通信する通信手段と、前記電子機器に関するアプリケーションとを備えた通信装置であって、
前記通信手段は、前記電子機器において発生するイベントの受信に応じて当該イベントを前記アプリケーションに通知し、当該イベントに応じて実行される前記アプリケーションの処理における前記電子機器のハードウェア資源の操作要求を前記電子機器に送信することを特徴とする通信装置。
【請求項２】
前記電子機器のハードウェア資源を制御させるためのインタフェースを前記アプリケーションに対して提供するインタフェース提供手段を有し、
前記アプリケーションは、前記イベントに応じて実行される処理における前記電子機器のハードウェア資源の操作要求として前記インタフェース提供手段における前記インタフェースを呼び出し、
前記通信手段は、前記アプリケーションによる前記インタフェースの呼び出しに基づいて、前記電子機器に対して前記ハードウェア資源の操作要求を送信することを特徴とする請求項１記載の通信装置。
【請求項３】
前記通信手段は、前記アプリケーションに対して、前記インタフェース提供手段の提供するインタフェースを介して前記イベントを通知することを特徴とする請求項２記載の通信装置。
【請求項４】
前記イベントは、前記電子機器のハードウェア資源において検知されソフトウェアに通知される情報を含むことを特徴とする請求項１乃至３いずれか一項記載の通信装置。
【請求項５】
前記インタフェース提供手段は、前記電子機器が当該電子機器におけるアプリケーションに当該電子機器のハードウェア資源を制御させために提供するインタフェースと互換性のあるインタフェースを提供することを特徴とする請求項２又は３記載の通信装置。
【請求項６】
前記通信手段は、当該通信装置におけるアプリケーションからの要求に応じ当該アプリケーションの操作画面の表示要求を前記電子機器に送信することを特徴とする請求項１乃至５いずれか一項記載の通信装置。
【請求項７】
前記アプリケーションをインストールするインストール手段を有することを特徴とする請求項１乃至６いずれか一項記載の通信装置。
【請求項８】
アプリケーションを実行可能な電子機器であって、
前記アプリケーションに関する入力に対応したイベントを当該電子機器と通信する通信装置に送信し、前記イベントに応じて実行される前記通信装置のアプリケーションの処理における当該電子機器のハードウェア資源に対する操作要求を受信する通信手段と、
受信された前記操作要求に基づいて当該電子機器のハードウェア資源を制御する制御手段とを有することを特徴とする電子機器。
【請求項９】
前記通信手段は、前記制御手段によって制御される前記ハーウェア資源におけるイベントの発生に応じ、当該イベントを前記通信装置に通知することを特徴とする請求項８記載の電子機器。
【請求項１０】
前記イベントは、前記ハードウェア資源において検知されソフトウェアに通知される情報を含むことを特徴とする請求項８又は９記載の電子機器。
【請求項１１】
前記通信手段によって受信される、前記通信装置のアプリケーションの操作画面の表示要求に応じ、該操作画面を表示させる表示手段を有することを特徴とする請求項８乃至１０いずれか一項記載の電子機器。
【請求項１２】
アプリケーションを実行可能な電子機器と、該電子機器と通信する通信装置とを有する情報処理システムであって、
前記電子機器は、前記アプリケーションに関する入力に対応したイベントを前記通信装置に送信し、
前記通信装置は、前記イベントに応じてアプリケーションを実行し、当該アプリケーションにおける前記電子機器のハードウェア資源に対する操作要求を前記電子機器に送信することにより、前記電子機器を制御することを特徴とする情報処理システム。
【請求項１３】
電子機器と通信することにより前記電子機器に関するアプリケーションを実行する通信装置におけるアプリケーション実行方法であって、
前記電子機器において発生するイベントを受信し、当該イベントを前記アプリケーションに通知するイベント受信手順と、
前記イベントの通知に応じて実行される前記アプリケーションの処理における前記電子機器のハードウェア資源の操作要求を前記電子機器に送信する操作要求送信手順とを有することを特徴とするアプリケーション実行方法。
【請求項１４】
前記イベントは、前記電子機器のハードウェア資源において検知されソフトウェアに通知される情報を含むことを特徴とする請求項１３記載のアプリケーション実行方法。
【請求項１５】
アプリケーションを実行可能な電子機器におけるアプリケーション実行方法であって、
前記アプリケーションに関する入力に対応したイベントを当該電子機器と通信する通信装置に送信するイベント送信手順と、
前記イベントに応じて実行される前記通信装置のアプリケーションの処理における当該電子機器のハードウェア資源に対する操作要求を受信する操作要求受信手順と、
前記操作要求に基づいて当該電子機器のハードウェア資源を制御する制御手順とを有することを特徴とするアプリケーション実行方法。
【請求項１６】
請求項１３又は１４記載のアプリケーション実行方法をコンピュータに実行させるためのアプリケーション実行プログラム。
【請求項１７】
請求項１６記載のアプリケーション実行プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１８】
請求項１５記載のアプリケーション実行方法をコンピュータに実行させるためのアプリケーション実行プログラム。
【請求項１９】
請求項１８記載のアプリケーション実行プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、電子機器、アプリケーション実行方法、アプリケーション実行プログラム及び記録媒体に関し、特に電子機器に関するアプリケーションを実行する通信装置、電子機器、アプリケーション実行方法、アプリケーション実行プログラム及び記録媒体に関する。
【背景技術】
【０００２】
近年、ソフトウェアやハードウェアを制御するためのＡＰＩ（Application Program Interface）を公開し、業務アプリケーションを随時追加することで、業務に特化した機能の拡張を可能とする技術が存在する。
【０００３】
例えば、ＰＤＡ（Personal Digital Assistance）、携帯電話、テレビ等といった組み込み型の電子機器においてもかかる技術が使われており、必要に応じてアプリケーションを追加することで、その利便性を高めている。
【０００４】
また、特定のデータを扱うことに特化したハードウェア資源を用いる機器についてもかかる技術が使われてきている。これにより当該機器の出荷後においても、いわゆるＳＩerが、そのようなハードウェア資源を利用する業務アプリケーション開発することにより、機器の稼働している現場でユーザが機能拡張を容易にできるようにもなってきている。
【０００５】
かかるハードウェア資源を用いる組み込み型電子機器の一例として、スキャナやプリンタエンジン等を備える複合機等が挙げられる。このような複合機に搭載するアプリケーションとしても、種々のものが開発されているが、複数のプラットフォームに対応し、ネットワークに高度に対応するという観点から、Ｊａｖａ（登録商標）アプリケーション（以下「Ｊａｖａ（登録商標）アプリ」という。）が用いられてきている（例えば、特許文献１）。このような複合機用に開発されたＪａｖａ（登録商標）アプリは、複合機のＨＤＤ（Hard Disk Drive）等のデバイスにインストールされ、複合機の演算装置、記憶装置等を利用して実行される。
【特許文献１】特開２００４−３１２７１１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＰＣ等の汎用的なコンピュータと異なり、上述のようなハードウェア資源を備えた組み込み型電子機器は、不要なコストアップを回避するためにハードウェア上の制限が厳しい。したがって、搭載するＪａｖａ（登録商標）アプリに対する制約も厳しいものにならざるをえないという問題がある。例えば、記憶装置の容量制限等により、同時に実行できるＪａｖａ（登録商標）アプリの数に制限が生じる。したがって、スキャン、ファクシミリ、Ｗｅｂサーバ等のＪａｖａ（登録商標）アプリを同時実行したい場合があっても、全てのＪａｖａ（登録商標）アプリは起動できず、いずれかのＪａｖａ（登録商標）アプリを終了させ、記憶領域の一部を開放してから、他のＪａｖａ（登録商標）アプリを実行する必要がある。
【０００７】
また、低価格帯の複合機のような組み込み型電子機器においては、製品のコストダウンのために、メモリ、演算装置等のハードウェア部品の性能を通常の複合機よりも抑えたものが備わっていることが多い。これらの組み込み型電子機器は、ハードウェア部品の性能の制限により、Ｊａｖａ（登録商標）アプリの実行環境を搭載させることができないという制約があるが、このような機器に対してもＪａｖａ（登録商標）アプリを実行させたいという要求がある。
【０００８】
本発明は、上記の点に鑑みてなされたものであって、電子機器のハードウェア資源の制約に基づくアプリケーションの実行に関する制限を緩和させることのできる通信装置、電子機器、情報処理システム、アプリケーション実行方法、アプリケーション実行プログラム及び記録媒体の提供を目的とする。
【課題を解決するための手段】
【０００９】
そこで上記課題を解決するため、本発明は、電子機器と通信する通信手段と、前記電子機器に関するアプリケーションとを備えた通信装置であって、前記通信手段は、前記電子機器において発生するイベントの受信に応じて当該イベントを前記アプリケーションに通知し、当該イベントに応じて実行される前記アプリケーションの処理における前記電子機器のハードウェア資源の操作要求を前記電子機器に送信することを特徴とする。
【００１０】
また、上記課題を解決するため、本発明は、アプリケーションを実行可能な電子機器であって、前記アプリケーションに関する入力に対応したイベントを当該電子機器と通信する通信装置に送信し、前記イベントに応じて実行される前記通信装置のアプリケーションの処理における当該電子機器のハードウェア資源に対する操作要求を受信する通信手段と、受信された前記操作要求に基づいて当該電子機器のハードウェア資源を制御する制御手段とを有することを特徴とする。
【００１１】
このような通信装置又は電子機器によれば、電子機器のハードウェア資源の制約に基づくアプリケーションの実行に関する制限を緩和させることができる。
【００１２】
また、上記課題を解決するため、本発明は、上記通信装置及び上記電子機器を有する情報処理システム、上記通信装置若しくは上記電子機器におけるアプリケーション実行方法、前記アプリケーション実行方法をコンピュータに実行させるためのアプリケーション実行プログラム、又は前記アプリケーション実行プログラムを記録した記録媒体としてもよい。
【発明の効果】
【００１３】
本発明によれば、電子機器のハードウェア資源の制約に基づくアプリケーションの実行に関する制限を緩和させることのできる通信装置、電子機器、情報処理システム、アプリケーション実行方法、アプリケーション実行プログラム及び記録媒体を提供することができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面に基づいて本発明の実施の形態を説明する。以下の説明では、第一の実施の形態において本発明を概念的に説明し、第二及び第三の実施の形態において、電子機器の具体例とて画像形成装置に適用した例を説明する。
【００１５】
図１は、第一の実施の形態における情報処理システムの構成例を示す図である。図１において、情報処理システム５００は、１台以上の電子機器５１０と通信装置５２０とによって構成されており、両者は、ＬＡＮ（Local Area Network）等のネットワーク５３０（有線又は無線の別は問わない。）を介して相互に接続されている。
【００１６】
図１において、電子機器５１０は、ハードウェア５１１、ＯＳ（Operating System）５１２、電子機器サービス５１３、電子機器ユーザアプリ５１４、及び仮想ユーザアプリ５１５等より構成される。
【００１７】
ハードウェア５１１は、ＣＰＵ、メモリ、ＨＤＤ（Hard Disk Drive）、ＳＤカードスロット、ネットワークインタフェース等、一般的な電子機器が備えているものの他、当該電子機器に特有のハードウェア資源を含む。第一の実施の形態では、電子機器は特定の機器に限定されていないが、一般的に電子機器はそれぞれの機能を実現するために当該電子機器に特有のハードウェア資源を備えている。第一の実施の形態における電子機器５１０も、電子機器５１０の機能を実現するために電子機器５１０に特有のハードウェア資源を備えているのである。また、電子機器５１０は、ハードウェア５１１の一部として、ユーザとの入出力用のユーザインタフェースであるオペレーションパネル、スイッチ、ボタン、ＬＥＤ、又はＬＣＤ等が付属又は接続されている。ユーザは、当該オペレーションパネル等を操作することで、電子機器５１０における各種アプリケーションの実行指示を行うことができる。
【００１８】
ＯＳ５１２は、ＵＮＩＸ（登録商標）等の汎用的なオペレーティングシステムである。
【００１９】
電子機器サービス５１３は、電子機器５１０のハードウェア５１１を制御するためのＡＰＩ（Application Program Interface）を介して、電子機器５１３に関する汎用的なサービスを上位アプリケーション（電子機器ユーザアプリ５１４、仮想ユーザアプリ５１５）に提供するプログラムモジュールである。電子機器サービス５１３は、その一部として通信装置通信部５１３１を含む。
【００２０】
通信装置通信部５１３１は、通信装置５２０の電子機器通信部５２３１と通信することにより、ユーザから要求されたサービスの提供に必要な処理の少なくとも一部を通信装置２０に実行させる。
【００２１】
すなわち、通信装置通信部５１３１は、ＯＳ５１２から発生する非同期のイベントを受信すると、当該イベントの発生を通知するメッセージを通信装置５２０の電子機器通信部５２３１へ送信する。詳細については後述するが、当該メッセージを受信した通信装置５２０の電子機器通信部５２３１は、当該メッセージに基づいて通信装置５２０の電子機器ユーザアプリ５２４に当該イベントを通知する。なお、本実施の形態において「イベント」とは、電子機器５１０に備えられた非図示の各種センサ等のハードウェアによって検知され、ソフトウェアに通知される情報等を含む。したがって、例えば、ボタン又はオペレーションパネル等に対するユーザからの入力、ハードウェア資源における処理の完了、又は異常の発生等に基づいてソフトウェアに通知される情報もイベントに含まれる。
【００２２】
通信装置通信部５１３１は、また、通信装置５２０における電子機器ユーザアプリ５２４の処理における電子機器５１０のハードウェア資源に対する操作要求を通信装置５２０の電子機器通信部５２３１より受信し、操作要求の内容に応じた操作を実行させ、その操作結果を同通信装置通信部５１３１へ返信する。この仕組みは、ＲＰＣ(リモートプロシジャーコール)の仕組みに基づく。すなわち、通信装置通信部５１３１は、通信装置５２０の電子機器通信部５２３１からのＲＰＣによる関数の呼び出しを受けて該当するソフトウェアモジュールの関数を実行し、その結果を電子機器通信部５２３１に返信する。
【００２３】
仮想ユーザアプリ５１５は、電子機器５１０の出荷後にユーザ又はソフトウェアベンダ等によって実装されるアプリ（以下「ユーザアプリ」という。）の一つであり、例えば、Ｊａｖａ（登録商標）アプリとして実装される。ここで、「仮想」という言葉が用いられているのは、仮想ユーザアプリ５１５は、通信装置５２０にユーザアプリとして実装されている電子機器ユーザアプリ５２４を透過的に利用させるためのものであり、その実態的な処理は実装されていないからである。
【００２４】
すなわち、仮想ユーザアプリ５１５は、その実体的な処理（例えば、業務ロジック等）については、通信装置通信部５１３１を介して電子機器通信部５２３１に実装されているユーザアプリに実行させる。したがって、仮想ユーザアプリ５１５が行う処理は、例えば、ユーザアプリを起動・停止させるためのユーザインタフェース（例えば、ボタン等）を電子機器５１０のオペレーションパネルに表示させたり、ユーザインタフェースを介してユーザアプリの起動又は停止のトリガー（ユーザによる入力）が発生した場合、通信装置通信部５１３１を通じて電子機器通信部５２３１へ該当するユーザアプリを起動又は停止させる要求を送信したりといったような比較的負荷が軽いものが大部である。
【００２５】
なお、図１では、電子機器５１０にも、電子機器ユーザアプリ５１４が実装されている。電子機器ユーザアプリ５１４もユーザアプリの一つであり、こちらは、電子機器５３０上で動作する。すなわち、電子機器５１０上においては、仮想ユーザアプリ５１５だけでなく、実体的な処理を行うユーザアプリの実行も可能であってもよい。
【００２６】
次に、通信装置５２０について説明する。通信装置５２０は、電子機器５１０の仮想ユーザアプリ５１５の実体的な処理を実行する装置であり、ハードウェア５２１、ＯＳ５２２、電子機器サービス５２３、及び電子機器ユーザアプリ５２４等より構成される。
【００２７】
ハードウェア５２１は、ＣＰＵ、メモリ、ＨＤＤ（Hard Disk Drive）、ＳＤカードスロット、ネットワークインタフェース等のハードウェア資源である。
【００２８】
ＯＳ５２２は、ＵＮＩＸ（登録商標）やＬｉｎｕｘ等の汎用的なオペレーティングシステムである。
【００２９】
電子機器サービス５２３は、電子機器５１０における電子機器サービス５１３とほぼ同様の役割を担うものである。但し、電子機器５１０における電子機器サービス５１３は、通信装置通信部５１３１を備えているのに対し、電子機器サービス５２３は、その一部に電子機器通信部５２３１を含む。
【００３０】
電子機器通信部５２３１は、電子機器５１０の通信装置通信部５１３１と通信することにより、通信装置５２０上のユーザアプリ（電子機器ユーザアプリ５２４）において発生する電子機器５１０に対する操作要求を電子機器５１０の通信装置通信部５１３１へ送信する。
【００３１】
すなわち、通信装置５２０では電子機器５１０の仮想ユーザアプリ５１５の実体的な処理を行うユーザアプリが起動される。しかし、通信装置５２０には電子機器５１０に特有のハードウェアは存在しないため、ユーザアプリによるハードウェア資源の操作要求を実際には実行できない。そこで、電子機器通信部５２３１は、通信装置５２０のユーザアプリにおいて電子機器５１０のハードウェア５１１の操作要求が行われた場合には、操作対象となる電子機器５１０へ当該操作要求を送信することで電子機器５１０に該当する操作を行わせ、その結果を受け取る。これによって、通信装置５２０上に仮想的に電子機器５１０のハードウェア資源が実現される。
【００３２】
通信装置５２０（電子機器通信部５２３１）による電子機器５１０（通信装置通信部５１３１）への操作要求の送信にはＲＰＣが利用される。すなわち、電子機器通信部５２３１は、通信装置５２０においてある関数が呼ばれたときに、電子機器５１０側の同じ関数をリモート呼び出しし、その結果を受信するための仕組みを備える。
【００３３】
電子機器通信部５２３１は、また、電子機器５１０の通信装置通信部５１３１と通信することにより、電子機器５１０においてユーザから要求されたサービスの提供に必要な処理の少なくとも一部（実体的な処理）を、通信装置５２０上の電子機器ユーザアプリに実行させる。すなわち、電子機器通信部５２３１は、電子機器５１０で発生し、通信装置通信部５１３１から送られてくる非同期のイベントを受信し、該当する実行中のユーザアプリに当該イベントを通知する。
【００３４】
電子機器ユーザアプリ５２４は、通信装置５２０上で動作するユーザアプリの例である。すなわち、電子機器ユーザアプリ５２４は、電子機器５１０の仮想ユーザアプリ５１５における実体的な処理を通信装置５２０上で行うユーザアプリである。
【００３５】
ところで、上述したように、電子機器サービス５２３は、電子機器５１０における電子機器サービス５１３と同様のもの（すなわち、互換性のある又は同一のインタフェースを上位アプリケーションに対して提供するもの）である。したがって、電子機器５１０における電子機器サービス５１３において動作するアプリケーションは、そのまま通信装置５２０の電子機器サービス５２３上で動作させることができる。よって、ユーザアプリの搭載場所を電子機器５１０から通信装置５２０に変更する際に、改めてユーザアプリに対して修正を行う必要はない。
【００３６】
以下、第一の実施の形態における情報処理システム５００の処理手順の一例について説明する。図２は、第一の実施の形態における情報処理システムにおける処理手順を説明するためのフローチャートである。
【００３７】
ユーザが、電子機器５１０のユーザインタフェースから、仮想ユーザアプリ５１５を起動し（Ｓ５０１）、通信装置２０上の電子機器ユーザアプリ５２４に対し起動命令を出すと、当該起動命令は、イベントとして通信装置通信部５１３１及び電子機器通信部５２３１を介して通信装置２０上の電子機器ユーザアプリ５２４に通知される（Ｓ５０２）。通信装置２０上では、当該イベントに応じて電子機器ユーザアプリ５２４が起動する（Ｓ５０３）。
【００３８】
電子機器ユーザアプリ５２４の起動中、電子機器５１０において発生するイベントをトリガーとして電子機器ユーザアプリ５２４の処理が実行される（Ｓ５０４）。当該ステップの詳細については後述する。
【００３９】
電子機器ユーザアプリ５２４の処理が終了すると（Ｓ５０５）、当該処理の終了が、電子機器通信部５２３１及び通信装置通信部５１３１を介して仮想ユーザアプリ５１５に通知される（Ｓ５０６）。仮想ユーザアプリ５１５は、電子機器ユーザアプリ５２４の処理が終了したことを、例えば、オペレーションパネル等に表示させることによりユーザに通知する（Ｓ５０７）。
【００４０】
続いて、図２のステップＳ５０４において電子機器５１０が実行する処理について説明する。図３は、電子機器ユーザアプリ実行時における電子機器による処理の処理手順を説明するためのフローチャートである。
【００４１】
電子機器５１０のハードウェア５１１で発生した割り込みが、ＯＳ５１２によって検出される（Ｓ５１１）。例えば、電子機器５１０に付属、若しくは接続されているオペレーションパネルに表示されているユーザインタフェース用のボタンが押された場合には、割り込みが発生し、当該割り込みをＯＳ５１２が検出する。検出された割り込みは、ソフトウェアのイベントとして電子機器サービス５１３内の通信装置通信部５１３１に通知され（Ｓ５１２）、通信装置通信部５１３１によって通信装置２０に送信される（Ｓ５１３）。
【００４２】
当該イベントを受信した通信装置２０では、当該イベントに応じた処理が実行され、その処理の中で電子機器５１０のハードウェア５１１に対する操作要求が発生し、当該操作要求が通信装置５２０に送信される（Ｓ５１４）。なお、当該ステップの詳細については後述する。
【００４３】
通信装置５２０の通信装置通信部５１３１は、当該操作要求を受信すると、当該操作要求をＯＳ５１２に通知する（Ｓ５１６）。ＯＳ５１２は、ハードウェア５１１を制御し、当該操作要求に応じた機能を実現する（Ｓ５１７）。ハードウェア５１１の操作を行った結果、再度割り込みが発生した場合には、図３における手順が繰り返される。また、ハードウェア５１１の割り込みから始まる図３における処理手順は、電子機器ユーザアプリ５２４の実行中、非同期に行われる。
【００４４】
続いて、図３のステップＳ５１４において通信装置５２０が実行する処理について説明する。図４は、電子機器ユーザアプリ実行時における通信装置による処理の処理手順を説明するためのフローチャートである。
【００４５】
電子機器通信部５２３１は、電子機器５１０からのイベントを受信すると（Ｓ５２１）、当該イベントを電子機器ユーザアプリ５２４に通知する（Ｓ５２２）。電子機器ユーザアプリ５２４は、当該イベントに応じた処理を通信装置５２０上で実行する（Ｓ５２３）。処理の実行中、電子機器５１０のハードウェア５１１の操作が必要となると、電子機器ユーザアプリ５２４は、その操作要求を電子機器通信部５２３１に通知する（Ｓ５２４）。
【００４６】
電子機器通信部５２３１は、当該操作要求を電子機器５１０に送信する（Ｓ５２５）。当該操作要求は、図３において説明したステップＳ５１５において、電子機器５１０の通信装置通信部５１３１によって受信される。
【００４７】
上述したように、第一の実施の形態における情報処理システム５００では、電子機器５１０のアプリケーションに対して要求された処理の少なくとも一部を通信装置５２０に実行させ、必要に応じて電子機器５１０のハードウェア資源の制御を通信装置５２０に行わせる。すなわち、一般的にメモリ容量の制約の厳しい電子機器５１０上ではなく、任意にメモリを増設することのできる通信装置５２０のメモリを用いてユーザアプリを実行させることにより電子機器５１０に対する負荷を分散させることができる。したがって、電子機器１０のメモリの制限に縛られずユーザアプリを実行させることができる。
【００４８】
次に、第二の実施の形態について説明する。第二の実施の形態では、複合機等の画像形成装置を電子機器５１０の具体例として説明する。
【００４９】
図５は、第二の実施の形態における画像処理システムの構成例を示す図である。図５において、画像処理システム１は、１台以上の画像形成装置１０と端末処理装置２０とによって構成されており、両者は、ＬＡＮ（Local Area Network）等のネットワーク３０（有線又は無線の別は問わない。）を介して相互に接続されている。
【００５０】
図６は、第二の実施の形態における画像形成装置の構成例を示す図である。図６において、画像形成装置１０は、ハードウェア１１、ＯＳ１２、コントロールサービス１３、複合機アプリケーション汎用サービス１４、コピーアプリ１４１、ＦＡＸアプリ１４２、スキャンアプリ１４３、Ｊａｖａ（登録商標）アプリ実行環境１５、及び仮想ユーザアプリ１６等より構成される。
【００５１】
ハードウェア１１は、ＣＰＵ、メモリ、ＨＤＤ（Hard Disk Drive）、ＳＤカードスロット、ネットワークインタフェース等、一般的な電子機器が備えているものの他、画像形成装置１０に特有のハードウェア資源として、コピー、ＦＡＸ、スキャン、及び印刷等を実行するためのスキャナ及びプロッタ等を含む。また、画像形成装置１０は、ハードウェア１１の一部として、ユーザとの入出力用のインタフェースであるオペレーションパネルを備える。ユーザは、オペレーションパネルを操作することで、画像形成装置１０における各種アプリケーションの実行指示を行うことができる。
【００５２】
ＯＳ１２は、ＵＮＩＸ（登録商標）等の汎用的なオペレーティングシステムである。
【００５３】
コントロールサービス１３は、画像形成装置１０に特有のハードウェア資源を制御するためのＡＰＩを提供するライブラリである。コントロールサービス１３は、例えば、画像形成装置１０のオペレーションパネルの表示制御を行うためのサービス、ＦＡＸ機能を制御するためのサービス、コピー機能を制御するためのサービス、スキャン機能を制御するためのサービス（以下「スキャンサービス」という。）、印刷機能を制御するためのサービス、ネットワーク機能を制御するためのサービス、ユーザの認証を行うためのサービス等、画像形成装置１０に特有のサービスを上位のソフトウェア層から利用し易くしたＡＰＩを提供する。
【００５４】
複合機アプリケーション汎用サービス１４は、コントロールサービス１３が有するＡＰＩを抽象化し、上位アプリケーションからコントロースサービス１３以下のソフトウェアモジュールを容易に利用できるようにしたＡＰＩを備えるプログラムモジュールである。この複合機アプリケーション汎用サービス１４は、例えば、Ｃ、Ｃ＋＋言語等によって記述され、仮想マシン１５１上で動作するＪａｖａ（登録商標）のクラスからは、ＪＮＩ(Ｊａｖａ（登録商標）  Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ)を利用して呼び出すことができる。
【００５５】
コピーアプリ１４１、ＦＡＸアプリ１４２、及びスキャンアプリ１４３等は、画像形成装置１０の出荷時に予め組み込まれているアプリケーションであり、複合機アプリケーション汎用サービス１４上で動作する。コピーアプリ１４１は、コピー機能を起動するアプリケーションである。ＦＡＸアプリ１４２は、ＦＡＸ機能を起動するアプリケーションである。スキャンアプリ１４３は、スキャン機能を起動するアプリケーションである。
【００５６】
Ｊａｖａ（登録商標）実行環境１５は、画像形成装置１０上でＪａｖａ（登録商標）アプリケーション（以下、「Ｊａｖａ（登録商標）アプリ」という。）を実行するための環境を実現するソフトウェアモジュール群であり、仮想マシン１５、複合機クラスライブラリ１５２、アプリケーション管理部１５３、及び端末処理装置通信部１５４等より構成される。
【００５７】
仮想マシン１５１は、Ｊａｖａ（登録商標）コンパイラによって生成された中間コード（Ｊａｖａ（登録商標）バイナリコード）を解釈し、実行する、いわゆるＪａｖａ（登録商標）仮想マシンである。
【００５８】
複合機クラスライブラリ１５２は、仮想マシン１５１上で動作し、画像形成装置１０に特有のハードウェア資源等を制御するためのインタフェースを提供するＪａｖａ（登録商標）クラス群（例えば、スキャンクラス、ＦＡＸクラス、及びオペレーションパネルに対応するパネルクラス等）によって構成されるライブラリである。複合機クラスライブラリ１５２は、Ｊａｖａ（登録商標）実行環境１５上で動作するＪａｖａ（登録商標）アプリにより呼び出される。
【００５９】
アプリケーション管理部１５３は、画像形成装置１０のＨＤＤや、ＳＤカード等の記録媒体へ、Ｊａｖａ（登録商標）アプリのインストールを行ったり、インストールされたＪａｖａ（登録商標）アプリの起動、及び終了等を行ったりと、Ｊａｖａ（登録商標）アプリの管理全般を行う。
【００６０】
端末処理装置通信部１５４は、仮想マシン１５１上で動作し、端末処理装置２０の画像形成装置通信部２４４と通信することにより、ユーザから要求されたサービスの提供に必要な処理の少なくとも一部を端末処理装置２０に実行させる。
【００６１】
すなわち、端末処理装置通信部１５４は、コントロールサービス１３以下の層（以下「ネイティブ層」という。）から発生する非同期のイベントを受信すると、当該イベントの発生を通知するメッセージを端末処理装置２０の画像形成装置通信部２４４へ送信する。詳細については後述するが、当該メッセージを受信した端末処理装置２０の画像形成装置通信部２４４は、当該メッセージに基づいて端末処理装置２０のＪａｖａ（登録商標）アプリ実行環境２４上で動作するＪａｖａ（登録商標）アプリに当該イベントを通知する。
【００６２】
端末処理装置通信部１５４は、また、端末処理装置２０におけるＪａｖａ（登録商標）アプリの処理における画像形成装置１０のハードウェア資源に対する操作要求を同端末処理装置２０の画像形成装置通信部２４４より受信し、操作要求の内容に応じた操作を実行させ、その操作結果を同端末処理装置通信部１５４へ返信する。この仕組みは、ＲＰＣ(リモートプロシジャーコール)の仕組みに基づく。すなわち、端末処理装置通信部１５４は、端末処理装置２０の仮想マシン１５１上で動作する画像形成装置通信部２４４からのＲＰＣによる関数の呼び出しを受けて該当するソフトウェアモジュールの関数を実行し、その結果を同画像形成装置通信部２４４に返信する。
【００６３】
仮想ユーザアプリ１６は、画像形成装置１０の出荷後にユーザ又はソフトウェアベンダ等によって実装されるユーザアプリとしてのＪａｖａ（登録商標）アプリの一つであり、Ｊａｖａ（登録商標）アプリ実行環境１５上で動作する。ここで、「仮想」という言葉が用いられているのは、仮想ユーザアプリ１６は、端末処理装置２０に実装されているユーザアプリを透過的に利用させるためのものであり、その実態的な処理は実装されていないからである。
【００６４】
すなわち、仮想ユーザアプリ１６は、その実体的な処理（例えば、業務ロジック等）については、端末処理装置通信部１５４を介して端末処理装置２０に実装されているＪａｖａ（登録商標）アプリに実行させる。したがって、仮想ユーザアプリ１６が行う処理は、例えば、ユーザアプリを起動・停止させるためのユーザインタフェース（例えば、ボタン等）を画像形成装置１０のオペレーションパネルに表示させたり、ユーザインタフェースを介してユーザアプリの起動又は停止のトリガー（ユーザによる入力）が発生した場合、端末処理装置通信部１５４を通じて端末処理装置２０へ該当するユーザアプリを起動又は停止させる要求を送信したりといったような比較的負荷が軽いものが大部である。
【００６５】
なお、上記において説明した画像形成装置１０におけるソフトウェアモジュールを実現するプログラムは、ＣＤ−ＲＯＭやＳＤカード等の記録媒体１０１よりインストールされてもよいし、ネットワーク３０を介してインストールされてもよい。
【００６６】
次に、端末処理装置２０について説明する。図７は、第二の実施の形態における端末処理装置２０の構成例を示す図である。図７において、端末処理装置２０は、画像形成装置１０の仮想ユーザアプリ１６の実体的な処理を実行する通信装置の一例であり、ハードウェア２１、ＯＳ２２、複合機アプリケーション汎用サービス２３、Ｊａｖａ（登録商標）実行環境２４、ユーザアプリ２５ａ、ユーザアプリ２５ｂ、及びユーザアプリ２５ｃ等より構成される。なお、端末処理装置２０は、ＰＣ等の汎用的なコンピュータに限られず、Ｊａｖａ（登録商標）仮想マシンが搭載可能で、その上でＪａｖａ（登録商標）アプリを実行できる機器であればどのようなものでもよい。
【００６７】
ハードウェア２１は、ＣＰＵ、メモリ、ＨＤＤ（Hard Disk Drive）、ＳＤカードスロット、ネットワークインタフェース等のハードウェア資源である。
【００６８】
ＯＳ２２は、ＵＮＩＸ（登録商標）やＬｉｎｕｘ等の汎用的なオペレーティングシステムである。
【００６９】
複合機アプリケーション汎用サービス２３は、画像形成装置１０における複合機アプリケーション汎用サービス２３と同様のものである。
【００７０】
Ｊａｖａ（登録商標）実行環境２４は、端末処理装置２０上でＪａｖａ（登録商標）アプリを実行するための環境を実現するソフトウェアモジュール群であり、仮想マシン２４１、複合機クラスライブラリ２４２、アプリケーション管理部２４３、及び画像形成装置通信部２４４等より構成される。
【００７１】
仮想マシン２４１、複合機クラスライブラリ２４２、及びアプリケーション管理部２４３は、画像形成装置１０における仮想マシン１５１、複合機クラスライブラリ１５２、及びアプリケーション管理部１５３と同様であるため、ここでの説明は省略する。
【００７２】
画像形成装置通信部２４４は、仮想マシン１５１上で動作し、画像形成装置１０の端末処理装置通信部１５４と通信することにより、端末処理装置２０上のユーザアプリの処理における画像形成装置１０に対する操作要求を画像形成装置１０の端末処理装置通信部１５４へ送信する。
【００７３】
すなわち、端末処理装置２０では画像形成装置１０の仮想ユーザアプリ１６の実体的な処理を行うユーザアプリが起動される。しかし、端末処理装置２０にはコントロールサービス１３以下のソフトウェアモジュール及び画像形成装置１０に特有のハードウェアは存在しないため、ユーザアプリから発生したコントロールサービス１３以下で行われる命令を実際には実行できない（例えば、端末処理装置２０が実際にスキャンやコピー、又はＦＡＸの送受信を行うことはできない。）。そこで、画像形成装置通信部２４４は、端末処理装置２０のユーザアプリにおいてコントロールサービス１３以下のモジュールで行われる操作が生じた場合には、操作対象となる画像形成装置１０へ当該操作要求を送信することで画像形成装置１０に該当する操作を行わせ、その結果を受け取る。これによって、端末処理装置２０上に仮想的にコントロールサービス１３以下のモジュールが実現される。
【００７４】
端末処理装置２０（画像形成装置通信部２４４）による画像形成装置１０（端末処理装置通信部１５４）への操作要求の送信にはＲＰＣが利用される。すなわち、画像形成装置通信部２４４は、端末処理装置２０においてある関数が呼ばれたときに、画像形成装置１０側の同じ関数をリモート呼び出しし、その結果を受信するための仕組みを備える。例えば、端末処理装置２０におけるユーザアプリによって複合機クラスライブラリ２４２のＳｃａｎ（）関数が呼び出されると、画像形成装置通信部２４４は、端末処理装置通信部１５４を介して画像形成装置１０の複合機クラスライブラリ１５２のＳｃａｎ（）関数を呼び出し、その結果を受信する。
【００７５】
画像形成装置通信部２４４は、また、画像形成装置１０の端末処理装置通信部１５４と通信することにより、画像形成装置１０においてユーザから要求されたサービスの提供に必要な処理の少なくとも一部（実体的な処理）を、端末処理装置２０上のユーザアプリに実行させる。すなわち、画像形成装置通信部２４４は、画像形成装置１０で発生し、端末処理装置通信部１５４から送られてくる非同期のイベントを受信し、該当する実行中のユーザアプリに当該イベントを通知する。
【００７６】
ユーザアプリ２５ａ、２５ｂ、及び２５ｃは、Ｊａｖａ（登録商標）実行環境２４上で動作するユーザアプリの例である。すなわち、ユーザアプリ２５ａ、２５ｂ、及び２５ｃは、画像形成装置１０の仮想ユーザアプリ１６における実体的な処理を端末処理装置２０上で行うユーザアプリである。なお、ユーザアプリ２５ａ、２５ｂ、及び２５ｃ等のユーザアプリは、複合機クラスライブラリ２４２の関数を呼び出すことにより画像形成装置１０に対する操作要求を行い、複合機クラスライブラリ２４２のイベントクラスより、画像形成装置１０で発生したイベントを受け取る。
【００７７】
ところで、上述したように、複合機クラスライブラリ２４２及び複合機アプリケーション汎用サービス２３は、画像形成装置１０における複合機クラスライブラリ１５２又は複合機アプリケーション汎用サービス１４と同様のもの（すなわち、互換性のある又は同一のインタフェースを上位アプリケーションに対して提供するもの）である。したがって、画像形成装置１０における複合機クラスライブラリ１５２又は複合機アプリケーション汎用サービス１４において動作するアプリケーションは、そのまま端末処理装置２０の複合機クラスライブラリ２４２又は複合機アプリケーション汎用サービス２３上で動作させることができる。よって、ユーザアプリの搭載場所を画像形成装置１０から端末処理装置２０に変更する際に、改めてユーザアプリに対して修正を行う必要はない。
【００７８】
なお、上記において説明した端末処理装置２０におけるソフトウェアモジュールを実現するプログラムは、ＣＤ−ＲＯＭやＳＤカード等の記録媒体２０１よりインストールされてもよいし、ネットワーク３０を介してインストールされてもよい。
【００７９】
以上、図６及び図７において説明した画像形成装置１０と端末処理装置２０とのインタラクションは、図８のように図示することができる。図８は、第二の実施の形態における画像形成装置と端末処理装置とのインタラクションを示す図である。
【００８０】
図８に示されるように、画像形成装置１０の端末処理装置通信部１５４は、ハードウェア資源を含むネイティブ層からの非同期のイベント（Ｓ１）や、仮想ユーザアプリ１６からの要求（Ｓ２）を端末処理装置２０の画像形成装置通信部２４４に送信する（Ｓ３）。
【００８１】
端末処理装置２０の画像形成装置通信部２４４は、受信したイベントや要求を複合機クラスライブラリ２４２のイベントクラスを介して、対応するユーザアプリ（ユーザアプリ２５ａ、２５ｂ、又は２５ｃ等）に通知する（Ｓ４）。ユーザアプリ２５ａ等は、イベント又は要求に対応した処理を実行する。その処理の過程においてユーザアプリ２５ａ等は、複合機クラスライブラリ２４２を利用する（呼び出す）が、その際にネイティブ層以下の処理が必要な場合は、画像形成装置通信部２４４が、画像形成装置１０に対する操作要求を端末処理装置通信部１５４に送信する（Ｓ５）。操作要求を受信した端末処理装置通信部１５４は、コントロールサービス１３等のネイティブ層に対して操作要求を通知する（Ｓ６）。この操作要求に基づいて、画像形成装置１０に特有のハードウェアが制御され、スキャン、ＦＡＸの送受信、コピー等が実行される。
【００８２】
以下、第二の実施の形態における画像処理システム１の処理手順の一例について説明する。図９は、第二の実施の形態における画像処理システムにおけるユーザアプリの実行処理を説明するためのフローチャートである。
【００８３】
まず、端末処理装置２０、及び画像形成装置１０がユーザによって起動される（Ｓ１０１、Ｓ１０２）。双方が起動すると、画像形成装置１０の端末処理装置通信部１５４と端末処理装置２０の画像形成装置通信部２４４とはお互いに通信するためのコネクションを確立する（Ｓ１０３）。この処理の詳細については後述する。なお、以下において、画像形成装置１０と端末処理装置２０との通信は、端末処理装置通信部１５４と端末処理装置２０の画像形成装置通信部２４４とによって行われる。
【００８４】
続いて、利用するユーザアプリが、端末処理装置２０のＨＤＤやＳＤカードなどのストレージデバイスにインストールされる（Ｓ１０４）。インストールは、例えば、端末処理装置２０に接続されたディスプレイや、端末処理装置２０とネットワークを介して接続するＰＣ等のディスプレイにアプリケーション管理部２４３によって表示されるインストール画面に基づいて行われる。なお、ユーザアプリのインストールは、当該ユーザアプリについて一度行われれば、次回の起動時には行う必要はない。
【００８５】
続いて、ユーザが画像形成装置１０の前でオペレーションパネルのユーザアプリ選択画面表示キーを押すと（Ｓ１０５）、アプリケーション管理部１５３は、オペレーションパネルにユーザアプリ選択画面を表示させる。ここで、ユーザアプリ選択画面表示キーとは、ユーザアプリ選択画面をオペレーションパネルの液晶画面に表示させるためのボタンをいい、予めオペレーションパネルに配置されているものである。
【００８６】
図１０は、ユーザアプリ選択画面の表示例を示す図である。図１０に示されるように、ユーザアプリ選択画面１１０には画像形成装置１０又は端末処理装置２０にインストールされているユーザアプリのリストが表示される。図１０では、ユーザアプリＡ、ユーザアプリＢ、ユーザアプリＣが表示されているが、これらはそれぞれユーザアプリ２５ａ、ユーザアプリ２５ｂ、ユーザアプリ２５ｃの名前を示す。なお、画像形成装置１０又は端末処理装置２０にインストールされているユーザアプリの一覧情報は、仮想ユーザアプリ１６に登録しておき、アプリケーション管理部１５３が仮想ユーザアプリ１６に問い合わせることにより取得される。但し、アプリケーション管理部１５３が端末処理装置２０に問い合わせることで、端末処理装置２０にインストールされているユーザアプリの一覧情報が取得されるようにしてもよい。
【００８７】
続いて、ユーザは、ユーザアプリ選択画面１１０に表示されたユーザアプリの中から利用したいユーザアプリを選択する（Ｓ１０７）。ここでは、ユーザアプリＡ（ユーザアプリ２５ａ）が選択されたものとする。なお、ユーザアプリ２５ａは、スキャン処理に関連する業務アプリケーションであることとする。
【００８８】
ユーザによってユーザアプリＡが選択されると、アプリケーション管理部１５３は、仮想ユーザアプリ１６を起動させる（Ｓ１０８）。仮想ユーザアプリ１６は、起動処理（初期化処理）の間に端末処理装置２０のユーザアプリ２５ａに対して起動処理の実行要求を送信する（Ｓ１０９）。
【００８９】
起動処理の実行要求を受信したユーザアプリ２５ａは、ユーザアプリ２５ａの操作画面（以下「ユーザアプリＡ用ウィンドウ」という。）と、その表示部品を生成する（Ｓ１１０）。表示部品としては、例えば、ユーザアプリＡ用ウィンドウに配置するボタンやそのボタンに貼り付けるラベル等が相当する。ボタンはユーザからの入力を受け付け、ラベルはユーザに対しメッセージを通知する役割を果たす。ここでは、表示部品として「Ｓｃａｎ  Ｓｔａｒｔ」ボタン、「Ｓｃａｎ  Ｒｕｎｎｉｎｇ」ラベル、「Ｓｃａｎ  Ｅｒｒｏｒ！」ラベル、「Ｓｃａｎ  Ｆｉｎｉｓｈ」ラベル、及び「Ｓｃａｎ  Ｓｔｏｐ」ボタンが生成される。
【００９０】
続いて、ユーザアプリ２５ａが、「Ｓｃａｎ  Ｓｔａｒｔ」の貼り付けられたユーザアプリＡ用ウィンドウの表示要求を画像形成装置１０に送信すると（Ｓ１１１）、当該表示要求を受信した画像形成装置１０の仮想ユーザアプリ１６は、端末処理装置２０のユーザアプリ２５ａによって生成されたユーザアプリＡ用ウィンドウをオペレーションパネルに表示させる（Ｓ１１２）。
【００９１】
より詳しくは、ユーザアプリ２５ａは、「Ｓｃａｎ  Ｓｔａｒｔ」の貼り付けられたユーザアプリＡ用ウィンドウの表示命令を複合機クラスライブラリ２４２の関数を呼び出すことにより行う。複合機クラスライブラリ２４２に対する命令は、画像形成装置通信部２４４によって画像形成装置１０の端末処理装置通信部１５４に送信される。端末処理装置通信部１５４は、当該ユーザアプリＡ用ウィンドウの表示をコントロールサービス１３に命令する。コントロールサービス１３は、オペレーションパネルを制御し、オペレーションパネル上に当該ユーザアプリＡ用ウィンドウを表示させる。
【００９２】
図１１は、「Ｓｃａｎ  Ｓｔａｒｔ」ボタンが貼り付けられたユーザアプリＡ用ウィンドウの表示例を示す図である。図１１に示されるユーザアプリＡ用ウィンドウ１２０には、「Ｓｃａｎ  Ｓｔａｒｔ」ボタン１２１が貼り付けられて表示されている。
【００９３】
続いて、ユーザが「Ｓｃａｎ  Ｓｔａｒｔ」ボタン１２１を押すと（Ｓ１１３）、そのイベントがネットワーク３０を介して端末処理装置２０のユーザアプリ２５ａに通知される（Ｓ１１４）。より詳しくは、当該イベントはコントロールサービス１３等を介して端末処理装置通信部１５４に通知され、端末処理装置通信部１５４が、端末処理装置２０の画像形成装置通信部２４４に当該イベントを通知するメッセージを送信する。画像形成装置通信部２４４は、複合機クラスライブラリ２４２のイベントクラスを介して、当該イベントをユーザアプリ２５ａに通知する。
【００９４】
続いて、ユーザアプリ２５ａが、ユーザアプリＡ用ウィンドウ１２０への「Ｓｃａｎ  Ｓｔｏｐ」ボタン及び「Ｓｃａｎ  Ｒｕｎｎｉｎｇ」ラベルの表示要求を画像形成装置１０に送信すると（Ｓ１１５）、当該表示要求を受信した画像形成装置１０の仮想ユーザアプリ１６は、オペレーションパネルに表示されているユーザアプリＡ用ウィンドウ１２０に当該ボタン及びラベルを表示させる（Ｓ１１６）。
【００９５】
図１２は、「Ｓｃａｎ  Ｓｔｏｐ」ボタン及び「Ｓｃａｎ  Ｒｕｎｎｉｎｇ」ラベルが表示されたユーザアプリＡ用ウィンドウの表示例を示す図である。
【００９６】
図１２において、「Ｓｃａｎ  Ｓｔｏｐ」ボタン１２２は、スキャン操作を中止させるためのボタンである。また、「Ｓｃａｎ  Ｒｕｎｎｉｎｇ」ラベル１２３は、スキャン操作が行われていることをユーザに認識させるためのラベルである。
【００９７】
更に、ユーザアプリ２５ａが、「Ｓｃａｎ  Ｓｔｏｐ」ボタン１２２及び「Ｓｃａｎ  Ｒｕｎｎｉｎｇ」ラベル１２３の表示要求と並行して、スキャンの操作要求を画像形成装置１０に送信すると（Ｓ１１７）、画像形成装置１０のハードウェア１１におけるスキャナによってスキャン操作が実行され、紙文書が電子化される（Ｓ１１８）。なお、ステップＳ１１７及びＳ１１８における端末処理装置２０と画像形成装置１０とのやり取りの詳細については後述する。
【００９８】
スキャン操作が正常に終了した場合は（Ｓ１１９でＹＥＳ）、正常終了のイベントがスキャナより発生する。端末処理装置通信部１５４は当該イベントを画像形成装置通信部２４４を介してユーザアプリ２５ａに通知する（Ｓ１２０）。
【００９９】
スキャン操作の正常終了の通知を受けたユーザアプリ２５ａが、ユーザアプリＡ用ウィンドウ１２０への「Ｓｃａｎ  Ｆｉｎｉｓｈ」ラベルの表示要求を画像形成装置１０に送信すると（Ｓ１２１）、当該表示要求を受信した画像形成装置１０の仮想ユーザアプリ１６は、オペレーションパネルに表示されているユーザアプリＡ用ウィンドウ１２０に当該ラベルを表示させる（Ｓ１２２）。
【０１００】
図１３は、「Ｓｃａｎ  Ｆｉｎｉｓｈ」ラベルが表示されたユーザアプリＡ用ウィンドウの表示例を示す図である。図１３において、「Ｓｃａｎ  Ｆｉｎｉｓｈ」ラベル１２４は、スキャン操作が正常終了したことをユーザに認識させるためのラベルである。
【０１０１】
一方、例えば、原稿の搬送中にジャムが発生したり、正常に画像が読み取れなかったり等、スキャン操作が異常終了した場合は（Ｓ１１９でＮＯ）、異常終了のイベントがスキャナより発生する。端末処理装置通信部１５４は当該イベントを画像形成装置通信部２４４を介してユーザアプリ２５ａに通知する（Ｓ１２３）。
【０１０２】
スキャン操作の異常終了の通知を受けたユーザアプリ２５ａが、ユーザアプリＡ用ウィンドウ１２０への「Ｓｃａｎ  Ｅｒｒｏｒ」ラベルの表示要求を画像形成装置１０に送信すると（Ｓ１２４）、当該表示要求を受信した画像形成装置１０の仮想ユーザアプリ１６は、オペレーションパネルに表示されているユーザアプリＡ用ウィンドウ１２０に当該ラベルを表示させる（Ｓ１２５）。
【０１０３】
図１４は、「Ｓｃａｎ  Ｅｒｒｏｒ」ラベルが表示されたユーザアプリＡ用ウィンドウの表示例を示す図である。図１４において、「Ｓｃａｎ  Ｅｒｒｏｒ」ラベル１２５は、スキャン操作が異常終了したことをユーザに認識させるためのラベルである。
【０１０４】
スキャン操作中、又はステップＳ１２２若しくはＳ１２５の後に、ユーザによって「Ｓｃａｎ  Ｓｔop」ボタン１２２が押下されると（Ｓ１２６）、仮想ユーザアプリ１６は、端末処理装置通信部１５４及び画像形成装置通信部２４４を介してユーザアプリ２５ａに対してスキャン操作の終了を通知する（Ｓ１２７）。仮想ユーザアプリ１６からの通知に応じ、ユーザアプリ２５ａは、終了化処理を実行し（Ｓ１２８）、終了する（Ｓ１２９）。
【０１０５】
次に、ステップＳ１０３における、端末処理装置２０と画像形成装置１０とのコネクションの確立処理の詳細について説明する。図１５は、端末処理装置と画像形成装置とのコネクションの確立処理の例を説明するためのフローチャートである。
【０１０６】
端末処理装置２０は、起動すると（Ｓ１３０）、画像形成装置１０が既に起動しているか否かを確認する（Ｓ１３１）。画像形成装置１０が既に起動している場合（Ｓ１３１でＹＥＳ）、端末処理装置２０の画像形成装置通信部２４４は、画像形成装置１０の端末処理装置通信部１５４に対してクライアントとして接続する（Ｓ１３２）。これによって、端末処理装置２０をトリガーとした通信手段が確保される。
【０１０７】
続いて、画像形成装置通信部２４４が、サーバポートを開け（Ｓ１３３）、サーバポートを開けた旨を端末処理装置通信部１５４に通知すると（Ｓ１３４）、当該通知を受けた端末処理装置通信部１５４よりクライアントとしての接続を受ける。これによって、画像形成装置１０をトリガーとした通信手段が確保される。
【０１０８】
一方、画像形成装置１０が、まだ起動していない場合（Ｓ１３１でＮＯ）、画像形成装置通信部２４４は、サーバポートを開けて画像形成装置１０からの接続を待つ（Ｓ１３６）。画像形成装置１０が起動すると（Ｓ１３７でＹＥＳ）、画像形成装置通信部２４４は、端末処理装置通信部１５４よりクライアントとしての接続を受ける（Ｓ１３８）。これによって、画像形成装置１０をトリガーとした通信手段が確保される。
【０１０９】
続いて、画像形成装置通信部２４４は、端末処理装置通信部１５４がサーバポートを開けた旨を受信し（Ｓ１３９）、端末処理装置通信部１５４に対してクライアントとしての接続を行う（Ｓ１４０）。これによって、端末処理装置２０をトリガーとした通信手段が確保される。
【０１１０】
このように、端末処理装置２０と画像形成装置１０の間では、双方をトリガーとした通信が可能となるようにコネクションが確立される。
【０１１１】
次に、ステップＳ１１７及びＳ１１８におけるスキャン操作処理の詳細について説明する。図１６は、スキャン操作処理の詳細を説明するためのフローチャートである。
【０１１２】
ユーザが画像形成装置１０のオペレーションパネルに表示されているユーザアプリＡ用ウィンドウ１２０の「Ｓｃａｎ  Ｓｔａｒｔ」ボタン１２１を押下すると（Ｓ１７１）、「Ｓｃａｎ  Ｓｔａｒｔ」ボタン１２１の押下を通知するオペレーションパネルからのイベントが発生する（Ｓ１７２）。
【０１１３】
端末処理装置通信部１５４は、当該イベントを検出すると、当該イベントの発生を通知するメッセージを端末処理装置２０の画像形成装置通信部２４４に送信する（Ｓ１７３）。画像形成装置通信部２４４が当該イベントの発生をユーザアプリ２５ａに通知すると（Ｓ１７４）、ユーザアプリ２５ａは、当該イベントに対応する処理として実装された業務ロジック（例えば、ユーザの業務に特有の処理）を実行する（Ｓ１７５）。このような処理が、端末処理装置２０側において行われることにより、画像形成装置１０の負荷を軽減させることができる。
【０１１４】
かかる業務ロジックの実行の中で画像形成装置１０のハードウェア１１（ここでは、スキャナ）の操作が必要になると、ユーザアプリ２５ａは、複合機クラスライブラリ２４２のＳｃａｎクラスに対してスキャナの操作要求を通知する（Ｓ１７６）。
【０１１５】
複合機クラスライブラリ２４２がユーザアプリ２５ａからの要求に応じ、スキャン操作を開始するためのネイティブ層の関数を呼び出すと（Ｓ１７７）、画像形成装置通信部２４４は、スキャン操作を開始するためのネイティブ関数のＲＰＣによる呼び出しを画像形成装置１０の端末処理装置通信部１５４に対して行う（Ｓ１７８）。
【０１１６】
ＲＰＣによるネイティブ関数の呼び出しを受けた端末処理装置通信部１５４は、当該ネイティブ関数の呼び出しを画像形成装置１０のネイティブ層（複合機アプリケーションサービス１４又はコントロールサービス１３に対して行う（Ｓ１７９）。なお、ここで、複合機アプリケーションサービス１４が呼び出された場合、その呼び出しは、最終的にはコントロールサービス１３に通知される。
【０１１７】
続いて、コントロールサービス１３におけるスキャンサービスは、ハードウェア１１のスキャナを制御し（Ｓ１８０）、スキャン操作を開始させる（Ｓ１８１）。スキャン操作の開始が成功すると、端末処理装置通信部１５４は、その旨を画像形成装置通信部２４４に対して通知する（Ｓ１８２）。画像形成装置通信部２４４は、スキャン操作の開始が成功したことをユーザアプリ２５ａに通知する（Ｓ１８３）。この通知に基づいて、ユーザアプリＡは、以降の処理を継続することになる。
【０１１８】
上述したように、第二の実施の形態における画像処理システム１によれば、画像形成装置１０のアプリケーションに対して要求された処理の少なくとも一部（第二の実施の形態では、ウィンドウや、ラベル及びボタンの生成処理や、業務ロジック等）を、端末処理装置２０に対して実行させ、必要に応じて画像形成装置１０のハードウェア資源の制御を端末処理装置２０に行わせる。すなわち、一般的にメモリ容量の制約の厳しい画像形成措置１０上ではなく、任意にメモリを増設することのできる端末処理装置２０のメモリを用いてユーザアプリを実行させることにより、画像形成装置１０に対する負荷を分散させることができる。したがって、メモリの制限に縛られず、多数のユーザアプリを同時に実行させることができる。
【０１１９】
更に、端末処理装置２０においては、画像形成装置通信部２４４等によって、ユーザアプリから見て透過的に画像形成装置１０に特有のハードウェア資源を操作することができる。すなわち、単に、画像形成装置１０上のアプリケーションをＰＣ等の汎用的なコンピュータに載せ替えただけでは当該コンピュータには、画像形成装置１０に特有のハードウェア資源は備わっていないため、当該アプリケーションの動作は保証されない。しかしながら、本実施の形態における端末処理装置２０によれば、上記のように、かかる問題点を解消することができる。
【０１２０】
なお、仮想ユーザアプリ１６は、画像形成装置１０上のパネルに、ユーザからの入力を受け付けるためのユーザインタフェースの表示制御や、端末処理装置２０上のユーザアプリの起動及び停止等の制御を行うことになるが、これらの処理は、表示部品（ボタンやラベル等）の生成処理や、業務ロジックの実行処理と比較するとメモリの消費量が少ない。したがって、仮想ユーザアプリ１６の実行を考慮しても、画像形成装置１０のメモリ消費量やＣＰＵに対する負荷を全体的に軽減させることができる。
【０１２１】
また、ユーザには仮想ユーザアプリ１６がユーザアプリ２５ａとして見える。したがって、ユーザアプリが画像形成装置１０で実行されているのか、ネットワークを介して端末処理装置２０で実行されているのか意識させることなく（すなわち、ユーザアプリ２５ａが画像形成装置１０に実装されている場合と変わりなく）、ユーザアプリを利用させることができる。
【０１２２】
また、複数の画像形成装置１０に対して一台の端末処理装置２０を対応させてもよい。この場合、複数の画像形成装置１０において仮想的に実行されるユーザアプリは、当該端末処理装置２０において一元管理されることになる。したがって、ユーザアプリのバージョンアップ等の保守作業の簡略化を図ることができる。
【０１２３】
次に、第三の実施の形態について説明する。第三の実施の形態では、ＣＰＵやメモリ等の制約が更に厳しく、Ｊａｖａ（登録商標）仮想マシンを搭載することのできない画像形成装置において、仮想的にＪａｖａ（登録商標）アプリ（ユーザアプリ）を実行させる例について説明する。
【０１２４】
図１７は、第三の実施の形態における画像形成装置の構成例を示す図である。図１７中、図６と同一部分には同一符号を付し、その説明は省略する。
【０１２５】
図１７における画像形成装置１０ａは、ＣＰＵやメモリ等の制約が更に厳しい画像形成装置の例である。したがって、仮想マシン１５１を含むＪａｖａ（登録商標）実行環境１５が実装されていない。
【０１２６】
一方で、画像形成装置１０ａは、複合機アプリケーション汎用サービス１４内で動作する端末処理装置通信部１４４と、複合機アプリケーション汎用サービス１４上で動作する仮想ユーザアプリ１６ａとを有している。
【０１２７】
端末処理装置通信部１４４の機能は、図６の端末処理装置通信部１５４の機能と同様である。但し、端末処理装置通信部１５４は、仮想マシン１５上で動作するＪａｖａ（登録商標）アプリとして実装されているのに対し、端末処理装置通信部１４４は、Ｃ又はＣ＋＋等によって実装され、複合機アプリケーション汎用サービス１４内で動作する点が異なる。
【０１２８】
仮想ユーザアプリ１６ａの機能は、図６の仮想ユーザアプリ１６の機能と同様である。但し、仮想ユーザアプリ１６は、仮想マシン１５上で動作するＪａｖａ（登録商標）アプリとして実装されているのに対し、仮想ユーザアプリ１６ａは、Ｃ又はＣ＋＋等によって実装され、複合機アプリケーション汎用サ−ビス１４上で動作する点が異なる。
【０１２９】
なお、画像形成装置１０ａも、ハードウェア１１の一部として、ユーザとの入出力用のインタフェースであるオペレーションパネルを備える。ユーザは、オペレーションパネルを操作することで、画像形成装置１０ａにおける各種アプリケーションの実行指示を行うことができる。
【０１３０】
図１８は、第三の実施の形態における端末処理装置の構成例を示す図である。図１８中、図７と同一部分には同一符号を付し、その説明は省略する。
【０１３１】
図１８における端末処理装置２０ａの構成は、図７における端末処理装置２０の構成とほぼ同様であるが、画像形成装置通信部２４４の代わりに画像形成装置通信部２３１を有する点で異なる。
【０１３２】
画像形成装置通信部２３１の機能は、画像形成装置通信部２４４の機能と同様である。但し、画像形成装置通信部２４４は、仮想マシン１５上で動作するＪａｖａ（登録商標）アプリとして実装されているのに対し、画像形成装置通信部２３１は、Ｃ又はＣ＋＋等によって実装され、複合機アプリケーション汎用サ−ビス２３内で動作する点が異なる。
【０１３３】
図１９は、第三の実施の形態における画像形成装置と端末処理装置とのインタラクションを示す図である。
【０１３４】
図１９に示されるように、画像形成装置１０ａの端末処理装置通信部１４４は、ネイティブ層からの非同期のイベント（Ｓ２１）や、仮想ユーザアプリ１６ａからの要求（Ｓ２２）を端末処理装置２０ａの画像形成装置通信部２３１に送信する（Ｓ２３）。
【０１３５】
端末処理装置２０ａの画像形成装置通信部２３１は、受信したイベントや要求を複合機クラスライブラリ２４２のイベントクラスを介して（Ｓ２４）、対応するユーザアプリ（ユーザアプリ２５ａ、２５ｂ、又は２５ｃ等）に通知する（Ｓ２５）。ユーザアプリ２５ａ等は、イベント又は要求に対応した処理を実行する。その処理の過程においてユーザアプリ２５ａ等は、複合機クラスライブラリ２４２を利用する（呼び出す）が、その際にネイティブ層以下の処理が必要な場合は、画像形成装置通信部２３１が、画像形成装置１０ａに対する操作要求を端末処理装置通信部１４４に送信する（Ｓ２６）。操作要求を受信した端末処理装置通信部１４４は、コントロールサービス１３等のネイティブ層に対して操作要求を通知する（Ｓ２７）。この操作要求に基づいて、画像形成装置１０ａに特有のハードウェア資源が制御され、スキャン、ＦＡＸの送受信、コピー等が実行される。
【０１３６】
なお、第三の実施の形態において、図９、図１５及び図１６に相当する処理手順は、上記の説明より自明であるため、ここでの説明は省略する。
【０１３７】
上述したように、第三の実施の形態における画像処理システム１によれば、仮想マシン１５１を搭載していない画像形成装置１０ａであっても、端末処理装置２０ａにユーザアプリを実行させることにより、ユーザアプリの実行を仮想的に実現することができる。
【０１３８】
なお、上記第二及び第三の実施の形態では、画像形成装置を電子機器の具体例として説明したが、本発明の適用対象が画像形成装置に限られない。例えば、デジタル家電、移動体通信端末、及び駅の自動改札機等、メモリ等の制約が厳しい反面、高速な処理が要求される各種の機器に対して本発明は有効である。
【０１３９】
以上、本発明の実施例について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【０１４０】
【図１】第一の実施の形態における情報処理システムの構成例を示す図である。
【図２】第一の実施の形態における情報処理システムにおける処理手順を説明するためのフローチャートである。
【図３】電子機器ユーザアプリ実行時における電子機器による処理の処理手順を説明するためのフローチャートである。
【図４】電子機器ユーザアプリ実行時における通信装置による処理の処理手順を説明するためのフローチャートである。
【図５】第二の実施の形態における画像処理システムの構成例を示す図である。
【図６】第二の実施の形態における画像形成装置の構成例を示す図である。
【図７】第二の実施の形態における端末処理装置の構成例を示す図である。
【図８】第二の実施の形態における画像形成装置と端末処理装置とのインタラクションを示す図である。
【図９】第二の実施の形態における画像処理システムにおけるユーザアプリの実行処理を説明するためのフローチャートである。
【図１０】ユーザアプリ選択画面の表示例を示す図である。
【図１１】「Ｓｃａｎ  Ｓｔａｒｔ」ボタンが貼り付けられたユーザアプリＡ用ウィンドウの表示例を示す図である。
【図１２】「Ｓｃａｎ  Ｓｔｏｐ」ボタン及び「Ｓｃａｎ  Ｒｕｎｎｉｎｇ」ラベルが表示されたユーザアプリＡ用ウィンドウの表示例を示す図である。
【図１３】「Ｓｃａｎ  Ｆｉｎｉｓｈ」ラベルが表示されたユーザアプリＡ用ウィンドウの表示例を示す図である。
【図１４】「Ｓｃａｎ  Ｅｒｒｏｒ」ラベルが表示されたユーザアプリＡ用ウィンドウの表示例を示す図である。
【図１５】端末処理装置と画像形成装置とのコネクションの確立処理の例を説明するためのフローチャートである。
【図１６】スキャン操作処理の詳細を説明するためのフローチャートである。
【図１７】第三の実施の形態における画像形成装置の構成例を示す図である。
【図１８】第三の実施の形態における端末処理装置の構成例を示す図である。
【図１９】第三の実施の形態における画像形成装置と端末処理装置とのインタラクションを示す図である。
【符号の説明】
【０１４１】
１              画像処理システム
１１            ハードウェア
１２            ＯＳ
１３            コントロールサービス
１４            複合機アプリケーション汎用サービス
１５            Ｊａｖａ（登録商標）実行環境
１６、１６ａ    仮想ユーザアプリ
１０、１０ａ    画像形成装置
２０、２０ａ    端末処理装置
２１            ハードウェア
２２            ＯＳ
２３            複合機アプリケーション汎用サービス
２４            Ｊａｖａ（登録商標）実行環境
２５ａ、２５ｂ、２５ｃ    ユーザアプリ
３０            ネットワーク
１０１、２０１  記録媒体
１４１          コピーアプリ
１４２          ＦＡＸアプリ
１４３          スキャンアプリ
１５１          仮想マシン
１５２          複合機クラスライブラリ
１５３          アプリケーション観リブ
１４４、１５４          端末処理装置通信部
２４１          仮想マシン
２４２          複合機クラスライブラリ
２４３          アプリケーション管理部
２３１、２４４          画像形成装置通信部
５００          情報処理システム
５１０          電子機器
５１１          ハードウェア
５１２          ＯＳ
５１３          電子機器サービス
５１４          電子機器ユーザアプリ
５１５          仮想ユーザアプリ
５２０          通信装置
５２１          ハードウェア
５２２          ＯＳ
５２３          電子機器サービス
５２４          電子機器ユーザアプリ
５３０          ネットワーク
５１３１        通信装置通信部
５２３１        電子機器通信部
【図１】
2007188468.tif 000003
【図２】
2007188468.tif 000004
【図３】
2007188468.tif 000005
【図４】
2007188468.tif 000006
【図５】
2007188468.tif 000007
【図６】
2007188468.tif 000008
【図７】
2007188468.tif 000009
【図８】
2007188468.tif 000010
【図９】
2007188468.tif 000011
【図１０】
2007188468.tif 000012
【図１１】
2007188468.tif 000013
【図１２】
2007188468.tif 000014
【図１３】
2007188468.tif 000015
【図１４】
2007188468.tif 000016
【図１５】
2007188468.tif 000017
【図１６】
2007188468.tif 000018
【図１７】
2007188468.tif 000019
【図１８】
2007188468.tif 000020
【図１９】
2007188468.tif 000021