以下、本発明の実施の形態について、図面を参照しながら説明する。
<全体構成例>
図1は、本実施形態に係る画像形成システム1の全体構成の一例を示す図である。図1に示すように、本発明の一実施形態に係る画像形成システム1には、1以上の画像形成装置10と、1以上の情報処理装置20とが含まれる。また、画像形成装置10と情報処理装置20とは、任意のネットワーク30を介して通信可能に接続されうる。
画像形成装置10は、複合機等の電子機器である。なお、画像形成装置10は、複合機に限られず、例えば、PJ(Projector:プロジェクタ)、IWB(Interactive White Board:相互通信が可能な電子式の黒板機能を有する白板)、デジタルサイネージ等の出力装置、HUD(Head Up Display)装置、産業機械、製造装置、撮像装置、集音装置、医療機器、ネットワーク家電、ノートPC(Personal Computer)、携帯電話、スマートフォン、タブレット端末、ゲーム機、PDA(Personal Digital Assistant)、デジタルカメラ、ウェアラブルPCまたはデスクトップPC等であってもよい。
情報処理装置20は、PC(パーソナルコンピュータ)等のコンピュータである。後述するように、情報処理装置20は、画像形成装置10上で動作するアプリケーションを開発し、及び、そのアプリケーションをシミュレーションする際に用いられる。
なお、図1に示す画像形成システム1の構成は一例であって、他の構成であってもよい。
<画像形成装置10のハードウェア構成例>
図2は、本実施形態に係る画像形成装置10のハードウェア構成の一例を示す図である。図2に示すように、本発明の一実施形態に係る画像形成装置10は、操作装置11と、本体装置12とを有している。
操作装置11は、本体装置12に実行させる画像処理機能の選択、画像処理機能を実行させるための各種設定値の入力、画像処理機能の実行を開始させるための実行指示の入力、表示画面の切り替え等、ユーザが各種操作を行う際に用いられる。
本体装置12は、操作装置11におけるユーザの各種操作に応じて、画像処理機能の実行等の各種の処理を実行する。
図2に示すように、画像形成装置10の操作装置11は、CPU(Central Processing Unit)111と、ROM(Read Only Memory)112と、RAM(Random Access Memory)113とを有している。また、操作装置11は、フラッシュメモリ114と、操作パネル115と、接続I/F116と、通信I/F117とを有している。これら各ハードウェアは、バス118を介して相互に接続されている。
CPU111は、RAM113をワークエリアとしてROM112又はフラッシュメモリ114に記憶された各種プログラムを実行することで、操作装置11全体を制御する演算装置である。
ROM112は、電源を切ってもデータを保持することができる不揮発性の半導体メモリ(記憶装置)である。RAM113は、プログラムやデータを一時保持する揮発性の半導体メモリ(記憶装置)である。
フラッシュメモリ114は、不揮発性の記憶装置であり、CPU111が実行する各種プログラム(例えば、本実施形態を実現するプログラム等)や各種データを記憶する。
操作パネル115は、ユーザが各種操作を行う際に用いられる。また、操作パネル115は、ユーザに対して各種画面等を表示する。
接続I/F116は、通信路13を介して本体装置12と通信するためのインタフェースである。接続I/F116には、例えばUSB(Universal Serial Bus)規格のインタフェースが用いられる。
通信I/F117は、他の機器等と通信するためのインタフェースである。通信I/F117には、例えば、Wi−Fi規格の無線LAN(Local Area Network)等が用いられる。
同様に、画像形成装置10の本体装置12は、CPU121と、ROM122と、RAM123とを有している。また、本体装置12は、HDD(Hard Disk Drive)124と、画像処理エンジン125と、接続I/F126と、通信I/F127とを有している。これら各ハードウェアは、バス128を介して相互に接続されている。
CPU121は、RAM123をワークエリアとしてROM122又はHDD124に記憶された各種プログラムを実行することで、本体装置12全体を制御する演算装置である。
ROM122は、電源を切ってもデータを保持することができる不揮発性の半導体メモリ(記憶装置)である。RAM123は、プログラムやデータを一時保持する揮発性の半導体メモリ(記憶装置)である。
HDD124は、不揮発性の記憶装置であり、CPU121が実行する各種プログラム(例えば、本実施形態を実現するプログラム等)や各種データを記憶する。
画像処理エンジン125は、印刷機能、スキャン機能、コピー機能、及びFAX機能等の各種の画像処理機能を実現するための画像処理を行うハードウェアである。
画像処理エンジン125には、例えば、用紙等のシート材への印刷を行うプロッタ、原稿を光学的に読み取って画像データを生成するスキャナ、及びFAX通信を行うFAX通信装置等が含まれる。また、画像処理エンジン125には、例えば、印刷済みのシート材を仕分けるフィニッシャや原稿を自動給送するADF(自動原稿給送装置)等が含まれていてもよい。
接続I/F126は、通信路13を介して操作装置11と通信するためのインタフェースである。接続I/F126には、例えば、USB規格のインタフェースが用いられる。
通信I/F127は、他の機器等と通信するためのインタフェースである。通信I/F127には、例えば、Wi−Fi規格の無線LAN等が用いられる。
本実施形態に係る画像形成装置10は、図2に示すハードウェア構成を有することにより、後述する各種処理を実現することができる。
なお、図2では、画像形成装置10が操作装置11を有している構成を一例として示したが、これに限られず、例えば、タブレット端末、スマートフォン、携帯電話、PDA等の情報処理装置20が画像形成装置10の操作装置として機能してもよい。すなわち、これらの情報処理装置20は、操作装置11の通信I/F117又は本体装置12の通信I/F127を介して画像形成装置10と通信することにより、当該画像形成装置10を制御することができてもよい。
<情報処理装置20のハードウェア構成例>
図3は、本実施形態に係る情報処理装置20のハードウェア構成の一例を示す図である。
図3に示すように、情報処理装置20は、入力装置31と、表示装置32と、外部I/F33と、RAM34と、ROM35と、CPU36と、通信I/F37と、補助記憶装置38とを有する。これら各ハードウェアは、それぞれがバス39を介して通信可能に接続されている。
入力装置31は、例えばキーボードやマウス、タッチパネル等であり、ユーザが各種操作を入力するのに用いられる。表示装置32は、例えばディスプレイ等であり、情報処理装置20の処理結果を表示する。
外部I/F33は、外部装置とのインタフェースである。外部装置には、記録媒体33a等がある。情報処理装置20は、外部I/F33を介して、記録媒体33a等の読み取りや書き込みを行うことができる。
記録媒体33aには、例えば、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disk)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等がある。
RAM34は、プログラムやデータを一時保持する揮発性の半導体メモリである。ROM35は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。ROM35には、例えば、OS設定やネットワーク設定等が格納されている。
CPU36は、ROM35や補助記憶装置38等からプログラムやデータをRAM34上に読み出して処理を実行する演算装置である。
通信I/F37は、情報処理装置20をネットワーク30に接続するためのインタフェースである。補助記憶装置38は、例えばHDDやSSD等であり、プログラムやデータを格納している不揮発性の記憶装置である。補助記憶装置38に格納されているプログラムやデータには、例えば、OS、当該OS上において各種機能を実現するアプリケーションプログラム等がある。
<画像形成装置10のソフトウェア群の階層構造>
図4は、本実施形態に係る画像形成装置10の操作装置11及び本体装置12に含まれるソフトウェア群の階層構造の一例を示す図である。
図4は、操作装置11に含まれるソフトウェア群の階層構造と、本体装置12に含まれるソフトウェア群の階層構造とを示している。
この図4に示すように、本体装置12は、アプリケーション層201と、サービス層202と、OS層203とを有する。アプリケーション層201、サービス層202及びOS層203の実体は、ROM122又はHDD124等に格納されている各種ソフトウェアである。CPU121が、これらのソフトウェアを実行することにより、各種の機能が提供される。
アプリケーション層201のソフトウェアは、ハードウェア資源を動作させて所定の機能を提供するためのアプリケーションソフトウェア(以下の説明では、単に「アプリケーション」と称する場合がある)である。例えばアプリケーションとしては、コピー機能を提供するためのコピーアプリケーション、スキャナ機能を提供するためのスキャナアプリケーション、ファクシミリ機能を提供するためのFAXアプリケーション、印刷機能を提供するためのプリンタアプリケーション等が挙げられる。
サービス層202のソフトウェアは、アプリケーション層201とOS層203との間に介在し、アプリケーションに対し、本体装置12が備えるハードウェア資源を利用するためのインタフェースを提供するソフトウェアである。具体的には、ハードウェア資源に対する動作要求の受け付け、動作要求の調停を行う機能を提供するためのソフトウェアである。サービス層202が受け付ける動作要求は、例えばスキャナによる読み取り又はプロッタによる印刷等の要求である。
なお、サービス層202によるインタフェースの機能は、本体装置12のアプリケーション層201だけではなく、操作装置11のアプリケーション層101に対しても提供される。すなわち、操作装置11のアプリケーション層101(アプリケーション)も、サービス層202のインタフェース機能を介して、本体装置12のハードウェア資源(例えば画像処理エンジン125)を利用した機能を実現することができる。
OS層203のソフトウェアは、本体装置12が備えるハードウェアを制御する基本機能を提供するための基本ソフトウェア(オペレーティングシステム)である。サービス層202のソフトウェアは、各種アプリケーションからのハードウェア資源の利用要求を、OS層203が解釈可能なコマンドに変換してOS層203に渡す。そして、OS層203のソフトウェアによりコマンドが実行されることで、ハードウェア資源は、アプリケーションの要求に従った動作を行う。
同様に、操作装置11は、アプリケーション層101と、OS層103とを有する。操作装置11が備えるアプリケーション層101及びOS層103も、階層構造については本体装置12側と同様である。ただし、アプリケーション層101のアプリケーションにより提供される機能が受け付け可能な動作要求の種類は、本体装置12側とは異なる。アプリケーション層101のアプリケーションは、操作装置11が備えるハードウェア資源を動作させて所定の機能を提供するためのソフトウェアである。例えば、本体装置12が備える機能(コピー機能、スキャナ機能、ファクシミリ機能、プリンタ機能)に関する操作及び表示を行うためのUI(ユーザインタフェース)の機能を提供するためのソフトウェアである。
また、本実施形態では、機能の独立性を保つために、本体装置12側のOS層203のソフトウェアと操作装置11側のOS層103のソフトウェアが互いに異なる。一例ではあるが、本体装置12側のOS層203のソフトウェアとしてLinux(登録商標)が設けられ、操作装置11側のOS層103のソフトウェアとしてAndroid(登録商標)が設けられている。これにより、本体装置12と操作装置11は、別々のオペレーティングシステムで互いに独立して動作するようになっている。
本体装置12及び操作装置11を、別々のオペレーティングシステムで動作させることで、本体装置12と操作装置11との間の通信は、共通の装置内のプロセス間通信ではなく、異なる装置間の通信として行われる。操作装置11が受け付けた入力(ユーザからの指示内容)を本体装置12へ伝達する動作(コマンド通信)及び本体装置12が操作装置11へイベントを通知する動作等がこれに該当する。ここでは、操作装置11が本体装置12へコマンド通信を行うことにより、本体装置12の機能を使用することができる。また、本体装置12から操作装置11に通知するイベントには、本体装置12における動作の実行状況、本体装置12側で設定された内容等が挙げられる。
<画像形成装置10に設けられているソフトウェア>
図5に、本実施形態に係る画像形成装置10に設けられているソフトウェアの一例を示す。上述のように、本体装置12は、アプリケーション層201、サービス層202及びOS層203に分かれている。このうち、アプリケーション層201には、図2に示す画像処理エンジン125を制御して、原稿の読み取り制御又は印刷制御等を行うアプリケーションが記憶されている。具体的には、アプリケーション層201には、コピーアプリケーション141、スキャナアプリケーション142、プリンタアプリケーション143及びFAXアプリケーション144が記憶されている。コピーアプリケーション141〜FAXアプリケーション144は、標準搭載のジョブ実行機能アプリケーションである。
また、サービス層202には、省エネルギー管理プログラム(省エネ管理プログラム)151、メモリ管理プログラム152及びエンジン制御プログラム153等の、各アプリケーションが共通で行う処理に対応する各種プログラムが記憶されている。サービス層202は、省エネルギー管理及びメモリ管理等、各アプリケーションが共通で行う処理を行っている。
これに対して、操作装置11は、アプリケーション層101及びOS層103に分かれている。本体装置アプリケーションと操作装置アプリケーションの違いは、本体装置のアプリケーションでは画像処理エンジン制御等を行うことで、例えば読み取り及び印刷等の画像形成装置10の機能を制御するのに対し、操作装置のアプリケーションではUI制御を行っている。つまり、操作装置アプリケーションで画面表示を行うことでユーザの操作を受け付け、そのユーザ操作に基づいた画像処理エンジン制御を本体装置アプリケーションが行っている。
操作装置アプリケーションには、同じ機能を実現する複数のアプリケーションが存在することもある。これは機能が同じでもUIのデザイン(見た目)又は搭載した機能を変えている場合である。図5の例では、一例として操作装置11に第1のコピー受付アプリケーション131と第2のコピー受付アプリケーション132が存在する。第2のコピー受付アプリケーション132は、第1のコピー受付アプリケーション131と比べて機能を少なくし、UIの見た目を簡単にしたアプリケーションである。
この第1のコピー受付アプリケーション131と第2のコピー受付アプリケーション132の関係と同じように、例えばスキャナアプリケーション等に対して開発ベンダーが開発するベンダーアプリケーション137が存在する。また、ベンダーアプリケーション137の開発を簡単にするために、操作装置11の第1のコピー受付アプリケーション131〜FAX受付アプリケーション135と同等の機能をベンダー等に提供する機能提供アプリケーション136が設けられている。
すなわち、操作装置11のアプリケーション層201には、ユーザインタフェースを介してユーザ操作を受け付けるアプリケーションが記憶されている。具体的には、アプリケーション層201には、ホームアプリケーション130、第1のコピー受付アプリケーション131、第2のコピー受付アプリケーション132、スキャナ受付アプリケーション133、プリンタ受付アプリケーション134、FAX受付アプリケーション135、機能提供アプリケーション136及びベンダーアプリケーション137が記憶されている。機能提供アプリケーション136は、画像処理プログラムの一例である。また、機能提供アプリケーション136は、一例として操作装置11のROM112、RAM113又はフラッシュメモリ114等の記憶部に記憶される。
ホームアプリケーション130は、所望の操作を指定するためのアイコン等が並べられたメイン画面(初期画面)を表示する。そして、ユーザによりアイコン操作を介して指定されたアプリケーションを起動する。第1のコピー受付アプリケーション131は、操作ボタン及び設定ボタンを介して、ユーザのコピー操作を受け付けるアプリケーションである。第2のコピー受付アプリケーション132は、主に使用頻度の高い操作ボタン及び設定ボタン等を表示することで、第1のコピー受付アプリケーション131よりも、表示する操作ボタン及び設定ボタンの数を減らし、視認性及び操作性の向上を図ったアプリケーションである。スキャナ受付アプリケーション133は、操作ボタン及び設定ボタン等を介して、ユーザのスキャナ操作を受け付けるアプリケーションである。プリンタ受付アプリケーション134は、操作ボタン及び設定ボタン等を介して、ユーザのスキャナ操作を受け付けるアプリケーションである。FAX受付アプリケーション135は、操作ボタン及び設定ボタン等を介して、ユーザのファクシミリ送受信操作を受け付けるアプリケーションである。
機能提供アプリケーション136は、上述のようにベンダーアプリケーション137の開発を容易化するために、操作装置11の第1のコピー受付アプリケーション131〜FAX受付アプリケーション135と同等の機能をベンダー等に提供する。
すなわち、機能提供アプリケーション136が例えばスキャナアプリケーション142に対応するアプリケーションの場合、通常の操作メニュー及び設定メニュー等のユーザインタフェースを表示する機能をベンダーに提供する。また、機能提供アプリケーション136が例えばプリンタアプリケーション143に対応するアプリケーションの場合、通常の操作メニュー及び設定メニュー等のユーザインタフェースを表示する機能をベンダーに提供する。
このように画像形成装置10の操作装置11には、第1のコピー受付アプリケーション131〜FAX受付アプリケーション135と同等の機能をベンダー等に提供するための機能提供アプリケーション136が設けられている。ベンダーアプリケーション137の開発ベンダーに対しては、機能提供アプリケーション136の機能を実現するAPI(Application Programming Interface)が公開されている。
<従来の機能提供アプリケーション170によるシミュレーション>
図6は、従来の機能提供アプリケーション170によるシミュレーションを説明するための図である。従来、サードベンダ等は、画像形成装置10の本体装置12そのものを用いて、あるいは、画像形成装置10の本体装置12の動作や機能を模倣する専用のエミュレータ174を用いて、開発したベンダーアプリケーション137をシミュレーション(動作テスト)していた。図6の左側は、画像形成装置10の本体装置12そのものを用いてシミュレーションする場合である。図6の右側は、情報処理装置20にセットアップされた専用エミュレータ174を用いてシミュレーションする場合である。
上述のとおり、ベンダーアプリケーション137は、画像形成装置10上で印刷やスキャン等の画像処理を行うためのアプリケーションである。このベンダーアプリケーション137がシミュレーション(動作テスト)される。ユーザ(つまり、動作テストを行う者)は、ベンダーアプリケーション137で、画像形成装置10上で印刷やスキャン等の画像処理を行うための操作をする。ベンダーアプリケーション137は、ユーザがベンダーアプリケーション137で操作をすると、機能提供アプリケーション170を呼び出す。
機能提供アプリケーション170は、ベンダーアプリケーション137から呼び出されると、印刷やスキャン等の画像処理のためのUI(ユーザインタフェース)を提供する。また、機能提供アプリケーション170は、ユーザによるUIの操作に従って、本体装置12または専用エミュレータサーバ175と通信して、印刷やスキャン等の画像処理の要求を行う。
図6に示すように、従来の機能提供アプリケーション170は、UI(ユーザインタフェース)層171と、ロジック層172と、API(Application Programming Interface)コール層173とに分かれている。UI層171は、設定画面といった印刷やスキャン等の画像処理のためのUI(ユーザインタフェース)を提供する。ロジック層172は、印刷やスキャン等の画像処理のジョブの実行やエラーハンドリング等のロジックを構築する。APIコール層173は、ロジック層172からの要求を受けて、本体装置12または専用エミュレータサーバ175に印刷やスキャン等の画像処理の要求を行う。また、APIコール層173は、本体装置12または専用エミュレータサーバ175からジョブの実行状態やエラーの発生等の通知を受け、ロジック層172に通知する。以下、<本体装置を用いた場合>と<専用エミュレータを用いた場合>に分けて詳細に説明する。
<本体装置を用いた場合>
画像形成装置10の本体装置12そのものを用いてシミュレーションする場合、操作装置11内の機能提供アプリケーション170は、ベンダーアプリケーション137から呼び出されると、本体装置12に対して、印刷やスキャン等の画像処理の要求を行う。
<専用エミュレータを用いた場合>
専用エミュレータ174を用いてシミュレーションする場合、情報処理装置20内の機能提供アプリケーション170は、ベンダーアプリケーション137から呼び出されると、専用エミュレータサーバ175に対して、印刷やスキャン等の画像処理の要求を行う。専用エミュレータ174は、画像形成装置10の本体装置12の動作や機能を模倣するエミュレータである。専用エミュレータサーバ175は、画像形成装置10の本体装置12を代替する。具体的には、専用エミュレータサーバ175は、機能提供アプリケーション170から印刷やスキャン等の画像処理のジョブの実行要求を受けて、それらのジョブを実行する。また、専用エミュレータサーバ175は、ジョブの実行状態(例えば、ジョブ実行開始、ジョブ実行中、ジョブ実行終了等)を機能提供アプリケーション170へ通知する。
図7は、従来の機能提供アプリケーション170によるシミュレーションを示すシーケンス図である。なお、上述の<本体装置を用いた場合>で説明するが、<専用エミュレータを用いた場合>も同様である。
ステップS101において、ベンダーアプリケーション137が起動する。
ステップS102において、ベンダーアプリケーション137上で、印刷やスキャン等の画像処理の設定を行うための設定ボタンが押下されたとする。
ステップS103において、ベンダーアプリケーション137は、機能提供アプリケーション170を起動する(呼び出す)。
ステップS104において、APIコール層173は、機器情報(例えば、複合機等の画像形成装置10のモデル名、ケイパビリティ(性能)情報、省エネ情報等)を返すよう本体装置12に要求する。なお、S104は、図7のように機能提供アプリケーション170が呼び出されたときに行われてもよいし、本体装置12が起動したときに行われてもよい。
ステップS105において、本体装置12は、APIコール層173に機器情報を返却する。
ステップS106において、APIコール層173は、ロジック層172に機器情報を通知する。
ステップS107において、ロジック層172は、機器情報に基づいて、設定画面を表示するようUI層171に要求する。
ステップS108において、UI層171は、設定画面を表示する。
ステップS109において、機能提供アプリケーション170上で、印刷やスキャン等の画像処理の実行を開始するためのスタートボタンが押下されたとする。
ステップS110において、UI層171は、スタートボタンが押下されたことをロジック層172に通知する。
ステップS111において、ロジック層172は、印刷やスキャン等の画像処理のAPIの使用をAPIコール層173に要求する。
ステップS112において、APIコール層173は、本体装置12に印刷やスキャン等の画像処理の実行を要求する。
ステップS113において、本体装置12は、印刷やスキャン等の画像処理を実行する。
ステップS114において、本体装置12は、ジョブ実行開始をAPIコール層173に通知する。
ステップS115において、APIコール層173は、ジョブ実行開始をロジック層172に通知する。
ステップS116において、ロジック層172は、ジョブ実行中画面を表示するようUI層171に要求する。
ステップS117において、UI層171は、ジョブ実行中画面を表示する。
ステップS118において、本体装置12は、ジョブ実行中(1枚目)をAPIコール層173に通知する。
ステップS119において、APIコール層173は、ジョブ実行中(1枚目)をロジック層172に通知する。
ステップS120において、ロジック層172は、ジョブ実行中画面(1枚目)を更新するようUI層171に要求する。
ステップS121において、UI層171は、ジョブ実行中画面(1枚目)を更新する。
ステップS122において、本体装置12は、ジョブ実行中(2枚目)をAPIコール層173に通知する。
ステップS123において、APIコール層173は、ジョブ実行中(2枚目)をロジック層172に通知する。
ステップS124において、ロジック層172は、ジョブ実行中画面(2枚目)を更新するようUI層171に要求する。
ステップS125において、UI層171は、ジョブ実行中画面(2枚目)を更新する。
ステップS126において、本体装置12は、ジョブ実行終了をAPIコール層173に通知する。
ステップS127において、APIコール層173は、ジョブ実行終了をロジック層172に通知する。
ステップS128において、ロジック層172は、ジョブ実行中画面を非表示にするようUI層171に要求する。
ステップS129において、UI層171は、ジョブ実行中画面を非表示にする。
ステップS130において、ロジック層172は、ベンダーアプリケーション137にジョブ実行の結果を返却する。
ステップS131において、ベンダーアプリケーション137は、ベンダーアプリケーション137に固有の処理を行う。
<本実施形態に係る機能提供アプリケーション180によるシミュレーション>
図8は、本実施形態に係る機能提供アプリケーション180によるシミュレーションを説明するための図である。本発明の一実施形態では、サードベンダ等は、汎用のエミュレータ184を用いて、開発したベンダーアプリケーション137をシミュレーション(動作テスト)することができる。
汎用エミュレータ184は、Android Studioで利用できるエミュレータ等、Java(登録商標)で記述されたベンダーアプリケーション137を動作させることができる汎用的なエミュレータである。
上述のとおり、ベンダーアプリケーション137は、画像形成装置10上で印刷やスキャン等の画像処理を行うためのアプリケーションである。このベンダーアプリケーション137が情報処理装置20においてシミュレーション(動作テスト)される。ユーザ(つまり、動作テストを行う者)は、ベンダーアプリケーション137で、画像形成装置10上で印刷やスキャン等の画像処理を行うための操作をする。ベンダーアプリケーション137は、ユーザがベンダーアプリケーション137で操作をすると、機能提供アプリケーション180を呼び出す。
機能提供アプリケーション180は、ベンダーアプリケーション137から呼び出されると、印刷やスキャン等の画像処理のためのUI(ユーザインタフェース)を提供する。なお、本実施形態に係る機能提供アプリケーション180は、シミュレーションのために、本体装置12または専用エミュレータサーバ175と通信して、印刷やスキャン等の画像処理の要求を行う必要がない。
図8に示すように、本実施形態に係る機能提供アプリケーション180は、UI(ユーザインタフェース)層181と、ロジック層182と、ダミー層183とに分かれている。UI層181は、設定画面といった印刷やスキャン等の画像処理のためのUI(ユーザインタフェース)を提供する。ロジック層182は、印刷やスキャン等の画像処理のジョブの実行やエラーハンドリング等のロジックを構築する。
ダミー層183は、ロジック層182からの要求を受けて、ダミー層183で処理を行い(後述する)、処理の結果をロジック層182に通知する。
このように、本実施形態に係る機能提供アプリケーション180は、本体装置12と同じユーザインタフェースやロジックを有している。そのため、本体装置12そのものや専用エミュレータ174を用いなくても、汎用エミュレータ184を用いてベンダーアプリケーション137をシミュレーション(動作テスト)することができる。
<機能提供アプリケーション180の機能>
図9は、本実施形態に係る機能提供アプリケーション180の機能ブロックの一例を示す図である。情報処理装置20のCPU36は、例えばROM35、RAM34又は補助記憶装置38等の記憶部に記憶されている機能提供アプリケーション180を実行することで、図9に示す受信部161、記憶制御部162、切り替え部163、設定処理部164、及び、表示制御部165を実現する。
受信部161は、ユーザが操作装置11の操作パネル115を介して行った入力操作に対応するコマンドを受信する。
記憶制御部162は、画面表示要求のあったアプリケーションに対応する情報を、例えばROM35、RAM34又は補助記憶装置38等の記憶部から読み出し又は保存等を行う。
切り替え部163は、ユーザによる操作装置11の操作パネル115の操作に応じて、操作装置11の操作パネル115に表示する画面の切り替えを行う。
設定処理部164は、設定画面を介してユーザにより設定された設定内容をベンダーアプリケーション137に通知する等の設定処理を行う。
表示制御部166は、操作装置11の操作パネル115に対してメイン画面又は設定画面等の表示制御を行う。
なお、この例では、受信部161〜表示制御部165をソフトウェアで実現することとしたが、受信部161〜表示制御部165のうち、一部又は全部を、IC(Integrated Circuit)等のハードウェアで実現してもよい。
また、機能提供アプリケーション180は、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)等のコンピュータ装置で読み取り可能な記録媒体に記録して提供してもよい。また、CD−R、DVD(Digital Versatile Disk)、ブルーレイディスク(登録商標)、半導体メモリ等のコンピュータ装置で読み取り可能な記録媒体に記録して提供してもよい。また、機能提供アプリケーション180は、インターネット等のネットワーク経由でインストールするかたちで提供してもよい。また、機能提供アプリケーション180は、機器内のROM等に予め組み込んで提供してもよい。
図10は、本実施形態に係る機能提供アプリケーション180によるシミュレーションを示すシーケンス図である。
ステップS201において、ベンダーアプリケーション137が起動する。
ステップS202において、ベンダーアプリケーション137上で、印刷やスキャン等の画像処理の設定を行うための設定ボタンが押下されたとする。例えば、ユーザは、図11に示されるようなベンダーアプリケーション137の画面上で印刷やスキャン等の画像処理の設定を行うための設定ボタンを押下する。
ステップS203において、ベンダーアプリケーション137は、S202で設定ボタンが押下されると、機能提供アプリケーション180を起動する(呼び出す)。
ステップS204において、ダミー層183は、ダミーの機器情報(例えば、複合機等の画像形成装置10のモデル名、ケイパビリティ(性能)情報、省エネ情報等)を生成する。なお、S204は、図10のように機能提供アプリケーション180が呼び出されたときに行われてもよいし、汎用エミュレータ184が起動したときに行われてもよい。
ステップS205において、ダミー層183は、ロジック層182にダミーの機器情報を通知する。
ステップS206において、ロジック層182は、ダミーの機器情報に基づいて、設定画面を表示するようUI層181に要求する。
ステップS207において、UI層181は、設定画面を表示する。
ステップS208において、機能提供アプリケーション180上で、印刷やスキャン等の画像処理の実行を開始するためのスタートボタンが押下されたとする。例えば、ユーザは、図12に示されるような設定画面上で印刷やスキャン等の画像処理の実行を開始するためのスタートボタンを押下する。
ステップS209において、UI層181は、スタートボタンが押下されたことをロジック層182に通知する。
ステップS210において、ロジック層182は、印刷やスキャン等の画像処理のAPIの使用をダミー層183に要求する。
ステップS211において、ダミー層183は、印刷やスキャン等の画像処理の実行結果のダミーデータ(例えば、ジョブの成功や失敗等の情報)を作成する。
ステップS212において、ダミー層183は、ジョブ実行開始をロジック層182に通知する。
ステップS213において、ロジック層182は、ジョブ実行中画面を表示するようUI層181に要求する。
ステップS214において、UI層181は、ジョブ実行中画面を表示する。例えば、UI層181は、図13に示されるようなジョブ実行中画面を表示する。
ステップS215において、ダミー層183は、ジョブ実行中(1枚目)をロジック層182に通知する。
ステップS216において、ロジック層182は、ジョブ実行中画面(1枚目)を更新するようUI層181に要求する。
ステップS217において、UI層181は、ジョブ実行中画面(1枚目)を更新する。
ステップS218において、ダミー層183は、ジョブ実行中(2枚目)をロジック層182に通知する。
ステップS219において、ロジック層182は、ジョブ実行中画面(2枚目)を更新するようUI層181に要求する。
ステップS220において、UI層181は、ジョブ実行中画面(2枚目)を更新する。
ステップS221において、ダミー層183は、ジョブ実行終了をロジック層182に通知する。
ステップS222において、ロジック層182は、ジョブ実行中画面を非表示にするようUI層181に要求する。
ステップS223において、UI層181は、ジョブ実行中画面を非表示にする。
ステップS224において、ロジック層182は、ベンダーアプリケーション137にジョブ実行の結果を返却する。
ステップS225において、ベンダーアプリケーション137は、ベンダーアプリケーション137に固有の処理を行う。
<本実施形態に係る機能提供アプリケーションによるシミュレーション>
図14は、本実施形態に係る機能提供アプリケーション180によるシミュレーションをさらに説明するための図である。以下、図8と異なる点を説明する。
図14に示すように、任意のフォルダ(汎用エミュレータ184内の任意のフォルダ)に、複数のダミー情報185があらかじめ登録されている。ダミー情報185は、複合機等の画像形成装置10の機器情報(例えば、複合機のモデル名、ケイパビリティ(性能)情報、省エネ情報等)、及び、印刷やスキャン等の画像処理の実行結果(例えば、ジョブの成功や失敗等の情報)である。ダミー情報は、例えば、XML(Extensible Markup Language)やJSON(JavaScript Object Notation)等で記述されている。
複合機等の画像形成装置10の機器情報、及び、印刷やスキャン等の画像処理の実行結果は、汎用エミュレータ184が参照先に指定するフォルダにファイルとして格納される。ファイルを別のファイルに置き換えてエミュレートを実行することで、機能提供アプリケーション180は別のファイルの別の機器情報及び別の実行結果を参照して、異なる画像形成装置10の動作を汎用エミュレータ184でエミュレートすることができる。つまり、異なる機種の画像形成装置10の実行結果をテストすることができる。
ダミー情報は、例えば図15に示されるような、機種名がモノクロ機であるという機器情報である。この場合、印刷の設定画面ではカラー印刷の設定項目が表示されない。また、ダミー情報は、例えば図16に示されるような、原稿詰まりのエラーが発生したという実行結果である。この場合、原稿詰まりのエラーが発生したことを示すエラー画面が表示される。
ダミー層183は、ダミー情報185を取得して、取得したダミー情報185に基づいて、ダミー機器情報を生成する。また、ダミー層183は、ダミー情報185を取得して、取得したダミー情報185に基づいて、印刷やスキャン等の画像処理の実行結果のダミーデータを作成する。
このように、本実施形態では、汎用エミュレータ184を用いたシミュレーションであっても、複合機等の画像形成装置10ごとの設定項目の違いの確認、画像処理の実行結果(つまり、ジョブの成功と失敗)によるジョブの実行状態の通知の違いの確認をすることができる。
以下、ダミー情報185を用いたシミュレーションをジョブ成功とジョブ失敗との場合に分けて説明する。
図17は、本実施形態に係る機能提供アプリケーションによるシミュレーション(ジョブ成功)を示すシーケンス図である。
ステップS301において、ベンダーアプリケーション137が起動する。
ステップS302において、ベンダーアプリケーション137上で、印刷やスキャン等の画像処理の設定を行うための設定ボタンが押下されたとする。
ステップS303において、ベンダーアプリケーション137は、S302で設定ボタンが押下されると、機能提供アプリケーション180を起動する(呼び出す)。
ステップS304において、ダミー層183は、ダミー情報185を取得する。なお、S304は、図17のように機能提供アプリケーション180が呼び出されたときに行われてもよいし、汎用エミュレータ184が起動したときに行われてもよい。
ステップS305において、ダミー層183は、S304で取得したダミー情報185に基づいて、ダミーの機器情報(例えば、複合機等の画像形成装置10のモデル名、ケイパビリティ(性能)情報、省エネ情報等)を生成する。
ステップS306において、ダミー層183は、ロジック層182にダミーの機器情報を通知する。
ステップS307において、ロジック層182は、ダミーの機器情報に基づいて、設定画面を表示するようUI層181に要求する。例えば、ダミー情報が、図15のような機種名がモノクロ機であるという機器情報であった場合、ロジック層182は、印刷の設定画面ではカラー印刷の設定項目を表示しない(つまり、カラー設定でフルカラーを選択肢として表示しない)。
ステップS308において、UI層181は、設定画面を表示する。
ステップS309において、機能提供アプリケーション180上で、印刷やスキャン等の画像処理の実行を開始するためのスタートボタンが押下されたとする。
ステップS310において、UI層181は、スタートボタンが押下されたことをロジック層182に通知する。
ステップS311において、ロジック層182は、印刷やスキャン等の画像処理のAPIの使用をダミー層183に要求する。
ステップS312において、ダミー層183は、ダミー情報185を取得する。
ステップS313において、ダミー層183は、S12で取得したダミー情報185に基づいて、印刷やスキャン等の画像処理の実行結果のダミーデータ(例えば、ジョブの成功や失敗等の情報)を作成する。
ステップS314〜ステップS327は、図10のステップS212〜ステップS225と同様であるので説明を省略する。
図18は、本実施形態に係る機能提供アプリケーションによるシミュレーション(ジョブ失敗)を示すシーケンス図である。
ステップS401〜ステップS419は、図17のステップS301〜ステップS319と同様であるので説明を省略する。
ステップS420において、ダミー層183は、S412で取得したダミー情報185に基づいて、ジョブにエラーが発生したことをロジック層182に通知する。
ステップS421において、ロジック層182は、エラー画面を表示するようUI層181に要求する。
ステップS422において、UI層181は、エラー画面を表示する。例えば、UI層181は、図19に示されるようなエラー画面を表示する。UI層181は、ジョブ実行中画面に重ねてエラー画面を表示してもよいし、あるいは、ジョブ実行中画面を非表示にしてエラー画面を表示してもよい。
ステップS423において、ダミー層183は、エラーが解除されたことをロジック層182に通知する。図19のような原稿詰まりのエラーの場合、エミュレータ上ではエラーを解決することができないので、ダミー層183は、一定時間経過後に、エラー解除を通知する。
ステップS424において、ロジック層182は、エラー画面を非表示にするようUI層181に要求する。
ステップS425において、UI層181は、エラー画面を非表示にする。
ステップS426において、ダミー層183は、ジョブ実行中(2枚目)をロジック層182に通知する。
ステップS427において、ロジック層182は、ジョブ実行中画面(2枚目)を更新するようUI層181に要求する。
ステップS428において、UI層181は、ジョブ実行中画面(2枚目)を更新する。
ステップS429において、ダミー層183は、ジョブ実行終了をロジック層182に通知する。
ステップS430において、ロジック層182は、ジョブ実行中画面を非表示にするようUI層181に要求する。
ステップS431において、UI層181は、ジョブ実行中画面を非表示にする。
ステップS432において、ロジック層182は、ベンダーアプリケーション137にジョブ実行の結果を返却する。
ステップS433において、ベンダーアプリケーション137は、ベンダーアプリケーション137に固有の処理を行う。
このように、本発明の一実施形態では、複合機等の画像形成装置の専用エミュレータを用いなくても、汎用エミュレータを用いて、ベンダーアプリケーションのシミュレーションをすることができる。
上記で説明した実施形態の各機能は、一又は複数の処理回路によって実現することが可能である。ここで、本明細書における「処理回路」とは、電子回路により実装されるプロセッサのようにソフトウェアによって各機能を実行するようプログラミングされたプロセッサや、上記で説明した各機能を実行するよう設計されたASIC(Application Specific Integrated Circuit)、DSP(Digital single processor)、FPGA(field programmable gate array)や従来の回路モジュール等のデバイスを含むものとする。
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。