(57)【特許請求の範囲】
【請求項１】
クライアント端末からの指示に基づいて印刷ジョブおよびプリンタを管理する印刷制御装置であって、
前記クライアント端末から前記プリンタへの印刷指示および前記クライアント端末の認証情報を受け付ける受付手段と、
前記認証情報の有効性を、前記認証情報を発行し管理を行っている認証手段に確認する確認手段と、
前記認証情報が有効であった場合、前記印刷ジョブを前記認証情報とともに実行ジョブとして登録する実行ジョブ管理手段と、
前記登録された認証情報について、前記実行ジョブが登録されている間に前記認証手段へアクセスして前記認証情報の有効期限を更新する更新手段と、
前記プリンタから一定の間隔で定期通信を受信する受信手段と、
を備え、
前記受信手段により前記定期通信を受信してから所定の期間が経過しても前記定期通信を受信しなかった場合、前記実行ジョブ管理手段は、前記プリンタにおいて実行される実行ジョブを削除することを特徴とする印刷制御装置。
【請求項２】
前記更新手段は、一定の間隔で、前記有効期限を更新することを特徴とする請求項１に記載の印刷制御装置。
【請求項３】
前記更新手段は、前記認証手段へ認証トークンの有効性を問い合わせ、最終アクセス日時を更新することにより、前記認証情報の有効期限を更新することを特徴とする請求項１または２に記載の印刷制御装置。
【請求項４】
前記更新手段は、複数の前記実行ジョブが登録されている場合、前記複数の実行ジョブの全てに対して、前記認証情報の有効期限を更新することを特徴とする請求項１乃至３のいずれか１項に記載の印刷制御装置。
【請求項５】
クライアント端末からの指示に基づいて印刷ジョブおよびプリンタを管理する印刷制御方法であって、
前記クライアント端末から前記プリンタへの印刷指示および前記クライアント端末の認証情報を受け付ける受付工程と、
前記認証情報の有効性を、前記認証情報を発行し管理を行っている認証手段に確認する確認工程と、
前記認証情報が有効であった場合、前記印刷ジョブを前記認証情報とともに実行ジョブとして登録する実行ジョブ管理工程と、
前記登録された認証情報について、前記実行ジョブが登録されている間に前記認証手段へアクセスして前記認証情報の有効期限を更新する更新工程と、
前記プリンタから一定の間隔で定期通信を受信する受信工程と、
を有し、
前記受信工程により前記定期通信を受信してから所定の期間が経過しても前記定期通信を受信しなかった場合、前記実行ジョブ管理工程では、前記プリンタにおいて実行される実行ジョブを削除することを特徴とする印刷制御方法。
【請求項６】
前記更新工程では、一定の間隔で、前記有効期限を更新することを特徴とする請求項５に記載の印刷制御方法。
【請求項７】
前記更新工程では、前記認証手段へ認証トークンの有効性を問い合わせ、最終アクセス日時を更新することにより、前記認証情報の有効期限を更新することを特徴とする請求項５または６に記載の印刷制御方法。
【請求項８】
前記更新工程では、複数の前記実行ジョブが登録されている場合、前記複数の実行ジョブの全てに対して、前記認証情報の有効期限を更新することを特徴とする請求項５乃至７のいずれか１項に記載の印刷制御方法。
【請求項９】
請求項５乃至８のいずれか１項に記載の印刷制御方法をコンピュータに実行させることを特徴とするコンピュータプログラム。
【請求項１０】
クライアント端末からの指示に基づいて印刷ジョブおよびプリンタを管理する印刷制御装置であって、
前記クライアント端末から前記プリンタへの印刷指示および前記クライアント端末の認証情報を受け付ける受付手段と、
前記認証情報の有効性を、前記認証情報を発行し管理を行っている認証手段に確認する確認手段と、
前記認証情報が有効であった場合、前記印刷ジョブを前記認証情報とともに実行ジョブとして登録する実行ジョブ管理手段と、
前記実行ジョブ管理手段によって前記実行ジョブが登録されている間に、前記認証手段に対して第２の認証情報の発行を求める依頼手段と、
前記プリンタから一定の間隔で定期通信を受信する受信手段と、
を備え、
前記実行ジョブ管理手段は、前記認証手段から発行された前記第２の認証情報を前記実行ジョブとともに登録し、前記受信手段により前記定期通信を受信してから所定の期間が経過しても前記定期通信を受信しなかった場合、前記プリンタにおいて実行される実行ジョブを削除すること
を特徴とする印刷制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷制御装置、印刷制御方法、情報処理システム、情報処理装置、情報処理方法およびコンピュータプログラムに関する。本発明は、特に、プリンタが印刷時に必要とする認証情報の有効期限を更新する印刷制御装置、印刷制御方法、情報処理システム、情報処理装置、情報処理方法およびコンピュータプログラムに関する。
【背景技術】
【０００２】
近年、クラウドサービスとして、インターネット上にサービスを公開するビジネスが展開されている。インターネット上のプリントサービスとして、プリントサーバの機能を提供することが求められている。例えば、大規模なデータセンターにプリントサーバを配置し、クラウドサービスとしてプリントサービスを提供することで、顧客ごとのハードウェアの管理が不要となる。また、サーバの負荷に応じてリソースを追加するようなことも容易であるという様々なメリットがある。
【０００３】
このプリントサービスは、多数のユーザ情報を一括で管理する必要があるため、外部の認証サービスを利用し、より堅牢なユーザ管理を行っている。ユーザはこの認証サービスにより認証を行い、その際に発行される認証トークンを使うことで、プリントサービスを受けることができる。クラウドサービスとしてインターネットに展開するプリントサービスでは、ファイアーウォールをはさんでプリントサーバとプリンタが存在している。そのため、プリンタは、プリントサーバからインターネットを介して印刷データを取得するプルプリント方式による印刷を行う。このとき、プリンタには、認証サービスで認証済みの印刷実行ユーザの認証トークンが登録されている。この認証トークンを使うことによって、正しく認証されたリクエストを通じてプリンタは印刷データを取得することができる。  
【０００４】
しかしながら、一般的な認証サービスは、リソースを効率的に利用するため、またセキュリティを高めるため、発行する認証トークンに有効期限を設定している。具体的には、最終アクセスから一定時間後に認証トークンが無効になる。そのため、印刷を実行するユーザがプリンタに印刷指示を行ってから、それ以上のオペレーションを実行しない場合、プリンタがプリントサーバから印刷データを取得するまでに、認証トークンが無効になることがある。認証トークンが無効となった場合に、プリンタは印刷データを取得できないため、ユーザの意図に反して印刷エラーが発生する。
【０００５】
このような問題を解決することを目的として、従来技術として、長時間にわたるバッチジョブ処理を行うクライアントシステムが、認証システムが発行する認証チケットの有効期限更新時間をバッチジョブ処理の開始前に設定する。そして、このシステムは、バッチジョブ処理の開始後、有効期限更新時間に達したときに有効期限を更新する期限更新手段を持っている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−３３０９５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１の方法では、有効期限情報を認証システムが管理している場合、更新時間に達した時に、クライアントシステムが認証システムに更新要求を行う。クラウドサービスの場合、クライアントシステム（プリンタ）と認証システム（認証サーバ）は、インターネットで接続されており、且つクライアントシステムの数が多いため、ネットワークに負荷がかかり、特許文献１の方法は実用的ではない。
【０００８】
そこで、本発明は、インターネットに展開するプリントサービスにおいて、プリンタが必要とする認証情報を効率的に管理し、必要な更新を行うことが可能な印刷制御装置を提供する。
【課題を解決するための手段】
【０００９】
本発明の印刷制御装置は、クライアント端末からの指示に基づいて印刷ジョブおよびプリンタを管理する。前記印刷制御装置は、前記クライアント端末から前記プリンタへの印刷指示および前記クライアント端末の認証情報を受け付ける受付手段と、前記認証情報の有効性を、前記認証情報を発行し管理を行っている認証手段に確認する確認手段と、前記認証情報が有効であった場合、前記印刷ジョブを前記認証情報とともに実行ジョブとして登録する実行ジョブ管理手段と、前記登録された認証情報について、前記実行ジョブが登録されている間に前記認証手段へアクセスして前記認証情報の有効期限を更新する更新手段と、前記プリンタから一定の間隔で定期通信を受信する受信手段と、を備え、前記受信手段により前記定期通信を受信してから所定の期間が経過しても前記定期通信を受信しなかった場合、前記実行ジョブ管理手段は、前記プリンタにおいて実行される実行ジョブを削除することを特徴とする。
【発明の効果】
【００１０】
本発明の印刷制御装置によれば、プリンタにプルプリントジョブが登録されてから、プリンタが印刷制御装置（プリントサーバ）へ印刷データの取得要求を送信する間に、ユーザの認証トークンが無効にならない。したがって、本発明は、プリンタは正常に印刷を実行することができる。また、本発明の印刷制御装置によれば、クライアント端末ではなく、印刷制御装置自体（プリントサーバ）が認証トークンの有効期限を更新している。したがって、本発明は、クライアント端末およびネットワークに負荷がかからず、インターネットに展開するクラウドサービスに適用することができる。
【００１１】
また、印刷ジョブを発行する度に、認証（アクセス）トークンを毎回再発行（再取得）することがなく、アクセストークンの取得処理に時間を要したり、アクセストークンの取得に伴う使用リソースが増大したりすることを防止することもできる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態の全体構成を示す図である。
【図２】本発明の実施形態のハードウェア構成を示す図である。
【図３】本発明の実施形態のモジュール構成を示す図である。
【図４】本発明の実施形態のソフトウェア構成を示す図である
【図５】本発明の実施形態で管理する情報の構成を示す図である。
【図６】本発明の実施形態のプリントサーバの動作フローを示す図である。
【図７】本発明の実施形態のプリントサーバの動作フローを示す図である。
【図８】本発明の第２の実施形態のプリントサーバの実行ジョブ登録フローを示す図である。
【図９】周辺装置制御システムの構成の一例を示す図である。
【図１０】ＰＣのソフトウェアの構成の一例を示す図である。
【図１１】Ｗｅｂブラウザの一例を示す図である。
【図１２】印刷ダイアログの一例を示す図である。
【図１３】周辺装置制御システム全体の処理に係るフローチャートの一例を示す図である。
【図１４】周辺装置制御システム全体の処理に係るフローチャートの一例を示す図である。
【図１５】周辺装置制御システム全体の処理に係るフローチャートの一例を示す図である。
【図１６】プロキシＡＰＰの処理に係るフローチャートの一例を示す図である。
【図１７】画像変換ＡＰＰの処理に係るフローチャートの一例を示す図である。
【図１８】画像変換ＡＰＰの処理に係るフローチャートの一例を示す図である。
【図１９】画像変換ＡＰＰの処理に係るフローチャートの一例を示す図である。
【図２０】コーリングシーケンスの一例を示す図である。
【図２１】画像変換ＡＰＰの処理に係るフローチャートの一例を示す図である。
【図２２】画像変換ＡＰＰの処理に係るフローチャートの一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
（第１実施形態）
図１は、本発明の実施形態の全体構成を示す図である。
【００１４】
図１において、クライアント端末１０１〜１０３と、プリントサーバ１０４（印刷制御装置）と、プリンタ１０５〜１０８と、認証サーバ１１２は、ネットワーク１０９〜１１１を介して接続されている。図１において、クライアント端末１０１〜１０３、プリンタ１０５〜１０８は、複数台接続されている。ネットワーク１０９〜１１１は、例えば、インターネット等のＬＡＮ、ＷＡＮ、電話回線、専用デジタル回線、ＡＴＭやフレームリレー回線、ケーブルテレビ回線、データ放送用無線回線等のいずれかである。または、ネットワーク１０９〜１１１は、これらの組み合わせにより実現されるいわゆる通信ネットワークである。ネットワーク１０９〜１１１は、データの送受信が可能であればよい。クライアント端末１０１〜１０３からプリントサーバ１０４、プリンタ１０５〜１０８への通信手段、プリンタ１０５〜１０８からプリントサーバ１０４への通信手段は異なっていてもよい。
【００１５】
クライアント端末１０１〜１０３は、例えば、デスクトップパソコン、ノートパソコン、モバイルパソコン、ＰＤＡ（パーソナルデータアシスタント）等であるが、プログラムの実行環境が内蔵された携帯電話であってもよい。クライアント端末１０１〜１０３は、Ｗｅｂブラウザ（インターネットブラウザ、ＷＷＷブラウザ、Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂの利用に供するブラウザ）等のプログラムを実行する環境を内蔵している。
【００１６】
認証サーバ１１２は、クライアント端末１０１〜１０３のＷｅｂブラウザからの要求に対して、認証トークンを発行する。プリントサーバ１０４は、クライアント端末１０１〜１０３のＷｅｂブラウザからの印刷指示を受けると、その印刷指示のリクエストに含まれる認証トークンの有効性を認証サーバに確認する。プリントサーバ１０４は、認証トークンが有効であった場合に、リクエストの内容に基づいて印刷実行ジョブと認証トークンのセットを登録し、印刷データを生成する。この際、プリントサーバ１０４は、自ら保持している印刷データへの変換を行う変換モジュールを使って印刷データ（ＰＤＬ）を生成する。なお、プリントサーバ１０４が備える変換モジュールは、様々なデータを受け付けることができ、受け付けたデータを出力対象のデバイスに適合したデータに変換する機能を備える。
【００１７】
ここで、本願が想定する印刷の流れの一例について説明する。例えば、ユーザはクライアント端末を使って帳票サービスにアクセスして帳票を表示している状況で、所望とするプリンタを選択して、印刷を指示する。その指示により、帳票サービスを提供している帳票サーバからクライアント端末に表示されていた帳票が文書データとしてプリントサーバ１０４に送信される。プリントサーバは、この文書データ（例えばＰＤＦ）から印刷データを生成して、保持しておく。また、ユーザが印刷指示の前にプリンタを選択しているので、プリントサーバ１０４は、選択されたプリンタの機能に適合した印刷設定画面をクライアント端末に提供できる。例えばユーザにより選択されたプリンタがステイプル機能を備えている場合、ステイプルを選択できる印刷設定画面がプリントサーバ１０４からクライアント端末に提供される。一方、選択されたプリンタがステイプル機能を備えていない場合、ステイプルを選択できない印刷設定画面がプリントサーバ１０４からクライアント端末に提供される。
【００１８】
クライアント端末１０１〜１０３のＷｅｂブラウザは、プリンタ１０２〜１０８に認証トークンを含むプルプリントジョブを登録する。プリンタ１０２〜１０８は、このプルプリントジョブの内容に従って、プリントサーバ１０４に印刷データ取得要求を送信する。プリントサーバ１０４は、プリンタ１０２〜１０８からの印刷データ取得要求を受けると、その印刷データ取得のリクエストに含まれる認証トークンの有効性を認証サーバに確認する。プリントサーバ１０４は、認証トークンが有効であった場合、生成した印刷データをプリンタ１０２〜１０８へ送信する。
【００１９】
図２は、本発明の実施形態におけるクライアント端末１０１〜１０３、プリントサーバ１０４、認証サーバ１１２とプリンタ１０５〜１０８のハードウェア構成図である。
図２において、２０２は装置全体の制御を行うＣＰＵであり、ハードディスク（ＨＤＤ）２０５に格納されているアプリケーションプログラム、ＯＳ等を実行し、ＲＡＭ２０３にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。２０４は記憶手段としてのＲＯＭであり、内部には、基本Ｉ／Ｏプログラム等のプログラム、印刷処理の際に使用する印刷データ、プリンタ情報等の各種データを記憶する。２０３は一時記憶手段としてのＲＡＭであり、ＣＰＵ２０２の主メモリ、ワークエリア等として機能する。２０５は外部記憶手段の一つであり、大容量メモリとして機能するハードディスク（ＨＤＤ）である。外部記憶手段２０５は、Ｗｅｂブラウザ等のアプリケーションプログラム、プリントサーバプログラム、認証サーバプログラム、ＯＳ、関連プログラム等を格納している。
【００２０】
２０６は表示手段であるディスプレイであり、キーボード２０７から入力したコマンドや、プリンタのステータス等を表示したりするものである。２０８は外部装置Ｉ／Ｆであり、プリンタ、ＵＳＢ機器、周辺機器を接続するためのＩ／Ｆである。２０７は指示入力手段であるキーボードである。２０１はシステムバスであり、印刷システムのプリントサーバ、認証サーバ、クライアント端末内におけるデータの流れを司るものである。２０９はネットワークインタフェースカード（ＮＩＣ）であり、該インタフェース２０９、ネットワーク１０９〜１１１を介して外部装置とのデータのやり取りを行う。なお、上記コンピュータの構成はその一例であり、図２の構成例に限定されるものではない。例えば、データやプログラムの格納先は、その特徴に応じてＲＯＭ、ＲＡＭ、ＨＤＤなどで変更することも可能である。
【００２１】
２０９はプリンタ１０５〜１０８のコントローラであり、プリンタの制御系を司る機器である。２１０は装置全体の制御を行うＣＰＵであり、システムバス２１８に接続される各種デバイスとのアクセスを統括的に制御する。この制御は、ROM２１２に記憶された制御プログラム等あるいはディスクコントローラ（ＤＫＣ２１６）を介して接続された外部メモリ２２３に記憶された制御プログラムやリソースデータ（資源情報）等に基づいて行われる。２１１はＣＰＵ２１０の主メモリ、ワークエリア等として機能するＲＡＭで、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。
【００２２】
２１３は大容量メモリとして機能する外部記憶手段であり、プルプリントアプリケーションプログラム及び関係プログラム等を格納している。２２１は操作パネル（操作部）でプルプリントの操作を行うユーザインタフェースやプルプリント切り替えボタンが配置される。また、プリンタ１０５〜１０８の動作モード等の設定やプリンタ１０５〜１０８の動作状況の表示、複写指定等の操作を行うためのボタンおよび液晶パネルやLED２１４等の表示部も配置される。２１９は、ネットワークインタフェースカード（ＮＩＣ）であり、該インタフェース２１９を介して外部装置とのデータのやり取りを行う。
【００２３】
なお、本図で示したプリントエンジン２２０は既知の印刷技術を利用するものであり、好適な実施系として例えば電子写真方式（レーザービーム方式）やインクジェット方式、昇華方（熱転写）方式等が挙げられる。ラスタコントローラ２１５は、ＰＤＬ言語・ＰＤＦ言語である印刷データを画像データに変換するコントローラである。機器Ｉ／Ｆ２１７は、ＵＳＢ等で接続可能な外部機器との接続Ｉ／Ｆである。
【００２４】
図３は、本発明の実施形態のモジュール構成図である。
プリントサーバ１０４は、印刷ジョブを管理する印刷ジョブ管理サービス３０６を備えている。印刷ジョブ管理サービス３０６は、他のサービス、または他のプログラムから投入される文書データ等を印刷データとしてストレージ３０７に管理する。印刷データのデータフォーマットは、ＰＤＬまたは、ＰＤＦ等の形式である。ストレージ３０７はプリントサーバ１０４の情報処理装置に内蔵するＨＤＤまたは、外部接続しているＨＤＤ、または、ネットワークストレージ等の記憶装置である。プリンタ管理サービス３０５はプリンタ１０５〜１０８を管理し、各プリンタに対し後述のプリンタ情報を管理する。
【００２５】
Ｗｅｂアプリケーション３０２は、クライアント端末１０１〜１０３に動作しているＷｅｂブラウザ３０１で表示可能なＷｅｂページを生成し、Ｗｅｂブラウザ３０１からのリクエストに応答し、生成したＷｅｂページを返信する。Ｗｅｂサービス３０３は、プリンタ１０５〜１０８のプルプリントアプリケーション３０４からの印刷ジョブ取得リクエストに対し印刷データを返し、また印刷処理におけるジョブのステータスを受け取る。プリンタ１０５〜１０８のプルプリントアプリケーション３０４は、Ｗｅｂブラウザ３０１からのプリンタ制御コマンド（例えば、プリンタへの印刷中止指示コマンド）、または、印刷指示コマンドを受け付ける。
【００２６】
印刷ジョブ管理サービス３０６、プリンタ管理サービス３０５、Ｗｅｂアプリケーション３０２、Ｗｅｂサービス３０３はそれぞれ独立したプログラムであり、それぞれ別々の情報処理装置に配置することが可能である。これらのプログラムはそれぞれネットワークに繋がった複数の情報処理装置に配置され、プログラム間で通信を行う。またこれらのプログラムを同一の情報処理装置に配置することも可能である。
【００２７】
認証サーバ１１２は、ユーザ情報を管理するユーザ管理サービス３０８を備えている。ユーザ管理サービス３０８は、印刷システムを利用するユーザの情報をストレージ３１１に管理する。ストレージ３１１は認証サーバの情報処理装置に内蔵するＨＤＤまたは、外部接続しているＨＤＤ、または、ネットワークストレージ等の記憶装置である。Ｗｅｂアプリケーション３１０は、クライアント端末１０１〜１０３に動作しているＷｅｂブラウザ３０１で表示可能なＷｅｂページを生成し、Ｗｅｂブラウザ３０１からのリクエストに応答し、生成したＷｅｂページを返信する。セッション管理サービス３０９は、認証トークンの発行と、その管理を行う。
【００２８】
図４は、本発明の実施形態に関連する装置群のソフトウェア構成図である。
図４（Ａ）において、プリントサーバ１０４に含まれる印刷ジョブ管理サービス３０６の印刷ジョブ管理部４０１は、印刷ジョブの管理を行う。すなわち、印刷ジョブ管理部４０１は、Ｗｅｂサービス３０３から印刷データの取得リクエストを受け取ると、ストレージ３０７から指定の印刷データを取得し、Ｗｅｂサービス３０３に渡す。印刷ジョブ情報管理部４０２はストレージ３０７で管理している印刷データに関する後述する図５の印刷ジョブ情報を管理する。プリンタ管理サービス３０５のプリンタ情報管理部４０３は、後述の図５のプリンタ情報を管理する。Ｗｅｂアプリケーション３０２は、Ｗｅｂブラウザ３０１から印刷指示リクエストを受け付けると、その旨をプリンタ管理サービス３０５に通知する。その通知を受けとったプリンタ管理サービス３０５は、後述する図５のプリンタ情報のプリンタ識別情報５０３に基づいて対象のプリンタを決定する。なお、印刷指示リクエストには、ユーザがクライアント端末のＷｅｂブラウザを使って選択したプリンタの情報が含まれるので、その情報に基づいてプリンタ管理サービス３０５は、プリンタを決定する。さらにこのとき、実行ジョブ情報管理部４２２は、後述する図５の実行ジョブ情報に実行ジョブの情報を登録する。
【００２９】
Ｗｅｂアプリケーション３０２のリクエスト受付部４０６は、Ｗｅｂブラウザ３０１からのリクエストに含まれる認証トークンの有効性を認証サーバ１１２に問い合わせる。ページ生成部４０５は、Ｗｅｂブラウザ３０１からのリクエストに対し、印刷指示を行うためのボタン等が配置されたＷｅｂ画面を生成し、Ｗｅｂブラウザ３０１に返信する。Ｗｅｂサービス３０３のリクエスト受付部４０９は、プルプリントアプリケーション３０４から印刷データ取得リクエストや、印刷ジョブのステータスを受け付ける。リクエスト受付部４０９は、印刷データ取得リクエストを受けた場合、リクエストに含まれる認証トークンの有効性を認証サーバ１１２に問い合わせる。印刷データ取得部４０７は、印刷ジョブ取得リクエストをリクエスト受付部４０９が受けると前述の印刷ジョブ管理サービス３０６に印刷データ取得リクエストを出す。印刷ステータス受信部４０８は、リクエスト受付部４０９が印刷ジョブのステータスを受けると、そのステータスをプリンタ管理サービス３０５に通知する。
【００３０】
図４（Ｂ）において、プルプリントアプリケーション３０４のＷｅｂサービス受付部４１０は、Ｗｅｂブラウザ３０１からの印刷指示コマンドやプリンタ制御コマンドや等を受ける。Ｗｅｂサービス送信部４１１は、Ｗｅｂサービス３０３へ印刷ジョブ取得リクエスト、または印刷ステータスの通知を行う。Ｗｅｂブラウザ３０１から印刷リクエスト等を受けると、印刷データ取得部４１２は、Ｗｅｂサービス送信部４１１を通してＷｅｂサービス３０３から印刷データを取得し、印刷データ送信部４１６に送る。印刷データ送信部４１６は、コントローラ２０９に印刷データを送信する。印刷制御部４１５は、印刷ジョブのステータスをコントローラ２０９から受け取り、Ｗｅｂサービス３０３に通知する。機器監視部４１４は、プリンタのステータスをコントローラ２０９から取得し、プリントサーバ１０４へ定期通信（ＫｅｅｐＡｌｉｖｅ）として通知する。なお、この定期通信（ＫｅｅｐＡｌｉｖｅ）は、予め決められた一定の間隔でプリンタからプリントサーバに通知される。プリンタのステータスは、後述する図５のプリンタ情報のステータスにおいて管理される。プルプリントコントローラ４１３は、プルプリントアプリケーション３０４全体の動作管理を行うものであり、各部への動作指示等は、このコントローラ経由で行う。
【００３１】
図４（Ｃ）において、認証サーバ１１２のＷｅｂアプリケーション３１０では、リクエスト受付部４１７が、Ｗｅｂブラウザ３０１からの認証のためのリクエストを受け付ける。ページ生成部４１８は認証に必要なユーザ情報を入力するためのＷｅｂ画面を生成し、返信する。セッション発行部４１９では、Ｗｅｂアプリケーション３１０が受けとったユーザ情報をユーザ管理部４２１で照合し、認証が成功すると、認証トークンを発行する。セッション情報管理部４２０は、セッション発行部４１９で発行された認証トークンを含む後述する図５のセッション情報を管理する。また、セッション情報管理部４２０は、認証トークンの有効性の問い合わせに対し、有効かどうかの応答を返すと共に、問い合わせのあった認証トークンに対応するセッション情報の最終アクセス日時を更新する。このセッション情報管理部４２０による最終アクセス日時の更新は、認証トークンの有効期限の更新を意味するが、その詳細は後述する。
【００３２】
図５は、本発明の実施形態によって管理される情報の例である。
図５（Ａ）において、セッション管理情報５０１は認証サーバ１１２のセッション情報管理部４２０で管理され、ユーザを識別するユーザＩＤ、認証時に発行された認証トークン、認証トークンでの最終アクセス日時等を含む。
【００３３】
図５（Ｂ）において、プリンタ情報５０２は、プリントサーバ１０４で管理する複数のプリンタ１０５〜１０８のプリンタ情報を管理している。プリンタ名、プリンタ識別情報、ステータス、最終ＫｅｅｐＡｌｉｖｅ日時等を含む。プリンタ識別情報は、各プリンタをユニークに識別する情報であり、ＩＰアドレスや、ＭＡＣアドレスや、ＵＲＩ等である。ステータスは、プリンタのステータスであり、用紙切れ、ジャム、カバーオープン、トナーなし、排紙ビンフル、ハードディスクフル、その他エラーがある。また、他のステータスとして、ウォーミングアップ中、キャリブレーション中、初期化中、オフライン、スリープ中、印刷中、印刷可能、状態不明等のステータスがある。
【００３４】
図５（Ｃ）において、印刷ジョブ情報５０３は、プリントサーバ１０４の印刷ジョブ管理部４０１で管理されるストレージ３０７に保存されているジョブの管理情報である。印刷ジョブ情報は、ジョブを識別するためのジョブID、ドキュメント名、印刷ステータス等を含む。印刷ステータスには、待機中、転送中、印刷中、キャンセル中、正常終了、キャンセル終了、エラー終了等のステータスがある。
【００３５】
図５（Ｄ）において、実行ジョブ情報５０４は、プリントサーバ１０４の実行ジョブ管理部４２２で管理される印刷実行中のジョブに関する情報である。実行ジョブ情報は、実行ジョブを識別するための実行ジョブＩＤ、印刷対象の印刷ジョブ情報５０３を識別するためのジョブＩＤ、印刷データ取得時に使用される認証トークン、プリンタ識別情報等を含む。
【００３６】
図５（Ｅ）において、認証トークン更新リスト５０５は、実行ジョブ情報５０４から抽出される認証トークン毎の実行ジョブリストの組情報である。
【００３７】
図５（Ｆ）において、印刷キュー情報５０６は、プリンタのプルプリントアプリケーション３０４で管理される印刷ジョブ情報である。印刷キュー情報５０６は、印刷ジョブを識別するためのジョブＩＤ、印刷データの取得先ＵＲＩ、ジョブ実行ユーザの認証トークン等、印刷データの取得部４１２が印刷データ取得時に使用する情報を含む。
【００３８】
図６は、本発明の実施形態に係る印刷制御装置であるプリントサーバ１０４の動作フローである。なお、本願のフローチャートは、各装置のＣＰＵがメモリから関連するプログラムを読みだして実行することにより実現される。
【００３９】
Ｓ６０１において、リクエスト受付部４０６は、クライアント端末１０１〜１０３のＷｅｂブラウザ３０１から印刷指示を受ける。Ｓ６０２において、リクエスト受付部４０６は、印刷指示に含まれる認証トークンの有効性を認証サーバ１１２のセッション情報管理部４２０に問い合わせる。Ｓ６０２において認証トークンが有効と判断された場合に、Ｓ６０３で、実行ジョブ管理部４２２は認証トークンを含む実行ジョブ情報を登録する。Ｓ６０４で、印刷ジョブ情報管理部４０２が、該当する印刷データの準備を行う。具体的には、印刷ジョブ情報管理部４０２が、ストレージに記憶されている文書データ（例えば、ＰＤＦ）を印刷データ（ＰＤＬ）へ変化することを上述の変換モジュールに依頼する。ここで、変換された印刷データは、ストレージに記憶される。
【００４０】
Ｓ６０５において、プルプリントアプリケーション３０４の印刷データ取得部４１２からの印刷データ取得要求は、リクエスト受付部４０９が受け付ける。Ｓ６０６において、リクエスト受付部４０９は、印刷データ取得要求に含まれる認証トークンの有効性を認証サーバ１１２のセッション情報管理部４２０に問い合わせる。Ｓ６０６において認証トークンが有効と判断された場合に、Ｓ６０７で、プリントサーバ１０４はプリンタへ印刷データを送信し、Ｓ６０８で、プリントサーバ１０４は印刷ジョブ情報５０３の印刷ステータスを印刷中に更新する。また、Ｓ６０６において、認証トークンが無効であった場合には、Ｓ６０９で、プリントサーバ１０４は、印刷ジョブ情報の印刷ステータスをエラー終了とし、実行ジョブ情報５０４から該当実行ジョブの情報を削除する。
【００４１】
Ｓ６１０において、プルプリントアプリケーション３０４のＷｅｂサービス送信部４１１からの印刷完了通知は、印刷ステータス受信部４０８が受信する。Ｓ６１０で受信した印刷完了通知に従って、Ｓ６１１で、印刷ジョブ管理部４０１は印刷ジョブ情報５０３の該当ジョブに対応する印刷ステータスを印刷済みに更新する。Ｓ６１２で実行ジョブ管理部４２２は実行ジョブ情報５０４から該当ジョブ情報を削除する。
【００４２】
プルプリントアプリケーション３０４のＷｅｂサービス送信部４１１からの定期通信（ＫｅｅｐＡｌｉｖｅ）も、Ｓ６１３で、印刷ステータス受信部４０８が受信する。Ｓ６１４で、プリンタ情報管理部４０３はプリンタ情報５０２のステータスと、最終ＫｅｅｐＡｌｉｖｅ日時を更新する。
【００４３】
プリントサーバ１０４のプリンタ情報管理部４０３は、定期的に、管理している全てのプリンタ情報５０２について、下記フローを実施する。まず、Ｓ６１５において、プリンタ情報管理部４０３は、実行ジョブ情報５０４から、対象のプリンタを出力先とする実行ジョブが存在するか確認する。Ｓ６１５で、実行ジョブが存在すると判断した場合、Ｓ６１６で、プリンタ情報管理部４０３は、プリンタ情報５０２から最終ＫｅｅｐＡｌｉｖｅ日時を取得する。プリンタ情報管理部４０３は、その取得された日時からあらかじめ決められたタイムアウト時間内に、プリンタからＫｅｅｐＡｌｉｖｅを受信しているか確認する。Ｓ６１６で、タイムアウトと判断された場合には、プリンタ情報管理部４０３は該当プリンタを出力先とする全ての実行ジョブについて、対応する印刷ジョブ情報５０３の印刷ステータスをエラー終了とし、該当の実行ジョブ情報を削除する。つまり、プリンタが定期的に通知するＫｅｅｐＡｌｉｖｅがタイムアウト時間内に通知されない場合（所定の期間を経過しても通知されない場合）、プリンタの電源がＯＦＦ、ネットワークが切断されている等の理由によって正常に印刷できないこととなる。この場合、そのような正常に稼働していないプリンタでの印刷ジョブを実行することができないので、プリントサーバ１０４は、図６（Ｅ）のような処理を行う。本願では、後述する認証トークンの有効期間の更新処理を実行ジョブに対応づいているユーザ単位で行うため、このように現段階で不要な実行ジョブを削除しておくことで無駄な有効期間の更新処理を防止できる。
【００４４】
図７は、本発明の実施形態のプリントサーバ１０４の実行ジョブ管理部４２２が、実行ジョブに登録されているジョブの認証トークンの有効性を維持するために、予め決められた実行間隔で定期的に実行する動作フローである。この実行間隔は、認証サーバ１１２で決められた、セッション情報の最終アクセス日時から認証トークンが無効になるまでの有効期間から決定する。例えば、認証トークンの有効期間が３０分である場合は、本実施形態では、有効期間を２で割った値、すなわち１５分間隔で図７の処理が実行される。
【００４５】
実行ジョブ情報５０４に複数の実行ジョブが登録されているときは、全ての実行ジョブについて、まず、Ｓ７０１で、実行ジョブ管理部４２２が実行ジョブ情報５０４の認証トークンを取得する。次に、Ｓ７０２で、実行ジョブ管理部４２２が、Ｓ７０１において取得した認証トークンが認証トークン更新リスト５０５に含まれるかを確認する。Ｓ７０２で取得した認証トークンが認証トークン更新リスト５０５に含まれていないと判断した場合は、実行ジョブ管理部４２２は、認証トークン更新リスト５０５に認証トークンと、実行ジョブＩＤリストの組を追加する。一方、Ｓ７０２において取得した認証トークンが認証トークン更新リスト５０５に含まれていると判断された場合、実行ジョブ管理部４２２は特に処理を行うことなく、Ｓ７０４へと進む。
【００４６】
Ｓ７０４において、実行ジョブ管理部４２２は、認証トークン更新リスト５０５内の、Ｓ７０１で取得した認証トークンに対応する実行ジョブＩＤのリストに実行ジョブＩＤを追加する。本願では、１人のユーザに１つの認証トークンが発行される。そのため、ある１人のユーザが複数の印刷ジョブの実行を指示している場合、Ｓ７０４によって１つの認証トークンに複数の実行ジョブＩＤが対応付けられて管理される。
【００４７】
次に、Ｓ７０１〜Ｓ７０４で作成された認証トークン更新リスト５０５の全要素について、Ｓ７０５で、実行ジョブ管理部４２２は、認証サーバ１１２のセッション情報管理部４２０に認証トークンの有効性を問い合わせる。なお、本願において全要素とは、認証トークン更新リスト５０５の認証トークンの項目に含まれる全ての認証トークンを指す。そのため、印刷ジョブの実行を指示しているユーザが２人であれば、問い合わせ対象の認証トークンは２つとなる。Ｓ７０６では、セッション情報管理部４２０からの返信から、実行ジョブ管理部４２２がＳ７０５の結果が成功であったかを判断する。成功であった場合、セッション情報管理部４２０がセッション管理情報５０１の最終アクセス日時を更新する。
【００４８】
本実施形態では、認証トークンの有効期間が最終アクセス日時から一定時間と設定されているので、図７の処理を定期的に実行することにより認証トークンの最終アクセス日時が更新される。その結果、認証トークンの有効期限がさらに延長されたこととなる。一例として、認証トークンの有効期間が３０分である場合は、認証トークンの有効期限が３０分延長されることになる。最終アクセス日時に基づいて認証トークンの有効期限を間接的に管理することによって、有効期限という管理要素を新たに認証サーバに設定する必要がなく、既存の認証サーバに対する親和性が高い。また、認証トークンの有効期限の更新は、単に認証サーバ１１２にアクセスすること、すなわち認証トークンの有効性を問い合わせることのみによって行われるため、簡易なフローによって効率的に有効期限を更新することができる。なお、本実施形態では、最終アクセス日時に基づいて有効期限を管理しているが、これに限られず、セッション情報管理部４２０が有効期限を直接管理し、有効期限自体を書き換えてもよい。
【００４９】
Ｓ７０６で失敗と判断した場合は、Ｓ７０７で認証トークンに対応する実行ジョブＩＤリストに含まれる実行ジョブＩＤ全てについて、Ｓ７０８で、実行ジョブ管理部４２２は印刷ジョブ情報の印刷ステータスをエラー終了とする。また、実行ジョブ管理部４２２は実行ジョブ情報５０４から該当の実行ジョブ情報を削除する。最後に、Ｓ７０９で、実行ジョブ管理部４２２が認証トークン更新リスト５０５の内容を全てクリアする。
【００５０】
なお、本実施形態では、認証トークンの有効期間を２で割った間隔で、実行ジョブ管理部４２２が図７のフローを実行しているが、これに限られず、実行ジョブ情報５０３に実行ジョブが登録されている間であれば、適当なタイミングで実行されてもよい。例えば、有効期限の更新は不定期に行われてもよいし、実行ジョブまたはプリンタごとに異なる間隔に設定してもよい。
【００５１】
このように、本実施形態によれば、例えば印刷ジョブの待ち時間や、紙なし、ジャム等のエラーによる待ちが発生しても、ユーザの認証トークンが無効にならない。そのため、プリンタはクライアント端末からプルプリントジョブと共に渡された認証トークンを使って正常に印刷を実行することができる。また、本実施形態によれば、プリントサーバが認証トークンの有効期限を更新しているため、クライアント端末およびネットワークに負荷がかからず、インターネットに展開するクラウドサービスに適用することができる。
【００５２】
（第２実施形態）
続いて、本発明の第２実施形態について説明する。第２実施形態では、プリントサーバ１０４が、クライアント端末１０１〜１０３のＷｅｂブラウザ３０１からの印刷指示を受けた際に、認証サーバ１１２に対して第２の認証トークンの発行を依頼する。具体的には、第１実施形態では、実行ユーザの認証トークンを使って印刷ジョブの実行を管理している。そのため、ユーザがクライアント端末から印刷指示を発行することにより生成された印刷ジョブが実行される前にユーザが本プリントシステムからログアウトした場合、認証サーバは、ログアウトしたユーザの認証トークンを無効へ変更する。その結果、ログアウト後にプリンタが印刷ジョブの印刷データ取得要求を発行した場合、正常に印刷が行われなくなる。
【００５３】
この課題を解決するために、第２実施形態では実行ユーザの認証トークンと別の認証トークンを使用する。その結果、ユーザのオペレーション（例えば、ログオフ操作）でユーザの認証トークンが明示的に無効となった場合でも、実行ジョブ情報５０４に含まれる認証トークンが無効にならずに、印刷が正常に実行される。
【００５４】
図８は、第２実施形態における、プリントサーバ１０４の実行ジョブ管理部４２２が、クライアント端末１０１〜１０３のＷｅｂブラウザ３０１からの印刷指示を受けた際の動作フローである。
【００５５】
Ｓ８０１で、プリントサーバ１０４は、リクエスト受付部４０６にて、Ｗｅｂブラウザ３０１からの印刷指示を受信する。Ｓ８０２において、リクエスト受付部４０６は、リクエストに含まれるユーザの認証トークンの有効性を認証サーバ１１２のセッション情報管理部４２０に問い合わせる。Ｓ８０２においてユーザの認証トークンが有効と判断された場合に、Ｓ８０３で、実行ジョブ情報管理部４２２は、認証サーバ１１２のセッション発行部４１９に対して、第２の認証トークンの発行を依頼する。実行ジョブ情報管理部４２２は、セッション発行部４１９の返信から、Ｓ８０４で、第２の認証トークンの発行が成功したかを判断する。
【００５６】
Ｓ８０４で第２の認証トークンの発行が成功と判断された場合に、実行ジョブ管理部４２２は、実行ジョブ情報５０４に第２の認証情報を含む実行ジョブ情報を登録する。さらに、Ｓ８０６では、印刷ジョブ情報管理部が、該当する印刷データの準備を行う。
【００５７】
このように、第２実施形態によれば、ユーザの認証トークンが無効となった場合でも、第２の認証トークンが無効にならない。したがって、第２実施形態によれば、プリンタは正常に印刷を実行することができる。また、本実施形態によれば、プリントサーバが認証トークンの有効期限を更新しているため、クライアント端末およびネットワークに負荷がかからず、インターネットに展開するクラウドサービスに適用することができる。
【００５８】
（第３実施形態）
以下、本発明の第３実施形態について図面に基づいて説明する。第１実施形態や第２実施形態においては、１つの印刷ジョブに着目した場合、その印刷ジョブの認証トークンの有効期限が切れて無効となる前に、有効期限を更新する方法に関して説明した。別の実施例として、例えば、廉価版のインクジェットプリンタを利用してＧｏｏｇｌｅ  Ｃｌｏｕｄ  Ｐｒｉｎｔを実現する印刷システムが実用化され始めている。このような印刷システムでは、印刷ジョブを発行してその印刷ジョブを処理する際に認証（アクセス）トークン（以下、本実施形態においてはアクセストークンと呼称する）を利用する。このアクセストークンの有効期限が、例えば２４時間と設定されていたとする。この場合、この有効期限が切れた後は、その印刷ジョブに対するアクセストークンを更新することができない、という認証システム上の制限が存在し得る。
【００５９】
上述の例では、ユーザがアプリケーション（Ｇｏｏｇｌｅ  ＤｏｃｓやＧｍａｉｌ等）を起動して、あるドキュメントを開いてＧｏｏｇｌｅ  Ｃｌｏｕｄ  Ｐｒｉｎｔ（登録商標、以下ＧＣＰと呼称する）を利用して印刷を指示する。これにより印刷ジョブが発行されて、画像変換サービスを提供するアプリケーションがその印刷ジョブにＰＤＦファイルとして格納されている印刷画像をＪＰＥＧファイル等の廉価版のプリンタでレンダリングできるタイプの画像フォーマットの印刷データに変換する。そして、プリンタがその印刷データを取得して印刷する。この時、印刷ジョブが発行されてからプリンタが前記印刷データの全てのページを印刷する迄の時間をアクセストークンの有効時間（例えば２４時間）以内に完了させる必要がある。
【００６０】
このような印刷システムでは、例えば、ＧＣＰを利用してプリンタで印刷中に用紙切れやインク切れが発生した場合において、そのまま例えば２４時間以上放置された場合、印刷に失敗してしまう。その為、ユーザが再度アプリケーションを起動して前記ドキュメント開いて印刷操作を行い、印刷ジョブを再発行する必要がある、という機能制限（仕様）がある。この機能制限（仕様）をできる限り避けることを考えた場合、印刷の度にその都度アクセストークンを再取得して、アクセストークンの有効期限をいつも最大（例えば２４時間）にするような印刷システムが考えられる。この情報処理システムでは、印刷に失敗するリスクは少し低くなるものの、アクセストークンを毎回発行する処理が必要となる。従って、この認証アクセストークン発行処理に時間を要したり、アクセストークンの発行に伴う使用リソースが増大したりする、という課題がある。特に、一般的によくあるユースケースの例として、ある短時間（数分）の間に複数のドキュメントを連続して印刷することを想定する。この場合、印刷に失敗するリスクはほとんど同じであるにもかかわらず、印刷ジョブ毎のアクセストークンの発行に伴う使用リソースの増大による負荷が大きくなってしまう。
【００６１】
第３実施形態では、これらの問題を解決する情報処理システムに関して説明する。なお、実施形態は、本発明を限定するものではなく、また、実施形態で説明されている全ての構成が本発明の課題を解決するための手段に必須であるとは限らない。
【００６２】
以下において、ＷｅｂサービスＡＰＩにＳＳＬ通信で暗号化されたＨＴＴＰＳのＰＯＳＴメソッド（通信方式の一例）を利用している場合があるが、このＰＯＳＴメソッドに関しては一般に公開されている情報であるので、ここではその詳細な説明を省略する。また、以下において、ＷｅｂサービスＡＰＩにＨＴＴＰのＧＥＴメソッド（通信方式の一例）を利用している場合があるが、このＧＥＴメソッドに関しては一般に公開されている情報であるので、ここではその詳細な説明を省略する。また、以下において、ＷｅｂサービスＡＰＩにＳＳＬ通信で暗号化されたＨＴＴＰＳのＧＥＴメソッド（通信方式の一例）を利用している場合があるが、このＧＥＴメソッドに関しては一般に公開されている情報であるので、ここではその詳細な説明を省略する。
【００６３】
また、ＨＴＴＰは、Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌの略であり、暗号化されていない公知の通信プロトコルであるので、ここではその詳細な説明を省略する。また、ＨＴＴＰＳは、Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ  ｏｖｅｒ  Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒの略であり、暗号化された公知の通信プロトコルであるので、ここではその詳細な説明を省略する。また、ＳＳＬは、Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒの略であり、インターネット上でデータを暗号化して送受信する公知の方法であるので、ここではその詳細な説明を省略する。また、ＧＣＰに関する説明は、次に示すサイトで公開されているので、ここではその詳細な説明を省略する。
インターネットＵＲＬ：http://code.google.com/apis/cloudprint/docs/overview.html
図９は、本実施形態の情報処理システムの構成例を示す。図９に示す情報処理システムは、ＰＣ１、ＰＣ２、ＰＣ５、ＰＣ１４７、及びＰＣ７の各々は、情報処理装置（コンピュータ）の一例であり、例えば、一般的なパーソナルコンピュータである。ＰＣ１、ＰＣ２、ＰＣ５、ＰＣ１４７、及びＰＣ７の各々は、図２のプリントサーバ、認証サーバ、クライアント端末に示すようなハードウェアを含んで構成される。
【００６４】
ＰＣ１には、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ（以下、ＯＳと略す。）としてＧｏｏｇｌｅ社製のＣｈｒｏｍｅ（登録商標）と同等のＯＳがインストールされている。また、ＰＣ２、ＰＣ１４７、及びＰＣ５の各々には、マイクロソフト社製のＷｉｎｄｏｗｓ（登録商標）のＳｅｒｖｅｒ用のＯＳがインストールされ、ＰＣ７には、Ｌｉｎｕｘ（登録商標）と同等のＯＳがインストールされている。ＰＣ１、ＰＣ２、ＰＣ５、ＰＣ１４７、及びＰＣ７は、それぞれＥｔｈｅｒｎｅｔ（登録商標）等のインタフェース（Ｉ／Ｆ）で構成されるネットワーク４、８、１０、６に接続され、インターネット１２にも接続されている。
【００６５】
マルチファンクションプリンタ（以下、ＭＦＰと略す。）３、１３３は、カラーインクジェットプリンタ、カラーファクシミリ、カラースキャナ、フラッシュメモリ用の外部ストレージ等を含んで構成され、周辺装置（コンピュータ）の一例である。ＭＦＰ３、１３３は、ＡＢＣ社製のＫｍｍｎというモデル名のＭＦＰである。なお、周辺装置としては、プリンタ、複写機、ファクシミリ、スキャナ、デジタルカメラ、及びこれらの複合機能を備える装置等であってもよい。
【００６６】
ＭＦＰ３、及びＭＦＰ１３３のプリンタ機能に関しては、図２のプリンタに示すようなハードウェアを含んで構成される。また、ＭＦＰ３は、Ｅｔｈｅｒｎｅｔ（登録商標）で構成されるネットワーク１１に接続され、インターネット１２にも接続されている。ＭＦＰ１３３は、Ｅｔｈｅｒｎｅｔ（登録商標）で構成されるネットワーク１３４に接続され、インターネット１２にも接続されている。
【００６７】
ルーター（Ｒｏｕｔｅｒ）１３は、Ｗｉ−Ｆｉ（登録商標）の無線ＬＡＮを備えるブロードバンドルーター（Ｗｉ−Ｆｉ  ＢＢ  Ｒｏｕｔｅｒ）等であり、インターネット１２に接続されている。モバイルデバイス（ＭｏｂｉｌｅＤｅｖｅｃｅ）１４は、携帯電話、携帯情報端末等である。モバイルデバイス１４は、ルーター１３と接続され、ルーター１３を介してインターネット１２にも接続されている。ＰＣ１、ＰＣ２、ＰＣ５、ＰＣ１４７、ＰＣ７、モバイルデバイス１４、ＭＦＰ３、及びＭＦＰ１３３は、インターネット１２を介して互いに双方向通信が可能である（通信可能に接続されている）。Ｗｅｂブラウザ（Ｗｅｂ  Ｂｒｏｗｓｅｒ）９は、ＰＣ１にインストールされ、Ｗｅｂブラウザ１５は、モバイルデバイス１４にインストールされている。
【００６８】
アプリケーション（Ａｐｐｌｉｃａｔｉｏｎ）１４５は、Ｗｅｂサービスを利用した文書作成用のアプリケーションであり、以下では、文書作成ＡＰＰ１４５と称する。アプリケーション（Ａｐｐｌｉｃａｔｉｏｎ）１４６は、Ｗｅｂサービスを利用したクラウド印刷サービスを提供するアプリケーションであり、以下では、クラウド印刷ＡＰＰ１４６と称する。クラウド印刷ＡＰＰ１４６は、例えば、Ｇｏｏｇｌｅ社が提供するＧＣＰと同等の機能を有する。このクラウド印刷サービスを利用することで、ＰＣ１内のＷｅｂブラウザ９やモバイルデバイス内のＷｅｂブラウザ１５から、文書作成ＡＰＰ１４５を実行し、ある文書を開き、その文書をＭＦＰ３やＭＦＰ１３３で印刷することができるようになる。
【００６９】
例えば、ユーザが、開いている文書を印刷する場合、図１１に示す印刷メニュー１１４１を選択すると、クラウド印刷ＡＰＰ１４６により図１２に示す印刷ダイアログ１４２が表示される。ユーザが印刷ダイアログ１４２でプリンタを選択し、印刷ボタン５３４を押して印刷の実行を指示すると、文書作成ＡＰＰ１４５は、印刷画像をＰＤＦファイルとして生成する。そして、クラウド印刷ＡＰＰ１４６は、この印刷画像（ＰＤＦファイル）と印刷ダイアログ１４２で選択されている印刷設定値とから印刷ジョブを生成し、クラウド印刷サービス内の選択されたプリンタ用のプリントキューにその印刷ジョブを格納する。また、クラウド印刷ＡＰＰ１４６は、そのプリンタ（後述する本実施形態の例ではプロキシＡＰＰ１４３）に対して印刷ジョブ通知を送信する。
【００７０】
プリンタやＭＦＰがＰＤＦファイルをレンダリングする機能を備えている場合、プリンタやＭＦＰは、プリントキューに格納されている印刷ジョブを印刷することができる。しかしながら、多くの廉価版のインクジェットプリンタやＭＦＰにおいては、プリンタやＭＦＰがＰＤＦファイルをレンダリングする機能を備えていない。故に、このようなプリンタ等でプリントキューに格納されている印刷ジョブを印刷する場合、ＰＤＦファイルの印刷画像を、ＪＰＥＧファイル等、廉価版のプリンタ等でレンダリングできるタイプの画像フォーマットに変換すること（前処理の一例）が必要となる。
【００７１】
アプリケーション（Ａｐｐｌｉｃａｔｉｏｎ）１４３は、ＭＦＰ３及びＭＦＰ１３３をクラウド印刷ＡＰＰ１４６が提供するクラウド印刷サービスに対応させるためのクラウド印刷プロキシサービスを提供するアプリケーションである。アプリケーション（Ａｐｐｌｉｃａｔｉｏｎ）１４３は、ＭＦＰ３及びＭＦＰ１３３とクラウド印刷ＡＰＰ１４６との中継処理を行う中継サービス装置であり、以下では、プロキシＡＰＰ１４３と称する。ＰＣ２にインストールされているプロキシＡＰＰ１４３は、５０００台のプリンタやＭＦＰを一度に管理し、それぞれのプリンタやＭＦＰをクラウド印刷ＡＰＰ１４６が提供するクラウド印刷サービスに対応させることができる。
【００７２】
アプリケーション（Ａｐｐｌｉｃａｔｉｏｎ）１４４は、ＰＤＦファイルをＪＰＥＧファイルに変換する画像変換サービスを提供するアプリケーションである。ある。アプリケーション（Ａｐｐｌｉｃａｔｉｏｎ）１４４はプロキシＡＰＰ１４３と通信し、クラウド印刷サービスに関する関連処理を行う中間サービス装置として機能し、以下では、画像変換ＡＰＰ１４４と称する。
【００７３】
アプリケーション（Ａｐｐｌｉｃａｔｉｏｎ）１４８は、プロキシＡＰＰ１４３が画像変換ＡＰＰ１４４を利用する際にユーザ認証を行い、画像変換ＡＰＰ１４４を利用するためのアクセストークンを発行する認証サービスを提供するアプリケーションである。なお、以下では認証ＡＰＰ１４８と称する。認証ＡＰＰ１４８は、認証サービス装置として機能し、プロキシＡＰＰ１４３が画像変換ＡＰＰ１４４を利用する際に認証を行うためのアクセストークンを発行する。クラウド印刷サービス１４６が、例えばＧＣＰであればベンダーが異なるため、認証ＡＰＰ１４８が提供する認証処理サービスは、クラウド印刷ＡＰＰ１４６が使用している認証システムや認証サービスとは異なる。クラウド印刷ＡＰＰ１４６は、後述するように、画像変換ＡＰＰ１４４がクラウド印刷ＡＰＰ１４６を利用する際に認証を行うためのアクセストークンを発行する。なお、クラウド印刷ＡＰＰ１４６が発行するアクセストークンは、クラウド印刷ＡＰＰ１４６が提供するクラウド印刷サービスが発行してもよい。認証ＡＰＰ１４８は、次に示すＷｅｂサービスＡＰＩをエクスポートしている。
・ログイン関数
・ログアウト関数
・ユーザ登録関数
・ユーザ認証関数
・アクセストークン生成関数
・アクセストークン妥当性確認関数
・アクセストークン有効期限確認関数
これらの関数については、ＳＳＬ通信で暗号化されたＨＴＴＰＳのＰＯＳＴメソッドが利用されている。これらの処理に係るプログラムは、ＰＣ１４７に組み込まれ、後述する図２に示すＨＤＤ２０５に記憶されており、ＣＰＵ２０２によりＲＡＭ２０３に読み出されて実行される。
【００７４】
ここで、クラウド印刷ＡＰＰ１４６が提供するクラウド印刷サービスを利用するために、ユーザアカウントとパスワードとを用いたログインが必要となる。そして、クラウド印刷ＡＰＰ１４６は、印刷に利用可能なプリンタやＭＦＰをクラウド印刷サービスに登録する際に、まず、そのユーザアカウントとパスワードとを使って、クラウド印刷サービスを利用する際のアクセストークンを取得する。そして、クラウド印刷ＡＰＰ１４６は、取得したアクセストークンを利用し、そのユーザアカウントにプリンタやＭＦＰを関連付けて登録する。
【００７５】
また、クラウド印刷ＡＰＰ１４６は、プリンタやＭＦＰの登録の際に、各プリンタやＭＦＰに対して一意の値で表わされるプリンタＩＤを発行して割り当て、プリンタＩＤを登録の対象のプリンタ等に通知する。なお、プリンタ等の登録に関する処理に関しては、その詳細な説明を省略する。
【００７６】
ＰＣ１、ＰＣ２、ＰＣ５、及びＰＣ７の各々は、図２のプリントサーバ、認証サーバ、クライアント端末に示すようなハードウェアを含んで構成されている。プロキシＡＰＰ１４３、図１０に示す各モジュール（ソフトウェア）等のプログラムは、ＨＤＤ２０５に記憶され、ＣＰＵ２０２により必要に応じてＲＡＭ２０３に読み出されて実行される。これにより、プロキシＡＰＰ１４３の機能、図１０に示す各モジュール（ソフトウェア）の機能などが実現される。また、各種のデータベース（ＤＢ）は、ＨＤＤ２０５に設けられ、データベースの情報は、ＣＰＵ２０２により必要に応じてＲＡＭ２０３に読み出される。ＭＦＰ３及びＭＦＰ１３３のプリンタ機能に関しては、図２のプリンタに示すようなハードウェアを含んで構成されている。尚、ＭＦＰを構成する読取り部、ファクシミリ制御部、外部ストレージ制御部に関しては、本実施例と直接関係ないので、その説明を省略する。
【００７７】
図１０は、ＰＣのソフトウェアの構成の一例を示す図である。図１０では、ＰＣ２を例に挙げて説明する。Ｉ／Ｆ９２は、Ｅｔｈｅｒｎｅｔ（登録商標）等のＩ／Ｆを制御するＩ／Ｆ制御スタックである。ＩＰ  Ｎｅｔｗｏｒｋ９１は、ＩＰ  Ｎｅｔｗｏｒｋを制御するＩＰ  Ｎｅｔｗｏｒｋ制御スタックである。Ｉｎｔｅｒｎｅｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｅｒｖｉｃｅｓ（ＩＩＳ）９０は、ＩＩＳを制御するＩＩＳ制御部であり、アプリケーション１５０は、このＩＩＳ制御部のＷｅｂサーバ機能を利用してＷｅｂサービスを提供する。ＪＡＶＡ（登録商標）  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ（Ｊａｖａ  ＶＭ）８９は、Ｊａｖａバイトコードをプラットフォームのネイティブコードに変換して実行するソフトウェアであり、プロキシＡＰＰ１４３は、ＪＡＶＡ  ＶＭ８９上で実行される。Ａｐｐｌｉｃａｔｉｏｎｓ８２は、アプリケーション群であり、プロキシＡＰＰ１４３、アプリケーション１５０等から構成される。
【００７８】
図１１は、ＰＣ１の文書作成ＡＰＰ１４５が提供するＷｅｂブラウザ９の一例を示す図である。図１１は、ある文書を開いている状態を表す。印刷メニュー１１４１は、印刷に関する各種の操作を受け付ける。例えば、ユーザがＫＢＤ２０３等の入力部を操作（ユーザ操作）し、開いている文書を印刷するときに印刷メニュー１１４１を押下すると、図１２に示す印刷ダイアログ１４２が表示される。
【００７９】
図１２は、印刷ダイアログ１４２の一例を示す図である。印刷ダイアログ１４２は、ユーザに対するＭＦＰ３、１３３用の印刷設定画面として、クラウド印刷ＡＰＰ１４６により制御される。また、印刷ダイアログ１４２は、Ｗｅｂブラウザ９、１５を利用して、そのＷｅｂブラウザ上に表示される。
【００８０】
プリンタ選択肢５３５、５３６、５３７の各々は、選択可能なプリンタの選択肢である。プリンタ選択肢５３５、５３６、５３７は、それぞれ、ＧＨＩ社製のＡｋｂＮｍｂというモデル名のプリンタ、ＡＢＣ社製のＫｍｍｎというモデル名のＭＦＰ（ＭＦＰ３）、ＤＥＦ社製のＸｙｚというモデル名のプリンタに該当する選択肢を表す。図１２では、ＭＦＰ３を表すプリンタ選択肢５３６が選択されている状態が示されている。
【００８１】
用紙サイズ選択部５３０では、次に示す選択肢の中からＭＦＰ３で印刷する用紙のサイズがユーザ操作に応じて選択される。図１２では、Ｌｅｔｔｅｒが選択されている状態が示されている。
用紙サイズの選択肢：Ａ５、Ａ４、Ｂ５、Ｌｅｔｔｅｒ
【００８２】
用紙の種類選択部５３１では、次に示す選択肢の中からＭＦＰ３で印刷する用紙の種類がユーザ操作に応じて選択される。図１２では、Ｐｌａｉｎ  Ｐａｐｅｒが選択されている状態が示されている。
用紙の種類の選択肢：Ｐｌａｉｎ  Ｐａｐｅｒ、Ｐｈｏｔｏ  Ｐａｐｅｒ、Ｐｏｓｔｃａｒｄ
【００８３】
印刷品位選択部５３２では、次に示す選択肢の中からＭＦＰ３で印刷する印刷品位がユーザ操作に応じて選択される。図１２では、Ｓｔａｎｄａｒｄが選択されている状態が示されている。
印刷品位の選択肢：Ｈｉｇｈ、Ｓｔａｎｄａｒｄ、Ｆａｓｔ
【００８４】
色／濃度選択部５３３では、次に示す選択肢の中からＭＦＰ３で印刷する色や濃度がユーザ操作に応じて選択される。図１２では、Ａｕｔｏが選択されている状態が示されている。
印刷品位の選択肢：Ａｕｔｏ、Ｍａｎｕａｌ
【００８５】
印刷ボタン５３４は、印刷の開始の指示を受け付ける。ユーザ操作により印刷ボタン５３４が押下されると、クラウド印刷ＡＰＰ１４６は、プリンタ選択肢５３６に関連付けられているＭＦＰ３用の印刷ジョブを生成する。クローズボタン５３８は、印刷ダイアログ１４２を閉じる指示を受け付ける。ユーザ操作によりクローズボタン５３８が押下されると、クラウド印刷ＡＰＰ１４６は、印刷ダイアログ１４２を閉じる。
【００８６】
図１３、図１４、図１５は、本周辺装置制御システム全体の処理に係るフローチャートの一例を示す図である。これらのフローチャートに係るプログラムは、ＰＣまたはＭＦＰ内に組み込まれている。ＰＣ上で動作するアプリケーションのプログラムは、ＨＤＤ２０５に記憶されており、ＣＰＵ２０２によりＲＡＭ２０３に読み出されて実行される。ＭＦＰ上で動作するアプリケーションのプログラムは、ＲＯＭ１６に記憶されており、ＲＡＭ１７に読み出され、ＣＰＵ２５により実行される。
【００８７】
これらのフローチャートにおいて、縦の列が処理の実行元を表し、本実施形態では図面の左側から、ユーザ（Ｗｅｂブラウザ９）、文書作成ＡＰＰ１４５、クラウド印刷ＡＰＰ１４６、プロキシＡＰＰ１４３、画像変換ＡＰＰ１４４、ＭＦＰ３を記す。以下では、ユーザがＰＣ１を使ってドキュメントの印刷をＭＦＰ３で行うケース（ドキュメントの印刷に係る一連の処理）を例に挙げて通信制御方法について説明する。
【００８８】
まず、ＭＦＰ３が印刷ジョブをポーリングする構成についてＳ２６１７〜Ｓ２６２１を用いて説明する。図１３において、Ｓ２６１７は、便宜的にＭＦＰ３側から見たドキュメントの印刷の開始を表すステップである。なお、このステップは、ＭＦＰ３内の処理の実行には一切影響を与えるものではなく、単にこのフローチャートの開始を表すものである。
【００８９】
Ｓ２６１８では、ＭＦＰ３は、プロキシＡＰＰ１４３がエクスポートしているＷｅｂサービスＡＰＩのＣｈｅｃｋＰｒｉｎｔＪｏｂ関数をコールする。Ｓ２６１８において、ＭＦＰ３が、この関数をコールするときに、ＨＴＴＰのＧＥＴ要求のクエリパラメータとしてプロキシＡＰＰ１４３に渡す情報（確認情報の一例）は、次に示すような情報である。
・クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤ
・ランダムコード
【００９０】
また、ＣｈｅｃｋＰｒｉｎｔＪｏｂ関数をコールするタイミングは任意であり、定常的にコールするポーリングの形態とするが、この形態に限られるものではない。例えば、ユーザから指定されたときにコールする形態であってもよい。更に、クエリパラメータに含まれる確認情報もプリンタＩＤ、ランダムコードに限られるものではない。ランダムコードは、ＭＦＰ３が生成した任意の３２ビットの値である。プロキシＡＰＰ１４３は、ＣｈｅｃｋＰｒｉｎｔＪｏｂ関数がコールされると、図１６（Ａ）で後述するＣｈｅｃｋＰｒｉｎｔＪｏｂ関数の処理を実行し、そのレスポンス（応答情報の一例）をＭＦＰ３に返す（Ｓ２６１９）。
【００９１】
続いて、ＭＦＰ３は、プロキシＡＰＰ１４３からのＣｈｅｃｋＰｒｉｎｔＪｏｂ関数のレスポンスを受信すると、レスポンス内の応答メッセージに含まれている情報（「印刷ジョブ有り応答」又は「印刷ジョブ無し応答」）を確認する（Ｓ２６２０）。Ｓ２６２０において、ＭＦＰ３は、「印刷ジョブ有り応答」を受信したと判断した場合、図１４のＳ２７０８に処理を移し、他方、「印刷ジョブ無し応答」を受信したと判断した場合、Ｓ２６２１に処理を移す。
【００９２】
Ｓ２６２１では、ＭＦＰ３は、一定の時間（本実施形態では１分間）待った後、Ｓ２６１８に処理を移す。このように、ＭＦＰ３は、プロキシＡＰＰ１４３がエクスポートしているＣｈｅｃｋＰｒｉｎｔＪｏｂ関数を一定の時間間隔で（定期的に）ポーリングする。
【００９３】
次に、ドキュメントの印刷処理について説明する。ここで、Ｓ２６０１は、便宜的にユーザ側から見た場合のドキュメントの印刷の開始を表すステップである。なお、このステップは、ユーザ操作やアプリケーションの実行には一切影響を与えるものではなく、単にこのフローチャートの開始を表すものである。
【００９４】
まず、ユーザは、Ｗｅｂブラウザ９を起動して文書作成ＡＰＰ１４５のＵＲＬにアクセスしてログインする。そして、ユーザは、ある文書を指定してその文書を開く指示を行うと、Ｗｅｂブラウザ９は、その文書を入力パラメータとして、文書作成ＡＰＰ１４５がエクスポートしているＷｅｂサービスＡＰＩのＯｐｅｎＤｏｃｕｍｅｎｔ関数をコールする（Ｓ２６０２）。
【００９５】
文書作成ＡＰＰ１４５は、ＯｐｅｎＤｏｃｕｍｅｎｔ関数がコールされると、入力パラメータで指定された文書を開いてその情報をＷｅｂブラウザ９に送信する（Ｓ２６０３）。例えば、図１１に示すように、Ｗｅｂブラウザ９上で文書作成ＡＰＰ１４５を介して当該文書が開かれた状態となる。ユーザ操作により、当該文書を印刷するために印刷メニュー１１４１が押下されると、Ｗｅｂブラウザ９を介してその情報が文書作成ＡＰＰ１４５に通知される（Ｓ２６０４）。文書作成ＡＰＰ１４５は、この通知を受け取ると、クラウド印刷ＡＰＰ１４６がエクスポートしているＷｅｂサービスＡＰＩのＰｒｉｎｔＤｉａｌｏｇ関数をコールする（Ｓ２６０５）。
【００９６】
クラウド印刷ＡＰＰ１４６は、ＰｒｉｎｔＤｉａｌｏｇ関数がコールされると、印刷ダイアログ１４２を開いて、その情報をＷｅｂブラウザ９に送信する（Ｓ２６０６）。例えば、図１２に示すように、Ｗｅｂブラウザ９上に印刷ダイアログ１４２が表示される。
【００９７】
ユーザは、入力部を操作して、複数のプリンタ選択肢の中から印刷するプリンタ（図１２の例ではＭＦＰ３に関連付けられているプリンタ選択肢５３６）を選択し、各印刷設定値の中から希望する設定値を選択し、印刷ボタン５３４を押下する。印刷ボタン５３４が押下されると、Ｗｅｂブラウザ９を介してそのユーザからの印刷開始要求を示す情報と印刷設定値に関する情報とが文書作成ＡＰＰ１４５に通知される（Ｓ２６０７）。
【００９８】
印刷設定値に関する情報は、例えば、ユーザが選択した印刷設定値が記されている印刷設定ファイル（ＸＭＬファイル）が格納されているＵＲＬである。文書作成ＡＰＰ１４５は、この通知を受け取ると、印刷画像をＰＤＦファイルとして生成する。そして、文書作成ＡＰＰ１４５は、生成したＰＤＦファイル、印刷設定値に関する情報等を入力パラメータとして、クラウド印刷ＡＰＰ１４６がエクスポートしているＷｅｂサービスＡＰＩのＳｕｂｍｉｔＰｒｉｎｔＪｏｂ関数をコールする（Ｓ２６０８）。
【００９９】
クラウド印刷ＡＰＰ１４６は、ＳｕｂｍｉｔＰｒｉｎｔＪｏｂ関数がコールされると、入力パラメータで指定されたＰＤＦファイル、印刷設定値に関する情報等をもとに印刷ジョブを生成する。そして、クラウド印刷ＡＰＰ１４６は、選択されているプリンタ選択肢に関連付けられているプリンタ（本例では、画像フォーマットの変換が必要なＭＦＰ３であるのでプロキシＡＰＰ１４３）に印刷ジョブ通知を送信する（Ｓ２６０９）。
【０１００】
また、印刷ジョブには、少なくとも次に示すような情報（以下では、印刷ジョブ情報と称する。）が含まれている。
・クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤ
・クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤ
・クラウド印刷サービスを利用するためのアクセストークン
・印刷設定値が記されている印刷設定ファイル（ＸＭＬファイル）が格納されているＵＲＬ
・印刷画像（ＰＤＦファイル）の格納先のＵＲＬ
・タイムスタンプ
【０１０１】
プロキシＡＰＰ１４３は、印刷ジョブ通知を受信すると、クラウド印刷ＡＰＰ１４６がエクスポートしているＷｅｂサービスＡＰＩのＦｅｔｃｈＰｒｉｎｔＪｏｂ関数をコールする（Ｓ２６１０）。クラウド印刷ＡＰＰ１４６は、ＦｅｔｃｈＰｒｉｎｔＪｏｂ関数がコールされると、Ｓ２６０９で生成した印刷ジョブに含まれている情報（印刷ジョブ情報）をプロキシＡＰＰ１４３に送信する（Ｓ２６１１）。
【０１０２】
プロキシＡＰＰ１４３は、印刷ジョブ情報を受信すると、印刷ジョブ情報の中から必要な情報を取得し、取得した情報とその他の制御で必要な情報とを印刷ジョブ管理データベースに保存する（Ｓ２６２２）。そして、プロキシＡＰＰ１４３は、画像変換ＡＰＰ１４４がエクスポートしているＷｅｂサービスＡＰＩのＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数をコールする（Ｓ２６２２）。
【０１０３】
Ｓ２６２２において、プロキシＡＰＰ１４３が、この関数をコールするときに、ＨＴＴＰＳのＰＯＳＴ要求の入力パラメータとして画像変換ＡＰＰ１４４に渡す情報（前処理情報の一例）は、次に示すような情報である。
・認証ＡＰＰ１４８を利用する管理者ＩＤ
・認証ＡＰＰ１４８を利用する管理者パスワード
・画像変換ＡＰＰ１４４を利用するユーザＩＤ
・画像変換ＡＰＰ１４４を利用するユーザパスワード
・サービスＩＤ
・クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤ
・クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤ
・画像変換ＡＰＰ１４４を利用するためのアクセストークン
ここで、サービスＩＤは、各クラウド印刷サービスを特定するＩＤを表し、例えば、次に示すようなＩＤを指定可能である。尚、カッコ（  ）内は各クラウド印刷サービスの概要である。
ＧＣＰ  Ｃｏｎｓｕｍｅｒ  （コンシューマ用ＧＣＰ）
ＧＣＰ  Ｅｎｔｅｒｐｒｉｓｅ  （エンタープライズ用ＧＣＰ）
Ｅｍａｉｌ  Ｐｒｉｎｔ  Ｃｏｎｓｕｍｅｒ  （コンシューマ用Ｅｍａｉｌ印刷）
Ｅｍａｉｌ  Ｐｒｉｎｔ Ｅｎｔｅｒｐｒｉｓｅ  （エンタープライズ用Ｅｍａｉｌ印刷）
ＡＢＣ  Ｃｌｏｕｄ  Ｐｒｉｎｔ  （ＡＢＣ社が提供するクラウド印刷）
【０１０４】
「認証ＡＰＰ１４８を利用する管理者ＩＤ」は、プロキシＡＰＰ１４３の識別情報であり、プロキシＡＰＰ１４３内に予め登録されている。「認証ＡＰＰ１４８を利用する管理者パスワード」は、そのプロキシＡＰＰ１４３ＩＤを認証するためのパスワードであり、プロキシＡＰＰ１４３内に予め登録されている。「画像変換ＡＰＰ１４４を利用するユーザＩＤ」は、プロキシＡＰＰ１４３が管理する各ＭＦＰに対してそれぞれユニークに割り当てた識別情報であり、「画像変換ＡＰＰ１４４を利用するユーザパスワード」はそのユーザＩＤを認証するためのパスワードである。「画像変換ＡＰＰ１４４を利用するユーザＩＤ」と「画像変換ＡＰＰ１４４を利用するユーザパスワード」は、プロキシＡＰＰ１４３によって自動的に生成される。
【０１０５】
Ｓ２６２２において、プロキシＡＰＰ１４３は、「画像変換ＡＰＰ１４４を利用するためのアクセストークン」に、画像変換ＡＰＰ１４４を利用するためのアクセストークンをロードしてセットする。この画像変換ＡＰＰ１４４を利用するためのアクセストークンは、前回ＭＦＰ用としてＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数のレスポンスとして渡されて、印刷ジョブ管理データベースに保存されている。例えば、あるＭＦＰで初めて印刷を行う場合、画像変換ＡＰＰ１４４を利用するためのアクセストークンが印刷ジョブ管理データベースに保存されていない。そのためプロキシＡＰＰ１４３は、ＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数をコールするときに、ＨＴＴＰＳのＰＯＳＴ要求の入力パラメータとして渡す「画像変換ＡＰＰ１４４を利用するためのアクセストークン」に、値をセットしない。例えば、そのＭＦＰにおける２回目以降の印刷を行う場合、プロキシＡＰＰ１４３は、そのＭＦＰにおける前回の印刷時に使用した、画像変換ＡＰＰ１４４を利用するためのアクセストークンを印刷ジョブ管理データベースからロードする。そして、ＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数をコールするときのＨＴＴＰＳのＰＯＳＴ要求の入力パラメータとしてそれをセットする。
【０１０６】
画像変換ＡＰＰ１４４は、ＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数がコールされると、図２１で後述するＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数の処理を実行し、そのレスポンスをプロキシＡＰＰ１４３に返す（Ｓ２６２３）。このレスポンスには、認証ＡＰＰ１４８が発行した、画像変換ＡＰＰ１４４を利用するためのアクセストークンが含まれている。すなわち、このとき画像変換ＡＰＰ１４４のＣＰＵ２０２は、プロキシＡＰＰ１４３から認証要求を受け付けた時に該認証要求を認証ＡＰＰ１４８に送信し、アクセストークンを取得する取得手段として機能する。
【０１０７】
プロキシＡＰＰ１４３は、画像変換ＡＰＰ１４４からのＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数のレスポンスを受信すると、前記レスポンスに含まれている画像変換ＡＰＰ１４４を利用するためのアクセストークンを印刷ジョブ管理データベースに保存する。次に、プロキシＡＰＰ１４３は、画像変換ＡＰＰ１４４がエクスポートしているＷｅｂサービスＡＰＩのＣｒｅａｔｅＰｒｉｎｔＪｏｂＳｅｔ関数をコールする（Ｓ２６１２）。
【０１０８】
Ｓ２６１２において、プロキシＡＰＰ１４３が、この関数をコールするときに、ＨＴＴＰＳのＰＯＳＴ要求の入力パラメータとして画像変換ＡＰＰ１４４に渡す情報（前処理情報の一例）は、次に示すような情報である。
・サービスＩＤ
・クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤ
・クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤ
・画像変換ＡＰＰ１４４を利用するためのアクセストークン
・クラウド印刷サービスを利用するためのアクセストークン
・印刷画像（ＰＤＦファイル）の格納先のＵＲＬ
【０１０９】
また、Ｓ２６２２において、印刷ジョブ管理データベースには、次に示すような情報が保存される。
［印刷ジョブ管理データベース］
・検索キー：クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤ
・サービスＩＤ
・クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤ
・画像変換ＡＰＰ１４４を利用するためのアクセストークン
・クラウド印刷サービスを利用するためのアクセストークン
・印刷設定ファイル（ＸＭＬファイル）の格納先のＵＲＬ
・印刷画像（ＰＤＦファイル）の格納先のＵＲＬ
・画像変換ＡＰＰ１４４へのアクセストークン
・印刷ジョブアクセスＵＲＬ（ＪＰＥＧファイルの格納先のＵＲＬ）
・印刷画像（ＪＰＥＧファイル）の総ページ数
・印刷ジョブ準備完了（ＰｒｉｎｔＪｏｂＲｅａｄｙ）（０：未完了、１：完了）
【０１１０】
このとき、プロキシＡＰＰ１４３は、印刷ジョブ準備完了（ＰｒｉｎｔＪｏｂＲｅａｄｙ）に、印刷ジョブ準備が未完了であることを表す初期値として「０」をセットする。また、プロキシＡＰＰ１４３は、印刷画像（ＪＰＥＧファイル）の総ページ数に初期値「０」をセットする。
【０１１１】
画像変換ＡＰＰ１４４は、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＳｅｔ関数がコールされると、図１７（Ａ）で後述するＣｒｅａｔｅＰｒｉｎｔＪｏｂＳｅｔ関数の処理を実行し、そのレスポンスをプロキシＡＰＰ１４３に返す（Ｓ２６１３）。このレスポンスには、画像変換ＡＰＰ１４４が発行したセッションＩＤが含まれている。
【０１１２】
プロキシＡＰＰ１４３は、画像変換ＡＰＰ１４４からＣｒｅａｔｅＰｒｉｎｔＪｏｂＳｅｔ関数のレスポンスを受信すると、画像変換ＡＰＰ１４４がエクスポートしているＷｅｂサービスＡＰＩのＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数をコールする（Ｓ２６１４）。Ｓ２６１４において、プロキシＡＰＰ１４３が、この関数をコールするときに、ＨＴＴＰのＧＥＴ要求のクエリパラメータとして画像変換ＡＰＰ１４４に渡す情報（確認情報の一例）は、次に示すような情報である。
・セッションＩＤ
・シーケンス
【０１１３】
セッションＩＤは、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＳｅｔ関数のレスポンスの中に含まれている情報であり、シーケンスは、プロキシＡＰＰ１４３が生成した任意の番号である。
画像変換ＡＰＰ１４４は、ＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数がコールされると、図１８（Ａ）で後述するＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数の処理を実行し、そのレスポンス（応答情報の一例）をプロキシＡＰＰ１４３に返す（Ｓ２６１５）。
【０１１４】
プロキシＡＰＰ１４３は、画像変換ＡＰＰ１４４からのＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数のレスポンスを受信する。そして、プロキシＡＰＰ１４３は、そのレスポンス内の応答メッセージに含まれている内容（「処理中応答」、「処理完了応答」、又は「エラー応答」）を確認する（Ｓ２６１６）。Ｓ２６１６において、プロキシＡＰＰ１４３が「処理完了応答」を受信したと判断した場合、図１４のＳ２７０１に処理を移し、他方、「処理中応答」を受信したと判断した場合、Ｓ２６１４に処理を移す。
【０１１５】
なお、図１７（Ｂ）で後述する画像変換ＡＰＰ１４４のダウンロード・画像変換スレッドの処理でエラーが発生した場合、Ｓ２６１６において、プロキシＡＰＰ１４３が「エラー応答」を受信して印刷処理をエラー終了する。しかしながら、エラー終了するケースに関しては、本実施形態の本質から外れるので、その詳細な説明を省略する。よって、Ｓ２６１６以降では、プロキシＡＰＰ１４３が「処理完了応答」または「処理中応答」を受信した場合を中心に説明する。
【０１１６】
図１４に示すように、Ｓ２７０１では、プロキシＡＰＰ１４３は、画像変換ＡＰＰ１４４がエクスポートしているＷｅｂサービスＡＰＩのＣｒｅａｔｅＰｒｉｎｔＪｏｂＲｅｓｕｌｔ関数をコールする。Ｓ２７０１において、プロキシＡＰＰ１４３が、この関数をコールするときに、ＨＴＴＰＳのＰＯＳＴ要求の入力パラメータとして画像変換ＡＰＰ１４４に渡す情報（所在取得情報の一例）は、次に示すような情報である。
・クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤ
・クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤ
【０１１７】
画像変換ＡＰＰ１４４は、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＲｅｓｕｌｔ関数がコールされると、図１９で後述するＣｒｅａｔｅＰｒｉｎｔＪｏｂＲｅｓｕｌｔ関数の処理を実行し、そのレスポンスをプロキシＡＰＰ１４３に返す（Ｓ２７０２）。
【０１１８】
プロキシＡＰＰ１４３は、画像変換ＡＰＰ１４４からのＣｒｅａｔｅＰｒｉｎｔＪｏｂＲｅｓｕｌｔ関数のレスポンスを受信すると、ＰｒｉｎｔＪｏｂＲｅａｄｙに「１」をセットする（Ｓ２７０３）。そして、プロキシＡＰＰ１４３は、印刷ジョブ管理データベースの印刷ジョブ準備完了（ＰｒｉｎｔＪｏｂＲｅａｄｙ）に、印刷ジョブ準備完了を表す「１」をセットする（Ｓ２７０３）。これにより、ＭＦＰ３における印刷待ち状態となる（Ｓ２７０４）。
【０１１９】
図１３のＳ２６１８〜Ｓ２６２１で前述したように、ＭＦＰ３は、プロキシＡＰＰ１４３がエクスポートしているＣｈｅｃｋＰｒｉｎｔＪｏｂ関数を、一定の時間間隔でポーリングし、Ｓ２７０５は、Ｓ２６１８と同等な処理を表す。Ｓ２７０４でＭＦＰ３における印刷待ち状態となっているとき、Ｓ２７０５において、ＭＦＰ３が、プロキシＡＰＰ１４３がエクスポートしているＣｈｅｃｋＰｒｉｎｔＪｏｂ関数をコールした場合について説明する。プロキシＡＰＰ１４３は、ＣｈｅｃｋＰｒｉｎｔＪｏｂ関数がコールされると、図１６（Ａ）で後述するＣｈｅｃｋＰｒｉｎｔＪｏｂ関数の処理を実行し、そのレスポンスをＭＦＰ３に返す（Ｓ２７０６）。
【０１２０】
ＭＦＰ３は、プロキシＡＰＰ１４３からのＣｈｅｃｋＰｒｉｎｔＪｏｂ関数のレスポンスを受信すると、そのレスポンス内の応答メッセージに含まれている内容（「印刷ジョブ有り応答」又は「印刷ジョブ無し応答」）を確認する（Ｓ２７０７）。Ｓ２７０７において、ＭＦＰ３が「印刷ジョブ有り応答」を受信したと判断した場合、Ｓ２７０８に処理を移し、他方、「印刷ジョブ無し応答」を受信したと判断した場合、Ｓ２６２１に処理を移す。
【０１２１】
Ｓ２７０８では、ＭＦＰ３は、プロキシＡＰＰ１４３がエクスポートしているＷｅｂサービスＡＰＩのＧｅｔＰｒｉｎｔＪｏｂ関数をコールする。Ｓ２７０８において、ＭＦＰ３が、この関数をコールするときに、ＨＴＴＰＳのＧＥＴ要求のクエリパラメータとしてプロキシＡＰＰ１４３に渡す情報（取得情報の一例）は、次に示すような情報である。
・クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤ
【０１２２】
プロキシＡＰＰ１４３は、ＧｅｔＰｒｉｎｔＪｏｂ関数がコールされると、図１６（Ｂ）で後述するＧｅｔＰｒｉｎｔＪｏｂ関数の処理を実行し、そのレスポンスをＭＦＰ３に返す（Ｓ２７０９）。ＭＦＰ３は、プロキシＡＰＰ１４３からのＧｅｔＰｒｉｎｔＪｏｂ関数のレスポンスを受信すると、レスポンス内の応答メッセージに含まれている内容をもとに、印刷画像取得要求を画像変換ＡＰＰ１４４に送信する（Ｓ２７１０）。
【０１２３】
ここで、レスポンス内の応答メッセージに含まれている内容は、印刷ジョブアクセスＵＲＬ（印刷画像（ＪＰＥＧファイル）の格納先のＵＲＬ）、印刷画像（ＪＰＥＧファイル）の総ページ数、及び画像変換ＡＰＰ１４４へのアクセストークンである。また、印刷画像取得要求は、画像変換ＡＰＰ１４４から各ページの印刷画像（ＪＰＥＧファイル）を取得するための要求である。
【０１２４】
本実施形態では、印刷ジョブアクセスＵＲＬは、画像変換Ａｐｐ１４４を有するＰＣ５の格納先ＵＲＬとするが、それ以外のＰＣの格納先ＵＲＬであってもよい。また、例えば、印刷ジョブアクセスＵＲＬについては、直接ＰＣ５から送信する形態であってもよい。また、例えば、指定されたページの印刷画像を、Ａｐｐ１４３を有するＰＣ２がＰＣ５から取得し、取得した印刷画像をＰＣ２がＭＦＰ３に送信する形態であってもよい。また、例えば、ＰＣ２が、取得した印刷画像の格納先のＵＲＬをＭＦＰ３に送ってもよい。
【０１２５】
画像変換ＡＰＰ１４４は、ＭＦＰ３からの印刷画像取得要求を受信すると、指定されたページの印刷画像（ＪＰＥＧファイル）に対するＭＦＰ３からのアクセスを許可し、その印刷画像をＭＦＰ３に送信する（Ｓ２７１１）。ＭＦＰ３は、画像変換ＡＰＰ１４４から送信された印刷画像を受信すると、その印刷画像を印刷する（Ｓ２７１２）。続いて、ＭＦＰ３は、印刷画像（ＪＰＥＧファイル）の総ページ数をもとに、次ページの有無を確認する（Ｓ２７１３）。このとき、ＭＦＰ３は、次ページが有ると判断した場合、Ｓ２７１０に処理を移し、次ページの印刷画像を取得するための印刷画像取得要求を画像変換ＡＰＰ１４４に送信する。他方、ＭＦＰ３は、次ページが無いと判断した場合、図１５のＳ２８０１に処理を移す。
【０１２６】
Ｓ２７１０〜Ｓ２７１２における印刷画像（ＪＰＥＧファイル）の取得処理に関しては、ＳＳＬ通信で暗号化されたＨＴＴＰＳのＧＥＴメソッドが利用される。
【０１２７】
図１５に示すように、Ｓ２８０１では、ＭＦＰ３は、プロキシＡＰＰ１４３がエクスポートしているＷｅｂサービスＡＰＩのＥｎｄＰｒｉｎｔＪｏｂ関数をコールする。ＥｎｄＰｒｉｎｔＪｏｂ関数のコールについては、ＳＳＬ通信で暗号化されたＨＴＴＰＳのＧＥＴメソッドが利用されている。Ｓ２８０１において、ＭＦＰ３が、この関数をコールするときに、ＨＴＴＰＳのＧＥＴ要求のクエリパラメータとしてプロキシＡＰＰ１４３に渡す情報（終了情報の一例）は、次に示すような情報である。
・クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤ
・クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤ
【０１２８】
プロキシＡＰＰ１４３は、ＥｎｄＰｒｉｎｔＪｏｂ関数がコールされると（Ｓ２８０２）、画像変換ＡＰＰ１４４がエクスポートしているＷｅｂサービスＡＰＩのＪｏｂＣｏｍｐｌｅｔｅｄ関数をコールする（Ｓ２８０３）。Ｓ２８０３において、プロキシＡＰＰ１４３が、この関数をコールするときに、ＨＴＴＰＳのＰＯＳＴ要求の入力パラメータとして画像変換ＡＰＰ１４４に渡す情報（ジョブ処理終了情報の一例）は、次に示すような情報である。
・クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤ
・クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤ
【０１２９】
画像変換ＡＰＰ１４４は、ＪｏｂＣｏｍｐｌｅｔｅｄ関数がコールされると、図１８（Ｂ）で後述するＪｏｂＣｏｍｐｌｅｔｅｄ関数の処理を実行し、そのレスポンスをプロキシＡＰＰ１４３に返す（Ｓ２８０４）。プロキシＡＰＰ１４３は、画像変換ＡＰＰ１４４からのＪｏｂＣｏｍｐｌｅｔｅｄ関数のレスポンスを受信すると、印刷ジョブ管理データベースからこの印刷ジョブに関する情報を削除して、印刷ジョブ管理データベースを更新する（Ｓ２８０５）。そして、プロキシＡＰＰ１４３は、ドキュメントの印刷処理を終了する（Ｓ２８０６）。
【０１３０】
次に、プロキシＡＰＰ１４３がエクスポートするＷｅｂサービスＡＰＩの処理について図１６を用いて説明する。図１６（Ａ）は、ＣｈｅｃｋＰｒｉｎｔＪｏｂ関数の処理に係るフローチャートの一例を示す図である。図１６（Ｂ）は、ＧｅｔＰｒｉｎｔＪｏｂ関数の処理に係るフローチャートの一例を示す図である。ＣｈｅｃｋＰｒｉｎｔＪｏｂ関数については、ＨＴＴＰのＧＥＴメソッドが利用されている。ＧｅｔＰｒｉｎｔＪｏｂ関数については、ＳＳＬ通信で暗号化されたＨＴＴＰＳのＧＥＴメソッドが利用されている。これらのフローチャートに係るプログラムは、ＰＣ２に組み込まれ、ＨＤＤ２０５に記憶されており、ＣＰＵ２０２によりＲＡＭ２０３に読み出されて実行される。
【０１３１】
図１３のＳ２６１８、図１４のＳ２７０５において、ＭＦＰ３がＣｈｅｃｋＰｒｉｎｔＪｏｂ関数をコールすると、プロキシＡＰＰ１４３が図１６（Ａ）に示すＣｈｅｃｋＰｒｉｎｔＪｏｂ関数の処理を実行する。
図１６（Ａ）に示すように、プロキシＡＰＰ１４３は、ＣｈｅｃｋＰｒｉｎｔＪｏｂ関数の処理を開始すると（Ｓ９０１）、印刷ジョブ管理データベースの印刷ジョブ準備完了（ＰｒｉｎｔＪｏｂＲｅａｄｙ）を確認する（Ｓ９０２）。Ｓ９０１において、ＨＴＴＰのＧＥＴ要求のクエリパラメータとして、クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤとランダムコードとがＭＦＰ３から渡される。
【０１３２】
プロキシＡＰＰ１４３は、印刷ジョブ準備完了（ＰｒｉｎｔＪｏｂＲｅａｄｙ）に印刷ジョブ準備が完了していることを表す「１」がセットされている、即ちＭＦＰ３の印刷ジョブが存在すると判断した場合（Ｓ９０３でＹＥＳの場合）、Ｓ９０４に処理を移す。他方、プロキシＡＰＰ１４３は、印刷ジョブの準備が未完了であることを表す「０」がセットされている、即ちＭＦＰ３の印刷ジョブが存在しないと判断した場合（Ｓ９０３でＮＯの場合）、Ｓ９０５に処理を移す。
【０１３３】
Ｓ９０４では、プロキシＡＰＰ１４３は、ＨＴＴＰのＧＥＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに「印刷ジョブ有り応答」をセットし、Ｓ９０６に処理を移す。Ｓ９０５では、プロキシＡＰＰ１４３は、ＨＴＴＰのＧＥＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに「印刷ジョブ無し応答」をセットし、Ｓ９０６に処理を移す。Ｓ９０６では、プロキシＡＰＰ１４３は、ＧＥＴ要求の発行元（本例ではＭＦＰ３）に対して応答メッセージを送信し、ＣｈｅｃｋＰｒｉｎｔＪｏｂ関数の処理を終了する（Ｓ９０７）。
【０１３４】
ここで、「印刷ジョブ有り応答」と「印刷ジョブ無し応答」との詳細を説明する。印刷ジョブ有りの状態を表す情報、及び印刷ジョブ無しの状態を表す情報は、それぞれ「１０１０１０１０」、「０１０１０１０１」である。「印刷ジョブ有り応答」及び「印刷ジョブ無し応答」は、それぞれ、ランダムコードとこれらの状態を表す情報とを用いて演算された結果であり、例えば、次に示す情報を文字列に変換した文字列情報で構成される。
「印刷ジョブ有り応答」  ＝  ランダムコード  ＸＯＲ  １０１０１０１０
「印刷ジョブ無し応答」  ＝  ランダムコード  ＸＯＲ  ０１０１０１０１
【０１３５】
このように、ＨＴＴＰのＧＥＴ要求に対するレスポンスとしてＸＭＬを使って定義した可視的な情報等ではなく一般には意味がわからない文字列情報を用いる。これにより、ＷｅｂサービスＡＰＩに対する不正なアクセスによる誤動作や不正な制御を防止することができる。なお、このような不正なアクセスを防止する構成は、この例に限られるものではなく、ハッシュ化等、より複雑な演算を組み合わせてもよい。
【０１３６】
また、図１４のＳ２７０８において、ＭＦＰ３がＧｅｔＰｒｉｎｔＪｏｂ関数をコールすると、プロキシＡＰＰ１４３は、図１６（Ｂ）に示すＧｅｔＰｒｉｎｔＪｏｂ関数の処理を実行する。図１６（Ｂ）に示すように、プロキシＡＰＰ１４３は、ＧｅｔＰｒｉｎｔＪｏｂ関数の処理を開始する（Ｓ９１１）。そして、プロキシＡＰＰ１４３は、ＨＴＴＰＳのＧＥＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに、印刷画像（ＪＰＥＧファイル）の格納先のＵＲＬをセットし（Ｓ９１２）、Ｓ９１３に処理を移す。
【０１３７】
Ｓ９１３では、プロキシＡＰＰ１４３は、ＨＴＴＰＳのＧＥＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに、印刷画像（ＪＰＥＧファイル）の総ページ数をセットし、Ｓ９１４に処理を移す。Ｓ９１４では、プロキシＡＰＰ１４３は、ＨＴＴＰＳのＧＥＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに、画像変換ＡＰＰ１４４へのアクセストークンをセットし、Ｓ９１５に処理を移す。Ｓ９１５では、プロキシＡＰＰ１４３は、ＧＥＴ要求の発行元（本例ではＭＦＰ３）に対して応答メッセージを送信し、ＧｅｔＰｒｉｎｔＪｏｂ関数の処理を終了する（Ｓ９１６）。
【０１３８】
次に、画像変換ＡＰＰ１４４がエクスポートするＷｅｂサービスＡＰＩとスレッド関数の処理とについて図１７を用いて説明する。図１７（Ａ）は、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＳｅｔ関数の処理に係るフローチャートの一例を示す図である。図１７（Ｂ）は、ダウンロード・画像変換スレッド関数の処理に係るフローチャートの一例を示す図である。ＣｒｅａｔｅＰｒｉｎｔＪｏｂＳｅｔ関数については、ＳＳＬ通信で暗号化されたＨＴＴＰＳのＰＯＳＴメソッドが利用されている。
【０１３９】
これらのフローチャートに係るプログラムは、ＰＣ５に組み込まれ、ＨＤＤ２０５に記憶されており、ＣＰＵ２０２によりＲＡＭ２０３に読み出されて実行される。
【０１４０】
図１３のＳ２６１２において、プロキシＡＰＰ１４３がＣｒｅａｔｅＰｒｉｎｔＪｏｂＳｅｔ関数をコールすると、画像変換ＡＰＰ１４４は、図１７（Ａ）に示すＣｒｅａｔｅＰｒｉｎｔＪｏｂＳｅｔ関数の処理を実行する。
【０１４１】
図１７（Ａ）に示すように、画像変換ＡＰＰ１４４は、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＳｅｔ関数の処理を開始し（Ｓ１００１）、図２２で後述するアクセストークンの確認処理を実行する（Ｓ１０１８）。このとき、次に示す情報をこの処理（サブルーチン関数）の引数として渡す。
・サービスＩＤ
・クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤ
・クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤ
・画像変換ＡＰＰ１４４を利用するためのアクセストークン
そして、画像変換ＡＰＰ１４４は、セッションＩＤを生成し、セッション管理データベースに保存し（Ｓ１００２）、Ｓ１００３に処理を移す。セッション管理データベースには、次に示すような情報が保存される。
【０１４２】
［セッション管理データベース］
・検索キー：画像変換ＡＰＰ１４４が発行したセッションＩＤ
・サービスＩＤ
・クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤ
・クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤ
・クラウド印刷サービスを利用するためのアクセストークン
・印刷画像（ＰＤＦファイル）の格納先のＵＲＬ
・画像変換ＡＰＰ１４４を利用するためのアクセストークン
・印刷ジョブアクセスＵＲＬ（ＪＰＥＧファイルの格納先のＵＲＬ）
・処理の進捗を表す進捗状況（Ｐｒｏｇｒｅｓｓ）
【０１４３】
ここで、画像変換ＡＰＰ１４４は、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＳｅｔ関数の入力パラメータの中からクラウド印刷ＡＰＰ１４６が発行したプリンタＩＤと印刷ジョブＩＤとを取得する。そして、画像変換ＡＰＰ１４４は、クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤと印刷ジョブＩＤとをセッション管理データベースに保存する。また、画像変換ＡＰＰ１４４は、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＳｅｔ関数の入力パラメータの中からクラウド印刷サービスを利用するためのアクセストークンを取得する。そして、画像変換ＡＰＰ１４４は、クラウド印刷サービスを利用するためのアクセストークンをセッション管理データベースに保存する。さらに、画像変換ＡＰＰ１４４は、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＳｅｔ関数の入力パラメータの中から印刷画像（ＰＤＦファイル）の格納先のＵＲＬを取得し、印刷画像（ＰＤＦファイル）の格納先のＵＲＬをセッション管理データベースに保存する。
【０１４４】
続いて、画像変換ＡＰＰ１４４は、セッション管理データベース内の処理の進捗を表す進捗状況（Ｐｒｏｇｒｅｓｓ）に処理中を表す「１」をセットし（Ｓ１００３）、Ｓ１００４に処理を移す。Ｓ１００４では、画像変換ＡＰＰ１４４は、ダウンロード・画像変換スレッドを生成し、Ｓ１００５に処理を移す。なお、ダウンロード・画像変換スレッドの処理に関しては、図１７（Ｂ）で後述する。
【０１４５】
続いて、画像変換ＡＰＰ１４４は、ＨＴＴＰＳのＰＯＳＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに、この関数が成功して正常終了したことを表すＳＵＣＣＥＳＳとＳ１００２で生成したセッションＩＤとをセットする（Ｓ１００５）。そして、画像変換ＡＰＰ１４４は、ＰＯＳＴ要求の発行元（本例ではプロキシＡＰＰ１４３）に対して応答メッセージを送信する（Ｓ１００５）。そして、画像変換ＡＰＰ１４４は、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＳｅｔ関数の処理を終了する（Ｓ１００６）。
【０１４６】
また、Ｓ１００４において画像変換ＡＰＰ１４４がダウンロード・画像変換スレッドを生成すると、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＳｅｔ関数とは別のスレッドが起動される。そして、このスレッドの中で図１７（Ｂ）に示すダウンロード・画像変換スレッドの処理が実行される。
【０１４７】
図１７（Ｂ）に示すように、画像変換ＡＰＰ１４４は、ダウンロード・画像変換スレッドの処理を開始する（Ｓ１０１１）。そして、画像変換ＡＰＰ１４４は、クラウド印刷サービスを利用するためのアクセストークンを利用し、ＳＳＬ通信で暗号化されたＨＴＴＰＳのＧＥＴメソッドにて印刷画像（ＰＤＦファイル）の格納先のＵＲＬにアクセスする。即ち、画像変換ＡＰＰ１４４は、クラウド印刷サービスから印刷画像（ＰＤＦファイル）をダウンロードして一時的にＲＡＭ２０３に保存する（Ｓ１０１２）。
【０１４８】
また、画像変換ＡＰＰ１４４は、ダウンロードを完了した後、印刷画像（ＰＤＦファイル）をＭＦＰ３で印刷可能な形式であるＪＰＥＧファイルに変換する。なお、ＰＣ５のＨＤＤ２０５には、プリンタやＭＦＰ毎に、印刷可能な形式を示す設定情報が予め記憶されている。そして、画像変換ＡＰＰ１４４は、クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤと印刷ジョブＩＤとから構成されるフォルダにそのＪＰＥＧファイルを保存する（Ｓ１０１３）。
【０１４９】
また、Ｓ１０１３において、画像変換ＡＰＰ１４４は、セッション管理データベース内の画像変換ＡＰＰ１４４へのアクセストークンに、画像変換ＡＰＰ１４４へのアクセストークンをセットする。画像変換ＡＰＰ１４４へのアクセストークンは、クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤが関連付けられているプリンタやＭＦＰ（本例ではＭＦＰ３）が印刷画像（ＪＰＥＧファイル）にアクセスするためのアクセストークンである。さらに、Ｓ１０１３において、画像変換ＡＰＰ１４４は、セッション管理データベース内の印刷ジョブアクセスＵＲＬに、印刷画像（ＪＰＥＧファイル）の格納先のＵＲＬ（１ページ目）をセットする。
［例］
プリンタＩＤ：ａｂｃｄｅ
印刷ジョブＩＤ：１２３４
印刷画像（ＪＰＥＧファイル）の総ページ数：３ページ
ＰＣ２内のデータストレージ：
C:\abcde1234\
p1.jpg
p2.jpg
p3.jpg
ＵＲＬ：http://www.abc.xxx/printdata/?pi=abcde&ji=1234&p=1
【０１５０】
このＵＲＬは、１ページ目のＪＰＥＧファイル（ｐ１．ｊｐｇ）を表すので、ＭＦＰ３は、各ページの印刷画像を取得するときは、ページ番号を表すクエリパラエータ「ｐ」に、取得するページ番号を指定する。Ｓ１０１３において、画像変換ＡＰＰ１４４は、印刷画像（ＰＤＦファイル）を変換し、全てのページの印刷画像（ＪＰＥＧファイル）の変換が完了した後、Ｓ１０１２でダウンロードした印刷画像（ＰＤＦファイル）をＲＡＭ２０３から削除する。
【０１５１】
続いて、画像変換ＡＰＰ１４４は、Ｓ１０１１〜Ｓ１０１３の何れかの処理においてエラーを検出したか否かを判断する（Ｓ１０１４）。このとき、画像変換ＡＰＰ１４４は、エラーを検出したと判断した場合、Ｓ１０１６に処理を移し、他方、エラーを検出しなかったと判断した場合、正常終了と判断してＳ１０１５に処理を移す。
【０１５２】
Ｓ１０１５では、画像変換ＡＰＰ１４４は、セッション管理データベース内の進捗状況（Ｐｒｏｇｒｅｓｓ）に正常終了を表す「０」をセットし、ダウンロード・画像変換スレッドの処理を終了する（Ｓ１０１７）。Ｓ１０１６では、画像変換ＡＰＰ１４４は、セッション管理データベース内の進捗状況（Ｐｒｏｇｒｅｓｓ）にエラー終了を表す「２」をセットし、ダウンロード・画像変換スレッドの処理を終了する（Ｓ１０１７）。
【０１５３】
Ｓ１０１７において、画像変換ＡＰＰ１４４は、セッション管理データベースからこの印刷ジョブに関する情報を削除し、セッション管理データベースを更新する。
【０１５４】
次に、画像変換ＡＰＰ１４４がエクスポートするＷｅｂサービスＡＰＩの処理について図１８を用いて説明する。図１８（Ａ）は、ＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数の処理に係るフローチャートの一例を示す図である。図１８（Ｂ）は、ＪｏｂＣｏｍｐｌｅｔｅｄ関数の処理に係るフローチャートの一例を示す図である。
【０１５５】
ここで、ＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数については、ＨＴＴＰのＧＥＴメソッドが利用されている。ＪｏｂＣｏｍｐｌｅｔｅｄ関数については、ＳＳＬ通信で暗号化されたＨＴＴＰＳのＰＯＳＴメソッドが利用されている。これらのフローチャートに係るプログラムは、ＰＣ５に組み込まれ、ＨＤＤ２０５に記憶されており、ＣＰＵ２０２によりＲＡＭ２０３に読み出されて実行される。
【０１５６】
図１３のＳ２６１４において、プロキシＡＰＰ１４３がＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数をコールすると、画像変換ＡＰＰ１４４が図１８（Ａ）に示すＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数の処理を実行する。
【０１５７】
図１８（Ａ）に示すように、画像変換ＡＰＰ１４４は、ＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数の処理を開始し（Ｓ１１０１）、図２２で後述するアクセストークンの確認処理を実行する（Ｓ１１２５）。このとき、次に示す情報をこの処理（サブルーチン関数）の引数として渡す。
・サービスＩＤ
・クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤ
・クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤ
・画像変換ＡＰＰ１４４を利用するためのアクセストークン
【０１５８】
このとき、ＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数に対するＨＴＴＰのＧＥＴ要求には、クエリパラメータとしてセッションＩＤとシーケンスとが含まれている。シーケンスは、ＧＥＴ要求の発行元（本例ではプロキシＡＰＰ１４３）が生成する任意の番号である。
【０１５９】
続いて、画像変換ＡＰＰ１４４は、クエリパラメータに含まれているセッションＩＤを検索キーとして、セッション管理データベース内の進捗状況（Ｐｒｏｇｒｅｓｓ）を確認する（Ｓ１１０２）。続いて、画像変換ＡＰＰ１４４は、進捗状況（Ｐｒｏｇｒｅｓｓ）に正常終了を表す「０」がセットされていると判断した場合（Ｓ１１０３でＹＥＳの場合）、Ｓ１１０４に処理を移す。他方、画像変換ＡＰＰ１４４は、「０」以外（「１」または「２」）がセットされていると判断した場合（Ｓ１１０３でＮＯの場合）、Ｓ１１０５に処理を移す。
【０１６０】
Ｓ１１０４では、画像変換ＡＰＰ１４４は、ＨＴＴＰのＧＥＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに「処理完了応答」をセットし、Ｓ１１０８に処理を移す。Ｓ１１０５では、画像変換ＡＰＰ１４４は、進捗状況（Ｐｒｏｇｒｅｓｓ）を確認する。このとき、画像変換ＡＰＰ１４４は、進捗状況（Ｐｒｏｇｒｅｓｓ）に処理中を表す「１」がセットされていると判断した場合、Ｓ１１０６に処理を移し、他方、「１」以外（「２」）がセットされている判断した場合、Ｓ１１０７に処理を移す。
【０１６１】
Ｓ１１０６では、画像変換ＡＰＰ１４４は、ＨＴＴＰのＧＥＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに「処理中応答」をセットし、Ｓ１１０８に処理を移す。Ｓ１１０７では、画像変換ＡＰＰ１４４は、ＨＴＴＰのＧＥＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに「エラー応答」をセットし、Ｓ１１０８に処理を移す。
【０１６２】
Ｓ１１０８では、画像変換ＡＰＰ１４４は、ＧＥＴ要求の発行元（本例ではプロキシＡＰＰ１４３）に対して応答メッセージを送信し、ＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数の処理を終了する（Ｓ１１０９）。
【０１６３】
ここで、「処理完了応答」、「処理中応答」、及び「エラー応答」の詳細について説明する。これらの応答は、それぞれ、Ｓ１１０１においてＧＥＴ要求のクエリパラメータに含まれていたシーケンスを用いて演算された結果であり、例えば、次に示す情報を文字列に変換した文字列情報で構成される。
「処理完了応答」  ＝  シーケンス
「処理中応答」  ＝  シーケンス＋１
「エラー応答」  ＝  シーケンス＋２
【０１６４】
このように、ＨＴＴＰのＧＥＴ要求に対するレスポンスとしてＸＭＬを使って定義した可視的な情報等ではなく一般には意味がわからない文字列情報を用いる。これにより、ＷｅｂサービスＡＰＩに対する不正なアクセスによる誤動作や不正な制御を防止することができる。なお、このような不正なアクセスを防止する構成は、この例に限られるものではなく、ハッシュ化等、より複雑な演算を組み合わせてもよい。また、図１５のＳ２８０３において、プロキシＡＰＰ１４３がＪｏｂＣｏｍｐｌｅｔｅｄ関数をコールすると、画像変換ＡＰＰ１４４が図１８（Ｂ）に示すＪｏｂＣｏｍｐｌｅｔｅｄ関数の処理を実行する。
【０１６５】
図１８（Ｂ）に示すように、画像変換ＡＰＰ１４４は、ＪｏｂＣｏｍｐｌｅｔｅｄ関数の処理を開始すると（Ｓ１１２１）、図２２で後述するアクセストークンの確認処理を実行する（Ｓ１１２６）。このとき、次に示す情報をこの処理（サブルーチン関数）の引数として渡す。
・サービスＩＤ
・クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤ
・クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤ
・画像変換ＡＰＰ１４４を利用するためのアクセストークン
そして、印刷画像（ＪＰＥＧファイル）を削除し（Ｓ１１２２）、Ｓ１１２３に処理を移す。
【０１６６】
Ｓ１１２３では、画像変換ＡＰＰ１４４は、ＨＴＴＰＳのＰＯＳＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに、正常終了したことを表すＳＵＣＣＥＳＳをセットする。また、Ｓ１１２３では、画像変換ＡＰＰ１４４は、ＰＯＳＴ要求の発行元（本例ではプロキシＡＰＰ１４３）に対して応答メッセージを送信する。そして、画像変換ＡＰＰ１４４は、ＪｏｂＣｏｍｐｌｅｔｅｄ関数の処理を終了する（Ｓ１１２４）。
【０１６７】
次に、画像変換ＡＰＰ１４４がエクスポートするＷｅｂサービスＡＰＩの処理について図１９を用いて説明する。図１９は、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＲｅｓｕｌｔ関数の処理に係るフローチャートの一例を示す図である。ＣｒｅａｔｅＰｒｉｎｔＪｏｂＲｅｓｕｌｔ関数については、ＳＳＬ通信で暗号化されたＨＴＴＰＳのＰＯＳＴメソッドが利用されている。このフローチャートに係るプログラムは、ＰＣ５に組み込まれ、ＨＤＤ２０５に記憶されており、ＣＰＵ２０２によりＲＡＭ２０３に読み出されて実行される。
【０１６８】
図１４のＳ２７０１において、プロキシＡＰＰ１４３がＣｒｅａｔｅＰｒｉｎｔＪｏｂＲｅｓｕｌｔ関数をコールすると、画像変換ＡＰＰ１４４が図１９に示すＣｒｅａｔｅＰｒｉｎｔＪｏｂＲｅｓｕｌｔ関数の処理を実行する。
【０１６９】
図１９に示すように、画像変換ＡＰＰ１４４は、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＲｅｓｕｌｔ関数の処理を開始し（Ｓ１２０１）、図２２で後述するアクセストークンの確認処理を実行する（Ｓ１２０７）。このとき、次に示す情報をこの処理（サブルーチン関数）の引数として渡す。
・サービスＩＤ
・クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤ
・クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤ
・画像変換ＡＰＰ１４４を利用するためのアクセストークン
続いて、画像変換ＡＰＰ１４４は、ＨＴＴＰＳのＰＯＳＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに、画像変換ＡＰＰ１４４を利用するためのアクセストークンをセットし（Ｓ１２０２）、Ｓ１２０３に処理を移す。
【０１７０】
Ｓ１２０３では、画像変換ＡＰＰ１４４は、ＰＯＳＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに、印刷ジョブアクセスＵＲＬ（ＪＰＥＧファイルの格納先のＵＲＬ）をセットし、Ｓ１２０４に処理を移す。Ｓ１２０４では、画像変換ＡＰＰ１４４は、ＰＯＳＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに、印刷画像（ＪＰＥＧファイル）の総ページ数をセットし、Ｓ１２０５に処理を移す。Ｓ１２０５では、画像変換ＡＰＰ１４４は、ＰＯＳＴ要求の発行元（本例ではプロキシＡＰＰ１４３）に対して応答メッセージを送信し、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＲｅｓｕｌｔ関数の処理を終了する（Ｓ１２０６）。
【０１７１】
図２０は、ＷｅｂサービスＡＰＩのコーリングシーケンスの一例を示す図である。図２０（Ａ）は、プロキシＡＰＰ１４３とＭＦＰ３との間のコーリングシーケンスの一例を示す図である。図２０（Ｂ）は、プロキシＡＰＰ１４３と画像変換ＡＰＰ１４４との間のコーリングシーケンスの一例を示す図である。
【０１７２】
図２０（Ａ）に示すように、プロキシＡＰＰ１４３とＭＦＰ３との間では、ＭＦＰ３は、プロキシＡＰＰ１４３がエクスポートしているＷｅｂサービスＡＰＩをコールしている。即ち、ＣｈｅｃｋＰｒｉｎｔＪｏｂ関数、ＧｅｔＰｒｉｎｔＪｏｂ関数、ＥｎｄＰｒｉｎｔＪｏｂ関数の順で、プロキシＡＰＰ１４３がエクスポートしているＷｅｂサービスＡＰＩがコールされる。ここで、ＣｈｅｃｋＰｒｉｎｔＪｏｂ関数については（ポーリング処理だけが）、暗号化されていないＨＰＰＴのＧＥＴメソッドが利用され、それ以外の関数については全てＳＳＬ通信で暗号化されたＨＴＴＰＳのＧＥＴメソッドが利用されている。
【０１７３】
このように、印刷ジョブの有無を確認するだけのためのポーリングに、暗号化されていないＨＴＴＰメソッドを利用することで、ポーリングに要する時間が低減され、ユーザの操作性に優れた周辺装置制御システムを実現することができる。また、ポーリングにかかる負荷を低減することができるので、例えば負荷に対応するための構成が必要なくなるので、システムの構築やプリンタやＭＦＰのファームウェアの実装が容易となり、開発コストを削減できる。
【０１７４】
また、図２０（Ｂ）に示すように、プロキシＡＰＰ１４３と画像変換ＡＰＰ１４４との間では、プロキシＡＰＰ１４３は、画像変換ＡＰＰ１４４がエクスポートしているＷｅｂサービスＡＰＩをコールしている。即ち、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＳｅｔ関数、ＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＲｅｓｕｌｔ関数、ＪｏｂＣｏｍｐｌｅｔｅｄ関数の順で画像変換ＡＰＰ１４４がエクスポートしているＷｅｂサービスＡＰＩがコールされる。ここで、ＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数については（ポーリング処理だけが）、暗号化されていないＨＰＰＴのＧＥＴメソッドが利用され、それ以外の関数については全てＳＳＬ通信で暗号化されたＨＴＴＰＳのＰＯＳＴメソッドが利用されている。
【０１７５】
このように、処理の進捗状況を確認するだけのためのポーリングに、暗号化されていないＨＴＴＰメソッドを利用することで、ポーリングに要する時間が低減され、ユーザの操作性に優れた周辺装置制御システムを実現することができる。また、ポーリングにかかる負荷を低減することができるので、例えば負荷に対応するための構成が必要なくなるので、システムの構築やアプリケーションの実装が容易となり、開発や運用コストを削減できる。
【０１７６】
次に、画像変換ＡＰＰ１４４がエクスポートするＷｅｂサービスＡＰＩの処理について図２１を用いて説明する。図２１は、ＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数の処理に係るフローチャートの一例を示す図である。ＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数については、ＳＳＬ通信で暗号化されたＨＴＴＰＳのＰＯＳＴメソッドが利用されている。このフローチャートに係るプログラムは、ＰＣ５に組み込まれ、ＨＤＤ２０５に記憶されており、ＣＰＵ２０２によりＲＡＭ２０３に読み出されて実行される。図２１では、エラーケースに関する処理を省略し、正常ケースだけを示す。
【０１７７】
図１３のＳ２６２２において、プロキシＡＰＰ１４３がＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数をコールすると、画像変換ＡＰＰ１４４が図２１に示すＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数の処理を実行する。
【０１７８】
図２１に示すように、画像変換ＡＰＰ１４４は、ＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数の処理を開始する（Ｓ１４０１）。画像変換ＡＰＰ１４４は、プロキシＡＰＰ１４３から入力パラメータとして渡された情報の中の「画像変換ＡＰＰ１４４を利用するユーザＩＤ」と「画像変換ＡＰＰ１４４を利用するユーザパスワード」を使う。そして、画像変換ＡＰＰ１４４は認証ＡＰＰ１４８がエクスポートするＷｅｂサービスＡＰＩの１つであるユーザ認証関数をコールして、ユーザ認証を行う（Ｓ１４０２）。
【０１７９】
Ｓ１４０２において、ユーザが存在しないという理由によってユーザ認証に失敗した場合、画像変換ＡＰＰ１４４は、「認証ＡＰＰ１４８を利用する管理者ＩＤ」と「認証ＡＰＰ１４８を利用する管理者パスワード」を使う。これらの情報は、プロキシＡＰＰ１４３から入力パラメータとして渡された情報の中に含まれている。そして画像変換ＡＰＰ１４４は、これらの情報を用いて認証ＡＰＰ１４８がエクスポートするＷｅｂサービスＡＰＩの１つであるログイン関数をコールしてログインする。そして、画像変換ＡＰＰ１４４は、プロキシＡＰＰ１４３から入力パラメータとして渡されたこれらの情報を使って、認証ＡＰＰ１４８がエクスポートするＷｅｂサービスＡＰＩの１つであるユーザ登録関数をコールして新規ユーザ登録を行った後、ユーザ認証を行う。
【０１８０】
画像変換ＡＰＰ１４４は、ユーザ認証に成功すると、プロキシＡＰＰ１４３から入力パラメータとして渡された情報の中の「画像変換ＡＰＰ１４４を利用するためのアクセストークン」を参照し、セットされている値の有無を確認する（Ｓ１４０３）。値が有る（存在する）場合Ｓ１４０５へ進み、値が無い（存在しない）場合Ｓ１４０８へ進む（Ｓ１４０４）。Ｓ１４０５で、画像変換ＡＰＰ１４４は、ＡＰＰ１４３から入力パラメータとして渡された情報を使用する。具体的には、画像変換ＡＰＰ１４４は「画像変換ＡＰＰ１４４を利用するユーザＩＤ」と「画像変換ＡＰＰ１４４を利用するユーザパスワード」と「画像変換ＡＰＰ１４４を利用するためのアクセストークン」を使う。そして、画像変換ＡＰＰ１４４のＣＰＵ２０２は、認証ＡＰＰ１４８がエクスポートするＷｅｂサービスＡＰＩの１つであるアクセストークン有効期限確認関数をコールする。これにより、画像変換ＡＰＰ１４４のＣＰＵ２０２は、ＡＰＰ１４３から渡された画像変換ＡＰＰ１４４を利用するためのアクセストークンの有効期限を確認する。すなわち画像変換ＡＰＰ１４４のＣＰＵ２０２はアクセストークンの有効時間が十分、つまり一定時間以上残っているか否かを判定する有効期限判定手段として機能する。
【０１８１】
画像変換ＡＰＰ１４４は、有効期限が十分であると判定した場合Ｓ１４０７へ進み、有効期限が不十分であると判定した場合Ｓ１４０８へ進む（Ｓ１４０６）。Ｓ１４０６における画像変換ＡＰＰ１４４が有効期限を判定する処理は、例えば、次に示すような処理である。Ｓ１４０８で後述するように、画像変換ＡＰＰ１４４を利用するためのアクセストークンの有効期限は、一例としてアクセストークン発行時点から２４時間以内である。従って、例えば、画像変換ＡＰＰ１４４は、アクセストークン有効期限確認関数でアクセストークンの残有効時間を取得できる場合、残有効時間が２０時間以上の場合に有効期限が十分であると判定する。画像変換ＡＰＰ１４４は、残有効時間が２０時間未満の場合に有効期限が不十分であると判定する。また、例えば、画像変換ＡＰＰ１４４は、アクセストークン有効期限確認関数でアクセストークンの発行年月日と時刻を取得できる場合、現在の年月日と時刻を取得して、前記アクセストークンの発行時点から現在時刻迄の経過時間を計算する。本実施例ではアクセストークンの有効期限は発行時点から２４時間であるので、画像変換ＡＰＰ１４４は、２４時間から前記経過時間を減算して得られる残有効時間を計算する。画像変換ＡＰＰ１４４は、この残有効時間が２０時間以上の場合に有効期限が十分であると判定し、残有効時間が２０時間未満の場合に有効期限が不十分であると判定する。
【０１８２】
Ｓ１４０７において、画像変換ＡＰＰ１４４は、プロキシＡＰＰ１４３から入力パラメータとして渡された情報の中の「画像変換ＡＰＰ１４４を利用するためのアクセストークン」にセットされている値を再利用することを決定し、Ｓ１４０９へ進む。Ｓ１４０８では、画像変換ＡＰＰ１４４は、プロキシＡＰＰ１４３から入力パラメータとして渡された情報の中の「画像変換ＡＰＰ１４４を利用するユーザＩＤ」と「画像変換ＡＰＰ１４４を利用するユーザパスワード」を使う。そして、認証ＡＰＰ１４８がエクスポートするＷｅｂサービスＡＰＩの１つであるアクセストークン生成関数をコールして、画像変換ＡＰＰ１４４を利用するためのアクセストークンを取得し、Ｓ１４０９へ進む。このアクセストークンには有効期限があり、ここでは、一例として、アクセストークン発行時点から２４時間以内と定義されている。
【０１８３】
Ｓ１４０９において、画像変換ＡＰＰ１４４は、この画像変換ＡＰＰ１４４を利用するためのアクセストークンをセッション管理データベースに保存する。セッション管理データベースには、次に示すような情報が保存される。
［セッション管理データベース］
・検索キー：サービスＩＤと、クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤと、クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤとを組合せて生成された値
・画像変換ＡＰＰ１４４を利用するためのアクセストークン
画像変換ＡＰＰ１４４は、ＨＴＴＰＳのＰＯＳＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに、この関数が成功して正常終了したことを表すＳＵＣＣＥＳＳをセットする。このとき、画像変換ＡＰＰ１４４は、Ｓ１４０３で取得した画像変換ＡＰＰ１４４を利用するためのアクセストークンも併せてセットする（Ｓ１４１０）。そして、画像変換ＡＰＰ１４４は、ＰＯＳＴ要求の発行元（本例ではプロキシＡＰＰ１４３）に対して応答メッセージを送信する（Ｓ１４１０）。そして、画像変換ＡＰＰ１４４は、ＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数の処理を終了する（Ｓ１４１１）。
【０１８４】
図２２は、画像変換ＡＰＰ１４４の処理に係るフローチャートの一例を示す図であり、アクセストークンの確認処理を表すフローチャートの一例を示す図である。このフローチャートに係るプログラムは、ＰＣ５に組み込まれ、ＨＤＤ２０５に記憶されており、ＣＰＵ２０２によりＲＡＭ２０３に読み出されて実行される。アクセストークンの確認処理は、画像変換ＡＰＰ１４４内のサブルーチン関数であり、次に示す情報がこのサブルーチン関数の引数として渡される。
・サービスＩＤ
・クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤ
・クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤ
・画像変換ＡＰＰ１４４を利用するためのアクセストークン
【０１８５】
図１７に示すＳ１０１８、図１８（Ａ）に示すＳ１１２５、図１８（Ｂ）に示すＳ１１２６において、図１９に示すＳ１２０７において、画像変換ＡＰＰ１４４がアクセストークンの確認処理を実行する。図２２に示すように、次いで画像変換ＡＰＰ１４４は、アクセストークンの確認処理を開始する（Ｓ１５０１）。画像変換ＡＰＰ１４４は、サービスＩＤと、クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤと、クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤとを組合せて検索キーを生成する（Ｓ１５０２）。そして、画像変換ＡＰＰ１４４は、この検索キーを使ってセッション管理データベースを検索する（Ｓ１５０３）。画像変換ＡＰＰ１４４は、この検索キーに関連付けられた情報をセッション管理データベース内に発見した場合Ｓ１５０５へ進み、見つからなかった場合Ｓ１５０９へ進む（Ｓ１５０４）。
【０１８６】
Ｓ１５０５において、画像変換ＡＰＰ１４４は比較処理を行う。具体的には、このサブルーチン関数の引数として渡された画像変換ＡＰＰ１４４を利用するためのアクセストークンと、セッション管理データベースに保存されている画像変換ＡＰＰ１４４を利用するためのアクセストークンとが一致するか否かを比較する。画像変換ＡＰＰ１４４は、一致すると判断した場合Ｓ１５０７へ進み、不一致と判断した場合Ｓ１５０９へ進む（Ｓ１５０６）。
【０１８７】
Ｓ１５０７において、画像変換ＡＰＰ１４４は、成功を表すＳｕｃｃｅｓｓを戻り値にセットして、このサブルーチン関数の呼び出し元へ戻る（Ｓ１５０８）。Ｓ１５０９において、画像変換ＡＰＰ１４４は、失敗を表すＦａｉｌｕｒｅを戻り値にセットする。そして、画像変換ＡＰＰ１４４は、レスポンスのＢＯＤＹに含める応答メッセージに、そのＡＰＩが成功して失敗終了したことを表すＦＡＩＬＵＲＥをセットする（Ｓ１５１０）。画像変換ＡＰＰ１４４は、この応答メッセージを、このサブルーチン関数の呼び出し元である、画像変換ＡＰＰ１４４がエクスポートするＷｅｂサービスＡＰＩのＨＴＴＰのＰＯＳＴ要求に対して送る。そして、画像変換ＡＰＰ１４４は、ＰＯＳＴ要求の発行元（本例ではプロキシＡＰＰ１４３）に対して応答メッセージを送信する（Ｓ１５１０）。そして、画像変換ＡＰＰ１４４は、このサブルーチン関数と前記ＡＰＩの処理を終了する（Ｓ１５１１）。
【０１８８】
Ｓ１５０５において、画像変換ＡＰＰ１４４は比較処理を行う。具体的には、このサブルーチン関数の引数として渡された画像変換ＡＰＰ１４４を利用するためのアクセストークンと、セッション管理データベースに保存されている画像変換ＡＰＰ１４４を利用するためのアクセストークンを比較する。アクセストークンが一致するか否かを比較することにより、画像変換ＡＰＰは、認証ＡＰＰ１４８がエクスポートするアクセストークン妥当性確認関数を利用することなくアクセストークンの妥当性を判断する。従って、プロキシＡＰＰ１４３が、画像変換ＡＰＰ１４４に対してコールする度に、画像変換ＡＰＰ１４４が、認証ＡＰＰ１４８がエクスポートするＷｅｂサービスＡＰＩのアクセストークン妥当性確認関数をコールする必要が無い。その結果、パフォーマンスを向上することができる。
【０１８９】
また、認証ＡＰＰ１４８のシステムの規模を小さくすることができ、構成を簡素化することができる。これにより、運用コストを下げることもできる。さらに、上位サービスであるプロキシＡＰＰ１４３になりすましたなりすましプログラムによる悪意のある攻撃に対しても有効であり、なりすましプログラムからのアクセスのような悪意のある攻撃による誤動作や情報漏洩を防止することもできる。さらに、上位サービスであるプロキシＡＰＰ１４３が誤動作した場合に、例えば、ある印刷ジョブに付与されたアクセストークンが、前記誤動作に伴って他の印刷ジョブに関連付けられてしまう可能性がある。このようなケースにおいても、画像変換ＡＰＰ１４４はその印刷ジョブを処理せずに、印刷を中止することができるので、誤印刷を防止することもできる。
【０１９０】
上述した実施形態では、情報処理装置としてパーソナルコンピュータを想定した。しかしながら、この例に限られるものではなく、例えばＤＶＤプレーヤー、ゲーム、セットトップボックス、インターネット家電等、同様な使用方法が可能な任意の情報処理装置（端末）に対して適用することができ、有効である。また、上述した実施形態では、周辺装置としてＭＦＰを例示した。しかしながら、周辺装置として他に、複写機、ファクシミリ、スキャナ、デジタルカメラ、及びこれらの複合機能を備える装置等の何れかであってもよい。
【０１９１】
また、上述した実施形態では、ＯＳに例としてＷｉｎｄｏｗｓ（登録商標）と同等のＯＳを使用したが、このＯＳに限られるものではなく、任意のＯＳを使用することができる。また、上述した実施形態では、ネットワーク４の構成例としてＥｔｈｅｒｎｅｔ（登録商標）を用いたが、この例に限られるものではなく、他の任意のネットワーク構成であってもよい。
【０１９２】
また、上述した実施形態では、ＰＣ１、ＰＣ２、ＰＣ５、ＰＣ７とＭＦＰ３、ＭＦＰ１３３との間のインタフェースとして、Ｅｔｈｅｒｎｅｔ（登録商標）を採用した。しかしながら、このインタフェースに限られることなく、例えば、無線ＬＡＮ、ＩＥＥＥ１３９４、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＵＳＢ等の任意のインタフェースを用いるようにしてもよい。また、各種のアプリケーション（ファームウェア）における機能、上述したフローチャートに係る処理の一部、又は全部を専用のハードウェアを用いて構成してもよい。
【０１９３】
また、周辺装置制御システムにクラウドを利用した場合においても、システムの構築やアプリケーションの実装が容易で、開発や運用コストを削減できる。
【０１９４】
上述した実施形態の構成によれば、装置間の通信をより適切に行うことができる。以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０１９５】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（コンピュータプログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム等のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【０１９６】
１０４  プリントサーバ
１２２  認証サーバ
１０１〜１０３  クライアント端末
【図１】
0005843605.tif 000002
【図２】
0005843605.tif 000003
【図３】
0005843605.tif 000004
【図４】
0005843605.tif 000005
【図５】
0005843605.tif 000006
【図６】
0005843605.tif 000007
【図７】
0005843605.tif 000008
【図８】
0005843605.tif 000009
【図９】
0005843605.tif 000010
【図１０】
0005843605.tif 000011
【図１１】
0005843605.tif 000012
【図１２】
0005843605.tif 000013
【図１３】
0005843605.tif 000014
【図１４】
0005843605.tif 000015
【図１５】
0005843605.tif 000016
【図１６】
0005843605.tif 000017
【図１７】
0005843605.tif 000018
【図１８】
0005843605.tif 000019
【図１９】
0005843605.tif 000020
【図２０】
0005843605.tif 000021
【図２１】
0005843605.tif 000022
【図２２】
0005843605.tif 000023