(57)【要約】【課題】外部アプリのソフトウェア開発効率の向上を図ること。【解決手段】画像形成処理で使用されるハードウェア資源と、画像形成処理にかかるユーザサービスにそれぞれ固有の処理を行うアプリケーションと、アプリケーションとハードウェア資源との間に介在し、ユーザサービスを提供する際に、アプリケーションの少なくとも２つが共通的に必要とするハードウェア資源の獲得要求、管理、実行制御並びに画像形成処理を行うコントロールサービスとを備えた画像形成装置であって、アプリケーションとして搭載され、イメージ処理を含むユーザサービスを提供する外部アプリ（ＯＣＲアプリ）１１７と、外部アプリ１１７に実装され、コントロールサービス１４０に処理要求を行うと共にイメージ処理を実行するイメージ処理関数が登録されたイメージライブラリ１５０とを備えた。【選択図】　　　図１
2004110751.tif 000002
【特許請求の範囲】
【請求項１】
画像形成処理で使用されるハードウェア資源と、画像形成処理にかかるユーザサービスにそれぞれ固有の処理を行うアプリケーションと、前記アプリケーションと前記ハードウェア資源との間に介在し、ユーザサービスを提供する際に、アプリケーションの少なくとも２つが共通的に必要とする前記ハードウェア資源の獲得要求、管理、実行制御並びに画像形成処理を行うコントロールサービスとを備えた画像形成装置であって、
前記アプリケーションとして搭載され、イメージ処理を含むユーザサービスを提供する外部アプリと、
前記外部アプリに実装され、前記コントロールサービスに処理要求を行うと共にイメージ処理を実行するイメージ処理関数が登録されたイメージライブラリ
を備えたことを特徴とする画像形成装置。
【請求項２】
前記イメージ処理関数は、前記コントロールサービスに対する処理要求を、前記コントロールサービスで提供される関数呼び出しによって行うことを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記イメージ処理関数は、前記コントロールサービスに対する処理要求を、メッセージ送信によって行うことを特徴とする請求項１または２に記載の画像形成装置。
【請求項４】
前記イメージライブラリは、印刷に関する処理を実行するプリント処理関数が登録されたプリントライブラリを有することを特徴とする請求項１〜３のいずれか一つに記載の画像形成装置。
【請求項５】
前記イメージライブラリは、スキャンに関する処理を実行するスキャン処理関数が登録されたスキャンライブラリを有することを特徴とする請求項１〜４のいずれか一つに記載の画像形成装置。
【請求項６】
前記イメージライブラリは、ファイル操作に関する処理を実行するファイル操作関数が登録されたファイル操作関連のライブラリを有することを特徴とする請求項１〜５のいずれか一つに記載の画像形成装置。
【請求項７】
画像形成処理で使用されるハードウェア資源と、画像形成処理にかかるユーザサービスにそれぞれ固有の処理を行うアプリケーションと、前記アプリケーションと前記ハードウェア資源との間に介在し、ユーザサービスを提供する際に、アプリケーションの少なくとも２つが共通的に必要とする前記ハードウェア資源の獲得要求、管理、実行制御並びに画像形成処理を行うコントロールサービスとを備えた画像形成装置であって、
前記アプリケーションとして搭載され、スキャナサービスに固有の処理を行うスキャナアプリと、
前記アプリケーションとして搭載され、イメージ処理を含むユーザサービスを提供し、スキャナサービスを提供する際に、前記スキャナアプリに対し、スキャンに関する処理要求を行う外部アプリと、
を備えたことを特徴とする画像形成装置。
【請求項８】
前記外部アプリは、前記スキャナアプリに対しスキャンに関する処理要求を、メッセージ送信により行うことを特徴とする請求項７に記載の画像形成装置。
【請求項９】
前記外部アプリは、前記スキャナアプリに対しスキャンに関する処理要求を、前記スキャナアプリによって提供される関数呼び出しにより行うことを特徴とする請求項７または８に記載の画像形成装置。
【請求項１０】
前記アプリケーションとして搭載され、プリントサービスに固有の処理を行うプリンタアプリと、
前記アプリケーションとして搭載され、イメージ処理を含むユーザサービスを提供し、プリントサービスを提供する際に、前記プリンタアプリに対し、印刷に関する処理要求を行う外部アプリと、
を備えたことを特徴とする請求項７〜９のいずれか一つに記載の画像形成装置。
【請求項１１】
前記外部アプリは、前記プリンタアプリに対し印刷に関する処理要求を、メッセージ送信により行うことを特徴とする請求項１０に記載の画像形成装置。
【請求項１２】
前記外部アプリは、前記プリンタアプリに対し印刷に関する処理要求を、前記プリンタアプリによって提供される関数呼び出しにより行うことを特徴とする請求項１０または１１に記載の画像形成装置。
【請求項１３】
画像形成処理で使用されるハードウェア資源と、画像形成処理にかかるユーザサービスにそれぞれ固有の処理を行うアプリケーションと、前記アプリケーションと前記ハードウェア資源との間に介在し、ユーザサービスを提供する際に、アプリケーションの少なくとも２つが共通的に必要とする前記ハードウェア資源の獲得要求、管理、実行制御並びに画像形成処理を行うコントロールサービスとを備えた画像形成装置上で、前記アプリケーションとして搭載可能な外部アプリケーションを生成するアプリケーション生成方法であって、
前記外部アプリケーションのソースファイルからコンパイルされたオブジェクトファイルと、前記コントロールサービスに処理要求を行うと共にイメージ処理を実行するイメージ処理関数が登録されたイメージライブラリとを結合して前記外部アプリケーションの実行形式ファイルを生成するリンクステップ
を含むことを特徴とするアプリケーション生成方法。
【請求項１４】
前記イメージライブラリは、印刷に関する処理を実行するプリント処理関数が登録されたプリントライブラリを有することを特徴とする請求項１３に記載のアプリケーション生成方法。
【請求項１５】
前記イメージライブラリは、スキャンに関する処理を実行するスキャン処理関数が登録されたスキャンライブラリを有することを特徴とする請求項１３または１４に記載のアプリケーション生成方法。
【請求項１６】
前記イメージライブラリは、ファイル操作に関する処理を実行するファイル操作関数が登録されたファイル操作関連のライブラリを有することを特徴とする請求項１３〜１５のいずれか一つに記載のアプリケーション生成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、コピー、プリンタ、スキャナおよびファクシミリなどの画像形成処理にかかるユーザサービスを提供し、イメージ処理関連の処理を行う関数を登録したイメージライブラリを備えた画像形成装置およびアプリケーション生成方法に関するものである。
【０００２】
【従来の技術】
近年では、プリンタ、コピー、ファクシミリ、スキャナなどの各装置の機能を１つの筐体内に収納した画像形成装置（以下、「複合機」という。）が知られている。この複合機は、１つの筐体内に表示部、印刷部および撮像部などを設けるとともに、プリンタ、コピーおよびファクシミリ装置にそれぞれ対応した３種類のソフトウェアを設け、これらのソフトウェアを切り替えることによって、当該装置をプリンタ、コピー、スキャナまたはファクシミリ装置として動作させるものである。
【０００３】
ところで、このような従来の複合機では、プリンタ、コピー、スキャナおよびファクシミリ装置に対応するソフトウェアをそれぞれ別個に設けているため、各ソフトウェアの開発に多大の時間を要する。このため、出願人は、表示部、印刷部および撮像部などの画像形成処理で使用されるハードウェア資源を有し、プリンタ、コピーまたはファクシミリなどの各ユーザサービスにそれぞれ固有の処理を行うアプリケーションを複数搭載し、これらのアプリケーションとハードウェア資源との間に介在して、ユーザサービスを提供する際に、アプリケーションの少なくとも２つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行う各種コントロールサービスからなるプラットホームを含む画像形成装置（複合機）を発明した。
【０００４】
【発明が解決しようとする課題】
このような新規な複合機は、アプリケーションの少なくとも２つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行うプラットホームを備えた構成とすることによって、ソフトウェア開発の効率化を図るとともに、装置全体としての生産性を向上させることができる点で優れている。
【０００５】
一方、このような新規な複合機では、アプリケーションと、ハードウェア資源にアクセスするような開発が難しい処理を行うコントロールサービスとを別個に設けているため、複合機の出荷後にユーザもしくは第三者であるサードベンダが新規な外部アプリケーションを開発して複合機に搭載可能な構成となっている。
【０００６】
従って、外部アプリケーションを開発する際に、ハードウェア資源ばかりでなく、コントロールサービス群についても全く意識せずに開発できることがソフトウェア開発の効率化の面で好ましい。
【０００７】
この発明は上記に鑑みてなされたもので、外部アプリのソフトウェア開発効率の向上を図ることができる画像形成装置およびアプリケーション生成方法を得ることを目的とする。
【０００８】
【課題を解決するための手段】
上記目的を達成するため、請求項１にかかる発明は、画像形成処理で使用されるハードウェア資源と、画像形成処理にかかるユーザサービスにそれぞれ固有の処理を行うアプリケーションと、前記アプリケーションと前記ハードウェア資源との間に介在し、ユーザサービスを提供する際に、アプリケーションの少なくとも２つが共通的に必要とする前記ハードウェア資源の獲得要求、管理、実行制御並びに画像形成処理を行うコントロールサービスとを備えた画像形成装置であって、前記アプリケーションとして搭載され、イメージ処理を含むユーザサービスを提供する外部アプリと、前記外部アプリに実装され、前記コントロールサービスに処理要求を行うと共にイメージ処理を実行するイメージ処理関数が登録されたイメージライブラリを備えたことを特徴とする。
【０００９】
この請求項１の発明によれば、イメージ処理を含むユーザサービスを提供する外部アプリと、外部アプリに実装されコントロールサービスに処理要求を行うと共にイメージ処理を実行するイメージ処理関数が登録されたイメージライブラリを備えたことで、イメージ処理に必要なハードウェア資源にアクセスするコントロールサービスに対する複雑な処理要求をイメージライブラリ内の関数に委ね、かかる外部アプリ自体の処理として記述する必要がなくなるので、外部アプリのソフトウェア開発労力の軽減を図ることができる。
【００１０】
また、請求項２にかかる発明は、請求項１に記載の画像形成装置において、前記イメージ処理関数は、前記コントロールサービスに対する処理要求を、前記コントロールサービスで提供される関数呼び出しによって行うことを特徴とする。
【００１１】
この請求項２にかかる発明によれば、イメージ処理関数は、前記コントロールサービスに対する処理要求を、前記コントロールサービスで提供される関数呼び出しによって行うことで、イメージ処理に必要なハードウェア資源にアクセスするコントロールサービスに対する関数呼び出しとその戻り値受信というプロセス間通信に関する処理をイメージライブラリ内の関数に委ねることができ、外部アプリのソフトウェア開発労力の軽減を図ることができる。
【００１２】
また、請求項３にかかる発明は、請求項１または２に記載の画像形成装置において、前記イメージ処理関数は、前記コントロールサービスに対しる処理要求を、メッセージ送信によって行うことを特徴とする。
【００１３】
この請求項３にかかる発明によれば、イメージ処理関数は、前記コントロールサービスに対する処理要求を、メッセージ送信によって行うことで、イメージ処理に必要なハードウェア資源にアクセスするコントロールサービスに対するメッセージ送信というプロセス間通信に関する処理をイメージライブラリ内の関数に委ねることができ、外部アプリのソフトウェア開発労力の軽減を図ることができる。
【００１４】
また、請求項４にかかる発明は、請求項１〜３のいずれか一つに記載の画像形成装置において、前記イメージライブラリは、印刷に関する処理を実行するプリント処理関数が登録されたプリントライブラリを有することを特徴とする。
【００１５】
この請求項４にかかる発明によれば、イメージライブラリは、印刷に関する処理を実行するプリント処理関数が登録されたプリントライブラリを有することで、プリント処理に必要なプリンタにアクセスするコントロールサービスに対する複雑な処理要求をプリントライブラリ内の関数に委ね、外部アプリのソフトウェア開発労力の軽減を図ることができる。
【００１６】
また、請求項５にかかる発明は、請求項１〜４のいずれか一つに記載の画像形成装置において、前記イメージライブラリは、スキャンに関する処理を実行するスキャン処理関数が登録されたスキャンライブラリを有することを特徴とする。
【００１７】
この請求項５にかかる発明によれば、イメージライブラリは、スキャンに関する処理を実行するスキャン処理関数が登録されたスキャンライブラリを有することで、スキャン処理に必要なスキャナにアクセスするコントロールサービスに対する複雑な処理要求をスキャンライブラリ内の関数に委ね、外部アプリのソフトウェア開発労力の軽減を図ることができる。
【００１８】
また、請求項６にかかる発明は、請求項１〜５のいずれか一つに記載の画像形成装置において、前記イメージライブラリは、ファイル操作に関する処理を実行するファイル操作関数が登録されたファイル操作関連のライブラリを有することを特徴とする。
【００１９】
この請求項６にかかる発明によれば、イメージライブラリは、ファイル操作に関する処理を実行するファイル操作関数が登録されたファイル操作関連のライブラリを有することで、ファイル操作に必要なハードウェア資源にアクセスするコントロールサービスに対する複雑な処理要求をファイル操作ライブラリ内の関数に委ね、外部アプリのソフトウェア開発労力の軽減を図ることができる。
【００２０】
また、請求項７にかかる発明は、画像形成処理で使用されるハードウェア資源と、画像形成処理にかかるユーザサービスにそれぞれ固有の処理を行うアプリケーションと、前記アプリケーションと前記ハードウェア資源との間に介在し、ユーザサービスを提供する際に、アプリケーションの少なくとも２つが共通的に必要とする前記ハードウェア資源の獲得要求、管理、実行制御並びに画像形成処理を行うコントロールサービスとを備えた画像形成装置であって、前記アプリケーションとして搭載され、スキャナサービスに固有の処理を行うスキャナアプリと、前記アプリケーションとして搭載され、イメージ処理を含むユーザサービスを提供し、スキャナサービスを提供する際に、前記スキャナアプリに対し、スキャンに関する処理要求を行う外部アプリと、を備えたことを特徴とする。
【００２１】
この請求項７にかかる発明によれば、前記アプリケーションとして搭載され、スキャナサービスに固有の処理を行うスキャナアプリと、前記アプリケーションとして搭載され、イメージ処理を含むユーザサービスを提供し、スキャナサービスを提供する際に、前記スキャナアプリに対し、スキャンに関する処理要求を行う外部アプリとを備えたことで、スキャン処理に必要なスキャナなどのハードウェア資源にアクセスするコントロールサービスに対する複雑な処理要求をスキャナアプリに委ね、かかる外部アプリ自体の処理として記述する必要がなくなるので、外部アプリのソフトウェア開発労力の軽減を図ることができる。
【００２２】
また、請求項８にかかる発明は、請求項７に記載の画像形成装置において、前記外部アプリは、前記スキャナアプリに対しスキャンに関する処理要求を、メッセージ送信により行うことを特徴とする。
【００２３】
この請求項８にかかる発明によれば、外部アプリは、前記スキャナアプリに対しスキャンに関する処理要求を、メッセージ送信により行うことで、スキャン処理に必要なスキャナなどのハードウェア資源にアクセスするコントロールサービスに対するメッセージ送信というプロセス間通信に関する処理をスキャナアプリに委ねることができ、外部アプリのソフトウェア開発労力の軽減を図ることができる。
【００２４】
また、請求項９にかかる発明は、請求項７または８に記載の画像形成装置において、前記外部アプリは、前記スキャナアプリに対しスキャンに関する処理要求を、前記スキャナアプリによって提供される関数呼び出しにより行うことを特徴とする。
【００２５】
この請求項９にかかる発明によれば、外部アプリは、前記スキャナアプリに対しスキャンに関する処理要求を、前記スキャナアプリによって提供される関数呼び出しにより行うことで、スキャン処理に必要なスキャナなどのハードウェア資源にアクセスするコントロールサービスに対する関数呼び出しとその戻り値受信というプロセス間通信に関する処理をイメージライブラリ内の関数に委ねることができ、外部アプリのソフトウェア開発労力の軽減を図ることができる。
【００２６】
また、請求項１０にかかる発明は、請求項７〜９のいずれか一つに記載の画像形成装置において、前記アプリケーションとして搭載され、プリントサービスに固有の処理を行うプリンタアプリと、前記アプリケーションとして搭載され、イメージ処理を含むユーザサービスを提供し、プリントサービスを提供する際に、前記プリンタアプリに対し、印刷に関する処理要求を行う外部アプリと、を備えたことを特徴とする。
【００２７】
この請求項１０にかかる発明によれば、前記アプリケーションとして搭載され、プリントサービスに固有の処理を行うプリンタアプリと、前記アプリケーションとして搭載され、イメージ処理を含むユーザサービスを提供し、プリントサービスを提供する際に、前記プリンタアプリに対し、印刷に関する処理要求を行う外部アプリとを備えたことで、プリント処理に必要なプリンタなどのハードウェア資源にアクセスするコントロールサービスに対する複雑な処理要求をプリンタアプリに委ね、かかる外部アプリ自体の処理として記述する必要がなくなるので、外部アプリのソフトウェア開発労力の軽減を図ることができる。
【００２８】
また、請求項１１にかかる発明は、請求項１０に記載の画像形成装置において、前記外部アプリは、前記プリンタアプリに対し印刷に関する処理要求を、メッセージ送信により行うことを特徴とする。
【００２９】
この請求項１１にかかる発明によれば、外部アプリは、前記プリンタアプリに対し印刷に関する処理要求を、メッセージ送信により行うことで、プリント処理に必要なプリンタなどのハードウェア資源にアクセスするコントロールサービスに対するメッセージ送信というプロセス間通信に関する処理をプリンタアプリに委ねることができ、外部アプリのソフトウェア開発労力の軽減を図ることができる。
【００３０】
また、請求項１２にかかる発明は、請求項１０または１１に記載の画像形成装置において、前記外部アプリは、前記プリンタアプリに対し印刷に関する処理要求を、前記プリンタアプリによって提供される関数呼び出しにより行うことを特徴とする。
【００３１】
この請求項１２にかかる発明によれば、外部アプリは、前記プリンタアプリに対し印刷に関する処理要求を、前記プリンタアプリによって提供される関数呼び出しにより行うことで、プリント処理に必要なプリンタなどのハードウェア資源にアクセスするコントロールサービスに対する関数呼び出しとその戻り値受信というプロセス間通信に関する処理をイメージライブラリ内の関数に委ねることができ、外部アプリのソフトウェア開発労力の軽減を図ることができる。
【００３２】
また、請求項１３にかかる発明は、画像形成処理で使用されるハードウェア資源と、画像形成処理にかかるユーザサービスにそれぞれ固有の処理を行うアプリケーションと、前記アプリケーションと前記ハードウェア資源との間に介在し、ユーザサービスを提供する際に、アプリケーションの少なくとも２つが共通的に必要とする前記ハードウェア資源の獲得要求、管理、実行制御並びに画像形成処理を行うコントロールサービスとを備えた画像形成装置上で、前記アプリケーションとして搭載可能な外部アプリケーションを生成するアプリケーション生成方法であって、前記外部アプリケーションのソースファイルからコンパイルされたオブジェクトファイルと、前記コントロールサービスに処理要求を行うと共にイメージ処理を実行するイメージ処理関数が登録されたイメージライブラリとを結合して前記外部アプリケーションの実行形式ファイルを生成するリンクステップを含むことを特徴とする。
【００３３】
この請求項１３にかかる発明によれば、リンクステップによって、前記外部アプリケーションのソースファイルからコンパイルされたオブジェクトファイルと、前記コントロールサービスに処理要求を行うと共にイメージ処理を実行するイメージ処理関数が登録されたイメージライブラリとを結合して前記外部アプリケーションの実行形式ファイルを生成することで、イメージ処理に必要なハードウェア資源にアクセスするコントロールサービスに対する複雑な処理要求をイメージライブラリ内の関数に委ね、かかる外部アプリ自体の処理として記述する必要がなくなるので、外部アプリのソフトウェア開発労力の軽減を図ることができる。
【００３４】
また、請求項１４にかかる発明は、請求項１３に記載のアプリケーション生成方法において、前記イメージライブラリは、印刷に関する処理を実行するプリント処理関数が登録されたプリントライブラリを有することを特徴とする。
【００３５】
この請求項１４にかかる発明によれぱ、イメージライブラリは、印刷に関する処理を実行するプリント処理関数が登録されたプリントライブラリを有することで、プリント処理に必要なプリンタにアクセスするコントロールサービスに対する複雑な処理要求をプリントライブラリ内の関数に委ね、外部アプリのソフトウェア開発労力の軽減を図ることができる。
【００３６】
また、請求項１５にかかる発明は、請求項１３または１４に記載のアプリケーション生成方法において、前記イメージライブラリは、スキャンに関する処理を実行するスキャン処理関数が登録されたスキャンライブラリを有することを特徴とする。
【００３７】
この請求項１５にかかる発明によれば、イメージライブラリは、スキャンに関する処理を実行するスキャン処理関数が登録されたスキャンライブラリを有することで、スキャン処理に必要なスキャナにアクセスするコントロールサービスに対する複雑な処理要求をスキャンライブラリ内の関数に委ね、外部アプリのソフトウェア開発労力の軽減を図ることができる。
【００３８】
また、請求項１６にかかる発明は、請求項１３〜１５のいずれか一つに記載のアプリケーション生成方法において、前記イメージライブラリは、ファイル操作に関する処理を実行するファイル操作関数が登録されたファイル操作関連のライブラリを有することを特徴とする。
【００３９】
この請求項１６にかかる発明によれば、イメージライブラリは、ファイル操作に関する処理を実行するファイル操作関数が登録されたファイル操作関連のライブラリを有することで、ファイル操作に必要なハードウェア資源にアクセスするコントロールサービスに対する複雑な処理要求をファイル操作ライブラリ内の関数に委ね、外部アプリのソフトウェア開発労力の軽減を図ることができる。
【００４０】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかる画像形成装置およびアプリケーション生成方法の好適な実施の形態を詳細に説明する。
【００４１】
（実施の形態１）
図１は、この発明の実施の形態１である画像形成装置（以下、「複合機」という。）の主要構成を示すブロック図である。実施の形態１にかかる複合機１００は、イメージライブラリを使用してスキャン、プリントなどの画像形成処理にかかかるユーザサービスを提供する外部アプリを搭載したものである。本実施の形態の複合機１００では、外部アプリとして、スキャナで読みとった画像データに文字認識処理を施すＯＣＲアプリを例として説明するが、これに限定されるものではない。
【００４２】
本実施の形態の複合機１００には、ＯＣＲアプリ１１７が搭載されている。このＯＣＲアプリ１１７は、スキャナによって原稿をスキャンし、スキャンした画像に対して文字認識処理を施し、文字認識処理を施すことによって生成される認識データ（例えば、テキストデータなど）を印刷する機能を有している。図１に示すように、ＯＣＲアプリ１１７は、イメージライブラリ１５０を備えている。より具体的には、ＯＣＲアプリ１１７は、イメージライブラリ１５０をリンクして実装している。ここで、イメージライブラリ１５０のリンクは、静的リンク、動的リンクのいずれでも良い。
【００４３】
イメージライブラリ１１７は、スキャン、プリント、ファイル操作に関する処理を行う関数を登録した関数ライブラリである。イメージライブラリ１５０には、スキャンライブラリ１５１と、プリントライブラリ１５２と、ファイル変換ライブラリ１５３と、ファイル検索ライブラリ１５４とファイル削除ライブラリ１５５と、ファイル情報変更ライブラリ１５６と、ファイル情報取得ライブラリ１５７が含まれている。ここで、ファイル変換ライブラリ１５３と、ファイル検索ライブラリ１５４とファイル削除ライブラリ１５５と、ファイル情報変更ライブラリ１５６と、ファイル情報取得ライブラリ１５７は、本発明におけるファイル操作ライブラリを構成する。
【００４４】
これら各ライブラリに登録されている関数では、その処理の中で、後述するコントロールサービス層１４０のＥＣＳ１２４、ＭＣＳ１２５などに関数呼び出しやメッセージ送受信などのプロセス間通信を行うことにより、各コントロールサービスに対するサービス要求を行うとともにコントロールサービスからのサービスの提供を受けるようになっている。
【００４５】
スキャンライブラリ１５１には、スキャナに関する処理、すなわち、原稿データの読み取りを行い、その結果をＲＡＷファイルとして生成したり、ＡＤＦ（Ａｕｔｏ　Ｄｏｃｕｍｅｎｔ　Ｆｅｅｄｅｒ）や圧板などの原稿の給紙方法、圧縮方式、ヘッダ情報等の制御を行うための関数が登録されている。具体的には、以下の関数および通知メッセージが登録されている。
【００４６】
ＳＣＡＮ＿ＳＴＡＲＴ　スキャン処理起動要求
ＳＣＡＮ＿ＰＳＥＴ　スキャン処理制御パラメータ設定
ＳＣＡＮ＿ＰＥＮＤ　スキャン処理パラメータ設定終了
ＳＣＡＮ＿ＣＯＮＴ　スキャン処理再開要求
ＳＣＡＮ＿ＣＡＮＣＥＬ　一時停止状態でのスキャン処理中止要求
ＳＣＡＮ＿ＳＴＯＰ　スキャン処理実行中の強制中断要求
ＳＣＡＮ＿ＲＥＳＵＬＴ　スキャン処理実行結果通知
Ｒ＿ＳＣＡＮ＿ＥＲＲＯＲ　スキャン処理エラー発生通知
Ｒ＿ＳＣＡＮ＿ＳＵＳＰＥＮＤ　スキャン処理一時停止通知
Ｒ＿ＳＣＡＮ＿ＢＡＣＫ＿ＯＲＧ　スキャン原稿戻し枚数通知
プリントライブラリ１５２には、印刷に関する処理、すなわち、指定されたＲＡＷファイルが印刷可能なイメージフォーマットである場合にそのファイルの印刷を行ったり、ＪＯＢ＿ＭＯＤＥ構造体のパラメータを設定する関数が登録されている。具体的には、以下の関数および通知メッセージが登録されている。
【００４７】
ＰＲＩＮＴ＿ＳＴＡＲＴ　プリント処理起動要求
ＰＲＩＮＴ＿ＰＳＥＴ　プリント処理制御パラメータ設定
ＰＲＩＮＴ＿ＰＥＮＤ　プリント処理パラメータ設定終了
ＰＲＩＮＴ＿ＳＴＯＰ　プリント処理の停止要求
Ｒ＿ＰＲＩＮＴ＿ＲＥＳＵＬＴ　プリント処理実行結果通知
Ｒ＿ＰＲＩＮＴ＿ＥＲＲＯＲ　プリント処理エラー発生通知
Ｒ＿ＰＲＩＮＴ＿ＣＯＮＴ　プリント処理再開要求
Ｒ＿ＰＲＩＮＴ＿ＳＵＳＰＥＮＤ　プリント処理一時停止通知
ファイル変換ライブラリ１５３には、ＲＡＷデータ形式のＲＡＷファイルとＦＦＳファイル（ＢＳＤ　Ｆａｓｔ　Ｆｉｌｅ　Ｓｙｓｔｅｍ）間の変換を行う関数および通知メッセージが登録されている。具体的には、以下の関数および通知メッセージが登録されている。
【００４８】
Ｒ２Ｆ＿ＳＴＡＲＴ　ファイル変換処理（ＲＡＷ→ＦＦＳ）起動要求
Ｒ２Ｆ＿ＰＳＥＴ　ファイル変換処理（ＲＡＷ→ＦＦＳ）パラメータ設定
Ｒ２Ｆ＿ＰＥＮＤ　ファイル変換処理（ＲＡＷ→ＦＦＳ）パラメータ設定終了
Ｒ２Ｆ＿ＥＸＥＣ　ファイル変換処理（ＲＡＷ→ＦＦＳ）実行要求
Ｒ２Ｆ＿ＳＫＩＰ　指定ページのファイル変換処理（ＲＡＷ→ＦＦＳ）スキップ要求
Ｒ２Ｆ＿ＳＴＯＰ　ファイル変換処理（ＲＡＷ→ＦＦＳ）の停止要求
Ｒ＿Ｒ２Ｆ＿ＲＥＳＵＬＴ　ファイル変換処理（ＲＡＷ→ＦＦＳ）実行結果通知
Ｒ＿Ｒ２Ｆ＿ＥＲＲＯＲ　ファイル変換処理（ＲＡＷ→ＦＦＳ）エラー発生通知
Ｒ＿Ｒ２Ｆ＿ＰＡＧＥ＿ＮＯ　ファイル変換処理（ＲＡＷ→ＦＦＳ）ページ番号通知
Ｆ２Ｒ＿ＳＴＡＲＴ　ファイル変換処理（ＦＦＳ→ＲＡＷ）起動要求
Ｆ２Ｒ＿ＰＳＥＴ　ファイル変換処理（ＦＦＳ→ＲＡＷ）パラメータ設定
Ｆ２Ｒ＿ＰＥＮＤ　ファイル変換処理（ＦＦＳ→ＲＡＷ）パラメータ設定終了
Ｆ２Ｒ＿ＥＸＥＣ　ファイル変換処理（ＦＦＳ→ＲＡＷ）実行要求
Ｆ２Ｒ＿ＳＫＩＰ　指定ページのファイル変換処理（ＦＦＳ→ＲＡＷ）スキップ要求
Ｆ２Ｒ＿ＳＴＯＰ　ファイル変換処理（ＦＦＳ→ＲＡＷ）の停止要求
Ｒ＿Ｆ２Ｒ＿ＲＥＳＵＬＴ　ファイル変換処理（ＦＦＳ→ＲＡＷ）実行結果通知
Ｒ＿Ｆ２Ｒ＿ＥＲＲＯＲ　ファイル変換処理（ＦＦＳ→ＲＡＷ）エラー発生通知
Ｒ＿Ｆ２Ｒ＿ＰＡＧＥ＿ＮＯ　ファイル変換処理（ＦＦＳ→ＲＡＷ）ページ番号通知
ファイル検索ライブラリ１５４には、指定された条件に従いファイルの検索および検索結果のソートを行う関数および通知メッセージが登録されている。具体的には、以下の関数および通知メッセージが登録されている。
【００４９】
ＳＥＡＲＣＨ＿ＳＴＡＲＴ　ファイル検索起動要求
ＳＥＡＲＣＨ＿ＰＳＥＴ　ファイル検索条件設定
ＳＥＡＲＣＨ＿ＰＥＮＤ　ファイル検索条件設定終了
Ｒ＿ＳＥＡＲＣＨ＿ＲＥＳＵＬＴ　ファイル検索処理結果通知
Ｒ＿ＳＥＡＲＣＨ＿ＥＲＲＯＲ　ファイル検索処理エラー発生通知
ファイル削除ライブラリ１５５には、指定されたＲＡＷファイルを削除する関数および通知メッセージが登録されている。
【００５０】
ＤＥＬ＿ＦＩＬＥ＿ＳＴＡＲＴ　ファイル削除処理起動
Ｒ＿ＤＥＬ＿ＦＩＬＥ＿ＲＥＳＵＬＴ　ファイル削除処理結果通知
ファイル情報変更ライブラリ１５６には、以下に示すような、ＲＡＷファイルの各種情報（パスワード、ファイル名、削除時間、ユーザコードなど）を変更する関数および通知メッセージが登録されている。
【００５１】
ＭＯＤ＿ＦＩＬＥ＿ＩＮＦＯ＿ＳＴＡＲＴ　ファイル情報変更処理起動
Ｒ＿ＭＯＤ＿ＦＩＬＥ＿ＩＮＦＯ＿ＲＥＳＵＬＴ　ファイル情報変更処理結果通知
Ｒ＿ＭＯＤ＿ＦＩＬＥ＿ＩＮＦＯ＿ＥＲＲＯＲ　ファイル情報変更処理エラー発生通知
ファイル情報取得ライブラリ１５７には、以下に示すような、ＲＡＷファイルの各種情報（パスワード、ファイル名、削除時間、ユーザコードなど）を取得する関数および通知メッセージが登録されている。
【００５２】
ＧＥＴ＿ＦＩＬＥ＿ＩＮＦＯ＿ＳＴＡＲＴ　ファイル情報取得処理起動
Ｒ＿ＧＥＴ＿ＦＩＬＥ＿ＩＮＦＯ＿ＲＥＳＵＬＴ　ファイル情報取得処理結果通知
Ｒ＿ＧＥＴ＿ＦＩＬＥ＿ＩＮＦＯ＿ＥＲＲＯＲ　ファイル情報取得処理エラー発生通知
上記イメージライブラリ１５０に登録されている各関数は、その処理の中で、ＥＣＳ１２４やＭＣＳ１２５などのコントロールサービスにより提供される関数の呼び出しおよびメッセージの送受信によって、コントロールサービスによるサービスの提供を受けることが可能である。例えば、ＥＣＳ１２４に対しては、ジョブ生成要求関数、ジョブスタート関数、ジョブ終了関数などの関数呼び出しやジョブスタート要求メッセージ、ジョブ終了要求メッセージの送信などを行っている。また、ＭＣＳ１２５に対しては、画像メモリ確保要求関数、画像メモリ開放要求関数などの関数呼び出しや、領域確保要求メッセージ、領域削除要求メッセージの送信などを行っている。
【００５３】
従って、イメージライブラリ１５０を実装したＯＣＲアプリ１１７のメインスレッド３１０の処理では、直接コントロールサービスに対するアクセス（関数呼び出し、メッセージ送信）などの処理を記述する必要がなくなり、アプリケーション開発の労力の軽減が図られる。
【００５４】
また、イメージライブラリ１５０は、複合機のアプリケーション開発のためのソフトウェア開発キット（ＳＤＫ：Ｓｏｆｔｗａｒｅ　ＤｅｖｅｌｏｐｍｅｎｔＫｉｔ）などの開発用ツールキットの一部または全部として、ＣＤ−ＲＯＭまたはＦＤなどの記憶媒体にインストール可能な形式のファイルで提供される。また、イメージライブラリ１５０を、Ｗｅｂサイト等からのダウンロード等、ネットワーク経由で取得可能な方法で提供するようにしても良い。
【００５５】
このように提供された上記イメージライブラリ１５０を用いてＯＣＲアプリ１１７のような外部アプリ（複合機１００の出荷後に第三者によって開発されて搭載されるアプリ）を生成するには、外部アプリのソースファイルをコンパイラによってコンパイルしてオブジェクトファイルを生成する。そして、リンカによって、生成されたオブジェクトファイルと、上記の方法で提供されたイメージライブラリ１５０とをリンクして、外部アプリの実行形式ファイルを生成する。この外部アプリの実行形式ファイルをフラッシュカードなどに格納して、複合機１００において、フラッシュカードから外部アプリをインストールすることにより、イメージライブラリ１５０を実装した外部アプリが複合機に搭載される。
【００５６】
さらに、本実施の形態では、イメージライブラリ１５０はＯＣＲアプリ１１７などの外部アプリにリンクされているが、さらにプリンタアプリ１１１、コピーアプリ１１１など複合機１００の出荷時に予め搭載されている基本アプリにリンクされて実装するように構成しても良い。
【００５７】
次に、本実施の形態にかかる複合機１００の全体の機能的構成について説明する。図２は、実施の形態１の複合機１００の全体構成を示すブロック図である。図２に示すように、複合機１００は、白黒レーザプリンタ（Ｂ＆Ｗ　ＬＰ）１０１と、カラーレーザプリンタ（Ｃｏｌｏｒ　ＬＰ）１０２と、スキャナエンジン１０３と、ファクシミリ、メモリなどのハードウェアリソース１０４を有するとともに、プラットホーム１２０と、アプリケーション１３０とから構成されるソフトウェア群１１０とを備えている。
【００５８】
プラットホーム１２０は、アプリケーションからの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービスと、一または複数のハードウェア資源の管理を行い、コントロールサービスからの獲得要求を調停するシステムリソースマネージャ（ＳＲＭ）１２３と、汎用ＯＳ１２１とを有する。
【００５９】
コントロールサービスは、複数のサービスモジュールから形成され、ＳＣＳ（システムコントロールサービス）１２２と、ＥＣＳ（エンジンコントロールサービス）１２４と、ＭＣＳ（メモリコントロールサービス）１２５と、ＯＣＳ（オペレーションパネルコントロールサービス）１２６と、ＦＣＳ（ファックスコントロールサービス）１２７と、ＮＣＳ（ネットワークコントロールサービス）１２８とから構成される。このプラットホーム１２０は、あらかじめ定義された関数により前記アプリケーション１３０から処理要求を受信可能とするアプリケーションプログラムインタフェース（ＡＰＩ）を有する。
【００６０】
汎用ＯＳ１２１は、ＵＮＩＸ（登録商標）などの汎用オペレーティングシステムであり、プラットホーム１２０並びにアプリケーション１３０の各ソフトウェアをそれぞれプロセスとして並列実行する。
【００６１】
ＳＲＭＬ２３のプロセスは、ＳＣＳ１２２とともにシステムの制御およびリソースの管理を行うものである。ＳＲＭ１２３のプロセスは、スキャナ部やプリンタ部などのエンジン、メモリ、ＨＤＤファイル、ホストＩ／Ｏ（セントロＩ／Ｆ、ネットワークＩ／Ｆ（ネットワークコントローラ１０３）、ＩＥＥＥ１３９４Ｉ／Ｆ、ＲＳ２３２Ｃ　Ｉ／Ｆなど）のハードウェア資源を利用する上位層からの要求にしたがって調停を行い、実行制御する。
【００６２】
具体的には、このＳＲＭ１２３は、要求されたハードウェア資源が利用可能であるか（他の要求により利用されていないかどうか）を判断し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に伝える。また、ＳＲＭ１２３は、上位層からの要求に対してハードウェア資源の利用スケジューリングを行い、要求内容（例えば、プリンタエンジンにより紙搬送と作像動作、メモリ確保、ファイル生成など）を直接実施している。
【００６３】
ＳＣＳ１２２のプロセスは、アプリ管理、操作部制御、システム画面表示、ＬＥＤ表示、リソース管理、割り込みアプリ制御などを行う。
【００６４】
ＥＣＳ１２４のプロセスは、白黒レーザプリンタ（Ｂ＆Ｗ　ＬＰ）１０１、カラーレーザプリンタ（Ｃｏｌｏｒ　ＬＰ）１０２、スキャナ、ファクシミリなどからなるハードウェアリソース１０４のエンジンの制御を行う。
【００６５】
ＭＣＳ１２５のプロセスは、画像メモリの取得および解放、ハードディスク装置（ＨＤＤ）の利用、画像データの圧縮および伸張などを行う。
【００６６】
ＦＣＳ１２７のプロセスは、システムコントローラの各アプリ層からＰＳＴＮ／ＩＳＤＮ網を利用したファクシミリ送受信、ＢＫＭ（バックアップＳＲＡＭ）で管理されている各種ファクシミリデータの登録／引用、ファクシミリ読みとり、ファクシミリ受信印刷、融合送受信を行うためのＡＰＩを提供する。
【００６７】
ＮＣＳ１２８のプロセスは、ネットワークＩ／Ｏを必要とするアプリケーションに対して共通に利用できるサービスを提供するためのプロセスであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介を行う。
【００６８】
ＯＣＳ１２６のプロセスは、オペレータ（ユーザ）と本体制御間の情報伝達手段となるオペレーションパネル（操作パネル）の制御を行う。ＯＣＳ１２６は、オペレーションパネルからキー押下（またはタッチ操作）をキーイベントとして取得し、取得したキーに対応したキーイベント関数をＳＣＳ１２２に送信するＯＣＳプロセスである。また、オペレーションパネルの操作表示部に対する各種画面を描画出力やその他オペレーションパネルに対する制御は、ＯＣＳ関数ライブラリに登録されている描画関数等の各種関数をアプリケーション１３０またはコントロールサービスから呼び出すことにより行われる。このＯＣＳ関数ライブラリは、アプリケーション１３０およびコントロールサービスの各モジュールに動的にリンクされている。なお、ＯＣＳ１２６のすべてをプロセスとして動作させるように構成しても良く、あるいはＯＣＳ１２６のすべてをＯＣＳ関数ライブラリとして構成しても良い。
【００６９】
アプリケーション１３０は、ページ記述言語（ＰＤＬ）、ＰＣＬおよびポストスクリプト（ＰＳ）を有するプリンタ用のアプリケーションであるプリンタアプリ１１１と、コピー用アプリケーションであるコピーアプリ１１２と、ファクシミリ用アプリケーションであるファックスアプリ１１３と、スキャナ用アプリケーションであるスキャナアプリ１１４と、ネットワークファイル用アプリケーションであるネットファイルアプリ１１５と、工程検査用アプリケーションである工程検査アプリ１１６と、上述した外部アプリとしてのＯＣＲアプリ１１７とを有している。
【００７０】
アプリケーション１３０の各プロセス、コントロールサービスの各プロセスは、関数呼び出しとその戻り値送信およびメッセージの送受信によってプロセス間通信を行いながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを実現している。
【００７１】
このように、実施の形態１にかかる複合機１００には、複数のアプリケーション１３０および複数のコントロールサービスが存在し、いずれもプロセスとして動作している。そして、これらの各プロセス内部には、一または複数のスレッドが生成されて、スレッド単位の並列実行が行われる。そして、コントロールサービスがアプリケーション１３０に対し共通サービスを提供しており、このため、これらの多数のプロセスが並列動作、およびスレッドの並列動作を行って互いにプロセス間通信を行って協調動作をしながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを提供するようになっている。
【００７２】
また、複合機１００には、複合機１００の顧客、サードベンダなどの第三者がコントロールサービス層の上のアプリケーション層に外部アプリを開発して搭載することが可能となっている。ＯＣＲアプリ１１７は、このような外部アプリとして開発されたものである。
【００７３】
なお、実施の形態１にかかる複合機１００では、複数のアプリケーション１３０のプロセスと複数のコントロールサービスのプロセスとが動作しているが、アプリケーション１３０とコントロールサービスのプロセスがそれぞれ単一の構成とすることも可能である。また、各アプリケーション１３０は、アプリケーションごとに追加または削除することができる。
【００７４】
次に、イメージライブラリ１５０を実装したＯＣＲアプリ１１７が実行されている場合のＯＣＲアプリプロセス内部の構造について説明する。図３は、ＯＣＲアプリ１１７のプロセス内部の構造を示す説明図である。
【００７５】
ＯＣＲアプリプロセス１１７は、複数のスレッドが並列実行されたマルチスレッド環境となっている。図３に示すように、ＯＣＲアプリ１１７のプロセスには、メインスレッド３１０とイメージライブラリスレッド３００が並列実行されてる。メインスレッド３１０は、文字認識処理を実行するスレッドであり、このメインスレッド３１０がイメージライブラリ１５０を利用する。
【００７６】
イメージライブラリスレッド３００は、イメージライブラリ１５０の各機能（関数）を提供するものであり、メインスレッド３１０によって起動される。このとき、イメージライブラリスレッド３００の内部には、イメージライブラリ１５０の中の各ライブラリに対応する複数のサブスレッドが起動される。すなわち、スキャンスレッド３０１、プリントスレッド３０２、ファイル変換スレッド３０３、ファイル検索スレッド３０４、ファイル削除スレッド３０５、ファイル情報変更スレッド３０６、ファイル情報取得スレッド３０７が、それぞれスキャンライブラリ１５１、プリントライブラリ１５２、ファイル変換ライブラリ１５３、ファイル検索ライブラリ１５４、ファイル削除ライブラリ１５５、ファイル情報変更ライブラリ１５６、ファイル情報取得ライブラリ１５７の機能を提供するサブスレッドとなっている。
【００７７】
また、ＯＣＲアプリ１１７のプロセスには、メールボックス３１１、メールボックス３１２、イベント取得ハンドラ（スレッド）３１３が存在している。
【００７８】
メールボックス３１１は、メインスレッド３１０とイメージライブラリスレッド３００およびイベント取得ハンドラ３１３との通信に使用される。メールボックス３１２は、メインスレッド３１０とイメージライブラリスレッド３００の通信に使用される。イベント取得ハンドラ３１３は、ＥＣＳ１２４，ＭＣＳ１２５などのコントロールサービスのプロセスからのイベントメッセージを受信し、メールボックス３１１に書き込むものである。
【００７９】
メインスレッド３１０がイメージライブラリ１５０の各機能を利用するためには、メインスレッド３１０がメールボックス３１１，３１２を開設した後、イメージライブラリスレッドを起動する。
【００８０】
メインスレッド３１０は、イメージライブラリスレッド３００に対する関数呼び出しのコマンドを、送信元情報がＭＢ＿ＲＥＱＵＥＳＴとしてメールボックス３１１に入れる。また、コントロールサービス１４０からのイベントメッセージも、送信元情報ＭＢ＿ＣＳのメールとしてメールボックス３１１に入るようになっている。
【００８１】
イメージライブラリスレッド３００は、メールボックス３１１に配信されるメールをｒｃｖ＿ｍｓｇ（）関数によって取得する。イメージライブラリスレッド３００は、取得したメールに含まれる送信元情報とイベントまたは関数情報から、対応する関数の検索を行い、対応する関数が検索された場合にその関数を実行する。一方、対応する関数が検索されなかった場合には何も処理は行わない。
【００８２】
取得したメールは対応する関数の実行に関係なく、メールボックス３１２に転送される。また、イメージライブラリスレッド３００は、メインスレッドに大して、エラー情報、実行結果、途中経過などの通知を送信元情報ＭＢ＿ＩＭＡＧＥのメールとして、メールボックス３１２に入れる。
【００８３】
メインスレッド３１０は、メールボックス３１２に配信されるメールをｒｃｖ＿ｍｓｇ（）関数によって取得する。そして、メインスレッド３１０は、メールの内容に対応した処理を実行した後、そのメールを破棄する。すなわと、すべてのメールの破棄（メモリの開放）は、メインスレッド３１０が一括して行うことになる。
【００８４】
次に、ＯＣＲアプリ１１７によるスキャン処理時のイメージライブラリ１５０を利用した処理の流れについて説明する。図４は、ＯＣＲアプリ１１７によるスキャン処理時の流れを示す説明図である。
【００８５】
まず、ＯＣＲアプリ１１７のメインスレッド３１０では、ＪＯＢ＿ＭＯＤＥオブジェクトを生成し（ステップＳ４０１）、ＪＯＢ＿ＭＯＤＥオブジェクトアドレスを指定してスキャンライブラリ１５１のスキャン処理起動要求ＳＣＡＮ＿ＳＴＡＲＴ関数を呼び出す（ステップＳ４０２）。かかる処理は、具体的には、メインスレッド３１０がｓｅｎｄ＿ｍｓｇによってメールボックス３１１にＳＣＡＮ＿ＳＴＡＲＴを送信し、メールボックス３１１に格納されたＳＣＡＮ＿ＳＴＡＲＴをスキャンスレッド３０１がｒｃｖ＿ｍｓｇ（）によって受信する。イメージライブラリスレッド３００に対する関数呼び出しは、かかる処理と同様に行われるため、以下、関数呼び出しの際のメールボックス３１１を使用した具体的な処理については説明を省略する。
【００８６】
次に、メインスレッド３１０は、生成するＲＡＷファイル情報を設定して、スキャン処理パラメータ設定ＳＣＡＮ＿ＰＳＥＴの関数呼び出しを行う（ステップＳ４０３）。そして、メインスレッド３１０は、ＪＯＢ＿ＭＯＤＥオブジェクトのパラメータ設定処理を行う（ステップＳ４０４）。そして、ＪＯＢ＿ＭＯＤＥメンバ変数コードを指定して、スキャン処理パラメータ設定ＳＣＡＮ＿ＰＳＥＴの関数呼び出しを行う（ステップＳ４０５）。ステップＳ４０３、Ｓ４０４およびＳ４０５の処理は、設定したＪＯＢ＿ＭＯＤＥオブジェクトパラメータの個数分繰り返して行う。そして、最終のＪＯＢ＿ＭＯＤＥオブジェクトパラメータについてステップＳ４０３、Ｓ４０４およびＳ４０５の処理が終了したら、スキャン処理パラメータ設定終了ＳＣＡＮ＿ＰＥＮＤ関数を呼び出す（ステップＳ４０６）。
【００８７】
スキャンスレッド３０１は、ＳＣＡＮ＿ＰＥＮＤ関数の呼び出しを受けると、スキャン処理を開始する（ステップＳ４０７）。一ページ分のスキャン処理が終了したら。スキャンスレッド３０１は、メインスレッド３１０に対して、一時停止Ｒ＿ＳＣＡＮ＿ＳＵＳＰＥＮＤを送信する（ステップＳ４０８）。かかる処理は、具体的には、スキャンスレッド３０１がｓｅｎｄ＿ｍｓｇによってメールボックス３１２にＲ＿ＳＣＡＮ＿ＳＵＳＰＥＮＤを送信し、メールボックス３１２に格納されたＲ＿ＳＣＡＮ＿ＳＵＳＰＥＮＤをメインスレッド３１０がｒｃｖ＿ｍｓｇ（）によって受信する。メインスレッド３１０に対するメッセージ送信は、かかる処理と同様に行われるため、以下、メッセージ送信の際のメールボックス３１２を使用した具体的な処理については説明を省略する。
【００８８】
Ｒ＿ＳＣＡＮ＿ＳＵＳＰＥＮＤメッセージを受信したメインスレッド３１０は、スキャン対象の原稿が最終原稿か否かを判断する（ステップＳ４０９）。そして、最終原稿でない場合には、スキャン処理再開ＳＣＡＮ＿ＣＯＮＴ関数を呼び出す（ステップＳ４１０）。そして、かかるステップＳ４０８〜Ｓ４１０の処理を、原稿の枚数分だけ繰り返す。
【００８９】
一方、ステップＳ４０９において、最終原稿である場合には、スキャンスレッド３０１はスキャン処理を終了し（ステップＳ４１１）、スキャン処理実行結果Ｒ＿ＳＣＡＮ＿ＲＥＳＵＬＴをメインスレッド３１０に送信する（ステップＳ４１２）。これにより、ＯＣＲアプリ１１７のスキャン処理は完了する。
【００９０】
次に、ＯＣＲアプリ１１７によるプリント処理時のイメージライブラリ１５０を利用した処理の流れについて説明する。図５は、ＯＣＲアプリ１１７によるスキャン処理時の流れを示す説明図である。
【００９１】
まず、ＯＣＲアプリ１１７のメインスレッド３１０では、ＪＯＢ＿ＭＯＤＥオブジェクトを生成し（ステップＳ５０１）、ＪＯＢ＿ＭＯＤＥオブジェクトアドレスを指定してプリントライブラリ１５２のプリント処理起動要求ＰＲＩＮＴ＿ＳＴＡＲＴ関数を呼び出す（ステップＳ５０２）。
【００９２】
次に、メインスレッド３１０は、印刷ＲＡＷファイル情報を設定して、プリント処理パラメータ設定ＰＲＩＮＴ＿ＰＳＥＴの関数呼び出しを行う（ステップＳ５０３）。そして、メインスレッド３１０は、ＪＯＢ＿ＭＯＤＥオブジェクトのパラメータ設定処理を行う（ステップＳ５０４）。そして、ＪＯＢ＿ＭＯＤＥメンバ変数コードを指定して、プリント処理パラメータ設定ＰＲＩＮＴ＿ＰＳＥＴの関数呼び出しを行う（ステップＳ５０５）。ステップＳ５０３、Ｓ５０４およびＳ５０５の処理は、設定したＪＯＢ＿ＭＯＤＥオブジェクトパラメータの個数分繰り返して行う。そして、最終のＪＯＢ＿ＭＯＤＥオブジェクトパラメータについてステップＳ５０３、Ｓ５０４およびＳ５０５の処理が終了したら、プリント処理パラメータ設定終了ＰＲＩＮＴ＿ＰＥＮＤ関数を呼び出す（ステップＳ５０６）。
【００９３】
プリントスレッド３０２は、ＰＲＩＮＴ＿ＰＥＮＤ関数の呼び出しを受けると、プリント処理を開始する（ステップＳ５０７）。そして、プリントスレッド３０２は、プリント処理が終了し（ステップＳ５０８）、プリント処理実行結果Ｒ＿ＰＲＩＮＴ＿ＲＥＳＵＬＴをメインスレッド３１０に送信する（ステップＳ５０９）。これにより、ＯＣＲアプリ１１７のプリント処理は完了する。
【００９４】
次に、ＯＣＲアプリ１１７によるイメージライブラリ１５０を利用したＲＡＷファイルからＦＦＳファイルへのファイル変換処理について説明する。図６は、ＯＣＲアプリ１１７によるＲＡＷファイルからＦＦＳファイルへのファイル変換処理の流れを示す説明図である。
【００９５】
まず、ＯＣＲアプリ１１７のメインスレッド３１０では、ファイル変換ライブラリ１５３のファイル変換処理起動Ｒ２Ｆ＿ＳＴＡＲＴ関数を呼び出す（ステップＳ６０１）。次に、メインスレッド３１０は、変換元ＲＡＷファイル情報を指定して、プリント処理パラメータ設定Ｒ２ＦＴ＿ＰＳＥＴの関数呼び出しを行う（ステップＳ６０２）。さらに、メインスレッド３１０は、新規に生成するＦＦＳファイル情報を指定して、プリント処理パラメータ設定Ｒ２ＦＴ＿ＰＳＥＴの関数呼び出しを行う（ステップＳ６０３）。
【００９６】
次に、ファイル変換スレッド３０３は、設定されたパラメータを参照してファイル変換処理を実行する（ステップＳ６０４）。そして、ファイル変換スレッド３０３は、変換ページ通知Ｒ＿Ｒ２Ｆ＿ＰＡＧＥ＿ＮＯをメインスレッド３１０に送信し、ファイル変換を行うページ番号を通知する（ステップＳ６０５）。
【００９７】
ページ番号を通知されたメインスレッド３１０は、ページ変換を実行するか否かを判断し（ステップＳ６０６）、実行する場合には、ページ変換実行Ｒ２Ｆ＿ＥＸＥＣの関数呼び出しを行い（ステップＳ６０７）、ファイル変換スレッド３０３によってページ変換が実行される（ステップＳ６０８）。
【００９８】
一方、メインスレッド３１０は、ステップ６０６においてページ変換を実行しないと判断した場合、次ページに対する処理を要求（次ページ要求）するか否かを判断する（ステップＳ６０９）。そして、次ページ要求を行う場合には、メインスレッド３１０は、ページスキッ関数呼び出しを受けたファイル変換スレッド２３０３プ（Ｒ２Ｆ＿ＳＫＩＰ）の関数呼び出しを行う（ステップＳ６１０）。そして、ファイル変換スレッド３０３では、ページの更新を行い（ステップＳ６１１）、全ページが終了したか否かを判断する（ステップＳ６１２）。全ページが終了していなければ、ステップＳ６０５からＳ６１１までの処理をページ数分繰り返し行う。一方、全ページが終了した場合には、メインスレッド３１０は、ファイル変換処理終了Ｒ２Ｆ＿ＳＴＯＰの関数呼び出しを行う（ステップＳ６１３）。ファイル変換スレッド３０３は、この関数呼び出しを受けて、ファイル変換処理を終了し（ステップＳ６１４）、ファイル変換処理実行結果Ｒ２Ｆ＿ＲＥＳＵＬＴをメインスレッド３１０に送信する（ステップＳ６１５）。これによｒって、ＲＡＷファイルからＦＦＳファイルへのファイル変換処理は完了する。
【００９９】
このように実施の形態１にかかる複合機では、イメージ処理を含むユーザサービスを提供するＯＣＲアプリ１１７と、ＯＣＲアプリ１１７に実装されコントロールサービスに処理要求を行うと共にイメージ処理を実行するイメージ処理関数が登録されたイメージライブラリ１５０を有しているので、イメージ処理に必要なハードウェア資源にアクセスするコントロールサービスに対する複雑な処理要求をイメージライブラリ１５０内の関数に委ねることができる。このため、ＯＣＲアプリ１１７などの外部アプリのソースコードにかかる複雑な処理を記述する必要がなくなり、ＯＣＲアプリ１１７などの外部アプリのソフトウェア開発労力の軽減を図ることができる。
【０１００】
（実施の形態２）
実施の形態１にかかる複合機１００は、ＯＣＲアプリ１１７は、イメージライブラリ１５０を使用してスキャン、プリントなどのイメージ処理を行っていたが、この実施の形態２にかかる複合機１００は、ＯＣＲアプリ７１７は、スキャン処理に関してはスキャナアプリ１１４に対して処理要求を行い、プリント処理に関してはプリンタアプリ１１１に対して処理要求を行うものである。
【０１０１】
図７は、実施の形態２にかかる複合機１００におけるＯＣＲアプリ７１７のプロセスとプリンタアプリ１１１のプロセスおよびスキャナアプリ１１４のプロセスとコントロールサービスの関係を示すブロック図である。なお、複合機１００の全体の機能的構成は、実施の形態１の複合機１００と同様である。
【０１０２】
図７に示すように、スキャナアプリ１１４のプロセスには、ディスパッチャ７２０と、関数ハンドラ７２１と、メッセージハンドラ７２２と、スキャン処理スレッド７２３が動作している。ここで、スキャナアプリ１１４のプロセスは、マルチスレッド環境となっており、スキャン処理に関するスレッドは他にも複数存在しているが図示を省略する。
【０１０３】
ディスパッチャ７２０は、他のプロセスからの関数呼び出しとメッセージ受信とを監視するものである。関数ハンドラ７２１は、関数呼び出しを受けたときに、ディスパッチャ７２０から呼び出され、スキャン処理スレッド７２３を起動し、スキャン処理スレッド７２３に対して呼び出された関数に応じた処理を要求するものである。メッセージハンドラ７２２は、メッセージ受信があったときに、ディスパッチャ７２０から呼び出され、スキャン処理スレッド７２３を起動し、スキャン処理スレッド７２３に対して受信メッセージに応じた処理を要求するものである。スキャン処理スレッド７２３は、スキャンに関する種々の処理を実行するものであり、実行の際にＥＣＳ１２４やＭＣＳ１２５などのコントロールサービス１４０に関数呼び出し、メッセージ送信などのプロセス間通信を行う。ここで、関数、メッセージはスキャナアプリ１１４に固有のものである。
【０１０４】
図７に示すように、プリンタアプリ１１１のプロセスには、ディスパッチャ７１０と、関数ハンドラ７１１と、メッセージハンドラ７１２と、プリント処理スレッド７１３が動作している。ここで、プリンタアプリ１１１のプロセスも、マルチスレッド環境となっており、プリント処理に関するスレッドは他にも複数存在しているが図示を省略する。
【０１０５】
ディスパッチャ７１０は、他のプロセスからの関数呼び出しとメッセージ受信とを監視するものである。関数ハンドラ７１１は、関数呼び出しを受けたときに、ディスパッチャ７１０から呼び出され、プリント処理スレッド７１３を起動し、プリント処理スレッド７１３に対して呼び出された関数に応じた処理を要求するものである。メッセージハンドラ７１２は、メッセージ受信があったときに、ディスパッチャ７１０から呼び出され、プリント処理スレッド７１３を起動し、プリント処理スレッド７１３に対して受信メッセージに応じた処理を要求するものである。プリント処理スレッド７１３は、プリントに関する種々の処理を実行するものであり、実行の際にＥＣＳ１２４やＭＣＳ１２５などのコントロールサービス１４０に関数呼び出し、メッセージ送信などのプロセス間通信を行う。ここで、関数、メッセージはプリンタアプリ１１１に固有のものである。
【０１０６】
ＯＣＲアプリ７１７のプロセスには、ディスパッチャ７３０と、メッセージハンドラ７３２と、メインスレッド７３３が動作している。メインスレッド７３３は、文字認識に関連する処理を実行するスレッドである。ディスパッチャ７３０は、他のプロセスからのメッセージ受信を監視するものであり、メッセージハンドラ７３２は、メッセージ受信があったときに、ディスパッチャ７３０から呼び出され、メインスレッド７３３を起動し、メインスレッド７３３に対して受信メッセージに応じた処理を要求するものである。
【０１０７】
ＯＣＲアプリ１１７がスキャンに関する処理を行う場合には、メインスレッド７３３によって、スキャナアプリ１１４に対して、予め定められた関数（例えばスキャン処理要求関数）を呼び出すか、または処理要求メッセージ送信を行う。
【０１０８】
ＯＣＲアプリ１１７から処理要求関数呼び出しを受けたスキャナアプリ１１４では、ディスパッチャ７３０によって処理要求関数呼び出しを受信し、関数ハンドラ７２１に受け渡して、スキャン処理スレッド７２３で処理要求関数に応じた処理を実行する。
【０１０９】
ＯＣＲアプリ１１７から処理要求メッセージを受信したスキャナアプリ１１４では、ディスパッチャ７３０によって処理要求メッセージを受信し、メッセージハンドラ７２１に受け渡して、スキャン処理スレッド７２３で処理要求メッセージに応じた処理を実行する。ＯＣＲアプリ１１７からプリンタアプリ１１１にプリントに関する処理を行う場合も同様の手順で行われる。
【０１１０】
このように実施の形態２にかかる複合機１００では、ＯＣＲアプリ１１７がスキャナ処理を行う際にスキャナアプリ１１４に対しスキャンに関する処理要求を行い、プリント処理を行う際にプリンタアプリ１１１に対しプリントに関する処理要求を行っているので、スキャン処理やプリント処理に必要なスキャナ、プリンタなどのハードウェア資源にアクセスするコントロールサービスに対する複雑な処理要求をスキャナアプリ１１４とプリンタアプリ１１１に委ねることができる。このため、ＯＣＲアプリ１１７なその外部アプリのソースファイルにこのような複雑な処理を記述する必要がなくなり、ＯＣＲアプリ１１７などの外部アプリのソフトウェア開発労力の軽減を図ることができる。
【０１１１】
なお、実施の形態１および２の複合機１００では、外部アプリとしてＯＣＲアプリ１１７を使用した例を示したが、イメージ処理を含むものであれば、ＯＣＲアプリ１１７からプリンタアプリ１１７以外のアプリケーションにも本発明を適用することができる。
【０１１２】
【発明の効果】
以上説明したように、請求項１にかかる発明によれば、イメージ処理に必要なハードウェア資源にアクセスするコントロールサービスに対する複雑な処理要求をイメージライブラリ内の関数に委ね、外部アプリのソフトウェア開発労力の軽減を図ることができるという効果を奏する。
【０１１３】
また、請求項２にかかる発明によれば、イメージ処理に必要なハードウェア資源にアクセスするコントロールサービスに対する関数呼び出しとその戻り値受信というプロセス間通信に関する処理をイメージライブラリ内の関数に委ねることができ、外部アプリのソフトウェア開発労力の軽減を図ることができるという効果を奏する。
【０１１４】
また、請求項３にかかる発明によれば、イメージ処理に必要なハードウェア資源にアクセスするコントロールサービスに対するメッセージ送信というプロセス間通信に関する処理をイメージライブラリ内の関数に委ねることができ、外部アプリのソフトウェア開発労力の軽減を図ることができるという効果を奏する。
【０１１５】
また、請求項４にかかる発明によれば、プリント処理に必要なプリンタにアクセスするコントロールサービスに対する複雑な処理要求をプリントライブラリ内の関数に委ね、外部アプリのソフトウェア開発労力の軽減を図ることができるという効果を奏する。
【０１１６】
また、請求項５にかかる発明によれば、スキャン処理に必要なスキャナにアクセスするコントロールサービスに対する複雑な処理要求をスキャンライブラリ内の関数に委ね、外部アプリのソフトウェア開発労力の軽減を図ることができるという効果を奏する。
【０１１７】
また、請求項６にかかる発明によれば、ファイル操作に必要なハードウェア資源にアクセスするコントロールサービスに対する複雑な処理要求をファイル操作ライブラリ内の関数に委ね、外部アプリのソフトウェア開発労力の軽減を図ることができるという効果を奏する。
【０１１８】
また、請求項７にかかる発明によれば、スキャン処理に必要なスキャナなどのハードウェア資源にアクセスするコントロールサービスに対する複雑な処理要求をスキャナアプリに委ね、外部アプリのソフトウェア開発労力の軽減を図ることができるという効果を奏する。
【０１１９】
また、請求項８にかかる発明によれば、スキャン処理に必要なスキャナなどのハードウェア資源にアクセスするコントロールサービスに対するメッセージ送信というプロセス間通信に関する処理をスキャナアプリに委ねることができ、外部アプリのソフトウェア開発労力の軽減を図ることができるという効果を奏する。
【０１２０】
また、請求項９にかかる発明によれば、スキャン処理に必要なスキャナなどのハードウェア資源にアクセスするコントロールサービスに対する関数呼び出しとその戻り値受信というプロセス間通信に関する処理をイメージライブラリ内の関数に委ねることができ、外部アプリのソフトウェア開発労力の軽減を図ることができるという効果を奏する。
【０１２１】
また、請求項１０にかかる発明によれば、プリント処理に必要なプリンタなどのハードウェア資源にアクセスするコントロールサービスに対する複雑な処理要求をプリンタアプリに委ね、外部アプリのソフトウェア開発労力の軽減を図ることができるという効果を奏する。
【０１２２】
また、請求項１１にかかる発明によれば、プリント処理に必要なプリンタなどのハードウェア資源にアクセスするコントロールサービスに対するメッセージ送信というプロセス間通信に関する処理をプリンタアプリに委ねることができ、外部アプリのソフトウェア開発労力の軽減を図ることができるという効果を奏する。
【０１２３】
また、請求項１２にかかる発明によれば、プリント処理に必要なプリンタなどのハードウェア資源にアクセスするコントロールサービスに対する関数呼び出しとその戻り値受信というプロセス間通信に関する処理をイメージライブラリ内の関数に委ねることができ、外部アプリのソフトウェア開発労力の軽減を図ることができるという効果を奏する。
【０１２４】
また、請求項１３にかかる発明によれば、イメージ処理に必要なハードウェア資源にアクセスするコントロールサービスに対する複雑な処理要求をイメージライブラリ内の関数に委ね、外部アプリのソフトウェア開発労力の軽減を図ることができるという効果を奏する。
【０１２５】
また、請求項１４にかかる発明によれば、プリント処理に必要なプリンタにアクセスするコントロールサービスに対する複雑な処理要求をプリントライブラリ内の関数に委ね、外部アプリのソフトウェア開発労力の軽減を図ることができるという効果を奏する。
【０１２６】
また、請求項１５にかかる発明によれば、スキャン処理に必要なスキャナにアクセスするコントロールサービスに対する複雑な処理要求をスキャンライブラリ内の関数に委ね、外部アプリのソフトウェア開発労力の軽減を図ることができるという効果を奏する。
【０１２７】
また、請求項１６にかかる発明によれば、ファイル操作に必要なハードウェア資源にアクセスするコントロールサービスに対する複雑な処理要求をファイル操作ライブラリ内の関数に委ね、外部アプリのソフトウェア開発労力の軽減を図ることができるという効果を奏する。
【図面の簡単な説明】
【図１】実施の形態１にかかる複合機の主要構成を示すブロック図である。
【図２】実施の形態１の複合機の全体構成を示すブロック図である。
【図３】ＯＣＲアプリのプロセス内部の構造を示す説明図である。
【図４】ＯＣＲアプリによるスキャン処理時の流れを示す説明図である。
【図５】ＯＣＲアプリによるスキャン処理時の流れを示す説明図である。
【図６】ＯＣＲアプリによるＲＡＷファイルからＦＦＳファイルへのファイル変換処理の流れを示す説明図である。
【図７】実施の形態２にかかる複合機におけるＯＣＲアプリのプロセスとプリンタアプリのプロセスおよびスキャナアプリのプロセスとコントロールサービスの関係を示すブロック図である。
【符号の説明】
１００　複合機
１０１　白黒レーザプリンタ
１０２　カラーレーザプリンタ
１０３　ハードウェアリソース
１１０　ソフトウェア群
１１１　プリンタアプリ
１１２　コピーアプリ
１１３　ファックスアプリ
１１４　スキャナアプリ
１１５　ネットファイルアプリ
１１６　工程検査アプリ
１１７，７１７　ＯＣＲアプリ
１２０　プラットホーム
１２１　汎用ＯＳ
１２２　ＳＣＳ
１２３　ＳＲＭ
１２４　ＥＣＳ
１２５　ＭＣＳ
１２６　ＯＣＳ
１２７　ＦＣＳ
１２８　ＮＣＳ
１３０　アプリケーション
１４０　コントロールサービス
１５０　イメージライブラリ
１５１　スキャンライブラリ
１５２　プリントライブラリ
１５３　ファイル変換ライブラリ
１５４　ファイル検索ライブラリ
１５５　ファイル削除ライブラリ
１５６　ファイル情報変更ライブラリ
１５７　ファイル情報取得ライブラリ
３００　イメージライブラリスレッド
３０１　スキャンスレッド
３０２　プリントスレッド
３０３　ファイル変換スレッド
３１０　メインスレッド
３１１，３１２　　　メールボックス
３１３　イベント取得ハンドラ
７１０，７２０，７３０　ディスパッチャ
７１１，７２１　関数ハンドラ
７１２，７２２，７３２　メッセージハンドラ
７１３　プリント処理スレッド
７２３　スキャン処理スレッド
７３３　メインスレッド
【図１】
2004110751.tif 000003
【図２】
2004110751.tif 000004
【図３】
2004110751.tif 000005
【図４】
2004110751.tif 000006
【図５】
2004110751.tif 000007
【図６】
2004110751.tif 000008
【図７】
2004110751.tif 000009