以下、本発明の実施の形態について、詳細に説明する。
[第1の実施形態]
<システム構成>
図1はプロジェクションシステムの一例の構成図である。図1に示すプロジェクションシステム1は、プロジェクションサーバ10と、外部Webサービスサーバ11と、ストレージサーバ12と、PC13と、画像入出力機器14と、プロジェクタ15と、ファイアウォール(FW)16と、ルータ17と、ネットワーク18〜20を有する。
プロジェクションサーバ10及び外部Webサービスサーバ11はインターネットなどのネットワーク18を介して接続されている。例えば、プロジェクションサーバ10及び外部Webサービスサーバ11はクラウド上にある。外部Webサービスサーバ11はWebサービスを提供する機器の一例である。外部Webサービスサーバ11はクラウド上でストレージサービスやアプリケーションサービス等のWebサービスを提供する。外部Webサービスサーバ11はプロジェクションサーバ10にコンテンツを提供する。
また、ネットワーク18にはFW16を介してLANなどのネットワーク19が接続されている。ネットワーク19にはストレージサーバ12、PC13、画像入出力機器14が接続されている。
ストレージサーバ12、PC13、画像入出力機器14は、Webサービスを提供する機器の一例である。Webサービスによりストレージサーバ12、PC13、画像入出力機器14はコンテンツをプロジェクションサーバ10に提供する。
また、ストレージサーバ12、PC13、画像入出力機器14は後述するアップロードによりコンテンツをプロジェクションサーバ10に提供する機器の一例である。画像入出力機器14は、例えば複合機、スキャナ、デジタルカメラ等である。
また、ネットワーク18にはルータ17を介してLANなどのネットワーク20が接続されている。ネットワーク20にはプロジェクタ15が接続されている。プロジェクタ15はプロジェクションサーバ10と連携するクライアント機能を搭載する。プロジェクタ15はクライアント機能を利用してプロジェクションサーバ10から後述のようにコンテンツを取得し、投影する。なお、ネットワーク19、20は有線通信/無線通信の何れかであっても、両方を含むものであってもよい。
本実施形態におけるプロジェクタ15は画像表示装置の一例である。また、プロジェクションシステム1は画像表示システムの一例である。また、プロジェクタ15による投影は画像表示装置による表示の一例である。さらに、外部Webサービスサーバ11、ストレージサーバ12、PC13、画像入出力機器14は画像表示装置にコンテンツを提供する機器の一例である。
<ハードウェア構成>
図2はプロジェクションサーバの一例のハードウェア構成図である。図2に示したプロジェクションサーバ10は、入力装置101、表示装置102、外部I/F103、RAM104、ROM105、CPU106、通信I/F107、HDD108等が、それぞれバスBで相互に接続されている構成である。
入力装置101はキーボードやマウスなどを含み、プロジェクションサーバ10に各操作信号を入力するのに用いられる。表示装置102はディスプレイ等を含み、プロジェクションサーバ10の管理情報やログを表示する。
通信I/F107は、プロジェクションサーバ10をネットワーク18に接続するインタフェースである。これにより、プロジェクションサーバ10は通信I/F107を介して外部Webサービスサーバ11、ストレージサーバ12、PC13、画像入出力装置14、プロジェクタ15とデータ通信を行うことができる。
HDD108は、プログラムやデータを格納している不揮発性の記憶装置である。格納されるプログラムやデータには、プロジェクションサーバ10全体を制御する基本ソフトウェアであるOS、OS上において各種機能を提供するアプリケーションソフトウェアなどがある。また、HDD108は格納しているプログラムやデータを、所定のファイルシステム及び/又はDBにより管理している。
外部I/F103は、外部装置とのインタフェースである。外部装置には、記録媒体103aなどがある。これにより、プロジェクションサーバ10は外部I/F103を介して記録媒体103aの読み取り及び/又は書き込みを行うことができる。また、記録媒体103aにはフレキシブルディスク、CD、DVD、SDメモリカード、USBメモリ等がある。
ROM105は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ(記憶装置)である。ROM105にはプロジェクションサーバ10の起動時に実行されるBIOS、OS設定、及びネットワーク設定などのプログラムやデータが格納されている。RAM104は、プログラムやデータを一時保持する揮発性の半導体メモリ(記憶装置)である。
CPU106は、ROM105やHDD108などの記憶装置からプログラムやデータをRAM104上に読み出し、処理を実行することで、プロジェクションサーバ10全体の制御や機能を実現する演算装置である。
プロジェクションサーバ10は、上記ハードウェア構成により、後述するような各種処理を実現できる。なお、これらハードウェアの代わりに、近年普及してきているIaaS(Infrastructure as a service)上の仮想マシンにより実現してもよい。
<ソフトウェア構成>
図3はプロジェクションサーバの一例のソフトウェア構成図である。プロジェクションサーバ10はプログラムを実行することで、HTTPサーバ部31と、ディスパッチャ部32と、ビュー部33と、1つ以上のコントローラ部34と、HTTPクライアント部35と、フォーマット変換部36と、ユーザ管理部37と、ファイル管理部38とを実現している。
HTTPサーバ部31はプロジェクタ15やブラウザ(図示せず)とHTTP(S)通信を行う。なお、ブラウザは、例えば操作者の操作するPCや、後述のようにコンテンツをプロジェクションサーバ10にアップロードするPCなどに搭載される。また、HTTPクライアント部35は外部Webサービスサーバ11、ストレージサーバ12、PC13、画像入出力機器14とHTTP(S)通信を行う。
以下では、外部Webサービスサーバ11がプロジェクションサーバ10にコンテンツを提供するWebサービスと、ストレージサーバ12、PC13及び画像入出力機器14がプロジェクションサーバ10にコンテンツを提供するWebサービスとの両方の意味を含む語句として「外部サービス」を用いる。
ユーザ管理部37は、ユーザ情報、外部サービスの認証情報などを管理する。ファイル管理部38は、内部ストレージサービスにアップロードされたファイル、後述のように変換されたファイル、外部Webサービスサーバ11、ストレージサーバ12、PC13又は画像入出力機器14からダウンロードした一時ファイル等を管理する。なお、ファイル管理部38が管理するファイルは、後述のインデックスファイル、コンテンツファイルを含むものである。
インデックスファイルはインデックス情報の一例である。インデックスファイルはプロジェクタ15に提供可能なコンテンツファイルに関する情報を含むファイルであり、コンテンツファイルの一覧情報を含んでいる。より詳細に、インデックスファイルには、後述するように、プロジェクタ15に提供可能なコンテンツファイル、サブディレクトリの情報が含まれる。また、コンテンツファイルは画像データの一例である。コンテンツファイルは静止画、動画ファイル等である。
HTTPサーバ部31はプロジェクタ15やブラウザ(図示せず)のHTTPクライアント部(図示せず)からHTTPリクエストを受信する。HTTPサーバ部31は、受信したHTTPリクエストを解釈し、ディスパッチャ部32に必要な情報(URL)を送信する。ディスパッチャ部32は受信したURLを後述のようにコントローラ部34に振り分ける。
コントローラ部34は、ルートコントローラ、内部ストレージサービスコントローラ及び外部サービスコントローラを含む。なお、コントローラ部34に含まれている内部ストレージサービスコントローラ及び外部サービスコントローラは、利用する内部ストレージサービス及び外部サービスによって異なる。例えばコントローラ部34は、利用する外部サービスごとに外部サービスコントローラを設けてもよいし、外部サービスの種類ごとに外部サービスコントローラを設けてもよい。
コントローラ部34はディスパッチャ部32によって振り分けられたURLに応じて後述するインデックスファイル取得、コンテンツファイル取得などの処理を行う。また、コントローラ部34は必要に応じてフォーマット変換部36に、インデックスファイル、コンテンツファイルのフォーマットを、プロジェクタ15で投影できるフォーマットに変換させる。
コントローラ部34はプロジェクタ15のHTTPクライアント部(図示せず)に送信するインデックスファイル、コンテンツファイルを、HTTPサーバ部31に送信する。また、コントローラ部34はブラウザ(図示せず)のHTTPクライアント部(図示せず)からアップロードされたコンテンツファイルをプロジェクションサーバ10内のストレージ(内部ストレージ)に保存する。コントローラ部34はブラウザ(図示せず)のHTTPクライアント部(図示せず)に表示させる情報をビュー部33に送信し、ビュー部33はHTMLファイルを生成し、HTTPサーバ部31に送信する。HTTPサーバ部31は受信したインデックスファイル、コンテンツファイル、HTMLファイルをHTTPレスポンスとしてプロジェクタ15やブラウザ(図示せず)のHTTPクライアント部(図示せず)に送信する。
<処理の流れ>
《プロジェクションサーバ10とプロジェクタ15との処理》
図4は、プロジェクションサーバとプロジェクタとの処理手順の一例を表した概略図である。なお、本実施形態では、アクセス制限の一例としてアクセスナンバーによるアクセス制限が設定されている例を説明するが、ICカードや指紋認証装置によるアクセス制限を選択できるようにしてもよい。
プロジェクタ15の操作者は、開始指示(ファイル一覧画面の投影指示)をプロジェクタ15に対して行った後、ステップS1において、例えばリモコン41を操作してアクセスナンバーを入力する。
ステップS2において、プロジェクタ15はインデックスファイルをプロジェクションサーバ10から取得する。プロジェクションサーバ10から取得するインデックスファイルにはアクセスナンバーに紐付くコンテンツファイルの情報が含まれる。
プロジェクタ15はプロジェクションサーバ10から取得したインデックスファイルからファイル一覧画面を生成して投影する。ファイル一覧画面の詳細は後述する。ステップS3において、プロジェクタ15の操作者はリモコン41を操作してファイル一覧画面から投影を行うコンテンツファイルを選択する。
ステップS4において、プロジェクタ15は操作者から指定されたコンテンツファイルをプロジェクションサーバ10から取得する。プロジェクタ15は、取得したコンテンツファイルからファイル投影画面を生成して投影する。
《ディスパッチャ部32の処理》
ディスパッチャ部32はHTTPサーバ部31から例えば図5に示すようなURLを受信する。図5はディスパッチャ部が受信するURLの一例の構成図である。プロジェクタ15の操作者が、開始指示(ファイル一覧画面の投影指示)をプロジェクタ15に対して行ったあと、ディスパッチャ部32はHTTPサーバ部31から例えば図5(A)のURLを受信する。
また、プロジェクタ15の操作者が、ファイル一覧画面から内部ストレージサービスのサブディレクトリの選択をプロジェクタ15に対して行ったあと、ディスパッチャ部32はHTTPサーバ部31から例えば図5(B)のURLを受信する。
また、プロジェクタ15の操作者が、ファイル一覧画面から外部サービスのサブディレクトリの選択をプロジェクタ15に対して行ったあと、ディスパッチャ部32はHTTPサーバ部31から例えば図5(C)又は図5(D)のURLを受信する。さらに、ディスパッチャ部32は、プロジェクタ15の操作者がファイル一覧画面から外部サービスのサブディレクトリに含まれるコンテンツファイルの選択をプロジェクタ15に対して行ったあと、HTTPサーバ部31から例えば図5(E)のURLを受信する。
図5(A)のURLは、ホストURL「projection.example.com」と、アクセスナンバー「12345」とが含まれる。また、図5(B)のURLは図5(A)のURLに、内部ストレージサービスを示す情報「local」が追加された構成である。図5(C)のURLは、図5(A)のURLに、外部サービスを示す情報「ext1」が追加された構成である。図5(D)のURLは、図5(A)のURLに、外部サービスを示す情報「ext2」が追加された構成である。
また、図5(E)のURLは図5(C)のURLにサブディレクトリを示す情報「folder1」と、コンテンツファイルを示す情報「file1.jpg」とが追加された構成である。なお、図5(E)の「folder1/file1.jpg」は外部サービス内におけるURLパスの一例である。図5(E)の「12345/ext1/folder1/file1.jpg」はプロジェクションサーバ10内におけるURLパスの一例である。
ディスパッチャ部32はHTTPサーバ部31から受信する図5(A)〜図5(E)のようなURLに基づいて、URLを振り分けるコントローラ部34を後述するように判定する。例えば図5(A)のURLはルートコントローラのコントローラ部34に振り分けられる。図5(B)のURLは内部ストレージサービスのコントローラ部34に振り分けられる。図5(C)のURLは外部サービス(ext1)のコントローラ部34に振り分けられる。図5(D)のURLは外部サービス(ext2)のコントローラ部34に振り分けられる。なお、図5(E)のURLは外部サービス(ext1)のコントローラ部34に振り分けられる。
図6はディスパッチャ部の処理手順の一例を表したフローチャートである。ステップS10において、ディスパッチャ部32はHTTPサーバ部31からURLを受信する。ステップS11において、ディスパッチャ部32は受信したURLに含まれるアクセスナンバー{n}からユーザ管理部37のユーザ情報を検索する。ディスパッチャ部32はステップS12において、受信したURLがルートであるかを判定する。
受信したURLがルートであるかの判定は例えば受信したURLがホストURL及びアクセスナンバーからなる構成であるときに、ルートであると判定してもよい。また、受信したURLがルートであるかの判定は、例えば図7に示すようなURLと、ルートコントローラ、内部ストレージサービスコントローラ及び外部サービスコントローラとを対応付けた振分テーブルを用いて、ルートであると判定してもよい。ルートコントローラと対応付けられたURLはルートのURLである。
図7は、振分テーブルの一例の構成図である。図7の振分テーブルはプロジェクションサーバ10に3つのサービスとして1つの内部ストレージサービスと、2つの外部サービスとが登録されている例を表している。
受信したURLがルートであれば、ステップS13において、ディスパッチャ部32はルートコントローラのコントローラ部34を選択してURLを振り分ける。受信したURLがルートでなければ、ディスパッチャ部32はステップS14の処理を行う。
ステップS14では、ディスパッチャ部32が、受信したURLに含まれるサービスを示す情報(localやext1など)に基づき、例えば図7の振分テーブルからサービスを示す情報と対応付けられている内部ストレージサービスコントローラ又は外部サービスコントローラを選択してURLを振り分ける。
《ルートコントローラの処理》
ルートコントローラのコントローラ部34(以下、ルートコントローラと呼ぶ)は図8に示すような手順で処理を行う。図8はルートコントローラの処理手順の一例を表したフローチャートである。
図9はユーザ情報の一例の構成図である。ユーザ情報はユーザID、パスワード、アクセスナンバー、利用サービスを項目として有する。なお、利用サービスはプロジェクタ15の操作者が利用することのできる内部ストレージサービス、外部サービスを設定しているものである。図9の例ではアクセスアンバー「12345」の操作者は内部ストレージサービス(local)と外部サービス(ext1)とを利用できる。
ステップS22において、ルートコントローラはステップS11で検索したユーザ情報に含まれる利用サービスに基づいて、操作者の利用できる内部ストレージサービス、外部サービスをディレクトリのリストとしたルートのインデックスファイルを生成する。
図10はルートのインデックスファイルの一例の構成図である。図10のルートのインデックスファイルは、操作者の利用できる内部ストレージサービス(local)、外部サービス(ext1)をディレクトリのリストとしている。
ステップS23において、ルートコントローラはステップS22で作成したルートのインデックスファイルを、HTTPサーバ部31を介してプロジェクタ15に送信する。ルートのインデックスファイルを受信したプロジェクタ15は例えば図11に示すようなファイル一覧画面50を表示する。
図11は、ファイル一覧画面の一例のイメージ図である。図11のファイル一覧画面50はファイル一覧表示欄51を含む。ファイル一覧表示欄51は、ルートのインデックスファイルに含まれているディレクトリの情報を表示する。ファイル一覧表示欄51に表示されているディレクトリの情報は、操作者の利用できる内部ストレージサービス(local)と外部サービス(ext1)とに対応している。
《外部サービスコントローラの処理》
外部サービスのコントローラ部34(以下、外部サービスコントローラと呼ぶ)の処理は外部サービスによって異なるため、外部サービスコントローラの処理の一例を概略的に説明する。図12は外部サービスコントローラの処理手順の概略を表したフローチャートである。
外部サービスコントローラはディスパッチャ部32からURLを受信すると、ステップS31において、受信したURLからインデックスファイルの取得要求であるか否かを判定する。例えば外部サービスコントローラは受信したURLの最後が「/」である場合にインデックスファイルの取得要求であると判定する。
インデックスファイルの取得要求であると判定すると、外部サービスコントローラはステップS32において、後述するインデックスファイルの提供処理を行う。インデックスファイルの取得要求でないと判定すると、外部サービスコントローラはステップS33において、後述するコンテンツファイルの提供処理を行う。
なお、ステップS32のインデックスファイルの提供処理はプロジェクタ15及び外部サービスと連携して行われる。そこで、ここではステップS32のインデックスファイルの提供処理を、図13のシーケンス図を用いて説明する。図13はステップS32のインデックスファイルの提供処理の一例を表したシーケンス図である。なお、図13では外部サービスを提供する機器の一例として外部Webサービスサーバ11を示している。
ステップS41において、プロジェクションサーバ10は例えば図5(C)に示すようなURLを受信することで、外部Webサービスサーバ11のインデックスファイルの取得要求を受信する。ステップS42において、プロジェクションサーバ10は外部Webサービスサーバ11にインデックスファイルの取得要求を行う。
ステップS43において、プロジェクションサーバ10は外部Webサービスサーバ11から例えばXML(Extensible Markup Language)形式で表記されているインデックスファイルを受信する。
プロジェクションサーバ10はステップS44において、外部Webサービスサーバ11のインデックスファイルをXML形式からJSON(JavaScript Object Notation)形式にフォーマット変換する。なお、ステップS43において受信したインデックスファイルの形式がJSON形式であれば、ステップS44の処理は省略される。ステップS45において、プロジェクションサーバ10はJSON形式で表記された外部Webサービスサーバ11のインデックスファイルをプロジェクタ15に提供する。
また、ステップS32のインデックスファイルの提供処理は外部Webサービスサーバ11にプロジェクタ15が直接投影できないマルチページのフォーマット(例えばPDF形式など)でコンテンツファイルが保存されている場合についても考慮する。外部Webサービスサーバ11にマルチページのフォーマットでコンテンツファイルが保存されている場合、プロジェクションサーバ10はマルチページのフォーマットで保存されているコンテンツファイルをサブディレクトリ(以下、コンテンツファイルを示すサブディレクトリという)として、インデックスファイルに含めておく。
プロジェクタ15において、操作者がファイル一覧画面からコンテンツファイルを示すサブディレクトリを選択すると、ステップS32のインデックスファイルの提供処理は図14のシーケンス図に示すように行われる。
図14はステップS32のインデックスファイルの提供処理の他の例を表したシーケンス図である。ステップS51において、プロジェクションサーバ10はコンテンツファイルを示すサブディレクトリのインデックスファイルの取得要求を受信する。
ステップS52において、プロジェクションサーバ10は、コンテンツファイルを示すサブディレクトリによって特定されるコンテンツファイルの取得要求を外部Webサービスサーバ11に行う。
ステップS53において、プロジェクションサーバ10は外部Webサービスサーバ11からマルチページのフォーマットのコンテンツファイルを受信する。ステップS54において、プロジェクションサーバ10はマルチページのフォーマットのコンテンツファイルをフォーマット変換して、ページ毎のフォーマットのコンテンツファイル(例えばJPEG形式など)を内部ストレージに保存する。つまり、マルチページのコンテンツファイルはページ数分のコンテンツファイルに変換される。
ステップS55において、プロジェクションサーバ10はステップS54において内部ストレージに保存したコンテンツファイルのインデックスファイルをJSON形式で生成する。そして、ステップS56において、プロジェクションサーバ10はステップS55で生成したインデックスファイルをプロジェクタ15に提供する。
また、ステップS33のコンテンツファイルの提供処理は、プロジェクタ15及び外部サービスと連携して行われる。そこで、ここではステップS33のコンテンツファイルの提供処理を、図15のシーケンス図を用いて説明する。
図15はステップS33のコンテンツファイルの提供処理の一例を表したシーケンス図である。なお、図15では外部サービスを提供する機器の一例として外部Webサービスサーバ11を示している。図15は外部Webサービスサーバ11に、プロジェクタ15が直接投影できるフォーマット(例えばJPEG形式など)でコンテンツファイルが保存されている場合を表している。
ステップS61において、プロジェクションサーバ10は例えば図5(E)に示すようなURLを受信することで、外部Webサービスサーバ11のコンテンツファイルの取得要求を受信する。ステップS62において、プロジェクションサーバ10は、外部Webサービスサーバ11にコンテンツファイルの取得要求を行う。
ステップS63において、プロジェクションサーバ10は外部Webサービスサーバ11から例えばJPEG形式のコンテンツファイルを受信する。プロジェクションサーバ10はステップS64において、外部Webサービスサーバ11から受信したJPEG形式のコンテンツファイルをプロジェクタ15に提供する。
また、プロジェクタ15が直接投影できないフォーマット(例えばGIF形式やPNG形式など)でコンテンツファイルが外部Webサービスサーバ11に保存されている場合のステップS33のコンテンツファイルの提供処理は、例えば図16のシーケンス図に示すように行われる。
図16はステップS33のコンテンツファイルの提供処理の他の例を表したシーケンス図である。ステップS71において、プロジェクションサーバ10はコンテンツファイルの取得要求をプロジェクタ15から受信する。プロジェクションサーバ10はステップS72において、外部Webサービスサーバ11にコンテンツファイルの取得要求を行う。
ステップS73において、プロジェクションサーバ10は外部Webサービスサーバ11から例えばGIF形式のコンテンツファイルを受信する。プロジェクションサーバ10はステップS74において、プロジェクタ15が直接投影できないGIF形式のコンテンツファイルを、プロジェクタ15が直接投影できるJPEG形式のコンテンツファイルにフォーマット変換する。なお、ステップS74ではコンテンツファイルの解像度変換も合わせて行ってもよい。ステップS75において、プロジェクションサーバ10はJPEG形式にフォーマット変換されたコンテンツファイルをプロジェクタ15に提供する。
また、ステップS54で内部ストレージに保存したコンテンツファイルがファイル一覧画面から選択された場合のステップS33のコンテンツファイルの提供処理は、例えば図17のシーケンス図に示すように行われる。
図17はステップS33のコンテンツファイルの提供処理の他の例を表したシーケンス図である。ステップS81において、プロジェクションサーバ10は、ステップS54で内部ストレージに保存したコンテンツファイルの取得要求を、プロジェクタ15から受信する。
ステップS82において、プロジェクションサーバ10は内部ストレージに保存したコンテンツファイルを検索し、取得要求のあったコンテンツファイルを内部ストレージから読み出す。ステップS83において、プロジェクションサーバ10は内部ストレージから読み出したJPEG形式のコンテンツファイルをプロジェクタ15に提供する。
以下では、外部サービスコントローラの処理の具体例を説明する。図18は外部サービスコントローラの処理手順の一例を表したフローチャートである。ステップS31において、外部サービスコントローラは受信したURLの最後が「/」であるか判定する。受信したURLの最後が「/」であれば、外部サービスコントローラはインデックスファイルの取得要求であると判定し、ステップS92の処理を行う。
ステップS92において、外部サービスコントローラは受信したインデックスファイルの取得要求が、コンテンツファイルを示すサブディレクトリ(マルチページのコンテンツファイル)に対するものであるかを判定する。
インデックスファイルの取得要求が、マルチページのコンテンツファイルに対するものであれば、外部サービスコントローラはステップS93において、図14のステップS54〜S55に示したような手順でページ数分のコンテンツファイルを生成し、ページ数分のコンテンツファイルをリストとしたインデックスファイルを生成する。ステップS94において、外部サービスコントローラは図14のステップS56に示したような手順でインデックスファイルをプロジェクタ15に提供する。
一方、ステップS92において、インデックスファイルの取得要求が、マルチページのコンテンツファイルに対するものでなければ、外部サービスコントローラはステップS95の処理を行う。ステップS95において、外部サービスコントローラはサブディレクトリ内のコンテンツファイルをリストとしたインデックスファイルを生成する。ステップS96において、外部サービスコントローラは生成したインデックスファイルをプロジェクタ15に提供する。
また、ステップS91において、受信したURLの最後が「/」でなければ、コンテンツファイルの取得要求であると判定し、ステップS97の処理を行う。ステップS97において、外部サービスコントローラは、図15〜図17に示したような手順でコンテンツファイルをプロジェクタ15に送信する。
また、外部サービスが例えば複数のアルバムに写真データを保存できる写真保管サービスである場合、外部サービスコントローラの処理は、例えば図19のフローチャートに示すように行われる。図19は、外部サービスコントローラの処理手順の他の例を表したフローチャートである。図19はアルバムをサブディレクトリとして見せる例である。
ステップS101において、外部サービスコントローラはユーザ管理部37からユーザIDと対応付けられた外部サービスの認証情報(後の《プロジェクションサーバ10と外部サービスとの連携》にて説明する)を検索する。検索した外部サービスの認証情報は以降の処理において認証に利用される。外部サービスコントローラはステップS102において、受信したURLに含まれる外部サービス内におけるURLパスが「/」であるか判定する。
受信したURLに含まれる外部サービス内におけるURLパスが「/」であれば、外部サービスコントローラはステップS103において、図13のステップS42〜S43に示したような手順でアルバム一覧のインデックスファイルを外部Webサービスサーバ11から取得する。そして、外部サービスコントローラはステップS104において、図13のステップS44〜S45に示したような手順でアルバムをリストとしたインデックスファイルを生成し、そのインデックスファイルをプロジェクタ15に送信する。
一方、ステップS102において、受信したURLに含まれる外部サービス内におけるURLパスが「/」でなければ、外部サービスコントローラはステップS105の処理を行う。ステップS105において、外部サービスコントローラは受信したURLに含まれる外部サービス内におけるURLパスが、アルバムを示す文字列(図19におけるaaa)を含むパターンにマッチするか判定する。
受信したURLに含まれる外部サービス内におけるURLパスがパターンにマッチすれば、外部サービスコントローラはステップS106において、アルバム「aaa」内の写真データ一覧のインデックスファイルを図13のステップS42〜S43に示したような手順で外部Webサービスサーバ11から取得する。
そして、外部サービスコントローラはステップS107において、図13のステップS44〜S45に示したような手順でアルバム内の写真データ(画像ファイル)をリストとしたインデックスファイルを生成し、そのインデックスファイルをプロジェクタ15に送信する。
一方、ステップS105において、受信したURLに含まれる外部サービス内におけるURLパスがパターンにマッチしなければ、言い換えれば画像ファイルを示す情報(例えば/aaa/xxx.jpg)であれば、外部サービスコントローラはステップS108において、画像ファイルを図15のステップS62〜S63に示したような手順で外部Webサービスサーバ11から取得する。そして、外部サービスコントローラはステップS109において、図15のステップS64に示したような手順で、プロジェクタ15に画像ファイルを送信する。
図19ではアルバムをサブディレクトリとして見せる例を示したが、年月を図20に示すようにサブディレクトリとして見せてもよい。図20は、外部サービスコントローラの処理手順の他の例を表したフローチャートである。
ステップS111において、外部サービスコントローラはユーザ管理部37からユーザIDと対応付けられた外部サービスの認証情報を検索する。検索した外部サービスの認証情報は以降の処理において認証に利用される。外部サービスコントローラはステップS112において、受信したURLに含まれる外部サービス内におけるURLパスが「/」であるか判定する。
受信したURLに含まれる外部サービス内におけるURLパスが「/」であれば、外部サービスコントローラはステップS113において、図13のステップS44〜S45に示したような手順で年をリストとしたインデックスファイルを生成し、そのインデックスファイルをプロジェクタ15に送信する。
例えば年をリストとするインデックスファイルは直近の10年のそれぞれの年を示すサブディレクトリと、それ以前の年を示すサブディレクトリとを含むものでもよいし、所定の年数をまとめた(例えば5年)のサブディレクトリを含むものでもよい。
一方、ステップS112において、受信したURLに含まれる外部サービス内におけるURLパスが「/」でなければ、外部サービスコントローラはステップS114の処理を行う。ステップS114において、外部サービスコントローラは受信したURLに含まれる外部サービス内におけるURLパスが、年を示す文字列(図20におけるyyyy)を含むパターンにマッチするか判定する。
受信したURLに含まれる外部サービス内におけるURLパスがパターンにマッチすれば、外部サービスコントローラはステップS115において、図13のステップS44〜S45に示したような手順で「yyyy」年の月をリストとしたインデックスファイルを生成し、そのインデックスファイルをプロジェクタ15に送信する。
例えば月をリストとするインデックスファイルは、それぞれの年を示すサブディレクトリを含むものでもよいし、所定の月数をまとめた(例えば3ヶ月)のサブディレクトリを含むものでもよい。
一方、受信したURLに含まれる外部サービス内におけるURLパスが、年を示す文字列を含むパターンにマッチしなければ、外部サービスコントローラはステップS116の処理を行う。ステップS116において、外部サービスコントローラは受信したURLに含まれる外部サービス内におけるURLパスが、年と月を示す文字列(それぞれ図20におけるyyyyとmm)を含むパターンにマッチするか判定する。
受信したURLに含まれる外部サービス内におけるURLパスがパターンにマッチすれば、外部サービスコントローラはステップS117において、タイムスタンプがyyyy年mm月の写真データ一覧のインデックスファイルを図13のステップS42〜S43に示したような手順で外部Webサービスサーバ11から取得する。
そして、外部サービスコントローラはステップS118において、図13のステップS44〜S45に示したような手順でタイムスタンプがyyyy年mm月の写真データ(画像ファイル)をリストとしたインデックスファイルを生成し、そのインデックスファイルをプロジェクタ15に送信する。
一方、ステップS116において、受信したURLに含まれる外部サービス内におけるURLパスが、年と月を示す文字列を含むパターンにマッチしなければ、言い換えれば、画像ファイルを示す情報(例えば/yyyy/mm/xxx.jpg)であれば、外部サービスコントローラはステップS119において、画像ファイルを図15のステップS62〜S63に示したような手順で外部Webサービスサーバ11から取得する。そして、外部サービスコントローラはステップS120において、図15のステップS64に示したような手順で、プロジェクタ15に画像ファイルを送信する。
また、外部サービスが例えば文書保管サービスである場合、外部サービスコントローラの処理は、例えば図21のフローチャートに示すように行われる。図21は、外部サービスコントローラの処理手順の他の例を表したフローチャートである。図21は、複数の形式のファイルを保存できる例である。
ステップS131において、外部サービスコントローラはユーザ管理部37からユーザIDと対応付けられた外部サービスの認証情報を検索する。検索した外部サービスの認証情報は以降の処理において認証に利用される。外部サービスコントローラはステップS132において、受信したURLに含まれる外部サービス内におけるURLパスが「/」であるか判定する。
受信したURLに含まれる外部サービス内におけるURLパスが「/」であれば、外部サービスコントローラはステップS133において、図13のステップS44〜S45に示したような手順でファイル形式(例えばJPEG、PDF、PPTなど)をリストとしたインデックスファイルを生成し、そのインデックスファイルをプロジェクタ15に送信する。
一方、ステップS132において、受信したURLに含まれる外部サービス内におけるURLパスが「/」でなければ、外部サービスコントローラはステップS134の処理を行う。
ステップS134において、外部サービスコントローラは受信したURLに含まれる外部サービス内におけるURLパスが、ファイル形式の文字列(図21におけるttt)を含むパターンにマッチするか判定する。受信したURLに含まれる外部サービス内におけるURLパスがパターンにマッチすれば、外部サービスコントローラはステップS135において、外部Webサービスサーバ11内にあるファイル形式「ttt」のファイルを検索する。
ステップS136において、外部サービスコントローラはファイル形式「ttt」がマルチページのファイル(例えばPDF、PPTなど)であるか判定する。マルチページのファイルであれば、外部サービスコントローラはステップS137において、ファイルを示すサブディレクトリをリストとしたインデックスファイルを生成する。外部サービスコントローラは生成したインデックスファイルをプロジェクタ15に提供する。
マルチページのファイルでなければ、外部サービスコントローラはステップS138において、ファイルをリストとしたインデックスファイルを生成し、インデックスファイルをプロジェクタ15に提供する。
一方、ステップS134において、受信したURLに含まれる外部サービス内におけるURLパスが、ファイル形式の文字列を含むパターンにマッチしなければ、外部サービスコントローラはステップS139の処理を行う。ステップS139において、外部サービスコントローラは受信したURLに含まれる外部サービス内におけるURLパスが、マルチページのファイルを示すサブディレクトリ(図21におけるxxx)を含むパターンにマッチするか判定する。
外部サービスコントローラは、受信したURLに含まれる外部サービス内におけるURLパスがパターンにマッチすれば、ステップS140において、図14のステップS52〜S53に示したような手順で外部Webサービスサーバ11から、サブディレクトリ名「xxx」によって特定されるマルチページのファイルを取得する。
ステップS141において、外部サービスコントローラは図14のステップS54に示したような手順で取得したファイルをフォーマット変換して、ページ毎のフォーマットのファイル(例えばJPEG形式など)を内部ストレージに保存する。
ステップS142において、外部サービスコントローラは例えば図22に示すファイル情報を生成する。図22はファイル情報の一例の構成図である。図22のファイル情報は外部サービス内におけるURLパスと、ユーザIDと、内部ストレージに保存したファイルのパスとを対応付ける。ステップS143において、外部サービスコントローラは内部ストレージに保存したファイルのインデックスファイルをJSON形式で生成し、そのインデックスファイルをプロジェクタ15に提供する。
外部サービスコントローラは、受信したURLに含まれる外部サービス内におけるURLパスが、マルチページのファイルを示すサブディレクトリを含むパターンにマッチしなければ、ステップS144の処理を行う。ステップS144において、外部サービスコントローラは、受信したURLに含まれる外部サービス内におけるURLパスが、ファイル形式を示す情報+画像ファイルを示す情報のパターン(/ttt/xxx.jpg)にマッチするか判定する。
外部サービスコントローラは、受信したURLに含まれる外部サービス内におけるURLパスがパターンにマッチすれば、ステップS145において、画像ファイルを図15のステップS62〜S63に示したような手順で外部Webサービスサーバ11から取得する。ステップS146において、外部サービスコントローラは、図15のステップS64に示したような手順で、プロジェクタ15に画像ファイルを送信する。
一方、ステップS144において、受信したURLに含まれる外部サービス内におけるURLパスがパターン「/ttt/xxx.jpg」にマッチしなければ、言い換えれば、マルチページのファイル内の画像ファイル(ページ)を示す情報(例えば/ttt/xxx/nnn.jpg)であれば、外部サービスコントローラはステップS147の処理を行う。ステップS147において、外部サービスコントローラはユーザID及び外部サービス内におけるURLパス(/ttt/xxx)からファイル情報のファイルパスを検索する。
ステップS148において、外部サービスコントローラは検索したファイルパスのディレクトリから画像ファイル「例えばnnn.jpg」を検索し、取得要求のあった画像ファイルを内部ストレージから読み出す。ステップS149において、外部サービスコントローラは読み出した画像ファイルをプロジェクタ15に提供する。
また、外部サービスが例えば文書保管サービスである場合、外部サービスコントローラは文書保管サービス側で作成している一階層のサブディレクトリを、図23のフローチャートに示すように、ファイル一覧画面でサブディレクトリとして見せることができる。図23は外部サービスコントローラの処理手順の他の例を表したフローチャートである。
ステップS151において、外部サービスコントローラはユーザ管理部37からユーザIDと対応付けられた外部サービスの認証情報を検索する。検索した外部サービスの認証情報は以降の処理において認証に利用される。外部サービスコントローラはステップS152において、受信したURLに含まれる外部サービス内におけるURLパスが「/」であるか判定する。
受信したURLに含まれる外部サービス内におけるURLパスが「/」であれば、外部サービスコントローラはステップS153において、文書保管サービス側で作成しているサブディレクトリ一覧のインデックスファイルを外部Webサービスサーバ11から取得する。そして、外部サービスコントローラはステップS154において、文書保管サービス側で作成しているサブディレクトリをリストとしたインデックスファイルを生成し、そのインデックスファイルをプロジェクタ15に送信する。
一方、ステップS152において、受信したURLに含まれる外部サービス内におけるURLパスが「/」でなければ、外部サービスコントローラはステップS155の処理を行う。
ステップS155において、外部サービスコントローラは受信したURLに含まれる外部サービス内におけるURLパスが、サブディレクトリを示す文字列(図22におけるfff)を含むパターンにマッチするか判定する。受信したURLに含まれる外部サービス内におけるURLパスがパターンにマッチすれば、外部サービスコントローラは、ステップS156において、サブディレクトリ「fff」を指定して、外部Webサービスサーバ11内にあるファイルを検索する。
ステップS157において、外部サービスコントローラは外部Webサービスサーバ11内にあるファイルのうち、マルチページのファイルをサブディレクトリ、マルチページでないファイルをファイルとして表したリストのインデックスファイルを生成する。外部サービスコントローラは生成したインデックスファイルをプロジェクタ15に提供する。
なお、受信したURLに含まれる外部サービス内におけるURLパスがサブディレクトリを示す文字列を含むパターンにマッチしなければ、外部サービスコントローラはステップS158の処理を行う。図22のステップS158〜S168は図21のステップS139〜S149の処理と同様であるため説明を省略する。
《内部ストレージサービスコントローラの処理》
内部ストレージサービスのコントローラ部34(以下、内部ストレージサービスコントローラという)の処理は、大別すると、ファイルのアップロード処理、ファイルの送信処理、ファイルの削除処理になる。以下、内部ストレージサービスコントローラのファイルのアップロード処理、ファイルの送信処理、ファイルの削除処理について説明する。
図24はファイルのアップロード処理の一例を表したフローチャートである。内部ストレージサービスコントローラは、ファイルのアップロード機能を備え、PC上のブラウザなどからアップロードされたファイルを内部ストレージに保存できる。
例えばPC上のブラウザはアップロード用のURL(例えばhttp://projectionportal.example.com/upload)にファイルをPOSTリクエストすることで、ファイルのアップロードを要求できる。操作者は後述する図32(a)のポータルページにログインして、ファイルとモードを選択後、アップロードボタンをクリックすることでこの要求を行う。
内部ストレージサービスコントローラはディスパッチャ部32からアップロード用のURLを受信すると、ステップS171において、POSTリクエストによりアップロードされたファイルを内部ストレージに保存する。
ステップS172において、内部ストレージサービスコントローラは内部ストレージに保存したファイルがマルチページのファイルであるかを判定する。マルチページのファイルであれば、内部ストレージサービスコントローラはステップS173において、マルチページのファイルを、プロジェクタ15で投影できるJPEG形式などのファイルに変換する。ステップS174において、内部ストレージサービスコントローラは変換前のマルチページのファイル(元ファイル)を削除する。
そして、内部ストレージサービスコントローラはステップS178において図25に示すようなファイル情報を登録する。ユーザIDにはログインしているユーザのIDを登録する。そして、ステップS179において、内部ストレージサービスコントローラはファイルのアップロードを要求してきたPC上のブラウザに、ポータル画面を表示させる。
図25はファイル情報の他の例の構成図である。図25のファイル情報は、ファイル名と、ユーザIDと、登録日時と、投影制限と、有効期限開始及び終了と、マルチページ識別と、ファイルパスとを対応付ける。
なお、投影制限は、1回だけ投影、期間限定投影、機器限定投影などを表す。有効期限開始及び終了は、投影制限が1回だけ投影の場合、例えば登録日時から1週間とし、投影制限が期間限定投影の場合、アップロード時に指定された日時とする。ファイルパスはマルチページのコンテンツファイルの場合、ディレクトリパスとなる。
ステップS172においてマルチページのファイルでなければ、内部ストレージサービスコントローラはステップS175の処理を行う。ステップS175において、内部ストレージサービスコントローラは内部ストレージに保存したファイルがプロジェクタ15で直接投影できるフォーマットであるかを判定する。そして、プロジェクタ15で直接投影できるフォーマットであれば、内部ストレージサービスコントローラは上記したステップS178、S179の処理を行う。
なお、ステップS175においてプロジェクタ15で直接投影できるフォーマットでなければ、内部ストレージサービスコントローラはステップS176において、プロジェクタ15で直接投影できないフォーマットのファイルを、プロジェクタ15で投影できるJPEG形式などのファイルに変換する。内部ストレージサービスコントローラはステップS177において、変換前のプロジェクタ15で直接投影できないフォーマットのファイル(元ファイル)を削除する。そして、プロジェクタ15で直接投影できるフォーマットであれば、内部ストレージサービスコントローラは上記したステップS178、S179の処理を行う。
図26はファイルの送信処理の一例を表したフローチャートである。例えばプロジェクタ15は、URL(例えばhttp://projection.example.com/12345/local/presentation.ppt/file001.jpeg)にファイルのゲットリクエストすることで、ファイルの送信を要求できる。
なお、上記URLの「/presentation.ppt/file001.jpeg」の部分は内部ストレージ内におけるURLパスと呼ぶ。内部ストレージサービスコントローラはステップS181において、受信したURLに含まれる内部ストレージ内におけるURLパスが「/」であるか判定する。
受信したURLに含まれる内部ストレージ内におけるURLパスが「/」であれば、内部ストレージサービスコントローラはステップS182において、ユーザIDからファイル情報を検索する。なお、ユーザIDは、アクセスナンバーからユーザ情報を検索することで取得できる。
ステップS183において、内部ストレージサービスコントローラは検索したファイル情報に基づき、内部ストレージ内にあるファイルのうち、マルチページのファイルをサブディレクトリ、マルチページでないファイルをファイルとして表したリストのインデックスファイルを生成する。内部ストレージサービスコントローラは、生成したインデックスファイルをプロジェクタ15に提供する。なお、インデックスファイルには有効期限開始前のファイルを含めない。
一方、ステップS181において、受信したURLに含まれる内部ストレージ内におけるURLパスが「/」でなければ、内部ストレージサービスコントローラはステップS184の処理を行う。
ステップS184において、内部ストレージサービスコントローラは、受信したURLに含まれる内部ストレージ内におけるURLパスが、マルチページのファイルを示すサブディレクトリ(図26におけるxxx)を含むパターンにマッチするか判定する。内部ストレージ内におけるURLパスがパターンにマッチすれば、内部ストレージサービスコントローラはステップS185においてユーザID及びファイル名からファイル情報を検索する。
ステップS186において、内部ストレージサービスコントローラは検索したファイル情報に含まれるファイルパスによって特定されるディレクトリ内のファイルをリストとしたインデックスファイルを生成し、プロジェクタ15に送信する。
内部ストレージ内におけるURLパスがサブディレクトリを含むパターンにマッチしなければ、内部ストレージサービスコントローラはステップS187の処理を行う。ステップS187において、内部ストレージサービスコントローラは、受信したURLに含まれる内部ストレージ内におけるURLパスが、画像ファイルを含むパターン(/xxx.jpg)にマッチするか判定する。
内部ストレージ内におけるURLパスがパターンにマッチすれば、内部ストレージサービスコントローラはステップS188においてユーザID及びファイル名からファイル情報を検索する。ステップS189において、内部ストレージサービスコントローラは検索したファイル情報に含まれるファイルパスによって特定される画像ファイルを読み出してプロジェクタ15に送信する。
内部ストレージサービスコントローラは内部ストレージ内におけるURLパスが、パターン「/xxx.jpg」にマッチしなければ、言い換えれば、マルチページのファイル内の画像ファイル(ページ)を示す情報(例えば/xxx/nnn.jpg)であれば、ステップS190の処理を行う。ステップS190において内部ストレージサービスコントローラはユーザID及びファイル名「xxx」からファイル情報を検索する。
ステップS191において、内部ストレージサービスコントローラは検索したファイル情報に含まれるファイルパスによって特定されるディレクトリから画像ファイル「nnn.jpg」を検索する。そして、ステップS192において、外部サービスコントローラは取得要求のあった画像ファイルを内部ストレージから読み出し、読み出した画像ファイルをプロジェクタ15に提供する。
内部ストレージサービスコントローラのファイルの削除処理は、例えば図27、図28に示すフローチャートにより実現される。図27はファイル情報の有効期限終了をセットする処理の一例のフローチャートであり、図26に示したステップS186、S189及びS192の処理後に実行する。図28は有効期限が終了したファイルを削除する処理の一例のフローチャートであり、タイマー処理により一定時間毎に実行する。
ステップS201において、内部ストレージサービスコントローラは内部ストレージに保存したファイルの投影制限が1回だけ投影であるか判定する。投影制限が1回だけ投影である場合、内部ストレージサービスコントローラはステップS202において、ファイル情報の有効期限終了を例えば現在時刻の1時間後にセットする。なお、投影制限が1回だけ投影でない場合、内部ストレージサービスコントローラはステップS202の処理を行わない。
図28のステップS211において、内部ストレージサービスコントローラは一定時間待つ。ステップS212において、内部ストレージサービスコントローラはファイル情報の有効期限終了を参照することで、有効期限が終了した(期限切れの)ファイル情報を検索する。ステップS213において、内部ストレージサービスコントローラは期限切れのファイル情報に含まれるファイルパスのサブディレクトリ、ファイルを削除する。内部ストレージサービスコントローラはステップS214において、期限切れのファイル情報を削除する。ステップS213〜S214の処理は、期限切れのファイル情報に対して繰り返される。
なお、図27のフローチャートでは投影制限が1回だけ投影の例を示したが、n回投影としてもよい。この場合は図25のファイル情報に、投影回数のフィールドを追加すればよい。また、投影制限がn回投影の場合、図28の処理では、投影回数がn回になるとステップS213〜S214の処理を行うようにすればよい。
内部ストレージサービスコントローラのファイルの削除処理は、例えば操作者の指示により行ってもよい。操作者はPC上のブラウザを操作して、ファイル管理用のURL(例えばhttp://projectionportal.example.com/filemgr)にリクエストすることで、図29に示すような画面の表示を要求できる。後述する図32(a)のポータルページにログインして、『ファイル管理画面へ』のリンクをクリックすることでこの要求を行う。
内部ストレージサービスコントローラはディスパッチャ部32からファイル管理用のURLを受信すると、図29に示すような画面を要求元のブラウザに表示させる。図29は操作者からファイル削除の指示を受け付ける画面の一例のイメージ図である。操作者はブラウザに表示された図29に示すような画面からファイル削除の指示を行う。操作者から受け付けたファイル削除の指示はブラウザから内部ストレージサービスコントローラに送信される。そして、内部ストレージサービスコントローラは操作者からファイル削除の指示を受け付けたファイルに対し、ステップS213〜S214の処理を行う。
《プロジェクションサーバ10と外部サービスとの連携》
外部サービスがOAuthやAuthsubなどのサーバ間連携のインタフェースをサポートしている場合、プロジェクションサーバ10と外部サービスとは、例えば図30、図31に示すシーケンス図の処理手順により連携する。OAuthやAuthsubはWebサーバにあるユーザのリソースへのアクセス権限を、ユーザの代理で行うことを許可するための認証用のプロトコルである。
図30はプロジェクションサーバと外部サービスとの連携の設定処理を表したシーケンス図である。図31はプロジェクションサーバと外部サービスとの連携による投影処理を表したシーケンス図である。
操作者はPC上のブラウザを操作してユーザID及びパスワードを入力する。ブラウザはステップS301において、操作者のユーザID及びパスワードを利用してプロジェクションサーバ10にログイン要求を行う。ステップS302において、プロジェクションサーバ10はユーザ情報を利用してユーザ認証を行う。
ユーザ認証が成功すると、プロジェクションサーバ10はステップS303においてログイン後のポータル画面をブラウザに表示させる。図32(a)はログイン後のポータル画面の一例のイメージ図である。ログイン後のポータル画面は、ログイン中のユーザID,設定変更リンク、ログアウトリンク、内部ストレージサービス用のUIとして、ファイルアップロードのファイル選択ボタン、モード選択ボタン、アップロード指示ボタン、ファイル管理画面へのリンクを含む。操作者が設定変更リンクをクリックすると、プロジェクションサーバ10は設定変更画面をブラウザに表示させる。図32(b)は設定変更画面の一例のイメージ図である。設定変更画面は、ユーザID、パスワード、アクセスナンバー、利用サービスが含まれる。アクセスナンバーは例えばユーザ登録時に乱数で生成してもよい。なお、アクセスナンバーは設定変更画面の『変更』ボタンにより変更できる。
操作者は例えばログイン後のポータル画面の利用サービスのチェックボックスを操作することで、外部サービスとの連携の設定を変更できる。ブラウザはステップS304において、プロジェクションサーバ10に外部連携設定変更を要求する。ステップS305において、プロジェクションサーバ10は連携の設定を変更する外部サービスとのアクセス確認の情報、外部サービスのURL、アクセス確認後に表示するポータル画面のURLをブラウザに返す。
ステップS306において、ブラウザはリダイレクトにより外部サービスのURLにアクセス確認を要求する。ステップS307において、外部サービスはアクセス確認画面をブラウザに表示させる。操作者はアクセス確認画面に外部サービスの認証情報を入力すると共に、プロジェクションサーバ10から外部サービスへのアクセスを許可する。
ステップS308において、ブラウザは操作者の外部サービスの認証情報を利用して外部サービスにアクセス許可を通知する。ステップS309において、外部サービスはブラウザに認証トークンを返す。ステップS310において、ブラウザはリダイレクトによりプロジェクションサーバ10に認証トークンを送信する。プロジェクションサーバ10はステップS311において、認証トークン及び利用サービスの設定を例えば図33に示すように保存する。
図33はユーザ情報と外部サービスの認証情報との対応図である。図33に示すユーザ情報(図9を簡略化して示している)と外部サービスの認証情報とはユーザIDにより対応付けられている。認証トークンは外部サービスの認証情報にユーザIDと対応付けて保存される。そして、ステップS312において、プロジェクションサーバ10はアクセス確認後に表示するポータル画面をブラウザに表示させる。
外部サービスから提供されるコンテンツファイルを投影する場合、操作者はプロジェクタ15にアクセスナンバーを入力する。プロジェクタ15はステップS321において、アクセスナンバーを利用して外部サービスのインデックスファイル又はコンテンツファイルの取得要求を行う。
ステップS322において、プロジェクションサーバ10はアクセスナンバーを利用してユーザ情報からユーザIDの検索を行う。プロジェクションサーバ10はステップS323において、ユーザIDを利用して外部サービスの認証情報から認証トークンの検索を行う。ステップS324において、プロジェクションサーバ10は認証トークンを利用して外部サービスにインデックスファイル又はコンテンツファイルの取得要求を行う。
ステップS325において、外部サービスは取得要求のあったインデックスファイル又はコンテンツファイルをプロジェクションサーバ10に返す。そして、プロジェクションサーバ10はステップS326において、インデックスファイル又はコンテンツファイルをプロジェクタ15に返す。したがって、プロジェクタ15はプロジェクションサーバ10から返されたインデックスファイル又はコンテンツファイルを投影できる。
プロジェクションサーバ10と外部サービスとの間にサーバ間連携のインタフェースがない場合、プロジェクションサーバ10と外部サービスとは、例えば図34、図35に示すシーケンス図の処理手順により連携する。
図34はプロジェクションサーバと外部サービスとの連携の設定処理を表したシーケンス図である。図35はプロジェクションサーバと外部サービスとの連携による投影処理を表したシーケンス図である。
ステップS351〜S354の処理は図30のステップS301〜S304と同様であるため、説明を省略する。ステップS355において、プロジェクションサーバ10は外部サービスの認証情報を入力する入力画面をブラウザに表示させる。操作者は入力画面に外部サービスの認証情報を入力する。
ステップS356において、ブラウザは操作者の外部サービスの認証情報をプロジェクションサーバ10に送信する。ステップS357において、プロジェクションサーバ10は操作者の外部サービスの認証情報を利用して、外部サービスに操作者の認証情報の確認を要求する。ステップS358において、プロジェクションサーバ10は外部サービスから操作者の外部サービスの認証情報の確認結果を受信する。
ステップS359において、プロジェクションサーバ10は操作者の外部サービスの認証情報が正しければ、外部サービスの認証情報及び利用サービスの設定を例えば図36に示すように保存する。
図36はユーザ情報(図9を簡略化して示している)と外部サービスの認証情報との対応図である。図36に示すユーザ情報と外部サービスの認証情報とはユーザIDにより対応付けられている。外部サービスの認証情報としての外部サービスのユーザID及びパスワードは外部サービスの認証情報にユーザIDと対応付けて保存される。そして、ステップS360において、プロジェクションサーバ10はポータル画面をブラウザに表示させる。
外部サービスから提供されるコンテンツファイルを投影する場合、操作者はプロジェクタ15にアクセスナンバーを入力する。プロジェクタ15はステップS371において、アクセスナンバーを利用して外部サービスのインデックスファイル又はコンテンツファイルの取得要求を行う。
ステップS372において、プロジェクションサーバ10はアクセスナンバーを利用してユーザ情報からユーザIDの検索を行う。プロジェクションサーバ10はステップS373において、ユーザIDを利用して外部サービスの認証情報から外部サービスのユーザID及びパスワードの検索を行う。ステップS374において、プロジェクションサーバ10は外部サービスのユーザID及びパスワードを利用してログインを要求する。
外部サービスはユーザID及びパスワードを利用してユーザ認証を行う。ユーザ認証が成功すると、外部サービスはステップS375において、ユーザ認証の成功を返す。プロジェクションサーバ10はステップS376において、インデックスファイル又はコンテンツファイルの取得要求を外部サービスに行う。
ステップS377において、外部サービスは取得要求のあったインデックスファイル又はコンテンツファイルをプロジェクションサーバ10に返す。そして、プロジェクションサーバ10はステップS378において、インデックスファイル又はコンテンツファイルをプロジェクタ15に返す。したがって、プロジェクタ15はプロジェクションサーバ10から返されたインデックスファイル又はコンテンツファイルを投影できる。
外部サービスの一例としてのストレージサーバ12、PC13、画像入出力機器14はプロジェクションサーバ10との連携のため、例えば以下のような構成とすることが考えられる。なお、以下の複合機、デジタルカメラ、固定カメラは画像入出力機器14の一例である。
図37はプロジェクションサーバと連携する複合機の一例の構成図である。図37の複合機200はスキャナアプリ201、スキャナ202によりスキャンされた画像ファイルがHDD203に蓄積される。
サーバタイプアプリ204はプロジェクションサーバ10からのインデックスファイルの取得要求に基づき、HDD203に蓄積されている画像ファイルのインデックスファイルを生成して、プロジェクションサーバ10に送信する。また、サーバタイプアプリ204はプロジェクションサーバ10からの画像ファイルの取得要求に基づき、HDD203に蓄積されている画像ファイルを取得して、プロジェクションサーバ10に送信する。
図38はプロジェクションサーバと連携するデジタルカメラ、固定カメラの一例の構成図である。図38のデジタルカメラ211、固定カメラ212は無線LAN又は有線LANを利用してサーバ装置213に画像ファイルをアップロードする。
サーバ装置213はプロジェクションサーバ10からのインデックスファイルの取得要求に基づき、蓄積している画像ファイルのインデックスファイルを生成して、プロジェクションサーバ10に送信する。また、サーバ装置213はプロジェクションサーバ10からの画像ファイルの取得要求に基づいて、蓄積している画像ファイルをプロジェクションサーバ10に送信する。
図39はプロジェクションサーバと連携するPCの一例の構成図である。図39のPC13は画像ファイルがHDD221に蓄積されている。簡易サーバ222は、プロジェクションサーバ10からのインデックスファイルの取得要求に基づき、HDD221に蓄積されている画像ファイルのインデックスファイルを生成して、プロジェクションサーバ10に送信する。また、簡易サーバ222はプロジェクションサーバ10からの画像ファイルの取得要求に基づいて、HDD221に蓄積されている画像ファイルを取得して、プロジェクションサーバ10に送信する。
また、図40はプロジェクションサーバと連携するストレージサーバの一例の構成図である。図40のストレージサーバ12は文書管理サーバ232が、HDD231に蓄積されている画像ファイルの読み出しを管理している。文書管理サーバ232はHDD231に蓄積されている画像ファイルの取得要求を受け付けるAPIを有している。
アダプタ233は、プロジェクションサーバ10からのインデックスファイルの取得要求に基づき、文書管理サーバ232のAPIを利用して、HDD231に蓄積されている画像ファイルを検索する。アダプタ233は検索した画像ファイルのインデックスファイルを生成して、プロジェクションサーバ10に送信する。
また、アダプタ233はプロジェクションサーバ10からの画像ファイルの取得要求に基づき、文書管理サーバ232のAPIを利用して、HDD231に蓄積されている画像ファイルを取得する。アダプタ233は取得した画像ファイルをプロジェクションサーバ10に送信する。
<まとめ>
本実施形態のプロジェクションサーバ10によれば、1つ以上の外部サービスから提供されるコンテンツファイルも、内部ストレージサービスから提供されるコンテンツファイルも、ファイル一覧画面に同じ見た目で表示されると共に、コンテンツファイルの提供元によらず、同様な操作でプロジェクタ15に投影させることができるので、プロジェクタ15の利便性を向上させることができる。
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
なお、特許請求の範囲に記載したコンテンツを提供する1つ以上の機器は、外部Webサービスサーバ11、ストレージサーバ12、PC13、画像入出力装置14などに相当する。画像表示装置は例えばプロジェクタ15に相当する。サーバ装置は例えばプロジェクションサーバ10に相当する。インデックス情報処理手段、画像データ処理手段、コンテンツ受付手段はコントローラ部34に相当する。