(実施例)
(システムの構成)
図1に示されるように、通信システム2は、スキャナ10と、仲介サーバ50と、保存サーバ100と、携帯端末150と、を備える。各デバイス10,50,100,150は、インターネットを介して、相互に通信可能である。また、スキャナ10及び携帯端末150は、後述のNFC(Near Field Communicationの略)方式に従った無線通信を利用して、相互に通信可能である。
スキャナ10は、原稿のスキャンを実行して、スキャナ10の内部にスキャンデータを記憶したり、スキャナ10と同じLAN(Local Area Networkの略)に接続されているPC(Personal Computerの略)にスキャンデータを送信したりすることができる。特に、本実施例では、スキャナ10は、携帯端末150とNFC方式に従った無線通信を実行することによって、原稿のスキャンを実行して、仲介サーバ50を介して保存サーバ100にスキャンデータをアップロードすることができる。このアップロードを実現するために、各デバイス10等は、以下の構成を備える。
(スキャナ10の構成)
スキャナ10は、図示省略のPC等の周辺機器である。スキャナ10は、操作部12と、表示部14と、NFCインターフェース16と、スキャン実行部20と、ネットワークインターフェース22と、制御部30と、を備える。以下では、インターフェースのことを「I/F」と記載する。
操作部12は、複数のキーを備える。ユーザは、操作部12を操作することによって、様々な指示をスキャナ10に入力することができる。表示部14は、様々な情報を表示するためのディスプレイである。スキャン実行部20は、CCD方式、CIS方式等のスキャン機構を備える。
NFCI/F16は、NFC方式の無線通信(以下では「NFC通信」と呼ぶ)を実行するためのI/Fである。NFC方式は、いわゆる近距離無線通信のための無線通信方式であり、例えば、ISO/IEC21481又は18092の国際標準規格に基づく無線通信方式である。ネットワークI/F22は、スキャナ10が設置されている環境に構築される図示省略のLANに接続するためのI/Fであり、有線通信のためのI/Fであってもよいし、無線通信のためのI/Fであってもよい。スキャナ10は、ネットワークI/F22及び図示省略のLANを介して、インターネットに接続される。
制御部30は、CPU32と、メモリ34と、を備える。CPU32は、メモリ34に記憶されているプログラムに従って、様々な処理を実行する。
(仲介サーバ50の構成)
仲介サーバ50は、スキャナ10のベンダによってインターネット上に設置されるサーバである。仲介サーバ50は、スキャナ10からスキャンデータを受信して、当該スキャンデータを保存サーバ100に送信する。即ち、仲介サーバ50は、スキャナ10から保存サーバ100へのスキャンデータの送信を仲介する。仲介サーバ50は、ネットワークI/F60と、制御部70と、を備える。
ネットワークI/F60は、インターネットに接続するためのI/Fである。制御部70は、CPU72と、メモリ74と、を備える。CPU72は、メモリ74に格納されているプログラムに従って、様々な処理を実行する。
(保存サーバ100の構成)
保存サーバ100は、スキャナ10のベンダとは異なる特定のサービス提供会社によってインターネット上に設置されるサーバである。保存サーバ100は、画像データ、文書データ等の様々なデータ(即ちファイル)を保存することができる。保存サーバ100は、例えば、「FTOPIA」、「Evernote(登録商標)」、「Google(登録商標) Docs」、「PICASA(登録商標)」、「FACEBOOK(登録商標)」等の公知のサーバであってもよい。
図示省略しているが、インターネット上には、上記の特定のサービス提供会社によって設置される保存サーバ100のみならず、他の様々なサービス提供会社によって提供される様々な保存サーバが存在する。即ち、複数個のサービス提供会社によって運営される複数個の保存サーバがインターネット上に存在する。
スキャナ10のベンダは、仲介サーバ50と通信を実行するためのAPI(Application Program Interface)を公開している。そして、複数個のサービス提供会社のそれぞれは、上記のAPIを含むプログラムに従って各保存サーバ100等を動作させる。これにより、保存サーバ100等は、仲介サーバ50と様々な通信(例えば後述の図6のスキャンデータ300の通信等)を実行することができる。
(携帯端末150の構成)
携帯端末150は、例えば、携帯電話(例えばスマートフォン)、PDA(Personal Digital Assistanceの略)、ノートPC、タブレットPC、携帯型音楽再生装置、携帯型動画再生装置等の可搬型の端末装置である。携帯端末150は、NFCI/F156と、CPU162と、メモリ164と、を備える。また、携帯端末150は、図示省略の様々なハードウェア(例えば、操作部、表示部等)を備える。
NFCI/F156は、NFC通信を実行するためのI/Fである。CPU162は、メモリ164に格納されているプログラムに従って、様々な処理を実行する。メモリ164は、さらに、スキャナ10から保存サーバ100等へのスキャンデータのアップロードに関連する様々な処理をスキャナ10に実行させるためのアプリケーション(以下では「スキャナ用アプリケーション」と呼ぶ)を記憶している。例えば、携帯端末150は、スキャナ10のベンダによってインターネット上に設置されるサーバ(即ち仲介サーバ50は異なるサーバ)から、スキャナ用アプリケーションをダウンロードする。CPU162によって実行される以下の各処理は、スキャナ用アプリケーションに従って実行される。
(事前準備;図2)
図2を参照しながら、各デバイス10,50,100,150が実行する各処理の内容を説明する。まず、携帯端末150のユーザは、以下の事前準備を実行する。携帯端末150では、ユーザによってスキャナ用アプリケーションが起動される。次いで、仲介サーバ50にアクセスするための操作が実行される。スキャナ用アプリケーションには、仲介サーバ50のURL(Uniform Resource Locatorの略)が予め記述されている。携帯端末150のCPU162は、仲介サーバ50のURLを利用して仲介サーバ50にアクセスして、仲介サーバ50からアカウント登録画面を表わす画面情報を受信する。これにより、CPU162は、アカウント登録画面を表示部(図示省略)に表示させる。ユーザは、アカウント登録画面を見ながら、携帯端末150を操作して、ユーザID、パスワード等の各種情報を携帯端末150に入力する。CPU162は、ユーザによって上記の各種情報が入力されると、上記の各種情報を含むアカウント要求200を仲介サーバ50に送信する。
仲介サーバ50のCPU72は、携帯端末150からアカウント要求200を受信すると、アカウント要求200に含まれる上記の各種情報を含むアカウント情報AC1を、メモリ74に登録する(即ちメモリ74に記憶させる)。そして、CPU72は、登録済みのアカウント情報AC1を携帯端末150に送信する。
携帯端末150のCPU162は、仲介サーバ50からアカウント情報AC1を受信すると、アカウント情報AC1を記憶する。これにより、仲介サーバ50にログインするためのアカウント情報AC1が、携帯端末150に記憶される。
また、スキャナ用アプリケーションには、複数個の保存サーバのそれぞれのサーバ名及びURLが予め記述されている。本実施例では、ユーザは、複数個の保存サーバの中から保存サーバ100を選択して、保存サーバ100にアクセスするための操作を実行する。この場合、携帯端末150のCPU162は、仲介サーバ50の場合と同様に、保存サーバ100のURLを利用して、保存サーバ100からアカウント登録画面を表わす画面情報を受信する。ユーザは、ユーザID、パスワード等の各種情報を携帯端末150に入力する。この場合、携帯端末150のCPU162は、ユーザによって入力された上記の各種情報を含むアカウント要求204を保存サーバ100に送信する。
保存サーバ100は、携帯端末150からアカウント要求204を受信すると、アカウント要求204に含まれる上記の各種情報を含むアカウント情報AC2を登録する。そして、保存サーバ100は、登録済みのアカウント情報AC2を携帯端末150に送信する。
携帯端末150のCPU162は、保存サーバ100からアカウント情報AC2を受信すると、アカウント情報AC2を記憶する。これにより、保存サーバ100にログインするためのアカウント情報AC2が、携帯端末150に記憶される。
なお、携帯端末150は、ユーザの指示に従って、保存サーバ100とは異なる保存サーバにログインするためのアカウント情報も記憶することができる。即ち、携帯端末150には、1個以上の保存サーバにログインするための1個以上のアカウント情報が記憶される。
(スキャンデータのアップロードのための処理)
ユーザは、上記の事前準備を実行して、2個のアカウント情報AC1,AC2を携帯端末150に記憶させた後に、保存サーバ100へのスキャンデータのアップロードを仲介サーバ50に実行させることができる。ユーザは、スキャンデータのアップロードの実行を望む場合に、携帯端末150に記憶されているスキャナ用アプリケーションを起動させる。これにより、待機画面SC1(図8参照)が携帯端末150に表示される。
図8に示されるように、待機画面SC1は、サーバ名を選択するための領域を含む。本実施例では、ユーザは、携帯端末150にアカウント情報が記憶されている1個以上の保存サーバのサーバ名の中から、スキャンデータを保存するための1個の保存サーバのサーバ名(本実施例では保存サーバ100のサーバ名「xxx」)を選択する。
待機画面SC1は、さらに、スキャン条件(即ち、スキャン対象の原稿のサイズ、スキャンタイプ、ファイルタイプ)を選択するための領域を含む。ユーザは、A3、A4、B4等の複数個の原稿のサイズの中から、1個のサイズを選択する。また、ユーザは、カラースキャン、モノクロスキャン等の複数個のスキャンタイプの中から、1個のスキャンタイプを選択する。また、ユーザは、PDF、JPEG等の複数個のファイル形式の中から、1個のファイル形式(即ち、スキャンデータのファイル形式)を選択する。
次いで、ユーザは、スキャナ10と携帯端末150との間でNFC接続を確立させるために、携帯端末150をスキャナ10に近づける。この結果、スキャナ10のNFCI/F16と携帯端末150のNFCI/F156との間の距離が、各I/F16,156が通信可能な最大の距離(即ちNFC通信を実行可能な距離;例えば10cm)よりも大きい状態から、当該最大の距離以下である状態に移行する。この場合、図2に示されるように、スキャナ10のNFCI/F16と携帯端末150のNFCI/F156との間にNFC接続が確立される。
携帯端末150のCPU162は、上記のNFC接続を利用して(即ちNFCI/F156を介して)、NFC情報208をスキャナ10に送信する。NFC情報208は、仲介サーバ50にログインするためのアカウント情報AC1と、ユーザによって選択された保存サーバ100にログインするためのアカウント情報AC2と、ユーザによって選択されたスキャン条件を示す条件情報と、ユーザによって選択されたサーバ名と、を含む。
スキャナ10のCPU32は、上記のNFC接続を利用して(即ちNFCI/F16を介して)、携帯端末150からNFC情報208を受信する。この場合、CPU32は、ネットワークI/F22を介して、NFC情報208内のアカウント情報AC1を含むログイン要求210を、仲介サーバ50のURLを利用して仲介サーバ50に送信する。なお、仲介サーバ50のURLは、スキャナ10のメモリ34に予め記憶されていてもよいし、携帯端末150から受信されるNFC情報208内に記述されていてもよい。
仲介サーバ50のCPU72は、ネットワークI/F60を介して、スキャナ10からログイン要求210を受信する。なお、仲介サーバ50において実行される通信では、ネットワークI/F60が常に利用されるので、以下の説明では、「ネットワークI/F60を介して」という用語を省略する。CPU72は、ログイン要求210に含まれるアカウント情報AC1がメモリ74に登録されているのか否かを判断する。CPU72は、アカウント情報AC1がメモリ74に登録されていないと判断する場合には、図示省略しているが、ログイン失敗通知をスキャナ10に送信する。
一方において、CPU72は、アカウント情報AC1がメモリ74に登録されていると判断する場合には、ユニークな文字列であるトークン(即ち認証情報)214を生成する。そして、CPU72は、アカウント情報AC1に関連付けて、トークン214をメモリ74に記憶させる。次いで、CPU72は、トークン214を含むログイン成功通知212をスキャナ10に送信する。
スキャナ10のCPU32は、ネットワークI/F22を介して、仲介サーバ50からログイン成功通知212を受信する。この場合、CPU32は、ログイン成功通知212に含まれるトークン214をメモリ34に記憶させる。次いで、CPU32は、ネットワークI/F22を介して、トークン214を含む接続要求を仲介サーバ50に送信する。上記の接続要求は、スキャナ10と仲介サーバ50との間にXMPP(Extensible Messaging and Presence Protocolの略)接続を確立するための要求である。
仲介サーバ50のCPU72は、スキャナ10から接続要求を受信すると、接続要求に含まれるトークン214がメモリ74に記憶されているのか否かを判断する。CPU72は、トークン214がメモリ74に記憶されていると判断する場合には、所定の応答をスキャナ10に送信する。これにより、スキャナ10と仲介サーバ50との間にXMPP接続が確立される。この結果、仲介サーバ50は、XMPP接続を利用することができるので、図示省略のルータ等によって通信が妨げられることなく、後述のスキャン指示220をスキャナ10に適切に送信することができる(即ち、インターネット側からLAN側への通信を実行することができる)。
仲介サーバ50のCPU72は、XMPP接続が確立される場合に、XMPP接続を識別するための接続IDを生成し、アカウント情報AC1に関連付けて、接続IDをメモリ74に記憶させる。この結果、メモリ74では、トークン214、接続ID、及び、アカウント情報AC1が関連付けられている状態になる。
次いで、スキャナ10のCPU32は、トークン214を利用して、スキャンデータのアップロードに関連する処理を識別するための処理ID216を生成する。本実施例では、処理ID(例えばYYY20130315)は、トークン214によって示される文字列(例えばYYY)と、現在の日時を示す情報(例えば20130315)と、を組み合わせることによって生成される。詳しくは後述するが、処理ID216は、携帯端末150のユーザがスキャンデータのアップロードに関連する処理のステータスを確認するために、携帯端末150及び保存サーバ100で利用される。
スキャナ10のCPU32は、上記のNFC接続を利用して(即ちNFCI/F16を介して)、処理ID216を含むスキャン受付通知218を携帯端末150に送信する。
携帯端末150のCPU162は、上記のNFC接続を利用して(即ちNFCI/F156を介して)、スキャナ10からスキャン受付通知218を受信する。この場合、受付画面SC2(図8参照)が携帯端末150で表示される。受付画面SC2は、スキャンの要求を受け付けたことを示すメッセージと、スキャン受付通知218に含まれる処理ID216と、を含む。
ユーザは、受付画面SC2を見れば、携帯端末150をスキャナ10から離反させてもよいことを知ることができる。携帯端末150がスキャナ10から離反すると、スキャナ10のNFCI/F16と携帯端末150のNFCI/F156との間の距離が、各I/F16,156が通信可能な最大の距離以下である状態から、当該距離よりも大きい状態に戻る。この場合、上記のNFC接続が切断される。以下では、上記のNFC接続が確立されてから、上記のNFC接続が切断されるまでに、スキャナ10と携帯端末150との間で実行されるNFC通信(即ち、NFC情報208の通信、及び、スキャン受付通知218の通信)のことを、「1回のNFC通信」と呼ぶ。
上述したように、本実施例では、ユーザが携帯端末150をスキャナ10に近づけるための1回の操作を実行すれば、1回のNFC通信を利用して、携帯端末150からスキャナ10へのNFC情報208の送信と、スキャナ10から携帯端末150へのスキャン受付通知218の送信と、が実行される。即ち、1回のNFC通信を利用して、アカウント情報AC1、アカウント情報AC2、及び、処理ID216の3個の情報の全ての通信が実行される。上記の3個の情報の通信のために、ユーザが携帯端末150をスキャナ10に近づけるための操作を複数回に亘って実行しなければならない構成と比べると、ユーザの利便性が向上する。
上述したように、スキャナ10は、携帯端末150から、保存サーバ100にログインするためのアカウント情報AC2、及び、保存サーバ100のサーバ名を受信済みである(NFC情報208参照)。スキャナ10のCPU32は、上記のXMPP接続を利用して(即ちネットワークI/F22を介して)、処理ID216、アカウント情報AC2、及び、サーバ名が関連付けられた状態で、これらの情報を仲介サーバ50に送信する。即ち、CPU32は、これらの情報を同時的に仲介サーバ50に送信する。
仲介サーバ50のCPU72は、上記のXMPP接続を利用して、スキャナ10からアカウント情報AC2、処理ID216、及び、保存サーバ100のサーバ名を同時的に受信する。
上述したように、処理ID216は、トークン214を用いて生成される。また、仲介サーバ50のメモリ74では、アカウント情報AC1及びトークン214が関連付けられている。従って、CPU72は、アカウント情報AC2と、処理ID216に含まれるトークン214と、を同時的に受信する場合に、メモリ74を参照して、トークン214に関連付けられているアカウント情報AC1を特定することができる。即ち、CPU72は、トークン214を介して、アカウント情報AC1及びアカウント情報AC2を関連付けることができる。そして、CPU72は、アカウント情報AC2及び処理ID216をメモリ74に記憶させる。この結果、メモリ74では、トークン214、接続ID、アカウント情報AC1、アカウント情報AC2、及び、処理ID216が関連付けられている状態になる。
なお、変形例では、仲介サーバ50のCPU72は、以下のようにして、2個のアカウント情報AC1,AC2を関連付けてもよい。上述したように、CPU72は、XMPP接続を利用して、スキャナ10からアカウント情報AC2及び処理ID216を受信する。そして、メモリ74では、XMPP接続を識別するための接続ID及びアカウント情報AC1が関連付けられている。従って、CPU72は、XMPP接続を利用してアカウント情報AC2及び処理ID216を受信する場合に、メモリ74を参照して、当該XMPP接続の接続IDに関連付けられているアカウント情報AC1を特定することができ、この結果、2個のアカウント情報AC1,AC2を関連付けることができる。即ち、CPU72は、XMPP接続の接続IDを介して、2個のアカウント情報AC1,AC2を関連付けることができる。なお、XMPP接続は、トークン214を利用して確立される接続である。従って、本変形例でも、トークン214を介して、2個のアカウント情報AC1,AC2が関連付けられていると言える。
次いで、仲介サーバ50のCPU72は、処理ID216に関連付けて、ステータス情報をメモリ74に記憶させる。この結果、メモリ74では、トークン214、接続ID、アカウント情報AC1、アカウント情報AC2、処理ID216、及び、ステータス情報が関連付けられている状態になる。現時点では、ステータス情報は、「スキャン準備」を示す。詳しくは後述するが、仲介サーバ50は、ステータス情報を携帯端末150に供給することができる(後述の図6のステータス要求308、ステータス通知310等参照)。即ち、ユーザは、携帯端末150を利用して、ステータス情報にアクセスすれば、スキャンデータのアップロードに関連する処理の現在のステータスを知ることができる。
次いで、CPU72は、上記のXMPP接続を利用して、スキャン指示220をスキャナ10に送信する。CPU72は、XMPP接続を利用するので、LAN側に存在するスキャナ10にスキャン指示220を適切に送信することができる。CPU72は、スキャン指示220をスキャナ10に送信すると、アップロード準備処理(図4参照)を開始する。
なお、変形例では、CPU72は、XMPP接続を利用せずに、スキャン指示220をスキャナ10に送信してもよい。例えば、CPU72は、スキャナ10から処理ID216及びアカウント情報AC2を受信すると、それらの情報の戻り値として、スキャン指示220をスキャナ10に送信してもよい。本変形例の構成でも、CPU72は、ルータ等によって通信が妨げられることなく、LAN側に存在するスキャナ10にスキャン指示220を適切に送信することができる。
スキャナ10のCPU32は、上記のXMPP接続を利用して(即ちネットワークI/F22を介して)、仲介サーバ50からスキャン指示220を受信する。この場合、S2において、CPU32は、スキャンデータ送信処理(図3参照)を開始する。
(スキャンデータ送信処理;図3)
図3を参照して、スキャナ10のCPU32によって実行されるスキャンデータ送信処理(図2のS2)の内容を説明する。
上述したように、スキャナ10のCPU32は、携帯端末150からスキャン条件を示す条件情報を既に受信している(図2のNFC情報208参照)。S10では、CPU32は、受信済みの条件情報によって示される原稿のサイズ(例えばA4)及びスキャンタイプ(例えばカラー)に従った原稿のスキャンが実行されるように、スキャン実行部20に命令を送信する。これにより、スキャン実行部20は、原稿のスキャンを実行して、画像データを生成する。
S12では、CPU32は、スキャン対象の原稿の全てのページに対するスキャンが終了したのか否かを判断する。CPU32は、スキャン実行部20から全てのページのスキャンが終了したことを示す信号を受信する場合には、S12でYESと判断して、スキャン実行部20から取得される画像データを利用して、受信済みの条件情報によって示されるファイル形式(例えばPDF)を有するファイルを生成する。以下では、ここで生成されるファイルのことを「スキャンデータ」と呼ぶ。そして、CPU32は、S14に進む。一方において、CPU32は、スキャン実行部20から上記の信号を受信しない場合には、S12でNOと判断して、S30に進む。
S14では、CPU32は、ネットワークI/F22を介して、トークン214及びスキャンデータを仲介サーバ50に同時的に送信する。これにより、CPU32は、トークン214及びスキャンデータが関連付けられた状態で、トークン214及びスキャンデータを仲介サーバ50に送信することができる。
なお、S14では、CPU32は、スキャナ10及び仲介サーバ50の間に確立されているXMPP接続を利用せずに、トークン214及びスキャンデータを仲介サーバ50に送信する。詳しくは後述するが、仲介サーバ50は、スキャンデータと共にトークン214を受信するので、トークン214に関連付けられているアカウント情報AC1に従ったログイン状態を有するスキャナ10から、スキャンデータを受信したことを知ることができる(後述の図4のS50でYES)。
ただし、変形例では、S14において、CPU32は、XMPP接続を利用して、スキャンデータを仲介サーバ50に送信してもよい。この場合、CPU32は、トークン214を仲介サーバ50に送信しなくてもよい。仲介サーバ50は、XMPP接続の接続IDに関連付けられているアカウント情報AC1を特定することができ、この結果、アカウント情報AC1に従ったログイン状態を有するスキャナ10から、スキャンデータを受信したことを知ることができる。
次いで、S18では、CPU32は、ネットワークI/F22を介して、XMPP接続を切断するための信号を仲介サーバ50に送信する。これにより、スキャナ10と仲介サーバ50との間のXMPP接続が切断される。この結果、スキャナ10がアカウント情報AC1に従って仲介サーバ50にログインしている状態が終了する。
続いて、S20では、CPU32は、トークン214をメモリ34から消去する。S20が終了すると、スキャンデータ送信処理が終了する。
一方において、S30では、CPU32は、図示省略の自動原稿搬送装置(以下では「ADF(Automatic Document Feederの略)」と呼ぶ)によってスキャン対象の原稿が搬送される場合に、ADF内で原稿の詰まりが発生したのか否かを判断する。CPU32は、ADFから原稿の詰まりの発生を示す信号を受信する場合には、S30でYESと判断して、S32に進む。一方において、CPU32は、ADFから上記の信号を受信しない場合には、S30でNOと判断して、S12に戻る。
S32では、CPU32は、ネットワークI/F22を介して、トークン214及び原稿の詰まりを示すエラー通知を、仲介サーバ50に送信する。これにより、仲介サーバ50は、エラー通知と共にトークン214を受信するので、トークン214に関連付けられているアカウント情報AC1に従ったログイン状態を有するスキャナ10において、原稿の詰まりが発生したことを知ることができる(後述の図4のS70でYES)。
次いで、S34では、CPU32は、原稿の詰まりが解消されない状態で、上記のエラー通知を仲介サーバ50に送信してから一定時間が経過したのか否かを判断する。CPU32は、上記の一定時間が経過した場合には、S34でYESと判断して、S18に進む。この場合、スキャナ10及び仲介サーバ50の間のXMPP接続が切断され(S18)、トークン214がメモリ34から消去される(S20)。そして、スキャナ10から仲介サーバ50へのスキャンデータの送信が実行されず、この結果、保存サーバ100へのスキャンデータのアップロードが実行されない。一方において、CPU32は、上記の一定時間が経過しない場合には、S34でNOと判断して、S36に進む。
S36では、CPU32は、原稿の詰まりが解消されたのか否かを判断する。ユーザによって原稿の詰まりを解消するための処置が実行された場合には、CPU32は、ADFから原稿の詰まりが解消したことを示す信号を受信する。この場合、CPU32は、S36でYESと判断して、S12に戻る。これにより、CPU32は、スキャンデータを仲介サーバ50に送信することができる(S12でYES、S14)。一方において、CPU32は、ADFから上記の信号を受信しない場合には、S36でNOと判断して、S34に戻る。
(アップロード準備処理;図4)
図4を参照して、仲介サーバ50のCPU72によって実行されるアップロード準備処理(図2のS4)の内容を説明する。アップロード準備処理が開始される段階では、仲介サーバ50のメモリ74では、ログイン状態であるアカウント情報AC1等に関連付けて、「スキャン準備」を示すステータス情報が記憶されている。
S50では、仲介サーバ50のCPU72は、トークン214に関連付けられているアカウント情報AC1に従ったログイン状態を有するスキャナ10から、スキャンデータを受信したのか否かを判断する。CPU72は、トークン214及びスキャンデータを同時的に受信する場合(図3のS14参照)には、スキャナ10からスキャンデータを受信したと判断して(S50でYES)、S52に進む。なお、CPU72は、スキャナ10からスキャンデータを受信する場合には、アカウント情報AC1、アカウント情報AC2等に関連付けて、スキャンデータをメモリ74に記憶させる。一方において、CPU72は、スキャナ10からスキャンデータを受信しない場合には、S50でNOと判断して、S70に進む。
S52では、CPU72は、アカウント情報AC1に関連付けられているメモリ74内のステータス情報(即ち、処理ID216に関連付けられているステータス情報)を、「スキャン準備」から、「アップロード準備」に変更する。なお、仮に、この状態で、ユーザが携帯端末150を利用して仲介サーバ50にアクセスすれば、ユーザは、現在のステータスがアップロードの準備中であることを知ることができる。
次いで、S58では、CPU72は、スキャナ10から、XMPP接続を切断するための信号(図3のS18参照)を受信する。これにより、スキャナ10と仲介サーバ50との間のXMPP接続が切断される。
次いで、S60では、CPU72は、トークン214及び接続IDをメモリ74から消去する。この結果、メモリ74では、アカウント情報AC1、アカウント情報AC2、サーバ名、処理ID216、ステータス情報(即ち「アップロード準備」)、及び、スキャンデータが関連付けられている状態になる。CPU72は、S60を終了すると、後述のアップロード処理(図5参照)を開始して(S62)、アップロード準備処理を終了する。
一方において、S70では、CPU72は、トークン214に関連付けられているアカウント情報AC1に従ったログイン状態を有するスキャナ10から、エラー通知を受信したのか否かを判断する。CPU72は、トークン214及びエラー通知を同時的に受信する場合(図3のS32参照)には、スキャナ10からエラー通知を受信したと判断して(S70でYES)、S72に進む。一方において、CPU72は、スキャナ10からエラー通知を受信しない場合には、S70でNOと判断して、S50に戻る。
S72では、CPU72は、アカウント情報AC1に関連付けられているメモリ74内のステータス情報(即ち、処理ID216に関連付けられているステータス情報)を、「スキャン準備」から、「原稿の詰まり」に変更する。なお、仮に、この状態で、ユーザが携帯端末150を利用して仲介サーバ50にアクセスすれば、ユーザは、スキャナ10において原稿の詰まりが発生していることを知ることができ、原稿の詰まりを解消するための処置を実行することができる。
次いで、S74では、CPU72は、スキャナ10からスキャンデータを受信したのか否かを判断する。S74の処理は、S50の処理と同様である。スキャナ10において原稿の詰まりが解消された場合(図3のS36でYES、S12でYES、S14参照)には、CPU72は、スキャナ10からスキャンデータを受信して、S74でYESと判断して、S52に進む。一方において、CPU72は、スキャナ10からスキャンデータを受信しない場合には、S74でNOと判断して、S76に進む。
S76では、CPU72は、スキャナ10及び仲介サーバ50の間のXMPP接続が切断されたのか否かを判断する。スキャナ10において原稿の詰まりが解消されない状態で一定時間が経過する場合(図3のS34でYES、S18参照)には、CPU72は、スキャナ10からXMPP接続を切断するための信号を受信する。この場合、CPU72は、S76でYESと判断して、S78に進む。一方において、CPU72は、スキャナ10から上記の信号を受信しない場合には、S76でNOと判断して、S74に戻る。
S78では、CPU72は、トークン214、接続ID、アカウント情報AC2、処理ID216、及び、ステータス情報をメモリ74から消去する。この結果、メモリ74では、いずれの情報もアカウント情報AC1に関連付けられていない状態になる。CPU72は、S78を終了すると、後述のアップロード処理(図5参照)を開始せずに(即ちS62を実行せずに)、アップロード準備処理を終了する。
(アップロード処理;図5)
図5を参照して、図4のS62で開始されるアップロード処理の内容を説明する。アップロード処理が開始される段階では、仲介サーバ50のメモリ74では、アカウント情報AC2等に関連付けて、「アップロード準備」を示すステータス情報が記憶されている(図4のS52参照)。
S90では、CPU72は、スキャナ10から、処理ID216及びアカウント情報AC2と共に受信したサーバ名(図2参照)に従って、インターネット上に存在する複数個の保存サーバの中から、保存サーバ100を選択する。そして、CPU72は、アカウント情報AC2を含むログイン要求を、選択済みの保存サーバ100に送信する。なお、メモリ74は、保存サーバ100のURLを予め記憶している。CPU72は、保存サーバ100のURLを利用して、ログイン要求を保存サーバ100に送信する。
保存サーバ100は、仲介サーバ50からログイン要求を受信すると、ログイン要求に含まれるアカウント情報AC2が、保存サーバ100に登録されているのか否かを判断する。保存サーバ100は、アカウント情報AC2が登録されていると判断する場合には、ログイン成功通知を仲介サーバ50に送信し、アカウント情報AC2が登録されていないと判断する場合には、ログイン失敗通知を仲介サーバ50に送信する。例えば、アカウント情報AC2の有効期限が切れている場合には、アカウント情報AC2が保存サーバ100から消去され得るので、アカウント情報AC2が登録されていないと判断され得る。
S92では、CPU72は、保存サーバ100からログイン成功通知を受信したのか否かを判断する。CPU72は、保存サーバ100からログイン成功通知を受信する場合には、S92でYESと判断して、S94に進む。この場合、仲介サーバ50がアカウント情報AC2に従って保存サーバ100にログインしている状態になる。一方において、CPU72は、保存サーバ100からログイン失敗通知を受信する場合には、S92でNOと判断して、S96に進む。
S96では、CPU72は、アカウント情報AC2に関連付けられているメモリ74内のステータス情報(即ち、処理ID216に関連付けられているステータス情報)を、「アップロード準備」から、「ログイン失敗」に変更する。なお、仮に、この状態で、ユーザが携帯端末150を利用して仲介サーバ50にアクセスすれば、ユーザは、保存サーバ100へのログインが失敗した結果として、スキャンデータのアップロードが実行されないことを知ることができる。S96が終了すると、アップロード処理を終了する。なお、S96が実行されてから所定時間経過後に、アカウント情報AC2、処理ID216、ステータス情報、及び、スキャンデータが、メモリ74から消去される。
一方において、S94では、CPU72は、アカウント情報AC2に関連付けられているメモリ74内のステータス情報(即ち、処理ID216に関連付けられているステータス情報)を、「アップロード準備」から、「アップロード中」に変更する。なお、仮に、この状態で、ユーザが携帯端末150を利用して仲介サーバ50にアクセスすれば、ユーザは、現在のステータスが保存サーバ100へのスキャンデータのアップロード中であることを知ることができる。
次いで、S98では、CPU72は、アカウント情報AC2に関連付けられているメモリ74内のスキャンデータを、保存サーバ100に送信する。特に、CPU72は、アカウント情報AC2に従ったログイン状態を利用して、スキャンデータを保存サーバ100に送信する。なお、上記の「アカウント情報AC2に従ったログイン状態を利用して」の態様としては、例えば、以下の第1及び第2の手法のどちらかを採用することができる。
第1の手法では、アカウント情報AC2に従ったログインが成功する場合に、特定のトークンが保存サーバ100で生成され、当該特定のトークンが仲介サーバ50に送信される。そして、保存サーバ100では、特定のトークン及びアカウント情報AC2が関連付けられる。この場合、仲介サーバ50のCPU72は、特定のトークン及びスキャンデータを保存サーバ100に同時的に送信する。これにより、保存サーバ100は、特定のトークンを介して、アカウント情報AC2及びスキャンデータを関連付けることができる。
第2の手法では、アカウント情報AC2に従ったログインが成功する場合に、仲介サーバ50及び保存サーバ100の間に接続(例えばXMPP接続)が確立される。そして、保存サーバ100では、上記の接続を識別するための接続ID及びアカウント情報AC2が関連付けられる。この場合、仲介サーバ50のCPU72は、上記の接続を利用して、スキャンデータを保存サーバ100に送信する。これにより、保存サーバ100は、上記の接続IDを介して、アカウント情報AC2及びスキャンデータを関連付けることができる。
上述したように、保存サーバ100は、仲介サーバ50からスキャンデータを受信すると、アカウント情報AC2及びスキャンデータを関連付けることができる。このために、保存サーバ100は、アカウント情報AC2に対応する場所にスキャンデータを保存することができる。即ち、アカウント情報AC2に対応する場所にスキャンデータがアップロードされる。このように、スキャンデータのアップロードが成功すると、保存サーバ100は、アップロード成功通知を仲介サーバ50に送信する。
一方において、例えば、保存サーバ100において、アカウント情報AC2に対応する場所に保存可能な最大のデータサイズが予め決められている状況を想定する。この場合、保存サーバ100は、アカウント情報AC2に対応する場所に既に保存されているデータのデータサイズと、仲介サーバ50から受信されたスキャンデータのデータサイズと、の和が、上記の最大のデータサイズを超える場合には、アカウント情報AC2に対応する場所に、スキャンデータを新たに保存することができない。この場合には、保存サーバ100は、アップロード失敗通知を仲介サーバ50に送信する。
S100では、CPU72は、保存サーバ100からアップロード成功通知を受信したのか否かを判断する。CPU72は、保存サーバ100からアップロード成功通知を受信する場合には、S100でYESと判断して、S102に進む。一方において、CPU72は、保存サーバ100からアップロード失敗通知を受信する場合には、S100でNOと判断して、S104に進む。
S102では、CPU72は、アカウント情報AC2に関連付けられているメモリ74内のステータス情報(即ち、処理ID216に関連付けられているステータス情報)を、「アップロード中」から、「アップロード成功」に変更する。なお、この状態で、仮に、ユーザが携帯端末150を利用して仲介サーバ50にアクセスすれば、ユーザは、保存サーバ100へのスキャンデータのアップロードが成功したことを知ることができる。S102が終了すると、アップロード処理が終了する。
一方において、S104では、CPU72は、アカウント情報AC2に関連付けられているメモリ74内のステータス情報(即ち、処理ID216に関連付けられているステータス情報)を、「アップロード中」から、「アップロード失敗」に変更する。なお、この状態で、仮に、ユーザが携帯端末150を利用して仲介サーバ50にアクセスすれば、ユーザは、保存サーバ100へのスキャンデータのアップロードが失敗したことを知ることができる。S104が終了すると、アップロード処理が終了する。
なお、S102又はS104が実行される場合には、所定時間経過後に、アカウント情報AC2、処理ID216、ステータス情報、及び、スキャンデータが、メモリ74から消去される。
(アップロードが成功するケース;図6)
図6を参照して、保存サーバ100へのスキャンデータのアップロードが成功するケースを説明する。本ケースは、図2の続きのシーケンスであり、図3〜図5の各処理によって実現される。
スキャナ10は、仲介サーバ50からスキャン指示220(図2参照)を受信する場合に、原稿のスキャンを実行して、スキャンデータ300を生成する(図3のS10、S12でYES)。そして、スキャナ10は、トークン214及びスキャンデータ300を仲介サーバ50に送信する(S14)。
仲介サーバ50は、スキャナ10からスキャンデータ300を受信すると(図4のS50でYES)、ステータス情報を「スキャン準備」から「アップロード準備」に変更する(S52)。
次いで、スキャナ10及び仲介サーバ50の間のXMPP接続が切断され、スキャナ10がアカウント情報AC1に従って仲介サーバ50にログインしている状態が終了する(図3のS18、図4のS58)。そして、スキャナ10においてトークン214が消去され(図3のS20)、仲介サーバ50においてトークン214が消去される(図4のS60)。
ユーザは、携帯端末150を操作して、ステータスの確認のための指示を携帯端末150に入力する。この場合、携帯端末150のCPU162は、アカウント情報AC1を含むログイン要求304を仲介サーバ50に送信して、仲介サーバ50からログイン成功通知306を受信する。即ち、携帯端末150がアカウント情報AC1に従って仲介サーバ50にログインしている状態になる。
上述したように、携帯端末150のCPU162は、スキャナ10から処理ID216を受信済みである(図2のスキャン受付通知218参照)。CPU162は、仲介サーバ50にログインすると、処理ID216を含むステータス要求308を仲介サーバ50に送信する。
仲介サーバ50(即ちCPU72)は、携帯端末150からステータス要求308を受信すると、メモリ74から、ステータス要求308に含まれる処理ID216に関連付けられているステータス情報を取得する。そして、仲介サーバ50は、取得済みのステータス情報を含むステータス通知310を携帯端末150に送信する。
携帯端末150のCPU162は、仲介サーバ50からステータス通知310を受信する。この結果、携帯端末150でステータス画面SC3が表示される(図8参照)。ステータス画面SC3は、ステータス通知310に含まれるステータス情報によって示される「アップロード準備」というメッセージを含む。これにより、ユーザは、現在のステータスがスキャンデータのアップロードの準備中であることを知ることができる。
次いで、図6に示されるように、仲介サーバ50は、アカウント情報AC2を含むログイン要求314を保存サーバ100に送信して(図5のS90)、保存サーバ100からログイン成功通知316を受信する(S92でYES)。即ち、仲介サーバ50がアカウント情報AC2に従って保存サーバ100にログインしている状態になる。そして、仲介サーバ50は、ステータス情報を「アップロード準備」から「アップロード中」に変更する(S94)。次いで、仲介サーバ50は、スキャンデータ300を保存サーバ100に送信する(S98)。
保存サーバ100は、仲介サーバ50からスキャンデータを受信すると、アカウント情報AC2に対応する場所にスキャンデータ300を保存する。これにより、スキャンデータ300が保存サーバ100にアップロードされる。保存サーバ100は、スキャンデータ300を保存すると、アップロード成功通知318を仲介サーバ50に送信する。
仲介サーバ50は、保存サーバ100からアップロード成功通知318を受信すると(S100でYES)、ステータス情報を「アップロード中」から「アップロード成功」に変更する(S102)。
携帯端末150のCPU162は、ステータス要求308の場合と同様に、ユーザの指示に従って、処理ID216を含むステータス要求320を仲介サーバ50に送信して、仲介サーバ50からステータス通知322を受信する。この結果、携帯端末150でステータス画面SC4が表示される(図8参照)。ステータス画面SC4は、ステータス通知322に含まれるステータス情報によって示される「アップロード成功」というメッセージを含む。これにより、ユーザは、保存サーバ100へのスキャンデータのアップロードが成功したことを知ることができる。
(原稿の詰まりが発生するケース;図7)
図7を参照して、原稿の詰まりが発生するケースを説明する。本ケースも、図2の続きのシーケンスであり、図3〜図5の各処理によって実現される。
スキャナ10では、原稿のスキャンが実行される過程で、原稿の詰まりが発生する。この場合、スキャナ10は、トークン214及びエラー通知402を仲介サーバ50に送信する(図3のS32)。
仲介サーバ50は、スキャナ10からエラー通知402を受信すると、ステータス情報を「スキャン準備」から「原稿の詰まり」に変更する(S72)。
携帯端末150及び仲介サーバ50の間で実行される各情報404,406,408,410の通信は、図6の各情報304,306,308,310の通信と同様である。ただし、本ケースでは、ステータス通知410は、「原稿の詰まり」を示すステータス情報を含む。
携帯端末150は、仲介サーバ50からステータス通知410を受信する。この結果、携帯端末150でステータス画面SC5が表示される(図8参照)。ステータス画面SC5は、ステータス通知410に含まれるステータス情報によって示される「原稿の詰まり」を示すメッセージを含む。これにより、ユーザは、スキャナ10で原稿の詰まりが発生していることを知ることができ、原稿の詰まりを解消するための処置を実行することができる。
スキャナ10は、原稿の詰まりが解消すると(図3のS36でYES)、原稿のスキャンを実行して、トークン214及びスキャンデータ300を仲介サーバ50に送信する(S14)。この後の各処理は、図6のケースと同様である。
(実施例の効果)
本実施例によると、図2に示されるように、スキャナ10は、ユーザが携帯端末150をスキャナ10に近づけるための1回の操作を実行すれば(即ちいわゆるワンタッチの操作を実行すれば)、1回のNFC通信を利用して、携帯端末150から2個のアカウント情報AC1,AC2の双方を受信することができる。従って、2個のアカウント情報AC1,AC2の通信のために、ユーザが携帯端末150をスキャナ10に近づけるための操作を2回に亘って実行しなければならない構成と比べて、ユーザの利便性が向上する。
スキャナ10は、携帯端末150からアカウント情報AC1を受信するので、アカウント情報AC1を利用して仲介サーバ50にログインすることができる。その後、スキャナ10は、仲介サーバ50からスキャン指示220を受信する。この場合、図6に示されるように、スキャナ10は、スキャンデータ300を生成し、トークン214及びスキャンデータ300を仲介サーバ50に送信する。
また、図2に示されるように、スキャナ10は、携帯端末150からアカウント情報AC2を受信するので、アカウント情報AC2を仲介サーバ50に送信することができる。ここで、スキャナ10は、アカウント情報AC2及び処理ID216が関連付けられた状態で、アカウント情報AC2及び処理ID216を仲介サーバ50に送信する。この結果、仲介サーバ50は、処理ID216に含まれるトークン214を介して、アカウント情報AC1及びアカウント情報AC2を関連付けることができる。
図6に示されるように、仲介サーバ50は、アカウント情報AC2を利用して、保存サーバ100にログインすることができる。また、仲介サーバ50は、アカウント情報AC1及びアカウント情報AC2を関連付けることができるので、アカウント情報AC1に従ったログイン状態を有するスキャナ10から受信されたスキャンデータ300を、アカウント情報AC2に従ったログイン状態を利用して、保存サーバ100に送信することができる。この結果、保存サーバ100は、アカウント情報AC2に対応する場所にスキャンデータ300を保存(即ちアップロード)することができる。
上述したように、本実施例によると、ユーザは、携帯端末150を利用して、スキャナ10によって生成されるスキャンデータ300を、仲介サーバ50を介して、保存サーバ100に容易に保存(即ちアップロード)させることができる。
また、本実施例では、携帯端末150とは異なる携帯端末が利用される場合でも、携帯端末150の場合と同様に、スキャンデータを保存サーバ100にアップロードさせることができる。即ち、仲介サーバ50は、各ユーザが各携帯端末をスキャナ10に近づける場合に、各ユーザに対応する各アカウント情報に対応する各場所(即ち異なる場所)に、スキャンデータをアップロードすることができる。本実施例によると、各携帯端末の各ユーザは、同じスキャナ10を利用して、各ユーザの各アカウント情報に対応する各場所に、スキャンデータをアップロードさせることができる。
特に、本実施例によると、図6に示されるように、スキャナ10から仲介サーバ50へのスキャンデータ300の送信が終了すると、スキャナ10と仲介サーバ50との間のXMPP接続、即ち、アカウント情報AC1に従ったXMPP接続が、自動的に切断される(図3のS18、図4のS58参照)。仮に、スキャンデータ300の送信が終了しても、当該XMPP接続が維持される構成を採用すると、他の携帯端末のユーザは、スキャンデータのアップロードを実行することを望む場合に、当該XMPP接続を切断させなければならない。例えば、他の携帯端末のユーザは、スキャナ10の電源をOFFしたり、スキャナ10に操作部12に所定の操作を実行したりして、XMPP接続を切断させなければならない。これに対し、本実施例によると、スキャンデータ300の送信が終了すると、XMPP接続が自動的に切断されるので、他の携帯端末のユーザは、当該XMPP接続を切断させるための操作を実行せずに済む。このために、ユーザの利便性が向上する。
(対応関係)
仲介サーバ50、保存サーバ100が、それぞれ、「第1のサーバ」、「第2のサーバ」の一例である。トークン214が、「第1のデータ」の一例である。処理ID216が、「第2のデータ」及び「処理識別情報」の一例である。NFCI/F16、ネットワークI/F22が、それぞれ、「第1のインターフェース」、「第2のインターフェース」の一例である。
スキャナ10によって実行される各処理は、以下の対応関係を有する。図2において、携帯端末150からNFC情報208を受信する処理、ログイン要求210を仲介サーバ50に送信する処理、仲介サーバ50からログイン成功通知212を受信する処理、処理ID216を生成する処理、仲介サーバ50からスキャン指示220を受信する処理、アカウント情報AC2及び処理ID216を仲介サーバ50に送信する処理が、それぞれ、「アカウント情報受信部(第1のアカウント情報受信部)」、「ログイン部」、「データ受信部」、「生成部」、「指示受信部」、「アカウント情報送信部」によって実行される処理の一例である。また、スキャン受付通知218を携帯端末150に送信する処理、及び、処理ID216を仲介サーバ50に送信する処理が、「識別情報送信部」によって実行される処理の一例である。図3のS10の処理、S14の処理が、それぞれ、「スキャン制御部」、「スキャンデータ送信部(第1のスキャンデータ送信部)」によって実行される処理の一例である。
仲介サーバ50によって実行される各処理は、以下の対応関係を有する。図2において、スキャナ10からログイン要求210を受信してログイン成功通知212をスキャナ10に送信する処理、スキャン指示220をスキャナ10に送信する処理、スキャナ10からアカウント情報AC2を受信する処理が、それぞれ、「ログイン制御部」、「指示送信部」、「第2のアカウント情報受信部」によって実行される処理の一例である。図4において、S50でスキャナ10からスキャンデータを受信する処理が、「スキャンデータ受信部」によって実行される処理の一例である。図5において、S90及びS98の処理が、「第2のスキャンデータ送信部」によって実行される処理の一例である。また、図6において、ステータス通知310を携帯端末150に送信する処理が、「状況情報送信部」によって実行される処理の一例である。
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
(変形例1)上記の実施例では、図2に示されるように、スキャナ10は、NFC通信を利用しているが、これに代えて、赤外線通信、Transfer Jet等のNFCとは異なる規格に従った近距離無線通信を利用してもよい。本変形例でも、スキャナ10は、携帯端末150をスキャナ10に近づけるための1回の操作に応じた1回の無線通信を利用して、携帯端末150から2個のアカウント情報AC1,AC2の双方を受信することができる。本変形例では、赤外線、Transfer Jet等の無線通信が、「1回の無線通信」の一例である。
(変形例2)上記の実施例では、図2に示されるように、スキャナ10は、仲介サーバ50からスキャン指示220を受信する前に、アカウント情報AC2を仲介サーバ50に送信する。これに代えて、スキャナ10は、仲介サーバ50からスキャン指示220を受信した後に、アカウント情報AC2を仲介サーバ50に送信してもよい。例えば、スキャナ10は、原稿のスキャンが終了した後(即ち図3のS12でYESの後)であって、スキャンデータ300を仲介サーバ50に送信する前(即ち図3のS14の前)に、アカウント情報AC2を仲介サーバ50に送信してもよい。また、例えば、スキャナ10は、スキャンデータ300を仲介サーバ50に送信した後(即ち図3のS14の後)であって、XMPP接続を切断する前(即ち図3のS18の前)に、アカウント情報AC2を仲介サーバ50に送信してもよい。一般的に言うと、アカウント情報送信部は、第1のサーバからスキャン指示が受信される前に、第2のアカウント情報を第1のサーバに送信してもよいし、第1のサーバからスキャン指示が受信された後に、第2のアカウント情報を第1のサーバに送信してもよい。
(変形例3)上記の実施例では、図2に示されるように、スキャナ10は、処理ID216及びアカウント情報AC2が関連付けられた状態で、処理ID216及びアカウント情報AC2を仲介サーバ50に送信する(即ち、処理ID216及びアカウント情報AC2を同時的に送信する)。この結果、仲介サーバ50は、処理ID216に含まれるトークン214を介して、アカウント情報AC1及びアカウント情報AC2を関連付けることができる。これに代えて、以下の(1)〜(3)のいずれの手法が採用されてもよい。
(1)スキャナ10は、処理ID216を生成せずに、トークン214及びアカウント情報AC2が関連付けられた状態で、トークン214及びアカウント情報AC2を仲介サーバ50に送信してもよい。本変形例でも、仲介サーバ50は、トークン214を介して、2個のアカウント情報AC1,AC2を関連付けることができる。本変形例では、トークン214が「第1のデータ」及び「第2のデータ」の一例であり、「第1のデータ」及び「第2のデータ」が一致する。
(2)仲介サーバ50は、トークン214を生成した後に、さらに、トークン214を利用せずにユニークなIDを生成し、当該ID及びアカウント情報AC1を関連付けて記憶してもよい。そして、仲介サーバ50は、トークン214と上記のIDとを含むログイン成功通知212をスキャナ10に送信してもよい。スキャナ10は、上記のID及びアカウント情報AC2が関連付けられた状態で、上記のID及びアカウント情報AC2を仲介サーバ50に送信してもよい。本変形例では、仲介サーバ50は、上記のIDを介して、2個のアカウント情報AC1,AC2を関連付けることができる。本変形例では、上記のIDが「第1のデータ」及び「第2のデータ」の一例であり、「第1のデータ」及び「第2のデータ」が一致する。
(3)上記の実施例及び上記の変形例(1)、(2)では、スキャナ10は、アカウント情報AC2と共に、2個のアカウント情報AC1,AC2の関連付けのための何らかのデータ(例えば、処理ID216、トークン214、ID)を、仲介サーバ50に送信する。これに代えて、スキャナ10は、アカウント情報AC2と共にデータを送信しなくてもよく、XMPP接続を利用して、アカウント情報AC2を仲介サーバ50に送信してもよい。上記の実施例でも説明したように、仲介サーバ50では、XMPP接続を識別するための接続ID及びアカウント情報AC1が関連付けられている。従って、仲介サーバ50は、アカウント情報AC2の受信に利用されたXMPP接続の接続IDを介して、2個のアカウント情報AC1,AC2を関連付けることができる。本変形例も、「第1のアカウント情報と第2のアカウント情報とが第1のサーバで関連付けられる状態で、第2のアカウント情報を第1のサーバに送信する」という構成の一例である。
(変形例4)上記の実施例では、図6に示されるように、仲介サーバ50は、スキャナ10からスキャンデータ300を受信した後に、アカウント情報AC2を利用して保存サーバ100にログインする。これに代えて、仲介サーバ50は、スキャン指示220(図2)をスキャナ10に送信する前に、アカウント情報AC2を利用して保存サーバ100へのログインを試行してもよい。そして、仲介サーバ50は、ログインが成功する場合に、スキャン指示220をスキャナ10に送信し、ログインが成功しない場合に、スキャン指示220をスキャナ10に送信しなくてもよい。本変形例によると、スキャナ10は、保存サーバ100にログインすることができないことに起因して、アップロードすることができない場合に、スキャンデータを生成せずに済む。
(変形例5)「スキャナ」は、スキャン実行部を備えるあらゆるデバイス(例えば、スキャン機能及び印刷機能を含む多機能を実行可能な多機能機、FAX装置等)を含む。例えば、送信側のFAX装置(即ち「スキャナ」の一例)は、仲介サーバ50を介してFAXデータ(即ち「スキャンデータ」の一例)を保存サーバ100にアップロードさせることによって、FAX送信を実行してもよい。これにより、受信側のFAX装置は、仲介サーバ50からFAXデータを受信することによって、FAX受信を実行することができる。
(変形例6)上記の各実施例では、スキャナ10及び仲介サーバ50のCPU32,72がメモリ34,74内のプログラム(即ちソフトウェア)を実行することによって、図2〜図7の各処理が実現される。これに代えて、各処理のうちの少なくとも1つは、論理回路等のハードウェアによって実現されてもよい。