(57)【特許請求の範囲】
【請求項１】
ネットワークを介して提供装置がユーザに提供するサービスに関する中継処理を行う中継サービス装置と、前記中継サービス装置と通信し前記サービスに関する関連処理を行う中間サービス装置と、前記中間サービス装置からの認証要求を受け付けて認証処理を行う認証サービス装置とを備える情報処理システムであって、
前記中継サービス装置は、
前記中間サービス装置に認証要求と、処理実行要求とを送信する送信手段を備え、
前記中間サービス装置は、
前記中継サービス装置からの前記認証要求を前記認証サービス装置に送信し、認証に成功することで発行される第１のアクセストークンを前記認証サービス装置から取得する取得手段と
前記第１のアクセストークンを保存する記憶手段と、
前記処理実行要求を受け付けた時に、前記記憶手段に保存されている第１のアクセストークンと前記処理実行要求と共に送信される第２のアクセストークンが一致する場合、前記中継サービス装置から受け付けた処理を実行し、前記第１のアクセストークンと前記第２のアクセストークンが一致しない場合、前記処理を実行しない処理実行手段とを備えることを特徴とする情報処理システム。
【請求項２】
前記送信手段は、ユーザの認証情報と前記中継サービス装置の認証情報とを含めた認証要求を前記中間サービス装置に送信し、
前記取得手段は、前記認証サービス装置において前記ユーザの認証情報を用いて前記認証に成功しなかった場合は、前記中継サービス装置の認証情報を用いて前記ユーザの認証情報を前記認証サービス装置に登録する登録処理を実行することを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記認証サービス装置は前記ユーザの認証情報を保持する保持手段を備え、
前記取得手段は、前記認証サービス装置が前記ユーザの認証情報に対応する認証情報を保持している場合に、前記認証サービス装置が発行する前記第１のアクセストークンを取得することを特徴とする請求項１または請求項２に記載の情報処理システム。
【請求項４】
前記中間サービスは、前記中継サービス装置から受け取ったＰＤＦファイルをＪＰＥＧファイルに変換する画像変換サービスであることを特徴とする請求項１乃至請求項３のいずれか一項に記載の情報処理システム。
【請求項５】
ネットワークを介して提供装置がユーザに提供するサービスに関する中継処理を行う中継サービス装置と通信し、認証サービス装置に対して認証要求を行う中間サービス装置であって、
前記中継サービス装置から認証要求と処理実行要求とを受け付ける受付手段と、
前記認証要求を前記認証サービス装置に送信し、認証に成功することで発行される第１のアクセストークンを前記認証サービス装置から取得する取得手段と、
前記第１のアクセストークンを保存する記憶手段と、
前記処理実行要求を受け付けた時に、前記記憶手段に保存されている第１のアクセストークンと前記処理実行要求と共に送信される第２のアクセストークンが一致する場合、前記中継サービス装置から受け付けた処理を実行し、前記第１のアクセストークンと前記第２のアクセストークンが一致しない場合、前記処理を実行しない処理実行手段とを備えることを特徴とする中間サービス装置。
【請求項６】
印刷ジョブに含まれるデータを印刷装置が印刷可能なデータに変換する変換手段を更に備えることを特徴とする請求項５に記載の中間サービス装置。
【請求項７】
前記印刷可能なデータが不要となった場合、前記印刷可能なデータを削除する削除手段を更に備えることを特徴とする請求項６に記載の中間サービス装置。
【請求項８】
ネットワークを介して提供装置がユーザに提供するサービスに関する中継処理を行う中継サービス装置と、前記中継サービス装置と通信し前記サービスに関する関連処理を行う中間サービス装置と、前記中間サービス装置からの認証要求を受け付けて認証処理を行う認証サービス装置とを備える情報処理システムにおける認証方法であって、
前記中継サービス装置が、前記中間サービス装置に認証要求を行う要求工程と、
前記中間サービス装置が、前記中継サービス装置からの前記認証要求を前記認証サービス装置に送信し、認証に成功することで発行される第１のアクセストークンを前記認証サービス装置から取得する取得工程と、
前記中間サービス装置が、前記第１のアクセストークンを記憶手段に保存する保存工程と、
前記中間サービス装置が、前記中継サービス装置から処理実行要求を受け付けた時に、前記記憶手段に保存されている第１のアクセストークンと前記処理実行要求と共に送信される第２のアクセストークンが一致する場合、前記中継サービス装置から受け付けた処理を実行し、前記第１のアクセストークンと前記第２のアクセストークンが一致しない場合、前記処理を実行しない処理実行工程とを有することを特徴とする認証方法。
【請求項９】
前記要求工程では、ユーザの認証情報と前記中継サービス装置の認証情報とを含めた認証要求を前記中間サービス装置に送信し、
前記取得工程では、前記認証サービス装置において前記ユーザの認証情報を用いて前記認証に成功しなかった場合は、前記中継サービス装置の認証情報を用いて前記ユーザの認証情報を前記認証サービス装置に登録する登録処理を実行することを特徴とする請求項８に記載の認証方法。
【請求項１０】
前記認証サービス装置は前記ユーザの認証情報を保持する保持手段を備えており、
前記取得工程では、前記認証サービス装置が前記ユーザの認証情報に対応する認証情報を保持している場合に、前記認証サービス装置が発行する前記第１のアクセストークンを取得することを特徴とする請求項８または請求項９に記載の認証方法。
【請求項１１】
ネットワークを介して提供装置がユーザに提供するサービスに関する中継処理を行う中継サービス装置と通信し、認証サービス装置に対して認証要求を行う中間サービス装置が備えるコンピュータに実行させるコンピュータプログラムであって、
前記コンピュータに、
前記中継サービス装置から認証要求と処理実行要求とを受け付ける受付処理と、
前記認証要求を前記認証サービス装置に送信し、認証に成功することで発行される第１のアクセストークンを前記認証サービス装置から取得する取得処理と、
前記第１のアクセストークンを記憶手段に保存する保存処理と、
前記処理実行要求を受け付けた時に、前記記憶手段に保存されている第１のアクセストークンと前記処理実行要求と共に送信される第２のアクセストークンが一致する場合、前記中継サービス装置から受け付けた処理を実行し、前記第１のアクセストークンと前記第２のアクセストークンが一致しない場合、前記処理を実行しない制御処理とを実行させることを特徴とするコンピュータプログラム。
【請求項１２】
前記コンピュータに、
印刷ジョブに含まれるデータを印刷装置が印刷可能なデータに変換する変換処理をさらに実行させることを特徴とする請求項１１に記載のコンピュータプログラム。
【請求項１３】
前記コンピュータに、
前記印刷可能なデータが不要となった場合、前記印刷可能なデータを削除する削除処理をさらに実行させることを特徴とする請求項１２に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置、認証方法、及びコンピュータプログラムに関する。
【背景技術】
【０００２】
近年、ＵＳＢ、Ｅｔｈｅｒｎｅｔ（登録商標）、無線ＬＡＮ等の様々なインタフェースを利用して、情報処理装置に周辺装置を接続した周辺装置制御システムが、自宅、オフィス等、様々な場面で有効に活用されている。周辺装置の例としては、プリンタ、複写機、ファクシミリ、スキャナ、デジタルカメラ、これらの複合機等が挙げられる。
【０００３】
周辺装置のうちのプリンタや複合機に対応する周辺装置制御システムの例として、Ｇｏｏｇｌｅ社からＧｏｏｇｌｅ  Ｃｌｏｕｄ  Ｐｒｉｎｔ（登録商標であり、以下、ＧＣＰと略す。）と呼ばれるクラウド印刷サービスが提供されている。クラウド印刷サービスの利用によって、ユーザは、パーソナルコンピュータ（以下、ＰＣと略す。）やモバイルデバイスから文書作成用のアプリケーション等を起動（利用）し、インターネットを介して文書をプリンタや複合機で印刷することが可能である。ＧＣＰを利用した印刷の手順は、次のようなものである。
【０００４】
（１）ユーザが、ＰＣに設けられた文書作成用のアプリケーションを利用してある文書を開く操作を行う。
（２）ユーザが、その文書をあるプリンタで印刷するために、印刷ダイアログを開いてそのプリンタを選択し、印刷を実行する操作を行う。
（３）文書作成用のアプリケーションが印刷画像をＰＤＦファイルとして生成する。
（４）ＧＣＰが印刷ダイアログで選択された印刷設定値と、前記ＰＤＦファイルから印刷ジョブを生成し、ＧＣＰ内でそのプリンタに割り当られたプリントキューに印刷ジョブを格納し、プリンタに印刷ジョブ通知を送信する。
（５）プリンタは、前記印刷ジョブ通知を受信すると、前記印刷ジョブを取得して、前記印刷設定値に従って、前記ＰＤＦファイルの印刷画像を印刷する。
【０００５】
例えば、ＰＤＦファイルをレンダリングすることができるプリンタや複合機である場合、プリンタや複合機は、前記手順に従ってＧＣＰを利用して印刷することができる。しかしながら、ＰＤＦファイルをレンダリングすることができない廉価版のプリンタや複合機である場合、廉価版のプリンタや複合機は、（５）においてＰＤＦファイルの印刷画像を印刷することができない。
【０００６】
このような廉価版のプリンタや複合機でＧＣＰを利用して印刷するために、Ｗｅｂサービス（画像変換サービス）用のアプリケーションが存在する。画像変換サービスアプリケーションは、ＰＤＦファイルを、例えばＪＰＥＧファイル等の廉価版のプリンタや複合機で印刷できる画像フォーマットに変換する。また、画像変換サービスアプリケーションを利用して、ＰＤＦファイルをＪＰＥＧファイルに変換し、廉価版のプリンタや複合機で印刷するような情報処理システムが提案されている。
【０００７】
また、プリントのＷｅｂサービスに関するその他の技術として特許文献１がある。特許文献１に記載のプリントサービスでは、以下の方法を用いて任意の場所に設置されたプリンタでの印刷を実現している。それは、各地に配備された印刷環境共用サービス間で印刷予約やデータ、印刷可能なアプリケーション情報を交換し、ユーザに印刷可能な印刷場所を提示する方法によって実現している。特許文献１により、ユーザは、遠隔地にある任意の場所に設置されたプリンタで印刷が可能となる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００５−１００３４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述したＧＣＰを利用した周辺装置制御システムでは、複数のプリンタを管理し、ＧＣＰに対応させるためのクラウド印刷プロキシサービスを提供するＷｅｂサービス、例えばプロキシサービス用のＷｅｂアプリケーションが必要となる。
【００１０】
また、この周辺装置制御システムでは、例えば、プロキシサービスアプリケーションと画像変換サービスアプリケーションが連携して印刷ジョブを処理する。すなわち、画像変換サービスアプリケーションが、ＧＣＰから発行された印刷ジョブに含まれるＰＤＦファイルをＪＰＥＧファイルに変換する。これにより、廉価版のプリンタや複合機で印刷することができる。
【００１１】
このような周辺装置制御システムに代表される情報処理システムにおいて、例えば、各Ｗｅｂサービスアプリケーションがインターネットを介さずにローカルエリアネットワーク内に存在する場合がある。そして、各Ｗｅｂアプリケーションサービス間の通信にＨＴＴＰＳではなくＨＴＴＰのＰＯＳＴメソッドやＧＥＴメソッドが利用される場合がある。このような場合、各Ｗｅｂサービスアプリケーションが提供するＷｅｂサービスＡＰＩを各Ｗｅｂサービスアプリケーション間で利用する際に、頻繁な通信が発生すると、ネットワーク上のトラフィックが増える。その為、各サービス間の通信で費やす時間がシステム全体の処理時間に大きな影響を及ぼすという問題がある。また、ＷｅｂサービスＡＰＩのコールを受ける特定のＷｅｂアプリケーションの負荷が過大になるという問題もある。
【００１２】
本発明は、各Ｗｅｂサービスアプリケーション装置間の通信頻度及びデータ通信量を抑えることにより、特定のＷｅｂサービスアプリケーションの負荷を減らすことを可能とする情報処理システムの提供を目的とする。
【課題を解決するための手段】
【００１３】
本発明の一実施形態の情報処理システムは、ネットワークを介して提供装置がユーザに提供するサービスに関する中継処理を行う中継サービス装置と、前記中継サービス装置と通信し前記サービスに関する関連処理を行う中間サービス装置と、前記中間サービス装置からの認証要求を受け付けて認証処理を行う認証サービス装置とを備える情報処理システムである。前記中継サービス装置は、前記中間サービス装置に認証要求と、処理実行要求とを送信する送信手段を備える。また、前記中間サービス装置は、前記中継サービス装置からの前記認証要求を前記認証サービス装置に送信し、認証に成功することで発行される第１のアクセストークンを前記認証サービス装置から取得する取得手段と、前記第１のアクセストークンを保存する記憶手段と、前記処理実行要求を受け付けた時に、前記記憶手段に保存されている第１のアクセストークンと前記処理実行要求と共に送信される第２のアクセストークンが一致する場合、前記中継サービス装置から受け付けた処理を実行し、前記第１のアクセストークンと前記第２のアクセストークンが一致しない場合、前記処理を実行しない処理実行手段とを備える。
【発明の効果】
【００１４】
本発明の情報処理システムによれば、各Ｗｅｂサービスアプリケーション装置間の通信頻度及びデータ通信量を抑えることにより、特定のＷｅｂサービスアプリケーションの負荷を減らすことが可能となる。
【図面の簡単な説明】
【００１５】
【図１】情報処理システムの構成の一例を示す図である。
【図２】ＰＣ及びＭＦＰのハードウェアの構成の一例を示す図である。
【図３】ＰＣのソフトウェアの構成の一例を示す図である。
【図４】Ｗｅｂブラウザの一例を示す図である。
【図５】印刷ダイアログの一例を示す図である。
【図６】情報処理システムの処理に係るフローチャートの一例である。
【図７】情報処理システムの処理に係るフローチャートの一例である。
【図８】情報処理システムの処理に係るフローチャートの一例である。
【図９】プロキシＡＰＰの処理に係るフローチャートの一例である。
【図１０】画像変換ＡＰＰの処理に係るフローチャートの一例である。
【図１１】画像変換ＡＰＰの処理に係るフローチャートの一例である。
【図１２】画像変換ＡＰＰの処理に係るフローチャートの一例である。
【図１３】コーリングシーケンスの一例である。
【図１４】画像変換ＡＰＰの処理に係るフローチャートの一例である。
【図１５】画像変換ＡＰＰの処理に係るフローチャートの一例である。
【発明を実施するための形態】
【００１６】
複数のプリンタを管理し、ＧＣＰを利用してユーザが所望する印刷サービスを提供する情報処理システムが考えられる。この情報処理システムは、ＧＣＰが提供するサービスに関する中継処理を行うプロキシアプリケーションを備えることが必要である。また、この情報処理システムにおいては、プロキシサービスアプリケーションと画像変換サービスアプリケーションとが連携して印刷ジョブを処理する。ＧＣＰから発行された印刷ジョブに含まれるＰＤＦファイルを画像変換サービスアプリケーションがＪＰＥＧファイルに変換する。これにより、廉価版のプリンタや複合機で印刷することができる。
【００１７】
このような情報処理システムにおいて、例えば、プロキシサービスアプリケーションが画像変換サービスアプリケーションを利用する際に、認証サービスアプリケーションを利用した認証システムを用いてセキュリティを確保することが考えられる。例えば、プロキシサービスアプリケーションは、自分が管理する各プリンタに対して、ユーザＩＤとそのユーザＩＤを認証するためのパスワードを割り当てる。そして、認証サービスアプリケーションが前記ユーザＩＤとパスワードをもとにユーザ認証を行い、そのユーザＩＤ（プリンタ）に対して画像変換サービスアプリケーションを利用するためのアクセストークンを発行する。
【００１８】
プロキシサービスアプリケーションは、そのアクセストークンを使って画像変換サービスアプリケーションにアクセスする。また、画像変換サービスアプリケーションは、前記ユーザＩＤが割り当てられているプリンタの印刷ジョブに含まれるＰＤＦファイルをＪＰＥＧファイルに変換し、前記プリンタはそのＪＰＥＧファイルを印刷することができる。
【００１９】
一般的に、画像変換サービスアプリケーションは、プロキシサービスアプリケーションに対して複数のＷｅｂサービスＡＰＩをエクスポートしている。そして、プロキシサービスアプリケーションは、画像変換サービスアプリケーションがエクスポートしているそれぞれのＷｅｂサービスＡＰＩをシーケンシャルにコールする。画像変換サービスアプリケーションは、プロキシサービスアプリケーションが順にコールする各ＷｅｂサービスＡＰＩにおける処理を実行する。画像変換サービスアプリケーションは、その処理において印刷ジョブに含まれるＰＤＦファイルをＪＰＥＧファイルに変換し、プリンタでの印刷が完了した後、不要となったＪＰＥＧファイル（印刷画像）を削除する。
【００２０】
プロキシサービスアプリケーションは、画像変換サービスアプリケーションがエクスポートしている各ＷｅｂサービスＡＰＩをシーケンシャルにコールする際に、その都度、前記アクセストークンの妥当性や有効期限を問合せる。すなわち、プロキシサービスアプリケーションは、認証サービスアプリケーションがエクスポートしているＷｅｂサービスＡＰＩの内の、アクセストークン妥当性確認ＡＰＩやアクセストークン有効期限確認ＡＰＩをコールする。
【００２１】
上述の各サービス間のインタフェース、及び各サービスと廉価版のプリンタや複合機間のインタフェースは、ＷｅｂサービスＡＰＩで規定され、通常はＳＳＬ通信で暗号化されたＨＴＴＰＳのＰＯＳＴメソッドやＧＥＴメソッドが利用されている。このように暗号化された通信により、セキュリティが確保されている。
【００２２】
この場合、各ＷｅｂサービスＡＰＩを利用する時に、情報の送信時の暗号化や情報の受信時の復号化に非常に時間を要する。また、通信処理の負荷が大きくなるので、クラウドを利用したときにシステムの構築やアプリケーションの実装に支障をきたすという問題がある。
【００２３】
各Ｗｅｂサービスアプリケーション、廉価版のプリンタや複合機は、各処理の度にその都度認証サービスアプリケーションにアクセスし、アクセストークンの妥当性や有効期限を問合せる。しかしながら、アクセストークン妥当性確認ＡＰＩやアクセストークン有効期限確認ＡＰＩをコールして、アクセストークンの妥当性や有効期限を問合せると、認証サービスアプリケーションの負荷が増大する。その結果、パフォーマンスの低下や認証サービスアプリケーションの許容量がオーバーする。これらを回避する為に、認証サービスアプリケーションのシステムの規模を増大する必要がある。その場合、認証サービスアプリケーションのシステム構成が複雑になり、運用コストが増大する等、様々な課題がある。
【００２４】
さらに、各Ｗｅｂサービスアプリケーションが、アクセストークンの妥当性や有効期限を認証サービスアプリケーションに問合せて検証する情報処理システムが考えられる。しかしながら、この情報処理システムでは、上位のＷｅｂサービスアプリケーションが誤動作しているよう状況下では、アクセストークンが妥当であると判定される可能性がある。アクセストークンが妥当であると判定されると、該当しない処理やジョブ（例えば、他人の印刷ジョブ）等が誤って処理されてしまう、という問題がある。また、このようなケースでは、対象となるＷｅｂサービスアプリケーションに対して、例えば、上位のサービスになりすましたなりすましプログラムからのアクセスのような、悪意のある攻撃を受ける可能性もある。そのため、そのＷｅｂサービスアプリケーションが誤動作したり、情報が漏えいするという課題もある。
【００２５】
以下説明する本実施形態の情報処理システムによれば、上述した課題を解決することができる。すなわち、本実施形態の情報処理システムによれば、各Ｗｅｂサービスアプリケーション装置間の通信頻度及びデータ通信量を抑えるとともに、特定のＷｅｂサービスアプリケーションの負荷を減らすことができる。また、本実施形態の情報処理システムによれば、なりすましアクセスのような悪意のある攻撃がある場合において、誤動作したり情報が漏洩したりすることを防止することができる。
【００２６】
以下、本実施形態について図面に基づいて説明する。なお、本実施形態は、本発明を限定するものではなく、また、実施形態で説明されている全ての構成が本発明の課題を解決するための手段に必須であるとは限らない。
【００２７】
以下において、ＷｅｂサービスＡＰＩにＳＳＬ通信で暗号化されたＨＴＴＰＳのＰＯＳＴメソッド（通信方式の一例）を利用している場合があるが、このＰＯＳＴメソッドに関しては一般に公開されている情報であるので、ここではその詳細な説明を省略する。また、以下において、ＷｅｂサービスＡＰＩにＨＴＴＰのＧＥＴメソッド（通信方式の一例）を利用している場合があるが、このＧＥＴメソッドに関しては一般に公開されている情報であるので、ここではその詳細な説明を省略する。また、以下において、ＷｅｂサービスＡＰＩにＳＳＬ通信で暗号化されたＨＴＴＰＳのＧＥＴメソッド（通信方式の一例）を利用している場合があるが、このＧＥＴメソッドに関しては一般に公開されている情報であるので、ここではその詳細な説明を省略する。
【００２８】
また、ＨＴＴＰは、Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌの略であり、暗号化されていない公知の通信プロトコルであるので、ここではその詳細な説明を省略する。また、ＨＴＴＰＳは、Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ  ｏｖｅｒ  Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒの略であり、暗号化された公知の通信プロトコルであるので、ここではその詳細な説明を省略する。また、ＳＳＬは、Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒの略であり、インターネット上でデータを暗号化して送受信する公知の方法であるので、ここではその詳細な説明を省略する。また、Ｇｏｏｇｌｅ  Ｃｌｏｕｄ  Ｐｒｉｎｔ（ＧＣＰ）に関する説明は、次に示すサイトで公開されているので、ここではその詳細な説明を省略する。インターネットＵＲＬ：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
【０１３６】
このＵＲＬは、１ページ目のＪＰＥＧファイル（ｐ１．ｊｐｇ）を表すので、ＭＦＰ３は、各ページの印刷画像を取得するときは、ページ番号を表すクエリパラエータ「ｐ」に、取得するページ番号を指定する。Ｓ１０１３において、画像変換ＡＰＰ１４４は、印刷画像（ＰＤＦファイル）を変換し、全てのページの印刷画像（ＪＰＥＧファイル）の変換が完了した後、Ｓ１０１２でダウンロードした印刷画像（ＰＤＦファイル）をＲＡＭ２０１から削除する。
【０１３７】
続いて、画像変換ＡＰＰ１４４は、Ｓ１０１１〜Ｓ１０１３の何れかの処理においてエラーを検出したか否かを判断する（Ｓ１０１４）。このとき、画像変換ＡＰＰ１４４は、エラーを検出したと判断した場合、Ｓ１０１６に処理を移し、他方、エラーを検出しなかったと判断した場合、正常終了と判断してＳ１０１５に処理を移す。
【０１３８】
Ｓ１０１５では、画像変換ＡＰＰ１４４は、セッション管理データベース内の進捗状況（Ｐｒｏｇｒｅｓｓ）に正常終了を表す「０」をセットし、ダウンロード・画像変換スレッドの処理を終了する（Ｓ１０１７）。Ｓ１０１６では、画像変換ＡＰＰ１４４は、セッション管理データベース内の進捗状況（Ｐｒｏｇｒｅｓｓ）にエラー終了を表す「２」をセットし、ダウンロード・画像変換スレッドの処理を終了する（Ｓ１０１７）。Ｓ１０１７において、画像変換ＡＰＰ１４４は、セッション管理データベースからこの印刷ジョブに関する情報を削除し、セッション管理データベースを更新する。
【０１３９】
次に、画像変換ＡＰＰ１４４がエクスポートするＷｅｂサービスＡＰＩの処理について図１１を用いて説明する。図１１（Ａ）は、ＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数の処理に係るフローチャートの一例を示す図である。図１１（Ｂ）は、ＪｏｂＣｏｍｐｌｅｔｅｄ関数の処理に係るフローチャートの一例を示す図である。
【０１４０】
ここで、ＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数については、ＨＴＴＰのＧＥＴメソッドが利用されている。ＪｏｂＣｏｍｐｌｅｔｅｄ関数については、ＳＳＬ通信で暗号化されたＨＴＴＰＳのＰＯＳＴメソッドが利用されている。これらのフローチャートに係るプログラムは、ＰＣ５に組み込まれ、ＨＤＤ２０２に記憶されており、ＣＰＵ２０４によりＲＡＭ２０１に読み出されて実行される。
【０１４１】
図６のＳ６１４において、プロキシＡＰＰ１４３がＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数をコールすると、画像変換ＡＰＰ１４４が図１１（Ａ）に示すＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数の処理を実行する。図１１（Ａ）に示すように、画像変換ＡＰＰ１４４は、ＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数の処理を開始し（Ｓ１１０１）、図１５で後述するアクセストークンの確認処理を実行する（Ｓ１１２５）。このとき、次に示す情報をこの処理（サブルーチン関数）の引数として渡す。
・サービスＩＤ
・クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤ
・クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤ
・画像変換ＡＰＰ１４４を利用するためのアクセストークン
【０１４２】
このとき、ＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数に対するＨＴＴＰのＧＥＴ要求には、クエリパラメータとしてセッションＩＤとシーケンスとが含まれている。シーケンスは、ＧＥＴ要求の発行元（本例ではプロキシＡＰＰ１４３）が生成する任意の番号である。
【０１４３】
続いて、画像変換ＡＰＰ１４４は、クエリパラメータに含まれているセッションＩＤを検索キーとして、セッション管理データベース内の進捗状況（Ｐｒｏｇｒｅｓｓ）を確認する（Ｓ１１０２）。続いて、画像変換ＡＰＰ１４４は、進捗状況（Ｐｒｏｇｒｅｓｓ）に正常終了を表す「０」がセットされていると判断した場合（Ｓ１１０３でＹＥＳの場合）、Ｓ１１０４に処理を移す。他方、画像変換ＡＰＰ１４４は、「０」以外（「１」または「２」）がセットされていると判断した場合（Ｓ１１０３でＮＯの場合）、Ｓ１１０５に処理を移す。
【０１４４】
Ｓ１１０４では、画像変換ＡＰＰ１４４は、ＨＴＴＰのＧＥＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに「処理完了応答」をセットし、Ｓ１１０８に処理を移す。Ｓ１１０５では、画像変換ＡＰＰ１４４は、進捗状況（Ｐｒｏｇｒｅｓｓ）を確認する。このとき、画像変換ＡＰＰ１４４は、進捗状況（Ｐｒｏｇｒｅｓｓ）に処理中を表す「１」がセットされていると判断した場合、Ｓ１１０６に処理を移し、他方、「１」以外（「２」）がセットされている判断した場合、Ｓ１１０７に処理を移す。
【０１４５】
Ｓ１１０６では、画像変換ＡＰＰ１４４は、ＨＴＴＰのＧＥＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに「処理中応答」をセットし、Ｓ１１０８に処理を移す。Ｓ１１０７では、画像変換ＡＰＰ１４４は、ＨＴＴＰのＧＥＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに「エラー応答」をセットし、Ｓ１１０８に処理を移す。
【０１４６】
Ｓ１１０８では、画像変換ＡＰＰ１４４は、ＧＥＴ要求の発行元（本例ではプロキシＡＰＰ１４３）に対して応答メッセージを送信し、ＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数の処理を終了する（Ｓ１１０９）。
【０１４７】
ここで、「処理完了応答」、「処理中応答」、及び「エラー応答」の詳細について説明する。これらの応答は、それぞれ、Ｓ１１０１においてＧＥＴ要求のクエリパラメータに含まれていたシーケンスを用いて演算された結果であり、例えば、次に示す情報を文字列に変換した文字列情報で構成される。
「処理完了応答」  ＝  シーケンス
「処理中応答」  ＝  シーケンス＋１
「エラー応答」  ＝  シーケンス＋２
【０１４８】
このように、画像変換ＡＰＰ１４４は、ＨＴＴＰのＧＥＴ要求に対するレスポンスとしてＸＭＬを使って定義した可視的な情報等ではなく一般には意味がわからない文字列情報を用いる。ＷｅｂサービスＡＰＩに対する不正なアクセスによる誤動作や不正な制御を防止することができる。なお、このような不正なアクセスを防止する構成は、この例に限られるものではなく、ハッシュ化等、より複雑な演算を組み合わせてもよい。また、図８のＳ８０３において、プロキシＡＰＰ１４３がＪｏｂＣｏｍｐｌｅｔｅｄ関数をコールすると、画像変換ＡＰＰ１４４が図１１（Ｂ）に示すＪｏｂＣｏｍｐｌｅｔｅｄ関数の処理を実行する。
【０１４９】
図１１（Ｂ）に示すように、画像変換ＡＰＰ１４４は、ＪｏｂＣｏｍｐｌｅｔｅｄ関数の処理を開始すると（Ｓ１１２１）、図１５で後述するアクセストークンの確認処理を実行する（Ｓ１１２６）。このとき、次に示す情報をこの処理（サブルーチン関数）の引数として渡す。
・サービスＩＤ
・クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤ
・クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤ
・画像変換ＡＰＰ１４４を利用するためのアクセストークン
そして、印刷画像（ＪＰＥＧファイル）を削除し（Ｓ１１２２）、Ｓ１１２３に処理を移す。
【０１５０】
Ｓ１１２３では、画像変換ＡＰＰ１４４は、ＨＴＴＰＳのＰＯＳＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに、正常終了したことを表すＳＵＣＣＥＳＳをセットする。また、Ｓ１１２３では、画像変換ＡＰＰ１４４は、ＰＯＳＴ要求の発行元（本例ではプロキシＡＰＰ１４３）に対して応答メッセージを送信する。そして、画像変換ＡＰＰ１４４は、ＪｏｂＣｏｍｐｌｅｔｅｄ関数の処理を終了する（Ｓ１１２４）。
【０１５１】
次に、画像変換ＡＰＰ１４４がエクスポートするＷｅｂサービスＡＰＩの処理について図１２を用いて説明する。図１２は、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＲｅｓｕｌｔ関数の処理に係るフローチャートの一例を示す図である。
【０１５２】
ＣｒｅａｔｅＰｒｉｎｔＪｏｂＲｅｓｕｌｔ関数については、ＳＳＬ通信で暗号化されたＨＴＴＰＳのＰＯＳＴメソッドが利用されている。このフローチャートに係るプログラムは、ＰＣ５に組み込まれ、ＨＤＤ２０２に記憶されており、ＣＰＵ２０４によりＲＡＭ２０１に読み出されて実行される。
【０１５３】
図７のＳ７０１において、プロキシＡＰＰ１４３がＣｒｅａｔｅＰｒｉｎｔＪｏｂＲｅｓｕｌｔ関数をコールすると、画像変換ＡＰＰ１４４が図１２に示すＣｒｅａｔｅＰｒｉｎｔＪｏｂＲｅｓｕｌｔ関数の処理を実行する。図１２に示すように、画像変換ＡＰＰ１４４は、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＲｅｓｕｌｔ関数の処理を開始し（Ｓ１２０１）、図１５で後述するアクセストークンの確認処理を実行する（Ｓ１２０７）。このとき、次に示す情報をこの処理（サブルーチン関数）の引数として渡す。
・サービスＩＤ
・クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤ
・クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤ
・画像変換ＡＰＰ１４４を利用するためのアクセストークン
続いて、画像変換ＡＰＰ１４４は、ＨＴＴＰＳのＰＯＳＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに、画像変換ＡＰＰ１４４を利用するためへのアクセストークンをセットし（Ｓ１２０２）、Ｓ１２０３に処理を移す。
【０１５４】
Ｓ１２０３では、画像変換ＡＰＰ１４４は、ＰＯＳＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに、印刷ジョブアクセスＵＲＬ（ＪＰＥＧファイルの格納先のＵＲＬ）をセットし、Ｓ１２０４に処理を移す。Ｓ１２０４では、画像変換ＡＰＰ１４４は、ＰＯＳＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージに、印刷画像（ＪＰＥＧファイル）の総ページ数をセットし、Ｓ１２０５に処理を移す。Ｓ１２０５では、画像変換ＡＰＰ１４４は、ＰＯＳＴ要求の発行元（本例ではプロキシＡＰＰ１４３）に対して応答メッセージを送信し、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＲｅｓｕｌｔ関数の処理を終了する（Ｓ１２０６）。
【０１５５】
図１３は、ＷｅｂサービスＡＰＩのコーリングシーケンスの一例を示す図である。図１３（Ａ）は、プロキシＡＰＰ１４３とＭＦＰ３との間のコーリングシーケンスの一例を示す図である。図１３（Ｂ）は、プロキシＡＰＰ１４３と画像変換ＡＰＰ１４４との間のコーリングシーケンスの一例を示す図である。
【０１５６】
図１３（Ａ）に示すように、プロキシＡＰＰ１４３とＭＦＰ３との間では、ＭＦＰ３は、プロキシＡＰＰ１４３がエクスポートしているＷｅｂサービスＡＰＩをコールしている。即ち、ＣｈｅｃｋＰｒｉｎｔＪｏｂ関数、ＧｅｔＰｒｉｎｔＪｏｂ関数、ＥｎｄＰｒｉｎｔＪｏｂ関数の順で、プロキシＡＰＰ１４３がエクスポートしているＷｅｂサービスＡＰＩがコールされる。
【０１５７】
ここで、ＣｈｅｃｋＰｒｉｎｔＪｏｂ関数については（ポーリング処理だけが）、暗号化されていないＨＰＰＴのＧＥＴメソッドが利用され、それ以外の関数については全てＳＳＬ通信で暗号化されたＨＴＴＰＳのＧＥＴメソッドが利用されている。このように、印刷ジョブの有無を確認するだけのためのポーリングに、暗号化されていないＨＴＴＰメソッドを利用することで、ポーリングに要する時間が低減され、ユーザの操作性に優れた周辺装置制御システムを実現することができる。また、ポーリングにかかる負荷を低減することができるので、例えば負荷に対応するための構成が必要なくなるので、システムの構築やプリンタやＭＦＰのファームウェアの実装が容易となり、開発コストを削減できる。
【０１５８】
また、図１３（Ｂ）に示すように、プロキシＡＰＰ１４３と画像変換ＡＰＰ１４４との間では、プロキシＡＰＰ１４３は、画像変換ＡＰＰ１４４がエクスポートしているＷｅｂサービスＡＰＩをコールしている。即ち、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＳｅｔ関数、ＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数、ＣｒｅａｔｅＰｒｉｎｔＪｏｂＲｅｓｕｌｔ関数、ＪｏｂＣｏｍｐｌｅｔｅｄ関数の順で画像変換ＡＰＰ１４４がエクスポートしているＷｅｂサービスＡＰＩがコールされる。
【０１５９】
ここで、ＣｏｎｆｉｒｍＰｒｏｇｒｅｓｓ関数については（ポーリング処理だけが）、暗号化されていないＨＰＰＴのＧＥＴメソッドが利用され、それ以外の関数については全てＳＳＬ通信で暗号化されたＨＴＴＰＳのＰＯＳＴメソッドが利用されている。
【０１６０】
このように、処理の進捗状況を確認するだけのためのポーリングに、暗号化されていないＨＴＴＰメソッドを利用することで、ポーリングに要する時間が低減され、ユーザの操作性に優れた周辺装置制御システムを実現することができる。また、ポーリングにかかる負荷を低減することができるので、例えば負荷に対応するための構成が必要なくなるので、システムの構築やアプリケーションの実装が容易となり、開発や運用コストを削減できる。
【０１６１】
次に、画像変換ＡＰＰ１４４がエクスポートするＷｅｂサービスＡＰＩの処理について図１４を用いて説明する。図１４は、ＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数の処理に係るフローチャートの一例を示す図である。ＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数については、ＳＳＬ通信で暗号化されたＨＴＴＰＳのＰＯＳＴメソッドが利用されている。このフローチャートに係るプログラムは、ＰＣ５に組み込まれ、ＨＤＤ２０２に記憶されており、ＣＰＵ２０４によりＲＡＭ２０１に読み出されて実行される。
【０１６２】
図１４では、エラーケースに関する処理を省略し、正常ケースだけを示す。図６のＳ６２２において、プロキシＡＰＰ１４３がＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数をコールすると、画像変換ＡＰＰ１４４のＣＰＵ２０４が図１４に示すＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数の処理を実行する。Ｓ１４０１において、画像変換ＡＰＰ１４４は、ＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数の処理を開始する。
【０１６３】
Ｓ１４０２において、画像変換ＡＰＰ１４４は、プロキシＡＰＰ１４３から入力パラメータを含む前処理情報を受け取る。画像変換ＡＰＰ１４４は、入力パラメータとして「画像変換ＡＰＰ１４４を利用するユーザＩＤ」と「画像変換ＡＰＰ１４４を利用するユーザパスワード」を使用してユーザ認証を行う。ここでは、画像変換ＡＰＰ１４４は、該入力パラメータを使って、認証ＡＰＰ１４８がエクスポートするＷｅｂサービスＡＰＩの１つであるユーザ認証関数をコールして、ユーザ認証を行う。認証ＡＰＰ１４８のＨＤＤ２０２はユーザの認証情報を保持する保持手段として機能し、認証ＡＰＰ１４８のＣＰＵ２０４は、ユーザが存在する場合にユーザ認証を行う。
【０１６４】
例えば、ユーザ認証が初回の場合、認証ＡＰＰ１４８にはユーザが存在しない。また、記憶手段として機能するＨＤＤ２０２の記憶容量に起因して、上述の入力パラメータが古いとユーザが存在しない場合がある。上述の状況下では、Ｓ１４０２において、画像変換ＡＰＰ１４４はユーザ認証に失敗する。ユーザ認証に失敗した場合、画像変換ＡＰＰ１４４は、プロキシＡＰＰ１４３から入力パラメータとして「認証ＡＰＰ１４８を利用する管理者ＩＤ」と「認証ＡＰＰ１４８を利用する管理者パスワード」を使用する。ここでは、認証ＡＰＰ１４８がエクスポートするＷｅｂサービスＡＰＩの１つであるログイン関数をコールしてログインする。
【０１６５】
ログイン後、画像変換ＡＰＰ１４４は、「画像変換ＡＰＰ１４４を利用するユーザＩＤ」と「画像変換ＡＰＰ１４４を利用するユーザパスワード」を使って新規ユーザ登録を行う。ここでは、画像変換ＡＰＰ１４４は、認証ＡＰＰ１４８がエクスポートするＷｅｂサービスＡＰＩの１つであるユーザ登録関数をコールする。画像変換ＡＰＰ１４４は、新規ユーザ登録を行った後、または登録処理と同時にユーザ認証を行う。画像変換ＡＰＰ１４４のＣＰＵ２０４は、ユーザ認証に成功すると、認証ＡＰＰ１４８がエクスポートするＷｅｂサービスＡＰＩの１つであるアクセストークン生成関数をコールする。これにより、画像変換ＡＰＰ１４４のＣＰＵ２０４は、画像変換ＡＰＰ１４４を利用するためのアクセストークンを取得する（Ｓ１４０３）。画像変換ＡＰＰ１４４は、この画像変換ＡＰＰ１４４を利用するためのアクセストークンを第１のアクセストークンとしてＨＤＤ２０２のセッション管理データベースに保存する（Ｓ１４０４）。すなわち、画像変換ＡＰＰ１４４のＣＰＵ２０４は認証要求を認証ＡＰＰ１４８に送信し、認証ＡＰＰ１４８から第１のアクセストークンを取得する取得手段として機能する。また、セッション管理データベースは記憶手段として機能し、次に示すような情報を保存する。
［セッション管理データベース］
・検索キー：サービスＩＤと、クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤと、クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤとを組合せて生成された値
・画像変換ＡＰＰ１４４を利用するためのアクセストークン
【０１６６】
Ｓ１４０５において、画像変換ＡＰＰ１４４は、ＨＴＴＰＳのＰＯＳＴ要求に対するレスポンスのＢＯＤＹに含める応答メッセージを作成する。具体的には、画像変換ＡＰＰ１４４は、ＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数が正常終了したことを表すＳＵＣＣＥＳＳとＳ１４０３で取得した画像変換ＡＰＰ１４４を利用するためのアクセストークンとをセットする。そして、画像変換ＡＰＰ１４４は、ＰＯＳＴ要求の発行元（本例ではプロキシＡＰＰ１４３）に対して応答メッセージを送信する（Ｓ１４０５）。Ｓ１４０６において、画像変換ＡＰＰ１４４は、ＲｅｇｉｓｔｅｒＡｎｄＡｕｔｈ関数の処理を終了する。
【０１６７】
図１５は、画像変換ＡＰＰ１４４のアクセストークンの確認処理に係るフローチャートの一例を示す図である。このフローチャートに係るプログラムは、ＰＣ５に組み込まれ、ＨＤＤ２０２に記憶されており、ＣＰＵ２０４によりＲＡＭ２０１に読み出されて実行される。
【０１６８】
アクセストークンの確認処理は、画像変換ＡＰＰ１４４内のサブルーチン関数であり、次に示す情報がこのサブルーチン関数の引数として渡される。
・サービスＩＤ
・クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤ
・クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤ
・画像変換ＡＰＰ１４４を利用するためのアクセストークン
【０１６９】
画像変換ＡＰＰ１４４は、図１０のＳ１０１８、図１１（Ａ）のＳ１１２５、図１１（Ｂ）のＳ１１２６、図１２のＳ１２０７において、アクセストークンの確認処理を実行する。画像変換ＡＰＰ１４４は、図１５に示すように、Ｓ１５０１においてアクセストークンの確認処理を開始する。画像変換ＡＰＰ１４４は、サービスＩＤと、クラウド印刷ＡＰＰ１４６が発行したプリンタＩＤと、クラウド印刷ＡＰＰ１４６が発行した印刷ジョブＩＤとを組合せて検索キーを生成する（Ｓ１５０２）。Ｓ１５０３において、画像変換ＡＰＰ１４４は、この検索キーを使ってセッション管理データベースを検索する。
【０１７０】
Ｓ１５０４において、画像変換ＡＰＰ１４４は、この検索キーに関連付けられた情報をセッション管理データベース内に発見した場合Ｓ１５０５に処理を移し、見つからなかった場合Ｓ１５０９に処理を移す。画像変換ＡＰＰ１４４のＣＰＵ２０４は、画像変換ＡＰＰ１４４を利用するためのアクセストークン（第２のアクセストークン）と、セッション管理データベースに保存されているアクセストークンが、一致するか否かを比較する。すなわち、画像変換ＡＰＰ１４４のＣＰＵ２０４は、第１のアクセストークンと第２のアクセストークンを比較する比較手段として機能する。Ｓ１５０６において、画像変換ＡＰＰ１４４は、一致すると判断した場合Ｓ１５０７へ進み、不一致と判断した場合Ｓ１５０９へ進む。
【０１７１】
Ｓ１５０７において、画像変換ＡＰＰ１４４は、成功を表すＳｕｃｃｅｓｓを戻り値にセットする。そして、画像変換ＡＰＰ１４４は、このサブルーチン関数の呼び出し元へ戻る（Ｓ１５０８）。Ｓ１５０９では、画像変換ＡＰＰ１４４は、失敗を表すＦａｉｌｕｒｅを戻り値にセットする。そして、画像変換ＡＰＰ１４４は、このサブルーチン関数の呼び出し元である、画像変換ＡＰＰ１４４がエクスポートするＷｅｂサービスＡＰＩのＨＴＴＰのＰＯＳＴ要求に対し応答メッセージを作成する。画像変換ＡＰＰ１４４のＣＰＵ２０４は、レスポンスのＢＯＤＹに含める応答メッセージに、そのＡＰＩが成功して失敗終了したことを表すＦＡＩＬＵＲＥをセットし、処理を中止する（Ｓ１５０９）。そして、画像変換ＡＰＰ１４４は、ＰＯＳＴ要求の発行元（本例ではプロキシＡＰＰ１４３）に対して応答メッセージを送信する（Ｓ１５１０）。そして、画像変換ＡＰＰ１４４は、このサブルーチン関数と前記ＡＰＩの処理を終了する（Ｓ１５１１）。すなわち、ここでは画像変換ＡＰＰ１４４のＣＰＵ２０４は、第１のアクセストークンと第２のアクセストークンが一致すると判定した場合は処理を実行し、一致しないと判定した場合は処理を中止する処理実行手段として機能する。
【０１７２】
Ｓ１５０５において、画像変換ＡＰＰ１４４は比較処理を行う。具体的には、このサブルーチン関数の引数として渡された画像変換ＡＰＰ１４４を利用するためのアクセストークンと、セッション管理データベースに保存されている画像変換ＡＰＰ１４４を利用するためのアクセストークンを比較する。アクセストークンが一致するか否かを比較することにより、画像変換ＡＰＰは、認証ＡＰＰ１４８がエクスポートするアクセストークン妥当性確認関数を利用することなくアクセストークンの妥当性を判断する。従って、プロキシＡＰＰ１４３が、画像変換ＡＰＰ１４４に対してコールする度に、画像変換ＡＰＰ１４４が、認証ＡＰＰ１４８がエクスポートするＷｅｂサービスＡＰＩのアクセストークン妥当性確認関数をコールする必要が無い。その結果、パフォーマンスを向上することができる。
【０１７３】
また、認証ＡＰＰ１４８のシステムの規模を小さくすることができ、構成を簡素化することができる。これにより、運用コストを下げることもできる。さらに、上位サービスであるプロキシＡＰＰ１４３になりすましたなりすましプログラムによる悪意のある攻撃に対しても有効である。なりすましプログラムからのアクセスのような悪意のある攻撃による誤動作や情報漏洩を防止することもできる。
【０１７４】
さらに、上位サービスであるプロキシＡＰＰ１４３が誤動作した場合に、例えば、ある印刷ジョブに付与されたアクセストークンが、前記誤動作に伴って他の印刷ジョブに関連付けられてしまう可能性がある。このようなケースにおいても、画像変換ＡＰＰ１４４はその印刷ジョブを処理せずに、印刷を中止することができるので、誤印刷を防止することもできる。
【０１７５】
さらに、認証ＡＰＰ１４３にユーザが存在しない場合は、画像変換ＡＰＰ１４４が新規ユーザ登録を行う。これによりユーザ自身がユーザ登録を行う必要がなく、ユーザビリティーが向上する。
【０１７６】
上述した本実施形態の情報処理システムは、以下に示す効果を奏することができる。本実施形態の情報処理システムは、画像変換ＡＰＰを利用するためのアクセストークンの比較処理結果に基づいて、当該アクセストークンの妥当性を判断する。従って、本実施形態の情報処理システムによれば、Ｗｅｂサービスアプリケーションが提供するＷｅｂサービスＡＰＩの多数コールを抑制し、パフォーマンスを向上することができる。また、Ｗｅｂサービスアプリケーションのシステムの規模を小さくすることができ、構成を簡素化することができる。また、構成を簡素化することにより、運用コストを下げることができる。
【０１７７】
また、本実施形態の情報処理システムによれば、Ｗｅｂサービスアプリケーションになりすましたなりすましプログラムによる悪意のある攻撃時における誤動作や情報漏洩を防止することができる。また、Ｗｅｂサービスアプリケーションが誤動作した場合に、該当しない処理やジョブ（例えば、他人の印刷ジョブ）等を誤って処理することがないようにすることができる。
【０１７８】
また、本実施形態の情報処理システムによれば、ポーリングによる画像変換処理の進捗状況の確認処理や、ポーリングによる印刷ジョブの有無の確認処理に時間を要することがなくなり、ユーザの操作性を向上することができる。さらに、ＭＦＰ３のような性能の低い廉価版のプリンタや複合機のファームウェアの実装にも支障をきたすことなく、各処理に時間を要することもなくなるため、ユーザの操作性を向上することができる。
【０１７９】
上述した実施形態では、情報処理装置としてパーソナルコンピュータを想定した。しかしながら、この例に限られるものではなく、例えばＤＶＤプレーヤー、ゲーム、セットトップボックス、インターネット家電等、同様な使用方法が可能な任意の情報処理装置（端末）に対して適用することができる。
【０１８０】
また、上述した実施形態では、周辺装置としてＭＦＰを例示した。しかしながら、周辺装置として他に、複写機、ファクシミリ、スキャナ、デジタルカメラ、及びこれらの複合機能を備える装置等の何れかであってもよい。
また、上述した実施形態では、ＯＳに例としてＷｉｎｄｏｗｓ（登録商標）と同等のＯＳを使用したが、このＯＳに限られるものではなく、任意のＯＳを使用することができる。また、上述した実施形態では、ネットワーク４の構成例としてＥｔｈｅｒｎｅｔ（登録商標）を用いたが、この例に限られるものではなく、他の任意のネットワーク構成であってもよい。
【０１８１】
また、上述した実施形態では、ＰＣ１、ＰＣ２、ＰＣ５、ＰＣ７とＭＦＰ３、ＭＦＰ１０３との間のインタフェースとして、Ｅｔｈｅｒｎｅｔ（登録商標）を採用した。しかしながら、このインタフェースに限られることなく、例えば、無線ＬＡＮ、ＩＥＥＥ１３９４、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＵＳＢ等の任意のインタフェースを用いるようにしてもよい。また、各種のアプリケーション（ファームウェア）における機能、上述したフローチャートに係る処理の一部、又は全部を専用のハードウェアを用いて構成してもよい。
【０１８２】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（コンピュータプログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そしてそのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【０１８３】
１４３  プロキシＡＰＰ
１４４  画像変換ＡＰＰ
１４８  認証ＡＰＰ
【図１】
0005875351.tif 000002
【図２】
0005875351.tif 000003
【図３】
0005875351.tif 000004
【図４】
0005875351.tif 000005
【図５】
0005875351.tif 000006
【図６】
0005875351.tif 000007
【図７】
0005875351.tif 000008
【図８】
0005875351.tif 000009
【図９】
0005875351.tif 000010
【図１０】
0005875351.tif 000011
【図１１】
0005875351.tif 000012
【図１２】
0005875351.tif 000013
【図１３】
0005875351.tif 000014
【図１４】
0005875351.tif 000015
【図１５】
0005875351.tif 000016