(57)【要約】【課題】ジョブを実行するための既存のアプリケーションを用いて、画像形成装置に追加された処理を実行できるようにする。【解決手段】画像形成装置１０１は、画像処理アプリケーション３０３に、画像処理アプリケーション３０３で実現される画像処理の識別情報としてＩｍａｇｉｎｇＮａｍｅ３２１を関連付けて記憶する。また、画像形成装置１０１は、デバイス制御アプリケーション３０４で実現される機能（プリント等）で使用される画像処理の識別情報であるＩｍａｇｉｎｇＮａｍｅ３２６を記憶する。接続ライブラリ３１４は、ＩｍａｇｉｎｇＮａｍｅ３２１、３２６のうち、ジョブに設定されたＩｍａｇｉｎｇＮａｍｅと一致するＩｍａｇｉｎｇＮａｍｅを探索する。そして、接続ライブラリ３１４は、探索したＩｍａｇｉｎｇＮａｍｅに関連する画像処理を画像処理プラグインアプリケーション３０３または画像処理ライブラリ３１５に依頼する。【選択図】図３
2018020562.tif 000002
【特許請求の範囲】
【請求項１】
画像形成装置であって、
前記画像形成装置がジョブを実行するために用いられる第１のアプリケーションを記憶する第１の記憶手段と、
前記第１のアプリケーションの実行に伴って前記画像形成装置に第１の処理を実行させるために用いる第２のアプリケーションを記憶する第２の記憶手段と、
前記第１のアプリケーションの実行に伴って前記画像形成装置または外部装置に第２の処理を実行させるための第３のアプリケーションを外部の記憶媒体または記憶装置から取得する取得手段と、
前記取得手段が取得した前記第３のアプリケーションを記憶する第３の記憶手段と、
前記第１のアプリケーションの実行が指示された場合に、前記第１のアプリケーションの実行に伴って実行すべきアプリケーションを、前記第２のアプリケーションおよび前記第３のアプリケーションのうちから選択する選択手段と、
前記選択手段が選択したアプリケーションを、前記第１のアプリケーションの実行に伴って実行させる制御を行う制御手段と、
を有することを特徴とする画像形成装置。
【請求項２】
前記第２のアプリケーションを用いて前記第１の処理を実行する処理手段を更に有し、
前記選択手段は、前記処理手段との通信の結果を用いて、前記第１のアプリケーションの実行に伴って実行すべきアプリケーションが、前記第２のアプリケーションであるか否かを判定することを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記選択手段は、前記処理手段により処理される前記第１の処理のリストを前記処理手段から取得し、当該取得したリストに含まれる前記第１の処理の中に、前記第１のアプリケーションの実行に伴って実行すべきアプリケーションを用いて実行される処理が含まれている場合に、前記第１のアプリケーションの実行に伴って実行すべきアプリケーションが、前記第２のアプリケーションであると判定し、そうでない場合に、前記第１のアプリケーションの実行に伴って実行すべきアプリケーションが、前記第２のアプリケーションでないと判定することを特徴とする請求項２に記載の画像形成装置。
【請求項４】
前記選択手段は、前記第１のアプリケーションの実行に伴って実行すべきアプリケーションを用いて実行される処理の実行を前記処理手段に依頼し、前記第１のアプリケーションの実行に伴って実行すべきアプリケーションを用いて実行される処理が、前記処理手段により実行できた場合に、前記第１のアプリケーションの実行に伴って実行すべきアプリケーションが、前記第２のアプリケーションであると判定し、そうでない場合に、前記第１のアプリケーションの実行に伴って実行すべきアプリケーションが、前記第２のアプリケーションでないと判定することを特徴とする請求項２に記載の画像形成装置。
【請求項５】
前記第２の記憶手段は、前記第２のアプリケーションと、当該第２のアプリケーションの識別情報とを相互に関連付けて記憶し、
前記選択手段は、前記第１のアプリケーションの実行に伴って実行すべきアプリケーションを用いて実行される処理の識別情報が、前記第２の記憶手段により記憶されている前記第２のアプリケーションの中にある場合に、前記第１のアプリケーションの実行に伴って実行すべきアプリケーションが、前記第２のアプリケーションであると判定し、そうでない場合に、前記第１のアプリケーションの実行に伴って実行すべきアプリケーションが、前記第２のアプリケーションでないと判定することを特徴とする請求項１〜３の何れか１項に記載の画像形成装置。
【請求項６】
前記第３の記憶手段は、前記第３のアプリケーションと、当該第３のアプリケーションの識別情報とを相互に関連付けて記憶し、
前記選択手段は、前記第１のアプリケーションの実行に伴って実行すべきアプリケーションを用いて実行される処理の識別情報が、前記第３の記憶手段により記憶されている前記第３のアプリケーションの識別情報の中にある場合に、前記第１のアプリケーションの実行に伴って実行すべきアプリケーションが、前記第３のアプリケーションであると判定し、そうでない場合に、前記第１のアプリケーションの実行に伴って実行すべきアプリケーションが、前記第３のアプリケーションでないと判定することを特徴とする請求項１〜５の何れか１項に記載の画像形成装置。
【請求項７】
前記第１の処理および前記第２の処理は、画像処理を含む処理であることを特徴とする請求項１〜６の何れか１項に記載の画像形成装置。
【請求項８】
前記選択手段により、前記第１のアプリケーションの実行に伴って実行すべきアプリケーションとして、前記第２のアプリケーションおよび前記第３のアプリケーションの何れもが選択されない場合に、前記ジョブを中止する中止手段を更に有することを特徴とする請求項１〜７の何れか１項に記載の画像形成装置。
【請求項９】
画像形成装置がジョブを実行するために用いられる第１のアプリケーションを記憶媒体または記憶装置に記憶する第１の記憶工程と、
前記第１のアプリケーションの実行に伴って前記画像形成装置に第１の処理を実行させるために用いる第２のアプリケーションを記憶媒体または記憶装置に記憶する第２の記憶手段と、
前記第１のアプリケーションの実行に伴って前記画像形成装置または外部装置に第２の処理を実行させるための第３のアプリケーションを外部の記憶媒体または記憶装置から取得する取得工程と、
前記取得工程が取得した前記第３のアプリケーションを記憶媒体または記憶装置に記憶する第３の記憶工程と、
前記第１のアプリケーションの実行が指示された場合に、前記第１のアプリケーションの実行に伴って実行すべきアプリケーションを、前記第２のアプリケーションおよび前記第３のアプリケーションのうちから選択する選択工程と、
前記選択工程が選択したアプリケーションを、前記第１のアプリケーションの実行に伴って実行させる制御を行う制御工程と、
を有することを特徴とする画像形成方法。
【請求項１０】
請求項１〜８の何れか１項に記載の画像形成装置の各手段としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置、画像形成方法、およびプログラムに関し、特に、画像形成装置でジョブを実行するために用いて好適なものである。
【背景技術】
【０００２】
従来、画像形成装置において、各種ジョブに対し、画像形成装置において工場出荷時から提供されていない画像処理を実現する技術として特許文献１に記載の技術がある。特許文献１には、常駐エージェント（プリンタ制御オブジェクトおよびイメージスキャナ制御オブジェクト）を有する画像形成装置に、プリントデータに対する処理を代行するモバイルエージェントを転送することが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−４８７２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載の構成では、モバイルエージェントと常駐エージェントとが独立して存在する。その結果、モバイルエージェントと常駐エージェントは共通の制御ライブラリを利用することはできても、それぞれが連携して動作することができない。従って、新規画像処理をプラグインとして追加したい場合、常駐エージェントとは別に新規モバイルエージェントとして追加する必要がある。しかしながら、この時、新規モバイルエージェントは、ユーザが使い慣れた常駐エージェントの画面や、常駐エージェントに登録済みのユーザ設定などを引き継ぐことができないため、ユーザの利便性の低下を招く虞がある。
本発明は、このような問題点に鑑みてなされたものであり、ジョブを実行するための既存のアプリケーションを用いて、画像形成装置に追加された処理を実行できるようにすることを目的とする。
【課題を解決するための手段】
【０００５】
本発明の画像形成装置は、画像形成装置であって、前記画像形成装置がジョブを実行するために用いられる第１のアプリケーションを記憶する第１の記憶手段と、前記第１のアプリケーションの実行に伴って前記画像形成装置に第１の処理を実行させるために用いる第２のアプリケーションを記憶する第２の記憶手段と、前記第１のアプリケーションの実行に伴って前記画像形成装置または外部装置に第２の処理を実行させるための第３のアプリケーションを外部の記憶媒体または記憶装置から取得する取得手段と、前記取得手段が取得した前記第３のアプリケーションを記憶する第３の記憶手段と、前記第１のアプリケーションの実行が指示された場合に、前記第１のアプリケーションの実行に伴って実行すべきアプリケーションを、前記第２のアプリケーションおよび前記第３のアプリケーションのうちから選択する選択手段と、前記選択手段が選択したアプリケーションを、前記第１のアプリケーションの実行に伴って実行させる制御を行う制御手段と、を有することを特徴とする。
【発明の効果】
【０００６】
本発明によれば、ジョブを実行するための既存のアプリケーションを用いて、画像形成装置に追加された処理を実行することができる。
【図面の簡単な説明】
【０００７】
【図１】画像形成システムの構成を表す図である。
【図２】画像形成装置の構成を表す図である。
【図３】第一の実施形態における画像形成装置のソフトウェア構造を表す図である。
【図４】第一の実施形態におけるジョブ実行時の画像形成装置の処理を説明するフローチャートである。
【図５】Ｓ４０７の処理の第１の例を説明するフローチャートである。
【図６】Ｓ４０７の処理の第２の例を説明するフローチャートである。
【図７】第二の実施形態における画像形成装置のソフトウェア構造を表す図である。
【図８】第二の実施形態におけるジョブ実行時の画像形成装置の処理を説明するフローチャートである。
【図９】第三の実施形態における画像形成装置のソフトウェア構造を表す図である。
【図１０】第三の実施形態における単独機能プラグインアプリケーションが画像処理を実行する例を説明するフローチャートである。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら、実施形態を説明する。
[第一の実施形態]
まず、第一の実施形態を説明する。
図１は、画像形成システムの構成の一例を表す図である。画像形成システムは、画像形成装置１０１、１０２と、情報処理端末１０３、１０４と、サーバ１０５とを有する。画像形成装置１０１、１０２と、情報処理端末１０３、１０４と、サーバ１０５は、ネットワーク１０６により相互に接続されて、通信可能である。図１では、画像形成装置１０１、１０２が２つである場合を例に挙げて示すが、画像形成装置の数は任意（１つまたは２以上）である。また、それぞれの画像形成装置１０１、１０２は、同じもので実現することができる。従って、以下では、画像形成装置１０１、１０２を代表して画像形成装置１０１について説明し、画像形成装置１０２についての詳細な説明を省略する。尚、ネットワーク１０６は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、Ｉｎｔｅｒｎｅｔ等、画像形成システム内の装置が相互に通信できるものであればよい。
【０００９】
画像形成装置１０１は、情報処理端末１０３、１０４から画像データの印刷依頼（印刷データ）を受信して印刷することや、画像形成装置１０１に備わるスキャナで画像データを読み取ることや、スキャナで読み取られた画像データを印刷することが可能である。また、画像形成装置１０１は、情報処理端末１０３、１０４から受信した印刷データを保存したり、画像形成装置１０１のスキャナで読み取られた画像を情報処理端末１０３、１０４に送信したりすることが可能である。更に画像形成装置１０１は、サーバ１０５を用いて画像処理を行ったり、サーバ１０５に格納されている文書を印刷したりすることが可能である。画像形成装置１０１は、この他に、ＭＦＰ（Multifunction Peripheral）等の公知の画像形成装置が有する機能を実現することが可能である。
【００１０】
図２は、画像形成装置１０１の構成の一例を表す図である。
画像形成装置１０１は、コントローラ２０１、プリンタ２０２、スキャナ２０３、および操作部２０４を有する。コントローラ２０１は、ＣＰＵ２１１、ＲＡＭ２１２、ＨＤＤ２１３、ネットワークＩ／Ｆ２１４、プリンタＩ／Ｆ２１５、スキャナＩ／Ｆ２１６、操作部Ｉ／Ｆ２１７、および拡張Ｉ／Ｆ２１８を有する。ＣＰＵ２１１は、ＲＡＭ２１２、ＨＤＤ２１３、ネットワークＩ／Ｆ２１４、プリンタＩ／Ｆ２１５、スキャナＩ／Ｆ２１６、操作部Ｉ／Ｆ２１７、および拡張Ｉ／Ｆ２１８とデータを授受することが可能である。また、ＣＰＵ２１１は、ＨＤＤ２１３から読み出した命令をＲＡＭ２１２に展開し、ＲＡＭ２１２に展開した命令を実行する。
【００１１】
ＨＤＤ２１３には、ＣＰＵ２１１で実行可能な命令、画像形成装置１０１で使用する設定値、およびユーザから依頼された処理に関するデータ等を記憶しておくことが可能である。ＲＡＭ２１２は、ＣＰＵ２１１がＨＤＤ２１３から読み出した命令を一時的に格納するための領域である。ＲＡＭ２１２は、命令の実行に必要な各種のデータを記憶しておくことが可能である。ネットワークＩ／Ｆ２１４は、画像形成システム内の装置とネットワーク通信を行うためのインターフェイスである。ネットワークＩ／Ｆ２１４は、データ受信を行ったことをＣＰＵ２１１に伝達することや、ＲＡＭ２１２上のデータをネットワーク１０６に送信することが可能である。
【００１２】
プリンタＩ／Ｆ２１５は、ＣＰＵ２１１から送信された印刷データをプリンタ２０２に送信することや、プリンタ２０２から受信したプリンタの状態をＣＰＵ２１１に伝達することが可能である。スキャナＩ／Ｆ２１６は、ＣＰＵ２１１から送信された画像読み取り指示をスキャナ２０３に送信し、スキャナ２０３から受信した画像データをＣＰＵ２１１に伝達することや、スキャナ２０３から受信した状態をＣＰＵ２１１に伝達することが可能である。
【００１３】
操作部Ｉ／Ｆ２１７は、操作部２０４から入力されたユーザからの指示をＣＰＵ２１１に伝達することや、ユーザが操作するための画面情報を操作部２０４に伝達することが可能である。拡張Ｉ／Ｆ２１８は、画像形成装置１０１に外部機器を接続することを可能とするインターフェイスである。拡張Ｉ／Ｆ２１８は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）形式のインターフェイスを具備する。画像形成装置１０１は、ＵＳＢメモリ等の外部記憶装置が拡張Ｉ／Ｆ２１８に接続されることにより、当該外部記憶装置に記憶されているデータの読み取りおよび当該外部記憶装置に対するデータの書き込みを行うことが可能である。
【００１４】
プリンタ２０２は、プリンタＩ／Ｆ２１５から受信した画像データを用紙に印刷することや、プリンタ２０２の状態をプリンタＩ／Ｆ２１５に伝達することが可能である。スキャナ２０３は、スキャナＩ／Ｆ２１６から受信した画像読み取り指示に従って、自身に置かれた用紙に表示されている情報を読み取ってデジタル化してスキャナＩ／Ｆ２１６に伝達することが可能である。また、スキャナ２０３は、自身の状態をスキャナＩ／Ｆ２１６に伝達することが可能である。操作部２０４は、画像形成装置１０１に対して各種の指示を行うための操作をユーザに行わせるためのインターフェイスである。例えば、操作部２０４は、タッチパネルを有する液晶画面を具備し、ユーザに操作画面を提供すると共に、ユーザからの操作を受け付ける。
【００１５】
図３は、ＣＰＵ２１１が処理するソフトウェアの構造の一例を模式的に表す階層図である。図３に示す構造を有するソフトウェアは、例えば、画像形成装置１０１のＨＤＤ２１３に記憶されたプログラムを用いることにより構成される。図３において、一部の例外を除いて、下位の階層が提供するサービスを上位の階層が利用する関係になっている。
図３において、最下層は、オペレーティングシステム３１６を含み、プログラムの実行の管理やメモリ管理等を行う階層である。オペレーティングシステム３１６の中には、プリンタ制御ドライバ３１７、スキャナ制御ドライバ３１８、およびネットワークＩ／Ｆ制御ドライバ３１９が組み込まれる。プリンタ制御ドライバ３１７、スキャナ制御ドライバ３１８、およびネットワークＩ／Ｆ制御ドライバ３１９は、相互に連携することにより機能することが可能である。プリンタ制御ドライバ３１７はプリンタＩ／Ｆ２１５を介してプリンタ２０２を制御するためのソフトウェアである。スキャナ制御ドライバ３１８はスキャナＩ／Ｆ２１６を介してスキャナ２０３を制御するためのソフトウェアである。ネットワークＩ／Ｆ制御ドライバ３１９はネットワークＩ／Ｆ２１４を制御するためのソフトウェアである。
【００１６】
最下層から２段目の層には、デバイス制御ライブラリ３０９が含まれる。デバイス制御ライブラリ３０９は、後述の単独機能プラグインアプリケーション３０２またはデバイス制御アプリケーション３０４と静的あるいは動的にリンクされる。さらにデバイス制御ライブラリ３０９は、各アプリケーションプログラムによる指示に基づいて、オペレーティングシステム３１６を制御する。また、各デバイス制御ライブラリ３０９は、接続ライブラリ３１４に対して画像処理を依頼する。画像処理を依頼する一連のフローの一例については後述する。
【００１７】
次に、デバイス制御ライブラリ３０９の一例について説明する。
プリントライブラリ３１０は、プリンタ制御ドライバ３１７の機能を利用してプリントジョブの制御を行うためのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を提供するライブラリである。プリントジョブは、画像形成装置１０１のＨＤＤ２１３に保存されている印刷データを印刷することや、ネットワークＩ／Ｆ２１４を通して外部装置から受信した印刷データを印刷するといった一連の処理を指す。外部装置は、例えば、情報処理端末１０３、１０４である。
【００１８】
コピーライブラリ３１１は、スキャナ制御ドライバ３１８およびプリンタ制御ドライバ３１７の機能を利用して、コピージョブの制御を行うためのＡＰＩを提供するライブラリである。コピージョブは、スキャナ２０３でスキャンされた画像データをプリンタ２０２で印刷する一連の処理を指す。
【００１９】
スキャン保存ライブラリ３１２は、スキャナ制御ドライバ３１８の機能を利用してスキャン保存ジョブの制御を行うためのＡＰＩを提供するライブラリである。スキャン保存ジョブは、スキャナ２０３でスキャンされた画像データを印刷データまたは汎用フォーマットに変換後、ＨＤＤ２１３または拡張Ｉ／Ｆ２１８に接続されているＵＳＢ等の外部記憶装置に保存する一連の処理を指す。尚、汎用フォーマットは、例えば、ＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）やＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）といったデータフォーマットである。
【００２０】
スキャン送信ライブラリ３１３は、スキャナ制御ドライバ３１８およびネットワークＩ／Ｆ制御ドライバ３１９の機能を利用して、スキャン送信ジョブの制御を行うためのＡＰＩを提供するライブラリである。スキャン送信ジョブは、スキャナ２０３でスキャンされた画像データを汎用フォーマットに変換後、ネットワークＩ／Ｆ２１４を通してファイルサーバに送信したり、電子メールに添付して外部装置に送信したりする一連の処理を指す。ファイルサーバは、例えば、サーバ１０５であり、外部装置は、例えば、情報処理端末１０３、１０４である。
【００２１】
最下層から２段目の層には、さらに接続ライブラリ３１４および画像処理ライブラリ３１５が含まれる。
画像処理ライブラリ３１５は、ＣＰＵ２１１によって実行される様々な画像処理を実行するためのＡＰＩを提供するライブラリである。ここでの様々な画像処理は、工場出荷時より画像形成装置１０１で利用可能な処理を指す。かかる画像処理は、例えば、画像形成装置１０１に入力された画像データを汎用フォーマットに変換する処理、シャープネス処理、およびページ集約を含む。尚、画像処理ライブラリ３１５の数は１つであっても複数であってもよい。画像処理ライブラリ３１５のそれぞれは固有の画像処理名としてＩｍａｇｉｎｇＮａｍｅ３２６を保有する。例えば、シャープネス機能を持つ画像処理ライブラリ３１５は、ＩｍａｇｉｎｇＮａｍｅ３２６としてＳｈａｒｐｎｅｓｓを保有する。尚、ＩｍａｇｉｎｇＮａｍｅ３２６は、接続ライブラリ３１４が、ＨＤＤ２１３に保存された画像処理ライブラリ３１５および後述する画像処理プラグインアプリケーション３０３の中から適したモジュールを選定するために用いられる。
【００２２】
接続ライブラリ３１４は、デバイス制御ライブラリ３０９から画像処理実行依頼を受けると、その内容に応じて、画像処理ライブラリ３１５および後述する画像処理プラグインアプリケーション３０３を呼び分け、画像処理を行う。尚、接続ライブラリ３１４による、画像処理ライブラリ３１５および後述する画像処理プラグインアプリケーション３０３の呼び分け方法の一例については後述する。
【００２３】
最上層は、プラグインアプリケーション３０１およびデバイス制御アプリケーション３０４を含む成り立つアプリケーション層である。デバイス制御アプリケーション３０４は、デバイス制御ライブラリ３０９の各ＡＰＩをコールすることによって様々な機能を提供する。尚、デバイス制御アプリケーション３０４は、ＨＤＤ２１３に記憶されている常駐のアプリケーションである。デバイス制御アプリケーション３０４は、ファームのバージョンアップにより、その機能を拡張することが可能である。デバイス制御アプリケーション３０４に含まれるプリントアプリケーション３０５、コピーアプリケーション３０６、スキャン保存アプリケーション３０７、スキャン送信アプリケーション３０８は、それぞれ画面情報３２２、３２３、３２４、３２５を有する。ＣＰＵ２１１は、操作部Ｉ／Ｆ２１７を通して操作部２０４にそれぞれの画面情報３２２、３２３、３２４、３２５を表示する。ＣＰＵ２１１は、ユーザが操作部２０４を操作することによりデバイス制御アプリケーション３０４の設定の変更を検知すると、その変更の内容をＨＤＤ２１３に書き込む。デバイス制御アプリケーション３０４は、この段階で、必要に応じて各ジョブの設定にＩｍａｇｉｎｇＮａｍｅを設定する。尚、この設定は、例えば、ユーザが操作部２０４を押下することによる画像処理の選択によって行われる。また、ＣＰＵ２１１は、各ジョブに必要な画像処理を自動で設定することも可能である。また、ＩｍａｇｉｎｇＮａｍｅは、デバイス制御アプリケーション３０４のみならずデバイス制御ライブラリ３０９が設定することも可能である。デバイス制御ライブラリ３０９が画像処理名を設定するケースとして、例えば、デバイス制御ライブラリ３０９がオペレーティングシステム３１６を制御するにあたり必要な画像処理がある場合、当該画像処理についての画像処理名を設定するケースがある。ジョブに用いられる画像処理の数が複数である場合には、それぞれの画像処理に対応するＩｍａｇｉｎｇＮａｍｅが設定される（即ち、複数のＩｍａｇｉｎｇＮａｍｅが設定される）。また、ジョブの実行に際し、画像処理プラグインアプリケーション３０３等、画像処理を伴うアプリケーション（即ち、画像処理を行うこと）が選択されなかった場合、画像処理名は設定されない。ＣＰＵ２１１（デバイス制御アプリケーション３０４）は、ユーザによる操作部２０４の操作に基づくジョブ実行を検知すると、デバイス制御ライブラリ３０９のＡＰＩをコールすることによりジョブを開始する。
【００２４】
次に、デバイス制御アプリケーション３０４の一例について説明する。プリントアプリケーション３０５は、プリントライブラリ３１０のＡＰＩをコールすることによりプリントジョブを実行する。コピーアプリケーション３０６は、コピーライブラリ３１１のＡＰＩをコールすることによりコピージョブを実行する。スキャン保存アプリケーション３０７は、スキャン保存ライブラリ３１２のＡＰＩをコールすることによりスキャン保存ジョブを実行する。スキャン送信アプリケーション３０８は、スキャン送信ライブラリ３１３のＡＰＩをコールすることでスキャン送信ジョブを実行する。
【００２５】
次に、プラグインアプリケーション３０１の一例について説明する。プラグインアプリケーション３０１は、常駐アプリケーションであるデバイス制御アプリケーション３０４とは別に、プラグインとしてインストールおよびアンインストールが可能なアプリケーションである。プラグインアプリケーション３０１は、単独機能プラグインアプリケーション３０２と、画像処理プラグインアプリケーション３０３とを有する。プラグインアプリケーション３０１には、それぞれ動作に必要なプログラムがパッケージングされている。プラグインアプリケーション３０１は、リモートＵＩ（ＵｓｅｒＩｎｔｅｒｆａｃｅ）等を用いることにより、画像形成装置１０１にインストールされる。尚、リモートＵＩは、外部装置におけるＷｅｂブラウザからネットワークＩ／Ｆ２１４を経由して画像形成装置１０１にアクセスし、画像形成装置１０１の状況の確認、印刷ジョブの操作、および各種設定などを行うことができる仕組みである。外部装置は、例えば、情報処理端末１０３、１０４である。また、プラグインアプリケーション３０１のそれぞれ（単独機能プラグインアプリケーション３０２および画像処理プラグインアプリケーション３０３）は、それぞれ個別に起動および停止を行うことが可能である。
【００２６】
以下に、プラグインアプリケーション３０１のインストールから起動、停止、アンインストールまでの一連の流れの一例を示す。
ＣＰＵ２１１は、プラグインアプリケーション３０１のインストールを検知すると、当該プラグインアプリケーション３０１の情報をＨＤＤ２１３に保存する。続いてＣＰＵ２１１は、プラグインアプリケーション３０１に対する開始指示を検知すると、当該プラグインアプリケーション３０１に対する起動指示を行う。プラグインアプリケーション３０１は起動している間、各プログラムの内容を実行する事が可能である。続いてＣＰＵ２１１は、プラグインアプリケーション３０１に対する停止指示を検知すると、当該プラグインアプリケーション３０１に対して停止指示を行う。更にＣＰＵ２１１は、プラグインアプリケーション３０１に対するアンインストール指示を検知すると、当該プラグインアプリケーション３０１の情報をＨＤＤ２１３から削除する。尚、これらの指示は、例えば、リモートＵＩや操作部２０４から行うことが可能であるが、これ以外でこれらの指示が行われても構わない。
【００２７】
次に、単独機能プラグインアプリケーション３０２の一例について説明する。単独機能プラグインアプリケーション３０２は、画面情報３２０を有する。単独機能プラグインアプリケーション３０２は、デバイス制御ライブラリ３０９のＡＰＩをコールすることで常駐のデバイス制御アプリケーション３０４とは別の機能や画面をユーザに提供することができる。例えば、単独機能プラグインアプリケーション３０２は、或る画像データをコピーすると共にスキャンして送信する機能等、複数の機能を組み合わせて提供することが可能である。また、単独機能プラグインアプリケーション３０２は、画面情報３２０に対するユーザの操作に基づく画像処理の設定を検知すると、ジョブの設定に、当該画像処理に対応する画像処理名としてＩｍａｇｉｎｇＮａｍｅを設定する。単独機能プラグインアプリケーション３０２は、ユーザからの明示的な設定がなくても、デフォルトで実現したい画像処理のＩｍａｇｉｎｇＮａｍｅを設定することが可能である。尚、単独機能プラグインアプリケーション３０２は、画像処理を行う機能を有していなくてもよい。この場合、画像処理の設定は行われない。接続ライブラリ３１４は、以上のようにして設定されたＩｍａｇｉｎｇＮａｍｅを元に必要な画像処理モジュールを選択し、画像処理を実行する。尚、画像処理モジュールの選択方法の一例については後述する。更に、デバイス制御ライブラリ３０９は、印刷データまたは汎用フォーマットに変換後の画像データを受信すると、適切なオペレーティングシステム３１６に対して処理制御を指示し、ジョブを実行させる。
【００２８】
次に、画像処理プラグインアプリケーション３０３の一例について説明する。画像処理プラグインアプリケーション３０３は、特定の画像処理を提供するアプリケーションである。画像処理プラグインアプリケーション３０３は、１つであっても複数であってもよい。ここでの特定の画像処理は、画像処理ライブラリ３１５とは別に拡張する画像処理を指す。例えば、入力画像に対するフォーマット変換や、斜行補正や、ＯＣＲ（ｏｐｔｉｃａｌ  ｃｈａｒａｃｔｅｒ  ｒｅｃｏｇｎｉｔｉｏｎ）後の翻訳データの生成といった処理等が、特定の画像処理に含まれる。
【００２９】
画像処理プラグインアプリケーション３０３は、それ自体が画像処理機能を持っていなくてもよい。例えば、サーバ１０５に画像処理のプログラムが存在している場合、画像処理プラグインアプリケーション３０３は、ネットワークＩ／Ｆ２１４を通し、サーバ１０５に対して画像処理の指示を送信することで、画像処理を実現することが可能である。画像処理プラグインアプリケーション３０３のそれぞれは、自身が実行する画像処理の内容を識別するための識別子としてＩｍａｇｉｎｇＮａｍｅ３２１を保持する。例えば、斜行補正を行う画像処理プラグインアプリケーション３０３には、ＩｍａｇｉｎｇＮａｍｅ３２１として"ＴｉｌｔＣｏｒｒｅｃｔ"が設定される。ＩｍａｇｉｎｇＮａｍｅ３２１は固有であり、同じＩｍａｇｉｎｇＮａｍｅ３２１を持つ複数の画像処理プラグインアプリケーション３０３は画像形成装置１０１のＨＤＤ２１３に存在しない。即ち、画像形成装置１０１に既にインストールされた画像処理プラグインアプリケーション３０３とＩｍａｇｉｎｇＮａｍｅ３２１が同じ画像処理プラグインアプリケーション３０３を画像形成装置１０１にインストールすることはできない。デバイス制御ライブラリ３０９は、接続ライブラリ３１４に対して画像処理を依頼する際、ＩｍａｇｉｎｇＮａｍｅおよび処理の詳細なパラメータを設定する。接続ライブラリ３１４は、ジョブに設定されたＩｍａｇｉｎｇＮａｍｅを元に画像処理プラグインアプリケーション３０３および画像処理ライブラリ３１５を呼び分けことが可能である。これら呼び分け方の詳細の一例については後述する。接続ライブラリ３１４が画像処理プラグインアプリケーション３０３に対して処理の依頼を行う部分は、図３において、下位モジュールが上位モジュールに対してコールすることが可能な部分である。画像形成装置１０１は、プラグインアプリケーション３０１と同様に、リモートＵＩ等を用いて、画像処理プラグインアプリケーション３０３を画像形成装置１０１にインストールし起動することで、画像処理プラグインアプリケーション３０３を認識できる。
【００３０】
以上の例では、例えば、デバイス制御アプリケーション３０４が、ＨＤＤ２１３に記憶されることにより、画像形成装置がジョブを実行するために用いられる第１のアプリケーションを記憶する第１の記憶処理の一例が実現される。また、画像処理ライブラリ３１５およびＩｍａｇｉｎｇＮａｍｅ３２６が、ＨＤＤ２１３に記憶されることにより第２の記憶処理の一例が実現される。また、例えば、外部の記憶媒体または記憶装置に記憶されているプラグインアプリケーション３０１のインストールにより、画像形成装置または外部装置に処理を実行させるために用いられる第３のアプリケーションを取得する取得処理の一例が実現される。また、例えば、インストールされたプラグインアプリケーション３０１をＨＤＤ２１３に記憶することにより第３の記憶処理の一例が実現される。尚、情報の記憶は、ＨＤＤ２１３以外の記憶媒体または記憶装置で行われてもよい。
【００３１】
図４は、ジョブ実行時の画像形成装置１０１の処理の一例を説明するフローチャートである。本フローチャートで示す処理に係るプログラムは画像形成装置１０１のＨＤＤ２１３に格納されており、ＲＡＭ２１２によって呼び出され、ＣＰＵ２１１によって実行される。図３および図４を用いて、ジョブ実行時の一連の処理の流れについて説明する。
ジョブのそれぞれは、当該ジョブの設定値と、当該ジョブで扱う画像データとを含む。ジョブの設定値には、当該ジョブで実行される画像処理の画像処理名としてＩｍａｇｉｎｇＮａｍｅを設定することができる。
【００３２】
ＣＰＵ２１１は、デバイス制御アプリケーション３０４において、操作Ｉ／Ｆ２１７からジョブの実行指示を検知すると（Ｓ４０１）、当該ジョブの実行に際し、各アプリケーションにおいて実行が必要な画像処理が存在するか否かを判定する。ＣＰＵ２１１は、各アプリケーションにおいて実行が必要な画像処理が存在する場合、当該画像処理のＩｍａｇｉｎｇＮａｍｅをジョブの設定値として設定する。尚、ジョブの実行時に必要な画像処理は、ジョブ実行の指示を行う前にユーザが画像形成装置１０１に対して設定することとしてもよい。また、所定の内容のジョブを実行する場合に必要な画像処理の内容を予め画像形成装置１０１が記憶しておき、当該所定の内容のジョブの実行が指示された場合に、ＣＰＵ２１１が、その画像処理を呼び出すこととしてもよい。
【００３３】
続いて、ＣＰＵ２１１は、デバイス制御ライブラリ３０９のＡＰＩをコールする。ＣＰＵ２１１によってコールされたデバイス制御ライブラリ３０９は、当該ジョブの実行に際し、各デバイスの制御において実行が必要な画像処理が存在する場合、当該画像処理のＩｍａｇｉｎｇＮａｍｅをジョブの設定値として追加する。このように、ジョブの実行指示後に、デバイス制御ライブラリ３０９でも、ＩｍａｇｉｎｇＮａｍｅを設定することができる。続いて、デバイス制御ライブラリ３０９は、ジョブの設定値にＩｍａｇｉｎｇＮａｍｅが設定されているか否かによって、ジョブに画像処理が含まれるか否かを判定する（Ｓ４０２）。つまり、デバイス制御ライブラリ３０９は、ジョブの設定値にＩｍａｇｉｎｇＮａｍｅが設定されている場合に、ジョブに画像処理が含まれると判定する。そして、デバイス制御ライブラリ３０９は、ジョブの設定値にＩｍａｇｉｎｇＮａｍｅが設定されていない場合、ジョブに画像処理が含まれないと判定する。
【００３４】
デバイス制御ライブラリ３０９は、ジョブに画像処理が含まれないと判定した場合、オペレーティングシステム３１６の必要なドライバに対して制御依頼を行い、ジョブを実行させる（Ｓ４０３）。そして、図４のフローチャートによる処理が終了する。
デバイス制御ライブラリ３０９は、ジョブに画像処理が含まれると判定した場合、接続ライブラリ３１４のＡＰＩをコールする（Ｓ４０４）。接続ライブラリ３１４は、ジョブの設定値に設定されたＩｍａｇｉｎｇＮａｍｅが示す画像処理を画像処理ライブラリ３１５で実現できるか否かを判定する（Ｓ４０５）。以下に、この判定の方法の一例を示す。
【００３５】
第１の判定方法では、まず、接続ライブラリ３１４は、画像処理ライブラリ３１５から、画像処理ライブラリ３１５のそれぞれで処理できる画像処理名としてＩｍａｇｉｎｇＮａｍｅ３２６のリストを取得する。そして、接続ライブラリ３１４は、デバイス制御ライブラリ３０９から受信したＩｍａｇｉｎｇＮａｍｅと、ＩｍａｇｉｎｇＮａｍｅ３２６のリストに含まれるＩｍａｇｉｎｇＮａｍｅ３２６とを比較する。即ち、接続ライブラリ３１４は、ＩｍａｇｉｎｇＮａｍｅ３２６のリストに含まれるＩｍａｇｉｎｇＮａｍｅ３２６の中に、デバイス制御ライブラリ３０９から受信したＩｍａｇｉｎｇＮａｍｅと一致するものがあるか否かを判定する。接続ライブラリ３１４は、一致するものがある場合、ジョブの設定値に設定されたＩｍａｇｉｎｇＮａｍｅが示す画像処理を画像処理ライブラリ３１５で実現できると判定する。一方、一致するものがない場合、接続ライブラリ３１４は、ジョブの設定値に設定されたＩｍａｇｉｎｇＮａｍｅが示す画像処理を画像処理ライブラリ３１５で実現できないと判定する。
【００３６】
第２の判定方法では、まず、接続ライブラリ３１４は、画像処理ライブラリ３１５に対して、デバイス制御ライブラリ３０９から受信したＩｍａｇｉｎｇＮａｍｅが示す画像処理の実行依頼を行う。そして、接続ライブラリ３１４は、デバイス制御ライブラリ３０９から受信したＩｍａｇｉｎｇＮａｍｅが示す画像処理を画像処理ライブラリ３１５で実行できた場合、当該画像処理を画像処理ライブラリ３１５で実現できると判定する。一方、デバイス制御ライブラリ３０９から受信したＩｍａｇｉｎｇＮａｍｅが示す画像処理を画像処理ライブラリ３１５で実行できなかった場合、接続ライブラリ３１４は、当該画像処理を画像処理ライブラリ３１５で実現できないと判定する。
【００３７】
以上の第１の判定方法および第２の判定方法では、接続ライブラリ３１４は、画像処理ライブラリ３１５との通信の結果を用いて、ジョブの設定値に設定されたＩｍａｇｉｎｇＮａｍｅが示す画像処理を画像処理ライブラリ３１５で実現できるか否かを判定する。尚、ジョブの設定値に設定されたＩｍａｇｉｎｇＮａｍｅが示す画像処理を画像処理ライブラリ３１５で実現できるか否かを判定する方法は、前述した第１の判定方法および第２の判定方法以外の方法でも構わない。
【００３８】
接続ライブラリ３１４は、画像処理ライブラリ３１５で画像処理を実現できると判定すると、画像処理ライブラリ３１５のＡＰＩをコールして画像処理を実行させ、デバイス制御ライブラリ３０９に対して、画像処理後の画像データを送信する（Ｓ４０６）。デバイス制御ライブラリ３０９は、オペレーティングシステム３１６の必要なドライバに対して制御依頼を行い、ジョブを実行させる（Ｓ４０３）。そして、図４のフローチャートによる処理が終了する。
【００３９】
接続ライブラリ３１４は、画像処理ライブラリ３１５で画像処理を実現できないと判定すると、当該画像処理を画像処理プラグインアプリケーション３０３で実現できるか否かを判定する（Ｓ４０７）。この判定の方法の一例については後述する。当該画像処理を画像処理プラグインアプリケーション３０３で実現できる場合、接続ライブラリ３１４は、当該画像処理プラグインアプリケーション３０３のＡＰＩに対して処理依頼を行い、画像処理を実行させる（Ｓ４０８）。そして、デバイス制御ライブラリ３０９は、画像処理プラグインアプリケーション３０３で画像処理が行われた画像データを受け取った後、オペレーティングシステム３１６の必要なドライバに対して制御依頼を行い、ジョブを実行させる（Ｓ４０３）。そして、図４のフローチャートによる処理が終了する。
【００４０】
一方、当該画像処理を画像処理プラグインアプリケーション３０３で実現できないと判定されると、接続ライブラリ３１４は、次の処理を行う。即ち、接続ライブラリ３１４は、当該画像処理を実行できないためにジョブが実行できないことを示す情報を操作部２０４に表示し、実行中のジョブを中止する（Ｓ４０９）。そして、図４のフローチャートによる処理が終了する。
尚、図４では、画像処理ライブラリ３１５で画像処理を実現できるか否かを判定してから、当該画像処理を画像処理プラグインアプリケーション３０３で実現できるか否かを判定する場合を例に挙げて説明した（Ｓ４０５、Ｓ４０７）。しかしながら、これとは逆に、画像処理プラグインアプリケーション３０３で画像処理を実現できるか否かを判定してから、当該画像処理を画像処理ライブラリ３１５で実現できるか否かを判定してもよい。
【００４１】
図４に示す例では、例えば、Ｓ４０５．Ｓ４０７における判定が行われることにより、選択処理の一例が実現される。また、例えば、Ｓ４０６、Ｓ４０８において、画像処理が実行されることにより、制御処理の一例が実現される。
【００４２】
続いて、画像処理プラグインアプリケーション３０３が、ジョブの設定値に設定されたＩｍａｇｉｎｇＮａｍｅが示す画像処理を実現できるか否かを判定する方法（即ち、Ｓ４０７の判定の方法）の一例を示す。
図５は、画像処理プラグインアプリケーション３０３が、ジョブの設定値に設定されたＩｍａｇｉｎｇＮａｍｅが示す画像処理を実現できるか否かを判定する第１の判定方法（Ｓ４０７の第１の判定方法）を説明するフローチャートである。Ｓ４０５にて、ジョブの設定値に設定されたＩｍａｇｉｎｇＮａｍｅが示す画像処理を画像処理ライブラリ３１５で実現できないと判定されると、図５のフローチャートの実行が開始する。
【００４３】
接続ライブラリ３１４は、画像形成装置１０１に登録されている画像処理プラグインアプリケーション３０３のそれぞれに関連付けられているＩｍａｇｉｎｇＮａｍｅ３２１のリストを取得する（Ｓ５０１）。続いて接続ライブラリ３１４は、当該リストに、ジョブの設定値に設定されたＩｍａｇｉｎｇＮａｍｅが存在するか否かを判定する（Ｓ５０２）。接続ライブラリ３１４は、ジョブの設定値に設定されたＩｍａｇｉｎｇＮａｍｅが存在すると判定すると、前述したＳ４０８の処理を行う。即ち、接続ライブラリ３１４は、ＩｍａｇｉｎｇＮａｍｅが一致する画像処理プラグインアプリケーション３０３のＡＰＩに対して処理依頼を行い、画像処理を実行させる（Ｓ４０８）。一方、ジョブの設定値に設定されたＩｍａｇｉｎｇＮａｍｅが存在しないと判定すると、接続ライブラリ３１４は、画像処理プラグインアプリケーション３０３では、当該ＩｍａｇｉｎｇＮａｍｅの画像処理を実行できないと判定する。そこで、前述したように、接続ライブラリ３１４は、当該画像処理を実行できないためにジョブが実行できないことを示す情報を操作部２０４に表示し、実行中のジョブを中止する（Ｓ４０９）。
【００４４】
図６は、画像処理プラグインアプリケーション３０３が、ジョブの設定値に設定されたＩｍａｇｉｎｇＮａｍｅが示す画像処理を実現できるか否かを判定する第２の判定方法（Ｓ４０７の第２の判定方法）を説明するフローチャートである。図５と同様に、Ｓ４０５にて、ジョブの設定値に設定されたＩｍａｇｉｎｇＮａｍｅが示す画像処理を画像処理ライブラリ３１５で実現できないと判定されると、図６のフローチャートの実行が開始する。
【００４５】
接続ライブラリ３１４は、ＩｍａｇｉｎｇＮａｍｅの比較をしていない画像処理プラグインアプリケーション３０３が存在するか否かを判定する（Ｓ６０１）。この比較は、デバイス制御ライブラリ３０９から依頼された画像処理のＩｍａｇｉｎｇＮａｍｅ（即ち、ジョブの設定値としてのＩｍａｇｉｎｇＮａｍｅ）と画像処理プラグインアプリケーション３０３の保持するＩｍａｇｉｎｇＮａｍｅ３２１との比較を指す。
ＩｍａｇｉｎｇＮａｍｅの比較をしていない画像処理プラグインアプリケーション３０３が存在しない場合、接続ライブラリ３１４は、画像処理プラグインアプリケーション３０３では、当該ＩｍａｇｉｎｇＮａｍｅの画像処理を実行できないと判定する。そこで、前述したように、接続ライブラリ３１４は、当該画像処理を実行できないためにジョブが実行できないことを示す情報を操作部２０４に表示し、実行中のジョブを中止する（Ｓ４０９）。
【００４６】
一方、ＩｍａｇｉｎｇＮａｍｅの比較をしてない画像処理プラグインアプリケーション３０３が存在する場合、処理はＳ６０２に進む。そして、接続ライブラリ３１４は、比較対象の画像処理プラグインアプリケーション３０３に、未だＩｍａｇｉｎｇＮａｍｅの比較をしていない画像処理プラグインアプリケーション３０３をセットする（Ｓ６０２）。続いて、接続ライブラリ３１４は、比較対象の画像処理プラグインアプリケーション３０３の保持するＩｍａｇｉｎｇＮａｍｅ３２１と、ジョブの設定値に設定されたＩｍａｇｉｎｇＮａｍｅとを比較する（Ｓ６０３）。そして、接続ライブラリ３１４は、比較対象の画像処理プラグインアプリケーション３０３の保持するＩｍａｇｉｎｇＮａｍｅ３２１と、ジョブの設定値に設定されたＩｍａｇｉｎｇＮａｍｅとが一致するか否かを判定する（Ｓ６０４）。接続ライブラリ３１４は、これらのＩｍａｇｉｎｇＮａｍｅが一致すると判定すると、前述したＳ４０８の処理を行う。即ち、接続ライブラリ３１４は、ＩｍａｇｉｎｇＮａｍｅが一致する画像処理プラグインアプリケーション３０３のＡＰＩに対して処理依頼を行い、画像処理を実行させる（Ｓ４０８）。一方、これらのＩｍａｇｉｎｇＮａｍｅが一致しないと判定すると、接続ライブラリ３１４は、Ｓ６０１に戻り、ＩｍａｇｉｎｇＮａｍｅの比較をしていない画像処理プラグインアプリケーション３０３が存在するか否かを判定する（Ｓ６０１）。
【００４７】
以上のように本実施形態では、画像形成装置１０１は、画像処理プラグインアプリケーション３０３に、当該画像処理プラグインアプリケーション３０３で実現される画像処理の識別情報としてＩｍａｇｉｎｇＮａｍｅ３２１を関連付けて記憶する。また、画像形成装置１０１は、デバイス制御アプリケーション３０４で実現される機能（プリント等）で使用される画像処理の識別情報であるＩｍａｇｉｎｇＮａｍｅ３２６を記憶する。接続ライブラリ３１４は、ＩｍａｇｉｎｇＮａｍｅ３２１、３２６のうち、ジョブに設定されたＩｍａｇｉｎｇＮａｍｅと一致するＩｍａｇｉｎｇＮａｍｅを探索する。そして、接続ライブラリ３１４は、探索したＩｍａｇｉｎｇＮａｍｅに関連する画像処理を画像処理プラグインアプリケーション３０３または画像処理ライブラリ３１５に依頼する。従って、新規の画像処理として画像処理プラグインアプリケーション３０３をインストールすることで、常駐のデバイス制御アプリケーション３０４の機能を拡張することが可能となる。よって、ユーザは、デバイス制御アプリケーション３０４から新規の画像処理を利用することができる。これにより、新規の画像処理を利用する際にデバイス制御アプリケーション３０４の設定を引き継ぐことが可能となり、既存の各種のジョブ機能の設定をそのまま受け継ぐことができる。よって、ユーザの利便性が向上する。
【００４８】
[第二の実施形態]
次に、第二の実施形態を説明する。第一の実施形態においては、デバイス制御ライブラリ３０９が、ジョブに画像処理が含まれると判断した場合、その画像処理を含むモジュールがいずれの場合においても、必ず接続ライブラリ３１４のＡＰＩをコールする例を示した。本実施形態においては、デバイス制御ライブラリ３０９が、画像処理ライブラリ３１５および、接続ライブラリ３１４を呼び分ける例を示す。このように本実施形態と第一の実施形態とは、デバイス制御ライブラリ３０９の機能の一部が主として異なる。従って、本実施形態の説明において、第一の実施形態と同一の部分については、図１〜図６に付した符号と同一の符号を付す等して詳細な説明を省略する。
【００４９】
図７は、本実施形態で用いるソフトウェアの構成の一例を模式的に表す階層図である。また、図８は、本実施形態で用いるジョブ実行の画像処理装置１０１の処理の一例を説明するフローチャートである。本フローチャートで示す処理に係るプログラムは、画像形成装置１０１のＨＤＤ２１３に格納されており、ＲＡＭ２１２によって呼び出され、ＣＰＵ２１１によって実行される。図７および図８を用いて、本実施形態のジョブ実行時一連の処理の流れについて説明する。尚、図７における各コンポーネントは、第一の実施形態における図３において示したものと同様であり、デバイス制御ライブラリ３０９、接続ライブラリ３１４、画像処理ライブラリ３１５の関連線が異なる点が図３と図７との差異である。
【００５０】
図８において、Ｓ８０１、Ｓ８０２、Ｓ８０３の処理は、第一の実施形態におけるＳ４０１、Ｓ４０２、Ｓ４０３の処理と同様であるため説明を省略する。デバイス制御ライブラリ３０９はＳ８０２において、ジョブに画像処理が含まれると判断した場合、続いてジョブに設定されたＩｍａｇｉｎｇＮａｍｅが示す画像処理を画像処理ライブラリ３１５で処理可能か否かを判断する（Ｓ８０４）。この判断の結果、ジョブに設定されたＩｍａｇｉｎｇＮａｍｅが示す画像処理を画像処理ライブラリ３１５で処理可能であると判断した場合、デバイス制御ライブラリ３０９は、画像処理ライブラリ３１５のＡＰＩをコールして画像処理を実行させる（Ｓ８０６）。一方、ジョブに設定されたＩｍａｇｉｎｇＮａｍｅが示す画像処理を画像処理ライブラリ３１５で処理可能ではないと判断した場合、デバイス制御ライブラリ３０９は、接続ライブラリ３１４のＡＰＩをコールする（Ｓ８０５）。これ以降のＳ８０７、Ｓ８０８、Ｓ８０９における処理は、第一の実施形態におけるＳ４０７、Ｓ４０８、Ｓ４０９の処理と同様であるため省略する。
【００５１】
本実施形態によると、デバイス制御ライブラリ３０９は自身が実現できない画像処理のみを接続ライブラリ３１４に依頼する。よって、デバイス制御ライブラリ３０９は、従来の画像処理を実行するフローの改変をすることなく、新規画像処理のフローを拡張できるといった効果がある。
【００５２】
[第三の実施形態]
次に、第三の実施形態を説明する。第一の実施形態および第二の実施形態においては、デバイス制御アプリケーション３０４または単独プラグインアプリケーション３０２が、デバイス接続ライブラリ３０９を通して画像処理プラグインアプリケーション３０３の画像処理を実行する例を示した。本実施形態においては、単独機能プラグインアプリケーション３０２がデバイス制御ライブラリ３０９をコールすることなく画像処理プラグインアプリケーション３０３を実行する例を示す。このように本実施形態と第一の実施形態および第二の実施形態とは、単独機能プラグインアプリケーション３０２の機能の一部が主として異なる。従って、本実施形態の説明において、第一の実施形態および第二の実施形態と同一の部分については、図１〜図８に付した符号と同一の符号を付す等して詳細な説明を省略する。
【００５３】
図９は、本実施形態で用いるソフトウェアの構成の一例を模式的に表す階層図である。また、図１０は、本実施形態で用いる、単独アプリケーション３０２からの画像処理の実行のフローチャートである。本フローチャートで示す処理に係るプログラムは、画像形成装置１０１のＨＤＤ２１３に格納されており、ＲＡＭ２１２によって呼び出され、ＣＰＵ２１１によって実行される。図９および図１０を用いて、本実施形態の画像処理実行時の一連の処理の流れについて説明する。尚、図９における各コンポーネントは、第一の実施形態における図３において示したものと同様であり、単独機能プラグインアプリケーション３０２から直接接続ライブラリに３１４に関連がある点が図３と図９との差異である。
【００５４】
第一の実施形態では単独機能アプリケーション３０２がデバイス制御ライブラリ３０９のＡＰＩをコールすることで、ジョブを実行する例を示したが、単独機能アプリケーション３０２はジョブを伴わず、画像処理を単体で実行してもよい。ＯＣＲ（ｏｐｔｉｃａｌ  ｃｈａｒａｃｔｅｒ  ｒｅｃｏｇｎｉｔｉｏｎ）である単語が含まれるドキュメントをプレビューで表示するといった場合などが画像処理を単体で実行する場合の例である。
【００５５】
図１０において、単独機能アプリケーション３０２は、自身の画面情報３２０に対するユーザの操作に基づくジョブを伴わない画像処理の設定を検知すると（Ｓ１００１）、当該画像処理名にＩｍａｇｉｎｇＮａｍｅを設定する。
続いて単独機能アプリケーション３０２は、接続ライブラリ３１４のＡＰＩを直接コールする（Ｓ１００２）。次に、接続ライブラリ３１４は、画像処理名に設定されたＩｍａｇｉｎｇＮａｍｅが示す画像処理を画像処理ライブラリ３１５で処理可能かどうかを判断する（Ｓ１００３）。この判断の結果、当該画像処理を画像処理ライブラリ３１５で処理可能であると判断した場合、接続ライブラリ３１４は、画像処理ライブラリ３１４のＡＰＩをコールして画像処理を実行させる（Ｓ１００７）。
【００５６】
一方で、画像処理名に設定されたＩｍａｇｉｎｇＮａｍｅが示す画像処理を処理可能でないと判断した場合、当該画像処理を画像処理プラグインアプリケーション３０３で処理可能かどうかを判断する（Ｓ１００４）。この判断の結果、当該画像処理を画像処理プラグインアプリケーション３０３で処理可能であると判断した場合、接続ライブラリ３１４は、画像処理プラグインアプリケーション３０３のＡＰＩに対して処理依頼を行い、画像処理を実行させる（Ｓ１００６）。一方で、当該画像処理を画像処理プラグインアプリケーション３０３で処理可能でないと判断した場合、接続ライブラリ３１４は、指定された画像処理を実行できない旨を操作部２０４に表示し、実行中の画像処理を中止する（Ｓ１００５）。尚、接続ライブラリ３１４から画像処理を実行できない理由を単独機能アプリケーション３０２が受信し、単独機能アプリケーション３０２が操作部２０４に画像処理を実行できない理由を表示する構成でもよい。
【００５７】
尚、画像処理ライブラリ３１５で処理可能か否かを判断する処理（Ｓ１００３）および、画像処理プラグインアプリケーション３０３で処理可能か判断する処理（Ｓ１００４）については、第一の実施形態と同様であるため省略する。
【００５８】
本実施形態によると、単独機能プラグインアプリケーション３０２において、ジョブを伴わない単独の画像処理においても、追加された画像処理プラグインアプリケーションを利用することが可能になる。したがってユーザの利便性が向上する。
【００５９】
尚、前述した実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【００６０】
（その他の実施例）
本発明は、前述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００６１】
１０１〜１０２：画像形成装置、１０３〜１０４：情報処理端末、１０５：サーバ
【図１】
2018020562.tif 000003
【図２】
2018020562.tif 000004
【図３】
2018020562.tif 000005
【図４】
2018020562.tif 000006
【図５】
2018020562.tif 000007
【図６】
2018020562.tif 000008
【図７】
2018020562.tif 000009
【図８】
2018020562.tif 000010
【図９】
2018020562.tif 000011
【図１０】
2018020562.tif 000012