(57)【要約】【課題】クラウドサーバを利用するアプリケーションプログラムであって、クラウドサーバへの認証時の使い勝手を向上させる技術を提供すること。【解決手段】スキャンアプリ４１は、クラウドＡへの認証指示を受け付けた場合、ＰＣ１をローカルサーバ４３として機能させる。ローカルサーバ４３は、ブラウザ４２に、クラウドＡの認証画面を表示することと、ローカルサーバ４３をリダイレクト先とすることとを指示し、ブラウザ４２をアクティブな状態にし、スキャンアプリ４１を非アクティブな状態にする。ローカルサーバ４３は、リダイレクト要求をブラウザ４２を介して受信した場合に、クラウドＡへの認証結果を示す完了画面であって、スキャンアプリ４１をアクティブな状態にすることを示す特定情報が含まれる完了画面の表示をブラウザ４２に指示し、ブラウザ４２をアクティブな状態にし、スキャンアプリ４１を非アクティブな状態にする。【選択図】図４
2019149132.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置のコンピュータによって実行可能なアプリケーションプログラムであって、
前記コンピュータに、
前記情報処理装置のユーザインタフェースを介して、前記アプリケーションプログラムがアクティブな状態で、クラウドサーバへの認証指示を受け付ける認証指示受付処理を実行させ、
前記コンピュータを、
前記認証指示を前記認証指示受付処理で受け付けた場合に、ローカルホストのウェブサーバであるローカルサーバとして機能させ、
前記コンピュータに、
前記認証指示を前記認証指示受付処理で受け付けた場合に、
前記情報処理装置に組み込まれたブラウザに、前記クラウドサーバによって提供される認証画面を表示することと、前記ローカルサーバをリダイレクト要求のリダイレクト先とすることと、を指示するブラウザ指示処理と、
前記ブラウザをアクティブな状態にし、前記アプリケーションプログラムを非アクティブな状態にする第１ブラウザアクティブ処理と、
を実行させ、
前記ローカルサーバは、前記コンピュータに、
前記ブラウザ指示処理の後、前記リダイレクト要求を前記ブラウザを介して前記ローカルサーバが受信した場合に、
前記クラウドサーバへの認証結果を示す完了画面であって、前記アプリケーションプログラムをアクティブな状態にすることを示す特定情報が含まれる前記完了画面を表示するよう、前記ブラウザに指示する認証結果表示処理と、
前記ブラウザをアクティブな状態にし、前記アプリケーションプログラムを非アクティブな状態にする第２ブラウザアクティブ処理と、
を実行させ、
前記コンピュータに、
前記クラウドサーバへの認証に成功している場合、前記ユーザインタフェースを介して、前記アプリケーションプログラムがアクティブな状態で、前記クラウドサーバを利用する処理の実行指示を受け付ける実行指示受付処理を実行させ、
前記実行指示を前記実行指示受付処理で受け付けた場合に、前記実行指示に対応する前記処理を実行させる、
ことを特徴とするアプリケーションプログラム。
【請求項２】
請求項１に記載するアプリケーションプログラムにおいて、
前記認証結果表示処理では、
前記ブラウザに、前記アプリケーションプログラムの名称を含む前記完了画面のウェブページデータを渡す、
ことを特徴とするアプリケーションプログラム。
【請求項３】
請求項１または請求項２に記載するアプリケーションプログラムにおいて、
前記認証結果表示処理では、
前記ブラウザに、前記アプリケーションプログラムのテーマ色を含む前記完了画面のウェブページデータを渡す、
ことを特徴とするアプリケーションプログラム。
【請求項４】
請求項１から請求項３のいずれか１つに記載するアプリケーションプログラムにおいて、
前記コンピュータに、
複数の言語のうちから１つの言語を選択する選択処理を実行させ、
前記認証指示受付処理では、
前記認証指示を受け付ける画面であって、前記選択処理で選択された言語による前記画面を表示し、
前記特定情報のメッセージが複数の言語に対応しており、
前記認証結果表示処理では、
前記ブラウザに、前記選択処理にて選択された言語による前記完了画面のウェブページデータを渡す、
ことを特徴とするアプリケーションプログラム。
【請求項５】
請求項１から請求項４のいずれか１つに記載するアプリケーションプログラムにおいて、
前記認証結果表示処理では、
前記ブラウザに、前記ユーザインタフェースを介して入力を受け付ける入力エリアであって、前記ユーザインタフェースを介して入力があった場合に、前記アプリケーションプログラムをアクティブな状態にさせる前記入力エリアを含む前記完了画面のウェブページデータを渡す、
ことを特徴とするアプリケーションプログラム。
【請求項６】
請求項１から請求項５のいずれか１つに記載するアプリケーションプログラムにおいて、
前記完了画面のファビコンを、前記アプリケーションプログラムのアイコンと同じにする、
ことを特徴とするアプリケーションプログラム。
【請求項７】
請求項１から請求項６のいずれか１つに記載するアプリケーションプログラムにおいて、
前記認証結果表示処理では、
前記ブラウザに、前記ブラウザを終了させるメッセージを含む前記完了画面のウェブページデータを渡す、
ことを特徴とするアプリケーションプログラム。
【請求項８】
請求項１から請求項７のいずれか１つに記載するアプリケーションプログラムにおいて、
前記認証指示受付処理では、
前記認証指示を受け付けている間、前記アプリケーションプログラムの表示画面に、サインアウト状態であることを示す情報を表示させ、
前記コンピュータに、
前記ブラウザ指示処理の後、前記リダイレクト要求を前記ブラウザを介して前記ローカルサーバが受信し、かつ前記クラウドサーバへの認証が成功した場合に、前記アプリケーションプログラムの表示画面に、サインイン状態であることを示す情報を表示させるサインイン表示処理を実行させる、
ことを特徴とするアプリケーションプログラム。
【請求項９】
請求項１から請求項８のいずれか１つに記載するアプリケーションプログラムにおいて、
前記ブラウザ指示処理では、
前記認証画面を表示させる指示に、前記アプリケーションプログラムを特定するアプリ情報を表示させるコマンドを付加し、
前記認証結果表示処理では、
前記ブラウザに、前記アプリ情報を含む前記完了画面のウェブページデータを渡す、
ことを特徴とするアプリケーションプログラム。
【請求項１０】
情報処理装置のコンピュータによって実行可能なアプリケーションプログラムであって、
前記コンピュータに、
前記情報処理装置のユーザインタフェースを介して、前記アプリケーションプログラムがアクティブな状態で、クラウドサーバへの認証指示を受け付ける認証指示受付処理を実行させ、
前記コンピュータを、
前記認証指示を前記認証指示受付処理で受け付けた場合に、ローカルホストのウェブサーバであるローカルサーバとして機能させ、
前記コンピュータに、
前記認証指示を前記認証指示受付処理で受け付けた場合に、
前記情報処理装置に組み込まれたブラウザに、前記クラウドサーバによって提供される認証画面を表示することと、前記ローカルサーバをリダイレクト要求のリダイレクト先とすることと、を指示するブラウザ指示処理と、
前記ブラウザをアクティブな状態にし、前記アプリケーションプログラムを非アクティブな状態にするブラウザアクティブ処理と、
を実行させ、
前記ローカルサーバは、前記コンピュータに、
前記ブラウザ指示処理の後、前記リダイレクト要求を前記ブラウザを介して前記ローカルサーバが受信した場合に、
前記ブラウザを非アクティブな状態にし、前記アプリケーションプログラムをアクティブな状態にするアプリアクティブ処理を実行させ、
前記コンピュータに、
前記クラウドサーバへの認証に成功している場合、前記ユーザインタフェースを介して、前記アプリケーションプログラムがアクティブな状態で、前記クラウドサーバを利用する処理の実行指示を受け付ける実行指示受付処理を実行させ、
前記実行指示を前記実行指示受付処理で受け付けた場合に、前記実行指示に対応する前記処理を実行させる、
ことを特徴とするアプリケーションプログラム。
【請求項１１】
請求項１０に記載するアプリケーションプログラムにおいて、
前記ローカルサーバは、前記コンピュータに、
前記ブラウザ指示処理の後、前記リダイレクト要求を前記ブラウザを介して前記ローカルサーバが受信した場合に、
前記ブラウザを終了させるブラウザ終了処理を実行させる、
ことを特徴とするアプリケーションプログラム。
【請求項１２】
請求項１０に記載するアプリケーションプログラムにおいて、
前記ローカルサーバは、前記コンピュータに、
前記ブラウザ指示処理の後、前記リダイレクト要求を前記ブラウザを介して前記ローカルサーバが受信した場合に、
前記クラウドサーバへの認証結果を示す完了画面であって、前記アプリケーションプログラムをアクティブな状態にすることを示す特定情報が含まれる前記完了画面を、表示するよう、前記ブラウザに指示する認証結果表示処理を実行させる、
ことを特徴とするアプリケーションプログラム。
【請求項１３】
請求項１０から請求項１２のいずれか１つに記載するアプリケーションプログラムにおいて、
前記認証指示受付処理では、
前記認証指示を受け付けている間、前記アプリケーションプログラムの表示画面に、サインアウト状態であることを示す情報を表示させ、
前記コンピュータに、
前記ブラウザ指示処理の後、前記リダイレクト要求を前記ブラウザを介して前記ローカルサーバが受信し、かつ前記クラウドサーバへの認証が成功した場合に、前記アプリケーションプログラムの表示画面に、サインイン状態であることを示す情報を表示させるサインイン表示処理を実行させる、
ことを特徴とするアプリケーションプログラム。
【請求項１４】
請求項１０から請求項１３のいずれか１つに記載するアプリケーションプログラムにおいて、
前記ブラウザ指示処理では、
前記認証画面を表示させる指示に、前記アプリケーションプログラムを特定するアプリ情報を表示させるコマンドを付加する、
ことを特徴とするアプリケーションプログラム。
【請求項１５】
情報処理装置のコンピュータによって実行可能なアプリケーションプログラムであって、
前記コンピュータに、
前記情報処理装置のユーザインタフェースを介して、前記アプリケーションプログラムがアクティブな状態で、クラウドサーバへの認証指示を受け付け、前記認証指示を受け付けている間、前記アプリケーションプログラムの表示画面に、サインアウト状態であることを示す情報を表示させる認証指示受付処理を実行させ、
前記コンピュータを、
前記認証指示を前記認証指示受付処理で受け付けた場合に、ローカルホストのウェブサーバであるローカルサーバとして機能させ、
前記コンピュータに、
前記認証指示を前記認証指示受付処理で受け付けた場合に、
前記情報処理装置に組み込まれたブラウザに、前記クラウドサーバによって提供される認証画面を表示することと、前記ローカルサーバをリダイレクト要求のリダイレクト先とすることと、を指示するブラウザ指示処理と、
前記ブラウザをアクティブな状態にし、前記アプリケーションプログラムを非アクティブな状態にする第１ブラウザアクティブ処理と、
を実行させ、
前記コンピュータに、
前記ブラウザ指示処理の後、前記リダイレクト要求を前記ブラウザを介して前記ローカルサーバが受信し、かつ前記クラウドサーバへの認証が成功した場合に、前記アプリケーションプログラムの表示画面に、サインイン状態であることを示す情報を表示させるサインイン表示処理を実行させる、
ことを特徴とするアプリケーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に開示される技術の技術分野は、クラウドサーバを利用するアプリケーションプログラムに関する技術分野である。
【背景技術】
【０００２】
近年、パーソナルコンピュータ（ＰＣ）やスマートフォン等の情報処理装置から、インターネット上のクラウドサーバに、データのアップロードないしダウンロードを行う技術が知られている。例えば、特許文献１には、スキャナで読み取った読取データを、サーバにアップロードする構成が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−４５４６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
クラウドサーバを利用するアプリケーションプログラムでは、ユーザに対してクラウドサーバへの認証に必要な操作を要求する。この認証時のアプリケーションプログラムの動作に改善の余地がある。
【０００５】
具体的に、クラウドサーバへの認証の際、アプリケーションプログラムからクラウドサーバに対してアクセス許可を要求すると、クラウドサーバによって提供される認証画面を、アプリケーションプログラムとは別のプログラムであるブラウザが表示し、その認証画面を介して、認証に必要な情報がユーザによって入力されると、クラウドサーバでの認証が行われる。その後、ブラウザがアクティブな状態になっているが、ユーザがアプリケーションプログラムを再びアクティブな状態に戻す必要があることがユーザには分かり難く、困惑を生じさせることがある。
【０００６】
本明細書には、クラウドサーバを利用するアプリケーションプログラムであって、クラウドサーバへの認証時の使い勝手を向上させるという課題を解決する技術を開示する。
【課題を解決するための手段】
【０００７】
この課題の解決を目的としてなされたアプリケーションプログラムは、情報処理装置のコンピュータによって実行可能なアプリケーションプログラムであって、前記コンピュータに、前記情報処理装置のユーザインタフェースを介して、前記アプリケーションプログラムがアクティブな状態で、クラウドサーバへの認証指示を受け付ける認証指示受付処理を実行させ、前記コンピュータを、前記認証指示を前記認証指示受付処理で受け付けた場合に、ローカルホストのウェブサーバであるローカルサーバとして機能させ、前記コンピュータに、前記認証指示を前記認証指示受付処理で受け付けた場合に、前記情報処理装置に組み込まれたブラウザに、前記クラウドサーバによって提供される認証画面を表示することと、前記ローカルサーバをリダイレクト要求のリダイレクト先とすることと、を指示するブラウザ指示処理と、前記ブラウザをアクティブな状態にし、前記アプリケーションプログラムを非アクティブな状態にする第１ブラウザアクティブ処理と、を実行させ、前記ローカルサーバは、前記コンピュータに、前記ブラウザ指示処理の後、前記リダイレクト要求を前記ブラウザを介して前記ローカルサーバが受信した場合に、前記クラウドサーバへの認証結果を示す完了画面であって、前記アプリケーションプログラムをアクティブな状態にすることを示す特定情報が含まれる前記完了画面を表示するよう、前記ブラウザに指示する認証結果表示処理と、前記ブラウザをアクティブな状態にし、前記アプリケーションプログラムを非アクティブな状態にする第２ブラウザアクティブ処理と、を実行させ、前記コンピュータに、前記クラウドサーバへの認証に成功している場合、前記ユーザインタフェースを介して、前記アプリケーションプログラムがアクティブな状態で、前記クラウドサーバを利用する処理の実行指示を受け付ける実行指示受付処理を実行させ、前記実行指示を前記実行指示受付処理で受け付けた場合に、前記実行指示に対応する前記処理を実行させる、ことを特徴としている。
【０００８】
本明細書に開示されるアプリケーションプログラムは、クラウドサーバへの認証指示を受け付けた場合、情報処理装置のコンピュータをローカルサーバとして機能させる。ローカルサーバは、ブラウザに認証画面を表示させ、さらに、ブラウザをアクティブな状態とさせ、アプリケーションプログラムを非アクティブな状態とさせる。ローカルサーバは、リダイレクト要求を受信した場合、クラウドサーバへの認証結果を示す完了画面の表示をブラウザに指示する。この完了画面には、アプリケーションプログラムをアクティブな状態にすることを示す特定情報が含まれる。そのため、ユーザは、アプリケーションプログラムをアクティブな状態にする必要が有ることを認識でき、困惑の軽減が期待できる。
【０００９】
上記アプリケーションプログラムが組み込まれた情報処理装置、アプリケーションプログラムを格納するコンピュータにて読取可能な記憶媒体、及びアプリケーションプログラムの機能を実現するための制御方法も、新規で有用である。
【発明の効果】
【００１０】
本明細書に開示される技術によれば、クラウドサーバを利用するアプリケーションプログラムであって、クラウドサーバへの認証時の使い勝手を向上させる技術が実現される。
【図面の簡単な説明】
【００１１】
【図１】ＰＣの電気的構成を示すブロック図である。
【図２】保存先の選択画面の例を示す説明図である。
【図３】クラウドの選択画面の例を示す説明図である。
【図４】認証手順を示すシーケンス図である。
【図５】認証要求情報の入力画面の例を示す説明図である。
【図６】認証許可を受け付ける画面の例を示す説明図である。
【図７】認証完了時の完了画面の例を示す説明図である。
【図８】認証完了後の画面の例を示す説明図である。
【図９】スキャンアプリ処理の手順を示すフローチャートである。
【図１０】アップロード処理の手順を示すフローチャートである。
【図１１】ローカルサーバ処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１２】
本明細書では、アプリケーションプログラム（以下、「アプリ」とする）を具体化した実施の形態について、添付図面を参照しつつ詳細に説明する。本形態は、パーソナルコンピュータ（以下、「ＰＣ」とする）にて実行可能なスキャンアプリを開示するものである。
【００１３】
本形態のＰＣ１は、図１に示すように、スキャナ２と接続され、スキャナ２から画像データを受信する。ＰＣ１は、情報処理装置の一例である。ＰＣ１は、各種のプログラムの実行が可能な装置である。ＰＣ１に代えて、例えば、タブレットコンピュータ、スマートフォンであってもよい。スキャナ２は、原稿を読み取って画像データを取得し、取得した画像データをＰＣ１に送信する。ＰＣ１に接続されるスキャナ２は、１台に限らず、複数台でも良い。また、ＰＣ１には、スキャナに限らず、コピー機、複合機、ＦＡＸ装置、デジタルカメラ等、画像データを取得して送信できる装置が接続されていればよい。
【００１４】
本形態のＰＣ１は、図１に示すように、インターネット１００に接続され、インターネット１００を介して、クラウドサーバ１０１と、クラウドサーバ１０２と、に接続される。つまり、ＰＣ１のユーザは、ＰＣ１を使用して、インターネット１００を介して提供される各種のクラウドサービスを利用できる。
【００１５】
各クラウドサービスは、１以上のストレージサーバや認証用サーバを管理し、管理するストレージサーバへのデータのアップロードやダウンロードのサービスを提供する。ストレージサーバの１つが認証サーバを兼ねていても良い。以下では、１つのクラウドサービスにて管理されるストレージサーバや認証用サーバを区別せず、まとめて「クラウドサーバ」と呼ぶ。なお、図１では、ＰＣ１に２つのクラウドサーバ１０１、１０２が接続されている状態を例示しているが、アクセス可能なクラウドサーバの数はさらに多く、実際に接続されるクラウドサーバの数は限定されない。
【００１６】
本形態のＰＣ１は、図１に示すように、ＣＰＵ１１と、ＲＯＭ１２と、ＲＡＭ１３と、不揮発性メモリ１４と、を含む制御基板１０を備えている。さらに、タッチパネル１５と、ネットワーク通信インタフェース（以下、「ＩＦ」とする）１６と、ＵＳＢ−ＩＦ１７と、を備え、これらが制御基板１０に電気的に接続されている。ＣＰＵ１１は、コンピュータの一例である。
【００１７】
ＲＯＭ１２には、ＭＦＰ１００を起動するための起動プログラム等が記憶されている。ＲＡＭ１３は、各種の処理が実行される際の作業領域として、あるいは、データを一時的に記憶する記憶領域として利用される。不揮発性メモリ１４は、例えば、ＨＤＤ、フラッシュメモリであり、各種のプログラムや画像データ等のデータや各種設定を記憶する領域として利用される。
【００１８】
ＣＰＵ１１は、ＲＯＭ１２や不揮発性メモリ１４から読み出したプログラムに従って、また、ユーザの指示に基づいて、各種の処理を実行する。なお、図１中の制御基板１０は、ＰＣ１の制御に利用されるハードウェアやソフトウェアを纏めた総称であって、実際にＰＣ１に存在する単一のハードウェアを表すとは限らない。
【００１９】
タッチパネル１５は、ユーザによる操作を受け付けるとともに情報の表示を行うハードウェアである。すなわち、タッチパネル１５は、入力機能と出力機能との両方を備えるユーザインタフェースの一例である。ユーザインタフェースは、タッチパネル１５に限らず、ディスプレイとキーボードやマウスとの組み合わせを備えるものであっても良い。
【００２０】
ネットワーク通信ＩＦ１６は、インターネット１００を介して外部装置と通信を行うためのハードウェアを含む。ネットワーク通信ＩＦ１６の通信方式は、無線でも有線でもよく、ＬＡＮ、Ｗｉ−Ｆｉ（登録商標）など、どのような規格の方式でもよい。また、ＵＳＢ−ＩＦ１７は、スキャナ２との通信を行うためのハードウェアを含む。なお、ネットワーク通信ＩＦ１６を介して接続されるスキャナがあっても良い。
【００２１】
ＰＣ１の不揮発性メモリ１４には、オペレーティングシステム（以下、「ＯＳ」とする）４０と、スキャンアプリ４１と、ブラウザ４２と、を含む、各種のプログラムが記憶されている。スキャンアプリ４１は、ユーザの指示に基づいて、スキャナ２との通信を行い、スキャナ２への読み取り設定や読み取り実行の指示等の送信、スキャナ２にて読み取った画像データの受信や表示、受信した画像データの保存等を行うプログラムである。ブラウザ４２は、ウェブページを表示するプログラムである。ＯＳ４０の一部は、ＲＯＭ１２に含まれていてもよい。
【００２２】
スキャンアプリ４１が記憶される媒体は、不揮発性メモリ１４に限らない。スキャンアプリ４１が記憶される媒体は、コンピュータが読み取り可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体である。ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体には、上記の例の他に、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等の記録媒体も含まれる。また、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体は、ｔａｎｇｉｂｌｅな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙなコンピュータが読み取り可能なストレージ媒体には含まれない。
【００２３】
続いて、スキャンアプリ４１の動作について説明する。なお、以下の説明における処理およびフローチャートの各処理ステップは、基本的に、スキャンアプリ４１などのプログラムに記述された命令に従ったＣＰＵ１１の処理を示す。すなわち、以下の説明における「判断」、「取得」、「受付」、「制御」等の処理は、ＣＰＵ１１の処理を表している。ＣＰＵ１１による処理は、ＰＣ１のＯＳ４０の他のモジュールとデータ交換するためのＩＦ（ＡＰＩとも呼ばれる）を用いたハードウェア制御も含む。本明細書では、ＯＳ４０の記載を省略して各プログラムの動作を説明する。すなわち、以下の説明において、「プログラムＰがハードウェアＨを制御する」という趣旨の記載は、「プログラムＰがＯＳ４０のＡＰＩを用いてハードウェアＨを制御する」ことを指してもよい。なお、「取得」は要求を必須とはしない概念で用いる。すなわち、ＣＰＵ１１が要求することなくデータを受信するという処理も、「ＣＰＵ１１がデータを取得する」という概念に含まれる。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。また、「要求する」、「指示する」とは、要求していることを示す情報や、指示していることを示す情報を相手に出力することを示す概念である。また、要求していることを示す情報や指示していることを示す情報のことを、単に、「要求」、「指示」とも記載する。
【００２４】
また、プログラムに記述された命令に従ったＣＰＵ１１の処理を、省略した文言で記載することがある。例えば、「ＣＰＵ１１が行う」、「スキャンアプリ４１が行う」のように記載することがある。また、ＣＰＵ１１による処理であって、情報Ａが事柄Ｂであることを示しているか否かを判断する処理を、「情報Ａから、事柄Ｂであるか否かを判断する」のように概念的に記載することがある。また、ＣＰＵ１１による処理であって、情報Ａが事柄Ｂであることを示しているか、事柄Ｃであることを示しているかを判断する処理を、「情報Ａから、事柄Ｂであるか事柄Ｃであるかを判断する」のように概念的に記載することがある。
【００２５】
本形態のスキャンアプリ４１は、起動の指示を受け付けると、タッチパネル１５にアプリ用のウィンドウを表示させ、ユーザの操作を受け付ける。スキャンアプリ４１は、ユーザの指示に基づいて、例えば、スキャナ２に原稿の画像を読み取らせ、スキャナ２から画像データを受信して、受信した画像データを指定された保存場所に保存する。以下、図２〜図８を参照して、画像データをクラウドサーバへアップロードする手順について説明する。
【００２６】
図２は、画像データの保存の指示を受け付けた場合に、スキャンアプリ４１が表示させるアプリ用ウィンドウ４１１の例を示している。図２では、アプリ用ウィンドウ４１１のスキャン画像領域８１に、スキャナ２から受信した画像データの画像が含まれている。また、保存先の選択肢として、「ＰＣへの保存」ボタン８２と、「クラウドサービスへの保存」ボタン８３と、「アプリで開く」ボタン８４と、が含まれている。そして、スキャンアプリ４１は、各ボタン８２〜８４への操作を受け付ける。
【００２７】
スキャンアプリ４１は、ボタン８３への操作を受け付けた場合に、アップロード先のクラウドサーバの選択を受け付けるクラウド選択ウィンドウ４１２を表示させる。図３は、クラウド選択ウィンドウ４１２の例を示している。クラウド選択ウィンドウ４１２は、アプリ用ウィンドウ４１１の前面に表示される。
【００２８】
図３では、クラウドサーバの選択肢として、「クラウドＡ」ボタン８５と、「クラウドＢ」ボタン８６と、が表示され、「クラウドＡ」が選択されている状態の例を示している。クラウドサーバは、それぞれ個別の管理システムを備えている。そのため、クラウドサーバに画像データをアップロードする場合には、スキャンアプリ４１は、選択されたクラウドサーバの規定に則って認証を受け、認証情報を取得する必要がある。クラウド選択ウィンドウ４１２には、図３に示すように、クラウドサーバごとの「サインイン」ボタン８５１、８６１も表示されている。
【００２９】
スキャンアプリ４１は、クラウド選択ウィンドウ４１２にて、例えば、ボタン８５の操作によってクラウドサーバの選択を受け付け、さらに、ボタン８５１の操作によってサインインの指示を受け付けると、認証情報を取得するための手続を開始する。なお、ボタン８５１は、そのクラウドサーバへの「サインイン」の指示を受け付けるボタンであり、そのクラウドサーバへ現在サインインしていない、すなわち、サインアウト状態であることを示す機能も兼ねている。
【００３０】
クラウドサーバでは、例えば、ＯＡｕｔｈ２．０を用いた認証方式が採用されている。ＯＡｕｔｈ２．０を用いた認証方式では、例えば、図４のシーケンス図に示す手順で、認証情報であるアクセストークンを取得する。図４では、クラウドサーバへのアカウントを作成済みのユーザによって、クラウドサーバへの認証を要求する場合の手順を示している。なお、クラウドＡは、クラウドサーバにて実行されるプログラムである。
【００３１】
図３に示したボタン８５１への操作を受け付けた場合、スキャンアプリ４１は、図４に示すように、クラウドＡへのサインイン手順を実行する。スキャンアプリ４１は、サインインの指示を受け付ける（手順５１）と、まず、ローカルサーバ４３を起動し（手順５２）、さらに、ブラウザ４２を起動する（手順５３）。
【００３２】
ローカルサーバ４３は、ＰＣ１自身を、ローカルホストのウェブサーバとして動作させるプログラムである。ローカルホストのウェブサーバとは、ウェブサーバが動作している装置の内部で動作し、クライアントから利用できるように設定されたウェブサーバである。すなわち、ローカルサーバ４３は、インターネット１００に公開されているウェブサーバがブラウザとＨＴＴＰ通信をすると同様に、ブラウザ４２とＰＣ１内部で、ＨＴＴＰ通信をすることができる。
【００３３】
スキャンアプリ４１は、図４の手順５３にて、ブラウザ４２に、アクセスしようとしているクラウドサーバの認証ページのＵＲＬと、リダイレクト先としてのローカルサーバ４３のＵＲＬとを指示する。選択可能な各クラウドサーバの認証ページのＵＲＬは、予めスキャンアプリ４１に登録されている。スキャンアプリ４１は、選択されたクラウドサーバの認証ページのＵＲＬを読み出して、ブラウザ４２の起動オプションに設定する。
【００３４】
図４の手順５３にてブラウザ４２が起動されることで、ブラウザ４２は、クラウドＡに認証手続の開始要求を送信し（手順５４）、クラウドＡから認証ページのウェブページデータを受信する（手順５５）。以下、ページを示すウェブページデータのことを、単に、「ページ」とも記載する。ブラウザ４２は、例えば、図５に示すように、クラウドＡの認証ページを含むブラウザ表示画面４２１をタッチパネル１５に表示させる。クラウドサーバの認証ページは、認証画面の一例である。
【００３５】
なお、クラウドサーバは、送信元のアプリの登録情報を表示するサービスを提供している場合がある。例えば、スキャンアプリ４１の製造メーカが、予めクラウドサーバのサービス事業者に、アプリの名称やアプリのアイコンなどの登録情報を、スキャンアプリ４１の識別情報と対応付けて登録するよう申請しておくことで、サービス事業者は、クラウドサーバに登録情報を登録する。クラウドサーバは、認証手続の開始時にスキャンアプリ４１の識別情報を受信すると、対応する登録情報を含むウェブページデータをブラウザ４２に送信する。これにより、図５に示すように、認証ページにスキャンアプリ４１に関する情報、例えば、アプリの名称やアプリのアイコン９１が表示される。アプリのアイコン９１は、アプリ情報の一例であり、スキャンアプリ４１の識別情報は、コマンドの一例である。
【００３６】
クラウドＡの認証ページには、例えば、図５に示すように、ＩＤの入力欄９２と、パスワードの入力欄９３と、ログインボタン９４と、が表示される。そして、ブラウザ４２は、図４に示すように、表示中の認証ページにて、認証要求情報の入力操作を受け付ける（手順５６）。認証要求情報は、例えば、ＩＤやメールアドレスとパスワードとの組であり、ユーザによって予めクラウドＡに登録されたアカウントの情報である。さらに、ブラウザ４２は、認証要求情報が入力された状態で、図５に示したログインボタン９４への操作を受け付けると、図４に示すように、入力された認証要求情報をクラウドＡに送信し、認証を要求する（手順５７）。
【００３７】
なお、認証ページでは、アカウントの作成のためのボタンが表示される場合もある。アカウントを未作成のユーザは、例えば、認証ページからアカウント作成のページへと移動することで、アカウントを作成してから認証手順を実行することになる。また、ブラウザ４２は、キャッシュ機能を有し、過去に入力されたＩＤやパスワードの情報を保存している場合がある。ブラウザ４２は、キャッシュ情報を参照して、ＩＤの入力欄９２とパスワードの入力欄９３とに初期情報を表示させてもよい。そして、ブラウザ４２がキャッシュ情報を有している場合には、手順５６の入力操作を省略して、手順５７でのログインボタン９４への操作を受け付けても良い。
【００３８】
クラウドＡは、認証要求情報に基づいて認証処理を行う（手順５８）。そして、認証処理の後、認証可能である場合、クラウドＡは、ブラウザ４２へ確認ページを送信する（手順５９）。確認ページの例を図６に示す。ブラウザ４２は、確認ページを受信したら、ブラウザ表示画面４２１に確認ページを表示する。確認ページには、図６に示すように、キャンセルボタン９５と、許可ボタン９６と、許可ボタン９６を操作することで認証が正常に完了することを示す文字列と、が表示される。そして、ブラウザは、確認ページの各ボタン９５、９６への操作を受け付ける。
【００３９】
図４に示すように、ブラウザ４２は、許可ボタン９６の操作を受け付けたら（手順６０）、許可情報をクラウドＡに送信する（手順６１）。クラウドＡは、許可情報を受けて、認可コードとリダイレクト先の情報とをブラウザ４２へ送信する（手順６２）。手順６２にて送信されるリダイレクト先の情報は、手順５３にて指定されたローカルサーバ４３のＵＲＬである。
【００４０】
なお、クラウドＡへの認証手続き中にエラーが発生した場合や、図６に示した確認ページにてキャンセルボタン９５への操作を受け付けた場合、クラウドＡは、認可コードを送信しない。この場合、ブラウザ４２は、手順６２にて、エラーの情報、または、キャンセルの情報を受信する。
【００４１】
ブラウザ４２は、クラウドＡから受信した情報に基づいて、ローカルサーバ４３のＵＲＬにリダイレクトする（手順６３）。つまり、ブラウザ４２は、ローカルサーバ４３に対して、表示するウェブページの情報を渡すように要求するリダイレクト要求を行う。リダイレクト要求では、ブラウザ４２は、クラウドＡから受信した情報をローカルサーバ４３に渡す。手順６３にてローカルサーバ４３に渡される情報には、例えば、クラウドＡの認可コード、エラーの情報、キャンセルの情報がある。
【００４２】
ローカルサーバ４３は、手順６３にて受信したリダイレクト要求に認可コードが含まれているか否かを判断する（手順６４）。ローカルサーバ４３は、図４に示すように、認可コードが含まれていると判断した場合、受け取った認可コードをクラウドＡに送信する（手順６５）。クラウドＡは、認可コードを受信すると、認可コードの送信元であるローカルサーバ４３へアクセストークンとリフレッシュトークンとの組を送信する（手順６６）。これで、クラウドＡへの認証手続は完了であり、ローカルサーバ４３は、アクセストークンとリフレッシュトークンとの組を受信したことで、認証に成功したと判断する。
【００４３】
ローカルサーバ４３は、認証に成功した場合、認証結果を示す完了画面である認証完了画面のデータを取得する（手順６７）。具体的には、例えば、図７に示すような認証完了画面９８の場合、ＰＣ１は、ウェブページの構成を示すデータと、ページ内に表示される各部品（例えば、図７中の符号９８１〜９８４で示すもの）のデータとを、ローカルサーバ４３やスキャンアプリ４１のプログラムファイル内、または、各プログラムから参照する参照ファイル内に所持している。ローカルサーバ４３は、これらのデータを読み出し、組み合わせてウェブページデータを作成する。
【００４４】
そして、ローカルサーバ４３は、ブラウザ４２に認証完了画面のデータを渡して、その表示をブラウザ４２に指示する（手順６８）。このとき、ブラウザ４２がアクティブな状態となり、ブラウザ表示画面４２１には、例えば、図７に示すように、認証完了画面９８が表示される。図７に示す認証完了画面９８は、認証が成功した場合にブラウザ４２に表示させるウェブページであり、認証手続が完了したことをユーザに知らせるための完了画面である。認証完了画面９８の詳細については、後述する。
【００４５】
さらに、ローカルサーバ４３は、図４に示すように、受信したアクセストークンとリフレッシュトークンとの組をスキャンアプリ４１に渡す（手順６９）。スキャンアプリ４１は、アクセストークンとリフレッシュトークンとを受け取った後、ローカルサーバ４３を終了させる（手順７０）。
【００４６】
スキャンアプリ４１は、アクセストークンとリフレッシュトークンとを受け取ると、例えば、図８に示すように、クラウド選択ウィンドウ４１２に保存ボタン８７を表示させる。また、ボタン８５中に表示されていたボタン８５１（図３参照）は、図８に示すように、「サインアウト」の指示を受け付けるボタン８５２に変更される。ボタン８５２は、クラウドＡへサインイン中であることを示す機能も兼ねている。スキャンアプリ４１は、ボタン８５２に代えて、サインアウトを示すアイコン等、サインイン状態であることを示す間接的な情報を表示しても良い。
【００４７】
そして、スキャンアプリ４１は、例えば、ユーザの操作によりアクティブな状態となる。また、スキャンアプリ４１は、保存ボタン８７への操作を受け付ける。スキャンアプリ４１は、保存ボタン８７への操作を受け付けると、スキャンアプリ４１は、アクセストークンを添付して画像データを送信する（手順７１）。これにより、画像データは、クラウドＡのストレージサーバに保存される。
【００４８】
一方、手順６４にて、リダイレクト要求に認可コードが含まれていないと判断した場合、ローカルサーバ４３は、図４に示すように、認証が未完了であることを示す完了画面である未認証画面のデータを取得する（手順７２）。そして、ローカルサーバ４３は、ブラウザ４２に未認証画面のデータを渡して、その表示をブラウザ４２に指示する（手順７３）。このとき、ブラウザ４２がアクティブな状態となり、ブラウザ表示画面４２１には、未認証画面が表示される。未認証画面は、認証手続が未完了である場合にブラウザ４２に表示させるウェブページであり、認証できなかったことをユーザに知らせるための完了画面である。
【００４９】
さらに、ローカルサーバ４３は、未認証であることを示す情報をスキャンアプリ４１に渡す（手順７４）。スキャンアプリ４１は、未認証であることを示す情報を受け取った後、ローカルサーバ４３を終了させる（手順７５）。
【００５０】
次に、認証完了画面９８について説明する。認証完了画面９８には、例えば、図７に示すように、カラーバー９８１と、認証完了の情報９８２と、操作指示情報９８３と、切り替えボタン９８４と、スキャンアプリ４１のファビコン９８５と、が表示される。なお、これらを全て表示する必要はなく、少なくとも１つが表示されるとよい。カラーバー９８１、認証完了の情報９８２、操作指示情報９８３、切り替えボタン９８４、ファビコン９８５は、いずれも、スキャンアプリ４１をアクティブな状態とすることを示す情報であり、特定情報の一例である。
【００５１】
カラーバー９８１は、図７に示すように、スキャンアプリ４１のテーマ色の帯である。テーマ色は、例えば、アプリ用ウィンドウ４１１のタイトルバーに用いられている色、アプリ用ウィンドウ４１１の背景色である。テーマ色は、スキャンアプリ４１に固有の色であり、ＯＳ４０のテーマ色ではない。カラーバー９８１のみでなく、ページの背景色をテーマ色としたり、ページ中の文字をテーマ色で表示しても良い。スキャンアプリ４１のテーマ色を使用したページとすることで、アクティブな状態にする対象がスキャンアプリ４１であることをユーザに伝え易い。つまり、テーマ色のカラーバー９８１を表示させることで、間接的に、スキャンアプリ４１をアクティブな状態とすることを示唆できる。
【００５２】
認証完了の情報９８２は、図７に示すように、認証手続が完了したことを示す文字情報である。操作指示情報９８３は、スキャンアプリ４１の表示画面をアクティブな状態とすることを示す文字情報である。操作指示情報９８３には、例えば、図７に示すように、ブラウザ４２を終了させるメッセージ９８３Ａと、スキャンアプリ４１の名称９８３Ｂと、が含まれる。操作指示情報９８３によって、ユーザに、ブラウザ４２を終了させて、スキャンアプリ４１の操作に戻る操作を促すことができる。
【００５３】
操作指示情報９８３にメッセージ９８３Ａを含むことで、ブラウザ４２をユーザによって終了させる必要があることがユーザに伝わり易い。また、操作指示情報９８３にスキャンアプリ４１の名称９８３Ｂを明記することで、アクティブな状態とする対象がスキャンアプリ４１であることをユーザに伝え易い。
【００５４】
なお、スキャンアプリ４１は、複数の言語から使用する言語を選択し、例えば、アプリ用ウィンドウ４１１に表示される各種の文字情報を選択された言語での表記とする。そして、スキャンアプリ４１は、認証完了画面として、使用可能な各言語によって認証完了の情報９８２や操作指示情報９８３を表記したページを有している。ローカルサーバ４３は、手順６７にて、認証完了画面の各ページのうち、スキャンアプリ４１にて選択されている言語で表記されたページのデータを取得する。認証完了の情報９８２や操作指示情報９８３の文字情報を、スキャンアプリ４１の使用言語と同じ言語で表記することで、ユーザにとって内容を把握し易い情報となる。
【００５５】
切り替えボタン９８４は、図７に示すように、スキャンアプリ４１をアクティブな状態とする入力操作を受け付ける入力エリアである。例えば、認証完了画面９８のページデータとして、切り替えボタン９８４のエリアが操作されたら実行されるＪａｖａ（登録商標）スクリプトを含むものを用意する。具体的には、スキャンアプリ４１の表示画面をアクティブな状態とするようにローカルサーバ４３に指示するＪａｖａスクリプトを、認証完了画面９８のページデータに含ませる。そして、切り替えボタン９８４への操作を受け付けた場合、ブラウザ４２が、そのＪａｖａスクリプトを実行することで、ローカルサーバ４３は、スキャンアプリ４１をアクティブな状態とするコマンドをＯＳ４０に渡し、スキャンアプリ４１の表示画面がアクティブな状態となる。
【００５６】
あるいは、ローカルサーバ４３が、切り替えボタン９８４の領域への操作を受け付けたか否かを判断してもよい。そして、受け付けたと判断した場合に、ローカルサーバ４３は、スキャンアプリ４１をアクティブな状態とするようにＯＳ４０に指示してもよい。切り替えボタン９８４が表示されることで、スキャンアプリ４１をアクティブな状態に戻す入力を認証完了画面９８の中で受け付けられる。従って、ボタンの操作によって、容易に、表示が切り替えられる。なお、スキャンアプリ４１をアクティブな状態とする切り替えボタン９８４に代えて、ブラウザ４２を閉じるボタンを設けてもよい。
【００５７】
認証完了画面９８のタブには、図７に示すように、スキャンアプリ４１のファビコン９８５が含まれてもよい。ファビコンは、favorite iconの略称であり、ウェブサイトのシンボルマークを示すアイコンである。ブラウザ４２は、タブやブックマークなどにファビコンを表示する。ローカルサーバ４３は、ブラウザ４２に、ファビコン９８５のデータを渡して表示させる。ファビコン９８５は、クラウドサーバのサービス事業者に登録を申請したアプリのアイコンのテイストを残したまま、小さく表示するために作成したアイコンであり、ローカルサーバ４３やスキャンアプリ４１は、このファビコン９８５と同様の画像をアイコンとして使用する。
【００５８】
ファビコン９８５の表示によっても、アクティブな状態にする対象がスキャンアプリ４１であることをユーザに伝え易い。そして、認証完了画面９８のタブにスキャンアプリ４１のファビコン９８５が含まれることで、間接的に、スキャンアプリ４１をアクティブな状態とすることを示唆できる。なお、アプリ用ウィンドウ４１１のアイコンと、ファビコン９８５と、の少なくとも一方は、アイコンのテイストを残したまま小さく表示するために、編集されたものでも良い。
【００５９】
なお、確認ページ（図６参照）でキャンセルの操作を受け付けた場合など、認証手続が未完了でリダイレクト要求を受け付けた場合、前述したように、未認証画面が表示される。本形態では、未認証画面も、認証完了画面９８と同様に、スキャンアプリ４１をアクティブな状態とすることを示す情報を含む。ただし、未認証画面は、認証完了画面９８の認証完了の情報９８２に代えて、認証未完了であることを示す情報を含む。また、未認証画面は、文字情報として、キャンセルされたこと等、認証未完了となった理由を示す情報を含んでも良い。
【００６０】
認証完了画面９８や未認証画面などのウェブページに含まれる各種のデータは、前述したように、ローカルサーバ４３やスキャンアプリ４１のプログラムファイル内、または、各プログラムから参照する参照ファイル内、すなわち、不揮発性メモリ１４の共通の領域に記憶されている。ローカルサーバ４３とスキャンアプリ４１とは、不揮発性メモリ１４に記憶されているデータを共通して参照することで、共通の設定や部品、例えば、共通のアプリの名称、共通のテーマ色、共通のアイコン、共通の言語を使用できる。
【００６１】
なお、共通の領域に記憶する代わりに、スキャンアプリ４１がローカルサーバ４３を起動する際に、スキャンアプリ４１がローカルサーバ４３にこれらの共通の情報を渡し、ローカルサーバ４３が渡された情報を使用するとしても良い。また、クラウドサーバのサービス事業者に登録を申請するアプリの名称やアプリのアイコンも、ローカルサーバ４３やスキャンアプリ４１が表示に使用するものと共通にすると良い。
【００６２】
また、使用言語、テーマ色やアプリのアイコンについて、ユーザによる選択を受け付けても良い。例えば、スキャンアプリ４１が、選択メニューからユーザの選択を受け付けても良い。また、スキャンアプリ４１は、ＯＳ４０のテーマ色と比較して違和感のない色をテーマ色として自動的に選択し、選択した色をテーマ色及びアイコンの色として不揮発性メモリ１４に記憶させても良い。また、上記の各設定や部品に限らず、スキャンアプリ４１は、アプリ用ウィンドウと各ウェブページに共通して表示される情報に関してユーザの選択や入力を受け付け、受け付けた情報を不揮発性メモリ１４に記憶させて使用しても良い。
【００６３】
図４に示したように、手順６８または７３にてブラウザ４２がアクティブな状態となっていることから、認証完了画面９８や未認証画面が表示されるタイミングでは、スキャンアプリ４１は、非アクティブな状態である。そのため、スキャンアプリ４１への操作を継続するためには、スキャンアプリ４１をアクティブな状態とする必要がある。認証完了画面９８や未認証画面にスキャンアプリ４１をアクティブな状態とすることを示す情報が含まれることで、ユーザの注意を喚起できる。
【００６４】
続いて、本形態のスキャンアプリ４１の動作を実現するスキャンアプリ処理の手順について、図９のフローチャートを参照して説明する。このスキャンアプリ処理は、ＰＣ１にてスキャンアプリ４１の起動指示を受け付けたことを契機に、ＣＰＵ１１にて実行される。
【００６５】
スキャンアプリ処理では、ＣＰＵ１１は、ＯＳ４０にて使用されている言語を取得する（Ｓ１０１）。ＣＰＵ１１は、例えば、ＯＳ４０に問い合わせることで、使用言語を取得できる。そして、ＣＰＵ１１は、スキャンアプリ４１のアプリ用ウィンドウ４１１（図２参照）を開き（Ｓ１０２）、アプリ用ウィンドウ４１１に表示するページを、ＯＳ４０にて使用されている言語の文字情報を含むページとする（Ｓ１０３）。
【００６６】
そして、ＣＰＵ１１は、言語を選択する指示を受け付けたか否かを判断する（Ｓ１０４）。ＯＳ４０にて使用されている言語とは異なる言語を使用したいユーザは、言語の選択のメニューを用いて、スキャンアプリ４１の使用言語を、選択可能な言語のうちから選択して設定できる。言語の選択の指示を受け付けたと判断した場合（Ｓ１０４：ＹＥＳ）、ＣＰＵ１１は、選択された言語を使用言語とし（Ｓ１０５）、アプリ用ウィンドウ４１１のページを使用言語のページとする。一方、言語の選択の指示を受け付けていないと判断した場合（Ｓ１０４：ＮＯ）、ＣＰＵ１１は、ＯＳ４０の言語を使用言語とする（Ｓ１０６）。なお、ＣＰＵ１１は、使用言語を示す情報を不揮発性メモリ１４に記憶させる。Ｓ１０５及びＳ１０６は、選択処理の一例である。
【００６７】
そして、ＣＰＵ１１は、スキャンアプリ４１にてクラウドサーバへの保存の指示を受け付けたか否かを判断する（Ｓ１０７）。クラウドサーバへの保存の指示ではない指示を受け付けたと判断した場合（Ｓ１０７：ＮＯ）、ＣＰＵ１１は、指示を受け付けた動作を実行する（Ｓ１０８）。
【００６８】
クラウドサーバへの保存の指示を受け付けたと判断した場合（Ｓ１０７：ＹＥＳ）、ＣＰＵ１１は、アップロード処理を実行する（Ｓ１０９）。なお、アップロード処理は、スキャン指示等によって画像データを取得した後に選択される指示であり、アップロード処理の開始時には、アップロードの対象とされる画像データを取得済みである。アップロード処理の手順について、図１０のフローチャートを参照して説明する。
【００６９】
アップロード処理では、ＣＰＵ１１は、クラウドサーバの選択画面であるクラウド選択ウィンドウ４１２（図３参照）を、アクティブな状態として、タッチパネル１５に表示させる（Ｓ２０１）。本形態のスキャンアプリ４１は、複数のクラウドサーバからアップロード先の選択が可能であり、ユーザの選択に基づいて、アップロード先のクラウドサーバを決定する。
【００７０】
そして、ＣＰＵ１１は、クラウドサーバの選択を受け付けたか否かを判断する（Ｓ２０２）。クラウドサーバの選択を受け付けていないと判断した場合（Ｓ２０２：ＮＯ）、ＣＰＵ１１は、キャンセルの指示を受け付けたか否かを判断する（Ｓ２０３）。キャンセルの指示を受け付けていないと判断した場合（Ｓ２０３：ＮＯ）、ＣＰＵ１１は、クラウドサーバの選択またはキャンセルの指示を受け付けるまで待機する。
【００７１】
クラウドサーバの選択を受け付けたと判断した場合（Ｓ２０２：ＹＥＳ）、ＣＰＵ１１は、選択されたクラウドサーバにサインイン中であるか否かを判断する（Ｓ２０４）。サインイン中ではないと判断した場合（Ｓ２０４：ＮＯ）、ＣＰＵ１１は、タッチパネル１５を介してサインインの指示を受け付けたか否かを判断する（Ｓ２０５）。サインインの指示は、前述したように、アクティブな状態のクラウド選択ウィンドウ４１２に表示されているボタン（例えば、図３中のボタン８５１）の操作によって受け付ける。
【００７２】
サインインの指示を受け付けていないと判断した場合（Ｓ２０５：ＮＯ）、ＣＰＵ１１は、Ｓ２０２に戻り、クラウドサーバの選択、キャンセルの指示、または、サインインの指示を受け付ける。Ｓ２０５にてサインインの指示を受け付ける処理は、認証指示受付処理の一例であり、サインインの指示は、認証指示の一例である。
【００７３】
サインインの指示を受け付けたと判断した場合（Ｓ２０５：ＹＥＳ）、ＣＰＵ１１は、ローカルサーバ４３を起動する（Ｓ２０６）（図４の手順５２）。さらに、ＣＰＵ１１は、ブラウザ４２を起動し（図４の手順５３）、Ｓ２０６にて起動したローカルサーバ４３をリダイレクト先とするとともに、指定されたクラウドサーバの認証画面を表示する指示を行う（Ｓ２０７）。Ｓ２０７は、ブラウザ指示処理の一例である。
【００７４】
Ｓ２０７の指示により、タッチパネル１５には、例えば、図５や図６に示したように、ブラウザ４２の表示画面がアクティブな状態で表示される。そのため、クラウド選択ウィンドウ４１２等のスキャンアプリ４１の表示画面は、非アクティブな状態となる。つまり、ブラウザ４２のウィンドウであるブラウザ表示画面４２１が最前面に表示され、ブラウザ表示画面４２１がアプリ用ウィンドウ４１１と重なって配置された場合には、アプリ用ウィンドウ４１１の少なくとも一部がユーザから見えない状態となる。Ｓ２０７は、ブラウザアクティブ処理及び第１ブラウザアクティブ処理の一例でもある。
【００７５】
非アクティブな状態であるウィンドウは、例えば、ウィンドウへのクリック、ウィンドウへのタッチなど、アクティブな状態への変更を指示するユーザ操作に基づいて、ＯＳ４０によってアクティブな状態に変更される。所定のウィンドウがアクティブな状態であるとは、当該ウィンドウが、アクティブな状態への変更を指示する操作以外のユーザ操作の受け付け対象となっている状態であることを示す。アクティブな状態への変更指示以外のユーザ操作とは、例えば、ボタン入力、文字入力、カーソル移動である。なお、非アクティブな状態のウィンドウに含まれるボタンへのクリックやタッチなどは、アクティブな状態への変更指示と、ボタンへの操作とを兼ねていても良い。アクティブな状態のプログラムは、システムで１つであり、あるプログラムをアクティブな状態とすると、他のプログラムは、非アクティブな状態となるように、ＯＳ４０によって制御される。
【００７６】
そして、ＣＰＵ１１は、ローカルサーバ４３から認証情報を受信したか否かを判断する（Ｓ２０８）。認証情報は、前述したアクセストークンとリフレッシュトークンとの組であってもよいし、１つのトークンや認証キーであってもよい。認証情報を受信していないと判断した場合（Ｓ２０８：ＮＯ）、ＣＰＵ１１は、エラー情報を受信したか否かを判断する（Ｓ２０９）。
【００７７】
例えば、クラウドＡへの認証手続き中にエラーが発生した場合や、図６に示した確認ページにてキャンセルボタン９５への操作を受け付けた場合、クラウドＡは、認可コードを送信しない。この場合、ブラウザ４２は、図４の手順６２にて、エラーの情報、または、キャンセルの情報を受信する。そして、ローカルサーバ４３は、受信した情報が認可コードではないことから、図４の手順６５を行わず、認証手続は成功しない。認証が成功しなかった場合、スキャンアプリ４１は、ローカルサーバ４３から未認証であることを示すエラー情報を受信する。
【００７８】
エラー情報を受信していないと判断した場合（Ｓ２０９：ＮＯ）、ＣＰＵ１１は、Ｓ２０８に戻り、認証情報またはエラー情報を受信するまで待機する。そして、エラー情報を受信したと判断した場合（Ｓ２０９：ＹＥＳ）、ＣＰＵ１１は、ローカルサーバ４３を終了させる（Ｓ２１０）。さらに、Ｓ２０２に戻って、クラウドサーバの選択、キャンセルの指示、または、サインインの指示を受け付ける。
【００７９】
一方、認証情報を受信したと判断した場合（Ｓ２０８：ＹＥＳ）（図４の手順６９）も、ＣＰＵ１１は、ローカルサーバ４３を終了させる（Ｓ２１１）（図４の手順７０）。なお、ローカルサーバ４３にローカルサーバ４３自身を終了させても良い。その場合は、Ｓ２１０やＳ２１１は不要である。
【００８０】
そして、ＣＰＵ１１は、認証の完了したクラウドサーバについて、クラウド選択ウィンドウ４１２のボタン８５１（図３参照）の表示をサインイン中であることを示す表示に変更させる（Ｓ２１２）。Ｓ２１２は、サインイン表示処理の一例である。ＣＰＵ１１は、ボタン８５１を消去し、例えば、図８に示したように、「サインアウト」を示すボタン８５２を表示させる。ボタン８５２を表示させることで、ユーザにサインイン状態であることが伝わり易い。
【００８１】
Ｓ２１２の後、または、既にサインイン中であると判断した場合（Ｓ２０４：ＹＥＳ）、ＣＰＵ１１は、クラウドサーバへの保存の指示を受け付けたか否かを判断する（Ｓ２１３）。クラウドサーバへの保存は、クラウドサーバを利用する処理の一例であり、保存の指示は、実行指示の一例であり、Ｓ２１３は、実行指示受付処理の一例である。
【００８２】
なお、スキャンアプリ４１は、選択されたクラウドサーバがサインイン中であれば、クラウド選択ウィンドウ４１２に、図８に示したように、保存ボタン８７を表示させる。そして、ＣＰＵ１１は、スキャンアプリ４１がアクティブな状態で保存ボタン８７への操作を受け付ける。ただし、前述したように、Ｓ１０７にてブラウザ４２がアクティブな状態となり、ローカルサーバ４３を終了させた後も、ユーザ操作を受け付けない限り、ブラウザ４２がアクティブな状態のままとなっている。本形態では、認証完了画面９８（図７参照）に情報９８１〜９８５が含まれることで、スキャンアプリ４１をアクティブな状態とするためのユーザ操作を促す。
【００８３】
また、スキャンアプリ４１は、保存ボタン８７への操作を受け付けるに際して、自身がアクティブな状態であるか否かを判断する必要はない。例えば、前述したように、ボタンへのクリックやタッチがアクティブな状態への変更指示を兼ねている場合には、スキャンアプリ４１は、アクティブな状態であるか否かに関わらず、保存ボタン８７への操作を受け付ける。
【００８４】
クラウドサーバへの保存の指示を受け付けていないと判断した場合（Ｓ２１３：ＮＯ）、ＣＰＵ１１は、クラウドサーバへの保存をキャンセルする指示を受け付けたか否かを判断する（Ｓ２１４）。キャンセルの指示を受け付けていないと判断した場合（Ｓ２１４：ＮＯ）、ＣＰＵ１１は、Ｓ２１３に戻り、保存の指示またはキャンセルの指示を受け付けるまで待機する。
【００８５】
クラウドサーバへの保存の指示を受け付けたと判断した場合（Ｓ２１３：ＹＥＳ）、ＣＰＵ１１は、Ｓ２０８にて受信した認証情報を添えて、画像データをクラウドサーバへ送信する（Ｓ２１５）（図４の手順７１）。そして、Ｓ２１５の後、または、キャンセルの指示を受け付けたと判断した場合（Ｓ２１４：ＹＥＳ）、または、クラウドの選択がキャンセルされた場合（Ｓ２０３：ＹＥＳ）、ＣＰＵ１１は、アップロード処理を終了する。
【００８６】
次に、アップロード処理のＳ２０６にて起動されるローカルサーバ４３の処理であるローカルサーバ処理の手順について、図１１のフローチャートを参照して説明する。ローカルサーバ処理は、ローカルサーバ４３が起動されたことを契機に、ＰＣ１のＣＰＵ１１にて実行される。
【００８７】
ローカルサーバ処理では、ＣＰＵ１１は、リダイレクト要求を受信したか否かを判断する（Ｓ３０１）。リダイレクト要求を受信していないと判断した場合（Ｓ３０１：ＮＯ）、ＣＰＵ１１は、リダイレクト要求を受信するまで待機する。
【００８８】
リダイレクト要求を受信したと判断した場合（Ｓ３０１：ＹＥＳ）、ＣＰＵ１１は、受信したリダイレクト要求に認可コードが含まれているか否かを判断する（Ｓ３０２）。認可コードが含まれていると判断した場合（Ｓ３０２：ＹＥＳ）、ＣＰＵ１１は、認可コードをクラウドサーバに送信する（Ｓ３０３）（図４の手順６５）。そして、ＣＰＵ１１は、クラウドサーバから、アクセストークンとリフレッシュトークンとの組を受信する（Ｓ３０４）（図４の手順６６）。
【００８９】
さらに、ＣＰＵ１１は、認証結果が認証完了であることを示す完了画面のデータを取得する（Ｓ３０５）（図４の手順６７）。ＣＰＵ１１は、認証できたことを示す完了画面として、例えば、認証完了画面９８（図７参照）のウェブページデータを不揮発性メモリ１４から読み出す。
【００９０】
そして、ＣＰＵ１１は、取得したデータの表示をブラウザ４２に指示する（Ｓ３０６）（図４の手順６８）。ＣＰＵ１１は、取得した認証完了画面９８のデータをブラウザ４２に渡す。これにより、ブラウザ４２は、アクティブな状態となり、スキャンアプリ４１は、非アクティブな状態となる。Ｓ３０７は、認証結果表示処理と第２ブラウザアクティブ処理との一例である。さらに、ＣＰＵ１１は、受信したアクセストークンとリフレッシュトークンとの組を、スキャンアプリ４１に渡す（Ｓ３０７）（図４の手順６９）。
【００９１】
一方、受信したリダイレクト要求に認可コードが含まれていないと判断した場合（Ｓ３０２：ＮＯ）、ＣＰＵ１１は、認証ができなかったことを示す完了画面のデータを取得する（Ｓ３０８）（図４の手順７２）。例えば、認証がキャンセルされた場合には、ＣＰＵ１１は、認証できなかったことを示す完了画面として、キャンセルされた場合の未認証画面のウェブページデータを不揮発性メモリ１４から読み出す。
【００９２】
そして、ＣＰＵ１１は、取得したデータの表示をブラウザ４２に指示する（Ｓ３０９）（図４の手順７３）。Ｓ３０９では、ＣＰＵ１１は、例えば、未完了画面９９のデータをブラウザ４２に渡す。これにより、ブラウザ４２は、アクティブな状態となり、スキャンアプリ４１は、非アクティブな状態となる。Ｓ３１０も、認証結果表示処理と第２ブラウザアクティブ処理との一例である。そして、ＣＰＵ１１は、認証結果が認証未完了であることを示すエラー情報をスキャンアプリ４１に渡す（Ｓ３１０）（図４の手順７４）。
【００９３】
Ｓ３０６またはＳ３０９にてブラウザ４２に完了画面を表示する指示を行った場合、ブラウザ４２は、アクティブな状態となり、スキャンアプリ４１は、非アクティブな状態となる。これにより、完了画面が最前面に表示され、ユーザに認証状況が報知される。その一方で、その後の操作をスキャンアプリ４１にて行うためには、スキャンアプリ４１をユーザ操作によってアクティブな状態とすることが必要になる。本形態のスキャンアプリ４１は、完了画面である認証完了画面９８や未認証画面に、スキャンアプリ４１をアクティブな状態とすることを示す情報が含まれることから、スキャンアプリ４１をアクティブな状態とする必要性が認識し易く、ユーザの困惑の軽減が期待できる。
【００９４】
そして、ＣＰＵ１１は、ローカルサーバ４３を終了させる終了コマンドを受信したか否かを判断する（Ｓ３１１）。終了コマンドを受信していないと判断した場合（Ｓ３１１：ＮＯ）、ＣＰＵ１１は、終了コマンドを受信するまで待機する。そして、終了コマンドを受信したと判断した場合（Ｓ３１１：ＹＥＳ）、ＣＰＵ１１は、ローカルサーバ処理を終了し、ローカルサーバ４３を終了させる。なお、ローカルサーバ４３は、起動された後、所定時間が経過してもリダイレクト要求を受信しなかった場合、タイムアウトとして、自身を終了してもよい。
【００９５】
上述したローカルサーバ処理では、スキャンアプリ４１をアクティブな状態とするよう指示する情報を含む画面を表示するのみであり、ユーザの操作によってスキャンアプリ４１がアクティブな状態となる。しかし、ローカルサーバ処理にて、スキャンアプリ４１をアクティブな状態としてもよい。その場合、ローカルサーバ処理を、図１１のフローチャートにて説明したローカルサーバ処理に、スキャンアプリ４１をアクティブな状態とするための処理を加えた処理とする。
【００９６】
具体的には、ＣＰＵ１１は、図１１のローカルサーバ処理のＳ３１１にて終了コマンドを受け付けたと判断した場合、ローカルサーバ処理を終了する前に、スキャンアプリ４１をアクティブな状態とするコマンドをＯＳ４０に渡す。スキャンアプリ４１をアクティブな状態とするコマンドをＯＳ４０に渡す処理は、アプリアクティブ処理の一例である。これにより、アプリ用ウィンドウ４１１がアクティブな状態となって前面に表示されるので、ユーザにスキャンアプリ４１の操作に戻ることを促すことができる。スキャンアプリ４１を自動的にアクティブな状態に戻すことで、ユーザはアプリをアクティブな状態にする操作が不要になり、困惑の軽減が期待できる。
【００９７】
なお、スキャンアプリ４１をアクティブな状態とする場合でも、ブラウザ４２には、前述した完了画面（認証完了画面９８または未認証画面）を表示させることが好ましい。スキャンアプリ４１をアクティブな状態にした場合であっても、ブラウザ４２をアクティブな状態に戻してしまうユーザもいることから、ブラウザ４２に、スキャンアプリ４１をアクティブな状態にすることを示す情報を含む完了画面を表示させることで、ユーザは、アプリをアクティブな状態にする必要が有ることを認識でき、困惑の軽減が期待できる。また、完了画面を表示させることで、ユーザは、認証完了を認識できる。
【００９８】
また、ＣＰＵ１１は、図１１のローカルサーバ処理のＳ３１１にて終了コマンドを受け付けたと判断した場合、ローカルサーバ処理を終了する前に、ブラウザ４２を終了させるコマンドをＯＳ４０に渡してもよい。ブラウザ４２を終了させるコマンドをＯＳ４０に渡す処理は、ブラウザ終了処理の一例である。ブラウザ４２を終了させることで、ブラウザ４２の表示画面であるブラウザ表示画面４２１が閉じられ、ブラウザ４２の後面にあった表示画面がアクティブな状態となる。スキャンアプリ４１からブラウザ４２を起動していることから、スキャンアプリ４１がブラウザ４２の後面にある可能性が高く、スキャンアプリ４１がアクティブな状態となる可能性が高い。認証が完了した後はブラウザ４２が不要になるため、ブラウザ４２を終了させる方が、ユーザの手間を省けるとともにメモリの使用効率も高まる。
【００９９】
なお、ローカルサーバ４３は、認証結果を示す完了画面を表示した後、所定時間の経過を待ってからブラウザ４２を終了させてもよい。あるいは、認証に成功した場合に限りブラウザ４２を終了させるとしてもよい。
【０１００】
以上、詳細に説明したように、本形態のスキャンアプリ４１は、クラウドサーバへのサインインの指示を受け付けた場合、ブラウザ４２を起動させて認証ページを表示させ、クラウドサーバへの認証結果がブラウザ４２に表示される。そして、認証結果がブラウザ４２に表示された際には、ブラウザ４２がアクティブな状態となっており、ユーザがスキャンアプリ４１での操作を継続するためには、スキャンアプリ４１をアクティブな状態とする必要がある。本形態では、認証完了画面９８や未認証画面に、スキャンアプリ４１をアクティブな状態とすることを示す情報が含まれる。認証結果をブラウザ４２に表示させる際、スキャンアプリ４１をアクティブな状態にすることを示す特定情報を含めることで、ユーザはスキャンアプリ４１をアクティブな状態にする必要が有ることを認識でき、困惑の軽減が期待できる。
【０１０１】
なお、本実施の形態は単なる例示にすぎず、本発明を何ら限定するものではない。したがって本発明は当然に、その要旨を逸脱しない範囲内で種々の改良、変形が可能である。例えば、ＰＣ１に接続されるデバイスは、スキャナ等の画像データを取得する装置に限らず、プリンタ等の画像データに基づく印刷を行う装置であっても良い。つまり、本明細書に開示される技術は、クラウドサーバに画像データをアップロードするアプリに限らず、クラウドサーバから画像データをダウンロードするアプリにおいても、適用可能である。
【０１０２】
また、例えば、認証完了画面９８や未認証画面に含ませる特定情報は、図７に例示したものに限らず、例えば、スキャナ２等のスキャンアプリ４１の制御対象となるデバイスの画像、ブラウザ４２を閉じる動作などを示す動画、音声メッセージ等でもよい。
【０１０３】
また、例えば、ローカルサーバ４３による画面データの取得処理（ローカルサーバ処理のＳ３０５、Ｓ３０８、図４の手順６７、７２）とブラウザ４２への表示の指示（ローカルサーバ処理のＳ３０６、Ｓ３０９、図４の手順６８、７３）は、スキャンアプリ４１への結果の送信（ローカルサーバ処理のＳ３０７、Ｓ３１０、図４の手順６９、７４）の後でもよい。
【０１０４】
また、例えば、認証方式は、ＯＡｕｔｈ２．０を用いた認証方式に限らない。スキャンアプリ４１は、選択されたクラウドサーバにて採用されている認証方式に基づいて、認証要求を行うと良い。
【０１０５】
また、クラウドサーバへの認証が成功した後、ブラウザによって認証結果が通知されるが、アプリケーションプログラムをアクティブな状態にした後は、ブラウザの終了や、ブラウザがアプリケーションプログラムと重なって後面に配置されることで、認証に成功しているか否か、すなわち、サインイン状態であるか否かが、ユーザに取って分かり難い。
【０１０６】
本明細書の技術によれば、アプリケーションプログラムが「サインアウト」ボタンを表示するので、ユーザは、アプリケーションプログラムのウィンドウを見るだけで、サインイン状態であることを認識でき、ユーザの困惑を軽減できる。
【０１０７】
また、実施の形態に開示されている処理は、単一のＣＰＵ、複数のＣＰＵ、ＡＳＩＣなどのハードウェア、またはそれらの組み合わせで実行されてもよい。また、実施の形態に開示されている処理は、その処理を実行するためのプログラムを記録した記録媒体、または方法等の種々の態様で実現することができる。
【符号の説明】
【０１０８】
１  ＰＣ
１１  ＣＰＵ
１５  タッチパネル
４１  スキャンアプリ
４２  ブラウザ
４３  ローカルサーバ
【図１】
2019149132.tif 000003
【図２】
2019149132.tif 000004
【図３】
2019149132.tif 000005
【図４】
2019149132.tif 000006
【図５】
2019149132.tif 000007
【図６】
2019149132.tif 000008
【図７】
2019149132.tif 000009
【図８】
2019149132.tif 000010
【図９】
2019149132.tif 000011
【図１０】
2019149132.tif 000012
【図１１】
2019149132.tif 000013