(57)【特許請求の範囲】
【請求項１】
複数の画像処理部を有する画像形成装置において、
ネイティブ機械命令を解析実行するプロセッサと、
ネイティブ機械命令によって記述された第一のソフトウェアモジュール群の命令を前記プロセッサに実行させるオペレーティングシステムと、仮想機械命令を解釈し、その仮想機械命令に相当するネイティブ機械命令列を前記プロセッサに与え解釈実行させるための仮想機械であるインタプリタと、そのインタプリタにより解釈実行される仮想機械命令により実装されたオブジェクトリクエストブローカを記憶する記憶手段と、を備え、
ネイティブ機械命令によって記述された前記第一のソフトウェアモジュール群には、複数の第一の送受信プログラムと、前記複数の第一の送受信プログラムが対応していないプロトコルの送信要求が入力された場合に起動されるプログラムであるスタブモジュールとが含まれ、
前記オブジェクトリクエストブローカには、仮想機械命令によって記述された１つ以上の第二の送受信プログラムが登録可能であり、
前記プロセッサが、
前記オブジェクトリクエストブローカの制御下にて、前記複数の第一の送受信プログラムが対応していないプロトコルの送信要求を前記スタブモジュールから取得して、その送信要求が従うプロトコルを判定し、
前記オブジェクトリクエストブローカの制御下にて、前記オブジェクトリクエストブローカに対して登録されている前記第二の送受信プログラムの中から前記判定したプロトコルをサポートする送受信プログラムを決定し、
前記決定した送受信プログラムを用いて画像データの送信処理を実行する画像形成装置。
【請求項２】
前記第二の送受信プログラムは、インターネットプリンティングプロトコルを制御する送受信プログラムである請求項１に記載の画像形成装置。
【請求項３】
複数の画像処理部と、ネイティブ機械命令を解析実行するプロセッサと、ネイティブ機械命令によって記述された第一のソフトウェアモジュール群の命令を前記プロセッサに実行させるオペレーティングシステムと、仮想機械命令を解釈し、その仮想機械命令に相当するネイティブ機械命令列を前記プロセッサに与え解釈実行させるための仮想機械であるインタプリタと、そのインタプリタにより解釈実行される仮想機械命令により実装されたオブジェクトリクエストブローカを記憶する記憶手段と、を備え、
ネイティブ機械命令によって記述された前記第一のソフトウェアモジュール群には、複数の第一の送受信プログラムと、前記複数の第一の送受信プログラムが対応していないプロトコルの送信要求が入力された場合に起動されるプログラムであるスタブモジュールとが含まれ、
前記オブジェクトリクエストブローカには、仮想機械命令によって記述された１つ以上の第二の送受信プログラムが登録可能である画像形成装置が実行する画像形成方法であって、
前記プロセッサが、
前記オブジェクトリクエストブローカの制御下にて、前記複数の第一の送受信プログラムが対応していないプロトコルの送信要求を前記スタブモジュールから取得して、その送信要求が従うプロトコルを判定する判定工程と、
前記オブジェクトリクエストブローカの制御下にて、前記オブジェクトリクエストブローカに対して登録されている前記第二の送受信プログラムの中から前記判定工程で判定したプロトコルをサポートする送受信プログラムを決定する決定工程と、
前記決定工程で決定した送受信プログラムを用いて画像データの送信処理を実行する実行工程と、を実行する画像形成方法。
【請求項４】
前記第二の送受信プログラムは、インターネットプリンティングプロトコルを制御する送受信プログラムである請求項３に記載の画像形成方法。
【請求項５】
複数の画像処理部と、ネイティブ機械命令を解析実行するプロセッサと、ネイティブ機械命令によって記述された第一のソフトウェアモジュール群の命令を前記プロセッサに実行させるオペレーティングシステムと、仮想機械命令を解釈し、その仮想機械命令に相当するネイティブ機械命令列を前記プロセッサに与え解釈実行させるための仮想機械であるインタプリタと、そのインタプリタにより解釈実行される仮想機械命令により実装されたオブジェクトリクエストブローカを記憶する記憶手段と、を備え、
ネイティブ機械命令によって記述された前記第一のソフトウェアモジュール群には、複数の第一の送受信プログラムと、前記複数の第一の送受信プログラムが対応していないプロトコルの送信要求が入力された場合に起動されるプログラムであるスタブモジュールとが含まれ、
前記オブジェクトリクエストブローカには、仮想機械命令によって記述された１つ以上の第二の送受信プログラムが登録可能である画像形成装置において、
前記プロセッサに、
前記オブジェクトリクエストブローカの制御下にて、前記複数の第一の送受信プログラムが対応していないプロトコルの送信要求を前記スタブモジュールから取得して、その送信要求が従うプロトコルを判定する判定工程と、
前記オブジェクトリクエストブローカの制御下にて、前記オブジェクトリクエストブローカに対して登録されている前記第二の送受信プログラムの中から前記判定工程で判定したプロトコルをサポートする送受信プログラムを決定する決定工程と、
前記決定工程で決定した送受信プログラムを用いて画像データの送信処理を実行する実行工程と、
を実行させるためのプログラムを記録した記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、たとえばイメージスキャナ、デジタルカメラ、プリンタ、ディスプレイ、ネットワークインタフェース、有線および無線インタフェース、通信回線インタフェース、ユーザインタフェース、ファイルシステム等を持つ装置内部に組み込まれ、プロセッサによって実行されるソフトウェアモジュールによって実現されるソフトウェア組込み型電子装置に関するものである。
【０００２】
【従来の技術】
従来、汎用コンピュータ上で動作するアプリケーションソフトウェアにおいては、そのアプリケーションを構成するアルゴリズムとデータ構造のうち、特に将来の変更や拡張の要求が予想される部分をあらかじめアプリケーションの本体とは切り離して設計しておき、切り離した部分をソフトウェア的な部品として後から追加できるように設計している。
【０００３】
この部分的なソフトウェアモジュールはプラグインと呼ばれることがあり、次のような応用事例としてよく知られている。
【０００４】
例えば、フォトレタッチ用アプリケーションソフトウェアにおける各種画像処理アルゴリズムを行うプラグインが知られている。
【０００５】
また、例えば、Ｗｅｂブラウズ用アプリケーションソフトウェア（Ｗｅｂブラウザ）において、あるＨＴＭＬデータに埋め込まれた参照が指すデータファイルが、Ｗｅｂブラウザによって標準的にはサポートされないデータ形式である場合に、その固有の形式に従ってデータファイルを処理し、ＷｅｂブラウザがレンダリングしたＨＴＭＬデータの表示の一部として埋め込み表示するためのプラグインがよく知られている。
【０００６】
これらのプラグインの枠組みによって、アプリケーションソフトウェアは、将来にわたり新しく生まれ続ける画像処理アルゴリズムやデータ形式等に柔軟に対応できる。
【０００７】
汎用コンピュータ上のアプリケーションソフトウェアが動的なプラグイン追加の枠組みを実現するために、少なくともアプリケーションソフトウェアのプラグイン管理を担う接点部分では動的なデータ構造とアルゴリズムを採用している。
【０００８】
さらに、アプリケーションソフトウェア本体のロードモジュールとは別のファイルとして存在する複数のプラグインモジュールを動的に読み込み結合してプラグインが提供する機能を呼び出すために、アプリケーションソフトウェアは独自の、または、汎用オペレーティングシステムが備える、インクリメンタルリンクライブラリ（ダイナミックリンクライブラリ、共有ライブラリ）機構を利用している。
【０００９】
一方、ソフトウェア組込み型電子装置の動作環境を提供する各種のリアルタイムオペレーティングシステム（ＲＴＯＳ）のうち比較的大規模なＲＴＯＳでは、タスク、メモリ領域、メッセージキュー、セマフォ等の資源を動的に生成、削除および管理する機能を持つものが利用されている。
【００１０】
また、システムを構成するソフトウェアのオブジェクトファイル群全体をあらかじめ連結して単一ファイルのロードモジュールとするのではなく、部分的なオブジェクトファイル群を含むアーカイブファイルを実行時にメモリ空間に読み込み、動的にシンボル参照を解決し結合する機能、すなわちインクリメンタルリンク方式をサポートするＲＴＯＳも利用されている。
【００１１】
【発明が解決しようとする課題】
しかしながら、デバイスの制御を元来の目的としてきたソフトウェア組込み型電子装置は、リアルタイム性や堅牢性を確保するために、メモリなどの資源を固定的に確保するように設計することがあり、またデータ構造や処理アルゴリズムも予測が比較的容易な静的な構造とアルゴリズムを採用することがある。
【００１２】
ソフトウェア組込み型電子装置の動作環境として採用しているＲＴＯＳが上記のような動的な資源確保やインクリメンタルリンクをサポートしている場合であっても、実際にはＲＴＯＳが備える機能のこれら動的側面はまったく使われていない場合もある。
【００１３】
その根本的な理由の１つは、ソフトウェア組込み型電子装置のソフトウェアに求められる要求仕様の特殊性に見いだすことができる。
【００１４】
一般に、汎用コンピュータ中のソフトウェアはいわゆるベストエフォート型のアプローチで平均的な効率の最大化を目指して設計されることがあり、ソフトウェア組込み型電子装置のソフトウェアは（リアルタイムシステムの場合は特に）、システムの機能を達成する上で最悪の事態にあっても最低限の機能を保証することを目指して設計されることがある。
【００１５】
例えば、汎用のコンピュータにおいては、ハードディスクにインストールされているアプリケーションソフトウェアのすべてを、搭載されているメモリ領域の範囲内ではメモリ不足のため、同時に稼働できなかったとしても問題ではない。またそれが通常の運用形態である。
【００１６】
しかし、一方のソフトウェア組込み型電子装置においては、少なくとも標準搭載の基本的な機能群の組み合わせに関しては確実に同時に稼働可能であることを求められる場合がある。
【００１７】
例えば、画像処理のためのマルチファンクションプロダクト（ＭＦＰ）においては、もしＭＦＰがコピー機能とプリンタ機能を標準搭載としているとしたら、たとえプリントのため内部的に膨大なメモリ領域を消費するＰＤＬデータの解釈と画像展開を行っている最中であったとしても、原稿束を持って装置の前に立ったユーザに対しては同時にコピー機能も提供できることを保証しなければならないかもしれない。
【００１８】
また、たとえそのメモリ不足が一時的なものであるにせよ、イメージスキャナの中にあって原稿画像を走査するために高速に移動するメカトロニクス部品を制御している途中や、電子写真式プリンタの中にあって高温に保たれる定着ドラムの温度を制御している途中で、メモリ不足のために制御を待たすことは許されない。
【００１９】
またセキュリティの観点から見て、装置が標準に提供する基本的な機能の正常な運用が、後から追加されるソフトウェアモジュールの不具合によって妨げられることは許容されない。
【００２０】
したがって、従来の汎用コンピュータにおいて行われているプラグインの枠組みによる方法をソフトウェア組込み型電子装置に適用し柔軟で動的な機能拡張を実現することは困難だった。
【００２１】
本発明は上記の従来技術の課題を解決するためになされたもので、その目的とするところは、柔軟で動的な機能拡張が可能なソフトウェア組込み型電子装置を提供することを目的とする。
【００２２】
【課題を解決するための手段】
上記目的を達成するために本発明の画像形成装置は、複数の画像処理部を有する画像形成装置において、ネイティブ機械命令を解析実行するプロセッサと、ネイティブ機械命令列によって記述された第一のソフトウェアモジュール群の命令を前記プロセッサに実行させるオペレーティングシステムと、仮想機械命令に相当するネイティブ機械命令列を前記プロセッサに与え解釈実行させるための仮想機械であるインタプリタと、そのインタプリタにより解釈実行されるリクエストブローカを記憶する記憶手段と、受信した要求が従うプロトコルを判定する判定手段と、前記判定手段が判定したプロトコルをサポートするプラグインプログラムであって、前記リクエストブローカ内に組み込まれるプラグインプログラムを決定する決定手段と、前記決定手段が決定したプラグインプログラムを用いて画像処理を実行する実行手段を備えた画像形成装置である。
本発明の画像形成方法は、複数の画像処理部と、ネイティブ機械命令を解析実行するプロセッサと、ネイティブ機械命令列によって記述された第一のソフトウェアモジュール群の命令を前記プロセッサに実行させるオペレーティングシステムと、仮想機械命令に相当するネイティブ機械命令列を前記プロセッサに与え解釈実行させるための仮想機械であるインタプリタと、そのインタプリタにより解釈実行されるリクエストブローカを記憶する記憶手段と、を備えた画像形成装置が実行する画像形成方法であって、受信した要求が従うプロトコルを判定する判定工程と、前記判定工程で判定したプロトコルをサポートするプラグインプログラムであって、前記リクエストブローカ内に組み込まれるプラグインプログラムを決定する決定工程と、前記決定工程で決定したプラグインプログラムを用いて画像処理を実行する実行工程を備えた画像形成方法である。
本発明の記録媒体は、複数の画像処理部と、ネイティブ機械命令を解析実行するプロセッサと、ネイティブ機械命令列によって記述された第一のソフトウェアモジュール群の命令を前記プロセッサに実行させるオペレーティングシステムと、仮想機械命令に相当するネイティブ機械命令列を前記プロセッサに与え解釈実行させるための仮想機械であるインタプリタと、そのインタプリタにより解釈実行されるリクエストブローカを記憶する記憶手段と、を備えた画像形成装置に、受信した要求が従うプロトコルを判定する判定工程と、前記判定工程で判定したプロトコルをサポートするプラグインプログラムであって、前記リクエストブローカ内に組み込まれるプラグインプログラムを決定する決定工程と、前記決定工程で決定したプラグインプログラムを用いて画像処理を実行する実行工程と、を実行させるためのプログラムを記録した記憶媒体である。
【００２３】
これにより、動的なデータ構造やアルゴリズムの実装と部分的なソフトウェアモジュールのインクリメンタルリンクに最適なインタプリタをシステム内部に導入し、プロセッサのネイティブ機械命令によって記述されたソフトウェアのプラグインモジュールをインタプリタ上で動的に追加することが可能となり、柔軟で動的な機能拡張が可能な画像形成装置を提供することができる。
【００３１】
【発明の実施の形態】
以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、この実施の形態に記載されている構成部品の寸法、材質、形状、その相対配置などは、特に特定的な記載がない限りは、この発明の範囲をそれらのみに限定する趣旨のものではない。
【００３２】
初めに、本発明の装置及びその動作について詳細に説明する。
【００３３】
［ハードウェア］
（全体構成）
画像処理装置１００１の全体構成図を図３に示す。
【００３４】
コントローラユニット２０００は、イメージデータ入力手段の一例である画像入力デバイスとしてのスキャナ２０７０や、イメージデータ出力手段の一例である画像出力デバイスとしてのプリンタ２０９５と接続する一方、ＬＡＮ２０１１や公衆回線（ＷＡＮ）２０５１と接続することで、画像情報やデバイス情報の入出力を行う。
【００３５】
ＣＰＵ２００１は、システム全体を制御するプロセッサである。
【００３６】
ＲＡＭ２００２は、ＣＰＵ２００２が動作するためのシステムワークメモリであり、プログラムを記憶するためのプログラムメモリや、画像データを一時記憶するための画像メモリでもある。
【００３７】
ＲＯＭ２００３は、ブートＲＯＭであり、システムのブートプログラムが格納されている。
【００３８】
ＨＤＤ２００４は、ハードディスクドライブで、システムソフトウェア、画像データを格納する。
【００３９】
操作部Ｉ／Ｆ２００６は、操作部（ＵＩ）２０１２とのインタフェース部で、操作部２０１２に表示する画像データを操作部２０１２に対して出力する。また、操作部２０１２から本システム使用者が入力した情報を、ＣＰＵ２００１に伝える役割をする。
【００４０】
ネットワーク２０１０は、ＬＡＮ２０１１に接続し、情報の入出力を行う。
【００４１】
モデム２０５０は、公衆回線２０５１に接続し、情報の入出力を行う。
【００４２】
以上のデバイスがシステムバス２００７上に配置される。
【００４３】
イメージバスＩ／Ｆ２００５は、システムバス２００７と画像データを高速で転送する画像バス２００８を接続し、データ構造を変換するバスブリッジである。
【００４４】
画像バス２００８は、ＰＣＩバスまたはＩＥＥＥ１３９４で構成される。画像バス２００８上には以下のデバイスが配置される。
【００４５】
ラスタイメージプロセッサ（ＲＩＰ）２０６０は、ＰＤＬコードをビットマップイメージに展開する。
【００４６】
デバイスＩ／Ｆ部２０２０は、画像入出力デバイスであるスキャナ２０７０やプリンタ２０９５とコントローラユニット２０００を接続し、画像データの同期系／非同期系の変換を行う。
【００４７】
スキャナ画像処理部２０８０は、入力画像データに対し補正、加工、編集を行う。プリンタ画像処理部２０９０は、プリント出力画像データに対して、プリンタの補正、解像度変換等を行う。
【００４８】
画像回転処理部２０３０は、画像データの回転を行う。
【００４９】
画像圧縮処理部２０４０は、多値画像データはＪＰＥＧ（Joint Photographic Experts Group）、２値画像画像データはＪＢＩＧ（Joint Bi-level Image Experts Group）、ＭＭＲ（Modified Modified READ）、ＭＨ等の圧縮伸長処理を行う。
【００５０】
（画像入出力部）
画像入出力デバイスを図４で示す。図４は、図３で構成を示した画像処理装置の外観図である。
【００５１】
画像入力デバイスであるスキャナ部２０７０は、原稿となる紙上の画像を照明し、ＣＣＤラインセンサ（図示せず）で走査することで、ラスタイメージデータとして電気信号に変換する。
【００５２】
原稿用紙は原稿フィーダ２０７２のトレイ２０７３にセットし、装置使用者が操作部２０１２から読み取り起動指示することにより、コントローラＣＰＵ２００１がスキャナ２０７０に指示を与え（２０７１、図３参照）、フィーダ２０７２は原稿用紙を１枚ずつフィードし原稿画像の読み取り動作を行う。
【００５３】
画像出力デバイスであるプリンタ部２０９５は、ラスタイメージデータを用紙上の画像に変換する部分であり、その方式は感光体ドラムや感光体ベルトを用いた電子写真方式、微少ノズルアレイからインクを吐出して用紙上に直接画像を印字するインクジェット方式等があるが、どの方式でも構わない。プリント動作の起動は、コントローラＣＰＵ２００１からの指示によって開始する。
【００５４】
プリンタ部２０９５には、異なる用紙サイズまたは異なる用紙向きを選択できるように複数の給紙段を持ち、それに対応した用紙カセット２１０１、２１０２、２１０３、２１０４がある。
【００５５】
また、排紙トレイ２１１１は印字し終わった用紙を受けるものである。
【００５６】
（操作部）
操作部２０１２の構成を図５に示す。
【００５７】
ＬＣＤ表示部２０１３は、ＬＣＤ上にタッチパネルシートが貼られており、システムの操作画面を表示するとともに、表示してあるキーが押されるとその位置情報をコントローラＣＰＵ２００１に伝える。
【００５８】
スタートキー２０１４は、原稿画像の読み取り動作を開始する時などに用いる。スタートキー２０１４中央部には、緑と赤の２色ＬＥＤ２０１８があり、その色によってスタートキー２０１４が使える状態にあるかどうかを示す。
【００５９】
ストップキー２０１５は、稼働中の動作を止める働きをする。
【００６０】
ＩＤキー２０１６は、使用者のユーザＩＤを入力する時に用いる。
【００６１】
リセットキー２０１７は、操作部からの設定を初期化する時に用いる。
【００６２】
（スキャナ画像処理部）
スキャナ画像処理部２０８０の構成を図６に示す。
【００６３】
画像バスＩ／Ｆコントローラ２０８１は、画像バス２００８と接続し、そのバスアクセスシーケンスを制御する働きと、スキャナ画像処理部２０８０内の各デバイスの制御及びタイミングを発生させる。
【００６４】
フィルタ処理部２０８２は、空間フィルタでコンボリューション演算を行う。
【００６５】
編集部２０８３は、例えば入力画像データからマーカーペンで囲まれた閉領域を認識して、その閉領域内の画像データに対して、影つけ、網掛け、ネガポジ反転等の画像加工処理を行う。
【００６６】
変倍処理部２０８４は、読み取り画像の解像度を変える場合にラスターイメージの主走査方向について補間演算を行い拡大、縮小を行う。副走査方向の変倍については、画像読み取りラインセンサ（図示せず）を走査する速度を変えることで行う。
【００６７】
テーブル２０８５は、読み取った輝度データである画像データを濃度データに変換するために行うテーブル変換である。
【００６８】
２値化２０８６は、多値のグレースケール画像データを、誤差拡散処理やスクリーン処理によって２値化する。
【００６９】
処理が終了した画像データは、再び画像バスＩ／Ｆコントローラ２０８１を介して、画像バス上に転送される。
【００７０】
（プリンタ画像処理部）
プリンタ画像処理部２０９０の構成を図７に示す。
【００７１】
画像バスＩ／Ｆコントローラ２０９１は、画像バス２００８と接続し、そのバスアクセスシーケンスを制御する働きと、プリンタ画像処理部２０９０内の各デバイスの制御及びタイミングを発生させる。
【００７２】
解像度変換部２０９２は、ネットワーク２０１１あるいは公衆回線２０５１から来た画像データを、プリンタ２０９５の解像度に変換するための解像度変換を行う。
【００７３】
スムージング処理部２０９３は、解像度変換後の画像データのジャギー（斜め線等の白黒境界部に現れる画像のがさつき）を滑らかにする処理を行う。
【００７４】
（画像圧縮部）
画像圧縮処理部２０４０の構成を図８に示す。
【００７５】
画像バスＩ／Ｆコントローラ２０４１は、画像バス２００８と接続し、そのバスアクセスシーケンスを制御する働き、入力バッファ２０４２・出力バッファ２０４５とのデータのやりとりを行うためのタイミング制御及び、画像圧縮部２０４３に対するモード設定などの制御を行う。以下に画像圧縮処理部の処理手順を示す。
【００７６】
画像バス２００８を介して、ＣＰＵ２００１から画像バスＩ／Ｆコントローラ２０４１に画像圧縮制御のための設定を行う。この設定により画像バスＩ／Ｆコントローラ２０４１は画像圧縮部２０４３に対して画像圧縮に必要な設定（例えば、ＭＭＲ圧縮・ＪＢＩＧ伸長等）を行う。
【００７７】
必要な設定を行った後に、再度ＣＰＵ２００１から画像バスＩ／Ｆコントローラ２０４１に対して画像データ配信の許可を行う。この許可に従い、画像バスＩ／Ｆコントローラ２０４１はＲＡＭ２００２もしくは画像バス２００８上の各デバイスから画像データの転送を開始する。
【００７８】
受け取った画像データは、入力バッファ２０４２に一時格納され、画像圧縮部２０４３の画像データ要求に応じて一定のスピードで画像を転送する。この際、入力バッファ２０４２は、画像バスＩ／Ｆコントローラ２０４１と、画像圧縮部２０４３両者の間で、画像データを転送できるかどうかを判断し、画像バス２００８からの画像データの読み込み及び、画像圧縮部２０４３への画像の書き込みが不可能である場合は、データの転送を行わないような制御を行う（以後このような制御をハンドシェークと呼称する）。
【００７９】
画像圧縮部２０４３は、受け取った画像データを、一旦ＲＡＭ２０４４に格納する。これは画像圧縮を行う際には、行う画像圧縮処理の種類によって、数ライン分のデータを要するためであり、最初の１ライン分の圧縮を行うためには数ライン分の画像データを用意してからでないと画像圧縮が行えないためである。
【００８０】
画像圧縮を施された画像データは直ちに出力バッファ２０４５に送られる。出力バッファ２０４５では、画像バスＩ／Ｆコントローラ２０４１及び画像圧縮部２０４３とのハンドシェークを行い、画像データを画像バスＩ／Ｆコントローラ２０４１に転送する。
【００８１】
画像バスＩ／Ｆコントローラ２０４１では、転送された圧縮（もしくは伸長）された画像データをＲＡＭ２００２もしくは画像バス２００８上の各デバイスにデータを転送する。
【００８２】
こうした一連の処理は、ＣＰＵ２００１からの処理要求が無くなるまで（必要なページ数の処理が終わったとき）、もしくはこの画像圧縮部から停止要求が出るまで（圧縮及び伸長時のエラー発生時等）繰り返される。
【００８３】
（画像回転部）
画像回転部２０３０の構成を図９に示す。
【００８４】
画像バスＩ／Ｆコントローラ２０３１は、画像バス２００８と接続し、そのバスシーケンスを制御する働き、画像回転部２０３２にモード等を設定する制御及び、画像回転部２０３２に画像データを転送するためのタイミング制御を行う。以下に画像回転部の処理手順を示す。
【００８５】
画像バス２００８を介して、ＣＰＵ２００１から画像バスＩ／Ｆコントローラ２０３１に画像回転制御のための設定を行う。この設定により画像バスＩ／Ｆコントローラ２０４１は画像回転部２０３２に対して画像回転に必要な設定（たとえば画像サイズや回転方向・角度等）を行う。
【００８６】
必要な設定を行った後に、再度ＣＰＵ２００１から画像バスＩ／Ｆコントローラ２０３１に対して画像データ配信の許可を行う。この許可に従い、画像バスＩ／Ｆコントローラ２０３１はＲＡＭ２００２もしくは画像バス２００８上の各デバイスから画像データの転送を開始する。尚、ここでは３２ｂｉｔをそのサイズとし回転を行う画像サイズを３２×３２（ｂｉｔ）とし、又、画像バス２００８上に画像データを転送させる際に３２ｂｉｔを単位とする画像転送を行うものとする（扱う画像は２値を想定する）。
【００８７】
上述のように、３２×３２（ｂｉｔ）の画像を得るためには、上述の単位データ転送を３２回行う必要があり、且つ不連続なアドレスから画像データを転送する必要がある（図１０参照）。
【００８８】
不連続アドレッシングにより転送された画像データは、読み出し時に所望の角度に回転されているように、ＲＡＭ２０３３に書き込まれる。例えば、９０度反時計方向回転であれば、最初に転送された３２ｂｉｔの画像データを、図１１のようにＹ方向に書き込んでいく。読み出し時にＸ方向に読み出すことで、画像が回転される。
【００８９】
３２×３２（ｂｉｔ）の画像回転（ＲＡＭ２０３３への書き込み）が完了した後、画像回転部２０３２はＲＡＭ２０３３から上述した読み出し方法で画像データを読み出し、画像バスＩ／Ｆコントローラ２０３１に画像を転送する。
【００９０】
回転処理された画像データを受け取った画像バスＩ／Ｆコントローラ２０３１は、連続アドレッシングを以て、ＲＡＭ２００２もしくは画像バス２００８上の各デバイスにデータを転送する。
【００９１】
こうした一連の処理は、ＣＰＵ２００１からの処理要求が無くなるまで（必要なページ数の処理が終わったとき）繰り返される。
【００９２】
（デバイスＩ／Ｆ部）
デバイスＩ／Ｆ部２０２０の構成を図１２に示す。
【００９３】
画像バスＩ／Ｆコントローラ２０２１は、画像バス２００８と接続し、そのバスアクセスシーケンスを制御する働きと、デバイスＩ／Ｆ部２０２０内の各デバイスの制御及びタイミングを発生させる。また、外部のスキャナ２０７０及びプリンタ２０９５への制御信号を発生させる。
【００９４】
スキャンバッファ２０２２は、スキャナ２０７０から送られてくる画像データを一時保存し、画像バス２００８に同期させて画像データを出力する。
【００９５】
シリアルパラレル・パラレルシリアル変換２０２３は、スキャンバッファ２０２２に保存された画像データを順番に並べて、あるいは分解して、画像バス２００８に転送できる画像データのデータ幅に変換する。
【００９６】
パラレルシリアル・シリアルパラレル変換２０２４は、画像バス２００８から転送された画像データを分解して、あるいは順番に並べて、プリントバッファ２０２５に保存できる画像データのデータ幅に変換する。
【００９７】
プリントバッファ２０２５は、画像バス２００８から送られてくる画像データを一時保存し、プリンタ２０９５に同期させて画像データを出力する。
【００９８】
画像スキャン時の処理手順を以下に示す。
【００９９】
スキャナ２０７０から送られてくる画像データをスキャナ２０７０から送られてくるタイミング信号に同期させて、スキャンバッファ２０２２に保存する。そして、画像バス２００８がＰＣＩバスの場合には、バッファ内に画像データが３２ビット以上入ったときに、画像データを先入れ先出しで３２ビット分、バッファからシリアルパラレル・パラレルシリアル変換２０２３に送り、３２ビットの画像データに変換し、画像バスＩ／Ｆコントローラ２０２１を通して画像バス２００８上に転送する。
【０１００】
また、画像バス２００８がＩＥＥＥ１３９４の場合には、バッファ内の画像データを先入れ先出しで、バッファからシリアルパラレル・パラレルシリアル変換２０２３に送り、シリアル画像データに変換し、画像バスＩ／Ｆコントローラ２０２１を通して画像バス２００８上に転送する。
【０１０１】
画像プリント時の処理手順を以下に示す。
【０１０２】
画像バス２００８がＰＣＩバスの場合には、画像バスから送られてくる３２ビットの画像データを画像バスＩ／Ｆコントローラ２０２１で受け取り、パラレルシリアル・シリアルパラレル変換２０２４に送り、プリンタ２０９５の入力データビット数の画像データに分解し、プリントバッファ２０２５に保存する。
【０１０３】
また、画像バス２００８がＩＥＥＥ１３９４の場合には、画像バスから送られてくるシリアル画像データを画像バスＩ／Ｆコントローラ２０２１で受け取り、パラレルシリアル・シリアルパラレル変換２０２４に送り、プリンタ２０９５の入力データビット数の画像データに変換し、プリントバッファ２０２５に保存する。そして、プリンタ２０９５から送られてくるタイミング信号に同期させて、バッファ内の画像データを先入れ先出しで、プリンタ２０９５に送る。
【０１０４】
［ソフトウェア］
次に、図３の装置でＣＰＵ２００１によって実行されるプログラム、及びそのプログラムを実行することで遂行される機能などを説明する。
【０１０５】
（システム全体）
本発明の画像配信装置を含むネットワークシステムの構成を図１に示す。
【０１０６】
画像処理装置１００１は、図３に示した本発明に係る画像配信装置の一例で、スキャナとプリンタとを含み、スキャナから読み込んだ画像をローカルエリアネットワーク１０１０（以下ＬＡＮ）に流したり、ＬＡＮ１０１０から受信した画像をプリンタによりプリントアウトできる。
【０１０７】
また、スキャナから読んだ画像を図示しないＦＡＸ送信手段により、ＰＳＴＮまたはＩＳＤＮ等の公衆回線１０３０に送信したり、ＰＳＴＮまたはＩＳＤＮから受信した画像をプリンタ１０４０によりプリントアウトできる。
【０１０８】
データベースサーバ１００２は、画像処理装置１００１により読み込んだ２値画像及び多値画像をデータベースとして管理する。
【０１０９】
データベースクライアント１００３は、データベースサーバ１００２に保存されている画像データを閲覧／検索等できる。
【０１１０】
電子メールサーバ１００４は、画像処理装置１００１により読み取った画像を電子メールに添付された画像として受け取ることができる。
【０１１１】
電子メールクライアント１００５は、電子メールサーバ１００４の受け取ったメールを受信し閲覧したり、電子メールを送信したりできる。
【０１１２】
ＷＷＷサーバ１００６は、ＨＴＭＬ文書をＬＡＮに提供する。
【０１１３】
画像処理装置１００１は、ＷＷＷサーバ１００６で提供されるＨＴＭＬ文書をプリントアウトできる。
【０１１４】
ルータ１０１１は、ＬＡＮ１０１０をインターネット／イントラネット１０１２と連結する。
【０１１５】
インターネット／イントラネット１０１２は、前述した画像処理装置１００１，データベースサーバ１００２，ＷＷＷサーバ１００６，電子メールサーバ１００４のそれぞれと同様の装置が、それぞれ１０２０，１０２１，１０２２，１０２３として接続されている。
【０１１６】
一方、画像処理装置１００１は、ＰＳＴＮまたはＩＳＤＮ１０３０を介してファクシミリ装置１０３１と送受信可能になっている。また、ＬＡＮ１０１０上にプリンタ１０４０も連結されており、画像処理装置１００１により読み取った画像をプリントアウト可能なように構成されている。
【０１１７】
（ソフトウェアブロック全体構成）
図２は、画像処理装置１００１のソフトウェアブロック図である。
【０１１８】
ユーザインタフェース（ＵＩ）１５０１は、オペレータが本複合機の各種操作・設定を行う際、機器との仲介を行うモジュールである。本モジュールは、オペレータの繰作に従い、後述の各種モジュールに入力情報を転送し処理の依頼、あるいはデータの設定等を行う。
【０１１９】
アドレスブック１５０２は、データの送付先、通信先等を管理するデータベースモジュールである。アドレスブック１５０２の内容は、ＵＩ１５０１からの操作によりデータの追加、削除、取得が行われ、オペレータの操作により後述の各モジュールにデータの送付・通信先情報を与えるものとして使用されるものである。
【０１２０】
ウエブサーバモジュール１５０３は、図外のウエブクライアントからの要求により、本複合機の管理情報を通知するために使用される。
【０１２１】
管理情報は、後述のコントロールＡＰＩ（Application Programming Interface）１５１８を介して読み取られ、後述のＨＴＴＰ１５１２、ＴＣＰ／ＩＰ１５１６、ネットワークドライバ１５１７を介してウエブクライアントに通知される。
【０１２２】
ユニバーサルセンドモジュール１５０４は、画像データの配信を司るモジュールであり、ＵＩ１５０１によりオペレータに指示された画像データを、同様に指示された通信（出力）先に配信するものである。また、オペレータにより、本機器のスキャナ機能を使用し配信する画像データの生成が指示された場合は、後述のコントロールＡＰＩ１５１８を介して機器を動作させ、データの生成を行う。
【０１２３】
ＰＲＴモジュール１５０５は、ユニバーサルセンドモジュール１５０４内で出力先にプリンタが指定された際に実行されるモジュールである。
【０１２４】
Ｅメールモジュール１５０６は、ユニバーサルセンドモジュール１５０４内で通信先にＥ−メールアドレスが指定された際に実行されるモジュールである。
【０１２５】
データベースモジュール１５０７は、ユニバーサルセンドモジュール１５０４内で出力先にデータベースが指定された際に実行されるモジュールである。
【０１２６】
データプロセッサモジュール１５０８は、ユニバーサルセンドモジュール１５０４内で出力先に画像処理装置１００１と同様の複合機が指定された際に実行されるモジュールである。
【０１２７】
リモートコピースキャンモジュール１５０９は、本装置のスキャナ機能を使用し、ネットワーク等で接続された他の複合機を出力先とし、本複合機単体で実現しているコピー機能と同等の処理を行うモジュールである。
【０１２８】
リモートコピープリントモジュール１５１０は、本装置のプリンタ機能を使用し、ネットワーク等で接続された他の複合機を入力先とし、本複合機単体で実現しているＣｏｐｙ機能と同等の処理を行うモジュールである。
【０１２９】
ウエブプルプリントモジュール１５１１は、インターネットまたはイントラネット上の各種ホームページの情報を読み出し、印刷するモジュールである。
【０１３０】
ＨＴＴＰモジュール１５１２は、本複合機がＨＴＴＰにより通信する際に使用されるモジュールであり、後述のＴＣＰ／ＩＰモジュール１５１６によりウェブサーバ１５０３、ウエブプルプリントモジュール１５１１に通信を提供するものである。
【０１３１】
ｌｐｒモジュール１５１３は、後述のＴＣＰ／ＩＰモジュール１５１６によりユニバーサルセンドモジュール１５０４内のＰＲＴモジュール１５０５に通信を提供するものである。
【０１３２】
ＳＭＴＰモジュール１５１４は、後述のＴＣＰ／ＩＰモジュール１５１６によりユニバーサルセンドモジュール１５０４内のＥ−ｍａｉｌモジュール１５０６に通信を提供するものである。
【０１３３】
サリュテーションマネージャ（ＳＬＭ）モジュール１５１５は、後述のＴＣＰ／ＩＰ１５１６モジュールによりユニバーサルセンドモジュール１５０４内のデータベースモジュール１５０７、ＤＰモジュール１５０８、及びリモートコピースキャンモジュール１５０９、リモートプリントモジュール１５１０に通信を提供するものである。
【０１３４】
ＴＣＰ／ＩＰモジュール１５１６は、前述の各種モジュールに、後述のネットワークドライバ１５１７によりネットワーク通信を提供するものである。
【０１３５】
ネットワークドライバ１５１７は、ネットワークとの物理的な接続を制御するものである。
【０１３６】
コントロールＡＰＩ１５１８は、ユニバーサルセンドモジュール１５０４等の上流モジュールに対し、後述のジョブマネージャ１５１９等の下流モジュールとのインタフェースを提供するものであり、上流、及び下流のモジュール間の依存関係を軽減しそれぞれの流用性を高めるものである。
【０１３７】
ジョブマネージャ１５１９は、前述の各種モジュールよりコントロールＡＰＩ１５１８を介して指示される処理を解釈し、後述の各モジュールに指示を与えるものである。また、本モジュールは、本複合機内で実行されるハード的な処理を一元管理するものである。
【０１３８】
ＣＯＤＥＣマネージャ１５２０は、ジョブマネージャ１５１９が指示する処理の中でデータの各種圧縮・伸長を管理・制御するものである。
【０１３９】
ＦＢＥエンコーダ１５２１は、ジョブマネージャ１５１９、スキャナマネージャ１５２４により実行されるスキャン処理により読み込まれたデータをＦＢＥフォーマットにより圧縮するものである。
【０１４０】
ＪＰＥＧ−ＣＯＤＥＣ１５２２は、ジョブマネージャ１５１９、スキャナマネージャ１５２４により実行されるスキャン処理、及びプリントマネージャ１５２６により実行される印刷処理において、読み込まれたデータのＪＰＥＧ圧縮及び印刷データのＪＰＥＧ展開処理を行うものである。
【０１４１】
ＭＭＲ−ＣＯＤＥＣ１５２３は、ジョブマネージャ１５１９、スキャナマネージャ１５２４により実行されるスキャン処理、及びプリントマネージャ１５２６により実行される印刷処理において、読み込まれたデータのＭＭＲ圧縮及び印刷データのＭＭＲ伸長処理を行うものである。
【０１４２】
スキャナマネージャ１５２４は、ジョブマネージャ１５１９が指示するスキャン処理を管理・制御するものである。
【０１４３】
ＳＣＳＩドライバ１５２５は、スキャナマネージャ１５２４と接続しているスキャナ部との通信を行うものである。
【０１４４】
プリンタマネージャ１５２６は、ジョブマネージャ１５１９が指示する印刷処理を管理・制御するものである。
【０１４５】
エンジンＩ／Ｆドライバ１５２７は、プリンタマネージャ１５２６とエンジン部とのＩ／Ｆを提供するものである。
【０１４６】
パラレルポートドライバ１５２８は、ウエブプルプリントモジュール１５１１がパラレルポートを介して図外の出力機器にデータを出力する際のＩ／Ｆを提供するものである。
【０１４７】
（アプリケーション）
以下、画像処理装置１００１の組込みアプリケーションの実施の形態について図面を用いて説明する。
【０１４８】
図１５は、画像処理装置１００１によるデータの配信に関する組込みアプリケーションブロックを表すものである。以下、それぞれのブロックに照らし合わせながら、アプリケーション群の説明を行う。
【０１４９】
（ユーザインタフェース（ＵＩ）アプリケーション）
ＵＩ４０５０は、前記したとおりであるが、ここでは、アドレスブック４０５１について説明する。アドレスブック４０５１は、画像処理装置１００１内の不揮発性の記憶デバイス（不揮発性メモリやハードディスクなど）に保存されており、この中には、ネットワークに接続された機器の特徴が記載されている。例えば、以下に列挙するような情報が含まれている。
【０１５０】
機器の正式名やエイリアス名
機器のネットワークアドレス
機器の処理可能なネットワークプロトコル
機器の処理可能なドキュメントフォーマット
機器の処理可能な圧縮タイプ
機器の処理可能なイメージ解像度
プリンタ機器の場合の給紙可能な紙サイズ、給紙段情報
サーバ（コンピュータ）機器の場合のドキュメントを格納可能なフォルダ名。
【０１５１】
以下に説明する各アプリケーションは、アドレスブック４０５１に記載された情報により配信先の特徴を判別することが可能となる。また、このアドレスブック４０５１は、編集可能であると共に、ネットワーク内のサーバコンピュータなどに保存されているものをダウンロードしたり、直接参照したりして使用することも可能である。
【０１５２】
（リモートコピーアプリケーション）
リモートコピーアプリケーション４１００は、配信先に指定された機器の処理可能な解像度情報を前記アドレスブック４０５１より判別し、それに従い、スキャナにより読み取った２値画像をＭＭＲ圧縮を用いて圧縮し、それをＴＩＦＦ（Tagged Image File Format）化し、ＳＬＭ４１０３に通して、ネットワーク上のプリンタ機器に送信する。
【０１５３】
ＳＬＭ４１０３とは、サリュテーションマネージャ（またはスマートリンクマネージャ）と呼ばれる機器制御情報などを含んだネットワークプロトコルの一種である。
【０１５４】
（同報配信アプリケーション）
同報配信アプリケーション４１５０は、前記リモートコピーアプリケーション４１００と違い、一度の画像走査で読み取った画像を複数の配信宛先に送信することが可能である。また、配信先もプリンタ機器にとどまらず、いわゆるサーバコンピュータにも直接配信可能である。以下、配信先に従って順に説明する。
【０１５５】
配信先の機器が、例えばネットワークプリンタプロトコルである公知のＬＰＤ（Line Printer Daemon）、プリンタ制御コマンドとして公知のＬＩＰＳを処理可能だとアドレスブック４０５１より判別された場合、アドレスブック４０５１より判別した画像解像度に従って画像読み取りを行い、本実施例ではその画像データを公知のＦＢＥ（First Binary Encoding）を用いて圧縮し、さらにＬＩＰＳコード化して、公知のネットワークプリンタにおけるリモート印刷プロトコルであるＬＰＲ（Line Printer Daemon Protocol）に従い相手機器に配信する。
【０１５６】
配信先の機器がＳＬＭで通信可能なサーバ機器の場合、アドレスブック４０５１より、サーバアドレス、サーバ内のフォルダの指定を判別し、リモートコピーアプリケーションと同様に、スキャナにより読み取った２値画像をＭＭＲ圧縮を用いて圧縮し、それをＴＩＦＦ化し、ＳＬＭに従い配信し、ネットワーク上のサーバ機器の特定のフォルダに格納する事が可能である。
【０１５７】
また、本実施例の画像処理装置では、相手機器であるサーバがＪＰＥＧ圧縮された多値画像を処理可能だと判別した場合、２値画像と同様に、多値読み取りした画像を公知のＪＰＥＧ圧縮を用いて、やはり公知のＪＦＩＦ化し、ＳＬＭに従い配信し、ネットワーク上のサーバ機器の特定のフォルダに格納する事が可能である。
【０１５８】
配信先の機器がＥメールサーバである場合、アドレスブック４０５１に記載されたメールアドレスを判別し、スキャナにより読み取った２値画像をＭＭＲ圧縮を用いて圧縮し、それをＴＩＦＦ化し、ＳＭＴＰ（Simple Mail Transfer Protcol）４１５３に従い、Ｅメールサーバに配信する。その後の配信は、メールサーバ４５５０によって実行される。
【０１５９】
（ウエブプルプリントアプリケーション）
ウエブプルプリントアプリケーション４２００は、ＨＴＴＰモジュールを介して指定したＵＲＬのウェブサーバ４６５０からＨＴＭＬ文書等のデータを読み込み、それを例えばポストスクリプト（ＰＳ）形式のデータとしてプリント出力する。
【０１６０】
（ウエブサーバアプリケーション）
ウエブサーバアプリケーション４２５０は、ウェブブラウザ４７００に対して、ＨＴＭＬ等のデータを提供する。
【０１６１】
上述のアプリケーションが、操作部からのオペレータの操作に従って実行される。
【０１６２】
［画像処理装置の操作］
画像処理装置１００１の繰作部の構成を図１３に示す。ＬＣＤ表示部（３００１）は、ＬＣＤ上にタッチパネルシートが貼られており、システムの操作画面を表示するとともに、表示してあるキーが押されるとその位置情報をコントローラＣＰＵに伝える。
【０１６３】
スタートキー３００２は原稿画像の読み取り動作を開始する時などに用いる。スタートキー中央部には、緑と赤の２色ＬＥＤがあり、その色によってスタートキーが使える状態にあるかどうかを示す。ストップキー３００３は、稼働中の動作を止める働きをする。ＩＤキー３００４は、使用者のユーザＩＤを入力するときに用いる。リセットキー３００５は、操作部からの設定を初期化するときに用いる。
【０１６４】
以下で操作部に表示される各画面について詳細に説明する。
【０１６５】
（操作画面（図１４））
画像処理装置１００１が提供する機能は、コピー（ＣＯＰＹ）／送信（ＳＥＮＤ）／検索（ＲＥＴＲＩＥＶＥ）／タスク（ＴＡＳＫＳ）／管理（ＭＧＭＮＴ）／構成（ＣＯＮＦＩＧ）の６つの大きなカテゴリーに分かれており、これらは操作画面３０１０上の上部に表示される６つのメインタブ（３０１１〜３０１６）に対応している。
【０１６６】
これらのメインタブを押すことにより、各カテゴリーの画面への切り替えが行われる。他カテゴリーヘの切り換えが許可されない場合は、メインタブの表示色が変わり、メインタブを押しても反応しない。
【０１６７】
（送信画面（図１６〜））
送信画面表示時にスタートボタンが押されると、スキャナが動作し、読み取った画像データを設定された宛先に指定された送信方法で送信する処理が開始される。
【０１６８】
送信メイン画面３２００（図１６）は、宛先表示領域３２０２、詳細宛先数表示領域３２０３、宛先スクロールボタン３２０４、アドレスブックボタン３２０８、新規ボタン３２０９、編集ボタン３２１０、削除ボタン３２１１、サブジェクト入力領域３２０５、メッセージ入力領域３２０６、ファイル名入力領域３２０７、カバーページチェックボタン３２１２、ＨＤ書き込みチェックボタン３２１３、印刷出力チェックボタン３２１４、スキャン設定ボタン３２１５から構成される。
【０１６９】
リセットを含む初期化時には、図１７の画面３２０１に示すように、宛先表示領域には１つの宛先も表示されず、操作説明画面が表示される。
【０１７０】
宛先表示領域３２０２には入力された宛先の一覧が表示される。入力は順次末尾に追加される。
【０１７１】
詳細宛先数表示領域３２０３には現在設定されている宛先数が表示される。宛先表示領域からある宛先を選択した後、削除ボタン３２１１を押すと、選択されていた宛先が削除される。
【０１７２】
サブジェクト入力領域３２０５、メッセージ入力領域３２０６、ファイル名入力領域３２０７を押すと、フルキーボードが表示され、それぞれの入力が可能になる。
【０１７３】
（アドレスブックサブ画面（図１８））
アドレスブックボタン３２０８を押すと、アドレスブックサブ画面３２２０が表示される。アドレス帳表示領域３２２１で選択マーク３２３２を付けられた宛先は、ＯＫボタン３２３１を押すことにより、送信メイン画面の宛先表示領域３２０２に追加される。
【０１７４】
アドレス帳の表示はソート項目設定ボタン（３２２４〜３２２６）を押すことによりクラス別、名前昇順、名前降順にソートされる。項目選択件数表示領域３２２７には選択マークの付けられた項目数を表示する。
【０１７５】
ＯＫボタン３２３１またはキャンセルボタン３２３０が押されると、アドレスブックサブ画面はクローズされ、送信メイン画面が表示される。
【０１７６】
アドレス帳の中の１つの項目を選択した状態で詳細ボタン３２２９を押すと、詳細サブ画面３２３５（図１９）が表示される。詳細サブ画面には選択された項目の情報としてアドレス帳から得られるすべての情報３２３６が表示される。
【０１７７】
（詳細宛先サブ画面（図２０〜図２５））
送信メイン画面の新規ボタン３２０９を押すとＰｅｒｓｏｎクラス詳細サブ画面３２７０（図２０参照）が表示され、新しい宛先の設定が可能になる。宛先の入力は送信方法（電子メール、ファックス、プリンタ、ＦＴＰ）に対応した送信方法選択ボタン（３２７１〜３２７４）を押すか、詳細宛先入力領域（３２７５〜３２７８）を押すと、ファックスの場合はテンキーボード３０５０（図２２）、その他はフルキーボード３０４０（図２１）が表示され、入力可能になる。３２７９〜３２８２はそれぞれの送信方法の送信オプションを行うためのボタンであるが、ここでは詳細な説明は省略する。
【０１７８】
送信メイン画面でＰｅｒｓｏｎクラスの宛先が選択されている状態で編集ボタン３２１０が押された場合もＰｅｒｓｏｎクラス詳細サブ画面３２９０（図２３）が表示される。詳細宛先入力領域（３２７５〜３２７８）の該当する領域に、選択された宛先の詳細が表示され、前述した方法でキーボードを表示すると、宛先の編集が可能になる。
【０１７９】
送信メイン画面でＤａｔａ  Ｂａｓｅクラスの宛先が選択されている状態で編集ボタン３２１０が押された場合、Ｄａｔａ  Ｂａｓｅクラス詳細サブ画面（図２４）が表示される。データベースクラス詳細サブ画面にはデータベース名３３１１、フォルダリスト３３１２が表示される。
【０１８０】
送信メイン画面でＧｒｏｕｐクラスの宛先が選択されている状態で編集ボタン３２１０が押された場合Ｇｒｏｕｐクラス詳細サブ画面３３２０（図２５）が表示される。Ｇｒｏｕｐクラス詳細サブ画面にはグループメンバー表示３３２１がされる。
【０１８１】
（ＨＤ設定サブ画面（図２６））
ＨＤ書き込みチェックボタン３２１３を押すと、ハードディスクに送信するための設定を行うＨＤ設定サブ画面３３３０が表示される。ここでは書き込むべきフォルダの指定等を行う。
【０１８２】
（印刷出力サブ画面（図２７〜図２９））
印刷出力チェックボタン３２１４を押すと、プリントアウトサブ画面３３４０（図２７）が表示される。プリントアウトサブ画面ではプリント枚数、紙サイズ、拡大縮小率、両面印刷、ソート、解像度などを設定する。紙サイズ選択ボタン３３４５を押すと、紙サイズの一覧３３６０（図２８）が表示され、そこから選択する。ソータ選択ボタン３３５０を押すと、選択可能なソータ一覧３３６５（図２９）が表示される。
【０１８３】
（スキャン設定サブ画面（図３０〜図３３））
スキャン設定ボタン３２１５を押すと、スキャン設定サブ画面３３７０が表示される。スキャン設定サブ画面内のプリセットモード選択領域３３７１からスキャン設定を１つ選択すると、それに対応するあらかじめ設定された解像度、スキャンモード、濃度がそれぞれの表示領域（３３７７、３３７９、３３８１）に表示される。これらの値は選択ボタン（３３７６、３３７８、３３８０）により手動で変えることが可能である。
【０１８４】
図３１のスキャン設定サブ画面３３９０は、紙サイズ選択一覧をプルダウン表示した状態の画面で、この一覧から使用する紙のサイズ、向きを選択する。図３２の画面３３９１、図３３の画面３３９２は、それぞれ、解像度、スキャンモード一覧をプルダウン表示した状態を示している。
【０１８５】
［プラグインの詳細な説明］
図３４は、同報配信アプリケーション４１５０に対して、ＲＦＣ２９１０、ＲＦＣ２９１１等で公知のＩｎｔｅｒｎｅｔ  Ｐｒｉｎｔｉｎｇ  Ｐｒｏｔｏｃｏｌ（ＩＰＰ）プラグインモジュールを追加することで、ユニバーサルセンドモジュールが新たにＩＰＰ配信プロトコルによる同報配信をサポートしている状態を例示するアプリケーションブロック図である。
【０１８６】
ＩＰＰプラグインモジュールが組み込まれたユニバーサルセンドモジュールは、配信先の機器が、ネットワークプリンタプロトコルである公知のＩＰＰ、プリンタ制御コマンドとして公知のＬＩＰＳを処理可能だとアドレスブック４０５１より判別された場合、アドレスブック４０５１より判別した画像解像度に従って画像読み取りを行い、本実施例ではその画像を公知のＦＢＥ（First Binary Encoding）を用いて圧縮し、さらにＬＩＰＳコード化して、公知のネットワークプリンタプロトコルであるＩＰＰに従い相手機器に配信する。
【０１８７】
図３５はＣＰＵ２００１によって実行されるソフトウェアの階層構造を示す模式図であり、ユニバーサルセンドモジュール１５０４と関連モジュールの階層関係を示す。
【０１８８】
ＲＴＯＳ１５２９は、リアルタイムオペレーティングシステムであり、ＣＰＵ２００１が直接解釈実行する機械命令によって記述されたユニバーサルセンドモジュール１５０４などのソフトウェアモジュールのための動作環境を提供する。
【０１８９】
インタプリタ１５３０は、公知のインタプリタ処理系であり、ＲＴＯＳ１５２９が提供する動作環境上で動作し、所定のインタプリタ用命令で記述された命令列データを読み込み、逐次的に解釈実行する。インタプリタ１５３０は、インタプリタ用命令で記述されたソフトウェアモジュールに動作環境を提供する仮想的なＣＰＵであり、インタプリタ上で動作するソフトウェアのために用意されたライブラリセットとともに、仮想的なオペレーティングシステムの機能を果たす。
【０１９０】
本実施例のインタプリタはＳｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ社による公知のＪａｖａ(登録商標）を対象として動作するインタプリタである。本実施例のＪａｖａのインタプリタは、Ｊａｖａ言語で記述されたプログラムをコンパイルした結果生成されるバイトコードと呼ばれるインタプリタ用命令列の中間表現を、実行時に動的に読み込むことができる。Ｊａｖａインタプリタは読み込んだ各バイトコードを逐次的に解釈実行する。Ｊａｖａのバイトコードは公知のスタックマシン型プロセッサの機械言語に類似しており、Ｊａｖａ仮想機械と呼ばれることもあるＪａｖａのインタプリタは、スタックマシン型のＣＰＵと同様に動作する。
【０１９１】
なお、本実施例に係るインタプリタはＪａｖａに限定する必要はなく、それぞれ公知のＰｅｒｌ、Ｐｙｔｈｏｎ、Ｒｕｂｙなど多種多様なインタプリタを採用してもよい。
【０１９２】
図３５のソフトウェア階層構造において、ＲＴＯＳ１５２９の上では機械命令で記述されたソフトウェアモジュールが動作し、インタプリタ１５３０の上ではインタプリタ用命令で記述されたソフトウェアモジュールが動作する。
【０１９３】
スタブモジュール１５３１は、ユニバーサルセンドモジュール１５０４内に組み込まれて動作する送信コンポーネントと呼ばれるサブモジュールの１つであり、ＣＰＵ２００１によって直接解釈実行される機械命令によって記述され、既に説明したＰＲＴモジュール１５０５、Ｅメールモジュール１５０６、データベースモジュール１５０７、データプロセッサモジュール１５０８の標準搭載の送信コンポーネントと同様に、スキャン画像データを所定のデータ配信プロトコルによって出力先へと配信する処理を行う。スタブモジュール１５３１は、ユニバーサルセンドモジュール１５０４内で標準搭載の送信コンポーネントによって配信処理を行うことのできない出力先が宛先として指定された際に実行されるモジュールである。
【０１９４】
リクエストブローカモジュール１５３２は、スタブモジュール１５３１と通信を行いユニバーサルセンドモジュール１５０４がスタブモジュールとの間で行う対話的な要求と応答のやり取りをプラグインモジュール１５３３に転送する。リクエストブローカモジュール１５３２は、Ｊａｖａのバイトコードで記述されインタプリタ１５３０上で解釈実行される。
【０１９５】
プラグイン１５３３は、リクエストブローカモジュール１５３２内に動的に組み込まれて動作するサブモジュールの１つである。
【０１９６】
本実施例ではプラグイン１５３３として、ユニバーサルセンドモジュール１５０４で出力先にＩＰＰのプリントプロトコルをサポートするプリンタが指定された際に実行されＩＰＰによる配信処理を行う、ＩＰＰ送信コンポーネントプラグインモジュールが組み込まれている状態を示している。
【０１９７】
プラグイン１５３３は、Ｊａｖａのバイトコードで記述されインタプリタ１５３０上で解釈実行される。
【０１９８】
図３６は、ユニバーサルセンドモジュール１５０４、スタブモジュール１５３１、リクエストブローカモジュール１５３２、及びプラグインモジュール１５３３の間の相互の対話処理を示す図である。
【０１９９】
ユニバーサルセンドモジュール１５０４は、スタブモジュール１５３１が備える送信コンポーネントインタフェースの関数を呼び出すことによってスタブモジュール１５３１と通信する。
【０２００】
スタブモジュール１５３１のインタフェース関数が呼び出されると、その内部で、インタフェース関数の呼出し要求に関する情報をメッセージ化し、さらにメッセージをリクエストブローカ１５３２に送信する。
【０２０１】
リクエストブローカ１５３２は、リクエストメッセージを受信すると、メッセージの解釈を行い、メッセージに示された情報に基づきインタフェース関数の呼出し要求を復元し、プラグインモジュール１５３３の対応するメソッドを呼び出す。
【０２０２】
プラグインモジュール１５３３のメソッドの処理が完了するとメソッドはリターン値を返し、リクエストブローカ１５３２に制御を戻す。
【０２０３】
リクエストブローカ１５３２は、メソッドがリターンすると、メソッドからのリターン値の情報に基づくレスポンスメッセージを生成し、さらに、生成したメッセージをスタブモジュール１５３１に返信する。
【０２０４】
スタブモジュール１５３１は、レスポンスメッセージを受信すると、最初のインタフェース関数の処理を完了し、受信したレスポンスメッセージの情報に基づくリターン値を返し、ユニバーサルセンドモジュール１５０４に制御を戻す。
【０２０５】
図３７は、送信コンポーネントが備えるインタフェースを示す。
【０２０６】
すべての送信コンポーネントは、ユニバーサルセンドモジュール１５０４の枠組みの中でサブモジュールとして機能するためにあらかじめ定められたインタフェース関数一式３７０を備える。
【０２０７】
ユニバーサルセンドモジュール１５０４は、アプリケーションとしての処理の中で、データ配信プロトコルに依存する処理を必要とする際、送信コンポーネントの関数を呼び出す。
【０２０８】
図３７において、配信処理３７１は、スキャンした画像データを当該送信コンポーネントが処理する配信プロトコルによって配信するインタフェース関数である。
【０２０９】
アドレスリスト取得処理３７２は、当該送信コンポーネントが処理する配信プロトコルによって送信可能な宛先アドレスのその時点で登録されているリストを取得するためのインタフェース関数である。
【０２１０】
アドレス追加処理３７３は、当該送信コンポーネントが処理する配信プロトコルによって送信可能な宛先アドレスを、アドレスリストに追加するためのインタフェース関数である。
【０２１１】
アドレス削除処理３７４は、当該送信コンポーネントが処理する配信プロトコルによって送信可能な宛先アドレスを、アドレスリストの中から削除するためのインタフェース関数である。
【０２１２】
図３８は、送信コンポーネントの一種であるスタブモジュール１５３１が備えるインタフェースを示す。
【０２１３】
スタブモジュール１５３１のインタフェースは、送信コンポーネントのインタフェース３７０を継承しており、送信コンポーネントが備えるインタフェース関数のすべてを備える。
【０２１４】
スタブモジュール１５３１のインタフェースは、さらに、プラグインプロトコルリスト取得処理３８１を備え、プラグインプロトコルリスト取得処理３８１はプラグイン１５３３として登録されているプラグインモジュール群がそれぞれサポートする配信プロトコルのリストを取得するためのインタフェース関数である。
【０２１５】
図３９は、ユニバーサルセンドモジュール１５０４においてＣＰＵのネイティブ命令によって実装される、アドレス帳へのアドレス登録処理を示すフローチャートである。
【０２１６】
ユーザの操作に応じてアドレス帳へのアドレス登録処理が起動されると、ユニバーサルセンドモジュール１５０４は、スタブモジュール１５３１が備えるプラグインプロトコルリスト取得インタフェース関数３８１を呼び出して、登録されているプラグイン群がサポートするプロトコルのリストを取得する（Ｓ３９１）。
【０２１７】
次に、標準搭載の送信コンポーネントがサポートするプロトコル群であるＬＰＤ、ＳＬＭ、ＳＭＴＰと、前ステップで取得したプロトコルリストのプロトコル群とを合わせ、その時点でサポートしている全プロトコルリストとしてユーザに提示し、ユーザに対して選択を促す（Ｓ３９２）。
【０２１８】
ユーザがプロトコルリスト中から所望のプロトコルを選択すると（Ｓ３９３）、選択されたプロトコルをサポートする送信コンポーネントモジュールが備えるアドレス追加処理インタフェース関数３７３を呼び出す。
【０２１９】
アドレス追加処理インタフェース関数３７３の実装では、当該プロトコルによって定められたそれぞれのアドレス体系に応じたアドレスの入力をユーザに促し、ユーザが入力したアドレスが送信コンポーネントによって（それが標準搭載の送信コンポーネントであってもプラグインモジュールによる送信コンポーネントであっても同様に）記憶される（Ｓ３９４）。
【０２２０】
図４０は、ユニバーサルセンドモジュール１５０４においてＣＰＵのネイティブ命令によって実装される、配信処理を示すフローチャートである。ここでは説明を簡単にするために、すべての配信宛先に対して、同一パラメータで生成した画像ファイルを配信すればよいものとして処理を単純化している。
【０２２１】
ユーザの操作に応じて配信処理が起動されると、まずユーザが配信を行いたい宛先アドレスを選択することを待つ（Ｓ４０１）。
【０２２２】
ユーザが所望の配信宛先アドレスを１つ以上選択し配信宛先リストの選択を完了すると、コントロールＡＰＩ１５１８を呼び出して画像読み込み解像度、圧縮形式、ファイル形式などの画像ファイル生成パラメータを設定する（Ｓ４０２）。
【０２２３】
さらにコントロールＡＰＩ１５１８を呼び出してイメージスキャンを行い画像データファイルを得る（Ｓ４０３）。
【０２２４】
次に、ステップＳ４０１でユーザが選んだ宛先アドレスリストから１つの宛先アドレスを取り出し、その宛先アドレスに対応する送信コンポーネントの配信処理インタフェース関数３７１を呼び出す（Ｓ４０４）。
【０２２５】
宛先アドレスリストに含まれるすべての宛先への配信を完了するまで、ステップＳ４０４に戻って配信処理を繰り返す（Ｓ４０５）。
【０２２６】
図４１は、図３８に示したインタフェース関数のそれぞれが呼び出されたときに、スタブモジュール１５３１がリクエストブローカ１５３２に送るリクエストメッセージを示す図である。
【０２２７】
メッセージは伝送データを所定の形式で符号化したバイト列であり、メモリ空間上に構築され、オペレーティングシステムが備えるメッセージキューやソケットなどのプロセス間通信（タスク間通信）機構によって、ソフトウェアモジュールの実行インスタンス間で伝送される。
【０２２８】
プロトコル識別子４１１は、配信プロトコルを識別するための属性である。プロトコル識別子４１１の内容は、ユニバーサルセンドモジュールが呼び出したインタフェース関数の引数に含まれる情報から生成される。
【０２２９】
リクエストブローカ１５３２はプロトコル識別子４１１に基づいて、受信したリクエストを処理すべきプラグインモジュールを特定する。
【０２３０】
オペレーション識別子４１２は、呼び出すべきメソッドを識別するための属性である。オペレーション識別子４１２の内容は、ユニバーサルセンドモジュール１５０４が呼び出したインタフェース関数に固有の情報として、どのインタフェース関数が呼び出されたかに応じて決定される。
【０２３１】
リクエストブローカ１５３２は、オペレーション識別子４１２に基づいて、呼び出すべきプラグインモジュールのインタフェースメソッドを特定する。
【０２３２】
パラメータ４１３は、リクエストを特定するために必要なその他の属性である。パラメータ４１３の内容は、ユニバーサルセンドモジュール１５０４が呼び出したインタフェース関数に与えられた引数のうち、プロトコル識別情報以外の情報から生成される。
【０２３３】
リクエストブローカ１５３２は、パラメータ４１３に基づいて、プラグインモジュール１５３３のインタフェースメソッド呼び出しの引数を生成し、メソッド呼び出しを行う。
【０２３４】
図４２はリクエストブローカ１５３２がスタブモジュール１５３１に返すレスポンスメッセージを示す図である。
【０２３５】
メッセージは伝送データを所定の形式で符号化したバイト列であり、メモリ空間上に構築され、オペレーティングシステムが備えるメッセージキューやソケットなどのプロセス間通信（タスク間通信）機構によって、ソフトウェアモジュールの実行インスタンス間で伝送される。
【０２３６】
パラメータ４２１は、リクエストブローカ１５３２が呼び出したプラグインモジュール１５３３のインタフェースメソッドの返り値をメッセージ化した属性である。パラメータ４２１の内容は、インタフェースメソッドに固有の形式でメッセージ化された、インタフェースメソッドの返り値である。
【０２３７】
スタブモジュール１５３１は、したがって、リクエストに固有の形式としてパラメータ属性の内容を解釈し、ユニバーサルセンド１５０４への返り値を生成できる。
【０２３８】
図４３は、スタブモジュール１５３１においてＣＰＵのネイティブ命令によって実装される、スタブモジュールが備えるインタフェース３８０の処理を示すフローチャートである。
【０２３９】
スタブモジュール１５３１が備えるインタフェース関数の各々は、すべてこの図に示す処理を行うように実装される。各インタフェース関数が呼び出されると、当該関数呼び出しを図４１に示した処理リクエストメッセージとしてメッセージ化し、生成したリクエストメッセージをリクエストブローカ１５３２へ送信する（Ｓ４３１）。
【０２４０】
次に、リクエストブローカ１５３２から図４２に示したレスポンスメッセージを受信する（Ｓ４３２）。
【０２４１】
最後に、受信したレスポンスメッセージを解析し対応するリターン値を生成して、呼び出されたインタフェース関数の返り値としてリターンする（Ｓ４３３）。
【０２４２】
図４４は、リクエストブローカ１５３２が備えるインタフェースを示す図である。
【０２４３】
メイン処理４４１は、リクエストブローカ１５３２の主関数であり、リクエストブローカ１５３２の起動時にシステムによって割り当てられたスレッドのコンテキストによって実行される。
【０２４４】
プラグイン登録処理４４２は、プラグインモジュール１５３３をリクエストブローカ１５３２の管理下に追加登録する処理を行う。
【０２４５】
プラグイン登録解除処理４４３は、リクエストブローカ１５３２の管理下に登録されているプラグインモジュール１５３３の登録を解除する処理を行う。
【０２４６】
図４５は、リクエストブローカ１５３２が記憶し管理するプラグインリストデータのレコード形式を示す図である。
【０２４７】
プラグインリストデータにおいて、プラグイン登録処理４４２が呼び出されたときに当該プラグインモジュールに対応するレコードが追加され、プラグイン解除処理４４３が呼び出されたときに当該プラグインモジュールに対応するレコードが削除される。
【０２４８】
プラグイン参照４５１は、登録されているプラグインモジュール１５３３のオブジェクトに対応する識別情報であり、リクエストブローカ１５３２はこの参照に基づいて当該プラグインモジュールのオブジェクトをメモリ上に復元し実行コンテキストを与えることができる。
【０２４９】
配信プロトコル４５２は、当該プラグインモジュールがサポートする配信プロトコルを記述する情報である。
【０２５０】
ファイル形式４５３は、当該プラグインモジュールによる配信に最適な、および／または、配信可能な、データファイル形式を記述する情報である。
【０２５１】
圧縮方式４５４は、当該プラグインモジュールによる配信に最適な、および／または、配信可能な、データの圧縮方式を記述する情報である。
【０２５２】
解像度４５５は、当該プラグインモジュールによる配信に最適な、および／または、配信可能な、画像データの解像度を記述する情報である。
【０２５３】
図４６は、リクエストブローカ１５３２においてＪａｖａのインタプリタ命令によって実装される、メイン処理を示すフローチャートである。
【０２５４】
メイン処理は以下の一連のステップを繰り返すループを構成している。
【０２５５】
リクエストブローカ１５３２は、スタブモジュール１５３１からのメッセージの到着を待ち、リクエストメッセージを受信する（Ｓ４６１）。
【０２５６】
リクエストメッセージを受信すると、当該リクエストがプラグインプロトコルリスト取得インタフェース関数によって生成されたリクエストであるか否かを判定し、プラグインプロトコルリスト取得リクエストであればステップＳ４６６に進み、それ以外ならステップＳ４６３に進む。
【０２５７】
ステップＳ４６３では、図４１に示したリクエストメッセージのプロトコル識別子４１１の内容に基づき当該プロトコルをサポートするプラグインを決定し、当該プラグインの実装を提供するプラグインオブジェクトをリクエストブローカが支配するメモリ空間に展開する（Ｓ４６３）。
【０２５８】
次に、リクエストメッセージのオペレーション識別子４１２の内容に基づいて対応するメソッドを決定し、さらにパラメータ４１３の内容に基づいてメソッドに与える引数を生成し、メモリ上に読み込んだオブジェクトの当該メソッドを呼び出す（Ｓ４６４）。
【０２５９】
プラグインオブジェクトのメソッドの呼び出しがリターンすると、その返り値を図４２に示したレスポンスメッセージの形式にメッセージ化し、生成したメッセージをスタブモジュール１５３１に送信する（Ｓ４６５）。
【０２６０】
さらに、ステップＳ４６１に戻り一連の処理を繰り返す。一方、ステップＳ４６６からの一連のステップではプラグインプロトコルリスト取得要求に応じた処理を行う。
【０２６１】
プラグインプロトコルリスト取得要求を受信すると、図４５に示した、プラグインリストデータを検索し、登録されているプラグインモジュール群がサポートしているプロトコルのリストを生成する（Ｓ４６６）。
【０２６２】
次に、プロトコルリストを所定の形式でメッセージ化し、生成したレスポンスメッセージをスタブモジュールに送信する（Ｓ４６７）。さらに、ステップＳ４６１に戻り一連の処理を繰り返す。
【０２６３】
図４７は、送信コンポーネント用プラグインモジュール１５３３が備えるインタフェースを示す。
【０２６４】
すべての送信コンポーネント用プラグインモジュールは、リクエストブローカ１５３２の枠組みの中でサブモジュールとして機能するために、あらかじめ定められたインタフェース関数一式４７０を備える。
【０２６５】
リクエストブローカ１５３２は、その処理の中で、プラグインモジュールのインタフェース関数を呼び出す。
【０２６６】
図４７において、配信処理４７１は、スキャンした画像データを当該プラグインモジュールが処理する配信プロトコルによって配信するインタフェース関数である。
【０２６７】
アドレスリスト取得処理４７２は、当該プラグインモジュールが処理する配信プロトコルによって送信可能な宛先アドレスのその時点で登録されているリストを取得するためのインタフェース関数である。
【０２６８】
アドレス追加処理４７３は、当該プラグインモジュールが処理する配信プロトコルによって送信可能な宛先アドレスを、アドレスリストに追加するためのインタフェース関数である。
【０２６９】
アドレス削除処理４７４は、当該プラグインモジュールが処理する配信プロトコルによって送信可能な宛先アドレスを、アドレスリストの中から削除するための関数である。
【０２７０】
図４８は、ＩＰＰによる配信をサポートするプラグインモジュール１５３３が記憶し管理するアドレスリストデータのレコード形式を示す図である。
【０２７１】
ｉｐｐ−ＵＲＬ４８１は、ＩＰＰの体系において宛先プリンタのアドレスを記述するＰｒｉｎｔｅｒ−ＵＲＩであり、ＲＦＣ２９１０等に開示されている公知のＵＲＩスキームに従って表現される。各レコードは例えば次に示すような形式の可変長の文字列である。
【０２７２】
ipp://myhost.com/myprinter/myqueue。
【０２７３】
一方の配信パラメータ４８２は、当該アドレス宛の配信に最適な、および／または、配信可能な各種の配信に係るパラメータを記述する情報である。
【０２７４】
図４９は、ＩＰＰによる配信をサポートするプラグインモジュール１５３３においてＪａｖａのインタプリタ命令によって実装される、アドレス追加処理を示すフローチャートである。
【０２７５】
プラグインモジュール１５３３が備えるアドレス追加処理のためのインタフェース関数４７３が呼び出されると、ＩＰＰ配信用のプラグインモジュール１５３３は図４８に示した既に登録されているアドレスリストデータをハードディスクから読み込む（Ｓ４９１）。
【０２７６】
次に、ユーザに対して追加するＩＰＰアドレス４８１と、もしあればそのアドレスに固有の最適、および／または、可能な配信パラメータ４８２と、の入力を促し、ユーザによるアドレス入力が終了するまで待つ（Ｓ４９２）。
【０２７７】
アドレス入力が終了すると、ユーザがキャンセルによってアドレス入力を終了したか否かを判定し、もしキャンセルであればステップＳ４９６に進み、もし正常な完了であればステップＳ４９４に進む。
【０２７８】
ユーザが正常にアドレスの入力を完了した場合は、入力されたアドレス４８１と配信パラメータ４８２とをアドレスリストに追加しハードディスクに書き込む（Ｓ４９４）。
【０２７９】
さらに、正常終了を示す返り値をリターンして一連の処理を終了する（Ｓ４９５）。
【０２８０】
一方、ユーザがアドレス入力をキャンセル終了した場合は、キャンセル終了を示す返り値をリターンして一連の処理を終了する（Ｓ４９６）。
【０２８１】
図５０は、ＩＰＰによる配信をサポートするプラグインモジュール１５３３においてＪａｖａのインタプリタ命令によって実装される、配信処理を示すフローチャートである。
【０２８２】
プラグインモジュール１５３３が備えるアドレス追加処理のためのインタフェース関数４７０が呼び出されると、ＩＰＰ配信用のプラグインモジュール１５３３は、関数呼び出しの引数として与えられた宛先アドレスをアドレスリストデータ中から検索し、そのレコードの配信パラメータを読み込む（Ｓ５０１）。
【０２８３】
次に、宛先アドレスによって示されたＩＰＰプリンタのＴＣＰポート番号６３１番との間に公知のＨＴＴＰプロトコルによる接続を確立し、関数呼び出しの引数として与えられた画像ファイルをプリントするためのＩＰＰプリントジョブ要求をこの接続に対して送信する（Ｓ５０２）。
【０２８４】
ＩＰＰプリントジョブを送信するためにＨＴＴＰ接続に書き込むデータの冒頭部分は、例えば次のようなバイト列である。
【０２８５】
POST /myprinter/myqueue HTTP/1.1
Host: myhost.com:631
Content-type: application/ipp
Transfer-Encoding: chunked
…
IPPプリントジョブ要求
…。
【０２８６】
次に、接続からＩＰＰプリントジョブ応答を読み出し、配信が正常終了したか否かを判定する（Ｓ５０３）。もし正常終了であれば、正常終了を示す返り値をリターンして終了する（Ｓ５０４）。もし異常終了であれば、エラー終了を示す返り値をリターンして終了する（Ｓ５０５）。
【０２８７】
以上のようにして、画像処理装置中のソフトウェア組込み型電子装置にＪａｖａのインタプリタ環境を導入し、ネイティブ機会命令で記述された標準搭載機能ソフトウェアが必要とする処理の一部分をＪａｖａのクラスとして記述し、Ｊａｖａのインタプリタ環境で動作するこのクラスのオブジェクトとネイティブな標準搭載機能ソフトウェアとの間をインターフェースし、ネイティブな標準搭載機能ソフトウェアのプラグインモジュールをＪａｖａインタプリタ上で動的に追加することにより、画像処理装置としてソフトウェア組込み型電子装置の柔軟で動的な機能拡張が可能となる。
【０２８８】
上記実施の形態においては、センド機能を構成する送信コンポーネントの配信プロトコルを処理するアルゴリズムとそのプロトコルにおける宛先アドレス情報をローカルに管理するアルゴリズムとをプラグイン化したが、他のアルゴリズム部品をプラグイン化するように構成することもできる。
【０２８９】
たとえば、図１６のセンド画面の表示処理をプラグインによって置き換え可能に構成した場合、プラグインの実装によっては単一のプロトコルや単一の宛先アドレスに固定した単純なセンド画面を提供することもできる。これによって、特定業務のワークフローに特化した簡単操作のセンドアプリケーションを、配信プロトコルやアドレス情報はネイティブのプログラムを変更することなくそのまま利用することができる。操作画面をプラグイン化する効果は、言うまでもなくセンドアプリケーションに限らずすべてのアプリケーションに対して有効である。
【０２９０】
また、たとえば、図１８のアドレス帳画面の中に複数のアドレスをリスト表示する処理において、リスト表示のアルゴリズムをプラグインによって置き換え可能に構成することもできる。この場合、各アドレスレコードの表示順序を制御するソートアルゴリズムや、どのレコードの表示を抑制するかを制御するフィルタアルゴリズムなどを柔軟に置き換えることが可能となり、特定のユーザにとって最適なリスト表示を行うことができる。言うまでもなく、アドレスリストに限らず、他の情報のリスト表示処理においても有効である。
【０２９１】
また、たとえば、アドレスブック４０５１そのものをプラグイン化してもよい。この場合、たとえば外部のサーバが管理するディレクトリサービスをＬＤＡＰやＮＩＳ、ＤＮＳなどのネットワークプロトコルによって利用する実装に置き換えることも可能となる。
【０２９２】
また、たとえば、一般に装置の修理・交換や装置ファームウェアのアップデート時などに、アドレス情報などの各種データを装置外部に読み出してまたそれを装置内部に書き戻すデータエクスポート・インポートの機能が必要とされるが、このエクスポート・インポートのアルゴリズムをプラグイン化するように構成することもできる。この場合、どういった種類の情報をどのような形式（フォーマット）でどのようなプロトコルによって外部に入出力するかをプラグインの実装次第で柔軟に制御することが可能となる。たとえばＸＭＬ形式でＨＴＴＰプロトコルによって入出力するようなプラグインを実装し利用できる。
【０２９３】
また、たとえば、装置内部のＨＤＤ２００４などの不揮発性メモリに記憶するデータを装置外部の不揮発性記憶にバックアップするバックアップ処理のスケジューラをプラグイン化することもできる。この場合、すべてのファイルをバックアップするフルバックアップと、前回のバックアップ時点から変更されたファイルのみをバックアップするインクリメンタルバックアップとを適宜組み合わせるなどして、特定のユーザの運用形態に最適なタイミングでバックアップを行うカスタマイズが可能となる。
【０２９４】
また、たとえば、ＷＡＮからＭＯＤＥＭ２０５０が受信したファクスやＬＡＮからネットワーク２０１０が受信したＥメールやＩＦＡＸなどの文書が一時蓄積されるインボックスを監視する監視アルゴリズムをプラグイン化することもできる。この場合、受信文書はプリントアウトのようなあらかじめ定められた処理に送られるだけでなく、プラグインのアルゴリズムの実装次第で、たとえば図１５に示したような各種の配信機能を利用してさまざまな宛先に転送されるように構成することも可能である。いくつかの受信を留め置いてから転送を行ったり、受信を通知するＥメールをユーザの携帯電話宛に送ったり、受信文書をウェブサーバにアップロードしてウェブブラウザから閲覧可能にするなど、特定のユーザが所望する個別の運用形態に合わせたあらゆる処理に置き換えることが容易となる。
【０２９５】
また、たとえば、ＲＩＰ２０６０、スキャナ画像処理２０８０、プリンタ画像処理２０９０、画像回転２０３０、画像圧縮２０４０の各画像処理ブロックのそれぞれの内部もしくは横並びに、文書データの変換処理を行う文書フィルタブロックを挿入し、文書データ変換処理をプラグインとして追加可能に構成してもよい。この場合、特定用途向きの独自の画像処理や文書処理をプラグインのアルゴリズムによって提供可能なことは言うまでもないが、さらに、プラグインの実装次第では処理を装置外部のコンピュータなどが提供する機能に委譲することによって、外部装置と組み合わせた分散システムによって機能拡張を行う柔軟性も獲得できる。一例として、装置外部のコンピュータ上で稼働する高度なＯＣＲ機能とのインタフェースを行うプラグインを構成すれば、装置内にはＯＣＲ機能を追加しなくても画像からテキストデータを抽出する文書処理が装置内部で利用可能となる。さらに外部コンピュータが提供する翻訳機能とを組み合わせて、スキャンや受信した画像データをＯＣＲし翻訳して別の言語でプリントアウトするような拡張機能を構成することもできる。
【０２９６】
（他の実施の形態）
本実施の形態においては、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても達成される。
【０２９７】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０２９８】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【０２９９】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０３００】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０３０１】
【発明の効果】
以上の説明から明らかなように本発明によれば、動的なデータ構造やアルゴリズムの実装と部分的なソフトウェアモジュールのインクリメンタルリンクに最適なインタプリタをシステム内部の仮想的なオペレーティングシステムとして導入し、プロセッサのネイティブ機械命令によって記述されたソフトウェアのプラグインモジュールをインタプリタ上で動的に追加することにより、柔軟で動的な機能拡張が可能なソフトウェア組込み型電子装置を提供することができる。
【図面の簡単な説明】
【図１】本発明に係る画像処理装置を含むシステムの構成図である。
【図２】本発明に係る画像処理装置のソフトウェアの構成図である。
【図３】本発明に係る画像処理装置のブロック図である。
【図４】スキャナ部、プリンタ部、及び操作部の外形図である。
【図５】操作部を示す図である。
【図６】スキャナ画像処理部のブロック図である。
【図７】プリンタ画像処理部のブロック図である。
【図８】画像圧縮処理部のブロック図である。
【図９】画像回転部のブロック図である。
【図１０】画像回転処理の説明図である。
【図１１】画像回転処理の説明図である。
【図１２】デバイスＩ／Ｆ部のブロック図である。
【図１３】操作部を示す図である。
【図１４】操作画面を示す図である。
【図１５】画像処理装置１００１によるデータの配信に関する組込みアプリケーションブロックを表す図である。
【図１６】センドメイン画面を示す図である。
【図１７】センド初期画面を示す図である。
【図１８】アドレスブック画面を示す図である。
【図１９】詳細情報画面を示す図である。
【図２０】詳細宛先画面を示す図である。
【図２１】フルキーボードを示した図である。
【図２２】テンキーボードを示した図である。
【図２３】詳細宛先画面を示す図である。
【図２４】詳細宛先画面を示す図である。
【図２５】詳細宛先画面を示す図である。
【図２６】ハードディスク設定画面を示す図である。
【図２７】プリント設定画面を示す図である。
【図２８】紙サイズ一覧画面を示す図である。
【図２９】ソータ一覧画面を示す図である。
【図３０】スキャン設定画面を示す図である。
【図３１】紙サイズ一覧画面を示す図である。
【図３２】解像度一覧画面を示す図である。
【図３３】スキャンモード一覧画面を示す図である。
【図３４】データの配信に関する組込みアプリケーションをプラグインモジュールによって拡張した状態を示すブロック図である。
【図３５】データの配信に関する組込みアプリケーションを実装するソフトウェアモジュール群の階層関係を表す図である。
【図３６】データの配信に関する組込みアプリケーションのプラグインによる拡張を実装するソフトウェアモジュール間の対話処理を示す図である。
【図３７】送信コンポーネントが備えるインタフェースを示す図である。
【図３８】スタブモジュール１５３１が備えるインタフェースを示す図である。
【図３９】データの配信に関する組込みアプリケーションのアドレス帳へのアドレス登録処理を示すフローチャートである。
【図４０】データの配信に関する組込みアプリケーションの配信処理を示すフローチャートである。
【図４１】スタブモジュール１５３１からリクエストブローカ１５３２に送るリクエストメッセージのデータ構造を示す図である。
【図４２】リクエストブローカ１５３２がスタブモジュール１５３１に送るレスポンスメッセージのデータ構造を示す図である。
【図４３】スタブモジュール１５３１におけるインタフェース関数の実装を示すフローチャートである。
【図４４】リクエストブローカ１５３２が備えるインタフェースを示す図である。
【図４５】リクエストブローカ１５３２が記憶管理するプラグインリストデータのデータ形式を示す図である。
【図４６】リクエストブローカ１５３２におけるメイン処理を示すフローチャートである。
【図４７】送信コンポーネント用プラグインモジュール１５３３が備えるインタフェースを示す図である。
【図４８】ＩＰＰ配信のためのプラグインモジュール１５３３が記憶管理するアドレスリストデータのレコード形式を示す図である。
【図４９】ＩＰＰ配信のためのプラグインモジュール１５３３におけるアドレス追加処理の実装を示すフローチャートである。
【図５０】ＩＰＰ配信のためのプラグインモジュール１５３３における配信処理の実装を示すフローチャートである。
【符号の説明】
３７０  インタフェース関数一式
３８０  インタフェース
４１１  プロトコル識別子
４１２  オペレーション識別子
４１３  パラメータ
４４１  メイン処理
４４２  プラグイン登録処理
４４３  プラグイン解除処理
４５１  プラグイン参照
４５２  配信プロトコル
４５３  ファイル形式
４５４  圧縮方式
４５５  解像度
４７０  インタフェース関数一式
４７１  配信処理
４７２  アドレスリスト取得処理
４７３  アドレス追加処理
４７４  アドレス削除処理
４８１  アドレス
４８２  配信パラメータ
１００１  画像処理装置
１０３１  ファクシミリ装置
１０４０  プリンタ
１５０４  ユニバーサルセンドモジュール
１５０５  ＰＲＴモジュール
１５０６  Ｅメールモジュール
１５０７  データベースモジュール
１５０８  データプロセッサモジュール
１５１８  ＡＰＩ
１５２９  リアルタイムオペレーティングシステム
１５３０  インタプリタ
１５３１  スタブモジュール
１５３２  リクエストブローカ
１５３３  プラグインモジュール
２０００  コントローラユニット
２００１  ＣＰＵ
２００７  システムバス
２００８  画像バス
２０１０  ネットワーク
２０２１  コントローラ
２０２２  スキャンバッファ
２０２３  シリアルパラレル・パラレルシリアル変換
２０２４  パラレルシリアル・シリアルパラレル変換
２０２５  プリントバッファ
２０３０  画像回転部
２０３１  コントローラ
２０３２  画像回転部
２０４０  画像圧縮処理部
２０４１  コントローラ
２０４２  入力バッファ
２０４３  画像圧縮部
２０４５  出力バッファ
２０８０  スキャナ画像処理部
２０９０  プリンタ画像処理部
３２００  送信メイン画面
３２０２  宛先表示領域
３２０３  詳細宛先数表示領域
３２０４  宛先スクロールボタン
３２０５  サブジェクト入力領域
３２０６  メッセージ入力領域
３２０７  ファイル名入力領域
３２２１  アドレス帳表示領域
３２２７  項目選択件数表示領域
３２７０  クラス詳細サブ画面
３３４０  プリントアウトサブ画面
３３７０  スキャン設定サブ画面
４０５１  アドレスブック
４０５０  ＵＩ
４０５１  アドレスブック
４１００  リモートコピーアプリケーション
４１５０  ユニバーサルセンドモジュール
４１５０  同報配信アプリケーション
４２００  ウエブプルプリントアプリケーション
４２５０  ウエブサーバアプリケーション
４５５０  メールサーバ
４６５０  ウェブサーバ
４７００  ウェブブラウザ
【図１】
0004227342.tif 000002
【図２】
0004227342.tif 000003
【図３】
0004227342.tif 000004
【図４】
0004227342.tif 000005
【図５】
0004227342.tif 000006
【図６】
0004227342.tif 000007
【図７】
0004227342.tif 000008
【図８】
0004227342.tif 000009
【図９】
0004227342.tif 000010
【図１０】
0004227342.tif 000011
【図１１】
0004227342.tif 000012
【図１２】
0004227342.tif 000013
【図１３】
0004227342.tif 000014
【図１４】
0004227342.tif 000015
【図１５】
0004227342.tif 000016
【図１６】
0004227342.tif 000017
【図１７】
0004227342.tif 000018
【図１８】
0004227342.tif 000019
【図１９】
0004227342.tif 000020
【図２０】
0004227342.tif 000021
【図２１】
0004227342.tif 000022
【図２２】
0004227342.tif 000023
【図２３】
0004227342.tif 000024
【図２４】
0004227342.tif 000025
【図２５】
0004227342.tif 000026
【図２６】
0004227342.tif 000027
【図２７】
0004227342.tif 000028
【図２８】
0004227342.tif 000029
【図２９】
0004227342.tif 000030
【図３０】
0004227342.tif 000031
【図３１】
0004227342.tif 000032
【図３２】
0004227342.tif 000033
【図３３】
0004227342.tif 000034
【図３４】
0004227342.tif 000035
【図３５】
0004227342.tif 000036
【図３６】
0004227342.tif 000037
【図３７】
0004227342.tif 000038
【図３８】
0004227342.tif 000039
【図３９】
0004227342.tif 000040
【図４０】
0004227342.tif 000041
【図４１】
0004227342.tif 000042
【図４２】
0004227342.tif 000043
【図４３】
0004227342.tif 000044
【図４４】
0004227342.tif 000045
【図４５】
0004227342.tif 000046
【図４６】
0004227342.tif 000047
【図４７】
0004227342.tif 000048
【図４８】
0004227342.tif 000049
【図４９】
0004227342.tif 000050
【図５０】
0004227342.tif 000051