以下、本発明の実施形態について図面を参照しながら説明する。
<システム構成>
図1は、本実施形態に係る情報処理システムの一例の構成図である。図1に示される情報処理システム1において、サービス提供環境E2、ユーザ環境E1及び外部ストレージシステム40等は、インターネット等の広域的なネットワークN1を介して通信可能に接続されている。
サービス提供環境E2は、ネットワークを介してクラウドサービス等の外部サービスを提供するシステム環境である。なお、本実施の形態では、外部サービスの具体例としてクラウドサービスを採用して説明するが、ASP(Application Service Provider)によって提供されるサービスやWebサービス等、ネットワークを介して提供されるサービスに関して本実施の形態が適用されてもよい。
サービス提供環境E2は、一台以上の情報処理装置で実現されるサービス提供システム20を有する。サービス提供システム20は、ネットワークを介して所定のサービスを提供する。例えば、サービス提供システム20は、ユーザ環境E1の画像形成装置10においてスキャンされた画像データを、予め設定された保存先に保存するサービスを提供する。本実施形態では、サービス提供環境E2は、クラウドサービスの一例として、外部ストレージシステム40と連携してクラウドストレージサービス(以降、単に「ストレージサービス」という)を提供するものとして説明する。なお、サービス提供システム20の全部又は一部は、ユーザ環境E1に設置されていてもよい。すなわち、サービス提供システム20を構成する情報処理装置の全部又は一部は、ユーザ環境E1に包含されていてもよい。
ユーザ環境E1は、例えば画像形成装置10を使用するユーザが属する企業等におけるシステム環境である。ユーザ環境E1において、一台以上の画像形成装置10と一台以上のPC端末30とはLAN(Local Area Network)等のネットワークを介して接続されている。
本実施形態に係る画像形成装置10は、スキャン機能を有する画像形成装置である。ただし、スキャン機能以外に、印刷、コピー、又はファックス(FAX)通信等の機能を有する複合機が画像形成装置10として用いられてもよい。
PC端末30は、ユーザ環境E1における画像形成装置10のユーザが使用する端末である。PC端末30は、PC(Personal Computer)の他、PDA(Personal Digital Assistance)、タブレット型端末、スマートフォン、携帯電話等が用いられてもよい。
外部ストレージシステム40は、ネットワークを介してストレージサービス(又はオンラインストレージ)と呼ばれるクラウドサービスを提供するコンピュータシステムである。ストレージサービスとは、外部ストレージシステム40のストレージの記憶領域を貸し出すサービスである。本実施形態では、外部ストレージシステム40によって貸し出される記憶領域は、サービス提供システム20によって提供されるストレージサービスにおいて、画像データの保存先の候補である。以降では、複数の外部ストレージシステム40について、各々を区別するときは、外部ストレージシステム401、外部ストレージシステム402等と添え字を付けて記載する。また、外部ストレージシステム401によって提供されるサービスの名称(サービス名)を「ストレージサービスA」、ストレージシステム402によって提供されるサービス名を「ストレージサービスB」等とする。
なお、外部ストレージシステム40は、複数台の情報処理装置によって実現されるシステムであってもよい。また、図1に示される情報処理システム1の構成は一例であって、他の構成であってもよい。
<ハードウェア構成>
図1に示されるサービス提供システム20及びPC端末30は、例えば図2に示されるようなハードウェア構成のコンピュータにより実現される。
図2は、コンピュータの一例のハードウェア構成図である。図2のコンピュータ100は、入力装置101と、表示装置102と、外部I/F103と、RAM(Random Access Memory)104とを有する。また、コンピュータ100は、ROM(Read Only Memory)105と、CPU(Central Processing Unit)106と、通信I/F107と、HDD(Hard Disk Drive)108とを有する。これらの各ハードウェアは、それぞれがバスBで接続されている。
入力装置101はキーボードやマウス、タッチパネル等を含み、ユーザが各操作信号を入力するのに用いられる。表示装置102はディスプレイ等を含み、コンピュータ100による処理結果を表示する。なお、入力装置101及び表示装置102は必要なときに接続して利用する形態であってもよい。
通信I/F107はコンピュータ100をネットワークN1に接続するインタフェースである。これにより、コンピュータ100は通信I/F107を介してデータ通信を行うことができる。
また、HDD108は、プログラムやデータを格納している不揮発性の記憶装置の一例である。格納されるプログラムやデータには、コンピュータ100全体を制御する基本ソフトウェアであるOS(Operating System)、及びOS上において各種機能を提供するアプリケーションソフトウェア等がある。なお、コンピュータ100はHDD108に替え、記憶媒体としてフラッシュメモリを用いるドライブ装置(例えばソリッドステートドライブ:SSD)を利用するものであってもよい。
HDD108は格納しているプログラムやデータを所定のファイルシステム及び/又はDBにより管理している。外部I/F103は、外部装置とのインタフェースである。外部装置には、記録媒体103a等がある。
これにより、コンピュータ100は外部I/F103を介して記録媒体103aの読み取り及び/又は書き込みを行うことができる。記録媒体103aにはフレキシブルディスク、CD、DVD、SDメモリカード、USBメモリ等がある。
ROM105は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ(記憶装置)である。ROM105にはコンピュータ100の起動時に実行されるBIOS、OS設定、及びネットワーク設定等のプログラムやデータが格納されている。RAM104はプログラムやデータを一時保持する揮発性の半導体メモリ(記憶装置)である。
CPU106は、ROM105やHDD108等の記憶装置からプログラムやデータをRAM104上に読み出し、処理を実行することで、コンピュータ100全体の制御や機能を実現する演算装置である。サービス提供システム20及びPC端末30はコンピュータ100のハードウェア構成により、後述する各種処理を実現できる。
図1に示される画像形成装置10は、例えば図3に示されるようなハードウェア構成により実現される。図3は、本実施形態に係る画像形成装置の一例のハードウェア構成図である。図3に示される画像形成装置10は、コントローラ201と、操作パネル202と、外部I/F203と、通信I/F204と、スキャナ205とを備える。
コントローラ201はCPU211と、RAM212と、ROM213と、NVRAM214と、HDD215とを備える。ROM213は、各種プログラムやデータが格納されている。RAM212はプログラムやデータを一時保持する。NVRAM214は、例えば設定情報等が格納されている。また、HDD215は各種プログラムやデータが格納
CPU211は、ROM213やNVRAM214、HDD215等からプログラムやデータ、設定情報等をRAM212上に読み出し、処理を実行することで、画像形成装置10全体の制御や機能を実現する。
操作パネル202はユーザからの入力を受け付ける入力部と、表示を行う表示部とを備えている。外部I/F203は外部装置とのインタフェースである。外部装置には、記録媒体203a等がある。これにより、画像形成装置10は外部I/F203を介して記録媒体203aの読み取り及び/又は書き込みを行うことができる。記録媒体203aにはICカード、フレキシブルディスク、CD、DVD、SDメモリカード、USBメモリ等がある。
通信I/F204は、画像形成装置10をネットワークN1に接続するインタフェースである。これにより、画像形成装置10は通信I/F204を介してデータ通信を行うことができる。スキャナ205は原稿から画像データ(電子データ)を読み取るための読取装置である。画像形成装置10は上記のハードウェア構成により、後述する各種処理を実現できる。
<ソフトウェア構成>
本実施形態に係る情報処理システム1は、例えば図4に示されるような処理ブロックにより実現することができる。図4は、本実施形態に係る情報処理システムの一例の処理ブロック図である。なお、図4の情報処理システム1において、本実施形態の説明に不要な処理ブロックについては図示を省略している。
画像形成装置10は、1つ以上のクライアントアプリ11を有する。クライアントアプリ11は、サービス提供システム20と連携させるために、画像形成装置10にインストールされるアプリケーションプログラムである。クライアントアプリ11は、後述するサーバアプリ22と連携し、利用できるストレージサービスの表示やストレージサービスへのデータの保存要求等を行う。なお、「クライアントアプリ」という用語は、サービス提供システム20側にインストールされるアプリケーションプログラム(後述する「サーバアプリ22」)と区別するために便宜上用いた用語である。
なお、クライアントアプリ11とサーバアプリ22とが同一のプログラムであってもよい。また、クライアントアプリ11は、SDK(Software Development Kit)を利用して開発されたアプリケーションであるSDKアプリケーションを利用できる。
サービス提供システム20は、WebAPI21と、サーバアプリ22と、ポータルアプリ23と、共通サービス情報部24と、外部ストレージ配信部25とを有する。また、サービス提供システム20は、認証部26と、固有サービス情報部27と、プロキシ部28と、外部ストレージ共通フレームワーク29とを有する。これら各部は、サービス提供システム20にインストールされる一以上のプログラムが、CPU106等に実行させる処理により実現される。
また、サービス提供システム20は、共通サービス情報記憶部51と、ユーザ情報記憶部52と、データ保存先情報記憶部53と、固有サービス情報記憶部54と、プロキシ変換情報記憶部55とを有する。これら各記憶部は、HDD108を用いて実現可能である。なお、これら各記憶部の全部又は一部は、サービス提供システム20とネットワークを介して接続される記憶装置等を用いて実現可能されてもよい。
WebAPI21は、画像形成装置10やPC端末30がサービス提供システム20を利用するためのインタフェースである。WebAPI21は、画像形成装置10やPC端末30からの各種要求をサーバアプリ22やポータルアプリ23等が受け付けるために設けられた予め定義されたインタフェースであり、例えば、関数やクラス等により構成される。
サーバアプリ22は、クライアントアプリ11と連携してサービス提供システム20が提供するストレージサービスを実現するアプリケーションプログラムである。サーバアプリ22は、外部ストレージ連携部221を有しており、クライアントアプリ11から所定の要求を受け付けると、外部ストレージ連携部221は、プロキシ部28を介して、ストレージサービスのディレクトリ情報取得API(Application Programming Interface)の呼び出し要求を外部ストレージ共通フレームワーク29に対して行う。なお、サーバアプリ22は、SDKを利用して開発されたアプリケーションであるSDKアプリケーションを利用できる。
ポータルアプリ23は、PC端末30に対して、外部ストレージシステム40におけるデータの保存先フォルダの設定や認証情報の設定等を提供する。ポータルアプリ23は、UI生成部231を有しており、PC端末30からの要求を受け付けると、UI生成部231は、受け付けた要求に応じたUI(ユーザインタフェース)画面の生成を行う。
共通サービス情報部24は、ユーザが共通に利用できるストレージサービスの管理を行う。すなわち、共通サービス情報部24は、ユーザが属する企業等に関わらず、すべてのユーザが利用することができるストレージサービスの管理を行う。また、共通サービス情報部24は、他の各部からの依頼に応じて、共通サービス情報記憶部51からユーザが共通に利用できるストレージサービスに関する情報(以降、「共通サービス情報」という)を取得する。
外部ストレージ配信部25は、サーバアプリ22からの所定の要求に応じて、外部ストレージシステム40にデータを保存するための処理を行う。外部ストレージ配信部25は、外部ストレージ連携部251を有しており、サーバアプリ22から所定の要求を受け付けると、外部ストレージ連携部251は、プロキシ部28を介して、データのアップロードAPIの呼び出し要求を外部ストレージ共通フレームワーク29に対して行う。
認証部26は、ユーザの認証情報(以降、「ユーザ情報」という)の管理を行う。また、認証部26は、他の各部からの依頼に応じて、ユーザ情報記憶部52からユーザ情報を取得する。認証部26は、外部ストレージ共通認証部261を有し、外部ストレージ共通認証部261は、プロキシ部28を介して、外部ストレージシステム40へのログインAPIの呼び出し要求を外部ストレージ共通フレームワーク29に対して行う。
固有サービス情報部27は、ユーザが属する企業等が固有に利用できるストレージサービスの管理を行う。すなわち、共通サービス情報部24は、ある特定の企業等に対して利用が許可されているストレージサービスの管理を行う。ここで、ユーザが属する企業、組織、グループ等は、「テナント」と称され、各テナントには情報処理システム1内でテナントを一意に識別するテナントIDが付与される。したがって、換言すれば、固有サービス情報部27は、ある特定のテナント(に属するユーザ)が利用できるストレージサービスの管理を行う。また、固有サービス情報部27は、他の各部からの依頼に応じて、固有サービス情報記憶部54からユーザが属するテナントが固有に利用できるストレージサービスに関する情報(以降、「固有サービス情報」という)を取得する。なお、上述した共通サービス情報は、すべてのテナント(に属するユーザ)が共通に利用できるストレージサービスに関する情報と言い換えることができる。
外部ストレージ共通フレームワーク29は、外部ストレージ連携API61と、ストレージサービス用アプリ62とを有する。また、外部ストレージ共通フレームワーク29は、外部ストレージサービスの設定情報記憶部63を有する。
外部ストレージ連携API61は、ストレージサービス用アプリ62を利用するための共通のインタフェースである。外部ストレージ連携API61は、サービス提供システム20の各部からのAPIの呼び出し要求をストレージサービス用アプリ62が受け付けるために設けられた予め定義されたインタフェースであり、例えば、関数やクラス等により構成される。
ストレージサービス用アプリ62は、外部ストレージシステム40に対して、ディレクトリ情報の取得、データのアップロード、データのダウンロード等の各種処理を行うことができるプログラムである。ストレージサービス用アプリ62は、利用できるストレージサービス毎に存在する。例えば、ストレージサービスAを利用するためのストレージサービスA用アプリ621、ストレージサービスBを利用するためのストレージサービスB用アプリ622、・・・、ストレージサービスDを利用するためのストレージサービスD用アプリ624等が存在する。なお、各ストレージサービス用アプリ62には、「アプリID」と「バージョン」とが対応付けられている。これらの情報は、ストレージサービスの名称とともに、共通サービス情報記憶部51又は固有サービス情報記憶部54において共通サービス情報又は固有サービス情報として管理される。すなわち、テナントに関わらず共通に利用できるストレージサービスの「アプリID」や「バージョン」等は共通サービス情報として共通サービス情報記憶部51において管理される。一方で、ある特定のテナントが固有に利用できるストレージサービスの「アプリID」や「バージョン」等は固有サービス情報として固有サービス情報記憶部54において管理される。ここで、以降では、「ストレージサービスA」、「ストレージサービスB」等はテナントに関わらず共通に利用できるストレージサービスであるとする。一方、「ストレージサービスD」、「ストレージサービスE」等はある特定のテナントが固有に利用できるストレージサービスであるとする。
また、ストレージサービス用アプリ62は、それぞれ対応する設定情報記憶部63を利用する。設定情報記憶部63には、対応する外部ストレージサービスの設定情報が記憶されている。設定情報は、UI生成部231がユーザインタフェースを生成するために必要な情報が指定されている。
プロキシ部28は、他の各部から外部ストレージシステム40に対する各種要求を受け付けると、プロキシ変換情報記憶部55のプロキシ変換情報テーブルを参照し、対応するホスト情報(アドレス情報)に要求を転送する。例えば、プロキシ部28は、外部ストレージシステム401(ストレージサービスA)に対する要求を受け取った場合、プロキシ変換情報テーブルを参照し、ストレージサービスA用アプリ621が動作するホストに、この要求を転送する。
より具体的に説明すると、例えば、ストレージサービスA用アプリ621(アプリID「app001」)がホスト情報「aaa.xxx.co.jp」の装置に存在し、ストレージサービスD用アプリ624(アプリID「app004」)がホスト情報「ccc.xxx.co.jp」の装置に存在するとする。このとき、プロキシ部28は、プロキシ変換情報テーブルを参照し、受け取った要求に含まれるアプリIDが「app001」である場合、この要求を「aaa.xxx.co.jp」に転送し、他方、受け取った要求に含まれるアプリIDが「app004」である場合、この要求を「ccc.xxx.co.jp」に転送する。換言すれば、プロキシ部28は、所望のストレージサービス用アプリ62が搭載されている(動作している)ホスト情報の装置に対して、受け取った要求を転送する。
なお、異なるホスト情報が同一の装置で実現されてもよいし、複数台の装置で実現されていてもよい。他方、例えば外部ストレージ共通フレームワーク29が一台の情報処理装置で実現されており、かつ、一つのホスト情報のみを有する場合等は、サービス提供システム20は、プロキシ部28を有していなくてもよい。
また、共通サービス情報記憶部51は、共通サービス情報テーブルを記憶する。ユーザ情報記憶部52は、ユーザ情報テーブルを記憶する。データ保存先情報記憶部53は、データ保存先情報テーブルを記憶する。固有サービス情報記憶部54は、固有サービス情報テーブルを記憶する。プロキシ変換情報記憶部55は、プロキシ変換情報テーブルを記憶する。外部ストレージサービスの設定情報記憶部63は、設定情報を記憶する。
なお、上述したように、サービス提供システム20の処理ブロックは、複数台の情報処理装置により構成されていてもよい。例えば、プロキシ部28とプロキシ変換情報記憶部55とを一台の情報処理装置で構成し、外部ストレージ共通フレームワーク29を複数台の情報処理装置で構成して運用してもよい。
以上のように本実施形態に係るサービス提供システム20は、各ストレージサービスを利用するための外部ストレージ共通フレームワーク29を有する。また、外部ストレージ共通フレームワーク29は、各ストレージサービス用アプリ62を利用するための共通に定義されたAPIである外部ストレージ連携API61を有する。したがって、利用できるストレージサービスを追加・変更等する場合、外部ストレージ連携API61を利用することにより、システム全体に影響を与えることなくストレージサービス用アプリ62を追加・変更等を行うことができる。換言すれば、ストレージサービスの追加・変更等に伴うサービス提供システム20への影響を、外部ストレージ共通フレームワーク29の中だけに限定させることができる。なお、外部ストレージ連携API61は、例えばサードベンダ等に公開してもよい。
また、本実施形態に係るサービス提供システム20は、すべてのテナントに属するユーザが共通に利用することができるストレージサービスに関する情報(共通サービス情報)が記憶された共通サービス情報記憶部51を有する。一方で、サービス提供システム20は、ある特定のテナントに属するユーザが利用することができるストレージサービスに関する情報(固有サービス情報)が記憶された固有サービス情報記憶部54を有する。これにより、例えば、ある特定のテナントのみが利用できるストレージサービスを追加することができるようになる。
<処理の詳細>
次に、本実施形態に係る情報処理システムの処理の詳細について説明する。
《認証情報設定処理》
まず、情報処理システム1のユーザが利用することができるストレージサービスの認証情報を設定する処理について説明する。
ステップS501において、ユーザがPC端末30を操作してユーザ情報編集画面へ遷移させる。これは、例えば次のようにして行えばよい。すなわち、ユーザは、PC端末30のWebブラウザ等を用いて、WebAPI21を介して、サービス提供システム20のポータルアプリ23が提供するポータルサイトにログインする。そして、ユーザは、このポータルサイトで所定のボタンを押下することでユーザ情報編集画面に遷移させることができる。なお、ユーザがポータルサイトにログインする際には、テナントID、ユーザID、パスワード等を入力する。ここで、後述する外部ストレージシステム40にログインするためのユーザID及びパスワードと区別するため、サービス提供システム20にログインするためのユーザID及びパスワードを、以降では便宜的に、利用者ID及び利用者パスワードと呼ぶ。
ステップS502において、ポータルアプリ23は、共通サービス情報部24に対して共通サービス情報の取得を依頼する。共通サービス情報部24は、ポータルアプリ23から共通サービス情報の取得依頼を受け付けると、共通サービス情報記憶部51に記憶されている図6に示すような共通サービス情報テーブルを取得し、ポータルアプリ23に送信する。
図6は、共通サービス情報テーブルの一例の構成図である。共通サービス情報テーブルは、各テナントのユーザが共通に利用することができるストレージサービスのストレージサービス用アプリ62の情報を管理している。共通サービス情報テーブルは、「アプリID」、「外部ストレージサービス名」及び「バージョン」等のデータ項目を有する。「アプリID」は、外部ストレージシステム40に対して各種処理を要求するためのストレージサービス用アプリ62の識別情報である。「外部ストレージサービス名」は、外部ストレージシステム40が提供するサービスの名称である。「バージョン」は、ストレージサービス用アプリ62のバージョン情報である。
例えば、図6に示される共通サービス情報テーブルの1レコード目には、次の情報が記憶されている。すなわち、ストレージサービスA用アプリ621のアプリID「app001」、外部ストレージシステム401が提供するサービス名「ストレージサービスA」、ストレージサービスA用アプリ621のバージョン情報「v1」が記憶されている。
なお、図6に示される共通サービス情報テーブルでは、同一のアプリIDであっても異なるバージョンのストレージサービス用アプリ62は別々に管理しているが、バージョンに関わらず同一のアプリIDを1レコードで管理してもよい。
ステップS503において、ポータルアプリ23は、固有サービス情報部27に対して固有サービス情報の取得を依頼する。ここで、固有サービス情報の取得依頼には、ステップS501でユーザから入力されたテナントIDが含まれる。そして、固有サービス情報部27は、固有サービス情報の取得依頼を受け付けると、固有サービス情報記憶部54から当該取得依頼に含まれるテナントIDの固有サービス情報テーブルを取得し、ポータルアプリ23に送信する。
図7は、固有サービス情報テーブルの一例の構成図である。固有サービス情報テーブルは、テナント毎に、このテナントに属するユーザが利用することができるストレージサービスのストレージサービス用アプリ62の情報を管理している。固有サービス情報テーブルが有する各データ項目は、共通サービス情報テーブルと同様である。
なお、図7に示す固有サービス情報テーブルでは、テナント毎に、このテナントに属するユーザが利用することができるストレージサービスのストレージサービス用アプリ62の情報を管理しているが、これに限られない。すなわち、固有サービス情報テーブルは、例えば、ユーザ毎に、このユーザが利用することができるストレージサービスのストレージサービス用アプリ62の情報を管理していてもよい。
例えば、図7に示されるテナントID「T001」の固有サービス情報テーブルの1レコード目には、次の情報が記憶されている。すなわち、ストレージサービスD用アプリ624のアプリID「app004」、外部ストレージシステム404が提供するサービス名「ストレージサービスD」、ストレージサービスA用アプリ624のバージョン情報「v1」が記憶されている。
次に、ステップS504及びステップS505の処理を、ステップS502で取得した共通サービス情報テーブルに含まれるレコード数の回数繰り返し行う。
ステップS504において、ポータルアプリ23は、ステップS502で取得した共通サービス情報テーブルからレコードを1件取得し、このレコードのアプリID及びバージョンを含む設定情報取得APIの呼び出し要求をプロキシ部28に送信する。
ステップS505において、プロキシ部28は、アプリID及びバージョンを含む設定情報取得APIの呼び出し要求を受け取ると、図8に示すようなプロキシ変換情報テーブルを参照し、該当のホスト名に対して設定情報取得APIの呼び出し要求を転送する。
図8は、プロキシ変換情報テーブルの一例の構成図である。プロキシ変換情報テーブルは、アプリIDに対応した転送先のホスト名を管理している。プロキシ変換情報テーブルは、「アプリID」、「転送先ホスト情報」等のデータ項目を有する。「アプリID」は、上述したようにストレージサービス用アプリ62の識別情報である。「転送先ホスト名」は、プロキシ部28が受け付けた各種要求を転送する転送先のホスト名である。
例えば、プロキシ部28が受け取った設定情報取得APIの呼び出し要求に含まれるアプリID及びバージョンがそれぞれ「app001」及び「v2」である場合、プロキシ部28は、図8に示すプロキシ変換情報テーブルを参照し、この設定情報取得APIの呼び出し要求を「aaa.xxx.co.jp」に転送する。一方、プロキシ部28が受け取った要求に含まれるアプリID及びバージョンがそれぞれ「app004」及び「v1」である場合、プロキシ部28は、この要求を「ccc.xxx.co.jp」に転送する。このように、プロキシ部28は、受け取った要求に含まれるアプリIDに応じて、この要求を転送先ホスト情報に指定されたホストに転送する。なお、転送先ホスト情報に代えて、転送先を示すIPアドレス等を用いてもよい。
そして、プロキシ部28が転送した設定情報取得APIの呼び出し要求より、外部ストレージ連携API61の設定情報取得APIが呼び出され、該当の外部ストレージ用アプリ62は設定情報の取得を行う。より具体的には、外部ストレージ連携API61は、アプリID及びバージョンを含む設定情報取得APIの呼び出し要求を受け取ると、設定情報取得APIを呼び出し、この呼び出し要求に含まれるアプリID及びバージョンに対応する外部ストレージ用アプリ62に対して設定情報の取得を依頼する。外部ストレージ用アプリ62は、設定情報記憶部63から設定情報を取得し、プロキシ部28を介して、設定情報をポータルアプリ23に送信する。
なお、サービス提供システム20がプロキシ部28を有さない構成である場合、上記のステップS504において、ポータルアプリ23は、外部ストレージ連携API61に対して直接、設定情報取得APIの呼び出し要求を行う。
ここで、外部ストレージ連携API61について、図9を用いて説明する。図9は、外部ストレージ連携APIの一例を説明するための図である。外部ストレージ連携API61は、外部ストレージシステム40に対して各種処理要求を行うためのAPIを定義している。図9において、外部ストレージシステム40の設定情報を取得するためのAPIは、エンドポイント「/アプリID/バージョン/info」で定義されている。したがって、外部ストレージシステム401(ストレージサービスA)の設定情報を取得するためには、例えばアプリID「app001」、バージョン「v2」を指定した設定情報取得APIの呼び出し要求を外部ストレージ連携API61に送信すればよい。これにより、ストレージサービスA用アプリ621によりストレージサービスAの設定情報記憶部631から設定情報が取得される。このように、外部ストレージ連携API61は、エンドポイントのうち「アプリID」及び「バージョン」が可変部分として定義されており、「アプリID」及び「バージョン」が指定されることにより、この「アプリID」及び「バージョン」に対応するストレージサービス用アプリ62に処理を依頼する。これにより、サービス提供システム20に対してストレージサービス用アプリ62を追加・変更等する場合においても、外部ストレージ連携API61の修正等を行う必要がない。
次に、ステップS506及びステップS507の処理を、ステップS503で取得した固有サービス情報テーブルに含まれるレコード数の回数繰り返し行う。
ステップS506において、ポータルアプリ23は、ステップS502で取得した固有サービス情報テーブルからレコードを1件取得し、このレコードのアプリID及びバージョンを含む設定情報取得APIの呼び出し要求をプロキシ部28に送信する。
ステップS507において、プロキシ部28は、アプリID及びバージョンを含む設定情報取得APIの呼び出し要求を受け取ると、図8に示すようなプロキシ変換情報テーブルを参照し、該当のホスト名に対して設定情報取得APIの呼び出し要求を転送する。そして、プロキシ部28が転送した設定情報取得APIの呼び出し要求より、外部ストレージ連携API61の設定情報取得APIが呼び出され、該当の外部ストレージ用アプリ62は設定情報の取得を行う。外部ストレージ用アプリ62は、設定情報記憶部63から設定情報を取得し、プロキシ部28を介して、設定情報をポータルアプリ23に送信する。
ここで、設定情報記憶部63に記憶されている設定情報は、例えば図10に示すような情報である。図10は、設定情報の一例を示す図である。図10では、一例として、設定情報記憶部634に記憶されているストレージサービスDの設定情報1000を示している。後述するステップS508の画面生成処理において、この設定情報1000に基づき、ストレージサービスDの認証情報を設定するためのUI画面(認証情報設定画面)が生成される。図10の各情報1100〜1300は、UI画面を生成するための情報である。一方、図10の情報1400は、固有サービス情報に基づき取得された設定情報であるか又は共通サービス情報に基づき取得された設定情報であるかを示す区分である。ここで、「"special_order":t」は、固有サービス情報に基づき取得された設定情報であること示している。一方、「"special_order":f」である場合は、共通サービス情報に基づき取得された設定情報であることを示す。
次に、ステップS508において、上記のステップS504〜ステップS507の処理において取得された各ストレージサービスの設定情報に基づいて、ポータルアプリ23は、認証情報を設定するためのUI画面(認証情報設定画面)を生成する。
ここで、図10に示す設定情報1000に基づき、例えば図11に示すようなUI画面が生成される。図11は、認証情報設定画面の一例のイメージ図である。例えば、図10の情報1100からタイトル部2100が生成される。また、図10の情報1200からユーザID入力部2200が、図10の情報1300からパスワード入力部2300が生成される。このように、ポータルアプリ23は、取得した設定情報からストレージサービスの認証情報を設定するための画面を生成する。図10及び図11では、認証情報としてユーザIDとパスワードとが設定される場合を一例として示したが、これに限られず、例えば、ユーザIDとパスワードに加えて、企業名等を認証情報として設定することができてもよい。なお、どのような項目を認証情報として設定することができるかは、ストレージサービス毎に予め決定されている。なお、図10に示す設定情報1000は、JSON(JavaScript Object Notation)で記述されているが、これに限られず、例えばXML(Extensible Markup Language)等で記述されていてもよい。
また、このとき、ポータルアプリ23は、例えば図12に示すようなユーザ情報編集画面3000を生成し、PC端末30の表示装置102に表示させる。ユーザは、ユーザ情報編集画面3000に表示されたストレージサービスの一覧3100及び3200において「認証情報の設定」ボタンを選択すると、選択されたストレージサービスの認証情報を設定することができる。すなわち、例えばストレージサービスDの「認証情報の設定」ボタンを選択することで、図11に示す認証情報設定画面2000が表示される。なお、ユーザ情報編集画面3000においてストレージサービスの一覧3100は、ユーザが共通で利用することができるストレージサービスの一覧である。一方、ユーザ情報編集画面3000においてストレージサービス3200は、ユーザが属するテナントが固有に利用することができるストレージサービスの一覧である。
ステップS509において、ユーザはPC端末30を操作して、ユーザ情報編集画面3000のストレージサービス一覧3100及び3200から所望のストレージサービスを選択すると、選択したストレージサービスの認証情報設定画面に遷移する。
ステップS51−において、ユーザはPC端末30を操作して、認証情報設定画面から認証情報(例えば、ユーザIDとパスワード)を入力して認証情報を設定する。例えば、ユーザがストレージサービスDの認証情報を設定する場合、図11に示す認証情報設定画面2000においてユーザIDとパスワードを入力し、設定ボタン2400を押下する。すると、PC端末30は、ユーザIDとパスワードとを含む認証情報の保存要求をポータルアプリ23に送信する。なお、ここで入力するユーザID及びパスワードは、ユーザが所望のストレージサービスにログインするためのユーザID及びパスワードである。したがって、ユーザは、予め利用するストレージサービスのユーザID及びパスワードを入手しておく必要がある。
ステップS511において、ポータルアプリ23は、PC端末30から受け取った認証情報の保存要求を認証部26に送信する。そして、認証部26は、認証情報の保存要求に含まれる認証情報(ストレージサービスのユーザID及びパスワード等)を、利用者IDとアプリIDと関連付けてユーザ情報記憶部52の例えば図13に示すようなユーザ情報テーブルに保存する。
図13は、ユーザ情報テーブルの一例の構成図である。ユーザ情報テーブルは、テナント毎に、「利用者ID」、「アプリID」、「認証情報」等のデータ項目を有する。「利用者ID」は、サービス提供システム20を利用するための利用者IDである。「認証情報」は、アプリIDに対応するストレージサービスに対する認証情報である。「認証情報」は、複数のデータ項目を有している。例えば「Key1」はストレージサービスの認証に用いるユーザID、「Key2」は認証に用いるパスワード、「Key3」は認証に用いる企業名等である。例えば、図13に示すテナントID「T001」のユーザ情報テーブルの利用者ID「Tony」の3レコード目は、上記のステップS510において、利用者ID「Tony」のユーザが、ストレージサービスDのユーザIDを「user003」、パスワードを「pass003」と設定した場合に保存されるレコードである。
なお、ユーザ情報テーブルの「認証情報」に保存されるデータは、ユーザID及びパスワードに限られず、例えばOAuth等により規定される認証トークンであってもよい。
以上により、本実施形態に係るサービス提供システム20では、ユーザは、PC端末30から所望のストレージサービスの認証情報を設定することができる。また、認証情報設定画面を生成するための設定情報は、外部ストレージ共通フレームワーク29を用いて取得することができる。したがって、サービス提供システム20が提供するストレージサービスを追加する場合、又はサービス提供システム20が提供しているストレージサービスの設定情報を変更する場合においても、外部ストレージ共通フレームワーク29内だけに追加・変更に伴う影響を限定させることができる。
また、本実施形態に係るサービス提供システム20では、特定のテナントに属するユーザが固有に利用することができるストレージサービスの固有サービス情報を取得する。したがって、例えばサービス提供システム20の管理者等は、ある特定のテナントに対して利用可能なストレージサービスを追加したい場合、固有サービス情報記憶部54に所望のストレージサービスに関する情報を追加すればよい。このため、例えばサービス提供システム20の管理者等は、利用可能なストレージサービスの追加に関するテナントの要望に柔軟に対応することができるようになる。
《データ保存先情報設定処理》
次に、情報処理システム1のユーザが利用を所望するストレージサービスについて、データの保存先情報を設定する処理について説明する。
ステップS1401において、ユーザがPC端末30を操作して、例えばユーザ情報編集画面3000からデータの保存先情報を設定する所望のストレージサービスを選択する。これは、ユーザ情報編集画面3000に表示されているストレージサービスの一覧3100及び3200から所望のストレージサービスの「データ保存先情報の設定」ボタンを選択することにより行うことができる。すると、PC端末30は、選択したストレージサービスのディレクトリ情報取得要求を、WebAPI21を介して、ポータルアプリ23に送信する。ディレクトリ情報取得要求には、利用者IDと、選択したストレージサービスに対応するストレージサービス用アプリ62のアプリIDとが含まれる。
ステップS1402において、ポータルアプリ23は、ディレクトリ情報取得要求をサーバアプリ22に転送する。
ステップS1403において、サーバアプリ22は、ディレクトリ情報を取得するため、認証部26に対して、ステップS1401で選択したストレージサービスに対するログイン要求を送信する。
ステップS1404において、認証部26の外部ストレージ共通認証部261は、ログイン要求に含まれる利用者IDとアプリIDとに基づいてユーザ情報記憶部52のユーザ情報テーブルから認証情報を取得し、アプリIDと、バージョンと、取得した認証情報とを含むログインAPIの呼び出し要求をプロキシ部28に対して送信する。このように、プロキシ部28(又は外部ストレージ共通フレームワーク29)との通信は外部ストレージ共通認証部261が行う。換言すれば、認証部26が外部ストレージ連携API61を利用するためには、外部ストレージ共通認証部261を介して行う。
ここで、取得する認証情報は、例えば、利用者IDが「Tony」、アプリIDが「app004」である場合、認証部26は、図13に示すユーザ情報テーブルから認証情報としてKey1「user003」及びKey2「pass003」を取得する。ここで取得したKey1及びKey2が、外部ストレージシステム404が提供するストレージサービスAにログインするためのユーザID及びパスワードである。
ステップS1405において、プロキシ部28は、アプリID及びバージョンを含むログインAPIの呼び出し要求を受け取ると、図8に示すようなプロキシ変換情報テーブルを参照し、該当のホスト名に対してログインAPIの呼び出し要求を転送する。そして、プロキシ部28が転送したログインAPIの呼び出し要求により、外部ストレージ連携API61のログインAPIが呼び出される。より具体的には、外部ストレージ連携API61は、アプリIDとバージョンと認証情報とを含むログインAPIの呼び出し要求を受け取ると、ログインAPIを呼び出し、この呼び出し要求に含まれるアプリID及びバージョンに対応するストレージ用アプリ62に対してログイン要求を依頼する。例えば、ログイン要求に含まれるアプリIDが「app04」、バージョンが「v1」である場合、外部ストレージ連携API61は、ストレージサービスA用アプリ624に対してログイン要求を依頼する。
ステップS1406において、ストレージサービス用アプリ62は、外部ストレージシステム40に対してログイン要求を行う。そして、外部ストレージシステム40は、受け取ったログイン要求に含まれる認証情報に基づき、認証を行い、ストレージサービス用アプリ62を介して認証結果を示す情報をサーバアプリ22に送信する。このとき、認証結果を示す情報には、例えば、PC端末30と外部ストレージシステム40とのセッションを管理するためのトークン(例えばCookie)を含めてもよい。なお、以降では、外部ストレージシステム40に対するログインが成功したものとして説明を続ける。
ステップS1407において、サーバアプリ22の外部ストレージ連携部221は、ディレクトリ情報取得APIの呼び出し要求をプロキシ部28に対して送信する。このように、プロキシ部28(又は外部ストレージ共通フレームワーク29)との通信は外部ストレージ連携部221が行う。換言すれば、サーバアプリ22が外部ストレージ連携API61を利用するためには、外部ストレージ連携部221を介して行う。これにより、例えば、サードベンダがSDKによりサーバアプリ22を開発する場合等において、外部ストレージ連携部221として機能するモジュール等を用いることにより容易に外部ストレージ連携API61を利用することができる。なお、ポータルアプリ23についても外部ストレージ連携部を有していてもよい。
ステップS1408において、プロキシ部28は、アプリID及びバージョンを含むディレクトリ情報取得APIの呼び出し要求を受け取ると、図8に示すようなプロキシ変換情報テーブルを参照し、該当のホスト名に対してディレクトリ情報取得APIの呼び出し要求を転送する。そして、プロキシ部28が転送したディレクトリ情報取得APIの呼び出し要求により、外部ストレージ連携API61のディレクトリ情報取得APIが呼び出される。より具体的には、外部ストレージ連携API61は、アプリIDとバージョンとを含むディレクトリ情報取得APIの呼び出し要求を受け取ると、ディレクトリ情報取得APIを呼び出し、この呼び出し要求に含まれるアプリID及びバージョンに対応する外部ストレージ用アプリ62に対してディレクトリ情報取得要求を依頼する。例えば、ディレクトリ情報取得要求に含まれるアプリIDが「app04」、バージョンが「v1」である場合、外部ストレージ連携API61は、ストレージサービスD用アプリ624に対してディレクトリ情報取得を依頼する。
ステップS1409において、ストレージサービス用アプリ62は、外部ストレージシステム40に対してディレクトリ情報の取得要求を行う。そして、外部ストレージシステム40は、ストレージサービス用アプリ62を介して、ディレクトリ情報をPC端末30に送信する。なお、ここで取得されるディレクトリ情報は、ステップS1406でログインしたユーザの外部ストレージシステム40のディレクトリ情報である。換言すれば、ステップS1401でユーザが選択したストレージサービスのディレクトリ情報である。ここで、ディレクトリ情報は、例えば、ディレクトリを構成するフォルダIDと親フォルダIDとの組である。
ステップS1410において、PC端末30は、受け取ったディレクトリ情報に基づき、外部ストレージシステム40におけるデータの保存先を設定するための例えば図15に示すような保存先フォルダの設定画面4000を表示装置102等に表示させる。図15は、保存先フォルダ設定画面の一例のイメージ図である。図15は、外部ストレージシステム404が提供するストレージサービスDにおける保存先フォルダの設定画面4000を一例として示している。この保存先フォルダの設定画面4000において、例えば、ユーザがデータの保存先として「保存先フォルダ1」を選択し、設定ボタン4100を押下すると、このユーザのストレージサービDにおけるデータの保存先として「保存先フォルダ1」が設定される。
ステップS1411において、PC端末30は、ステップS1410で設定したデータ保存先情報の保存要求をポータルアプリ23に対して送信する。
ステップS1412において、ポータルアプリ23は、受け取ったデータ保存先情報の保存要求をサーバアプリ22に送信する。そして、サーバアプリ22は、受け取ったデータ保存先情報をデータ保存先情報記憶部53の図16に示すようなデータ保存先情報テーブルに保存する。
図16は、データ保存先情報テーブルの一例の構成図である。図16に示されるデータ保存先情報テーブルは、「利用者ID」、「アプリID」、「データ保存先」等のデータ項目を有する。「データ保存先」は、アプリIDに対応するストレージサービスにおける、利用者IDに対応するユーザのデータの保存先情報である。例えば、図16において、利用者ID「Tony」のストレージサービスD(アプリID「app004」)におけるデータの保存先は「ストレージサービスD/画像データ/保存先フォルダ1」に設定されていることを示している。後述するデータアップロード処理において、データを外部ストレージシステム40に保存する場合、「データ保存先」のデータ項目に設定されている保存先フォルダにデータが保存される。
以上により、本実施形態に係るサービス提供システム20では、ユーザは、PC端末30から所望のストレージサービスのデータ保存先情報を設定することができる。保存先フォルダ設定画面を生成するためのディレクトリ情報は、外部ストレージ共通フレームワーク29を用いて取得することができる。したがって、サービス提供システム20が提供するストレージサービスを追加する場合においても、外部ストレージ共通フレームワーク29内だけに追加に伴う影響を限定させることができる。
《データアップロード処理》
次に、情報処理システム1のユーザが画像形成装置10で原稿をスキャンして生成した画像データを、所望の外部ストレージシステム40に保存(アップロード)する処理について説明する。
ステップS1701において、ユーザは例えば利用者ID及び利用者パスワードを入力して画像形成装置10にログインし、画像データの保存(アップロード)先の外部ストレージシステム40(ストレージサービス)を選択する。そして、ユーザは画像形成装置10において、原稿をスキャンして画像データを生成する。すると、画像形成装置10のクライアントアプリ11は、画像データのアップロード要求をサーバアプリ22に送信する。このアップロード要求には、利用者IDと、生成した画像データと、選択したストレージサービスに対応するストレージサービス用アプリ62のアプリIDとが含まれる。
ステップS1702において、サーバアプリ22は、画像形成装置10のクライアントアプリ11から画像データのアップロード要求を受け取ると、この画像データを外部ストレージシステム40にアップロードするためのジョブを外部ストレージ配信部25に依頼する。
ステップS1703において、外部ストレージ配信部25は、サーバアプリ22からジョブの依頼を受け付けると、外部ストレージ連携部221に画像データのアップロードを依頼する。なお、このときサーバアプリ22は、データ保存先情報記憶部53のデータ保存先情報テーブルから保存先情報を取得し、画像データと、この画像データの保存先情報とを含むジョブを生成し、外部ストレージ連携部221にアップロードを依頼する。例えば、ステップS1701においてユーザ(利用者ID「Tony」)が画像データのアップロード先としてストレージシステムD(アプリID「app004」)を選択した場合、サーバアプリ22は、保存先情報として「ストレージサービスD/画像データ/保存先フォルダ1」をデータ保存先情報テーブルから取得する。
ステップS1704において、外部ストレージ連携部251は、画像データをアップロードするため、認証部26に対して、ステップS1701で選択したストレージサービスに対するログイン要求を送信する。
ステップS1705において、認証部26の外部ストレージ共通認証部261は、ログイン要求に含まれる利用者IDとアプリIDとに基づいてユーザ情報記憶部52のユーザ情報テーブルから認証情報を取得し、アプリIDとバージョンと取得した認証情報とを含むログインAPIの呼び出し要求をプロキシ部28に対して送信する。
ここで、例えば、ログイン要求に含まれる利用者IDが「Tony」、アプリIDが「app004」である場合、認証部26は、図13に示すユーザ情報テーブルから認証情報としてKey1「user003」及びKey2「pass003」を取得する。ここで取得したKey1及びKey2が、外部ストレージシステム404が提供するストレージサービスDにログインするためのユーザID及びパスワードである。
ステップS1706において、プロキシ部28は、アプリID及びバージョンを含むログインAPIの呼び出し要求を受け取ると、図8に示すようなプロキシ変換情報テーブルを参照し、該当のホスト名に対してログインAPIの呼び出し要求を転送する。そして、プロキシ部28が転送したログインAPIの呼び出し要求により、外部ストレージ連携API61のログインAPIが呼び出される。より具体的には、外部ストレージ連携API61は、アプリIDとバージョンと認証情報を含むログインAPIの呼び出し要求を受け取ると、ログインAPIを呼び出し、この呼び出し要求に含まれるアプリID及びバージョンに対応する外部ストレージ用アプリ62に対してログイン要求を依頼する。例えば、ログイン要求に含まれるアプリIDが「app04」、バージョンが「v1」である場合、外部ストレージ連携API61は、ストレージサービスD用アプリ624に対してログイン要求を依頼する。
ステップS1707において、ストレージサービス用アプリ62は、外部ストレージシステム40に対してログイン要求を行う。そして、外部ストレージシステム40は、受け取ったログイン要求に含まれる認証情報に基づき、認証を行い、ストレージサービス用アプリ62を介して認証結果を示す情報をサーバアプリ22に送信する。このとき、認証結果を示す情報には、例えば、画像形成装置10と外部ストレージシステム40とのセッションを管理するためのトークン(例えばCookie)を含めてもよい。なお、以降では、外部ストレージシステム40に対するログインが成功したものとして説明を続ける。
ステップS1708において、外部ストレージ連携部251は、データアップロードAPIの呼び出し要求をプロキシ部28に対して送信する。
ステップS1709において、プロキシ部28は、アプリIDとバージョンと画像データとを含むデータアップロードAPIの呼び出し要求を受け取ると、図8に示すようなプロキシ変換情報テーブルを参照し、該当のホスト名に対してデータアップロードAPIの呼び出し要求を転送する。そして、プロキシ部28が転送したデータアップロードAPIの呼び出し要求により、外部ストレージ連携API61のデータアップロードAPIが呼び出される。より具体的には、外部ストレージ連携API61は、アプリIDとバージョンと画像データとを含むデータアップロードAPIの呼び出し要求を受け取ると、データアップロードAPIを呼び出し、この呼び出し要求に含まれるアプリID及びバージョンに対応する外部ストレージ用アプリ62に対して画像データのアップロード要求を依頼する。例えば、ディレクトリ情報取得要求に含まれるアプリIDが「app004」、バージョンが「v1」である場合、外部ストレージ連携API61は、ストレージサービスD用アプリ624に対してデータアップロード要求を依頼する。
ステップS1710において、ストレージサービス用アプリ62は、外部ストレージシステム40に対して、画像データのアップロード要求を行う。そして、外部ストレージシステム40は、アップロード要求に含まれる保存先情報が示すフォルダに画像データを保存する。
以上により、本実施形態に係るサービス提供システム20では、ユーザが画像形成装置10で原稿をスキャンして生成した画像データを、所望のストレージサービス(外部ストレージシステム40)の所望のフォルダに保存(アップロード)することができる。また、所望の外部ストレージシステム40への画像データのアップロードは、外部ストレージ共通フレームワーク29を用いて行うことができる。したがって、サービス提供システム20が提供するストレージサービスを追加・削除等する場合においても、外部ストレージ共通フレームワーク29内だけに追加・削除に伴う影響を限定させることができる。
<まとめ>
以上の本実施形態に係るサービス提供システム20によれば、連携して処理を行うストレージサービスの追加・変更等を容易に行うことができる。すなわち、サービス提供システム20と連携して処理を行うストレージサービスの追加・変更等を行う場合においても、外部ストレージ共通フレームワーク29内に追加・変更等に伴う影響を限定することができる。例えば、外部ストレージ共通フレームワーク29のストレージサービス用アプリ62を追加・変更する場合、サービス提供システム20の追加・変更手段を用いて、サービス提供システム20全体の稼働は維持したまま、追加・変更を行うことができる。したがって、ストレージサービスの追加・変更等に伴う開発工数や開発期間を削減することができる。
また、本実施形態に係るサービス提供システム20によれば、特定のテナントに対して、連携して処理を行うストレージサービスの追加等を行うことができる。これにより、例えばサービス提供システム20の管理者等は、特定のテナントから利用可能なストレージサービスを追加して欲しい等の要望に対して柔軟に対応することができる。
なお、本実施形態においては、入力元として画像形成装置10においてスキャンした画像データを、出力先として外部ストレージシステム40に保存する場合について説明したが、これに限られない。例えば、入力元としてはスキャンしたものに限られず、デジタルカメラ、携帯電話等で撮像された画像データであってもよいし、また、画像データに限られずPCで作成された文書データ、ICレコーダで作成された音声データ等の種々の電子データであってもよい。また、出力先としては、例えば、プロジェクタのような画像投影装置、プリンタ、会議システム等であってもよい。
その他、電子データの入力元又は出力元としては、電子データの入力手段又は出力手段として機能可能な機器であれば、他の機器を用いて、本実施の形態と同趣旨のサービスが実現されていてもよい。
さらに、入力元から入力した画像データについてサービス提供システム20において所定の処理を施してから出力先に出力してもよい。例えば、入力元として画像形成装置10においてスキャンした画像データを、サービス提供システム20においてOCR処理を行い、この処理結果であるテキストデータを出力先に出力してもよい。また、例えば、文書データを入力した場合には、サービス提供システム20において、言語の翻訳処理等を行い、この処理結果を出力先に出力してもよい。
なお、WebAPI21は、受付手段の一例である。サーバアプリ22は、第1のプログラムの一例である。認証部26及びサーバアプリ22は、登録手段の一例である。ストレージサービス用アプリ62は、第2のプログラムの一例である。外部ストレージ連携API61は、インタフェース手段の一例である。外部ストレージ共通フレームワーク29は、処理要求手段の一例である。アプリIDは、外部サービスの識別情報及び第2のプログラムの識別情報の一例である。
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。