(57)【要約】【課題】Ｖ４ドライバにおいて、Ｖ３ドライバと同様にアドイン機能を実現することができるプリンタドライバを提供する。【解決手段】デバイスの機能を利用するために用いられるドライバプログラムであって、前記デバイスの機能を利用する際に、前記ドライバプログラムが格納された第１の記憶領域とは異なる第２の記憶領域に格納された拡張モジュールを取得する取得手段、前記取得手段にて取得した拡張モジュールを実行する実行手段として情報処理装置を機能させる。【選択図】図１
2018132999.tif 000002
【特許請求の範囲】
【請求項１】
デバイスの機能を利用するために用いられるドライバプログラムであって、
前記デバイスの機能を利用する際に、前記ドライバプログラムが格納された第１の記憶領域とは異なる第２の記憶領域に格納された拡張モジュールを取得する取得手段、
前記取得手段にて取得した拡張モジュールを実行する実行手段
として情報処理装置を機能させるためのドライバプログラム。
【請求項２】
前記第２の記憶領域は、プロパティバッグであることを特徴とする請求項１に記載のドライバプログラム。
【請求項３】
前記ドライバプログラムは、Ｖ４ドライバであることを特徴とする請求項１または２に記載のドライバプログラム。
【請求項４】
前記ドライバプログラムは、第１のインストーラにより前記第１の記憶領域にインストールされ、
前記拡張モジュールは、前記第１のインストーラとは異なる第２のインストーラにより前記第２の記憶領域にインストールされる
ことを特徴とする請求項１乃至３のいずれか一項に記載のドライバプログラム。
【請求項５】
前記第２の記憶領域は、記憶されるデータの形式が規定され、
前記拡張モジュールは、前記第２の記憶領域にインストールされる際に、前記拡張モジュールのデータの形式が前記第２の記憶領域にて規定された形式と合致しない場合には、前記第２のインストーラにより前記第２の記憶領域にて規定されたデータの形式に変換された上でインストールされることを特徴とする請求項１乃至４のいずれか一項に記載のドライバプログラム。
【請求項６】
前記取得手段は、前記拡張モジュールを取得する際に、当該拡張モジュールが前記第２のインストーラによりデータの形式が変換されているか否かを判定し、変換されている場合には、前記拡張モジュールのデータの形式を元の形式に変換することを特徴とする請求項５に記載のドライバプログラム。
【請求項７】
前記第２の記憶領域は、記憶される１のデータに対するサイズが規定され、
前記拡張モジュールは、前記第２の記憶領域にインストールされる際に、前記拡張モジュールのサイズが前記第２の記憶領域にて規定された１のデータに対するサイズを超える場合には、前記第２のインストーラにより分割された上でインストールされることを特徴とする請求項１に記載のドライバプログラム。
【請求項８】
前記取得手段は、前記拡張モジュールを取得する際に、当該拡張モジュールが前記第２のインストーラにより分割されているか否かを判定し、分割されている場合には、分割された前記拡張モジュールを結合することを特徴とする請求項７に記載のドライバプログラム。
【請求項９】
前記デバイスの機能を利用するためのユーザインターフェースを拡張するための第２の拡張モジュールを前記第２の記憶領域から取得する第２の取得手段、
前記第２の取得手段にて取得した第２の拡張モジュールを実行する第２の実行手段
として前記情報処理装置を更に機能させることを特徴とする請求項１乃至８のいずれか一項に記載のドライバプログラム。
【請求項１０】
前記デバイスの機能を拡張した際に設定可能な設定値および設定値の組み合わせに対する禁則条件の情報を前記第２の記憶領域から取得する第３の取得手段、
前記第３の取得手段にて取得された情報に基づいて、前記ユーザインターフェースにて設定された設定値を修正する処理手段
として前記情報処理装置を更に機能させることを特徴とする請求項９に記載のドライバプログラム。
【請求項１１】
前記第３の取得手段にて取得された情報には設定に対する優先度およびデフォルト値が含まれ、
前記処理手段は、前記ユーザインターフェースにて設定された設定値の組み合わせが不可である場合、優先度が最も低い設定の値をデフォルト値に変更することを特徴とする請求項１０に記載のドライバプログラム。
【請求項１２】
複数の設定値のうち拡張した機能に対する設定値を所定の形式にて記述して、前記デバイスへのデータとして生成する生成手段として前記情報処理装置を機能させるための請求項９乃至１１のいずれか一項に記載のドライバプログラム。
【請求項１３】
前記所定の形式は、前記データにおいてコメントとして記述した形式であることを特徴とする請求項１２に記載のドライバプログラム。
【請求項１４】
デバイスに対応するドライバプログラムがインストールされた情報処理装置であって、
前記ドライバプログラムの機能として、当該ドライバプログラムが格納された第１の記憶領域とは異なる第２の記憶領域に格納された拡張モジュールを取得する取得手段と、
前記ドライバプログラムの機能として、前記取得手段にて取得した拡張モジュールを実行する実行手段と
を備えることを特徴とする情報処理装置。
【請求項１５】
デバイスに対応するドライバプログラムがインストールされた情報処理装置の制御方法であって、
前記ドライバプログラムの機能として、当該ドライバプログラムが格納された第１の記憶領域とは異なる第２の記憶領域に格納された拡張モジュールを取得する取得工程と、
前記ドライバプログラムの機能として、前記取得工程にて取得した拡張モジュールを実行する実行工程と
を有することを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ドライバプログラム、情報処理装置およびその制御方法に関する。
【背景技術】
【０００２】
パーソナルコンピュータ（ＰＣ）を介して画像形成装置（プリンタ）を使用する際、プリンタドライバと呼ばれるソフトウェアによって印刷が制御される。プリンタドライバは、ユーザが印刷設定を行うためのユーザーインターフェース（ＵＩ）を備えている。また、プリンタドライバは、アプリケーションからの描画命令を画像形成装置が解釈できる印刷データ（ＰＤＬ：Ｐｒｉｎｔｅｒ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）に変換し、画像形成装置へ送信する役割を有している。
【０００３】
近年、Ｍｉｃｒｏｓｏｆｔ社は、Ｖ４ドライバと呼ばれる新しいアーキテクチャで動作するプリンタドライバを導入した。Ｖ４ドライバをカスタマイズする技術として、特許文献１では、印刷設定の保存指示により設定の一覧情報をテンポラリに保存し、テンポラリの情報を印刷設定データベースとして永続化し、蓄積した印刷設定を使用しカスタマイズを行っている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−２１９７３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
Ｖ４ドライバ以前のＶ３ドライバにおけるアドイン機能の実現方法を図１４（ａ）に示す。Ｖ３ドライバは、情報処理装置１４００が備えるＶ３ドライバインストーラ１４０１によりインストールされ、３フォルダ１４０２配下にＶ３ドライバモジュール１４０３として配置される。その後、アドインインストーラ１４０６により、アドインモジュール１４０４が３フォルダ１４０２に格納される。そして、格納されたアドインモジュール１４０４の名称をオペレーティングシステム（以下「ＯＳ」と呼ぶ：不図示）のプリントシステムが管理するモジュールリスト（レジストリ１４０５内の情報）に登録することで、アドイン機能を実現していた。
【０００６】
一方、Ｖ４ドライバにおけるアドイン機能の実現方法を図１４（ｂ）に示す。Ｖ４ドライバは、情報処理装置１５００が備えるＶ４ドライバインストーラ１５０１によりインストールされ、ドライバストア１５０２配下にＶ４ドライバモジュール１５０３として配置される。しかし、ドライバストア１５０２配下にファイルを追加することはＯＳに許可されていないため、アドインインストーラ１５０６からアドインモジュール１５０４を追加することができない。そのため、Ｖ４ドライバではＶ３ドライバ方式（ドライバをインストール後に、ドライバにアドインモジュールを追加登録すること）のアドイン機能は実現できないという課題がある。つまり、Ｖ４ドライバでは、Ｖ３ドライバ方式では、機能拡張ができない。
【課題を解決するための手段】
【０００７】
上記課題を解決するために本願発明は以下の構成を有する。すなわち、デバイスの機能を利用するために用いられるドライバプログラムであって、前記デバイスの機能を利用する際に、前記ドライバプログラムが格納された第１の記憶領域とは異なる第２の記憶領域に格納された拡張モジュールを取得する取得手段、前記取得手段にて取得した拡張モジュールを実行する実行手段として情報処理装置を機能させる。
【発明の効果】
【０００８】
本発明によれば、Ｖ４ドライバにおいて、機能の拡張を実現することができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態に係る情報処理装置の構成例を示す図。
【図２】情報処理装置と画像形成装置との間で印刷を行うまでの流れを説明するための図。
【図３】プロパティバッグ格納部の処理を説明するためのフローチャート。
【図４】プロパティバッグ取得部の処理を説明するためのフローチャート。
【図５】本願発明に係る参照情報の記述例を示す図。
【図６】付加機能実行部の処理を説明するためのフローチャート。
【図７】第２の実施形態に係る情報処理装置の構成例を示す図。
【図８】ユーザインターフェースの拡張例を説明するための図。
【図９】機能拡張スクリプトの処理を説明するためのフローチャート。
【図１０】第３の実施形態に係る情報処理装置の構成例を示す図。
【図１１】機能／禁則拡張部の処理を説明するためのフローチャート。
【図１２】付加機能印刷設定生成部の処理を説明するためのフローチャート。
【図１３】付加機能印刷設定生成部で生成されるデータ例を示す図。
【図１４】Ｖ３ドライバとＶ４ドライバの違いによる課題を説明するための図。
【発明を実施するための形態】
【００１０】
以下、本願発明に係る一実施形態について、図面を用いて説明する。なお、以下に示す構成や処理の流れは一例であり、これらに限定するものではない。
【００１１】
＜第１の実施形態＞
［情報処理装置の構成］
図１は、本発明の第１の実施形態に係る情報処理装置１００Ａの構成例を示すブロック図である。ここでは、情報処理装置１００Ａとして、一般的なＰＣを例に挙げて説明する。
【００１２】
情報処理装置１００Ａは、画像形成装置２００と有線または無線にて通信可能に接続されている。情報処理装置１００Ａは、ハードウェア構成として、ＣＰＵ１３１、入力部１３２、表示部１３３、メモリ１３４、通信部１３５、および記憶部１３６等を備え、これらのハードウェアは内部バスで相互に接続されている。
【００１３】
ＣＰＵ１３１は、情報処理装置１００Ａの全体の制御を司る。入力部１３２は、例えば、キーボードやマウスなど、情報処理装置１００Ａに対し、ユーザ指示等を入力するための部位である。表示部１３３は、例えば、液晶モニタが用いられる。なお、入力部１３２と表示部１３３とが一体となった、タッチパネルディスプレイが用いられてもよい。メモリ１３４は、ＲＡＭおよびＲＯＭ等の記憶部である。通信部１３５は、画像形成装置２００に接続するためのインターフェースであって、画像形成装置２００やその他の外部装置とデータ送受信を行う。
【００１４】
記憶部１３６は、例えば、ハードディスク、ＣＤやＤＶＤなどの光ディスク、光磁気ディスク、ソリッドステートドライバなどの不揮発性の記憶領域である。記憶部１３６には、ソフトウェアであるＯＳ、アプリケーション１０１、Ｖ４ドライバインストーラ１０２、アドインインストーラ１０３、プロパティバッグ１０４、およびドライバ１０５などが記憶されている。なお、これらのソフトウェア（モジュール、プログラム）は、メモリ１３４に読み出されて、ＣＰＵ１３１の制御に従い動作する。
【００１５】
アプリケーション１０１は、印刷データおよび印刷設定の生成を行う。印刷データおよび印刷設定は、スプーラ（不図示）を通して、ドライバ１０５のフィルタ１０８に渡される。Ｖ４ドライバインストーラ１０２は、ドライバ１０５をＯＳのプリントシステム（不図示）にインストールする。アドインインストーラ１０３は、ドライバ１０５に対し、付加機能を追加するためのインストーラである。アドインインストーラ１０３は、プロパティバッグ格納部１０６を備えている。プロパティバッグ格納部１０６は、プロパティバッグ１０４にアドインモジュール１０７を格納する。プロパティバッグ格納部１０６が行う処理については、図３を用いて後述する。
【００１６】
プロパティバッグ１０４は、ドライバ１０５が利用可能なデータ保存領域である。プロパティバッグ１０４は、キーバリューペアと呼ばれるキーと値で構成されるデータセットでデータを扱う。プロパティバッグ１０４のキーの名称を、以下「エントリ」と呼ぶ。キーは特定のデータエントリに一意であり、関連する特定エントリのデータ属性によって構成される。バリュー（値）はキーによって割り当てられキーによって識別されるデータである。プロパティバッグ１０４で通常扱うデータは、整数や文字列等の静的なデータであるが、本実施形態では、動的に実行可能なモジュールを静的なデータとして格納する。具体的には、プロパティバッグ１０４には、付加機能を提供するアドインモジュール１０７が格納される。ここでの付加機能とは、ドライバ１０５が備える既存の機能に対して拡張する機能を指す。
【００１７】
アドインモジュール１０７は、印刷時に付加機能を提供するモジュールであり、ドライバ１０５の機能を拡張する拡張モジュールとして機能する。具体的な付加機能としては、暗号化セキュアプリント、地紋印刷、ログ収集、集計管理機能等がある。また、付加機能は、既存の機能に対して何らかの制限を加えるようなものであってもよい。例えば、所定の条件を満たした場合に、既存の印刷機能を制限するようなものであってもよい。なお、既存の処理については、詳細な説明を省略する。
【００１８】
プロパティバッグ１０４は、ポイント＆プリント機能によって、サーバーＰＣ、クライアントＰＣ間で伝搬される。ポイント＆プリント機能は、ＯＳによって提供される機能である。この機能により、サーバーＰＣにインストールされたプリンタドライバを共有プリンタとして公開することで、クライアントＰＣからその共有プリンタに接続するだけで自動的にプリンタドライバがインストールされる。
【００１９】
ドライバ１０５は、ユーザが画像形成装置２００およびその機能を利用可能にするためのドライバプログラムとしてのモジュール群であり、ＯＳのプリントシステムに登録される。ドライバ１０５は、主に印刷設定機能と印刷機能を提供する。本実施形態では、ドライバ１０５は、対応するデバイスである画像形成装置２００を利用するためのプリンタドライバである。ドライバ１０５は、フィルタ１０８を備える。フィルタ１０８は、各種フィルタ１０９、アドインフィルタ１１０を備える。アドインフィルタ１１０は、プロパティバッグ取得部１１１および付加機能実行部１１２を備える。
【００２０】
フィルタ１０８は、ＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）ファイルを入力とし、画像形成装置２００が解釈可能な言語に変換して出力するモジュールである。ＸＰＳとは、Ｍｉｃｒｏｓｏｆｔ社が開発したオープン規格の電子文書フォーマットであり、プリントシステムのスプールデータとしても使用される。各種フィルタ１０９は、ＸＰＳファイルを編集するレイアウトフィルタやＸＰＳファイルをＰＤＬデータに変換するレンダラフィルタなどがある。
【００２１】
アドインフィルタ１１０は、印刷時の付加機能を提供するフィルタである。例えば、アドインフィルタ１１０は、ＸＰＳファイルを入力として、ＸＰＳファイルを編集し、編集後のＸＰＳファイルを出力したりする。また、アドインフィルタ１１０は、ＰＤＬデータを入力として、ＰＤＬデータを編集し、編集後のＰＤＬデータを出力したりする。また、アドインフィルタ１１０は、フィルタの入出力は変更せずにデータ領域（プロパティバッグなど）を更新したりすることができる。アドインフィルタ１１０は、フィルタ１０８内に複数存在してもよいし、フィルタの接続順も任意である。
【００２２】
プロパティバッグ取得部１１１は、アドインモジュール１０７を取得する処理部である。プロパティバッグ取得部１１１が行う処理については、図４を用いて後述する。付加機能実行部１１２は、プロパティバッグ取得部１１１で取得されたアドインモジュール１０７を実行する処理部である。また、付加機能実行部１１２は、アドインモジュール１０７を実行するか否かを判断する。
【００２３】
なお、以降説明するフローチャートにおいては、記憶部１３６に記憶された各機能部に係るソフトウェアはメモリ１３４に読み出されて、ＣＰＵ１３１の制御に従い動作する。
【００２４】
本実施形態では、情報処理装置１００Ａに接続されたデバイスとして１台の画像形成装置２００を例に挙げている。しかし、これに限定されるものではなく、複数の画像形成装置が接続され、各画像形成装置に対応してドライバが情報処理装置にインストールされてもよい。
【００２５】
［情報処理装置と画像形成装置による印刷の流れ］
図２は、情報処理装置１００Ａと画像形成装置２００との間で印刷を行うまでを説明するための図である。（１）〜（５）について順次説明する。なお、（１）および（２）はインストール時のデータやファイルの配置を表し、（３）〜（５）は印刷時のデータの流れを表す。
【００２６】
（１）Ｖ４ドライバインストーラ１０２は、ＯＳのプリントシステムにドライバ１０５をインストールする。
（２）アドインインストーラ１０３は、プロパティバッグ格納部１０６により、プロパティバッグ１０４にアドインモジュール１０７を格納する。
（３）ユーザがアプリケーション１０１上で印刷を実行すると、印刷データがドライバ１０５に送信される。
（４）印刷データを処理するフィルタ１０８内のアドインフィルタ１１０において、プロパティバッグ取得部１１１によりプロパティバッグ１０４からアドインモジュール１０７が取得され、付加機能実行部１１２により、アドインモジュール１０７が実行される。
（５）フィルタ１０８が生成したデータは、画像形成装置２００に送信される。
上記（１）〜（５）の処理により印刷を実行することが可能となる。
【００２７】
［プロパティバッグ格納部の処理］
図３は、プロパティバッグ格納部１０６の処理を説明するための図である。なお、以下に示す、Ｓ３０２〜Ｓ３０３と、Ｓ３０４〜Ｓ３０５は順番が入れ替わってもよい。
【００２８】
Ｓ３０１にて、プロパティバッグ格納部１０６は、プロパティバッグ１０４に格納するデータを取得する。
【００２９】
Ｓ３０２にて、プロパティバッグ格納部１０６は、プロパティバッグ１０４に格納したいデータと、プロパティバッグ１０４のエントリのデータ形式が合っているか判定する。プロパティバッグ１０４のエントリのデータ形式は、例えば、ＰｏｗｅｒＳｈｅｌｌスクリプトのコマンド実行等により取得することができる。なお、判定を省略し、エントリのデータ形式を既知として扱ってもよい。データ形式が合っている場合（Ｓ３０２にてＹＥＳ）Ｓ３０４へ進み、合っていない場合は（Ｓ３０２にてＮＯ）Ｓ３０３へ進む。
【００３０】
Ｓ３０３にて、プロパティバッグ格納部１０６は、格納したいデータをプロパティバッグ１０４のエントリのデータ形式に変換する。データ形式の変換として、例えば、ファイルのバイナリデータを文字列形式でプロパティバッグに格納する場合は、バイナリデータをＢａｓｅ６４文字列形式に変換する。なお、Ｂａｓｅ６４とは、６４種類の英数字のみを用いてバイナリデータを文字データに置き換える変換方式である。なお、変換方式はこれに限定するものではなく、他の方式を用いてもよい。
【００３１】
Ｓ３０４にて、プロパティバッグ格納部１０６は、プロパティバッグ１０４に格納したいデータのサイズと、プロパティバッグ１０４のエントリのデータ形式のサイズが合っているか判定する。つまり、プロパティバッグ１０４に格納したいデータのサイズが、プロパティバッグ１０４のエントリのデータ形式のサイズに格納可能であるか否かを判定する。データサイズが合っている場合は（Ｓ３０４にてＹＥＳ）Ｓ３０６へ進み、合っていない場合は（Ｓ３０４にてＮＯ）Ｓ３０５へ進む。
【００３２】
Ｓ３０５にて、プロパティバッグ格納部１０６は、格納したいデータをプロパティバッグ１０４のエントリに格納可能なサイズに分割する。サイズの分割として、例えば、任意ビット数の整数型のデータを３２ビット整数型のプロパティバッグ１０４のエントリに格納する場合は、任意ビット数の整数型を３２ビット毎に分割する。なお、分割方法はこれに限定するものではなく、格納可能なデータサイズと、格納したいデータのサイズに応じて他の方法を用いてもよい。
【００３３】
Ｓ３０６にて、プロパティバッグ格納部１０６は、プロパティバッグ１０４にデータを格納する。そして、本処理フローを終了する。
【００３４】
なお、Ｓ３０３、Ｓ３０５の変換／分割情報を格納するデータ（例を図５を用いて後述する）に含めてもよいし、プロパティバッグ１０４の別エントリとして格納してもよい。また、この情報をプロパティバッグ取得部１１１で参照してもよい。
【００３５】
［プロパティバッグ取得部の処理］
図４は、プロパティバッグ取得部１１１の処理を説明するための図である。なお、以下に示す、Ｓ４０２〜Ｓ４０３と、Ｓ４０４〜Ｓ４０５は順番が入れ替わってもよい。
【００３６】
Ｓ４０１にて、プロパティバッグ取得部１１１は、プロパティバッグ１０４からデータ（キーバリューペアのバリュー）を取得する。このとき、プロパティバッグ取得部１１１は、データと一緒に、Ｓ３０３、Ｓ３０５の変換／分割情報（例を図５を用いて後述する）を取得してもよい。
【００３７】
Ｓ４０２にて、プロパティバッグ取得部１１１は、データが分割されているか否かを判定する。データが分割されているかどうかが既知であってもよい（特定のエントリは必ず分割されている等）。判定方法は、例えば以下の２通りがある。
方法（１）後述する図５の情報を参照し、分割されているかを判定する
方法（２）エントリが特定の規則に基づいて変化しているかを判定する
【００３８】
例えば、方法（２）において、エントリが、ＤｅｖｉｄｅｄＤａｔａ１、ＤｅｖｉｄｅｄＤａｔａ２、ＤｅｖｉｄｅｄＤａｔａ３のように、ＤｅｖｉｄｅｄＤａｔａの後に連番になるような形式の場合、データが取得できなくなるまで取得する。そして、２つ以上取得されていれば分割されていると判定することができる。データが分割されていると判定された場合（Ｓ４０２にてＹＥＳ）Ｓ４０３へ進み、データが分割されていないと判定された場合（Ｓ４０２にてＮＯ）Ｓ４０４へ進む。
【００３９】
Ｓ４０３にて、プロパティバッグ取得部１１１は、データを結合する。結合順は方法（２）であれば、正順もしくは逆順で結合し、方法（１）であれば後述する図５の情報に記載の通りの順番で結合する。結合順は既知であってもよい。
【００４０】
Ｓ４０４にて、プロパティバッグ取得部１１１は、エントリのデータ形式が変更されているかを判定する。データ形式が変更されているかどうかが既知であってもよい。判定方法は、後述する図５の情報を参照し、データ形式が変換されているかを判定する。データ形式が変更されていると判定された場合（Ｓ４０４にてＹＥＳ）Ｓ４０５へ進み、データ形式が変更されていないと判定された場合（Ｓ４０４にてＮＯ）本処理フローを終了する。
【００４１】
Ｓ４０５にて、プロパティバッグ取得部１１１は、データ形式を元のデータ形式に変換する。その後、本処理フローを終了する。
【００４２】
［プロパティバッグの情報を結合する際に参照する情報］
図５は、プロパティバッグ取得部１１１がプロパティバッグ１０４から情報を取得する際に参照する情報を説明するための図である。破線５０１および破線５０４で囲んだ領域は、プロパティバッグ１０４に格納したデータの１つの纏まりである。ｎａｍｅ属性値はデータ名を表す。
【００４３】
記述５０２、５０５は、データ変換形式を表す。ｂｅｆｏｒｅ属性値は変換前のデータ形式を表し、ａｆｔｅｒ属性値は変換後のデータ形式を表す。ＣｏｍｂｉｎａｔｉｏｎＯｒｄｅｒは、データの結合（分割）順を表す。記述５０３、５０６、５０７、および５０８は、プロパティバッグ１０４のエントリと、結合（分割）順を表す。ｎａｍｅ属性値はプロパティバッグのエントリを表し、ｏｒｄｅｒ属性値は結合（分割）順を表している。
【００４４】
［付加機能実行部の処理］
図６は、付加機能実行部１１２の処理を説明するための図である。
【００４５】
Ｓ６０１にて、付加機能実行部１１２は、アドインモジュール１０７を実行するか否かを判定する。アドインモジュール１０７を実行するかどうかは既知であってもよい。また、付加機能実行部１１２は、プロパティバッグ取得部１１１によって、アドインモジュール１０７が取得できた場合に実行すると判定してもよい。加えて、プロパティバッグ１０４に実行するか否かの情報を入れておき、その情報に基づき判定してもよい。アドインモジュール１０７を実行すると判定した場合（Ｓ６０１にてＹＥＳ）Ｓ６０２へ進み、実行しないと判定した場合（Ｓ６０１にてＮＯ）本処理フローを終了する。
【００４６】
Ｓ６０２にて、付加機能実行部１１２は、アドインモジュール１０７をロードする。付加機能実行部１１２は、アドインモジュール１０７をロードするために、アドインモジュール１０７を情報処理装置１００Ａの記憶領域（不図示）に保存してもよい。
【００４７】
Ｓ６０３にて、付加機能実行部１１２は、ロードしたアドインモジュール１０７を実行する。その後、本処理フローを終了する。
【００４８】
以上説明したとおり、Ｖ４ドライバではＶ３ドライバ方式（ドライバをインストール後に、ドライバにアドインモジュールを追加登録すること）のアドインは実現できないという課題がある。これに対し、本実施形態では、印刷時に動作するフィルタについての解決手段を示した。具体的には、フィルタ１０８にアドインフィルタ１１０を追加し、プロパティバッグ１０４に追加したアドインモジュール１０７をロードおよび実行する。アドインモジュール１０７はドライバ１０５外から変更可能であるため、Ｖ４ドライバのフィルタ１０８においてアドイン機能が実現できる。
【００４９】
また、プロパティバッグ１０４は、ポイント＆プリントでインストールした画像形成装置にも伝搬される。そのため、サーバークライアント環境において、管理者がサーバーＰＣ上で対象の画像形成装置に対し、アドインインストーラ１０３でアドインをインストール／アンインストール（プロパティバッグ１０４を更新）する。これにより、その画像形成装置をポイント＆プリントでインストールした全てのクライアントにも同様にアドインのインストール状況が更新されることとなる。
【００５０】
＜第２の実施形態＞
本発明の第２の実施形態について説明する。第２の実施形態では、プロパティバッグ１０４に格納した付加機能情報１１３、付加機能禁則情報１１４、およびＵＩアドインモジュール１１６を、機能拡張スクリプト１１７およびＵＩ部１２０で取得する。そして、これらの情報を、アプリケーション１０１やＯＳに公開する機能の拡張や、ドライバＵＩ（ユーザインターフェース）の機能拡張に利用することが特徴である。なお、本発明を適応する前の状態を以降で「既存」と呼ぶ。
【００５１】
［情報処理装置の構成］
図７は、本実施形態に係る情報処理装置１００Ｂの構成例を示す図である。第１の実施形態と同様の構成については、同じ参照番号を付し説明を省略する。
【００５２】
プロパティバッグ１０４は、付加機能情報１１３、付加機能禁則情報１１４、フィルタアドインモジュール１１５、およびＵＩアドインモジュール１１６を備える。フィルタアドインモジュール１１５は、第１の実施形態で説明したアドインモジュール１０７と同様の機能を備える。ＵＩアドインモジュール１１６は、ドライバＵＩに付加機能を提供するモジュールである。
【００５３】
ドライバ１０５は更に、機能拡張スクリプト１１７、およびＵＩ部１２０を備える。機能拡張スクリプト１１７は、プロパティバッグ取得部１１８、および機能／禁則拡張部１１９を備える。機能拡張スクリプト１１７は、Ｖ４ドライバの機能や禁則を拡張することが可能なスクリプトファイルである。機能拡張スクリプト１１７は、例えば、Ｖ４ドライバにて規定されたＣｏｎｓｔｒａｉｎｔｓ．ｊｓなどである。なお、ここで用いられるスクリプト言語は、特に限定するものではない。プロパティバッグ取得部１１８は、プロパティバッグ取得部１１１と同様の機能を備える。機能／禁則拡張部１１９は、付加機能情報１１３、付加機能禁則情報１１４に基づき機能や禁則を拡張する処理部である。つまり、機能拡張スクリプト１１７は、プロパティバッグ取得部１１８を介してプロパティバッグ１０４から各種情報を取得し、取得した情報を機能／禁則拡張部１１９が用いて処理を行う事で、拡張された各種設定の組み合わせに対する検証／修正が可能となる。
【００５４】
ＵＩ部１２０は、ベンダ（例えば、画像形成装置２００の製造元）によって拡張されたドライバＵＩである。ＵＩ部１２０は、プロパティバッグ取得部１２１、および付加機能実行部１２２を備える。プロパティバッグ取得部１２１は、アドインフィルタ１１０が備えるプロパティバッグ取得部１１１と同様の機能を備える。付加機能実行部１２２は、アドインフィルタ１１０が備える付加機能実行部１１２と同様の機能を備える。つまり、ＵＩ部１２０は、プロパティバッグ取得部１２１を介してプロパティバッグ１０４からＵＩアドインモジュール１１６を取得し、取得したＵＩアドインモジュール１１６を付加機能実行部１２２が実行する事で、ＵＩの拡張が可能となる。
【００５５】
なお、以降説明するフローチャートにおいては、記憶部１３６に記憶された各機能部に係るソフトウェアはメモリ１３４に読み出されて、ＣＰＵ１３１の制御に従い動作する。
【００５６】
［ユーザインターフェースの拡張例］
図８は、本実施形態に係るユーザインターフェースの拡張例を説明するための図である。
【００５７】
機能および禁則の拡張は、機能拡張スクリプト１１７によって行われる。ＵＩ部１２０では拡張された機能および禁則に関する情報を取得することが可能である。ＵＩ部１２０自身が拡張された機能および禁則を表示する手段を有している場合は、ＵＩ部１２０は、その手段を使用してＵＩ表示を行う。表示する手段を有していない場合は、ＵＩ部１２０は、付加機能実行部１２２によってＵＩ表示を行う。表示結果の例を図８に示す。ドライバＵＩ８００に示す機能拡張８０１、機能拡張８０２、および機能拡張８０３が拡張された機能である。つまり、既存のドライバＵＩ８００においては、機能拡張８０１〜８０３は設けられていない構成である。
【００５８】
［機能拡張スクリプトの処理］
図９は、機能拡張スクリプト１１７の処理を説明するためのフローチャートである。
【００５９】
（印刷設定の妥当性検証）
図９（ａ）は、印刷設定の妥当性検証に係る処理のフローチャートである。
【００６０】
Ｓ９０１にて、機能拡張スクリプト１１７が備える機能／禁則拡張部１１９は、プロパティバッグ取得部１１８により、プロパティバッグ１０４から付加機能情報１１３および付加機能禁則情報１１４を取得する。付加機能情報１１３には、付加する機能の名称や、設定値の型や範囲、デフォルト値（既存機能のデフォルト値を含んでもよい）、機能の優先順位（既存機能の優先順位を含んでもよい）などの情報が格納されている。付加機能禁則情報１１４には、各設定値に対する禁則条件として、付加機能と既存機能の設定値の組み合わせで、設定不可能（または設定可能）な設定値の組み合わせを列挙したものが格納されている。
【００６１】
Ｓ９０２にて、機能／禁則拡張部１１９は、指定された印刷設定の内、付加機能の印刷設定について妥当性を検証する。そして、機能／禁則拡張部１１９は、検証の結果、妥当でない場合はその設定値を修正する。妥当性の検証は以下のステップで行う。
【００６２】
（１）付加機能情報１１３を参照し、設定値の型や範囲が合致しているかを確認する。合致していない場合は設定値をデフォルト値に変更する。合致している場合は何もしない。
（２）付加機能禁則情報１１４を参照し、付加機能と既存機能の設定値の組み合わせにおいて、設定不可能な組み合わせがあるか否かを確認する。設定不可能な組み合わせが存在しない場合は（５）に進む。設定不可能な組み合わせが存在する場合は（３）に進む。
（３）設定不可能な組み合わせの内、機能の優先順位が最も低い設定をデフォルト値に戻す。つまり、優先順位が最も低い設定を変更することで、より優先度の高い設定については変更しないように制御する。優先順位およびデフォルト値が存在しない機能は対象としない。
（４）（３）を設定不可能な組み合わせの分だけ実行する。つまり、設定不可能な組み合わせが存在しなくなるまで、設定の変更を行う。
（５）設定値の組み合わせが設定可能なものであり、妥当な印刷設定であると判断し、妥当性の検証を終了する。
なお、Ｓ９０２における設定値の妥当性検証の流れは一例であり、他の方法であってもよい。
【００６３】
（機能／禁則情報の取得）
図９（ｂ）は、機能／禁則情報の取得に係る処理のフローチャートである。
【００６４】
Ｓ９０３にて、機能／禁則拡張部１１９は、プロパティバッグ取得部１１８により、プロパティバッグ１０４から付加機能情報１１３および付加機能禁則情報１１４を取得する。
【００６５】
Ｓ９０４にて、機能／禁則拡張部１１９は、既存の機能／禁則情報に付加機能および付加機能禁則を付与する。機能／禁則拡張部１１９は、付加機能については付加機能情報１１３を参照し、付加機能禁則については付加機能禁則情報１１４を参照する。そして、機能／禁則拡張部１１９は、規定されたプリントスキーマの仕様に従い、情報を付与する。ここでのプリントスキーマの仕様は、ドライバ１０５にて予め定義されているものとする。
【００６６】
（印刷設定変換）
図９（ｃ）は、印刷設定変換（ＰｒｉｎｔＴｉｃｋｅｔ→Ｄｅｖｍｏｄｅ）に係る処理のフローチャートである。つまり、印刷設定をＰｒｉｎｔＴｉｃｋｅｔからＤｅｖｍｏｄｅ構造体に変換するための処理である。
【００６７】
Ｓ９０５にて、機能／禁則拡張部１１９は、プロパティバッグ取得部１１８により、プロパティバッグ１０４から付加機能情報１１３を取得する。
【００６８】
Ｓ９０６にて、機能／禁則拡張部１１９は、ＰｒｉｎｔＴｉｃｋｅｔに含まれる付加機能の設定値をプロパティバッグ１０４の１つ以上のエントリに格納する。
【００６９】
図９（ｄ）は、印刷設定変換（Ｄｅｖｍｏｄｅ→ＰｒｉｎｔＴｉｃｋｅｔ）に係る処理のフローチャートである。つまり、印刷設定をＤｅｖｍｏｄｅ構造体からＰｒｉｎｔＴｉｃｋｅｔに変換するための処理である。
【００７０】
Ｓ９０７にて、機能／禁則拡張部１１９は、プロパティバッグ取得部１１８により、プロパティバッグ１０４から付加機能情報１１３を取得する。
【００７１】
Ｓ９０８にて、機能／禁則拡張部１１９は、Ｓ９０６でプロパティバッグ１０４のエントリに格納されたデータを取り出し、ＰｒｉｎｔＴｉｃｋｅｔにマージする。
【００７２】
以上説明したとおり、Ｖ４ドライバではＶ３ドライバ方式（ドライバをインストール後に、ドライバにアドインモジュールを追加登録すること）のアドインは実現できないという課題がある。これに対し、本実施形態では、ＵＩ部１２０に対しての解決手段を示した。具体的には、ＵＩ部１２０において、プロパティバッグ１０４に追加したＵＩアドインモジュール１１６をロードおよび実行する。また、機能拡張スクリプト１１７において、付加機能情報１１３および付加機能禁則情報１１４を取得し、ＯＳやアプリケーション１０１に対して公開するドライバの機能や禁則を拡張する。ＵＩアドインモジュール１１６、付加機能情報１１３、付加機能禁則情報１１４はドライバ１０５外から変更可能であるため、Ｖ４ドライバのＵＩ部１２０においてアドイン機能が実現できる。
【００７３】
＜第３の実施形態＞
本発明の第３の実施形態について説明する。第３の実施形態では、第２の実施形態で説明した機能拡張スクリプト１１７を備えず、ＵＩ部１２０で機能／禁則拡張部１２３を備えることが特徴である。また、ＵＩ部１２０によって拡張された印刷設定は、ＯＳのプリントシステムによる印刷設定の妥当性検証処理によって削除されない形式で印刷設定に情報を格納する必要がある。そのために付加機能印刷設定生成部１２４を有する。
【００７４】
［情報処理装置の構成］
図１０は、本実施形態に係る情報処理装置１００Ｃの構成例を示す図である。第１、第２の実施形態と同様の構成については、同じ参照番号を付し説明を省略する。
【００７５】
ＵＩ部１２０は更に、機能／禁則拡張部１２３、および付加機能印刷設定生成部１２４を備える。機能／禁則拡張部１２３は、印刷設定の妥当性検証（付加機能追加版）、機能／禁則情報の取得（付加機能追加版）、ＵＩ生成処理、機能の設定値の更新処理を行う。付加機能印刷設定生成部１２４は、ＵＩ部１２０によって拡張された印刷設定を、ＯＳのプリントシステムによる印刷設定の妥当性検証処理によって削除されない形式で印刷設定に情報を格納する。
【００７６】
プロパティバッグ１０４は更に、付加機能表示情報１２５を備える。付加機能表示情報１２５は、ユーザインターフェースを構築するための情報（コントロールの種類、生成する場所／位置など）と、それに紐付く付加機能情報が格納されている。
【００７７】
印刷設定の妥当性検証（付加機能追加版）は、既存の印刷設定の妥当性検証処理に対し、付加機能の妥当性検証処理を追加したものである。印刷設定の妥当性検証（既存処理）は、ＯＳのプリントシステムによって提供されるＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）である。なお、同等の機能を持つもので代替してもよい。機能／禁則情報の取得（付加機能追加版）は、既存の機能／禁則情報を取得する処理に対し、付加機能の機能／禁則を付与する処理を追加したものである。機能／禁則情報の取得（既存処理）は、ＯＳのプリントシステムによって提供されるＡＰＩである。同等の機能を持つもので代替してもよい。
【００７８】
ＵＩ生成処理は、既存のＵＩ生成処理を行った後、プロパティバッグ１０４の付加機能表示情報１２５を取得し、取得できた場合は、追加で付加機能のＵＩの生成処理を行う。機能の設定値の更新処理は、既存機能の設定値の更新処理を行った後、プロパティバッグ１０４の付加機能表示情報１２５を取得し、取得できた場合は、追加で付加機能の設定値を更新する。印刷設定生成処理は、既存の印刷設定生成処理を行った後、プロパティバッグ１０４の付加機能情報１１３を取得し、取得できた場合は、付加機能の設定値を印刷設定に付与する。
【００７９】
通常、印刷設定はプリントスキーマの仕様に従う必要があり、従っていない印刷設定の記載は、ＯＳのプリントシステムによる印刷設定の妥当性検証処理によって削除される。そのため、アプリケーション１０１で独自に追加した印刷設定は、前述した妥当性検証処理によって削除される。これを回避するため、本実施形態では、付加機能印刷設定生成部１２４が、付加機能の設定値を、ＯＳのプリントシステムによる印刷設定の妥当性検証処理によって削除されない形式で印刷設定に付与する。削除されない形式とは、例えば、コメントとして記述する方法が挙げられる。なお、コメントの形式で記述する方法は一例であり、ＯＳのプリントシステムにて削除されない構成であれば他の方法を用いてもよい。
【００８０】
なお、以降説明するフローチャートにおいては、記憶部１３６に記憶された各機能部に係るソフトウェアはメモリ１３４に読み出されて、ＣＰＵ１３１の制御に従い動作する。
【００８１】
［機能／禁則拡張部の処理］
図１１は、機能／禁則拡張部１２３の処理のフローチャートである。
【００８２】
（印刷設定の妥当性検証）
図１１（ａ）は、印刷設定の妥当性検証（付加機能追加版）に係る処理のフローチャートである。
【００８３】
Ｓ１１０１にて、機能／禁則拡張部１２３は、既存の処理として、印刷設定の妥当性を検証する。
【００８４】
Ｓ１１０２にて、機能／禁則拡張部１２３は、プロパティバッグ取得部１２１により、プロパティバッグ１０４から付加機能情報１１３および付加機能禁則情報１１４を取得する。付加機能情報１１３には、付加する機能の名称や、設定値の型や範囲、デフォルト値（既存機能のデフォルト値を含んでもよい）、機能の優先順位（既存機能の優先順位を含んでもよい）などの情報が格納されている。付加機能禁則情報１１４には、付加機能と既存機能の設定値の組み合わせで、設定不可能（または可能）な設定値の組み合わせを列挙したものが格納されている。
【００８５】
Ｓ１１０３にて、機能／禁則拡張部１２３は、印刷設定の内、付加機能の印刷設定について妥当性を検証し、妥当でない場合は修正する。妥当性の検証は、第２の実施形態にて述べた図９（ａ）のＳ９０２の工程と同様の方法で行うものとする。
【００８６】
（機能／禁則情報の取得）
図１１（ｂ）は、機能／禁則情報の取得（付加機能追加版）に係る処理のフローチャートである。
【００８７】
Ｓ１１０４にて、機能／禁則拡張部１２３は、機能／禁則情報を取得する。
【００８８】
Ｓ１１０５にて、機能／禁則拡張部１２３は、プロパティバッグ取得部１２１により、プロパティバッグ１０４から付加機能情報１１３および付加機能禁則情報１１４を取得する。
【００８９】
Ｓ１１０６にて、機能／禁則拡張部１２３は、機能／禁則情報に付加機能および付加機能禁則を付与する。機能／禁則拡張部１２３は、付加機能については付加機能情報１１３を参照し、付加機能禁則については付加機能禁則情報１１４を参照する。そして、機能／禁則拡張部１２３は、規定されたプリントスキーマの仕様に従い、情報を付与する。
【００９０】
（ＵＩ生成処理）
図１１（ｃ）は、ＵＩ生成処理のフローチャートである。
【００９１】
Ｓ１１０７にて、機能／禁則拡張部１２３は、既存のＵＩ生成処理を行う。
【００９２】
Ｓ１１０８にて、機能／禁則拡張部１２３は、プロパティバッグ取得部１２１により、プロパティバッグ１０４から付加機能表示情報１２５を取得する。
【００９３】
Ｓ１１０９にて、機能／禁則拡張部１２３は、取得した付加機能表示情報１２５に基づき、付加機能のＵＩ生成処理を行う。
【００９４】
（機能の設定値の更新処理）
図１１（ｄ）は、機能の設定値の更新処理のフローチャートである。
【００９５】
Ｓ１１１０にて、機能／禁則拡張部１２３は、既存機能の設定値について更新処理を行う。
【００９６】
Ｓ１１１１にて、機能／禁則拡張部１２３は、プロパティバッグ取得部１２１により、プロパティバッグ１０４から付加機能表示情報１２５を取得する。
【００９７】
Ｓ１１１２にて、機能／禁則拡張部１２３は、取得した付加機能表示情報１２５に基づき、付加機能の設定値を更新する。
【００９８】
［付加機能印刷設定生成部の処理］
図１２は、付加機能印刷設定生成部１２４の処理を説明するためのフローチャートである。
【００９９】
Ｓ１２０１にて、付加機能印刷設定生成部１２４は、既存の印刷設定生成処理を行う。
【０１００】
Ｓ１２０２にて、付加機能印刷設定生成部１２４は、プロパティバッグ取得部１２１により、プロパティバッグ１０４から付加機能情報１１３を取得する。
【０１０１】
Ｓ１２０３にて、付加機能印刷設定生成部１２４は、取得した付加機能情報１１３に基づき、付加機能の設定値を印刷設定に付与する。
【０１０２】
［付加機能印刷設定生成部で生成されるデータ例］
図１３は、付加機能印刷設定生成部１２４で生成されるデータ例を説明するための図である。図１３に示すデータにおいて、複数の設定値群が含まれている。このうち、破線１３０１の領域は、付加機能の印刷設定であり、印刷設定に付与されたコメントの例である。つまり、破線１３０１の領域として、“＜！−−”と“−−＞”にて挟まれた範囲がコメントとして扱われ、ＯＳのプリントシステムにて削除されないものとなる。破線１３０１内において、記述１３０２が示すＰａｒａｍｅｔｅｒＩｎｉｔのｎａｍｅ属性値のＣｕｓｔｏｍＳｅｔｔｉｎｇ１は付加機能の名称を表す。Ｖａｌｕｅの要素値“１００”は、ＣｕｓｔｏｍＳｅｔｔｉｎｇ１の値を表す。Ｖａｌｕｅのｔｙｐｅ属性値のｉｎｔｅｇｅｒは、ＣｕｓｔｏｍＳｅｔｔｉｎｇ１の値の型を表す。
【０１０３】
以上説明したとおり、Ｖ４ドライバではＶ３ドライバ方式（ドライバをインストール後に、ドライバにアドインモジュールを追加登録すること）のアドイン機能は実現できないという課題がある。これに対し、本実施形態では、ＵＩ部１２０に対しての解決手段を示した。具体的には、プロパティバッグ１０４に追加した付加機能情報１１３、付加機能禁則情報１１４、ＵＩアドインモジュール１１６を追加する。ＵＩ部１２０でそれらを読み込み、機能／禁則拡張部１２３、付加機能印刷設定生成部１２４、付加機能実行部１２２によって、付加機能がＵＩおよび印刷設定に追加される。プロパティバッグ１０４に追加する情報はドライバ１０５外から変更可能であるため、Ｖ４ドライバのＵＩ部１２０においてアドイン機能が実現できる。
【０１０４】
なお、第３の実施形態において機能／禁則拡張部１２３および付加機能印刷設定生成部１２４の機能をＵＩアドインモジュール１１６が備えてもよい。その場合、機能／禁則拡張部１２３および付加機能印刷設定生成部１２４は不要となる。
【０１０５】
なお、上記の実施形態では、Ｖ４ドライバについて例示したが、これに限定されるものではなく、プロパティバッグと同様の機能を有したプリンタドライバに適用することが可能である。
【０１０６】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピューターにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１０７】
１００…情報処理装置、１０１…アプリケーション、１０２…Ｖ４ドライバインストーラ、１０３…アドインインストーラ、１０４…プロパティバッグ、１０５…ドライバ、１０６…プロパティバッグ格納部、１０７…アドインモジュール、１０８…フィルタ、１１０…アドインフィルタ、１１１…プロパティバッグ取得部、１１２…付加機能実行部
【図１】
2018132999.tif 000003
【図２】
2018132999.tif 000004
【図３】
2018132999.tif 000005
【図４】
2018132999.tif 000006
【図５】
2018132999.tif 000007
【図６】
2018132999.tif 000008
【図７】
2018132999.tif 000009
【図８】
2018132999.tif 000010
【図９】
2018132999.tif 000011
【図１０】
2018132999.tif 000012
【図１１】
2018132999.tif 000013
【図１２】
2018132999.tif 000014
【図１３】
2018132999.tif 000015
【図１４】
2018132999.tif 000016