以下に添付図面を参照して、電子機器、画面表示方法およびプログラムの実施の形態を詳細に説明する。
(第1の実施の形態)
図1は、第1の実施の形態にかかる複合機(MFP:Multifunction Peripheral)1のハードウェア構成図である。MFP1は、画像処理装置(電子機器)の一例である。MFP1は、図1に示すように例えばコピー機能、スキャナ機能、ファクシミリ機能、プリンタ機能等の各種の画像処理を実行する本体部である本体10と、例えばユーザから画像処理の実行指示の操作を受け付ける操作部20とを備える。
本体10と操作部20は、専用の通信路30を介して相互に通信可能に接続されている。通信路30は、例えばUSB(Universal Serial Bus)規格のものを用いることができる。また、通信路30は、有線又は無線を問わず任意の規格のものでもよい。また、本体10は、コピー機能、スキャナ機能、ファクシミリ機能、プリンタ機能等の画像形成機能のうち、一つの機能を有していてもよいし、複数の機能を有していてもよい。
操作部20としては、単独で完結した情報処理を実行可能な電子機器を用いることができる。一例として、操作部20としては、スマートフォン又はタブレット型端末等の情報処理端末を用いることができる。この場合、操作部20として用いられる情報処理端末は、MFP1の操作部として機能する。
より詳しくは、従来、MFP1には、操作部として専用の操作パネルが固定され設置されていた。これに対して、第1の実施の形態のMFP1の操作部20として用いられる情報処理端末は、MFP1の本体10に装着及び取り外し可能となっている。すなわち、操作部20として用いられる情報処理端末は、例えばMFP1の操作パネルが配置される位置等の所定の位置から取り外し可能(分離可能)ながらも、MFP1と一体的に設置することも可能となっている。このため、操作部20として用いられる情報処理端末及びMFP1は、一台の装置として把握されるものである。
操作部20として用いられる情報処理端末は、MFP1から取り外されると、MFP1との間で、例えばBluetooth(登録商標)又は赤外線通信等の無線通信を行い、MFP1の操作部として機能する。
本体10は、操作部20で受け付けた入力に応じた動作を行う。また、本体10は、クライアントPC(パーソナルコンピュータ)等の外部装置とも通信可能であり、外部装置から受信した指示に応じた動作も行う。
(本体のハードウェア構成)
次に、本体10のハードウェア構成について説明する。図1に示すように、本体10は、CPU(Central Processing Unit)11と、ROM(Read Only Memory)12と、RAM(Random Access Memory)13と、HDD(Hard Disk Drive)14とを備える。また、本体10は、通信I/F(Interface)15と、接続I/F16と、エンジン17と、ファクシミリモデム(FAXモデム)19とを備える。各部11~17及びFAXモデム19は、システムバス18を介して相互に接続されている。
CPU11は、後述する制御アプリケーションを実行する第1のCPUとして機能するものであって、本体10の動作を統括的に制御する。CPU11は、RAM13をワークエリア(作業領域)としてROM12又はHDD14等に格納されたプログラムを実行することで、本体10全体の動作を制御し、上述したコピー機能、スキャナ機能、ファクシミリ機能、プリンタ機能などの各種の画像形成機能を実現する。なお、この本体10のHDD14は、フラッシュメモリを用いても、同様に実現可能である。
通信I/F15は、ネットワーク40上のクライアントPC(Personal Computer)、Webサーバ装置又は認証サーバ装置等の外部装置と通信するためのインタフェースである。接続I/F16は、通信路30を介して操作部20と通信するためのインタフェースである。なお、図1及び以下に説明する図2において、通信路30は、有線的に図示しているが、上述のように操作部20は、MFP1の本体10に対して装着及び取り外しが可能となっている。このため、操作部20をMFP1に装着しているときには、通信路30は有線通信路として機能し、操作部20をMFP1から取り外したときには、通信路30は無線通信路として機能するものと理解されたい。
エンジン17は、コピー機能、スキャナ機能、ファクシミリ機能及びプリンタ機能等を実現させるための、汎用的な情報処理及び通信以外の処理を行うハードウェアである。エンジン17は、例えば原稿の画像をスキャンして読み取るスキャナ、用紙等のシート材への印刷を行うプロッタ、ファクシミリ通信を行うファクシミリ通信部等を備えている。さらに、印刷済みシート材を仕分けるフィニッシャ及び原稿を自動給送するADF(Auto Document Feeder:自動原稿給送装置)のような特定のオプションを設けてもよい。
(操作部のハードウェア構成)
次に、操作部20のハードウェア構成について説明する。図1に示すように、操作部20は、CPU21と、ROM22と、RAM23と、フラッシュメモリ24と、通信I/F25と、接続I/F26と、操作パネル27と、ICカードI/F29とを備え、これらがシステムバス28を介して相互に接続されている。なお、この操作部20のフラッシュメモリ24は、HDDを用いても同様に実現可能である。
CPU21は、後述する各種のアプリケーション及び機能提供アプリケーションを実行する第2のCPUとして機能するものであって、操作部20の動作を統括的に制御する。CPU21は、RAM23をワークエリア(作業領域)としてROM22等に格納されたプログラムを実行することで操作部20全体の動作を制御する。また、CPU21は、ROM22等に格納されたユーザ認証プログラムを実行することでユーザ認証処理を行う。通信I/F25は、例えばネットワーク40上のサーバ装置60と通信するためのインタフェースである。接続I/F26は、通信路30を介して本体10と通信するためのインタフェースである。
ICカードI/F29は、例えばUSBケーブル等を介してカードリーダ6に接続されている。カードリーダ6は、MFP1に対するログイン操作のときに、ユーザにより近接操作(非接触操作)されたICカード5との間で非接触無線通信を行い、ICカード5に記憶されているカードID、ユーザ情報等の認証情報の読み取りを行う。なお、非接触操作のほか、接触操作でICカード5から認証情報を読み取ってもよい。
また、一例として、カードリーダ6と操作部20は、物理的に異なる装置同士が、USBケーブル等を介して接続されていることとしたが、操作部20にカードリーダ6が内蔵されていてもよい。すなわち、操作部20とカードリーダ6が一体的に形成されていてもよい(一つの装置として形成されていてもよい)。
また、ICカード又はIDカード等の呼称の違いがあっても、記憶媒体であれば、どのような記憶媒体でも本発明を適用可能であり、ICカード又はIDカード等のみに本発明の適用範囲が限定されることはない。また、カードリーダ装置も同様であり、このような記憶媒体からユーザ情報を読み取れる装置であればいずれも用いることができる。
操作パネル27は、タッチセンサを備えた液晶表示装置(LCD:Liquid Crystal Display)で構成される。操作パネル27は、ユーザの操作に応じた各種の入力を受け付けると共に、例えば受け付けた入力に応じた情報、MFP1の動作状況を示す情報、設定状態を示す情報等の各種の情報を表示する。なお、操作パネル27は、タッチセンサを備えた有機EL(Organic Light-Emitting Diode:OLED)表示装置で構成してもよい。さらに、これに加えて又はこれに代えて、ハードウェアキー等の操作部又は発光部等の表示部を設けてもよい。
(MFPのソフトウェア構成)
図2は、MFP1のソフトウェア構成の一例を示す図である。この図2に示すように、本体10は、アプリ層101と、サービス層102と、OS(Operating System)層103とを有する。アプリ層101、サービス層102及びOS層103の実体は、ROM12又はHDD14等に格納されている各種ソフトウェアである。CPU11が、これらのソフトウェアを実行することにより、各種の機能が提供される。
アプリ層101のソフトウェアは、ハードウェア資源を動作させて所定の機能を提供する、すなわちMFP1の機能を実行制御するための制御アプリケーション(以下の説明では、単に「アプリ」と称する場合がある)である。例えばアプリとしては、コピー機能を提供するためのコピーアプリ、スキャナ機能を提供するためのスキャナアプリ、ファクシミリ機能を提供するためのFAXアプリ、プリンタ機能を提供するためのプリンタアプリ等が挙げられる。
サービス層102のソフトウェアは、アプリ層101とOS層103との間に介在し、アプリに対し、本体10が備えるハードウェア資源を利用するためのインタフェースを提供するソフトウェアである。具体的には、ハードウェア資源に対する動作要求の受け付け、動作要求の調停を行う機能を提供するためのソフトウェアである。サービス層102が受け付ける動作要求は、例えばスキャナによる読み取り又はプロッタによる印刷等の要求である。
なお、サービス層102によるインタフェースの機能は、本体10のアプリ層101だけではなく、操作部20のアプリ層201に対しても提供される。すなわち、操作部20のアプリ層201(アプリ)も、サービス層102のインタフェース機能を介して、本体10のハードウェア資源(例えばエンジン17)を利用した機能を実現することができる。
OS層103のソフトウェアは、本体10が備えるハードウェアを制御する基本機能を提供するための基本ソフトウェア(オペレーティングシステム)である。サービス層102のソフトウェアは、各種アプリからのハードウェア資源の利用要求を、OS層103が解釈可能なコマンドに変換してOS層103に渡す。そして、OS層103のソフトウェアによりコマンドが実行されることで、ハードウェア資源は、アプリの要求に従った動作を行う。
同様に、操作部20は、アプリ層201と、OS層203とを有する。操作部20が備えるアプリ層201及びOS層203も、階層構造については本体10側と同様である。ただし、アプリ層201のアプリにより提供される機能が受け付け可能な動作要求の種類は、本体10側とは異なる。アプリ層201のアプリは、操作部20が備えるハードウェア資源を動作させて所定の機能を提供するためのソフトウェアである。例えば、本体10が備える機能(コピー機能、スキャナ機能、ファクシミリ機能、プリンタ機能)に関する操作及び表示を行うためのUI(ユーザインタフェース)の機能を提供するためのソフトウェアである。
また、この第1の実施の形態のMFP1の場合、機能の独立性を保つために、本体10側のOS層103のソフトウェアと操作部20側のOS層203のソフトウェアが互いに異なる。一例ではあるが、本体10側のOS層103のソフトウェアとしてLinux(登録商標)がインストールされ、操作部20側のOS層203のソフトウェアとしてAndroid(登録商標)がインストールされている。これにより、本体10と操作部20は、別々のオペレーティングシステムで互いに独立して動作するようになっている。
本体10及び操作部20を、別々のオペレーティングシステムで動作させることで、本体10と操作部20との間の通信は、共通の装置内のプロセス間通信ではなく、異なる装置間の通信として行われる。操作部20が受け付けた入力(ユーザからの指示内容)を本体10へ伝達する動作(コマンド通信)及び本体10が操作部20へイベントを通知する動作等がこれに該当する。ここでは、操作部20が本体10へコマンド通信を行うことにより、本体10の機能を使用することができる。また、本体10から操作部20に通知するイベントには、本体10における動作の実行状況、本体10側で設定された内容等が挙げられる。
また、第1の実施の形態の例では、操作部20に対する電力供給は、本体10から通信路30を経由して行われているので、操作部20の電源制御を、本体10の電源制御とは別に(独立して)行うことができる。
なお、この例では、本体10と操作部20は、通信路30を介して電気的かつ物理的に接続されているが、上述のように本体10から操作部20を取り外すこともできる。この場合、本体10及び操作部20に、例えば赤外線通信部、RF通信部、Bluetooth(登録商標)通信部等の近距離無線通信部を設ける。RFは、「Radio Frequency」の略記である。または、本体10及び操作部20に、Wi-Fi(登録商標)等の無線LAN通信機能を設け、図2に示すように無線LANアクセスポイント(無線LANAP)41及びネットワーク40を介して相互に通信可能としてもよい。LANは、「Local Area Network」の略記である。本体10から操作部20を取り外し可能である場合、操作部20は、通信路30を介して本体10から供給された電力を二次電池に蓄電しておき、本体10から取り外されたときに、二次電池に蓄電された電力で動作して本体10と通信を行う。
(MFPに設けられているソフトウェア)
図3に、MFP1に設けられているソフトウェアの一例を示す。上述のように、本体10は、アプリ層101、サービス層102及びOS層103に分かれている。このうち、アプリ層101には、図1に示すエンジン17を制御して、原稿の読み取り制御又は印刷制御等を行うアプリが記憶されている。具体的には、アプリ層101には、コピーアプリ111、スキャナアプリ112、プリンタアプリ113及びFAXアプリ114が記憶されている。コピーアプリ111~FAXアプリ114は、標準搭載のジョブ実行機能アプリであり、制御アプリケーションの一例である。
また、サービス層102には、省エネルギー管理プログラム(省エネ管理プログラム)121、メモリ管理プログラム122及びエンジン制御プログラム123等の、各アプリが共通で行う処理に対応する各種プログラムが記憶されている。サービス層102は、省エネルギー管理及びメモリ管理等、各アプリが共通で行う処理を行っている。
これに対して、操作部20は、アプリ層201及びOS層203に分かれている。本体アプリと操作部アプリの違いは、本体アプリではエンジン制御等を行うことで、例えば読み取り及び印刷等の画像形成装置の機能を制御するのに対し、操作部アプリではUI制御を行っている。つまり、操作部アプリで画面表示を行うことでユーザの操作を受け付け、そのユーザ操作に基づいたエンジン制御を本体アプリが行っている。
操作部アプリには、スキャナアプリ133等に対して開発ベンダーが開発するベンダーアプリ137が存在する。
また、操作部アプリには、ベンダーアプリ137の開発を簡単にするために、操作部20のコピーアプリ131~FAXアプリ135と同等の機能をベンダー等に提供する機能提供アプリケーションである機能提供アプリ136が設けられている。
すなわち、操作部20のアプリ層201には、ユーザインタフェースを介してユーザ操作を受け付けるアプリが記憶されている。具体的には、アプリ層201には、ホームアプリ130、コピーアプリ131、スキャナアプリ133、プリンタアプリ134、FAXアプリ135、機能提供アプリ136及びベンダーアプリ137などの各種のアプリケーションが記憶されている。なお、以下では機能提供アプリ136が提供する機能としてプリンタ機能を例にして説明するが、これに限定されない。すなわち、機能提供アプリ136は、コピー機能やスキャン機能や、FAX機能など、本体10又は操作部20が有する機能に対応することができる。
ホームアプリ130は、所望の操作を指定するためのアイコン等が並べられたメイン画面(初期画面)を表示する。そして、ユーザによりアイコン操作を介して指定されたアプリを起動する。コピーアプリ131は、操作ボタン及び設定ボタンを介して、ユーザのコピー操作を受け付けるアプリである。スキャナアプリ133は、操作ボタン及び設定ボタン等を介して、ユーザのスキャナ操作を受け付けるアプリである。プリンタアプリ134は、操作ボタン及び設定ボタン等を介して、ユーザのプリンタ操作を受け付けるアプリである。FAXアプリ135は、操作ボタン及び設定ボタン等を介して、ユーザのファクシミリ送受信操作を受け付けるアプリである。
機能提供アプリ136は、画像処理プログラムの一例である。また、機能提供アプリ136は、一例として操作部20のROM22、RAM23又はフラッシュメモリ24等の記憶部に記憶される。
機能提供アプリ136は、上述のようにベンダーアプリ137の開発を容易化するために、操作部20のコピーアプリ131~FAXアプリ135と同等の機能を開発ベンダー等に提供する。
ベンダーアプリ137は、要求アプリケーションの一例である。ベンダーアプリ137は、例えばプリントの設定や実行を行う際に、例えばプリンタアプリ134にかかる機能提供アプリ136を呼び出す。
すなわち、機能提供アプリ136が例えばスキャナアプリ133に対応するアプリの場合、機能提供アプリ136は、通常の操作メニュー及び設定メニュー等のユーザインタフェースを表示する機能を開発ベンダーに提供する。また、機能提供アプリ136が例えばプリンタアプリ134に対応するアプリの場合、機能提供アプリ136は、通常の操作メニュー及び設定メニュー等のユーザインタフェースを表示する機能を開発ベンダーに提供する。
このようにMFP1の操作部20には、コピーアプリ131~FAXアプリ135と同等の機能をベンダー等に提供するための機能提供アプリ136が設けられている。ベンダーアプリ137の開発ベンダーに対しては、機能提供アプリ136の機能を実現するAPI(Application Programming Interface)が公開されている。
本実施の形態においては、機能提供アプリ136は、「標準搭載のプリンタアプリ」、「ベンダーアプリへの機能の提供アプリ」として2つの役割を持つ、1つのアプリケーションである。
なお、本実施の形態においては、機能提供アプリ136は、プリンタアプリ134にのみ適用されるものとして説明する。なお、機能提供アプリ136は、プリンタアプリ134のみならず、他のコピーアプリ131、スキャナアプリ133等に適用されるものであっても何ら問題はない。
ここで、図4はMFP1の操作部20の画面遷移の一例を示す図である。図4は、機能提供アプリ136が、ベンダーアプリ137から呼び出される場合の画面遷移(設定、実行)である。図4中、破線はアプリの境界を表しており、アプリから別のアプリへの矢印はアプリ切り替えを意味し、アプリから同じアプリへの矢印はアプリ内での画面切り替えを意味する。
(1).まず、ユーザが使用するアプリを選択するホーム画面(MFP1にインストールされているさまざまなアプリのアイコンが表示される)Aで、ベンダーアプリ137のアイコンを選択すると、ベンダーアプリ137が起動する。ベンダーアプリ137の画面Bは、パラメータを含むベンダーアプリ137からの要求に応じて表示され、画像処理の設定入力または画像処理の実行指示を選択するための選択画面である。
(2).ベンダーアプリ137の画面Bのプリント設定ボタンB1を押下すると、機能提供アプリ136が起動してアプリが切り替わり、設定画面Cが表示される。設定画面Cは、ベンダーアプリ137の画面Bで設定入力を選択した場合に表示される画像処理の設定入力画面である。内部的には、ここでベンダーアプリ137から機能提供アプリ136に対するAPI呼び出しが行われて機能提供アプリ136が起動する。
(3).機能提供アプリ136では、ユーザ操作によって様々なプリント設定の設定が可能である。
(4).機能提供アプリ136の設定画面Cの設定完了ボタンB3を押下すると、プリント設定の設定情報が確定してアプリが切り替わり、ベンダーアプリ137の画面Bに戻る。内部的には、ベンダーアプリ137に設定値情報が通知される。
(5).ベンダーアプリ137の画面Bのプリント実行ボタンB2を押下すると、機能提供アプリ136が起動してアプリが切り替わり、プリント実行画面Dが表示され、プリントが実行される。内部的には、ここでベンダーアプリ137から機能提供アプリ136に対するAPI呼び出しが行われて機能提供アプリ136が起動する。また、APIの呼び出しの際に、プリント対象のファイルパスをパラメータとして機能提供アプリ136に受け渡す。なお、機能提供アプリ136に受け渡す情報には、プリント対象のファイルの設定値情報が含まれていても良い。
(6).プリントが完了するとアプリが切り替わり、ベンダーアプリ137の画面Bに戻る。
また、図5はMFP1の操作部20の画面遷移の別の一例を示す図である。図5は、機能提供アプリ136が、標準搭載のアプリとして機能する場合の画面遷移(設定+実行)である。図5中、破線はアプリの境界を表しており、アプリから別のアプリへの矢印はアプリ切り替えを意味し、アプリから同じアプリへの矢印はアプリ内での画面切り替えを意味する。
(1).まず、ユーザが使用するアプリを選択するホーム画面(MFP1にインストールされているさまざまなアプリのアイコンが表示される)Aで、ベンダーアプリ137のアイコンを選択すると、ベンダーアプリ137が起動する。ベンダーアプリ137の画面Bは、パラメータを含むベンダーアプリ137からの要求に応じて表示され、画像処理の設定入力または画像処理の実行指示を選択するための選択画面である。
(2).ベンダーアプリ137の画面Bのプリント設定および実行ボタンB4を押下すると、機能提供アプリ136が起動してアプリが切り替わり、設定画面Cが表示される。設定画面Cは、ベンダーアプリ137の画面Bで設定入力を選択した場合に表示される画像処理の設定入力画面である。内部的には、ここでベンダーアプリ137から機能提供アプリ136に対するAPI呼び出しが行われて機能提供アプリ136が起動する。
(3).機能提供アプリ136では、ユーザ操作によって様々なプリント設定の設定が可能である。
(4).機能提供アプリ136の設定画面CのスタートボタンB5を押下すると、プリント設定の設定情報が確定してプリントが実行される。
(5).プリントが完了するとアプリが切り替わり、ベンダーアプリ137の画面Bに戻る。
以上のように、ベンダーアプリ137は、プリント設定ボタンおよびプリント実行ボタン、またはプリント設定および実行ボタンを実装する。そして、ベンダーアプリ137は、各ボタン押下時に機能提供アプリ136に対するAPI呼び出し処理を実装するだけで、プリント設定やプリント実行をすることができる。
(機能提供アプリの機能)
図6は、機能提供アプリ136の機能ブロック図である。操作部20のCPU21は、例えばROM22、RAM23又はフラッシュメモリ24等の記憶部に記憶されている機能提供アプリ136を実行することで、図6に示す、制御手段150、受付手段151、及び表示手段156を実現する。
受付手段151は、第1の受付手段として機能するものであって、機能提供アプリ136のアイコンが操作された場合に生成される起動要求、又は、ベンダーアプリ137からの起動要求を受け付ける。
制御手段150は、第1の制御手段として機能するものであって、新規に呼び出しを受け付けた後に、画面表示やジョブ実行などを行う。
表示手段156は、第1の表示手段として機能するものであって、操作パネル27に対してメイン画面又は実行画面/エラー画面等の表示制御を行う。表示手段156は、実行画面/エラー画面を介してユーザにより設定された設定内容をベンダーアプリ137に通知する等の処理を行う。
なお、この例では、制御手段150、受付手段151、表示手段156をソフトウェアで実現することとしたが、制御手段150、受付手段151、表示手段156のうち、一部又は全部を、IC(Integrated Circuit)等のハードウェアで実現してもよい。
また、機能提供アプリ136は、インストール可能な形式又は実行可能な形式のファイルでCD-ROM、フレキシブルディスク(FD)等のコンピュータ装置で読み取り可能な記録媒体に記録して提供してもよい。また、CD-R、DVD(Digital Versatile Disk)、ブルーレイディスク(登録商標)、半導体メモリ等のコンピュータ装置で読み取り可能な記録媒体に記録して提供してもよい。また、機能提供アプリ136は、インターネット等のネットワーク経由でインストールする形で提供してもよい。また、機能提供アプリ136は、機器内のROM等に予め組み込んで提供してもよい。
(機能提供アプリの動作)
次に、機能提供アプリ136の動作を説明する。図7は、ベンダーアプリ137で設定を実行する場合における、機能提供アプリ136の画面表示動作の流れを示すシーケンス図である。
図7に示すように、ユーザにより、ホーム画面Aを介してベンダーアプリ137が起動され(ステップS1)、設定ボタンB1が操作されると(ステップS2)、ベンダーアプリ137は、機能提供アプリ136に対して画面表示要求を行う(ステップS3)。なお、ベンダーアプリ137は、この際、UI(User Interface)パラメータを付与する。ベンダーアプリ137は、通知手段として機能する。
ここで、図8は設定画面CにかかるUIパラメータを例示的に示す図である。ステップS3で付与されるUIパラメータ(UIパーツ)は、図8に示すように、例えば以下のようなものが挙げられる。
・設定画面Cのタイトル(図8に示すa)
・設定画面Cのタイトルの文字色(図8に示すb)
・ヘッダ部分の背景色(図8に示すc)
・ヘッダ部分の背景画像(ロゴ)(図8に示すd)
・ボディ部分の背景色(図8に示すe)
・ボディ部分の背景画像(図8に示すf)
・設定項目の可視性(図8に示すg)
・ボタンの名称(図8に示すh)
ここで、背景画像は画像データ自体をパラメータに載せてもよいが、データ量が大きいため画像データのファイルパスを指定する方が望ましい。
次いで、機能提供アプリ136の受付手段151は、この画面表示要求を受信し、制御手段150に対して設定画面Cの表示要求(UIパラメータ)を行う(ステップS4)。
次に、制御手段150は、表示手段156に対して設定画面Cの表示要求(UIパラメータ)を行う(ステップS5)。
そして、表示手段156は、取得したUIパラメータに応じて設定画面Cを生成して、操作パネル27に表示する(ステップS6)。より詳細には、表示手段156は、取得したUIパラメータに基づいて、ベンダーアプリ137の画面Bと少なくとも同じ背景色または背景画像を含む表示態様で設定画面Cを生成して表示する。
ここで、図9はUIパラメータに応じた変更例を示す図である。図9(a)は、設定画面Cのタイトルaを変更した例を示すものである。図9(a)の左は変更前を示し、右は変更後を示している。また、図9(b)は、ボディ部分の背景色eを変更した例を示すものである。図9(b)の左は変更前を示し、右は変更後を示している。このようにするのは、例えば、呼び出し元のベンダーアプリ137が青系のUIである場合に、機能提供アプリ136のUIが灰色系である場合に、ユーザから見るとアプリのUIが突然変化して違和感を覚えるということがあるためである。
なお、本実施の形態においては、設定画面Cを表示するときのUIを変更しているが、これに限るものではなく、例えば、直接ジョブを実行する場合のUIを変更するようにしてもよい。
このように本実施の形態によれば、呼び出し元のベンダーアプリ137が機能提供アプリ136を呼び出す際にUIに関するパラメータを付与して通知して、機能提供アプリ136が通知されたUIに関するパラメータをもとに画面のUIの表示態様を変更する。これにより、機能提供アプリ136のUIと呼び出し元のベンダーアプリ137のUIとの表示態様を統一することができるので、ユーザに違和感を覚えさせないことができる。
(第2の実施の形態)
次に、第2の実施の形態について説明する。
第2の実施の形態は、UIパラメータとユーザ情報との組み合わせを記憶するようにした点が、第1の実施の形態と異なる。以下、第2の実施の形態の説明では、第1の実施の形態と同一部分の説明については省略し、第1の実施の形態と異なる箇所について説明する。
図10は、第2の実施の形態にかかるMFP1の機能提供アプリ136の機能ブロック図である。操作部20のCPU21は、例えばROM22、RAM23又はフラッシュメモリ24等の記憶部に記憶されている機能提供アプリ136を実行することで、図10に示す、制御手段150、受付手段151、記憶手段152、及び表示手段156を実現する。
受付手段151は、機能提供アプリ136のアイコンが操作された場合に生成される起動要求、又は、ベンダーアプリ137からの起動要求を受け付ける。
記憶手段152は、第1の記憶手段として機能するものであって、例えばROM22、RAM23又はフラッシュメモリ24等の記憶部に対し、ユーザ情報とUIパラメータとを紐づけた情報を記憶する。
制御手段150は、新規に呼び出しを受け付けた後に、画面表示やジョブ実行などを行う。
表示手段156は、操作パネル27に対してメイン画面又は実行画面/エラー画面等の表示制御を行う。表示手段156は、実行画面/エラー画面を介してユーザにより設定された設定内容をベンダーアプリ137に通知する等の処理を行う。
なお、この例では、制御手段150、受付手段151、記憶手段152、表示手段156をソフトウェアで実現することとしたが、制御手段150、受付手段151、記憶手段152、表示手段156のうち、一部又は全部を、IC(Integrated Circuit)等のハードウェアで実現してもよい。
(機能提供アプリの動作)
次に、機能提供アプリ136の動作を説明する。図11は、ベンダーアプリ137で設定を実行する場合における、機能提供アプリ136の画面表示動作の流れを示すシーケンス図である。
図11に示すステップS1~S6は、図7に示すステップS1~S6と何ら変わるものではないため、その説明を省略する。
S6の処理が終了すると、表示手段156は、記憶手段152を介して記憶部にユーザ情報とUIパラメータとの紐づけ情報を記憶する(ステップS7)。ユーザ情報は、ICカード5に記憶されているカードID、ユーザ情報等である。
ここで、図12はユーザ情報とUIパラメータの紐づけ情報の一例を示す図である。図12に示すように、記憶部には、ユーザ情報に対応付けてUIパラメータが記憶される。
この後、同一ユーザより、ホーム画面Aを介してベンダーアプリ137が起動され(ステップS11)、設定ボタンB1が操作されると(ステップS12)、ベンダーアプリ137は、機能提供アプリ136に対して画面表示要求を行う(ステップS13)。ただし、この場合、ベンダーアプリ137は、UIパラメータを付与しない。
次いで、機能提供アプリ136の受付手段151は、この画面表示要求を受信し、制御手段150に対して設定画面Cの表示要求を行う(ステップS14)。
次に、制御手段150は、表示手段156に対して設定画面Cの表示要求を行う(ステップS15)。
表示手段156は、記憶部からユーザ情報とUIパラメータの紐づけ情報を取得する(ステップS16)。
そして、表示手段156は、取得したUIパラメータに応じて設定画面Cを生成して、操作パネル27に表示する(ステップS17)。
このように本実施の形態によれば、UIパラメータとユーザ情報との組み合わせを記憶することで、次回以降はUIパラメータの通知がなくてもUIを変更することができる。また、複数のMFP1を管理している場合などでは、UIパラメータ通知を初回に実施してクラウドなどにエクスポートしておき、全てのMFP1にインポートすることでユーザはどのMFP1を使用しても同じUIの提供を受けることができる。
なお、本実施の形態においては、図11のステップS1~S7、及びステップS11~S17のそれぞれの前のタイミングで、ユーザは、MFP1(画像処理装置及び電子機器)に対してユーザ情報を使ったログイン操作を、すでに行っている。MFP1(画像処理装置及び電子機器)に対するログイン操作は、操作パネル27やハードキーを使ってユーザIDとパスワードを手打ち入力する操作や、MFP1(画像処理装置及び電子機器)のカードリーダ6にユーザが所持するICカード5をかざしてユーザ情報を入力する操作のことである。
MFP1(画像処理装置及び電子機器)の内部または外部装置は、認証処理を行い、MFP1(画像処理装置及び電子機器)に結果を返す一連の処理を行う。このログイン操作と処理によりMFP1(画像処理装置及び電子機器)がユーザ情報を保持する。
また、図11のステップS16の取得では、別のタイミングでログインした際にMFP1(画像処理装置及び電子機器)が保持しているユーザ情報を使って、図11のステップS7で保存したUIパラメータを取得する処理を行っている。
(第3の実施の形態)
次に、第3の実施の形態について説明する。
従来の機能提供アプリにおいては、複数のベンダーアプリからジョブ実行機能を呼び出したときに、機能提供アプリの実態は1つだけのため、ユーザが途中まで変更したジョブ設定内容を保存・再現できていないという問題がある。第3の実施の形態は、複数のベンダーアプリ137から機能提供アプリ136を呼び出した際にも、ユーザが途中まで変更したジョブ設定内容を保存・再現することできるようにした点が、第1の実施の形態および第2の実施の形態と異なる。以下、第3の実施の形態の説明では、第1の実施の形態または第2の実施の形態と同一部分の説明については省略し、第1の実施の形態および第2の実施の形態と異なる箇所について説明する。
図13は、第3の実施の形態にかかるMFP1に設けられているソフトウェアの一例を示す図である。図13に示すように、本実施の形態においては、操作部アプリには、スキャナアプリ等に対して開発ベンダーが開発するベンダーアプリ137が複数存在する。本実施の形態においては、ベンダーアプリA137AおよびベンダーアプリB137Bとする。
図14は、ベンダーアプリ137の画面の一例を示す図である。図14に示すベンダーアプリ137の画面は、プリント対象のファイルを選択する画面例である。図14の画面は、ベンダーアプリ(ベンダープリントアプリ)137の画面上でプリント対象のファイルを選択後に実行キーK1を押下させるための画面である。図14に示すように、プリント対象のファイルは複数選択可能であってもよい。なお、1つもファイルが選択されていない場合は、実行キーK1が半輝度で押下不可であることが望ましい。
なお、図14に示すように、ベンダーアプリ137の画面において印刷対象のファイルが選択可能である場合には、ファイル毎に、または複数のファイルに対してまとめて、プリント設定の設定及びプリントの実行を行っても良い。この場合、例えば図4で示した画面Bにおいてプリント設定の変更を行いたいファイルを選択した後、プリント設定ボタンB1を押下すると、該ファイルのプリント設定を変更することができる。なお、複数のファイルが選択されている場合は、印刷対象ファイルについて同一のプリント設定の設定を行っても良い。
(機能提供アプリの機能)
図15は、機能提供アプリ136の機能ブロック図である。操作部20のCPU21は、例えばROM22、RAM23又はフラッシュメモリ24等の記憶部に記憶されている機能提供アプリ136を実行することで、図15に示すように、制御手段250、受付手段251、記憶手段252、入力手段253、ジョブ実行手段254、設定手段255、及び表示手段256を実現する。
受付手段251は、第2の受付手段として機能するものであって、機能提供アプリ136のアイコンが操作された場合に生成される起動要求、又は、ベンダーアプリ137からの起動要求を受け付ける。
記憶手段252は、第2の記憶手段として機能するものであって、例えばROM22、RAM23又はフラッシュメモリ24等の記憶部に対し、起動要求のあったアプリに対応する情報、呼び出し元の情報(標準搭載のアプリとして起動されているか、又は、ベンダーへの機能提供として起動されているかを示す情報)、設定値及び状況情報等の記憶制御及び読み出し制御を行う。
制御手段250は、第2の制御手段として機能するものであって、新規に呼び出しを受け付けた後に、記憶手段252を制御することにより現在呼び出し中のアプリ情報を記憶部から取り出し、新規呼び出し元アプリと比較して画面表示やジョブ実行などを行う。
入力手段253は、ユーザによる操作パネル27の操作に応じて、操作パネル27に表示した画面に対するユーザの入力を受け付ける。
表示手段256は、第2の表示手段として機能するものであって、操作パネル27に対してメイン画面又はジョブ設定/実行画面等の表示制御を行う。表示手段256は、ジョブ設定/実行画面を介してユーザにより設定された設定内容をベンダーアプリ137に通知する等の処理を行う。
設定手段255は、MFP1のスペックに合わせてジョブ設定/実行画面の表示内容にかかるジョブ設定情報を変更し、設定値の調整を行う。調整は、即ち、MFP1の有するスペックとして、例えばモノクロ印刷の可否、カラー印刷の可否、または、片面印刷の可否・両面印刷の可否といった、保有機能に合わせて、設定された設定値を自動変更する。例えば、カラー設定の入力があったが、モノクロ印刷しか能力が無い場合には、印刷の設定値をカラー印刷からモノクロ印刷へ、値をスペックに合わせるもしくは落とす処理を自動的に行う。
ジョブ実行手段254は、本体10のコピーアプリ111又はスキャナアプリ112等に決定した設定値を利用して所望の動作のジョブ実行要求を行う。
なお、この例では、制御手段250~表示手段256をソフトウェアで実現することとしたが、制御手段250~表示手段256のうち、一部又は全部を、IC(Integrated Circuit)等のハードウェアで実現してもよい。
また、機能提供アプリ136は、インストール可能な形式又は実行可能な形式のファイルでCD-ROM、フレキシブルディスク(FD)等のコンピュータ装置で読み取り可能な記録媒体に記録して提供してもよい。また、CD-R、DVD(Digital Versatile Disk)、ブルーレイディスク(登録商標)、半導体メモリ等のコンピュータ装置で読み取り可能な記録媒体に記録して提供してもよい。また、機能提供アプリ136は、インターネット等のネットワーク経由でインストールする形で提供してもよい。また、機能提供アプリ136は、機器内のROM等に予め組み込んで提供してもよい。
(機能提供アプリの動作)
次に、機能提供アプリ136の動作を説明する。図16は、ベンダーアプリ137で設定を実行する場合における、機能提供アプリ136の設定画面表示動作の流れを示すシーケンス図である。図16のシーケンス図は、「1.ベンダーアプリAから機能提供アプリを呼び出して設定変更」、「2.ベンダーアプリBから機能提供アプリを呼び出す」、「3.ベンダーアプリAから機能提供アプリを呼び出す」という操作を順に行ったときに、3.の時に1.で変更した設定が復元されるシーケンスである。
すなわち、ユーザにより、ホーム画面を介してベンダーアプリA137Aが起動され(ステップS101)、設定ボタンが操作されると(ステップS102)、ベンダーアプリA137Aは、機能提供アプリ136に対して画面表示要求を行う(ステップS103)。なお、ベンダーアプリA137Aは、この際、ベンダーアプリA137Aの識別子をパラメータに付与する。ベンダーアプリ137は、通知手段として機能する。
ここで、図17はベンダーアプリの識別子の一例を示す図である。ベンダーアプリの識別子は、ベンダーアプリを一意に区別できる識別子であればよい。図17に示すように、例えば、ベンダーアプリの識別子は、ベンダーアプリのパッケージ名などでよい。
機能提供アプリ136の受付手段251は、この画面表示要求を受信し、制御手段250に対して例えばベンダータアプリA137Aの画面表示要求を行う(ステップS104)。
制御手段250は、記憶手段252に対して、ベンダーアプリA137Aの識別子の記憶を指示する(ステップS105)。ベンダーアプリA137Aの識別子を記憶すると、制御手段250は、表示手段256に対し、設定画面の表示要求を行う(ステップS106)。
なお、制御手段250は、記憶手段252に対して、ベンダーアプリA137Aの識別子に加えて現在の設定項目を記憶させるようにしてもよい。図18はベンダーアプリの識別子と設定項目の一例を示す図である。図18に示すように、ベンダーアプリの識別子に対応付けて設定項目を記憶することにより、機能提供アプリ136の画面が意図せず破棄された場合も、設定画面を復元することができる。なお、図18では、設定項目としてプリント設定を記憶する場合を例に示すが、ベンダーアプリA137Aが要求するジョブがコピージョブの場合はコピー設定を、スキャンジョブの場合はスキャン設定を、FAXジョブの場合はFAX設定をそれぞれ設定項目として記憶する。
表示手段256は、設定手段255にアクセスすることで、ジョブ設定情報を取得する(ステップS107)。その後、表示手段256は、取得したジョブ設定情報に基づいて操作パネル27に対して設定画面を表示する(ステップS108)。
なお、ベンダーアプリの初回起動時等のように、前回のジョブ設定情報が記憶されていない場合、表示手段256は、デフォルトのジョブ設定情報に応じて設定画面を表示する。
次に、設定画面において、ステップS109に示すように、ユーザにより操作パネル27を介して設定変更操作が行われると、入力手段253は、ステップS110において、ユーザにより入力されたジョブ設定情報を設定手段255に送信する。設定手段255は、ユーザにより設定されたジョブ設定情報等をRAM23等の記憶部に、一時的に保持する。
ここで、ベンダーアプリA137Aから機能提供アプリ136を呼び出している状態で、別のベンダーアプリB137Bから機能提供アプリ136を呼び出した場合について説明する。
ベンダーアプリA137Aから機能提供アプリ136を呼び出している状態において、ユーザにより、ホーム画面を介してベンダーアプリB137Bが起動され(ステップS111)、設定ボタンが操作されると(ステップS112)、ベンダーアプリB137Bは、機能提供アプリ136に対して画面表示要求を行う(ステップS113)。なお、ベンダーアプリB137Bは、この際、ベンダーアプリB137Bの識別子をパラメータに付与する。機能提供アプリ136の受付手段251は、この画面表示要求を受信し、制御手段250に対して例えばベンダーアプリB137Bの画面表示要求を行う(ステップS114)。
次に、制御手段250は、要求中のベンダーアプリの識別子(ベンダーアプリA137Aの識別子)を取得する(ステップS115)。
ここで、要求中のベンダーアプリの識別子(ベンダーアプリA137Aの識別子)と新規に要求してきたベンダーアプリの識別子(ベンダーアプリB137Bの識別子)が異なる場合、制御手段250は、設定手段255から現在のジョブ設定情報を取得する(ステップS116)。
加えて、制御手段250は、要求中のベンダーアプリA137Aに対して、現在のジョブ設定情報を通知する(ステップS117)。つまり、制御手段250は、ベンダーアプリA137Aに対して、現在のジョブ設定情報を返却する。
ここで、ステップS117で通知される現在のジョブ設定情報は、機能提供アプリ136が解読できる情報であればよく、ベンダーアプリはその情報の中身(フォーマットなど)を知る必要はない。
その後、制御手段250は、表示手段256に対し、設定画面の表示要求を行う(ステップS118)。
表示手段256は、設定手段255にアクセスすることで、ジョブ設定情報を取得する(ステップS119)。ここでは、新規に画面を作り直すため、ジョブ設定情報を取得しなおすことになる。その後、表示手段256は、操作パネル27に対して設定画面を表示する(ステップS120)。
さらに、ベンダーアプリB137Bから機能提供アプリ136を呼び出している状態で、別のベンダーアプリA137Aから機能提供アプリ136を呼び出した場合について説明する。
ベンダーアプリB137Bから機能提供アプリ136を呼び出している状態において、ユーザにより、ホーム画面を介してベンダーアプリA137Aが起動され(ステップS121)、設定ボタンが操作されると(ステップS122)、ベンダーアプリA137Aは、機能提供アプリ136に対して画面表示要求を行う(ステップS123)。なお、ベンダーアプリA137Aは、この際、ベンダーアプリA137Aの識別子とステップS117で返却されたジョブ設定情報をパラメータに付与する。すなわち、ベンダーアプリA137Aは、ステップS117で返却されたジョブ設定情報をステップS123の画面表示要求時にそのままパラメータとしてセットしている。
機能提供アプリ136の受付手段251は、この画面表示要求を受信し、制御手段250に対して例えばベンダーアプリA137Aの画面表示要求を行う(ステップS124)。
次に、制御手段250は、要求中のベンダーアプリの識別子(ベンダーアプリB137Bの識別子)を取得する(ステップS125)。
ここで、要求中のベンダーアプリの識別子(ベンダーアプリB137Bの識別子)と新規に要求してきたベンダーアプリの識別子(ベンダーアプリA137Aの識別子)とが異なる場合、制御手段250は、設定手段255から現在のジョブ設定情報を取得する(ステップS126)。
加えて、制御手段250は、要求中のベンダーアプリB137Bに対して、現在のジョブ設定情報を通知する(ステップS127)。つまり、制御手段250は、ベンダーアプリB137Bに対して、現在のジョブ設定情報を返却する。
その後、制御手段250は、表示手段256に対し、設定画面の表示要求を行う(ステップS128)。この際、制御手段250は、表示するジョブ設定情報(ステップS117で返却されたジョブ設定情報)をパラメータに付与する。
そして、表示手段256は、ステップS117で返却されたジョブ設定情報に従い、操作パネル27に対して設定画面を表示する(ステップS129)。
このように本実施の形態によれば、ベンダーアプリA137Aから機能提供アプリ136を呼び出している状態で、別のベンダーアプリB137Bから機能提供アプリ136を呼び出した際に、最初に呼び出したベンダーアプリA137Aに現在のジョブ設定情報を通知する。そして、次回ベンダーアプリA137Aを呼び出した際には、ベンダーアプリA137Aが機能提供アプリ136から通知されたジョブ設定情報を機能提供アプリ136に通知するので、複数のベンダーアプリ137から機能提供アプリ136を呼び出した際にも、ユーザが途中まで変更したジョブ設定内容を保存・再現することできる。
(第4の実施の形態)
次に、第4の実施の形態について説明する。
第4の実施の形態は、現在要求中のベンダーアプリ137にジョブ設定情報を通知する際に、リトライが必要な旨を一緒に通知するようにした点が、第3の実施の形態と異なる。以下、第4の実施の形態の説明では、第3の実施の形態と同一部分の説明については省略し、第3の実施の形態と異なる箇所について説明する。
図19は、第4の実施の形態にかかる機能提供アプリ136の設定画面表示動作の流れを示すシーケンス図である。図19のシーケンス図は、「1.ベンダーアプリAから機能提供アプリを呼び出して設定変更」、「2.ベンダーアプリBから機能提供アプリを呼び出す」、「3.ベンダーアプリAから機能提供アプリを呼び出す」という操作を順に行ったときに、3.の時に1.で変更した設定が復元されるシーケンスである。
図19に示すステップS101~S115は、図16に示すステップS101~S115と何ら変わるものではないため、その説明を省略する。
要求中のベンダーアプリの識別子(ベンダーアプリA137Aの識別子)と新規に要求してきたベンダーアプリの識別子(ベンダーアプリB137Bの識別子)が異なる場合、制御手段250は、設定手段255から現在のジョブ設定情報を取得する(ステップS116)。
加えて、図19に示すように、制御手段250は、要求中のベンダーアプリA137Aに対して、現在のジョブ設定情報を通知する(ステップS131)。つまり、制御手段250は、ベンダーアプリA137Aに対して、現在のジョブ設定情報を返却する。加えて、制御手段250は、この際、要リトライのパラメータを付与する。
その後、制御手段250は、表示手段256に対し、設定画面の表示要求を行う(ステップS118)。
表示手段256は、設定手段255にアクセスすることで、ジョブ設定情報を取得する(ステップS119)。ここでは、新規に画面を作り直すため、ジョブ設定情報を取得しなおすことになる。その後、表示手段256は、操作パネル27に対して設定画面を表示する(ステップS120)。
さらに、ベンダーアプリB137Bから機能提供アプリ136を呼び出している状態で、別のベンダーアプリA137Aから機能提供アプリ136を呼び出した場合について説明する。
ベンダーアプリB137Bから機能提供アプリ136を呼び出している状態において、ユーザにより、ホーム画面を介してベンダーアプリA137Aが起動されると(ステップS121)、図19に示すように、ベンダーアプリA137Aは、要リトライの通知を受けている場合、機能提供アプリ136に対して画面表示要求を行う(ステップS132)。第3の実施の形態では、設定ボタンの操作(ステップS122)をトリガーとして機能提供アプリ136に対して画面表示要求を行うようにしていたが、本実施の形態では、自動的に機能提供アプリ136に対して画面表示要求を行うようにしたものである。
図19に示すステップS124~S129は、図16に示すステップS124~S129と何ら変わるものではないため、その説明を省略する。
このように本実施の形態によれば、ベンダーアプリ137から機能提供アプリ136を一度開いた場合に、再度ベンダーアプリ137を開いた場合に、自動的に機能提供アプリ136を開くことができる。
例えば、汎用OSの仕様が原因でアプリが複数起動され、最初に起動したアプリがバックグラウンドにいる場合、最初に起動したアプリの画面(Activity)が破棄されることがある。本実施の形態によれば、表示していた画面がこれらの理由で破棄されてしまった場合でも、自動でリトライ制御が行えるとともに、最初に設定した設定値で、最初に起動したアプリを介して入力・表示した設定画面を表示しなおすことができる。
(第5の実施の形態)
次に、第5の実施の形態について説明する。
第5の実施の形態は、機能提供アプリ136を呼び出して実行したジョブでエラーが発生した場合にユーザに正しくエラーを通知することができるようにした点が、第3の実施の形態または第4の実施の形態と異なる。以下、第5の実施の形態の説明では、第3の実施の形態または第4の実施の形態と同一部分の説明については省略し、第3の実施の形態または第4の実施の形態と異なる箇所について説明する。
図20は、第5の実施の形態にかかるMFP1の機能提供アプリ136の機能ブロック図である。操作部20のCPU21は、例えばROM22、RAM23又はフラッシュメモリ24等の記憶部に記憶されている機能提供アプリ136を実行することで、図20に示すように、制御手段250、受付手段251、入力手段253、ジョブ実行手段254、及び表示手段256を実現する。
受付手段251は、機能提供アプリ136のアイコンが操作された場合に生成される起動要求、又は、ベンダーアプリ137からの起動要求を受け付ける。
制御手段250は、新規に呼び出しを受け付けた後に、画面表示やジョブ実行などを行う。
入力手段253は、ユーザによる操作パネル27の操作に応じて、操作パネル27に表示した画面に対するユーザの入力を受け付ける。
表示手段256は、操作パネル27に対して実行画面/エラー画面等の表示制御を行う。表示手段256は、実行画面/エラー画面を介してユーザにより設定された設定内容をベンダーアプリ137に通知する等の処理を行う。
ジョブ実行手段254は、本体10のコピーアプリ111又はスキャナアプリ112等に決定した設定値を利用して所望の動作のジョブ実行要求を行う。
なお、この例では、制御手段250、受付手段251、入力手段253、ジョブ実行手段254、表示手段256をソフトウェアで実現することとしたが、制御手段250、受付手段251、入力手段253、ジョブ実行手段254、表示手段256のうち、一部又は全部を、IC(Integrated Circuit)等のハードウェアで実現してもよい。
(機能提供アプリの動作)
次に、機能提供アプリ136の動作を説明する。図21は、ベンダーアプリ137でジョブを実行する場合における、機能提供アプリ136の画面表示動作の流れを示すシーケンス図である。なお、以下ではプリントジョブを実行する場合を例にして説明するが、コピージョブ、スキャンジョブ、FAXジョブなどの他のジョブを実行する場合でも同様に処理を行うことができる。
図21に示すように、ユーザにより、ホーム画面Aを介してベンダーアプリ137が起動され(ステップS201)、実行ボタンB2が操作されると(ステップS202)、ベンダーアプリ137は、機能提供アプリ136に対してジョブ実行要求を行う(ステップS203)。なお、ベンダーアプリ137は、この際、印刷ファイルの情報をパラメータに付与する。また、印刷ファイルの情報として、プリント設定を含んでも良い。
次いで、機能提供アプリ136の受付手段251は、このジョブ実行要求を受信し、制御手段250に対してジョブ実行要求(印刷ファイルの情報)を行う(ステップS204)。
次に、制御手段250は、表示手段256に対してジョブ実行画面表示要求を行う(ステップS205)。
そして、表示手段256は、ジョブ実行画面であるプリント実行画面Dを生成して、操作パネル27に表示する(ステップS206)。
次いで、制御手段250は、ジョブ実行手段254に対してジョブ実行要求(印刷ファイルの情報)を行う(ステップS207)。
ジョブ実行手段254は、本体10のプリントアプリに対してジョブ実行を行う(ステップS208)。
ここで、エラーが発生した場合について説明する。
エラーが発生すると、本体10のプリントアプリは、機能提供アプリ136のジョブ実行手段254にジョブエラーを通知する(ステップS209)。なお、本体10のプリントアプリは、この際、エラー種別をパラメータに付与する。
ジョブ実行手段254は、このジョブエラー(エラー種別)を受信し、制御手段250に対してジョブエラー(エラー種別)の通知を行う(ステップS210)。
次に、制御手段250は、表示手段256に対してエラー画面表示要求を行う(ステップS211)。
そして、表示手段256は、エラー画面を生成して、操作パネル27に表示する(ステップS212)。
本実施の形態においては、発生したエラーのエラー種別に従って、以下の通りに機能提供アプリ136の振る舞いが異なる。
(エラー種別:復旧不可能なエラーの場合)
例えば、本体10のエンジン17であるプロッタデバイスの故障やスキャナデバイスの故障などが該当する。
復旧不可能なエラーの場合、制御手段250は、上述のように表示手段256に対してエラー画面表示要求を行った後(ステップS211)、即座にベンダーアプリ137に対してジョブ実行結果通知を行う(ステップS213)。この際、制御手段250は、エラーをパラメータに付与する。
ここで、図22は復旧不可能なエラーが発生した場合のエラー画面の一例を示す図である。図22に示すように、復旧不可能なエラーが発生した場合、「エラーが発生しました。サービスに連絡してください。」というようなエラー画面が表示される。
復旧不可能なエラーが発生している場合、ユーザはエラーを解除することができない。そこで、この場合、エラー発生と同時にベンダーアプリ137に対してジョブ実行結果通知を行う。これにより、機能提供アプリ136を非表示にして再度ベンダーアプリ137を起動しても機能提供アプリ136は呼び出されない(後述するシーケンスのステップS220は実行されない)。
この振る舞いは、ベンダーアプリ137が機能提供アプリ136で複数の機能を呼び出すケースを想定している。例えば、ベンダーアプリ137が機能提供アプリ136のスキャンとプリントの機能を使う場合、スキャン側で復旧不可能なエラーが発生した場合でもプリント側は使用可能な場合がある。その場合、ベンダーアプリ137を立ち上げて必ずスキャンのエラー画面を出してしまうとプリント機能を使用できなくなる。以上より、復旧不可能なエラーが発生した場合には、ジョブ実行結果通知を即座に通知することで、別の機能について使用可能にする。
(エラー種別:復旧可能なエラーの場合)
例えば、本体10のエンジン17であるプロッタデバイスにおける紙ジャム、メモリフルなどが該当する。
復旧可能なエラーの場合、制御手段250は、上述のように表示手段256に対してエラー画面表示要求を行った後(ステップS211)、ユーザによるエラー解除に待機する(ステップS214)。
ここで、図23は復旧可能なエラーが発生した場合のエラー画面の一例を示す図である。図23(a)に示すエラー画面は、解除するためにユーザアクションが不要なエラーの場合に表示される画面である(例:メモリフルなど)。この場合は、確認キーK2のユーザによる押下をトリガーとして、ベンダーアプリ137に対してジョブ実行結果通知が行われる。図23(b)に示すエラー画面は、解除するためにユーザアクションが必要なエラーの場合に表示される画面である(例:ジャムが発生した場合など)。この場合は、解除動作を実施する(ジャム紙を取り除くなど)ことで、ベンダーアプリ137に対してジョブ実行結果通知が行われる。
ユーザによるエラー解除したことが入力されると、入力手段253は、制御手段250に対してエラー解除を通知する(ステップS215)。
制御手段250は、表示手段256に対してエラー画面非表示要求を行う(ステップS216)。
そして、表示手段256は、操作パネル27に表示されているエラー画面を非表示にする(ステップS217)。
そして、制御手段250は、ベンダーアプリ137に対してジョブ実行結果通知を行う(ステップS218)。この際、制御手段250は、エラーをパラメータに付与する。
ユーザにより、ホーム画面Aを介してベンダーアプリ137が起動されると(ステップS219)、ジョブ実行要求中の場合、ベンダーアプリ137は、機能提供アプリ136を呼び出す(ステップS220)。
このようにするのは、復旧可能なエラーが発生している場合、ユーザにエラーを解除させる必要があるため、機能提供アプリ136を一旦非表示にして再度ベンダーアプリ137を表示させても、エラー画面を表示させる必要があるからである。エラーが解除されるまではジョブ実行要求中のままにして、ベンダーアプリ137から機能提供アプリ136を呼び出してもらうために、エラー解除後にジョブ実行結果通知を行う。
ここで、ステップS213でジョブ実行結果通知を受け取ったベンダーアプリ137の動作について説明する。
ここで、図24は復旧不可能なエラーが通知された場合のベンダーアプリ137の動作の一例を示すシーケンス図である。
図24に示すように、通知されたエラーが復旧不可能な致命的エラーである場合、ベンダーアプリ137は、再度、機能提供アプリ136を呼び出しても無駄なため、実行ボタンB2を半輝度に変化させて押下不可にする(ステップS301)。
また、図25は復旧不可能なエラーが通知された場合のベンダーアプリ137の動作の一例を示すシーケンス図である。
図25に示すように、通知されたエラーが復旧不可能な致命的エラーである場合、ベンダーアプリ137は、再度、機能提供アプリ136を呼び出しても無駄なため、エラーが発生したことを、ベンダーアプリ137からサーバSに通知する(ステップS302)。
このように本実施の形態によれば、機能提供アプリ136が実行したジョブで発生したエラーのエラー種別に応じてエラーダイアログを表示し、またエラー種別に応じて機能提供アプリ136から呼び出し元のベンダーアプリ137に結果を通知するタイミングを切り替えるので、機能提供アプリ136を呼び出して実行したジョブでエラーが発生した場合にユーザに正しくエラーを通知することができる。
(第6の実施の形態)
次に、第6の実施の形態について説明する。
第6の実施の形態は、ベンダーアプリ137が、現在自分自身が機能提供アプリ136に要求中かどうかの判定を不要にした点が、第3の実施の形態ないし第5の実施の形態と異なる。以下、第6の実施の形態の説明では、第3の実施の形態ないし第5の実施の形態と同一部分の説明については省略し、第3の実施の形態ないし第5の実施の形態と異なる箇所について説明する。
ここで、第6の実施の形態にかかる機能提供アプリ136の動作を説明する。図26は、第6の実施の形態にかかるベンダーアプリ137でジョブを実行する場合における、機能提供アプリ136の画面表示動作の流れを示すシーケンス図である。
図26に示すように、ユーザにより、ホーム画面Aを介してベンダーアプリ137が起動され(ステップS201)、実行ボタンB2が操作されると(ステップS202)、ベンダーアプリ137は、機能提供アプリ136に対してジョブ実行要求を行う(ステップS231)。なお、ベンダーアプリ137は、この際、印刷ファイルの情報と呼び出し元のベンダーアプリ137のアプリ情報をパラメータに付与する。
図26に示すステップS204~S218は、図21に示すステップS204~S218と何ら変わるものではないため、その説明を省略する。
ユーザにより、ホーム画面Aを介してベンダーアプリ137が起動されると(ステップS219)、ベンダーアプリ137は、受付手段251に対して再表示要求を行う(ステップS232)。この際、ベンダーアプリ137は、呼び出し元のベンダーアプリ137のアプリ情報をパラメータに付与する。
受付手段251は、現在要求中のアプリからの再表示要求かどうかを判定して、現在要求中のアプリと再表示要求をしてきたアプリが同一の場合、起動する(ステップS233)。
このように本実施の形態によれば、ベンダーアプリ137が、現在自分自身が機能提供アプリ136に要求中かどうかを判定する必要がなくなり、ベンダーアプリ137の実装が簡単になる。
なお、上記各実施の形態では、本発明の画像処理装置(電子機器)を、コピー機能、プリンタ機能、スキャナ機能およびファクシミリ機能のうち少なくとも2つの機能を有する複合機に適用した例を挙げて説明するが、複写機、プリンタ、スキャナ装置、ファクシミリ装置等の少なくともスキャナまたはプリンタを有して画像処理を実行する画像処理装置であればいずれにも適用することができる。
なお、電子機器は、通信機能を備えた装置であれば、MFP1に限られない。電子機器は、例えば、PJ(Projector:プロジェクタ)、IWB(Interactive White Board:相互通信が可能な電子式の黒板機能を有する白板)、デジタルサイネージ等の出力装置、HUD(Head Up Display)装置、産業機械、製造装置、撮像装置、集音装置、医療機器、ネットワーク家電、ノートPC(Personal Computer)、携帯電話、スマートフォン、タブレット端末、ゲーム機、PDA(Personal Digital Assistant)、デジタルカメラ、ウェアラブルPCまたはデスクトップPC等であってもよい。
上記で説明した実施形態の各機能は、一又は複数の処理回路によって実現することが可能である。ここで、本明細書における「処理回路」とは、電子回路により実装されるプロセッサのようにソフトウェアによって各機能を実行するようプログラミングされたプロセッサや、上記で説明した各機能を実行するよう設計されたASIC(Application Specific Integrated Circuit)、DSP(Digital Signal Processor)、FPGA(Field Programmable Gate Array)や従来の回路モジュール等のデバイスを含むものとする。
上記で説明した複数の実施形態のシーケンス、制御や操作は、自在に組み合わせ、または同時に並行して電子機器または画像処理装置で実行、処理することが可能である。これによってベンダーアプリと機能提供アプリとの関係や、複数のベンダーアプリ間の関係において、表示内容の違いによるユーザの違和感を低減する効果や、各パラメータ及び設定情報の受け渡しを簡易に行って設定を反映することができる効果がある。
上記で説明した「ベンダーアプリ」は、その他の表現として、
・機能提供アプリケーションに処理を要求する「要求アプリケーション」
・サードベンダやユーザ等が開発し機器の操作部に追加インストールする「追加アプリケーション」
・操作部上で機能提供アプリケーションの提供する仕組み(UIやAPIなど)を利用する「利用アプリケーション」などと言うこともできる。
また、「機能提供アプリケーション」は、電子機器及び画像処理装置の操作部に備えるOSの下でCPUにより動作し操作部上で動作する他のアプリケーションにAPIを提供する「APIアプリケーション」や「操作部APIアプリケーション」などと言うこともできる。