(第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の操作部として機能する。
より詳しくは、操作部20として用いられる情報処理端末は、従来、MFP1には、操作部として専用の操作パネルが固定され設置されていた。これに対して、第1の実施の形態のMFP1の操作部20は、MFP1の本体10に装着及び取り外し可能となっている。すなわち、操作部20として用いられる情報処理端末は、例えばMFP1の操作パネルが配置される位置等の所定の位置から取り外し可能(分離可能)ながらも、MFP1と一体的に設置することも可能となっている。このため、操作部20として用いられる情報処理端末及びMFP1は、一台の装置として把握されるものである。操作部20として用いられる情報処理端末は、MFP1から取り外されると、MFP1との間で、例えばBluetooth(登録商標)又は赤外線通信等の無線通信を行い、MFP1の操作部として機能する。
本体10は、操作部20で受け付けた入力に応じた動作を行う。また、本体10は、クライアントPC(パーソナルコンピュータ)等の外部装置とも通信可能であり、外部装置から受信した指示に応じた動作も行う。
(本体のハードウェア構成)
次に、本体10のハードウェア構成について説明する。図1に示すように、本体10は、CPU11と、ROM12と、RAM13と、HDD(ハードディスクドライブ)14とを備える。また、本体10は、通信I/F(インタフェース)15と、接続I/F16と、エンジン17と、ファクシミリモデム(FAXモデム)19とを備える。各部11〜17及びFAXモデム19は、システムバス18を介して相互に接続されている。
CPU11は、本体10の動作を統括的に制御する。CPU11は、RAM13をワークエリア(作業領域)としてROM12又はHDD14等に格納されたプログラムを実行することで、本体10全体の動作を制御し、上述したコピー機能、スキャナ機能、ファクシミリ機能、プリンタ機能などの各種の画像形成機能を実現する。なお、この本体10のHDD14は、フラッシュメモリを用いても、同様に実現可能である。
通信I/F15は、ネットワーク40上のクライアントPC(パーソナルコンピュータ)、Webサーバ装置又は認証サーバ装置等の外部装置と通信するためのインタフェースである。接続I/F16は、通信路30を介して操作部20と通信するためのインタフェースである。なお、図1及び以下に説明する図2において、通信路30は、有線的に図示しているが、上述のように操作部20は、MFP1の本体10に対して装着及び取り外しが可能となっている。このため、操作部20をMFP1に装着しているときには、通信路30は有線通信路として機能し、操作部20をMFP1から取り外したときには、通信路30は無線通信路として機能するものと理解されたい。
エンジン17は、コピー機能、スキャナ機能、ファクシミリ機能及びプリンタ機能等を実現させるための、汎用的な情報処理及び通信以外の処理を行うハードウェアである。エンジン17は、例えば原稿の画像をスキャンして読み取るスキャナ、用紙等のシート材への印刷を行うプロッタ、ファクシミリ通信を行うファクシミリ通信部等を備えている。さらに、印刷済みシート材を仕分けるフィニッシャ及び原稿を自動給送するADF(自動原稿給送装置)のような特定のオプションを設けてもよい。
(操作部のハードウェア構成)
次に、操作部20のハードウェア構成について説明する。図1に示すように、操作部20は、CPU21と、ROM22と、RAM23と、フラッシュメモリ24と、通信I/F25と、接続I/F26と、操作パネル27と、ICカードI/F29とを備え、これらがシステムバス28を介して相互に接続されている。なお、この操作部20のフラッシュメモリ24は、HDDを用いても同様に実現可能である。
CPU21は、操作部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)で構成される。操作パネル27は、ユーザの操作に応じた各種の入力を受け付けると共に、例えば受け付けた入力に応じた情報、MFP1の動作状況を示す情報、設定状態を示す情報等の各種の情報を表示する。なお、操作パネル27は、タッチセンサを備えた有機EL表示装置で構成してもよい。さらに、これに加えて又はこれに代えて、ハードウェアキー等の操作部又は発光部等の表示部を設けてもよい。
(MFPのソフトウェア構成)
図2は、MFP1のソフトウェア構成の一例を示す図である。この図2に示すように、本体10は、アプリ層101と、サービス層102と、OS層103とを有する。アプリ層101,サービス層102及びOS層103の実体は、ROM12又はHDD14等に格納されている各種ソフトウェアである。CPU11が、これらのソフトウェアを実行することにより、各種の機能が提供される。
アプリ層101のソフトウェアは、ハードウェア資源を動作させて所定の機能を提供するためのアプリケーションソフトウェア(以下の説明では、単に「アプリ」と称する場合がある)である。例えばアプリとしては、コピー機能を提供するためのコピーアプリ、スキャナ機能を提供するためのスキャナアプリ、ファクシミリ機能を提供するための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は、標準搭載のジョブ実行機能アプリであり、第1の要求アプリケーションの一例である。また、コピーアプリ111〜FAXアプリ114を実行するOS層103のソフトウェアは、制御アプリケーションの一例である。
また、サービス層102には、省エネルギー管理プログラム(省エネ管理プログラム)121、メモリ管理プログラム122及びエンジン制御プログラム123等の、各アプリが共通で行う処理に対応する各種プログラムが記憶されている。サービス層102は、省エネルギー管理及びメモリ管理等、各アプリが共通で行う処理を行っている。
これに対して、操作部20は、アプリ層201及びOS層203に分かれている。本体アプリと操作部アプリの違いは、本体のアプリではエンジン制御等を行うことで、例えば読み取り及び印刷等の画像形成装置の機能を制御するのに対し、操作部アプリではUI制御を行っている。つまり、操作部アプリで画面表示を行うことでユーザの操作を受け付け、そのユーザ操作に基づいたエンジン制御を本体アプリが行っている。
操作部アプリには、同じ機能を実現する複数のアプリが存在することもある。これは機能が同じでもUIのデザイン(見た目)又は搭載した機能を変えている場合である。図3の例では、一例として操作部20に第1のコピー受付アプリ131と第2のコピー受付アプリ132が存在する。第2のコピー受付アプリ132は、第1のコピー受付アプリ131と比べて機能を少なくし、UIの見た目を簡単にしたアプリである。
この第1のコピー受付アプリ131と第2のコピー受付アプリ132の関係と同じように、例えばスキャナアプリ等に対して開発ベンダーが開発するベンダーアプリ137が存在する。また、ベンダーアプリ137の開発を簡単にするために、操作部20の第1のコピー受付アプリ131〜FAX受付アプリ135と同等の機能をベンダー等に提供する機能提供アプリ136が設けられている。
すなわち、操作部20のアプリ層201には、ユーザインタフェースを介してユーザ操作を受け付けるアプリが記憶されている。具体的には、アプリ層201には、ホームアプリ130、第1のコピー受付アプリ131、第2のコピー受付アプリ132、スキャナ受付アプリ133、プリンタ受付アプリ134、FAX受付アプリ135、機能提供アプリ136及びベンダーアプリ137が記憶されている。機能提供アプリ136は、画像処理プログラムの一例である。また、機能提供アプリ136は、一例として操作部20のROM22、RAM23又はフラッシュメモリ24等の記憶部に記憶される。ベンダーアプリ137は、第2の要求アプリケーションの一例である。
ホームアプリ130は、所望の操作を指定するためのアイコン等が並べられたメイン画面(初期画面)を表示する。そして、ユーザによりアイコン操作を介して指定されたアプリを起動する。第1のコピー受付アプリ131は、操作ボタン及び設定ボタンを介して、ユーザのコピー操作を受け付けるアプリである。第2のコピー受付アプリ132は、主に使用頻度の高い操作ボタン及び設定ボタン等を表示することで、第1のコピー受付アプリ131よりも、表示する操作ボタン及び設定ボタンの数を減らし、視認性及び操作性の向上を図ったアプリである。スキャナ受付アプリ133は、操作ボタン及び設定ボタン等を介して、ユーザのスキャナ操作を受け付けるアプリである。プリンタ受付アプリ134は、操作ボタン及び設定ボタン等を介して、ユーザのスキャナ操作を受け付けるアプリである。FAX受付アプリ135は、操作ボタン及び設定ボタン等を介して、ユーザのファクシミリ送受信操作を受け付けるアプリである。
機能提供アプリ136は、上述のようにベンダーアプリ137の開発を容易化するために、操作部20の第1のコピー受付アプリ131〜FAX受付アプリ135と同等の機能をベンダー等に提供する。
すなわち、機能提供アプリ136が例えばスキャナアプリ112に対応するアプリの場合、通常の操作メニュー及び設定メニュー等のユーザインタフェースを表示する機能をベンダーに提供する。また、機能提供アプリ136が例えばプリンタアプリ113に対応するアプリの場合、通常の操作メニュー及び設定メニュー等のユーザインタフェースを表示する機能をベンダーに提供する。
このようにMFP1の操作部20には、第1のコピー受付アプリ131〜FAX受付アプリ135と同等の機能をベンダー等に提供するための機能提供アプリ136が設けられている。ベンダーアプリ137の開発ベンダーに対しては、機能提供アプリ136の機能を実現するAPI(Application Programming Interface)が公開されている。
(機能提供アプリの機能)
図4は、機能提供アプリ136の機能ブロック図である。操作部20のCPU21は、例えばROM22、RAM23又はフラッシュメモリ24等の記憶部に記憶されている機能提供アプリ136を実行することで、図4に示す受信部151、記憶制御部152、切り替え部153、送信部154、設定処理部155、及び、表示制御部156を実現する。
受信部151は、ユーザが操作パネル27を介して行った入力操作に対応するコマンドを受信し、また、本体10に対して実行要求することで得られた実行結果を受信する。記憶制御部152は、画面表示要求のあったアプリに対応する情報を、例えばROM22、RAM23又はフラッシュメモリ24等の記憶部から読み出し又は保存等を行う。切り替え部153は、ユーザによる操作パネル27の操作に応じて、操作パネル27に表示する画面の切り替えを行う。送信部154は、本体10のコピーアプリ111又はスキャナアプリ112等に所望の動作の実行要求等を送信する。設定処理部155は、設定画面を介してユーザにより設定された設定内容をベンダーアプリ137に通知する等の設定処理を行う。表示制御部156は、操作パネル27に対してメイン画面又は設定画面等の表示制御を行う。
なお、この例では、受信部151〜表示制御部156をソフトウェアで実現することとしたが、受信部151〜表示制御部156のうち、一部又は全部を、IC(Integrated Circuit)等のハードウェアで実現してもよい。
また、機能提供アプリ136は、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)等のコンピュータ装置で読み取り可能な記録媒体に記録して提供してもよい。また、CD−R、DVD(Digital Versatile Disk)、ブルーレイディスク(登録商標)、半導体メモリ等のコンピュータ装置で読み取り可能な記録媒体に記録して提供してもよい。また、機能提供アプリ136は、インターネット等のネットワーク経由でインストールするかたちで提供してもよい。また、機能提供アプリ136は、機器内のROM等に予め組み込んで提供してもよい。
(機能提供アプリの動作:ベンダーアプリのメイン画面にスキャン設定ボタン及びスキャン実行ボタンを分けて表示する場合)
次に、機能提供アプリ136の動作を説明する。図5は、ベンダーアプリ137でスキャンを実行する場合における、機能提供アプリ136の動作の流れを示すシーケンス図である。また、図6は、操作部20の操作パネル27に、初期画面として表示されているホーム画面の一例を示している。ホーム画面には、所望のアプリを起動するための一つ又は複数のアイコンが表示されている。ユーザは、ベンダーアプリ137の起動を指示するためのアイコンを操作する。ベンダーアプリ137の起動を指示する指示信号は、ステップS1において、ホームアプリ130に送信される。
ホームアプリ130は、ステップS2において、起動を指示する指示信号をベンダーアプリ137に送信する。これにより、ベンダーアプリ137は、ステップS3において、例えば図7に示すメイン画面を操作パネル27に表示する。この図7に示すメイン画面の例は、ベンダーアプリ137がスキャナ制御を行うアプリである場合におけるメイン画面の例である。図7に例示するように、ベンダーアプリ137は、スキャン設定を指示する際に操作するスキャン設定ボタン161、及び、スキャンの実行を指示する際に操作するスキャン実行ボタン162を、メイン画面に表示する。
スキャン設定を行う場合、ユーザは、メイン画面に表示されているスキャン設定ボタン161を操作する。これにより、操作パネル27からベンダーアプリ137に対して、スキャン設定ボタン161が操作されたことを示す信号が供給される(ステップS4)。ベンダーアプリ137は、スキャン設定ボタン161が操作されたことを示す信号を受信すると、ステップS5において、機能提供アプリ136に対して、スキャン設定APIの呼び出しを行う。機能提供アプリ136の設定処理部155は、ステップS6において、スキャン設定を行うための設定画面を生成する。機能提供アプリ136の表示制御部156は、生成された設定画面を、ステップS7において操作パネル27に表示する。
図8は、スキャン設定を行うための設定画面の一例を示す図である。図8に例示するように、設定処理部155は、スキャンに関する各種設定項目に対応するアイコン163、及び、設定が完了した際に操作する設定完了ボタン164を含めた設定画面を生成する。
次に、このような設定画面に表示されている各種設定項目に対応するアイコン163のうち、所望の設定項目に対応するアイコン163がユーザにより操作された場合、ステップS8に示すように、ユーザに操作された設定項目を示す信号が、操作パネル27から機能提供アプリ136に供給される。機能提供アプリ136は、受信部151により、ユーザに操作された設定項目を示す信号を受信する。また、機能提供アプリ136は、ステップS9において、切り替え部153により、ユーザに操作された設定項目の設定画面に、画面の切り替えを行う。そして、機能提供アプリ136は、ステップS10において、表示制御部156により、切り替えた設定画面を操作パネル27に表示する。このように、スキャナ設定トップ画面及びスキャナ設定トップ画面から遷移する詳細な設定画面等は、全て機能提供アプリ136で実現される。
図9は、ユーザに操作された設定項目の設定画面の一例を示す図である。ユーザは、図9に例示する設定画面を介して、スキャンに関する詳細な設定を行う。そして、設定が完了した際に、設定完了ボタン164を操作する。操作部20のCPU21は、ユーザの設定操作で設定された設定内容を示す設定内容情報を、例えばRAM23又はフラッシュメモリ24等の記憶部に記憶しておく。この記憶内容情報は、ユーザにより設定完了ボタン164が操作された際に記憶部から読み出され、設定完了ボタン164が操作されたことを示す信号と共に操作パネル27から機能提供アプリ136に送信される。
機能提供アプリ136の受信部151は、ステップS11において、設定完了ボタン164が操作されたことを示す信号と共に、ユーザにより設定された設定内容を示す設定内容情報を受信する。機能提供アプリ136の送信部154は、受信した設定内容情報を、ステップS12において、ベンダーアプリ137に送信する。ベンダーアプリ137は、受信した設定内容情報で、上述のRAM23又はフラッシュメモリ24等の記憶部に記憶されている設定内容情報を更新する。また、ベンダーアプリ137は、設定内容情報を記憶すると、図7に例示したメイン画面を操作パネル27に表示する(ステップS13)。
一方、スキャンを実行する場合、ユーザは、図7に例示するメイン画面に表示されているスキャン実行ボタン162を操作する。これにより、操作パネル27からベンダーアプリ137に対して、スキャン実行ボタン162が操作されたことを示す信号が供給される(ステップS14)。ベンダーアプリ137は、スキャン実行ボタン162が操作されたことを示す信号を受信すると、ステップS15において、機能提供アプリ136に対して、スキャン実行APIの呼び出しを行う。また、ベンダーアプリ137は、上述の設定内容情報を記憶部から読み出して、機能提供アプリ136に送信する。機能提供アプリ136の送信部154は、ステップS16において、設定内容情報及びスキャン実行要求を、本体10のスキャナアプリ112に送信する。本体10のスキャナアプリ112は、設定内容情報に基づいて、エンジン17のスキャン機能を制御する。これにより、実体的なスキャン動作が実行される。
なお、ユーザにより操作パネル27を介して入力された設定内容情報を、機能提供アプリ136の記憶制御部152が、上述の記憶部に記憶し、ベンダーアプリ137からスキャン実行APIの呼び出しが行われた際に、機能提供アプリ136の記憶制御部152が、記憶部から設定内容情報を読み出して、スキャナアプリに送信してもよい。
機能提供アプリ136の表示制御部156は、本体10のスキャナアプリ112により実行されるスキャン動作に対応するスキャン実行中の画面を生成し、ステップS17において、操作パネル27に表示する。図10は、スキャン実行中の画面の一例を示す図である。一例ではあるが、表示制御部156は、「スキャン実行中です」等のメッセージ、スキャン完了枚数及びメモリ残量等を、スキャン実行中の画面に含めて表示する。
次に、本体10のスキャナアプリ112は、スキャンを完了すると、一連のスキャンにより得られた複数の画像情報に対して一つのジョブ識別番号(ジョブID)を発行し、又は、1回のスキャンにより得られた一枚の画像情報毎に一つのジョブIDを発行する。また、スキャナアプリ112は、発行したジョブID及び画像情報を関連付けて、本体10のHDD14又はRAM13等の記憶部に記憶する。そして、スキャナアプリ112は、スキャン実行要求により行ったスキャンで発行したジョブIDを、ステップS18において、スキャン実行要求に対応する応答として機能提供アプリ136に送信する。
なお、この例では、スキャン実行要求に対応する応答としてジョブIDを、スキャナアプリ112から機能提供アプリ136に送信することとした。しかし、スキャン実行要求に対応する応答として、スキャンにより得られた画像情報を、ステップS18において、スキャナアプリ112から機能提供アプリ136に送信してもよい。
ジョブIDを受信した機能提供アプリ136の送信部154は、ステップS19において、ベンダーアプリ137に対してスキャン結果としてジョブIDを通知する。ベンダーアプリ137は、通知されたジョブIDを、例えばフラッシュメモリ24又はRAM23等の記憶部に記憶処理する。ベンダーアプリ137は、この記憶処理後に、ステップS20において、図7に例示したメイン画面を操作パネル27に表示制御する。そして、機能提供アプリ136は、ベンダーアプリ137のメイン画面で操作されたボタン(スキャン設定ボタン161又はスキャン実行ボタン162)に応じて、上述のスキャン設定処理又はスキャン実行処理を行う。
(機能提供アプリの動作:ベンダーアプリのメイン画面にスキャン設定ボタン及びスキャン実行ボタンを纏めて表示する場合)
上述の説明は、ベンダーアプリのメイン画面にスキャン設定ボタン161及びスキャン実行ボタン162を分けて表示する場合における機能提供アプリ136の動作の説明であった。これに対して、ベンダーアプリのメイン画面には、以下に説明するように、スキャン設定ボタン161及びスキャン実行ボタン162を纏めて表示してもよい。この場合における機能提供アプリ136の動作の流れは、図11のシーケンス図に示すようになっている。
すなわち、ユーザにより、ベンダーアプリ137の起動を指示するためのアイコンが操作されると、操作パネル27からホームアプリ130に対して、ベンダーアプリ137の起動を指示する指示信号が送信される(ステップS31)。ホームアプリ130は、ステップS32において、起動を指示する指示信号をベンダーアプリ137に送信する。これにより、ベンダーアプリ137は、ステップS33において、例えば図12に示すベンダーアプリ137のメイン画面を操作パネル27に表示する。この図12に示すメイン画面の例は、上述と同様に、ベンダーアプリ137がスキャナ制御を行うアプリである場合におけるメイン画面の例である。図12に例示するように、ベンダーアプリ137は、スキャン設定を指示する際に操作するスキャン設定ボタン及びスキャンの実行を指示する際に操作するスキャン実行ボタンを一つに纏めたスキャン設定実行ボタン170をメイン画面に表示する。
スキャン設定又はスキャン実行を行う場合、ユーザは、メイン画面に表示されているスキャン設定実行ボタン170を操作する。これにより、操作パネル27からベンダーアプリ137に対して、スキャン設定実行ボタン170が操作されたことを示す信号が供給される(ステップS34)。ベンダーアプリ137は、スキャン設定実行ボタン170が操作されたことを示す信号を受信すると、ステップS35において、機能提供アプリ136に対して、スキャン設定及びスキャン実行を指定するためのトップ画面の表示要求となる、設定実行APIの呼び出しを行う。
この設定実行APIの呼び出しが行われると、機能提供アプリ136の表示制御部156は、例えば図13に示すようにスキャンに関する各種設定項目に対応するアイコン163、及び、スキャンの実行を指定する際に操作するスキャン実行ボタン171を含めたトップ画面を生成する(ステップS36)。そして、機能提供アプリ136の表示制御部156は、生成したトップ画面を、ステップS37において、操作パネル27に表示制御する。一例ではあるが、機能提供アプリ136の表示制御部156は、図13に例示するように、スキャンに関する各種設定項目に対応するアイコン163、及び、スキャン実行を指示するためのスキャン実行ボタン171を含めたトップ画面を生成する。
次に、このようなトップ画面に表示されている各種設定項目に対応するアイコン163のうち、所望の設定項目に対応するアイコン163がユーザにより操作された場合、ステップS38に示すように、ユーザに操作された設定項目を示す信号が、操作パネル27から機能提供アプリ136に供給される。機能提供アプリ136の切り替え部153は、ステップS40において、ユーザに操作された設定項目に対応する詳細な設定画面を生成する。そして、機能提供アプリ136の表示制御部156が、ステップS41において、詳細な設定画面を操作パネル27に表示する。これにより、操作パネル27の表示画面が、上述のトップ画面からユーザに操作された設定項目に対応する詳細な設定画面に切り替わる。図14は、ユーザに操作された設定項目に対応する詳細な設定画面の一例である。この図14の例の場合、機能提供アプリ136の切り替え部153は、詳細な設定項目のアイコンと共に、スキャンを実行する際に操作するスキャン実行ボタン171が表示されている。
ユーザは、所望の設定項目に対応する詳細な設定画面に基づいて、詳細な設定操作を行うと(ステップS42)、設定内容情報がベンダーアプリ137に通知される(ステップS43)。ベンダーアプリ137は、設定内容情報が通知されると、上述のRAM23又はフラッシュメモリ24等の記憶部に記憶されている設定内容情報を更新する。また、ベンダーアプリ137は、ステップS44において、設定内容情報を記憶すると、図13に例示したトップ画面を操作パネル27に表示する。
一方、スキャンを実行する場合、ユーザは、図13に例示したメイン画面に表示されているスキャン実行ボタン171、又は、図14に示した詳細な設定画面に表示されているスキャン実行ボタン171を操作する。これにより、操作パネル27からベンダーアプリ137に対して、スキャン実行ボタン171が操作されたことを示す信号が供給される(ステップS45)。ベンダーアプリ137は、スキャン実行ボタン162が操作されたことを示す信号を受信すると、ステップS46において、機能提供アプリ136に対して、スキャン実行APIの呼び出しを行う。また、ベンダーアプリ137は、スキャン実行ボタン162が操作されたことを示す信号を受信すると、上述の設定内容情報を記憶部から読み出して、機能提供アプリ136に送信する。機能提供アプリ136の送信部154は、ステップS47において、設定内容情報及びスキャン実行要求を、本体10のスキャナアプリ112に送信する。本体10のスキャナアプリ112は、設定内容情報に基づいて、エンジン17のスキャン機能を制御する。これにより、本体10のスキャナアプリ112により、実体的なスキャン動作が実行される。
なお、上述と同様に、ユーザにより操作パネル27を介して入力された設定内容情報を、機能提供アプリ136の記憶制御部152が上述の記憶部に記憶し、ベンダーアプリ137からスキャン実行APIの呼び出しが行われた際に、機能提供アプリ136の記憶制御部152が、記憶部から設定内容情報を読み出して、スキャナアプリに送信してもよい。
機能提供アプリ136の表示制御部156は、本体10のスキャナアプリ112により実行されるスキャン動作に対応するスキャン実行中の画面を生成し(図10参照)、ステップS48において、操作パネル27に表示する。
次に、本体10のスキャナアプリ112は、スキャンを完了すると、上述のようにジョブIDを発行し、ステップS49において、スキャン実行要求に対応する応答として機能提供アプリ136に送信する。なお、ジョブIDの代わりにスキャンにより得られた画像情報を、スキャナアプリ112から機能提供アプリ136に送信してもよいことは、上述のとおりである。
ジョブIDを受信した機能提供アプリ136の送信部154は、ステップS50において、ベンダーアプリ137に対してスキャン結果としてジョブIDを通知する。ベンダーアプリ137は、通知されたジョブIDを、例えばフラッシュメモリ24又はRAM23等の記憶部に記憶処理する。ベンダーアプリ137は、この記憶処理後に、ステップS51において、図12に例示したメイン画面を操作パネル27に表示制御する。そして、機能提供アプリ136の表示制御部156は、ベンダーアプリ137のメイン画面のスキャン設定実行ボタン170が操作された際に、図13に例示したトップ画面を表示し、上述のスキャン設定処理又はスキャン実行処理を行う。
(設定画面のカスタマイズ)
次に、ベンダーアプリ137は、図8又は図13等を用いて説明した各設定項目の「有効/無効」、「表示/非表示」及び「表示順序」等を指定可能となっている。すなわち、ベンダーアプリ137は、例えばスキャン設定項目の場合、カラー印刷、白黒印刷、解像度、読み取りサイズ等の各設定項目の表示の有無及び表示順序等を指定可能となっている。機能提供アプリ136の表示制御部156は、ベンダーアプリ137からの指定に対応する表示形態で、各設定項目を表示する。
以下、具体的に説明するが、まず、図5のシーケンス図のステップS5、ステップS15及び図11のシーケンス図のステップS35及びステップS46等では、説明を簡単にするために、ベンダーアプリ137から機能提供アプリ136に対して直接的に要求を行うこととした。しかし、第1の実施の形態のMFP1の場合、図15に示すように、ベンダーアプリ137及び機能提供アプリ136の間の通信を、操作部20のOS層203が仲介している。
機能提供アプリ136は、「アプリ連携要求」という要求を受け取るアプリであることをOS層203に予め明示(登録:予めアプリを指定して登録)しておく。OS層203は、ベンダーアプリ137から受けた要求が「アプリ連携要求」であった場合、事前に明示された機能提供アプリ136に対して「アプリ連携要求」を通知する。なお、例えばコピー用の機能提供アプリ及びスキャナ用の機能提供アプリ等のように、事前に複数の機能提供アプリ136が明示されている場合、OS層203は、各アプリに対して「アプリ連携要求」を通知する。
ベンダーアプリ137は、アプリ連携要求を行う際に、いくつかのパラメータを指定する。このパラメータで、「機能提供アプリ136に対する所望処理」及び「設定画面に対して表示する設定項目」等を指定する。以下の表1に、アプリ連携要求のパラメータの一覧を示す。
この表1において、「Action」のパラメータは、機能提供アプリ136に要求する動作を設定するパラメータである。例えば、スキャン設定画面の表示を要求する場合、ベンダーアプリ137において、Actionのパラメータの値を「scan_setting(スキャン設定)」として機能提供アプリ136に要求する。また、スキャン実行を要求する場合、ベンダーアプリ137において、Actionのパラメータの値を「scan_job(スキャン実行)」として機能提供アプリ136に要求する。
表1に示す「Setting_ScanColor(カラー設定項目)」、「Setting_FileFormat(ファイル形式設定項目)」、「Setting_Resolution(解像度設定項目)」、「Setting_OriginalSize(読み取りサイズ設定項目)」、「Setting_Density(濃度設定項目)」及び「Setting_Magnification(変倍設定)」等のパラメータは、その設定項目の表示/非表示を示すパラメータである。その設定項目を表示する場合、値に「Visible」を設定する。また、その設定項目を非表示とする場合、値に「inVisible」を設定する。機能提供アプリ136の受信部151は、OS層203を介してこのようなパラメータを受信し、受信したパラメータに応じた処理を行う。
また、機能提供アプリ136に対しては、ユーザの設定操作の「有効/無効」を指定可能となっている。一例ではあるが、図16は、カラー設定項目に対するユーザの設定操作が「有効」に指定されている場合、及び、カラー設定項目に対するユーザの設定操作が「無効(禁止)」に指定されている場合における、カラー設定項目の表示形態を示す図である。この図16において、まず、カラー設定項目が、「inVisible(非表示)」に設定されている場合、機能提供アプリ136の表示制御部156は、ユーザの設定操作の有効及び無効にかかわらず、スキャン設定画面に対してカラー設定項目は表示しない。
一方、カラー設定項目が、「Visible(表示)」に設定されており、ユーザによるカラー設定項目の設定操作を「有効」としている場合、機能提供アプリ136の表示制御部156は、図16に示すようにスキャン設定画面に対して、通常の輝度及び通常の透明度でカラー設定項目を表示する。これに対して、カラー設定項目が、「Visible(表示)」に設定されており、ユーザによるカラー設定項目の設定操作を「無効」としている場合、機能提供アプリ136の表示制御部156は、図16に示すようにスキャン設定画面に対して、通常の輝度よりも低い輝度及び通常よりも高い透明度(例えば半透明の透明度)でカラー設定項目を表示する(半透明表示)。通常の輝度及び通常の透明度でカラー設定項目が表示されている場合、ユーザは、カラー設定項目を任意に設定可能であることを視認できる。また、カラー設定項目が半透明表示されている場合、ユーザは、カラー設定項目は設定不可であることを視認できる。
また、このようなユーザによる設定の可否(有効/無効)は、設定項目毎に設定可能であると共に、全設定項目に対して一括的に設定可能となっている。すなわち、例えばスキャン設定画面の全設定項目の表示がベンダーアプリ137により指定され、ユーザによる全設定項目の設定が、機能提供アプリ136の設定処理部155により「有効」と設定されている場合、機能提供アプリ136の表示制御部156は、図17(a)に示すように、スキャン設定画面の全設定項目を通常の輝度及び通常の透明度で表示する。
これに対して、スキャン設定画面の全設定項目の表示がベンダーアプリ137により指定されているが、ユーザによる全設定項目の設定が、機能提供アプリ136により「無効」と設定されている場合、機能提供アプリ136の表示制御部156は、図17(b)に示すように、スキャン設定画面の全設定項目を通常よりも低い輝度及び通常よりも高い透明度で表示する。なお、スキャン設定画面の全設定項目が、ベンダーアプリ137により「非表示」として指定されている場合、機能提供アプリ136の表示制御部156は、図17(c)に示すように、スキャン設定画面の全設定項目を非表示とする。
次に、以下の表2は、スキャン設定画面(scan_setting)において、「Setting_OriginalSize(読み取りサイズ設定項目)」を非表示(inVisible)とした場合における、各設定項目のパラメータの値を示している。
図18(a)は、読み取りサイズの設定項目を表示したスキャン設定画面を示している。これに対して、表2に示すように読み取りサイズ設定項目を非表示とすると、機能提供アプリ136の表示制御部156は、図18(b)に示すようにスキャン設定画面上の読み取りサイズ設定項目を非表示とする。なお、機能提供アプリ136の表示制御部156は、非表示として設定項目の表示位置には、表示設定されている後続の設定項目を、詰めて表示する。図18(b)の例の場合、機能提供アプリ136の表示制御部156は、非表示とした読み取りサイズの設定項目の表示位置に、「濃度」の設定項目を表示する。
同様に、図19は、スキャン設定画面において、全設定項目を表示した場合の表示例である。ベンダーアプリ137を介してカラー設定項目(白黒、文字、図表の文字が描かれたアイコンの設定項目)が「非表示」に設定された場合、機能提供アプリ136の表示制御部156は、図20に示すように、カラー設定項目を非表示とし、代りに後続のファイル形式の設定項目をカラー設定項目の表示位置に詰めて表示する。
また、機能提供アプリ136の表示制御部156は、ユーザによるカラー設定項目の設定を「無効」としている場合、図21に示すように、表示指定されたカラー設定項目を半透明表示する。
次に、以下の表3は、スキャン設定画面(scan_setting)において、「Setting_ScanColor(カラー設定項目)」と「Setting_FileFormat(ファイル形式設定項目)」の表示位置を入れ替えた場合(変更した場合)における各設定項目の並びを示している。
図22(a)は、スキャン設定画面における各設定項目の通常の並びを示している。通常の並びの場合、機能提供アプリ136の表示制御部156は、カラー設定項目の後にファイル形式設定項目が表示する。しかし、表2に示したように、カラー設定項目とファイル形式設定項目を入れ替えた場合、機能提供アプリ136の表示制御部156は、図22(b)に示すようにファイル形式設定項目を先に表示し、続けてカラー設定項目を表示する。
(選択された機能の提供動作)
次に、操作部20には、同じ機能であっても、ユーザインタフェース等が異なる複数のアプリが記憶されている場合がある。一例ではあるが、図3に示す第1のコピー受付アプリ131及び第2のコピー受付アプリ132は、同じコピーアプリである。しかし、第1のコピー受付アプリ131は、操作ボタン及び設定ボタンを介して、ユーザのコピー操作を受け付けるアプリである。また、第2のコピー受付アプリ132は、主に使用頻度の高い操作ボタン及び設定ボタン等を表示することで、第1のコピー受付アプリ131よりも、表示する操作ボタン及び設定ボタンの数を減らし、視認性及び操作性の向上を図ったアプリである。
ベンダーアプリ137は、機能が削減されたアプリの使用を指定したい場合、又は、機能が豊富なアプリの使用を指定したい場合等がある。或いは、機能が削減されたアプリ及び機能が豊富なアプリのうち、使用するアプリは、どちらでも良い場合もある。操作部20には、機能提供アプリ136として、同じ機能ながらも、提供するユーザインタフェース等が異なる複数の機能提供アプリ136が設けられている。そして、複数の機能提供アプリ136の中から、ベンダーアプリ137からの指定又は状況等に応じた機能提供アプリ136が起動するようになっている。
以下の表4は、スキャン機能に対応する機能提供アプリ136として、通常のユーザインタフェースを介して受け付けた設定及びスキャンを実行する通常スキャン用の機能提供アプリ136及び簡単スキャン用の機能提供アプリ136、及び、主に使用頻度の高い操作ボタン及び設定ボタンに、表示する操作ボタン及び設定ボタンの数を減らしたユーザインタフェースを介して受け付けた設定及びスキャンを実行する簡単スキャン用の機能提供アプリ136が設けられている場合の「Action」のパラメータの一例を示している。
この表4に示すように、簡単スキャン及び通常スキャンの各機能提供アプリ136が設けられている場合、表1を用いて説明した機能提供アプリ136の動作を設定するための「Action」のパラメータに、「easy_scan_setting(簡単スキャン設定)」、「easy_scan_job(簡単スキャン実行)」、「smart_scan_setting(通常スキャン設定)」、「smart_scan_job(通常スキャン実行)」の値が追加される。
なお、通常コピー用の機能提供アプリ136及び簡単コピー用の機能提供アプリ136が設けられている場合、「Action」のパラメータに、「easy_copy_setting(簡単コピー設定)」、「easy_copy_job(簡単コピー実行)」、「smart_copy_setting(通常コピー設定)」、「smart_copy_job(通常コピー実行)」の値が追加される。
表4からわかるように、ベンダーアプリ137は、スキャン設定時の表示画面として簡単スキャンのスキャン設定画面の表示を指示する場合、「Action」のパラメータに、「easy_scan_setting(簡単スキャン設定)」の値を入力して指定する。また、スキャン設定時の表示画面として、通常スキャンのスキャン設定画面の表示を指示する場合、「smart_scan_setting」の値を入力して指定する。
操作部20のOS層203は、「Action」のパラメータの値が「easy_scan_setting」である場合、及び、「smart_scan_setting」である場合の、いずれの場合でも、「easy_scan_setting」のパラメータを、簡単スキャン用の機能提供アプリ136及び通常スキャン用の機能提供アプリ136の両方に通知する。簡単スキャン用及び通常スキャン用の各機能提供アプリ136は、自分に関係の無いパラメータであれば、パラメータで指示された要求を無視する。
例えば、「easy_scan_setting」のパラメータは、簡単スキャン用の機能提供アプリ136のパラメータである。このため、通常スキャン用の機能提供アプリ136は、「easy_scan_setting」のパラメータを受信した場合には、「easy_scan_setting」のパラメータで指示される簡単スキャン設定画面の表示は行わない(パラメータによる指示を無視する)。これに対して、簡単スキャン用の機能提供アプリ136は、受信部151をかいして「easy_scan_setting」のパラメータを受信した場合、表示制御部156が、このパラメータで指定された簡単スキャン設定画面の表示を行う。
また、「Action」のパラメータに、「easy(簡単)」又は「smart(通常)」を、明示的に指定することなく、値を「scan_setting」としてスキャン設定の指示を行うことも可能である。上述のように、簡単スキャン用の機能提供アプリ136及び通常スキャン用の機能提供アプリ136の両方に、「scan_setting」のパラメータが送信される。
しかし、「easy_scan_setting」又は「smart_scan_setting」のうち、いずれかであるかは明示されていない。一例ではあるが、この場合、通常スキャン用の機能提供アプリ136が起動するようになっている。これは、通常スキャン用の機能提供アプリ136の方が、簡単スキャン用の機能提供アプリ136よりも、多くの操作ボタン、設定ボタン及び機能等を提供できるからである。なお、通常スキャン用の機能提供アプリ136がインストールされていない場合は、簡単スキャン用の機能提供アプリ136が起動する。各Actionに対するそれぞれのアプリの振る舞いを表5に記載する。このような簡単スキャン用の機能提供アプリ136及び通常スキャン用の機能提供アプリ136の振る舞いを以下の表5に示す。
(複数のベンダーアプリへの対応動作)
次に、例えば図23に示すベンダーアプリ137a〜137cのように、操作部20に対して複数のベンダーアプリ137が記憶される場合がある。この場合、図4に示した機能提供アプリ136の記憶制御部152は、ベンダーアプリ137毎の要求内容、設定値及び状況等の「アプリデータ」を、RAM23又はフラッシュメモリ24等の記憶部に記憶制御する。また、記憶制御部152は、ベンダーアプリ137からの要求を受け付けると、要求元となるベンダーアプリの情報を上述の記憶部から読み出す。表示制御部156は、記憶部から読み出された要求元となるベンダーアプリの情報に応じた表示制御及びジョブの実行制御を行う。また、切り替え部153は、要求を受け付けた際に、他のジョブの実行状態に応じて、表示内容の切り替え制御を行う。
図24は、機能提供アプリ136の記憶制御部152により、RAM23又はフラッシュメモリ24等の記憶部(状態記憶部の一例)に記憶される「アプリデータ」を示す図である。この図24に示すように、記憶制御部152は、各ベンダーアプリ137のアプリ名、表示画面の状態、ジョブ状態及び設定値を、それぞれ関連付けて上述の記憶部に記憶する。
具体的には、図24の例の場合、ベンダーアプリ137a(アプリA)に対しては、表示画面の状態として、現在、スキャン等の実行中画面(図10参照)が表示されていることを示す情報、設定状態として、スキャン設定等が完了していることを示す情報、ジョブ状態として、スキャン等のジョブが実行中であることを示す情報、及び、「原稿サイズ:A4タテ、解像度:200dpi」等の、例えばスキャンの設定値が、それぞれ関連付けされている。同様に、ベンダーアプリ137b(アプリB)に対しては、表示画面の状態として、現在、スキャン等の設定画面(図8、図9参照)が表示されていることを示す情報、設定状態として、スキャン設定等が設定中であることを示す情報、ジョブ状態として、スキャン等のジョブが未実行であることを示す情報、及び、「原稿サイズ:B4横、解像度:100dpi」等の、例えばスキャンの設定値が、それぞれ関連付けされている。
同様に、ベンダーアプリ137c(アプリC)に対しては、表示画面の状態として、現在、画面表示がされていないことを示す情報、設定状態として、スキャン設定等は完了していることを示す情報、ジョブ状態として、スキャン等のジョブが終了していることを示す情報、及び、「原稿サイズ:A3横、解像度:600dpi」等の、例えばスキャンの設定値が、それぞれ関連付けされている。機能提供アプリ136は、このような各ベンダーアプリ137の状態等に応じた振る舞いをする。
(複数のベンダーアプリが記憶されている場合の設定要求時の動作)
図25は、例えばベンダーアプリ137a〜137c(アプリA〜アプリC)が操作部20に記憶されている場合において、アプリAからの設定要求があった際に、機能提供アプリ136が、各アプリA〜アプリCの設定状態及びジョブの実行状態等に応じて、アプリAの要求に対応する設定画面を表示する流れを示すシーケンス図である。
まず、ユーザにより操作パネル27を介して、アプリAの設定画面の表示を指示する操作が行われると(ステップS61)、アプリAから機能提供アプリ136に対して、設定画面の表示要求が送信される。機能提供アプリ136は、この表示要求を受信部151で受信し(ステップS62)、記憶制御部152に送信する(ステップS63)。記憶制御部152は、RAM23又はフラッシュメモリ24等の記憶部に記憶されている「アプリデータ」から、アプリAに対応するアプリデータを読み出す(ステップS64)。
読み出したアプリAのアプリデータにより、現在、アプリA用として表示している表示画面は無く、設定も未完了の場合、記憶制御部152は、表示制御部に設定画面の表示要求を行う(ステップS65)。表示制御部156は、設定処理部155に対して設定情報の確認を行い(ステップS66)、通知を受けた情報及び設定処理部155が保持しているMFP1のスペック情報を用いて、設定画面を生成して操作パネル27に表示する(ステップS67)。また、表示制御部156は、設定画面を表示すると、アプリAに対して設定画面の表示が完了したことを示す表示通知を行う(ステップS68)。
これに対して、読み出したアプリAのアプリデータにより、現在、アプリA用の設定画面が表示中であることを認識した場合、表示制御部156は、設定処理部155に対して、現在、設定されている設定情報を確認し、確認した現在の設定情報を用いて設定画面を生成し、操作パネル27に表示する。
次に、表示した設定画面を介して、ユーザにより入力された設定変更情報は、機能提供アプリ136の受信部151により受信され(ステップS69)、表示制御部156に送信される(ステップS70)。表示制御部156は、設定変更情報に応じて更新した設定画面を、操作パネル27に表示する。
次に、設定が完了すると、ユーザは、操作パネル27を介して設定完了操作を行う。機能提供アプリ136の受信部151は、操作パネル27からの設定完了信号を受信し(ステップS71)、記憶制御部152に送信する(ステップS72)。記憶制御部152は、設定完了信号を受信すると、上述の記憶部に記憶されているアプリデータのうち、アプリAのアプリデータを、ユーザにより更新入力された設定情報で更新する(ステップS73)。そして、記憶制御部152は、アプリAに対して、設定情報を送信すると共に、表示完了通知を行う(ステップS74)。アプリAは、表示完了通知を受信すると、設定が完了したと認識し、例えば図7又は図12を用いて説明したメイン画面を操作パネル27に表示する(ステップS75)。
(複数のベンダーアプリが記憶されている場合のジョブ実行動作)
図26は、例えばベンダーアプリ137a〜137c(アプリA〜アプリC)が操作部20に記憶されている場合において、アプリAからジョブの実行要求があった際に、機能提供アプリ136が、各アプリA〜アプリCの表示状態及びジョブの実行状態に応じて、アプリAの要求に対応するジョブを実行する流れを示すシーケンス図である。
まず、ユーザにより操作パネル27を介して、アプリAのジョブの実行を指示する操作が行われると(ステップS81)、アプリAから機能提供アプリ136に対して、ジョブ実行画面の表示要求が送信される。機能提供アプリ136は、この表示要求を受信部151で受信し(ステップS82)、記憶制御部152に送信する(ステップS83)。記憶制御部152は、RAM23又はフラッシュメモリ24等の記憶部に記憶されている「アプリデータ」から、アプリAに対応するアプリデータを読み出す(ステップS84)。
読み出したアプリAのアプリデータにより、現在、アプリA用として表示している表示画面は無く、設定も完了している場合、記憶制御部152は、表示制御部156に対して、ジョブ実行画面の表示要求を行う(ステップS85)。ジョブ実行画面の表示要求を受信すると、表示制御部156は、設定処理部155に対して、ジョブの実行要求を行う(ステップS86)。設定処理部155は、本体10のアプリに対して、ジョブの実行要求を行う(ステップS87)。
一方、表示制御部156は、設定処理部155に対してジョブの実行要求を行うと、ステップS88において、操作パネル27に対してジョブの実行画面を表示し、ステップS89において、アプリAに対してジョブの実行画面の表示通知を行う。また、記憶制御部152は、設定処理部155からジョブの実行通知を受信し(ステップS90)、アプリAは、現在、ジョブの実行中であることを示すアプリデータを、上述の記憶部に記憶する(ステップS91)。
次に、設定処理部155は、本体10のアプリからジョブが完了したことを示す完了通知を受信すると(ステップS92)、受信した完了通知を記憶制御部152に送信する(ステップS93)。記憶制御部152は、アプリAのジョブが完了したことを示すアプリデータを、上述の記憶部に記憶する(ステップS94)。また、記憶制御部152は、アプリAに対して、ジョブの完了通知を行う(ステップS95)。アプリAは、ジョブの完了通知を受信すると、例えば図7又は図12を用いて説明したメイン画面を操作パネル27に表示する(ステップS96)。
このように機能提供アプリ136は、各アプリA〜アプリCの表示状態及びジョブの実行状態に応じて、設定画面の表示制御及びジョブの実行制御を行う。これにより、操作部20に複数のアプリが記憶されることとなっても、各アプリの表示及びジョブを整理しながら、それぞれ実行することができる。
(本体でジョブが実行中である場合のメッセージ表示)
ここで、例えば本体10が複数ジョブの同時受け付けに対応していない場合等において、現在、本体10が他のアプリ等のジョブを実行中の場合がある。機能提供アプリ136の記憶制御部152は、記憶部に記憶されている各アプリA〜Cの137のアプリデータを参照し、各アプリA〜Cのジョブ実行状態を確認する。そして、記憶制御部152により、本体10が他のアプリのジョブを実行中であることが検出された場合、表示制御部156が、例えば「現在、ジョブを実行できません」等の、ジョブが実行できない旨のメッセージを操作パネル27に表示する(報知動作の一例)。なお、この例では、メッセージを表示することで、ジョブが実行できない旨をユーザに報知することとしたが、例えば発光制御又は音声の出力制御等により、ユーザに対してジョブが実行できない旨を報知してもよい。
これにより、本体10にジョブの実行要求を行う前に、ユーザに対して、現在ジョブが実行きないことを認識させことができる。また、本体10に対して不要な要求を行わずに済むため、本体10の負荷を軽減することができる。
(実行中のジョブが存在する場合)
また、本体10で実行中のジョブが完了するまでに長時間を要する場合がある。この場合、ユーザは、例えばスキャン設定又はコピー設定等の設定操作を行った後に、本体10が実行中のジョブを完了するまで、自分のジョブの実行を待つ必要がある。ユーザAがジョブの完了を待っている間に、他のユーザBがアプリを利用することで、ユーザAの設定値がユーザBにより変更され、ユーザAが自分のジョブを実行する際に、再度の設定が必要となる不都合を生ずることが考えられる。
このため、機能提供アプリ136の設定処理部155は、操作パネル27を介して設定要求がされた際に、記憶制御部152に対して本体10で現在実行中のジョブの確認要求を行う。記憶制御部152により、現在、実行中のジョブが確認された場合、表示制御部156は、例えば「現在、ジョブを実行できません」等の、ジョブが実行できない旨のメッセージを操作パネル27に表示する。そして、設定処理部155は、本体10で実行されていたユーザBのジョブが完了した際に、ユーザAのジョブの設定を受け付け、設定された設定値に基づいて、ジョブの実行処理を行う。
これにより、本体10にジョブの実行要求を行う前に、ユーザに対して、現在ジョブが実行きないことを認識させことができる。また、本体10に対して不要な要求を行わずに済むため、本体10の負荷を軽減することができる。上述の設定し直し等の不都合を防止できる。
(メモリ管理動作)
次に、各アプリに対して利用可能なメモリ容量が制限されている場合がある。また、各アプリのデータ量が増えた場合、データの検索が長時間化することが懸念される。このため、記憶制御部156は、データ量が、予め指定しているメモリ容量以上となったアプリのデータのうち、時間的に古いデータを削除し、アプリのデータを予め指定しているメモリ容量以下のデータ量となるように制御する。
これにより、各アプリのデータ量を、予め指定されたデータ容量内に制限できるため、各アプリのデータ量が増えることで、データの検索が長時間化する不都合を防止できる。
(選択された設定のデフォルト表示動作)
次に、機能提供アプリ136の記憶制御部152は、ユーザにより設定された設定値を、RAM23又はフラッシュメモリ24等の記憶部(設定値記憶部の一例)に記憶する。ユーザにより設定された設定値は、最新の設定値として記憶部に記憶される。また、記憶部には、最新の設定値の他、デフォルトとして設定されている設定値が記憶される。
ベンダーアプリ137から、設定値の表示要求があると、表示制御部156は、デフォルトとして設定されているデフォルト設定値を表示するか、又は、例えば前回の設定値等の最新の最新設定値を表示するかを、ユーザに選択させるための設定値の選択画面を表示パネル27に表示する。設定処理部155は、ユーザにより選択された方の設定値である、デフォルト設定値又は最新設定値の設定処理を行う。
これにより、ベンダーアプリ137で同じ設定値を用いる場合等に、毎回、設定を行う手間を省くことができる。なお、ベンダーアプリ137のジョブの実行が完了した際に、記憶制御部156は、上述の最新設定値及び(又は)デフォルト設定値を記憶部から削除してもよい。これにより、記憶部の記憶容量を、最新設定値及び(又は)デフォルト設定値の分、解放することができる。
(セキュリティ維持動作)
次に、MFP1がユーザ認証機能を利用している場合、複数のユーザが、それぞれ所望の設定を行うことが考えられる。このようなユーザの設定(情報)を、他のユーザに開示することは、セキュリティ上好ましいことではない。
このため、記憶制御部155は、MFP1にログインしているユーザがログアウトした際に、起動していたベンダーアプリ137に関連する一部又は全部の情報(例えば、設定情報等)を上述の記憶部から消去する。これにより、ユーザの設定等の情報が、他のユーザに開示される不都合を防止でき、MFP1のセキュリティを維持することができる。
(第1の実施の形態の効果)
以上の説明から明らかなように、第1の実施の形態のMFP1は、本体10のアプリ層101に設けられているコピーアプリ111、スキャナアプリ112、プリンタアプリ113又はFAXアプリ114と同等の機能を備えており、ベンダーアプリ137に対して、本体10に記憶されているコピーアプリ111〜FAXアプリ114と同等の機能を提供する機能提供アプリ136を設ける。そして、MFP1の機能単位の画面表示及びジョブの実行制御を機能提供アプリ136が行う。これにより、機能提供アプリ136で行われる部分のプログラム開発を、開発ベンダーのベンダーアプリ137で行う必要が無いため、ベンダーアプリ137の開発を容易化することができる。
また、MFP1が新機種に移行した際に、例えばモノクロ機からカラー機への対応又は片面機から両面機への対応等の機種に依存して機種対応開発が必要となる設定画面は、機能提供アプリ136の実装部分となる。このため、機種依存の実装部分に対応するベンダーアプリ137の機種対応開発を不要とすることができる。
(第2の実施の形態)
次に、第2の実施の形態のMFPの説明をする。この第2の実施の形態のMFPは、標準搭載のジョブ実行機能アプリと、ベンダーアプリに対して機能提供を行う機能提供アプリを一つのアプリケーションプログラムに纏めた例であり(統合アプリケーション)、ベンダーアプリから呼び出されて動作するか、又は、標準搭載のジョブ実行機能アプリとして呼び出されて動作するかを判断し、それぞれに適した機能/画面提供を行う。
例えば、ユーザAによりメイン画面から標準搭載アプリのアイコンが操作された場合、機能提供アプリは標準搭載のアプリとして動作する。その後、他のユーザBがベンダーアプリを起動し、ジョブの実行機能を利用しようとした際には、機能提供アプリは、標準搭載のアプリとして動作していたときの情報(状態情報)を保存した後、ベンダーアプリの仲介のアプリとして動作する。そして、再度、ユーザAが標準搭載アプリを起動した際には、保存していた状態情報に基づいてユーザAが操作していた画面を再表示する。なお、上述の第1の実施の形態と、以下に説明する第2の実施の形態とでは、この点のみが異なる。このため、以下、両者の差異の説明のみを行い、重複説明は省略する。
(第2の実施の形態のソフトウェア構成)
図27は、第2の実施の形態のMFP1に設けられているソフトウェア構成を示す図である。この図27に示すように、本体10は、アプリ層101、サービス層102及びOS層103に分かれている。サービス層102は、省エネルギー管理及びメモリ管理等各アプリが共通で行う処理を行う。
操作部20は、アプリ層201及びOS層203に分かれている。本体アプリと操作部アプリの違いは、本体のアプリでは、エンジン制御等を行うことでMFP1の機能(読み取り又は印刷等)の制御を行うのに対し、操作部アプリでは、UI制御を行う。つまり、操作部アプリで画面表示を行ってユーザの操作を受け付け、そのユーザ操作に基づいたエンジン制御を本体アプリが行っている。
操作部20には、MFP1にインストールされている、例えばスキャナアプリ、コピーアプリ、プリンタアプリ又はファクスアプリ等のさまざまなアプリケーションが表示される。図27に示す機能提供アプリ500が、第2の実施の形態の要部となるアプリである。この第2の実施の形態の場合、機能提供アプリ500が、「標準搭載のアプリ」及び「ベンダーアプリに対する機能提供アプリ」として2つの役割を担う、物理的に1つのアプリケーションとなる(統合アプリケーションの一例)。これに対して、上述の第1の実施の形態のMFP1の場合、「機能提供アプリ」と「標準搭載のアプリ」がそれぞれ別のアプリとして存在する。ベンダーアプリ137は、例えばスキャンの設定又は実行を行う際に、このスキャナ機能提供アプリ500の呼び出しを行う。
(機能提供アプリの機能)
図28は、機能提供アプリ500の機能ブロック図である。操作部20のCPU21は、例えばROM22、RAM23又はフラッシュメモリ24等の記憶部に記憶されている機能提供アプリ500を実行することで、受付部501、制御部502、記憶制御部503、表示制御部504、設定部505、入力制御部506及びジョブ実行部507の各機能を実現する。
受付部501は、機能提供アプリのアイコンが操作されたた場合に生成される起動要求、又は、ベンダーアプリ137からの起動要求を受け付ける。表示制御部504は、ジョブ設定/実行画面等を表示する。設定制御部505は、MFP1のスペックに合わせてジョブ設定/実行画面の表示内容を変更し、設定値の調整を行う。入力制御部506は、表示した画面に対するユーザの入力を受け付ける。ジョブ実行部507は、決定した設定値を利用してジョブ実行の要求を行い、その後の複雑なジョブ実行処理を取り扱う。記憶制御部503は、呼び出し元の情報(標準搭載のアプリとして起動されているか、又は、ベンダーへの機能提供として起動されているかを示す情報)、設定値及び状況情報等の記憶制御及び読み出し制御を行う。制御部502は、呼び出しを受け付けた後に、呼び出し元のアプリに応じた情報を、操作部20のROM22、RAM23又はフラッシュメモリ24等の記憶部、或いは、本体10のROM12、RAM13又はHDD14等の記憶部から取り出し、呼び出し元に合わせた表示又はジョブを実行する。
(機能提供アプリにおける機能提供動作)
次に、機能提供アプリ500が、ベンダーアプリ137に対して機能提供を行う動作を説明する。まず、図29に示すように、ユーザが使用するアプリを選択するためのホーム画面には、MFP1にインストールされているさまざまなアプリのアイコンが表示される。このアイコンの中から、例えばベンダースキャナアプリアイコン510を選択すると、ベンダーアプリが起動され、図7に示したベンダーアプリのメイン画面が操作パネル27に表示される。なお、図7の例は、ベンダースキャナアプリのメイン画面の例である。
ベンダースキャナアプリの設定ボタン161が操作されると、機能提供アプリ500のうち、スキャナ機能提供アプリが起動してアプリが切り替わり、図8に示したスキャナ設定トップ画面が表示される。なお、内部的には、ここでベンダースキャナアプリからスキャナ機能提供アプリに対するAPI呼び出しが行われてスキャナ機能提供アプリが起動する。
スキャナ機能提供アプリは、ユーザ操作によって様々なスキャナ設定の設定が可能である。例えば、図8に示すファイル形式選択ボタン163が操作されると、図9に示すファイル形式選択画面が表示される。このように、スキャナ設定トップ画面や、その画面から遷移する詳細な設定画面などは全てスキャナ機能提供アプリで実現される。
スキャナ機能提供アプリの設定完了ボタン164が操作されると、スキャナ設定が確定してアプリが切り替わり、図7に示すベンダースキャナアプリのメイン画面に戻る。
ベンダースキャナアプリのスキャン実行ボタン162が操作されると、スキャナ機能提供アプリが起動してアプリが切り替わり、図10に示したスキャン実行画面が表示され、スキャンが実行される。なお、内部的には、ここでベンダースキャナアプリからスキャナ機能提供アプリに対するAPI呼び出しが行われてスキャナ機能提供アプリが起動する。
スキャンが完了するとアプリが切り替わり、図7に示すベンダースキャナアプリのメイン画面に戻る。このときスキャン結果画像の引渡しも行われる。
このように、ベンダーアプリは、スキャナ設定ボタン161とスキャン実行ボタン162を実装し、各ボタン161又は162の操作時にスキャナ機能提供アプリに対するAPI呼び出し処理を実装するだけで、スキャナ設定、スキャンの実行及びスキャン結果画像の取得を可能とすることができる。ベンダーアプリは、このスキャン結果画像を自由に編集、送信又は蓄積することも可能である。
(機能提供アプリにおける標準搭載アプリとしての動作)
次に、機能提供アプリ500が、例えば標準搭載のスキャナアプリとして機能する場合の動作を説明する。この場合、図29に示したホーム画面において、例えば標準搭載のスキャナアプリを選択するためのアイコン510が選択操作されると、図30に示すように
標準搭載のスキャナアプリの画面が表示される。
例えば、ファイル形式選択ボタンが操作されると、図31に示すファイル形式選択画面が表示される。このファイル形式選択画面のスタートボタン511が操作されると、図10と同様のスキャン実行画面が表示され、スキャンが実行される。
(設定画面表示動作)
次に、第2の実施の形態のMFP1における設定画面表示動作の流れを、図32及び図33のシーケンス図を用いて説明する。この図32及び図33のシーケンス図は、「ベンダーアプリから機能提供アプリの呼び出し」、「ベンダーアプリを閉じる」、「ホーム画面からの機能提供アプリの呼び出し(標準搭載のスキャナアプリとして使用する)」、「機能提供アプリを閉じる」、「ベンダーアプリを再度開く」という操作を順に行ったときのシーケンス図である。
このシーケンス図において、一度アプリを閉じたときに(ホーム画面に戻る)、直前のアプリの状態情報(ベンダーアプリ又はホーム画面から呼び出されたか、設定値情報、ジョブの状態を示す情報)を保存しておき、再度開き直したときには、状態情報に基づいて、設定画面を再描画する。また、アプリの状態情報の保存時に、古い状態情報が残っていた場合には、その古い状態情報を削除して新たな状態情報を追加(更新)する。
すなわち、ユーザにより、ホーム画面を介してベンダーアプリ137が起動され(ステップS101)、設定ボタンが操作されると(ステップS102)、ベンダーアプリ137は、機能提供アプリ500に対して画面表示要求を行う(ステップS103)。機能提供アプリ500の受付部501は、この画面表示要求を受信し、制御部502に対して例えばベンダースキャナアプリの画面表示要求を行う(ステップS104)。制御部502は、記憶制御部503に対して、ベンダースキャナアプリの直前の状態情報の取得要求(アプリ前状態取得要求)を行う(ステップS105)。
状態情報は、例えば本体部10のHDD14、操作部20のRAM23等の記憶部に記憶されている。記憶制御部503は、本体部10のHDD14から状態情報を取得する場合、操作部20の接続I/F26及び本体10の接続I/F16を介して、本体10のHDD14にアクセスし、状態情報を取得する。また、記憶制御部503は、操作部20のRAM23から状態情報を取得する場合、操作部20のバスライン28を介してRAM23にアクセスし、状態情報を取得する。記憶制御部503は、取得した状態情報を制御部502に送信する(ステップS106)。
操作部のOSがリナックス(登録商標)(Linux(登録商標))、又は、リナックス(登録商標)を拡張して開発されたOS(例えば、Android(登録商標)等)では、「tmpfs」という一時的にデータを格納するためのファイルシステムが利用できる(全てのリナックス(登録商標)、又は、それを拡張したOSで利用できるとは限らない)。この領域は、揮発性を有する一時的な記憶領域となっている。このため、アプリの状態情報の一時的な保存領域として用いることができる。
「tmps」は、データを保存する媒体として揮発領域であるRAMを利用するため、電源を落とすとデータは消去されてしまう。しかし、ここに保存するアプリの状態は、複合機が起動している間だけ保持できていればよい(アプリを切り替えるときに必要になる情報であり、複合機再起動後はデフォルトの状態に戻っていることが望ましいため)。そのため、揮発領域であっても問題はない。また、フラッシュメモリのよりも寿命が長いRAMを用いることで安定した動作を可能とすることができる。
次に、状態情報を取得すると、制御部502は、表示制御部504に対し、設定画面の表示要求を行う(ステップS107)。表示制御部504は、設定制御部505にアクセスすることで、設定情報の確認を行い(ステップS108、ステップS109)、操作パネル27に対して設定画面を表示する(ステップS110)。表示制御部504は、設定画面を表示すると、ベンダーアプリ137に対して、設定画面を表示したことを示す設定画面表示通知を行う。
なお、ベンダーアプリの初回起動時等のように、前回の状態情報が記憶されていない場合、表示制御部504は、デフォルトの設定画面を表示する。
次に、設定画面において、ステップS112に示すように、ユーザにより操作パネル27を介してカラー設定変更操作が行われると、入力制御部506は、ステップS113において、ユーザにより入力されたカラー設定情報を設定制御部505に送信する。設定制御部505は、ユーザにより設定されたカラー設定情報等をRAM23等の記憶部に、一時的に保持する。
次に、アプリが閉じられることで(ステップS114)、ホーム画面に戻る際、ベンダーアプリ137は、機能提供アプリ500に対して状態情報の保存要求(状態保存要求)を行う(ステップS115)。機能提供アプリ500の受付部501は.この状態保存要求を受信すると、制御部502に転送する(ステップS116)。制御部502は、設定制御部505に対し、設定情報の取得要求を行うと共に(ステップS117)、ジョブ実行部507に対してジョブの実行状態を示す実行状態情報の取得要求を行う(ステップS119)。
設定制御部505は、設定情報を制御部502に送信する(ステップS118)。また、ジョブ実行部507は、実行状態情報を制御部502に送信する(ステップS120)。制御部502は、設定情報、実行状態情報、及び、読み出し元を示す読み出し元情報(ホーム画面から呼び出されたか、又は、ベンダーアプリから呼び出されたかを示す情報)を含む状態情報を生成し、これを記憶制御部503に送信する。記憶制御部503は、上述のように本体部10のHDD14、又は、操作部20のRAM23等の記憶部に状態情報を記憶制御する(ステップS121)。
以下の表6に、状態情報の一例を示す。
この表6の例に示すように、状態情報としては、機能提供アプリ500の呼び出し元を示す情報、表示中の画面を示す情報、各設定値の情報、及び、ジョブ状態を示す情報が記憶される。表6の例は、機能提供アプリ500の呼び出し元はベンダーアプリであり、実行中画面が表示中であり、カラー印刷、600dpiの解像度、A4縦の原稿サイズで、ジョブ状態が実行中であることを示す状態情報の例である。また、表6の例は、機能提供アプリ500の呼び出し元はホーム画面からであり、実行中画面が設定画面であり、モノクロ印刷、200dpiの解像度、B4縦の原稿サイズで、ジョブ状態が未実行であることを示す状態情報の例である。
次に、図33のシーケンス図において、ユーザによりホーム画面の機能提供アプリのアイコンが操作されると(ステップS122)、機能提供アプリ500の画面表示要求が機能提供アプリ500に送信される。機能提供アプリ500の受付部501は、この画面表示要求を制御部502に送信する(ステップS123)。制御部502は、記憶制御部503に対して、上述の状態情報の取得要求を行う(ステップS124)。記憶制御部503は、本体10のHDD14又は操作部20のRAM23等の記憶部から状態情報を読み出し、制御部502に転送する(ステップS125)。
次に、制御部502は、記憶部から読み出された状態情報に基づいて、表示制御部504に対して、設定画面の表示要求を行う(ステップS126)。表示制御部504は、設定制御部505と通信することで、設定情報の確認を行い(ステップS127、ステップS128)、操作パネル27に対して設定画面を表示する(ステップS129)。
なお、初回起動時等に状態情報が記憶部に記憶されていない場合、表示制御部504は、デフォルトの設定画面を表示する。
次に、操作パネル27を介してアプリの終了が指定されると(ステップS130)、機能提供アプリ500の受付部501は、制御部502に対して状態情報の保存要求(状態保存要求)を行う(ステップS131)。制御部502は、設定制御部505に対し、設定情報の取得要求を行うと共に(ステップS132)、ジョブ実行部507に対してジョブの実行状態を示す実行状態情報の取得要求を行う(ステップS134)。
設定制御部505は、設定情報を制御部502に送信する(ステップS133)。また、ジョブ実行部507は、実行状態情報を制御部502に送信する(ステップS135)。制御部502は、設定情報、実行状態情報、及び、読み出し元を示す読み出し元情報(機能提供アプリ500が、ホーム画面から呼び出されたか、又は、ベンダーアプリから呼び出されたかを示す情報)を含む状態情報を生成し、これを記憶制御部503に送信する。記憶制御部503は、上述のように本体部10のHDD14、又は、操作部20のRAM23等の記憶部に状態情報を記憶制御する。
次に、ユーザにより、ホーム画面を介してベンダースキャナアプリが起動され(ステップS137)、設定ボタンが操作されると(ステップS138)、ベンダーアプリ137は、機能提供アプリ500に対して画面表示要求を行う(ステップS139)。機能提供アプリ500の受付部501は、画面表示要求を受信し、制御部502に対して例えばベンダースキャナアプリの画面表示要求を行う(ステップS140)。制御部502は、記憶制御部503に対して、ベンダースキャナアプリの直前の状態情報の取得要求(アプリ前状態取得要求)を行う(ステップS141)。この際、制御部502は、「ベンダーアプリからの呼び出し」として使用された際の状態情報を取得する。記憶制御部503は、取得した状態情報を制御部502に送信する(ステップS142)。
次に、状態情報を取得すると、制御部502は、表示制御部504に対し、設定画面の表示要求を行う(ステップS143)。表示制御部504は、設定制御部505にアクセスすることで、設定情報の確認を行い(ステップS144、ステップS145)、操作パネル27に対して設定画面を表示する(ステップS146)。この例の場合、ステップS112及びステップS113において、ユーザによりカラー設定が変更された例である。このため、ステップS146では、状態情報に基づいて、変更されたカラー設定が反映された設定画面が表示される。
(ジョブ実行動作)
次に、第2の実施の形態のMFP1におけるジョブ実行動作の流れを、図34のシーケンス図を用いて説明する。ユーザにより、操作パネル27を介してベンダーアプリ137が起動操作され(ステップS201)、ジョブ実行を指定するスタートボタンが操作されると(ステップS202)、ベンダーアプリ137は、機能提供アプリ500に対して、例えばベンダースキャナアプリのジョブ実行画面の表示要求を行う(ステップS203)。
機能提供アプリ500の受付部501は、ジョブ実行画面の表示要求を制御部502に転送する(ステップS204)。制御部502は、ジョブ実行画面の表示要求を受信すると、記憶制御部503に対して状態情報の取得要求を行う(ステップS205)。記憶制御部503は、上述のように本体10のHDD14等の記憶部から状態情報を読み出し、制御部502に送信する(ステップS206)。
次に、制御部502は、表示制御部504に対してジョブ実行中画面の表示要求を行う(ステップS207)。このジョブ実行中画面の表示要求を受信すると、表示制御部504は、ジョブ実行部507に対してジョブの実行要求を行う(ステップS208)。ジョブ実行部507は、本体アプリ600と通信することで、スキャナ又はコピー等のジョブを実行制御する(ステップS209)。本体アプリ600でジョブが実行されると、ジョブ実行部507は、制御部502に対してジョブの実行通知を行う(ステップS210)。
次に、アプリが閉じられることで(ステップS211)、ホーム画面に戻る際、ベンダーアプリ137は、機能提供アプリ500に対して状態情報の保存要求(状態保存要求)を行う(ステップS212)。機能提供アプリ500の受付部501は.この状態保存要求を受信すると、制御部502に転送する(ステップS213)。制御部502は、設定制御部505に対し、設定情報の取得要求を行うと共に(ステップS214)、ジョブ実行部507に対してジョブの実行状態を示す実行状態情報の取得要求を行う(ステップS216)。
設定制御部505は、設定情報を制御部502に送信する(ステップS215)。また、ジョブ実行部507は、実行状態情報を制御部502に送信する(ステップS217)。制御部502は、設定情報、実行状態情報、及び、読み出し元を示す読み出し元情報(ホーム画面から呼び出されたか、又は、ベンダーアプリから呼び出されたかを示す情報)を含む状態情報を生成し、これを記憶制御部503に送信する。記憶制御部503は、上述のように本体部10のHDD14、又は、操作部20のRAM23等の記憶部に状態情報を記憶制御する(ステップS218)。
次に、ベンダースキャナアプリでスキャン実行中において、標準搭載のスキャナアプリを使用するために、ホーム画面の機能提供アプリ500のアイコンが操作されると(ステップS219)、機能提供アプリ500の受付部501は、制御部502に対して、標準搭載のスキャナアプリのジョブ実行画面の表示要求を行う(ステップS220)。制御部502は、記憶制御部503から、標準搭載のスキャナアプリの状態情報を取得する(ステップS221、ステップS222)。しかし、この場合、ベンダースキャナアプリでスキャン実行中であるため、標準搭載のスキャナアプリでスキャンを実行できない。このため、制御部502は、表示制御部504に対してジョブを実行できないことを示すジョブ実行不可ダイアログの表示要求を行う(ステップS223)。表示制御部504は、操作パネル27に、ジョブ実行不可ダイアログを表示する。これにより、ユーザは、現在、ベンダースキャナアプリでスキャン実行中であるため、標準搭載のスキャナアプリでスキャンを実行できないことを認識する。
(第2の実施の形態の効果)
このような第2の実施の形態のMFP1は、上述の第1の実施の形態で説明した効果に加え、以下の効果を得ることができる。
標準搭載のジョブ実行機能アプリにベンダーへの機能提供機能を付加することで、二つのアプリケーションプログラムが一つのアプリケーションプログラムとなっているため、同じ機能であるにも関わらず、異なる記憶領域を無駄に使用する不都合を防止できる。すなわち、アプリケーションプログラムを記憶するための記憶領域の削減を図ることができる。
また、ジョブ実行機能にバグが混入していた場合、上述の一つのアプリケーションに対してのみ修正作業を施せばよいため、作業数を削減でき、管理コストを低く抑えることができる。
ここで、標準搭載のジョブ実行機能アプリにベンダーへの機能提供機能を付加して一つのアプリケーションプログラムに纏める場合、機能提供アプリの呼び出し元の違いによる状態管理が課題となる。例えば、標準搭載アプリとして起動している間にユーザAがカラー設定を変更し、その後、ユーザBがベンダーアプリを立ち上げたときに、解像度の設定を変更したとする。この後、再度、ユーザAが標準搭載アプリを起動した際には、カラー設定のみが変更された状態でアプリが起動することが望ましい。
このため、第2の実施の形態のMFP1の場合、呼び出し元毎に、直前の状態情報を記憶しておき、アプリケーションを一旦終了し、再度、起動する際に、記憶しておいた状態情報を読み出し、終了した際の機器の状態を再現する。これにより、標準搭載のジョブ実行機能アプリにベンダーへの機能提供機能を付加して一つのアプリケーションプログラムに纏めた場合でも、呼び出し元毎の状態管理を可能とすることができる。
最後に、上述の各実施の形態は、一例として提示したものであり、本発明の範囲を限定することは意図していない。この新規な各実施の形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことも可能である。また、上述の各実施の形態は、発明の範囲又は要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。