(57)【要約】【課題】  プリンタドライバにプラグイン形式で新たな機能を追加した環境下においても的確なコンフリクト処理を実現する情報処理装置、印刷制御方法及びそのプログラムを提供する。【解決手段】  コンフリクト処理ルール３０１は、プリンタドライバが提供する複数の機能において２つ以上の機能に関する設定値の間で成立する依存関係に応じて定めたルールである。コンフリクト処理ルール３０８は、上記複数の機能の何れか一つ以上とプラグインによる拡張機能とに関する設定値の間で成立する依存関係に応じて定めたルールである。推論エンジン３０２及びコンフリクトマネージャ３０３は、介してコンフリクト処理ルール３０１及びコンフリクト処理ルール３０８を参照して、複数の機能と拡張機能とのいずれか２つの設定値間に不整合が生じないよう設定値の調整処理を行う。【選択図】  図３ 
2005190467.tif 000002
【特許請求の範囲】
【請求項１】
印刷処理関連プログラムにより実現可能な機能に更に拡張機能を付与可能な情報処理装置であって、
前記印刷処理関連プログラムにおける２つ以上の設定値の間で成立する依存関係を定めた第１のコンフリクト処理ルールとして格納する第１のルール格納手段と、
前記印刷処理関連プログラムの機能と、前記拡張機能に入力される設定値について定められる依存関係に応じて定めた第２のコンフリクト処理ルールとして格納する第２のルール格納手段と、
前記第１のルール格納手段及び前記第２のルール格納手段から、前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを読み込み、読み込んだ前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを基にして、前記印刷処理関連プログラムの機能と前記拡張機能とのいずれか２つの設定値間に不整合が生じないよう設定値の調整処理を行う設定調整手段と
を具備することを特徴とする情報処理装置。
【請求項２】
前記拡張機能が付与されている場合に、前記第２のコンフリクト処理ルールが第２のルール格納手段に格納されているか否かを確認する確認手段を更に具備することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記設定調整手段は、前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを優先度の高い順に適用して、前記印刷処理関連プログラムの機能と前記拡張機能とのいずれか２つの設定値間に不整合が生じないよう設定値の調整処理を行うことを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項４】
種々の情報を表示する表示手段と、
利用者が視覚的に前記印刷処理関連プログラムの機能及び前記拡張機能の設定状態を確認可能な設定状態画面を前記表示手段に表示する画面表示手段と
を更に具備し、
前記画面表示手段が前記表示手段に表示する前記設定状態画面は、前記設定調整手段により設定値の調整処理後の設定状態を示すものであること
を特徴とする請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記画面表示手段が前記表示手段に表示する前記設定状態画面において、前記印刷処理関連プログラムの機能及び前記追加機能の各設定値は、利用者の操作により変更可能であり、利用者が一つまたは複数の前記印刷処理関連プログラムの機能または前記追加機能の設定値を変更した場合に、前記設定調整手段は、読み込んだ前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを基にして、変更後の印刷処理関連プログラムの機能と拡張機能とのいずれか２つの設定値間に不整合が生じないよう設定値の調整処理を行うことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
印刷処理関連プログラムにより実現可能な機能に更に拡張機能を付与可能な情報処理装置を用いた印刷制御方法であって、
前記印刷処理関連プログラムの機能及び前記拡張機能の設定に関する設定情報を取得する第１のステップと、
前記印刷処理関連プログラムにおける２つ以上の設定値の間で成立する依存関係に応じて定めた第１のコンフリクト処理ルールとして格納する第１のルール格納手段と、前記印刷処理関連プログラムの機能及び前記拡張機能に入力される設定値について定められる依存関係に応じて定めた第２のコンフリクト処理ルールとして格納する第２のルール格納手段とから、前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを読み込み、読み込んだ前記第１のコンフリクト処理
ルール及び前記第２のコンフリクト処理ルールを基にして、前記第１のステップで取得した前記設定情報を参照することで前記印刷処理関連プログラムの機能と前記拡張機能とのいずれか２つの設定値間に不整合が生じないよう設定値の調整処理を行う第２のステップと
を有することを特徴とする印刷制御方法。
【請求項７】
前記拡張機能が付与されている場合に、前記第２のコンフリクト処理ルールが第２のルール格納手段に格納されているか否かを確認する確認ステップを更に有することを特徴とする請求項６に記載の印刷制御方法。
【請求項８】
前記第２のステップは、前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを読み込み、前記第１のステップで取得した前記設定情報を参照して、前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを優先度の高い順に適用して、前記印刷処理関連プログラムの機能と前記拡張機能とのいずれか２つの設定値間に不整合が生じないよう設定値の調整処理を行うことを特徴とする請求項６または請求項７に記載の印刷制御方法。
【請求項９】
前記情報処理装置が表示手段を備える場合に、利用者が視覚的に前記印刷処理関連プログラムの機能及び前記拡張機能の設定状態を確認可能な設定状態画面を前記表示手段に表示する画面表示ステップを更に有し、
前記画面表示ステップで前記表示手段に表示する前記設定状態画面は、前記第２のステップにより設定値の調整処理後の設定状態を示すものであること
を特徴とする請求項６〜８のいずれか１項に記載の印刷制御方法。
【請求項１０】
前記画面表示ステップで前記表示手段に表示する前記設定状態画面において、前記印刷処理関連プログラムの機能及び前記追加機能の各設定値は、利用者の操作により変更可能であり、利用者が一つまたは複数の前記印刷処理関連プログラムの機能または前記追加機能の設定値を変更した場合に、前記第１のルール格納手段及び前記第２のルール格納手段とから、前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを読み込み、読み込んだ前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを基にして、変更後の印刷処理関連プログラムの機能と拡張機能とのいずれか２つの設定値間に不整合が生じないよう設定値の調整処理を行う変更後調整ステップを更に有することを特徴とする請求項９に記載の印刷制御方法。
【請求項１１】
印刷処理関連プログラムにより実現可能な機能に更に拡張機能を付与可能な情報処理装置を用いた印刷制御方法を制御する制御プログラムであって、
前記印刷処理関連プログラムの機能及び前記拡張機能の設定に関する設定情報を取得する第１のステップと、
前記印刷処理関連プログラムにおける２つ以上の設定値の間で成立する依存関係に応じて定めた第１のコンフリクト処理ルールとして格納する第１のルール格納手段と、前記印刷処理関連プログラムの機能及び前記拡張機能に入力される設定値について定められる依存関係に応じて定めた第２のコンフリクト処理ルールとして格納する第２のルール格納手段とから、前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを読み込み、読み込んだ前記第１のコンフリクト処理ルール及び前記第２のコンフリクト処理ルールを基にして、前記第１のステップで取得した前記設定情報を参照することで前記印刷処理関連プログラムの機能と前記拡張機能とのいずれか２つの設定値間に不整合が生じないよう設定値の調整処理を行う第２のステップと
を有することを特徴とする印刷制御方法をコンピュータに実行させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリンタドライバに拡張機能を提供するための情報処理装置、印刷制御方法及びそのプログラムに関するものである。
【背景技術】
【０００２】
従来、プリンタ等のデバイスを製造するハードウェアベンダーからのプリンタドライバのインストールセットのリリース形態としては、デバイスの出荷時に同梱される場合や、各ベンダーのサイトから公開して、ユーザがダウンロードして使用する場合などがある。このような経路でリリースされたプリンタドライバは、様々な環境において使用されているが、使用環境が多様化する中で、ある特定機能をプリンタドライバで実現したいという要望が多くなってきている。とくに大企業などのエンタープライズ環境においては、その傾向が強くなっている。
【０００３】
このような背景において、昨今プラグイン形式でこの特定機能の追加を実現するプリンタドライバが出現している。このプラグイン形式のプリンタドライバの機能拡張とは、プリンタベンダーから配布されているプリンタドライバのインストールセットとは別に、差分モジュール、つまりプラグインを提供して機能追加を実現する方法である。帳票や住民票などの複写を抑止する地紋印刷がプリンタを通して実現できる、地紋印刷などの特殊用途の機能を、プラグイン形式でユーザに提供する場合などがその一例である。この地紋印刷機能とは、コンピュータを用いて作られたコンテンツを印刷出力する際に、コンテンツのデータに加え、地紋と呼ばれる画像データを生成し、これらのデータを重ねて出力する技術である。
【０００４】
例えば、ユーザが設定した印刷機能に応じて、出力機器を制御するプリンタドライバに組み込むモジュール群（プラグイン）を決定することにより、冗長性を減少させ、メモリ不足を軽減して、印刷処理の簡潔化や印刷速度の向上を実現する情報処理装置に関する技術が開示されている（例えば、特許文献１参照。）。
【０００５】
このプラグイン形式での機能拡張において、ユーザが追加された機能を使用するために、追加先のプリンタドライバのＵＩ（ユーザインタフェース）となる印刷設定シート上に、追加機能独自の設定シートを追加することでユーザに追加機能の設定を可能にさせる場合がある。このとき、ユーザがこの追加機能の設定を変更する場合や、元のプリンタドライバで設定可能な設定を変更する場合に、お互いの設定値間で不整合が生じる場合が考えられる。また、追加機能の設定変更をＵＩで実現しない場合においても、追加機能を実現することによって、他の設定値との不整合を生じることが考えられる。追加機能が追加される前であれば、プリンタドライバは、印刷設定シートにより設定変更環境（ＵＩ）をユーザに提供する際に、設定値間に不整合が生じないよう、ユーザの設定変更に応じて設定可能な項目のみを設定可能として、設定不可能な項目（不整合が生じる項目）に対しては設定できないようにしていた。また、上記のようにプリンタドライバにおける印刷設定において、設定値間の不整合を生じないようにする処理をコンフリクト処理という。
【０００６】
地紋印刷においては、特定の解像度を想定して地紋画像を作成している場合、想定外の解像度で印刷されてしまうと、地紋印刷の効果が薄れてしまうなどの問題がある。期待通りの効果を実現するために、地紋印刷機能が有効な場合は、ＵＩ上で解像度を制限するなどの処理を実施する必要がある。
【０００７】
【特許文献１】特開２００２−１０８５８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、プリンタドライバにとってプラグイン形式で追加されたモジュールは未知であるため、元々のプリンタドライバの設定値と追加機能による設定値との間で不整合が生じているかどうか判別することができないため、プラグインによる追加機能を考慮した的確なコンフリクト処理ができないという問題がある。
【０００９】
本発明は、上述した事情を考慮してなされたもので、プリンタドライバにプラグイン形式で新たな機能を追加した環境下においても的確なコンフリクト処理を実現する情報処理装置、印刷制御方法及びそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
この発明は、上述した課題を解決すべくなされたもので、本発明による情報処理装置においては、印刷処理関連プログラムにより実現可能な機能に更に拡張機能を付与可能な情報処理装置であって、前記印刷処理関連プログラムにおける２つ以上の設定値の間で成立する依存関係に応じて定めた第１のコンフリクト処理ルールとして格納する第１のルール格納手段と、印刷処理関連プログラムの機能と、拡張機能に入力される設定値について定められる依存関係に応じて定めた第２のコンフリクト処理ルールとして格納する第２のルール格納手段と、第１のルール格納手段及び第２のルール格納手段から、第１のコンフリクト処理ルール及び第２のコンフリクト処理ルールを読み込み、読み込んだ第１のコンフリクト処理ルール及び第２のコンフリクト処理ルールを基にして、印刷処理関連プログラムの機能と拡張機能とのいずれか２つの設定値間に不整合が生じないよう設定値の調整処理を行う設定調整手段とを具備することを特徴とする。
【００１１】
また、本発明による印刷制御方法においては、印刷処理関連プログラムにより実現可能な機能に更に拡張機能を付与可能な情報処理装置を用いた印刷制御方法であって、印刷処理関連プログラムの機能及び拡張機能の設定に関する設定情報を取得する第１のステップと、前記印刷処理関連プログラムにおける２つ以上の設定値の間で成立する依存関係に応じて定めた第１のコンフリクト処理ルールとして格納する第１のルール格納手段と、印刷処理関連プログラムの機能及び拡張機能に入力される設定値について定められる依存関係に応じて定めた第２のコンフリクト処理ルールとして格納する第２のルール格納手段とから、第１のコンフリクト処理ルール及び第２のコンフリクト処理ルールを読み込み、読み込んだ第１のコンフリクト処理ルール及び第２のコンフリクト処理ルールを基にして、第１のステップで取得した設定情報を参照することで印刷処理関連プログラムの機能と拡張機能とのいずれか２つの設定値間に不整合が生じないよう設定値の調整処理を行う第２のステップとを有することを特徴とする。
【００１２】
また、本発明によるプログラムは、印刷処理関連プログラムにより実現可能な機能に更に拡張機能を付与可能な情報処理装置を用いた印刷制御方法を制御する制御プログラムであって、印刷処理関連プログラムの機能及び拡張機能の設定に関する設定情報を取得する第１のステップと、前記印刷処理関連プログラムにおける２つ以上の設定値の間で成立する依存関係に応じて定めた第１のコンフリクト処理ルールとして格納する第１のルール格納手段と、印刷処理関連プログラムの機能及び拡張機能に入力される設定値について定められる依存関係に応じて定めた第２のコンフリクト処理ルールとして格納する第２のルール格納手段とから、第１のコンフリクト処理ルール及び第２のコンフリクト処理ルールを読み込み、読み込んだ第１のコンフリクト処理ルール及び第２のコンフリクト処理ルールを基にして、第１のステップで取得した設定情報を参照することで印刷処理関連プログラムの機能と拡張機能とのいずれか２つの設定値間に不整合が生じないよう設定値の調整処理を行う第２のステップとを有することを特徴とする印刷制御方法をコンピュータに実行させる制御プログラムである。
【発明の効果】
【００１３】
以上により、本発明による情報処理装置、印刷制御方法及びそのプログラムは、印刷処理関連プログラム（プリンタドライバ）にプラグイン形式で新たな機能を追加した環境下においても的確なコンフリクト処理を実現する。
【発明を実施するための最良の形態】
【００１４】
以下添付図面を参照して本発明の好適な実施形態について詳細に説明する。
図１は、本発明の一実施形態におけるホストコンピュータ（情報処理装置）を含む印刷処理システムの概略構成を示すブロック図である。尚、一実施形態として印刷処理システムを示しているが、この限りではなく、単体の機器であっても、複数の機器からなるシステムであっても、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワークを介して接続が為され処理が行われるシステムであってもよく、プリンタドライバを実行できる環境であればよい。
【００１５】
図１において、３０００はホストコンピュータ（情報処理装置）であり、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３のプログラム用ＲＯＭあるいは外部メモリ１１に記憶された文書処理プログラム等に基づいて図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理を実行するＣＰＵ（中央演算装置）１を備え、システムバス４に接続される各デバイスをＣＰＵ１が総括的に制御する。また、このＲＯＭ３のプログラム用ＲＯＭあるいは外部メモリ１１には、ＣＰＵ１の制御プログラムであるオペレーティングシステムプログラム（ＯＳ）等を記憶し、ＲＯＭ３のフォント用ＲＯＭあるいは外部メモリ１１には上記文書処理の際に使用するフォントデータ等を記憶し、ＲＯＭ３のデータ用ＲＯＭあるいは外部メモリ１１には上記文書処理等を行う際に使用する各種データを記憶する。２は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、ＣＰＵ１の主メモリ、ワークエリア等として機能する。
【００１６】
５は、キーボードコントローラ（ＫＢＣ）で、キーボード９や不図示のポインティングデバイスからの入力を制御する。６は、ＣＲＴコントローラ（ＣＲＴＣ）であり、ＣＲＴディスプレイ（ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ））１０の表示を制御する。７は、ディスクコントローラ（ＤＫＣ）であり、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、プリンタ制御コマンド生成プログラム（以下プリンタドライバ）等を記憶するハードディスク（ＨＤ）、フレキシブルディスク（ＦＤ）等の外部メモリ１１とのアクセスを制御する。
【００１７】
８は、プリンタコントローラ（ＰＲＴＣ）で、所定の双方向性インターフェース（インターフェース）２１を介してプリンタ１５００に接続されて、プリンタ１５００との通信制御処理を実行する。なお、ＣＰＵ１は、例えばＲＡＭ２上に設定された表示情報ＲＡＭへのアウトラインフォントの展開（ラスタライズ）処理を実行し、ＣＲＴ１０上でのＷＹＳＩＷＹＧ（Ｗｈａｔ  Ｙｏｕ  Ｓｅｅ  Ｉｓ  Ｗｈａｔ  Ｙｏｕ  Ｇｅｔ）を可能としている。また、ＣＰＵ１は、ＣＲＴ１０上の不図示のマウスカーソル等で指示されたコマンドに基づいて登録された種々のウインドウを開き、種々のデータ処理を実行する。ユーザは印刷を実行する際、印刷の設定に関するウインドウを開き、後述するプリンタ１５００に対する設定や、印刷モードの選択を含むプリンタドライバに対する印刷処理方法の設定を行える。
【００１８】
プリンタ１５００において、１２はプリンタＣＰＵであり、ＲＯＭ１３のプログラム用ＲＯＭに記憶された制御プログラム等あるいは外部メモリ１４に記憶された制御プログラム等に基づいてシステムバス１５に接続される印刷部（プリンタエンジン）１７に出力情報としての画像信号を出力する。また、このＲＯＭ１３のプログラムＲＯＭには、ＣＰＵ１２の制御プログラム等を記憶する。ＲＯＭ１３のフォント用ＲＯＭには、上記出力情報を生成する際に使用するフォントデータ等を記憶し、ＲＯＭ１３のデータ用ＲＯＭにはハードディスク等の外部メモリ１４がないプリンタ１５００の場合には、ホストコンピュータ３０００上で利用される情報等を記憶している。
【００１９】
ＣＰＵ１２は、入力部１８を介してホストコンピュータ３０００との通信処理が可能となっており、プリンタ１５００内の情報等をホストコンピュータ３０００に通知可能に構成されている。１９は、ＣＰＵ１２の主メモリ、ワークエリア等として機能するＲＡＭであり、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。なお、ＲＡＭ１９は、出力情報展開領域、環境データ格納領域、ＮＶＲＡＭ等に用いられる。
【００２０】
前述したハードディスク（ＨＤ）、ＩＣカード等である外部メモリ１４は、メモリコントローラ（ＭＣ）２０によりアクセスを制御される。外部メモリ１４は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。また、１５０１は、操作パネルであり、操作のためのスイッチおよびＬＥＤ表示器等が配されている。また、前述した外部メモリ１４は１個に限らず、少なくとも１個以上備え、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを複数接続できるように構成されていてもよい。さらに、図示しないＮＶＲＡＭを有し、操作パネル１５０１からのプリンタモード設定情報を記憶するようにしてもよい。
【００２１】
次に、本実施形態におけるプリンタドライバ２０４の拡張システムについて説明する。図１０は、プリンタドライバ２０４の拡張システムを示す図である。プリンタドライバ２０４にプラグインモジュールを追加した場合のＵＩに関する構成を示している。図１０において、プラグインモジュールは、ＵＩドライバ１４０３の拡張機能を有するＵＩプラグイン１４０４と、グラフィックスドライバ１４０５の拡張機能を有するグラフィックスドライバ１４０６から構成されている。図１０を用いてそれぞれのプラグインモジュールについて説明する。
【００２２】
ＵＩプラグイン１４０４は、プリンタドライバ２０４が利用者に提供する印刷設定シート（ＵＩ）に新たなシートを加える場合や、ＵＩドライバ１４０３で処理しているインストール時の処理などのＵＩドライバ１４０３に実装されている様々なイベント処理をカスタマイズする場合に用いる。ＵＩドライバ１４０３は、システムに対してエクスポートしているＤＤＩ（Ｄｅｖｉｃｅ  Ｄｒｉｖｅｒ  Ｉｎｔｅｒｆａｃｅ）がコールされた際に、ＵＩプラグイン１４０４が公開しているインターフェースを取得する。ＵＩドライバ１４０３が取得したＵＩプラグイン１４０４のインターフェースを用いて、ＵＩプラグイン１４０４と通信することで、ＵＩドライバ１４０３に実装されたカスタマイズ処理が実行される。
【００２３】
一方、グラフィックスプラグイン１４０６は、ＧＤＩ（Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）・１４０２とグラフィックスドライバ１４０５とのインターフェースであるＤＤＩの処理を横取りまたは特定のタイミングで処理を追加する場合や、印刷データのスプール処理を横取りする場合に用いる。グラフィックスドライバ１４０５がエクスポートしているＤＤＩは、ジョブを生成するためにＧＤＩ・１４０２から適宜コールされるが、その初期化のタイミングで、グラフィックスドライバ１４０５は、グラフィックスプラグイン１４０６が公開しているインターフェースを取得し、ＲＡＭ２に保持する。ここで取得したインターフェースを用いて、ＤＤＩがコールされるタイミングにそのＤＤＩに対応したグラフィックスプラグイン１４０６の処理を呼び出す。呼び出されたグラフィックスプラグイン１４０６は、プラグイン内に実装された処理を実行し、処理を再びグラフィックスドライバ１４０５に返す。
【００２４】
ここで、グラフィックスプラグイン１４０５が処理を横取りしている場合、ＤＤＩはそこで処理を終了し、追加処理を実装している場合には、そのまま後続する処理を続ける。グラフィックスプラグイン１４０６がグラフィックスドライバ１４０５の印刷データのスプール処理を横取りする場合は、グラフィックスドライバ１４０５内の印刷データをスプールする直前にグラフィックスプラグイン１４０６のインターフェースをコールする。コールされたグラフィックスプラグイン１４０６は、スプールされるデータを取得し、特定の処理を実行した後、再度グラフィックスドライバ１４０５のスプール処理関数をコールすることで、グラフィックスドライバ１４０５に特定の処理を施したデータを渡す。データを受け取ったグラフィックスドライバ１４０５は、実際にシステムスプーラ１４０７にスプールする処理を実行する。このようにプラグインモジュールに拡張機能を実装することで、プリンタドライバ２０４の拡張システムを実現している。
【００２５】
次に、印刷処理関連プログラム（プリンタドライバ）がホストコンピュータ３０００上のＲＡＭ２にロードされ実行可能となった状態のメモリマップについて説明する。図２は、印刷処理関連プログラム（プリンタドライバ）がホストコンピュータ３０００上のＲＡＭ２にロードされ実行可能となった状態のメモリマップ例を示す図である。図２に示すように、ＲＡＭ２には、アプリケーション２０１、空きメモリ２０２、関連データ２０３、印刷処理関連プログラム（以下、プリンタドライバとする）２０４、ＯＳ２０５及びＢＩＯＳ２０６から構成されるメモリマップが形成される。
【００２６】
また、図３は、プリンタドライバ２０４に追加機能のプラグインモジュールセット３１０がインストールされている状態の各モジュール間の構成を示す図である。図３に示すようにプラグインのインストールセット３１０にはプラグインモジュール３０９と、プラグインモジュール３０９独自のコンフリクト処理ルール３０８が同梱されている。また、プラグイン前のプリンタドライバ２０４は、コンフリクト処理ルール３０１、推論エンジン３０２、コンフリクトマネージャ３０３、状態変数リスト３０４、内部構造体３０５及びドライバ管理部３０６から構成されていた。また、本実施形態のプリンタドライバ２０４は、プラグインモジュール３０９を組み込むことにより、新たに製本印刷機能を有することになったとするが、プラグインモジュールにより追加される機能はこれに限定されるものではない。
【００２７】
３０１は、コンフリクト処理ルールであり、プラグインする前のプリンタドライバ２０４における各設定値間の不整合を防ぐためのルールが定義されている。尚、コンフリクト処理ルールの具体例については後述する。３０３は、コンフリクトマネージャであり、状態変数リスト３０４及び内部構造体３０５内のデータが一致するよう管理する。ここで、状態変数リスト３０４とは、プリンタドライバ２０４で設定可能な設定項目（例えば、グループ、ステイプル、ソート）に対応する状態変数（例えば、Ｇｒｏｕｐ、Ｓｔａｐｌｅ、Ｃｏｌｌａｔｅ）とその値（設定項目のオン／オフ）のリストである。また、内部構造体３０５内のデータとは、プリンタドライバ２０４で設定可能な設定項目（例えば、グループ、ステイプル、ソート）に対応する変数であるメンバ（例えば、ｃＧｒｏｕｐ、ｃＳｔａｐｌｅ、ｃＣｏｌｌａｔｅ）とその設定値（オン＝１、オフ＝０）である。
【００２８】
３０２は、推論エンジンであり、コンフリクト処理ルール３０１及びプラグインのコンフリクト処理ルール３０８を、コンフリクトマネージャ３０３を介して読み込み、コンフリクトチェック（ルールに応じた設定であるかの検査）を行い、その結果をコンフリクトマネージャ３０３へ返信する。３０６は、ドライバ管理部であり、アプリケーション２０１からの印刷設定要求などに応じて、初期化処理や印刷設定を行うためのＵＩの表示制御や、プリンタドライバ２０４内の動作制御を行う。また、ドライバ管理部３０６は、コンフリクトマネージャ３０３に各設定値間の不整合が生じないようコンフリクト処理を依頼する。また、ドライバ管理部３０６は、プラグインモジュール３０９とのデータの授受も行なう。
【００２９】
ここで、図３に示したコンフリクトマネージャ３０３及び推論エンジン３０２が、状態変数リスト３０４、内部構造体３０５及びコンフリクト処理ルール３０１を利用してどのようなコンフリクト処理を行うかを簡単な具体例を示して説明する。図４は、コンフリクトマネージャ３０３及び推論エンジン３０２におけるコンフリクト処理の具体例を示す図である。尚、図４においては、コンフリクトマネージャ３０３が、変数リスト３０４及び内部構造体３０５を利用して、推論エンジン３０２がコンフリクト処理ルール３０１を利用していることを示すために、コンフリクトマネージャ３０３の枠内に変数リスト３０４及び内部構造体３０５を記載して、推論エンジン３０２の枠内にコンフリクト処理ルール３０１を記載している。
【００３０】
図４に示す具体例では、プリンタ機能名Ａ，Ｂ，Ｃ…の設定値に応じたコンフリクト処理の例を示している。図４に示すように、内部構造体３０５には、プリンタ機能名Ａ、Ｂ、Ｃ…に対応するメンバｉｎｔ  ｃＡ、ｃＢ、ｃＣ…とその設定値０、１、０…が格納されている。コンフリクトマネージャ３０３は、この内部構造体３０５のメンバとその設定値を参照することで、状態変数Ａ＝ＯＦＦ、状態変数Ｂ＝ＯＮ、状態変数Ｃ＝ＯＦＦ、…という状態変数リスト３０４を生成する。推論エンジン３０２は、この状態変数リスト３０４を参照するので、推論エンジン３０２内における、プリンタ機能名Ａ、Ｂ、Ｃ…の状態変数の初期値は、ＯＦＦ、ＯＮ、ＯＦＦとなる。
【００３１】
また、コンフリクト処理ルール３０１には、
Ａ（ＯＮ）＜−Ｂ（ＯＮ）、Ｃ（ＯＦＦ）
というルールが定義されていたとする。これは、機能Ｂがオンかつ機能Ｃがオフの場合は機能Ａをオンにするというルールを定義するものである。推論エンジン３０２は、コンフリクト処理ルール３０１を、コンフリクトマネージャ３０３を介して読み込む。ここで、推論エンジン３０２でコンフリクトチェックの推論が行われたとする。初期値がプリンタ機能名Ｂ＝ＯＮ、プリンタ機能名Ｃ＝ＯＦＦであるので、コンフリクト処理ルール３０１で定義されたルールＡ（ＯＮ）＜−Ｂ（ＯＮ）、Ｃ（ＯＦＦ）が成立する。これにより、推論エンジン３０２は、左辺のプリンタ機能名Ａの状態変数の値（状態値）をＯＮに変更する。すなわち、推論エンジン３０２は、状態変数リスト３０４の状態変数Ａ＝ＯＮに更新する。
【００３２】
推論エンジン３０２においてコンフリクトチェックの推論が終了した後、コンフリクトマネージャ３０３は変更された状態変数Ａの値をプリンタドライバ２０４の内部構造体３０５の対応するメンバｉｎｔ  ｃＡに反映させる。つまりｉｎｔ  ｃＡの値は上記ルールが成立した事によって０から１に変更される。以上に示すような処理により、コンフリクトマネージャ３０３及び推論エンジン３０２は、設定値間に不整合が生じないように、状態変数リスト３０４を更新して、それを、ドライバ管理部３０６がＵＩに利用する内部構造体３０５内の設定情報（メンバｃＡ、ｃＢ、…）に反映している。
【００３３】
尚、上述したコンフリクト処理ルール３０１で定義したルールは、簡単な具体例を示すためのものであり、本実施形態のコンフリクト処理ルール３０１は、例えば以下に示すようなルール例（２）〜（４）を定義している。
Ｃｏｌｌａｔｅ（ＯＦＦ）  ＜−  Ｇｒｏｕｐ（ＯＮ）    …（２）
Ｃｏｌｌａｔｅ（ＯＦＦ）  ＜−  Ｓｔａｐｌｅ（ＯＮ）  …（３）
Ｃｏｌｌａｔｅ（ＯＮ）    ＜−  Ｇｒｏｕｐ（ＯＦＦ）  …（４）
【００３４】
また、プラグインのコンフリクト処理ルール３０８は、例えば以下に示すようなルール例（１）を定義している。
Ｇｒｏｕｐ（ＯＦＦ）    ＜−  Ｂｏｏｋｌｅｔ（ＯＮ）…（１）
ここで、Ｃｏｌｌａｔｅは、ソート機能を示し、Ｇｒｏｕｐは、グループ機能を示し、Ｓｔａｐｌｅは、ステイプル機能を示し、Ｂｏｏｋｌｅｔは、製本印刷機能を示す。
【００３５】
次に、本実施形態のホストコンピュータ３０００におけるプリンタドライバ２０４のＵＩに関する処理について説明する。
ＯＳ２０５管理の下で動作するアプリケーション２０１よりプリンタドライバ２０４の備える初期化処理が呼び出されると、ＯＳ２０５の管理の下、ＲＡＭ２にプリンタドライバ２０４がロードされる。プリンタドライバ２０４がＲＡＭ２にロードされると、ドライバ管理部３０６に備えられたプリンタドライバ２０４の初期化処理部が呼び出され、初期化処理が行われる。
【００３６】
図５は、図３に示したアプリケーション２０１からプリンタドライバ２０４のＵＩを開く際の初期化処理のフローを示した図である。尚、図５に示す、プラグインモジュール３０９は、図３に示したように、プリンタドライバ２０４にプラグインにより組み込まれたものである。
【００３７】
まずアプリケーション２０１は、プリンタドライバ２０４の内部構造体を格納するためのメモリ領域のサイズをプリンタドライバ２０４に問い合わせる（ステップＳ５０１）。これにより、プリンタドライバ２０４は、プラグインモジュール３０９に対して、プラグインモジュール３０９が必要な内部構造体のデータ領域のサイズを問い合わせる（ステップＳ５０２）。プラグインモジュール３０９は、必要な内部構造体の領域サイズ（独自データ領域サイズ）を計算し（ステップＳ５０３）、計算された独自データ領域サイズをプリンタドライバ２０４に返す（ステップＳ５０４）。プリンタドライバ２０４は、プラグインモジュール３０９から独自データ領域サイズを取得した後（ステップＳ５０５）、プリンタドライバ２０４に必要な内部構造体３０５内のデータ領域サイズに前記ステップＳ５０５で取得したプラグインモジュール３０９の独自データ領域サイズを加えたデータサイズをアプリケーション２０１に返す（ステップＳ５０６）。
【００３８】
アプリケーション２０１は、プリンタドライバ２０４から返された値を受け取り（ステップＳ５０７）、取得したサイズ分のメモリ領域を空きメモリ２０２上に確保する（ステップＳ５０８）。前記ステップＳ５０８で確保したメモリ領域をプリンタドライバ２０４に渡して、プリンタドライバ２０４のＵＩを開くようにプリンタドライバ２０４に指示を出す（ステップＳ５０９）。この時の内部構造体３０５は例えば、図６のようなメモリマップ構成になっている。図６は、プリンタドライバ２０４が必要とする内部構造体３０５のメモリマップ構成例を示す図である。図６に示すように、内部構造体３０５は、パブリック領域６０１と、プリンタドライバ２０４に必要なデータ領域サイズに応じたドライバプライベート領域６０２と、プラグインモジュール３０９の独自データ領域サイズに応じたプラグインプライベート領域６０３とから構成されている。次に、ステップＳ５０９の指示に基づき、プリンタドライバ２０４のインターフェースが呼び出される(ステップＳ５１０)。
【００３９】
プリンタドライバ２０４は、プラグインモジュール３０９に同梱されているコンフリクト処理ルール３０８の格納場所を問い合わせる（ステップＳ５１１）。これにより、プラグインモジュール３０９は、プラグインモジュール３０９の設定値に関連するコンフリクト処理ルール３０８が記述されているファイルの格納場所をプリンタドライバ２０４に返す（ステップＳ５１２）。
【００４０】
推論エンジン３０２は、プラグインモジュール３０９と同梱されているコンフリクト処理ルール３０８を、コンフリクトマネージャ３０３を介して、ＲＡＭ２中に読み込んだ後、コンフリクト処理ルール３０１を読み込む（ステップＳ５１３）。
【００４１】
図４で説明したように、コンフリクト処理ルール３０１、３０８に定義されている全てのプリンタ機能名については、状態変数リスト３０４として、各プリンタ機能名に対応した状態変数とその値を持っている。図４でも示したように、状態変数リスト３０４の状態変数の値はプリンタドライバ２０４で使用される内部構造体３０５の対応するメンバの値と連動している。状態変数リスト３０４における全ての状態変数の初期値はその内部構造体３０５のメンバの値が初期値となる。
【００４２】
ステップＳ５１４では、コンフリクトマネージャ３０３を介して状態変数の初期化処理を行う。初期化処理では、内部構造体３０５を参照してプリンタドライバ２０４の状態変数リスト３０４生成した後、プラグインモジュール３０９に対して、プラグインモジュール３０９が独自に持っている状態変数の初期化を指示する（ステップＳ５１５）。これにより、プラグインモジュール３０９は、初期化済みの状態変数をプリンタドライバ２０４に返す（ステップＳ５１６）。プリンタドライバ２０４は、プラグインモジュール３０９の状態変数を受け取り、コンフリクトマネージャ３０３を介して状態変数リスト３０４に追加する（ステップＳ５１７）。
【００４３】
次に、プリンタドライバ２０４は、図８（ａ）、（ｂ）に示すようなプラグインモジュール３０９独自のＵＩである設定シートを表示するために、プラグイン独自設定シートの情報を問い合わせる（ステップＳ５１８）。プラグインモジュール３０９は、独自設定シートを作成して（ステップＳ５１９）、作成した独自設定シートの情報をプリンタドライバ２０４に返す(ステップＳ５２０)。これにより、プリンタドライバ２０４は、プラグインモジュール３０９独自の設定シート情報を取得する（ステップＳ５２１）。次に、プリンタドライバ２０４において、推論エンジン３０２によるコンフリクトチェック及び状態変数リスト３０４の更新や、コンフリクトマネージャ３０３による内部構造体３０５の更新などのコンフリクト処理が行われ、設定値間に不整合があれば訂正される（ステップＳ５２２）。次に、プリンタドライバ２０４の設定シートとともに、前記ステップ５２１で取得したプラグインモジュール３０９の設定シートを加えて、図８（ａ）に示すようなＵＩを表示する（ステップＳ５２２）。
【００４４】
図８（ａ）は、プラグイン後のプリンタドライバ２０４が利用者に提供するＵＩである印刷設定シート例を示す図である。図８（ａ）に示すように、本来のプリンタドライバ２０４の設定シート（ページ設定、仕上げ、給紙、印刷品質）に「プラグインの設定」というプラグインモジュール３０９の設定シート８０が加わっている。また、設定シート８０は、利用者が製本印刷機能のオン／オフを設定するためのチェックボックス８１を有する。尚、図８（ａ）の設定シート８０においては、チェックボックス８１がチェックされていないので、製本印刷機能はオフされている状態（状態変数が初期値の状態）である。
【００４５】
ここで、図８（ａ）の設定シート８０において、利用者がチェックボックス８１を図８（ｂ）に示すようにチェックすることで、製本印刷機能をオンしたこととなる。図８（ｂ）は、図８（ａ）の印刷設定シート例において製本印刷機能をオンした状態を示す図である。次に、図８（ｂ）に示すように、プラグインの機能である製本印刷機能をオンした場合のコンフリクト処理について説明する。図７は、図８（ｂ）に示すようなプラグインの機能である製本印刷機能をオンに変更した場合のコンフリクト処理について示すフロー図である。
【００４６】
まず、ステップＳ７０１では、ユーザが図８（ａ）の状態から図８（ｂ）の状態にチェックボックス８１をチェックする操作に応じた、内部構造体３０５や状態変数リスト３０４の更新を行う。次に、ステップＳ７０１でのＵＩ操作を受けて、図５のステップＳ５１３で読み込んだプラグインモジュール３０９のコンフリクト処理ルール３０８を適用して（ステップＳ７０２）、続いてプリンタドライバ２０４本体が保持するコンフリクト処理ルール３０１を適用する処理を行う（ステップＳ７０３）。これらのコンフリクト処理に応じて、状態変数リスト３０４の状態変数が更新される（ステップＳ７０４）。
【００４７】
尚、本実施形態においては、ステップＳ７０２〜Ｓ７０３の処理ルールの適用は、ステップＳ５１３において読み込まれた順番に応じて適用している。また、複数の処理ルールの適用順番に応じて、処理ルールの優先順位も定まり、本実施形態では、コンフリクト処理ルール３０８の方がコンフリクト処理ルール３０１よりも優先されている。尚、コンフリクト処理ルール３０１を優先したい場合には、コンフリクト処理ルール３０１を先に適用する処理を行う。
【００４８】
ここで、具体例を示しながらステップＳ７０１〜７０４について説明する。例えば、内部構造体３５０において、プリンタ機能に対応するメンバとしてｃＣｏｌｌａｔｅ、ｃＧｒｏｕｐ、ｃＳｔａｐｌｅ、ｃＢｏｏｋｌｅｔが有るとする。そして、この各メンバのコンフリクト処理ルール適用前の設定値は、ステップＳ７０１の直前において以下の通りとする。
ｃＣｏｌｌａｔｅ＝０
ｃＧｒｏｕｐ    ＝１
ｃＳｔａｐｌｅ  ＝０
ｃＢｏｏｋｌｅｔ＝０
【００４９】
これにより、状態変数リスト３０４においては、上記各メンバに対応する状態変数Ｃｏｌｌａｔｅ、Ｇｒｏｕｐ、Ｓｔａｐｌｅ、Ｂｏｏｋｌｅｔの値は以下のとおりとなる。
Ｃｏｌｌａｔｅ＝ＯＦＦ
Ｇｒｏｕｐ    ＝ＯＮ
Ｓｔａｐｌｅ  ＝ＯＦＦ
Ｂｏｏｋｌｅｔ＝ＯＦＦ
【００５０】
この時、プリンタドライバ２０４が提供するＵＩである仕上げの設定シート９０の状態は、図９（ａ）に示すように、ソート機能のラジオボタン９１は非選択であり、グループ機能のラジオボタン９２は選択されている状態である。尚、Ｂｏｏｋｌｅｔは、図８（ｂ）となるような利用者の操作がまだ行われていない（ステップＳ７０１の前である）ので、ＯＦＦのままである。
【００５１】
このような状態の時に、ステップＳ７０１に応じて、プリンタドライバ２０４は、アプリケーション２０１からの製本印刷機能の設定値をオンへ変更する変更要求を受信する。これにより、内部構造体３０５のメンバｃＢｏｏｋｌｅｔは下記に示すように、０から１に更新される。
ｃＣｏｌｌａｔｅ＝０
ｃＧｒｏｕｐ    ＝１
ｃＳｔａｐｌｅ  ＝０
ｃＢｏｏｋｌｅｔ＝１
【００５２】
次に、プリンタドライバ管理部３０６はコンフリクトマネージャ３０３を呼び出し、状態変数リストにあるＢｏｏｋｌｅｔの状態変数をオフからオンに更新する。これにより、状態変数リスト３０４は、以下のとおりとなる。
Ｃｏｌｌａｔｅ＝ＯＦＦ
Ｇｒｏｕｐ    ＝ＯＮ
Ｓｔａｐｌｅ  ＝ＯＦＦ
Ｂｏｏｋｌｅｔ＝ＯＮ
【００５３】
続いて、ステップＳ７０２において、推論エンジン３０２がコールされて、コンフリクト処理ルールの適用が始まる。まず、推論エンジン３０２内の各プリンタ機能名が状態変数リスト３０４の各状態変数の持つ値で初期化される。続いて、ステップＳ５１３で先に読み込まれたコンフリクト処理ルール３０８のルール例（１）が適用されて、状態変数Ｇｒｏｕｐの状態値がＯＮからＯＦＦへと変化する。尚、ルール例（１）とは、上述したとおり、Ｇｒｏｕｐ（ＯＦＦ）  ＜−  Ｂｏｏｋｌｅｔ（ＯＮ）で定義されるルールである。
【００５４】
これにより、状態変数リスト３０４の状態値も、
Ｃｏｌｌａｔｅ＝ＯＦＦ
Ｇｒｏｕｐ    ＝ＯＦＦ
Ｓｔａｐｌｅ  ＝ＯＦＦ
Ｂｏｏｋｌｅｔ＝ＯＮ
に更新される。
【００５５】
次に、ステップＳ７０３において、コンフリクト処理ルール３０１のルール例（４）が適用され、状態変数Ｃｏｌｌａｔｅの状態値がＯＦＦからＯＮへと変化する。尚、ルール例（４）とは、上述したとおり、Ｃｏｌｌａｔｅ（ＯＮ）  ＜−  Ｇｒｏｕｐ（ＯＦＦ）で定義されるルールである。コンフリクト処理ルール３０１内において、他に、適用されるルールが存在しないので、以上で推論エンジン３０２でのコンフリクト処理ルールの適用が終了する。
【００５６】
これにより、状態変数リスト３０４の状態値も、
Ｃｏｌｌａｔｅ＝ＯＮ
Ｇｒｏｕｐ    ＝ＯＦＦ
Ｓｔａｐｌｅ  ＝ＯＦＦ
Ｂｏｏｋｌｅｔ＝ＯＮ
に更新される（ステップＳ７０４）。
【００５７】
以上に示すように、ステップＳ７０１〜Ｓ７０３の処理により、ＵＩ上で行われた設定値の変更に応じて、コンフリクト処理が行われる。
【００５８】
図７のフローチャートに戻ると、ステップＳ７０４でコンフリクト処理ルール３０１、３０８に応じて状態変数リスト３０４を更新した後に、コンフリクトマネージャ３０３は、更新した状態変数リスト３０４に応じて内部構造体３０５を更新する（ステップＳ７０５）。具体的には、メンバの値が以下のようになる。
ｃＣｏｌｌａｔｅ＝１
ｃＧｒｏｕｐ    ＝０
ｃＳｔａｐｌｅ  ＝０
ｃＢｏｏｋｌｅｔ＝１
【００５９】
次に、プリンタドライバ２０４は、ステップＳ７０４においてプラグインモジュール３０９の状態変数が更新されているかどうかを判定する（ステップＳ７０６）。ここで、状態変数が更新されていると判定した場合（ステップＳ７０６のＹＥＳ）には、プリンタドライバ２０４は、プラグインモジュール３０９を呼び出し、状態変数の変化に応じてプラグインモジュール３０９の独自設定シート内のコントロールを制御して（ステップＳ７０７）、プラグインモジュール３０９の独自設定シート内のコントロールを更新すると（ステップＳ７０８）、処理をプリンタドライバ２０４に戻す。これにより、プリンタドライバ２０４は、以下に示すステップＳ７０９に示す処理を行う。
【００６０】
また、ステップＳ７０６でプラグインモジュール３０９の状態変数が更新されていない場合（ステップＳ７０６のＮＯ）には、プリンタドライバ２０４は、ステップＳ７０９にて、ステップＳ７０４で更新された状態変数に応じてプリンタドライバ２０４本体の設定シート内のコントロールを制御する。次に、ステップｓ７１０において、プリンタドライバ２０４は、プリンタドライバ２０４本体の設定シート内で制御しているコントロールを更新して、コンフリクト処理及びＵＩの処理を終了する。
【００６１】
以上、ステップＳ７０１〜Ｓ７１０に示した設定変更に応じたコンフリクト処理例により、コンフリクト処理ルールの適用前の仕上げ設定シート９０は、図９（ａ）のような状態であったが、コンフリクト処理ルールの適用後、図９（ｂ）に示す状態に変化する。すなわち、もともと“仕上げ”設定シート９０でグループ（内部構造体のメンバ名は“Ｇｒｏｕｐ”）機能のラジオボタン９２が選択されていたのが、コンフリクト処理ルールの適用により、ソート（内部構造体３０５のメンバ名は“Ｃｏｌｌａｔｅ”）機能のラジオボタン９１が選択されてオンの状態に変化している。
【００６２】
以上のような処理は、アプリケーション２０１によってプリンタドライバ管理部３０６に備えられた終了処理が呼び出されるまで、繰り返し実行される。アプリケーション２０１よりプリンタドライバ２０４の終了処理が呼び出されると、空きメモリ２０２に生成し
たコンフリクト処理ルール３０１、３０８の情報等を消去すると共に、その他の終了処理を行う。これにより処理は全て終了し、本実施形態におけるプリンタドライバ２０４の処理も終了し、ＲＡＭ２からはＯＳ２０５の機能により消去される。
【００６３】
以上に説明したように、本実施形態におけるホストコンピュータ３０００は、プリンタドライバ２０４にプラグインモジュール３０９が組み込まれていても、プラグインモジュール３０９のコンフリクト処理ルール３０８を参照することで、プラグイン後のプリンタドライバ２０４における設定値間の不整合が生じることを防ぐことができる。すなわち、本実施形態におけるホストコンピュータ３０００は、プリンタドライバにプラグイン形式で新たな機能を追加した環境下においても的確なコンフリクト処理を行うことが可能である。
【００６４】
尚、本実施形態においては、プリンタドライバ２０４を記録する媒体を外部メモリ１１としているが、外部メモリ１１としては、ＦＤ（フレキシブルディスク）、ＨＤドライブ、ＣＤ−ＲＯＭやＩＣメモリカード等を利用可能である。更に、本プリンタドライバ２０４単独、もしくはＯＳ２０５その他のホストコンピュータ３０００上で動作するプログラムと共にＲＯＭ３に記録しておき、これをメモリマップの一部となすように構成し、直接ＣＰＵ１で実行することも可能である。
【００６５】
また、上述した実施形態では、ホストコンピュータ３０００における種々の機能を実現する為のプログラムをメモリ（ＲＡＭ）に読み込んでＣＰＵが実行することによりその機能を実現させるものであったが、この限りではなく、各処理の全部または一部の機能を専用のハードウェアにより実現してもよい。また、上述したメモリは、光磁気ディスク装置、フラッシュメモリ等の不揮発性のメモリや、ＣＤ−ＲＯＭ等の読み出しのみが可能な記録媒体、ＲＡＭ以外の揮発性のメモリ、あるいはこれらの組み合わせによるコンピュータ読み取り、書き込み可能な記録媒体より構成されてもよい。
【００６６】
また、ホストコンピュータ３０００において各種処理を行う機能を実現する為のプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各処理を行っても良い。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
【００６７】
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００６８】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現する為のものであっても良い。さらに、前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００６９】
また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のプログラ
ムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体およびプログラムプロダクトは、本発明の範疇に含まれる。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【００７０】
第２の実施形態では、地紋機能がプラグイン形式で拡張されるシステムについて述べる。第２の実施形態におけるプラグインのコンフリクト処理ルール３０８は、例えば以下に示すようなルール（１）を定義している。
ＲＥＳＯＬＵＴＩＯＮ（６００）＜−ＳＥＣＵＲＥＭＡＲＫ（ＯＮ）…（１）
ここで、ＲＥＳＯＬＵＴＩＯＮは解像度の設定を示し、ＳＥＣＵＲＥＭＡＲＫは地紋印刷機能を示す。ルール（１）は、地紋機能が有効な場合には、解像度の設定値が６００ｄｐｉとなる制限を示したコンフリクト処理ルールである。
【００７１】
次に、本実施形態のホストコンピュータ３０００におけるプリンタドライバ２０４のＵＩに関する処理について説明する。
ＯＳ２０５管理の下で動作するアプリケーション２０１よりプリンタドライバ２０４の備える初期化処理が呼び出されると、ＯＳ２０５の管理の下、ＲＡＭ２にプリンタドライバ２０４がロードされる。プリンタドライバ２０４がＲＡＭ２にロードされると、ドライバ管理部３０６に備えられたプリンタドライバ２０４の初期化処理部が呼び出され、初期化処理が行われる。
【００７２】
図５は、図３に示したアプリケーション２０１からプリンタドライバ２０４のＵＩを開く際の初期化処理のフローを示した図である。尚、図５に示す、プラグインモジュール３０９は、図３に示したように、プリンタドライバ２０４にプラグインにより組み込まれたものである。
【００７３】
まずアプリケーション２０１は、プリンタドライバ２０４の内部構造体を格納するためのメモリ領域のサイズをプリンタドライバ２０４に問い合わせる（ステップＳ５０１）。これにより、プリンタドライバ２０４は、プラグインモジュール３０９に対して、プラグインモジュール３０９が必要な内部構造体のデータ領域のサイズを問い合わせる（ステップＳ５０２）。プラグインモジュール３０９は、必要な内部構造体の領域サイズ（独自データ領域サイズ）を計算し（ステップＳ５０３）、計算された独自データ領域サイズをプリンタドライバ２０４に返す（ステップＳ５０４）。プリンタドライバ２０４は、プラグインモジュール３０９から独自データ領域サイズを取得した後（ステップＳ５０５）、プリンタドライバ２０４に必要な内部構造体３０５内のデータ領域サイズに前記ステップＳ５０５で取得したプラグインモジュール３０９の独自データ領域サイズを加えたデータサイズをアプリケーション２０１に返す（ステップＳ５０６）。
【００７４】
アプリケーション２０１は、プリンタドライバ２０４から返された値を受け取り（ステップＳ５０７）、取得したサイズ分のメモリ領域を空きメモリ２０２上に確保する（ステップＳ５０８）。前記ステップＳ５０８で確保したメモリ領域をプリンタドライバ２０４に渡して、プリンタドライバ２０４のＵＩを開くようにプリンタドライバ２０４に指示を出す（ステップＳ５０９）。この時の内部構造体３０５は例えば、図６のようなメモリマップ構成になっている。図６は、プリンタドライバ２０４が必要とする内部構造体３０５のメモリマップ構成例を示す図である。図６に示すように、内部構造体３０５は、パブリック領域６０１と、プリンタドライバ２０４に必要なデータ領域サイズに応じたドライバプライベート領域６０２と、プラグインモジュール３０９の独自データ領域サイズに応じたプラグインプライベート領域６０３とから構成されている。次に、ステップＳ５０９の指示に基づき、プリンタドライバ２０４のインターフェースが呼び出される(ステップＳ５１０)。
【００７５】
プリンタドライバ２０４は、プラグインモジュール３０９に同梱されているコンフリクト処理ルール３０８の格納場所を問い合わせる（ステップＳ５１１）。これにより、プラグインモジュール３０９は、プラグインモジュール３０９の設定値に関連するコンフリクト処理ルール３０８が記述されているファイルの格納場所をプリンタドライバ２０４に返す（ステップＳ５１２）。
【００７６】
推論エンジン３０２は、プラグインモジュール３０９と同梱されているコンフリクト処理ルール３０８を、コンフリクトマネージャ３０３を介して、ＲＡＭ２中に読み込んだ後、コンフリクト処理ルール３０１を読み込む（ステップＳ５１３）。
【００７７】
図４で説明したように、コンフリクト処理ルール３０１、３０８に定義されている全てのプリンタ機能名については、状態変数リスト３０４として、各プリンタ機能名に対応した状態変数とその値を持っている。図４でも示したように、状態変数リスト３０４の状態変数の値はプリンタドライバ２０４で使用される内部構造体３０５の対応するメンバの値と連動している。状態変数リスト３０４における全ての状態変数の初期値はその内部構造体３０５のメンバの値が初期値となる。
【００７８】
ステップＳ５１４では、コンフリクトマネージャ３０３を介して状態変数の初期化処理を行う。初期化処理では、内部構造体３０５を参照してプリンタドライバ２０４の状態変数リスト３０４生成した後、プラグインモジュール３０９に対して、プラグインモジュール３０９が独自に持っている状態変数の初期化を指示する（ステップＳ５１５）。これにより、プラグインモジュール３０９は、初期化済みの状態変数をプリンタドライバ２０４に返す（ステップＳ５１６）。プリンタドライバ２０４は、プラグインモジュール３０９の状態変数を受け取り、コンフリクトマネージャ３０３を介して状態変数リスト３０４に追加する（ステップＳ５１７）。
【００７９】
次に、プリンタドライバ２０４は、図１１（ａ）、（ｂ）に示すようなプラグインモジュール３０９独自のＵＩである設定シートを表示するために、プラグイン独自設定シートの情報を問い合わせる（ステップＳ５１８）。プラグインモジュール３０９は、独自設定シートを作成して（ステップＳ５１９）、作成した独自設定シートの情報をプリンタドライバ２０４に返す(ステップＳ５２０)。これにより、プリンタドライバ２０４は、プラグインモジュール３０９独自の設定シート情報を取得する（ステップＳ５２１）。次に、プリンタドライバ２０４において、推論エンジン３０２によるコンフリクトチェック及び状態変数リスト３０４の更新や、コンフリクトマネージャ３０３による内部構造体３０５の更新などのコンフリクト処理が行われ、設定値間に不整合があれば訂正される（ステップＳ５２２）。次に、プリンタドライバ２０４の設定シートとともに、前記ステップ５２１で取得したプラグインモジュール３０９の設定シートを加えて、図１１（ａ）に示すようなＵＩを表示する（ステップＳ５２２）。
【００８０】
図１１（ａ）は、プラグイン後のプリンタドライバ２０４が利用者に提供するＵＩである印刷設定シート例を示す図である。図１１（ａ）に示すように、本来のプリンタドライバ２０４の設定シート（ページ設定、仕上げ、給紙、印刷品質）に「地紋印刷の設定」というプラグインモジュール３０９の設定シート１１０が加わっている。また、設定シート１１０は、利用者が地紋印刷機能のオン／オフを設定するためのチェックボックス１１１を有する。尚、図１１（ａ）の設定シート１１０においては、チェックボックス１１１がチェックされていないので、地紋印刷機能はオフされている状態（状態変数が初期値の状態）である。
【００８１】
ここで、図１１（ａ）の設定シート１１０において、利用者がチェックボックス１１１を図１１（ｂ）に示すようにチェックすることで、地紋印刷機能をオンしたこととなる。図１１（ｂ）は、図１１（ａ）の印刷設定シート例において地紋印刷機能をオンした状態を示す図である。次に、図１１（ｂ）に示すように、プラグインの機能である地紋印刷機能をオンした場合のコンフリクト処理について説明する。図７は、図１１（ｂ）に示すようなプラグインの機能である地紋印刷機能をオンに変更した場合のコンフリクト処理について示すフロー図である。
【００８２】
まず、ステップＳ７０１では、ユーザが図１１（ａ）の状態から図１１（ｂ）の状態にチェックボックス１１１をチェックする操作に応じた、内部構造体３０５や状態変数リスト３０４の更新を行う。次に、ステップＳ７０１でのＵＩ操作を受けて、図５のステップＳ５１３で読み込んだプラグインモジュール３０９のコンフリクト処理ルール３０８を適用して（ステップＳ７０２）、続いてプリンタドライバ２０４本体が保持するコンフリクト処理ルール３０１を適用する処理を行う（ステップＳ７０３）。これらのコンフリクト処理に応じて、状態変数リスト３０４の状態変数が更新される（ステップＳ７０４）。
【００８３】
尚、本実施形態においては、ステップＳ７０２〜Ｓ７０３の処理ルールの適用は、ステップＳ５１３において読み込まれた順番に応じて適用している。また、複数の処理ルールの適用順番に応じて、処理ルールの優先順位も定まり、本実施形態では、コンフリクト処理ルール３０８の方がコンフリクト処理ルール３０１よりも優先されている。尚、コンフリクト処理ルール３０１を優先したい場合には、コンフリクト処理ルール３０１を先に適用する処理を行う。
【００８４】
ここで、具体例を示しながらステップＳ７０１〜７０４について説明する。例えば、内部構造体３５０において、プリンタ機能に対応するメンバとしてｃＲｅｓｏｌｕｔｉｏｎ、ｃＳｅｃｕｒｅＭａｒｋが有るとする。そして、この各メンバのコンフリクト処理ルール適用前の値は、ステップＳ７０１の直前において以下の通りとする。
ｃＲｅｓｏｌｕｔｉｏｎ＝３００
ｃＳｅｃｕｒｅＭａｒｋ＝０
【００８５】
これにより、状態変数リスト３０４においては、上記各メンバに対応する状態変数Ｒｅｓｏｌｉｔｉｏｎ、ＳｅｃｕｒｅＭａｒｋと状態値は以下のとおりとなる。
Ｒｅｓｐｌｉｔｉｏｎ＝３００
ＳｅｃｕｒｅＭａｒｋ＝ＯＦＦ
【００８６】
この時、プリンタドライバ２０４が提供するＵＩである印刷品質の設定シート１２０の状態は、図１２（ａ）に示すように、解像度設定のラジオボタンは３００ｄｐｉが選択されている状態である。尚、地紋印刷機能は、図１２（ｂ）となるような利用者の操作がまだ行われていない（ステップＳ７０１の前である）ので、ＯＦＦのままである。
【００８７】
このような状態の時に、ステップＳ７０１に応じて、プリンタドライバ２０４は、ユーザからの地紋印刷機能の設定値をオンへ変更する変更要求を受信する。これにより、内部構造体３０５のメンバｃＳｅｃｕｒｅＭａｒｋは下記に示すように、０から１に更新される。
ｃＲｅｓｏｌｕｔｉｏｎ＝３００
ｃＳｅｃｕｒｅＭａｒｋ＝１
【００８８】
次に、プリンタドライバ管理部３０６はコンフリクトマネージャ３０３を呼び出し、状態変数リストにあるＳｅｃｕｒｅの状態変数をオフからオンに更新する。これにより、状態変数リスト３０４は、以下のとおりとなる。
Ｒｅｓｏｌｉｔｉｏｎ＝３００
ＳｅｃｕｒｅＭａｒｋ＝ＯＮ
【００８９】
続いて、ステップＳ７０２において、推論エンジン３０２がコールされて、コンフリクト処理ルールの適用が始まる。まず、推論エンジン３０２内の各プリンタ機能名が状態変数リスト３０４の各状態変数の持つ値で初期化される。続いて、ステップＳ５１３で先に読み込まれたコンフリクト処理ルール３０８のルール（１）が適用されて、状態変数Ｒｅｓｏｌｕｔｉｏｎの状態値が３００から６００へと変化する。尚、ルール（１）とは、上述したとおり、ＲＥＳＯＬＵＴＩＯＮ（６００）＜−ＳＥＣＵＲＥＭＡＲＫ（ＯＮ）で定義されるルールである。
【００９０】
これにより、状態変数リスト３０４の状態値も、
Ｒｅｓｏｌｉｔｉｏｎ＝６００
ＳｅｃｕｒｅＭａｒｋ＝ＯＮ
に更新される。
【００９１】
次に、ステップＳ７０３においては、コンフリクト処理ルール３０１内において、他に、適用されるルールが存在しないので、以上で推論エンジン３０２でのコンフリクト処理ルールの適用が終了する（ステップＳ７０４）。
【００９２】
以上に示すように、ステップＳ７０１〜Ｓ７０３の処理により、ＵＩ上で行われた設定値の変更に応じて、コンフリクト処理が行われる。
【００９３】
図７のフローチャートに戻ると、ステップＳ７０４でコンフリクト処理ルール３０１、３０８に応じて状態変数リスト３０４を更新した後に、コンフリクトマネージャ３０３は、更新した状態変数リスト３０４に応じて内部構造体３０５を更新する（ステップＳ７０５）。具体的には、メンバの値が以下のようになる。
ｃＲｅｓｏｌｕｔｉｏｎ＝６００
ｃＳｅｃｕｒｅＭａｒｋ＝１
【００９４】
次に、プリンタドライバ２０４は、ステップＳ７０４においてプラグインモジュール３０９の状態変数が更新されているかどうかを判定する（ステップＳ７０６）。ここで、状態変数が更新されていると判定した場合（ステップＳ７０６のＹＥＳ）には、プリンタドライバ２０４は、プラグインモジュール３０９を呼び出し、状態変数の変化に応じてプラグインモジュール３０９の独自設定シート内のコントロールを制御して（ステップＳ７０７）、プラグインモジュール３０９の独自設定シート内のコントロールを更新すると（ステップＳ７０８）、処理をプリンタドライバ２０４に戻す。これにより、プリンタドライバ２０４は、以下に示すステップＳ７０９に示す処理を行う。
【００９５】
また、ステップＳ７０６でプラグインモジュール３０９の状態変数が更新されていない場合（ステップＳ７０６のＮＯ）には、プリンタドライバ２０４は、ステップＳ７０９にて、ステップＳ７０４で更新された状態変数に応じてプリンタドライバ２０４本体の設定シート内のコントロールを制御する。次に、ステップｓ７１０において、プリンタドライバ２０４は、プリンタドライバ２０４本体の設定シート内で制御しているコントロールを更新して、コンフリクト処理及びＵＩの処理を終了する。
【００９６】
以上、ステップＳ７０１〜Ｓ７１０に示した設定変更に応じたコンフリクト処理例により、コンフリクト処理ルールの適用前の印刷品質設定シート１２０は、図１２（ａ）のような状態であったが、コンフリクト処理ルールの適用後、図１２（ｂ）に示す状態に変化する。すなわち、もともと“印刷品質”設定シート１２０で解像度（内部構造体のメンバ名は“Ｒｅｓｏｌｕｔｉｏｎ”）設定のラジオボタン１２１で３００ｄｐｉが選択されていたのが、コンフリクト処理ルールの適用により、ラジオボタン１２１で６００ｄｐｉが選択されている状態に変化している。
【００９７】
以上のような処理は、アプリケーション２０１によってプリンタドライバ管理部３０６に備えられた終了処理が呼び出されるまで、繰り返し実行される。アプリケーション２０１よりプリンタドライバ２０４の終了処理が呼び出されると、空きメモリ２０２に生成したコンフリクト処理ルール３０１、３０８の情報等を消去すると共に、その他の終了処理を行う。これにより処理は全て終了し、本実施形態におけるプリンタドライバ２０４の処理も終了し、ＲＡＭ２からはＯＳ２０５の機能により消去される。
【００９８】
以上に説明したように、本実施形態におけるホストコンピュータ３０００は、プリンタドライバ２０４にプラグインモジュール３０９が組み込まれていても、プラグインモジュール３０９のコンフリクト処理ルール３０８を参照することで、プラグイン後のプリンタドライバ２０４における設定値間の不整合が生じることを防ぐことができる。すなわち、本実施形態におけるホストコンピュータ３０００は、プリンタドライバにプラグイン形式で新たな機能を追加した環境下においても的確なコンフリクト処理を行うことが可能である。
【００９９】
尚、本実施形態においては、プリンタドライバ２０４を記録する媒体を外部メモリとしているが、外部メモリ１１としては、ＦＤ（フレキシブルディスク）、ＨＤドライブ、ＣＤ−ＲＯＭやＩＣメモリカード等を利用可能である。更に、本プリンタドライバ２０４単独、もしくはＯＳ２０５その他のホストコンピュータ３０００上で動作するプログラムと共にＲＯＭ３に記録しておき、これをメモリマップの一部となすように構成し、直接ＣＰＵ１で実行することも可能である。
【０１００】
また、上述した実施形態では、ホストコンピュータ３０００における種々の機能を実現する為のプログラムをメモリ（ＲＡＭ）に読み込んでＣＰＵが実行することによりその機能を実現させるものであったが、この限りではなく、各処理の全部または一部の機能を専用のハードウェアにより実現してもよい。また、上述したメモリは、光磁気ディスク装置、フラッシュメモリ等の不揮発性のメモリや、ＣＤ−ＲＯＭ等の読み出しのみが可能な記録媒体、ＲＡＭ以外の揮発性のメモリ、あるいはこれらの組み合わせによるコンピュータ読み取り、書き込み可能な記録媒体より構成されてもよい。
【０１０１】
また、ホストコンピュータ３０００において各種処理を行う機能を実現する為のプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各処理を行っても良い。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
【０１０２】
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【０１０３】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【０１０４】
また、上記プログラムは、前述した機能の一部を実現する為のものであっても良い。さらに、前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【０１０５】
また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体およびプログラムプロダクトは、本発明の範疇に含まれる。
【０１０６】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【０１０７】
【図１】本発明の一実施形態におけるホストコンピュータ（情報処理装置）を含む印刷処理システムの概略構成を示すブロック図である。
【図２】印刷処理関連プログラム（プリンタドライバ）がホストコンピュータ３０００上のＲＡＭ２にロードされ実行可能となった状態のメモリマップ例を示す図である。
【図３】プリンタドライバ２０４に追加機能のプラグインモジュールセット３１０がインストールされている状態の各モジュール間の構成を示す図である。
【図４】コンフリクトマネージャ３０３及び推論エンジン３０２におけるコンフリクト処理の具体例を示す図である。
【図５】図３に示したアプリケーション２０１からプリンタドライバ２０４のＵＩを開く際の初期化処理のフローを示した図である。
【図６】プリンタドライバ２０４が必要とする内部構造体３０５のメモリマップ構成例を示す図である。
【図７】プラグインの機能をオンに変更した場合のコンフリクト処理について示すフロー図である。
【図８】プラグインモジュール３０９独自のＵＩである設定シート例を示す図である。
【図９】プリンタドライバ２０４のＵＩである仕上げ設定シート例を示す図である。
【図１０】プリンタドライバ２０４の拡張システムを示す図である。
【図１１】第２の実施形態におけるプラグインモジュール３０９独自のＵＩである設定シート例を示す図である。
【図１２】設定変更に応じたコンフリクト処理による設定状態の変化例を示す図である。
【符号の説明】
【０１０８】
１      ＣＰＵ
２      ＲＡＭ
３      ＲＯＭ
１０    ＣＲＴ
３０１  コンフリクト処理ルール
３０２  推論エンジン
３０３  コンフリクトマネージャ
３０４  状態変数リスト
３０５  内部構造体
３０６  ドライバ管理部
３０８  コンフリクト処理ルール
３０９  プラグインモジュール
３１０  プラグインモジュールセット
３０００  ホストコンピュータ
【図１】
2005190467.tif 000003
【図２】
2005190467.tif 000004
【図３】
2005190467.tif 000005
【図４】
2005190467.tif 000006
【図５】
2005190467.tif 000007
【図６】
2005190467.tif 000008
【図７】
2005190467.tif 000009
【図８】
2005190467.tif 000010
【図９】
2005190467.tif 000011
【図１０】
2005190467.tif 000012
【図１１】
2005190467.tif 000013
【図１２】
2005190467.tif 000014