(57)【要約】      （修正有）【課題】効率の良い通信を行うことのできるゲートウェイ装置、通信システム、およびゲートウェイ装置の制御プログラムを提供する。【解決手段】ゲートウェイＭＦＰ１００は、ファイアーウォールの内部に設けられた複数のデバイス２００ａ、２００ｂ、２００ｃ、２００ｄ（以降、デバイス２００と記す）の各々と、ファイアーウォールの外部に設けられたクラウドサーバー４００との間の通信であるクラウド通信を中継するゲートウェイ装置である。ゲートウェイＭＦＰ１００は、複数のデバイス２００の各々のジョブの処理性能の情報と、複数のデバイス２００の各々のジョブの実行状態の情報とを取得する。ゲートウェイＭＦＰ１００は、取得した情報に基づいて、バッファメモリ１２１内で複数のデバイス２００の各々に割り当てる割当領域のサイズを決定し、決定したサイズをクラウドサーバー４００に通知する。【選択図】図６
2018010400.tif 000002
【特許請求の範囲】
【請求項１】
ファイアーウォールの内部に設けられた複数のデバイスの各々と、前記ファイアーウォールの外部に設けられたクラウドサーバーとの間の通信であるクラウド通信を中継するゲートウェイ装置であって、
前記クラウドサーバーから前記複数のデバイスの各々に送信されるデータを一時的に記憶する記憶領域を含む記憶装置と、
前記複数のデバイスの各々のジョブの処理性能の情報を取得する第１の取得手段と、
前記複数のデバイスの各々のジョブの実行状態の情報を取得する第２の取得手段と、
前記第１および第２の取得手段にて取得した情報に基づいて、前記記憶領域内で前記複数のデバイスの各々に割り当てる割当領域のサイズを決定する第１の決定手段と、
前記第１の決定手段にて決定したサイズを前記クラウドサーバーに通知する通知手段とを備えた、ゲートウェイ装置。
【請求項２】
前記複数のデバイスのうち少なくとも１つのデバイスのジョブの実行状態が変化した場合に、前記第２の取得手段は前記複数のデバイスの各々のジョブの実行状態の情報を取得し、
前記第１の決定手段は、前記第２の情報取得手段にて情報を取得した場合に、前記割当領域のサイズを決定する、請求項１に記載のゲートウェイ装置。
【請求項３】
前記ゲートウェイのジョブの実行状態に基づいて、前記記憶領域のサイズを決定する第２の決定手段をさらに備えた、請求項１または２に記載のゲートウェイ装置。
【請求項４】
前記ジョブの実行状態の情報は、実行中および実行待ちのジョブの数の情報を含む、請求項１〜３のいずれかに記載のゲートウェイ装置。
【請求項５】
前記ジョブの実行状態の情報は、実行中および実行待ちの印刷ジョブで印刷する予定の用紙の枚数の情報を含む、請求項１〜４のいずれかに記載のゲートウェイ装置。
【請求項６】
前記ジョブの実行状態の情報は、実行中および実行待ちのジョブの種類の情報を含む、請求項１〜５のいずれかに記載のゲートウェイ装置。
【請求項７】
前記第１の取得手段にて取得した情報に基づいて、前記複数のデバイスの各々についての、想定されるジョブの実行状態に応じた前記割当領域のサイズの最適値を算出する算出手段をさらに備え、
前記第１の決定手段は、前記複数のデバイスの各々についての前記最適値にさらに基づいて、前記割当領域のサイズを決定する、請求項１〜６のいずれかに記載のゲートウェイ装置。
【請求項８】
前記算出手段は、前記複数のデバイスの各々の想定されるジョブの実行状態が同じである場合に、ジョブの処理性能が高いデバイスの前記最適値が、ジョブの処理性能が低いデバイスの前記最適値よりも大きくなるように、前記複数のデバイスの各々についての前記最適値を算出する、請求項７に記載のゲートウェイ装置。
【請求項９】
ファイアーウォールの内部に設けられた複数のデバイスの各々と、前記ファイアーウォールの外部に設けられたクラウドサーバーと、前記複数のデバイスの各々と前記クラウドサーバーとの間の通信であるクラウド通信を中継するゲートウェイ装置とを備えた、通信システムであって、
前記ゲートウェイ装置は、
前記クラウドサーバーから前記複数のデバイスの各々に送信されるデータを一時的に記憶する記憶領域を含む記憶装置と、
前記複数のデバイスの各々のジョブの処理性能の情報を取得する第１の取得手段と、
前記複数のデバイスの各々のジョブの実行状態の情報を取得する第２の取得手段と、
前記第１および第２の取得手段にて取得した情報に基づいて、前記記憶領域内で前記複数のデバイスの各々に割り当てる割当領域のサイズを決定する第１の決定手段と、
前記第１の決定手段にて決定した割当領域のサイズを前記クラウドサーバーに通知する通知手段とを含む、通信システム。
【請求項１０】
前記クラウドサーバーは、前記通知手段から通知された割当領域のサイズに基づいて決定したサイズで、前記複数のデバイスの各々にデータを送信するデータ送信手段を含む、請求項９に記載の通信システム。
【請求項１１】
前記クラウドサーバーは、
前記複数のデバイスのうち一のデバイスに送信するデータのサイズが所定値より大きいか否かを判別する判別手段と、
前記一のデバイスに送信するデータのサイズが所定値より大きいと判別した場合に、前記ゲートウェイに対して通知を行うサイズ通知手段とを含み、
前記第２の取得手段は、前記サイズ通知手段から通知を受け付けた場合に、前記複数のデバイスの各々のジョブの実行状態の情報を取得し、
前記第１の決定手段は、前記第２の取得手段にて情報を取得した場合に、前記割当領域のサイズを決定する、請求項９または１０に記載の通信システム。
【請求項１２】
前記クラウドサーバーは、前記複数のデバイスのうち一のデバイスでのプリントジョブの実行指示を前記端末から受け付けた場合に、前記端末の位置情報を前記ゲートウェイに送信する位置送信手段を含み、
前記第１の決定手段は、前記位置送信手段から送信された位置情報に基づいて、前記端末が前記一のデバイスの付近に存在する場合に前記一のデバイスに割り当てる前記割当領域のサイズを、前記端末が前記一のデバイスの付近に存在しない場合に前記一のデバイスに割り当てる前記割当領域のサイズよりも大きくする、請求項９〜１１のいずれかに記載の通信システム。
【請求項１３】
ファイアーウォールの内部に設けられた複数のデバイスの各々と、前記ファイアーウォールの外部に設けられたクラウドサーバーとの間の通信であるクラウド通信を中継するゲートウェイ装置の制御プログラムであって、
前記ゲートウェイ装置は、前記クラウドサーバーから前記複数のデバイスの各々に送信されるデータを一時的に記憶する記憶領域を含む記憶装置を備え、
前記制御プログラムは、
前記複数のデバイスの各々のジョブの処理性能の情報を取得する第１の取得ステップと、
前記複数のデバイスの各々のジョブの実行状態の情報を取得する第２の取得ステップと、
前記第１および第２の取得ステップにて取得した情報に基づいて、前記記憶領域内で前記複数のデバイスの各々に割り当てる割当領域のサイズを決定する第１の決定ステップと、
前記第１の決定ステップにて決定したサイズを前記クラウドサーバーに通知する通知ステップとをコンピューターに実行させる、ゲートウェイ装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲートウェイ装置、通信システム、およびゲートウェイ装置の制御プログラムに関する。より特定的には、本発明は、ファイアーウォールの内部に設けられた複数のデバイスの各々と、ファイアーウォールの外部に設けられたクラウドサーバーとの間の通信であるクラウド通信を中継するゲートウェイ装置、通信システム、およびゲートウェイ装置に関する。
【背景技術】
【０００２】
電子写真式の画像形成装置には、スキャナー機能、ファクシミリ機能、複写機能、プリンターとしての機能、データ通信機能、およびサーバー機能を備えたＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）、ファクシミリ装置、複写機、プリンターなどがある。
【０００３】
従来、サーバーの導入コストや管理コストを削減することを目的として、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）内のサーバーで動作していたサーバソフトウェアを、クラウドサーバー上にクラウドアプリケーションとして導入するサービスが提供されている。この種のサービスでは、クラウドサーバーにインストールされたクラウドアプリケーションは、ＬＡＮに接続されたＭＦＰやプリンターなどのデバイスと相互に通信を行う。しかし、ＬＡＮとインターネットとの間にはファイアーウォールが存在する。クラウドアプリからＬＡＮ内のデバイスへのアクセスはセキュリティ上許容されず、ファイアーウォールによって遮断される。
【０００４】
そこで、ゲートウェイ装置を用いてクラウドアプリからＬＡＮ内のデバイスへのアクセスを可能とする技術が提案されている。下記特許文献１には、クラウドサーバーとゲートウェイとの間に存在するファイアーウォールに、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）の通信プロトコルを用いたトンネル（ＨＴＴＰトンネル）を形成し、このＨＴＴＰトンネルを通じて所望のデータを送信する技術が開示されている。
【０００５】
下記特許文献１に開示されている技術は具体的には次の通りである。ゲートウェイのソフトウェアを内蔵したＭＦＰであるゲートウェイＭＦＰは、その起動時に、ＬＡＮの外部に設けられた管理サーバーとの間でＸＭＰＰ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍｅｓｓａｇｉｎｇ  ａｎｄ  Ｐｒｅｓｅｎｃｅ  Ｐｒｏｔｏｃｏｌ）の通信プロトコルを用いたメッセージセッションを生成する。同時にゲートウェイＭＦＰは、同一のＬＡＮに接続されたデバイス（ＭＦＰやプリンターなど）を自らの管理下に置く。すなわち、ゲートウェイＭＦＰは、ブロードキャスト検索により管理下に置くデバイスを検出し、検出したデバイスの各々にＩＤ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）および管理情報を付与する。ゲートウェイＭＦＰは、デバイスとＩＤとの関係を記したＩＤリストを管理サーバーに送信するとともに、ＩＤとデバイスのＩＰアドレスとを関連づけて記憶する。
【０００６】
クラウドサーバーは、デバイスへのデータの送信が必要になると、管理サーバーに対してデバイスとの接続を要求する。管理サーバーは、クラウドサーバーからの要求を受け付けると、ゲートウェイＭＦＰに対して、接続の要求を受け付けたデバイスのＩＤと、トンネル接続要求とを送信する。ゲートウェイＭＦＰは、デバイスのＩＤとトンネル接続要求とを受信すると、クラウドサーバーとの間にＨＴＴＰトンネルを形成し、ＨＴＴＰトンネル通信を開始する。クラウドサーバーは、このＨＴＴＰトンネルを通じてゲートウェイＭＦＰにデータを送信する。ゲートウェイＭＦＰは、受信したデータをデバイスに送信する。またゲートウェイＭＦＰは、デバイスから受信したデータを、ＨＴＴＰトンネルを通じてクラウドサーバーへ送信する。
【０００７】
なお、サーバーからのデータの送信に関する技術は、下記特許文献２〜４などにも開示されている。下記特許文献２には、ハイパーテキストの受信時の環境を指定するための環境指定データを生成する利用環境情報生成部をクライアントに設け、クライアントから送信された環境指定データに対応するキーワードを含む編集データを生成する利用環境情報処理部と、サーバーから取得したハイパーテキストを編集データにしたがって編集する情報編集部とを編集サーバーに設ける技術が開示されている。編集サーバーは、たとえば環境指定データにユーザーが出勤中である旨のキーワードが含まれるときは最新情報のみを送信するようにハイパーテキストの配置を編集する。
【０００８】
下記特許文献３には、情報サーバーが接続されているＬＡＮと、低速な無線移動端末が接続されている無線ネットワークとの間に、エージェントサーバーというゲートウェイを設置する技術が開示されている。この技術では、エージェントサーバーは、端末の伝送能力などに応じて間引き量を決定し、決定した間引き量だけ間引いたデータを情報サーバーから無線移動端末に送信する。
【０００９】
下記特許文献４には、画像処理装置のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）がＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）の空き容量に応じたバイト数のデータファイルの一部を、プロキシサーバー装置に対して要求する技術が開示されている。プロキシサーバー装置は、ファイルサーバーから一括取得した当該データファイルから、要求された一部を抽出して送信する。画像処理装置のＣＰＵは、当該ファイルの一部に基づいて画像をページメモリに形成して、当該データファイルの一部を破棄する処理を繰り返して行う。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１４−２１５８４６号公報
【特許文献２】特開平１０−０２１１６５号公報
【特許文献３】特開平１０−０９１５６２号公報
【特許文献４】特開２００１−１０１０９１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
図２４は、ＨＴＴＰのメッセージのデータ構造を模式的に示す図である。
【００１２】
図２４を参照して、ＨＴＴＰのメッセージＭＳは、ヘッダ部ＨＤとボディ部ＢＤとを含んでいる。ヘッダ部ＨＤは、ＨＴＴＰの標準のヘッダであるプロトコル標準ヘッダＨＤ１と、ＨＴＴＰトンネル通信の制御に使用するトンネル通信用ヘッダＨＤ２とを含んでいる。ボディ部ＢＤは、送信するデータの本体（たとえば印刷データなど）よりなっている。
【００１３】
図２５は、従来技術において、クラウドサーバー１４００に保存されている印刷データをデバイス１２００で印刷するプリントジョブを、ユーザーが携帯端末を通じて実行した場合に、クラウドサーバーがデバイスへ印刷データを送信する際の動作を示すシーケンス図である。
【００１４】
図２４および図２５を参照して、クラウドアプリ１４０１は、クラウドサーバー１４００内に保存されたデータを管理するアプリケーションである。クラウドアプリ１４０１は、クラウドＰＦ（Ｐｌａｔｆｏｒｍ）１４０２上で動作する。
【００１５】
ゲートウェイＭＦＰ１１００は、クラウドサーバー１４００からデバイス１２００のＩＤとトンネル接続要求とを受信すると、ＨＴＴＰプロトコルを用いたリクエストメッセージＱ１００１をクラウドＰＦ（Ｐｌａｔｆｏｒｍ）１４０２に送信する。リクエストメッセージＱ１００１はヘッダ部ＨＤのみを含んでおり、ボディ部ＢＤを含んでいない。ヘッダ部ＨＤのトンネル通信用ヘッダＨＤ２には、ＨＴＴＰトンネルを通じたデータの送信の要求が記載されている。
【００１６】
クラウドアプリ１４０１は、クラウドＰＦ１４０２がリクエストメッセージＱ１００１を受信すると、クラウドサーバー１４００に保存されている印刷データをクラウドＰＦ１４０２に送信する。クラウドＰＦ１４０２は、リクエストメッセージＱ１００１を受信すると、レスポンスメッセージＰ１００１をゲートウェイＭＦＰ１１００に送信する。レスポンスメッセージＰ１００１は、ヘッダ部ＨＤと、印刷データを含むボディ部ＢＤとを含んでいる。ゲートウェイＭＦＰ１１００は、受信した印刷データをデバイス１２００に送信する。デバイス１２００は、全ての印刷データを受信した後で、印刷データを印刷するプリントジョブを実行する。
【００１７】
ここで、レスポンスメッセージＰ１００１のボディサイズ（レスポンスメッセージで許容されるボディ部ＢＤのサイズ）は固定値となっている。印刷データのサイズがボディサイズよりも大きい場合には、クラウドＰＦ１４０２は、ボディサイズ以下のサイズに印刷データを分割してゲートウェイＭＦＰ１１００に送信する必要がある。その結果、ゲートウェイＭＦＰ１１００からのリクエストメッセージＱ１００１の送信、およびクラウドＰＦ１４０２からのレスポンスメッセージＰ１００１の送信を、分割したデータの数だけ繰り返す必要があり、効率が悪かった。
【００１８】
たとえば、印刷データは６４０ｋｂのサイズであり、ボディサイズが６４ｋｂである場合には、クラウドＰＦ１４０２は、印刷データを６４ｋｂの１０個のデータに分割して、１０回に分けてゲートウェイＭＦＰ１１００に送信する必要がある。その結果、ゲートウェイＭＦＰ１１００からのリクエストメッセージＱ１００１の送信、およびクラウドＰＦ１４０２からのレスポンスメッセージＰ１００１の送信のセットを合計１０回行う必要があった。
【００１９】
ボディサイズを拡大するためには、ゲートウェイＭＦＰ１１００のバッファメモリ（クラウドサーバー１４００から受信したデータを一時的に記憶する領域）のサイズを増加する必要ある。しかし、ゲートウェイＭＦＰ１１００のバッファメモリの増加は、ゲートウェイＭＦＰ１１００の動作（プリント動作など）の遅延を招くおそれがあるため、ゲートウェイＭＦＰ１１００のバッファメモリのサイズを無条件に増加することはできない。
【００２０】
また、ゲートウェイＭＦＰ１１００が複数のデバイス１２００を管理下に置いている場合、ゲートウェイＭＦＰ１１００のバッファメモリは、複数のデバイスの各々に割り当てられる。しかし、割り当てられるべきバッファメモリのサイズの最適値は、デバイスの性能（プリントに関するハードウェアの性能など）によって異なるので、ボディサイズを拡大して通信を高速化してもデバイスの動作の高速化には必ずしも繋がらなかった。
【００２１】
ゲートウェイＭＦＰ１１００が使用可能なバッファメモリのサイズを踏まえつつ、複数のデバイス１２００の各々が適切なパフォーマンス発揮することが可能であるように、ゲートウェイＭＦＰ１１００のバッファメモリを、複数のデバイス１２００の各々に適切に割り当てる仕組みが求められていた。
【００２２】
本発明は、上記課題を解決するためのものであり、その目的は、効率の良い通信を行うことのできるゲートウェイ装置、通信システム、およびゲートウェイ装置の制御プログラムを提供することである。
【課題を解決するための手段】
【００２３】
本発明の一の局面に従うゲートウェイ装置は、ファイアーウォールの内部に設けられた複数のデバイスの各々と、ファイアーウォールの外部に設けられたクラウドサーバーとの間の通信であるクラウド通信を中継するゲートウェイ装置であって、クラウドサーバーから複数のデバイスの各々に送信されるデータを一時的に記憶する記憶領域を含む記憶装置と、複数のデバイスの各々のジョブの処理性能の情報を取得する第１の取得手段と、複数のデバイスの各々のジョブの実行状態の情報を取得する第２の取得手段と、第１および第２の取得手段にて取得した情報に基づいて、記憶領域内で複数のデバイスの各々に割り当てる割当領域のサイズを決定する第１の決定手段と、第１の決定手段にて決定したサイズをクラウドサーバーに通知する通知手段とを備える。
【００２４】
上記ゲートウェイ装置において好ましくは、複数のデバイスのうち少なくとも１つのデバイスのジョブの実行状態が変化した場合に、第２の取得手段は複数のデバイスの各々のジョブの実行状態の情報を取得し、第１の決定手段は、第２の情報取得手段にて情報を取得した場合に、割当領域のサイズを決定する。
【００２５】
上記ゲートウェイ装置において好ましくは、ゲートウェイのジョブの実行状態に基づいて、記憶領域のサイズを決定する第２の決定手段をさらに備える。
【００２６】
上記ゲートウェイ装置において好ましくは、ジョブの実行状態の情報は、実行中および実行待ちのジョブの数の情報を含む。
【００２７】
上記ゲートウェイ装置において好ましくは、ジョブの実行状態の情報は、実行中および実行待ちの印刷ジョブで印刷する予定の用紙の枚数の情報を含む。
【００２８】
上記ゲートウェイ装置において好ましくは、ジョブの実行状態の情報は、実行中および実行待ちのジョブの種類の情報を含む。
【００２９】
上記ゲートウェイ装置において好ましくは、第１の取得手段にて取得した情報に基づいて、複数のデバイスの各々についての、想定されるジョブの実行状態に応じた割当領域のサイズの最適値を算出する算出手段をさらに備え、第１の決定手段は、複数のデバイスの各々についての最適値にさらに基づいて、割当領域のサイズを決定する。
【００３０】
上記ゲートウェイ装置において好ましくは、算出手段は、複数のデバイスの各々の想定されるジョブの実行状態が同じである場合に、ジョブの処理性能が高いデバイスの最適値が、ジョブの処理性能が低いデバイスの最適値よりも大きくなるように、複数のデバイスの各々についての最適値を算出する。
【００３１】
本発明の他の局面に従う通信システムは、ファイアーウォールの内部に設けられた複数のデバイスの各々と、ファイアーウォールの外部に設けられたクラウドサーバーと、複数のデバイスの各々とクラウドサーバーとの間の通信であるクラウド通信を中継するゲートウェイ装置とを備えた、通信システムであって、ゲートウェイ装置は、クラウドサーバーから複数のデバイスの各々に送信されるデータを一時的に記憶する記憶領域を含む記憶装置と、複数のデバイスの各々のジョブの処理性能の情報を取得する第１の取得手段と、複数のデバイスの各々のジョブの実行状態の情報を取得する第２の取得手段と、第１および第２の取得手段にて取得した情報に基づいて、記憶領域内で複数のデバイスの各々に割り当てる割当領域のサイズを決定する第１の決定手段と、第１の決定手段にて決定した割当領域のサイズをクラウドサーバーに通知する通知手段とを含む。
【００３２】
上記通信システムにおいて好ましくは、クラウドサーバーは、通知手段から通知された割当領域のサイズに基づいて決定したサイズで、複数のデバイスの各々にデータを送信するデータ送信手段を含む。
【００３３】
上記通信システムにおいて好ましくは、クラウドサーバーは、複数のデバイスのうち一のデバイスに送信するデータのサイズが所定値より大きいか否かを判別する判別手段と、一のデバイスに送信するデータのサイズが所定値より大きいと判別した場合に、ゲートウェイに対して通知を行うサイズ通知手段とを含み、第２の取得手段は、サイズ通知手段から通知を受け付けた場合に、複数のデバイスの各々のジョブの実行状態の情報を取得し、第１の決定手段は、第２の取得手段にて情報を取得した場合に、割当領域のサイズを決定する。
【００３４】
上記通信システムにおいて好ましくは、クラウドサーバーは、複数のデバイスのうち一のデバイスでのプリントジョブの実行指示を端末から受け付けた場合に、端末の位置情報をゲートウェイに送信する位置送信手段を含み、第１の決定手段は、位置送信手段から送信された位置情報に基づいて、端末が一のデバイスの付近に存在する場合に一のデバイスに割り当てる割当領域のサイズを、端末が一のデバイスの付近に存在しない場合に一のデバイスに割り当てる割当領域のサイズよりも大きくする。
【００３５】
本発明のさらに他の局面に従うゲートウェイ装置の制御プログラムは、ファイアーウォールの内部に設けられた複数のデバイスの各々と、ファイアーウォールの外部に設けられたクラウドサーバーとの間の通信であるクラウド通信を中継するゲートウェイ装置の制御プログラムであって、ゲートウェイ装置は、クラウドサーバーから複数のデバイスの各々に送信されるデータを一時的に記憶する記憶領域を含む記憶装置を備え、制御プログラムは、複数のデバイスの各々のジョブの処理性能の情報を取得する第１の取得ステップと、複数のデバイスの各々のジョブの実行状態の情報を取得する第２の取得ステップと、第１および第２の取得ステップにて取得した情報に基づいて、記憶領域内で複数のデバイスの各々に割り当てる割当領域のサイズを決定する第１の決定ステップと、第１の決定ステップにて決定したサイズをクラウドサーバーに通知する通知ステップとをコンピューターに実行させる。
【発明の効果】
【００３６】
本発明によれば、効率の良い通信を行うことのできるゲートウェイ装置、通信システム、およびゲートウェイ装置の制御プログラムを提供することができる。
【図面の簡単な説明】
【００３７】
【図１】本発明の第１の実施の形態における通信システムの構成を概念的に示す図である。
【図２】本発明の第１の実施の形態におけるゲートウェイＭＦＰ１００およびデバイス２００の構成を示すブロック図である。
【図３】本発明の第１の実施の形態における管理サーバー３００およびクラウドサーバー４００の構成を示すブロック図である。
【図４】本発明の第１の実施の形態における携帯端末５００の構成を示すブロック図である。
【図５】本発明の第１の実施の形態における通信システムの基本的な動作を模式的に示す図である。
【図６】本発明の第１の実施の形態における割当領域のサイズと、送信されるデータのサイズとの関係を概念的に示す図である。
【図７】本発明の第１の実施の形態においてゲートウェイＭＦＰ１００の記憶装置１０４が記憶する最大バッファサイズテーブルである。
【図８】本発明の第１の実施の形態における、ゲートウェイＭＦＰ１００の起動時の動作（図５の処理ＰＲ１）の詳細を示すシーケンス図である。
【図９】本発明の第１の実施の形態においてゲートウェイＭＦＰ１００が作成するメモリテーブルである。
【図１０】本発明の第１の実施の形態における第１の前提の下での割当領域のサイズの決定方法を示すテーブルである。
【図１１】本発明の第１の実施の形態において、第１の前提の下でデバイス２００ａでのクラウドプリントを新たに実行する場合に、決定された割当領域のサイズと、送信されるデータのサイズとの関係を観念的に示す図である。
【図１２】本発明の第１および第２の実施の形態における第２の前提の下での割当領域のサイズの決定方法を示すテーブルである。
【図１３】本発明の第１の実施の形態において、第２の前提の下でデバイス２００ａでのクラウドプリントを新たに実行する場合に、決定された割当領域のサイズと、送信されるデータのサイズとの関係を観念的に示す図である。
【図１４】本発明の第１の実施の形態において、第２の前提の下でデバイス２００ａでのクラウドプリントを新たに実行する場合の、通信システムの動作を示すシーケンス図である。
【図１５】本発明の第１の実施の形態において、第２の前提の下でデバイス２００ａでのクラウドプリントを新たに実行する場合の、ゲートウェイＭＦＰ１００の動作を示すフローチャートである。
【図１６】本発明の第１の実施の形態におけるＨＴＴＰトンネル通信中の通信システムの動作を示すシーケンス図である。
【図１７】本発明の第１の実施の形態におけるＨＴＴＰトンネル通信中のゲートウェイＭＦＰ１００の動作を示すフローチャートである。
【図１８】本発明の第１の実施の形態においてゲートウェイＭＦＰ１００が作成するメモリテーブルの第１の変形例である。
【図１９】本発明の第１の実施の形態においてゲートウェイＭＦＰ１００が作成するメモリテーブルの第２の変形例である。
【図２０】本発明の第２の実施の形態において、クラウドプリントの実行指示を行う携帯端末５００と、クラウドプリントの出力先であるデバイス２００ａとの位置関係を模式的に示す図である。
【図２１】本発明の第２の実施の形態においてゲートウェイＭＦＰ１００が作成するメモリテーブルである。
【図２２】本発明の第２の実施の形態における、ゲートウェイＭＦＰ１００の起動時の動作（図５の処理ＰＲ１）の詳細を示すシーケンス図である。
【図２３】本発明の第２の実施の形態において、デバイス２００ａでのクラウドプリントを新たに実行する場合の、通信システムの動作の一部を示すシーケンス図である。
【図２４】ＨＴＴＰのメッセージのデータ構造を模式的に示す図である。
【図２５】従来技術において、クラウドサーバー１４００に保存されている印刷データをデバイス１２００で印刷するプリントジョブを、ユーザーが携帯端末を通じて実行した場合に、クラウドサーバーがデバイスへ印刷データを送信する際の動作を示すシーケンス図である。
【発明を実施するための形態】
【００３８】
以下、本発明の実施の形態について、図面に基づいて説明する。
【００３９】
以下の実施の形態では、ゲートウェイ装置およびデバイスがＭＦＰである場合について説明する。ゲートウェイ装置は、ファイアーウォールの内部に設けられた複数のデバイスの各々と、ファイアーウォールの外部に設けられたクラウドサーバーとの間の通信であるクラウド通信を中継するものであればよく、プリンター、複写機、またはファクシミリなどの、ＭＦＰ以外の画像形成装置であってもよい。またゲートウェイ装置は、画像読取装置、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、携帯電話、またはスマートフォンなどの、画像形成装置以外の装置あってもよい。デバイスは、ジョブを実行するものであればよく、プリンター、複写機、またはファクシミリなどの、ＭＦＰ以外の画像形成装置であってもよいし、画像読取装置などの画像形成装置以外の装置あってもよい。
【００４０】
［第１の実施の形態］
【００４１】
（通信システムの構成）
【００４２】
図１は、本発明の第１の実施の形態における通信システムの構成を概念的に示す図である。
【００４３】
図１を参照して、本実施の形態における通信システムは、ゲートウェイＭＦＰ（ＳａａＳ（Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）ＧＷとも呼ばれる）１００（ゲートウェイ装置の一例）と、デバイス２００ａ、２００ｂ、２００ｃ、および２００ｄ（デバイスの一例）と、管理サーバー（常時接続サーバー）３００と、クラウドサーバー４００と、携帯端末５００を備えている。以降、デバイス２００ａ、２００ｂ、２００ｃ、および２００ｄを纏めてデバイス２００と記すことがある。
【００４４】
ゲートウェイＭＦＰ１００と、デバイス２００ａ、２００ｂ、２００ｃ、および２００ｄとは、ゲートウェイＭＦＰ１００によって設けられたファイアーウォール３の内部（ＬＡＮの内部）に設けられている。ゲートウェイＭＦＰ１００と、デバイス２００ａ、２００ｂ、２００ｃ、および２００ｄの各々とは、ＬＡＮを構成しており、専用回線１を通じて相互に通信を行うことができる。
【００４５】
管理サーバー３００、クラウドサーバー４００、および携帯端末５００は、ファイアーウォール３の外部（ＬＡＮの外部）に設けられている。ゲートウェイＭＦＰ１００と、管理サーバー３００と、クラウドサーバー４００と、携帯端末５００との各々は、インターネット２に接続されており、インターネット２を介して相互に通信を行うことができる。
【００４６】
図２は、本発明の第１の実施の形態におけるゲートウェイＭＦＰ１００およびデバイス２００の構成を示すブロック図である。
【００４７】
図２を参照して、ゲートウェイＭＦＰ１００は、ゲートウェイが組み込まれたものであり、複数のデバイス２００の各々と、クラウドサーバー４００との間の通信であるクラウド通信を中継する。ゲートウェイＭＦＰ１００は、ＣＰＵ１０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２と、ＲＡＭ１０３と、記憶装置１０４と、ネットワークＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）１０５と、プリント処理部１０６と、画像処理部１０７と、操作パネル１０８と、スキャナー部１０９と、ユーザー認証部１１０などを含んでいる。ＣＰＵ１０１には、ＲＯＭ１０２、ＲＡＭ１０３、記憶装置１０４、ネットワークＩ／Ｆ１０５、プリント処理部１０６、画像処理部１０７、操作パネル１０８、スキャナー部１０９、およびユーザー認証部１１０の各々がバスを介して接続されている。
【００４８】
ＣＰＵ１０１は、スキャンジョブ、コピージョブ、メール送信ジョブ、およびプリントジョブなどの各種ジョブについて、ゲートウェイＭＦＰ１００全体（デバイス２００のＣＰＵ１０１の場合にはデバイス２００全体）の制御を行う。またＣＰＵ１０１は、ＲＯＭ１０２に記憶された制御プログラムを実行する。
【００４９】
ＲＯＭ１０２は、たとえばフラッシュＲＯＭである。ＲＯＭ１０２には、ＣＰＵ１０１が実行する各種プログラムと、各種固定データとが格納されている。ＲＯＭ１０２は、書換え不可能なものであってもよい。
【００５０】
ＲＡＭ１０３は、ＣＰＵ１０１のメインメモリである。ＲＡＭ１０３は、ＣＰＵ１０１が制御プログラムを実行するときに必要なデータや画像データを一時的に記憶するためなどに用いられる。ＲＡＭ１０３は、ＭＦＰ１００が実行するジョブに関してユーザーから受け付けた設定を一時的に記憶する。
【００５１】
記憶装置１０４は、たとえばＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）よりなっており、自機の位置情報などの各種データを記憶している。自機の位置情報は、管理者によって入力されたものであってもよいし、ＧＰＳシステムを利用して必要なタイミングで取得したものであってもよい。
【００５２】
ネットワークＩ／Ｆ１０５は、ＣＰＵ１０１からの指示に従って、ＴＣＰ／ＩＰなどの通信プロトコルによって、他の機器との通信を行う。
【００５３】
プリント処理部１０６は、画像処理部１０７にて処理された画像データに基づいて用紙などへ画像を形成するプリント処理を行う。
【００５４】
画像処理部１０７は、印刷データに対するＲＩＰ（Ｒａｓｔｅｒ  ｉｍａｇｅ  ｐｒｏｃｅｓｓｉｎｇ）処理や、データを外部へ送信する際にそのデータの形式を変換する変換処理などを行う。
【００５５】
操作パネル１０８は、タッチパネルディスプレイなどからなる表示部と、ハードウェアキーおよびタッチパネルディスプレイに表示されたソフトウェアキーなどからなる入力部とを含んでいる。操作パネル１０８は、各種入力をユーザーから受け付ける。操作パネル１０８は、各種設定項目やメッセージなどをユーザーに対して表示する。
【００５６】
スキャナー部１０９は、原稿画像の読み取りを行う。
【００５７】
ユーザー認証部１１０は、各ユーザーが所持するＩＤ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）カードに記憶されているユーザーＩＤ、操作パネル１０８または携帯端末５００から入力されたユーザーＩＤおよびパスワード、または携帯端末５００のＩＰアドレスなどに基づいて、ユーザーを認証し、認証したユーザーに自機の使用を許可する。
【００５８】
なお、ゲートウェイＭＦＰ１００のＲＡＭ１０３（記憶装置の一例）には、クラウドサーバー４００から複数のデバイス２００の各々に送信されるデータを一時的に記憶する領域であるバッファメモリ１２１（記憶領域の一例）が設けられている。またゲートウェイＭＦＰ１００の記憶装置１０４には、ゲートウェイ機能を実現するプログラム（ゲートウェイプログラム）１２２が記憶されている。
【００５９】
なお、デバイス２００は、ゲートウェイＭＦＰ１００と基本的に同一の構成を有している（但し、デバイス２００のＲＡＭ１０３にはバッファメモリ１２１が設けられておらず、デバイス２００の記憶装置１０４には、ゲートウェイ機能を実現するプログラム１２２が記憶されていない）。このため、デバイス２００の構成についての説明は繰り返さない。
【００６０】
図３は、本発明の第１の実施の形態における管理サーバー３００およびクラウドサーバー４００の構成を示すブロック図である。
【００６１】
図３を参照して、クラウドサーバー４００は、たとえばＰＣであり、ＣＰＵ４０１と、ＲＯＭ４０２と、ＲＡＭ４０３と、記憶装置４０４と、ネットワークＩ／Ｆ４０５と、操作部４０６と、表示部４０７などを含んでいる。ＣＰＵ４０１には、ＲＯＭ４０２、ＲＡＭ４０３、記憶装置４０４、ネットワークＩ／Ｆ４０５、操作部４０６、および表示部４０７の各々がバスを介して接続されている。
【００６２】
ＣＰＵ４０１は、クラウドサーバー４００全体（管理サーバー３００のＣＰＵ４０１の場合には管理サーバー３００全体）の制御を行う。またＣＰＵ４０１は、ＲＯＭ４０２に記憶された制御プログラムを実行する。
【００６３】
ＲＯＭ４０２は、たとえばフラッシュＲＯＭである。ＲＯＭ４０２には、ＣＰＵ４０１が実行する各種プログラムと、各種固定データとが格納されている。ＲＯＭ４０２は、書換え不可能なものであってもよい。
【００６４】
ＲＡＭ４０３は、ＣＰＵ４０１のメインメモリである。ＲＡＭ４０３は、ＣＰＵ４０１が制御プログラムを実行するときに必要なデータや画像データを一時的に記憶するためなどに用いられる。ＲＡＭ４０３はＣＰＵ４０１のキャッシュメモリ領域を有していてもよい。
【００６５】
記憶装置４０４は、たとえばＨＤＤよりなっており、各種データなどを記憶する。
【００６６】
ネットワークＩ／Ｆ４０５は、ＣＰＵ４０１からの指示に従って、ＴＣＰ／ＩＰなどの通信プロトコルによって他の機器との通信を行う。
【００６７】
操作部４０６は、ユーザーから各種指示を受け付ける。
【００６８】
表示部４０７は、各種情報を表示する。
【００６９】
クラウドサーバー４００の記憶装置４０４には、クラウドアプリ４２１のプログラムが記憶されている。クラウドアプリ４２１は、クラウドサーバー４００の記憶装置４０４内の記憶領域を第三者に提供するサービスを実現するソフトウェアである。またクラウドサーバー４００の記憶装置４０４には、プリントジョブの印刷対象となる印刷データ４２２が記憶されている。
【００７０】
なお、管理サーバー３００は、クラウドサーバー４００と基本的に同一の構成を有している（但し、管理サーバー３００の記憶装置４０４には、印刷データ４２２やクラウドアプリ４２１のプログラムが記憶されていない）。このため、管理サーバー３００の構成についての説明は、繰り返さない。
【００７１】
図４は、本発明の第１の実施の形態における携帯端末５００の構成を示すブロック図である。
【００７２】
図４を参照して、携帯端末５００は、デバイス２００のユーザーによって所持されるものである。携帯端末５００は、ＣＰＵ５０１と、ＲＯＭ５０２と、ＲＡＭ５０３と、記憶装置５０４と、無線通信部５０５と、操作部５０６と、表示部５０７と、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）情報取得部５０８とを含んでいる。ＣＰＵ５０１には、ＲＯＭ５０２、ＲＡＭ５０３、記憶装置５０４、無線通信部５０５、操作部５０６、表示部５０７、およびＧＰＳ情報取得部５０８の各々がバスを介して接続されている。
【００７３】
ＣＰＵ５０１は、携帯端末５００全体の制御を行う。またＣＰＵ５０１は、ＲＯＭ５０２に記憶された制御プログラムを実行する。
【００７４】
ＲＯＭ５０２は、たとえばフラッシュＲＯＭである。ＲＯＭ５０２には、携帯端末５００の動作を行うための各種プログラムなどが格納されている。
【００７５】
ＲＡＭ５０３は、ＣＰＵ５０１のメインメモリである。ＲＡＭ５０３は、ＣＰＵ５０１が制御プログラムを実行するときに必要なデータを一時的に記憶するためなどに用いられる。
【００７６】
記憶装置５０４は、たとえばＨＤＤよりなっており、各種データを記憶する。
【００７７】
無線通信部５０５は、アクセスポイント（図示無し）を通じてインターネット２に接続している機器との間で無線通信を行う。
【００７８】
操作部５０６は、ユーザーから携帯端末５００に関する各種指示を受け付ける。
【００７９】
表示部５０７は、携帯端末５００に関する各種情報を表示する。
【００８０】
ＧＰＳ情報取得部５０８は、ＧＰＳシステムを利用して携帯端末５００の位置を示す情報（位置情報）を取得する。
【００８１】
（通信システムの動作）
【００８２】
続いて、本実施の形態における通信システムの動作について説明する。なお、図５以降の図面では、デバイス２００ａ、２００ｂ、２００ｃ、および２００ｄの各々を、それぞれ「ＭＦＰａ」、「ＭＦＰｂ」、「ＭＦＰｃ」、および「ＭＦＰｄ」と表すことがある。
【００８３】
図５は、本発明の第１の実施の形態における通信システムの基本的な動作を模式的に示す図である。
【００８４】
図５を参照して、ゲートウェイＭＦＰ１００は、その起動時に、ＬＡＮ１に接続されたデバイス２００を検出し、管理サーバー３００を経由してクラウドサーバー４００にデバイスリストを送信する（処理ＰＲ１）。またゲートウェイＭＦＰ１００は、その起動時に、検出したデバイス２００の各々からジョブの処理性能の情報を取得し（処理ＰＲ２）、後述するメモリテーブル（最大バッファメモリ管理テーブル）を作成する。
【００８５】
ゲートウェイＭＦＰ１００の起動完了後、デバイス２００ａのユーザーは、携帯端末５００を通じてクラウドサーバー４００にアクセスし、クラウドサーバー４００に保存されている印刷データ４２２をデバイス２００ａで印刷するプリントジョブの実行指示を行う（処理ＰＲ３）。以降、クラウドサーバー４００に保存されている印刷データ４２２をデバイス２００で印刷するプリントジョブをクラウドプリントと記すことがある。
【００８６】
クラウドサーバー４００は、クラウドプリントの実行指示を受け付けると、管理サーバー３００に対してデバイス２００ａとの接続を要求する（処理ＰＲ４）。管理サーバー３００は、クラウドサーバー４００からの要求を受け付けると、ゲートウェイＭＦＰ１００に対して、デバイス２００ａのＩＤと、トンネル接続要求とを送信する（処理ＰＲ５）。
【００８７】
ゲートウェイＭＦＰ１００はトンネル接続要求を受信すると、ＬＡＮ１に接続されたデバイス２００の各々のジョブの実行状態の情報を取得する。ゲートウェイＭＦＰ１００は、バッファメモリ１２１内でデバイス２００の各々に割り当てる領域である割当領域のサイズを決定し、決定した割当領域のサイズをクラウドサーバー４００に通知する（処理ＰＲ６）。デバイス２００の各々の割当領域は、ゲートウェイＭＦＰ１００自身のジョブの実行状態と、デバイス２００の各々のジョブの処理性能の情報と、デバイス２００の各々のジョブの実行状態の情報とに基づいて決定される。そしてゲートウェイＭＦＰ１００は、クラウドサーバー４００との間にＨＴＴＰトンネル４を形成し、ＨＴＴＰトンネル通信を開始する。クラウドサーバー４００は、ＨＴＴＰトンネル４を通じてゲートウェイＭＦＰ１００に印刷データを送信する（処理ＰＲ７）。印刷データは、通知された割当領域のサイズに基づいて決定したサイズのデータに分割して送信される。ゲートウェイＭＦＰ１００は、受信したデータをデバイス２００ａに送信する（処理ＰＲ８）。デバイス２００ａは、全ての印刷データ４２２を受信した後で、印刷データ４２２を印刷するプリントジョブを実行する（処理ＰＲ９）。
【００８８】
ゲートウェイＭＦＰ１００は、少なくとも１つのデバイス２００のジョブの実行状態が変化した場合に、デバイス２００の各々のジョブの実行状態の情報を取得し、割当領域のサイズを決定（更新）する。
【００８９】
図６は、本発明の第１の実施の形態における割当領域のサイズと、送信されるデータのサイズとの関係を概念的に示す図である。
【００９０】
図６を参照して、一例として、バッファメモリ１２１内でのデバイス２００ａへの割当領域が、デバイス２００ｂおよび２００ｃへの割当領域よりも大きい場合には、クラウドサーバー４００からデバイス２００ａへ送信するレスポンスメッセージＰ２００ａのボディサイズは、クラウドサーバー４００からデバイス２００ｂおよび２００ｃの各々へ送信するレスポンスメッセージＰ２００ｂおよびＰ２００ｃのボディサイズよりも大きく設定される。また、バッファメモリ１２１内でのデバイス２００ｄへの割当領域が、デバイス２００ｂおよび２００ｃへの割当領域よりも小さい場合には、クラウドサーバー４００からデバイス２００ｄへ送信するレスポンスメッセージＰ２００ｄのボディサイズは、クラウドサーバー４００からデバイス２００ｂおよび２００ｃの各々へ送信するレスポンスメッセージＰ２００ｂおよびＰ２００ｃのボディサイズよりも小さく設定される。
【００９１】
図７は、本発明の第１の実施の形態においてゲートウェイＭＦＰ１００の記憶装置１０４が記憶する最大バッファサイズテーブルである。
【００９２】
図７を参照して、最大バッファサイズテーブルは、ゲートウェイＭＦＰ１００のバッファメモリ１２１のサイズと、ゲートウェイＭＦＰ１００が実行中または実行待ちのジョブ数との関係を示すテーブルである。バッファメモリ１２１のサイズは、図６におけるデバイス２００ａ、２００ｂ、２００ｃ、および２００ｄの各々への割当領域の合計サイズの上限値に相当する。ゲートウェイＭＦＰ１００は、最大バッファサイズテーブルを用いて、ゲートウェイＭＦＰ１００のジョブの実行状態に基づいて、バッファメモリ１２１のサイズを決定する。
【００９３】
ゲートウェイＭＦＰ１００が実行中または実行待ちのジョブ数が多い程、バッファメモリ１２１のサイズは小さいことが好ましい。ゲートウェイＭＦＰ１００が実行中または実行待ちのジョブ数が多い程、それらのジョブを実行するためにゲートウェイＭＦＰ１００のＲＡＭ１０３の空き領域を確保しておく必要があるためである。
【００９４】
具体的には、ゲートウェイＭＦＰ１００が実行中または実行待ちのジョブ数が０である場合（アイドル状態の場合）、バッファメモリ１２１のサイズは１０００ｋｂに決定される。また、ゲートウェイＭＦＰ１００が実行中または実行待ちのジョブ数がそれぞれ１および２である場合には、バッファメモリ１２１のサイズはそれぞれ６００ｋｂおよび３００ｋｂに決定される。ゲートウェイＭＦＰ１００が実行中または実行待ちのジョブ数が３以上である場合には、バッファメモリ１２１のサイズは１５０ｋｂに決定される。
【００９５】
図８は、本発明の第１の実施の形態における、ゲートウェイＭＦＰ１００の起動時の動作（図５の処理ＰＲ１）の詳細を示すシーケンス図である。
【００９６】
図８を参照して、ゲートウェイＭＦＰ１００が起動すると、ゲートウェイＭＦＰ１００は、デバイス検索のための検索信号を各デバイス２００に送信する（Ｓ１）。起動しているデバイス２００は、検索信号を受信すると、応答信号を送信する（Ｓ２）。ゲートウェイＭＦＰ１００は、応答信号を返信したデバイス２００の各々にＩＤおよび管理情報を付し、デバイスリストを作成する。デバイスリストは、デバイス２００とＩＤとの対応関係を記したリストである。次にゲートウェイＭＦＰ１００は、ＩＤとデバイス２００のＩＰアドレスとを関連づけて記憶装置１０４に記憶する。続いてゲートウェイＭＦＰ１００は、管理サーバー３００との間でＸＭＰＰの通信プロトコルを用いたメッセージセッションを生成し、デバイスリストをクラウドサーバー４００に送信する（Ｓ３）。
【００９７】
次にゲートウェイＭＦＰ１００は、応答信号を返信したデバイス２００の各々から、ジョブの処理性能の情報を取得する（Ｓ４）。ジョブの処理性能の情報とは、たとえば所定時間内に印刷できる用紙の枚数や所定時間内に読み取ることのできる画像の枚数などの情報である。
【００９８】
次にゲートウェイＭＦＰ１００は、取得したジョブの処理性能の情報に基づいてメモリテーブルを作成し、記憶装置１０４に記憶する（Ｓ５）。
【００９９】
図９は、本発明の第１の実施の形態においてゲートウェイＭＦＰ１００が作成するメモリテーブルである。
【０１００】
図９を参照して、メモリテーブルは、デバイス２００が実行中または実行待ちのジョブ数と、割当領域の最適サイズ（割当領域のサイズの最適値）との関係を示すテーブルである。割当領域の最適サイズとは、ゲートウェイＭＦＰ１００が当該サイズの割当領域をそのデバイス２００のＨＴＴＰトンネル通信に割り当てた場合に、そのデバイス２００のパフォーマンスが最大になると予測されるサイズである。
【０１０１】
割当領域の最適サイズは、想定されるジョブの実行状態に応じて決定され、ここでは、想定される実行中または実行待ちのジョブ数に応じて決定される。具体的には、デバイス２００が実行中または実行待ちのジョブ数が多い程、割当領域の最適サイズは小さい。デバイス２００が実行中または実行待ちのジョブ数が多い程、デバイス２００はそれらのジョブを実行するので、クラウドサーバー４００との通信を処理する速度が遅くなるためである。
【０１０２】
メモリテーブルによれば、デバイス２００ａは１分間に７５枚の用紙を印刷することのできる性能を有している。デバイス２００ａが実行中または実行待ちのジョブ数が０の場合（アイドル状態の場合）、デバイス２００ａはクラウドサーバー４００との通信を行う必要が無いため、デバイス２００ａの割当領域の最適サイズは０である。デバイス２００ａが実行中または実行待ちのジョブ数がそれぞれ１、２、および３の場合には、デバイス２００ａの割当領域の最適サイズはそれぞれ５００ｋｂ、２５０ｋｂ、および１５０ｋｂである。デバイス２００ａが実行中または実行待ちのジョブ数が４以上の場合には、デバイス２００ａの割当領域の最適サイズは５０ｋｂである。
【０１０３】
メモリテーブルでは、デバイス２００の各々の想定されるジョブの実行状態が同じである場合、ジョブの処理性能が高いデバイス２００の最適サイズが、ジョブの処理性能が低いデバイス２００の最適サイズよりも大きく設定されている。
【０１０４】
なお、割当領域のサイズとして最適サイズよりも大きいサイズが設定されたとしても、デバイス２００のハードウェアの速度の限界があるため、デバイス２００のパフォーマンスは向上しない。
【０１０５】
（ＨＴＴＰトンネル通信開始時の割当領域のサイズの決定方法）
【０１０６】
続いて、本実施の形態におけるＨＴＴＰトンネル通信開始時の割当領域のサイズの決定方法について説明する。
【０１０７】
図１０は、本発明の第１の実施の形態における第１の前提の下での割当領域のサイズの決定方法を示すテーブルである。
【０１０８】
図１０を参照して、第１の前提として、ゲートウェイＭＦＰ１００、ならびにデバイス２００ａ、２００ｂ、２００ｃ、および２００ｄの全てがアイドル状態である状態を想定する。第１の前提の下でデバイス２００ａでのクラウドプリントを新たに実行する場合について説明する。
【０１０９】
第１の前提の下で、デバイス２００ａでのクラウドプリントを新たに実行する場合、ゲートウェイＭＦＰ１００の実行中または実行待ちのジョブ数はゼロである。このため、ゲートウェイＭＦＰ１００は、図７に示す最大バッファサイズテーブルに基づいて、バッファメモリ１２１のサイズを１０００ｋｂに設定する（図１０（ａ））。また、デバイス２００ａが実行中または実行待ちのジョブ数は０から１に変化し、デバイス２００ｂ、２００ｃ、および２００ｄが実行中または実行待ちのジョブ数は０である。このため、ゲートウェイＭＦＰ１００は、図９に示すメモリテーブルに基づいて、デバイス２００ａの割当領域の最適サイズを５００ｋｂに設定し、デバイス２００ｂ、２００ｃ、および２００ｄの割当領域の最適サイズをいずれも０に設定する（図１０（ｂ））。
【０１１０】
続いてゲートウェイＭＦＰ１００は、以下の式（１）に基づいて、デバイス２００ａ、２００ｂ、２００ｃ、および２００ｄの各々の割当領域のサイズを決定する。
【数１】
2018010400.tif 000003
【０１１１】
式（１）において、「ＴｎｌＢｘ」は、ＨＴＴＰトンネル通信を開始するデバイス２００（ここではデバイス２００ａ）とクラウドサーバー４００との通信を中継するために、バッファメモリ１２１内でそのデバイス２００に割り当てる割当領域のサイズを示している。「Ｂｘ」は、ＨＴＴＰトンネル通信を開始するデバイス２００（ここではデバイス２００ａ）の当該状態における割当領域の最適サイズを示している。「Ｂ１＋Ｂ２＋・・・Ｂｎ」は、ゲートウェイＭＦＰ１００を通じてＨＴＴＰトンネル通信を行うデバイス２００の、当該状態における割当領域の最適サイズの総和を示している。「ＢＧＷ」は、ゲートウェイＭＦＰ１００の、当該状態におけるバッファメモリのサイズを示している。
【０１１２】
上記式（１）において、「Ｂｘ」に５００ｋｂ、「Ｂ１＋Ｂ２＋・・・Ｂｎ」に５００ｋｂ（＝５００ｋｂ＋０＋０＋０）、「ＢＧＷ」に１０００ｋｂを代入すると、式（２）に示すとおり、バッファメモリ１２１内でデバイス２００ａに割り当てる割当領域のサイズとして、１０００ｋｂという値が得られる。
【数２】
2018010400.tif 000004
【０１１３】
しかし、デバイス２００ａの割当領域の最適サイズ（５００ｋｂ）を超えてもデバイス２００ａのパフォーマンスは変わらないので、ゲートウェイＭＦＰ１００は、デバイス２００ａの割当領域のサイズを５００ｋｂに決定する。ゲートウェイＭＦＰ１００は、デバイス２００ｂ、２００ｃ、および２００ｄの割当領域のサイズを０に決定する。バッファメモリ１２１のサイズは５００ｋｂとなる。
【０１１４】
図１１は、本発明の第１の実施の形態において、第１の前提の下でデバイス２００ａでのクラウドプリントを新たに実行する場合に、決定された割当領域のサイズと、送信されるデータのサイズとの関係を観念的に示す図である。
【０１１５】
図１１を参照して、デバイス２００の各々のジョブの実行状態に基づいて算出された最適サイズに応じたボディサイズで、クラウドサーバー４００からデバイス２００の各々にデータが送信される。その結果、全てのデバイス２００の通信効率を向上することができる。
【０１１６】
図１２は、本発明の第１および第２の実施の形態における第２の前提の下での割当領域のサイズの決定方法を示すテーブルである。
【０１１７】
図１２を参照して、第２の前提として、ゲートウェイＭＦＰ１００の実行中または実行待ちのジョブ数が１であり、デバイス２００ａ、２００ｂ、２００ｃ、および２００ｄの各々の実行中または実行待ちのジョブ数がそれぞれ０、２、３、および４である状態を想定する。
【０１１８】
第２の前提の下で、デバイス２００ａでのクラウドプリントを新たに実行する場合、デバイス２００ａの実行中または実行待ちのジョブ数は０から１に変化する。ゲートウェイＭＦＰ１００は、図７に示す最大バッファサイズテーブルに基づいて、バッファメモリ１２１のサイズを６００ｋｂに設定する（図１２（ａ））。またゲートウェイＭＦＰ１００は、図９に示すメモリテーブルに基づいて、デバイス２００ａ、２００ｂ、２００ｃ、および２００ｄの割当領域の最適サイズを、それぞれ５００ｋｂ、２００ｋｂ、８０ｋｂ、および１５ｋｂに設定する（図１２（ｂ））。
【０１１９】
続いてゲートウェイＭＦＰ１００は、上記式（１）において、「Ｂ１＋Ｂ２＋・・・Ｂｎ」に７９５ｋｂ（＝５００ｋｂ＋２００ｋｂ＋８０ｋｂ＋１５ｋｂ）、「ＢＧＷ」に６００ｋｂを代入することにより、バッファメモリ１２１内でデバイス２００ａ、２００Ｂ、２００ｃ、および２００ｄの各々に割り当てる割当領域のサイズを算出する。
【数３】
2018010400.tif 000005
【数４】
2018010400.tif 000006
【数５】
2018010400.tif 000007
【数６】
2018010400.tif 000008
【０１２０】
その結果、式（３）〜式（６）に示すとおり、バッファメモリ１２１内でデバイス２００ａ、２００Ｂ、２００ｃ、および２００ｄの各々に割り当てる割当領域のサイズとして、それぞれ３７７ｋｂ、１５１ｋｂ、６０ｋｂ、および１１ｋｂという値が得られる。ゲートウェイＭＦＰ１００は、デバイス２００ａ、２００ｂ、２００ｃ、および２００ｄの各々の割当領域のサイズを、それぞれ３７７ｋｂ、１５１ｋｂ、６０ｋｂ、および１１ｋｂに決定する。
【０１２１】
図１３は、本発明の第１の実施の形態において、第２の前提の下でデバイス２００ａでのクラウドプリントを新たに実行する場合に、決定された割当領域のサイズと、送信されるデータのサイズとの関係を観念的に示す図である。
【０１２２】
図１３を参照して、デバイス２００の各々のジョブの実行状態に基づいて算出された最適サイズに応じたボディサイズで、クラウドサーバー４００からデバイス２００の各々にデータが送信される。その結果、全てのデバイス２００の通信効率を向上することができる。
【０１２３】
なお、クラウドサーバー４００は、印刷データが所定のサイズよりも大きい場合に、ゲートウェイＭＦＰ１００に対して通知を行い、ゲートウェイＭＦＰ１００はこの通知を受け付けた場合に、デバイス２００の各々の割当領域のサイズを決定してもよい。この場合には、印刷データが所定のサイズよりも小さい場合には、クラウドサーバー４００からゲートウェイＭＦＰ１００に送信するレスポンスメッセージのボディサイズは固定値（たとえば６４ｋｂ）とされる。但し、レスポンスメッセージのボディサイズを固定値とした場合において、バッファメモリ１２１が不足するときは、ゲートウェイＭＦＰ１００は、上述の方法でデバイス２００の各々の割当領域を決定してもよい。
【０１２４】
（通信システムの全体的な動作）
【０１２５】
続いて、第２の前提の下でデバイス２００ａでのクラウドプリントを新たに実行する場合の、通信システムの全体的な動作とゲートウェイＭＦＰ１００の動作とを説明する。
【０１２６】
図１４は、本発明の第１の実施の形態において、第２の前提の下でデバイス２００ａでのクラウドプリントを新たに実行する場合の、通信システムの動作を示すシーケンス図である。
【０１２７】
図１４を参照して、クラウドサーバー４００は、クラウドアプリ４２１を通じて携帯端末５００からデバイス２００ａでのクラウドプリントの実行指示を受け付けると、管理サーバー３００に対してデバイス２００ａとの通信（接続）を要求する（Ｓ１０１）。管理サーバー３００は、クラウドサーバー４００からの要求を受け付けると、ゲートウェイＭＦＰ１００に対して、デバイス２００ａのＩＤおよびトンネル接続要求とを送信する（Ｓ１０２）。
【０１２８】
ゲートウェイＭＦＰ１００は、トンネル接続要求などを受信すると、ＨＴＴＰトンネル通信によるデータの送信を要求するリクエストメッセージを送信する（Ｓ１０３）。クラウドサーバー４００は、リクエストメッセージを受信すると、クラウドアプリ４２１から印刷データを取得する（Ｓ１０４）。クラウドサーバー４００は、印刷データを解析し、印刷データのサイズが所定値よりも大きいか否か（通信内容が比較的大きいデータであるか否か）を判別する（Ｓ１０５）。クラウドサーバー４００は、印刷データのサイズが所定値より大きいと判別した場合に、レスポンスメッセージのボディサイズの固定値に相当するサイズに印刷データを分割し、印刷データの一部をボディ部に添付したレスポンスメッセージをゲートウェイＭＦＰ１００に送信する（Ｓ１０６）。この送信の際、レスポンスメッセージのヘッダ部には、デバイス２００ａの割当領域のサイズを拡大する要求（通知）（バッファ拡大要求）が含まれている。
【０１２９】
ゲートウェイＭＦＰ１００は、印刷データの一部を受信すると、その印刷データの一部をデバイス２００ａに送信する（Ｓ１０７）。またゲートウェイＭＦＰ１００は、バッファ拡大要求を受信すると、デバイス２００の各々のジョブの実行状態の情報（ステータス）を取得する（Ｓ１０８）。
【０１３０】
ゲートウェイＭＦＰ１００は、ゲートウェイＭＦＰ１００自身のジョブの実行状態と、デバイス２００の各々のジョブの実行状態の情報とに基づいて、デバイス２００の各々の割当領域のサイズ（ＨＴＴＰトンネルの通信バッファサイズ）を決定し（Ｓ１０９）、デバイス２００の各々の割当領域のサイズを決定したサイズに変更する通知（バッファ変更通知）をヘッダ部に記載したリクエストメッセージをクラウドサーバー４００に通知する（Ｓ１１０）。
【０１３１】
クラウドサーバー４００は、通知されたデバイス２００ａの割当領域のサイズに合わせたボディサイズに印刷データを分割し、印刷データの一部をボディ部に添付したレスポンスメッセージをゲートウェイＭＦＰ１００に送信する（Ｓ１１１）。またクラウドサーバー４００は並行して、通知されたデバイス２００ｂ、２００ｃ、および２００ｄの各々の割当領域のサイズに合わせたボディサイズにそれぞれのデバイスの印刷データを分割し、分割した印刷データをボディ部に添付したレスポンスメッセージをゲートウェイＭＦＰ１００に送信する（Ｓ１１１）。ゲートウェイＭＦＰ１００は、印刷データの一部を受信すると、その印刷データの一部をデバイス２００ａ、２００ｂ、２００ｃ、および２００ｄの各々に適宜に送信する（Ｓ１１２）。
【０１３２】
図１５は、本発明の第１の実施の形態において、第２の前提の下でデバイス２００ａでのクラウドプリントを新たに実行する場合の、ゲートウェイＭＦＰ１００の動作を示すフローチャートである。
【０１３３】
図１５を参照して、ゲートウェイＭＦＰ１００のＣＰＵ１０１は、起動完了後、クラウドサーバー４００からトンネル接続要求を受信したか否かを判別する（Ｓ１５１）。トンネル接続要求を受信したと判別するまで、ＣＰＵ１０１はステップＳ１５１の処理を繰り返す。
【０１３４】
ステップＳ１５１において、トンネル接続要求を受信したと判別した場合（Ｓ１５１でＹＥＳ、図１４のＳ１０２）、ＣＰＵ１０１は、クラウドサーバー４００にＨＴＴＰトンネル通信によるデータの送信を要求するリクエストメッセージを送信する（Ｓ１５２、図１４のＳ１０３）。続いてＣＰＵ１０１は、クラウドサーバー４００からレスポンスメッセージを受信したか否かを判別する（Ｓ１５３）。レスポンスメッセージを受信したと判別するまで、ＣＰＵ１０１はステップＳ１５３の処理を繰り返す。
【０１３５】
ステップＳ１５３において、レスポンスメッセージを受信したと判別した場合（Ｓ１５３でＹＥＳ、図１４のＳ１０６）、ＣＰＵ１０１は、レスポンスメッセージのボディ部に添付されていた印刷データ（ボディデータ）をデバイス２００ａに送信する（Ｓ１５４、図１４のＳ１０７）。次にＣＰＵ１０１は、クラウドサーバー４００からのレスポンスメッセージがバッファ拡大要求を含んでいるか否かを判別する（Ｓ１５５）。
【０１３６】
ステップＳ１５５において、レスポンスメッセージがバッファ拡大要求を含んでいないと判別した場合（Ｓ１５５でＮＯ）、ＣＰＵ１０１は、バッファ変更通知を含まないヘッダ部を含むリクエストメッセージを作成し（Ｓ１５９）、ステップＳ１６０の処理へ進む。
【０１３７】
ステップＳ１５５において、レスポンスメッセージがバッファ拡大要求を含んでいると判別した場合（Ｓ１５５でＹＥＳ）、ＣＰＵ１０１は、デバイス２００ａを含むＨＴＴＰトンネル通信中（クラウド通信中）のデバイス２００に対して、ステータス確認要求を送信し、ジョブの実行状態の情報（ステータス）を取得する（Ｓ１５６、図１４のＳ１０８）。続いてＣＰＵ１０１は、確認結果に基づいて、バッファメモリ１２１における割当領域のサイズを再計算しバッファメモリ１２１を確保する（Ｓ１５７、図１４のＳ１０９）。続いてＣＰＵ１０１は、バッファ変更通知を記載したヘッダ部を含むリクエストメッセージを作成し（Ｓ１５８）、作成したリクエストメッセージをクラウドサーバー４００に送信する（Ｓ１６０、図１４のＳ１１０）。その後、ＣＰＵ１０１は、全ての印刷データを受信するまでリクエストメッセージの送信およびレスポンスメッセージの受信を繰り返し、処理を終了する。
【０１３８】
図１６は、本発明の第１の実施の形態におけるＨＴＴＰトンネル通信中の通信システムの動作を示すシーケンス図である。
【０１３９】
図１６を参照して、ゲートウェイＭＦＰ１００は、一定時間が経過する度に、デバイス２００の各々のジョブの実行状態の情報（ステータス）を取得する（Ｓ２０１）。ゲートウェイＭＦＰ１００は、いずれかのデバイス２００のジョブの実行状態に変更がある場合に、デバイス２００の各々の割当領域のサイズ（ＨＴＴＰトンネルの通信バッファサイズ）を更新し（Ｓ２０２）、デバイス２００の各々の割当領域のサイズを更新後のサイズに変更する通知（バッファ変更通知）をヘッダ部に記載したリクエストメッセージをクラウドサーバー４００に通知する（Ｓ２０３）。
【０１４０】
クラウドサーバー４００は、デバイス２００の各々の通知された割当領域のサイズに合わせたボディサイズに印刷データを分割し、印刷データの一部をボディ部に添付したレスポンスメッセージをゲートウェイＭＦＰ１００に送信する（Ｓ２０４）。ゲートウェイＭＦＰ１００は、印刷データの一部を受信すると、その印刷データの一部をデバイス２００の各々に適宜に送信する（Ｓ２０５）。
【０１４１】
ゲートウェイＭＦＰ１００は、いずれかのデバイス２００（ここではデバイス２００ｂ）とクラウドサーバー４００との通信（クラウド通信）が完了したことをレスポンスメッセージから検知した場合に、デバイス２００の各々のジョブの実行状態の情報（ステータス）を取得する（Ｓ２０６）。ゲートウェイＭＦＰ１００は、デバイス２００の各々の割当領域のサイズ（ＨＴＴＰトンネルの通信バッファサイズ）を更新し（Ｓ２０７）、デバイス２００の各々の割当領域のサイズを更新後のサイズに変更する通知（バッファ変更通知）をヘッダ部に記載したリクエストメッセージをクラウドサーバー４００に通知する（Ｓ２０８）。
【０１４２】
ステップＳ２０１〜ステップＳ２０８の処理は、全てのＨＴＴＰトンネル通信（クラウド通信）が完了するまで繰り返し実行される。
【０１４３】
図１７は、本発明の第１の実施の形態におけるＨＴＴＰトンネル通信中のゲートウェイＭＦＰ１００の動作を示すフローチャートである。
【０１４４】
図１７を参照して、少なくとも１つのデバイス２００のＨＴＴＰトンネル通信（クラウド通信）が継続しているか否かを判別する（Ｓ２５１）。
【０１４５】
ステップＳ２５１において、少なくとも１つのデバイス２００のＨＴＴＰトンネル通信が継続していると判別した場合（Ｓ２５１でＹＥＳ）、ＣＰＵ１０１は、ジョブの実行状態の情報（ステータス）を前回取得してから所定の時間（たとえば１０秒間）が経過したか否かを判別する（Ｓ２５２）。
【０１４６】
ステップＳ２５２において、ジョブの実行状態の情報を前回取得してから所定の時間が経過したと判別した場合（Ｓ２５２でＹＥＳ）、ＣＰＵ１０１はステップＳ２５４の処理へ進む。
【０１４７】
ステップＳ２５２において、ジョブの実行状態の情報を前回取得してから所定の時間が経過していないと判別した場合（Ｓ２５２でＮＯ）、ＣＰＵ１０１は、ジョブの実行状態の情報を前回取得した後で完了したＨＴＴＰトンネル通信（クラウド通信）があるか否かを判別する（Ｓ２５３）。
【０１４８】
ステップＳ２５３において、ジョブの実行状態の情報を前回取得した後で完了したＨＴＴＰトンネル通信があると判別した場合（Ｓ２５３でＹＥＳ）、ＣＰＵ１０１は、ステップＳ２５４の処理へ進む。
【０１４９】
ステップＳ２５３において、ジョブの実行状態の情報を前回取得した後で完了したＨＴＴＰトンネル通信が無いと判別した場合（Ｓ２５３でＮＯ）、ＣＰＵ１０１は、ステップＳ２５１の処理へ進む。
【０１５０】
ステップＳ２５４において、ＣＰＵ１０１は、ＨＴＴＰトンネル通信中（クラウド通信中）のデバイス２００の各々からジョブの実行状態の情報（ステータス）を取得する（Ｓ２５４、図１４のＳ２０１またはＳ２０６）。次にＣＰＵ１０１は、前回からのジョブの実行状態の情報（ステータス）の変更があるか否かを判別する（Ｓ２５５）。
【０１５１】
ステップＳ２５５において、前回からのジョブの実行状態の情報の変更があると判別した場合（Ｓ２５５でＹＥＳ）、ＣＰＵ１０１は、最新のジョブの実行状態に基づいて、デバイス２００の各々の割当領域のサイズを再計算し、バッファメモリ１２１を確保する（Ｓ２５６、図１６のＳ２０２またはＳ２０７）。続いてＣＰＵ１０１は、デバイス２００の各々の割当領域のサイズを更新後のサイズに変更する通知（バッファ変更通知）のフラグをオンし（Ｓ２５７）、ステップＳ２５１の処理へ進む。
【０１５２】
ステップＳ２５５において、前回からのジョブの実行状態の情報の変更が無いと判別した場合（Ｓ２５５でＮＯ）、ＣＰＵ１０１はステップＳ２５１の処理へ進む。
【０１５３】
ステップＳ２５１において、いずれのデバイス２００のＨＴＴＰトンネル通信も継続していないと判別した場合（Ｓ２５１でＮＯ）、ＣＰＵ１０１は、処理を終了する。
【０１５４】
（メモリテーブルの変形例）
【０１５５】
ゲートウェイＭＦＰ１００は、図９に示すメモリテーブルの代わりに、次のメモリテーブルを作成してもよい。
【０１５６】
図１８は、本発明の第１の実施の形態においてゲートウェイＭＦＰ１００が作成するメモリテーブルの第１の変形例である。
【０１５７】
図１８を参照して、本変形例におけるメモリテーブルは、デバイスが実行中および実行待ちの印刷ジョブで印刷する予定の用紙の枚数と、割当領域の最適サイズとの関係を示すテーブルである。
【０１５８】
デバイス２００が印刷する予定の用紙の枚数が多い程、割当領域の最適サイズは小さい。デバイス２００が印刷する予定の用紙の枚数が多い程、デバイス２００はそれらの印刷を行うために、クラウドサーバー４００との通信を処理する速度が遅くなるためである。
【０１５９】
このメモリテーブルによれば、デバイス２００ａが印刷する予定の用紙の枚数が０の場合（アイドル状態の場合）、デバイス２００ａはクラウドサーバー４００との通信を行う必要が無いため、デバイス２００ａの割当領域の最適サイズは０である。デバイス２００ａが印刷する予定の用紙の枚数がそれぞれ５枚以下の場合、６枚以上１０枚以下の場合、１１枚以上２０枚以下の場合、２１枚以上３０枚以下の場合、および３１枚以上の場合には、デバイス２００ａの割当領域の最適サイズはそれぞれ５００ｋｂ、３５０ｋｂ、２５０ｋｂ、１５０ｋｂ、および５０ｋｂである。
【０１６０】
図１８に示すメモリテーブルを用いる場合には、ゲートウェイＭＦＰ１００は、デバイス２００の各々が実行中および実行待ちの印刷ジョブで印刷する予定の用紙の枚数の情報を取得し、取得した情報に基づいて、デバイス２００の各々の割当領域のサイズを決定する。
【０１６１】
図１９は、本発明の第１の実施の形態においてゲートウェイＭＦＰ１００が作成するメモリテーブルの第２の変形例である。
【０１６２】
図１９を参照して、本変形例におけるメモリテーブルは、デバイスが実行中および実行待ちのジョブの種類および数と、割当領域の最適サイズとの関係を示すテーブルである。
【０１６３】
デバイス２００が実行中または実行待ちのジョブ数が多い程、割当領域の最適サイズは小さい。デバイス２００が実行中または実行待ちのジョブ数が多い程、デバイス２００はそれらのジョブを実行するので、クラウドサーバー４００との通信を処理する速度が遅くなるためである。また、デバイス２００が実行中または実行待ちのジョブ数が同じである場合には、デバイス２００が実行中または実行待ちのジョブがプリントジョブであるときの方が、デバイス２００が実行中または実行待ちのジョブがスキャンジョブであるときよりも割当領域の最適サイズは小さい。プリントジョブの方がスキャンジョブよりもＲＡＭ１０３における使用する領域（メモリ）のサイズが大きいためである。
【０１６４】
図１９に示すメモリテーブルを用いる場合には、ゲートウェイＭＦＰ１００は、デバイス２００の各々が実行中および実行待ちのジョブの種類および数を取得し、取得した情報に基づいて、デバイス２００の各々の割当領域のサイズを決定する。
【０１６５】
なお、ゲートウェイＭＦＰ１００は、ジョブの種類のみの情報に基づいてデバイス２００の各々の割当領域のサイズを決定してもよい。また、ゲートウェイＭＦＰ１００は、図９、図１８、および図１９のメモリテーブルを適宜組合わせたものを用いて、デバイス２００の各々の割当領域のサイズを決定してもよい。
【０１６６】
［第２の実施の形態］
【０１６７】
図２０は、本発明の第２の実施の形態において、クラウドプリントの実行指示を行う携帯端末５００と、クラウドプリントの出力先であるデバイス２００ａとの位置関係を模式的に示す図である。
【０１６８】
図２０を参照して、ユーザーは様々な場所から、携帯端末５００を通じてクラウドサーバー４００にアクセスし、クラウドサーバー４００に保存されている印刷データを任意のデバイス２００（ここではデバイス２００ａ）でプリントするクラウドプリントの実行指示を行うことができる。
【０１６９】
クラウドプリントの実行指示を行う際に、ユーザーが出力先であるデバイス２００ａの付近の位置ＰＡでクラウドプリントの実行指示を行った場合、ユーザーの待ち時間を短縮するために、デバイス２００ａは印刷物を直ちに出力することが望ましい。一方、ユーザーがデバイス２００ａから離れた位置ＰＢでクラウドプリントの実行指示を行った場合、ユーザーは印刷物を取得するために位置ＰＢかららデバイス２００ａまで移動するのに時間を要するため、デバイス２００ａは印刷物を直ちに出力する必要はない。
【０１７０】
そこで本実施の形態では、クラウドサーバー４００は、デバイス２００ａでのプリントジョブの実行指示を携帯端末５００から受け付けた場合に、携帯端末５００の位置情報をゲートウェイＭＦＰ１００に送信する。ゲートウェイＭＦＰ１００は、受信した位置情報に基づいて、携帯端末５００がデバイス２００ａの付近に存在する場合にデバイス２００ａに割り当てる割当領域のサイズを、携帯端末５００がデバイス２００ａの付近に存在しない場合にデバイス２００ａに割り当てる割当領域のサイズよりも大きくする。これにより、ゲートウェイＭＦＰ１００は、ユーザーの存在する位置に応じて印刷物を出力するまでの時間を制御する。
【０１７１】
図２１は、本発明の第２の実施の形態においてゲートウェイＭＦＰ１００が作成するメモリテーブルである。
【０１７２】
図２１を参照して、このメモリテーブルでは、クラウドプリントの実行指示を行った携帯端末５００が出力先のデバイス２００から離れている場合（出力先のデバイス２００から遠い場合）の割当領域の最適サイズが、クラウドプリントの実行指示を行った携帯端末５００が出力先のデバイス２００の付近に存在する場合の割当領域の最適サイズ以下に設定されている。たとえばデバイス２００ａでは、携帯端末５００が付近に存在する場合の割当領域の最適サイズは、図９に示す第１の実施の形態の場合と同じである。一方、携帯端末５００が離れている場合の割当領域の最適サイズは、実行中または実行待ちのジョブ数に関わらず５０ｋｂという最小の値に設定されている。
【０１７３】
図２２は、本発明の第２の実施の形態における、ゲートウェイＭＦＰ１００の起動時の動作（図５の処理ＰＲ１）の詳細を示すシーケンス図である。
【０１７４】
図２２を参照して、ゲートウェイＭＦＰ１００が起動すると、ゲートウェイＭＦＰ１００は、図８に示す処理Ｓ１〜Ｓ４の処理を行う。処理Ｓ４に続いて、ゲートウェイＭＦＰ１００は、応答信号を返信したデバイス２００の各々から、そのデバイス２００の位置情報を取得する（処理Ｓ４Ａ）。次にゲートウェイＭＦＰ１００は、取得したジョブの処理性能の情報に基づいて、図２１に示すメモリテーブルを作成し、メモリテーブルおよびデバイス２００の各々の位置情報を記憶装置１０４に記憶する（Ｓ５）。
【０１７５】
（ＨＴＴＰトンネル通信開始時の割当領域のサイズの決定方法）
【０１７６】
続いて、本実施の形態におけるＨＴＴＰトンネル通信開始時の割当領域のサイズの決定方法について説明する。
【０１７７】
本実施の形態では、図１２に示す第２の前提の下で、デバイス２００ａの付近に存在しない（デバイス２００ａから離れた）携帯端末５００から、クラウドサーバー４００がデバイス２００ａでのクラウドプリントの実行指示を受け付けた場合を想定する。
【０１７８】
この場合、デバイス２００ａの実行中または実行待ちのジョブ数は０から１に変化する。ゲートウェイＭＦＰ１００は、図７に示すメモリズテーブルに基づいて、バッファメモリ１２１のサイズを６００ｋｂに設定する。またゲートウェイＭＦＰ１００は、図２１に示すメモリテーブルに基づいて、デバイス２００ａ、２００ｂ、２００ｃ、および２００ｄの割当領域の最適サイズを、それぞれ５０ｋｂ、２００ｋｂ、８０ｋｂ、および１５ｋｂに設定する。ここで、デバイス２００ａについては、携帯端末５００がデバイス２００ａから離れているので、携帯端末５００が離れている場合の割当領域の最適サイズが設定される。
【０１７９】
続いてゲートウェイＭＦＰ１００は、上記式（１）において、「Ｂ１＋Ｂ２＋・・・Ｂｎ」に３４５ｋｂ（＝５０ｋｂ＋２００ｋｂ＋８０ｋｂ＋１５ｋｂ）、「ＢＧＷ」に６００ｋｂを代入することにより、バッファメモリ１２１内でデバイス２００ａ、２００Ｂ、２００ｃ、および２００ｄの各々に割り当てる割当領域のサイズを算出する。
【数７】
2018010400.tif 000009
【数８】
2018010400.tif 000010
【数９】
2018010400.tif 000011
【数１０】
2018010400.tif 000012
【０１８０】
その結果、上記式（７）〜式（１０）に示すとおり、バッファメモリ１２１内でデバイス２００ａ、２００Ｂ、２００ｃ、および２００ｄの各々に割り当てる割当領域のサイズとして、それぞれ８７ｋｂ、３４８ｋｂ、１３９ｋｂ、および２６ｋｂという値が得られる。
【０１８１】
しかし、デバイス２００ａ、２００ｂ、２００ｃ、および２００ｄの各々の算出された割当領域のサイズは、割当領域の最適サイズを超えている。ゲートウェイＭＦＰ１００は、デバイス２００ａ、２００ｂ、２００ｃ、および２００ｄの各々の割当領域のサイズをそれぞれ５０ｋｂ、２００ｋｂ、８０ｋｂ、および１５ｋｂに決定する。バッファメモリ１２１のサイズは３４５ｋｂとなる。
【０１８２】
図２３は、本発明の第２の実施の形態において、デバイス２００ａでのクラウドプリントを新たに実行する場合の、通信システムの動作の一部を示すシーケンス図である。
【０１８３】
図２３を参照して、携帯端末５００は、クラウドアプリ４２１に対してデバイス２００ａでのクラウドプリントの実行指示を行うとともに、自機の位置情報（居場所情報）をクラウドアプリ４２１に送信する（Ｓ１００）。クラウドサーバー４００は、クラウドアプリ４２１を通じてクラウドプリントの実行指示および携帯端末５００の位置情報を受信すると、管理サーバー３００に対してデバイス２００ａとの通信（接続）を要求し、携帯端末５００の位置情報を送信する（Ｓ１０１）。管理サーバー３００は、クラウドサーバー４００から要求および携帯端末５００の位置情報を受信すると、ゲートウェイＭＦＰ１００に対して、デバイス２００ａのＩＤおよびトンネル接続要求、ならびに携帯端末５００の位置情報を送信する（Ｓ１０２）。
【０１８４】
ゲートウェイＭＦＰ１００は、トンネル接続要求などを受信すると、ＨＴＴＰトンネル通信によるデータの送信を要求するリクエストメッセージを送信する（Ｓ１０３）。クラウドサーバーは、リクエストメッセージを受信すると、クラウドアプリ４２１から印刷データを取得する（Ｓ１０４）。印刷データを解析し、印刷データのサイズが所定値よりも大きいか否か（通信内容が比較的大きいデータであるか否か）を判別する（Ｓ１０５）。クラウドサーバー４００は、印刷データのサイズが所定値より大きいと判別した場合に、レスポンスメッセージのボディサイズの固定値に相当するサイズに印刷データを分割し、印刷データの一部をボディ部に添付したレスポンスメッセージをゲートウェイＭＦＰ１００に送信する（Ｓ１０６）。この送信の際、レスポンスメッセージのヘッダ部には、デバイス２００ａの割当領域のサイズを拡大する要求（バッファ拡大要求）が含まれている。
【０１８５】
ゲートウェイＭＦＰ１００は、印刷データの一部を受信すると、その印刷データの一部をデバイス２００ａに送信する（Ｓ１０７）。またゲートウェイＭＦＰ１００は、バッファ拡大要求を受信すると、デバイス２００の各々のジョブの実行状態の情報（ステータス）を取得する（Ｓ１０８）。
【０１８６】
ゲートウェイＭＦＰ１００は、ゲートウェイＭＦＰ１００自身のジョブの実行状態と、デバイス２００の各々のジョブの実行状態の情報と、携帯端末５００の位置情報とに基づいて、デバイス２００の各々の割当領域のサイズ（ＨＴＴＰトンネルの通信バッファサイズ）を決定する（Ｓ１０９）。その後、通信システムは、図１４に示すステップＳ１１０以降の処理を行う。
【０１８７】
なお、本実施の形態における通信システムの構成および上述以外の動作は、第１の実施の形態における通信システムの構成および動作と同様であるため、その説明は繰り返さない。
【０１８８】
［実施の形態の効果］
【０１８９】
上述の実施の形態によれば、ゲートウェイＭＦＰに関連づけられた複数のデバイスのジョブの処理性能およびジョブの実行状態に基づいて、ＨＴＴＰトンネル通信に使用するバッファメモリ内で複数のデバイスの各々に割り当てる割当領域のサイズを適切に決定することができる。その結果、クラウド通信において、ゲートウェイＭＦＰへの影響を抑えつつ、ＨＴＴＰトンネル通信のボディサイズを動的に適切に決定することができ、複数のデバイスの各々が効率の良いクラウド通信を行うことができる。
【０１９０】
［その他］
【０１９１】
ゲートウェイＭＦＰは、デバイス２００ａ、２００ｂ、２００ｃ、および２００ｄの各々のジョブの実行状態に加えて、ゲートウェイＭＦＰ自身のジョブの実行状態に基づいて、デバイス２００ａ、２００ｂ、２００ｃ、および２００ｄ、ならびにゲートウェイＭＦＰ自身の各々の割当領域のサイズを決定してもよい。
【０１９２】
ゲートウェイＭＦＰおよびクラウドサーバーは、管理サーバーを介さずに直接に通信を行ってもよい。
【０１９３】
上述の実施の形態は適宜組み合わせることができる。
【０１９４】
上述の実施の形態における処理は、ソフトウェアにより行っても、ハードウェア回路を用いて行ってもよい。また、上述の実施の形態における処理を実行するプログラムを提供することもできるし、そのプログラムをＣＤ−ＲＯＭ、フレキシブルディスク、ハードディスク、ＲＯＭ、ＲＡＭ、メモリカードなどの記録媒体に記録してユーザーに提供することにしてもよい。プログラムは、ＣＰＵなどのコンピューターにより実行される。また、プログラムはインターネットなどの通信回線を介して、装置にダウンロードするようにしてもよい。
【０１９５】
上述の実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１９６】
１  専用回線
２  インターネット
３  ファイアーウォール
４  ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）トンネル
１００，１１００  ゲートウェイＭＦＰ（Ｍｕｌｔｉｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）
１０１，４０１，５０１  ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）
１０２，４０２，５０２  ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）
１０３，４０３，５０３  ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）
１０４，４０４，５０４  記憶装置
１０５，４０５  ネットワークＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）
１０６  プリント処理部
１０７  画像処理部
１０８  操作パネル
１０９  スキャナー部
１１０  ユーザー認証部
１２１  バッファメモリ
１２２  プログラム
２００，２００ａ，２００ｂ，２００ｃ，２００ｄ，１２００  デバイス
３００  管理サーバー
４００，１４００  クラウドサーバー
４０６，５０６  操作部
４０７，５０７  表示部
４２１，１４０１  クラウドアプリ
４２２  印刷データ
５００  携帯端末
５０５  無線通信部
５０８  ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）情報取得部
１４０２  クラウドＰＦ（Ｐｌａｔｆｏｒｍ）
ＢＤ  ボディ部
ＨＤ  ヘッダ部
ＨＤ１  プロトコル標準ヘッダ
ＨＤ２  トンネル通信用ヘッダ
ＭＳ  メッセージ
Ｐ２００ａ，Ｐ２００ｂ，Ｐ２００ｃ，Ｐ２００ｄ，Ｐ１００１  レスポンスメッセージ
ＰＡ，ＰＢ  携帯端末の位置
ＰＲ１，ＰＲ２，ＰＲ３，ＰＲ４，ＰＲ４Ａ，ＰＲ５，ＰＲ６，ＰＲ７，ＰＲ８，ＰＲ９  処理
Ｑ１００１  リクエストメッセージ
【図１】
2018010400.tif 000013
【図２】
2018010400.tif 000014
【図３】
2018010400.tif 000015
【図４】
2018010400.tif 000016
【図５】
2018010400.tif 000017
【図６】
2018010400.tif 000018
【図７】
2018010400.tif 000019
【図８】
2018010400.tif 000020
【図９】
2018010400.tif 000021
【図１０】
2018010400.tif 000022
【図１１】
2018010400.tif 000023
【図１２】
2018010400.tif 000024
【図１３】
2018010400.tif 000025
【図１４】
2018010400.tif 000026
【図１５】
2018010400.tif 000027
【図１６】
2018010400.tif 000028
【図１７】
2018010400.tif 000029
【図１８】
2018010400.tif 000030
【図１９】
2018010400.tif 000031
【図２０】
2018010400.tif 000032
【図２１】
2018010400.tif 000033
【図２２】
2018010400.tif 000034
【図２３】
2018010400.tif 000035
【図２４】
2018010400.tif 000036
【図２５】
2018010400.tif 000037