以下に、本発明を実施するための形態について、添付の図面を用いて詳細に説明する。
なお、以下に説明する実施の形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正又は変更されてもよい。また、各実施の形態を適宜組み合せることも可能である。
[第1の実施形態]
<デジタルカメラ100の構成>
図1(a)は、本実施形態の通信装置の一例であるデジタルカメラ100の構成例を示すブロック図である。なお、ここでは通信装置の一例としてデジタルカメラについて述べるが、通信装置はこれに限られない。例えば通信装置は携帯型のメディアプレーヤや、いわゆるタブレットデバイス、パーソナルコンピュータなどの情報処理装置であってもよい。
制御部101は、入力された信号や、後述のプログラムに従ってデジタルカメラ100の各部を制御する。なお、制御部101が装置全体を制御する代わりに、複数のハードウェアが処理を分担することで、装置全体を制御してもよい。
撮像部102は、例えば、光学レンズユニットと絞り・ズーム・フォーカスなど制御する光学系と、光学レンズユニットを経て導入された光(映像)を電気的な映像信号に変換するための撮像素子などで構成される。撮像素子としては、一般的には、CMOS(Complementary Metal Oxide Semiconductor)や、CCD(Charge Coupled Device)が利用される。撮像部102は、制御部101に制御されることにより、撮像部102に含まれるレンズで結像された被写体光を、撮像素子により電気信号に変換し、ノイズ低減処理などを行いデジタルデータを画像データとして出力する。本実施形態のデジタルカメラ100では、画像データは、DCF(Design Rule for Camera File system)の規格に従って、記録媒体110に記録される。
不揮発性メモリ103は、電気的に消去・記録可能な不揮発性のメモリであり、制御部101で実行される後述のプログラム等が格納される。
作業用メモリ104は、撮像部102で撮像された画像データを一時的に保持するバッファメモリや、表示部106の画像表示用メモリ、制御部101の作業領域等として使用される。
操作部105は、ユーザがデジタルカメラ100に対する指示をユーザから受け付けるために用いられる。操作部105は例えば、ユーザがデジタルカメラ100の電源のON/OFFを指示するための電源ボタンや、撮影を指示するためのレリーズスイッチ、画像データの再生を指示するための再生ボタンを含む。さらに、後述の通信部111を介して外部機器との通信を開始するための専用の接続ボタンなどの操作部材を含む。また、後述する表示部106に形成されるタッチパネルも操作部105に含まれる。なお、レリーズスイッチは、SW1およびSW2を有する。レリーズスイッチが、いわゆる半押し状態となることにより、SW1がONとなる。これにより、AF(オートフォーカス)処理、AE(自動露出)処理、AWB(オートホワイトバランス)処理、EF(フラッシュプリ発光)処理等の撮影準備を行うための指示を受け付ける。また、レリーズスイッチが、いわゆる全押し状態となることにより、SW2がONとなる。これにより、撮影を行うための指示を受け付ける。
表示部106は、撮影の際のビューファインダー画像の表示、撮影した画像データの表示、対話的な操作のための文字表示などを行う。なお、表示部106は必ずしもデジタルカメラ100が内蔵する必要はない。デジタルカメラ100は内部又は外部の表示部106と接続することができ、表示部106の表示を制御する表示制御機能を少なくとも有していればよい。
記録媒体110は、撮像部102から出力された画像データをファイルとして記録することができる。なお、デジタルカメラ100におけるファイル管理のためのシステムとしては、例えばFAT(File Allocation Table)を採用することができる。記録媒体110は、デジタルカメラ100に着脱可能なよう構成してもよいし、デジタルカメラ100に内蔵されていてもよい。すなわち、デジタルカメラ100は少なくとも記録媒体110にアクセスする記録制御手段を有していればよい。
通信部111は、外部装置と接続するためのインターフェイスである。本実施形態のデジタルカメラ100は、通信部111を介して、外部装置とデータのやりとりを行うことができる。例えば、撮像部102で生成した画像データを、通信部111を介して外部装置に送信することができる。本実施形態では、通信部111は外部装置とIEEE802.11の規格に従った、いわゆる無線LANで通信するためのインターフェイスを含み、制御部101は、通信部111を制御することで外部装置との無線LANを介した通信を実現する。この無線LANでの通信においては、外部装置とは、直接接続してもよいしアクセスポイントを介して接続してもよい。また、データを通信するためのプロトコルとしては、例えばHTTP(Hyper Text Transfer Protocol)を用いることができる。そのほか、PTP/IP(Picture Transfer Protocol over Internet Protocol)を用いることもできる。なお、通信方式は無線LANに限定されるものではなく、例えば赤外線通信方式、Bluetooth(登録商標)通信方式、WirelessUSB等の無線通信方式などを採用することもできる。さらには、USBケーブルやHDMI(登録商標)、IEEE1394、Ethernet(登録商標)など、有線接続を採用してもよい。
近距離無線通信部112は、例えば無線通信のためのアンテナと無線信号を処理するため変復調回路や通信コントローラから構成される。近距離無線通信部112は、変調した無線信号をアンテナから出力し、またアンテナで受信した無線信号を復調することで近距離無線通信を実現する。ここでは、ISO/IEC 18092の規格(いわゆるNFC:Near Field Communication)に従った近距離無線通信を実現する。またその他、赤外線通信方式、Bluetooth(登録商標)通信方式、WirelessUSB等の無線通信方式などに従った近距離無線通信を採用してもよい。なお、近距離無線通信部112としてBluetooth(登録商標)通信方式を採用する場合、例えば低消費電力であるBluetooth(登録商標) Low Energyのバージョン4.0を採用することができる。このBluetooth(登録商標)通信は、無線LAN通信と比べて通信可能な範囲が狭い(つまり、通信可能な距離が短い)。また、Bluetooth(登録商標)通信は、無線LAN通信と比べて通信速度が遅い。その一方で、Bluetooth(登録商標)通信は、無線LAN通信と比べて消費電力が少ない。
本実施形態の近距離無線通信部112は、デジタルカメラ100の側部に配される。
本実施形態において、後述するスマートデバイス200とは、通信部111より通信を開始して接続される。また、本実施形態におけるデジタルカメラ100の通信部111は、インフラストラクチャモードにおけるアクセスポイントとして動作するAPモードと、インフラストラクチャモードにおけるクライアントとして動作するCLモードとを有している。そして、通信部111をCLモードで動作させることにより、本実施形態におけるデジタルカメラ100は、インフラストラクチャモードにおけるクライアント機器(以下、CL機器)として動作することが可能である。デジタルカメラ100がCL機器として動作する場合、周辺のアクセスポイント機器(以下、AP機器)に接続することで、AP機器が形成するネットワークに参加することができる。また、通信部111をAPモードで動作させることにより、本実施形態におけるデジタルカメラ100は、APの一種ではあるが、より機能が限定された簡易的なAP(以下、簡易AP)として動作することも可能である。デジタルカメラ100が簡易APとして動作すると、デジタルカメラ100は自身でネットワークを形成する。デジタルカメラ100の周辺の装置は、デジタルカメラ100をAP機器と認識し、デジタルカメラ100が形成したネットワークに参加することが可能となる。上記のようにデジタルカメラ100を動作させるためのプログラムは不揮発性メモリ103に保持されているものとする。
なお、本実施形態におけるデジタルカメラ100はアクセスポイントの一種であるものの、CL機器から受信したデータをインターネットプロバイダなどに転送するゲートウェイ機能は有していない簡易APである。したがって、自機が形成したネットワークに参加している他の装置からデータを受信しても、それをインターネットなどのネットワークに転送することはできない。
次に、デジタルカメラ100の外観について説明する。図1(b)、図1(c)はデジタルカメラ100の外観の一例を示す図である。レリーズスイッチ105aや再生ボタン105b、方向キー105c、タッチパネル105dは、前述の操作部105に含まれる操作部材である。また、表示部106には、撮像部102による撮像の結果得られた画像が表示される。
以上がデジタルカメラ100の説明である。
<スマートデバイス200の構成>
図2は、本実施形態の情報処理装置の一例であるスマートデバイス200の構成例を示すブロック図である。なお、スマートデバイスとはスマートフォンやタブレットデバイスを意味する。なお、ここでは情報処理装置の一例としてスマートデバイスについて述べるが、情報処理装置はこれに限られない。例えば情報処理装置は、無線機能付きのデジタルカメラやプリンタ、テレビ、あるいはパーソナルコンピュータなどであってもよい。
制御部201は、入力された信号や、後述のプログラムに従ってスマートデバイス200の各部を制御する。なお、制御部201が装置全体を制御する代わりに、複数のハードウェアが処理を分担することで、装置全体を制御してもよい。
撮像部202は、撮像部202に含まれるレンズで結像された被写体光を電気信号に変換し、ノイズ低減処理などを行い、デジタルデータを画像データとして出力する。撮像した画像データはバッファメモリに蓄えられた後、制御部201にて所定の演算を行い、記録媒体210に記録される。
不揮発性メモリ203は、電気的に消去・記録可能な不揮発性のメモリである。不揮発性メモリ203には、制御部201が実行する基本的なソフトウェアであるOS(オペレーティングシステム)や、このOSと協働して応用的な機能を実現するアプリケーションが記録されている。また、本実施形態では、不揮発性メモリ203には、デジタルカメラ100と通信するためのアプリケーション(以下アプリ)が格納されている。
作業用メモリ204は、表示部206の画像表示用メモリや、制御部201の作業領域等として使用される。
操作部205は、スマートデバイス200に対する指示をユーザから受け付けるために用いられる。操作部205は例えば、ユーザがスマートデバイス200の電源のON/OFFを指示するための電源ボタンや、表示部206に形成されるタッチパネルなどの操作部材を含む。
表示部206は、画像データの表示、対話的な操作のための文字表示などを行う。なお、表示部206は必ずしもスマートデバイス200が備える必要はない。スマートデバイス200は表示部206と接続することができ、表示部206の表示を制御する表示制御機能を少なくとも有していればよい。
記録媒体210は、撮像部202から出力された画像データを記録することができる。なお、スマートデバイス200におけるファイル管理のためのシステムとしては、例えばFATを採用することができる。記録媒体210は、スマートデバイス200に着脱可能なよう構成してもよいし、スマートデバイス200に内蔵されていてもよい。すなわち、スマートデバイス200は少なくとも記録媒体210にアクセスする手段を有していればよい。
通信部211は、外部装置と接続するためのインターフェイスである。本実施形態のスマートデバイス200は、通信部211を介して、外部装置とデータのやりとりを行うことができる。例えば、撮像部202で生成した画像データを、通信部211を介して外部装置に送信することができる。本実施形態では、通信部211は外部装置とIEEE802.11の規格に従った、いわゆる無線LANで通信するためのインターフェイスを含み、制御部201は、通信部211を制御することで外部装置との無線LANを介した通信を実現する。この無線LANでの通信においては、外部装置とは、直接接続してもよいしアクセスポイントを介して接続してもよい。また、データを通信するためのプロトコルとしては、例えばHTTPやPTP/IPを用いることができる。なお、通信方式は無線LANに限定されるものではなく、例えば赤外線通信方式、Bluetooth(登録商標)通信方式、WirelessUSB等の無線通信方式などを採用こともできる。さらには、USBケーブルやHDMI(登録商標)、IEEE1394、Ethernet(登録商標)など、有線接続を採用してもよい。
近距離無線通信部212は、例えば無線通信のためのアンテナと無線信号を処理するための変復調回路や通信コントローラから構成される。近距離無線通信部212は、変調した無線信号をアンテナから出力し、またアンテナで受信した無線信号を復調することにより非接触近距離通信を実現する。ここでは、ISO/IEC 18092の規格(いわゆるNFC)に従った近距離無線通信を実現する。またその他、赤外線通信方式、Bluetooth(登録商標)通信方式、WirelessUSB等の無線通信方式などに従った近距離無線通信を採用してもよい。なお、近距離無線通信部112としてBluetooth(登録商標)通信方式を採用する場合、例えば低消費電力であるBluetooth(登録商標) Low Energyのバージョン4.0を採用することができる。このBluetooth(登録商標)通信は、無線LAN通信と比べて通信可能な範囲が狭い(つまり、通信可能な距離が短い)。また、Bluetooth(登録商標)通信は、無線LAN通信と比べて通信速度が遅い。その一方で、Bluetooth(登録商標)通信は、無線LAN通信と比べて消費電力が少ない。
公衆網通信部213は、公衆無線通信を行う際に用いられるインターフェイスである。スマートデバイス200は、公衆網通信部213を介して、他の機器と通話することができる。この際、制御部201はマイク214およびスピーカ215を介して音声信号の入力と出力を行うことで、通話を実現する。更に、本実施形態では、公衆網通信部213はW−CDMA(UMTS)やLTE(Long Term Evolution)等の規格に従って公衆網に接続することができる。なお、通信部211および公衆網通信部213は、一つのアンテナで兼用することも可能である。
以上がスマートデバイス200の説明である。
<デジタルカメラを外部装置から制御するためのAPIについて>
図3(a)は、外部機器からデジタルカメラ100を制御するためのAPI(Application Programming Interface)について説明するための図である。
デジタルカメラ100は、スマートデバイス200などの外部機器から制御するためのAPIを公開しており、このAPIを利用することで、外部装置の開発者は、簡単なコマンド指定のみで、様々な処理を手軽に実装することができる。例えば本実施形態では、このAPIを通してデジタルカメラ100の不揮発性メモリ103に記録されたデバイス情報や、デジタルカメラ100の記録媒体110などに保存されたコンテンツファイルをデジタルカメラ100から取得することができる。コンテンツファイルとは、デジタルカメラ100が生成して記録媒体110や不揮発性メモリ103に保存するファイルのことであり、本実施形態では、静止画ファイルや動画ファイルのことを指す。なお、この他、例えば音声ファイル、音楽ファイル、HTMLなどのマークアップ言語ファイル等を外部機器に提供できるようにしてもよい。以下では、説明を簡単にするために、主に静止画ファイルを例に挙げて説明する。
デジタルカメラ100は、予め不揮発性メモリ103にAPIをプログラムとして保存している。通信部111を介して、デジタルカメラ100と外部機器との通信が確立すると、APIを実行するためのプログラムを作業用メモリ104に展開し、外部装置からAPIがリクエストされるのを待つ。制御部101が外部機器からAPIがリクエストされたことを検知すると、APIの種類に応じて処理を実行し、その結果をレスポンスとして外部機器に返却する。なお、APIはデジタルカメラ100が規定した通信プロトコル上で実行され、外部機器は規定された通信プロトコルを用いてデジタルカメラ100と通信を行い、APIをリクエストする。本実施形態では、HTTP(Hyper Text Transfer Protocol)上で本APIが実行されることを想定して説明するが、他の通信プロトコル(例えばPTP/IP等)を採用してもよい。
HTTPにおけるAPIの実行方法については、基本的に以下の手順で実現される。すなわち、外部機器がHTTPリクエストボディにAPI名と必要な引数をテキストで記述し、GETメソッドもしくはPOSTメソッドを用いてデジタルカメラ100に送信することで、APIの実行を要求する。これに対して、デジタルカメラ100は、HTTPレスポンスボディにその結果を付加して外部機器にレスポンスとして返却することで、APIの実行結果を提供する。なお、以下の説明では、このAPIを利用してリクエストを送信するための処理を実行することを、APIをコールする、とも記載する。
図3(a)のAPIリスト300は、前述した仕組みで動作する、デジタルカメラ100が提供するAPIの種類とその説明を表にしたものである。なお、以下に挙げるAPIは一例であり、デジタルカメラ100を制御するAPIとして、以下に挙げるAPI以外のものも提供されてもよい。
API301は、デジタルカメラ100の製品情報を取得するためのAPIである。API名「RequestProductInfo」を引数なしでデジタルカメラ100にリクエストすると、レスポンスとしてデジタルカメラ100の製品名、製造者名、ファームウェアバージョン、シリアルナンバーをデジタルカメラ100から取得できる。なお、製品名とは、デジタルカメラ100の製品名称である。製造者名とはデジタルカメラ100のメーカー名称である。ファームウェアバージョンとは、不揮発性メモリ103に保存されたデジタルカメラ100を制御するためのプログラムのバージョン番号である。シリアルナンバーとは、デジタルカメラ100の個体識別が可能な一意の番号である。
API302は、デジタルカメラ100の保存領域の情報を取得するためのAPIである。API名「RequestMemoryInfo」をデジタルカメラ100にリクエストすると、レスポンスとしてデジタルカメラ100の保存領域ID、保存可能容量、空き容量、保存済みのコンテンツファイル数をデジタルカメラ100から取得できる。このリクエストは引数なしで行われる。なお、保存領域IDとは、デジタルカメラ100で生成されるコンテンツファイルを保存可能な領域にそれぞれ割り振られたID(Identification)である。コンテンツファイルを保存可能な領域とは、例えば、デジタルカメラ100の記録媒体110などであり、IDはこの記録媒体110に割り振られる。もし記録媒体を複数挿入できる場合には、それぞれの記録媒体に異なるIDが割り振られる。保存可能容量とは、コンテンツファイルを保存できる保存領域の上限サイズである。空き容量とは、保存領域のうちコンテンツファイルが保存されていない領域のサイズである。保存済みのコンテンツ数とは、保存領域に保存されているコンテンツファイルの総数のことである。
API303は、デジタルカメラ100の保存領域に保存されているコンテンツIDとコンテンツファイルの管理情報を取得するためのAPIである。なお、管理情報は、コンテンツが記録されるディレクトリ内のファイルやディレクトリの情報を管理するための管理領域(いわゆるディレクトリエントリと呼ばれる、ディレクトリ毎に確保される領域)内に記録されている。API名「RequestConteentInfo」と共に、API302で取得した保存領域ID、コンテンツフォーマットの種類、取得要求数を指定してリクエストすると、レンポンスとして以下の情報をデジタルカメラ100から取得できる。すなわち、デジタルカメラ100の保存領域に保存されているコンテンツファイルのコンテンツID、ファイル名、ファイルサイズ、ファイル生成日時等である。なお、ここでいうコンテンツIDは、コンテンツファイルを個々に識別するために、デジタルカメラ100の制御部101によって自動的に割り振られるIDである。なお、デジタルカメラ100内のファイル管理のためのIDとは別に、API303を利用するスマートデバイス200との通信中に一時的に用いるためのIDを別途割り振り、それをコンテンツIDとして用いてもよい。
API304は、デジタルカメラ100の保存領域に保存されているコンテンツファイルを取得するためのAPIである。API名「RequestConent」と共に、コンテンツIDとコンテンツサイズの種類を指定してリクエストすると、レスポンスとしてコンテンツファイルをデジタルカメラ100から取得できる。なお、コンテンツサイズの種類としては、例えばオリジナルや縮小サイズ等を指定することができる。そして、デジタルカメラ100は指定されたサイズに従ったコンテンツファイルを生成し外部装置へレスポンスとして返却する。本実施形態では、コンテンツサイズの種類として、例えば静止画ファイルをオリジナルのサイズで取得するのか、サムネイルサイズで取得するのかを指定できる。オリジナルを指定すれば、デジタルカメラ100に記録されている画像データを取得する。サムネイルを指定すれば、デジタルカメラ100に記録されている画像データのヘッダに記録されているサムネイルを取得する。
API305は、デジタルカメラ100の保存領域に保存されているコンテンツファイルの詳細情報(いわゆるメタデータ)を取得するAPIである。API名「RequestContentDetailInfo」と共に、コンテンツIDを引数としてリクエストすると、指定したコンテンツIDの詳細情報が取得できる。本実施形態における詳細情報とは、いわゆるメタデータであり、例えば静止画ファイルのExif情報である。なお、Exif(Exchangeable image file format)とは、JEIDA(日本電子工業振興協会)が策定したデジタルカメラ用の画像メタデータのフォーマットである。Exif情報は、画像データのヘッダに記録されている情報であるため、内容を把握するためには画像データのヘッダの読出しと解析が必要である。なお、本APIの実装により、カメラ側で画像のヘッダを解析して、スマートデバイス200が解釈可能なフォーマットでメタデータを取得できるため、スマートデバイス200側では画像のExifを解析する必要はない。すなわち、例えばAPI304の利用によって受信した画像データのExifを解析する機能を持っていなくとも、デジタルカメラ100からメタデータを取得することで、メタデータを取得することができる。なお、画像データのヘッダの解析にはある程度の時間が必要である。故に、ディレクトリエントリに記録されている管理情報に比べて、データとして送信できるようになるまでの時間が長い。
ここで、本実施形態における画像データの構成について説明する。図3(b)は、本実施形態での画像データの構成の概念図である。この画像データは、例えばデジタルカメラ100により生成され、記録媒体110のデータ記録領域に記録されるものである。
本実施形態の画像ファイルのデータ構造は、画像ファイルの形式にExif−JPEGを用いるが、Exif−TIFFやRAW画像、動画など、画像ファイルにメタデータが記録できるデータ構造になっている形式でもよい。
図3(b)のExif−JPEG310において、SOI311は、Exif−JPEG310の開始を示すマーカーである。APP1 312は、Exif−JPEG310のヘッダ部に相当するアプリケーションマーカである。データブロック313は、量子化テーブル(DQT)、ハフマンテーブル(DHT)、フレーム開始マーカー(SOF)、スキャン開始マーカ(SOS)で構成されるデータブロックである。Compressed Data314は、本体画像の圧縮データである。EOI315は、Exif−JPEG310の終端を示すマーカーである。
また、APP1 312は、図3(b)のデータブロック316〜322で示すように構成される。データブロック316は、APP1 312のサイズを示すAPP1 Length、APP1 312の識別コードを示すExif Identifier Codeで構成されるデータブロックである。0th IFD317は、圧縮された本体画像に関する付属情報を記録するデータブロックである。例えば、撮像したデジタルカメラのモデル名の情報が含まれる。0th IFD317の一部には、Exif IFD318とGPS IFD320のデータブロックが存在する。
Exif IFD318は、Exifバージョンに関するタグ、画像データの特性や構造に関するタグ、撮像日時に関するタグ、シャッタースピードやレンズ焦点距離などが記録された撮像条件に関するタグなどで構成される。また、Exif IFD318には、MakerNote319のデータブロックが存在する。MakerNote319は、ファイルを生成したメーカ固有の情報が記録されている。例えば、時差情報や、撮像に用いられたデジタルカメラ100のユニークな番号を表すシリアル番号などの情報が含まれる。このMakerNote319に記載される情報は、メーカ毎に個別の仕様が採用されている。そのため、MakerNote319に記録されるデータのフォーマットの仕様が公開されていない限り、他のメーカの製品やアプリケーションからは、MakerNote319に記録されている情報を把握することは難しい。API305は、このような問題を解決するためにも利用することができる。すなわち、API305を利用すれば、MakerNote319の解析もデジタルカメラ100が実行し、スマートデバイス200が認識できる形でデータを取得することができる。そのため、APIを利用する側の装置やアプリが、MakerNote319を解析する機能を備えていなくとも、MakerNote319に記録されている情報の内容を把握することができる。
GPS IFD320は、GPS情報に関するタグで構成される。その中には、本実施例で使用する緯度、経度といった位置情報や、衛星測位日時(UTC)が記録される。
1st IFD321は、サムネイル画像に関する付属情報を記録するデータブロックである。Thumbnail322は、サムネイルの画像データである。
以上が、本実施形態の画像データの構造の説明である。
<システムのシーケンス>
次に、本実施形態におけるデジタルカメラ100とスマートデバイス200とが協働して実現する画像データの閲覧手順について説明する。
図4は、本実施形態におけるデジタルカメラ100とスマートデバイス200とが協働して実現するデータの閲覧手順を示すシーケンス図である。
まず、ステップS401において、デジタルカメラ100およびスマートデバイス200は、互いに通信パラメータを共有し、互いに同一のネットワークに参加する。ここで両機器が参加するネットワークは、両機器とは異なる他の機器であるアクセスポイントが生成したものであってもよいし、両機器のどちらかが簡易APとして動作して生成してもよい。本実施形態では、デジタルカメラ100が簡易APとして動作して無線LANネットワークを形成する場合を例に挙げて説明する。デジタルカメラ100は簡易APとして動作すると、ビーコン信号の定期的な送信を開始する。一方スマートデバイス200にてメニュー操作により接続開始が指示されると、スマートデバイス200はビーコン信号を検知し、デジタルカメラ100が形成した無線LANネットワークに参加する。なお、通信パラメータの共有は、各機器をユーザが操作することで(例えばスマートデバイス200でのSSIDの選択や、デジタルカメラ100での無線LAN機能の起動を指示するメニュー操作等)実現する。あるいは、近距離無線通信を介してデジタルカメラ100からスマートデバイス200にSSIDやパスワードを送信することで共有してもよい。この場合、近距離無線通信でのSSIDやパスワードの共有に応じて無線LAN機能を自動的に起動するように構成される。
次に、ステップS402において、デジタルカメラ100およびスマートデバイス200は、機器発見プロトコルによりお互いのデバイスを発見し、データ通信を行うためのプロトコル接続をすることにより機器同士の接続が完了する。互いのデバイスの発見には、例えばUPnP(Universal Plug And Play)や、mDNS(Multicast Domain Name Service)などのプロトコルを用いる。また、データ通信を行うためのプロトコルとしては、例えば、PTP/IPを採用することができる。
次に、ステップS403において、スマートデバイス200は、デジタルカメラ100に対して、製品情報を取得するRequestProductInfo APIをコールする。すなわち、デジタルカメラ100に対して製品情報を要求する。
これに対し、ステップS404においてデジタルカメラ100は、図3(a)に示すRequestProductInfoに応じた処理を行い、結果をスマートデバイス200に対して返却する。ここでは、デジタルカメラ100は、要求の受信に応じて不揮発性メモリ103に記録されている製品名、製造者名、ファームウェアバージョン、シリアルナンバーなどを読み出し、スマートデバイス200に製品情報として送信する。
続くステップS405において、スマートデバイス200は、デジタルカメラ100に対して、保存領域の情報を取得するRequestMemoryInfo APIをコールする。すなわち、デジタルカメラ100に対して保存領域の情報を要求する。
これに対し、ステップS406においてデジタルカメラ100は、図3(a)に示すRequestMemoryInfoに応じた処理を行い、結果をスマートデバイス200に対して返却する。具体的には、デジタルカメラ100は保存領域の情報として、保存領域ID、保存可能容量、空き容量、保存済みコンテンツ数などをスマートデバイス200に送信する。
次に、ステップS407において、スマートデバイス200はサムネイル一覧を表示するために、デジタルカメラ100に保存されている画像の管理情報を取得するRequestContentInfo APIをコールする。すなわち、デジタルカメラ100に対して、保存されている画像の管理情報を要求する。なお、本ステップでのRequestContentInfo APIのコールにおいては、ステップ406で取得した保存領域の情報を引数に利用する。また、ステップS407の処理は、ステップS406の完了に応じて自動的に実行されてもよいし、例えばユーザの操作によって、サムネイル一覧を表示するための指示を受け付けたことに応じて実行されてもよい。図4では、ユーザからの指示に応じて実行される場合を例示する。
次に、この要求に対し、ステップS408でデジタルカメラ100は、図3(a)に示すRequestContentInfoに応じた処理を行い、結果をスマートデバイスに対して返却する。具体的には、デジタルカメラ100はコンテンツID、コンテンツファイル名、コンテンツファイルサイズ、コンテンツ生成日時などを、画像が保存されているディレクトリのディレクトリエントリから読み出し、スマートデバイス200に送信する。
ステップS407とステップS408の処理は、スマートデバイス200の表示部206に表示するサムネイルの数だけ繰り返される。図4では、後述のステップによって取得されたサムネイルが一画面に15つ表示される例を示している。この場合、ステップS407とステップS408は15回繰り返され、一画面に表示するサムネイルに対応する画像の管理情報を取得する。なお、一度のRequestContentInfo APIのコールで、複数の管理情報を取得できるようにしてもよい。この場合、RequestContentInfo APIの引数には、取得する管理情報の範囲を指定する。具体的には、取得対象範囲1−15のように指定する。このように指定した場合、デジタルカメラ100側が所定の順番で管理する各画像の管理情報のうち1番目の画像の管理情報から15番目の画像の管理情報までの15の管理情報がレスポンスとして返される。例えば、画像の生成順に管理情報が返される。
この管理情報がスマートデバイス200に取得されるということは、画像IDを取得されることに等しい。すなわち、画像IDを引数として用いるリクエストが実行される可能性が生じることになる。例えば、所定の画像の詳細情報をリクエストされる可能性が生じる。そこで、本実施形態の、デジタルカメラ100は、ステップS404の要求を受け付けたことに応じて、ステップS409の処理を実行する。
ステップS409では、デジタルカメラ100は、ステップS407で管理情報を要求された画像の詳細情報を、画像のヘッダ領域を解析して読み出し、作業用メモリ104に保持する。一度に複数の管理情報を要求される場合には、本ステップでも複数の詳細情報を保持する。これにより、後にスマートデバイス200から画像の詳細情報を要求された際に、画像の詳細情報の解析と読み出しを行わずとも、スマートデバイス200に画像の詳細情報を送信することができる。すなわち、指示を受けてから、詳細情報をスマートデバイス200に送信するまでの時間を短縮することができる。
次に、ステップS410において、スマートデバイス200は、ステップS408でデジタルカメラ100から受信した画像の管理情報に基づき、表示するサムネイルを取得するためのRequestContent APIをコールする。すなわち、スマートデバイス200は管理情報を取得した画像のIDを引数に用いて、画像のサムネイルをデジタルカメラ100に要求する。
これに対し、ステップS411でデジタルカメラ100は、図3(a)に示すRequestContentに応じた処理を行い、サムネイルデータをスマートデバイス200に対して返却する。すなわち、コールされたAPIの引数に含まれる画像のIDに基づき決定される画像のヘッダを解析してサムネイルデータを読み出し、スマートデバイス200に送信する。
更に、ステップS412においてスマートデバイス200は、ステップS410で要求したサムネイルに対応する画像の詳細情報を取得するRequestContentDetailInfo APIをコールする。すなわち、ステップS410で要求したサムネイルに対応する画像IDを引数に利用して、その画像IDで特定される画像の詳細情報をデジタルカメラ100に要求する。
これに対し、ステップS413でデジタルカメラ100は、図3(a)に示すRequestContentDetailInfoに応じた処理を行い、画像の詳細情報をスマートデバイス200に対して返却する。なお、ここで要求される詳細情報は、ステップS409で既に解析して読み出し済みであるため、ステップS412の要求を受け付けてから解析と読み出しを開始する場合よりも速くスマートデバイス200に詳細情報を送信することができる。
ステップS410〜ステップS413の処理は、ステップS407〜ステップS408を繰り返した回数と同じ回数繰り返される。また、ステップS410〜ステップS413の処理によって取得されるサムネイルと詳細情報は、処理の繰り返しの完了を待つことなく、スマートデバイス200の表示部206に順次表示される。この結果、例えばスマートデバイス200の表示部206には、画面421のようなサムネイルおよびメタデータ一覧が表示されることになる。表示するメタデータとしては、撮影モードや撮影日時、Av値、Tv値、ISO値などがあげられる。
なお、この画面421に表示されるサムネイルに対応する画像以外の画像に関する管理情報やサムネイル、詳細情報については、他のサムネイルの表示指示が入力されたときに、改めてステップS407〜ステップS413の処理を実行して取得すればよい。なお、サムネイル一覧画面で、例えばタッチパネルへのタッチ操作によって、他のサムネイルを閲覧するための指示を入力することができるものとする。サムネイル一覧の更新については、例えば、上向きのドラッグ操作やフリック操作に応じて、現在表示中のサムネイルは上向きにスクロールアウトしていき、新たに、次のサムネイル群が下からスクロールインしてくるような表示態様で画面が更新される。この際に、ステップS407〜S413の処理によって、次のサムネイル群の管理情報とサムネイル、および詳細情報を取得する。また、本実施形態の動作においては、ステップS409で保持した詳細情報は、この新たなサムネイルの表示に伴う、再度のステップS407でのRequestContentInfoの受信に応じて、一旦作業用メモリ104から削除される。そして、新たにステップS409の実行により、新たなサムネイルに対応する画像の詳細情報が保持される。なお、この一旦保持した詳細情報を削除するタイミングは、上記のタイミングに限られない。例えば、本実施形態においてステップS409で保持した詳細情報は、基本的には全てステップS413でスマートデバイス200に送信される。そのため、スマートデバイス200への送信が完了したものから順次削除してもよい。
また、この画面が表示されている状態において、ユーザは操作部205を介して、いずれかのサムネイルを選択して、本画像を確認することができる。以下の説明では、操作部205としてタッチパネルを採用した場合の操作を例に挙げて説明する。
ステップS414にてスマートデバイス200は、画面421に表示されるサムネイルのうちのいずれかの画像のプレビュー表示を行うための指示を受け付ける。例えばユーザは、サムネイルの表示領域を一定時間以上タッチする(いわゆる長押し)ことで、サムネイルに対応する本画像を表示させるための指示を入力することができる。なお、長押しの操作は一例であり、他の操作でもよい。例えば、サムネイルのタップ、ダブルタップ(所定時間以内に二回のタップを行う操作)、二本の指でのタップ等の操作を採用することができる。
さて、画像のプレビュー表示を行うための指示を受け付けたスマートデバイス200は、ステップS415にて、指示された画像のIDを引数に用いて、RequestContent APIをコールする。ここでは、画像サイズの引数は「オリジナル」を示す値が利用される。
これに対し、ステップS416でデジタルカメラ100は、図3(a)に示すRequestContentに応じた処理を行い、画像データをスマートデバイス200に対して返却する。すなわち、要求に含まれる画像IDに対応する画像データをスマートデバイス200に送信する。
これを受け取ったスマートデバイス200は、デジタルカメラ100から受信した画像データをもとに、ディスプレイに選択された画像のプレビュー表示を行う。この結果、例えばスマートデバイス200の表示部206には、画面422のように一枚の画像が一画面に表示される。
以上が、本実施形態におけるデジタルカメラ100とスマートデバイス200とが協働して実現する画像データの閲覧手順の説明である。
<デジタルカメラ100の動作>
続いて、図4の手順を実現するための、デジタルカメラ100の動作について説明する。図5は本実施形態におけるデジタルカメラ100の動作を示すフローチャートである。このフローチャートにおける各処理は、制御部101が、不揮発性メモリ103に格納されたプログラムを作業用メモリ104に展開して実行することにより実現される。また、本フローチャートの処理は、例えばユーザのメニュー操作等によってスマートデバイス200との無線LANの通信を確立する指示を受け付けたことに応じて開始される。
まずステップS501にて、制御部101は通信部111を介して、スマートデバイス200との無線LAN通信を確立したか否かを判断する。無線LAN通信の確立とは、デジタルカメラ100に対して無線LANの通信を開始する指示が入力され、ネットワークの生成、ネットワーク内の機器検索を経て、スマートデバイス200との機器同士の通信を確立することを意味する。無線LAN通信を確立していないと判断された場合、本ステップの処理を繰り返し、無線LAN通信の確立を待つ。一方、無線LAN通信を確立したと判断された場合、処理はステップS502に進む。本ステップの処理は図4のステップS401、S402に相当する。
次に、ステップS502にて、制御部101は通信部111を介して、スマートデバイス200から、デジタルカメラ100の製品情報を取得するためのリクエストRequestProductInfoを受信したか否かを判断する。受信したと判断した場合、処理はステップS503に進む。受信していないと判断した場合、ステップS503を経ることなくステップS504に進む。
ステップS503では、制御部101は、要求の受信に応じて不揮発性メモリ103に記録されている製品名、製造者名、ファームウェアバージョン、シリアルナンバーなどを読み出し、レスポンスとしてスマートデバイス200に送信する。本ステップの処理は図4のステップS404に相当する。
次に、ステップS504にて、制御部101は通信部111を介して、スマートデバイス200からデジタルカメラ100の保存領域の情報を取得するためのリクエストRequestMemoryInfoを受信したか否かを判断する。受信したと判断した場合、処理はステップS505に進む。受信していないと判断した場合、ステップS505を経ることなくステップS506に進む。
ステップS505では、制御部101は、要求の受信に応じて、保存領域ID、保存可能容量、空き容量、保存済みコンテンツ数などをRequestMemoryInfoに対するレスポンスとしてスマートデバイス200に通信部111を介して送信する。本ステップの処理は図4のステップS406に相当する。
ステップS506では、制御部101は通信部111を介して、スマートデバイス200から、デジタルカメラ100に保存されている画像の管理情報を取得するためのリクエストRequestContentInfoを受信したか否かを判断する。受信したと判断した場合、処理はステップS507に進む。受信していないと判断した場合、処理はステップS511に進む。ステップS511については後述する。
ステップS507では、制御部101は、作業用メモリ104に保持している画像の詳細情報を消去する。この時点で作業用メモリ104に画像の詳細情報が保持されている場合としては、例えば一旦スマートデバイス200にサムネイル一覧が表示されている状態で、新たなサムネイル群の表示が指示された場合が考えられる。なお、画像の詳細情報を保持していない場合は、本ステップの処理はスキップされる。また、ステップS506で、既に詳細情報を保持している画像の管理情報がリクエストされた場合には、管理情報をリクエストされた画像の詳細情報は削除しない。例えばRequestContentInfoの範囲指定の引数に1−15が指定され、一旦1番目から15番目の画像の詳細情報がそれぞれ保持された状態を考える。この状態で更に、範囲指定の引数に10−25と指定されたRequestContentInfoを受信した場合、10番目から15番目の画像の詳細情報は既に保持していることになる。このような場合に10番目から15番目の画像の詳細情報は、削除しないよう制御する。
ステップS508にて、制御部101は記録媒体110に保存されている管理情報のうち、指示された分の画像の管理情報をディレクトリエントリから読み出すと共に、画像の詳細情報を画像のヘッダを解析して読み出す。
次いで、ステップS509にて、制御部101は、ステップS508で読み込んだ画像の詳細情報を作業用メモリ104に保持する。このように、管理情報を取得したことで、要求される可能性が生じる詳細情報を予め読み出しておくことで、詳細情報が要求された場合のレスポンス速度を速める。ステップS508、ステップS509の処理は図4のステップS409に相当する。
次いでステップS510にて、制御部101は、ステップS508で読みだした管理情報をRequestContentInfoに対するレスポンスとして、通信部111を介してスマートデバイス200に送信する。なお、ステップS510とステップS509の処理は前後してもよい。また、並行して実行されてもよい。本ステップの処理は図4のステップS408に相当する。
次に、ステップS511にて、制御部101は通信部111を介して、スマートデバイス200から画像のサムネイル取得要求を受信したか否かを判断する。具体的には、THUMBNAILを引数としたRequestContentを受信したか否かを判断する。受信したと判断した場合、処理はステップS512に進む。受信していないと判断した場合、処理はステップS514に進む。ステップS514については後述する。
ステップS512にて、制御部101は要求された画像のヘッダを解析し、サムネイルを読み出す。
次いで、ステップS513にて、制御部101は通信部111を介して、スマートデバイスにステップS512で読みだした画像のサムネイルをRequestContentに対するレスポンスとして送信する。本ステップの処理は図4のステップS411に相当する。
次に、ステップS514にて、制御部101は通信部111を介して、画像の詳細情報の取得要求を受信したか否かを判断する。具体的には、RequestContentDetailInfoを受信したか否かを判断する。受信したと判断した場合、処理はステップS515に進む。受信していないと判断した場合、処理はステップS518に進む。ステップS518については後述する。
ステップS515にて、制御部101は作業用メモリ104に、スマートデバイス200から要求された画像のメタデータを保持しているか否かを判断する。保持していないと判断した場合、ステップS516にて画像のヘッダを解析してメタデータを読み出す。保持している場合は、ステップS516を経ることなくステップS517に進む。
ステップS517では、制御部101は通信部111を介して、スマートデバイス200に要求された画像の詳細情報を、RequestContentDetailInfoに対するレスポンスとして送信する。本ステップの処理は図4のステップS413に相当する。ここで、ステップS516を経ることなくステップS517が実行される場合は、既に保持済みの詳細情報を送信すればよい。この場合、ステップS516を実行する必要が無いため、ステップS516を実行する場合に比べて、要求の受け付けからのメタデータ送信までの時間を短縮することができる。
次に、ステップS518にて、制御部101は通信部111を介して、画像取得要求を受信したか否かを判断する。具体的にはORIGINALを引数としたRequestContentを受信したか否かを判断する。受信したと判断した場合、処理はステップS519に進む。受信していないと判断した場合、処理はステップS521に進む。ステップS521については後述する。
ステップS519にて、制御部101は記録媒体110からスマートデバイス200から要求された画像を読み出す。
次いで、ステップS520にて、制御部101は通信部111を介して、スマートデバイス200にステップS519にて読み出した画像を、RequestContentに対するレスポンスとして送信する。本ステップの処理は図4のステップS416に相当する。
次に、ステップS521にて、制御部101はスマートデバイス200との無線LAN通信が切断されたか否かを判断する。なお、無線LAN通信が切断する場合としては、ユーザによって明示的に切断の指示を受け付けた場合や、スマートデバイス200からの信号が一定時間以上受信できない場合等が考えられる。ここで、無線LAN通信が切断していないと判断された場合、処理はステップS502に戻る。一方、無線LAN通信が切断したと判断された場合、制御部201はステップS509で保持しておいた詳細情報を削除した上で本フローチャートの処理を終了する。
以上が本実施形態におけるデジタルカメラ100の動作の説明である。
<スマートデバイス200の動作>
次に、図4の手順を実現するための、スマートデバイス200の動作について説明する。図5は本実施形態におけるスマートデバイス200の動作を示すフローチャートである。このフローチャートにおける各処理は、制御部201が、不揮発性メモリ203に格納されたプログラムを作業用メモリ204に展開して実行することにより実現される。また、本フローチャートの処理は、例えばユーザのメニュー操作等によってデジタルカメラ100との無線LANの通信を確立する指示を受け付けたことに応じて開始される。
まずステップS601にて、制御部201は通信部211を介して、デジタルカメラ100との無線LAN通信を確立したか否かを判断する。無線LAN通信の確立とは、無線LANの通信を開始する指示が入力され、デジタルカメラ100が生成しているネットワークへの参加、ネットワーク内の機器検索を経て、デジタルカメラ100との機器同士の通信を確立することを意味する。無線LAN通信を確立していないと判断された場合、本ステップの処理を繰り返し、無線LAN通信の確立を待つ。一方、無線LAN通信を確立したと判断された場合、処理はステップS602に進む。本ステップの処理は図4のステップS401、S402に相当する。
次に、ステップS602にて、制御部201は通信部211を介して、デジタルカメラ100の製品情報を取得するためのリクエストRequestProductInfoをデジタルカメラ100に送信する。ここで送信した情報は、デジタルカメラ100における図5のステップS502の処理によって受信される。本ステップの処理は図4のステップS403に相当する。
ステップS603では、制御部201は、ステップS602で送信した要求に対する応答を受信したか否かを判断する。受信していないと判断した場合は、本ステップの処理を繰り返して受信を待つ。受信したと判断した場合、処理はステップS604に進む。なお、受信される情報は、デジタルカメラ100の製品名、製造者名、ファームウェアバージョン、シリアルナンバーなどを含む。これらの情報は、表示部206に表示することでユーザに製品名等の情報の提示や、製品の特性を判断するために用いられる。
ステップS604にて、制御部201は通信部211を介して、デジタルカメラ100に保存領域の情報を取得するための要求を送信する。具体的には、RequestMemoryInfoを送信する。ここで送信した情報は、デジタルカメラ100における図5のステップS504の処理によって受信される。本ステップの処理は図4のステップS405に相当する。
ステップS605では、制御部201は、ステップS604で送信した要求に対する応答を受信したか否かを判断する。受信していないと判断した場合は、本ステップの処理を繰り返して受信を待つ。受信したと判断した場合、処理はステップS606に進む。なお、受信される情報は、保存領域ID、保存可能容量、空き容量、保存済みコンテンツ数などを含む。これらの情報により、スマートデバイス200はデジタルカメラ100の記録媒体110に保存されているコンテンツの数や、ストレージにアクセスするための保存領域のIDを認識することができる。そして、コンテンツの数を認識することで、表示部206の表示領域をどの程度確保する必要があるかなど判断することができる。
次に、ステップS606にて、制御部201は操作部205を介して、ユーザからサムネイル一覧を表示する指示を受け付けたか否かを判断する。受け付けたと判断した場合は、処理はステップS607に進む。受け付けていないと判断した場合は、処理はステップS616に進む。ステップS616については後述する。
ステップS607では、制御部201は通信部211を介して、デジタルカメラ100に表示部206に表示可能な数の管理情報取得要求を行う。具体的には、RequestContentInfoをデジタルカメラ100に送信する。ここで、RequestContentInfoの引数には、ステップS605にて取得した保存領域のIDを指定する。本ステップの処理は図4のステップS407に相当する。
次いで、ステップS608にて、制御部201は通信部211を介して、デジタルカメラ100からの管理情報の取得が完了したか否かを判断する。完了していないと判断した場合、本ステップの処理を繰り返して完了を待つ。完了したと判断した場合、処理はステップS609に進む。ここで、管理情報として取得する情報は、コンテンツIDを含む。このコンテンツIDは、デジタルカメラ100に対して、本画像や詳細情報を要求する際に、画像を特定するための情報である。
ステップS609にて、制御部201は通信部211を介して、デジタルカメラ100に画像のサムネイル取得要求を行う。具体的には、画像サイズの引数にTHUMBNAILを用いたRequestContentをデジタルカメラ100に送信する。本ステップの処理は図4のステップS411に相当する。
ステップS610にて、制御部201は通信部211を介して、ステップS609で要求したサムネイルの取得が完了したか否かを判断する。完了していないと判断した場合、本ステップの処理を繰り返して完了を待つ。完了したと判断した場合、処理はステップS611に進む。
ステップS611にて、制御部201は表示部206に画像のサムネイルを表示する。
次いで、ステップS612にて、制御部201は通信部211を介して、デジタルカメラ100に画像の詳細情報取得要求を行う。具体的には、ステップS609で要求したサムネイルに対応する画像の画像IDを引数に用いたRequestContentDetailInfoを送信する。本ステップの処理は図4のステップS413に相当する。
次に、ステップS613にて、制御部201は通信部211を介して、デジタルカメラ100から詳細情報の取得が完了したか否かを判断する。完了していないと判断した場合、本ステップの処理を繰り返して完了を待つ。完了したと判断した場合、処理はステップS614に進む。
ステップS614では、制御部201は、ステップS613で受信した詳細情報を表示部206に表示する。ここで、デジタルカメラ100から取得する画像の詳細情報には、撮影した画像の絞りやシャッタースピードなどの詳細情報を含む。ユーザは、この情報を参照して、例えばプレビュー表示したい画像やスマートデバイス200に取り込みたい画像を選ぶことができる。
次いで、ステップS615にて、制御部201は表示部206の表示範囲の画像のサムネイルと詳細情報を全て取得し終えたか否かを判断する。例えば表示範囲に15つのサムネイルが表示される場合、サムネイルと詳細情報をそれぞれ15ずつ取得したか否かが判断される。取得し終えていないと判断された場合、処理はステップS609に戻り、残りのサムネイルと詳細情報を取得および表示すべく、ステップS609〜ステップS614を繰り返す。これにより、サムネイルを一つ取得および表示する度に、そのサムネイルに対応する画像の詳細情報が取得および表示される。結果として、サムネイルと詳細情報が交互に表示されながら、最終的に画面421のようなサムネイルと詳細情報の一覧画面が表示される。なお、本実施の形態ではサムネイルの表示と詳細情報の表示を交互に行う場合を例に挙げて説明したがこれに限られるものではない。例えば、画像のサムネイルを表示範囲の分だけ全て取得し、サムネイルのみを順次表示した後に、詳細情報を順次取得および表示していくようにしてもよい。繰り返しの結果、表示すべきサムネイルと詳細情報の取得と表示が完了したならば、処理はステップS616に進む。
次に、ステップS616にて、制御部201は、操作部205を介してユーザから画像のプレビュー表示の指示を受け付けたか否かを判断する。例えば制御部201は、サムネイルの表示領域に対応するタッチパネルの位置に一定時間タッチされ続けた場合に、そのサムネイルに対応する画像のプレビュー表示の指示を受け付けたと判断する。指示を受け付けたと判断した場合、処理はステップS617に進む。指示を受け付けていないと判断した場合、処理はステップS620に進む。ステップS620については後述する。
ステップS617では、制御部201は通信部211を介して、デジタルカメラ100に画像データ取得要求を行う。具体的には、画像サイズの引数にORIGINALを用いたRequestContentをデジタルカメラ100に送信する。本ステップの処理は図4のステップS415に相当する。
次いでステップS618にて、制御部201は通信部211を介して、ステップS617で要求した画像データの取得が完了したか否かを判断する。完了していないと判断した場合、本ステップの処理を繰り返して完了を待つ。完了したと判断した場合、処理はステップS619に進む。
ステップS619にて、制御部201は表示部206の一画面に画像データを表示する。この結果、例えば図4の画面422のように画像が一画面にプレビュー表示される。なお、図4では、画像データを表示する際に画像データのみを表示する場合を例示しているが、これに限られるものではない。たとえば、ステップS614にて取得した画像の詳細情報を併せて表示してもよい。
続いて、ステップS620で制御部101は、デジタルカメラ100との無線LAN通信が切断されたか否かを判断する。なお、無線LAN通信が切断する場合としては、ユーザによって明示的に切断の指示を受け付けた場合や、デジタルカメラ100からの信号が一定時間以上受信できない場合等が考えられる。ここで、無線LAN通信が切断していないと判断された場合、処理はステップS606に戻る。一方、無線LAN通信が切断したと判断された場合、本フローチャートの処理を終了する。
以上が本実施形態におけるスマートデバイス200の動作の説明である。
以上のように、本実施形態のデジタルカメラ100は、画像の管理情報が要求されたことに応じて、画像の詳細情報を要求される前に予め、画像の詳細情報を解析して読みだしておく。これにより、画像の詳細情報を要求されてから、送信し始めるまでの時間を短縮することができる。
[第2の実施形態]
第1の実施形態では、画像の管理情報の要求をトリガとして、画像の詳細情報を予め読み出しておく場合について説明した。これに対し、本実施形態では、画像のサムネイルの要求をトリガとして、画像の詳細情報を予め読み出しておく場合について説明する。
なお、本実施形態は、第1の実施形態と共通する部分が多いため、本実施形態特有の部分を中心に説明する。
<システムのシーケンス>
図7は、本実施形態におけるデジタルカメラ100とスマートデバイス200とが協働して実現するデータの閲覧手順を示すシーケンス図である。
ステップS701〜ステップS708は、図4のステップS401〜ステップS408と同様の処理が実行される。
次に、ステップS709にてスマートデバイス200がデジタルカメラ100に対して表示するサムネイルを取得するためのRequestContent APIをコールする。すなわち、スマートデバイス200は管理情報を取得した画像のIDを引数に用いて、画像のサムネイルをデジタルカメラ100に要求する。このステップの処理は図4のステップS410と同様である。
これに対し、ステップS710でデジタルカメラ100は、図3(a)に示すRequestContentに応じた処理を行い、サムネイルデータをスマートデバイス200に対して返却する。すなわち、コールされたAPIの引数に含まれる画像のIDに基づき決定される画像のヘッダを解析してサムネイルデータを読み出し、スマートデバイス200に送信する。このステップの処理は図4のステップS411と同様である。
また、本実施形態のデジタルカメラ100は、ステップS709の要求を受け付けたことに応じて、ステップS711の処理を実行する。ステップS711では、デジタルカメラ100は、ステップS709で管理情報を要求された画像の詳細情報を、画像のヘッダ領域を解析して読み出し、作業用メモリ104に保持する。このステップの処理は図4のステップS409と同様である。なお、サムネイルを読み出すためにもヘッダ領域の解析が必要であるため、ステップS710でサムネイルを読み出すためのヘッダ解析で、詳細情報を読み出すための解析を兼ねてもよい。
また、スマートデバイス200にて、いずれかのサムネイルに対応する画像のプレビュー表示の指示が受け付けられたならば、ステップS712〜ステップS713の処理が実行され、指示されたサムネイルに対応する画像のプレビュー表示が行われる。ステップS712〜ステップS713は、図4のステップS415〜ステップS416の処理と同様である。
また、本実施形態では、プレビュー表示中の画像の表示領域に対応するタッチパネルの位置に対する一定時間以上のタッチ操作により、詳細情報を表示する指示を入力することができる。
ステップS714にてスマートデバイス200が、プレビュー表示中の画像の詳細情報を表示する指示を受け付けた場合、ステップS715とステップS716の処理が実行される。
ステップS715では、スマートデバイス200は、プレビュー表示中の画像の詳細情報を取得するためのRequestContentDetailInfo APIをコールする。すなわち、プレビュー表示中の画像の画像IDを引数に利用して、その画像IDで特定される画像の詳細情報をデジタルカメラ100に要求する。
これに対し、ステップS716でデジタルカメラ100は、図3(a)に示すRequestContentDetailInfoに応じた処理を行い、画像の詳細情報をスマートデバイス200に対して返却する。なお、ここで要求される詳細情報は、ステップS711で既に解析して読み出し済みであるため、ステップS715の要求を受け付けてから解析と読み出しを開始する場合よりも速くスマートデバイス200に詳細情報を送信することができる。
<デジタルカメラ100の動作>
続いて、図7の手順を実現するための、デジタルカメラ100の動作について説明する。図8は本実施形態におけるデジタルカメラ100の動作を示すフローチャートである。このフローチャートにおける各処理は、制御部101が、不揮発性メモリ103に格納されたプログラムを作業用メモリ104に展開して実行することにより実現される。また、本フローチャートの処理は、例えばユーザのメニュー操作等によってスマートデバイス200との無線LANの通信を確立する指示を受け付けたことに応じて開始される。
ステップS801〜ステップS805では、図5のステップS501〜ステップS505と同様の処理が実行される。
続くステップS806では、制御部101は、通信部111を介して、スマートデバイス200から、デジタルカメラ100に保存されている画像の管理情報を取得するためのリクエストRequestContentInfoを受信したか否かを判断する。受信したと判断した場合、処理はステップS807に進む。受信していないと判断した場合、処理はステップS509に進む。ステップS809については後述する。
ステップS807では、制御部101は記録媒体110に保存されている管理情報のうち、指示された分の画像の管理情報をディレクトリエントリから読み出す。
次いでステップS808にて、制御部101は通信部111を介して、ステップS807で読みだした管理情報をRequestContentInfoに対するレスポンスとして、通信部111を介してスマートデバイス200に送信する。
次に、ステップS809にて、制御部101は通信部111を介して、スマートデバイス200から画像のサムネイル取得要求を受信したか否かを判断する。具体的には、THUMBNAILを引数としたRequestContentを受信したか否かを判断する。受信したと判断した場合、処理はステップS810に進む。受信していないと判断した場合、処理はステップS813に進む。ステップS813については後述する。
ステップS810にて、制御部101は要求された画像のヘッダを解析し、ヘッダからサムネイルを読み出すと共に、ヘッダから詳細情報も読みだす。
続くステップS811では、制御部101は、ステップS810で読みだした詳細情夫を作業用メモリ104に保持する。
次に、ステップS812では、制御部101は、ステップS810で読みだしたサムネイルを、RequestContentに対するレスポンスとしてスマートデバイス200に送信する。
ステップS813では、制御部101は通信部111を介して、画像の詳細情報の取得要求を受信したか否かを判断する。具体的には、RequestContentDetailInfoを受信したか否かを判断する。受信したと判断した場合、処理はステップS814に進む。受信していないと判断した場合、処理はステップS817に進む。ステップS817については後述する。
ステップS814にて、制御部101は作業用メモリ104に、スマートデバイス200から要求された画像のメタデータを保持しているか否かを判断する。保持していないと判断した場合、ステップS815にて画像のヘッダを解析してメタデータを読み出す。保持している場合は、ステップS815を経ることなくステップS816に進む。
ステップS816では、制御部101は通信部111を介して、スマートデバイス200に要求された画像の詳細情報を、RequestContentDetailInfoに対するレスポンスとして送信する。本ステップの処理は図7のステップS716に相当する。ここで、ステップS815を経ることなくステップS816が実行される場合は、既に保持済みの詳細情報を送信すればよい。この場合、ステップS815を実行する必要が無いため、ステップS815を実行する場合に比べて、要求の受け付けからのメタデータ送信までの時間を短縮することができる。
ステップS817〜ステップS820では、図5のステップS518〜ステップS521と同様の処理が実行される。
ステップS820にて、制御部101が、スマートデバイス200との無線LAN通信が切断されたと判断した場合、処理はステップS821に進む。
ステップS821では、制御部101は、ステップS811で作業用メモリ104に保持した詳細情報を削除する。その後、本フローチャートを終了する。
以上が本実施形態のデジタルカメラ100の動作の説明である。
<スマートデバイス200の動作>
続いて、図7の手順を実現するためのスマートデバイス200の動作について説明する。図9は、本実施形態におけるスマートデバイス200の動作を示すフローチャートである。このフローチャートにおける各処理は、制御部201が、不揮発性メモリ203に格納されたプログラムを作業用メモリ204に展開して実行することにより実現される。また、本フローチャートの処理は、例えばユーザのメニュー操作等によってデジタルカメラ100との無線LANの通信を確立する指示を受け付けたことに応じて開始される。
ステップS901〜ステップS911は、図6のステップS601〜ステップS611と同様の処理が実行される。
ステップS912では、制御部201は表示部206の表示範囲の画像のサムネイルを全て取得し終えたか否かを判断する。取得し終えていないと判断された場合、処理はステップS909に戻り、残りのサムネイルを取得および表示すべく、ステップS909〜ステップS911の処理を繰り返す。繰り返しの結果、表示すべきサムネイルの取得と表示が完了したならば、処理はステップS913に進む。
ステップS913〜ステップS916では、図6のステップS616〜ステップS619と同様の処理が実行される。
続いて、ステップS917では、制御部201は、画像の詳細情報の要求を受け付けたか否かを判断する。具体的には、ステップS916の処理によってプレビュー表示中の画像の表示領域に対応するタッチパネルの位置に対する一定時間以上のタッチ操作を受け付けたか否かを判断する。一定時間以上のタッチ操作を受け付けたと判断した場合は、画像の詳細情報の要求を受け付けたと判断する。一定時間以上のタッチ操作を受け付けていないと判断した場合は、画像の詳細情報の要求を受け付けていないと判断する。
ステップS917で制御部201が、画像の詳細情報の要求を受け付けていないと判断した場合、処理はステップS921に進む。一方、ステップS917で制御部201が、画像の詳細情報の要求を受け付けていないと判断した場合、処理はステップS921に進む。ステップS921については後述する。
ステップS918〜ステップS920では、図6のステップS612〜ステップS614と同様の処理が実行される。
最後に、ステップS921では、図6のステップS620と同様の処理が実行される。
以上が本実施形態におけるスマートデバイス200の動作の説明である。
なお、本実施形態では、画像のプレビュー表示後に、画像の詳細情報の表示を行っているが、これに限らなくともよい。たとえば、画像のサムネイル一覧表示時に、ユーザが操作部205を操作することによって、画像の詳細情報取得を行ってもよい。この場合においても、デジタルカメラ100はサムネイル取得要求時に画像の詳細情報を作業用メモリ104に保持している。そのため、記録媒体110から画像の詳細情報を読み出すことなく、画像の詳細情報をスムーズにスマートデバイス200に送信することが可能である。
以上のように、本実施形態のデジタルカメラ100は、画像のサムネイルが要求されたことに応じて、画像の詳細情報を要求される前に予め、画像の詳細情報を解析して読みだしておく。これにより、画像の詳細情報を要求されてから、送信し始めるまでの時間を短縮することができる。
[その他の実施形態]
上述の第1の実施形態では、管理情報を要求された分だけ詳細情報を先に読みだす場合を例に挙げて説明した。これに加えて、管理情報を要求された要求範囲の前後の画像の管理情報も、要求された数と同じ分だけ先に読みだしておいてもよい。例えば、取得対象範囲31−50と指定された場合、11−30の範囲と51−70の範囲の管理情報も、予め読みだして保持しておく対象とする。なぜなら、表示中のサムネイル一覧から他のサムネイルを表示する場合には、スクロールさせて、表示中のサムネイル群を基準に、前または後のサムネイル群が次に要求される可能性が高いと考えられるためである。
また、第2の実施形態では、デジタルカメラ100は、スマートデバイス200から、画像のサムネイル取得要求を行われた際に、画像の詳細情報を作業用メモリ104に保持している。これについては、サムネイルではなく、サムネイルに対応する画像の取得要求を行われた際に、画像の詳細情報を作業用メモリ104に保持してもよい。例えば、図8のステップS810での詳細情報の読出しの処理を、ステップS818で実行し、ステップS818の次に、ステップS811に相当する処理を実行する。
また、詳細情報の読出しと保存には多少の時間を要する。すなわち、図5のステップS508〜ステップS509の処理や、図8のステップS810〜ステップS811の処理の実行には、多少の時間を要する。そこで、これらのステップの実行中であっても、並行して別の指示を受け付けるようにしてもよい。例えば図5の場合では、ステップS508〜ステップS509の処理と並行して、ステップS506やステップS511の処理を実行し、スマートデバイス200からの要求を受け付ける。図8の場合では、ステップS810〜ステップS811の処理と並行して、ステップS809やステップS817の処理を実行し、スマートデバイス200からの要求を受け付ける。なお、このようにした場合、別の指示を受け付けた時点で、一旦詳細情報の読み出しを中止する。例えば、デジタルカメラ100にてステップS508の処理を実行中に、スマートデバイス200側にてフリック操作が行われ、新たなサムネイルの表示が必要になった場合を考える。この場合、スマートデバイス200からデジタルカメラ100に対して、新たな画像IDを取得するために、RequestContentInfoが送信される。この場合、デジタルカメラ100の制御部101は、一旦ステップS508の処理を中止し、新たなRequestContentInfoに対応すると共に、新たにステップS508の処理を開始する。すなわち、新たなRequestContentInfoにより送信される画像IDによって特定される画像の詳細情報を読み出す。これにより、スマートデバイス200の操作に対して、よりスムーズに対応することができる。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。