以下、本発明を、実施形態をもって説明するが、本発明は後述する実施形態に限定されるものではない。なお、以下に参照する各図においては、共通する要素について同じ符号を用い、適宜その説明を省略するものとする。また、以下の実施形態では、WindowsのV4プリンタドライバのアーキテクチャに基づいたプリンタドライバを例に説明するが、本発明は、WindowsやV4プリンタドライバに限定されるものではない。
図1は、本発明の実施形態におけるハードウェアの概略構成を示す図である。図1では、情報処理装置110とプリンタ120が、ネットワークを介して接続されている例を示している。この例では、1台の情報処理装置110と3台のプリンタ120がネットワークを介して接続されているが、情報処理装置110は2台以上であってもよい。また、プリンタ120は、機種共通プリンタドライバを構成し、使用するため、機種が異なる2台または4台以上であってもよい。
情報処理装置110は、各種アプリケーションを実装し、ユーザの操作によってそれらのアプリケーションを実行することができる。また、情報処理装置110は、OSに対応したプリンタドライバを備えており、プリンタ120に対して印刷ジョブを送信することができる。
プリンタ120は、ネットワークを通じて、情報処理装置110から印刷ジョブを受信し、実行することができる画像処理装置の1つである。画像処理装置は、プリンタ120に限らず、コピー機能、スキャナ機能、ファックス機能、印刷機能等の複数の機能を有するMFP (Multi-Function Peripheral)などであってもよい。印刷ジョブは、情報処理装置110のプリンタドライバによって生成され、PDL(Page Description Language)のようなプリンタ120が解釈可能な言語で記述されたデータ形式で受信することで、プリンタ120による印刷が可能となる。
次に、情報処理装置110のハードウェア構成について説明する。図2は本発明の実施形態における情報処理装置110のハードウェア構成図である。情報処理装置110は、CPU201、RAM202、ROM203、外部I/F204、通信I/F205、入力装置206、表示装置207、記憶装置208を含み、各ハードウェアは、バスを介して接続されている。
CPU201は、情報処理装置110の動作を制御するプログラムを実行する装置である。RAM202は、情報処理装置110が実行するプログラムの実行空間を提供するための揮発性の記憶装置であり、プログラムやデータの格納用、展開用として使用される。
ROM203は、情報処理装置110が実行するファームウェアなどのプログラムを記憶するための不揮発性の記憶装置である。
外部I/F204は、情報処理装置110に、フラッシュメモリなどの外部記憶媒体などを接続するためのインターフェースである。通信I/F205は、有線または無線によって、情報処理装置110と、ネットワークとを接続するためのインターフェースである。また、通信I/F205は、プリンタ120に対して印刷ジョブを送信する際にも用いられる。
入力装置206は、ユーザが入力する操作を受け付ける装置であり、例として、キーボードや、マウスなどが挙げられる。表示装置207は、ユーザに対して情報を表示するための装置であり、例として、液晶ディスプレイなどが挙げられる。
記憶装置208は、情報の読み出しおよび書き込みが可能な記憶媒体であり、情報処理装置110を機能させるOSや、プリンタドライバ、各種アプリケーションなどを記憶することができる。
以上、情報処理装置110に含まれるハードウェア構成について説明した。次に、情報処理装置110の上記ハードウェアと協動するソフトウェアにより実現される機能手段について説明する。図3は、本発明の実施形態における情報処理装置110のソフトウェアブロック図である。ここでは、プリンタドライバ350が各機能手段を含むものとして説明する。
情報処理装置110には、アプリケーション、通信部330、保存部340、プリンタドライバ350が含まれていて、アプリケーションの種類には、ストアアプリ310と、デスクトップアプリ320の2種類がある。
ストアアプリ310は、アプリケーションのうち、Windowsストアから提供されるアプリケーションであり、例えばWindows8ではMetroスタイルと呼ばれるUIで以て表示されるアプリケーションである。Metroスタイルは、地下鉄(メトロ)や標識をモチーフとした分かりやすいデザインで、タッチ操作に対応した形式のものである。また、ストアアプリ310は、印刷対象となるファイルを作成することができる。なお、ストアアプリ310は、セキュリティ性の向上や、安定性向上のため、OSによってサンドボックス化されている。すなわち、ストアアプリ310は、保護された領域内でしかプログラムを動作させることができないようになっている。
デスクトップアプリ320は、アプリケーションのうち、ストアアプリ310以外の、保護された領域外でもプログラムを動作させることができるアプリケーションである。デスクトップアプリ320は、ストアアプリ310と同様に、印刷対象となるファイルを作成することができる。デスクトップアプリ320の例としては、Microsoft Word(登録商標)などの文書作成ソフトや、Microsoft Excel(登録商標)などの表計算ソフトが挙げられる。
通信部330は、通信I/F205を介して、機種識別情報の取得や、印刷ジョブの転送など、情報処理装置110と、プリンタ120との間で、情報の送受信を行う手段である。ここで、機種識別情報とは、現在の接続先となっているプリンタ120の機種を特定するための情報である。機種識別情報の一例として、機種名が挙げられ、以下の説明では、機種名を例に説明する。
保存部340は、機種情報、言語情報、設定情報など、各種情報を保存する手段である。ここで、機種情報とは、機能などの各機種が有する能力を示す情報であって、保存部340には機種ごとに複数の機種情報が記憶されている。また、保存部340には、アクセス権限に応じた種々の記憶領域が存在し、各記憶領域のアクセス権限はモジュールによって異なる。なお、保存部340に含まれる記憶領域についての詳細は後述する。
プリンタドライバ350は、プリンタ120を制御するためのドライバであり、印刷画像データの生成や、印刷設定の画面を表示する手段である。プリンタドライバ350には、上記モジュール(機能手段)としての、デスクトップ用表示部360、ストア用表示部370、禁則処理部380、描画部390が含まれている。
デスクトップ用表示部360は、図9(b)におけるPrinter Extensionに対応するモジュールである。デスクトップ用表示部360は、例えば、ストアアプリ310以外のアプリケーションソフト、すなわち、デスクトップアプリ320から印刷の要求を受け付け、印刷設定を行うための画面の表示を行い、印刷設定情報の生成を行う。ここで、画面とは、印刷設定情報を受け付けるための印刷設定画面や、プリンタのオプションの設定および確認を行うためのオプション画面などである。Printer Extension(プリンタ拡張)は、V4プリンタドライバのデスクトップUIにおいて、ベンダ独自の印刷設定画面を表示するものである。
デスクトップ用表示部360は、画面表示部361、機器情報取得部362、印刷設定部363、記憶制御部364、接続先情報生成部365の各種機能手段を含み、これらの機能手段によって、他のモジュール、少なくともストア用表示部370と禁則処理部380からのアクセスが可能な領域に機種名を格納する。また、V4プリンタドライバにおけるデスクトップ用表示部360は、高級言語によって記述されるため、実行する処理に制
約がなく、アクセスできる領域にも制限はない。
画面表示部361は、プリンタ120の機種に応じた画面を表示する手段であり、デスクトップアプリ320用の画面を表示する。また、画面表示部361は、後述する接続先情報に基づいて、設定可能な設定値が入力されるように表示画面の制御を行うことができる。
機器情報取得部362は、プリンタ120との双方向通信によって、現在接続されている機器の機種名や、当該機器の状態(当該機器に取り付けられているオプションに関するオプション情報、どのサイズの用紙が、どのトレイに入っているかなど)の各種情報を取得する手段である。取得した機種名などは、保存部340のいずれのモジュールでもアクセス可能な領域に保存される。このように、デスクトップ用表示部360が機種名などを取得し、いずれのモジュールでもアクセス可能な領域に保存することで、ストア用表示部370が、機種名などを取得し、取得した機種名などから必要な情報を収集して、機種共通ドライバを構成することができる。
印刷設定部363は、ユーザが入力した各種設定情報に基づいて、印刷設定情報(Print Ticket)を生成する手段である。また、印刷設定部363は、印刷能力情報(Print Capability)に基づいて、現在接続しているプリンタ120の機種の能力に応じた印刷設定を行うことができる。なお、印刷設定情報とは、印刷に関して設定された各設定項目における現在の印刷設定値を示す情報である。設定項目は、例えば用紙サイズや印刷方向などの項目で、印刷設定値は、用紙サイズに対してA4、印刷方向に対して縦方向(ポートレート)という情報である。また、印刷能力情報とは、各設定項目における設定可能な一覧を示し、選択肢の表示などに利用される、使用可能な機能を示す情報である。印刷能力情報は、例えばプリンタ120がA4、B5サイズでの印刷が可能である場合、A4サイズか、B5サイズかという選択肢の情報である。
記憶制御部364は、取得した機種名、生成した接続先情報、機種名から特定したマッピング情報(例えばマッピングテーブル)、暗号化情報などを、保存部340のうち、ストア用表示部370や禁則処理部380が読み込み可能(アクセス可能)な領域への書き込みを制御する手段である。マッピングテーブルの詳細については後述する。ストア用表示部370や禁則処理部380が読み込み可能な領域としては、一例として、Queue Property Bagが挙げられる。
接続先情報生成部365は、接続先情報を生成する手段である。接続先情報とは、機種情報のうち、現在接続しているプリンタ120の機種の機種情報であり、ストア用表示部370や禁則処理部380が読み込み可能な形式で生成される。接続先情報は、上記の機種情報であってもよいが、余分な情報を省略した簡易版機種情報であってもよい。なお、接続先情報生成部365は、接続先情報に加えてマッピング情報、暗号化情報など接続先に関する情報を生成してもよい。
機種情報は、機種毎に備える機能、装着可能なオプション、機能間や機能とオプション間の関係が定義されている設定ファイルや言語ファイルを含む。この設定ファイルはXML(Extensible Markup Language)やJSON(JavaScript Object Notation)などのフォーマットで定義されている。言語ファイルも同様である。ちなみに、印刷設定画面やデバイス設定画面に表示するアイコンはBMPやPNG(Potable Network Graphics)などのフォーマットで定義されている。簡易版機種情報は、XMLやJSONなどのフォーマットで定義された機種情報から余分な情報を取り除き、禁則処理部380で処理可能な簡易なフォーマット形式に変更したものである。すなわち、簡易版機種情報は、ストア用表示部370が印刷設定画面を表示するために使用する情報のみから生成された、情報量を減らした簡易な接続先情報である。
例えば、同じ機種で、オプションによって動作が変わる部分があったとする。この場合、XMLでは、オプション1の場合、A動作を実行し、オプション2の場合、B動作を実行すると記述される。オプション情報が取得され、そのオプションがオプション1であることが分かった場合、簡易版機種情報では、オプション2の動作の記述は不要になるため、その不要な部分を削除し、印刷設定画面に表示するために使用する、オプション1の動作の記述のみとする。
生成した接続先情報は、保存部340のうち、ストア用表示部370や禁則処理部380が読み込み可能な領域に保存される。なお、接続先情報は、簡易版機種情報とするほうが、記憶する情報量が小さくて済み、ストア用表示部370や禁則処理部380からアクセスしやすいフォーマット形式に変換する際も、簡易に変換することができるので望ましい。
ストア用表示部370は、ストアデバイスアプリとも呼ばれ、図9(b)におけるStore Device Appに対応し、Windowsストアから、1つのアプリケーションとしてダウンロードされる。ストア用表示部370では、ストアアプリ310から印刷の要求を受け付け、印刷設定を行うための画面の表示を行い、印刷設定情報の生成を行う。なお、画面を表示する処理や、印刷設定情報の生成については、デスクトップ用表示部360と同様である。また、ストア用表示部370は、画面表示部371、印刷設定部372の各種機能手段を含む。
ストア用表示部370は、Windows Store Appsの制限に依存するため、上記Queue Property Bagなどの Property Bagにのみアクセスが可能で、外部リソースへはアクセスできない。これは、Windows Store Appsが、セキュリティ性や安定性を確保するため、OSによりサンドボックス化されていて、OS側でガードされていることに起因する。したがって、ストア用表示部370は、サンドボックス外にアクセスする処理において、プリンタドライバで必要となるファイルアクセスAPI(Application Programming Interface)や、ネットワーク通信用APIなどが使えない。そのため、ストア用表示部370は、双方向通信によって現在接続しているプリンタの機種名などを取得することができない。
画面表示部371は、デスクトップ用表示部360の画面表示部361と同様に、プリンタ120の機種に応じた画面を表示する手段であり、ストアアプリ用のMetroスタイルに対応したUIを表示する。
印刷設定部372は、デスクトップ用表示部360の印刷設定部363と同様に、ユーザが入力した各種設定情報に基づいて、印刷設定情報(Print Ticket)を生成する手段である。
禁則処理部380は、図9(b)における禁則Scriptに対応し、画面の表示を伴わずに印刷設定に関する処理を行う手段である。印刷設定に関する処理とは、例えば、アプリケーションで印刷設定を受け付ける場合に、アプリケーションからの要求に応じて、印刷能力情報を返したり、アプリケーションが生成した印刷設定情報が設定可能な値であるかの整合性や妥当性などを判定したりする処理である。
より具体的な禁則処理の例としては、プリンタ120のフィニッシング機能において、ステープルが選択されている場合には、パンチングを行うことはできないといった処理である。このような禁則処理を行うことで、両立することが想定しにくい処理を排除することができ、適切な印刷設定を行うことができる。
なお、禁則処理部380にも種々の制約が存在し、ストア用表示部370と同様に、Property Bagにのみアクセスが可能で、外部リソースへはアクセスできない。これは、ファイルアクセスAPIやネットワーク通信用APIを、OS側でガードしているためである。また、禁則処理部380の実装言語は、用途を限定したスクリプト(例えば、Javascript)のみであるため、簡易的な処理しか出来ず、高級言語のような複雑な処理はできない。さらに、スクリプトはプリンタドライバ350のインストール時にそのままシステムに配置されることから、外部から処理内容を読み取られることがある。処理内容としては、例えば、機能と印刷設定情報や印刷能力情報との対応付け(マッピング)を挙げることができる。そこで、このマッピングなどを隠すことで、セキュリティを向上させることができる。禁則処理部380のセキュリティ性を向上する方法については、後述する。
描画部390は、図9(b)におけるGraphics Filterに対応し、印刷設定に基づいて、プリンタ120によって解釈が可能な形式の描画データを生成し、印刷ジョブとしてプリンタ120に対して出力する手段である。描画データは、例えば、PDLのようなデータ形式で出力される。なお、描画部390も、デスクトップ用表示部360と同様に、実行する処理に制約がなく、アクセスできる領域にも制限はない。
ここでは、各機能手段は、全部がソフトウェアの実行により実現されているが、これに限られるものではなく、その一部または全部を同等の機能を提供するハードウェアとして実装することもできる。
ところで、保存部340には、保存できる領域が複数存在しているが、各領域にアクセスできる権限は、V4プリンタドライバのモジュールごとに異なる。そこで、次に、上述したソフトウェアブロックにおけるV4プリンタドライバがアクセスできる領域について説明する。図4は、V4プリンタドライバと構成する各モジュールがアクセス可能な領域を示す図である。なお、図4(a)は、V4プリンタドライバがアクセス可能な領域を示し、図4(b)は、V4プリンタドライバの各モジュールがアクセス可能な領域を示している。
図4(a)に示すように、V4プリンタドライバは、保存部340に含まれる各種保存領域にアクセス可能である。保存部340には、保存領域として、Driver Property Bag340aと、Queue Property Bag340bと、User Property Bag340cと、独自領域340dが含まれている。なお、保存部340のうち、Driver Property Bag340aと、Queue Property Bag340bと、User Property Bag340cは、V4プリンタドライバがデータを保持しておくべき記憶領域として、あらかじめOSによって定義されている記憶領域である。
Driver Property Bag340aは、読み込みのみが可能な領域であり、各プリンタドライバの構成ファイルが格納される。構成ファイルとは、機種情報を構築するための情報であり、例えば、機種共通情報、機種個別情報、言語情報などがある。構成ファイルに含める情報は、プリンタドライバ350のパッケージ時までに決定される。プリンタドライバパッケージは、プリンタドライバ350の機能を実現するために必要なファイルのほか、インストールやアンインストールを行うための制御ファイルなどを含むことができる。
機種共通情報および機種個別情報は、設定項目や、同時に設定できない設定項目に関する禁則情報、印刷設定画面の表示、印刷設定情報を生成するための情報などである。なお、機種共通情報は、プリンタ120の機種に依存しない情報であり、機種個別情報は、プリンタ120の機種に依存する情報である。設定項目の例としては、集約設定、オプション情報、フィニッシング機能などが挙げられる。集約設定に関する情報は、機種共通情報に含まれ、オプション情報やフィニッシング機能に関する情報は、機種個別情報に含まれる。
また、言語情報は、設定項目の表示名を言語別に格納したものであり、例えば、ホチキス留めを行うフィニッシング機能として日本語の「ステープル」と英語の「staple」とが対応付けられて、保存されている。
Queue Property Bag340bは、読み込みおよび書き込み可能な領域であり、各モジュールからの読み込みが可能であるが、書き込みは管理者などの権限に依存する。デスクトップ用表示部360は、プリンタアイコンごとの情報を、Queue Property Bag340bに格納することができ、現在接続しているプリンタ120の機種の情報を生成し、保持する。プリンタアイコンは、同じプリンタ120に対して2以上のアイコンを作成することができる。このため、デスクトップ用表示部360は、同じプリンタであっても、2以上のアイコンの各々に対し、異なる情報を生成することができる。
Queue Property Bag340bには、デスクトップ用表示部360が、例えば、双方向通信や、ユーザの操作による機種の切り替えなどによって取得した、機種名やオプション情報を格納する。格納する情報は、デスクトップ用表示部360によって、ストア用表示部370や禁則処理部380が処理できる形式に変換され、格納される。
上述したように格納することで、ストア用表示部370や、禁則処理部380がQueue Property Bag340bにアクセス可能であることから、格納されている機種名に基づいて、現在接続している機種の機種個別情報を特定することができる。このため、機種共通情報と特定した機種個別情報とを結合して、機種共通プリンタドライバを構成することができる。
さらに、Queue Property Bag340bには、接続先情報生成部365が生成する、接続先情報を格納することができる。この接続先情報は、禁則処理部380によって実行するために、スクリプト言語による処理が可能な形式であることが好ましい。なぜならば、各モジュールが処理を行う度に上述した結合処理を行うことは効率が悪く、また、禁則スクリプトと比べて、デスクトップ用表示部360には処理の制限がないので、他のモジュールよりも効率よく処理できる。したがって、デスクトップ用表示部360が、禁則処理部380やストア用表示部370が処理可能な形式に変換して格納することで、効率的な処理を行うことができる。
このように、デスクトップ用表示部360が、Queue Property Bag340bなどの、他のモジュールからのアクセスが可能な領域に機種名を格納することによって、機種共通ドライバを構成することができる。
User Property Bag340cは、プリンタアイコンごとや、ユーザごとに情報を格納する領域であって、読み込みおよび書き込み可能な領域であるが、他のユーザの情報にはアクセスできない。User Property Bag340cは、プリンタアイコンごと、またはユーザごとに限らず、プリンタアイコンごと、かつユーザごとに情報を格納してもよい。これにより、同じプリンタを使用する場合でも、ユーザごとに使用可能な機能を変更することができる。また、User Property Bag340cには、例えば、使用頻度の高い印刷設定を、「お気に入り」として保存することができる。
独自領域340dは、ベンダ独自のフォーマットで情報をデスクトップ用表示部360によって格納することができる領域で、ファイルやレジストリ情報などを格納する領域である。
上述した保存領域は、図4(b)に示すように、アクセスできる権限はモジュールによって異なる。図4(b)は、V4プリンタドライバのモジュールを詳細に示したものであり、禁則処理部380、ストア用表示部370、デスクトップ用表示部360、描画部390の各モジュールがアクセスできる領域を示している。
図4(b)に示すように、Driver Property Bag340aと、Queue Property Bag340bと、User Property Bag340cには、各モジュールからアクセスが可能である。一方で、独自領域340dにアクセスできるのは、デスクトップ用表示部360と、描画部390に限られる。これは、図9に示した、V4プリンタドライバのアーキテクチャ構成上の制約によるものである。これにより、ストア用表示部370や禁則処理部380が、OSが使用するレジストリ等を変更し、OSの動作に悪影響を与えることを防ぐことができる。
ストア用表示部370と禁則処理部380は、Property Bagにはアクセス可能であり、外部ファイルへのアクセスは制限される。そこで、デスクトップ用表示部360が、接続先情報を、スクリプト言語による処理が可能な形式で、Queue Property Bag340bに格納することで、禁則処理部380は、禁則処理を実行することができる。
これまで、情報処理装置の機能構成、保存領域について説明してきた。以下、プリンタドライバ350のインストール、プリンタドライバ350を使用した印刷処理、その印刷処理の中で実施される機種共通プリンタドライバを構成する処理について詳細に説明する。
[第1の実施形態]
まず、プリンタドライバ350のインストールについて、図10を参照して説明する。プリンタドライバ350のインストールは、例えばウィザードと呼ばれる機能を使用して行うことができる。プリンタドライバ350のインストールでは、Add Printer Wizardというウィザードを使用することができる。一方、ウィザード以外に、インストーラを使用してインストールを行うこともできる。ここでは、インストーラを使用してインストールする例について説明する。
プリンタドライバ350のインストール処理は、インストーラ400、OS410、インストールされたプリンタドライバ350の禁則処理部380を使用して行われる。
インストーラ400は、OS410の制御の下で、プリンタドライバ350を動作させるために、プリンタドライバ350をインストールする(図10S1)。このインストールでは、例えばインストール先を選択し、プリンタドライバ350の機能を実現するために必要なファイルを、選択したインストール先にコピーし、各種の設定を行う。これにより、OS410上でプリンタドライバ350が動作することが可能となり、上記の機能手段が生成され、その機能手段による処理が可能となる。
インストーラ400は、インストールされたプリンタドライバ350に対応したプリンタ120のプリンタアイコンを生成する(図10S2)。プリンタアイコンの生成により、ユーザがプリンタ120を選択し、選択したプリンタ120で印刷ジョブを実行させることができる。
インストーラ400は、Queue Property Bag340bに予め格納されたカスタマイズ情報を読み込む(図10S3)。カスタマイズ情報は、機能ごとに設定された初期値(デフォルト値)を変更する場合の変更後の値や、設定可能な選択肢を増減する場合の増減後の値、すなわち変更値などの情報である。例えば、カスタマイズ情報は、カラー印刷も、白黒(モノクロ)印刷も可能なプリンタで、モノクロ印刷のみを使用させるために、モノクロ印刷のみという情報とすることができる。
インストーラ400は、カスタマイズ情報が登録されている場合、デフォルト値の設定変更を行う(図10S4)。インストーラ400は、カスタマイズ情報が登録されていない場合、インストール処理を終了する。
OS410は、その設定変更を受けて、禁則処理部380に対して、その変更値が妥当な値であるかの確認(設定チェック)を依頼する(図10S5)。禁則処理部380は、この段階では、機種が特定されていないため、Driver Property Bag340aに格納された機種共通情報を参照し、変更値が妥当かどうかを確認する。妥当でない場合、妥当でない旨の通知を返すことができる。OS410は、妥当でない旨の通知をインストーラ400に送り、インストーラ400は、その通知を受けて、変更値に変更せず、インストール処理を終了することができる。
OS410は、禁則処理部380から妥当である旨の通知をインストーラ400に返し、インストーラ400が、その通知を受けると、デフォルト値を変更値に変更する。インストーラ400は、この変更値への変更を、レジストリ情報を変更することにより行う(図10S6)。レジストリ情報は、OS410で用いられる各種の設定情報で、上記のデフォルト値や選択肢の情報なども含まれる。
なお、機種共通情報や機種個別情報などは、Driver Property Bag340aに事前に格納しておくことができる。
図10に示したインストール処理では、機種共通プリンタドライバを構成するために必要な機種名などを取得していないが、この機種名などを取得する処理は、インストール処理に含めてもよい。なお、インストール時に機種名などを取得することで、その後は、プリンタ120を切り替えた際に機種名などを取得しなくても、機種共通プリンタドライバを構成することができ、その機種に固有の機能も使用することが可能となる。
図11を参照して、機種名などを取得する処理を含むインストール処理について説明する。図11に示す処理は、図10に示した処理と同様、インストーラ400、OS410、禁則処理部380を使用し、さらに、デスクトップ用表示部360に含まれる機器情報取得部362、記憶制御部364、接続先情報生成部365と、プリンタ120とを使用して行われる。
図11に示すS1〜S3の処理は、図10に示したS1〜S3の処理と同様であり、図11に示すS11〜S13の処理は、図10に示したS4〜S6の処理と同様であるため、それらの説明については省略する。カスタマイズ情報に設定されている情報が機種によっては適用できない場合があるため、機種情報に基づいてカスタマイズ情報を修正した上で適用する必要がある。例えば、カスタマイズ情報において、カラーがデフォルト値として設定してあったとしても、モノクロの機種であった場合、カラーをデフォルト値とせず、モノクロにする等の修正を先に行う必要がある。
そこで、インストーラ400は、機器情報取得部362に対して、現在接続されているプリンタ120の機種名、機種の状態の取得を要求する(図11S4)。インストーラ400は、機種名のみの取得を要求してもよい。
機器情報取得部362は、プリンタ120と双方向通信を行い、プリンタ120から機種名を取得する(図11S5)。また、機器情報取得部362は、プリンタ120から機種の状態(機種状態)を取得する(図11S6)。この例では、最初に機種名を取得し、その後に機種状態を取得しているが、取得する順序が反対であってもよいし、同時に取得してもよい。
機器情報取得部362は、機種名等の取得後、接続先情報生成部365に対して、接続先情報の生成を要求する(図11S7)。接続先情報生成部365は、機器情報取得部362により取得された機種名に基づき、接続先情報を生成する(図11S8)。機器情報取得部362は、記憶制御部364に対して、機種名、機種情報、接続先情報の保存を要求する(図11S9)。記憶制御部364は、機器情報取得部362により取得した機種名、機種状態、接続先情報をQueue Property Bag340bに保存する(図11S10)。機器情報取得部362は、機種名、機種状態を取得したことをインストーラ400に通知する。インストーラ400は、保存された機種名等を参照し、デフォルト設定の変更、レジストリ情報の変更を行う。
インストーラ400は、ソフトウェアで、ストアアプリ310以外のアプリケーションである。このため、インストーラ400は、ストアアプリ310のような制限を受けることなく、外部との通信を行うことができる。したがって、インストーラ400は、図11に示したようなデスクトップ用表示部360を介することなく、直接プリンタ120と双方向通信を行い、プリンタ120から機種名などを取得することもできる。
次に、インストールされたプリンタドライバが印刷ジョブを出力する際に行う処理について図5を以て説明する。図5は、プリンタドライバが印刷ジョブを出力する処理の概略を示す図であり、図5(a)は、V3プリンタドライバの場合を、図5(b)は、V4プリンタドライバの場合をそれぞれ示している。
図5(a)に示すV3プリンタドライバでは、プリンタUIで設定された印刷設定は、DEVMODE構造体に格納され、アプリケーションに送られる。DEVMODE構造体は、ベンダ共通のPublic部分と、ベンダ独自のPrivate部分とから構成され、印刷設定で設定された情報を保持する。その後、アプリケーションからスプーラへ、DEVMODE構造体を含むGDI(Graphics Device Interface)が送られる。
次に、スプーラは、DDI(Device Driver Interface)をレンダリング部に対して出力する。レンダリング部は、DDIの命令に基づいて、PDLのような印刷を行うためのデータ形式に変換し、印刷命令をプリンタに出力することで、印刷を実施する。
一方、図5(b)に示すV4プリンタドライバでは、デスクトップアプリ320の拡張UIであるプリンタ拡張、または、ストアアプリ310の拡張UIであるDCA(Device Companion Application)と、プリンタUIとが、印刷設定情報(Print Ticket)や印刷能力情報(Print Capability)をやりとりすることで、ユーザに対して、設定項目の変更などを提供する。プリンタ拡張やDCAは、ベンダ独自の印刷設定画面をユーザに提供することを可能にし、ベンダがこれらをサポートすることをドライバパッケージのmanifestファイルに明記していない場合、OS標準の印刷設定画面がプリンタUIにより提供される。なお、OS標準の印刷設定画面には、デスクトップ用とストア用の2つがある。ちなみに、OS標準の印刷設定画面では、認証印刷等のベンダ独自の印刷設定項目は表示されない。
なお、禁則スクリプトでは、画面の表示を伴わず、すなわち、ユーザの操作によらずに、印刷設定情報や印刷能力情報に関する禁則処理を行う。図5(a)のようなV3プリンタドライバにおいても禁則処理を行うモジュールはあったが、V4プリンタドライバではJavascriptによって実装するという制約がある。
また、アプリケーションは、プリンタUIから印刷設定情報を受信し、スプーラに対して、XPS(XML Paper Specification)形式のデータを送信する。なお、XPS形式のデータには、印刷設定情報が含まれている。レンダリング部は、XPSフィルタとデータの送受信を行い、印刷命令をプリンタに出力することで、印刷を実施する。
図12を参照して、上記のプリンタドライバが印刷ジョブを出力する際に行う処理を詳細に説明する。図12に示す処理は、ストアアプリ310およびデスクトップアプリ320のいずれかのアプリ420、OS410、禁則処理部380、デスクトップ用表示部360およびストア用表示部370のいずれか、描画部390を使用して行われる。この例では、デスクトップ用表示部360に含まれる機器情報取得部362、記憶制御部364、接続先情報生成部365を使用するものとして説明する。
ユーザは、ストアアプリ310およびデスクトップアプリ320のいずれかのアプリ420を使用し、印刷するためのデータを作成し、アプリ420に対してそのデータの印刷を要求する。ユーザは、既に作成済みのデータを読み出し、アプリ420を使用してそのデータを表示し、そのデータの印刷を要求してもよい。作成済みのデータは、情報処理装置内のデータであってもよいし、ネットワークに接続された他の機器からダウンロードして取得したデータであってもよい。データは、文書、表、図形のデータであってもよいし、画像データであってもよい。
アプリ420は、画面の表示を伴わないで、現在設定されている印刷設定の確認を行う(図12S1)。例えば、アプリ420には、使用するプリンタ120や使用する用紙サイズなどが設定されている。OS410は、禁則処理部380に対して、印刷設定の設定値が妥当かどうかの確認(設定チェック)を依頼する(図12S2)。禁則処理部380は、その設定値の確認を行い、確認結果をOS410に返す。OS410は、その結果をアプリ420に返す。
アプリ420は、受け取った結果に基づき、設定されているプリンタ120や用紙サイズなどの情報、ユーザ設定画面へ切り替えるボタン、印刷を実行するための印刷ボタン等を表示させることができる。ユーザは、この表示において、異なるプリンタ120を選択したり、用紙サイズなどを変更したりすることができる。
ユーザは、プリンタ120を決定し、詳細な印刷設定を行うために、上記のユーザ設定画面へ切り替えるボタンを押下する。アプリ420は、このボタンの押下を受けて、OS410に対して印刷設定の表示を要求する(図12S3)。OS410は、禁則処理部380に対して、設定チェックを依頼する(図12S4)。禁則処理部380は、設定チェックを行い、確認結果をOS410に返す。
OS410は、確認結果が妥当であり、印刷設定が確定したことを受けて、デスクトップ用表示部360に対して、確定した印刷設定に基づくユーザ設定画面の起動を指示する(図12S5)。これに対し、OS410は、確認結果が妥当でない場合、妥当でない印刷設定の設定項目をデフォルト設定にしたり、削除したりするなどして、ユーザ設定画面の起動を指示することができる。起動されたユーザ設定画面では、ユーザは印刷設定を変更することができる。デスクトップ用表示部360は、ユーザによる印刷設定の確認や変更が終了し、ユーザ設定画面が閉じられたことを、OS410を介してアプリ420に通知する。
OS410は、上記の通知を受けると、図11のS4と同様の機種名、機種情報の取得を、デスクトップ用表示部360に含まれる機器情報取得部362に対して要求する(図12S6)。デスクトップ用表示部360内では、図11のS5〜S10と同様の処理を、図12のS7〜S12において実施する。すなわち、プリンタ120に対して機種名、機種状態の取得を要求し、接続先情報を生成し、取得した機種名、機種状態、生成した接続先情報を保存する。
アプリ420は、ユーザによる印刷ボタンの押下を受けて、印刷の実行をOS410に対して指示する(図12S13)。OS410は、その指示を受けて、描画部390に対して、印刷の実行を命令する(図12S14)。描画部390は、印刷設定に基づき、プリンタ120により解釈可能な形式の描画データを生成し、印刷ジョブとして、設定されているプリンタ120に対して出力する(図12S15)。
なお、図12S2およびS4における設定チェックは、印刷設定情報についてのみ行うこともできるし、印刷設定情報と印刷能力情報の両方について行ってもよい。印刷設定情報および印刷能力情報は、図12の説明で記載されているように様々なアプリに通知する形式である。また、上記の設定チェックやユーザ設定画面の起動は、プリンタドライバ350が備える機能手段により実行されることから、以下、プリンタドライバ350が実行する処理について詳細に説明する。
まず、図5(b)にて説明したV4プリンタドライバが実行する処理によるデータの流れについて、より具体的に説明する。図6は、第1の実施形態におけるプリンタドライバ350の構成に対応したV4プリンタドライバのデータの流れを説明する図である。
デスクトップ用表示部360は、図9(b)におけるPrinter Extensionに対応するモジュールであり、V4プリンタドライバにおいて、実行する処理に制約がないことから、プリンタ120と双方向通信を行うことができる。そこで、まず、双方向通信を行うことで、デスクトップ用表示部360は、現在接続している機種の機種名を取得し、Queue Property Bag340bに格納する。デスクトップ用表示部360は、ユーザに入力させる、または指定させることにより機種名を取得してもよい。
デスクトップ用表示部360は、機種名を、少なくともデスクトップ用表示部360が呼び出される複数のタイミングで取得することができる。そのタイミングとしては、ユーザがプリンタ120などのデバイスに対して各種の設定を行うためのデバイス設定画面を開き、デバイス設定画面で使用する機種を切り替えたときを一例として挙げることができる。そのほかのタイミングとしては、上記の印刷時の印刷設定画面が呼び出されるとき(図12)を挙げることができる。上記のデバイス設定画面で使用する機種を切り替える処理を、図13を参照して説明する。
オプション設定で使用される標準のDevice Property Sheetは、V4プリンタドライバでベンダが拡張することはできない。これは、V4プリンタドライバのアーキテクチャの仕様が拡張できない仕様になっているためである。そこで、別の手段によりデバイス設定画面を表示し、デバイス設定画面により拡張した機能、例えば上記の機種名の取得を実現する。
ユーザは、情報を閲覧・検索するアプリケーションであるエクスプローラ440を使用し、表示されたプリンタアイコン上で右クリックしてメニューを開き、そのメニューからデバイス拡張を呼び、デスクトップ用表示部360を呼び出すことができる。なお、この方法は一例であるので、これに限られるものではない。このようにして、エクスプローラ440は、デスクトップ用表示部360に対して、デバイス設定画面を呼び出し、表示させるように指示する(図13S1)。
デスクトップ用表示部360は、その指示を受けて、デバイス設定画面を表示する(図13S2)。そして、デスクトップ用表示部360は、現在接続しているプリンタ120との間で双方向通信を行い、機種名を取得する(図13S3)。また、デスクトップ用表示部360は、機種状態も取得する(図13S4)。ここでは、現在接続しているプリンタ120の機種を自動的に取得する構成を例示したが、これに限られるものではなく、ユーザが使用する機種を手動で設定してもよい。また、機種名と機種状態の取得の順序は逆であっても、同時であってもよい。
続いて、デスクトップ用表示部360は、図11のS7、S8と同様に、接続先情報生成部365で接続先情報を生成する(図13S5)。
デスクトップ用表示部360は、ユーザによる設定変更を受け付けることができる。ユーザは、現在の設定を無視して、表示された設定項目のチェックボックスにチェックを入れるなどして、設定を変更することができる。デスクトップ用表示部360は、取得した機種名や機種状態、設定変更する場合の変更値、及び接続先情報などを、Queue Property Bag340bに保存する(図13S6)。デスクトップ用表示部360は、それらの保存が終了し、デバイス設定画面が閉じられたことを、エクスプローラ440に対して通知する。
本実施形態では、インストールの場面(図11)、印刷実行の場面(図12)、これから説明するデバイス設定画面が呼び出される場面(図13)の3つの場面全てにおいて、機種名の取得や、接続先情報の生成を行っているが、必ずしもこれら全ての場面でこれらの処理を行う必要はなく、いずれか1つ、もしくは2つの場面で行うようにしてもよい。
再び図6を参照して、デスクトップ用表示部360は、Queue Property Bag340bに格納された機種名に基づいて、Driver Property Bag340aを参照し、スクリプト言語に対応した接続先情報を生成する。ここで生成した接続先情報を、Queue Property Bag340bに格納することで、ストア用表示部370や禁則処理部380からアクセスすることが可能となる。接続先情報には、機種の機能やオプションの他、機種の能力を表示するためのアイコンや、言語情報などが含まれる。なお、オプションは、現在接続している機種の状態であって、デスクトップ用表示部360とプリンタ120との双方向通信によって取得されるものである。接続先情報に含まれるオプション情報としては、その機種の機能を拡張するために自動原稿送り装置(ADF)が追加されている場合、そのADFを装備している旨の情報を一例として挙げることができる。
デスクトップ用表示部360がQueue Property Bag340bに生成する接続先情報は、ストア用表示部370や禁則処理部380が処理することから、それらの機能部が処理しやすいJson形式やIni形式などのテキスト形式や、シリアライズしたバイナリ形式などのデータ形式が好ましい。
このように、デスクトップ用表示部360が、接続先情報を動的に生成することで、プリンタ120の状態も考慮した接続先情報を格納することができる。したがって、インストール前に作成してプリンタドライバのパッケージに含める必要がなく、パッケージ容量を削減することができる。
また、デスクトップ用表示部360は、Queue Property Bag340bに、マッピングテーブルを格納することもできる。マッピングテーブルは、機能を示す文字列であって、禁則処理部380等のプリンタドライバ350の内部処理において使用される文字列と、印刷設定情報や印刷能力情報で用いられる文字列との対応関係を示したテーブルである。マッピングテーブルは、機種名に応じて、Driver Property Bag340aのマッピングデータから引き当てられる。このようなマッピングテーブルによって、機種ごとの機能を、どの印刷設定情報や印刷能力情報に入れ込み、格納するかを決定することができる。
この決定する処理の例としては、ドライバ内部で扱われている機能の選択肢を、どの印刷設定情報、印刷能力情報に割り当てるかを機種毎に変更する処理を挙げることができる。この処理により、例えば機種Aではトレイ1、トレイ2、大容量トレイとして内部で扱い、機種Bではトレイ1、トレイ2、トレイ3として内部で扱っているものを、印刷能力情報ではどちらもトレイ1、トレイ2、トレイ3と記載することができる。
なお、マッピングテーブルも、接続先情報と同様に、テキスト形式や、シリアライズしたバイナリ形式のような、ストア用表示部370や禁則処理部380が処理しやすいデータ形式であることが好ましい。
また、禁則処理部380は、図9(b)の禁則scriptに対応するモジュールであり、印刷設定情報や印刷能力情報の処理を行う。禁則処理部380は、例えば、印刷設定の組み合わせが妥当であるかを判断する。妥当でないと判断された組み合わせについては、非表示にすることができる。また、禁則処理部380は、OS410やアプリ420などからの要求に応じて、プリンタドライバ350が設定可能な機能の情報を示す印刷能力情報を返信し、プリンタドライバ350に設定されている各種機能の設定値を示す印刷設定情報を返信する。印刷設定情報は、図4には図示しないDevmode Property Bagに格納することができる。
禁則処理部380は、例えば、課金処理や認証処理に使用される個人情報などのセキュリティ情報を、プリンタ120に出力される印刷設定情報に格納する場合に、暗号化処理を行う。また、Queue Property Bag340bに機種名が保存されている場合には、禁則処理部380は、機種名に応じて、Driver Property Bag340aから機種に応じたマッピングテーブルを取得することができ、該マッピングテーブルで処理を行うこともできる。
一方で、禁則処理部380は、スクリプトがそのままOS410に配置されるだけであるため、外部から処理が見える状態にある。このため、暗号化する場合でも、どのように暗号化しているのかを外部から解読することができ、暗号化のセキュリティ性が低くなってしまう。また、機能の中には、外部に漏洩してはならない個人情報(ユーザ名やパスワードなど)を利用するものがある。そこで、以下のような方法によってセキュリティ性を確保することが好ましい。
まず、デスクトップ用表示部360が、機種が特定された段階で、マッピングテーブルとともに、暗号化のための情報(暗号化情報)を生成し、マッピングテーブルとともに、暗号化情報をQueue Property Bag340bに保存する。このとき、暗号化情報は、デスクトップ用表示部360によって、バイナリ化など外部から解読しにくい形式に変換される。暗号化情報は、WEP(Wired Equivalent Privacy)、TKIP(Temporal Integrity Protocol)、AES(Advanced Encryption Standard)などの暗号化方式(暗号化アルゴリズム)と、暗号化に用いられる情報とを含む。暗号化情報は、接続先情報に記載し、保存される。
禁則処理部380は、接続先情報に含まれる暗号化情報を用いて、個人情報を暗号化し、暗号化された個人情報を該当する箇所に入れ込み、暗号化された個人情報含む印刷設定情報を生成する。このように、暗号化情報を、デスクトップ用表示部360のような外部からの解読が難しいモジュールが保持することで、セキュリティ性を向上することができる。
暗号化方式および暗号化に用いられる情報は、機種によって対応可能な方式が異なるため、接続先のプリンタ120が決定した段階で、デスクトップ用表示部360が、決定されたプリンタ120に合った暗号化ロジックをマッピングテーブルに格納することができる。また、暗号化方式および暗号化に用いられる情報は、デスクトップ用表示部360ではなく、Driver Property Bag340aに機種毎に格納し、選択している機種によって、利用する暗号化方式および暗号化に用いられる情報を取得し適用することもできる。
なお、上述の説明では、デスクトップ用表示部360が暗号化情報を保持する場合の例を示したが、外部からの解読が難しい形式とした暗号化情報を、各機種個別情報に記憶し、デスクトップ用表示部360が、機種情報から機種ごとの暗号化情報を取得し、接続先情報に書き込んでもよい。したがって、セキュリティ性を向上するためには、暗号化情報に含まれる暗号化方式と引数とを、Queue Property Bag340bとDriver Property Bag340aとにそれぞれ分けて保存することが好ましい。
なお、禁則処理部380は、全ての機種の処理を記載せず、接続先の機種に応じてDriver Property Bag 340aから禁則処理の内容を取得する構成とすることができる。このような構成とすることで、機種共通ドライバに対応可能な機種を追加するアップデートを行う場合であっても、モジュールを変更することなく、機種情報の追加のみでアップデートが可能となる。
以上、V4プリンタドライバが実行する処理によるデータの流れについて説明した。次に、上述した図11、図12、図13において行う処理について、より具体的なフローチャートを以て説明する。図7は、第1の実施形態におけるデスクトップ用表示部360が実行する処理のフローチャートであり、機種情報を特定する場面で行う処理である。図8は、機種情報に基づいて各モジュールが実行する処理のフローチャートであり、図7の処理で保存した機種情報に基づいて処理を行う場面である。
まず、図7について説明する。デスクトップ用表示部360は、ステップS1000から処理を開始する。なお、図7の処理は、インストーラ400やエクスプローラ440などからデスクトップ用表示部360が呼び出されときや、ファイルの印刷を行うために印刷設定を行う印刷設定画面が呼び出されたときなどに、処理を開始する。
その後、ステップS1001で、プリンタ120の機種名を取得する。機種名は、デスクトップ用表示部360が、プリンタ120と双方向通信することで取得してもよいし、ユーザの操作によって、機種を直接指定することで取得してもよい。この処理は、図11のS5、図12のS7、図13のS3に対応する処理である。
次に、ステップS1002で、取得した機種名を、Queue Property Bag340bに格納する。この処理は、図13のS5に対応する処理である。ステップS1003では、ステップS1002で格納した機種名に基づいて、スクリプト処理が可能な形式の接続先情報を構築する。接続先情報は、Driver Property Bag340aが保持する複数の機種の機種情報から取得した機種名を参照することで、現在の接続先の機種に対応する機種情報を特定し、現在の接続先に関する接続先情報を構築する。この処理は、図11のS8、図12のS10に対応する処理である。
ステップS1003で構築した接続先情報は、ステップS1004で、Queue Property Bag340bに格納される。この処理は、図11のS10、図12のS12に対応する処理である。この例では、機種名と接続先情報とを別個に格納しているが、図11や図12に示すように接続先情報を生成した段階で一緒に格納してもよい。
なお、ステップS1004の処理は必須ではなく、以下の処理によって代替できる。デスクトップ用表示部360が格納する処理を行わない場合には、禁則処理部380およびストア用表示部370は、Queue Property Bag340bから取得した機種名に応じて、Driver Property Bag340aに保持された機種情報のうち、機種名に対応する機種情報を特定することで、接続先情報を生成することができる。
その後、ステップS1005では、デスクトップ用表示部360の印刷設定部363が、Queue Property Bag340bからオプション情報を取得する。そして、ステップS1006で、機種情報やオプション情報などに基づいて、取得したプリンタ120のUIを構築し、表示することで、ユーザに提供する。その後、ステップS1007で、処理を終了する。ステップS1005〜ステップS1007の処理は、図12のS2、もしくは図12のS12の後であって、図12のS13の前、または図12のS14の後であって図12のS15の前に実行することができる。
次に、図8について説明する。図8(a)は、禁則処理部380が印刷設定情報を出力するフローチャートである。この処理も、上記と同様、図12のS12の後であって、図12のS13の前に実行される処理である。
図8(a)では、禁則処理部380は、ステップS2000から処理を開始し、ステップS2001で、デスクトップアプリ320から印刷設定情報を受け取る。次に、ステップS2002で、Queue Property Bag340bに格納されている、接続先情報を取得する。
ステップS2003では、取得した接続先情報に基づいて、機種共通情報の妥当性を評価する。機種共通情報の妥当性の評価は、各プリンタに共通する、機種依存しない印刷設定情報の設定値が妥当な値かどうかを確認することで行う。機種共通情報としては、例えば、集約設定などが挙げられる。
その後、ステップS2004では、取得した接続先情報に基づいて、機種個別情報の設定値の妥当性を評価する。ステップS2003の妥当性の評価は、プリントスキーム(設定項目)ごとに、オプション情報や、フィニッシング機能などが、選択されているプリンタ120の能力を超えないことを確認することで行う。
ステップS2003およびS2004で妥当性の評価をした後、ステップS2005で、デスクトップアプリ320に印刷設定情報を返却し、ステップS2006で処理を終了する。なお、暗号化情報については、暗号化を行った印刷設定情報を生成した後、削除されることが望ましい。
また、図8(b)は、禁則処理部380が印刷能力情報を出力するフローチャートである。この処理は必要に応じて実施することができる。この処理は、上記と同様、図12のS2、もしくは図12のS12の後であって、図12のS13の前、または図12のS14の後であって、図12のS15の前に実行することができる。印刷能力情報を構築する処理の場合には、禁則処理部380は、図8(b)のステップS3000から処理を開始し、ステップS3001で、デスクトップアプリ320から印刷能力情報構築命令を受け取る。次に、ステップS3002で、Queue Property Bag340bに格納されている、接続先情報を取得する。なお、ステップS3002の処理は、ステップS2002の処理と同様である。
次に、ステップS3003では、能力情報や言語情報を構築する。ステップS3003における能力情報の構築では、プリントスキームごとに設定値の選択肢を構築する。また、言語情報は、OSやデスクトップアプリ320のロケール(国や地域の設定)に基づいて、各設定値の言語情報を構築する。設定値の言語情報としては、例えば、「ステープル、右上」等の情報である。
ステップS3004では、Queue Property Bag340bに格納されている、現在のプリンタ120のオプション情報に基づいて、ステップS3003で構築した能力情報を補正する。能力情報の補正は、設定値の選択肢の追加や削除等である。
その後、ステップS3005で、印刷能力情報をデスクトップアプリ320に返却し、ステップS3006で、処理を終了する。
図8(a)および(b)の処理によって、禁則処理部380は、プリンタ120に応じた機種共通情報や機種個別情報を構築することができる。なお、図8(a)および(b)に示す処理は、別個に並行して、必要に応じて連続して(シーケンシャルに)実施することができる。
次に、ストア用表示部370がストア用UIを構築する処理について、図8(c)を以て説明する。ストア用表示部370は、ステップS4000から処理を開始し、ステップS4001で、禁則処理部380から印刷設定情報を取得する。次に、ステップS4002で、ストア用表示部370は、Queue Property Bag340bを参照して、現在接続している機種の機種名を取得する。この処理は、図12のS8に対応する処理である。なお、図12と異なる点は、この処理が行われるのが、ストアアプリ310から印刷要求が行われた場合であるという点である。
その後、ステップS4003で、ストア用表示部370は、Queue Property Bag340bから、接続先情報を読み込む。次に、ステップS4004で、現在接続している機種に対応した印刷能力情報を構築し、印刷設定情報の妥当性を評価する。
次に、ステップS4005では、現在接続している機種の能力に対して、印刷設定情報を反映したUIを構築し、表示することで、ユーザに提供し、ステップS4006で、処理を終了する。ステップS4003〜ステップS4006の処理は、上記と同様、図12のS12の後であって、図12のS13の前に実行される処理である。
ここまでに説明した通り、図8(c)の処理によって、ストア用表示部370は、接続先の機種に応じたUIを生成することができる。したがって、図6に示した各種処理を実行することで、V4プリンタドライバにおける機種共通プリンタドライバを構成することができる。
図8(c)の処理によって表示されるUIの例を、図14に示す。図14(a)は、カラー印刷が可能なカラー機に接続した場合のストア用表示部370が表示するUIの一例を示した図である。図14(b)は、図13に示した処理により機種をモノクロ機に切り替えた場合のストア用表示部370が表示するUIの一例を示した図である。
図14(a)に示すように、カラー機に接続した場合は、破線で示すカラー/モノクロの印刷設定項目が表示され、いずれの設定項目も選択可能になる。モノクロ機に切り替えると、図14(b)に示すように、カラー/モノクロの印刷設定項目自体が表示されなくなる。
次に、図15を参照して、図7のステップS1003の接続先情報を構築する詳細な処理について説明する。図15は、図7のS1003およびS1004の接続先情報の生成および記憶とともに、マッピング情報と暗号化情報も記憶する場合の例を示した図である。接続先情報は、上述した簡易版機種情報が望ましいことから、ここでは、機種に応じて、簡易版機種情報を生成する処理について説明する。この処理は、デスクトップ用表示部360が、ストア用表示部370および禁則処理部380が処理を行う際に使用する簡易版機種情報を生成する処理である。図15に示す処理は、図11のS5〜S10、図12のS7〜S12、図13のS3〜S5で行うことが可能である。
ステップS1500から処理を開始し、ステップS1501では、デスクトップ用表示部360は、Queue Property Bag340bから現在接続しているプリンタ120の機種名を取得する。ステップS1502では、デスクトップ用表示部360は、取得した機種名に基づき、Driver Property Bag340aから該当する機種情報を取得する。機種情報は、XMLやJSONなどのフォーマットで定義されていることから、ステップS1503では、機能を定義するXMLファイルおよび言語を定義するJSONファイルから、オプション情報に応じて、印刷設定画面の表示に必要な情報だけを取得し、取得した必要な情報から簡易版機種情報を生成する。このとき、簡易版機種情報は、禁則処理部380で処理可能な簡易なフォーマット形式に変更される。そして、ステップS1504で、デスクトップ用表示部360は、生成した簡易版機種情報をQueue Property Bag340bに保存する。
ステップS1505では、デスクトップ用表示部360は、ステップS1501で取得した機種名に基づき、Driver Property Bag340aから該当するマッピングデータを取得する。デスクトップ用表示部360は、取得したマッピングデータをマッピングテーブルに反映し、ステップS1506で、マッピングテーブルをQueue Property Bag340bに保存する。また、デスクトップ用表示部360は、ステップS1507で、暗号化情報を生成し、ステップS1508で、生成した暗号化情報をQueue Property Bag340bに保存する。この保存により、ステップS1509で処理を終了する。ここでは、先にマッピングデータを取得して保存し、その後、暗号化情報を生成して保存する処理となっているが、これに限られるものではなく、暗号化情報を生成して保存する処理を先に実行してもよいし、両者を同時に実行してもよい。
図16を参照して、印刷設定情報の暗号化を行う処理について説明する。この暗号化処理は、暗号化すべき印刷設定(機能)がプリンタドライバ350に入力された後であって、図13のS2において禁則処理部380が呼び出されたタイミングや、図13のS14で描画部390が呼び出された後、描画部390からOS410を介して禁則処理部380が呼び出されるため、その呼び出されたタイミング等で行うことができる。なお、この暗号化処理は、禁則処理部380が行うことができる。
ステップS1600から処理を開始し、ステップS1601では、禁則処理部380は、印刷設定情報を受け取る。ステップS1602では、禁則処理部380は、Queue Property Bag340bに保存した簡易版機種情報を読み込む。また、ステップS1603で、禁則処理部380は、Queue Property Bag340bに保存されたマッピングテーブルも読み込む。なお、禁則処理部380は、マッピングテーブルを先に読み込み、後に簡易版機種情報を読み込んでもよい。
ステップS1604では、禁則処理部380は、簡易版機種情報の中の機能の1つを選択する。そして、ステップS1605で、禁則処理部380は、選択した機能が暗号化する機能かどうかを判断する。暗号化する機能かどうかは、マッピングテーブルから判断することができる。マッピングテーブルは、機能に対応し、その機能が暗号化する機能かどうかを示し、暗号化する場合、どの暗号化方式でどの印刷設定情報に入れ込むかという情報を含むためである。なお、マッピングデータは、暗号化の強度の情報を含んでいてもよい。暗号化する機能である場合、ステップS1606へ進み、暗号化する機能でない場合、ステップS1608へ進む。
デスクトップ用表示部360は、機種毎および強度毎の暗号化に用いられる情報のDriver Property Bag340a上の保存場所、または上述した暗号化に用いられる情報の生成方法を知っている。この保存場所または生成方法は、コードとして保持し、このコードは外部から解読することができない。デスクトップ用表示部360は、機種名を取得後、その保存場所から暗号化に用いられる情報を取得し、またはその生成方法に従って暗号化に用いられる情報を生成し、Queue Property Bag340bの特定の場所に保存する。
ステップS1606では、禁則処理部380が、Queue Property Bag340bの特定の場所に保存された、その機能および強度に対応した暗号化に用いられる情報を取得する。ここでは、強度の情報も考慮しているが、単に機能に対応した暗号化に用いられる情報であってもよい。ステップS1607では、禁則処理部380は、取得した暗号化に用いられる情報を使用し、その機能に使用する個人情報などを暗号化し、暗号化した情報を印刷設定情報などに入れ込み、格納する。
このとき、禁則処理部380は、機種に関係なく、Queue Property Bag340bの特定の場所から暗号化に用いられる情報を取得する。このため、外部から解読可能な禁則処理部380の処理として、暗号化のための情報や暗号化のための処理を直接記述する必要がなくなり、セキュリティを向上させることができる。また、禁則処理部380は、ステップS1607で格納した後、Queue Property Bag340bの特定の場所に保存された暗号化に用いられる情報を削除する。これにより、暗号化に用いられる情報をQueue Property Bag340b上に保存している期間を短くし、よりセキュリティを向上させることができる。
ステップS1608では、禁則処理部380は、全ての機能を選択したかを判断し、選択していない場合、ステップS1604へ戻り、次の機能を選択する。これに対し、全ての機能を選択した場合、ステップS1609へ進み、暗号化処理を終了する。
ところで、図10に示したプリンタドライバのインストール処理では、カスタマイズ情報を読み込み、レジストリ情報を変更した。上記の簡易版機種情報は、このインストール時に決定したカスタマイズ情報を適用し、カスタマイズすることができる。図17を参照して、簡易版機種情報をカスタマイズする処理について説明する。
はじめに、カスタマイズ情報は、レジストリに書き込まれる情報で、初期値を変える場合や、設定値自体を限定する場合などに利用される。設定値自体を限定する場合の例としては、集約設定で、1枚の紙に1ページ、2ページ、4ページの印刷が可能な設定を、2ページのみに限定する場合を挙げることができる。
ステップS1700から処理を開始し、図15に示した処理と同様、ステップS1701では、デスクトップ用表示部360は、現在接続しているプリンタ120の機種名を取得する。ステップS1702では、デスクトップ用表示部360は、取得した機種名に基づき、Driver Property Bag340aから該当する機種情報を取得する。そして、ステップS1703において、デスクトップ用表示部360は、機能を定義するXMLファイルおよび言語を定義するJSONファイルから、オプション情報に応じて、必要な情報だけを取得し、取得した必要な情報から簡易版機種情報を生成する。
ステップS1704では、デスクトップ用表示部360は、レジストリにカスタマイズ情報があるかを判断する。ある場合は、ステップS1705へ進み、ない場合は、ステップS1706へ進む。ステップS1705では、デスクトップ用表示部360は、簡易版機種情報の機能毎にカスタマイズ情報を適用する。具体的には、初期値の変更や選択肢の増減を行う。
ステップS1706では、デスクトップ用表示部360は、カスタマイズ情報が適用された簡易版機種情報または何も適用せず、何の変更も行わない簡易版機種情報を、Queue Property Bag340bに保存する。
その後は図15に示した処理と同様、ステップS1707において、デスクトップ用表示部360は、ステップS1701で取得した機種名に基づき、Driver Property Bag340aから該当するマッピングデータを取得する。デスクトップ用表示部360は、取得したマッピングデータをマッピングテーブルに反映し、ステップS1708で、マッピングテーブルをQueue Property Bag340bに保存する。この保存により、ステップS1709で処理を終了する。
[第2の実施形態]
第1の実施形態では、デスクトップ用表示部360が、Queue Property Bag340bに機種識別情報に応じて生成した接続先情報を記憶する場合の例について説明を行ったが、Queue Property Bag340bに記憶する接続先情報を生成する処理は好適な一例であり、必須ではない。第2の実施形態では、デスクトップ用表示部360が、Queue Property Bag340bに記憶する接続先情報の生成をデスクトップ用表示部360が行わない場合の処理の例について説明する。
<V4プリンタドライバのデータの流れ>
図18は、第2の実施形態に係るV4プリンタドライバのデータの流れを説明する図である。
デスクトップ用表示部360は、第1の実施形態で述べたようにプリンタ120と双方向通信を行うことができる。そこで、まず、デスクトップ用表示部360は、プリンタ120と双方向通信を行い、現在接続しているプリンタ120の機種識別情報(機種名等)を取得し、取得した機種識別情報をQueue Property Bag340bに接続先情報として格納する。
好ましくは、このとき、デスクトップ用表示部360は、現在接続しているプリンタ120の機種状態(オプション情報、どのサイズの用紙が、どのトレイに入っているか等)を取得し、Queue Property Bag340bに格納する。
デスクトップ用表示部360が、機種識別情報(及び機種状態)を取得するタイミングは複数ある。例えば、
1)プリンタドライバ350を情報処理装置にインストールするとき
2)ユーザの操作により、機種が変更されたとき、または機種識別情報の取得が必要になったとき
3)デスクトップアプリ320が、UIを表示するとき
等である。
なお、本実施形態では、デスクトップ用表示部360は、接続情報の生成を行わない。本実施形態では、ストア用表示部370、及び禁則処理部380は、Queue Property Bag340bに格納された機種識別情報を取得し、機種識別情報によって特定される機種の機種情報をDriver Property Bag340aから取得する。これにより、ストア用表示部370、及び禁則処理部380は、現在接続されているプリンタ120の機種情報を、Driver Property Bag340aから取得し、所定の処理を実行することができるようになる。
好ましくは、ストア用表示部370、及び禁則処理部380は、Queue Property Bag340bに格納された機種識別情報を取得し、機種識別情報によって特定される機種のマッピングデータを取得する。これにより、ストア用表示部370、及び禁則処理部380は、取得したマッピングデータを用いて、現在接続されているプリンタ120のマッピングテーブルを作成し、作成したマッピングテーブルに従って所定の処理を実行することができるようになる。
なお、ストア用表示部370、及び禁則処理部380が実行する所定の処理は、第1の実施形態と同様である。
<処理の流れ>
続いて、第2の実施形態に係る処理の流れについて説明する。
(インストール処理)
図19は、第2の実施形態におけるインストール処理の例を示すシーケンス図である。なお、図19に示す処理のうち、ステップS1〜S6の処理は、図11に示す第1の実施形態のインストール処理(第2の例)と同様なので、ここでは、第1の実施形態との相違点を中心に説明を行う。
本実施形態では、機器情報取得部362は、図19のステップS5、S6で、プリンタ120から機種名及び機種状態を取得した後、接続先情報の生成を行わずに、図19のステップS7の処理を実行する。
図19のステップS7において、機器情報取得部362は、記憶制御部364に対して、取得した機種名及び機種状態の保存を要求する。
図19のステップS8において、記憶制御部364は、機器情報取得部362により取得した機種名(機種識別情報)、機種状態を、Queue Property Bag340bに保存する。また、機器情報取得部362は、機器名、機種状態を取得したことをインストーラ400に通知する。
インストーラ400は、図19のステップS3でカスタマイズ情報が登録されていた場合、図19のステップS9以降に示すデフォルト値の変更処理を実行する。
図19のステップS9において、インストーラ400は、デフォルト値の設定変更をOS410に要求する。
図19のステップS10において、OS410は、デフォルト値の設定変更の要求を受けて、禁則処理部380に対して、カスタマイズ情報の変更値が妥当な値であるかの確認(設定チェック)を依頼する。禁則処理部380は、機器情報取得部362が取得した機種名から特定される機種情報をDriver Property Bag340aから取得し、取得した機種情報を用いて、変更値が妥当かどうかを確認する。変更値が妥当でない場合、禁則処理部380は、変更値が妥当でない旨の通知をOS410に返すことができる。この場合、OS410は、変更値が妥当でない旨の通知をインストーラ400に送り、インストーラ400は、その通知を受けて、デフォルト値の設定を変更せずに、インストール処理を終了する。
別の一例として、図19のステップS10において、OS410は、禁則処理部380に対して、カスタマイズ情報の変更値の矛盾を解決する禁則処理(例えば、妥当でない設定項目や設定値等を変更する、削除する等)を要求するものであっても良い。この場合、禁則処理部380は、カスタマイズ情報の変更値の矛盾を解決して、妥当な変更値を生成し、変更値が妥当である旨をOS410に通知する。
OS410は、禁則処理部380から、カスタマイズ情報の変更値が妥当である旨の通知を受けると、その通知をインストーラ400に返す。
図19のステップS11において、インストーラ400は、カスタマイズ情報の変更値が妥当である旨の通知を受けると、カスタマイズ情報の変更値をデフォルト値に反映させる。例えば、インストーラ400は、レジストリ情報を変更することにより、カスタマイズ情報の変更値をデフォルト値に反映させる。
(印刷処理)
図20は、第2の実施形態における印刷処理の例を示すシーケンス図である。なお、図20に示す処理のうち、ステップS1〜S5の処理は、図12に示す第1の実施形態の印刷処理と同様なので、ここでは、第1の実施形態との相違点を中心に説明を行う。
図20のステップS6において、デスクトップ用表示部360は、機種名、機種状態の取得を、機器情報取得部362に要求する。
図20のステップS7において、機器情報取得部362は、プリンタ120と双方向通信を行い、プリンタ120から機種名を取得する。また、図20のステップS8において、機器情報取得部362は、プリンタ120から機種状態を取得する。
本実施形態では、機器情報取得部362は、図20のステップS7、S8で、プリンタ120から機種名及び機種状態を取得した後、接続先情報の生成を行わずに、図20のステップS9の処理を実行する。
図20のステップS9において、機器情報取得部362は、記憶制御部364に対して、取得した機種名及び機種状態の保存を要求する。
図20のステップS10において、記憶制御部364は、機器情報取得部362により取得した機種名(機種識別情報)、機種状態を、Queue Property Bag340bに保存する。
図20のステップS11において、デスクトップ用表示部360は、機器情報取得部362が取得した機種名から特定される機種情報をDriver Property Bag340aから取得し、取得した機種情報を用いて印刷設定画面を表示する。表示された印刷設定画面では、ユーザは印刷設定を変更することができる。デスクトップ用表示部360は、ユーザによる印刷設定の確認や変更が終了し、ユーザ設定画面が閉じられたことを、OS410を介してアプリ420に通知する。
図20のステップS12において、アプリ420は、例えば、ユーザによる印刷ボタンの押下を受けて、印刷の実行をOS410に対して指示する。
図20のステップS13において、OS410は、アプリ420からの指示を受けて、描画部390に対して印刷の実行を命令する。図20のステップS14において、描画部390は、印刷設定に基づき、プリンタ120により解釈可能な形式の描画データ(印刷可能な印刷データ)を生成し、印刷ジョブとして、設定されているプリンタ120に対して出力する。
(機種を変更する処理)
図21は、第2の実施形態における機種を変更する処理の例を示すシーケンス図である。なお、図21に示す処理のうち、ステップS1〜S4の処理は、図13に示す第1の実施形態の機種を変更する処理と同様なので、ここでは、第1の実施形態との相違点を中心に説明を行う。
本実施形態では、デスクトップ用表示部360は、図21のステップS3、S4で機種名及び機種状態を取得した後、接続先情報の生成を行わずに、ユーザによる設定変更を受け付ける。
図21のステップS5において、デスクトップ用表示部360は、取得した機種名や機種状態、設定変更する場合の変更値などを、Queue Property Bag340bに保存する。デスクトップ用表示部360は、それらの保存が終了し、デバイス設定画面が閉じられたことを、エクスプローラ440に対して通知する。
このように、本実施形態では、デスクトップ用表示部360は、接続情報の生成を行わない。
続いて、図22を用いて、本実施形態に係る各モジュールが実行する処理の例について説明する。
(印刷設定情報の出力処理)
図22(a)は、第2の実施形態における印刷設定情報の出力処理の例を示すフローチャートである。この処理は、第2の実施形態に係る禁則処理部380が、印刷設定情報を出力する処理の例を示しており、図8(a)に示した第1の実施形態に係る印刷設定情報を出力する処理に対応している。
禁則処理部380は、ステップS2210から処理を開始し、ステップS2211において、デスクトップアプリ320から印刷設定情報を受け取る。
ステップS2212において、禁則処理部380は、Queue Property Bag340bに格納されている機種識別情報(例えば機種名等)を取得する。
ステップS2213において、禁則処理部380は、取得した機種識別情報によって特定される機種情報を、Driver Property Bag340aから取得する。例えば、禁則処理部380は、取得した機種識別情報によりプリンタ120の機種を特定し、特定した機種に対応する機種情報を、Driver Property Bag340aから取得する。
ステップS2214において、禁則処理部380は、取得した機種情報に基づいて、機種共通情報の妥当性を評価する。機種共通情報の妥当性の評価は、各プリンタに共通する、機種に依存しない印刷設定情報の値が妥当な値かどうかを確認することによって行われる。
好ましくは、禁則処理部380は、確認結果が妥当でない場合、印刷設定情報の矛盾を解決する禁則処理(例えば、妥当でない設定項目や設定値等を変更する、削除する等)を実行し、機種共通の印刷設定情報の設定項目や設定値等の矛盾を解消させる。
ステップS2215において、禁則処理部380は、取得した機種情報、及び機種状態に基づいて、機種個別情報の設定値の妥当性を評価する。
機種個別情報の設定値の妥当性の評価は、プリンタの機種に依存する印刷設定情報の設定項目ごとに、オプション情報や、フィニッシング機能等が、選択されているプリンタ120の能力を超えないことを確認することで行う。
好ましくは、禁則処理部380は、確認結果が妥当でない場合、印刷設定情報の矛盾を解決する禁則処理(例えば、妥当でない設定項目や設定値等を変更する、削除する等)を実行し、機種に依存する印刷設定情報の設定項目や設定値等の矛盾を解消させる。
ステップS2216において、禁則処理部380は、ステップS2214、S2215における印刷設定情報の妥当性の評価結果を反映した印刷設定情報を、デスクトップアプリ320に返却し、ステップS2217において処理を終了する。
(印刷能力情報の出力処理)
図22(b)は、第2の実施形態における印刷能力情報の出力処理の例を示すフローチャートを示している。この処理は、第2の実施形態に係る禁則処理部380が、印刷能力情報を出力する処理の例を示しており、図8(b)に示した第1の実施形態に係る印刷能力情報を出力する処理に対応している。
禁則処理部380は、ステップS2220から処理を開始し、ステップS2221において、デスクトップアプリ320から印刷能力情報構築命令を受け取る。
ステップS2222において、禁則処理部380は、Queue Property Bag340bに格納されている機種識別情報(例えば機種名)を取得する。
ステップS2223において、禁則処理部380は、取得した機種識別情報によって特定される機種情報を、Driver Property Bag340aから取得する。例えば、禁則処理部380は、取得した機種識別情報によりプリンタ120の機種を特定し、特定した機種に対応する機種情報を、Driver Property Bag340aから取得する。
ステップS2224において、禁則処理部380は、印刷能力情報や言語情報を構築する。印刷能力情報の構築では、設定項目ごとに設定値の選択肢を構築する。また、言語情報は、OS410やデスクトップアプリ320のロケール(国や地域の設定)に基づいて、各設定値の言語情報を構築する。
ステップS2225において、禁則処理部380は、Queue Property Bag340bに格納されている、現在のプリンタ120の機種状態に含まれるオプション情報に基づいて、ステップS2224で構築した印刷能力情報を補正する。印刷能力情報の補正には、例えば、設定値の選択肢の追加や削除等が含まれる。
ステップS2226において、禁則処理部380は、ステップS2225で補正された印刷能力情報をデスクトップアプリ320に返却し、ステップS3006で、処理を終了する。
(ストア用表示部による表示処理)
図22(c)は、第2の実施形態におけるストア用表示部370による表示処理の例を示すフローチャートを示している。この処理は、第2の実施形態に係る禁則処理部380が印刷設定画面を表示する処理の例を示しており、図8(c)に示した第1の実施形態に係るストア用表示部370がストア用UIを構築する処理に対応している。
ストア用表示部370は、ステップS2230から処理を開始し、ステップS2231で、禁則処理部380から印刷設定情報を取得する。
ステップS2232において、ストア用表示部370は、Queue Property Bag340bに格納されている機種識別情報(例えば機種名)を取得する。
ステップS2233において、ストア用表示部370は、取得した機種識別情報によって特定される機種情報を、Driver Property Bag340aから取得する。例えば、ストア用表示部370は、取得した機種識別情報によりプリンタ120の機種を特定し、特定した機種に対応する機種情報を、Driver Property Bag340aから取得する。
ステップS2234において、ストア用表示部370は、現在接続している機種に対応した印刷能力情報を、禁則処理部380を用いて作成し、印刷設定情報の妥当性を評価する。
ステップS2235において、ストア用表示部370は、現在接続している機種の印刷能力情報に対して印刷設定情報を反映したUIを構築して表示し、ステップS2236において処理を終了する。
ここで、必ずしもステップS2234を行う必要はない。ステップS2234を行わない場合、ストア用表示部370は、ステップS2235においてステップS2233で取得した現在接続している機種に対応する機種情報を用いて、印刷設定を受け付けるためのUIを構築して表示する。また、ステップS2233において、機種情報とともに機種状態をQueue Property Bag340bから取得し、ステップS2235において、さらに機種状態を用いてUIを構築しても良い。
上記の処理により、禁則処理部380、及びストア用表示部370は、Queue Property Bag340bに接続情報が記憶されていない場合でも、現在接続されているプリンタ120の機種情報を取得し、所定の処理を実行することができるようになる。
以上、説明した本発明の各実施形態によれば、V4プリンタドライバ構成において、機種共通プリンタドライバを構成するプリンタドライバ、情報処理装置および画像処理装置を提供することができる。
上述した本発明の実施形態の各機能は、C、C++、C#、Java(登録商標)等で記述された装置実行可能なプログラムにより実現でき、本実施形態のプログラムは、ハードディスク装置、CD−ROM、MO、DVD、フレキシブルディスク、EEPROM、EPROM等の装置可読な記録媒体に格納して頒布することができ、また他装置が可能な形式でネットワークを介して伝送することができる。
以上、本発明について実施形態をもって説明してきたが、本発明は上述した実施形態に限定されるものではなく、当業者が推考しうる実施態様の範囲内において、本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。