(57)【特許請求の範囲】
【請求項１】
１以上の情報処理装置を含む情報処理システムであって、
前記情報処理装置の上で動作する第１のプログラムと連携して処理を行う１以上の外部サービスであって、ユーザに応じた１以上の外部サービスに関する情報を登録する登録手段と、
前記登録手段により前記外部サービスに関する情報が登録された外部サービスに対する第１の処理要求を受け付ける受付手段と、
前記受付手段により前記第１の処理要求を受け付けると、前記１以上の外部サービスの間で共通に利用される複数のインタフェース手段のうち、前記第１の処理要求に含まれる前記外部サービスを利用するためのアプリケーションの識別情報に対応する外部サービスとの間で共通に利用されるインタフェース手段を介して、該識別情報に対応する該外部サービスに対して前記第１の処理要求に基づく第２の処理要求を行う処理要求手段と、
を有する情報処理システム。
【請求項２】
所定のユーザが利用することができる外部サービスが記憶された記憶手段を有し、
前記登録手段は、
前記記憶手段から前記ユーザが利用することができる外部サービスを特定し、該特定した外部サービスを含む１以上の外部サービスに関する情報を登録する、請求項１記載の情報処理システム。
【請求項３】
前記登録手段は、
前記外部サービスの認証情報を少なくとも含む外部サービスに関する情報を登録する、請求項１又は２記載の情報処理システム。
【請求項４】
１以上の情報処理装置を含む情報処理システムに用いられる情報処理方法であって、
前記情報処理装置の上で動作する第１のプログラムと連携して処理を行う１以上の外部サービスであって、ユーザに応じた１以上の外部サービスに関する情報を登録する登録手順と、
前記登録手順により前記外部サービスに関する情報が登録された外部サービスに対する第１の処理要求を受け付ける受付手順と、
前記受付手順により前記第１の処理要求を受け付けると、前記１以上の外部サービスの間で共通に利用される複数のインタフェース手段のうち、前記第１の処理要求に含まれる前記外部サービスを利用するためのアプリケーションの識別情報に対応する外部サービスとの間で共通に利用されるインタフェース手段を介して、該識別情報に対応する該外部サービスに対して前記第１の処理要求に基づく第２の処理要求を行う処理要求手順と、
を有する情報処理方法。
【請求項５】
情報処理装置であって、
前記情報処理装置の上で動作する第１のプログラムと連携して処理を行う１以上の外部サービスであって、ユーザに応じた１以上の外部サービスに関する情報を登録する登録手段と、
前記登録手段により前記外部サービスに関する情報が登録された外部サービスに対する第１の処理要求を受け付ける受付手段と、
前記受付手段により前記第１の処理要求を受け付けると、前記１以上の外部サービスの間で共通に利用される複数のインタフェース手段のうち、前記第１の処理要求に含まれる前記外部サービスを利用するためのアプリケーションの識別情報に対応する外部サービスとの間で共通に利用されるインタフェース手段を介して、該識別情報に対応する該外部サービスに対して前記第１の処理要求に基づく第２の処理要求を行う処理要求手段と、
を有する情報処理装置。
【請求項６】
情報処理装置を、
前記情報処理装置の上で動作する第１のプログラムと連携して処理を行う１以上の外部サービスであって、ユーザに応じた１以上の外部サービスに関する情報を登録する登録手段、
前記登録手段により前記外部サービスに関する情報が登録された外部サービスに対する第１の処理要求を受け付ける受付手段、
前記受付手段により前記第１の処理要求を受け付けると、前記１以上の外部サービスの間で共通に利用される複数のインタフェース手段のうち、前記第１の処理要求に含まれる前記外部サービスを利用するためのアプリケーションの識別情報に対応する外部サービスとの間で共通に利用されるインタフェース手段を介して、該識別情報に対応する該外部サービスに対して前記第１の処理要求に基づく第２の処理要求を行う処理要求手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理方法、情報処理装置及びプログラムに関する。
【背景技術】
【０００２】
近年、クラウドコンピューティング等により多種多様な外部サービスが提供されるようになった。例えば画像形成装置で原稿をスキャンして取得した画像データについて、異なるデータ形式に変換するサービスや電子データを外部ストレージに保管するサービス等が知られている。
【０００３】
このような外部サービスの普及に伴い、複合機等の画像形成装置上で動作するアプリケーションが外部サービスと連携して処理を行う技術が知られている（例えば特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の従来技術においては、連携して処理を行う外部サービスの追加等をユーザに応じて柔軟に行うことができなかった。すなわち、例えば、ある特定の企業に限り、連携して処理を行う外部サービスを追加することができなかった。
【０００５】
本発明の実施の形態は、上記の点に鑑みてなされたもので、ユーザに応じた外部サービスの追加を可能にすることを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の実施の形態は、１以上の情報処理装置を含む情報処理システムであって、前記情報処理装置の上で動作する第１のプログラムと連携して処理を行う１以上の外部サービスであって、ユーザに応じた１以上の外部サービスに関する情報を登録する登録手段と、前記登録手段により前記外部サービスに関する情報が登録された外部サービスに対する第１の処理要求を受け付ける受付手段と、前記受付手段により前記第１の処理要求を受け付けると、前記１以上の外部サービスの間で共通に利用される複数のインタフェース手段のうち、前記第１の処理要求に含まれる前記外部サービスの識別情報に対応する外部サービスとの間で共通に利用されるインタフェース手段を介して、該識別情報に対応する該外部サービスに対して前記第１の処理要求に基づく第２の処理要求を行う処理要求手段と、を有することを特徴とする。
【発明の効果】
【０００７】
本発明の実施の形態によれば、ユーザに応じた外部サービスを追加することができる。
【図面の簡単な説明】
【０００８】
【図１】本実施形態に係る情報処理システムの一例の構成図である。
【図２】コンピュータの一例のハードウェア構成図である。
【図３】本実施形態に係る画像形成装置の一例のハードウェア構成図である。
【図４】本実施形態に係る情報処理システムの一例の処理ブロック図である。
【図５】本実施形態に係る認証情報設定処理の一例のシーケンス図である。
【図６】共通サービス情報テーブルの一例の構成図である。
【図７】固有サービス情報テーブルの一例の構成図である。
【図８】プロキシ変換情報テーブルの一例の構成図である。
【図９】外部ストレージ連携ＡＰＩの一例を説明するための図である。
【図１０】設定情報の一例を示す図である。
【図１１】認証情報設定画面の一例のイメージ図である。
【図１２】ユーザ情報編集画面の一例のイメージ図である。
【図１３】ユーザ情報テーブルの一例の構成図である。
【図１４】本実施形態に係るデータ保存先情報設定処理の一例のシーケンス図である。
【図１５】保存先フォルダ設定画面の一例のイメージ図である。
【図１６】データ保存先情報テーブルの一例の構成図である。
【図１７】本実施形態に係るデータアップロード処理の一例のシーケンス図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について図面を参照しながら説明する。
【００１０】
＜システム構成＞
図１は、本実施形態に係る情報処理システムの一例の構成図である。図１に示される情報処理システム１において、サービス提供環境Ｅ２、ユーザ環境Ｅ１及び外部ストレージシステム４０等は、インターネット等の広域的なネットワークＮ１を介して通信可能に接続されている。
【００１１】
サービス提供環境Ｅ２は、ネットワークを介してクラウドサービス等の外部サービスを提供するシステム環境である。なお、本実施の形態では、外部サービスの具体例としてクラウドサービスを採用して説明するが、ＡＳＰ（Application Service Provider）によって提供されるサービスやＷｅｂサービス等、ネットワークを介して提供されるサービスに関して本実施の形態が適用されてもよい。
【００１２】
サービス提供環境Ｅ２は、一台以上の情報処理装置で実現されるサービス提供システム２０を有する。サービス提供システム２０は、ネットワークを介して所定のサービスを提供する。例えば、サービス提供システム２０は、ユーザ環境Ｅ１の画像形成装置１０においてスキャンされた画像データを、予め設定された保存先に保存するサービスを提供する。本実施形態では、サービス提供環境Ｅ２は、クラウドサービスの一例として、外部ストレージシステム４０と連携してクラウドストレージサービス（以降、単に「ストレージサービス」という）を提供するものとして説明する。なお、サービス提供システム２０の全部又は一部は、ユーザ環境Ｅ１に設置されていてもよい。すなわち、サービス提供システム２０を構成する情報処理装置の全部又は一部は、ユーザ環境Ｅ１に包含されていてもよい。
【００１３】
ユーザ環境Ｅ１は、例えば画像形成装置１０を使用するユーザが属する企業等におけるシステム環境である。ユーザ環境Ｅ１において、一台以上の画像形成装置１０と一台以上のＰＣ端末３０とはＬＡＮ（Local Area Network）等のネットワークを介して接続されている。
【００１４】
本実施形態に係る画像形成装置１０は、スキャン機能を有する画像形成装置である。ただし、スキャン機能以外に、印刷、コピー、又はファックス（ＦＡＸ）通信等の機能を有する複合機が画像形成装置１０として用いられてもよい。
【００１５】
ＰＣ端末３０は、ユーザ環境Ｅ１における画像形成装置１０のユーザが使用する端末である。ＰＣ端末３０は、ＰＣ（Personal Computer）の他、ＰＤＡ（Personal Digital Assistance）、タブレット型端末、スマートフォン、携帯電話等が用いられてもよい。
【００１６】
外部ストレージシステム４０は、ネットワークを介してストレージサービス（又はオンラインストレージ）と呼ばれるクラウドサービスを提供するコンピュータシステムである。ストレージサービスとは、外部ストレージシステム４０のストレージの記憶領域を貸し出すサービスである。本実施形態では、外部ストレージシステム４０によって貸し出される記憶領域は、サービス提供システム２０によって提供されるストレージサービスにおいて、画像データの保存先の候補である。以降では、複数の外部ストレージシステム４０について、各々を区別するときは、外部ストレージシステム４０１、外部ストレージシステム４０２等と添え字を付けて記載する。また、外部ストレージシステム４０１によって提供されるサービスの名称（サービス名）を「ストレージサービスＡ」、ストレージシステム４０２によって提供されるサービス名を「ストレージサービスＢ」等とする。
【００１７】
なお、外部ストレージシステム４０は、複数台の情報処理装置によって実現されるシステムであってもよい。また、図１に示される情報処理システム１の構成は一例であって、他の構成であってもよい。
【００１８】
＜ハードウェア構成＞
図１に示されるサービス提供システム２０及びＰＣ端末３０は、例えば図２に示されるようなハードウェア構成のコンピュータにより実現される。
【００１９】
図２は、コンピュータの一例のハードウェア構成図である。図２のコンピュータ１００は、入力装置１０１と、表示装置１０２と、外部Ｉ／Ｆ１０３と、ＲＡＭ（Random Access Memory）１０４とを有する。また、コンピュータ１００は、ＲＯＭ（Read Only Memory）１０５と、ＣＰＵ（Central Processing Unit）１０６と、通信Ｉ／Ｆ１０７と、ＨＤＤ（Hard Disk Drive）１０８とを有する。これらの各ハードウェアは、それぞれがバスＢで接続されている。
【００２０】
入力装置１０１はキーボードやマウス、タッチパネル等を含み、ユーザが各操作信号を入力するのに用いられる。表示装置１０２はディスプレイ等を含み、コンピュータ１００による処理結果を表示する。なお、入力装置１０１及び表示装置１０２は必要なときに接続して利用する形態であってもよい。
【００２１】
通信Ｉ／Ｆ１０７はコンピュータ１００をネットワークＮ１に接続するインタフェースである。これにより、コンピュータ１００は通信Ｉ／Ｆ１０７を介してデータ通信を行うことができる。
【００２２】
また、ＨＤＤ１０８は、プログラムやデータを格納している不揮発性の記憶装置の一例である。格納されるプログラムやデータには、コンピュータ１００全体を制御する基本ソフトウェアであるＯＳ（Operating System）、及びＯＳ上において各種機能を提供するアプリケーションソフトウェア等がある。なお、コンピュータ１００はＨＤＤ１０８に替え、記憶媒体としてフラッシュメモリを用いるドライブ装置（例えばソリッドステートドライブ：ＳＳＤ）を利用するものであってもよい。
【００２３】
ＨＤＤ１０８は格納しているプログラムやデータを所定のファイルシステム及び／又はＤＢにより管理している。外部Ｉ／Ｆ１０３は、外部装置とのインタフェースである。外部装置には、記録媒体１０３ａ等がある。
【００２４】
これにより、コンピュータ１００は外部Ｉ／Ｆ１０３を介して記録媒体１０３ａの読み取り及び／又は書き込みを行うことができる。記録媒体１０３ａにはフレキシブルディスク、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリ等がある。
【００２５】
ＲＯＭ１０５は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ（記憶装置）である。ＲＯＭ１０５にはコンピュータ１００の起動時に実行されるＢＩＯＳ、ＯＳ設定、及びネットワーク設定等のプログラムやデータが格納されている。ＲＡＭ１０４はプログラムやデータを一時保持する揮発性の半導体メモリ（記憶装置）である。
【００２６】
ＣＰＵ１０６は、ＲＯＭ１０５やＨＤＤ１０８等の記憶装置からプログラムやデータをＲＡＭ１０４上に読み出し、処理を実行することで、コンピュータ１００全体の制御や機能を実現する演算装置である。サービス提供システム２０及びＰＣ端末３０はコンピュータ１００のハードウェア構成により、後述する各種処理を実現できる。
【００２７】
図１に示される画像形成装置１０は、例えば図３に示されるようなハードウェア構成により実現される。図３は、本実施形態に係る画像形成装置の一例のハードウェア構成図である。図３に示される画像形成装置１０は、コントローラ２０１と、操作パネル２０２と、外部Ｉ／Ｆ２０３と、通信Ｉ／Ｆ２０４と、スキャナ２０５とを備える。
【００２８】
コントローラ２０１はＣＰＵ２１１と、ＲＡＭ２１２と、ＲＯＭ２１３と、ＮＶＲＡＭ２１４と、ＨＤＤ２１５とを備える。ＲＯＭ２１３は、各種プログラムやデータが格納されている。ＲＡＭ２１２はプログラムやデータを一時保持する。ＮＶＲＡＭ２１４は、例えば設定情報等が格納されている。また、ＨＤＤ２１５は各種プログラムやデータが格納
ＣＰＵ２１１は、ＲＯＭ２１３やＮＶＲＡＭ２１４、ＨＤＤ２１５等からプログラムやデータ、設定情報等をＲＡＭ２１２上に読み出し、処理を実行することで、画像形成装置１０全体の制御や機能を実現する。
【００２９】
操作パネル２０２はユーザからの入力を受け付ける入力部と、表示を行う表示部とを備えている。外部Ｉ／Ｆ２０３は外部装置とのインタフェースである。外部装置には、記録媒体２０３ａ等がある。これにより、画像形成装置１０は外部Ｉ／Ｆ２０３を介して記録媒体２０３ａの読み取り及び／又は書き込みを行うことができる。記録媒体２０３ａにはＩＣカード、フレキシブルディスク、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリ等がある。
【００３０】
通信Ｉ／Ｆ２０４は、画像形成装置１０をネットワークＮ１に接続するインタフェースである。これにより、画像形成装置１０は通信Ｉ／Ｆ２０４を介してデータ通信を行うことができる。スキャナ２０５は原稿から画像データ（電子データ）を読み取るための読取装置である。画像形成装置１０は上記のハードウェア構成により、後述する各種処理を実現できる。
【００３１】
＜ソフトウェア構成＞
本実施形態に係る情報処理システム１は、例えば図４に示されるような処理ブロックにより実現することができる。図４は、本実施形態に係る情報処理システムの一例の処理ブロック図である。なお、図４の情報処理システム１において、本実施形態の説明に不要な処理ブロックについては図示を省略している。
【００３２】
画像形成装置１０は、１つ以上のクライアントアプリ１１を有する。クライアントアプリ１１は、サービス提供システム２０と連携させるために、画像形成装置１０にインストールされるアプリケーションプログラムである。クライアントアプリ１１は、後述するサーバアプリ２２と連携し、利用できるストレージサービスの表示やストレージサービスへのデータの保存要求等を行う。なお、「クライアントアプリ」という用語は、サービス提供システム２０側にインストールされるアプリケーションプログラム（後述する「サーバアプリ２２」）と区別するために便宜上用いた用語である。
【００３３】
なお、クライアントアプリ１１とサーバアプリ２２とが同一のプログラムであってもよい。また、クライアントアプリ１１は、ＳＤＫ（Software Development Kit）を利用して開発されたアプリケーションであるＳＤＫアプリケーションを利用できる。
【００３４】
サービス提供システム２０は、ＷｅｂＡＰＩ２１と、サーバアプリ２２と、ポータルアプリ２３と、共通サービス情報部２４と、外部ストレージ配信部２５とを有する。また、サービス提供システム２０は、認証部２６と、固有サービス情報部２７と、プロキシ部２８と、外部ストレージ共通フレームワーク２９とを有する。これら各部は、サービス提供システム２０にインストールされる一以上のプログラムが、ＣＰＵ１０６等に実行させる処理により実現される。
【００３５】
また、サービス提供システム２０は、共通サービス情報記憶部５１と、ユーザ情報記憶部５２と、データ保存先情報記憶部５３と、固有サービス情報記憶部５４と、プロキシ変換情報記憶部５５とを有する。これら各記憶部は、ＨＤＤ１０８を用いて実現可能である。なお、これら各記憶部の全部又は一部は、サービス提供システム２０とネットワークを介して接続される記憶装置等を用いて実現可能されてもよい。
【００３６】
ＷｅｂＡＰＩ２１は、画像形成装置１０やＰＣ端末３０がサービス提供システム２０を利用するためのインタフェースである。ＷｅｂＡＰＩ２１は、画像形成装置１０やＰＣ端末３０からの各種要求をサーバアプリ２２やポータルアプリ２３等が受け付けるために設けられた予め定義されたインタフェースであり、例えば、関数やクラス等により構成される。
【００３７】
サーバアプリ２２は、クライアントアプリ１１と連携してサービス提供システム２０が提供するストレージサービスを実現するアプリケーションプログラムである。サーバアプリ２２は、外部ストレージ連携部２２１を有しており、クライアントアプリ１１から所定の要求を受け付けると、外部ストレージ連携部２２１は、プロキシ部２８を介して、ストレージサービスのディレクトリ情報取得ＡＰＩ（Application Programming Interface）の呼び出し要求を外部ストレージ共通フレームワーク２９に対して行う。なお、サーバアプリ２２は、ＳＤＫを利用して開発されたアプリケーションであるＳＤＫアプリケーションを利用できる。
【００３８】
ポータルアプリ２３は、ＰＣ端末３０に対して、外部ストレージシステム４０におけるデータの保存先フォルダの設定や認証情報の設定等を提供する。ポータルアプリ２３は、ＵＩ生成部２３１を有しており、ＰＣ端末３０からの要求を受け付けると、ＵＩ生成部２３１は、受け付けた要求に応じたＵＩ（ユーザインタフェース）画面の生成を行う。
【００３９】
共通サービス情報部２４は、ユーザが共通に利用できるストレージサービスの管理を行う。すなわち、共通サービス情報部２４は、ユーザが属する企業等に関わらず、すべてのユーザが利用することができるストレージサービスの管理を行う。また、共通サービス情報部２４は、他の各部からの依頼に応じて、共通サービス情報記憶部５１からユーザが共通に利用できるストレージサービスに関する情報（以降、「共通サービス情報」という）を取得する。
【００４０】
外部ストレージ配信部２５は、サーバアプリ２２からの所定の要求に応じて、外部ストレージシステム４０にデータを保存するための処理を行う。外部ストレージ配信部２５は、外部ストレージ連携部２５１を有しており、サーバアプリ２２から所定の要求を受け付けると、外部ストレージ連携部２５１は、プロキシ部２８を介して、データのアップロードＡＰＩの呼び出し要求を外部ストレージ共通フレームワーク２９に対して行う。
【００４１】
認証部２６は、ユーザの認証情報（以降、「ユーザ情報」という）の管理を行う。また、認証部２６は、他の各部からの依頼に応じて、ユーザ情報記憶部５２からユーザ情報を取得する。認証部２６は、外部ストレージ共通認証部２６１を有し、外部ストレージ共通認証部２６１は、プロキシ部２８を介して、外部ストレージシステム４０へのログインＡＰＩの呼び出し要求を外部ストレージ共通フレームワーク２９に対して行う。
【００４２】
固有サービス情報部２７は、ユーザが属する企業等が固有に利用できるストレージサービスの管理を行う。すなわち、共通サービス情報部２４は、ある特定の企業等に対して利用が許可されているストレージサービスの管理を行う。ここで、ユーザが属する企業、組織、グループ等は、「テナント」と称され、各テナントには情報処理システム１内でテナントを一意に識別するテナントＩＤが付与される。したがって、換言すれば、固有サービス情報部２７は、ある特定のテナント（に属するユーザ）が利用できるストレージサービスの管理を行う。また、固有サービス情報部２７は、他の各部からの依頼に応じて、固有サービス情報記憶部５４からユーザが属するテナントが固有に利用できるストレージサービスに関する情報（以降、「固有サービス情報」という）を取得する。なお、上述した共通サービス情報は、すべてのテナント（に属するユーザ）が共通に利用できるストレージサービスに関する情報と言い換えることができる。
【００４３】
外部ストレージ共通フレームワーク２９は、外部ストレージ連携ＡＰＩ６１と、ストレージサービス用アプリ６２とを有する。また、外部ストレージ共通フレームワーク２９は、外部ストレージサービスの設定情報記憶部６３を有する。
【００４４】
外部ストレージ連携ＡＰＩ６１は、ストレージサービス用アプリ６２を利用するための共通のインタフェースである。外部ストレージ連携ＡＰＩ６１は、サービス提供システム２０の各部からのＡＰＩの呼び出し要求をストレージサービス用アプリ６２が受け付けるために設けられた予め定義されたインタフェースであり、例えば、関数やクラス等により構成される。
【００４５】
ストレージサービス用アプリ６２は、外部ストレージシステム４０に対して、ディレクトリ情報の取得、データのアップロード、データのダウンロード等の各種処理を行うことができるプログラムである。ストレージサービス用アプリ６２は、利用できるストレージサービス毎に存在する。例えば、ストレージサービスＡを利用するためのストレージサービスＡ用アプリ６２１、ストレージサービスＢを利用するためのストレージサービスＢ用アプリ６２２、・・・、ストレージサービスＤを利用するためのストレージサービスＤ用アプリ６２４等が存在する。なお、各ストレージサービス用アプリ６２には、「アプリＩＤ」と「バージョン」とが対応付けられている。これらの情報は、ストレージサービスの名称とともに、共通サービス情報記憶部５１又は固有サービス情報記憶部５４において共通サービス情報又は固有サービス情報として管理される。すなわち、テナントに関わらず共通に利用できるストレージサービスの「アプリＩＤ」や「バージョン」等は共通サービス情報として共通サービス情報記憶部５１において管理される。一方で、ある特定のテナントが固有に利用できるストレージサービスの「アプリＩＤ」や「バージョン」等は固有サービス情報として固有サービス情報記憶部５４において管理される。ここで、以降では、「ストレージサービスＡ」、「ストレージサービスＢ」等はテナントに関わらず共通に利用できるストレージサービスであるとする。一方、「ストレージサービスＤ」、「ストレージサービスＥ」等はある特定のテナントが固有に利用できるストレージサービスであるとする。
【００４６】
また、ストレージサービス用アプリ６２は、それぞれ対応する設定情報記憶部６３を利用する。設定情報記憶部６３には、対応する外部ストレージサービスの設定情報が記憶されている。設定情報は、ＵＩ生成部２３１がユーザインタフェースを生成するために必要な情報が指定されている。
【００４７】
プロキシ部２８は、他の各部から外部ストレージシステム４０に対する各種要求を受け付けると、プロキシ変換情報記憶部５５のプロキシ変換情報テーブルを参照し、対応するホスト情報（アドレス情報）に要求を転送する。例えば、プロキシ部２８は、外部ストレージシステム４０１（ストレージサービスＡ）に対する要求を受け取った場合、プロキシ変換情報テーブルを参照し、ストレージサービスＡ用アプリ６２１が動作するホストに、この要求を転送する。
【００４８】
より具体的に説明すると、例えば、ストレージサービスＡ用アプリ６２１（アプリＩＤ「ａｐｐ００１」）がホスト情報「ａａａ．ｘｘｘ．ｃｏ．ｊｐ」の装置に存在し、ストレージサービスＤ用アプリ６２４（アプリＩＤ「ａｐｐ００４」）がホスト情報「ｃｃｃ．ｘｘｘ．ｃｏ．ｊｐ」の装置に存在するとする。このとき、プロキシ部２８は、プロキシ変換情報テーブルを参照し、受け取った要求に含まれるアプリＩＤが「ａｐｐ００１」である場合、この要求を「ａａａ．ｘｘｘ．ｃｏ．ｊｐ」に転送し、他方、受け取った要求に含まれるアプリＩＤが「ａｐｐ００４」である場合、この要求を「ｃｃｃ．ｘｘｘ．ｃｏ．ｊｐ」に転送する。換言すれば、プロキシ部２８は、所望のストレージサービス用アプリ６２が搭載されている（動作している）ホスト情報の装置に対して、受け取った要求を転送する。
【００４９】
なお、異なるホスト情報が同一の装置で実現されてもよいし、複数台の装置で実現されていてもよい。他方、例えば外部ストレージ共通フレームワーク２９が一台の情報処理装置で実現されており、かつ、一つのホスト情報のみを有する場合等は、サービス提供システム２０は、プロキシ部２８を有していなくてもよい。
【００５０】
また、共通サービス情報記憶部５１は、共通サービス情報テーブルを記憶する。ユーザ情報記憶部５２は、ユーザ情報テーブルを記憶する。データ保存先情報記憶部５３は、データ保存先情報テーブルを記憶する。固有サービス情報記憶部５４は、固有サービス情報テーブルを記憶する。プロキシ変換情報記憶部５５は、プロキシ変換情報テーブルを記憶する。外部ストレージサービスの設定情報記憶部６３は、設定情報を記憶する。
【００５１】
なお、上述したように、サービス提供システム２０の処理ブロックは、複数台の情報処理装置により構成されていてもよい。例えば、プロキシ部２８とプロキシ変換情報記憶部５５とを一台の情報処理装置で構成し、外部ストレージ共通フレームワーク２９を複数台の情報処理装置で構成して運用してもよい。
【００５２】
以上のように本実施形態に係るサービス提供システム２０は、各ストレージサービスを利用するための外部ストレージ共通フレームワーク２９を有する。また、外部ストレージ共通フレームワーク２９は、各ストレージサービス用アプリ６２を利用するための共通に定義されたＡＰＩである外部ストレージ連携ＡＰＩ６１を有する。したがって、利用できるストレージサービスを追加・変更等する場合、外部ストレージ連携ＡＰＩ６１を利用することにより、システム全体に影響を与えることなくストレージサービス用アプリ６２を追加・変更等を行うことができる。換言すれば、ストレージサービスの追加・変更等に伴うサービス提供システム２０への影響を、外部ストレージ共通フレームワーク２９の中だけに限定させることができる。なお、外部ストレージ連携ＡＰＩ６１は、例えばサードベンダ等に公開してもよい。
【００５３】
また、本実施形態に係るサービス提供システム２０は、すべてのテナントに属するユーザが共通に利用することができるストレージサービスに関する情報（共通サービス情報）が記憶された共通サービス情報記憶部５１を有する。一方で、サービス提供システム２０は、ある特定のテナントに属するユーザが利用することができるストレージサービスに関する情報（固有サービス情報）が記憶された固有サービス情報記憶部５４を有する。これにより、例えば、ある特定のテナントのみが利用できるストレージサービスを追加することができるようになる。
【００５４】
＜処理の詳細＞
次に、本実施形態に係る情報処理システムの処理の詳細について説明する。
【００５５】
《認証情報設定処理》
まず、情報処理システム１のユーザが利用することができるストレージサービスの認証情報を設定する処理について説明する。
【００５６】
ステップＳ５０１において、ユーザがＰＣ端末３０を操作してユーザ情報編集画面へ遷移させる。これは、例えば次のようにして行えばよい。すなわち、ユーザは、ＰＣ端末３０のＷｅｂブラウザ等を用いて、ＷｅｂＡＰＩ２１を介して、サービス提供システム２０のポータルアプリ２３が提供するポータルサイトにログインする。そして、ユーザは、このポータルサイトで所定のボタンを押下することでユーザ情報編集画面に遷移させることができる。なお、ユーザがポータルサイトにログインする際には、テナントＩＤ、ユーザＩＤ、パスワード等を入力する。ここで、後述する外部ストレージシステム４０にログインするためのユーザＩＤ及びパスワードと区別するため、サービス提供システム２０にログインするためのユーザＩＤ及びパスワードを、以降では便宜的に、利用者ＩＤ及び利用者パスワードと呼ぶ。
【００５７】
ステップＳ５０２において、ポータルアプリ２３は、共通サービス情報部２４に対して共通サービス情報の取得を依頼する。共通サービス情報部２４は、ポータルアプリ２３から共通サービス情報の取得依頼を受け付けると、共通サービス情報記憶部５１に記憶されている図６に示すような共通サービス情報テーブルを取得し、ポータルアプリ２３に送信する。
【００５８】
図６は、共通サービス情報テーブルの一例の構成図である。共通サービス情報テーブルは、各テナントのユーザが共通に利用することができるストレージサービスのストレージサービス用アプリ６２の情報を管理している。共通サービス情報テーブルは、「アプリＩＤ」、「外部ストレージサービス名」及び「バージョン」等のデータ項目を有する。「アプリＩＤ」は、外部ストレージシステム４０に対して各種処理を要求するためのストレージサービス用アプリ６２の識別情報である。「外部ストレージサービス名」は、外部ストレージシステム４０が提供するサービスの名称である。「バージョン」は、ストレージサービス用アプリ６２のバージョン情報である。
【００５９】
例えば、図６に示される共通サービス情報テーブルの１レコード目には、次の情報が記憶されている。すなわち、ストレージサービスＡ用アプリ６２１のアプリＩＤ「ａｐｐ００１」、外部ストレージシステム４０１が提供するサービス名「ストレージサービスＡ」、ストレージサービスＡ用アプリ６２１のバージョン情報「ｖ１」が記憶されている。
【００６０】
なお、図６に示される共通サービス情報テーブルでは、同一のアプリＩＤであっても異なるバージョンのストレージサービス用アプリ６２は別々に管理しているが、バージョンに関わらず同一のアプリＩＤを１レコードで管理してもよい。
【００６１】
ステップＳ５０３において、ポータルアプリ２３は、固有サービス情報部２７に対して固有サービス情報の取得を依頼する。ここで、固有サービス情報の取得依頼には、ステップＳ５０１でユーザから入力されたテナントＩＤが含まれる。そして、固有サービス情報部２７は、固有サービス情報の取得依頼を受け付けると、固有サービス情報記憶部５４から当該取得依頼に含まれるテナントＩＤの固有サービス情報テーブルを取得し、ポータルアプリ２３に送信する。
【００６２】
図７は、固有サービス情報テーブルの一例の構成図である。固有サービス情報テーブルは、テナント毎に、このテナントに属するユーザが利用することができるストレージサービスのストレージサービス用アプリ６２の情報を管理している。固有サービス情報テーブルが有する各データ項目は、共通サービス情報テーブルと同様である。
【００６３】
なお、図７に示す固有サービス情報テーブルでは、テナント毎に、このテナントに属するユーザが利用することができるストレージサービスのストレージサービス用アプリ６２の情報を管理しているが、これに限られない。すなわち、固有サービス情報テーブルは、例えば、ユーザ毎に、このユーザが利用することができるストレージサービスのストレージサービス用アプリ６２の情報を管理していてもよい。
【００６４】
例えば、図７に示されるテナントＩＤ「Ｔ００１」の固有サービス情報テーブルの１レコード目には、次の情報が記憶されている。すなわち、ストレージサービスＤ用アプリ６２４のアプリＩＤ「ａｐｐ００４」、外部ストレージシステム４０４が提供するサービス名「ストレージサービスＤ」、ストレージサービスＡ用アプリ６２４のバージョン情報「ｖ１」が記憶されている。
【００６５】
次に、ステップＳ５０４及びステップＳ５０５の処理を、ステップＳ５０２で取得した共通サービス情報テーブルに含まれるレコード数の回数繰り返し行う。
【００６６】
ステップＳ５０４において、ポータルアプリ２３は、ステップＳ５０２で取得した共通サービス情報テーブルからレコードを１件取得し、このレコードのアプリＩＤ及びバージョンを含む設定情報取得ＡＰＩの呼び出し要求をプロキシ部２８に送信する。
【００６７】
ステップＳ５０５において、プロキシ部２８は、アプリＩＤ及びバージョンを含む設定情報取得ＡＰＩの呼び出し要求を受け取ると、図８に示すようなプロキシ変換情報テーブルを参照し、該当のホスト名に対して設定情報取得ＡＰＩの呼び出し要求を転送する。
【００６８】
図８は、プロキシ変換情報テーブルの一例の構成図である。プロキシ変換情報テーブルは、アプリＩＤに対応した転送先のホスト名を管理している。プロキシ変換情報テーブルは、「アプリＩＤ」、「転送先ホスト情報」等のデータ項目を有する。「アプリＩＤ」は、上述したようにストレージサービス用アプリ６２の識別情報である。「転送先ホスト名」は、プロキシ部２８が受け付けた各種要求を転送する転送先のホスト名である。
【００６９】
例えば、プロキシ部２８が受け取った設定情報取得ＡＰＩの呼び出し要求に含まれるアプリＩＤ及びバージョンがそれぞれ「ａｐｐ００１」及び「ｖ２」である場合、プロキシ部２８は、図８に示すプロキシ変換情報テーブルを参照し、この設定情報取得ＡＰＩの呼び出し要求を「ａａａ．ｘｘｘ．ｃｏ．ｊｐ」に転送する。一方、プロキシ部２８が受け取った要求に含まれるアプリＩＤ及びバージョンがそれぞれ「ａｐｐ００４」及び「ｖ１」である場合、プロキシ部２８は、この要求を「ｃｃｃ．ｘｘｘ．ｃｏ．ｊｐ」に転送する。このように、プロキシ部２８は、受け取った要求に含まれるアプリＩＤに応じて、この要求を転送先ホスト情報に指定されたホストに転送する。なお、転送先ホスト情報に代えて、転送先を示すＩＰアドレス等を用いてもよい。
【００７０】
そして、プロキシ部２８が転送した設定情報取得ＡＰＩの呼び出し要求より、外部ストレージ連携ＡＰＩ６１の設定情報取得ＡＰＩが呼び出され、該当の外部ストレージ用アプリ６２は設定情報の取得を行う。より具体的には、外部ストレージ連携ＡＰＩ６１は、アプリＩＤ及びバージョンを含む設定情報取得ＡＰＩの呼び出し要求を受け取ると、設定情報取得ＡＰＩを呼び出し、この呼び出し要求に含まれるアプリＩＤ及びバージョンに対応する外部ストレージ用アプリ６２に対して設定情報の取得を依頼する。外部ストレージ用アプリ６２は、設定情報記憶部６３から設定情報を取得し、プロキシ部２８を介して、設定情報をポータルアプリ２３に送信する。
【００７１】
なお、サービス提供システム２０がプロキシ部２８を有さない構成である場合、上記のステップＳ５０４において、ポータルアプリ２３は、外部ストレージ連携ＡＰＩ６１に対して直接、設定情報取得ＡＰＩの呼び出し要求を行う。
【００７２】
ここで、外部ストレージ連携ＡＰＩ６１について、図９を用いて説明する。図９は、外部ストレージ連携ＡＰＩの一例を説明するための図である。外部ストレージ連携ＡＰＩ６１は、外部ストレージシステム４０に対して各種処理要求を行うためのＡＰＩを定義している。図９において、外部ストレージシステム４０の設定情報を取得するためのＡＰＩは、エンドポイント「／アプリＩＤ／バージョン／ｉｎｆｏ」で定義されている。したがって、外部ストレージシステム４０１（ストレージサービスＡ）の設定情報を取得するためには、例えばアプリＩＤ「ａｐｐ００１」、バージョン「ｖ２」を指定した設定情報取得ＡＰＩの呼び出し要求を外部ストレージ連携ＡＰＩ６１に送信すればよい。これにより、ストレージサービスＡ用アプリ６２１によりストレージサービスＡの設定情報記憶部６３１から設定情報が取得される。このように、外部ストレージ連携ＡＰＩ６１は、エンドポイントのうち「アプリＩＤ」及び「バージョン」が可変部分として定義されており、「アプリＩＤ」及び「バージョン」が指定されることにより、この「アプリＩＤ」及び「バージョン」に対応するストレージサービス用アプリ６２に処理を依頼する。これにより、サービス提供システム２０に対してストレージサービス用アプリ６２を追加・変更等する場合においても、外部ストレージ連携ＡＰＩ６１の修正等を行う必要がない。
【００７３】
次に、ステップＳ５０６及びステップＳ５０７の処理を、ステップＳ５０３で取得した固有サービス情報テーブルに含まれるレコード数の回数繰り返し行う。
【００７４】
ステップＳ５０６において、ポータルアプリ２３は、ステップＳ５０２で取得した固有サービス情報テーブルからレコードを１件取得し、このレコードのアプリＩＤ及びバージョンを含む設定情報取得ＡＰＩの呼び出し要求をプロキシ部２８に送信する。
【００７５】
ステップＳ５０７において、プロキシ部２８は、アプリＩＤ及びバージョンを含む設定情報取得ＡＰＩの呼び出し要求を受け取ると、図８に示すようなプロキシ変換情報テーブルを参照し、該当のホスト名に対して設定情報取得ＡＰＩの呼び出し要求を転送する。そして、プロキシ部２８が転送した設定情報取得ＡＰＩの呼び出し要求より、外部ストレージ連携ＡＰＩ６１の設定情報取得ＡＰＩが呼び出され、該当の外部ストレージ用アプリ６２は設定情報の取得を行う。外部ストレージ用アプリ６２は、設定情報記憶部６３から設定情報を取得し、プロキシ部２８を介して、設定情報をポータルアプリ２３に送信する。
【００７６】
ここで、設定情報記憶部６３に記憶されている設定情報は、例えば図１０に示すような情報である。図１０は、設定情報の一例を示す図である。図１０では、一例として、設定情報記憶部６３４に記憶されているストレージサービスＤの設定情報１０００を示している。後述するステップＳ５０８の画面生成処理において、この設定情報１０００に基づき、ストレージサービスＤの認証情報を設定するためのＵＩ画面（認証情報設定画面）が生成される。図１０の各情報１１００〜１３００は、ＵＩ画面を生成するための情報である。一方、図１０の情報１４００は、固有サービス情報に基づき取得された設定情報であるか又は共通サービス情報に基づき取得された設定情報であるかを示す区分である。ここで、「"ｓｐｅｃｉａｌ＿ｏｒｄｅｒ"：ｔ」は、固有サービス情報に基づき取得された設定情報であること示している。一方、「"ｓｐｅｃｉａｌ＿ｏｒｄｅｒ"：ｆ」である場合は、共通サービス情報に基づき取得された設定情報であることを示す。
【００７７】
次に、ステップＳ５０８において、上記のステップＳ５０４〜ステップＳ５０７の処理において取得された各ストレージサービスの設定情報に基づいて、ポータルアプリ２３は、認証情報を設定するためのＵＩ画面（認証情報設定画面）を生成する。
【００７８】
ここで、図１０に示す設定情報１０００に基づき、例えば図１１に示すようなＵＩ画面が生成される。図１１は、認証情報設定画面の一例のイメージ図である。例えば、図１０の情報１１００からタイトル部２１００が生成される。また、図１０の情報１２００からユーザＩＤ入力部２２００が、図１０の情報１３００からパスワード入力部２３００が生成される。このように、ポータルアプリ２３は、取得した設定情報からストレージサービスの認証情報を設定するための画面を生成する。図１０及び図１１では、認証情報としてユーザＩＤとパスワードとが設定される場合を一例として示したが、これに限られず、例えば、ユーザＩＤとパスワードに加えて、企業名等を認証情報として設定することができてもよい。なお、どのような項目を認証情報として設定することができるかは、ストレージサービス毎に予め決定されている。なお、図１０に示す設定情報１０００は、ＪＳＯＮ（JavaScript Object Notation）で記述されているが、これに限られず、例えばＸＭＬ（Extensible Markup Language）等で記述されていてもよい。
【００７９】
また、このとき、ポータルアプリ２３は、例えば図１２に示すようなユーザ情報編集画面３０００を生成し、ＰＣ端末３０の表示装置１０２に表示させる。ユーザは、ユーザ情報編集画面３０００に表示されたストレージサービスの一覧３１００及び３２００において「認証情報の設定」ボタンを選択すると、選択されたストレージサービスの認証情報を設定することができる。すなわち、例えばストレージサービスＤの「認証情報の設定」ボタンを選択することで、図１１に示す認証情報設定画面２０００が表示される。なお、ユーザ情報編集画面３０００においてストレージサービスの一覧３１００は、ユーザが共通で利用することができるストレージサービスの一覧である。一方、ユーザ情報編集画面３０００においてストレージサービス３２００は、ユーザが属するテナントが固有に利用することができるストレージサービスの一覧である。
【００８０】
ステップＳ５０９において、ユーザはＰＣ端末３０を操作して、ユーザ情報編集画面３０００のストレージサービス一覧３１００及び３２００から所望のストレージサービスを選択すると、選択したストレージサービスの認証情報設定画面に遷移する。
【００８１】
ステップＳ５１−において、ユーザはＰＣ端末３０を操作して、認証情報設定画面から認証情報（例えば、ユーザＩＤとパスワード）を入力して認証情報を設定する。例えば、ユーザがストレージサービスＤの認証情報を設定する場合、図１１に示す認証情報設定画面２０００においてユーザＩＤとパスワードを入力し、設定ボタン２４００を押下する。すると、ＰＣ端末３０は、ユーザＩＤとパスワードとを含む認証情報の保存要求をポータルアプリ２３に送信する。なお、ここで入力するユーザＩＤ及びパスワードは、ユーザが所望のストレージサービスにログインするためのユーザＩＤ及びパスワードである。したがって、ユーザは、予め利用するストレージサービスのユーザＩＤ及びパスワードを入手しておく必要がある。
【００８２】
ステップＳ５１１において、ポータルアプリ２３は、ＰＣ端末３０から受け取った認証情報の保存要求を認証部２６に送信する。そして、認証部２６は、認証情報の保存要求に含まれる認証情報（ストレージサービスのユーザＩＤ及びパスワード等）を、利用者ＩＤとアプリＩＤと関連付けてユーザ情報記憶部５２の例えば図１３に示すようなユーザ情報テーブルに保存する。
【００８３】
図１３は、ユーザ情報テーブルの一例の構成図である。ユーザ情報テーブルは、テナント毎に、「利用者ＩＤ」、「アプリＩＤ」、「認証情報」等のデータ項目を有する。「利用者ＩＤ」は、サービス提供システム２０を利用するための利用者ＩＤである。「認証情報」は、アプリＩＤに対応するストレージサービスに対する認証情報である。「認証情報」は、複数のデータ項目を有している。例えば「Ｋｅｙ１」はストレージサービスの認証に用いるユーザＩＤ、「Ｋｅｙ２」は認証に用いるパスワード、「Ｋｅｙ３」は認証に用いる企業名等である。例えば、図１３に示すテナントＩＤ「Ｔ００１」のユーザ情報テーブルの利用者ＩＤ「Ｔｏｎｙ」の３レコード目は、上記のステップＳ５１０において、利用者ＩＤ「Ｔｏｎｙ」のユーザが、ストレージサービスＤのユーザＩＤを「ｕｓｅｒ００３」、パスワードを「ｐａｓｓ００３」と設定した場合に保存されるレコードである。
【００８４】
なお、ユーザ情報テーブルの「認証情報」に保存されるデータは、ユーザＩＤ及びパスワードに限られず、例えばＯＡｕｔｈ等により規定される認証トークンであってもよい。
【００８５】
以上により、本実施形態に係るサービス提供システム２０では、ユーザは、ＰＣ端末３０から所望のストレージサービスの認証情報を設定することができる。また、認証情報設定画面を生成するための設定情報は、外部ストレージ共通フレームワーク２９を用いて取得することができる。したがって、サービス提供システム２０が提供するストレージサービスを追加する場合、又はサービス提供システム２０が提供しているストレージサービスの設定情報を変更する場合においても、外部ストレージ共通フレームワーク２９内だけに追加・変更に伴う影響を限定させることができる。
【００８６】
また、本実施形態に係るサービス提供システム２０では、特定のテナントに属するユーザが固有に利用することができるストレージサービスの固有サービス情報を取得する。したがって、例えばサービス提供システム２０の管理者等は、ある特定のテナントに対して利用可能なストレージサービスを追加したい場合、固有サービス情報記憶部５４に所望のストレージサービスに関する情報を追加すればよい。このため、例えばサービス提供システム２０の管理者等は、利用可能なストレージサービスの追加に関するテナントの要望に柔軟に対応することができるようになる。
【００８７】
《データ保存先情報設定処理》
次に、情報処理システム１のユーザが利用を所望するストレージサービスについて、データの保存先情報を設定する処理について説明する。
【００８８】
ステップＳ１４０１において、ユーザがＰＣ端末３０を操作して、例えばユーザ情報編集画面３０００からデータの保存先情報を設定する所望のストレージサービスを選択する。これは、ユーザ情報編集画面３０００に表示されているストレージサービスの一覧３１００及び３２００から所望のストレージサービスの「データ保存先情報の設定」ボタンを選択することにより行うことができる。すると、ＰＣ端末３０は、選択したストレージサービスのディレクトリ情報取得要求を、ＷｅｂＡＰＩ２１を介して、ポータルアプリ２３に送信する。ディレクトリ情報取得要求には、利用者ＩＤと、選択したストレージサービスに対応するストレージサービス用アプリ６２のアプリＩＤとが含まれる。
【００８９】
ステップＳ１４０２において、ポータルアプリ２３は、ディレクトリ情報取得要求をサーバアプリ２２に転送する。
【００９０】
ステップＳ１４０３において、サーバアプリ２２は、ディレクトリ情報を取得するため、認証部２６に対して、ステップＳ１４０１で選択したストレージサービスに対するログイン要求を送信する。
【００９１】
ステップＳ１４０４において、認証部２６の外部ストレージ共通認証部２６１は、ログイン要求に含まれる利用者ＩＤとアプリＩＤとに基づいてユーザ情報記憶部５２のユーザ情報テーブルから認証情報を取得し、アプリＩＤと、バージョンと、取得した認証情報とを含むログインＡＰＩの呼び出し要求をプロキシ部２８に対して送信する。このように、プロキシ部２８（又は外部ストレージ共通フレームワーク２９）との通信は外部ストレージ共通認証部２６１が行う。換言すれば、認証部２６が外部ストレージ連携ＡＰＩ６１を利用するためには、外部ストレージ共通認証部２６１を介して行う。
【００９２】
ここで、取得する認証情報は、例えば、利用者ＩＤが「Ｔｏｎｙ」、アプリＩＤが「ａｐｐ００４」である場合、認証部２６は、図１３に示すユーザ情報テーブルから認証情報としてＫｅｙ１「ｕｓｅｒ００３」及びＫｅｙ２「ｐａｓｓ００３」を取得する。ここで取得したＫｅｙ１及びＫｅｙ２が、外部ストレージシステム４０４が提供するストレージサービスＡにログインするためのユーザＩＤ及びパスワードである。
【００９３】
ステップＳ１４０５において、プロキシ部２８は、アプリＩＤ及びバージョンを含むログインＡＰＩの呼び出し要求を受け取ると、図８に示すようなプロキシ変換情報テーブルを参照し、該当のホスト名に対してログインＡＰＩの呼び出し要求を転送する。そして、プロキシ部２８が転送したログインＡＰＩの呼び出し要求により、外部ストレージ連携ＡＰＩ６１のログインＡＰＩが呼び出される。より具体的には、外部ストレージ連携ＡＰＩ６１は、アプリＩＤとバージョンと認証情報とを含むログインＡＰＩの呼び出し要求を受け取ると、ログインＡＰＩを呼び出し、この呼び出し要求に含まれるアプリＩＤ及びバージョンに対応するストレージ用アプリ６２に対してログイン要求を依頼する。例えば、ログイン要求に含まれるアプリＩＤが「ａｐｐ０４」、バージョンが「ｖ１」である場合、外部ストレージ連携ＡＰＩ６１は、ストレージサービスＡ用アプリ６２４に対してログイン要求を依頼する。
【００９４】
ステップＳ１４０６において、ストレージサービス用アプリ６２は、外部ストレージシステム４０に対してログイン要求を行う。そして、外部ストレージシステム４０は、受け取ったログイン要求に含まれる認証情報に基づき、認証を行い、ストレージサービス用アプリ６２を介して認証結果を示す情報をサーバアプリ２２に送信する。このとき、認証結果を示す情報には、例えば、ＰＣ端末３０と外部ストレージシステム４０とのセッションを管理するためのトークン（例えばＣｏｏｋｉｅ）を含めてもよい。なお、以降では、外部ストレージシステム４０に対するログインが成功したものとして説明を続ける。
【００９５】
ステップＳ１４０７において、サーバアプリ２２の外部ストレージ連携部２２１は、ディレクトリ情報取得ＡＰＩの呼び出し要求をプロキシ部２８に対して送信する。このように、プロキシ部２８（又は外部ストレージ共通フレームワーク２９）との通信は外部ストレージ連携部２２１が行う。換言すれば、サーバアプリ２２が外部ストレージ連携ＡＰＩ６１を利用するためには、外部ストレージ連携部２２１を介して行う。これにより、例えば、サードベンダがＳＤＫによりサーバアプリ２２を開発する場合等において、外部ストレージ連携部２２１として機能するモジュール等を用いることにより容易に外部ストレージ連携ＡＰＩ６１を利用することができる。なお、ポータルアプリ２３についても外部ストレージ連携部を有していてもよい。
【００９６】
ステップＳ１４０８において、プロキシ部２８は、アプリＩＤ及びバージョンを含むディレクトリ情報取得ＡＰＩの呼び出し要求を受け取ると、図８に示すようなプロキシ変換情報テーブルを参照し、該当のホスト名に対してディレクトリ情報取得ＡＰＩの呼び出し要求を転送する。そして、プロキシ部２８が転送したディレクトリ情報取得ＡＰＩの呼び出し要求により、外部ストレージ連携ＡＰＩ６１のディレクトリ情報取得ＡＰＩが呼び出される。より具体的には、外部ストレージ連携ＡＰＩ６１は、アプリＩＤとバージョンとを含むディレクトリ情報取得ＡＰＩの呼び出し要求を受け取ると、ディレクトリ情報取得ＡＰＩを呼び出し、この呼び出し要求に含まれるアプリＩＤ及びバージョンに対応する外部ストレージ用アプリ６２に対してディレクトリ情報取得要求を依頼する。例えば、ディレクトリ情報取得要求に含まれるアプリＩＤが「ａｐｐ０４」、バージョンが「ｖ１」である場合、外部ストレージ連携ＡＰＩ６１は、ストレージサービスＤ用アプリ６２４に対してディレクトリ情報取得を依頼する。
【００９７】
ステップＳ１４０９において、ストレージサービス用アプリ６２は、外部ストレージシステム４０に対してディレクトリ情報の取得要求を行う。そして、外部ストレージシステム４０は、ストレージサービス用アプリ６２を介して、ディレクトリ情報をＰＣ端末３０に送信する。なお、ここで取得されるディレクトリ情報は、ステップＳ１４０６でログインしたユーザの外部ストレージシステム４０のディレクトリ情報である。換言すれば、ステップＳ１４０１でユーザが選択したストレージサービスのディレクトリ情報である。ここで、ディレクトリ情報は、例えば、ディレクトリを構成するフォルダＩＤと親フォルダＩＤとの組である。
【００９８】
ステップＳ１４１０において、ＰＣ端末３０は、受け取ったディレクトリ情報に基づき、外部ストレージシステム４０におけるデータの保存先を設定するための例えば図１５に示すような保存先フォルダの設定画面４０００を表示装置１０２等に表示させる。図１５は、保存先フォルダ設定画面の一例のイメージ図である。図１５は、外部ストレージシステム４０４が提供するストレージサービスＤにおける保存先フォルダの設定画面４０００を一例として示している。この保存先フォルダの設定画面４０００において、例えば、ユーザがデータの保存先として「保存先フォルダ１」を選択し、設定ボタン４１００を押下すると、このユーザのストレージサービＤにおけるデータの保存先として「保存先フォルダ１」が設定される。
【００９９】
ステップＳ１４１１において、ＰＣ端末３０は、ステップＳ１４１０で設定したデータ保存先情報の保存要求をポータルアプリ２３に対して送信する。
【０１００】
ステップＳ１４１２において、ポータルアプリ２３は、受け取ったデータ保存先情報の保存要求をサーバアプリ２２に送信する。そして、サーバアプリ２２は、受け取ったデータ保存先情報をデータ保存先情報記憶部５３の図１６に示すようなデータ保存先情報テーブルに保存する。
【０１０１】
図１６は、データ保存先情報テーブルの一例の構成図である。図１６に示されるデータ保存先情報テーブルは、「利用者ＩＤ」、「アプリＩＤ」、「データ保存先」等のデータ項目を有する。「データ保存先」は、アプリＩＤに対応するストレージサービスにおける、利用者ＩＤに対応するユーザのデータの保存先情報である。例えば、図１６において、利用者ＩＤ「Ｔｏｎｙ」のストレージサービスＤ（アプリＩＤ「ａｐｐ００４」）におけるデータの保存先は「ストレージサービスＤ／画像データ／保存先フォルダ１」に設定されていることを示している。後述するデータアップロード処理において、データを外部ストレージシステム４０に保存する場合、「データ保存先」のデータ項目に設定されている保存先フォルダにデータが保存される。
【０１０２】
以上により、本実施形態に係るサービス提供システム２０では、ユーザは、ＰＣ端末３０から所望のストレージサービスのデータ保存先情報を設定することができる。保存先フォルダ設定画面を生成するためのディレクトリ情報は、外部ストレージ共通フレームワーク２９を用いて取得することができる。したがって、サービス提供システム２０が提供するストレージサービスを追加する場合においても、外部ストレージ共通フレームワーク２９内だけに追加に伴う影響を限定させることができる。
【０１０３】
《データアップロード処理》
次に、情報処理システム１のユーザが画像形成装置１０で原稿をスキャンして生成した画像データを、所望の外部ストレージシステム４０に保存（アップロード）する処理について説明する。
【０１０４】
ステップＳ１７０１において、ユーザは例えば利用者ＩＤ及び利用者パスワードを入力して画像形成装置１０にログインし、画像データの保存（アップロード）先の外部ストレージシステム４０（ストレージサービス）を選択する。そして、ユーザは画像形成装置１０において、原稿をスキャンして画像データを生成する。すると、画像形成装置１０のクライアントアプリ１１は、画像データのアップロード要求をサーバアプリ２２に送信する。このアップロード要求には、利用者ＩＤと、生成した画像データと、選択したストレージサービスに対応するストレージサービス用アプリ６２のアプリＩＤとが含まれる。
【０１０５】
ステップＳ１７０２において、サーバアプリ２２は、画像形成装置１０のクライアントアプリ１１から画像データのアップロード要求を受け取ると、この画像データを外部ストレージシステム４０にアップロードするためのジョブを外部ストレージ配信部２５に依頼する。
【０１０６】
ステップＳ１７０３において、外部ストレージ配信部２５は、サーバアプリ２２からジョブの依頼を受け付けると、外部ストレージ連携部２２１に画像データのアップロードを依頼する。なお、このときサーバアプリ２２は、データ保存先情報記憶部５３のデータ保存先情報テーブルから保存先情報を取得し、画像データと、この画像データの保存先情報とを含むジョブを生成し、外部ストレージ連携部２２１にアップロードを依頼する。例えば、ステップＳ１７０１においてユーザ（利用者ＩＤ「Ｔｏｎｙ」）が画像データのアップロード先としてストレージシステムＤ（アプリＩＤ「ａｐｐ００４」）を選択した場合、サーバアプリ２２は、保存先情報として「ストレージサービスＤ／画像データ／保存先フォルダ１」をデータ保存先情報テーブルから取得する。
【０１０７】
ステップＳ１７０４において、外部ストレージ連携部２５１は、画像データをアップロードするため、認証部２６に対して、ステップＳ１７０１で選択したストレージサービスに対するログイン要求を送信する。
【０１０８】
ステップＳ１７０５において、認証部２６の外部ストレージ共通認証部２６１は、ログイン要求に含まれる利用者ＩＤとアプリＩＤとに基づいてユーザ情報記憶部５２のユーザ情報テーブルから認証情報を取得し、アプリＩＤとバージョンと取得した認証情報とを含むログインＡＰＩの呼び出し要求をプロキシ部２８に対して送信する。
【０１０９】
ここで、例えば、ログイン要求に含まれる利用者ＩＤが「Ｔｏｎｙ」、アプリＩＤが「ａｐｐ００４」である場合、認証部２６は、図１３に示すユーザ情報テーブルから認証情報としてＫｅｙ１「ｕｓｅｒ００３」及びＫｅｙ２「ｐａｓｓ００３」を取得する。ここで取得したＫｅｙ１及びＫｅｙ２が、外部ストレージシステム４０４が提供するストレージサービスＤにログインするためのユーザＩＤ及びパスワードである。
【０１１０】
ステップＳ１７０６において、プロキシ部２８は、アプリＩＤ及びバージョンを含むログインＡＰＩの呼び出し要求を受け取ると、図８に示すようなプロキシ変換情報テーブルを参照し、該当のホスト名に対してログインＡＰＩの呼び出し要求を転送する。そして、プロキシ部２８が転送したログインＡＰＩの呼び出し要求により、外部ストレージ連携ＡＰＩ６１のログインＡＰＩが呼び出される。より具体的には、外部ストレージ連携ＡＰＩ６１は、アプリＩＤとバージョンと認証情報を含むログインＡＰＩの呼び出し要求を受け取ると、ログインＡＰＩを呼び出し、この呼び出し要求に含まれるアプリＩＤ及びバージョンに対応する外部ストレージ用アプリ６２に対してログイン要求を依頼する。例えば、ログイン要求に含まれるアプリＩＤが「ａｐｐ０４」、バージョンが「ｖ１」である場合、外部ストレージ連携ＡＰＩ６１は、ストレージサービスＤ用アプリ６２４に対してログイン要求を依頼する。
【０１１１】
ステップＳ１７０７において、ストレージサービス用アプリ６２は、外部ストレージシステム４０に対してログイン要求を行う。そして、外部ストレージシステム４０は、受け取ったログイン要求に含まれる認証情報に基づき、認証を行い、ストレージサービス用アプリ６２を介して認証結果を示す情報をサーバアプリ２２に送信する。このとき、認証結果を示す情報には、例えば、画像形成装置１０と外部ストレージシステム４０とのセッションを管理するためのトークン（例えばＣｏｏｋｉｅ）を含めてもよい。なお、以降では、外部ストレージシステム４０に対するログインが成功したものとして説明を続ける。
【０１１２】
ステップＳ１７０８において、外部ストレージ連携部２５１は、データアップロードＡＰＩの呼び出し要求をプロキシ部２８に対して送信する。
【０１１３】
ステップＳ１７０９において、プロキシ部２８は、アプリＩＤとバージョンと画像データとを含むデータアップロードＡＰＩの呼び出し要求を受け取ると、図８に示すようなプロキシ変換情報テーブルを参照し、該当のホスト名に対してデータアップロードＡＰＩの呼び出し要求を転送する。そして、プロキシ部２８が転送したデータアップロードＡＰＩの呼び出し要求により、外部ストレージ連携ＡＰＩ６１のデータアップロードＡＰＩが呼び出される。より具体的には、外部ストレージ連携ＡＰＩ６１は、アプリＩＤとバージョンと画像データとを含むデータアップロードＡＰＩの呼び出し要求を受け取ると、データアップロードＡＰＩを呼び出し、この呼び出し要求に含まれるアプリＩＤ及びバージョンに対応する外部ストレージ用アプリ６２に対して画像データのアップロード要求を依頼する。例えば、ディレクトリ情報取得要求に含まれるアプリＩＤが「ａｐｐ００４」、バージョンが「ｖ１」である場合、外部ストレージ連携ＡＰＩ６１は、ストレージサービスＤ用アプリ６２４に対してデータアップロード要求を依頼する。
【０１１４】
ステップＳ１７１０において、ストレージサービス用アプリ６２は、外部ストレージシステム４０に対して、画像データのアップロード要求を行う。そして、外部ストレージシステム４０は、アップロード要求に含まれる保存先情報が示すフォルダに画像データを保存する。
【０１１５】
以上により、本実施形態に係るサービス提供システム２０では、ユーザが画像形成装置１０で原稿をスキャンして生成した画像データを、所望のストレージサービス（外部ストレージシステム４０）の所望のフォルダに保存（アップロード）することができる。また、所望の外部ストレージシステム４０への画像データのアップロードは、外部ストレージ共通フレームワーク２９を用いて行うことができる。したがって、サービス提供システム２０が提供するストレージサービスを追加・削除等する場合においても、外部ストレージ共通フレームワーク２９内だけに追加・削除に伴う影響を限定させることができる。
【０１１６】
＜まとめ＞
以上の本実施形態に係るサービス提供システム２０によれば、連携して処理を行うストレージサービスの追加・変更等を容易に行うことができる。すなわち、サービス提供システム２０と連携して処理を行うストレージサービスの追加・変更等を行う場合においても、外部ストレージ共通フレームワーク２９内に追加・変更等に伴う影響を限定することができる。例えば、外部ストレージ共通フレームワーク２９のストレージサービス用アプリ６２を追加・変更する場合、サービス提供システム２０の追加・変更手段を用いて、サービス提供システム２０全体の稼働は維持したまま、追加・変更を行うことができる。したがって、ストレージサービスの追加・変更等に伴う開発工数や開発期間を削減することができる。
【０１１７】
また、本実施形態に係るサービス提供システム２０によれば、特定のテナントに対して、連携して処理を行うストレージサービスの追加等を行うことができる。これにより、例えばサービス提供システム２０の管理者等は、特定のテナントから利用可能なストレージサービスを追加して欲しい等の要望に対して柔軟に対応することができる。
【０１１８】
なお、本実施形態においては、入力元として画像形成装置１０においてスキャンした画像データを、出力先として外部ストレージシステム４０に保存する場合について説明したが、これに限られない。例えば、入力元としてはスキャンしたものに限られず、デジタルカメラ、携帯電話等で撮像された画像データであってもよいし、また、画像データに限られずＰＣで作成された文書データ、ＩＣレコーダで作成された音声データ等の種々の電子データであってもよい。また、出力先としては、例えば、プロジェクタのような画像投影装置、プリンタ、会議システム等であってもよい。
【０１１９】
その他、電子データの入力元又は出力元としては、電子データの入力手段又は出力手段として機能可能な機器であれば、他の機器を用いて、本実施の形態と同趣旨のサービスが実現されていてもよい。
【０１２０】
さらに、入力元から入力した画像データについてサービス提供システム２０において所定の処理を施してから出力先に出力してもよい。例えば、入力元として画像形成装置１０においてスキャンした画像データを、サービス提供システム２０においてＯＣＲ処理を行い、この処理結果であるテキストデータを出力先に出力してもよい。また、例えば、文書データを入力した場合には、サービス提供システム２０において、言語の翻訳処理等を行い、この処理結果を出力先に出力してもよい。
【０１２１】
なお、ＷｅｂＡＰＩ２１は、受付手段の一例である。サーバアプリ２２は、第１のプログラムの一例である。認証部２６及びサーバアプリ２２は、登録手段の一例である。ストレージサービス用アプリ６２は、第２のプログラムの一例である。外部ストレージ連携ＡＰＩ６１は、インタフェース手段の一例である。外部ストレージ共通フレームワーク２９は、処理要求手段の一例である。アプリＩＤは、外部サービスの識別情報及び第２のプログラムの識別情報の一例である。
【０１２２】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【０１２３】
１      情報処理システム
１０    画像形成装置
１１    クライアントアプリ
２０    サービス提供システム
２１    ＷｅｂＡＰＩ
２２    サーバアプリ
２３    ポータルアプリ
２４    共通サービス情報部
２５    外部ストレージ配信部
２６    認証部
２７    固有サービス情報部
２８    プロキシ部
２９    外部ストレージ共通フレームワーク
３０    ＰＣ端末
４０    外部ストレージシステム
５１    共通サービス情報記憶部
５２    ユーザ情報記憶部
５３    データ保存先情報記憶部
５４    共通サービス情報記憶部
５５    プロキシ変換情報記憶部
６１    外部ストレージ連携ＡＰＩ
６２    ストレージサービス用アプリ
６３    ストレージサービスの設定情報記憶部
【先行技術文献】
【特許文献】
【０１２４】
【特許文献１】特開２０１３−０９２８３３号公報
【図１】
0006511868.tif 000002
【図２】
0006511868.tif 000003
【図３】
0006511868.tif 000004
【図４】
0006511868.tif 000005
【図５】
0006511868.tif 000006
【図６】
0006511868.tif 000007
【図７】
0006511868.tif 000008
【図８】
0006511868.tif 000009
【図９】
0006511868.tif 000010
【図１０】
0006511868.tif 000011
【図１１】
0006511868.tif 000012
【図１２】
0006511868.tif 000013
【図１３】
0006511868.tif 000014
【図１４】
0006511868.tif 000015
【図１５】
0006511868.tif 000016
【図１６】
0006511868.tif 000017
【図１７】
0006511868.tif 000018