(57)【特許請求の範囲】
【請求項１】
印刷データの出力を行う情報処理装置であって、
少なくとも前記印刷データの出力動作に関する拡張プログラムを格納した格納手段と、
ポートモニタであって、前記印刷データの出力に伴って、プリンタドライバから前記出力の処理に関する関数の呼び出し要求を受信したことに応じて、呼び出された前記関数をメッセージとして送信するとともに、前記印刷データを所定の記憶領域に記憶する印刷データ処理手段と、
前記印刷データ処理手段により送信された前記メッセージを受信すると、前記格納手段から、該メッセージに対応する拡張プログラムを特定し、特定した該拡張プログラムを実行することにより、前記所定の記憶領域に記憶された印刷データに対する処理を行う拡張プログラム実行手段と、
前記格納手段に新たな拡張プログラムを追加するとともに、該新たな拡張プログラムに対応するメッセージと含む拡張情報を、前記拡張プログラム実行手段に通知する拡張プログラム追加手段と、
を有することを特徴とする情報処理装置。
【請求項２】
メッセージと、拡張プログラムとが対応付けられた設定ファイルを記憶した記憶手段と、
を有し、
前記拡張プログラム実行手段は、前記印刷データ処理手段により送信されたメッセージを受信すると、前記設定ファイルを参照し、前記格納手段から、該メッセージに対応する拡張プログラムを特定し、特定した該拡張プログラムを実行することにより、前記所定の記憶領域に記憶された印刷データに対する処理を行い、
前記拡張プログラム実行手段は、前記拡張プログラム追加手段により、前記格納手段に新たな拡張プログラムが追加されるとともに、前記拡張情報が通知されたとき、該拡張情報に基づいて、前記設定ファイルに、新たな拡張プログラムと、該新たな拡張プログラムに対応するメッセージとを対応付けて登録すること、
を特徴とする請求項１記載の情報処理装置。
【請求項３】
前記設定ファイルは、メッセージと、複数の拡張プログラムとが対応付けられ、
前記拡張プログラム実行手段は、前記印刷データ処理手段により送信されたメッセージを受信すると、前記設定ファイルを参照し、前記格納手段から、該メッセージに対応する複数の拡張プログラムを特定し、特定した該複数の拡張プログラムを実行することにより、前記所定の記憶領域に記憶された印刷データに対する処理を行うこと、
を特徴とする請求項２記載の情報処理装置。
【請求項４】
前記設定ファイルは、メッセージと、複数の拡張プログラムとが実行される順序情報を含んで、対応付けられ、
前記拡張プログラム実行手段は、前記印刷データ処理手段により送信されたメッセージを受信すると、前記設定ファイルを参照し、前記格納手段から、該メッセージに対応する複数の拡張プログラムを特定し、特定した該複数の拡張プログラムを、前記順序情報に基づく順序で実行することにより、前記所定の記憶領域に記憶された印刷データに対する処理を行うこと、
を特徴とする請求項３記載の情報処理装置。
【請求項５】
印刷データの出力を行う情報処理装置に、
少なくとも前記印刷データの出力動作に関する拡張プログラムを格納した格納手段と、
ポートモニタであって、前記印刷データの出力に伴って、プリンタドライバから前記出力の処理に関する関数の呼び出し要求を受信したことに応じて、呼び出された前記関数をメッセージとして送信するとともに、前記印刷データを所定の記憶領域に記憶する印刷データ処理手段と、
前記印刷データ処理手段により送信された前記メッセージを受信すると、前記格納手段から、該メッセージに対応する拡張プログラムを特定し、特定した該拡張プログラムを実行することにより、所定の記憶領域に記憶された印刷データに対する処理を行う拡張プログラム実行手段と、
前記格納手段に新たな拡張プログラムを追加するとともに、該新たな拡張プログラムに対応するメッセージと含む拡張情報を、前記拡張プログラム実行手段に通知する拡張プログラム追加手段として機能させるためのプログラム。
【請求項６】
前記情報処理装置に
メッセージと、拡張プログラムとが対応付けられた設定ファイルを記憶した記憶手段として機能させ、
前記拡張プログラム実行手段は、前記印刷データ処理手段により送信されたメッセージを受信すると、前記設定ファイルを参照し、前記格納手段から、該メッセージに対応する
拡張プログラムを特定し、特定した該拡張プログラムを実行することにより、所定の記憶領域に記憶された印刷データに対する処理を行い、
前記拡張プログラム実行手段は、前記拡張プログラム追加手段により、前記格納手段に新たな拡張プログラムが追加されるとともに、前記拡張情報が通知されたとき、該拡張情報に基づいて、前記設定ファイルに、新たな拡張プログラムと、該新たな拡張プログラムに対応するメッセージとを対応付けて登録すること、
を特徴とする請求項５記載のプログラム。
【請求項７】
前記設定ファイルは、メッセージと、複数の拡張プログラムとが対応付けられ、
前記拡張プログラム実行手段は、前記印刷データ処理手段により送信されたメッセージを受信すると、前記設定ファイルを参照し、前記格納手段から、該メッセージに対応する複数の拡張プログラムを特定し、特定した該複数の拡張プログラムを実行することにより、前記所定の記憶領域に記憶された印刷データに対する処理を行うこと、
を特徴とする請求項６記載のプログラム。
【請求項８】
前記設定ファイルは、メッセージと、複数の拡張プログラムとが実行される順序情報を含んで、対応付けられ、
前記拡張プログラム実行手段は、前記印刷データ処理手段により送信されたメッセージを受信すると、前記設定ファイルを参照し、前記格納手段から、該メッセージに対応する複数の拡張プログラムを特定し、特定した該複数の拡張プログラムを、前記順序情報に基づく順序で実行することにより、前記所定の記憶領域に記憶された印刷データに対する処理を行うこと、
を特徴とする請求項７記載のプログラム。
【請求項９】
請求項５ないし８の何れか一項記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、プログラム及び記録媒体の分野に関する。
【背景技術】
【０００２】
ＰＣ（Personal Computer）上、プリンタドライバを用いた印刷処理において、プリンタドライバがアプリケーション等のデータをプリンタの処理可能なプリンタ言語データへと変換すると、ポートモニタを介し、ネットワークへ出力される。ポートモニタは、通常の場合、ＯＳ（Operating System）に標準装備され、例えば、ＩＥＥＥ１２８４（パラレルポート）、ＩＥＥＥ１３９４（シリアルポート）、ＴＣＰ／ＩＰ（ＬＡＮポート）などを通じて、プリンタにその命令を渡す一つのｄｌｌファイルとして実装される。
【０００３】
ここで、例えば、上述したようなＯＳ標準の通信方法以外の通信方法（例えば、他の通信ポートでの通信、ＨＴＴＰＳでの通信や独自プロトコル）を通じてデータを出力したい場合、ＯＳ標準のポートモニタは対応できないことから、ポートモニタそのものに独自の処理を実装する必要がある（例えば、特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ポートモニタは、インストール処理、アンインストール処理が複雑なプログラムであるため、独自の処理を実装したポートモニタを適用する場合、その処理が煩雑になってしまうという傾向がある。そのため、ユーザは、機能拡張などに伴って独自処理が実装されたポートモニタをインストールしたり、ロジックの追加やバグフィックスなどに伴ってポートモニタをアップデートする場合、ＰＣに対し、煩雑なインストール作業やバージョンアップ作業（例えば、レジストリ操作等）を行わなければならないという問題があった。
【０００５】
本発明では上記のような問題に鑑みて、ポートモニタに独自の処理を実装する場合、開発者側の実装作業及び利用者側のインストール作業の簡素化を実現する情報処理装置、プログラム及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明に係る情報処理装置は、印刷データの出力を行う情報処理装置であって、少なくとも前記印刷データの出力動作に関する拡張プログラムを格納した格納手段と、前記印刷データの出力に伴って、前記出力に関するメッセージを送信するとともに前記印刷データを所定の記憶領域に記憶する印刷データ処理手段と、前記印刷データ処理手段により送信されたメッセージを受信すると、前記格納手段から、該メッセージに対応する拡張プログラムを特定し、特定した該拡張プログラムを実行することにより、前記所定の記憶領域に記憶された印刷データに対する処理を行う拡張プログラム実行手段と、前記格納手段に新たな拡張プログラムを追加するとともに、該新たな拡張プログラムに対応するメッセージと含む拡張情報を、前記拡張プログラム実行手段に通知する拡張プログラム追加手段とを有する。
【０００７】
また、上記課題を解決するため、本発明に係るプログラムは、印刷データの出力を行う情報処理装置に、少なくとも前記印刷データの出力動作に関する拡張プログラムを格納した格納手段と、前記印刷データの出力に伴って、前記出力に関するメッセージを送信するとともに前記印刷データを所定の記憶領域に記憶する印刷データ処理手段と、前記印刷データ処理手段により送信されたメッセージを受信すると、前記格納手段から、該メッセージに対応する拡張プログラムを特定し、特定した該拡張プログラムを実行することにより、所定の記憶領域に記憶された印刷データに対する処理を行う拡張プログラム実行手段と、前記格納手段に新たな拡張プログラムを追加するとともに、該新たな拡張プログラムに対応するメッセージと含む拡張情報を、前記拡張プログラム実行手段に通知する拡張プログラム追加手段として機能させる。
【０００８】
また、上記課題を解決するため、本発明に係る記録媒体は、前記プログラムを記録したコンピュータ読み取り可能な記録媒体である。
【０００９】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、などに適用したものも本発明の態様として有効である。
【発明の効果】
【００１０】
本発明によれば、ポートモニタに独自の処理を実装する場合、開発者側の実装作業及び利用者側のインストール作業の簡素化を実現する情報処理装置、プログラム及び記録媒体を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態に係るプリンタシステム１００のネットワーク構成図を示す。
【図２】本実施形態に係るＰＣ１の一実施形態の主要構成を示すハードウェア構成図である。
【図３】従来例に係るＰＣ１の機能ブロック図の一例を示す。
【図４】本実施形態に係るＰＣ１の機能ブロック図の一例を示す。
【図５】本実施形態に係る所定ファイル一式及び拡張プログラムのインストール説明図である。
【図６】本実施形態に係るポートモニタ１０５及び常駐プログラム１０６間の動作説明図である。
【図７】本実施形態に係る常駐プログラム１０６と拡張プログラム間の動作説明図である。
【図８】本実施形態に係る拡張プログラムの動作説明図である。
【図９】ＰＣ１における情報処理を説明するシーケンス図である。
【図１０】他の実施例に係る動作説明図である。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態を各実施形態において図面を用いて説明する。
【００１３】
[システム構成]
（ネットワーク構成）
図１は、本実施形態に係るプリンタシステム１００のネットワーク構成図を示す。本実施形態に係るプリンタシステム１００は、ＰＣ１、プリンタ２、クラウドストレージ３を含む。
【００１４】
ＰＣ１は、ユーザの利用するクライアント端末である。例えば、ＰＣ１は、ユーザ操作に従って、パラレル、シリアル、又はＬＡＮを含むネットワークを介し、プリンタに対し、印刷データを送信することで、印刷データを印刷できる。また、本実施形態において、ＰＣ１は、ユーザ操作に従って、ネットワークを介し、クラウド上に設けられたクラウドストレージ３に、印刷データをアップロードする。なお、ＰＣ１は、あくまで情報処理装置の一例であるため、例えば、近年の普及が著しいスマートデバイス、携帯電話など、携帯性に優れた情報処理装置であってもよい。
【００１５】
プリンタ２は、ネットワークを介し、ＰＣ１からの印刷データを受信し、その印刷データを用紙に印刷する。また、プリンタ２は、印刷装置の一例であって、コピー、スキャナ、プリンタ、ファックス、さらに文書蓄積機能などの複数の機能を一つの筐体内に収納した画像形成装置（MFP：Multi-Function Peripheral）等によっても実現されうる。
【００１６】
クラウドストレージ３は、例えば、インターネット上に設けられ、クラウドプリンティング・サービスの提供者によって管理・運営される記憶装置である。クラウドストレージ３には、長期間、データを保存しておくことができ、ユーザは、好きなときにいつでもデータを取り出したり、写真に印刷したりできる。
【００１７】
ここで、本実施形態において、ＰＣ１は、プリンタ２で印刷データを印刷する場合、併せて（同時に）、その印刷データを保存しておきたいという要望に基づいて、インターネット上のクラウドストレージ３にその印刷データをアップロードし、保存しておくという運用を実施する。
【００１８】
但し、ＯＳ標準のポートモニタでは、プリンタ２で印刷データを印刷すると同時に、クラウドストレージ３に印刷データをアップロードできない。このため、本実施形態において、ＰＣ１は、後述する新たなポートモニタ、常駐プログラム、拡張プログラム等々をＰＣ１にインストールすることにより、プリンタ２で印刷データを印刷すると同時に、クラウドストレージ３に対する印刷データのアップロードを実現する（詳細後述）。
【００１９】
また、クラウドプリンティング・サービス側の都合により、クラウド上のストレージに対するＡＰＩ仕様の変更が実施された場合には、ＰＣ１は、ＡＰＩ仕様対応の拡張プログラムだけをＰＣ１にアップデートすることにより、引き続き、ＡＰＩ仕様の変更後も、プリンタ２で印刷データを印刷すると同時に、クラウドストレージ３に対する印刷データのアップロードを実現しうる（詳細後述）。
【００２０】
なお、ＯＳのポートモニタによって実現すべく、このような独自の処理をＯＳのポートモニタに実装したとすると、上述したように、ユーザは、ＰＣ１に対し、その独自の処理が実装されたポートモニタの煩雑なインストール作業を行わなければならない。また、クラウド上のストレージに対するＡＰＩ仕様の変更が実施された場合、このようなＡＰＩ仕様の変更をＯＳのポートモニタにさらに実装させたとすると、ユーザは、あらためて、その度、ＰＣ１に対し、そのポートモニタの煩雑なバージョンアップ作業を行わなければならないという問題がある。
【００２１】
（ハードウェア）
図２は、本実施形態に係るＰＣ１の一実施形態の主要構成を示すハードウェア構成図である。ＰＣ１は、主要な構成として、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、ＨＤＤ１４、記憶媒体読取装置１５、入力装置１６、表示装置１７、及び通信装置１８を含む構成である。
【００２２】
ＣＰＵ１１は、マイクロプロセッサ及びその周辺回路から構成され、装置全体を制御する回路である。また、ＲＯＭ１２は、ＣＰＵ１１で実行される所定の制御プログラムを格納するメモリであり、ＲＡＭ１３は、ＣＰＵ１１がＲＯＭ１２に格納された所定の制御プログラムを実行して各種の制御を行うときの作業領域として使用するメモリである。ＨＤＤ１４は、汎用のＯＳ、各種プログラムを含む各種情報を格納する装置であり、不揮発性の記憶装置である。記憶媒体読取装置１５は、ＣＤやＤＶＤ、ＵＳＢメモリ等の外部記憶媒体から情報を入力する装置である。
【００２３】
入力装置１６は、ユーザが各種入力操作を行うための装置である。入力装置１６は、マウス、キーボード、表示装置１７の表示画面上に重畳するように設けられたタッチパネルスイッチなどを含む。表示装置１７は、各種データを表示画面に表示する装置である。例えばＬＣＤ(Liquid Crystal Display)、ＣＲＴ(Cathode Ray Tube)などから構成される。通信装置１８は、ネットワークを介して他の機器との通信を行う装置である。有線ネットワークや無線ネットワークなど含む各種ネットワーク形態に応じた通信をサポートする。
【００２４】
（機能）
次に、本実施形態に係るＰＣ１の主要機能構成について説明するが、その前に、従来例に係るＰＣ１の主要機能構成について説明する。
【００２５】
図３は、従来例に係るＰＣ１の機能ブロック図の一例を示す。図に示されるように、本実施形態に係るＰＣ１は、アプリケーション１０１、ＯＳ１０２、プリンタドライバ１０３、ＯＳのポートモニタ１０４を含む。
【００２６】
アプリケーション１０１は、文書作成・閲覧ソフト、画像描画・閲覧ソフトなどにより実現され、ＯＳ１０２に対して、印刷指示や、印刷データの送信を行う。
【００２７】
ＯＳ１０２は、ＰＣ１に搭載されるＯＳである。図例のものは、例えばＷｉｎｄｏｗｓ（登録商標）を適用したときの実施形態を示す。
【００２８】
プリンタドライバ１０３は、ＯＳ１０２から印刷指示、印刷データを受け取り、プリンタが解釈可能な印刷データを生成する。例えば、このプリンタドライバ１０３は、プリンタ２の製造元によって提供され、ＰＣ１に予めインストールされる。
【００２９】
ＯＳのポートモニタ１０４は、ＯＳ１０２に標準装備され、例えば、ＩＥＥＥ１２８４（パラレルポート）、ＩＥＥＥ１３９４（シリアルポート）、ＴＣＰ／ＩＰ（ＬＡＮポート）、ＵＳＢ、Ｂｌｕｅｔｏｏｔｈ（登録商標）などの通信手段により、通信制御を行い、目的のハードウェア（プリンタ等）へデータを送信するためのプログラムである。プリンタドライバ１０３が処理した印刷データは、ポートモニタ１０４を介し、プリンタへ送信される。
【００３０】
なお、プリンタドライバ１０３のインストール及び設定に際しては、プリンタドライバ１０３のプログラム以外に、必要に応じて関連するファイルのインストールが行なわれる。ここで、プリンタに関連するファイルは、例えば、ポートモニタも含まれうる。ポートモニタは、ＯＳ標準のものもあるが、プリンタの製造元がプリンタドライバと共に提供していることも多い。よって、ポートモニタ１０４は、ＯＳ１０２に標準装備されるもののほか、プリンタドライバ１０３のインストール時に併せてインストールされるポートモニタであってもよい。但し、この場合でも、製造元から提供されたポートモニタ１０４は、ＯＳ１０２に標準装備されるのと同等の通信手段（例えば、上述のＩＥＥＥ１２８４やＩＥＥＥ１３９４等々）により、通信制御を行うものである。
【００３１】
また、製造元から提供されたポートモニタに、上述のような独自の処理をポートモニタに実装した場合であっても、ユーザは、ＰＣ１に対し、その独自の処理された製造元提供のポートモニタをＰＣ１にインストールするにあたり、煩雑なインストール作業を行わなければならない。また、クラウド上のストレージに対するＡＰＩ仕様の変更が実施された場合、製造元は、このようなＡＰＩ仕様の変更を、製造元提供のポートモニタに実装（反映）しなくてはならない。またこのとき、ユーザは、その度に、ＰＣ１に対し、そのポートモニタの煩雑なバージョンアップ作業を行わなければならない。
【００３２】
次に、本実施形態に係るＰＣ１の主要機能構成について説明する。図４は、本実施形態に係るＰＣ１の機能ブロック図の一例を示す。図に示されるように、本実施形態に係るＰＣ１は、アプリケーション１０１、ＯＳ１０２、プリンタドライバ１０３、ＯＳのポートモニタ１０４に加え、さらに、ポートモニタ１０５、常駐プログラム１０６、拡張プログラム格納部１０７、印刷データ格納部１０８を含む。
【００３３】
ここで、本実施形態に係るポートモニタ１０５、常駐プログラム１０６、拡張プログラム格納部１０７、印刷データ格納部１０８は、所定ファイル一式に含まれ、この所定ファイル一式を、ＰＣ１にインストールすることにより、ＰＣ１に実装される。
【００３４】
ＰＣ１のユーザ（利用者）は、所定ファイル一式を、例えば、プリンタの製造元のウェブサイトからダウンロードしてインストールしたり、又は、配布されたＣＤやＤＶＤなどの記録媒体からインストールする。所定ファイル一式は、プリンタの製造元から提供される場合、プリンタドライバ１０３に付随して、プリンタに関連するファイルとして提供されうる。
【００３５】
本実施形態に係るポートモニタ１０５は、例えば、プリンタの製造元等によって提供され、ＰＣ１にインストールされるため、少なくとも、１回は、ＰＣ１に対し、このポートモニタのインストール作業を行う必要がある。但し、後述するように、１回インストールされた以降は、ポートモニタの機能拡張に伴っても、再度ポートモニタ１０５をインストールする必要はない。
【００３６】
というもの、このポートモニタ１０５は、ＯＳのポートモニタ１０４とは異なり、ＰＣからプリンタなどのハードウェアにデータを転送する通信処理は行わない。本実施形態において、通信処理は、ポートモニタに代わって、常駐プログラム１０６の指示により、拡張プログラムで行われる。
【００３７】
通常、ポートモニタは、関数群から形成されたライブラリである。ライブラリのため、呼び出し側（ＯＳ１０２やプリンタドライバ１０３）からの要求に基づき、所定の処理を行う。ポートモニタの関数群は、それぞれ印刷処理で必要な処理で形成されており、必要に応じてＯＳ経由で呼び出しが行われる。
【００３８】
本実施形態に係るポートモニタ１０５（印刷データ処理手段）は、これら関数の呼び出しがなされたとき、関数を自ら実行し印刷データの通信処理を行う代わりに、常駐プログラムに対してメッセージを送信する。但し必要最低限のポートモニタとして行わなければならない処理を行う。一方、メッセージを受信した常駐プログラム１０６は、受信したメッセージに応じた拡張プログラムを呼び出す。
【００３９】
常駐プログラム１０６（拡張プログラム実行手段）は、ポートモニタ１０５とメッセージを受信すると、拡張プログラムを実行することで、ポートモニタ１０５の行うべき印刷データの通信処理を代行する。常駐プログラム１０６は、予め設定ファイルを有し、設定ファイルとポートモニタ１０５からのメッセージとに基づいて、通信処理を行わせるべき拡張プログラムを特定する。常駐プログラム１０６は、特定した拡張プログラムに対し、メッセージを送信することで、本実施形態おける通信処理は、その拡張プログラムで行われる。
【００４０】
拡張プログラム格納部１０７（格納手段）は、印刷データの出力動作を含む拡張プログラムが一以上格納される。拡張プログラム格納部１０７には、プリンタの製造元や、クラウドプリンティング・サービスの提供者などから提供された拡張プログラムが追加的にインストールされうる。
【００４１】
印刷データ格納部１０８は、ポートモニタ１０５が、プリンタドライバ１０３から受け取った印刷データを一時的に格納する。ＰＣ１の補助記憶装置１４（ＨＤＤ等）により実現できる。
【００４２】
以上、ＰＣ１の主要機能構成である。これらの機能は、実際には装置のＣＰＵ１１が実行するプログラムによりコンピュータに実現させるものである。
【００４３】
なお、通常、ＯＳのポートモニタ１０４は、アンインストール（削除）できないため、ポートモニタ１０５をインストール（追加）した後、形式上であっても、ＯＳのポートモニタ１０４はそのまま残しておくこととする。
【００４４】
[インストール]
図５は、本実施形態に係る所定ファイル一式及び拡張プログラムのインストール説明図である。上述したように、本実施形態に係るポートモニタ１０５、常駐プログラム１０６、拡張プログラム格納部１０７、印刷データ格納部１０８は、所定ファイル一式に含まれ、この所定ファイル一式を、ＰＣ１にインストールすることにより、ＰＣ１に実装される。
【００４５】
また、本実施形態に係る拡張プログラムは、所定ファイル一式がインストールされた後に、インストーラがインストールすることにより、ＰＣ１に実装される。例えば、ユーザは、ＰＣ１に対し、クラウドプリンティング・サービスのウェブサイトから、拡張プログラム格納部１０７に格納される拡張プログラム（インストーラ含む）をダウンロードしてインストールする。つまり、所定ファイル一式のインストールにより、ＰＣ１に一旦、ポートモニタ１０５、常駐プログラム１０６、拡張プログラム格納部１０７、印刷データ格納部１０８が実装された後、ＰＣ１に対し、個々の拡張プログラムを随時インストールできる。
【００４６】
図に示されるように、ポートモニタ１０５自体は、ＯＳで仕様が決められたプログラムのため、通常のＯＳ操作によって、インストールすることができる。即ち、ポートモニタ１０５のポートモニタプログラムは、ユーザのＯＳ操作によって、インストールが実行され、ＯＳで決められたＳｙｓｔｅｍファイル格納場所にインストールされる。
【００４７】
一方、拡張プログラムは、ＯＳで仕様が決められたプログラムでないために、別途、拡張プログラムをインストールするためのインストールプログラムであるインストーラ（拡張プログラム追加手段）により、インストールを実行する。インストーラは、拡張プログラムを、ポートモニタ１０５が独自管理している拡張プログラム格納場所（拡張プログラム格納部１０７）にファイルをインストールする。
【００４８】
また、拡張プログラムは、拡張プログラム自体に加え、拡張情報が含まれており、インストーラは、拡張情報に基づいて設定ファイルを更新する。具体的に、拡張情報には、拡張プログラム名、対応する関数（メッセージ）など、設定ファイルに登録に必要な情報が記述されている。インストーラは、拡張プログラムをインストールしたときに、併せて、この拡張情報に基づき、インストールした拡張プログラムに対応する関数と、対応する拡張プログラム（複数可）とを、順序情報を含めて、設定ファイルに登録する（詳細後述）。常駐プログラム１０６は、設定ファイルを参照して動作するため、インストーラが拡張情報を設定ファイルに反映させることにより、設定ファイルが更新され、ポートモニタ１０５からのメッセージに応じて、起動すべき拡張プログラムを特定することができる。
【００４９】
以上、ＰＣ１に対し、例えば、所定ファイル一式、及び拡張プログラム（例えば、「Program1.dll」〜「Program4.dll」）がインストールされることにより、図４の機能が実現される。
【００５０】
[動作概要]
まず、動作概要を説明する。
【００５１】
（ポートモニタ１０５と常駐プログラム１０６）
図６は、本実施形態に係るポートモニタ１０５及び常駐プログラム１０６間の動作説明図である。ポートモニタは、図のような関数群から形成されたライブラリである。例えば、ＳｔａｒｔＤｏｃＰｏｒｔ（）は、文書の印刷を開始するときに呼び出される。ＥｎｄＤｏｃＰｏｒｔ（）は、文書の印刷を終了するときに呼び出される。ＷｒｉｔｅＰｏｒｔ（）は、印刷データを書き込むときに呼び出される関数である。
【００５２】
ポートモニタは、呼び出し側（ＯＳ１０２やプリンタドライバ１０３）からの要求に基づき、所定の処理を行う。ポートモニタの関数群は、それぞれ印刷処理で必要な処理で形成されており、必要に応じて、ＯＳ１０２経由で呼び出しが行われる。しかしながら、本実施形態に係るポートモニタ１０５は、ＯＳのポートモニタ１０４のように、ＰＣからプリンタなどのハードウェアにデータを転送する通信処理は行わない。
【００５３】
即ち、本実施形態に係るポートモニタ１０５は、呼び出し側からこれら関数が呼び出されると、常駐プログラム１０６に対し、呼び出された関数をメッセージとして送信（転送）する。また、ポートモニタ１０５は、必要最低限のポートモニタとして行わなければならない処理を行う。
【００５４】
なお、ポートモニタ１０５は、プリンタドライバ１０３から印刷データを受信するので、受信した印刷データに対し、固有のファイル名を付してから、印刷データ格納部１０８へ格納しておく。ファイル名固有部分の文字列情報は、例えば、ＯＳ１０２のシステムタイマーの数値や、ランダムな数値など、特に一致する確率が極めて低い数字を生成して利用することができる。
【００５５】
（常駐プログラム１０６と拡張プログラム）
図７は、本実施形態に係る常駐プログラム１０６と拡張プログラム間の動作説明図である。常駐プログラム１０６は、ポートモニタ１０５からのメッセージを受信すると、設定ファイルに基づいて、そのメッセージに応じた拡張プログラムを呼び出して実行する。
【００５６】
図に示されるように、常駐プログラム１０６は、設定ファイルを有する。設定ファイルは、上述したように、拡張プログラムがインストールされる度に、新たにインストールされた拡張プログラムに関する記述が追加更新される。
【００５７】
具体的に、設定ファイルには、例えば、ポートモニタ１０５からのメッセージ（名）と、各メッセージ（名）に対応して呼び出すべき拡張プログラム（名）との組み合わせで記述される。また、２以上の拡張プログラムを呼び出す場合は、「,」（カンマ）区切りで、拡張プログラムが順番に並べられて記述される。
【００５８】
具体的に、図例の設定ファイルの場合、メッセージ「StartDocPort」（関数）に対応する処理は、「Program1.dll」により実現される処理である。また、同様に、「WritePort」に対応する処理は、「Program2.dll」及び「Program3.dll」により実現され、「EndPort」に対応する処理は、「Program4.dll」により実現される処理である。
【００５９】
従って、この場合、常駐プログラム１０６は、例えば、ポートモニタ１０５からのメッセージ「StartDocPort」を受信すると、設定ファイルに基づいて、そのメッセージに応じた拡張プログラム「Program1.dll」を特定し、これら拡張プログラムの呼び出しを行う。併せて、常駐プログラム１０６は、その拡張プログラムに対し、ポートモニタ１０５から送信されたメッセージ、印刷データ格納部１０８に格納された印刷データのファイル名をそのまま渡す。
【００６０】
（拡張プログラム）
図８は、本実施形態に係る拡張プログラムの動作説明図である。本実施形態に係る常駐プログラム１０６は、受信したメッセージを上述の設定ファイルを参照し、特定された拡張プログラム（メッセージ関数に応じて、例えば、「Program1.dll」〜「Program4.dll」）を呼び出す。併せて、拡張プログラムに対し、ポートモニタ１０５から送信されたメッセージ、印刷データ格納部１０８に格納された印刷データのファイル名をそのまま渡す。印刷データは、拡張プログラムにより出力されるためである。
【００６１】
なお、常駐プログラム１０６側では、メッセージの解析などは一切行わない。これは、機能や、メッセージが追加されても、常駐プログラムに可能な限り変更が入らないようにするためである。
【００６２】
ここで、上述の如く、本実施形態において、ＰＣ１は、プリンタ２で印刷データを印刷する場合、併せて（同時に）、その印刷データを保存しておきたいという要望に基づいて、インターネット上のクラウドストレージ３にその印刷データをアップロードし、保存しておくという運用を実施する。
【００６３】
このため、拡張プログラムは、常駐プログラム１０６から渡された印刷データのファイル名を参照して、印刷データのファイルを取得する。そして、例えば、クラウド上のクラウドストレージ３にアクセスするためのＡＰＩを用い、クラウドストレージ３に対して、当該ファイルをアップロードする。また、プリンタ２に対して、当該ファイルを出力する。
【００６４】
なお、本実施形態を適用しない場合、例えば製造元の開発者は、ＯＳのポートモニタ１０４（又は製造元提供のポートモニタ）に対して、クラウド上のクラウドストレージ３及びプリンタ２に対し、ファイル（印刷データ）をアップロードする処理を実装する必要がある。そして、この場合、ユーザは、ＯＳのポートモニタ１０４を一旦削除したうえ、上述の処理を実装させた新たなポートモニタ１０４（又は製造元提供のポートモニタ）をインストールする作業が必要である。
【００６５】
そしてまた、クラウドプリンティング・サービス側の都合上、クラウドストレージ３に対するＡＰＩ仕様の変更などにより、頻繁に処理が変わる場合には、例えば製造元の開発者は、再び、ＯＳのポートモニタ１０４（又は製造元提供のポートモニタ）に対して、クラウド上のクラウドストレージ３及びプリンタ２に対し、ファイル（印刷データ）をアップロードする処理を実装する必要がある。そして、この場合、ユーザは、何度も煩雑な処理でポートモニタ１０４を削除及びアップデート作業を繰り返さなければならない。
【００６６】
一方、本実施形態を適用すれば、例えば製造元の開発者は、本実施形態に係るポートモニタ１０５を開発し、ユーザは、本実施形態に係るポートモニタ１０５をインストールする作業が１回は必要である。しかしながら、それ以降は、クラウド上のクラウドストレージ３に対するＡＰＩ仕様の変更などが発生した場合であっても、開発者は、ＡＰＩ仕様に対応した拡張プログラムのみを開発（改良）すればよい。また、ユーザは、ＰＣ１上、その拡張プログラムのみをアップデートすればよい。即ち、開発者及びユーザは、拡張プログラムのみを差し替えれば（又は追加すれば）、クラウドストレージ３にアクセスするためのＡＰＩ仕様の変更などに追従することができる。
【００６７】
このように、開発者サイドからすると、拡張プログラムのみを開発する作業（例えば、ＡＰＩ対応）は、ＯＳのポートモニタの開発作業に比べ、容易である。また、ユーザサイドからすると、ＰＣ１上、拡張プログラムのみを差し替え作業は、ポートモニタ自体のアップデート作業に比べ、容易である。
【００６８】
また、例えば、クラウド上のクラウドストレージ３に対するアップロードは、本来ポートモニタが行う機能であるにも関わらず、ポートモニタ自体への実装作業及びアップデートは不要である。このため、ユーザも、ポートモニタのアップデートに伴う煩雑なアップデート作業は不要である。
【００６９】
以上のように、本実施形態においては、本来ポートモニタが行うべき処理を、メッセージ通信によって、別の拡張プログラムに代行処理させる。このため、ＡＰＩ仕様変更など、ポートモニタが行うべき処理に変更が生じた場合であっても、バージョンアップが煩雑なポートモニタを更新することなく、拡張プログラムの更新のみという容易な作業により、対応することが可能となる。
【００７０】
[情報処理]
以下、本実施形態に係るＰＣ１における情報処理・動作を説明する。図９は、ＰＣ１における情報処理を説明するシーケンス図である。図に示されるように、ＰＣ１の情報処理は、アプリケーション１０１、ＯＳ１０２、プリンタドライバ１０３、ポートモニタ１０５、常駐プログラム１０６、拡張プログラム間の動作により実現される。以下、図に沿って説明する。
【００７１】
Ｓ１：アプリケーション１０１は、ユーザからの印刷操作を受けて、ＯＳ１０２に対し、印刷指示を送信する。
【００７２】
Ｓ２：ＯＳ１０２は、印刷指示を受信すると、プリンタドライバ１０３及びポートモニタ１０５に対し、印刷指示を送信する。これは後にＯＳ１０２から印刷データが送信されるので、準備を促す為の指示である。
【００７３】
Ｓ３：ポートモニタ１０５は、常駐プログラム１０６に対し、印刷指示に対応するメッセージを送信する。ここでは、例えば、メッセージ「StartDocPort」が送信される。
【００７４】
Ｓ４：常駐プログラム１０６は、設定ファイルを参照し、メッセージに対応する拡張プログラム（名）を特定する。ここで、設定ファイル（例えば、図７）を参照すると、メッセージ「StartDocPort」に対応する拡張プログラムは、「Program1.dll」である。
【００７５】
Ｓ５：常駐プログラム１０６は、特定した拡張プログラムを呼び出して、特定した拡張プログラム（名）に対し、メッセージを送信するとともに、拡張プログラムの実行を指示する。ここで、常駐プログラム１０６は、拡張プログラム「Program1.dll」に対し、メッセージ「StartDocPort」を送信するとともに、同拡張プログラムの実行を指示する。
【００７６】
Ｓ６：拡張プログラムは、メッセージを受信すると、メッセージに従って、処理を実行する。ここでは、拡張プログラム「Program1.dll」が実行される。
【００７７】
Ｓ７：次に、アプリケーション１０１は、ＯＳ１０２に対し、印刷対象のデータを送信する。
【００７８】
Ｓ８：ＯＳ１０２は、印刷対象のデータを受信すると、プリンタドライバ１０３に対し、印刷対象のデータを送信する。
【００７９】
Ｓ９：プリンタドライバ１０３は、プリンタが解釈可能な印刷データを生成する。また、これをＯＳ１０２に返送する。
【００８０】
Ｓ１０：ＯＳ１０２は、印刷データを受信すると、ポートモニタ１０５に対し、印刷データを送信する。
【００８１】
Ｓ１１：ポートモニタ１０５は、印刷データを受信すると、印刷データに固有のファイル名（例えば、file0001.prn）を付してから、印刷データ格納部１０８（例えば、c:\temp）に、その印刷データ（例えば、c:\temp\file0001.prn）を格納する。
【００８２】
Ｓ１２：ポートモニタ１０５は、常駐プログラム１０６に対し、印刷データ受信に対応するメッセージを送信する。ここでは、例えば、メッセージ「WritePort」が送信される。
【００８３】
Ｓ１３：常駐プログラム１０６は、設定ファイルを参照し、メッセージに対応する拡張プログラム（名）を特定する。ここで、設定ファイル（例えば、図７）を参照すると、メッセージ「WritePort」に対応する拡張プログラムは、「Program2.dll」及び「Program3.dll」である。
【００８４】
Ｓ１４：常駐プログラム１０６は、特定した拡張プログラムを呼び出して、特定した拡張プログラム（名）に対し、メッセージを送信するとともに、拡張プログラムの実行を指示する。ここで、常駐プログラム１０６は、拡張プログラム「Program2.dll」及び「Program3.dll」に対し、順番にメッセージ「WritePort」を送信するとともに、同拡張プログラムの実行を指示する。なお、常駐プログラム１０６は、複数の拡張プログラムを呼び出す場合、設定ファイル記述の順番に従い、順次メッセージ「WritePort」を送信することもできる。また、１番目の拡張プログラムの処理結果を、２番目の拡張プログラムが使用する場合、まず１番目の拡張プログラムにメッセージ「WritePort」を送信し、１番目の拡張プログラムの処理結果を得てから、その処理結果とともに、２番目の拡張プログラムにメッセージ「WritePort」を送信するよう実装することもできる。
【００８５】
Ｓ１５：拡張プログラムは、メッセージを受信すると、メッセージに従って、処理を実行する。ここでは、拡張プログラム「Program2.dll」及び「Program3.dll」が実行される。
【００８６】
Ｓ１６：最後に、アプリケーション１０１は、ＯＳ１０２に対し、印刷完了（アプリケーション１０１としての印刷完了宣言）を送信する。
【００８７】
Ｓ１７：ＯＳ１０２は、印刷指示を受信すると、プリンタドライバ１０３及びポートモニタ１０５に対し、印刷完了を送信する。
【００８８】
Ｓ１８：ポートモニタ１０５は、常駐プログラム１０６に対し、印刷完了に対応するメッセージを送信する。ここでは、例えば、メッセージ「EndDocPort」が送信される。
【００８９】
Ｓ１９：常駐プログラム１０６は、設定ファイルを参照し、メッセージに対応する拡張プログラム（名）を特定する。ここで、設定ファイル（例えば、図７）を参照すると、メッセージ「EndDocPort」に対応する拡張プログラムは、「Program4.dll」である。
【００９０】
Ｓ２０：常駐プログラム１０６は、特定した拡張プログラムを呼び出して、特定した拡張プログラム（名）に対し、メッセージ（及びファイル格納先及びファイル名）を送信するとともに、拡張プログラムの実行を指示する。ここで、常駐プログラム１０６は、拡張プログラム「Program4.dll」に対し、メッセージ「EndDocPort」を、ファイル格納先及びファイル名（例えば、c:\temp\file0001.prn）とともに、送信する。
【００９１】
Ｓ２１：拡張プログラムは、メッセージを受信すると、メッセージに従って、処理を実行する。ここでは、印刷データ格納部１０８（例えば、c:\temp）に格納される印刷データ（file0001.prn）が、拡張プログラム「Program4.dll」によって実行される。
【００９２】
ここで、「Program1.dll」、「Program2.dll」、「Program3.dll」、「Program4.dll」は、プリンタ２に印刷データを出力するとともに、クラウドストレージ３に対しアップロードするためにインストールされた拡張プログラムである。これにより、印刷データ（file0001.prn）は、ＰＣ１から、プリンタ２に出力されるとともに、クラウドストレージ３に対しアップロードされる。なお、ＰＣ１のアプリケーション１０１、ＯＳ１０２、プリンタドライバ１０３からは、通常の出力と異なることなく、ポートモニタ１０５を介して、印刷データを出力しているように見える（実質的には、これら拡張プログラムによる）。
【００９３】
以上のように、本実施形態においては、ポートモニタ１０５は、本来ポートモニタが行うべき処理を、メッセージ通信によって、別の拡張プログラムに代行処理させる。このため、ＡＰＩ仕様変更など、ポートモニタが行うべき処理に変更が生じた場合であっても、バージョンアップが煩雑なポートモニタを更新することなく、拡張プログラムの更新のみという容易な作業により、対応することが可能となる。
【００９４】
[他の実施例]
次に、他の実施例について説明する。他の実施例においても、ポートモニタは、自身が直接、拡張された処理を行わないという特徴を活かした印刷処理例を示す。
【００９５】
ポートモニタは、印刷処理の過程で動作するライブラリであり、ＯＳの制御下にある。このため、通常のアプリケーションと比較して、セキュリティの観点から出来ることが限定されている。その代表的な機能が「ＧＵＩを表示する」という機能である。この制限は、ポートモニタだけではなく、プリンタドライバ（及び言語モニタ）でも同様である。
【００９６】
一般的に、Ｗｉｎｄｏｗｓ（登録商標）のＯＳでは、印刷中に動作する各プログラム（プリンタドライバ（言語モニタ）、ポートモニタ等）は、ＧＵＩを処理途中で表示することはできない。
【００９７】
但し、例外な場合に限り、ＧＵＩを表示することが許されるが、実装としては、セキュリティ回避や、ＯＳによっては動作しない非同期によるＧＵＩ表示方法など、様々な問題があり、複数種類のＯＳで、同じ方法を用いて安定的にＧＵＩ表示を伴うことは困難であるのが現実である。ここでは、このような状況に鑑み、通常では困難なＧＵＩ表示を伴う印刷処理を実現する。
【００９８】
図１０は、他の実施例に係る動作説明図である。本図は、上述の図６〜８をまとめた図となっている。また、拡張プログラム格納部１０７において、さらに新たな拡張プログラム５がインストールされている。またこれに伴い、常駐プログラム１０６が参照する設定ファイルにおいて、「WritePort= Program5.dll,Program2.dll,Program3.dll」と記述されている。
【００９９】
上述の例では、ＰＣ１は、プリンタ２で印刷データを印刷する場合、併せて（同時に）、その印刷データを保存しておきたいという要望に基づいて、インターネット上のクラウドストレージ３にその印刷データをアップロードし、保存しておくという運用を実施したものであった。一方ここでは、ＰＣ１は、プリンタ２で印刷データを印刷する場合、インターネット上のクラウドストレージ３にその印刷データをアップロードする。また、アップロードする印刷データの圧縮及び暗号化を設定するためのＧＵＩ表示処理を行い、ユーザの設定に従って、印刷データの圧縮及び暗号化を行ってから、クラウドストレージ３にその印刷データをアップロードするものである。
【０１００】
全体的な動作は、上述に説明したとおりであるが、以下簡潔に説明する。
【０１０１】
ポートモニタ１０５は、ポートモニタ１０５は、呼び出し側からこれら関数が呼び出されると、常駐プログラム１０６に対し、呼び出された関数をメッセージとして送信（転送）する。また、ポートモニタ１０５は、プリンタドライバ１０３から印刷データを受信するので、受信した印刷データに対し、固有のファイル名を付してから、印刷データ格納部１０８へ格納しておく。
【０１０２】
次に、常駐プログラム１０６は、ポートモニタ１０５からのメッセージを受信すると、設定ファイルに基づいて、そのメッセージに応じた拡張プログラムを呼び出して実行する。
【０１０３】
常駐プログラム１０６は、設定ファイルを参照し、図例の設定ファイルの場合、メッセージ「StartDocPort」（関数）に対応する処理は、「Program1.dll」により実現される処理である。また、同様に、「WritePort」に対応する処理は、「Program5.dll」（例えば、ＧＵＩ表示、圧縮・暗号化処理を実現する拡張プログラム）、「Program2.dll」及び「Program3.dll」により実現され、「EndPort」に対応する処理は、「Program4.dll」により実現される処理である。
【０１０４】
従って、この場合、常駐プログラム１０６は、例えば、ポートモニタ１０５からのメッセージを受信すると、設定ファイルに基づいて、そのメッセージに応じた拡張プログラムを特定し、これら拡張プログラムの呼び出しを行う。
【０１０５】
常駐プログラム１０６は、受信したメッセージを上述の設定ファイルを参照し、特定された拡張プログラム（メッセージ関数に応じて、例えば、「Program1.dll」〜「Program5.dll」）を呼び出す。併せて、拡張プログラムに対し、ポートモニタ１０５から送信されたメッセージ、印刷データ格納部１０８に格納された印刷データのファイル名をそのまま渡す。印刷データは、拡張プログラムにより出力されるためである。
【０１０６】
ここでは、常駐プログラム１０６から呼び出される拡張プログラム「Program5.dll」が、ＰＣ１の表示部等にＧＵＩ（表示画面）を表示、印刷データの圧縮及び暗号化を行う機能を備える。よって、「Program5.dll」により、図に示されるようなＧＵＩが表示される。ユーザは、アップロードする印刷データを、圧縮及び暗号化するかどうかの設定を行う。そして、ユーザが操作をした設定値に従って、印刷データ格納部１０８の印刷データに対し、圧縮及び暗号化を実施する。圧縮及び暗号化済みの印刷データは、次の拡張プログラム（例えば、「Program2.dll」）へ渡すため、オリジナルの印刷データとは別途、印刷データ格納部１０８に格納しておく。また、圧縮及び暗号化済みの印刷データのファイル名を付して、次の拡張プログラム（例えば、「Program2.dll」）へそのファイル名を渡す。開発者は、例えばこのような動作を拡張プログラム「Program5.dll」に実装する。
【０１０７】
以降、「Program2.dll」により、圧縮及び暗号化済みの印刷データがクラウドストレージ３にアップロードされるとともに、「Program3.dll」により、オリジナルの印刷データがプリンタ２に出力される。
【０１０８】
以上のように、ポートモニタは、自身が直接的にＧＵＩを表示しないため、上述の制限の下であっても、ＧＵＩ表示を伴う印刷処理を容易に実現することが可能である。これは、ポートモニタ１０５は、本来ポートモニタが行うべき処理を、メッセージ通信によって、別の拡張プログラムに代行処理させることによるものである。このため、ポートモニタ自体を更新することなく、拡張プログラムの更新のみという容易な作業により、対応することが可能となる。
【０１０９】
[総括]
以上、本実施形態によれば、ポートモニタに独自の処理を実装する場合、開発者側の実装作業及び利用者側のインストール作業の簡素化を実現する情報処理装置、プログラム及び記録媒体等を提供することが可能となる。
【０１１０】
なお、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【０１１１】
１          ＰＣ
２          プリンタ
３          クラウドストレージ
４          ＧＵＩ
１１        ＣＰＵ
１２        ＲＯＭ
１３        ＲＡＭ
１４        ＨＤＤ
１５        記憶媒体読取装置
１６        入力装置
１７        表示装置
１８        通信装置
１００      プリンタシステム
１０１      アプリケーション
１０２      ＯＳ
１０３      プリンタドライバ
１０４      ＯＳのポートモニタ
１０５      ポートモニタ
１０６      常駐プログラム
１０７      拡張プログラム格納部
１０８      印刷データ格納部
【先行技術文献】
【特許文献】
【０１１２】
【特許文献１】特開２００７‐３２８４５０号公報
【図１】
0005966523.tif 000002
【図２】
0005966523.tif 000003
【図３】
0005966523.tif 000004
【図４】
0005966523.tif 000005
【図５】
0005966523.tif 000006
【図６】
0005966523.tif 000007
【図７】
0005966523.tif 000008
【図８】
0005966523.tif 000009
【図９】
0005966523.tif 000010
【図１０】
0005966523.tif 000011