(57)【特許請求の範囲】
【請求項１】
１以上の情報処理装置を含み、所定の処理をそれぞれ実行する複数のプログラムを有する情報処理システムであって、
電子データを用いた一連の処理を外部サービスと連携して実行するアプリケーション毎に、前記一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別するプログラム識別情報と、１以上の前記プログラムの実行順とが定義されたフロー情報を、前記アプリケーションを識別するアプリ識別情報と、前記一連の処理に用いる前記電子データを指定させる画面の画面情報とに関連付けて記憶する第１の記憶手段と、
前記情報処理システムに接続される１以上の機器のうちの一の機器から、前記アプリ識別情報と、該アプリ識別情報により識別されるアプリケーションと連携して前記一連の処理を実行する外部サービスの識別情報とを含む第１の要求を受け付けると、該第１の要求に含まれる該外部サービスの識別情報により識別される外部サービスから認可トークンを取得し、該取得した認可トークンと、ユーザの識別情報と、前記アプリ識別情報とを関連付けて第２の記憶手段に記憶させる認可手段と、
前記１以上の機器のうちの一の機器から前記アプリ識別情報を含む第２の要求を受け付けると、該第２の要求に含まれる該アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記画面情報を、要求元の前記一の機器に送信する送信手段と、
前記送信手段により送信された前記画面情報に基づき前記一の機器に表示された画面を介してユーザにより指定された電子データに関する情報を含む第３の要求を前記一の機器から受け付けると、前記ユーザの識別情報と前記アプリ識別情報とに関連付けて前記第２の記憶手段に記憶されている認可トークンを用いて、前記アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記実行順に従って実行させることで、前記第３の要求に含まれる前記電子データに関する情報に基づく電子データを用いた前記一連の処理を実行する処理実行手段と、
を有し、
前記認可手段は、
前記アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記フロー情報に基づいて前記認可トークンのスコープを決定する、情報処理システム。
【請求項２】
前記認可手段は、
前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれに予め設定されたスコープに基づいて、前記認可トークンのスコープを決定する、請求項１に記載の情報処理システム。
【請求項３】
前記認可手段は、
前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれに予め設定されたスコープの和を、前記認可トークンのスコープに決定する、請求項２に記載の情報処理システム。
【請求項４】
前記処理実行手段は、
さらに、電子データに対して、該電子データのデータ型を所定のデータ型に変換する型変換手段を１以上有し、
前記電子データのデータ型を、前記型変換手段により前記プログラムが処理可能なデータ型に変換した後、前記プログラムを実行させることで、前記電子データを用いた前記一連の処理を実行する、請求項１乃至３の何れか一項に記載の情報処理システム。
【請求項５】
前記プログラムには、外部サービスに関する処理を実行するプログラムを含み、
前記外部サービスに関する処理を実行するプログラムには、
外部サービスに対して電子データをアップロードする処理を実行するプログラムを少なくとも含む、請求項１乃至４の何れか一項に記載の情報処理システム。
【請求項６】
前記外部サービス毎に、複数の前記外部サービスに対して共通に定義された共通ＡＰＩと、前記外部サービス毎に固有に定義された固有ＡＰＩとを含む外部サービス連携手段を有し、
前記外部サービスに関する処理を実行するプログラムは、
前記共通ＡＰＩ又は前記固有ＡＰＩを用いて、前記外部サービスに関する処理を実行する、請求項５に記載の情報処理システム。
【請求項７】
所定の処理をそれぞれ実行する複数のプログラムを有する情報処理装置であって、
電子データを用いた一連の処理を外部サービスと連携して実行するアプリケーション毎に、前記一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別するプログラム識別情報と、１以上の前記プログラムの実行順とが定義されたフロー情報を、前記アプリケーションを識別するアプリ識別情報と、前記一連の処理に用いる前記電子データを指定させる画面の画面情報とに関連付けて記憶する第１の記憶手段と、
前記情報処理装置に接続される１以上の機器のうちの一の機器から、前記アプリ識別情報と、該アプリ識別情報により識別されるアプリケーションと連携して前記一連の処理を実行する外部サービスの識別情報とを含む第１の要求を受け付けると、該第１の要求に含まれる該外部サービスの識別情報により識別される外部サービスから認可トークンを取得し、該取得した認可トークンと、ユーザの識別情報と、前記アプリ識別情報とを関連付けて第２の記憶手段に記憶させる認可手段と、
前記１以上の機器のうちの一の機器から前記アプリ識別情報を含む第２の要求を受け付けると、該第２の要求に含まれる該アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記画面情報を、要求元の前記一の機器に送信する送信手段と、
前記送信手段により送信された前記画面情報に基づき前記一の機器に表示された画面を介してユーザにより指定された電子データに関する情報を含む第３の要求を前記一の機器から受け付けると、前記ユーザの識別情報と前記アプリ識別情報とに関連付けて前記第２の記憶手段に記憶されている認可トークンを用いて、前記アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記実行順に従って実行させることで、前記第３の要求に含まれる前記電子データに関する情報に基づく電子データを用いた前記一連の処理を実行する処理実行手段と、
を有し、
前記認可手段は、
前記アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記フロー情報に基づいて前記認可トークンのスコープを決定する、情報処理装置。
【請求項８】
１以上の情報処理装置を含み、所定の処理をそれぞれ実行する複数のプログラムを有する情報処理システムであって、電子データを用いた一連の処理を外部サービスと連携して実行するアプリケーション毎に、前記一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別するプログラム識別情報と、１以上の前記プログラムの実行順とが定義されたフロー情報を、前記アプリケーションを識別するアプリ識別情報と、前記一連の処理に用いる前記電子データを指定させる画面の画面情報とに関連付けて記憶する第１の記憶手段を有する情報処理システムに用いられる情報処理方法において、
前記情報処理システムに接続される１以上の機器のうちの一の機器から、前記アプリ識別情報と、該アプリ識別情報により識別されるアプリケーションと連携して前記一連の処理を実行する外部サービスの識別情報とを含む第１の要求を受け付けると、該第１の要求に含まれる該外部サービスの識別情報により識別される外部サービスから認可トークンを取得し、該取得した認可トークンと、ユーザの識別情報と、前記アプリ識別情報とを関連付けて第２の記憶手段に記憶させる認可手順と、
前記１以上の機器のうちの一の機器から前記アプリ識別情報を含む第２の要求を受け付けると、該第２の要求に含まれる該アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記画面情報を、要求元の前記一の機器に送信する送信手順と、
前記送信手順により送信された前記画面情報に基づき前記一の機器に表示された画面を介してユーザにより指定された電子データに関する情報を含む第３の要求を前記一の機器から受け付けると、前記ユーザの識別情報と前記アプリ識別情報とに関連付けて前記第２の記憶手段に記憶されている認可トークンを用いて、前記アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記実行順に従って実行させることで、前記第３の要求に含まれる前記電子データに関する情報に基づく電子データを用いた前記一連の処理を実行する処理実行手順と、
を有し、
前記認可手順は、
前記アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記フロー情報に基づいて前記認可トークンのスコープを決定する、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置、及び情報処理方法に関する。
【背景技術】
【０００２】
近年、クラウドコンピューティング等により多種多様な外部サービスが提供されるようになった。例えば、ユーザにより指定された電子データを外部ストレージに保管する外部サービス等が知られている。
【０００３】
また、例えば画像形成装置で原稿をスキャンして取得した画像データを外部ストレージに保管する技術が知られている（例えば特許文献１参照）。このように、画像形成装置と外部サービスとが連携して処理を行う技術が従来から知られている。
【０００４】
ここで、外部サービスと連携して処理を行う際に用いられる認証方法には、ＯＡｕｔｈと呼ばれる技術が知られている。ＯＡｕｔｈでは、外部サービスと連携して処理を行うアプリケーションに対して、スコープとして設定された範囲内で当該外部サービスのリソースの利用を認可する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の従来技術においては、スコープの設定が適切になされていない場合があった。このため、例えば、アプリケーションが必要なリソースを利用することができない場合や、ユーザの意図しないリソースをアプリケーションが利用してしまう場合等があった。
【０００６】
本発明の実施の形態は、上記の点に鑑みてなされたもので、外部サービスと連携した処理を行うアプリケーションに対して適切なスコープを設定することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明の実施の形態は、１以上の情報処理装置を含み、所定の処理をそれぞれ実行する複数のプログラムを有する情報処理システムであって、電子データを用いた一連の処理を外部サービスと連携して実行するアプリケーション毎に、前記一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別するプログラム識別情報と、１以上の前記プログラムの実行順とが定義されたフロー情報を、前記アプリケーションを識別するアプリ識別情報と、前記一連の処理に用いる前記電子データを指定させる画面の画面情報とに関連付けて記憶する第１の記憶手段と、前記情報処理システムに接続される１以上の機器のうちの一の機器から、前記アプリ識別情報と、該アプリ識別情報により識別されるアプリケーションと連携して前記一連の処理を実行する外部サービスの識別情報とを含む第１の要求を受け付けると、該第１の要求に含まれる該外部サービスの識別情報により識別される外部サービスから認可トークンを取得し、該取得した認可トークンと、ユーザの識別情報と、前記アプリ識別情報とを関連付けて第２の記憶手段に記憶させる認可手段と、前記１以上の機器のうちの一の機器から前記アプリ識別情報を含む第２の要求を受け付けると、該第２の要求に含まれる該アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記画面情報を、要求元の前記一の機器に送信する送信手段と、前記送信手段により送信された前記画面情報に基づき前記一の機器に表示された画面を介してユーザにより指定された電子データに関する情報を含む第３の要求を前記一の機器から受け付けると、前記ユーザの識別情報と前記アプリ識別情報とに関連付けて前記第２の記憶手段に記憶されている認可トークンを用いて、前記アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記実行順に従って実行させることで、前記第３の要求に含まれる前記電子データに関する情報に基づく電子データを用いた前記一連の処理を実行する処理実行手段と、を有し、前記認可手段は、前記アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記フロー情報に基づいて前記認可トークンのスコープを決定する、ことを特徴とする。
【発明の効果】
【０００８】
本発明の実施の形態によれば、外部サービスと連携した処理を行うアプリケーションに対して適切なスコープを設定することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態に係る情報処理システムの一例のシステム構成を示す図である。
【図２】本実施形態に係るサービス提供システムの一例のハードウェア構成を示す図である。
【図３】本実施形態に係る機器の一例のハードウェア構成を示す図である。
【図４】本実施形態に係る情報処理システムの一例の機能構成を示す図である。
【図５】共通Ｉ／Ｆ及び固有Ｉ／Ｆの一例を説明するための図である。
【図６】ＯＡｕｔｈ登録情報テーブルの一例を示す図である。
【図７】認可トークン情報テーブルの一例を示す図である。
【図８】処理内容の一例を示す図である。
【図９】本実施形態に係るロジック処理部の一例の機能構成を示す図である。
【図１０】コンポーネント情報テーブルの一例を示す図である。
【図１１】型変換情報テーブルの一例を示す図である。
【図１２】本実施形態に係る認可トークン情報の保存処理の一例のシーケンス図である。
【図１３】認可画面の一例を示す図である。
【図１４】スコープの決定の他の例について説明する図である。
【図１５】確認画面の一例を示す図である。
【図１６】本実施形態に係るスキャン配信サービスの全体処理の一例のシーケンス図である。
【図１７】スキャン配信サービスを利用するためのアプリ画面の一例を示す図である。
【図１８】本実施形態に係るスキャン配信サービスにおける処理内容の実行処理の一例のシーケンス図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
【００１１】
＜システム構成＞
まず、本実施形態に係る情報処理システム１のシステム構成について、図１を参照しながら説明する。図１は、本実施形態に係る情報処理システム１の一例のシステム構成を示す図である。
【００１２】
図１に示す情報処理システム１は、サービス提供システム１０と、機器２０と、外部ストレージシステム３０とを含み、インターネット等の広域的なネットワークＮ１を介して通信可能に接続されている。
【００１３】
サービス提供システム１０は、一台以上の情報処理装置で実現され、ネットワークＮ１を介して、クラウドサービス等の外部サービスと連携した一連の処理により実現される各種のサービスを提供する。
【００１４】
本実施形態に係るサービス提供システム１０が提供するサービスの具体例については後述する。なお、以降では、一連の処理を「処理フロー」とも表す。
【００１５】
なお、本実施形態では、外部サービスの具体例としてクラウドサービスを採用して説明するが、これに限られない。本実施形態は、例えば、ＡＳＰ（Application Service Provider）によって提供されるサービスやＷｅｂサービス等のネットワークを介して提供される各種の外部サービスに関して適用されても良い。
【００１６】
機器２０は、ユーザが使用する各種の電子機器である。すなわち、機器２０は、例えば、ＭＦＰ（Multifunction Peripheral）等の画像形成装置、ＰＣ（パーソナルコンピュータ）、プロジェクタ、電子黒板、デジタルカメラ等である。ユーザは、機器２０を用いて、サービス提供システム１０が提供する各種のサービスを利用することができる。
【００１７】
なお、以降では、複数の機器２０について、各々を区別するときは、「機器２０１」、「機器２０２」等と添え字を用いて記載する。
【００１８】
外部ストレージシステム３０は、ネットワークＮ１を介してストレージサービス（又はオンラインストレージ）と呼ばれるクラウドサービスを提供するコンピュータシステムである。ストレージサービスとは、外部ストレージシステム３０のストレージの記憶領域を貸し出すサービスである。
【００１９】
なお、以降では、複数の外部ストレージシステム３０について、各々を区別するときは、「外部ストレージシステム３０１」、「外部ストレージシステム３０２」等と添え字を用いて記載する。また、外部ストレージシステム３０１により提供されるストレージサービスの名称を「ストレージＡ」、外部ストレージシステム３０１により提供されるストレージサービスの名称を「ストレージＢ」等とする。
【００２０】
なお、外部ストレージシステム３０は、複数台の情報処理装置によって実現されるシステムであっても良い。
【００２１】
また、図１に示す情報処理システム１の構成は一例であって、他の構成であっても良い。例えば、本実施形態に係る情報処理システム１には、電子データの入力及び出力の少なくとも一方を行う各種機器が含まれ、これらの機器がサービス提供システム１０により提供される各種サービスを利用しても良い。
【００２２】
＜ハードウェア構成＞
次に、本実施形態に係る情報処理システム１に含まれるサービス提供システム１０のハードウェア構成について、図２を参照しながら説明する。図２は、本実施形態に係るサービス提供システム１０の一例のハードウェア構成を示す図である。
【００２３】
図２に示すサービス提供システム１０は、入力装置１１と、表示装置１２と、外部Ｉ／Ｆ１３と、ＲＡＭ（Random Access Memory）１４とを有する。また、サービス提供システム１０は、ＲＯＭ（Read Only Memory）１５と、ＣＰＵ（Central Processing Unit）１６と、通信Ｉ／Ｆ１７と、ＨＤＤ（Hard Disk Drive）１８とを有する。これらの各ハードウェアは、それぞれがバスＢで接続されている。
【００２４】
入力装置１１は、キーボードやマウス、タッチパネル等を含み、ユーザが各操作信号を入力するのに用いられる。表示装置１２は、ディスプレイ等を含み、サービス提供システム１０による処理結果を表示する。なお、入力装置１１及び表示装置１２の少なくとも一方は、必要なときにサービス提供システム１０に接続して利用する形態であっても良い。
【００２５】
通信Ｉ／Ｆ１７は、サービス提供システム１０をネットワークＮ１に接続するインタフェースである。これにより、サービス提供システム１０は、通信Ｉ／Ｆ１７を介して通信を行うことができる。
【００２６】
ＨＤＤ１８は、プログラムやデータを格納している不揮発性の記憶装置である。ＨＤＤ１８に格納されるプログラムやデータには、サービス提供システム１０全体を制御する基本ソフトウェアであるＯＳ（Operating System）、ＯＳ上において各種機能を提供するアプリケーションソフトウェア等がある。
【００２７】
なお、サービス提供システム１０は、ＨＤＤ１８に代え、記憶媒体としてフラッシュメモリを用いるドライブ装置（例えばソリッドステートドライブ：ＳＳＤ）を利用するものであっても良い。また、ＨＤＤ１８は、格納しているプログラムやデータを所定のファイルシステム及び／又はＤＢにより管理している。
【００２８】
外部Ｉ／Ｆ１３は、外部装置とのインタフェースである。外部装置には、記録媒体１３ａ等がある。これにより、サービス提供システム１０は、外部Ｉ／Ｆ１３を介して記録媒体１３ａの読み取りや書き込みを行うことができる。記録媒体１３ａには、フレキシブルディスク、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリ等がある。
【００２９】
ＲＯＭ１５は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。ＲＯＭ１５には、サービス提供システム１０の起動時に実行されるＢＩＯＳ（Basic Input/Output System）、ＯＳ設定、及びネットワーク設定等のプログラムやデータが格納されている。ＲＡＭ１４は、プログラムやデータを一時保持する揮発性の半導体メモリである。
【００３０】
ＣＰＵ１６は、ＲＯＭ１５やＨＤＤ１８等の記憶装置からプログラムやデータをＲＡＭ１４上に読み出し、処理を実行することで、サービス提供システム１０全体の制御や機能を実現する演算装置である。
【００３１】
本実施形態に係るサービス提供システム１０は、図２に示すハードウェア構成を有することにより、後述するような各種処理を実現できる。
【００３２】
次に、本実施形態に係る情報処理システム１に含まれる機器２０が画像形成装置である場合のハードウェア構成について、図３を参照しながら説明する。図３は、本実施形態に係る機器２０の一例のハードウェア構成を示す図である。
【００３３】
図３に示す機器２０は、コントローラ２１と、操作パネル２２と、外部Ｉ／Ｆ２３と、通信Ｉ／Ｆ２４と、プリンタ２５と、スキャナ２６とを有する。また、コントローラ２１は、ＣＰＵ３１と、ＲＡＭ３２と、ＲＯＭ３３と、ＮＶＲＡＭ３４と、ＨＤＤ３５とを有する。
【００３４】
ＲＯＭ３３は、各種プログラムやデータを格納している不揮発性の半導体メモリである。ＲＡＭ３２は、プログラムやデータを一時保持する揮発性の半導体メモリである。ＮＶＲＡＭ３４は、例えば設定情報等を格納している。また、ＨＤＤ３５は、各種プログラムやデータを格納している不揮発性の記憶装置である。
【００３５】
ＣＰＵ３１は、ＲＯＭ３３やＮＶＲＡＭ３４、ＨＤＤ３５等からプログラムやデータ、設定情報等をＲＡＭ３２上に読み出し、処理を実行することで、機器２０全体の制御や機能を実現する演算装置である。
【００３６】
操作パネル２２は、ユーザからの入力を受け付ける入力部と、表示を行う表示部とを備えている。外部Ｉ／Ｆ２３は、外部装置とのインタフェースである。外部装置には、記録媒体２３ａ等がある。これにより、機器２０は、外部Ｉ／Ｆ２３を介して記録媒体２３ａの読み取り及び／又は書き込みを行うことができる。なお、記録媒体２３ａには、例えば、ＩＣカード、フレキシブルディスク、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリ等がある。
【００３７】
通信Ｉ／Ｆ２４は、機器２０をネットワークに接続するインタフェースである。これにより、機器２０は、通信Ｉ／Ｆ２４を介して通信を行うことができる。プリンタ２５は、印刷データを印刷する印刷装置である。スキャナ２６は、原稿を読み取って電子ファイル（画像ファイル）を生成する読取装置である。
【００３８】
本実施形態に係る機器２０は、図３に示すハードウェア構成を有することにより、後述するような各種処理を実現できる。
【００３９】
＜サービス提供システムが提供するサービス＞
ここで、本実施形態に係るサービス提供システム１０が提供するサービスについて説明する。なお、以降では、機器２０が画像形成装置であるものとして説明する。
【００４０】
本実施形態に係るサービス提供システム１０は、例えば、機器２０において原稿をスキャンして生成された電子ファイルを、ＯＣＲ（Optical Character Recognition）処理して、外部ストレージシステム３０に保存するサービス（スキャン配信サービス）を提供する。また、本実施形態に係るサービス提供システム１０は、例えば、外部ストレージシステム３０に保存されている電子ファイルを、機器２０で印刷するサービス（クラウドプリントサービス）を提供する。
【００４１】
以降では、本実施形態に係るサービス提供システム１０は、上述したスキャン配信サービスを提供するものとして説明する。
【００４２】
ただし、サービス提供システム１０により提供されるサービスは、これらに限られない。例えば、サービス提供システム１０は、外部ストレージシステム３０に保存されている電子ファイルを、プロジェクタで投影するサービスを提供しても良い。また、例えば、サービス提供システム１０は、機器２０において原稿をスキャンして生成された電子ファイルを、ＯＣＲ処理した後、所定の言語に翻訳（例えば、英語を日本語に翻訳）して、外部ストレージシステム３０に保存するサービスを提供しても良い。
【００４３】
＜機能構成＞
次に、本実施形態に係る情報処理システム１の機能構成について、図４を参照しながら説明する。図４は、本実施形態に係る情報処理システム１の一例の機能構成を示す図である。
【００４４】
機器２０は、ＣＰＵ３１により実行されるブラウザ２１０を有する。機器２０のユーザは、ブラウザ２１０を介して、サービス提供システム１０により提供されるサービスを利用することができる。
【００４５】
このように、本実施形態に係る機器２０は、ブラウザ２１０が搭載されていれば良い。したがって、本実施形態に係る情報処理システム１では、サービス提供システム１０により提供されるサービスを機器２０が利用するための専用のアプリケーションを開発等する必要がない。
【００４６】
また、機器２０は、認可処理部２２０を有する。認可処理部２２０は、後述する認可アプリ提供部１２１を介して取得された認可アプリ１２２がブラウザ２１０上で実行されることにより実現される。認可処理部２２０は、ユーザの操作に応じて、後述するアプリ情報１０００の外部ストレージシステム３０に対するＯＡｕｔｈの認可（以降、単に「認可」とも表す。）に関する処理を行う。
【００４７】
サービス提供システム１０は、サービス処理部１１０と、認可サービス部１２０と、認証部１３０と、ドキュメントサービス部１４０と、ストレージサービス連携部１５０とを有する。これらの各部は、サービス提供システム１０にインストールされた１以上のプログラムが、ＣＰＵ１６に実行させる処理により実現される。
【００４８】
また、サービス提供システム１０は、ＯＡｕｔｈ登録情報記憶部１６０と、認可トークン情報記憶部１７０と、アプリ情報記憶部１８０とを有する。これら各記憶部は、ＨＤＤ１８を用いて実現可能である。なお、これら各記憶部は、サービス提供システム１０とネットワークを介して接続される記憶装置を用いて実現されても良い。
【００４９】
サービス処理部１１０は、サービス提供システム１０が提供する各種のサービスを実現するための処理を行う。サービス処理部１１０は、アプリ管理部１１１と、ロジック処理部１１２と、データＩ／Ｆ部１１３と、スコープ決定部１１４とを有する。
【００５０】
アプリ管理部１１１は、アプリ情報記憶部１８０に記憶されているアプリ情報１０００を管理する。アプリ管理部１１１は、ブラウザ２１０からの要求に応じて、アプリ情報１０００に含まれる画面定義１１００に基づくアプリ画面を返信する。
【００５１】
これにより、機器２０のブラウザ２１０には、サービス提供システム１０により提供されるサービスを利用するためのアプリ画面が表示される。なお、アプリ情報１０００には、上述したアプリ画面を機器２０に表示させるための画面定義１１００と、当該アプリ情報１０００により提供されるサービスを実現する一連の処理を示す処理内容１２００とが含まれる。
【００５２】
また、アプリ管理部１１１は、ロジック処理部１１２からの要求に応じて、アプリ情報１０００に含まれる処理内容１２００を返信する。処理内容１２００は、上述したように、サービス提供システム１０により提供されるサービス（例えば、スキャン配信サービス）を実現する一連の処理である。なお、処理内容１２００の詳細については後述する。
【００５３】
ロジック処理部１１２は、ブラウザ２１０からの要求に応じて、アプリ管理部１１１を介して、アプリ情報１０００に含まれる処理内容１２００を取得する。そして、ロジック処理部１１２は、アプリ管理部１１１を介して取得した処理内容１２００に基づいて、ドキュメントサービス部１４０やファイル処理部１５１、認証部１３０等に対して処理の実行を要求する。
【００５４】
これにより、サービス提供システム１０により提供される各種のサービスが実現される。なお、ロジック処理部１１２の詳細については後述する。
【００５５】
データＩ／Ｆ部１１３は、ブラウザ２１０からの要求に応じて、ストレージサービス連携部１５０のデータ処理部１５２に対して、所定の要求（例えば、フォルダ一覧の取得要求等）を行う。
【００５６】
スコープ決定部１１４は、アプリ情報１０００の外部ストレージシステム３０に対する認可のスコープを決定する。すなわち、スコープ決定部１１４は、後述する認証部１３０により取得される認可トークンのスコープを決定する。なお、スコープとは、アプリ情報１０００により提供されるサービスにおいて、当該アプリ情報１０００が外部ストレージシステム３０のリソースを利用可能な範囲を特定する情報である。
【００５７】
ここで、スコープ決定部１１４は、アプリ情報１０００に含まれる処理内容１２００に基づいて、適切なスコープを決定する。したがって、本実施形態に係るサービス提供システム１０では、例えば、ユーザは、認可トークンのスコープを明示的に設定する必要がない。
【００５８】
認可サービス部１２０は、機器２０においてアプリ情報１０００の外部ストレージシステム３０に対する認可に関する処理を行わせる。認可サービス部１２０は、認可アプリ提供部１２１と、認可アプリ１２２とを有する。認可アプリ提供部１２１は、ブラウザ２１０からの要求に応じて、当該ブラウザ２１０に認可アプリ１２２を提供（送信）する。
【００５９】
なお、認可アプリ１２２は、例えば、ＪａｖａＳｃｒｉｐｔ（登録商標）等で実現されるアプリケーションであり、認可アプリ１２２がブラウザ２１０上で実行されることにより、上述した認可処理部２２０が実現される。
【００６０】
認証部１３０は、認可処理部２２０からの要求に応じて、ＯＡｕｔｈ登録情報記憶部１６０からＯＡｕｔｈ登録情報を取得する。なお、ＯＡｕｔｈ登録情報とは、例えば、外部ストレージシステム３０における認可サーバＵＲＬ等であり、情報処理システム１の管理者等により外部ストレージシステム３０毎に設定された情報である。ＯＡｕｔｈ登録情報の詳細については後述する。
【００６１】
また、認証部１３０は、認可処理部２２０からの要求に応じて、外部ストレージシステム３０から認可トークンを取得する。そして、認証部１３０は、取得した認可トークンを認可トークン情報記憶部１７０に保存する。
【００６２】
これにより、本実施形態に係るサービス提供システム１０では、スコープ決定部１１４により決定されたスコープの認可トークンが保存される。このため、本実施形態に係るサービス提供システム１０では、保存された認可トークンを用いて、外部ストレージシステム３０と連携した一連の処理により実現されるサービスを提供することができる。
【００６３】
ドキュメントサービス部１４０は、サービス提供システム１０により提供されるサービスを実現するための一連の処理に含まれる一の処理を実現するプログラム（モジュール）群である。ドキュメントサービス部１４０には、例えば、電子ファイルに対してＯＣＲ処理を実行するＯＣＲ処理１４１、電子ファイルを機器２０が印刷可能な印刷データに変換する印刷変換処理１４２等が含まれる。
【００６４】
なお、ドキュメントサービス部１４０は、これら以外にも、例えば、電子ファイルの圧縮又は解凍するためのプログラム、言語の翻訳処理を行うためのプログラム等の各種のプログラムが含まれていても良い。
【００６５】
ストレージサービス連携部１５０は、ロジック処理部１１２及びデータＩ／Ｆ部１１３からの要求に応じて、外部ストレージシステム３０に対して、各種の処理の実行を要求する。
【００６６】
ここで、本実施形態に係るサービス提供システム１０は、外部ストレージシステム３０毎に、ストレージサービス連携部１５０を有する。すなわち、本実施形態に係るサービス提供システム１０は、外部ストレージシステム３０１に対して処理の実行を要求するためのストレージサービスＡ連携部１５０１を有する。同様に、本実施形態に係るサービス提供システム１０は、外部ストレージシステム３０２に対して処理の実行を要求するためのストレージサービスＢ連携部１５０２等を有する。
【００６７】
このように、本実施形態に係るサービス提供システム１０は、連携して処理を行う外部ストレージシステム３０毎に、それぞれ対応するストレージサービス連携部１５０を有する。なお、以降では、複数のストレージサービス連携部１５０について、各々を区別するときは、上記のように「ストレージサービスＡ連携部１５０１」、「ストレージサービスＢ連携部１５０２」等と添え字を用いて表す。
【００６８】
ストレージサービス連携部１５０は、ロジック処理部１１２からの要求を受け付けるファイル処理部１５１と、データＩ／Ｆ部１１３からの要求を受け付けるデータ処理部１５２とを有する。
【００６９】
ファイル処理部１５１は、外部ストレージシステム３０に保存されている電子ファイルに対する操作（例えば、取得、保存、編集等）を行うためのＡＰＩ（Application Programming Interface）が定義された共通Ｉ／Ｆ１５１１及び固有Ｉ／Ｆ１５１２を有する。
【００７０】
共通Ｉ／Ｆ１５１１は、複数の外部ストレージシステム３０間で共通に利用できるＡＰＩであり、例えば図５（ａ）に示すＡＰＩが挙げられる。すなわち、ファイル処理部１５１の共通Ｉ／Ｆ１５１１は、全ての外部ストレージシステム３０が利用できるファイル操作に関する機能（例えば、ファイルの取得、保存等）を利用するためのＡＰＩ群である。
【００７１】
一方、固有Ｉ／Ｆ１５１２は、特定の外部ストレージシステム３０において利用できるＡＰＩであり、例えば図５（ｂ）に示すＡＰＩが挙げられる。すなわち、ファイル処理部１５１の固有Ｉ／Ｆ１５１２は、ある特定の外部ストレージシステム３０において利用できるファイル操作に関する機能（例えば、ファイルの編集等）を利用するためのＡＰＩ群である。
【００７２】
したがって、共通Ｉ／Ｆ１５１１は、全てのストレージサービス連携部１５０に対して同様に定義される一方、固有Ｉ／Ｆ１５１２は、当該固有Ｉ／Ｆ１５１２で定義されるＡＰＩが利用可能な特定のストレージサービス連携部１５０に対して定義される。
【００７３】
一方、データ処理部１５２は、外部ストレージシステム３０に保存されている電子ファイルの書誌情報等のメタデータ（例えば、ファイル一覧、フォルダ一覧等）を取得等するためのＡＰＩが定義された共通Ｉ／Ｆ１５２１及び固有Ｉ／Ｆ１５２２を有する。
【００７４】
共通Ｉ／Ｆ１５２１は、複数の外部ストレージシステム３０間で共通に利用できるＡＰＩであり、例えば図５（ｃ）に示すようなＡＰＩが挙げられる。すなわち、データ処理部１５２の共通Ｉ／Ｆ１５２１は、全ての外部ストレージシステム３０で利用できるメタデータ取得等の機能を利用するためのＡＰＩ群である。
【００７５】
一方、固有Ｉ／Ｆ１５２２は、ある特定の外部ストレージシステム３０において利用できるＡＰＩであり、例えば図５（ｄ）に示すようなＡＰＩが挙げられる。すなわち、データ処理部１５２の固有Ｉ／Ｆ１５２２は、ある特定の外部ストレージシステム３０において利用できるメタデータ取得等の機能（例えば、画像ファイル一覧の取得等）を利用するためのＡＰＩ群である。
【００７６】
したがって、共通Ｉ／Ｆ１５２１は、全てのストレージサービス連携部１５０に対して同様に定義される一方、固有Ｉ／Ｆ１５２２は、当該固有Ｉ／Ｆ１５２２で定義されるＡＰＩが利用可能な特定のストレージサービス連携部１５０に対して定義される。
【００７７】
なお、ストレージサービス連携部１５０の追加等は、ＳＤＫ（Software Development Kit）を用いて行うことができる。
【００７８】
ここで、図５に示す共通Ｉ／Ｆ１５１１及び固有Ｉ／Ｆ１５１２で定義されるＡＰＩは、「外部サービス名（ストレージサービス名）」を指定することで利用することができる（すなわち、「ストレージサービス名」が可変部分として定義されている）。共通Ｉ／Ｆ１５２１及び固有Ｉ／Ｆ１５２２についても同様である。
【００７９】
ＯＡｕｔｈ登録情報記憶部１６０は、ＯＡｕｔｈ登録情報が格納されているＯＡｕｔｈ登録情報テーブル１６００を記憶する。ここで、ＯＡｕｔｈ登録情報テーブル１６００の詳細について、図６を参照しながら説明する。図６は、ＯＡｕｔｈ登録情報テーブルの一例を示す図である。
【００８０】
図６に示すＯＡｕｔｈ登録情報テーブル１６００に格納されるＯＡｕｔｈ登録情報は、データ項目として、外部サービスＩＤと、クライアントＩＤと、クライアントシークレットと、認可サーバＵＲＬと、リダイレクト先ＵＲＬとを有する。
【００８１】
外部サービスＩＤは、外部ストレージシステム３０を一意に識別する識別情報である。したがって、ＯＡｕｔｈ登録情報は、外部ストレージシステム３０毎に、ＯＡｕｔｈの認可に用いるクライアントＩＤ、クライアントシークレット、認可サーバＵＲＬ、及びリダイレクト先ＵＲＬが関連付けられた情報である。
【００８２】
認可トークン情報記憶部１７０は、認可トークン情報が格納されている認可トークン情報テーブル１７００を記憶する。ここで、認可トークン情報テーブル１７００の詳細について、図７を参照しながら説明する。図７は、認可トークン情報テーブルの一例を示す図である。
【００８３】
図７に示す認可トークン情報テーブル１７００に格納される認可トークン情報は、データ項目として、ユーザＩＤと、アプリＩＤと、外部サービスＩＤと、認可トークンと、スコープと、有効期限とを有する。
【００８４】
ユーザＩＤは、サービス提供システム１０の利用者（ユーザ）を一意に識別する識別情報である。アプリＩＤは、アプリ情報１０００を一意に識別する識別情報である。したがって、認可トークン情報は、ユーザ及びアプリ情報１０００毎に、外部ストレージシステム３０の認可トークン、当該認可トークンのスコープ、及び当該認可トークンの有効期限が関連付けられた情報である。
【００８５】
アプリ情報記憶部１８０は、機器２０にサービスを提供するためのアプリ情報１０００を記憶する。アプリ情報１０００には、機器２０にアプリ画面を表示させるための画面定義１１００と、機器２０に提供するサービスを実現するための一連の処理を示す処理内容１２００とが含まれる。
【００８６】
アプリ情報１０００には、当該アプリ情報１０００を一意に識別するためのアプリＩＤが関連付けられている。本実施形態では、ストレージサービスＡと連携したサービス（Ｓｃａｎ  ｔｏ  ストレージサービスＡ）を提供するためのアプリ情報１０００を「アプリ情報１０００Ａ」とし、当該アプリ情報１０００ＡのアプリＩＤを「app001」とする。
【００８７】
なお、本実施形態では、アプリ情報１０００には、一の画面定義１１００と、一の処理内容１２００とが含まれるものとして説明する。ただし、これに限られず、アプリ情報１０００には、複数の画面定義や複数の処理内容が含まれていても良い。
【００８８】
ここで、アプリ情報１０００Ａに含まれる処理内容１２００Ａの詳細について、図８を参照しながら説明する。図８は、処理内容の一例を示す図である。
【００８９】
図８に示す処理内容１２００Ａは、入力された電子ファイルをＯＣＲ処理した後、ストレージサービスＡの認可トークンを取得して、当該ストレージサービスＡに配信（アップロード）する一連の処理を示している。
【００９０】
すなわち、処理１２０１Ａでは、電子ファイルを入力することを示しており、処理１２０２Ａでは、入力された電子ファイルをＯＣＲ処理することを示している。同様に、処理１２０３Ａでは、ストレージサービスＡの認可トークンを取得することを示しており、処理１２０４Ａでは、ストレージサービスＡに配信することを示している。
【００９１】
これにより、本実施形態に係るサービス提供システム１０は、機器２０においてスキャンにより生成された電子ファイルをＯＣＲ処理した後、ストレージサービスＡに配信するスキャン配信サービスを実現することができる。
【００９２】
なお、図８に示す処理内容１２００Ａに定義された各処理の実行順は、上から順に実行される。すなわち、図８に示す処理内容１２００Ａに基づく一連の処理（処理フロー）では、処理１２０１Ａに定義された処理、処理１２０２Ａに定義された処理、処理１２０３Ａに定義された処理、及び処理１２０４Ａに定義された処理の順で実行される。ただし、これに限られず、処理内容１２００Ａには、例えば、各処理の実行順を示す情報が定義されていても良い。
【００９３】
次に、本実施形態に係るロジック処理部１１２の詳細な機能構成について、図９を参照しながら説明する。図９は、本実施形態に係るロジック処理部１１２の一例の機能構成を示す図である。
【００９４】
本実施形態に係るロジック処理部１１２は、フロー実行部４０１と、コンポーネント管理部４０２と、コンポーネント群４０３と、型変換管理部４０４と、型変換群４０５とを有する。また、本実施形態に係るロジック処理部１１２は、コンポーネント情報テーブル２０００と、型変換情報テーブル３０００とを利用する。
【００９５】
フロー実行部４０１は、ブラウザ２１０から処理の実行要求を受け付けると、アプリ管理部１１１を介して、アプリ情報１０００に含まれる処理内容１２００を取得する。そして、フロー実行部４０１は、取得した処理内容１２００に基づいてコンポーネントに対して処理の実行を要求する。
【００９６】
なお、コンポーネントとは、処理内容１２００により示される一連の処理に含まれる一の処理を実行するためのモジュール等であり、例えばクラスや関数等で定義される。すなわち、処理内容１２００により示される一連の処理は、コンポーネントが実行する処理により実現される。
【００９７】
コンポーネント管理部４０２は、フロー実行部４０１からの要求に応じて、コンポーネントの生成を行う。なお、コンポーネントの生成とは、例えばクラスで定義されたコンポーネントを、メモリ（例えばＲＡＭ１４）上に展開することを意味する。
【００９８】
また、コンポーネント管理部４０２は、スコープ決定部１１４からの要求に応じて、コンポーネント情報テーブル２０００に格納されているコンポーネント情報を返信する。ここで、コンポーネント情報テーブル２０００の詳細について、図１０を参照しながら説明する。図１０は、コンポーネント情報テーブルの一例を示す図である。
【００９９】
図１０に示すコンポーネント情報テーブル２０００に格納されるコンポーネント情報は、データ項目として、コンポーネント名と、外部サービスＩＤと、スコープとを有する。すなわち、コンポーネント情報は、コンポーネント毎に、当該コンポーネントが処理を実行するために必要な外部ストレージシステム３０のスコープが関連付けられた情報である。
【０１００】
例えば、コンポーネント名「配信Ａコンポーネント」には、外部サービスＩＤ「service-a」の外部ストレージシステム３０１におけるスコープ「aa」が関連付けられている。これは、コンポーネント名「配信Ａコンポーネント」のコンポーネントを実行するには、外部ストレージシステム３０１の認可トークンのスコープが「aa」である必要があることを示している。
【０１０１】
なお、ＯＣＲコンポーネントや認証Ａコンポーネントには、スコープが設定されていない。これは、これらのコンポーネントが外部ストレージシステム３０のリソースを利用しない、又は認可の必要がないリソースを利用するためである。
【０１０２】
コンポーネント群４０３は、コンポーネントの集合である。コンポーネント群４０３には、外部ストレージシステム３０１（ストレージサービスＡ）に電子ファイルを配信するための配信Ａコンポーネント４１１、ストレージサービスＡの認可トークンを取得するための認証Ａコンポーネント４１２が含まれる。また、コンポーネント群４０３には、電子ファイルにＯＣＲ処理を行うためのＯＣＲコンポーネント４１３が含まれる。
【０１０３】
なお、コンポーネント群４０３には、これら以外にも、例えば、外部ストレージシステム３０２（ストレージサービスＢ）に電子ファイルを配信するための配信Ｂコンポーネント、電子ファイルを印刷データに変換するための印刷変換コンポーネント等が含まれる。
【０１０４】
さらに、これらの各コンポーネントは、コンポーネント共通Ｉ／Ｆ４１０を有する。コンポーネント共通Ｉ／Ｆ４１０は、各コンポーネントに対して共通に定義されたＡＰＩであり、コンポーネントを生成するためのＡＰＩと、コンポーネントに対して処理の実行を要求するためのＡＰＩとが含まれる。
【０１０５】
このように、各コンポーネントがコンポーネント共通Ｉ／Ｆ４１０を有することで、コンポーネントの追加等に伴う影響を局所化することができる。すなわち、フロー実行部４０１やコンポーネント管理部４０２等に影響を与えることなく、コンポーネントの追加等を行うことができる。このため、本実施形態に係るサービス提供システム１０では、コンポーネントの追加等の開発に要する工数を削減することができる。
【０１０６】
型変換管理部４０４は、データ型の型変換を管理する。ここで、各コンポーネントは、自身が扱えるデータ型が予め決まっている。したがって、型変換管理部４０４は、コンポーネントからの要求に応じて、型変換情報テーブル３０００を参照して、型変換群４０５に定義されている型変換を生成する。そして、型変換管理部４０４は、生成された型変換に対して型変換処理の実行を要求する。
【０１０７】
なお、型変換とは、データ型の型変換処理を実行するためのモジュール等であり、例えばクラスや関数等で定義される。
【０１０８】
ここで、型変換情報テーブル３０００の詳細について、図１１を参照しながら説明する。図１１は、型変換情報テーブルの一例を示す図である。
【０１０９】
図１１に示す型変換情報テーブル３０００に格納される型変換情報は、データ項目として、変換前のデータ型と、変換後のデータ型と、生成する型変換とを有する。すなわち、型変換情報は、変換前のデータ型及び変換後のデータ型毎に、当該変換前のデータ型を当該変換後のデータ型に型変換するために生成する型変換が関連付けられた情報である。
【０１１０】
これにより、例えば、ストリームデータを示すデータ型「InputStream」のデータを、記憶装置等に格納されている電子ファイルのパス（アドレス）を示すデータ型「LocalFilePath」に型変換する場合、第１の型変換を生成すれば良いことが示される。
【０１１１】
なお、型変換の生成とは、例えばクラスで定義された型変換を、メモリ（例えばＲＡＭ１４）上に展開することを意味する。また、データ型には、上述した「InputStream」や「LocalFilePath」以外に、例えば、電子ファイルの実体を示すデータ型「File」等が挙げられる。
【０１１２】
型変換群４０５は、型変換の集合である。型変換群４０５には、データ型「InputStream」のデータを、データ型「LocalFilePath」のデータに変換する第１の型変換４２１が含まれる。また、型変換群４０５には、データ型「LocalFilePath」のデータを、データ型「File」のデータに変換する第２の型変換４２２等が含まれる。
【０１１３】
さらに、これらの各型変換は、型変換共通Ｉ／Ｆ４２０を有する。型変換共通Ｉ／Ｆ４２０は、各型変換に対して共通に定義されたＡＰＩであり、型変換を生成するためのＡＰＩと、型変換に対して処理の実行を要求するためのＡＰＩとが含まれる。
【０１１４】
このように、各型変換が型変換共通Ｉ／Ｆ４２０を有することで、型変換の追加等に伴い影響を局所化することができる。すなわち、型変換管理部４０４等に影響を与えることなく、型変換の追加等を行うことができる。このため、本実施形態に係るサービス提供システム１０では、型変換の追加等の開発に要する工数を削減することができる。
【０１１５】
＜処理の詳細＞
次に、本実施形態に係る情報処理システム１の処理の詳細について説明する。
【０１１６】
以降では、ユーザがアプリ情報１０００を認可する処理について、図１２を参照しながら説明する。図１２は、本実施形態に係る認可トークン情報の保存処理の一例のシーケンス図である。
【０１１７】
まず、ユーザは、ブラウザ２１０を介して、アプリ情報１０００を認可するための操作を行う。すると、ブラウザ２１０は、認可アプリの取得を認可アプリ提供部１２１に要求する（ステップＳ１２０１）。そして、認可アプリ提供部１２１は、認可アプリ１２２をブラウザ２１０に返信する。
【０１１８】
ブラウザ２１０は、取得した認可アプリ１２２を当該ブラウザ２１０上で実行する（ステップＳ１２０２）。これにより、認可処理部２２０が生成される。
【０１１９】
次に、認可処理部２２０は、アプリ一覧の取得をアプリ管理部１１１に要求する（ステップＳ１２０３）。そして、アプリ管理部１１１は、アプリ一覧を返信する。なお、アプリ一覧とは、アプリ情報記憶部１８０に記憶されているアプリ情報１０００の書誌情報の一覧であり、例えば、アプリ情報１０００により提供されるサービスのサービス名、アプリＩＤ等の一覧である。
【０１２０】
ブラウザ２１０は、アプリ一覧を受け取ると、例えば図１３に示す認可画面４０００を表示させる（ステップＳ１２０４）。ここで、認可画面４０００には、アプリ管理部１１１から受け取ったアプリ一覧に基づいて表示されるアプリケーション一覧４００１と、ストレージサービスを選択するためのストレージサービス一覧４００２とが含まれる。また、認可画面４０００には、アプリケーション一覧４００１から選択されたアプリケーションを、ストレージサービス一覧４００２から選択されたストレージサービスで認可するための認可ボタン４００３が含まれる。
【０１２１】
アプリケーション一覧４００１には、アプリ情報１０００のアプリケーション名の一覧が表示されている。例えば、アプリケーション一覧４００１には、アプリ情報１０００Ａのアプリケーション名「「Ｓｃａｎ  ｔｏ  ストレージサービスＡ」アプリケーション」等が表示されている。
【０１２２】
また、ストレージサービス一覧４００２には、外部ストレージシステム３０により提供されるストレージサービス名の一覧が表示されている。例えば、ストレージサービス一覧４００２には、外部ストレージシステム３０１により提供される「ストレージサービスＡ」や外部ストレージシステム３０２により提供される「ストレージサービスＢ」等が表示されている。
【０１２３】
ユーザは、図１３に示す認可画面４０００において、アプリケーション一覧４００１及びストレージサービス一覧４００２から認可対象のアプリケーション及びストレージサービスをそれぞれ選択し、認可ボタン４００３を押下する操作を行う。すると、ブラウザ２１０は、当該操作を受け付けて、選択されたアプリケーションの認可を認可処理部２２０に要求する（ステップＳ１２０５）。
【０１２４】
なお、認可要求には、ユーザによりアプリケーション一覧４００１から選択されたアプリケーションのアプリＩＤと、ユーザによりストレージサービス一覧４００２から選択されたストレージサービスの外部サービスＩＤとが含まれる。
【０１２５】
以降では、ユーザによりアプリケーション一覧４００１及びストレージサービス一覧４００２から「「Ｓｃａｎ  ｔｏ  ストレージサービスＡ」アプリケーション」及び「ストレージサービスＡ」がそれぞれ選択され、認可ボタン４００３が押下されたものとする。この場合、認可要求には、アプリ情報１０００ＡのアプリＩＤ「app001」と、外部ストレージシステム３０１の外部サービスＩＤ「service_a」とが含まれる。
【０１２６】
なお、アプリケーション一覧４００１から選択されたアプリケーションに応じて、当該選択されたアプリケーションと連携して処理を行うストレージサービスがストレージサービス一覧４００２に選択可能に表示されても良い。例えば、アプリケーション一覧４００１からストレージサービスＡ及びストレージサービスＣと連携して処理を行うアプリケーションが選択された場合、ストレージサービス一覧４００２には、ストレージサービスＡ及びストレージサービスＣが選択可能に表示されても良い。
【０１２７】
認可処理部２２０は、認可要求を受け取ると、スコープの取得をスコープ決定部１１４に要求する（ステップＳ１２０６）。なお、当該取得要求には、アプリＩＤ「app001」と、外部ストレージシステム３０１の外部サービスＩＤ「service_a」とが含まれる。
【０１２８】
スコープ決定部１１４は、スコープの取得要求を受け取ると、処理内容の取得をアプリ管理部１１１に要求する（ステップＳ１２０７）。なお、処理内容の取得要求には、アプリＩＤ「app001」が含まれる。
【０１２９】
そして、アプリ管理部１１１は、処理内容の取得要求を受け取ると、当該取得要求に含まれるアプリＩＤのアプリ情報１０００に含まれる処理内容１２００を返信する。すなわち、アプリ管理部１１１は、アプリＩＤ「app001」のアプリ情報１０００Ａに含まれる処理内容１２００Ａを返信する。
【０１３０】
次に、スコープ決定部１１４は、コンポーネント情報テーブル２０００の取得をロジック処理部１１２に要求する（ステップＳ１２０８）。そして、ロジック処理部１１２は、コンポーネント情報テーブル２０００を返信する。
【０１３１】
続いて、スコープ決定部１１４は、ステップＳ１２０７で取得した処理内容１２００Ａと、ステップＳ１２０８で取得したコンポーネント情報テーブル２０００とに基づいて、スコープを決定する（ステップＳ１２０９）。そして、スコープ決定部１１４は、決定したスコープを認可処理部２２０に返信する。
【０１３２】
すなわち、処理内容１２００Ａにより示される一連の処理は、処理１２０２Ａに対応するＯＣＲコンポーネント４１３と、処理１２０３Ａに対応する認証Ａコンポーネント４１２と、処理１２０４Ａに対応する配信Ａコンポーネント４１１とにより実行される。
【０１３３】
ここで、コンポーネント情報テーブル２０００において、ＯＣＲコンポーネント４１３と認証Ａコンポーネント４１２には、スコープが設定されていない。一方で、コンポーネント情報テーブル２０００において、配信Ａコンポーネント４１１には、スコープ「aa」が設定されている。
【０１３４】
しがって、スコープ決定部１１４は、アプリ情報１０００Ａのスコープを「aa」に決定する。このように、スコープ決定部１１４は、アプリ情報１０００に含まれる処理内容１２００により示される一連の処理を実行する各コンポーネントに設定されたスコープの和を、当該アプリ情報１０００のスコープとして決定する。
【０１３５】
ここで、スコープの決定の他の例について、図１４を参照しながら説明する。図１４は、スコープの決定の他の例について説明する図である。
【０１３６】
図１４に示すように、例えば、処理内容１２００により示される一連の処理が、認証Ａコンポーネントと、取得Ａコンポーネントと、ＯＣＲコンポーネントＡと、配信Ａコンポーネントとにより実行されるとする。また、コンポーネント情報テーブル２０００において、それぞれのコンポーネントのスコープが「-」、「bb」、「-」、及び「aa」であるとする。この場合、スコープ決定部１１４は、当該処理内容１２００を含むアプリ情報１０００のスコープを「aa,bb」と決定する。
【０１３７】
このように、スコープ決定部１１４は、一連の処理に含まれる各処理を実行する各コンポーネントに予め設定されたスコープの和をアプリケーションのスコープとして決定する。このため、本実施形態に係るサービス提供システム１０では、アプリケーションのスコープを適切に（すなわち、必要かつ十分な範囲に）設定することができる。
【０１３８】
図１２の説明に戻る。認可処理部２２０は、ＯＡｕｔｈ登録情報の取得を認証部１３０に要求する（ステップＳ１２１０）。なお、当該取得要求には、ユーザにより選択されたアプリケーション（アプリＩＤ「app001」のアプリ情報１０００Ａ）が連携して処理を行う外部ストレージシステム３０１の外部サービスＩＤ「service_a」が含まれる。
【０１３９】
そして、認証部１３０は、ＯＡｕｔｈ登録情報の取得を受け取ると、当該取得要求に含まれる外部サービスＩＤ「service_a」に対応するＯＡｕｔｈ登録情報をＯＡｕｔｈ登録情報テーブル１６００から取得して、認可処理部２２０に返信する。
【０１４０】
認可処理部２２０は、ＯＡｕｔｈ登録情報を受け取ると、当該ＯＡｕｔｈ登録情報に含まれる認可サーバＵＲＬ「http://www.○○○.com/auth」にブラウザ２１０をリダイレクトさせる。ここで、認可サーバＵＲＬとは、外部ストレージシステム３０に対する認証を行うための認証画面（例えば、ログイン画面）等のＵＲＬである。
【０１４１】
次に、ユーザは、認証画面において、認証を行うための認証情報（例えば、外部ストレージシステム３０１の利用者ＩＤ及びパスワード）を入力して認証を行う。すると、認証部１３０は、認証を外部ストレージシステム３０１に要求する（ステップＳ１２１１）。なお、当該認証要求には、認証情報が含まれる。
【０１４２】
そして、外部ストレージシステム３０１は、認証要求を受け取ると、当該認証要求に対する認証結果を返信する。以降では、外部ストレージシステム３０１は、認証成功を示す認証結果を返信したものとして説明を続ける。
【０１４３】
次に、認可処理部２２０は、認証成功を示す認証結果を受け取ると、アプリ情報１０００Ａの認可を外部ストレージシステム３０１に要求する（ステップＳ１２１１）。なお、当該認可要求には、ステップＳ１２０９でスコープ決定部１１４から返信されたスコープ「aa」と、ステップＳ１２１０で取得したＯＡｕｔｈ登録情報に含まれるクライアントＩＤ及びリダイレクト先ＵＲＬとが含まれる。
【０１４４】
そして、外部ストレージシステム３０１は、認可要求に対する認可応答を示す認可コードを発行し、ブラウザ２１０に返信するとともに、当該ブラウザ２１０をリダイレクト先ＵＲＬにリダイレクトさせる。
【０１４５】
なお、上記のステップＳ１２１１で認証が成功した後、ブラウザ２１０に、例えば図１５に示す確認画面５０００を表示させても良い。図１５に示す確認画面５０００は、サービス提供システム１０が該当の外部ストレージシステム３０においてスコープで設定された範囲内でリソースを利用することを、ユーザに確認させるための画面である。そして、図１５に示す確認画面５０００において、ユーザにより「アクセスを許可」ボタン５００１が押下された場合に、ステップＳ１２１１における認可要求を該当の外部ストレージシステム３０に送信するようにしても良い。
【０１４６】
次に、認可処理部２２０は、ステップＳ１２１２で取得した認可コードを認証部１３０に送信する（ステップＳ１２１３）。また、このとき、認可処理部２２０は、外部サービスＩＤ「service_a」も認証部１３０に送信する。
【０１４７】
続いて、認証部１３０は、認可コード及び外部サービスＩＤを受け取ると、当該外部サービスＩＤ「service_a」により示される外部ストレージシステム３０１に認可トークンの取得を要求する（ステップＳ１２１４）。なお、認可トークンの取得要求には、上記の認可コード、ＯＡｕｔｈ登録情報において外部サービスＩＤに対応付けられたクライアントＩＤ及びクライアントシークレットが含まれる。
【０１４８】
そして、外部ストレージシステム３０１は、認可トークンと、当該認可トークンの有効期限とを返信する。なお、このとき、外部ストレージシステム３０１は、認可トークンの有効期限が経過した場合に認可トークンを再取得するためのリフレッシュトークンを併せて返信しても良い。
【０１４９】
認証部１３０は、認可トークン及び有効期限を受け取ると、当該認可トークン及び有効期限を認可トークン情報テーブル１７００に格納する（ステップＳ１２１５）。このとき、認証部１３０は、認可トークン及び有効期限を、ユーザＩＤ、認可対象のアプリ情報１０００のアプリＩＤ、連携して処理を行う外部ストレージシステム３０の外部サービスＩＤ、スコープ決定部１１４により決定されたスコープに関連付けて格納する。
【０１５０】
以上により、本実施形態に係るサービス提供システム１０では、ユーザにより選択されたアプリケーション（アプリ情報１０００）の外部ストレージシステム３０における認可処理を行うことができる。しかも、本実施形態に係るサービス提供システム１０では、アプリ情報１０００に含まれる処理内容１２００に基づいて、認可トークンのスコープを適切な範囲に設定することができる。
【０１５１】
このため、本実施形態に係るサービス提供システム１０では、例えば、スコープの範囲が狭すぎるためにアプリ情報１０００に基づく一連の処理が実行できないといった事態を防止することができる。また、同様に、本実施形態に係るサービス提供システム１０では、例えば、スコープの範囲が広すぎるためにアプリ情報１０００に基づく一連の処理において、ユーザが意図しないリソースに対するアクセスが発生してしまうといった事態を防止することができる。
【０１５２】
次に、ユーザが、機器２０を用いて、ストレージサービスＡと連携したスキャン配信サービスを利用する場合の処理について、図１６を参照しながら説明する。図１６は、本実施形態に係るスキャン配信サービスの全体処理の一例のシーケンス図である。
【０１５３】
まず、ユーザは、ブラウザ２１０を用いて、サービス提供システム１０により提供されるサービスの一覧を取得するための操作を行う。すると、ブラウザ２１０は、サービス一覧の取得をアプリ管理部１１１に要求する（ステップＳ１６０１）。
【０１５４】
そして、アプリ管理部１１１は、サービス一覧の取得要求を受け取ると、サービス提供システム１０により提供されるサービスの一覧をブラウザ２１０に返信する。これにより、機器２０の操作パネル２２には、ブラウザ２１０により、サービス提供システム１０により提供されるサービスの一覧が表示される。なお、サービスの一覧には、例えば、サービス名と、当該サービス名のサービスを提供するためのアプリ情報１０００のアプリＩＤとが含まれる。
【０１５５】
ユーザは、機器２０の操作パネル２２上に表示されたサービスの一覧から自身が利用を所望するサービスを選択する。すると、ブラウザ２１０は、ユーザにより選択されたサービスを提供するためのアプリ情報１０００のアプリＩＤをアプリ管理部１１１に送信する（ステップＳ１６０２）。ここで、以降では、ユーザによりサービス名「Ｓｃａｎ  ｔｏ  ストレージサービスＡ」が選択されたものとして説明する。したがって、ブラウザ２１０は、アプリ情報１０００ＡのアプリＩＤ「app001」をアプリ管理部１１１に送信する。
【０１５６】
そして、アプリ管理部１１１は、ブラウザ２１０から受け取ったアプリＩＤ「app001」のアプリ情報１０００Ａに含まれる画面定義に基づいて、ＨＴＭＬ（HyperText Markup Language）形式のアプリ画面を生成して、当該ブラウザ２１０に返信する。
【０１５７】
ブラウザ２１０は、アプリ管理部１１１からアプリ画面を受け取ると、表示用情報の取得をデータＩ／Ｆ部１１３に要求する（ステップＳ１６０３）。ここで、表示用情報とは、例えばアプリ画面に含まれる選択欄の各選択要素のことである。すなわち、本実施形態では、ブラウザ２１０は、スキャン配信の配信先（保存先）となるストレージサービスＡのフォルダの一覧の取得をデータＩ／Ｆ部１１３に要求する。
【０１５８】
次に、データＩ／Ｆ部１１３は、表示用情報の取得要求を受け取ると、当該要求に対応するストレージサービス連携部１５０のデータ処理部１５２に、当該要求を送信する（ステップＳ１６０４）。すなわち、データＩ／Ｆ部１１３は、ストレージサービスＡ連携部１５０１のデータＩ／Ｆ部１１３１に表示用情報の取得要求を送信する。
【０１５９】
データ処理部１５２は、データＩ／Ｆ部１１３から表示用情報の取得要求を受け取ると、当該取得要求に対応する処理要求を該当の外部ストレージシステム３０に送信する（ステップＳ１６０５）。すなわち、データ処理部１５２１は、フォルダ一覧の取得要求を外部ストレージシステム３０１に送信する。すると、ブラウザ２１０は、ストレージサービスＡ連携部１５０１を介してフォルダ一覧を取得する。
【０１６０】
ここで、上記で取得されたフォルダ一覧は、ストレージサービスＡと連携したスキャン配信サービスにおいて、電子ファイルの保存先の候補となるストレージサービスＡのフォルダ名及びフォルダＩＤ等の情報である。
【０１６１】
次に、ブラウザ２１０は、ステップＳ１６０２でアプリ管理部１１１から取得したアプリ画面と、上記で取得したフォルダ一覧とに基づいて、例えば図１７に示すアプリ画面６０００を操作パネル２２上に表示させる（ステップＳ１６０６）。
【０１６２】
ここで、図１７に示すアプリ画面６０００は、ストレージサービスＡと連携したスキャン配信サービス（Ｓｃａｎ  ｔｏ  ストレージサービスＡ）を利用するための画面である、アプリ画面６０００には、ファイル名入力欄６００１と、保存先フォルダ選択欄６００２と、スキャン実行ボタン６００３とが含まれる。
【０１６３】
ファイル名入力欄６００１は、機器２０においてスキャンして生成された画像データ（電子ファイル）に対して付与するファイル名を入力する入力欄である。保存先フォルダ選択欄６００２は、ストレージサービスＡにおいて当該電子ファイルを保存する保存先のフォルダを選択するための選択欄であり、上記で取得したフォルダ一覧に基づきブラウザ２１０で生成される。スキャン実行ボタン６００３は、機器２０においてスキャンを実行して、サービスの利用を開始するためのボタンである。
【０１６４】
ユーザは、図１７に示すアプリ画面６０００において、ファイル名入力欄６００１に所望のファイル名を入力し、保存先フォルダ選択欄６００２から所望の保存先フォルダを選択する。そして、機器２０のスキャナ２６に原稿をセットして、スキャン実行ボタン６００３を押下する。すると、ブラウザ２１０は、これらの操作を受け付ける（ステップＳ１６０７）。
【０１６５】
ここで、以降では、ユーザによりファイル名入力欄６００１にファイル名「test」が入力されて、保存先フォルダ選択欄６００２からフォルダ「FolderA」が選択された上で、スキャン実行ボタン６００３が押下されたものとして説明する。これにより、機器２０のスキャナ２６により原稿が読み取られ、電子ファイルが生成される（ステップＳ１６０８）。
【０１６６】
次に、ブラウザ２１０は、ストレージサービスＡと連携したスキャン配信サービスの処理の実行をロジック処理部１１２に要求する（ステップＳ１６０９）。なお、当該実行要求には、アプリ情報１０００ＡのアプリＩＤ「app001」と、ステップＳ１６０８で生成された電子ファイルと、ストレージサービスＡにおける当該電子ファイルの保存先フォルダ「FolderB」のフォルダＩＤ「folder_id_b」とが含まれる。
【０１６７】
続いて、ロジック処理部１１２は、処理の実行要求を受け取ると、当該実行要求に含まれるアプリＩＤのアプリ情報１０００に含まれる処理内容１２００の実行処理を行う（ステップＳ１６１０）。すなわち、ロジック処理部１１２は、アプリＩＤ「app001」のアプリ情報１０００Ａに含まれる処理内容１２００Ａの実行処理を行う。これにより、ファイル名「test」の電子ファイル（スキャンにより生成された電子ファイルをＯＣＲ処理した電子ファイル）がストレージサービスＡのフォルダ名「FolderB」のフォルダに保存される。
【０１６８】
ここで、上記のステップＳ１６１０の処理内容の実行の処理の詳細について、図１８を参照しながら説明する。図１８は、本実施形態に係るスキャン配信サービスにおける処理内容の実行処理の一例のシーケンス図である。
【０１６９】
フロー実行部４０１は、ブラウザ２１０から処理の実行要求を受け取ると、アプリ管理部１１１を介して、当該実行要求に含まれるアプリＩＤ「app001」のアプリ情報１０００Ａに含まれる処理内容１２００Ａを取得する（ステップＳ１８０１）。すなわち、フロー実行部４０１は、アプリ管理部１１１を介して、図８に示す処理内容１２００Ａを取得する。
【０１７０】
次に、フロー実行部４０１は、取得した処理内容１２００Ａに基づいて、コンポーネントの取得をコンポーネント管理部４０２に要求する（ステップＳ１８０２）。すなわち、フロー実行部４０１は、図８に示す処理内容１２００Ａにおいて処理１２０１Ａの次に記述されている処理１２０２Ａに基づいて、ＯＣＲコンポーネント４１３の取得をコンポーネント管理部４０２に要求する。
【０１７１】
コンポーネント管理部４０２は、ＯＣＲコンポーネント４１３の取得要求を受け取ると、ＯＣＲコンポーネント４１３を生成する（ステップＳ１８０３）。ＯＣＲコンポーネント４１３の生成は、コンポーネント共通Ｉ／Ｆ４１０に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。
【０１７２】
そして、コンポーネント管理部４０２は、生成したＯＣＲコンポーネント４１３をフロー実行部４０１に返却する。すなわち、コンポーネント管理部４０２は、例えば、ＯＣＲコンポーネント４１３が展開されたメモリ（例えばＲＡＭ１４）上のアドレスをフロー実行部４０１に返却する。
【０１７３】
フロー実行部４０１は、生成されたＯＣＲコンポーネント４１３に対して、データを指定して処理の実行を要求する（ステップＳ１８０４）。なお、ここで指定されるデータは、データ型が「InputStream」としてブラウザ２１０から渡された電子ファイルである。
【０１７４】
すなわち、フロー実行部４０１は、ブラウザ２１０からデータ型「InputStream」として渡された電子ファイルを、単に「データ」として（データ型を意識することなく）、ＯＣＲコンポーネント４１３に渡して処理の実行を要求する。図１８では、このようにデータ型を意識することなく渡される電子ファイル等を、単に「データ」と表す。
【０１７５】
ＯＣＲコンポーネント４１３は、処理の実行要求を受け取ると、型変換管理部４０４に対して、型変換を要求する（ステップＳ１８０５）。なお、当該型変換要求には、データと、ＯＣＲコンポーネント４１３が扱うことができるデータ型を示す「LocalFilePath」の指定とが含まれる。
【０１７６】
型変換管理部４０４は、型変換要求を受け取ると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１８０６）。
【０１７７】
ここで、受け取った型変換要求に含まれるデータのデータ型は「InputStream」である一方、指定されたデータ型は「LocalFilePath」である。したがって、型変換管理部４０４は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致しないものと判断する。
【０１７８】
すると、型変換管理部４０４は、型変換情報テーブル３０００を参照して、「InputStream」を「LocalFilePath」に変換するための型変換を特定して（ここでは、第１の型変換４２１が特定される）、当該特定された型変換を生成する（ステップＳ１８０７）。
【０１７９】
次に、型変換管理部４０４は、生成された第１の型変換４２１に対して、データを指定して型変換処理の実行を要求する（ステップＳ１８０８）。
【０１８０】
そして、第１の型変換４２１は、型変換処理の実行要求を受け取ると、当該実行要求に含まれるデータのデータ型を「InputStream」から「LocalFilePath」に変換して（ステップＳ１８０９）、当該変換後のデータを型変換管理部４０４に返信する。その後、型変換管理部４０４は、型変換後のデータをＯＣＲコンポーネント４１３に送信する（ステップＳ１８１０）。
【０１８１】
ＯＣＲコンポーネント４１３は、型変換後のデータを受け取ると、処理を実行する（ステップＳ１８１１）。すなわち、データ型「LocalFilePath」のデータ（すなわち、パス又はアドレス）により示される電子ファイルに対して、ＯＣＲ処理を実行する。
【０１８２】
より具体的には、ＯＣＲコンポーネント４１３は、ドキュメントサービス部１４０のＯＣＲ処理１４１に処理を要求し、ＯＣＲ処理１４１が当該電子ファイルに対して処理を実行する。そして、ＯＣＲコンポーネント４１３は、ＯＣＲ処理後の電子ファイルを示すデータをフロー実行部４０１に返信する。
【０１８３】
なお、ＯＣＲコンポーネント４１３により返信されるデータは、ＯＣＲ処理後の電子ファイルを示すパス又はアドレスである（すなわち、返信されるデータのデータ型は「LocalFilePath」である。）。
【０１８４】
次に、フロー実行部４０１は、取得した処理内容１２００Ａに基づいて、コンポーネントの取得をコンポーネント管理部４０２に要求する（ステップＳ１８１２）。すなわち、フロー実行部４０１は、図８に示す処理内容１２００Ａにおいて処理１２０２Ａの次に記述されている処理１２０３Ａに基づいて、認証Ａコンポーネント４１２の取得をコンポーネント管理部４０２に要求する。
【０１８５】
コンポーネント管理部４０２は、認証Ａコンポーネント４１２の取得要求を受け取ると、認証Ａコンポーネント４１２を生成する（ステップＳ１８１３）。認証Ａコンポーネント４１２の生成は、コンポーネント共通Ｉ／Ｆ４１０に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。
【０１８６】
そして、コンポーネント管理部４０２は、生成した認証Ａコンポーネント４１２をフロー実行部４０１に返却する。すなわち、コンポーネント管理部４０２は、例えば、認証Ａコンポーネント４１２が展開されたメモリ（例えばＲＡＭ１４）上のアドレスをフロー実行部４０１に返却する。
【０１８７】
フロー実行部４０１は、生成された認証Ａコンポーネント４１２に対して、データを指定して処理の実行を要求する（ステップＳ１８１４）。なお、ここで指定されるデータは、ＯＣＲ処理後の電子ファイルのアドレス又はパスを示すデータ型が「LocalFilePath」のデータである。
【０１８８】
認証Ａコンポーネント４１２は、処理の実行要求を受け取ると、型変換管理部４０４に対して、型変換を要求する（ステップＳ１８１５）。なお、当該型変換要求には、データと、認証Ａコンポーネント４１２が扱うことができるデータ型を示す「LocalFilePath」の指定とが含まれる。
【０１８９】
型変換管理部４０４は、型変換要求を受け取ると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１８１６）。
【０１９０】
ここで、受け取った型変換要求に含まれるデータのデータ型は「LocalFilePath」であり、指定されたデータ型も「LocalFilePath」である。したがって、型変換管理部４０４は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するものと判断する。
【０１９１】
そして、型変換管理部４０４は、型変換要求に含まれていたデータを認証Ａコンポーネント４１２に送信する（ステップＳ１８１７）。このように、データ型チェック（ステップＳ１８１６の処理）においてデータ型が一致すると判断した場合には、型変換管理部４０４は、型変換の生成を行わない。
【０１９２】
認証Ａコンポーネント４１２は、型変換管理部４０４からデータを受け取ると、処理を実行する（ステップＳ１８１８）。すなわち、認証Ａコンポーネント４１２は、認証部１３０を介して、認可トークン情報記憶部１７０に記憶された認可トークン情報テーブル１７００から該当の認可トークンを取得する。
【０１９３】
より具体的には、例えば、機器２０のユーザのユーザＩＤが「user001」である場合、認証Ａコンポーネント４１２は、当該ユーザＩＤと、アプリＩＤ「app001」と、外部サービスＩＤ「service_a」とを認証部１３０に送信する。すると、認証部１３０は、受け取ったユーザＩＤ、アプリＩＤ、及び外部サービスＩＤに対応する認可トークン「aaaaa」を認可トークン情報テーブル１７００から取得して、認証Ａコンポーネント４１２に返信する。
【０１９４】
なお、認証部１３０は、認可トークンの有効期限が過ぎている場合、例えば、予め取得されたリフレッシュトークンを用いて、認可トークンを再取得しても良い。この場合、認証部１３０は、再取得した認可トークンを認証Ａコンポーネント４１２に返信する。
【０１９５】
そして、認証Ａコンポーネント４１２は、データと、取得した認可トークンとをフロー実行部４０１に返信する。
【０１９６】
次に、フロー実行部４０１は、取得した処理内容１２００Ａに基づいて、コンポーネントの取得をコンポーネント管理部４０２に要求する（ステップＳ１８１９）。すなわち、フロー実行部４０１は、図８に示す処理内容１２００Ａにおいて処理１２０３Ａの次に記述されている処理１２０４Ａに基づいて、配信Ａコンポーネント４１１の取得をコンポーネント管理部４０２に要求する。
【０１９７】
コンポーネント管理部４０２は、配信Ａコンポーネント４１１の取得要求を受け取ると、配信Ａコンポーネント４１１を生成する（ステップＳ１８２０）。配信Ａコンポーネント４１１の生成は、コンポーネント共通Ｉ／Ｆ４１０に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。
【０１９８】
そして、コンポーネント管理部４０２は、生成した配信Ａコンポーネント４１１をフロー実行部４０１に返却する。すなわち、コンポーネント管理部４０２は、例えば、配信Ａコンポーネント４１１が展開されたメモリ（例えばＲＡＭ１４）上のアドレスをフロー実行部４０１に返却する。
【０１９９】
フロー実行部４０１は、生成された配信Ａコンポーネント４１１に対して、データと、認可トークンとを指定して処理の実行を要求する（ステップＳ１８２１）。なお、ここで指定されるデータは、ＯＣＲ処理後の電子ファイルのアドレス又はパスを示すデータ型が「LocalFilePath」のデータである。
【０２００】
配信Ａコンポーネント４１１は、処理の実行要求を受け取ると、型変換管理部４０４に対して、型変換を要求する（ステップＳ１８２２）。なお、当該型変換要求には、データと、配信Ａコンポーネント４１１が扱うことができるデータ型を示す「LocalFilePath」の指定とが含まれる。
【０２０１】
型変換管理部４０４は、型変換要求を受け取ると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１８２３）。
【０２０２】
ここで、受け取った型変換要求に含まれるデータのデータ型は「LocalFilePath」であり、指定されたデータ型も「LocalFilePath」である。したがって、型変換管理部４０４は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するものと判断する。
【０２０３】
そして、型変換管理部４０４は、型変換要求に含まれていたデータを配信Ａコンポーネント４１１に送信する（ステップＳ１８２４）。
【０２０４】
配信Ａコンポーネント４１１は、型変換管理部４０４からデータを受け取ると、処理を実行する（ステップＳ１８２５）。すなわち、配信Ａコンポーネント４１１は、認可トークンを用いて、データ（ファイル名「test」の電子ファイル）を外部ストレージシステム３０１のフォルダ名「FolderB」のフォルダに配信する。
【０２０５】
より具体的には、配信Ａコンポーネント４１１は、ストレージサービスＡ連携部１５０１のファイル処理部１５１１に対して、図５（ａ）に示すＡＰＩ「外部サービス名/process/folder」を用いて、認可トークンとデータを送信する。これにより、ファイル名「test」の電子ファイル（スキャンにより生成された電子ファイルをＯＣＲ処理した電子ファイル）が、ストレージサービスＡのフォルダ名「FolderB」のフォルダに保存される。
【０２０６】
そして、配信Ａコンポーネント４１１は、処理結果を示すデータをフロー実行部４０１に返信する。
【０２０７】
以上により、本実施形態に係るサービス提供システム１０は、スキャン配信サービスを機器２０に提供することができる。このように、本実施形態に係るサービス提供システム１０では、処理内容１２００に基づいて各コンポーネントを実行させることにより、当該処理内容１２００に示される一連の処理を実行する。
【０２０８】
また、本実施形態に係るサービス提供システム１０では、外部ストレージシステム３０等の外部サービスと連携した一連の処理を実行する場合、認可トークンを用いることで、当該認可トークンのスコープの範囲内で外部サービスのリソースを利用することができる。
【０２０９】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【０２１０】
１        情報処理システム
１０      サービス提供システム
２０      機器
３０      外部ストレージシステム
１１０    サービス処理部
１１１    アプリ管理部
１１２    ロジック処理部
１１３    データＩ／Ｆ部
１１４    スコープ決定部
１２０    認可サービス部
１２１    認可アプリ提供部
１２２    認可アプリ
１３０    認証部
１４０    ドキュメントサービス部
１５０    ストレージサービス連携部
１５１    ファイル処理部
１５２    データ処理部
１６０    ＯＡｕｔｈ登録情報記憶部
１７０    認可トークン情報記憶部
１８０    アプリ情報記憶部
２１０    ブラウザ
２２０    認可処理部
【先行技術文献】
【特許文献】
【０２１１】
【特許文献１】特開２０１４−０３２６５９号公報
【図１】
0006702057.tif 000002
【図２】
0006702057.tif 000003
【図３】
0006702057.tif 000004
【図４】
0006702057.tif 000005
【図５】
0006702057.tif 000006
【図６】
0006702057.tif 000007
【図７】
0006702057.tif 000008
【図８】
0006702057.tif 000009
【図９】
0006702057.tif 000010
【図１０】
0006702057.tif 000011
【図１１】
0006702057.tif 000012
【図１２】
0006702057.tif 000013
【図１３】
0006702057.tif 000014
【図１４】
0006702057.tif 000015
【図１５】
0006702057.tif 000016
【図１６】
0006702057.tif 000017
【図１７】
0006702057.tif 000018
【図１８】
0006702057.tif 000019