以下、本発明の一実施の形態について、図面を用いて説明する。
まず、本実施の形態に係るリモート通信システムの構成について説明する。
図1は、本実施の形態に係るリモート通信システム10のブロック図である。
図1に示すように、リモート通信システム10は、画像形成装置20と、画像形成装置20が所属するLAN(Local Area Network)などのネットワークをインターネットなどのネットワークに接続するゲートウェイ30と、画像形成装置20が所属するネットワークの外部に存在する電子機器としての接続端末40と、リモート通信システム10に含まれる画像形成装置、および、リモート通信システム10に含まれる接続端末の間の通信を制御するリモート通信制御システム15とを備えている。
リモート通信制御システム15は、リモート通信システム10に含まれる接続端末からの指示に応じて、リモート通信システム10に含まれる画像形成装置に対してリモートメンテナンスを実行するクラウドサービスであるリモートメンテナンスシステム50と、リモート通信システム10に含まれる画像形成装置、および、リモート通信システム10に含まれる接続端末の間の直接相互接続、すなわち、Peer to Peerのセッション(以下「リモートセッション」という。)を中継するクラウドサービスであるセッション中継システム60とを備えている。
リモート通信システム10は、画像形成装置20が所属するネットワークに、画像形成装置20以外にも、画像形成装置を備えることが可能である。リモート通信システム10は、画像形成装置20が所属するネットワーク以外にも、画像形成装置が所属するネットワークを備えることが可能である。リモート通信システム10に含まれる画像形成装置は、例えば、MFP(Multifunction Peripheral)、プリンター専用機、コピー専用機、ファックス専用機、スキャナー専用機などの画像形成装置である。
ゲートウェイ30は、画像形成装置20が所属するネットワークの内部に対する、このネットワークの外部からの攻撃を防ぐファイアウォールを構成している。そのため、リモート通信システム10に含まれる画像形成装置と、リモートメンテナンスシステム50との間の通信は、リモート通信システム10に含まれる画像形成装置がXMPP(Extensible Messaging and Presence Protocol)によってリモートメンテナンスシステム50に接続し続けることによって、維持される。
リモート通信システム10は、接続端末40以外にも接続端末を備えることが可能である。リモート通信システム10に含まれる接続端末は、例えば、PC(Personal Computer)などのコンピューターである。
リモートメンテナンスシステム50は、例えば、サーバーコンピューターによって構成されている。リモートメンテナンスシステム50によって実行されるリモートメンテナンスは、例えば、画像形成装置のカウンターの確認、画像形成装置へのファームウェアのインストールなどのメンテナンスである。リモートメンテナンスシステム50は、リモートメンテナンスを実行するだけでなく、リモートセッションを管理する。すなわち、リモートメンテナンスシステム50は、本発明のセッション管理システムを構成している。
セッション中継システム60は、例えば、サーバーコンピューターによって構成されている。
リモート通信システム10に含まれる画像形成装置と、リモートメンテナンスシステム50とは、インターネットなどのネットワークを介して通信可能である。リモート通信システム10に含まれる画像形成装置と、セッション中継システム60とは、インターネットなどのネットワークを介して通信可能である。リモート通信システム10に含まれる接続端末と、リモートメンテナンスシステム50とは、インターネットなどのネットワークを介して通信可能である。リモート通信システム10に含まれる接続端末と、セッション中継システム60とは、インターネットなどのネットワークを介して通信可能である。リモートメンテナンスシステム50と、セッション中継システム60とは、インターネットなどのネットワークを介して通信可能である。
図2は、MFPである場合の画像形成装置20のブロック図である。
図2に示す画像形成装置20は、種々の操作が入力されるボタンなどの入力デバイスである操作部21と、種々の情報を表示するLCD(Liquid Crystal Display)などの表示デバイスである表示部22と、原稿から画像を読み取る読取デバイスであるスキャナー23と、用紙などの記録媒体に画像を印刷する印刷デバイスであるプリンター24と、図示していない外部のファクシミリ装置と公衆電話回線などの通信回線経由でファックス通信を行うファックスデバイスであるファックス通信部25と、ネットワーク経由で、または、ネットワークを介さずに有線または無線によって直接に、外部の装置と通信を行う通信デバイスである通信部26と、各種の情報を記憶する半導体メモリー、HDD(Hard Disk Drive)などの不揮発性の記憶デバイスである記憶部27と、画像形成装置20全体を制御する制御部28とを備えている。
制御部28は、例えば、CPU(Central Processing Unit)と、プログラムおよび各種のデータを記憶しているROM(Read Only Memory)と、CPUの作業領域として用いられるRAM(Random Access Memory)とを備えている。CPUは、ROMまたは記憶部27に記憶されているプログラムを実行する。
制御部28は、ROMまたは記憶部27に記憶されているプログラムを実行することによって、リモート通信システム10に含まれる接続端末からリモートセッションを介して利用されるサーバーアプリケーション28aと、セッション中継システム60(図1参照。)との間の通信を制御するCloud Hub Agent28bとを実現する。
制御部28は、ROMまたは記憶部27に記憶されているプログラムを実行することによって、サーバーアプリケーション28a以外にも、サーバーアプリケーションを実現することが可能である。
制御部28によって実現されるサーバーアプリケーションとしては、例えば、画像形成装置20が所属するネットワークの外部に画像形成装置20の各種の設定状況を通知するとともに、画像形成装置20が所属するネットワークの外部から画像形成装置20の各種の設定を受け付けるWeb Serverがある。また、制御部28によって実現されるサーバーアプリケーションとしては、例えば、画像形成装置20の表示部22に表示される画面(例えば、Webページ)のデータを画像形成装置20が所属するネットワークの外部に送信するとともに、このデータに基づいて表示される画面に対する操作を、画像形成装置20が所属するネットワークの外部から受信して、受信した操作に応じて画像形成装置20を動作させるRemote APP Serverがある。
制御部28によって実現されるサーバーアプリケーションは、アプリケーションIDによって識別されることが可能である。
図3は、接続端末40のブロック図である。
図3に示すように、接続端末40は、種々の操作が入力される例えばキーボード、マウスなどの入力デバイスである操作部41と、種々の情報を表示するLCDなどの表示デバイスである表示部42と、ネットワーク経由で、または、ネットワークを介さずに有線または無線によって直接に、外部の装置と通信を行う通信デバイスである通信部43と、各種の情報を記憶する半導体メモリー、HDDなどの不揮発性の記憶デバイスである記憶部44と、接続端末40全体を制御する制御部45とを備えている。
制御部45は、例えば、CPUと、プログラムおよび各種のデータを記憶しているROMと、CPUの作業領域として用いられるRAMとを備えている。CPUは、ROMまたは記憶部44に記憶されているプログラムを実行する。
制御部45は、ROMまたは記憶部44に記憶されているプログラムを実行することによって、リモートメンテナンスシステム50へのログインの処理を実行するログイン手段45aと、リモートメンテナンスシステム50にリモートメンテナンスを指示するリモートメンテナンス指示手段45bと、リモート通信システム10に含まれる画像形成装置のサーバーアプリケーションをリモートセッションを介して利用するクライアント45cと、リモートセッションを制御するリモートセッション制御手段45dとを実現する。
制御部45は、ROMまたは記憶部44に記憶されているプログラムを実行することによって、クライアント45c以外にも、クライアントを実現することが可能である。
制御部45によって実現されるクライアントとしては、例えば、サーバーアプリケーションとしてのWeb Serverから通知された設定状況を表示部42に表示するとともに、操作部41から入力された各種の設定を、このWeb Serverに対して指示するWeb Browserがある。また、制御部45によって実現されるクライアントとしては、例えば、サーバーアプリケーションとしてのRemote APP Serverから受信した画面のデータに基づいた画面を表示部42に表示するとともに、この画面に対して操作部41から入力された操作を、このRemote APP Serverに送信するRemote APP Clientなどのアプリケーションがある。
制御部45によって実現されるクライアントは、アプリケーションIDによって識別されることが可能である。なお、制御部45によって実現されるクライアントを識別するためのアプリケーションIDは、このクライアントに対応する、画像形成装置のサーバーアプリケーションを識別するためのアプリケーションIDと同一である。
図4は、1台のサーバーコンピューターによって構成されている場合のリモートメンテナンスシステム50のブロック図である。
図4に示すように、リモートメンテナンスシステム50は、種々の操作が入力される例えばキーボード、マウスなどの入力デバイスである操作部51と、種々の情報を表示するLCDなどの表示デバイスである表示部52と、ネットワーク経由で、または、ネットワークを介さずに有線または無線によって直接に、外部の装置と通信を行う通信デバイスである通信部53と、各種の情報を記憶する半導体メモリー、HDDなどの不揮発性の記憶デバイスである記憶部54と、リモートメンテナンスシステム50全体を制御する制御部55とを備えている。
記憶部54は、リモートセッションを管理するためのセッション管理プログラム54aを記憶している。
記憶部54は、リモートセッションに関するログを記憶するログ管理データベース54bを記憶している。
制御部55は、例えば、CPUと、プログラムおよび各種のデータを記憶しているROMと、CPUの作業領域として用いられるRAMとを備えている。CPUは、ROMまたは記憶部54に記憶されているプログラムを実行する。
制御部55は、ROMまたは記憶部54に記憶されている特定のプログラムを実行することによって、利用者のログインを許可するか否かを判断するログイン許可判断手段55aと、リモートメンテナンスを実行するリモートメンテナンス手段55bとを実現する。
制御部55は、セッション管理プログラム54aを実行することによって、セッション中継システム60をスケールアウトするスケールアウト手段55cと、リモートセッションを管理するセッション管理手段55dとを実現する。
図5は、セッション中継システム60によって実現される機能を示す図である。
図5に示すように、セッション中継システム60は、特定のプログラムを実行することによって、リモート通信システム10に含まれる画像形成装置との通信を制御するCloud Hub61を実現する。セッション中継システム60は、特定のプログラムを実行することによって、Cloud Hub61以外にも、Cloud Hubを実現することが可能である。
セッション中継システム60は、特定のプログラムを実行することによって、リモート通信システム10に含まれる接続端末との通信を制御するWeb Agent62を実現する。セッション中継システム60は、特定のプログラムを実行することによって、Web Agent62以外にも、Web Agentを実現することが可能である。
セッション中継システム60は、特定のプログラムを実行することによって、画像形成装置をいずれのCloud Hubに接続し、接続端末をいずれのWeb Agentに接続するかを決定するMaster63と、リモートセッションに関するログを記憶するセッション管理データベース64と、セッション中継システム60をスケールインするスケールイン手段65とを実現する。
セッション中継システム60に含まれるCloud Hubと、セッション中継システム60に含まれるWeb Agentとは、一対一の関係である。すなわち、セッション中継システム60に含まれるCloud Hubの数と、セッション中継システム60に含まれるWeb Agentの数とは、同一である。
リモート通信システム10に含まれる画像形成装置がセッション中継システム60に接続する場合、この画像形成装置と、いずれのCloud Hubとを接続するかは、Master63によって決定される。しかしながら、以下においては、Master63の動作についての詳細な説明を省略する。
同様に、リモート通信システム10に含まれる接続端末がセッション中継システム60に接続する場合、この接続端末と、いずれのWeb Agentとを接続するかは、Master63によって決定される。しかしながら、以下においては、Master63の動作についての詳細な説明を省略する。
次に、リモート通信システム10の動作について説明する。
まず、接続端末40の利用者がリモートメンテナンスシステム50にログインする場合のリモート通信システム10の動作について説明する。
図6は、接続端末40の利用者がリモートメンテナンスシステム50にログインする場合のリモート通信システム10の動作のシーケンス図である。
接続端末40の利用者は、操作部41を介して利用者IDおよびパスワードを入力することによってリモートメンテナンスシステム50へのログインを指示することができる。接続端末40のログイン手段45aは、リモートメンテナンスシステム50へのログインの指示を受け付けると、図6に示すように、操作部41を介して入力された利用者IDおよびパスワードをリモートメンテナンスシステム50に通知することによって、リモートメンテナンスシステム50へのログインの処理を実行する(S101)。
リモートメンテナンスシステム50のログイン許可判断手段55aは、接続端末40からログインが要求されると、利用者のログインを許可するか否かを、接続端末40から通知された利用者IDおよびパスワードの組み合わせに基づいて判断し(S102)、判断結果を接続端末40に返信する(S103)。
次に、リモートメンテナンスシステム50経由でリモートメンテナンスを実行する場合のリモート通信システム10の動作について説明する。
図7は、リモートメンテナンスシステム50経由でリモートメンテナンスを実行する場合のリモート通信システム10の動作のシーケンス図である。
接続端末40の利用者は、リモートメンテナンスシステム50にログインしている場合、リモートメンテナンスシステム50経由での特定の画像形成装置(以下、図7に示す動作の説明において、画像形成装置20として説明する。)のリモートメンテナンスを操作部41を介して指示することができる。接続端末40のリモートメンテナンス指示手段45bは、リモートメンテナンスシステム50経由でのリモートメンテナンスの指示を受け付けると、図7に示すように、操作部41を介して指示された画像形成装置20のデバイスIDをリモートメンテナンスシステム50に通知することによって、操作部41を介して指示されたリモートメンテナンスをリモートメンテナンスシステム50に指示する(S121)。
リモートメンテナンスシステム50のリモートメンテナンス手段55bは、接続端末40からリモートメンテナンスが指示されると、接続端末40からリモートメンテナンスの対象として指定された画像形成装置20に、接続端末40から指示されたメンテナンスをXMPPによって要求する(S122)。
画像形成装置20の制御部28は、リモートメンテナンスシステム50からメンテナンスが要求されると、リモートメンテナンスシステム50から要求されたメンテナンスを実行し(S123)、メンテナンスの実行結果をXMPPによってリモートメンテナンスシステム50に通知する(S124)。
リモートメンテナンスシステム50のリモートメンテナンス手段55bは、メンテナンスの実行結果が画像形成装置20から通知されると、画像形成装置20から通知された実行結果を接続端末40に通知する(S125)。
次に、リモートセッションを開始する場合のリモート通信システム10の動作について説明する。
図8は、リモートセッションを開始する場合のリモート通信システム10の動作のシーケンス図である。図9は、図8に示すスケールアウトのシーケンス図である。図10は、図8に示すデバイス側セッション確立のシーケンス図である。図11は、図8に示す接続端末側セッション確立のシーケンス図である。
接続端末40の利用者は、リモートメンテナンスシステム50にログインしている場合、特定のクライアント(以下、図8~図10に示す動作の説明において、クライアント45cとして説明する。)を指定して、特定の画像形成装置(以下、図8~図11に示す動作の説明において、画像形成装置20として説明する。)とのリモートセッションの開始を操作部41を介して指示することができる。接続端末40のリモートセッション制御手段45dは、リモートセッションの開始の指示を受け付けると、図8~図11に示すように、操作部41を介して指示された画像形成装置20のデバイスIDと、操作部41を介して指示されたクライアント45cのアプリケーションIDとをリモートメンテナンスシステム50に通知することによって、リモートセッションの開始をリモートメンテナンスシステム50に要求する(S141)。
なお、接続端末40の利用者は、画像形成装置20とのリモートセッションの開始を操作部41を介して指示する場合、画像形成装置20とのリモートセッションの開始を操作部41を介して指示する前に、画像形成装置20とのリモートセッションの開始を希望する旨を画像形成装置20の利用者に例えば電話などの方法によって事前に別途連絡することが好ましい。
リモートメンテナンスシステム50のセッション管理手段55dは、S141の要求を受け付けると、S141によって通知されたデバイスIDによって特定される画像形成装置20に、S141によって通知されたアプリケーションIDを通知することによって、リモートセッションの開始の承認をXMPPによって要求する(S142)。
画像形成装置20のサーバーアプリケーションのうち、S142によって通知されたアプリケーションIDによって特定されるサーバーアプリケーション28aは、S142の要求を受けると、リモートセッションの開始を承認するか否かの指示を受け付けるリモートセッション承認用画面70(図12参照。)を表示部22に表示する(S143)。
図12は、リモートセッション承認用画面70の一例を示す図である。
図12に示すリモートセッション承認用画面70は、リモートセッションを承認するか否かを尋ねるメッセージ71と、リモートセッションの開始の承認の指示を受け付けるためのYESボタン72と、リモートセッションの開始の不承認の指示を受け付けるためのNOボタン73とを備えている。画像形成装置20の利用者は、操作部21を介してYESボタン72およびNOボタン73のいずれかを押すことができる。
図8~図11に示すように、サーバーアプリケーション28aは、操作部21を介してYESボタン72が押されると、リモートセッションが承認された旨をXMPPによってリモートメンテナンスシステム50に通知する(S144)。
なお、図示していないが、S143において表示部22に表示されたリモートセッション承認用画面70に対して操作部21を介してNOボタン73が押された場合、リモート通信システム10は、次のように動作する。まず、画像形成装置20のサーバーアプリケーション28aは、リモートセッションが承認されなかった旨をXMPPによってリモートメンテナンスシステム50に通知する。次いで、リモートメンテナンスシステム50のセッション管理手段55dは、リモートセッションが承認されなかった旨を接続端末40に通知する。そして、接続端末40のリモートセッション制御手段45dは、リモートセッションが承認されなかった旨を表示部42に表示する。
リモートメンテナンスシステム50のスケールアウト手段55cは、S144の通知を受けると、セッション中継システム60が中継するリモートセッションの数を取得する(S161)。具体的には、スケールアウト手段55cは、セッション中継システム60が現在中継しているリモートセッションの数をログ管理データベース54bに記憶されているログに基づいて判断した後、この数に、新たにセッション中継システム60に中継させる予定のリモートセッションの数、すなわち、1を加えることによって、セッション中継システム60が中継するリモートセッションの数を取得する。
次いで、スケールアウト手段55cは、S161において取得された数がスケールアウト基準数以上であるか否かを判断する(S162)。ここで、スケールアウト基準数は、例えば、セッション中継システム60においてリモートセッションを収容するサーバー、すなわち、Cloud HubおよびWeb Agentを実現するサーバー(以下「リモートセッション収容サーバー」という。)の現在のインスタンスによって適切に中継可能なリモートセッションの数の上限に特定の割合を乗じた数である。例えば、リモートセッション収容サーバーの1つのインスタンスによって適切に中継可能なリモートセッションの数の上限が100であり、リモートセッション収容サーバーの現在のインスタンスの数が2であり、特定の割合が80%である場合、スケールアウト基準数は、160(=100×2×0.8)である。なお、スケールアウト手段55cは、リモートセッション収容サーバーの現在のインスタンスの数を管理している。スケールアウト手段55cは、リモートセッション収容サーバーの現在のインスタンスの数をセッション中継システム60から都度取得しても良い。
スケールアウト手段55cは、S161において取得された数がスケールアウト基準数以上であるとS162において判断した場合、セッション中継システム60にスケールアウト指令を発行する(S163)。
セッション中継システム60は、スケールアウト指令を受信すると、スケールアウトを実行する、すなわち、リモートセッション収容サーバーのインスタンスを1つ増加させる(S164)。このとき、リモートセッション収容サーバーは、ホットスタンバイおよびコールドスタンバイのいずれでも構わない。
セッション中継システム60は、S164の処理が終了すると、リモートセッション収容サーバーのインスタンスを1つ増加させた旨をリモートメンテナンスシステム50に通知する(S165)。
リモートメンテナンスシステム50のセッション管理手段55dは、S161において取得された数がスケールアウト基準数未満であるとS162において判断されるか、S165の通知を受けると、セッション中継システム60に接続情報をAPI(Application Program Interface)によって要求する(S145)。
セッション中継システム60のCloud Hub61は、S145の要求を受けると、このリモートセッションによる通信をセッション中継システム60において識別するためのセッションIDを生成し(S146)、生成したセッションIDを接続情報としてリモートメンテナンスシステム50にAPIによって通知する(S147)。セッションIDとしては、例えば、HMAC(Hash-based Message Authentication Code)などのハッシュアルゴリズムで生成された乱数列を、HTTP(Hypertext Transfer Protocol)上で取り扱えるようにBASE64エンコーディングしたものなど、ランダムな識別情報が採用される。
リモートメンテナンスシステム50のセッション管理手段55dは、S147においてセッションIDが通知されると、リモートセッションの有効期間をリモートメンテナンスシステム50が認識するためのトークンを生成し(S148)、生成したトークンと、S147において通知されたセッションIDとをXMPPによって画像形成装置20に通知する(S149)。
次いで、セッション管理手段55dは、トークンおよびセッションIDを取得した旨を接続端末40に通知する(S150)。
画像形成装置20のサーバーアプリケーション28aは、S149においてトークンおよびセッションIDが通知されると、S149において通知されたトークンおよびセッションIDを設定したCloud Hub Agent28bを起動する(S171)。
次いで、Cloud Hub Agent28bは、設定されたトークンおよびセッションIDをセッション中継システム60に通知することによって、セッション中継システム60にセッションの確立を要求する(S172)。
セッション中継システム60のCloud Hubのうち、S172において通知されたセッションIDに対応付けられているCloud Hub61は、S172の要求を受けると、S172において通知されたトークンによる認証をAPIによってリモートメンテナンスシステム50に要求する(S173)。したがって、リモートメンテナンスシステム50のセッション管理手段55dは、S173によって要求された認証を実行し(S174)、認証の結果をセッション中継システム60にAPIによって通知する(S175)。
セッション中継システム60のCloud Hub61は、S175において認証の成功が通知されると、画像形成装置20とのセッションを開始したことを示すログをセッション管理データベース64に記憶し(S176)、S176において記憶したログをトークンとともにリモートメンテナンスシステム50にAPIによって通知する(S177)。したがって、リモートメンテナンスシステム50のセッション管理手段55dは、S177において通知されたログを、S177において通知されたトークンによって識別されるリモートセッションのログとしてログ管理データベース54bに管理し(S178)、このログを管理した旨をセッション中継システム60にAPIによって返信する(S179)。
セッション中継システム60のCloud Hub61は、S175において認証の成功が通知されると、画像形成装置20とのセッションを確立した旨を画像形成装置20に通知する(S180)。すなわち、画像形成装置20と、セッション中継システム60との間にHTTPベースのWebSocket接続が確立される。
接続端末40のリモートセッション制御手段45dは、S141の処理の後、リモートメンテナンスシステム50から接続情報を取得することができるまで、リモートメンテナンスシステム50に接続情報をポーリングによって要求する(S201)。
リモートメンテナンスシステム50のセッション管理手段55dは、S201の要求を受けた場合に、S148においてトークンを生成済みであるとき、このトークンと、S147においてセッション中継システム60から通知されたセッションIDとを接続情報として接続端末40に通知する(S202)。
接続端末40のリモートセッション制御手段45dは、S202においてトークンおよびセッションIDが通知されると、S202において通知されたトークンおよびセッションIDを設定したクライアント45cを起動する(S203)。
次いで、クライアント45cは、設定されたトークンおよびセッションIDをセッション中継システム60に通知することによって、セッション中継システム60にセッションの確立を要求する(S204)。
セッション中継システム60のWeb Agentのうち、S204において通知されたセッションIDに対応付けられているWeb Agent62は、S204の要求を受けると、S204において通知されたトークンおよびセッションIDをCloud Hub61に通知することによって、Cloud Hub61にセッションの確立を要求する(S205)。
セッション中継システム60のCloud Hub61は、S205の要求を受けると、S205において通知されたトークンによる認証をAPIによってリモートメンテナンスシステム50に要求する(S206)。したがって、リモートメンテナンスシステム50のセッション管理手段55dは、S206によって要求された認証を実行し(S207)、認証の結果をセッション中継システム60にAPIによって通知する(S208)。
セッション中継システム60のCloud Hub61は、S208において認証の成功が通知されると、接続端末40とのセッションを開始したことを示すログをセッション管理データベース64に記憶し(S209)、S209において記憶したログをトークンとともにリモートメンテナンスシステム50にAPIによって通知する(S210)。したがって、リモートメンテナンスシステム50のセッション管理手段55dは、S210において通知されたログを、S210において通知されたトークンによって識別されるリモートセッションのログとしてログ管理データベース54bに管理し(S211)、このログを管理した旨をセッション中継システム60にAPIによって返信する(S212)。
セッション中継システム60のCloud Hub61は、S208において認証の成功が通知されると、接続端末40とのセッションを確立した旨をWeb Agent62に通知する(S213)。したがって、Web Agent62は、接続端末40とのセッションを確立した旨を接続端末40に通知する(S214)。すなわち、接続端末40と、セッション中継システム60との間にHTTPベースのWebSocket接続が確立される。
なお、セッション中継システム60は、図8~図10に示す動作によって画像形成装置20との間に確立されたWebSocket接続と、図8~図10に示す動作によって接続端末40との間に確立されたWebSocket接続とを、セッションIDによって関連付ける。したがって、図8~図10に示す動作によって、リモートセッションが確立される。
次に、接続端末40からのリモートセッションを介した要求に応じて画像形成装置20が動作する場合のリモート通信システム10の動作について説明する。
図13は、接続端末40からのリモートセッションを介した要求に応じて画像形成装置20が動作する場合のリモート通信システム10の動作のシーケンス図である。
図8~図11に示す動作によってリモートセッションが確立されている場合、接続端末40の利用者は、画像形成装置20に対する要求を操作部41を介して指示することができる。接続端末40のクライアント45cは、画像形成装置20に対する要求の指示を受け付けると、図13に示すように、操作部41を介して指示された要求を通知するためのHTTPリクエストを生成する(S231)。
ここで、S232において生成されるHTTPリクエストの構造について説明する。
図14(a)は、サーバーアプリケーション28aが処理するHTTPデータ80を示す図である。図14(b)は、図14(a)に示すHTTPデータ80をインターネット上で中継するためのHTTPデータ90を示す図である。
図14に示すように、HTTPデータ80は、HTTPヘッダー81と、HTTPボディー82とを含んでいる。HTTPデータ90は、インターネット上の中継のためのHTTPヘッダー91と、HTTPボディー92としてのHTTPデータ80とを含んでいる。なお、HTTPヘッダー91には、サーバーアプリケーション28aを特定するためのアプリケーションID91aが含まれている。
クライアント45cは、操作部41を介して指示された要求を通知するためのHTTPリクエストとして、図14(b)に示すHTTPデータ90と同様の構造のHTTPデータを生成する。ここで、セッションIDは、HTTPヘッダー91に相当する箇所に格納される。
図13に示すように、接続端末40のクライアント45cは、S231において生成したHTTPリクエストをセッション中継システム60にWebSocket接続によって送信する(S232)。
セッション中継システム60のWeb Agentのうち、S232において送信されてきたHTTPリクエストに含まれるセッションIDに対応付けられたWeb Agent62は、S232においてHTTPリクエストが送信されてくると、このHTTPリクエストをCloud Hub61に渡す(S233)。したがって、Cloud Hub61は、このHTTPリクエストに含まれるセッションIDに対応するWebSocket接続によって、このHTTPリクエストを画像形成装置20に送信する(S234)。
画像形成装置20のCloud Hub Agent28bは、S234においてHTTPリクエストが送信されてくると、このHTTPリクエストに含まれるアプリケーションIDに対応するサーバーアプリケーション28aを識別する(S235)。
次いで、Cloud Hub Agent28bは、S234において送信されてきたHTTPリクエストからインターネット上の中継のためのHTTPヘッダーを取り外したHTTPリクエストを生成する(S236)。ここで、S236において生成されるHTTPリクエストは、図14(a)に示すHTTPデータ80と同様の構造のHTTPデータである。
次いで、Cloud Hub Agent28bは、S235において識別したサーバーアプリケーション28aに、S236において生成したHTTPリクエストを渡す(S237)。
サーバーアプリケーション28aは、S237においてHTTPリクエストが渡されると、このHTTPリクエストに応じたHTTPレスポンスを生成する(S238)。ここで、S238において生成されるHTTPレスポンスは、図14(a)に示すHTTPデータ80と同様の構造のHTTPデータである。
次いで、サーバーアプリケーション28aは、S238において生成したHTTPレスポンスを、Cloud Hub Agent28bに渡す(S239)。
Cloud Hub Agent28bは、S239においてHTTPレスポンスが渡されると、S239において渡されたHTTPレスポンスに、インターネット上の中継のためのHTTPヘッダーを取り付けたHTTPレスポンスを生成する(S240)。ここで、S240において生成されるHTTPレスポンスは、図14(b)に示すHTTPデータ90と同様の構造のHTTPデータである。セッションIDは、HTTPヘッダー91に相当する箇所に格納される。
Cloud Hub Agent28bは、S240において生成したHTTPレスポンスをセッション中継システム60にWebSocket接続によって送信する(S241)。
セッション中継システム60のCloud Hubのうち、S241において送信されてきたHTTPレスポンスに含まれるセッションIDに対応付けられたCloud Hub61は、S241においてHTTPレスポンスが送信されてくると、このHTTPレスポンスをWeb Agent62に渡す(S242)。したがって、Web Agent62は、このHTTPレスポンスに含まれるセッションIDに対応するWebSocket接続によって、このHTTPレスポンスを接続端末40に送信する(S243)。
したがって、接続端末40のクライアント45cは、S243において送信されてきたHTTPレスポンスを受信することができる。
次に、リモートセッションを終了する場合のリモート通信システム10の動作について説明する。
図15は、リモートセッションを終了する場合のリモート通信システム10の動作のシーケンス図である。図16は、図15に示すデバイス側セッション終了のシーケンス図である。
接続端末40の利用者は、特定の画像形成装置(以下、図15および図16に示す動作の説明において、画像形成装置20として説明する。)の特定のサーバーアプリケーション(以下、図15および図16に示す動作の説明において、サーバーアプリケーション28aとして説明する。)とのリモートセッションの終了を操作部41を介して指示することができる。接続端末40のリモートセッション制御手段45dは、リモートセッションの終了の指示を受け付けると、図15および図16に示すように、操作部41を介して指示されたリモートセッションのトークンおよびセッションIDをクライアント45cに通知することによって、リモートセッションの終了をクライアント45cに要求する(S261)。したがって、クライアント45cは、S261において要求されたリモートセッションの終了をセッション中継システム60にWebSocket接続によって要求する(S262)。
セッション中継システム60のWeb Agentのうち、S262における要求に含まれるセッションIDに対応付けられたWeb Agent62は、S262においてリモートセッションの終了が要求されると、この要求をCloud Hub61に渡す(S263)。したがって、Cloud Hub61は、この要求に含まれるトークンによって識別されるリモートセッションの終了をAPIによってリモートメンテナンスシステム50に要求する(S264)。
リモートメンテナンスシステム50のセッション管理手段55dは、S264の要求を受けると、S264の要求の対象のリモートセッションの対象の画像形成装置20に、このリモートセッションの終了をXMPPによって要求する(S265)。
次いで、セッション管理手段55dは、リモートセッションの終了の要求を受け付けた旨をセッション中継システム60にAPIによって通知する(S266)。
セッション中継システム60のCloud Hub61は、S266においてリモートセッションの終了の要求の受け付けが通知されると、接続端末40とのセッションを終了したことを示すログをセッション管理データベース64に記憶し(S267)、S267において記憶したログをトークンとともにリモートメンテナンスシステム50にAPIによって通知する(S268)。したがって、リモートメンテナンスシステム50のセッション管理手段55dは、S268において通知されたログを、S268において通知されたトークンによって識別されるリモートセッションのログとしてログ管理データベース54bに管理し(S269)、このログを管理した旨をセッション中継システム60にAPIによって返信する(S270)。
セッション中継システム60のCloud Hub61は、S270における返信を受けると、接続端末40と、セッション中継システム60とのWebSocket接続の終了をWeb Agent62に通知する(S271)。したがって、Web Agent62は、接続端末40と、セッション中継システム60とのWebSocket接続の終了を接続端末40に通知する(S272)。
接続端末40のクライアント45cは、S272の通知を受けると、接続端末40と、セッション中継システム60とのWebSocket接続の終了をリモートセッション制御手段45dに通知して(S273)、自身の動作を終了する。
したがって、リモートセッション制御手段45dは、例えば、接続端末40と、セッション中継システム60とのWebSocket接続が終了した旨を表示部42に表示することができる。
画像形成装置20のサーバーアプリケーションのうち、S265において受けた要求の対象のリモートセッションの対象のサーバーアプリケーション28aは、S265の要求を受けると、このリモートセッションのトークンおよびセッションIDをCloud Hub Agent28bに通知することによって、リモートセッションの終了をCloud Hub Agent28bに要求する(S291)。したがって、Cloud Hub Agent28bは、S291において要求されたリモートセッションの終了をセッション中継システム60にWebSocket接続によって要求する(S292)。
セッション中継システム60のCloud Hub61は、S292の要求を受けると、この要求に含まれるトークンによって識別されるリモートセッションの終了をAPIによってリモートメンテナンスシステム50に要求する(S293)。
リモートメンテナンスシステム50のセッション管理手段55dは、S293の要求を受けると、リモートセッションの終了の要求を受け付けた旨をセッション中継システム60にAPIによって通知する(S294)。
セッション中継システム60のCloud Hub61は、S294においてリモートセッションの終了の要求の受け付けが通知されると、画像形成装置20とのセッションを終了したことを示すログをセッション管理データベース64に記憶し(S295)、S295において記憶したログをトークンとともにリモートメンテナンスシステム50にAPIによって通知する(S296)。したがって、リモートメンテナンスシステム50のセッション管理手段55dは、S296において通知されたログを、S296において通知されたトークンによって識別されるリモートセッションのログとしてログ管理データベース54bに管理し(S297)、このログを管理した旨をセッション中継システム60にAPIによって返信する(S298)。
セッション中継システム60のCloud Hub61は、S298における返信を受けると、画像形成装置20と、セッション中継システム60とのWebSocket接続の終了を画像形成装置20に通知する(S299)。
画像形成装置20のCloud Hub Agent28bは、S299の通知を受けると、自身の動作を終了する。
なお、リモートメンテナンスシステム50のセッション管理手段53は、画像形成装置20およびセッション中継システム60の間のセッションの終了を示すログがセッション中継システム60から通知されてきたことと、接続端末40およびセッション中継システム60の間のセッションの終了を示すログがセッション中継システム60から通知されてきたこととを両方確認した場合に、セッション中継システム60を介した画像形成装置20および接続端末40のリモートセッションが終了したと判断する。セッション管理手段53は、セッション中継システム60を介した画像形成装置20および接続端末40のリモートセッションが終了していないと判断している場合、セッション中継システム60を介した画像形成装置20および接続端末40の新たなリモートセッションの確立を許可しない。
次に、スケールインする場合のセッション中継システム60の動作について説明する。
図17は、スケールインする場合のセッション中継システム60の動作のフローチャートである。
セッション中継システム60は、定期的に図17に示す動作を実行する。
図17に示すように、セッション中継システム60のスケールイン手段65は、セッション中継システム60が中継するリモートセッションの数がスケールイン基準数以下であるか否かを、セッション管理データベース64に記憶されている情報に基づいて判断する(S311)。ここで、スケールイン基準数は、例えば、セッション中継システム60におけるリモートセッション収容サーバーの現在のインスタンスより1少ないインスタンスによって適切に中継可能なリモートセッションの数の上限に特定の割合を乗じた数である。例えば、リモートセッション収容サーバーの1つのインスタンスによって適切に中継可能なリモートセッションの数の上限が100であり、リモートセッション収容サーバーの現在のインスタンスの数が3であり、特定の割合が70%である場合、スケールアウト基準数は、140(=100×(3-1)×0.7)である。
スケールイン手段65は、セッション中継システム60が中継するリモートセッションの数がスケールイン基準数以下であるとS311において判断すると、セッション中継システム60が中継するリモートセッションの数がスケールイン基準数以下である状態がスケールイン基準時間以上継続しているか否かを、セッション管理データベース64に記憶されている情報に基づいて判断する(S312)。ここで、スケールイン基準時間は、例えば10分など、特定の時間が設定される。
スケールイン手段65は、セッション中継システム60が中継するリモートセッションの数がスケールイン基準数以下である状態がスケールイン基準時間以上継続しているとS312において判断すると、スケールインを実行する、すなわち、リモートセッション収容サーバーのインスタンスを1つ減少させる(S313)。
スケールイン手段65は、セッション中継システム60が中継するリモートセッションの数がスケールイン基準数以下ではないとS311において判断するか、セッション中継システム60が中継するリモートセッションの数がスケールイン基準数以下である状態がスケールイン基準時間以上継続していないとS312において判断するか、S313の処理を実行すると、図17に示す動作を終了する。
以上に説明したように、リモート通信制御システム15は、画像形成装置20と、画像形成装置20が所属するネットワークの外部に存在する接続端末40とが直接接続されるのではなく、セッション中継システム60によって中継されるリモートセッションを確立するので、画像形成装置20が所属するネットワークの外部に存在する接続端末40から画像形成装置20を制御する場合のセキュリティーを向上することができる。
リモート通信システム10において、画像形成装置20は、セッション中継システム60との間にセッションIDを使用するWebSocket接続を確立し(S171~S180)、接続端末40は、セッション中継システム60との間にセッションIDを使用するWebSocket接続を確立し(S201~S214)、セッション中継システム60は、接続端末40との間に確立された接続と、画像形成装置20との間に確立された接続とをセッションIDによって関連付けることによってリモートセッションを中継する(S231~S243)。この構成により、リモート通信システム10は、画像形成装置20が所属するネットワークの外部に存在する接続端末のうち、リモートメンテナンスシステム50からセッションIDが通知された接続端末40のみが、セッション中継システム60によって中継される画像形成装置20とのリモートセッションを確立するので、画像形成装置20が所属するネットワークの外部に存在する接続端末40から画像形成装置20を制御する場合のセキュリティーを向上することができる。
リモート通信システム10において、画像形成装置20およびセッション中継システム60の間に確立されるWebSocket接続によって使用されるセッションIDと、接続端末40およびセッション中継システム60の間に確立されるWebSocket接続によって使用されるセッションIDとは、同一のセッションIDである。この構成により、リモート通信システム10は、互いに異なる2つのセッションIDをセッション中継システム60において関連付ける必要がないので、セッション中継システム60におけるセッションIDの処理を簡略化することができる。なお、画像形成装置20およびセッション中継システム60の間に確立されるWebSocket接続によって使用されるセッションIDと、接続端末40およびセッション中継システム60の間に確立されるWebSocket接続によって使用されるセッションIDとは、セッション中継システム60において互いに関連付けられれば、互いに異なっていても良い。
リモート通信システム10において、セッション中継システム60および接続端末40の間に確立されるWebSocket接続と、セッション中継システム60および画像形成装置20の間に確立されるWebSocket接続との少なくとも1つは、SSL(Secure Sockets Layer)などの暗号化通信の接続であっても良い。この構成により、リモート通信システム10は、セッション中継システム60によって中継される、接続端末40および画像形成装置20の間のリモートセッションの経路の少なくとも一部が暗号化されるので、画像形成装置20に対してクラッキングなどの不正利用が発生することを抑えることができる。
リモート通信システム10において、リモートメンテナンスシステム50は、接続端末40の利用者がリモートメンテナンスシステム50にログインしている場合に、接続端末40からリモートセッションの開始の要求(S141)を受け付け、接続端末40からリモートセッションの開始の要求を受け付けなかった場合、画像形成装置20へのセッションIDの通知(S149)と、接続端末40へのセッションIDの通知(S202)とを実行しない。この構成により、リモート通信システム10は、接続端末40の利用者がリモートメンテナンスシステム50にログインすることができる場合にのみ、セッション中継システム60によって中継される、接続端末40および画像形成装置20の間のリモートセッションが確立されるので、このリモートセッションのセキュリティーを向上することができる。
リモート通信システム10において、リモートメンテナンスシステム50は、画像形成装置20が利用者からリモートセッションの開始が承認されなかった場合、画像形成装置20へのセッションIDの通知(S149)と、接続端末40へのセッションIDの通知(S202)とを実行しない。この構成により、リモート通信システム10は、画像形成装置20が利用者からリモートセッションの開始が承認された場合にのみ、セッション中継システム60によって中継される、接続端末40および画像形成装置20の間のリモートセッションが確立されるので、このリモートセッションのセキュリティーを向上することができる。なお、リモートメンテナンスシステム50は、画像形成装置20が利用者からリモートセッションの開始が承認されなかった場合、画像形成装置20へのセッションIDの通知と、接続端末40へのセッションIDの通知とのいずれか1つを実行しない構成でも良い。
リモート通信システム10において、セッション中継システム60は、リモートメンテナンスシステム50からセッションIDが要求される(S145)度にセッションIDを変更する(S146)。この構成により、リモート通信システム10は、セッション中継システム60によって中継される、接続端末40および画像形成装置20の間のリモートセッションが確立する度にセッションIDが変更されるので、このリモートセッションのセキュリティーを向上することができる。
リモート通信システム10は、画像形成装置20が所属するネットワークの外部に存在する接続端末40に、画像形成装置20に表示される画面と同一の画面を表示することによって、この接続端末40から画像形成装置20を操作するので、画像形成装置20が所属するネットワークの外部に存在する接続端末40から画像形成装置20を低コストで簡便に操作することができる。例えば、接続端末40は、画像形成装置20の設定画面を表示部42に表示することによって、画像形成装置20のアドレス帳の設定など、画像形成装置20に対して各種の設定を、接続端末40の利用者に実行させることができる。また、接続端末40は、例えば、画像形成装置20の各種の情報の確認画面を表示部42に表示することによって、画像形成装置20に発生したエラーの確認、画像形成装置20で印刷した枚数の確認、画像形成装置20におけるトナーの残量など、画像形成装置20の各種の情報の確認を、接続端末40の利用者に実行させることができる。また、接続端末40は、例えば、画像形成装置20へのソフトウェアのインストール画面を表示部42に表示することによって、画像形成装置20へのファームウェアのインストール、画像形成装置20へのアプリケーションのインストールなど、画像形成装置20への各種のソフトウェアのインストールを、接続端末40の利用者に実行させることができる。
なお、接続端末40は、リモートセッションによって画像形成装置20内の種々のアプリケーションと通信することができるので、画像形成装置20に対するメンテナンス以外の様々な機能を実現することができる。
リモート通信システム10は、本実施の形態において、セッション管理システムとしてのリモートメンテナンスシステム50経由で図7に示すようにリモートメンテナンスを実行することができる。しかしながら、リモート通信システム10は、セッション管理システム経由でリモートメンテナンスを実行することができなくても良い。
リモート通信制御システム15は、セッション中継システム60が中継するリモートセッションの数がスケールアウト基準数以上である場合に、セッション中継システムをスケールアウトする(S163~S164)ので、セッション中継システム60が中継するリモートセッションの数が、セッション中継システム60におけるリモートセッション収容サーバーのインスタンスによって適切に中継可能なリモートセッションの数の上限を超す可能性を低減することができる。したがって、リモート通信制御システム15は、セッション中継システム60によって中継されるリモートセッションの品質を向上することができる。具体的には、リモート通信制御システム15は、リモートセッション経由でのリモートメンテナンスのための新たなリモートセッションが正常に確立されないという問題の発生を抑えることができる。また、リモート通信制御システム15は、リモートセッション経由でのリモートメンテナンスのために既に確立されているリモートセッションにおいて、このリモートセッション経由でのリモートメンテナンスの指示に対して画像形成装置の実際の動作が遅延するという問題や、遅延によるタイムアウトエラーが発生するという問題など、リモートセッション経由でのリモートメンテナンスの品質上の深刻な問題の発生を抑えることができる。
リモート通信制御システム15において、スケールアウト手段55cは、画像形成装置20が利用者からリモートセッションの開始の承認をリモートセッション承認用画面70において受け付ける度に、セッション中継システム60をスケールアウトするか否かを判断する(S162)。この構成により、リモート通信制御システム15は、セッション中継システム60におけるリモートセッション収容サーバーの資源が枯渇するより前に、このリモートセッション収容サーバーの資源を拡張することができるので、セッション中継システム60によって中継されるリモートセッションの品質を適切に向上することができる。したがって、リモート通信制御システム15は、例えば、リモートセッション経由でのリモートメンテナンスを停止させることなく、維持することができる。
なお、スケールアウト手段55cは、本実施の形態において示したタイミング以外のタイミングで、セッション中継システム60をスケールアウトするか否かを判断しても良い。
例えば、スケールアウト手段55cは、接続端末40が接続端末40の利用者から新たなリモートセッションの開始の指示を受け付けた後、このリモートセッションがセッション中継システム60によって中継される前に、セッション中継システム60をスケールアウトするか否かを判断しても良い。この構成により、リモート通信制御システム15は、セッション中継システム60によって新たなリモートセッションが中継される可能性が高い場合に、セッション中継システム60をスケールアウトするか否かを判断するので、セッション中継システム60によって中継されるリモートセッションの品質を適切に向上することができる。
また、スケールアウト手段55cは、接続端末40が接続端末40の利用者から新たなリモートセッションの開始の指示を受け付けたタイミングや、画像形成装置20が画像形成装置20の利用者からリモートセッションの開始の承認の指示を受け付けたタイミングなどとは関係なく、スケールインの場合と同様に、セッション中継システム60が中継するリモートセッションの数がスケールアウト基準数以上である状態がスケールアウト基準時間以上継続している場合に、セッション中継システム60をスケールアウトしても良い。
リモート通信制御システム15は、セッション中継システム60が中継するリモートセッションの数がスケールイン基準数以下である場合に(S311でYES)、セッション中継システム60をスケールインする(S313)ので、セッション中継システム60のスケールが不必要に大きくなることを抑えることができる。したがって、リモート通信制御システム15は、セッション中継システム60におけるリモートセッション収容サーバーの資源を効率良く利用することができる。
特に、リモート通信制御システム15は、セッション中継システム60が中継するリモートセッションの数がスケールイン基準数以下である状態がスケールイン基準時間以上継続している場合に(S312でYES)、セッション中継システム60をスケールインする(S313)。この構成により、リモート通信制御システム15は、セッション中継システム60が中継するリモートセッションの数が一時的にスケールイン基準数以下である場合に、セッション中継システム60をスケールインしないので、セッション中継システム60のスケールを不必要に小さくすることを抑えることができる。なお、リモート通信制御システム15は、S312の処理を省略して、S311でYESの場合に必ずS313を実行しても良い。
リモート通信制御システム15は、本実施の形態において、スケールアウト手段がリモートメンテナンスシステム50によって実現されている。しかしながら、リモート通信制御システム15は、例えばセッション中継システム60など、リモートメンテナンスシステム50以外の構成によってスケールアウト手段が実現されても良い。
リモート通信制御システム15は、本実施の形態において、スケールイン手段がセッション中継システム60によって実現されている。しかしながら、リモート通信制御システム15は、例えばリモートメンテナンスシステム50など、セッション中継システム60以外の構成によってスケールイン手段が実現されても良い。
リモート通信制御システム15は、本実施の形態において、セッション中継システム60のスケールアウト時にセッション中継システム60におけるリモートセッション収容サーバーのインスタンスを1つずつ増加させる。しかしながら、リモート通信制御システム15は、セッション中継システム60のスケールアウト時にセッション中継システム60におけるリモートセッション収容サーバーのインスタンスを1つ以外の数増加させても良い。
リモート通信制御システム15は、本実施の形態において、セッション中継システム60のスケールイン時にセッション中継システム60におけるリモートセッション収容サーバーのインスタンスを1つずつ減少させる。しかしながら、リモート通信制御システム15は、セッション中継システム60のスケールイン時にセッション中継システム60におけるリモートセッション収容サーバーのインスタンスを1つ以外の数減少させても良い。
リモート通信制御システム15は、セッション中継システム60を適切にスケールアウトおよびスケールインするので、クラウド環境のうちのパブリッククラウド、すなわち、必要なときに、必要なだけ資源を割り当てて、その割り当て量に応じて課金するクラウド環境で運用されることに特に適している。