(57)【特許請求の範囲】
【請求項１】
プリンタードライバーをインストールするために必要な情報であるセットアップファイルに記載された識別子をデータベースに追加する追加手段と、
第１のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにないことを条件として、印刷設定のユーザーインターフェースを表示する第２のアプリケーションを起動しない制御を行い、前記第１のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにあることを条件として、前記第２のアプリケーションを前記第１のアプリケーションとは異なるプロセスで起動する制御手段と、を有することを特徴とする情報処理装置。
【請求項２】
前記第１のアプリケーションのプロセスと前記第２のアプリケーションのプロセスはプロセス間通信を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記追加手段による前記識別子の前記データベースへの追加と、前記制御手段による前記第２のアプリケーションの起動は前記情報処理装置のオペレーティングシステムによって行われることを特徴とする請求項１又は請求項２に記載の情報処理装置。
【請求項４】
前記データベースはレジストリデータベースであることを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記識別子は前記第２のアプリケーションの識別子であることを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記制御手段は、前記第１のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにないことを条件として、前記第２のアプリケーションを起動せずに、ＣＰＳＵＩ（Ｃｏｍｍｏｎ  Ｐｒｏｐｅｒｔｙ  Ｓｈｅｅｔ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を呼び出すことを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記第２のアプリケーションは前記識別子を前記データベースに追加することを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記第２のアプリケーションは前記識別子、前記第２のアプリケーションのパス及びアウトプロセスサーバーであることを示す情報を前記データベースに追加することを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項９】
前記追加手段は前記プリンタードライバーをインストールする場合に前記セットアップファイルに記載された前記識別子を前記データベースに追加することを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項１０】
前記第２のアプリケーションは、前記識別子を前記データベースに追加する場合に、特定のオプションをつけて起動されることを特徴とする請求項１乃至９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記第２のアプリケーションは前記特定のオプションをつけずに起動されてかつ印刷設定を行うためのユーザーインターフェースが呼び出された場合に、前記印刷設定を行うためのユーザーインターフェースを表示することを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
前記追加手段は前記セットアップファイルに記載された前記識別子を、プリンターの機種ごとに存在する前記データベースのドライバ情報に追加することを特徴とする請求項１乃至１１のいずれか１項に記載の情報処理装置。
【請求項１３】
印刷設定のユーザーインターフェースを表示する第１のアプリケーションと、
データベースに追加される識別子が記載された、プリンタードライバーをインストールするために必要な情報であるセットアップファイルと、を有し、
前記セットアップファイルに記載された前記識別子は取得されて前記データベースに追加され、
第２のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにないことを条件として、前記第１のアプリケーションは起動せず、前記第２のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにあることを条件として、前記第１のアプリケーションは前記第２のアプリケーションとは異なるプロセスで起動されることを特徴とする情報処理装置。
【請求項１４】
前記第１のアプリケーションのプロセスと前記第２のアプリケーションのプロセスはプロセス間通信を行うことを特徴とする請求項１３に記載の情報処理装置。
【請求項１５】
前記セットアップファイルの識別子の前記データベースへの追加と、前記第２のアプリケーションの起動は前記情報処理装置のオペレーティングシステムによって行われることを特徴とする請求項１３又は請求項１４に記載の情報処理装置。
【請求項１６】
前記データベースはレジストリデータベースであることを特徴とする請求項１３乃至１５のいずれか１項に記載の情報処理装置。
【請求項１７】
前記識別子は前記第２のアプリケーションの識別子であることを特徴とする請求項１３乃至１６のいずれか１項に記載の情報処理装置。
【請求項１８】
前記第１のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにないことを条件として、前記第２のアプリケーションは起動せずに、ＣＰＳＵＩ（Ｃｏｍｍｏｎ  Ｐｒｏｐｅｒｔｙ  Ｓｈｅｅｔ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）が呼び出されることを特徴とする請求項１３乃至１７のいずれか１項に記載の情報処理装置。
【請求項１９】
前記第２のアプリケーションは前記識別子を前記データベースに追加することを特徴とする請求項１３乃至１８のいずれか１項に記載の情報処理装置。
【請求項２０】
前記第２のアプリケーションは前記識別子、前記第２のアプリケーションのパス及びアウトプロセスサーバーであることを示す情報を前記データベースに追加することを特徴とする請求項１３乃至１８のいずれか１項に記載の情報処理装置。
【請求項２１】
前記プリンタードライバーがインストールされる場合に前記セットアップファイルに記載された前記識別子が前記データベースに追加されることを特徴とする請求項１３乃至１８のいずれか１項に記載の情報処理装置。
【請求項２２】
前記第２のアプリケーションは、前記識別子を前記データベースに追加する場合に、特定のオプションをつけて起動されることを特徴とする請求項１３乃至２１のいずれか１項に記載の情報処理装置。
【請求項２３】
前記第２のアプリケーションは前記特定のオプションをつけずに起動されてかつ印刷設定を行うためのユーザーインターフェースが呼び出された場合に、前記印刷設定を行うためのユーザーインターフェースを表示することを特徴とする請求項２２に記載の情報処理装置。
【請求項２４】
前記セットアップファイルに記載された前記識別子は、プリンターの機種ごとに存在する前記データベースのドライバ情報に追加されることを特徴とする請求項１３乃至２３のいずれか１項に記載の情報処理装置。
【請求項２５】
コンピュータに、
プリンタードライバーをインストールするために必要な情報であるセットアップファイルに記載された識別子をデータベースに追加する追加工程と、
第１のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにないことを条件として、印刷設定のユーザーインターフェースを表示する第２のアプリケーションを起動しない制御を行い、前記第１のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにあることを条件として、前記第２のアプリケーションを前記第１のアプリケーションとは異なるプロセスで起動する制御工程と、を実行させることを特徴とするプログラム。
【請求項２６】
前記第１のアプリケーションのプロセスと前記第２のアプリケーションのプロセスはプロセス間通信を行うことを特徴とする請求項２５に記載のプログラム。
【請求項２７】
前記追加工程による前記識別子の前記データベースへの追加と、前記制御工程による前記第２のアプリケーションの起動は前記コンピュータのオペレーティングシステムによって行われることを特徴とする請求項２５又は請求項２６に記載のプログラム。
【請求項２８】
前記データベースはレジストリデータベースであることを特徴とする請求項２５乃至２７のいずれか１項に記載のプログラム。
【請求項２９】
前記識別子は前記第２のアプリケーションの識別子であることを特徴とする請求項２５乃至２８のいずれか１項に記載のプログラム。
【請求項３０】
前記制御工程は、前記第１のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにないことを条件として、前記第２のアプリケーションを起動せずに、ＣＰＳＵＩ（Ｃｏｍｍｏｎ  Ｐｒｏｐｅｒｔｙ  Ｓｈｅｅｔ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を呼び出すことを特徴とする請求項２５乃至２９のいずれか１項に記載のプログラム。
【請求項３１】
前記第２のアプリケーションは前記識別子を前記データベースに追加することを特徴とする請求項２５乃至３０のいずれか１項に記載のプログラム。
【請求項３２】
前記第２のアプリケーションは前記識別子、前記第２のアプリケーションのパス及びアウトプロセスサーバーであることを示す情報を前記データベースに追加することを特徴とする請求項２５乃至３０のいずれか１項に記載のプログラム。
【請求項３３】
前記追加工程は前記プリンタードライバーをインストールする場合に前記セットアップファイルに記載された前記識別子を前記データベースに追加することを特徴とする請求項２５乃至３０のいずれか１項に記載のプログラム。
【請求項３４】
前記第２のアプリケーションは、前記識別子を前記データベースに追加する場合に、特定のオプションをつけて起動されることを特徴とする請求項２５乃至３３のいずれか１項に記載のプログラム。
【請求項３５】
前記第２のアプリケーションは前記特定のオプションをつけずに起動されてかつ印刷設定を行うためのユーザーインターフェースが呼び出された場合に、前記印刷設定を行うためのユーザーインターフェースを表示することを特徴とする請求項３４に記載のプログラム。
【請求項３６】
前記追加工程は前記セットアップファイルに記載された前記識別子を、プリンターの機種ごとに存在する前記データベースのドライバ情報に追加することを特徴とする請求項２５乃至３５のいずれか１項に記載のプログラム。
【請求項３７】
コンピュータで実行されるプログラムであって、前記コンピュータは、
印刷設定のユーザーインターフェースを表示する第１のアプリケーションと、
データベースに追加される識別子が記載された、プリンタードライバーをインストールするために必要な情報であるセットアップファイルと、を有し、
前記セットアップファイルに記載された前記識別子は取得されて前記データベースに追加され、
第２のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにないことを条件として、前記第１のアプリケーションは起動せず、前記第２のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにあることを条件として、前記第１のアプリケーションは前記第２のアプリケーションとは異なるプロセスで起動されることを特徴とするプログラム。
【請求項３８】
前記第１のアプリケーションのプロセスと前記第２のアプリケーションのプロセスはプロセス間通信を行うことを特徴とする請求項３７に記載のプログラム。
【請求項３９】
前記セットアップファイルの識別子の前記データベースへの追加と、前記第２のアプリケーションの起動は前記コンピュータのオペレーティングシステムによって行われることを特徴とする請求項３７又は請求項３８に記載のプログラム。
【請求項４０】
前記データベースはレジストリデータベースであることを特徴とする請求項３７乃至３９のいずれか１項に記載のプログラム。
【請求項４１】
前記識別子は前記第２のアプリケーションの識別子であることを特徴とする請求項３７乃至４０のいずれか１項に記載のプログラム。
【請求項４２】
前記第１のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにないことを条件として、前記第２のアプリケーションは起動せずに、ＣＰＳＵＩ（Ｃｏｍｍｏｎ  Ｐｒｏｐｅｒｔｙ  Ｓｈｅｅｔ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）が呼び出されることを特徴とする請求項３７乃至４１のいずれか１項に記載のプログラム。
【請求項４３】
前記第２のアプリケーションは前記識別子を前記データベースに追加することを特徴とする請求項３７乃至４２のいずれか１項に記載のプログラム。
【請求項４４】
前記第２のアプリケーションは前記識別子、前記第２のアプリケーションのパス及びアウトプロセスサーバーであることを示す情報を前記データベースに追加することを特徴とする請求項３７乃至４２のいずれか１項に記載のプログラム。
【請求項４５】
前記プリンタードライバーがインストールされる場合に前記セットアップファイルに記載された前記識別子が前記データベースに追加されることを特徴とする請求項３７乃至４２のいずれか１項に記載のプログラム。
【請求項４６】
前記第２のアプリケーションは、前記識別子を前記データベースに追加する場合に、特定のオプションをつけて起動されることを特徴とする請求項３７乃至４５のいずれか１項に記載のプログラム。
【請求項４７】
前記第２のアプリケーションは前記特定のオプションをつけずに起動されてかつ印刷設定を行うためのユーザーインターフェースが呼び出された場合に、前記印刷設定を行うためのユーザーインターフェースを表示することを特徴とする請求項４６に記載のプログラム。
【請求項４８】
前記セットアップファイルに記載された前記識別子は、プリンターの機種ごとに存在する前記データベースのドライバ情報に追加されることを特徴とする請求項３７乃至４７のいずれか１項に記載のプログラム。
【請求項４９】
プリンタードライバーをインストールするために必要な情報であるセットアップファイルに記載された識別子をデータベースに追加する追加工程と、
第１のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにないことを条件として、印刷設定のユーザーインターフェースを表示する第２のアプリケーションを起動しない制御を行い、前記第１のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにあることを条件として、前記第２のアプリケーションを前記第１のアプリケーションとは異なるプロセスで起動する制御工程と、を有することを特徴とする制御方法。
【請求項５０】
情報処理装置で実行される制御方法であって、前記情報処理装置は、
印刷設定のユーザーインターフェースを表示する第１のアプリケーションと、
データベースに追加される識別子が記載された、プリンタードライバーをインストールするために必要な情報であるセットアップファイルと、を有し、
前記セットアップファイルに記載された前記識別子は取得されて前記データベースに追加され、
第２のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにないことを条件として、前記第１のアプリケーションは起動せず、前記第２のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにあることを条件として、前記第１のアプリケーションは前記第２のアプリケーションとは異なるプロセスで起動されることを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションが実行するプロセスとは異なるプロセスで、プリンタードライバーのユーザーインターフェースを起動する情報処理装置、情報処理方法、及びプログラムに関するものである。
【背景技術】
【０００２】
プリンタードライバーは詳細な印刷設定を行うために、専用のユーザーインターフェースを持っている。アプリケーションはオペレーティングシステムを介してプリンタードライバーのユーザーインターフェースを表示するが、プリンタードライバーはアプリケーションのプロセス内でロードされている。アプリケーションと同一プロセスでユーザーインターフェースを表示するので、印刷設定データの相互通信が容易であり、ユーザーインターフェース操作中はアプリケーションの操作を止めるモーダルダイアログになる。このようにアプリケーションとプリンタードライバーが一体化したように扱うことができるのが、同一プロセス実行のメリットである。しかし、プリンタードライバーのユーザーインターフェースに不具合があってクラッシュした場合、アプリケーションと同一プロセスであるがために、アプリケーションまで巻き込んでクラッシュしてしまう。
【０００３】
プリンタードライバーだけでなくアプリケーションも含めて、同一プロセスの問題に対処するために、サンドボックスと呼ばれる異なるプロセスで動作させるシステムが存在する。複数のウェブページが同時に閲覧できるタブを持ちそれぞれのタブを別プロセスで動作させるブラウザや、ファイルを開くたびに別のプロセスで起動するアプリケーションなどが知られている。また、プリンタードライバーであっても、アプリケーションの描画データをプリンター言語に変換するレンダリング部を別プロセスにしたり、デバイスと双方向通信してステータスを逐次監視するアプリケーションを別プロセスで起動したりするものがある（特許文献１）。
【０００４】
しかし、プリンタードライバーのユーザーインターフェースについては、別プロセスで起動する対策が難しい。オペレーティングシステムがベースとなるユーザーインターフェースを構築し、プリンタードライバーはそのベース上に追加するシステムになっているからである。そこで、アプリケーションがプリンタードライバーのユーザーインターフェースを呼び出す際に別のサービスを起動し、サービスがプリンタードライバーのユーザーインターフェースを表示する方法がある（特許文献２）。また、プリンタードライバーのユーザーインターフェースをダミーで開いたあとにすぐ閉じて、そのあとで別プロセスを起動する方法が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４６６１９３９
【特許文献２】特開平１１−１４３６６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、アプリケーションが別のサービスを起動する方法では、すべてのアプリケーションがこの呼び出し方に対応するように変更を加えなければならない。また、ダミーのユーザーインターフェースを開く方法では、一度ユーザーインターフェースを閉じるという余計な動作が入り、ユーザーにとってはわずらわしい。ほかにも、オペレーティングシステムがユーザーインターフェースを提供し、そこにプリンタードライバーがユーザーインターフェースを後からシートとして追加する場合は、正しく動作しなくなってしまう。
【課題を解決するための手段】
【０００７】
上記課題を解決するために本発明の情報処理装置は、
プリンタードライバーをインストールするために必要な情報であるセットアップファイルに記載された識別子をデータベースに追加する追加手段と、
第１のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにないことを条件として、印刷設定のユーザーインターフェースを表示する第２のアプリケーションを起動しない制御を行い、前記第１のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにあることを条件として、前記第２のアプリケーションを前記第１のアプリケーションとは異なるプロセスで起動する制御手段と、を有することを特徴とする。
また、上記課題を解決するために本発明の他の情報処理装置は、
印刷設定のユーザーインターフェースを表示する第１のアプリケーションと、
データベースに追加される識別子が記載された、プリンタードライバーをインストールするために必要な情報であるセットアップファイルと、を有し、
前記セットアップファイルに記載された前記識別子は取得されて前記データベースに追加され、
第２のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにないことを条件として、前記第１のアプリケーションは起動せず、前記第２のアプリケーションから前記プリンタードライバーのユーザーインターフェースが呼び出されて、かつ前記識別子が前記データベースにあることを条件として、前記第１のアプリケーションは前記第２のアプリケーションとは異なるプロセスで起動されることを特徴とする。
【発明の効果】
【０００８】
本発明により、アプリケーションと別のプロセスでプリンタードライバーのユーザーインターフェースが起動するので、アプリケーションまで巻き込んでクラッシュすることがなくなる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態としての、コンピューターシステムのハードウェアとソフトウェアのブロック構成図である。
【図２】本発明の一実施形態としての、クライアントとサーバー、そしてプリンターが接続されたネットワークの構成図である。
【図３】本発明の一実施形態としての、一般的なコンピューターを用いた印刷処理システムのブロック構成図である。
【図４】本発明の一実施形態としての、ＸＰＳ印刷処理システムのブロック構成図である。
【図５】本発明の一実施形態としての、印刷設定であるＤＥＶＭＯＤＥ構造体のデータ構造を示したブロック構成図である。
【図６】本発明の一実施形態としての、ＸＰＳ印刷処理システムで使用される印刷設定であるＸＭＬ形式のプリントチケットの一例である。
【図７】本発明の一実施形態としての、プリンタードライバーのユーザーインターフェースである。
【図８】本発明の一実施形態としての、アプリケーションプロセスとは異なるアドバンスドＵＩアプリケーションのプロセスでユーザーインターフェースが動作しているときのブロック構成図である。
【図９】本発明の一実施形態としての、プリンタードライバーにアドバンスドＵＩアプリケーションのＣＬＳＩＤが追加された、セットアップインフォメーションファイルの一例である。
【図１０】本発明の一実施形態としての、オペレーティングシステムが、プリンタードライバーをインストールするときのフローチャートである。
【図１１】本発明の一実施形態としての、アドバンスドＵＩアプリケーションのインストーラーが、アドバンスドＵＩアプリケーションをインストールするときのフローチャートである。
【図１２】本発明の一実施形態としての、オペレーティングシステムが、プリンタードライバーのユーザーインターフェースを開くときのフローチャートである。
【図１３】本発明の一実施形態としての、ＣＯＭプロキシがＣＯＭスタブを呼び出してプロセス間通信を行うときのフローチャートである。
【図１４】本発明の一実施形態としての、ＣＯＭスタブがＣＯＭプロキシから呼び出されてプロセス間通信を行うときのフローチャートである。
【図１５】本発明の一実施形態としての、アドバンスドＵＩアプリケーションが動作するときのフローチャートである。
【図１６】本発明の一実施形態としての、プリントマネージャが、アドバンスドＵＩアプリケーションを呼び出すときのＡＰＩ呼び出しの一例、アドバンスドＵＩアプリケーションが、プリントマネージャにインターフェースを渡すときのＡＰＩ呼び出しの一例である。
【図１７】本発明の一実施形態としての、ＸＰＳ印刷システムにおいて、アドバンスドＵＩアプリケーションが、フィルタパイプラインマネージャにデータを渡すときのブロック構成図である。
【図１８】本発明の一実施形態としての、ＸＰＳ印刷システムにおいて、アドバンスドＵＩアプリケーションが、フィルタパイプラインマネージャにデータを渡すときのフローチャートである。
【図１９】本発明の一実施形態としての、プリンタードライバーにおいて、共有プリンターを利用するための、オペレーティングシステムのユーザーインターフェースである。
【図２０】本発明の一実施形態としての、アドバンスドＵＩアプリケーションがあるプリンタードライバーにおいて、共有プリンターを禁止するオペレーティングシステムのユーザーインターフェースである。
【図２１】本発明の一実施形態としての、オペレーティングシステムが、共有プリンターのユーザーインターフェースを表示するときのフローチャートである。
【図２２】本発明の一実施形態としての、アドバンスドＵＩアプリケーションがあるプリンタードライバーにおいて、ジョブの設定確認を行うときのオペレーティングシステムのユーザーインターフェースである。
【図２３】本発明の一実施形態としての、アドバンスドＵＩアプリケーションがあるプリンタードライバーにおいて、デバイスの設定を行うときのオペレーティングシステムのユーザーインターフェースである。
【図２４】本発明の一実施形態としての、オペレーティングシステムが、プリンタードライバーのユーザーインターフェースを表示するときのフローチャートである。
【図２５】本発明の一実施形態としての、オペレーティングシステムが、アドバンスドＵＩアプリケーションを含んだプリンタードライバーをインストールするときのフローチャートである。
【図２６】本発明の一実施形態としての、プリンタードライバーにアドバンスドＵＩアプリケーションが含まれた、セットアップインフォメーションファイルの一例である。
【発明を実施するための形態】
【００１０】
［実施例１］
以下、本発明を実施するための最良の形態について図面を用いて説明する。
図１は本発明の実施形態を示す一般的なコンピューターを用いたシステムのブロック構成図である。なお、特に断らない限り、本発明の機能が実行されるのであれば、単体の機能であっても、複数の機器からなるシステムであっても、ネットワークを介して接続がなされ処理が行われるシステムであっても、本発明を適用できることは言うまでもない。
【００１１】
ＣＰＵ１０１は主記憶装置１０２のＲＯＭ１０２１あるいはＲＡＭ１０２２あるいは補助記憶装置１０５に格納されたプログラムに従って装置全体の制御を行う。ＲＡＭ１０２２はＣＰＵ１０１が各種処理を行う際のワークエリアとしても使用される。補助記憶装置１０５はオペレーティングシステム（ＯＳ）１０５３やアプリケーションソフト１０５１等を記録する。キーボード１０３１やマウス・タッチパネルなどに代表されるポインティングデバイス１０３２などの入力機器は、入力Ｉ／Ｆ１０３を通じて、ユーザーがコンピューターに対して各種指示を与えるためのデバイスである。出力Ｉ／Ｆ１０４は、データを外部に出力するためのインターフェースであり、モニタ１０４１やプリンター１０４２などの出力機器に対してデータを出力する。プリンター１０４２とは直接接続されるローカルＩ／Ｏのみならず、通信Ｉ／Ｆ１０６を通じて接続されるネットワーク１０６１を通して接続されていてもよい。また、１０７は共通データシステムバスで、モジュール間でそれぞれのデータのやりとりを行う。
【００１２】
図２は本発明の実施の形態におけるネットワーク１０６１の環境を簡略した図である。印刷を行う文書や画像を作成するクライアントコンピュータ２０１／２０２が単体もしくは複数ネットワークに接続されている。また、クライアントのユーザーやプリンターを管理するサーバーコンピュータ２０３が接続されていることもある。プリンター２０４／２０５が単体もしくは複数ネットワークに接続されており、プリンター２０５のように物理的に接続されていても実際には使用できないオフライン状態であることもある。ネットワークにはＰＡＮ（Ｐｅｒｓｏｎａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＬＡＮ（ＬｏｃａｌＡｒｅａ  Ｎｅｔｗｏｒｋ）、ＭＡＮ（Ｍｅｔｒｏｐｏｌｉｔａｎ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（ＷＩＤｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などの小規模から大規模までのネットワークがあり、これらの機器がすべてのネットワークに接続されている。クラウドなど、サーバーやプリンターがインターネットを越えて接続されていてもかまわない。
【００１３】
図３において、一般的なコンピューターを用いた印刷処理システムを示す。アプリケーション１０５１と、プリンタードライバー１０５２、オペレーティングシステム１０５３は、図１の補助記憶装置１０５に格納されている。グラフィックスエンジン３０２、プリントマネージャ３０６はオペレーティングシステム１０５３に含まれるモジュールである。ユーザーはキーボード１０３１やマウス１０３２などといった入力装置を使用して、出力装置のモニタ１０４１に映し出されたアプリケーションプログラム１０５１を使用して作成した文書３０１の印刷処理を実行する。印刷処理はプリンターの選択、印刷設定の作成、描画データの変換と３つの処理を順番に行うことで実行される。まずは、プリンターの選択として、印刷を実行するプリンター１０４２に対応したプリンタードライバー１０５２を選択する。次に印刷設定３０１２の作成を行う。文書の印刷設定３０１２はプリンタードライバー１０５２のコンフィギュレーションモジュール３０４によって初期値が作成される。作成された印刷設定３０１２をアプリケーション１０５１もしくはプリンタードライバー１０５２のユーザーインターフェースを使用してユーザーが望む最終印刷結果になるように変更して設定を行う。たとえば、出力する用紙サイズを変更したり、両面印刷、白黒印刷を行なうといった設定である。プリンタードライバー１０５２のユーザーインターフェースは、コンフィギュレーションモジュール３０４かアドバンスドＵＩアプリケーション（ユーザーインターフェースアプリケーション）３１１のどちらかが提供する。印刷設定３０１２はＲＡＭ１０２２上に確保されるが、保存する形式はバイナリのデータ構造体であったり、マークアップ言語のＸＭＬであったりする。この形態はプリンタードライバー１０５２やオペレーティングシステム１０５３の仕様によって異なる。印刷設定３０１２は文書印刷のたびに作成する。しかしながら、プリンター１０４２のオプション機器構成や、ユーザーごとの環境設定など設定を保持しておきたいものは、プリンタードライバー１０５２がオペレーティングシステム１０５３のレジストリデータベース３０８に保存する。印刷設定３０１２のユーザーごとのデフォルト値はオペレーティングシステム１０５３のプリントマネージャ３０６が、レジストリデータベース３０８に保存する。最後に描画データの変換を行う。印刷設定３０１２が作成し終わったら、ユーザーによって印刷処理が実行され、オペレーティングシステム１０５３に印刷処理を通知する。オペレーティングシステム１０５３はグラフィックスエンジン３０２を通じて、指定されたプリンタードライバー１０５２への描画を行う。印刷設定３０１２でレイアウト処理が指定されている場合は、プリンタードライバー１０５２のレンダリングモジュール３０３に行く前に一時的なスプールファイル３０７を作成し、レイアウトモジュール３０９を起動する。レイアウト処理とは用紙の順番を入れ替えたり、一枚の用紙に複数ページを貼り付けたりする処理を指す。レイアウトモジュール３０９はレイアウトを変更した後、プリンタードライバー１０５２への描画を再度行う。描画データが送られてきたプリンタードライバー１０５２はレンダリングモジュール３０３によって、プリンターが理解できるデータ言語すなわちプリンター制御言語に変換する。このとき印刷設定３０１２も、プリンター制御言語として変換する。レンダリングモジュール３０３、コンフィギュレーションモジュール３０４はともに複数の種類のプリンター１０４２に対して共通のモジュールであることが多く、機種ごとの違いは機種依存データファイル３０５に記述されている。レンダリングモジュール３０３、コンフィギュレーションモジュール３０４は適宜、この機種依存データファイル３０５を参照する。変換されたデータはスプールファイル３０７として逐次保存していく。プリントマネージャ３０６はスプールファイル３０７を取得し、印刷ジョブファイルとして印刷処理のスケジュール管理を行う。プリンターが印刷できる状態になったら、プリントマネージャ３０６はＩ／Ｏモジュール３１０を介してプリンター１０４２に印刷ジョブデータを送信する。このようにして、アプリケーションからの印刷データがプリンター言語に変換されて印刷を行う。
【００１４】
文書３０１の印刷設定３０１２を作成するには、アプリケーションによって印刷設定３０１２を直接書き換えるか、プリンタードライバー１０５２のコンフィギュレーションモジュール３０４もしくはアドバンスドＵＩアプリケーション３１１が提供するユーザインタフェース（図７）を使用する。印刷設定３０１２はＭｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムでは、ＤＥＶＭＯＤＥ構造体と呼ばれる図５の構造をしている。ＤＥＶＭＯＤＥ構造体はオペレーティングシステムで公開定義されている標準の設定領域５０１と、プリンタードライバーが拡張した設定領域５０２に分けられている。標準の設定領域５０１には、用紙サイズや給紙段の切り替え、カラー白黒の切り替えなど印刷の基本的な設定の値がある。拡張した設定領域５０２には、プリンターのオプションに応じた排紙機能や、細かい色調整機能などの値がある。アプリケーションは各プリンタードライバー１０５２が持つ拡張設定を知ることはできないので、直接印刷設定を書き換えることができるのは、システムで定義されている標準の設定領域５０１だけとなる。そこで、アプリケーションはプリンタードライバー１０５２のユーザーインターフェースを表示させて、拡張された印刷設定５０２をユーザーに行わせるのが一般的である。コンフィギュレーションモジュール３０４はユーザーインターフェースだけではなく、アプリケーションプログラムインタフェース（ＡＰＩ：Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）も提供している。なので、ユーザーインターフェースを表示せずに拡張された印刷設定５０２を外部から設定することも可能である。しかし、コンフィギュレーションモジュール３０４のＡＰＩを使用する場合はアプリケーションがプリンタードライバー１０５２ごとに対応しなければならないので、一般的なアプリケーションは標準の設定領域５０１のみ変更を行う。
【００１５】
もうひとつ、本発明を適用できる別の印刷システムを説明する。図３はＧＤＩ印刷システムと呼ばれるのに対し、図４はＸＰＳ印刷システムのブロック構成図である。ＸＰＳ印刷システムはＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎと呼ばれる文書ファイルフォーマットをスプールデータとして使用し、印刷を行うシステムである。ＸＰＳ印刷システムもＧＤＩ印刷システムと同じく、オペレーティングシステム１０５３上で動作している。プリントマネージャ３０６、ＧＤＩｔｏＸＰＳ変換モジュール４０５、フィルタパイプラインマネージャ４０９はオペレーティングシステム１０５３に含まれるモジュールである。プリンタードライバー１０５２とフィルタパイプラインマネージャ４０９の各フィルタは、図１の補助記憶装置１０５にプリンタードライバー１０５２として格納されている。フィルタパイプラインマネージャ４０９はオペレーティングシステムに含まれるが、各フィルタはプリンタードライバー１０５２のモジュールである。ＧＤＩ印刷アプリケーション４０１とＸＰＳ印刷アプリケーション４０２は、図１の補助記憶装置１０５にアプリケーション１０５１として格納されている。ユーザーはキーボード１０３１やマウス１０３２などといった入力装置を使用して、出力装置のモニタ１０４１に映し出されたＧＤＩ印刷アプリケーションプログラム４０１（以下、ＧＤＩアプリと略す）、もしくはＸＰＳ印刷アプリケーションプログラム４０２（以下、ＸＰＳアプリと略す）から印刷処理を実行する。印刷処理はプリンターの選択、印刷設定の作成、描画データの変換と３つの処理を順番に行うことで実行する。
【００１６】
まずは、印刷したいプリンター１０４２の選択をする、これは、印刷を実行するプリンター１０４２に対応したプリンタードライバー１０５２を選択することと同義である。次に印刷設定を作成する。印刷設定はアプリケーションが印刷設定用のメモリを確保し、アプリケーションかプリンタードライバーのコンフィギュレーションモジュール３０４が、機種依存ファイル３０５を利用して設定データを埋めるという形で行われる。ＧＤＩアプリ４０１では印刷設定データとしてバイナリのＤＥＶＭＯＤＥ構造体４０３を用い、ＸＰＳアプリ４０２ではマークアップ言語のＸＭＬで記載されたプリントチケット４０４を用いる。ＤＥＶＭＯＤＥ構造体４０３もプリントチケット４０４も、図５の構造のように、オペレーティングシステムが定義する標準領域とプリンタードライバーが独自で定義する拡張領域を持つ。また、プリントチケット４０４は、図６にあるようなＸＭＬ形式で記述された印刷設定情報であるので、標準領域と拡張領域は名前空間によって記載が分かれている。このＤＥＶＭＯＤＥ構造体４０３もしくはプリントチケット４０４が印刷設定を保持しており、アプリケーションが直接書き換えることで印刷設定を変更する。プリンター１０４２に依存した専用の設定は、コンフィギュレーションモジュール３０４もしくはアドバンスドＵＩアプリケーション３１１が持つプリンタードライバー１０５２のユーザインタフェース（図７）を表示して行う。プリンタードライバー１０５２は、ユーザーインターフェースの設定に従い、ＤＥＶＭＯＤＥ構造体４０３もしくはプリントチケット４０４のプリンター１０４２に依存した設定を変更する。印刷設定とは具体的に、出力する用紙サイズを「Ａ４」にする、両面印刷を行う、カラーと白黒を切り替える、給紙段を指定するなどといった印刷を行うのに必要なデータのことを指す。プリントチケット４０４は印刷設定がＸＭＬ形式で記述されているので、ＸＰＳアプリ４０２がすべての設定値を直接変更して書き換えることは容易だが、従来のようにプリンタードライバー１０５２のユーザーインターフェースを使って設定変更してもかまわない。印刷設定は文書印刷のたびに作成するが、プリンター１０４２のオプション機器や、ユーザーごとの環境設定など設定を保持しておきたいものは、ユーザーインターフェースがオペレーティングシステムのレジストリデータベース３０８に保存する。印刷設定のユーザーごとのデフォルト値はオペレーティングシステムのプリントマネージャ３０６が、レジストリデータベース３０８に保存する。最後に描画データの変換を行う。印刷設定が確定したら、ユーザーはアプリケーションから印刷処理を実行する。ＧＤＩアプリ４０１から印刷する場合は、プリンタードライバーの形態を取るＧＤＩｔｏＸＰＳ変換モジュール４０５に描画データが送られ、ＸＰＳスプールファイル４０７が作成される。このときＧＤＩｔｏＸＰＳ変換モジュール４０５はコンフィギュレーションモジュール３０４を呼び出し、印刷設定をＤＥＶＭＯＤＥ構造体４０３からプリントチケット４０４に変換する。ＸＰＳアプリ４０２から印刷する場合は、ＸＰＳファイルをＸＰＳアプリ自身が生成するのと、オペレーティングシステムがＸＰＳアプリからの描画命令に応じてＸＰＳファイルを生成するのと２通りの方法がある。どちらの方法であっても、印刷の途中でＸＰＳスプールファイル４０７を生成する。このようにＸＰＳ印刷システムは、印刷時に必ずＸＰＳスプールファイル４０７を生成するのが特徴である。
【００１７】
ＸＰＳスプールファイル４０７が生成されたら、プリントフィルタパイプラインプロセスに処理が渡される。プリントフィルタパイプラインプロセスは複数のフィルタを通すことで印刷が行われる仕組みで、フィルタコンフィギュレーションファイル４１３でフィルタの数や順番を制御する。プリントフィルタパイプラインプロセスで動作するフィルタパイプラインマネージャはフィルタコンフィギュレーションファイル４１３に従って、この実施例では設定フィルタ４１０、レイアウトフィルタ４１１、レンダラフィルタ４１２の順に処理を行う。フィルタはプリンタードライバー１０５２の構成によって、数や種類が異なる。印刷処理はＸＰＳスプールファイル４０７をフィルタに受け渡すことで行われ、フィルタがそれぞれＸＰＳスプールファイル４０７を加工し次のフィルタに渡していくことで処理が進む。最後にはプリンターが理解できるデータ言語であるプリンター制御言語（以下、ＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）と略す）となって出力される。もちろんプリンター１０４２がＸＰＳスプールファイル４０７を直接読み込んで印刷できるＸＰＳダイレクトプリンタであれば、すべてのフィルタをスルーして印刷してもよい。設定フィルタ４１０ではプリントチケットを読み込んで印刷に必要なデータをプリントチケットに書き込む処理を行う。レイアウトフィルタ４１１では倍率の変更や製本の面付けレイアウトやスタンプなどレイアウトに関する処理を行う。レイアウトフィルタ４１１では、ＸＰＳスプールファイル４０７に含まれる印刷設定プリントチケット４０４に従って動作する。そのため、たとえば面付けの設定がプリントチケット４０４に存在しないときは、レイアウトフィルタ４１１は何も動作せずスルーして、次のフィルタにＸＰＳスプールファイル４０７をそのまま渡す。最後のレンダラフィルタ４１２では、ＸＰＳスプールファイル４０７をレンダリングしてＰＤＬに変換する。ＰＤＬデータは印刷処理のスケジュール管理を行うプリントマネージャ３０６で管理され、キュー（待ち行列）に印刷ジョブが次々と登録される。プリンター１０４２が印刷できる状態になったら、キューに登録した順にＰＤＬデータをＩ／Ｏモニタ３１０を通して送信する。このようにして、アプリケーションからの印刷データをプリンター言語に変換することがプリンタードライバーの主な役目であり、印刷処理が行われる。
【００１８】
次にプリンタードライバー１０５２とアドバンスドＵＩアプリケーション３１１の関連付けを説明する。
【００１９】
まずは、プリンタードライバー１０５２のインストールを図１０のフローチャートに従って説明する。プリンタードライバー１０５２は図９のセットアップインフォメーションファイル（以下、ＩＮＦファイル）に従ってオペレーティングシステム１０５３へインストールされる。ＩＮＦファイルには、プリンターの機種名や構成するファイル、バージョンなどプリンタードライバー１０５２をインストールするために必要な情報が記載されている。プリンタードライバー１０５２のインストールセットは、ＩＮＦファイルとプリンタードライバー１０５２を構成する各種ファイルが集まって、ひとつのセットになっている。オペレーティングシステム１０５３は、プリンタードライバー１０５２のインストールが開始されると（Ｓ１００１）、指定された機種のプリンタードライバー１０５２のインストールセットを探す。インストールセットはオペレーティングシステム１０５３に組み込まれているものを使用するが、ユーザーによって指定されるか、あらかじめ特定された配信サーバーなどから提供されることもある。オペレーティングシステム１０５３は、インストールセットに含まれるＩＮＦファイルを元にファイルをコピーし、レジストリデータベース３０８に必要なドライバ情報を書き込むことで、通常のプリンタードライバーのインストールが完了する（Ｓ１００２）。ここで、ＩＮＦファイルの中に、アドバンスドＵＩアプリケーション３１１のＣＬＳＩＤが記載されているかどうかを確認する（Ｓ１００３）。ＣＬＳＩＤとはＵＵＩＤ（Ｕｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒ）の一種で、１６バイトの数値で構成され、世界で一意な識別子である。ＣＬＳＩＤはアドバンスドＵＩアプリケーション３１１を識別するために、使用するアドバンスドＵＩアプリケーション３１１に割り当てられたＣＬＳＩＤをセットアップファイルに記載しておく。図９ではＡｄｖａｎｃｅｄＵＩＣＬＳＩＤというキーが、アドバンスドＵＩアプリケーション３１１のＣＬＳＩＤに該当する。アドバンスドＵＩアプリケーション３１１のＣＬＳＩＤが存在すれば、オペレーティングシステム１０５３はＩＮＦファイルからＣＬＳＩＤを取得する（Ｓ１００４）。オペレーティングシステム１０５３は、アドバンスドＵＩアプリケーション３１１のＣＬＳＩＤを、レジストリデータベース３０８にあるプリンター機種ごとのドライバ情報に、追加して記載しておく（Ｓ１００５）。これで、プリンタードライバー１０５２のインストールが完了する。
【００２０】
次にアドバンスドＵＩアプリケーション３１１のインストールを、図１１のフローチャートと図１５のフローチャートの一部を使用して説明する。アドバンスドＵＩアプリケーション３１１は、プリンタードライバー１０５２のインストールセットとは別に、インストーラーとアドバンスドＵＩアプリケーション３１１の構成ファイルからなるアドバンスドＵＩアプリケーションのインストールセットが存在する。ユーザーがインストーラーを実行すると、まずインストーラーはアドバンスドＵＩアプリケーション３１１と構成ファイルをユーザーに指定されたアプリケーションを格納するフォルダにコピーする（Ｓ１１０１）。次に、インストーラーは、引数として／ＲｅｇＳｖｒオプションをつけてアドバンスドＵＩアプリケーション３１１を起動する（Ｓ１１０２）。起動されたアドバンスドＵＩアプリケーション３１１は、／ＲｅｇＳｖｒオプションをつけて起動されているかどうかを判定する（Ｓ１５０１）。アドバンスドＵＩアプリケーション３１１は、／ＲｅｇＳｖｒオプションがついていれば、ＣＯＭ（Ｃｏｍｐｏｎｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）のアウトプロセスサーバーとして、レジストリデータベース３０８に情報を書き込む（Ｓ１５０２）。ＣＯＭはＭｉｃｒｏｓｏｆｔ社のソフトウェア同士の通信技術で、通信する各ソフトウェアコンポーネントは一意のＣＬＳＩＤによって識別される。アウトプロセスサーバーとは、呼び出したプロセスと別のプロセスで動作するコンポーネントであり、アドバンスドＵＩアプリケーション３１１はアウトプロセスサーバーであることを明示する。レジストリデータベース３０８に書き込む情報としては、アプリケーション名を含んだフルパスと、アドバンスドＵＩアプリケーションのＣＬＳＩＤ、そしてアウトプロセスサーバーであることを示す“ＬｏｃａｌＳｅｒｖｅｒ３２”の文字列である。このＣＬＳＩＤは図９のＩＮＦファイルで指定したＣＬＳＩＤと同一のものでなければならない。これで、アドバンスドＵＩアプリケーション３１１のインストールが完了する。
【００２１】
プリンタードライバー１０５２のインストールによって取得したＣＬＳＩＤと、アドバンスドＵＩアプリケーション３１１のインストールによって記載されたＣＬＳＩＤが同一であることから、オペレーティングシステム１０５３は両者を関連付けることができる。次にアプリケーション１０５１から、プリンタードライバー１０５２のユーザーインターフェースを表示するフローを、図８のブロック構成図と、図１２、図１５のフローチャートで説明する。
【００２２】
オペレーティングシステム１０５３のモジュールであるプリントマネージャ３０６は、アプリケーション１０５１からプリンタードライバー１０５２のユーザーインターフェースを表示するＡＰＩの呼び出しを受け取る（Ｓ１２０１）。そのとき、プリントマネージャ３０６は、アプリケーション１０５１から引数として印刷設定のＤＥＶＭＯＤＥ構造体も受け取る。これは、受け取った印刷設定のＤＥＶＭＯＤＥ構造体に従ってユーザーインターフェースを構築することで、現在の印刷設定をユーザーに見せることができるためである。また、プリントマネージャ３０６は、アプリケーション１０５１からどのプリンタードライバー１０５２を使用するのかを指定する機種情報も受け取る。これは、複数のプリンタードライバー１０５２がオペレーティングシステム１０５３にインストールされていたときに、どのプリンタードライバー１０５２を使用するのかを明確にするためである。プリントマネージャ３０６は、アプリケーション１０５１から受け取った機種情報を元に、レジストリデータベース３０８を検索する。レジストリデータベース３０８にはプリンタードライバー１０５２のインストール時に記載されたドライバ情報が書き込まれており、プリントマネージャ３０６は指定された機種情報に応じたドライバ情報を取得する（Ｓ１２０２）。プリントマネージャ３０６は取得したドライバ情報の中にアドバンスドＵＩアプリケーションのＣＬＳＩＤがあるかどうかを判定する（Ｓ１２０３）。なければ、プリントマネージャ３０６は、プリンタードライバー１０５２のコンフィギュレーションモジュール３０４のユーザーインターフェースを開くために、ＣＰＳＵＩ８０１を呼び出す（Ｓ１２１２）。ＣＰＳＵＩ（Ｃｏｍｍｏｎ  Ｐｒｏｐｅｒｔｙ  Ｓｈｅｅｔ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）８０１は、プロパティシートのベースとなる土台を作成し、コンフィギュレーションモジュール３０４にユーザーインターフェースの作成を依頼する。コンフィギュレーションモジュール３０４は機種依存データファイル３０５を使用して、プリンターの機種に応じたユーザーインターフェースを表示する。すなわちアプリケーション１０５１と同一プロセスでユーザーインターフェースモジュールを起動する。アドバンスドＵＩアプリケーションのＣＬＳＩＤが存在するときは、プリントマネージャ３０６はＣＬＳＩＤとアウトプロセスサーバーで起動することを引数に指定してオペレーティングシステム１０５３のＡＰＩを呼び出す（図１６（１））。プリントマネージャ３０６はオペレーティングシステム１０５３のＡＰＩの中で、指定されたＣＬＳＩＤを検索キーにしてレジストリデータベース３０８を検索する。プリントマネージャ３０６はオペレーティングシステム１０５３のＡＰＩの中で、アドバンスドＵＩアプリケーション３１１がすでにインストールされていれば、レジストリデータベース３０８からアドバンスドＵＩアプリケーション３１１のファイル名を含むフルパスを取得できる（Ｓ１２０４）。もし、存在しない場合はＣＬＳＩＤが存在しなかったときと同じく、プリンタードライバーのユーザーインターフェースを表示する。これは、ＩＮＦファイルにＣＬＳＩＤが記載されているのに、アド���ンスドＵＩアプリケーション３１１がインストールされていない環境で発生する。フルパスを取得したら、プリントマネージャ３０６はオペレーティングシステム１０５３のＡＰＩの中から、アドバンスドＵＩアプリケーション３１１をアプリケーション１０５１と異なるプロセスで起動する（Ｓ１２０５）。起動されたアドバンスドＵＩアプリケーション３１１は、／ＲｅｇＳｖｒオプションがついていないので（Ｓ１５０１）、ウィンドウを作成する（Ｓ１５０３）。この時点で作成したウィンドウはまだ表示してはおらず、メッセージループでプリントマネージャ３０６からの応答を待つために作成しているだけである。アドバンスドＵＩアプリケーション３１１は、アドバンスドＵＩアプリケーション３１１のインターフェースオブジェクトを作成し、インターフェースオブジェクトを引数に指定してオペレーティングシステム１０５３のＡＰＩを呼び出す（Ｓ１５０４と図１６（２））。すると、プリントマネージャ３０６は、アドバンスドＵＩアプリケーション３１１のインターフェースを受け取ることができる（Ｓ１２０６）。インターフェースを受け取ったプリントマネージャ３０６は、ＤＥＶＭＯＤＥ構造体をプリントチケットに変換する（Ｓ１２０７）。プリントマネージャ３０６は、コンフィギュレーションモジュール３０４を呼び出すことで、プリントチケットへの変換を行う。ＤＥＶＭＯＤＥ構造体のようなバイナリデータのままでは、異なるプロセス間のデータを送受信するのに不都合なため、テキスト形式のマークアップ言語ＸＭＬのプリントチケットへ変換する。プリントマネージャ３０６は、プリンター機種、ＣＬＳＩＤを元に取得したドライバ情報、プリントチケット、イベント情報を、受け取ったインターフェースの引数として、インターフェースのメソッドを呼び出す（Ｓ１２０８）。イベント情報とは、アプリケーション１０５１がプリンタードライバー１０５２に対してどのようなユーザーインターフェースを表示するかの情報である。プリンタードライバーのユーザーインターフェースは１つではなく、印刷設定を行うユーザーインターフェース、デバイス設定を行うユーザーインターフェース、ジョブの印刷設定の確認を行うユーザーインターフェースが存在する。このうち、どのユーザーインターフェースを表示するのかをイベント情報として、アドバンスドＵＩアプリケーション３１１に通知する必要があるからである。アドバンスドＵＩアプリケーション３１１はインターフェースの呼び出しを受け取り、ＵＩのイベントかどうかを判定する（Ｓ１５０５）。アドバンスドＵＩアプリケーション３１１は、ＵＩのイベントであることが確認できたら、呼び出されたインターフェースから、プリンター機種、ドライバ情報、プリントチケットを取得する（Ｓ１５０６）。次にアドバンスドＵＩアプリケーション３１１は、ＵＩイベントの種類を判定し、表示するユーザーインターフェースを決定する。アドバンスドＵＩアプリケーション３１１はアプリから印刷設定のユーザーインターフェースが呼び出されたときは（Ｓ１５０７）、印刷設定のユーザーインターフェースを表示する（Ｓ１５０８）。アドバンスドＵＩアプリケーション３１１はデバイス設定のユーザーイン���ーフェースが呼び出されたときは（Ｓ１５０９）、デバイス設定のユーザーインターフェースを表示する（Ｓ１５１０）。アドバンスドＵＩアプリケーション３１１はジョブ設定のユーザーインターフェースが呼び出されたときは（Ｓ１５１１）、ジョブ設定のユーザーインターフェースを表示する（Ｓ１５１２）。アドバンスドＵＩアプリケーション３１１は取得したプリンター機種とドライバ情報、プリントチケットに基づいてユーザーインターフェースを表示する。表示に使用する印刷設定の項目や、設定項目同士の禁則などのロジックについては、アドバンスドＵＩアプリケーション３１１はプリンタードライバー１０５２を呼び出してデータの取得や制御を行う。アドバンスドＵＩアプリケーション３１１は、プリンタードライバー１０５２のコンフィギュレーションモジュール３０４のユーザーインターフェースを表示することもできる。しかしながら、自分でユーザーインターフェースを表示することによって、コンフィギュレーションモジュール３０４からユーザーインターフェースをなくすことができる。このようにすることで、プリンタードライバー１０５２のコンフィギュレーションモジュール３０４は印刷設定のみにすることができ、プリンタードライバー１０５２を更新することなく、ユーザーインターフェースを自由に組み替えることができるようになる。もちろん、アドバンスドＵＩアプリケーション３１１が直接プリンタードライバーを呼び出すのではなく、インターフェースを通じてプリンタードライバーを呼び出すためのドライバーインターフェースを渡してもらうことも可能である。このドライバーインターフェースを通じて、アドバンスドＵＩアプリケーション３１１は、印刷設定の項目や、設定項目同士の禁則をすることもできる。ユーザーがユーザーインターフェースで印刷設定を終えたら、アドバンスドＵＩアプリケーション３１１は、ユーザーインターフェースを閉じてウィンドウを破棄する（Ｓ１５１３）。アドバンスドＵＩアプリケーション３１１は、ユーザーインターフェースの設定を、インターフェースで渡されたプリントチケットに反映する（Ｓ１５１４）。アドバンスドＵＩアプリケーション３１１は、プリントチケットに反映できないデータについては、レジストリデータベース３０８に保存する（Ｓ１５１５）。プリントチケットに反映できないデータは、プリンターのフィニッシャーなどのオプション機器構成や、ユーザー名やパスワードなどの個人情報、お気に入りやスタンプといったユーザーが作成する機能などが存在する。すべての保存が終了したら、アドバンスドＵＩアプリケーション３１１は終了して、呼び出し元であるプリントマネージャ３０６に制御を返す。プリントマネージャ３０６は、アドバンスドＵＩアプリケーション３１１がユーザーインターフェースを表示している間、終了するのを待っている（Ｓ１２０９）。アドバンスドＵＩアプリケーション３１１が終了するのが確認できたら、プリントマネージャ３０６は、アドバンスドＵＩアプリケーション３１１によって変更されたプリントチケットを受け取る。そして、ＤＥＶＭＯＤＥ構造体に変換するためにプリンタードライバー１０５２のコンフィギュレーションモジュール３０���を呼び出す（Ｓ１２１０）。プリントマネージャ３０６は、アプリケーションに対して変換したＤＥＶＭＯＤＥ構造体を返し、ＡＰＩを終了する（Ｓ１２１１）。このようにして、アプリケーションとは別のプロセスで、印刷設定に関連するユーザーインターフェースを実行する。
【００２３】
アプリケーションのプロセスと、アドバンスドＵＩアプリケーションのプロセスの間は、インターフェースのメソッドの呼び出しとなっているが、図８のブロック構成図と図１３、図１４のフローチャートを使用してその中身を説明する。インターフェースが呼び出されると、オペレーティングシステム１０５３はＣＯＭプロキシ８０２を呼び出す。ＣＯＭプロキシ８０２は、インターフェースのメソッドに入力された引数データをマーシャリングする（Ｓ１３０１）。マーシャリングとは異なる２つのシステムでデータを送受信できるように、オブジェクトデータをストリームに格納することである。ＣＯＭプロキシ８０２はＲＰＣ（Ｒｅｍｏｔｅ  Ｐｒｏｃｅｄｕｒｅ  Ｃａｌｌ）を使って、アドバンスドＵＩアプリケーション３１１のプロセスにあるＣＯＭスタブ８０３を呼び出す（Ｓ１３０２）。ＲＰＣは、離れたシステム同士で手続きを呼び出すことができる機能である。ＣＯＭプロキシ８０２は呼び出したＣＯＭスタブ８０３に、マーシャリングしたストリームデータを送信する。ＣＯＭスタブ８０３は、ＣＯＭプロキシ８０２から受け取ったストリームをアンマーシャリングし、元のオブジェクトデータであるメソッドの引数に戻す（Ｓ１４０１）。アンマーシャリングとは、ストリームを元のオブジェクトデータに戻すことである。そして、プロセスのメインスレッドであるアドバンスドＵＩアプリケーション３１１に対して、メソッドの引数データを引き渡す（Ｓ１４０２）。このようにしてプリントマネージャ３０６は、別のプロセスであるアドバンスドＵＩアプリケーション３１１を起動し、データを送信している。逆にアドバンスドＵＩアプリケーション３１１から、プリントマネージャ３０６に送信するときは、ＣＯＭプロキシ８０２がＣＯＭスタブに、ＣＯＭスタブ８０３がＣＯＭプロキシになる。したがって、ＣＯＭプロキシとＣＯＭスタブは同一の機能を持った同じモジュールである。
【００２４】
アドバンスドＵＩアプリケーション３１１はアプリケーション１０５１が動作するプロセスと異なるプロセスで動作するので、インターフェースを通じて印刷設定であるプリントチケットでしか情報を伝達することができない。プリントチケットに含まれないレジストリデータベース３０８に保存されたデータは、印刷時に参照することができなくなるので、プリンター１０４２にすべてのデータを送信することができなくなってしまう。そこで、ＸＰＳ印刷システムのプロパティバッグ４１４を使用することで、レジストリデータベース３０８に保存されたデータも参照できるようにする。図１７のブロック構成図と、図１８のフローチャートで伝達方法を説明する。
【００２５】
フィルタパイプラインマネージャ４０９はアプリケーション１０５１から印刷が開始されると、印刷ジョブであるＸＰＳスプールファイル４０７を渡される（Ｓ１８０１）。また、フィルタパイプラインマネージャ４０９は、アプリケーション１０５１からどのプリンタードライバー１０５２を使用するのかを指定する機種情報も受け取る。フィルタパイプラインマネージャ４０９は、アプリケーション１０５１から受け取った機種情報を元に、レジストリデータベース３０８を検索する。レジストリデータベース３０８にはプリンタードライバー１０５２のインストール時に記載されたドライバ情報が書き込まれており、フィルタパイプラインマネージャ４０９は指定された機種情報に応じたドライバ情報を取得する。フィルタパイプラインマネージャ４０９は取得したドライバ情報の中にアドバンスドＵＩアプリケーション３１１のＣＬＳＩＤがあるかどうかを判定する（Ｓ１８０２）。ＣＬＳＩＤがなければ、フィルタを呼び出して印刷処理を行う。アドバンスドＵＩアプリケーション３１１のＣＬＳＩＤが存在するときは、フィルタパイプラインマネージャ４０９はＣＬＳＩＤとアウトプロセスサーバーで起動することを引数に指定してオペレーティングシステム１０５３のＡＰＩを呼び出す（図１６（１））。フィルタパイプラインマネージャ４０９はオペレーティングシステム１０５３のＡＰＩの中で、指定されたＣＬＳＩＤを検索キーにしてレジストリデータベース３０８を検索する。フィルタパイプラインマネージャ４０９はオペレーティングシステム１０５３のＡＰＩの中で、アドバンスドＵＩアプリケーション３１１がインストールされていれば、レジストリデータベース３０８からアドバンスドＵＩアプリケーション３１１のファイル名を含むフルパスを取得できる（Ｓ１８０３）。もし、存在しない場合はＣＬＳＩＤが存在しなかったときと同じく、フィルタを呼び出して印刷処理を行う。フルパスを取得したら、フィルタパイプラインマネージャ４０９はオペレーティングシステム１０５３のＡＰＩの中から、アドバンスドＵＩアプリケーション３１１を起動する（Ｓ１８０４）。起動されたアドバンスドＵＩアプリケーション３１１は、／ＲｅｇＳｖｒオプションがついていないので（Ｓ１５０１）、ウィンドウを作成する（Ｓ１５０３）。この時点で作成するウィンドウは表示のために作成するのではなく、メッセージループでフィルタパイプラインマネージャ４０９からの応答を待つために作成しているだけである。アドバンスドＵＩアプリケーション３１１は、アドバンスドＵＩアプリケーション３１１のインターフェースオブジェクトを作成し、インターフェースを指定してオペレーティングシステム１０５３のＡＰＩを呼び出す（Ｓ１５０４と図１６（２））。すると、フィルタパイプラインマネージャ４０９は、アドバンスドＵＩアプリケーション３１１のインターフェースを受け取ることができる（Ｓ１８０５）。インターフェースを受け取ったフィルタパイプラインマネージャ４０９は、プロパティバッグ４１４のオブジェクトを作成する。フィルタパイプラインマネージャ４０９は、作成したプロパティバッグ４１４をインターフェースの引数として、インターフェースのメソッドを呼び出す（Ｓ１８０６）。アドバンスドＵＩアプリケーション３１１はインターフェースの呼び出しを受け取り、ＵＩのイベントかどうかを判定する（Ｓ１５０５）。今回はプロパティバッグ４１４を引数としてメソッドを呼び出しているのでＵＩのイベントではないため、アドバンスドＵＩアプリケーション３１１は、レジストリから以前に保存した情報を取得する（Ｓ１５１６）。アドバンスドＵＩアプリケーション３１１は、インターフェースから引数のプロパティバッグ４１４を取得し（Ｓ１５１７）、プロパティバッグに値を追加する（Ｓ１５１８）。プロパティバッグ４１４は名前と値の組み合わせで、自由にデータを追加・削除・参照できる仕組みである。アドバンスドＵＩアプリケーション３１１は、プリンターのフィニッシャーなどのオプション機器構成や、ユーザー名やパスワードなどの個人情報、お気に入りやスタンプといったユーザーが作成する機能などをプロパティバッグ４１４に追加しておく。アドバンスドＵＩアプリケーション３１１は、プロパティバッグ４１４へ値の追加が終了すると、自身も終了する。フィルタパイプラインマネージャ４０９は、アドバンスドＵＩアプリケーション３１１がユーザーインターフェースを表示している間、終了するのを待っている（Ｓ１８０７）。アドバンスドＵＩアプリケーション３１１が終了するのが確認できたら、フィルタパイプラインマネージャ４０９は、アドバンスドＵＩアプリケーション３１１によって変更されたプロパティバッグ４１４を受け取る。そして、従来どおりフィルタを呼び出して印刷処理を行う（Ｓ１８０８）。各フィルタは、必要に応じて、プロパティバッグ４１４から情報を取得する。フィルタパイプラインマネージャ４０９は、プロパティバッグ４１４のオブジェクトは最後のフィルタがＰＤＬを出力し終わったら破棄するので、１回の印刷の間のみ有効である。このようにして、アドバンスドＵＩアプリケーション３１１の情報を、フィルタに伝達する。
【００２６】
アドバンスドＵＩアプリケーション３１１を使用した場合、サーバー２０３からクライアント２０１や２０２にプリンタードライバーをダウンロードして動作するポイントアンドプリント、いわゆる共有プリンターで動作できない。図２のようなネットワーク環境において、共有プリンターではクライアントがプリンタードライバーをサーバー２０３からダウンロードすることができる。したがって、コンフィギュレーションモジュール３０４にユーザーインターフェースが入っていれば、クライアント２０１や２０２でもユーザーインターフェースを表示できる。しかし、アドバンスドＵＩアプリケーション３１１は、プリンタードライバーとは別のものになるので、クライアント２０１や２０２にダウンロードできない。また、ＲＰＣはサーバー２０３とクライアント２０１や２０２の間を通信することも可能だが、そのままではアドバンスドＵＩアプリケーション３１１はサーバー２０３で起動してしまい、ユーザーがクライアント上でユーザーインターフェースを操作できない。そこで、アドバンスドＵＩアプリケーション３１１がインストールされている環境では、共有プリンターが利用できないようにする。以下、図１９、図２０と図２１のフローチャートを使用して、共有プリンターを禁止する仕組みを説明する。
【００２７】
オペレーティングシステム１０５３は、ユーザーからプリンタードライバー１０５２の共有タブを表示するように呼び出されると（Ｓ２１０１）、どのプリンタードライバー１０５２を使用するのかを指定する機種情報も受け取る。オペレーティングシステム１０５３は受け取った機種情報を元に、レジストリデータベース３０８を検索する。レジストリデータベース３０８にはプリンタードライバー１０５２のインストール時に記載されたドライバ情報が書き込まれており、オペレーティングシステム１０５３は指定された機種情報に応じたドライバ情報を取得する。オペレーティングシステム１０５３は取得したドライバ情報の中にアドバンスドＵＩアプリケーション３１１のＣＬＳＩＤがあるかどうかを判定する（Ｓ２１０２）。ＣＬＳＩＤが存在すれば、アドバンスドＵＩアプリケーション３１１を使用してユーザーインターフェースを表示することになるので、オペレーティングシステム１０５３は「共有はサポートされない」メッセージを配置した共有設定が指定できない共有タブを表示する（図２０）。なお、図１９の画面の共有のためのチェックボックスをグレーアウトさせて表示してもよい。ＣＬＳＩＤが存在しないときは、オペレーティングシステム１０５３は共有のためのチェックボックスを配置した共有タブを表示する（図１９）。
【００２８】
アドバンスドＵＩアプリケーション３１１を使用するとき、ＣＰＳＵＩ８０１によってプロパティシートの土台を作成しているわけではないので、自由にユーザーインターフェースを作ることができる。しかし、プロパティシートの土台といくつかのタブをオペレーティングシステム１０５３が追加した後、プリンタードライバー１０５２のコンフィギュレーションモジュール３０４がタブをさらに追加するユーザーインターフェースは作成できなくなる。たとえば、デバイス設定のユーザーインターフェースや、ジョブの設定を確認するユーザーインターフェースである。このようなユーザーインターフェースでは、アドバンスドＵＩアプリケーション３１１がユーザーインターフェースを生成できない。そこで、図２２、図２３と図２４のフローチャートを使用して、ユーザーインターフェースにボタンを表示する方法を説明する。
【００２９】
オペレーティングシステム１０５３は、ユーザーからデバイス設定やジョブの設定を確認するユーザーインターフェースを表示するように呼び出されると（Ｓ２４０１）、どのプリンタードライバー１０５２を使用するのかを指定する機種情報も受け取る。オペレーティングシステム１０５３は受け取った機種情報を元に、レジストリデータベース３０８を検索する。レジストリデータベース３０８にはプリンタードライバー１０５２のインストール時に記載されたドライバ情報が書き込まれており、オペレーティングシステム１０５３は指定された機種情報に応じたドライバ情報を取得する。オペレーティングシステム１０５３は取得したドライバ情報の中にアドバンスドＵＩアプリケーション３１１のＣＬＳＩＤがあるかどうかを判定する（Ｓ２４０２）。ＣＬＳＩＤが存在すれば、アドバンスドＵＩアプリケーション３１１のユーザーインターフェースを開くためのボタンを配置して、タブを表示する（Ｓ２４０３）。ＣＬＳＩＤが存在しなければ、プリンタードライバー１０５２のコンフィギュレーションモジュール３０４を呼び出して、タブを追加してもらうようにする（Ｓ２４０４）。図２２はジョブの設定を確認するユーザーインターフェースに、基本設定のボタンを表示して、アドバンスドＵＩアプリケーション３１１のジョブ設定のユーザーインターフェースが呼び出せるようにしている。図２３はデバイス設定のユーザーインターフェースに、デバイス設定のボタンを表示して、アドバンスドＵＩアプリケーション３１１のデバイス設定のユーザーインターフェースを呼び出せるようにしている。
【００３０】
以上のようにすることで、プリンタードライバー１０５２からアドバンスドＵＩアプリケーション３１１という形でユーザーインターフェースを切り離すことで、ユーザーインターフェースがクラッシュしても、アプリケーションを巻き込まないようにできる。また、ＣＰＳＵＩ８０１に依存しないシステムになることで、プロパティシートではない自由にユーザーインターフェースを作成することができる。また、名前付きパイプや共有メモリを使用せずにＣＯＭで異なるプロセス間の通信を行うことで、アドバンスドＵＩアプリケーション３１１にオペレーティングシステム１０５３に依存するコードを少なくすることができる。
【００３１】
［実施例２］
実施例１では、アドバンスドＵＩアプリケーション３１１はプリンタードライバー１０５２のインストールセットと別にインストールを行ったが、プリンタードライバー１０５２のインストールセットに含むこともできる。以下、アドバンスドＵＩアプリケーション３１１をプリンタードライバー１０５２のインストールセットに含んだときのプリンタードライバー１０５２のインストールを、図２５のフローと図２６を使用して説明する。
【００３２】
プリンタードライバー１０５２は図２６のセットアップインフォメーションファイル（以下、ＩＮＦファイル）に従ってオペレーティングシステム１０５３へインストールされる。ＩＮＦファイルには、実施例１で記載されていたアドバンスドＵＩアプリケーション３１１のＣＬＳＩＤに加えて、アドバンスドＵＩアプリケーション３１１のアプリケーションファイル名が記載されている。オペレーティングシステム１０５３は、プリンタードライバー１０５２のインストールが開始されると（Ｓ２５０１）、指定された機種のプリンタードライバー１０５２のインストールセットを探す。インストールセットはオペレーティングシステム１０５３に組み込まれているものを使用するが、ユーザーによって指定されるか、あらかじめ特定された配信サーバーなどから提供されることもある。オペレーティングシステム１０５３は、インストールセットに含まれるＩＮＦファイルを元にファイルをコピーし、レジストリデータベース３０８に必要なドライバ情報を書き込むことで、通常のプリンタードライバーのインストールが完了する（Ｓ２５０２）。次に、オペレーティングシステム１０５３は、プリンタードライバー１０５２のＩＮＦファイルの中にアドバンスドＵＩアプリケーション３１１のファイル名があるかどうかを判定する（Ｓ２５０３）。図２６ではＡｄｖａｎｃｅｄＵＩというキーが、アドバンスドＵＩアプリケーション３１１のファイル名に該当する。ファイル名が存在する場合は、オペレーティングシステム１０５３が引数として／ＲｅｇＳｖｒオプションをつけてアドバンスドＵＩアプリケーション３１１を起動する（Ｓ２５０４）。オペレーティングシステム１０５３は、ＩＮＦファイルの中に、アドバンスドＵＩアプリケーション３１１のＣＬＳＩＤが記載されているかどうかを確認する（Ｓ２５０５）。アドバンスドＵＩアプリケーション３１１のＣＬＳＩＤが存在すれば、オペレーティングシステム１０５３はＩＮＦファイルからＣＬＳＩＤを取得する（Ｓ２５０６）。オペレーティングシステム１０５３は、アドバンスドＵＩアプリケーション３１１のＣＬＳＩＤを、レジストリデータベース３０８にあるドライバ情報に、追加して記載しておく（Ｓ２５０７）。これで、プリンタードライバー１０５２のインストールとともに、アドバンスドＵＩアプリケーション３１１のインストールが完了する。
【００３３】
以上のように、プリンタードライバー１０５２のインストールセットにアドバンスドＵＩアプリケーション３１１を追加しておくと、ユーザーが後から別途追加することなく、プリンタードライバー１０５２をインストールするだけで、別プロセスで起動するユーザーインターフェースを使用することができる。
【００３４】
以上説明したように、本発明の実施の形態により，アプリケーションと別のプロセスでプリンタードライバーのユーザーインターフェースが起動するので、アプリケーションまで巻き込んでクラッシュすることがなくなる。また、オペレーティングシステムがベースを用意する必要がなくなるので、プリンタードライバーのユーザーインターフェースは自由にデザインやコントロールを配置することができる。また、ＵＩアプリケーションはプリンタードライバーと別にインストールすることができるので、プリンタードライバーを更新することなくユーザーインターフェースだけを変えることが可能である。また、プロセスごとにメモリ領域が別になるので、より多くのメモリ領域を使用することができ、動画や３Ｄを使用したリッチなユーザーインターフェースを作成することもできるようになる。
【符号の説明】
【００３５】
１０４２  プリンター
１０５１  アプリケーション
１０５２  プリンタードライバー
１０５３  オペレーティングシステム
２０１  クライアント
２０２  クライアント
２０３  サーバー
３０４  コンフィギュレーションモジュール
３０５  機種依存データファイル
３０６  プリントマネージャ（スプーラ）
３０８  レジストリデータベース
３１１  アドバンスドＵＩアプリケーション
４０３  ＤＥＶＭＯＤＥ構造体
４０４  プリントチケット
４０６  ＤＥＶＭＯＤＥ−プリントチケット変換モジュール
４０７  ＸＰＳスプールファイル
４０９  フィルタパイプラインマネージャ
４１４  プロパティバッグ
８０１  ＣＰＳＵＩ
８０２  ＣＯＭプロキシ
８０３  ＣＯＭスタブ
【図１】
0005972436.tif 000002
【図２】
0005972436.tif 000003
【図３】
0005972436.tif 000004
【図４】
0005972436.tif 000005
【図５】
0005972436.tif 000006
【図６】
0005972436.tif 000007
【図７】
0005972436.tif 000008
【図８】
0005972436.tif 000009
【図９】
0005972436.tif 000010
【図１０】
0005972436.tif 000011
【図１１】
0005972436.tif 000012
【図１２】
0005972436.tif 000013
【図１３】
0005972436.tif 000014
【図１４】
0005972436.tif 000015
【図１５】
0005972436.tif 000016
【図１６】
0005972436.tif 000017
【図１７】
0005972436.tif 000018
【図１８】
0005972436.tif 000019
【図１９】
0005972436.tif 000020
【図２０】
0005972436.tif 000021
【図２１】
0005972436.tif 000022
【図２２】
0005972436.tif 000023
【図２３】
0005972436.tif 000024
【図２４】
0005972436.tif 000025
【図２５】
0005972436.tif 000026
【図２６】
0005972436.tif 000027