以下、添付図面に従って本発明の実施形態を詳細に説明する。なお、以下に説明する実施形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正又は変更されてもよい。また、各実施形態を適宜組み合せることも可能である。
[第1の実施形態]
<デジタルカメラ100の構成>
図1(a)は、本実施形態が適用する通信装置の一例であるデジタルカメラ100の構成例を示すブロック図である。なお、ここでは通信装置の一例としてデジタルカメラについて述べるが、通信装置はこれに限られない。例えば通信装置は携帯型のメディアプレーヤや、いわゆるタブレットデバイス、パーソナルコンピュータなどの情報処理装置であってもよい。
制御部101は、入力された信号や、後述のプログラムに従ってデジタルカメラ100の各部を制御する。なお、制御部101が装置全体を制御する代わりに、複数のハードウェアが処理を分担することで、装置全体を制御してもよい。
撮像部102は、例えば、光学レンズユニットと絞り・ズーム・フォーカスなど制御する光学系と、光学レンズユニットを経て導入された光(映像)を電気的な映像信号に変換するための撮像素子などで構成される。撮像素子としては、一般的には、CMOS(Complementary Metal Oxide Semiconductor)や、CCD(Charge Coupled Device)が利用される。撮像部102は、制御部101に制御されることにより、撮像部102に含まれるレンズで結像された被写体光を撮像素子により電気信号に変換し、ノイズ低減処理などを行い、デジタルデータを画像データとして出力する。本実施形態のデジタルカメラ100では、画像データは制御部101による符号化が行われ、DCF(Design Rule for Camera File system)の規格に従って、記録媒体110にファイルとして記録される。
不揮発性メモリ103は、電気的に消去・記録可能な不揮発性のメモリであり、制御部101で実行される後述のプログラム等が格納される。作業用メモリ104は、撮像部102で撮像された画像データを一時的に保持するバッファメモリや、表示部106の画像表示用メモリ、制御部101の作業領域等として使用される。
操作部105は、ユーザがデジタルカメラ100に対する指示をユーザから受け付けるために用いられる。操作部105は例えば、ユーザがデジタルカメラ100の電源のON/OFFを指示するための電源ボタンや、撮影を指示するためのレリーズスイッチ、画像データの再生を指示するための再生ボタンを含む。さらに、後述の通信部111を介して外部機器との通信を開始するための専用の接続ボタンなどの操作部材を含む。また、後述する表示部106に形成されるタッチパネルも操作部105に含まれる。なお、レリーズスイッチは、押下状態を2段階で検出するためにSW1およびSW2を有する。レリーズスイッチが、いわゆる半押し状態となることにより、SW1がONとなる。これにより、AF(オートフォーカス)処理、AE(自動露出)処理、AWB(オートホワイトバランス)処理、EF(フラッシュプリ発光)処理等の撮影準備を行うための指示を受け付ける。また、レリーズスイッチが、いわゆる全押し状態となることにより、SW2がONとなる。これにより、撮影を行うための指示を受け付ける。
表示部106は、撮影の際のビューファインダー画像の表示、撮影した画像データの表示、対話的な操作のための文字表示などを行う。なお、表示部106は必ずしもデジタルカメラ100が内蔵する必要はない。デジタルカメラ100は内部又は外部の表示部106と接続することができ、表示部106の表示を制御する表示制御機能を少なくとも有していればよい。なお、操作部105及び表示部106で、デジタルカメラのユーザインターフェースを構成することになる。
記録媒体110は、撮像部102から出力された画像データのファイルを記録することができる。記録媒体110は、デジタルカメラ100に着脱可能なよう構成してもよいし、デジタルカメラ100に内蔵されていてもよい。すなわち、デジタルカメラ100は少なくとも記録媒体110にアクセスする手段を有していればよい。
通信部111は、外部装置と接続するためのインターフェイスである。本実施形態のデジタルカメラ100は、通信部111を介して、外部装置とデータのやりとりを行うことができる。例えば、撮像部102で生成した画像データを、通信部111を介して外部装置に送信することができる。なお、本実施形態では、通信部111は外部装置とIEEE802.11の規格に従った、いわゆる無線LANで通信するためのインターフェイスを含む。制御部101は、通信部111を制御することで外部装置との無線通信を実現する。なお、通信方式は無線LANに限定されるものではなく、例えば赤外線通信方式、Bluetooth(登録商標)通信方式、WirelessUSB等の無線通信方式などを含むことができる。さらには、USBケーブルやHDMI(登録商標)、IEEE1394、Ethernetなど、有線接続を採用してもよい。
近距離通信部112は、例えば無線通信のためのアンテナと無線信号を処理するため変復調回路や通信コントローラから構成される。近距離通信部112は、変調した無線信号をアンテナから出力し、またアンテナで受信した無線信号を復調することでISO/IEC 18092の規格(いわゆるNFC:Near Field Communication)に従った近距離通信を実現する。またその他、赤外線通信方式、Bluetooth(登録商標)通信方式、WirelessUSB等の無線通信方式などに従った短距離無線通信を実現する。本実施形態の近距離通信部112は、デジタルカメラ100の側部に配さる。
本実施形態において、後述するスマートデバイス200とは、通信部より通信を開始して接続される。また、本実施形態におけるデジタルカメラ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に保持されているものであり、APモード、CLモードを、ユーザが操作部105を操作して選択することになる。
なお、本実施形態におけるデジタルカメラ100はAPの一種であるものの、CL機器から受信したデータをインターネットプロバイダなどに転送するゲートウェイ機能は有していない簡易APである。したがって、自機が形成したネットワークに参加している他の装置からデータを受信しても、それをインターネットなどのネットワークに転送することはできない。
次に、デジタルカメラ100の外観について説明する。図1(b)、図1(c)はデジタルカメラ100の外観正面、背面の一例を示す図である。レリーズスイッチ105aや再生ボタン105b、方向キー105c、タッチパネル105dは、前述の操作部105に含まれる操作部材である。また、表示部106には、撮像部102による撮像の結果得られた画像が表示される。以上、実施形態におけるデジタルカメラ100の構成を説明した。
<スマートデバイス200の内部構成>
図2は、本実施形態のデジタルカメラ100と通信する情報処理装置の一例であるスマートデバイス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の表示を制御する表示制御機能を少なくとも有していればよい。なお、操作部205及び表示部206で、スマートデバイス200のユーザインターフェースを構成することになる。
記録媒体210は、撮像部202から出力された画像データを記録することができる。記録媒体210は、スマートデバイス200に着脱可能なよう構成してもよいし、スマートデバイス200に内蔵されていてもよい。すなわち、スマートデバイス200は少なくとも記録媒体210にアクセスする手段を有していればよい。
通信部211は、外部装置と接続するためのインターフェイスである。本実施形態のスマートデバイス200は、通信部211を介して、デジタルカメラ100とデータのやりとりを行うことができる。本実施形態では、通信部211はアンテナであり、制御部101は、アンテナを介して、デジタルカメラ100と接続することができる。なお、デジタルカメラ100との接続では、直接接続してもよいしアクセスポイントを介して接続してもよい。データを通信するためのプロトコルとしては、例えばHTTP(Hyper Text Transfer Protocol)である。その他、無線LANを通じたPTP/IP(Picture Transfer Protocol over Internet Protocol)を用いることもできる。なお、デジタルカメラ100との通信はこれに限られるものではない。例えば、通信部211は、赤外線通信モジュール、Bluetooth(登録商標)通信モジュール、WirelessUSB等の無線通信モジュールを含むことができる。さらには、USBケーブルやHDMI、IEEE1394、Ethernetなど、有線接続を採用してもよい。
近距離無線通信部212は、他機との非接触近距離通信を実現するための通信ユニットである。近距離無線通信部212は、無線通信のためのアンテナと無線信号を処理するための変復調回路や通信コントローラから構成される。近距離無線通信部212は、変調した無線信号をアンテナから出力し、またアンテナで受信した無線信号を復調することにより非接触近距離通信を実現する。ここでは、ISO/IEC 18092の規格(いわゆるNFC)に従った非接触通信を実現する。近距離無線通信部212は、他のデバイスからデータ読み出し要求を受けると、不揮発性メモリ203に格納されているデータに基づき、応答データを出力する。
公衆網通信部213は、公衆無線通信を行う際に用いられるインターフェイスである。スマートデバイス200は、公衆網通信部213を介して、他の機器と通話することができる。この際、制御部201はマイク214およびスピーカ215を介して音声信号の入力と出力を行うことで、通話を実現する。本実施形態では、公衆網通信部213はアンテナであり、制御部101は、アンテナを介して、公衆網に接続することができる。なお、通信部211および公衆網通信部213は、一つのアンテナで兼用することも可能である。以上、実施形態におけるスマートデバイス200を説明した。
<システム構成>
図3は、スマートデバイス200がネットワークを通じてデジタルカメラ100の通信APIを利用し、デジタルカメラ100を制御するためのシステム構成を示す図である。
通信APIを利用しデジタルカメラ100を制御するためのシステム構成は3種類ある。
最初に、通信301に示すように、デジタルカメラ100とスマートデバイス200Aがピア・ツー・ピアで接続する構成である。この時デジタルカメラ100はWi−FiアクセスポイントとなってLAN(Local Area Network)を構築する。スマートデバイス200AはWi−Fiクライアントとなりデジタルカメラ100が構築したLANにジョインする。なお、本実施例においては通信301がWi−Fiで接続されている例をあげたが、Ethernetなどのような有線接続であってもよい。
次に、ネットワークルータ302、通信303、304に示すように、デジタルカメラ100とスマートデバイス200Aが、ネットワークルータ302を経由して接続する構成である。この時ネットワークルータがWi−FiアクセスポイントとなってLANを構築する。デジタルカメラ100とスマートデバイス200AはWi−Fiクライアントとなり、ネットワークルータ302が構築したLANにジョインする。なお本実施例においては、通信303、304がWi−Fiで接続されている例をあげたが、Ethernetなどのような有線接続であってもよい。
最後に、ネットワークルータ302、通信303、公衆回線305に示すように、スマートデバイス200Bが公衆回線305を経由してデジタルカメラ100と接続する構成である。前述の2つのシステム構成では、同一LAN内での接続の構成となる。一方、この構成では、スマートデバイス200Bは例えばVPN(Virtual Private Network)を使用することで、インターネットを通じ、LANの外側の離れた場所からデジタルカメラ100と通信することが可能である。なお、VPNは公知の技術であるため、ここでは説明を割愛する。
以上の3種類のシステム構成において、スマートデバイス200はデジタルカメラ100の通信APIを利用できる。
<デジタルカメラ100が公開する通信APIの基本構成>
図4、図5は、スマートデバイス200などの外部機器からデジタルカメラ100を制御するための通信APIの構成を示す図である。
デジタルカメラ100は、スマートデバイス200などの外部機器からデジタルカメラ100を制御するための通信APIを公開している。このAPIを用いて要求を受け付けることで、本実施形態のデジタルカメラ100は、不揮発性メモリ103に記録されたデバイス情報や、記録媒体110などに保存されたコンテンツファイルを、通信部111を介して外部機器へ送信する。コンテンツファイルとは、デジタルカメラ100が生成して記録媒体110や不揮発性メモリ103に保存する画像ファイルのことであり、本実施形態では、撮像した静止画ファイルや動画ファイルのことを指す。
この通信APIに対応するプログラムは、予め不揮発性メモリ103に保存されている。制御部101は、通信部111を介して外部機器との通信が確立すると、通信APIに対応するプログラムを作業用メモリ104に展開し、外部装置からの通信APIを用いたリクエストを待つ。制御部101が外部機器から通信APIを用いたリクエストを検知すると、通信APIの種類に応じた処理を実行し、その結果をレスポンスとして外部機器に返却する。なお、通信APIに対応するプログラムはデジタルカメラ100が規定した通信プロトコル上で実行され、外部機器は規定された通信プロトコルを用いてデジタルカメラ100と通信を行い、通信APIを用いてリクエストする。本実施形態では、HTTP(Hyper Text Transfer Protocol)上で本通信APIに対応するプログラムが実行される。すなわち、デジタルカメラ100はHTTPサーバとして機能する。すなわち、本実施形態では、通信APIをWebAPIとして実装する場合を例に挙げて説明する。
なお、通信プロトコルは、HTTPに限るものではなく、他のプロトコルであっても構わない。また、HTTPプロトコル自体は広く利用されているものであるので、ここでの説明は割愛する。
HTTPにおける通信APIに対応するプログラムの実行方法については、以下の手順で実現される。
まず、外部機器が通信APIとして公開されるURLに対して、HTTPリクエストボディにアクセス先の通信APIの仕様に応じた必要な指示情報をテキストデータで記述する。そして、HTTPメソッドであるGET(取得)、POST(生成)、PUT(更新)、DELETE(削除)の4メソッドのいずれかを用いてデジタルカメラ100に送信する。
これを受けたデジタルカメラ100はURLとHTTPメソッドとHTTPリクエストボディの指示情報の内容に基づいて処理を行い、その結果をHTTPレスポンスヘッダと共にHTTPレスポンスボディに付加して、外部機器に返却する。以上の手順で実現される。なお、HTTPレスポンスヘッダはHTTPステータスコードを含むとする。
また、通信APIにおいて、HTTPリクエストボディとHTTPレスポンスボディに記述するデータは、データ記述言語の1つであるJSON(JavaScript(登録商標) Object Notation)によって表現される。各通信APIには、それぞれの機能に応じたJSON構文の仕様が規定されており、デジタルカメラ100やスマートデバイス200は、それに則ってリクエストの指示やレスポンスの解析を行う。
なお、本実施例ではJSONを用いているが、XML(Extensible Markup Language)であってもよいし、独自フォーマットで定義されたテキストデータやバイナリデータを用いてもよい。
次に、通信APIの構成を詳細に説明する。
以下の説明では、説明を簡単にするために、インターフェイスそのものだけでなく、通信APIに対応するサービスやそれを実現するプログラムも、単にAPIや通信APIとも記載する。すなわち、APIに対応するサービスを実現するプログラムを実行することをAPIを実行する、などと記載し、APIを介して対応するサービスの実行をリクエストすることをAPIをリクエストする、などと記載する。
図4は、通信APIの基本構成を説明する図である。
まず、本実施形態における通信APIで使用するHTTPメソッドについて説明する。本実施形態における通信APIで使用するHTTPメソッドは、GET401、POST402、PUT403、DELETE404の4種類のみである。HTTPの規格としては他のメソッドも存在するが、取得、生成、更新、削除といった、ほとんど全てのコンピュータソフトウェアが持つ永続的な4つの基本機能に限定している。なお、本通信APIにおける4メソッドのそれぞれの意味は以下の通りである。
GET401は、コンテンツ(画像ファイル)の取得、カメラの情報や状態の取得、設定項目の能力値や設定値を取得する場合に使用する。
POST402は、外部装置からデジタルカメラ100に対してコンテンツファイルなどデータの保存、撮影の実行やズーム操作など、カメラの機能を実行する場合に使用する。
PUT403は、デジタルカメラ100のメニュー設定や撮影パラメータ設定など、設定値を変更する場合に使用する。
DELETE404は、コンテンツの削除や、設定値を初期化する場合に使用する。
上記4メソッドに絞ることで、複雑なHTTPメソッドの制御を必要としない。そのため、デジタルカメラ100を制御するためのスマートデバイス200の制御プログラムを作成するプログラマは、最低限かつ頻繁に活用するHTTPメソッドを使用するだけでプログラムを作成することができる。
次に、本実施形態における通信APIのトップURLについて説明する。トップURLとは、クライアントがデジタルカメラ100をコントロールする際に、最初にアクセスするURLとして規定されるURLである。コントローラは必ずこのトップURLにアクセスしてから、カメラのリモートコントロールのための他のAPIを利用する必要がある。
図4のURL405は通信APIのトップURLである。トップURLのホスト名、ドメイン名は、デジタルカメラ100に割り当てられたIPアドレスとポート番号で構成される。それに続き、通信APIを示すディレクトリ、さらに通信APIのバージョンを示すディレクトリがその後に続く構成になっている。例えば、デジタルカメラ100に割り振られたIPアドレスが192.168.1.1であり、ポート番号が8080であった場合のトップURLは、
http://192.168.1.1:8080/api/ver1
となる。
HTTPクライアントであるスマートデバイス200が、HTTPサーバであるデジタルカメラ100が公開する通信APIのトップURLをGET401でリクエストすると、デジタルカメラ100はAPI406に示すレスポンスボディ(JSON)を返す。ここには、デジタルカメラ100が対応している通信APIの一覧が記述されている。なお特徴的なのは、各URLに対して、どのHTTPメソッドが対応しているかがわかるJSON構文になっている点である。トップURLにアクセスすることで、スマートデバイス200は、デジタルカメラ100が対応している通信APIの種類を知ることができる。
次に、API表407は通信APIのカテゴリを示す表である。本実施形態における通信APIは、機能の種類によってURLを複数のカテゴリに分類していることを示している。なお、表におけるAPIカテゴリのURL表記は、トップURLを省略した表記になっている。実際には、APIカテゴリ408は、
http://192.168.1.1:8080/api/ver1/deviceinformation
となる。
次に、通信APIの機能のカテゴライズについて説明する。まず、APIカテゴリ408は、デジタルカメラ100の固定情報を取得するカテゴリである。次に、APIカテゴリ409は、デジタルカメラ100の状態情報を取得するカテゴリである。次に、APIカテゴリ410は、デジタルカメラ100のメニュー設定の取得や変更、メニュー機能を実行するカテゴリである。次に、APIカテゴリ411は、デジタルカメラ100の撮影機能を実行するカテゴリである。次に、APIカテゴリ412は、デジタルカメラ100の撮影パラメータの設定を取得、変更するカテゴリである。次に、APIカテゴリ413は、デジタルカメラ100が出力するスルー画を取得するカテゴリである。次に、APIカテゴリ414は、デジタルカメラ100が発行するイベント情報を取得するカテゴリである。次に、APIカテゴリ415は、デジタルカメラ100に装着されたメディアに保存されたコンテンツを取得するカテゴリである。
以上のように通信APIがURLでカテゴライズされることにより、デジタルカメラ100を制御するためのスマートデバイス200の制御プログラムを作成するプログラマは、実行したい通信APIがどのURLにあるのかが一目瞭然になるのが特徴である。
なお、個々の通信APIは、上記のAPIカテゴリ以下のディレクトリにURLが規定されている。
以上が、APIの基本的な構成の説明である。
続いて、本実施形態における特徴となるデジタルカメラ100のスルー画を取得するAPIについて説明する。
<デジタルカメラ100のスルー画を取得するAPI>
図5のAPI表500は、デジタルカメラ100のスルー画(リモート用ライブビュー画像)を取得するAPI群を示した表であり、図4のAPIカテゴリ413に属するAPIを示す。
API501は、デジタルカメラ100のスルー画の生成の開始と終了を指示するAPIである。リクエストボディにスルー画のサイズとデジタルカメラ100の表示部106にスルー画を表示するか否かの指示を記述して本APIをPOST402で実行すると、デジタルカメラ100は指示された内容に従ってスルー画の生成を開始および停止する。
API502は、デジタルカメラ100のスルー画を1フレーム取得するAPIである。本APIをGET401で実行すると、API501で設定したスルー画を1フレーム取得できる。
API503は、デジタルカメラ100のスルー画をチャンク送信で取得するAPIである。チャンク送信(Chunked Transfer)とは、HTTP1.1(RFC2616)で定義されているデータ転送メカニズムの1つである。チャンク送信は、事前にレスポンスのデータ全体のサイズが不明であっても、データの塊(ブロック)ごとにサイズを記してレスポンスを返していく送信方法である。API503はAPI502と比べて、データ容量の合計がわからない場合やデータを連続して取得する場合等に効果的である。詳細なメカニズムについては公知の技術であるためここでの説明は割愛する。本APIをGET401で実行すると、API表500に示すように、スルー画のサイズ情報、スルー画の実データの順でスルー画が送信され続ける。本実施形態では、スルー画は1フレームずつスマートデバイス200に送信されているとする。また、本APIをDELETE404で実行すると、API表500の最後の行に示すように、デジタルカメラ100はスルー画のサイズ情報が0と送信し、スルー画のチャンク送信を停止する。
ここで、デジタルカメラ100に何らかのエラーが発生し、スルー画を生成できない場合について説明する。対向機がデジタルカメラ100に対してAPI502を実行した場合、デジタルカメラ100はリクエストに対するレスポンスとしてスルー画を1フレーム送信する。そのため、ライブビュー中に、例えばデジタルカメラ100に何らかのエラーが発生している場合、デジタルカメラ100はHTTPレスポンスヘッダにそのエラーであることを示す情報を格納することで、対向機にエラーが発生していることを通知できる。さらに、HTTPレスポンスヘッダにエラーであることを示すためのコードがHTTPの規格に定義されている。また、HTTPレスポンスヘッダはHTTP通信では必ず参照する。これによりスマートデバイス200はHTTPレスポンスヘッダを参照することで、デジタルカメラ100のエラーが発生したか否かを特別なアルゴリズムを必要することなく判定できる。
これに対して、対向機がデジタルカメラ100に対してAPI503を実行した場合、デジタルカメラ100はリクエストに対するレスポンスとして、HTTPレスポンスヘッダを送信後にHTTPレスポンスボディとしてスルー画を連続して送信し続ける。チャンク送信方式ではスルー画を送信している途中に、デジタルカメラ100はHTTPレスポンスヘッダを送信することはできない。そのため、ライブビュー中に、デジタルカメラ100に何らかのエラーが発生した場合でも、デジタルカメラ100はHTTPレスポンスヘッダではそのエラーの内容を通知することはできない。また、一つの解決方法として、HTTPレスポンスボディまたはスルー画のデータ構造にエラーの内容を含めるためのデータ領域を作成し、対向機がそのデータ領域を解析するという方法がある。しかしながら、この方法だと対向機はHTTPレスポンスボディまたはスルー画を解析する必要がある。そのため対向機でHTTPレスポンスボディ(スルー画)を解析する方法は、対向アプリケーションを開発する際の実装負荷を増加させる。
本実施形態では、チャンク送信方式でも、対向機であるスマートデバイス200がHTTPレスポンスボディまたはスルー画を解析することなく、デジタルカメラ100はスルー画を生成できないことを対向機のユーザに通知する。このために、本実施形態におけるチャンク送信ではデジタルカメラ100はスルー画を生成できない場合、ダミー画像を送信する。
<本実施形態におけるスルー画を1フレームずつ取得する方法の説明>
まず、チャンク送信に対してスルー画を1フレームずつ取得する方法について説明する。図6Aは、図5に示す通信API502を実行した際の処理の流れを示すシーケンス図の一例である。図7A(a)〜(b)はライブビュー中のスマートデバイス200のUI画面の一例を示した図である。
図6AのステップS601A、S602Aは、API501を実行した際のシーケンスである。図6AのステップS603A、S604A、S605A、S606A、S607AはAPI502を実行した際のシーケンスである。
ステップS601Aにて、スマートデバイス200の制御部201は、プログラム処理により作業用メモリ204に記録されたスルー画の生成を開始するための値を取得する。そして制御部201は、スルー画の生成を開始するための値をリクエスト用JSON構文に基づいたデータセットに成形してHTTPリクエストボディに記述し、通信部211を介してデジタルカメラ100にAPI501をPOST402でリクエストする。なお本ステップにおいて、制御部201はAPI501の仕様に則り、スルー画のサイズ情報、およびデジタルカメラ100の表示部106にスルー画を表示するか否かを指示している。デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、リクエストボディに記述されたJSON構文を解析する。そして、制御部101はスマートデバイス200によってリクエストされたスルー画のサイズおよびデジタルカメラ100の表示部106にスルー画を表示するか否かの指示に従って、スルー画の生成処理を開始する。制御部101は生成されたスルー画を、逐次一時的に作業用メモリ104に記録する。
ステップS602Aにて、デジタルカメラ100の制御部101は、レスポンスの値をJSON構文に基づいたデータセットに成形してHTTPレスポンスボディに記述し、レスポンスとして通信部111を介してスマートデバイス200に送信する。
ステップS603Aにて、スマートデバイス200の制御部201は、通信部211を介してデジタルカメラ100にAPI502をGET401でリクエストする。
ステップS604Aにて、デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、作業用メモリ104より逐次一時的に記録されるスルー画を取得し、レスポンス用データセットに成形する。そして、制御部101は成形したデータセットをHTTPレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
なお、スマートデバイス200より繰り返しAPI502が実行され、スマートデバイス200上でのライブビュー表示を実現する。例えば、図7A(a)の画面701Aに示すように、ライブビュー表示はスマートデバイス200の表示部206に表示される。
ここで、デジタルカメラ100の制御部101がスルー画を生成できない場合(スルー画生成不可区間690)について説明する。たとえば、表示部106に撮影パラメータの設定を変更するためのメニューを表示している場合、および作業用メモリ104にスルー画を保持できる容量がない場合、デジタルカメラ100の制御部101はスルー画を生成しない。他にも、たとえば、記録媒体110に保存している画像の現像処理などをおこなっている場合、およびその他スルー画の生成を阻害する処理が実行されている場合も、デジタルカメラ100の制御部101はスルー画を生成できない。
ステップS605Aにて、スマートデバイス200の制御部201は、通信部211を介してデジタルカメラ100にAPI502をGET401でリクエストする。
ステップS606Aにて、デジタルカメラ100の制御部101が通信部111を介してこのリクエストを受信したことを検知すると、スルー画を生成できないことを記述したエラーメッセージを含むレスポンス用データセットを成形する。そして、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。スマートデバイス200の制御部201はエラーメッセージを受信した場合、HTTPレスポンスヘッダを参照することで、デジタルカメラ100にエラーが発生していることを判定する。そして制御部201は、必要に応じて、HTTPレスポンスボディを参照し、エラーの内容等を取得する。このとき、スマートデバイス200の制御部201は図7A(b)に示すように、メッセージ704Aを表示部206に表示する。本実施形態において、制御部201は図7A(b)の画面703Aに示すように、スルー画生成不可区間690より前に取得したスルー画を表示する。このスルー画はスマートデバイス200の作業用メモリ204に保持されている。本実施形態ではスマートデバイス200は上記のようにエラーメッセージとスルー画の表示を行ったが、これに限る必要はない。例えば、スマートデバイス200はメッセージ704Aを画面703Aに重畳して表示することで、エラー発生をユーザに報知してもよい。
以上、スルー画を1フレームずつ取得する方法について説明した。
<本実施形態におけるチャンク送信の説明>
図6Bは、図5に示す通信API503を実行した際の処理の流れを示すシーケンス図の一例である。図7B(a)〜(c)はライブビュー中のスマートデバイス200のUI画面の一例を示した図である。
図6BのステップS601B、S602Bは、API501を実行した際のシーケンスである。図6BのステップS603B、S604B、S605B、S606B、S607BはAPI503を実行した際のシーケンスである。
ステップS601Bにて、スマートデバイス200の制御部201は、プログラム処理により作業用メモリ204に記録されたスルー画の生成を開始するための値を取得する。そして制御部201は、スルー画の生成を開始するための値をリクエスト用JSON構文に基づいたデータセットに成形してHTTPリクエストボディに記述し、通信部211を介してデジタルカメラ100にAPI501をPOST402でリクエストする。なお本ステップにおいて、制御部201はAPI501の仕様に則り、スルー画のサイズ情報、およびデジタルカメラ100の表示部106にスルー画を表示するか否かを指示している。デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、リクエストボディに記述されたJSON構文を解析する。そして、制御部101はスマートデバイス200によってリクエストされたスルー画のサイズおよびデジタルカメラ100の表示部106にスルー画を表示するか否かの指示に従って、スルー画の生成処理を開始する。制御部101は生成されたスルー画を、逐次一時的に作業用メモリ104に記録する。
ステップS602Bにて、デジタルカメラ100の制御部101は、レスポンスの値をJSON構文に基づいたデータセットに成形してHTTPレスポンスボディに記述し、レスポンスとして通信部111を介してスマートデバイス200に送信する。
ステップS603Bにて、スマートデバイス200の制御部201は、通信部211を介してデジタルカメラ100にAPI503をGET401でリクエストする。
ステップS604Bにて、デジタルカメラ100の制御部101は通信部111を介して、このリクエストを受信したことを検知した場合、作業用メモリ104からスルー画を読み込む。制御部101は取得したスルー画を、レスポンス用データセットに成形する。そして、制御部101は成形したデータセットをHTTPレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。スマートデバイス200の制御部201は受信したスルー画を図7B(a)の画面701Bに示すように表示部206にライブビュー表示する。デジタルカメラ100の制御部101は作業用メモリ104に逐次一時的に記録したスルー画を順次スマートデバイス200に送信する。
ここで、デジタルカメラ100の制御部101がスルー画を生成できない場合(スルー画生成不可区間690)について説明する。例えば、表示部106に撮影パラメータの設定を変更するためのメニューを表示している場合、および作業用メモリ104にスルー画を保持できる容量がない場合、デジタルカメラ100の制御部101はスルー画を生成できない。他にも、たとえば、記録媒体110に保存している画像の現像処理などを実行している場合、およびその他スルー画の生成を阻害する処理が実行している場合も、デジタルカメラ100の制御部101はスルー画を生成できない。なお、ここでデジタルカメラ100は表示部106に撮影パラメータの設定を変更するためのメニューを表示している場合は表示部106にメニューが表示されている。作業用メモリ104にスルー画を保持できる容量がない場合や記録媒体110に保存している画像の現像処理などを実行している場合等では、デジタルカメラ100は表示部106に、スルー画を生成できない旨の警告を表示する。
また、前述したように、API503を実行した場合、デジタルカメラ100はHTTPレスポンスヘッダを利用してエラーの内容をスマートデバイス200に送信することはできない。そこで、本実施形態ではデジタルカメラ100はエラーの内容を通知するためのダミー画像をスマートデバイス200に送信する。
ステップS605Bにて、デジタルカメラ100の制御部101はダミー画像を生成して、レスポンス用データセットに成形する。そして、制御部101は成形したデータセットをHTTPレスポンスボディに記述し、通信部111を介して、スマートデバイス200に送信する。例えば、デジタルカメラ100はダミー画像として、図7B(b)の画面702Bに示すようなエラーメッセージを記載した画像を生成する。これにより、スルー画生成不可区間690より前と同様に、デジタルカメラ100は送信した画像をスマートデバイス200の表示部206に表示させることでユーザにエラーの内容を通知できる。ここで、スマートデバイス200は受信したスルー画を解析していない。本実施形態では、ダミー画像がエラーメッセージを記載した画像としたがこれに限る必要はない。たとえば、ダミー画像として、単に黒く塗りつぶされただけの画像でもよい。また、本実施形態においてデジタルカメラ100の制御部101はダミー画像を、スルー画と同じ解像度および同じアスペクト比にして生成する。これにより、スマートデバイス200の制御部201は、ダミー画像を受信しても画角調整等の処理を追加することなく、スムーズに表示を切り替えることができる。これにより、スマートデバイス200の制御部201は、スルー画生成不可区間690においても、デジタルカメラ100から受信したデータセットを解析することや画像の画角調整等の特別な処理を行う必要がない。
ステップS606Bにて、スマートデバイス200の制御部201は、ライブビューを終了するために通信部211を介してデジタルカメラ100にAPI503をDELETE404でリクエストする。
ステップS607Bにて、デジタルカメラ100の制御部101は通信部111を介して、このリクエストを受信したことを検知すると、スルー画のサイズ情報を0としてレスポンス用データセットを成形する。そして、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。このデータセットを受信したスマートデバイス200はライブビュー表示を終了する。これによってデジタルカメラ100およびスマートデバイス200間のチャンク送信処理が終了する。
以上、本実施形態におけるチャンク送信について説明した。
次に、本実施形態におけるデジタルカメラ100の動作の一例およびスマートデバイス200の動作の一例について説明する。
図6Cは本実施形態におけるデジタルカメラ100の動作の一例を示すフローチャートである。デジタルカメラ100の制御部101は通信部111を介して、スマートデバイス200からGET401でリクエストされたことを検知したことをトリガに本処理を開始する。
ステップS601Cにて、制御部101は受信したリクエストのAPIの種類について判定する。API502によってリクエストされたと判定した場合、スルー画を1フレーム送信するため制御部101はステップS606Cに遷移する。この場合は、図6AのステップS603Aに対応する。API503によってリクエストされたと判定した場合、チャンク送信によってスルー画を送信するため、制御部101はステップS602Cに遷移する。この場合は、図6BのステップS603Bに対応する。
ステップS602Cにて、制御部101はスルー画を作業用メモリ104から読みこみ、スルー画からレスポンス用データを作成し、作業用メモリ104に記録する。
ステップS603Cにて、制御部101は通信部111を介して、スマートデバイス200に作成したレスポンスデータを送信する。本ステップは、図6BのステップS604Bに対応する。
ステップS604Cにて、制御部101は通信部111を介して、スマートデバイス200からチャンク送信を終了する指示を受信したか否かを判定する。スマートデバイス200からチャンク送信を終了する指示を受信した場合、制御部101はステップS605Cに遷移する。スマートデバイス200からチャンク送信を終了する指示を受信していない場合、制御部101はステップS602Cに戻り、チャンク送信を継続する。
ステップS605Cにて、制御部101は通信部111を介してスマートデバイス200へチャンク送信を終了するためのレスポンス用データを送信する。
ステップS606Cにて、制御部101はスルー画を作業用メモリ104から読みこみ、スルー画からレスポンス用データを作成し、作業用メモリ104に記録する。
ステップS607Cにて、制御部101は通信部111を介して、スマートデバイス200に作成したレスポンスデータを送信する。本ステップは、エラーが発生していない場合、図6AのステップS604Aに対応する。
以上、本実施形態におけるデジタルカメラ100の動作の一例について説明した。
次にスマートデバイス200の動作の一例について説明する。図6Dは本実施形態におけるスマートデバイス200の動作の一例を示すフローチャートである。スマートデバイス200の制御部201は通信部211を介してデジタルカメラ100にGET401でリクエストした場合、本処理を開始する。
ステップS601Dにて、制御部201は送信したリクエストのAPIの種類について判定する。API502によってリクエストした場合、スルー画を1フレーム取得するため、制御部201はステップS607Dに遷移する。この場合は、図6AのステップS603Aに対応する。API503によってリクエストした場合、チャンク送信によってスルー画を取得するため、制御部201はステップS602Dに遷移する。この場合は、図6BのステップS603Bに対応する。
ステップS602Dにて、制御部201はレスポンス用データを受信したか否かを判定する。レスポンス用データを受信した場合、制御部201はステップS603Dに遷移する。レスポンス用データを受信していない場合、制御部201は本処理を繰り返す。本ステップは図6BのステップS604Dに対応する。
ステップS603Dにて、制御部201は受信したスルー画を表示部206に表示する。
ステップS604Dにて、制御部201はチャンク送信を終了するか否かを判定する。例えば制御部201はユーザから操作部205(タッチパネル等)を介してライブビューを終了する指示を受け付けた場合チャンク送信を終了すると判定する。チャンク送信を終了する場合、制御部201はステップS605Dに遷移する。チャンク送信を終了しない場合、制御部201はステップS603Dに戻りチャンク送信を継続する。
ステップS605Dにて、制御部201は通信部211を介してチャンク送信を終了するための指示をデジタルカメラ100へ送信する。
ステップS606Dにて、制御部201は通信部211を介してチャンク送信を終了するためのレスポンス用データを受信したか否かを判定する。チャンク送信を終了するためのレスポンス用データを受信した場合、制御部201は処理を終了する。チャンク送信を終了するためのレスポンス用データを受信していない場合、制御部201は本ステップの処理を繰り返す。
ステップS607Dにて、スルー画を取得するため制御部201はレスポンス用データを受信したか否かを判定する。レスポンス用データを受信した場合、制御部201はステップS603Dに遷移する。レスポンス用データを受信していない場合、制御部201は本処理を繰り返す。本ステップは図6BのステップS604Dに対応する。
ステップS608Dにて、制御部201は受信したスルー画を表示部206に表示し、処理を終了する。
以上、スマートデバイス200の動作の一例について説明した。なお、本実施形態におけるAPI502によるライブビュー表示の場合、スマートデバイス200はスルー画を1フレーム取得した後自動的に再度API502をGET401でリクエストし、スルー画を1フレーム取得する処理を繰り返す。
以下、本実施形態におけるチャンク送信について、対向機のアプリケーションの実装負荷の低減の効果について説明する。
<実施形態による対向機のアプリケーションの実装負荷の低減の効果>
ここでは従来の方法と本実施形態におけるチャンク送信とを比較することで、対向機のアプリケーションの実装負荷の低減の効果について説明する。まず従来のスルー画を1フレームずつ取得する方法および従来の本実施形態を利用しないチャンク送信についてその課題を説明し、その後本実施形態におけるチャンク送信についてその効果を説明する。
まず、本実施形態におけるスルー画を1フレームずつ取得する方法におけるデジタルカメラ100の動作の一例およびスマートデバイス200の動作の一例を説明する。図8Aは本実施形態におけるスルー画を1フレームずつ取得する場合におけるデジタルカメラ100の動作の一例を示すフローチャートである。デジタルカメラ100の制御部101は通信部111を介して、スマートデバイス200からAPI502をGET401でリクエストされたことを検知したことをトリガに本処理を開始する。このトリガは図6AのステップS603AおよびステップS605Aに対応する。
ステップS801にて、制御部101はスルー画を生成できるか否かを判定する。スルー画を生成できない場合、制御部101はステップS802に遷移する。スルー画が生成できる場合、制御部101はステップS803に遷移する。
ステップS802にて、制御部101はスルー画を生成できない原因であるエラーの内容を検知する。
ステップS803にて、制御部101は、エラーが発生したことを通知するためのデータをHTTPレスポンスヘッダに記述してレスポンス用データを作成し、作業用メモリ104に記録する。ここで制御部101は、さらにエラーの具体的な内容をHTTPレスポンスボディに記述してレスポンス用データを作成してもよい。
ステップS804にて、制御部101はスルー画を作業用メモリ104から読みこみ、スルー画からレスポンス用データを作成し、作業用メモリ104に記録する。
ステップS805にて、制御部101は通信部111を介して、スマートデバイス200に作成したレスポンスデータを送信する。本ステップは、エラーが発生していない場合、図6AのステップS603Aに対応する。本ステップは、エラーが発生している場合、図6AのステップS606Aに対応する。
以上、本実施形態におけるスルー画を1フレームずつ取得する場合におけるデジタルカメラ100の動作の一例について説明した。
図8Bは本実施形態におけるスルー画を1フレームずつ取得する場合におけるスマートデバイス200のフローチャートの一例である。スマートデバイス200の制御部201は通信部211を介してデジタルカメラ100にAPI502をGET401でリクエストし、そのレスポンスとしてデジタルカメラ100からスルー画を受信した場合、本処理を開始する。このトリガは図6AのステップS604AおよびステップS606Aに対応する。
ステップS851にて、制御部201は受信したレスポンス用データを解析し、エラーが発生したことを通知するためのデータが含まれているか否かを判定する。例えば制御部201はレスポンス用データのHTTPレスポンスヘッダにエラーが発生したことを通知するためのデータが含まれているか否かを判定する。レスポンス用データにエラーが発生したことを通知するためのデータが含まれていると判定した場合、制御部201はステップS852に遷移する。レスポンス用データにエラーが発生したことを通知するためのデータが含まれていないと判定した場合、制御部201はステップS853に遷移する。
ステップS852にて、制御部201はステップS851において解析したエラーの内容を表示部206に表示する。例えば図7B(c)に示すように、制御部201は画面703Bに、スルー画生成不可区間690より前に受信したスルー画を表示する。このスルー画はスマートデバイス200の作業用メモリ204に保持されている。制御部201は画面703Bの下にエラーメッセージ704Bを表示する。他にも、例えば制御部201はエラーメッセージ704Bを画面702Bに重畳して表示することで、エラー発生をユーザに報知してもよい。このスルー画はスマートデバイス200の作業用メモリ204に保持されている。なお受信したレスポンス用データのHTTPレスポンスボディにエラーの詳細な内容が含まれていた場合、制御部201はその内容を表示部206に表示してもよい。
ステップS853にて、解析の結果、受信したレスポンス用データにエラーが発生したことを通知するためのデータは含まれていないため、制御部201は受信したレスポンス用データに含まれるスルー画を表示する。
以上、本実施形態におけるスルー画を1フレームずつ取得する場合におけるスマートデバイス200の動作の一例について説明した。このような場合、アプリケーションの実装において、デジタルカメラ100が送信したデータを毎回解析するアルゴリズムをスマートデバイス200は必要とする。
次に本実施形態を利用しない従来のチャンク送信におけるデジタルカメラ100の動作の一例およびスマートデバイス200の動作の一例を説明する。図9Aは本実施形態を利用しない従来のチャンク送信におけるデジタルカメラ100の動作の一例を示すフローチャートである。デジタルカメラ100の制御部101は通信部111を介して、スマートデバイス200からAPI503をGET401でリクエストされたことを検知したことをトリガに本処理を開始する。このトリガは図6BのステップS603Bに対応する。
ステップS901にて、制御部101はスルー画を生成できるか否かを判定する。スルー画を生成できない場合、制御部101はステップS902に遷移する。スルー画が生成できる場合、制御部101はステップS903に遷移する。
ステップS902にて、制御部101はスルー画を生成できない原因であるエラーの内容を検知する。
ステップS903にて、制御部101は、エラーが発生したことを通知するためのデータをHTTPレスポンスボディに記述してレスポンス用データを作成し、作業用メモリ104に記録する。
ステップS904にて、制御部101はスルー画を作業用メモリ104から読みこみ、スルー画からレスポンス用データを作成し、作業用メモリ104に記録する。
ステップS905にて、制御部101は通信部111を介して、スマートデバイス200へ作成したレスポンス用データを送信する。
ステップS906にて、制御部101は通信部111を介して、スマートデバイス200からチャンク送信を終了する指示を受信したか否かを判定する。スマートデバイス200からチャンク送信を終了する指示を受信した場合、制御部101はステップS907に遷移する。スマートデバイス200からチャンク送信を終了する指示を受信していない場合、制御部101はステップS901に戻り、本処理を繰り返す。
ステップS907にて、制御部101は通信部111を介してスマートデバイス200へチャンク送信を終了するためのレスポンス用データを送信する。
以上、本実施形態を利用しない場合のデジタルカメラ100の動作の一例について説明した。
図9Bは本実施形態を利用しない従来のチャンク送信におけるスマートデバイス200のフローチャートの一例である。スマートデバイス200の制御部201は通信部211を介してデジタルカメラ100にAPI503をGET401でリクエストした場合、本処理を開始する。このトリガは図6BのステップS603Bに対応する。
ステップS950にて、制御部201はレスポンス用データを受信したか否かを判定する。レスポンス用データを受信した場合、制御部201はステップS951に遷移する。レスポンス用データを受信していない場合、制御部201はステップS950を繰り返す。ただし、所定の時間以上レスポンス用データを受信していない場合、制御部201はデジタルカメラ100に何らかのエラーが発生したとして、表示部206にエラーを表示して処理を終了する。
ステップS951にて、制御部201は受信したレスポンス用データを解析し、エラーが発生したことを通知するためのデータが含まれているか否かを判定する。レスポンス用データにエラーが発生したことを通知するためのデータが含まれていると判定した場合、制御部201はステップS952に遷移する。レスポンス用データにエラーが発生したことを通知するためのデータが含まれていないと判定した場合、制御部201はステップS953に遷移する。
ステップS952にて、制御部201はステップS951において解析したエラーの内容を表示部206に表示する。例えば図7B(c)に示すように、制御部201は画面703Bに、スルー画生成不可区間690より前に受信したスルー画を表示する。このスルー画はスマートデバイス200の作業用メモリ204に保持されている。制御部201は画面703Bの下にエラーメッセージ704Bを表示する。他にも、例えば制御部201はエラーメッセージ704Bを画面702Bに重畳して表示することで、エラー発生をユーザに報知してもよい。このスルー画はスマートデバイス200の作業用メモリ204に保持されている。
ステップS953にて、解析の結果、受信したレスポンス用データにエラーが発生したことを通知するためのデータは含まれていないため、制御部201は受信したレスポンス用データに含まれるスルー画を表示する。
ステップS954にて、制御部201はチャンク送信を終了するか否かを判定する。例えば制御部201はユーザから操作部205(タッチパネル等)を介してライブビューを終了する指示を受け付けた場合チャンク送信を終了すると判定する。チャンク送信を終了する場合、制御部201はステップS955に遷移する。チャンク送信を終了しない場合、制御部201はステップS901に戻りチャンク送信を継続する。
ステップS955にて、制御部201は通信部211を介してチャンク送信を終了するための指示をデジタルカメラ100へ送信する。
ステップS956にて、制御部201は通信部211を介してチャンク送信を終了するためのレスポンス用データを受信したか否かを判定する。チャンク送信を終了するためのレスポンス用データを受信した場合、制御部201は処理を終了する。チャンク送信を終了するためのレスポンス用データを受信していない場合、制御部201は本ステップの処理を繰り返す。
以上、本実施形態を利用しないチャンク送信におけるスマートデバイス200の動作の一例について説明した。このような従来のチャンク送信では、アプリケーションの実装において、デジタルカメラ100が送信したレスポンス用データを解析するアルゴリズムをスマートデバイス200は必要とする。
最後に、従来のチャンク送信例に対して本実施形態を利用したチャンク送信におけるデジタルカメラ100およびスマートデバイス200の動作の一例について説明する。図10Aは本実施形態におけるデジタルカメラ100の動作の一例を示すフローチャートである。デジタルカメラ100の制御部101は通信部111を介して、スマートデバイス200からAPI503をGET401でリクエストされたことを検知したことをトリガに、本処理を開始する。このトリガは図6BのステップS603Bに対応する。
ステップS1001にて、制御部101はスルー画を生成できるか否かを判定する。スルー画を生成できない場合、制御部101はステップS1002に遷移する。スルー画を生成できる場合、制御部101はステップS1003に遷移する。本ステップは図9AのステップS901と同様である。
ステップS1002にて、制御部101はスルー画を生成できない原因であるエラーの内容を検知する。本ステップは図9AのステップS902と同様である。
ステップS1003にて、制御部101は送信するデータとして、ダミー画像を生成して、作業用メモリ104に保存する。ここで制御部101はステップS1002にて検知したエラーの内容を示すメッセージをダミー画像に含める。このメッセージはユーザが視覚可能なメッセージになるようにダミー画像に含まれる。なお、このダミー画像の生成するための処理はスルー画を読み込む処理よりも負荷の大きい処理ではない。また、ダミー画像の生成するための処理はあらかじめ用意されているエラーを通知するための画像を読み込む処理でもよい。この場合、エラーを通知するための画像は不揮発性メモリ103に記録されている。
ステップS1004にて、スルー画を生成できるため、制御部101はスルー画を読みだして、レスポンスデータを生成し、作業用メモリ104に保存する。
ステップS1005にて、制御部101は通信部111を介して、スマートデバイス200に作業用メモリ104に保持しているレスポンスデータを送信して処理を終了する。
ステップS1006にて、制御部101は通信部111を介して、スマートデバイス200からチャンク送信を終了する指示を受信したか否かを判定する。スマートデバイス200からチャンク送信を終了する指示を受信した場合、制御部101はステップS1007に遷移する。スマートデバイス200からチャンク送信を終了する指示を受信していない場合、制御部101はステップS1001に戻り、本処理を繰り返す。
ステップS1007にて、制御部101は通信部111を介してスマートデバイス200へチャンク送信を終了するためのレスポンス用データを送信する。
以上、本実施形態を利用した場合のデジタルカメラ100の動作の一例について説明した。
本実施形態におけるスマートデバイス200の処理の流れについて図10Bを用いて説明する。スマートデバイス200の制御部201が通信部211を介してデジタルカメラ100に、API503をGET401でリクエストし、そのレスポンスとしてスルー画を受信した場合、本フローチャートは開始される。このトリガは図6BのステップS604Bに対応する。
ステップS1050にて、制御部201はレスポンス用データを受信したか否かを判定する。レスポンス用データを受信した場合、制御部201はステップS1051に遷移する。レスポンス用データを受信していない場合、制御部201はステップS1050を繰り返す。ただし、所定の時間以上レスポンス用データを受信していない場合、制御部201はデジタルカメラ100に何らかのエラーが発生したとして、表示部206にエラーを表示して処理を終了する。
ステップS1051にて、制御部201は受信したスルー画を表示部206に表示する。本ステップは図6BのステップS604Bに対応する。
ステップS1052にて、制御部201はチャンク送信を終了するか否かを判定する。例えば制御部201はユーザからライブビューを終了する指示を受け付けた場合チャンク送信を終了すると判定する。チャンク送信を終了する場合、制御部201はステップS1053に遷移する。チャンク送信を終了しない場合、制御部201はステップS1051に戻りチャンク送信を継続する。
ステップS1053にて、制御部201は通信部211を介してチャンク送信を終了するための指示をデジタルカメラ100へ送信する。
ステップS1054にて、制御部201は通信部211を介してチャンク送信を終了するためのレスポンス用データを受信したか否かを判定する。チャンク送信を終了するためのレスポンス用データを受信した場合、制御部201は処理を終了する。チャンク送信を終了するためのレスポンス用データを受信していない場合、制御部201は本ステップの処理を繰り返す。
以上、本実施形態を利用した場合のスマートデバイス200の動作の一例について説明した。
このように、従来のスルー画を1フレームずつ取得する方法および従来の本実施形態を利用しないチャンク送信では、対向機であるスマートデバイス200は受信したレスポンス用データにエラーが含まれているか否かを解析する処理を必要とした。一方、本実施形態のチャンク送信によってスルー画を取得するAPIにおいて、デジタルカメラ100はスルー画を生成できない場合、代わりにダミー画像を送信する。スマートデバイス200は受信したダミー画像をエラーが含まれているか否かを解析せず表示する。そのため本実施形態におけるチャンク送信では、アプリケーションの実装において、デジタルカメラ100が送信したデータを解析するアルゴリズムをスマートデバイス200は必要としない。これにより通信APIを用いたアプリケーションの実装負荷を低減することができる。特にこの方法は、スマートデバイス200側のアプリケーションの実装負荷を軽減することができる。さらにデジタルカメラ100はダミー画像をエラーの内容を視覚的に表示する画像とすることで、スマートデバイス200の処理を減らすことができる。
[その他の実施形態]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。