以下、各実施形態について添付の図面を参照しながら説明する。なお、本明細書および図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省略する。
<用語の説明>
複合機(MFP:Multifunction Peripheral/Product/Printer)等の画像処理装置にインストールされているアプリケーション(アプリケーションプログラム、アプリケーションソフトウェアとも呼ばれる)は、フローを提供することができる。「フロー」とは、複数の機能(つまり、2つ以上の機能)が順次実行する一連の処理のことをいう。本発明の一実施形態では、フロー(つまり、複数の機能が順次実行する一連の処理)を1つのジョブとして扱うことができる。
例えば、機能は、画像処理装置の機能(例えば、スキャン機能、印刷機能等)、画像処理装置の機能以外の機能(例えば、画像にスタンプを付与する機能等)等である。
例えば、機能は、入力機能(画像を読み取るスキャン機能、画像をUSBメモリ、SDカード、サーバ等の記憶装置から取得する機能等)、ファイルに変更を加える機能(画像にスタンプ、モザイク、塗りつぶし等を付与して画像を加工する機能、ファイル名を変更する機能等)、出力機能(画像を印刷する印刷機能、画像をUSBメモリ、SDカード、サーバ等の記憶装置に保存する機能、画像をメール等で転送する機能)等である。
例えば、フローに含まれる複数の機能は、画像処理装置の機能のみを含む。また、例えば、フローに含まれる複数の機能は、画像処理装置の機能と画像処理装置の機能以外の機能との両方を含む。また、例えば、フローに含まれる複数の機能は、画像処理装置の機能以外の機能のみを含む。
<全体の構成>
図1は、本発明の一実施形態に係る全体の構成図である。図1に示されるように、複合機等の画像処理装置10は、操作装置11と、本体装置12とを有している。画像処理装置10は、少なくとも1つの機能(例えば、スキャン機能、印刷機能等のうちの少なくとも1つの機能)を有している。
操作装置11は、本体装置12に実行させる画像処理機能の選択、画像処理機能を実行させるための各種設定値の入力、画像処理機能の実行を開始させるための実行指示の入力、表示画面の切り替え等、ユーザが各種操作を行う際に用いられる。
本体装置12は、操作装置11におけるユーザの各種操作に応じて、画像処理機能の実行等の各種の処理を実行する。
なお、図1では、画像処理装置10が操作装置11を有している構成を一例として示したが、これに限られず、例えば、タブレット端末、スマートフォン、携帯電話、PDA等の情報処理装置20が画像処理装置の操作装置として機能してもよい。すなわち、情報処理装置20は、本体装置12の通信I/F127を介して本体装置12と通信することにより、当該本体装置12を制御することができてもよい。この場合、本体装置12と情報処理装置20を併せて、画像処理装置と呼ぶ。
<画像処理装置10のハードウェア構成>
図2は、本発明の一実施形態に係る画像処理装置10のハードウェア構成図である。図2に示されるように、本発明の一実施形態に係る画像処理装置10は、操作装置11と、本体装置12とを有している。
図2に示されるように、画像処理装置10の操作装置11は、CPU111(Central Processing Unit)と、ROM(Read Only Memory)112と、RAM(Random Access Memory)113とを有している。また、操作装置11は、フラッシュメモリ114と、操作パネル115と、接続I/F(インタフェース)116と、通信I/F(インタフェース)117とを有している。これら各ハードウェアは、バス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/F(インタフェース)126と、通信I/F(インタフェース)127とを有している。これら各ハードウェアは、バス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に示すハードウェア構成を有することにより、後述する各種処理を実現することができる。
<情報処理装置20のハードウェア構成>
図3は、本発明の一実施形態に係る情報処理装置20のハードウェア構成図である。図3に示されるように、情報処理装置20は、入力装置21と、表示装置22と、外部I/F23と、RAM24と、ROM25と、CPU26と、通信I/F27と、補助記憶装置28とを有する。これら各ハードウェアは、それぞれがバスBを介して通信可能に接続されている。
入力装置21は、例えば、キーボードやマウス、タッチパネル等であり、ユーザが各種操作を入力するのに用いられる。表示装置22は、例えば、ディスプレイ等であり、情報処理装置20の処理結果を表示する。
外部I/F23は、外部装置とのインタフェースである。外部装置には、記録媒体23a等がある。情報処理装置20は、外部I/F23を介して、記録媒体23a等の読み取りや書き込みを行うことができる。
記録媒体23aには、例えば、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disk)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等がある。
RAM24は、プログラムやデータを一時保持する揮発性の半導体メモリである。ROM25は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。ROM25には、例えば、OS設定やネットワーク設定等が格納されている。
CPU26は、ROM25や補助記憶装置28等からプログラムやデータをRAM24上に読み出して処理を実行する演算装置である。
通信I/F27は、情報処理装置20をネットワークに接続するためのインタフェースである。補助記憶装置28は、例えば、HDDやSSD等であり、プログラムやデータを格納している不揮発性の記憶装置である。補助記憶装置28に格納されているプログラムやデータには、例えば、OS、当該OS上において各種機能を実現するアプリケーションプログラム等がある。
<画像処理装置10のソフトウェア群の階層構造>
図4は、本発明の一実施形態に係る画像処理装置10の操作装置11および本体装置12に含まれるソフトウェア群の階層構造の一例を示す図である。
図4は、操作装置11に含まれるソフトウェア群の階層構造と、本体装置12に含まれるソフトウェア群の階層構造とを示している。
まず、本体装置12に含まれるソフトウェア群(すなわち、本体装置12のROM122やHDD124に記憶されているプログラム群)の階層構造について説明する。本体装置12に含まれるソフトウェア群は、アプリケーション層221と、サービス層222と、OS層223とに大別することができる。
アプリケーション層221に区分されるソフトウェアは、ハードウェア資源を動作させて画像処理機能を実現させるためのソフトウェアである。具体的には、印刷アプリケーション、スキャンアプリケーション、コピーアプリケーション、およびFAXアプリケーション等が挙げられる。
サービス層222に区分されるソフトウェアは、アプリケーション層221とOS層223との間を介在するソフトウェアである。当該ソフトウェアは、本体装置12が備えるハードウェア資源を、アプリケーション層221のソフトウェアが利用したり、本体装置12が備えるハードウェア資源の状態を通知したりするインタフェースとしての役割を果たす。
具体的には、ハードウェア資源に対する実行要求を受け付けたり、受け付けた実行要求の調停を行ったりする。サービス層222が受け付ける実行要求には、例えば、画像処理エンジン125による画像処理の実行要求(スキャナによるスキャン実行要求やプロッタによる印刷実行要求等)が含まれる。
なお、サービス層222に区分されるソフトウェアが果たす上記インタフェースとしての役割は、操作装置11のアプリケーション層211に対しても同様である。すなわち、操作装置11のアプリケーション層211に区分されるソフトウェアも、サービス層222にアクセスすることにより、本体装置12のハードウェア資源を動作させて、画像処理機能を実現させることができる。
OS層223に区分されるソフトウェアは、基本ソフトウェア(OS:Operating System)と呼ばれるプログラムであり、本体装置12が有するハードウェア資源を制御する基本機能を提供する。OS層223に区分されるソフトウェアは、アプリケーション層221に区分されるソフトウェアからのハードウェア資源に対する実行要求を、サービス層222に区分されるソフトウェアを介して受け付けて、当該実行要求に応じた処理を実行する。
次に、操作装置11に含まれるソフトウェア群(すなわち、操作装置11のROM112やフラッシュメモリ114に記憶されているプログラム群)の階層構造について説明する。本体装置12と同様に、操作装置11に含まれるソフトウェア群も、アプリケーション層211と、サービス層212と、OS層213とに大別することができる。
ただし、アプリケーション層211に区分されるソフトウェアが提供する機能やサービス層212が受け付け可能な実行要求の種類は、本体装置12とは異なる。操作装置11のアプリケーション層211に区分されるソフトウェアは、主として、各種操作や表示を行うためのユーザインタフェース機能を提供する。
なお、本実施形態では、操作装置11と本体装置12とで、OSは独立して動作するものとする。また、操作装置11と本体装置12とが相互に通信可能であれば、OSが同じ種類である必要はない。例えば、操作装置11ではOSにAndroid(登録商標)を用いる一方で、本体装置12ではOSにLinux(登録商標)を用いることも可能である。
このように、本実施形態に係る画像処理装置10は、操作装置11と本体装置12とが異なるOSにより制御される。このため、操作装置11と本体装置12との間の通信は、一装置内のプロセス間通信ではなく、異なる情報処理装置間の通信として行われる。
ただし、本実施形態に係る画像処理装置10は、操作装置11と本体装置12とで異なる種類のOSが動作している場合に限られず、操作装置11と本体装置12とで同一種類のOSが動作していてもよい。また、本実施形態に係る画像処理装置10は、操作装置11と本体装置12とでOSが独立して動作している場合に限られず、操作装置11および本体装置12上で一のOSが動作していてもよい。
<機能ブロック>
図5は、本発明の一実施形態に係る画像処理装置10の機能ブロック図である。画像処理装置10の操作装置11は、アプリケーション310と、フロー実行部311と、記憶部312と、スキャンUI(User Interface)アプリケーション331と、印刷UI(User Interface)アプリケーション341とを有する。これらアプリケーション310、フロー実行部311、スキャンUIアプリケーション331、印刷UIアプリケーション341は、CPU111により実行される。また、画像処理装置10の本体装置12は、API(Application Programming Interface)320と、スキャンアプリケーション332と、印刷アプリケーション342とを有する。これらAPI320、スキャンアプリケーション332、印刷アプリケーション342は、CPU121により実行される。なお、スキャンUIアプリケーション331と、API320と、スキャンアプリケーション332とを「スキャンサービス部330」と表す。また、印刷UIアプリケーション341と、API320と、印刷アプリケーション342とを「印刷サービス部340」と表す。以下、それぞれについて説明する。
なお、画像処理装置は、図5のスキャン機能、印刷機能に限られず、任意の1つ以上の機能を有することができる。操作装置11には、例えば、コピーに関するUIを提供するアプリケーションやFAXに関するUIを提供するアプリケーション、OCR(Optical Character Recognition)に関するUIを提供するアプリケーション等が含まれていてもよい。また、本体装置12には、例えば、コピーを実行するアプリケーションやFAXを実行するアプリケーション、OCRを実現するアプリケーション等が含まれていてもよい。したがって、画像処理装置10には、例えば、コピーサービス部やFAXサービス部、OCRサービス部等の様々な画像処理サービス部が含まれていてもよい。
アプリケーション310は、サードベンダ等によって開発されて画像処理装置10にインストールされているアプリケーション(アプリケーションプログラム、アプリケーションソフトウェアとも呼ばれる)である。上述したように、アプリケーション310は、フローを提供することができる。「フロー」とは、複数の機能が順次実行する一連の処理のことをいう。本発明の一実施形態では、フロー(つまり、複数の機能が順次実行する一連の処理)を1つのジョブとして扱うことができる。
ここで、アプリケーション310の開発について説明する。アプリケーション310は、アプリケーション310の起動時に、アプリケーション310が提供するフローに含まれる複数の機能を特定するための情報および該複数の機能の実行順序(つまり、各機能が実行される順序)をフロー実行部311に登録させるよう開発されている。
フロー実行部311は、アプリケーション310からのフローの登録の要求に応じて、アプリケーションが提供するフローに含まれる複数の機能を特定するための情報および該複数の機能の実行順序(つまり、各機能が実行される順序)を記憶部312に記憶させる。また、フロー実行部311は、アプリケーション310からのフローの実行の要求に応じて、記憶部312に記憶されている情報に基づいて特定した複数の機能を、記憶部312に記憶されている実行順序にしたがって実行させる。
記憶部312には、アプリケーション310が提供するフローに含まれる複数の機能を特定するための情報および該複数の機能の実行順序(つまり、各機能が実行される順序)が記憶される。なお、アプリケーション310が提供するフローに含まれる複数の機能を特定するための情報および該複数の機能の実行順序が、画像処理装置10以外(例えば、サーバ等)に記憶されるようにしてもよい。
スキャンUIアプリケーション331は、スキャンに関するUI(ユーザインタフェース)を提供するアプリケーションプログラムである。スキャンUIアプリケーション331は、例えば、スキャンの設定画面やスキャン中であることを示す画面等を表示する。また、スキャンUIアプリケーション331は、フロー実行部311からの要求に応じて、API320を介して、スキャンアプリケーション332に対してスキャンの実行を要求する。
印刷UIアプリケーション341は、印刷に関するUI(ユーザインタフェース)を提供するアプリケーションプログラムである。印刷UIアプリケーション341は、例えば、印刷の設定画面や印刷中であることを示す画面等を表示する。また、印刷UIアプリケーション341は、フロー実行部311からの要求に応じて、API320を介して、印刷アプリケーション342に対して印刷の実行を要求する。
API320は、スキャンUIアプリケーション331がスキャンの実行を要求するためのAPI(Application Programming Interface)である。また、API320は、印刷UIアプリケーション341が印刷の実行を要求するためのAPIである。
スキャンアプリケーション332は、スキャンUIアプリケーション331からの要求に応じて、画像処理エンジン125を制御して、スキャンを実行する。
印刷アプリケーション342は、印刷UIアプリケーション341からの要求に応じて、画像処理エンジン125を制御して、印刷を実行する。
なお、上記では、フロー実行部311がスキャンUIアプリケーション331(つまり、スキャンアプリケーション332を呼び出すアプリケーション)、印刷UIアプリケーション341(つまり、印刷アプリケーション342を呼び出すアプリケーション)を呼び出す実施形態を説明したが、フロー実行部311がスキャンアプリケーション332(つまり、画像処理エンジン125を制御して、スキャンを実行するアプリケーション)、印刷アプリケーション342(つまり、画像処理エンジン125を制御して、印刷を実行するアプリケーション)を呼び出すようにしてもよい。
以下、図6を参照しながら説明するように、アプリケーション310は、アプリケーション310内の情報としてフロー実行部311を含んでいてもよい。アプリケーション内の情報は、アプリケーションのフォルダ内に配置されたライブラリを含むファイルである。ライブラリにはプリント機能およびスキャン機能を含み、ライブラリのプリント機能およびスキャン機能は、アプリケーション310に含む定義情報に応じて、アプリケーション310として利用可能である。なお、フロー実行部311を、アプリケーション310とは異なるアプリケーションとして有してもよい。
図6は、本発明の一実施形態に係る画像処理装置10の機能ブロック図である。図6に示す実施形態では、アプリケーション310が、フロー実行部311を含んでいる。具体的には、アプリケーション310の開発者が、開発時に、フローを実行するためのフレームワーク(以下、機能フロー実行フレームワークという)をアプリケーション310に取り込む。このフレームワークが、フロー実行部311として機能する。実現方法の例として、機能フロー実行フレームワーク311は、ソフトウェアのライブラリを有するjarファイルの形式で提供される。アプリケーション310の開発者は、機能フロー実行フレームワーク311のファイルを、例えば画像処理装置メーカやサービス提供者のWebサイトからのダウンロードや、ディスク等の記録媒体の配送によって入手する。さらに、アプリケーション310の開発者は、アプリケーション310を開発する際に、アプリケーション310の内部のフォルダに、機能フロー実行フレームワーク311のファイルを配置することによって、機能フロー実行フレームワーク311をアプリケーション310に取り込んでアプリケーション310を作成する。なお、作成時には、アプリケーション310に、機能フロー実行フレームワーク311のどの機能やUIを利用するかや、アプリケーション310に追加した機能(後述のスタンプ機能等)と合わせてどのような順番で動作・表示するか等の定義(後述のジョブ定義部3104)を、アプリケーション310に含めておく。
なお、図6のスキャンUIアプリケーション331、印刷UIアプリケーション341、API320、スキャンアプリケーション332、印刷アプリケーション342は、図5と同様であるので説明を省略する。
図7は、本発明の実施形態に係るアプリケーション310および機能フロー実行フレームワーク311の機能ブロック図である。アプリケーション310は、処理部3101、スタンプ設定用UI3102、スタンプ機能3103、ジョブ定義部3104を有する。アプリケーション310に取り込まれている機能フロー実行フレームワーク311は、フロー実行機能3111、プリント設定用UI3112、プリント機能3113、スキャン設定用UI3114、スキャン機能3115、フロー用基底クラス3116を有する。機能フロー実行フレームワーク311は、有する各機能およびUI等を、機能フロー実行フレームワーク311に含まれるソフトウェアライブラリとして、アプリケーション310に対して提供する。つまり、前述の様にアプリケーション310の内部のフォルダに、機能フロー実行フレームワーク311のファイルを配置すれば、含まれる各機能およびUIを、アプリケーション310の定義に応じて利用可能であるため、機能フロー実行フレームワーク311に含まれる各機能およびUIをアプリケーション310の開発者が開発しなくてよい。以下、それぞれについて説明する。
ジョブ定義部3104には、フローに含まれる複数の機能を特定するための情報および該複数の機能の実行順序(ジョブ定義とも呼ぶ)が記憶されている。具体的には、アプリケーション310の開発者が、開発時に、ジョブ定義をジョブ定義部3104に定義しておく。図7の例では、スキャン機能により画像を入力し(Input:Scan)、その画像にスタンプを付与し(Process:Stamp)、スタンプが付与された画像を印刷機能により出力する(Output:Print)というフローのジョブ定義が記憶されている。
処理部3101は、フロー実行機能3111を呼び出して、フローを実行させる。具体的には、処理部3101は、ユーザがアプリケーション310を起動すると、アプリケーション310の開発時に定義されたジョブ定義に基づいて、フロー実行機能3111にジョブ定義(つまり、フローに含まれる複数の機能を特定するための情報および該複数の機能の実行順序)を登録する。また、処理部3101は、ユーザがフローの実行を開始させるための実行指示を入力(例えば、スタートボタン等を押下)すると、フロー実行機能3111にフローの実行を開始するよう要求する。
図7に示す実施形態では、画像処理装置の機能以外の機能(図7の例では、スタンプ機能)がフローに含まれている。アプリケーション310の開発者は、開発時に、スタンプ設定用UI3102およびスタンプ機能3103をアプリケーション310に実装しておく。具体的には、フロー用基底クラス3116を継承することで、スタンプ機能がフロー用の機能であることを示すことができる。
スタンプ設定用UI3102は、スタンプの設定画面を表示する。ユーザは、スタンプの設定画面で設定値を入力する。スタンプ設定用UI3102は、ユーザによって入力された設定値をフロー実行機能3111に通知する。
スタンプ機能3103は、スタンプ設定用UI3102の設定画面に入力されたスタンプの設定値を用いてスタンプ処理を実行する。また、スタンプ機能3103は、スタンプ処理の実行が終了したことをフロー実行機能3111に通知する。具体的には、スタンプ機能3103は、スタンプ機能3103によるスタンプ処理の実行が終了したことをフロー実行機能3111に通知する。
フロー実行機能3111は、ジョブ定義にしたがって、フローを実行する。具体的には、フロー実行機能3111は、設定用UI(図7の例では、プリント設定用UI3112、スタンプ設定用UI3102、スキャン設定用UI3114)に対して、設定UI(図7の例では、印刷の設定画面、スタンプの設定画面、スキャンの設定画面)の表示を要求する。また、フロー実行機能3111は、各設定用UIの設定画面に入力された設定値を用いて実行するよう各機能(図7の例では、スキャン機能3115、スタンプ機能3103、プリント機能3113)に要求する。
プリント設定用UI3112は、印刷の設定画面を表示する。ユーザは、印刷の設定画面で設定値を入力する。プリント設定用UI3112は、ユーザによって入力された設定値をフロー実行機能3111に通知する。
プリント機能3113は、プリント設定用UI3112の設定画面に入力された印刷の設定値を用いて印刷を実行する。また、プリント機能3113は、印刷の実行が終了したことをフロー実行機能3111に通知する。具体的には、プリント機能3113は、印刷アプリケーション342による印刷の実行が終了したことをフロー実行機能3111に通知する。
スキャン設定用UI3114は、スキャンの設定画面を表示する。ユーザは、スキャンの設定画面で設定値を入力する。スキャン設定用UI3114は、ユーザによって入力された設定値をフロー実行機能3111に通知する。
スキャン機能3115は、スキャン設定用UI3114の設定画面に入力されたスキャンの設定値を用いてスキャンを実行する。また、スキャン機能3115は、スキャンの実行が終了したことをフロー実行機能3111に通知する。具体的には、スキャン機能3115は、スキャンアプリケーション332によるスキャンの実行が終了したことをフロー実行機能3111に通知する。
図8は、本発明の一実施形態に係るアプリケーション310および機能フロー実行フレームワーク311のモジュール構成図である。具体的には、アプリケーション310が機能フロー実行フレームワーク311を用いて処理を実行しているときのモジュール構成図である。図8に示されるように、アプリケーション310は、画面を表示するためのクラスとしてMainActivity(名称は一例)を有する。機能フロー実行フレームワーク311は、印刷機能を利用するためのクラスPrintFunction、スキャン機能を利用するためのクラスScanFunctionを有する。また、機能フロー実行フレームワーク311は、印刷等用の画面Fragmentを有する。アプリケーション310はCustomFragmentを有することができ、フレームワーク内の画面を利用しない場合には、この画面(CustomFragment)がPrintFragmentやScanFragmentの代わりに利用される。
なお、上記で説明した実施形態の各機能は、一又は複数の処理回路によって実現することが可能である。ここで、本明細書における「処理回路」とは、電子回路により実装されるプロセッサのようにソフトウェアによって各機能を実行するようプログラミングされたプロセッサや、上記で説明した各機能を実行するよう設計されたASIC(Application Specific Integrated Circuit)、DSP(digital signal processor)、FPGA(field programmable gate array)や従来の回路モジュール等のデバイスを含むものとする。
<シーケンス>
図9は、本発明の一実施形態に係る画像処理装置10の複数の機能の実行処理のシーケンス図である。なお、スキャン機能を実行した後に印刷機能を実行するフローの例を説明する。
ステップ10(S10)において、画像処理装置10にインストールされているアプリケーション310が起動されたとする。
ステップ11(S11)において、アプリケーション310は、アプリケーション310の画面を画像処理装置10の操作パネル115に表示させる。
ステップ12およびステップ13において、アプリケーション310は、アプリケーション310が提供するフローに含まれる各機能のオブジェクトを生成する。
ステップ12(S12)において、アプリケーション310は、スキャンサービス部330(例えば、スキャンサービス部330のスキャンUIアプリケーション331)が提供するスキャン機能のオブジェクトを生成(クラスをインスタンス化)する。なお、フロー実行部311がオブジェクトを生成するようにしてもよい。
ステップ13(S13)において、アプリケーション310は、印刷サービス部340(例えば、印刷サービス部340の印刷UIアプリケーション341)が提供する印刷機能のオブジェクトを生成(クラスをインスタンス化)する。なお、フロー実行部311がオブジェクトを生成するようにしてもよい。
ステップ14(S14)において、アプリケーション310は、アプリケーション310が提供するフローに含まれる複数の機能を特定するための情報および該複数の機能の実行順序(つまり、各機能が実行される順序)をフロー実行部311に登録させる。フロー実行部311は、アプリケーション310からのフローの登録の要求に応じて、アプリケーションが提供するフローに含まれる複数の機能を特定するための情報および該複数の機能の実行順序(つまり、各機能が実行される順序)を記憶部312に記憶させる。
つまり、フロー実行部311は、アプリケーション310に対するユーザによる起動指示に応じて、アプリケーション310からフローの登録の要求を受け付け、登録を受け付けたフローに含まれる複数の機能を特定するための情報および該複数の機能の実行順序を記憶することができる。
ステップ15(S15)において、アプリケーション310は、フロー実行部311に対して、フローを実行するよう要求する。
ステップ16(S16)において、フロー実行部311は、設定画面のフレーム(枠)部分を画像処理装置10の操作パネル115に表示させる。
ここで、画面について説明する。例えば、画像処理装置10に表示される画面は、フローに含まれる全ての機能の設定画面に共通する部分(フレーム(枠)部分)を有することができる。このフレーム(枠)部分は、フローの実行を開始させるための実行指示を入力するボタン(例えば、スタートボタン、キャンセルボタン、スリープボタン等)を有することができる。なお、フレーム(枠)部分は、アプリケーション310に取り込んだ、機能フロー実行フレームワーク311(ソフトウェアライブラリファイル)のフロー実行機能3111等の共通機能で表示してもよい。これによって、アプリケーション310の開発者は、スタートボタン等のジョブ実行機能や共通機能の開発をする効率が削減される。
ステップ17(S17)において、フロー実行部311は、スキャンサービス部330(例えば、スキャンサービス部330のスキャンUIアプリケーション331)に対して、設定UI(スキャンの設定画面)を取得できるよう要求する。例えば、フロー実行部311は、フローに含まれる機能のうち実行順序が最初の機能の設定画面を取得する。
ステップ18(S18)において、フロー実行部311は、S17で取得したスキャンの設定画面をS16のフレーム(枠)内に表示させる。ユーザは、スキャンの設定画面で設定値を入力する。
ステップ20(S20)において、設定画面の切り替えの操作がなされたとする。
ステップ21(S21)において、フロー実行部311は、印刷サービス部340(例えば、印刷サービス部340の印刷UIアプリケーション341)に対して、設定UI(印刷の設定画面)を取得できるよう要求する。
ステップ22(S22)において、フロー実行部311は、S21で取得した印刷の設定画面をS16のフレーム(枠)内に表示させる。ユーザは、印刷の設定画面で設定値を入力する。
ステップ30(S30)において、フローの実行を開始させるための実行指示が入力(例えば、スタートボタン等の押下)されたとする。
ステップ31(S31)において、フロー実行部311は、スキャンサービス部330(例えば、スキャンサービス部330のスキャンUIアプリケーション331)に対して、S18で設定されたスキャンの設定値を通知する。
ステップ32(S32)において、フロー実行部311は、印刷サービス部340(例えば、印刷サービス部340の印刷UIアプリケーション341)に対して、S22で設定された印刷の設定値を通知する。
ステップ33(S33)において、フロー実行部311は、スキャンサービス部330(例えば、スキャンサービス部330のスキャンUIアプリケーション331)に対して、スキャンを実行するよう要求する。
ステップ34(S34)において、スキャンサービス部330は、S31のスキャンの設定値を用いてスキャンを実行する。具体的には、スキャンUIアプリケーション331は、スキャンアプリケーション332にスキャンを実行させる。
ステップ35(S35)において、スキャンサービス部330は、スキャンの実行が終了したことをフロー実行部311に通知する。具体的には、スキャンUIアプリケーション331は、スキャンアプリケーション332によるスキャンの実行が終了したことをフロー実行部311に通知する。
ステップ36(S36)において、フロー実行部311は、印刷サービス部340(例えば、印刷サービス部340の印刷UIアプリケーション341)に対して、印刷を実行するよう要求する。
ステップ37(S37)において、印刷サービス部340は、S32の印刷の設定値を用いて印刷を実行する。具体的には、印刷UIアプリケーション341は、印刷アプリケーション342に印刷を実行させる。
ステップ38(S38)において、印刷サービス部340は、印刷の実行が終了したことをフロー実行部311に通知する。具体的には、印刷UIアプリケーション341は、印刷アプリケーション342による印刷の実行が終了したことをフロー実行部311に通知する。
つまり、フロー実行部311は、アプリケーション310からのフローの実行の要求に応じて、フローに含まれる複数の機能ごとの設定画面を切り替え可能に表示し、記憶されている情報に基づいて特定した複数の機能を、記憶されている実行順序にしたがって、複数の機能ごとの設定画面でそれぞれ入力した設定情報を用いて実行させることができる。
このように、本発明の一実施形態では、フロー実行部311は、記憶部312を参照して、アプリケーション310が提供するフローに含まれる複数の機能を、実行順序(つまり、各機能が実行される順序)にしたがって実行させる(つまり、機能の実行の終了通知を受けると次の機能を実行させる)。
なお、図9ではフローに含まれる機能が設定可能な機能である場合を説明したが、フローに含まれる機能は、設定不可能な機能であってもよい。例えば、設定可能な機能であるがアプリケーション310がその機能についての設定をユーザにさせないように開発されている場合、アプリケーション310は、図9のS12やS13のオブジェクトの生成において設定不可能であるオブジェクトを生成する、あるいは、図9のS14のフローの登録において設定不可能であることを登録する。そうすると、図9のS17やS21でフロー実行部311が設定画面の取得を要求したとしても、設定画面を取得することができない。
<他の実施形態>
本発明の一実施形態では、アプリケーション310は、画像処理装置10の機能以外の機能(例えば、画像にスタンプを付与する機能等)を含むフローを提供することができる。この場合、アプリケーション310は、アプリケーション310の起動時に、画像処理装置10の機能以外の機能のオブジェクトを生成(クラスをインスタンス化)するようにする。そうすると、フロー実行部311は、画像処理装置10の機能以外の機能を呼び出して、設定画面を表示させたり、画像処理装置10の機能以外の機能を実行させたりすることができる。
図10は、本発明の一実施形態に係る画像処理装置10の複数の機能の実行処理のシーケンス図である。なお、スキャン機能、スタンプ機能、印刷機能を順に実行するフローの例を説明する。
ステップ110(S110)において、画像処理装置10にインストールされているアプリケーション310が起動されたとする。
ステップ111(S111)において、アプリケーション310の処理部3101は、フロー実行機能3111を呼び出す。具体的には、処理部3101は、アプリケーション310に対するユーザによる起動指示に応じて、アプリケーション310の開発時に定義されたジョブ定義に基づいて、フロー実行機能3111にジョブ定義(つまり、フローに含まれる複数の機能を特定するための情報および該複数の機能の実行順序)を登録する。そして、フロー実行機能3111は、以下のように、ジョブ定義にしたがって、フローを実行する。
ステップ112(S112)において、フロー実行機能3111は、プリント設定用UI3112に対して、設定UI(印刷の設定画面)の表示を要求する。
ステップ113(S113)において、プリント設定用UI3112は、印刷の設定画面を表示する。
ステップ114(S114)において、ユーザは、印刷の設定画面で設定値を入力する。
ステップ115(S115)において、プリント設定用UI3112は、S114で入力された設定値をフロー実行機能3111に通知する。
ステップ116(S116)において、フロー実行機能3111は、スタンプ設定用UI3102に対して、設定UI(スタンプの設定画面)の表示を要求する。
ステップ117(S117)において、スタンプ設定用UI3102は、スタンプの設定画面を表示する。
ステップ118(S118)において、ユーザは、スタンプの設定画面で設定値を入力する。
ステップ119(S119)において、スタンプ設定用UI3102は、S118で入力された設定値をフロー実行機能3111に通知する。
ステップ120(S120)において、フロー実行機能3111は、スキャン設定用UI3114に対して、設定UI(スキャンの設定画面)の表示を要求する。
ステップ121(S121)において、スキャン設定用UI3114は、スキャンの設定画面を表示する。
ステップ122(S122)において、ユーザは、スキャンの設定画面で設定値を入力する。
ステップ123(S123)において、スキャン設定用UI3114は、S122で入力された設定値をフロー実行機能3111に通知する。
ステップ124(S124)において、フローの実行を開始させるための実行指示が入力(例えば、スタートボタン等の押下)されたとする。
ステップ125(S125)において、処理部3101は、フロー実行機能3111にフローの実行を開始するよう要求する。
ステップ126(S126)において、フロー実行機能3111は、スキャン機能3115に対して、S123で通知されたスキャンの設定値を用いてスキャンを実行するよう要求する。
ステップ127(S127)において、スキャン機能3115は、スキャンの実行が終了したことをフロー実行機能3111に通知する。具体的には、スキャン機能3115は、スキャンアプリケーション332によるスキャンの実行が終了したことをフロー実行機能3111に通知する。
ステップ128(S128)において、フロー実行機能3111は、スタンプ機能3103に対して、S119で通知されたスタンプの設定値を用いてスタンプ処理を実行するよう要求する。
ステップ129(S129)において、スタンプ機能3103は、スタンプ処理の実行が終了したことをフロー実行機能3111に通知する。具体的には、スタンプ機能3103は、スタンプ機能3103によるスタンプ処理の実行が終了したことをフロー実行機能3111に通知する。
ステップ130(S130)において、フロー実行機能3111は、プリント機能3113に対して、S115で通知された印刷の設定値を用いて印刷を実行するよう要求する。
ステップ131(S131)において、プリント機能3113は、印刷の実行が終了したことをフロー実行機能3111に通知する。具体的には、プリント機能3113は、印刷アプリケーション342による印刷の実行が終了したことをフロー実行機能3111に通知する。
ステップ132(S132)において、フロー実行機能3111は、フロー(図10の例では、スキャン機能、スタンプ機能、印刷機能を順に実行するフロー)の実行を完了する。
<フローチャート>
以下、図11と図14を参照しながら、本発明の一実施形態に係る画像処理装置の複数の機能の実行処理と、従来の画像処理装置の複数の機能の実行処理と、を比較して説明する。
図14は、従来の画像処理装置の複数の機能の実行処理のフローチャートである。なお、スキャン機能を実行した後に印刷機能を実行する例を説明する。
ステップ201(S201)において、画像処理装置にインストールされているアプリケーションは、画像処理装置にインストールされているアプリケーションの画面を表示する。
ステップ202(S202)において、画像処理装置にインストールされているアプリケーションは、画像処理装置に実行させる機能(図14の例では、スキャン機能)を提供するアプリケーションを呼び出す。
ステップ203(S203)において、画像処理装置のスキャン機能を提供するアプリケーションは、スキャンの設定画面を表示する。
ステップ204(S204)において、画像処理装置のスキャン機能を提供するアプリケーションは、スキャンを実行し、スキャン中であることを示す画面を表示する。
ステップ205(S205)において、画像処理装置にインストールされているアプリケーションは、画像処理装置にインストールされているアプリケーションの画面を表示する。
ステップ206(S206)において、画像処理装置にインストールされているアプリケーションは、画像処理装置に次に実行させる機能(図14の例では、印刷機能)を提供するアプリケーションを呼び出す。
ステップ207(S207)において、画像処理装置の印刷機能を提供するアプリケーションは、印刷の設定画面を表示する。
ステップ208(S208)において、画像処理装置の印刷機能を提供するアプリケーションは、印刷を実行し、印刷中であることを示す画面を表示する。
ステップ209(S209)において、画像処理装置にインストールされているアプリケーションは、画像処理装置にインストールされているアプリケーションの画面を表示する。
このように、従来は、第1の機能の呼び出し、第2の機能の呼び出しといったように、画像処理装置にインストールされているアプリケーションは、各機能を順次呼び出さなければならなかった。
図11は、本発明の一実施形態に係る画像処理装置の複数の機能の実行処理のフローチャートである。なお、スキャン機能を実行した後に印刷機能を実行するフローの例を説明する。
ステップ101(S101)において、画像処理装置10にインストールされているアプリケーション310が起動したとする。アプリケーション310は、アプリケーション310の画面を表示する。アプリケーション310は、アプリケーション310が提供するフローに含まれる複数の機能を特定するための情報および該複数の機能の実行順序(つまり、各機能が実行される順序)をフロー実行部311に登録させる。
ステップ102(S102)において、画像処理装置10のフロー実行部311は、アプリケーション310が利用する機能をフローとして登録する。具体的には、フロー実行部311は、S101のフローの登録の要求に応じて、アプリケーションが提供するフローに含まれる複数の機能を特定するための情報および該複数の機能の実行順序(つまり、各機能が実行される順序)を記憶部312に記憶させる。
ステップ103(S103)において、フロー実行部311は、スキャンの設定画面を表示する。
ステップ104(S104)において、フロー実行部311は、設定画面が切り替えられたか否かを判断する。切り替えられた場合には、ステップ105へ進み、切り替えられずフローの実行を開始させるための実行指示が入力された場合には、ステップ107へ進む。
ステップ105(S105)において、フロー実行部311は、印刷の設定画面を表示する。
ステップ106(S106)において、フロー実行部311は、設定画面が切り替えられたか否かを判断する。切り替えられた場合には、ステップ103へ戻り、切り替えられずフローの実行を開始させるための実行指示が入力された場合には、ステップ107へ進む。
ステップ107(S107)において、フロー実行部311は、スキャンサービス部330にスキャンを実行させ、スキャン中であることを示す画面を表示する。
ステップ108(S108)において、フロー実行部311は、印刷サービス部340に印刷を実行させ、印刷中であることを示す画面を表示する。
ステップ109(S109)において、画像処理装置10にインストールされているアプリケーション310は、アプリケーション310の画面を表示する。
このように、本発明の一実施形態では、画像処理装置10にインストールされているアプリケーション310は、アプリケーション310の起動時に、アプリケーション310が提供するフローに含まれる複数の機能を特定するための情報および該複数の機能の実行順序を記憶部312に記憶させ、フロー実行部311に該複数の機能を該実行順序で実行させることができる。
<ユーザインタフェース>
以下、図12、図13と図15を参照しながら、本発明の一実施形態に係る画像処理装置に表示される画面の遷移と、従来の画像処理装置に表示される画面の遷移と、を比較して説明する。
図15は、従来の画像処理装置に表示される画面の遷移の一例を示す図である。なお、スキャン機能を実行した後に印刷機能を実行する例を説明する。
ステップ2001(S2001)において、画像処理装置にインストールされているアプリケーションが提供する画面が表示される。画像処理装置に実行させる機能(図15の例では、スキャン機能)をユーザが選択すると、ステップ2002の画面へ遷移する。
ステップ2002(S2002)において、スキャンの設定画面が表示される。ユーザが設定後、スキャン機能の実行を開始させるための実行指示を入力すると、ステップ2003の画面へ遷移する。
ステップ2003(S2003)において、スキャン中であることを示す画面が表示される。スキャンが完了すると、ステップ2004の画面へ遷移する。
ステップ2004(S2004)において、画像処理装置にインストールされているアプリケーションが提供する画面が表示される。画像処理装置に次に実行させる機能(図15の例では、印刷機能)をユーザが選択すると、ステップ2005の画面へ遷移する。
ステップ2005(S2005)において、印刷の設定画面が表示される。ユーザが設定後、印刷機能の実行を開始させるための実行指示を入力すると、ステップ2006の画面へ遷移する。
ステップ2006(S2006)において、印刷中であることを示す画面が表示される。
このように、従来は、第1の機能の設定値の入力、第1の機能の実行指示の入力、第2の機能の設定値の入力、第2の機能の実行指示の入力といったように、ユーザは、機能ごとに、設定値を入力して実行指示を入力しなければならなかった。
図12は、本発明の一実施形態に係る画像処理装置に表示される画面の遷移の一例を示す図である。なお、スキャン機能を実行した後に印刷機能を実行するフローの例を説明する。
ステップ1001(S1001)において、画像処理装置10にインストールされているアプリケーション310が提供する画面が表示される。画像処理装置10に実行させたいフロー(図12の例では、スキャン機能を実行した後に印刷機能を実行するフロー)をユーザが選択すると、ステップ1002の画面へ遷移する。
ステップ1002(S1002)において、フローに含まれる機能の設定画面(図12の例では、スキャンの設定画面)が表示される。S1002において、フリック(スライド操作)等されると他の機能の設定画面(図12の例では、印刷の設定画面)であるステップ1003の画面へ遷移する。
ステップ1003(S1003)において、他の機能の設定画面(図12の例では、印刷の設定画面)が表示される。S1003において、フリック(スライド操作)等されると他の機能の設定画面(図12の例では、スキャンの設定画面)であるステップ1002の画面へ遷移する。
このように、本発明の一実施形態では、各機能の設定画面はフリック(スライド操作)等で切り替えられる。つまり、ある機能の実行が終了していなくても別の機能の設定画面が表示される。
S1002およびS1003において、ユーザが、フローの実行を開始させるための実行指示を入力すると、ステップ1004の画面へ遷移する。
ステップ1004(S1004)において、スキャン中であることを示す画面が表示される。スキャンが終了すると、ステップ1005の画面へ遷移する。
ステップ1005(S1005)において、印刷中であることを示す画面が表示される。
図13は、本発明の一実施形態に係る画像処理装置に表示される画面の遷移の一例を示す図である。なお、スキャン機能、スタンプ機能、印刷機能を順に実行するフローの例を説明する。
ステップ1010(S1010)において、画像処理装置10のホーム画面が表示される。フロー(図13の例では、スキャン機能、スタンプ機能、印刷機能を順に実行するフロー)を提供するアプリケーション(つまり、画像処理装置10にインストールされているアプリケーション310)をユーザが選択すると、ステップ1011の画面へ遷移する。
ステップ1011(S1011)において、フローに含まれる機能の設定画面(図13の例では、スキャンの設定画面)が表示される。S1011において、フリック(スライド操作)等されると他の機能の設定画面(図13の例では、スタンプの設定画面)であるステップ1012の画面へ遷移する。
ステップ1012(S1012)において、他の機能の設定画面(図13の例では、スタンプの設定画面(例えば、スタンプの種類を選択したり、スタンプを付与する用紙上の位置やスタンプの色を設定したりする画面))が表示される。S1012において、フリック(スライド操作)等されると他の機能の設定画面(図13の例では、印刷の設定画面)であるステップ1013の画面(あるいは、S1011の画面)へ遷移する。
ステップ1013(S1013)において、他の機能の設定画面(図13の例では、印刷の設定画面)が表示される。S1013において、フリック(スライド操作)等されると他の機能の設定画面(図13の例では、スタンプの設定画面)であるステップ1012の画面へ遷移する。
このように、本発明の一実施形態では、各機能の設定画面はフリック(スライド操作)等で切り替えられる。つまり、ある機能の実行が終了していなくても別の機能の設定画面が表示される。
S1011~S1013において、ユーザが、フローの実行を開始させるための実行指示を入力すると、スキャン機能、スタンプ機能、印刷機能が順に実行される。
このように、本発明の一実施形態では、ユーザは、フローに含まれる各機能の設定値を一括で入力してフローの実行指示を一度入力する(つまり、複数の機能の実行を1つのジョブとして扱える)だけでよい。
<効果>
本発明の一実施形態では、画像処理装置にインストールされているアプリケーションを操作するユーザは、アプリケーションが提供するフローに含まれる複数の機能の設定を一括で行い、複数の機能の実行の指示を一度で行うことができる。また、アプリケーションを開発するサードベンダ等は、複数の機能および該機能の実行順序を指定するだけで、アプリケーションがフロー(つまり、複数の機能が順次実行する一連の処理)を提供できるようにすることができる。
なお、上記実施形態に挙げた構成等に、その他の要素との組み合わせ等、ここで示した構成に本発明が限定されるものではない。これらの点に関しては、本発明の趣旨を逸脱しない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。