(57)【要約】【課題】  通信装置を制御するための対向アプリケーションを開発する際の実装負荷をより低減する。【解決手段】  通信装置は、外部装置とＨＴＴＰに従って通信する通信手段と、ＡＰＩに対応するプログラムを記録する記録媒体と、前記通信手段を介して前記ＡＰＩに対してリクエストを受け付けた場合、前記ＡＰＩに対応するプログラムを実行すると共に、前記リクエストに対し、ＪＳＯＮ構文に従って記述されるデータセットを含むレスポンスを返すよう前記通信手段を制御する制御手段とを有し、前記制御手段は、所定のＡＰＩに対する、第一のＨＴＴＰメソッドを用いたリクエストを受信した場合と、前記所定のＡＰＩに対する、第二のＨＴＴＰメソッドを用いたリクエストを受信した場合とで、レスポンスに記述するデータセットのＪＳＯＮ構文を同じ形式で記述するよう制御することを特徴とする。【選択図】  図１
2020091788.tif 000002
【特許請求の範囲】
【請求項１】
外部装置とＨＴＴＰに従って通信する通信手段と、
ＡＰＩに対応するプログラムを記録する記録媒体と、
前記通信手段を介して前記ＡＰＩに対してリクエストを受け付けた場合、前記ＡＰＩに対応するプログラムを実行すると共に、前記リクエストに対し、ＪＳＯＮ構文に従って記述されるデータセットを含むレスポンスを返すよう前記通信手段を制御する制御手段とを有し、
前記制御手段は、所定のＡＰＩに対する、第一のＨＴＴＰメソッドを用いたリクエストを受信した場合と、前記所定のＡＰＩに対する、第二のＨＴＴＰメソッドを用いたリクエストを受信した場合とで、レスポンスに記述するデータセットのＪＳＯＮ構文を同じ形式で記述するよう制御することを特徴とする通信装置。
【請求項２】
前記ＡＰＩは、複数のカテゴリに分類されるＡＰＩを有し、
前記制御手段は、所定のカテゴリ内に含まれる第一のＡＰＩに対する第三のＨＴＴＰメソッドを用いたリクエストに対するレスポンスに記述するデータセットのＪＳＯＮ構文と、前記所定のカテゴリ内に含まれる第二のＡＰＩに対する前記第三のＨＴＴＰメソッドを用いたリクエストに対するレスポンスに記述するデータセットのＪＳＯＮ構文とを同じ形式で記述するよう制御することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記ＡＰＩはＷｅｂＡＰＩであることを特徴とする請求項１に記載の通信装置。
【請求項４】
前記ＡＰＩはＵＲＬとして公開され、前記通信装置は、前記ＡＰＩに対応するＵＲＬに対してＨＴＴＰメソッドを用いてアクセスされることによって、前記ＡＰＩに対するリクエストを受け付けることを特徴とする請求項１に記載の通信装置。
【請求項５】
前記ＵＲＬは、所定の機能に応じて設定されることを特徴とする請求項４に記載の通信装置。
【請求項６】
通信装置はＨＴＴＰサーバとして機能することを特徴とする請求項１に記載の通信装置。
【請求項７】
前記通信手段は、Ｗｉ−Ｆｉを用いることを特徴とする請求項１に記載の通信装置。
【請求項８】
外部装置とＨＴＴＰに従って通信する通信手段と、ＡＰＩに対応するプログラムを記録する記録媒体とを有する通信装置の制御方法であって、
前記通信手段を介して前記ＡＰＩに対してリクエストを受け付けた場合、前記ＡＰＩに対応するプログラムを実行するステップと、
前記リクエストに対し、ＪＳＯＮ構文に従って記述されるデータセットを含むレスポンスを返すよう前記通信手段を制御する制御ステップとを有し、
前記制御ステップでは、所定のＡＰＩに対する、第一のＨＴＴＰメソッドを用いたリクエストを受信した場合と、前記所定のＡＰＩに対する、第二のＨＴＴＰメソッドを用いたリクエストを受信した場合とで、レスポンスに記述するデータセットのＪＳＯＮ構文を同じ形式で記述するよう制御することを特徴とする通信装置の制御方法。
【請求項９】
前記ＡＰＩは、複数のカテゴリに分類されるＡＰＩを有し、
前記制御ステップでは、所定のカテゴリ内に含まれる第一のＡＰＩに対する第三のＨＴＴＰメソッドを用いたリクエストに対するレスポンスに記述するデータセットのＪＳＯＮ構文と、前記所定のカテゴリ内に含まれる第二のＡＰＩに対する前記第三のＨＴＴＰメソッドを用いたリクエストに対するレスポンスに記述するデータセットのＪＳＯＮ構文とを同じ形式で記述するよう制御することを特徴とする請求項８に記載の通信装置の制御方法。
【請求項１０】
前記ＡＰＩはＵＲＬとして公開され、前記ＡＰＩに対応するＵＲＬに対してＨＴＴＰメソッドを用いてアクセスされることによって、前記ＡＰＩに対するリクエストを受け付けることを特徴とする請求項８に記載の通信装置の制御方法。
【請求項１１】
コンピュータを請求項１乃至７のいずれか１項に記載の通信装置の各手段として機能させるための、コンピュータが読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は外部装置と通信できる通信装置に関する。
【背景技術】
【０００２】
近年、デジタルカメラや携帯電話等の通信装置の通信機能の進歩に伴い、通信装置同士でコンテンツを送受信することが行われている。
【０００３】
特許文献１では、ＨＴＴＰのようなサーバ・クライアントのシステムを用いて、カメラがサーバ側となってリモート撮影を実現することが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−０７３５０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＨＴＴＰのサーバ・クライアントのシステムを用いたリモートコントロール機能をユーザに提供する場合、リモートコントロールされるカメラがサーバとなり、リモートコントロールする側がクライアントとなる。そして、クライアントとなる装置にカメラをコントロールするプログラムを実装することで、リモートコントロールを実現する。この場合、カメラを制御するためのＵＲＬと実行可能なＨＴＴＰメソッドの組み合わせをＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）として公開することで、クライアントのプログラム実装負荷を低減することが考えられる。対向機であるクライアントには、公開されたＡＰＩの仕様に基づいて、リモートコントロールを実現するプログラムを実装する。しかしながら、公開されたＵＲＬとＨＴＴＰメソッド、及びリクエストボディやレスポンスボディの扱い方といったＡＰＩの仕様は独自の仕様を展開していることが多く、ＡＰＩ仕様書を確認しなければわからないことが多い。特に、公開されたＵＲＬ毎やメソッド毎にリクエストボディやレスポンスボディの構造が異なる場合、それぞれの構造を理解する負荷が大きく、ＡＰＩの公開によって負荷が低減されたとしても、依然として実装負荷が残ることが想定される。
【０００６】
そこで、本発明は、通信装置を制御するための対向アプリケーションを開発する際の実装負荷をより低減することを目的とする。
【課題を解決するための手段】
【０００７】
上記の目的のため、本発明の通信装置は、外部装置とＨＴＴＰに従って通信する通信手段と、ＡＰＩに対応するプログラムを記録する記録媒体と、前記通信手段を介して前記ＡＰＩに対してリクエストを受け付けた場合、前記ＡＰＩに対応するプログラムを実行すると共に、前記リクエストに対し、ＪＳＯＮ構文に従って記述されるデータセットを含むレスポンスを返すよう前記通信手段を制御する制御手段とを有し、前記制御手段は、所定のＡＰＩに対する、第一のＨＴＴＰメソッドを用いたリクエストを受信した場合と、前記所定のＡＰＩに対する、第二のＨＴＴＰメソッドを用いたリクエストを受信した場合とで、レスポンスに記述するデータセットのＪＳＯＮ構文を同じ形式で記述するよう制御することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、通信装置を制御するための対向アプリケーションを開発する際の実装負荷をより低減することができる。
【図面の簡単な説明】
【０００９】
【図１】実施形態におけるデジタルカメラのブロック構成、正面、背面を示す図である。
【図２】実施形態におけるスマートデバイスの構成を示すブロック図である。
【図３】実施形態におけるシステム構成を示すブロック図である。
【図４】実施形態における通信ＡＰＩの基本構成を示す図である。
【図５】実施形態におけるデジタルカメラの固定情報や状態情報を取得するＡＰＩを説明する図である。
【図６】実施形態におけるデジタルカメラの固定情報や状態情報を取得するＡＰＩを実行した場合のシーケンス図である。
【図７】実施形態におけるデジタルカメラのメニュー設定を取得、変更するＡＰＩを説明するための図である。
【図８】実施形態におけるデジタルカメラのメニュー設定を取得、変更するＡＰＩを実行した場合のシーケンス図である。
【図９】実施形態におけるデジタルカメラの撮影機能を実行するＡＰＩを説明するための図である。
【図１０】実施形態におけるデジタルカメラの撮影機能を実行するＡＰＩを実行した場合のシーケンス図である。
【図１１】実施形態におけるデジタルカメラの撮影パラメータを取得、変更するＡＰＩを説明するための図である。
【図１２】実施形態におけるデジタルカメラの撮影パラメータを取得、変更するＡＰＩを実行した場合のシーケンス図である。
【図１３】実施形態におけるデジタルカメラのスルー画を取得するＡＰＩを説明するための図である。
【図１４】実施形態におけるデジタルカメラのスルー画を取得するＡＰＩを実行した場合のシーケンス図である。
【図１５】実施形態におけるデジタルカメラのイベント情報を取得するＡＰＩを説明するための図である。
【図１６】実施形態におけるデジタルカメラのイベント情報を取得するＡＰＩを実行した場合のシーケンス図である。
【図１７】実施形態におけるデジタルカメラのコンテンツファイルを取得するＡＰＩを説明するための図である。
【図１８】実施形態におけるデジタルカメラのコンテンツファイルを取得するＡＰＩを実行した場合のシーケンス図である。
【図１９】実施形態におけるスマートデバイスで動作するデジタルカメラ１００を従来の通信ＡＰＩで制御するプログラムのフローチャートである。
【図２０】実施形態におけるスマートデバイスで動作するデジタルカメラ１００を実施形態の通信ＡＰＩで制御するプログラムのフローチャートである。
【図２１】実施形態におけるデジタルカメラの動作を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、添付図面に従って本発明の実施形態を詳細に説明する。なお、以下に説明する実施形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正又は変更されてもよい。また、各実施の形態を適宜組み合せることも可能である。
【００１１】
［第１の実施形態］
＜デジタルカメラ１００の構成＞
図１（ａ）は、本実施形態が適用する通信装置の一例であるデジタルカメラ１００の構成例を示すブロック図である。なお、ここでは通信装置の一例としてデジタルカメラについて述べるが、通信装置はこれに限られない。例えば通信装置は携帯型のメディアプレーヤや、いわゆるタブレットデバイス、パーソナルコンピュータなどの情報処理装置であってもよい。
【００１２】
制御部１０１は、入力された信号や、後述のプログラムに従ってデジタルカメラ１００の各部を制御する。なお、制御部１０１が装置全体を制御する代わりに、複数のハードウェアが処理を分担することで、装置全体を制御してもよい。
【００１３】
撮像部１０２は、例えば、光学レンズユニットと絞り・ズーム・フォーカスなど制御する光学系と、光学レンズユニットを経て導入された光（映像）を電気的な映像信号に変換するための撮像素子などで構成される。撮像素子としては、一般的には、ＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）や、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）が利用される。撮像部１０２は、制御部１０１に制御されることにより、撮像部１０２に含まれるレンズで結像された被写体光を撮像素子により電気信号に変換し、ノイズ低減処理などを行い、デジタルデータを画像データとして出力する。本実施形態のデジタルカメラ１００では、画像データは制御部１０１による符号化が行われ、ＤＣＦ（Ｄｅｓｉｇｎ  Ｒｕｌｅ  ｆｏｒ  Ｃａｍｅｒａ  Ｆｉｌｅ  ｓｙｓｔｅｍ）の規格に従って、記録媒体１１０にファイルとして記録される。
【００１４】
不揮発性メモリ１０３は、電気的に消去・記録可能な不揮発性のメモリであり、制御部１０１で実行される後述のプログラム等が格納される。作業用メモリ１０４は、撮像部１０２で撮像された画像データを一時的に保持するバッファメモリや、表示部１０６の画像表示用メモリ、制御部１０１の作業領域等として使用される。
【００１５】
操作部１０５は、ユーザがデジタルカメラ１００に対する指示をユーザから受け付けるために用いられる。操作部１０５は例えば、ユーザがデジタルカメラ１００の電源のＯＮ／ＯＦＦを指示するための電源ボタンや、撮影を指示するためのレリーズスイッチ、画像データの再生を指示するための再生ボタンを含む。さらに、後述の通信部１１１を介して外部機器との通信を開始するための専用の接続ボタンなどの操作部材を含む。また、後述する表示部１０６に形成されるタッチパネルも操作部１０５に含まれる。なお、レリーズスイッチは、押下状態を２段階で検出するためにＳＷ１およびＳＷ２を有する。レリーズスイッチが、いわゆる半押し状態となることにより、ＳＷ１がＯＮとなる。これにより、ＡＦ（オートフォーカス）処理、ＡＥ（自動露出）処理、ＡＷＢ（オートホワイトバランス）処理、ＥＦ（フラッシュプリ発光）処理等の撮影準備を行うための指示を受け付ける。また、レリーズスイッチが、いわゆる全押し状態となることにより、ＳＷ２がＯＮとなる。これにより、撮影を行うための指示を受け付ける。
【００１６】
表示部１０６は、撮影の際のビューファインダー画像の表示、撮影した画像データの表示、対話的な操作のための文字表示などを行う。なお、表示部１０６は必ずしもデジタルカメラ１００が内蔵する必要はない。デジタルカメラ１００は内部又は外部の表示部１０６と接続することができ、表示部１０６の表示を制御する表示制御機能を少なくとも有していればよい。なお、操作部１０５及び表示部１０６で、デジタルカメラのユーザインターフェースを構成することになる。
【００１７】
記録媒体１１０は、撮像部１０２から出力された画像データのファイルを記録することができる。記録媒体１１０は、デジタルカメラ１００に着脱可能なよう構成してもよいし、デジタルカメラ１００に内蔵されていてもよい。すなわち、デジタルカメラ１００は少なくとも記録媒体１１０にアクセスする手段を有していればよい。
【００１８】
通信部１１１は、外部装置と接続するためのインターフェイスである。本実施形態のデジタルカメラ１００は、通信部１１１を介して、外部装置とデータのやりとりを行うことができる。例えば、撮像部１０２で生成した画像データを、通信部１１１を介して外部装置に送信することができる。なお、本実施形態では、通信部１１１は外部装置とＩＥＥＥ８０２．１１の規格に従った、いわゆる無線ＬＡＮで通信するためのインターフェイスを含む。制御部１０１は、通信部１１１を制御することで外部装置との無線通信を実現する。なお、通信方式は無線ＬＡＮに限定されるものではなく、例えば赤外線通信方式、Ｂｌｕｅｗｔｏｏｔｈ（登録商標）通信方式、ＷｉｒｅｌｅｓｓＵＳＢ等の無線通信方式などを含むことができる。さらには、ＵＳＢケーブルやＨＤＭＩ（登録商標）、ＩＥＥＥ１３９４、Ｅｔｈｅｒｎｅｔなど、有線接続を採用してもよい。
【００１９】
近距離通信部１１２は、例えば無線通信のためのアンテナと無線信号を処理するため変復調回路や通信コントローラから構成される。近距離通信部１１２は、変調した無線信号をアンテナから出力し、またアンテナで受信した無線信号を復調することでＩＳＯ／ＩＥＣ  １８０９２の規格（いわゆるＮＦＣ：Ｎｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）に従った近距離通信を実現する。またその他、赤外線通信方式、Ｂｌｕｅｗｔｏｏｔｈ（登録商標）通信方式、ＷｉｒｅｌｅｓｓＵＳＢ等の無線通信方式などに従った短距離無線通信を実現する。本実施形態の近距離通信部１１２は、デジタルカメラ１００の側部に配さる。
【００２０】
本実施形態において、後述するスマートデバイス２００とは、通信部より通信を開始して接続される。また、本実施形態におけるデジタルカメラ１００の通信部１１１は、インフラストラクチャモードにおけるアクセスポイントとして動作するＡＰモードと、インフラストラクチャモードにおけるクライアントとして動作するＣＬモードとを有している。そして、通信部１１１をＣＬモードで動作させることにより、本実施形態におけるデジタルカメラ１００は、インフラストラクチャモードにおけるＣＬ機器として動作することが可能である。デジタルカメラ１００がＣＬ機器として動作する場合、周辺のＡＰ機器に接続することで、ＡＰ機器が形成するネットワークに参加することが可能である。また、通信部１１１をＡＰモードで動作させることにより、本実施形態におけるデジタルカメラ１００は、ＡＰの一種ではあるが、より機能が限定された簡易的なＡＰ（以下、簡易ＡＰ）として動作することも可能である。デジタルカメラ１００が簡易ＡＰとして動作すると、デジタルカメラ１００は自身でネットワークを形成する。デジタルカメラ１００の周辺の装置は、デジタルカメラ１００をＡＰ機器と認識し、デジタルカメラ１００が形成したネットワークに参加することが可能となる。上記のようにデジタルカメラ１００を動作させるためのプログラムは不揮発性メモリ１０３に保持されているものであり、ＡＰモード、ＣＬモードを、ユーザが操作部１０５を操作して選択することになる。
【００２１】
なお、本実施形態におけるデジタルカメラ１００はＡＰの一種であるものの、ＣＬ機器から受信したデータをインターネットプロバイダなどに転送するゲートウェイ機能は有していない簡易ＡＰである。したがって、自機が形成したネットワークに参加している他の装置からデータを受信しても、それをインターネットなどのネットワークに転送することはできない。
【００２２】
次に、デジタルカメラ１００の外観について説明する。図１（ｂ）、図１（ｃ）はデジタルカメラ１００の外観正面、背面の一例を示す図である。レリーズスイッチ１０５ａや再生ボタン１０５ｂ、方向キー１０５ｃ、タッチパネル１０５ｄは、前述の操作部１０５に含まれる操作部材である。また、表示部１０６には、撮像部１０２による撮像の結果得られた画像が表示される。以上、実施形態におけるデジタルカメラ１００の構成を説明した。
【００２３】
＜スマートデバイス２００の内部構成＞
図２は、本実施形態のデジタルカメラ１００と通信する情報処理装置の一例であるスマートデバイス２００の構成例を示すブロック図である。なお、スマートデバイスとはスマートフォンやタブレットデバイス等の携帯端末を意味する。また、ここでは情報処理装置の一例としてスマートデバイスについて述べるが、情報処理装置はこれに限られない。例えば情報処理装置は、無線機能付きのデジタルカメラやプリンタ、テレビ、あるいはパーソナルコンピュータなどであってもよい。
【００２４】
制御部２０１は、入力された信号や、後述のプログラムに従ってスマートデバイス２００の各部を制御する。なお、制御部２０１が装置全体を制御する代わりに、複数のハードウェアが処理を分担することで、装置全体を制御してもよい。
【００２５】
撮像部２０２は、撮像部２０２に含まれるレンズで結像された被写体光を電気信号に変換し、ノイズ低減処理などを行い、デジタルデータを画像データとして出力する。撮像した画像データはバッファメモリに蓄えられた後、制御部２０１にて所定の演算や符号化処理が施され、記録媒体２１０にファイルとして記録される。
【００２６】
不揮発性メモリ２０３は、電気的に消去・記録可能な不揮発性のメモリである。不揮発性メモリ２０３には、制御部２０１が実行する基本的なソフトウェアであるＯＳ（オペレーティングシステム）や、このＯＳと協働して応用的な機能を実現するアプリケーションが記録されている。また、本実施形態では、不揮発性メモリ２０３には、デジタルカメラ１００と通信するためのアプリケーション（以下アプリ）が格納されている。
【００２７】
作業用メモリ２０４は、表示部２０６の画像表示用メモリや、制御部２０１の作業領域等として使用される。操作部２０５は、スマートデバイス２００に対する指示をユーザから受け付けるために用いられる。操作部２０５は例えば、ユーザがスマートデバイス２００の電源のＯＮ／ＯＦＦを指示するための電源ボタンや、表示部２０６に形成されるタッチパネルなどの操作部材を含む。表示部２０６は、画像データの表示、対話的な操作のための文字表示などを行う。なお、表示部２０６は必ずしもスマートデバイス２００が備える必要はない。スマートデバイス２００は表示部２０６と接続することができ、表示部２０６の表示を制御する表示制御機能を少なくとも有していればよい。なお、操作部２０５及び表示部２０６で、スマートデバイス２００のユーザインターフェースを構成することになる。
【００２８】
記録媒体２１０は、撮像部２０２から出力された画像データを記録することができる。記録媒体２１０は、スマートデバイス２００に着脱可能なよう構成してもよいし、スマートデバイス２００に内蔵されていてもよい。すなわち、スマートデバイス２００は少なくとも記録媒体２１０にアクセスする手段を有していればよい。
【００２９】
通信部２１１は、外部装置と接続するためのインターフェイスである。本実施形態のスマートデバイス２００は、通信部２１１を介して、デジタルカメラ１００とデータのやりとりを行うことができる。本実施形態では、通信部２１１はアンテナであり、制御部１０１は、アンテナを介して、デジタルカメラ１００と接続することができる。なお、デジタルカメラ１００との接続では、直接接続してもよいしアクセスポイントを介して接続してもよい。データを通信するためのプロトコルとしては、例えばＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）である。その他、無線ＬＡＮを通じたＰＴＰ／ＩＰ（Ｐｉｃｔｕｒｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ  ｏｖｅｒ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）を用いることもできる。なお、デジタルカメラ１００との通信はこれに限られるものではない。例えば、通信部２１１は、赤外線通信モジュール、Ｂｌｕｅｗｔｏｏｔｈ（登録商標）通信モジュール、ＷｉｒｅｌｅｓｓＵＳＢ等の無線通信モジュールを含むことができる。さらには、ＵＳＢケーブルやＨＤＭＩ、ＩＥＥＥ１３９４、Ｅｔｈｅｒｎｅｔなど、有線接続を採用してもよい。
【００３０】
近距離無線通信部２１２は、他機との非接触近距離通信を実現するための通信ユニットである。近距離無線通信部２１２は、無線通信のためのアンテナと無線信号を処理するための変復調回路や通信コントローラから構成される。近距離無線通信部２１２は、変調した無線信号をアンテナから出力し、またアンテナで受信した無線信号を復調することにより非接触近距離通信を実現する。ここでは、ＩＳＯ／ＩＥＣ  １８０９２の規格（いわゆるＮＦＣ）に従った非接触通信を実現する。近距無離線通信部２１２は、他のデバイスからデータ読み出し要求を受けると、不揮発性メモリ２０３に格納されているデータに基づき、応答データを出力する。
【００３１】
公衆網通信部２１３は、公衆無線通信を行う際に用いられるインターフェイスである。スマートデバイス２００は、公衆網通信部２１３を介して、他の機器と通話することができる。この際、制御部２０１はマイク２１４およびスピーカ２１５を介して音声信号の入力と出力を行うことで、通話を実現する。本実施形態では、公衆網通信部２１３はアンテナであり、制御部１０１は、アンテナを介して、公衆網に接続することができる。なお、通信部２１１および公衆網通信部２１３は、一つのアンテナで兼用することも可能である。以上、実施形態におけるスマートデバイス２００を説明した。
【００３２】
＜システム構成＞
図３は、スマートデバイス２００がネットワークを通じてデジタルカメラ１００の通信ＡＰＩを利用し、デジタルカメラ１００を制御するためのシステム構成を示す図である。
【００３３】
通信ＡＰＩを利用しデジタルカメラ１００を制御するためのシステム構成は３種類ある。
【００３４】
最初に、通信３０１に示すように、デジタルカメラ１００とスマートデバイス２００Ａがピア・ツー・ピアで接続する構成である。この時デジタルカメラ１００はＷｉ−ＦｉアクセスポイントとなってＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を構築する。スマートデバイス２００ＡはＷｉ−Ｆｉクライアントとなりデジタルカメラ１００が構築したＬＡＮにジョインする。なお、本実施例においては通信３０１がＷｉ−Ｆｉで接続されている例をあげたが、Ｅｔｈｅｒｎｅｔなどのような有線接続であってもよい。
【００３５】
次に、ネットワークルータ３０２、通信３０３、３０４に示すように、デジタルカメラ１００とスマートデバイス２００が、ネットワークルータ３０２を経由して接続する構成である。この時ネットワークルータがＷｉ−ＦｉアクセスポイントとなってＬＡＮを構築する。デジタルカメラ１００とスマートデバイス２００ＡはＷｉ−Ｆｉクライアントとなり、ネットワークルータ３０２が構築したＬＡＮにジョインする。なお本実施例においては、通信３０３、３０４がＷｉ−Ｆｉで接続されている例をあげたが、Ｅｔｈｅｒｎｅｔなどのような有線接続であってもよい。
【００３６】
最後に、ネットワークルータ３０２、通信３０３、公衆回線３０５に示すように、スマートデバイス２００Ｂが公衆回線３０５を経由してデジタルカメラ１００と接続する構成である。前述の２つのシステム構成では、同一ＬＡＮ内での接続の構成となる。一方、この構成では、例えばＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）を使用することで、インターネットを通じ、ＬＡＮの外側の離れた場所からデジタルカメラ１００と通信することが可能である。なお、ＶＰＮは公知の技術であるため、ここでは説明を割愛する。
【００３７】
以上の３種類のシステム構成において、スマートデバイス２００はデジタルカメラ１００の通信ＡＰＩを利用できる。
【００３８】
＜デジタルカメラ１００が公開する通信ＡＰＩの基本構成＞
図４、図５、図７、図９、図１１、図１３、図１５、図１７は、スマートデバイス２００などの外部機器からデジタルカメラ１００を制御するための通信ＡＰＩの構成を示す図である。
【００３９】
デジタルカメラ１００は、スマートデバイス２００などの外部機器からデジタルカメラ１００を制御するための通信ＡＰＩを公開している。このＡＰＩを用いて要求を受け付けることで、本実施形態のデジタルカメラ１００は、不揮発性メモリ１０３に記録されたデバイス情報や、記録媒体１１０などに保存されたコンテンツファイルを、通信部１１１を介して外部機器へ送信する。コンテンツファイルとは、デジタルカメラ１００が生成して記録媒体１１０や不揮発性メモリ１０３に保存する画像ファイルのことであり、本実施形態では、撮像した静止画ファイルや動画ファイルのことを指す。
【００４０】
この通信ＡＰＩに対応するプログラムは、予め不揮発性メモリ１０３に保存されている。制御部１０１は、通信部１１１を介して外部機器との通信が確立すると、通信ＡＰＩに対応するプログラムを作業用メモリ１０４に展開し、外部装置からの通信ＡＰＩを用いたリクエストを待つ。制御部１０１が外部機器から通信ＡＰＩを用いたリクエストを検知すると、通信ＡＰＩの種類に応じた処理を実行し、その結果をレスポンスとして外部機器に返却する。なお、通信ＡＰＩに対応するプログラムはデジタルカメラ１００が規定した通信プロトコル上で実行され、外部機器は規定された通信プロトコルを用いてデジタルカメラ１００と通信を行い、通信ＡＰＩを用いてリクエストする。本実施形態では、ＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）上で本通信ＡＰＩに対応するプログラムが実行される。すなわち、デジタルカメラ１００はＨＴＴＰサーバとして機能する。すなわち、本実施形態では、通信ＡＰＩをＷｅｂＡＰＩとして実装する場合を例に挙げて説明する。
【００４１】
なお、通信プロトコルは、ＨＴＴＰに限るものではなく、他のプロトコルであっても構わない。また、ＨＴＴＰプロトコル自体は広く利用されているものであるので、ここでの説明は割愛する。
【００４２】
ＨＴＴＰにおける通信ＡＰＩに対応するプログラムの実行方法については、以下の手順で実現される。
【００４３】
まず、外部機器が通信ＡＰＩとして公開されるＵＲＬに対して、ＨＴＴＰリクエストボディにアクセス先の通信ＡＰＩの仕様に応じた必要な指示情報をテキストデータで記述する。そして、ＨＴＴＰメソッドであるＧＥＴ（取得）、ＰＯＳＴ（生成）、ＰＵＴ（更新）、ＤＥＬＥＴＥ（削除）の４メソッドのいずれかを用いてデジタルカメラ１００に送信する。
【００４４】
これを受けたデジタルカメラ１００はＵＲＬとＨＴＴＰメソッドとＨＴＴＰリクエストボディの指示情報の内容に基づいて処理を行い、その結果をＨＴＴＰステータスコードと共にＨＴＴＰレスポンスボディに付加して、外部機器に返却する。以上の手順で実現される。
【００４５】
また、通信ＡＰＩにおいて、ＨＴＴＰリクエストボディとＨＴＴＰレスポンスボディに記述するデータは、データ記述言語の１つであるＪＳＯＮ（ＪａｖａＳｃｒｉｐｔ（登録商標）  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）によって表現される。各通信ＡＰＩには、それぞれの機能に応じたＪＳＯＮ構文の仕様が規定されており、デジタルカメラ１００やスマートデバイス２００は、それに則ってリクエストの指示やレスポンスの解析を行う。
【００４６】
なお、本実施例ではＪＳＯＮを用いているが、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）であってもよいし、独自フォーマットで定義されたテキストデータやバイナリデータを用いてもよい。
【００４７】
次に、通信ＡＰＩの構成を詳細に説明する。
【００４８】
以下の説明では、説明を簡単にするために、インターフェイスそのものだけでなく、通信ＡＰＩに対応するサービスやそれを実現するプログラムも、単にＡＰＩや通信ＡＰＩとも記載する。すなわち、ＡＰＩに対応するサービスを実現するプログラムを実行することをＡＰＩを実行する、などと記載し、ＡＰＩを介して対応するサービスの実行をリクエストすることをＡＰＩをリクエストする、などと記載する。
【００４９】
図４は、通信ＡＰＩの基本構成を説明する図である。
【００５０】
まず、本実施形態における通信ＡＰＩで使用するＨＴＴＰメソッドについて説明する。本実施形態における通信ＡＰＩで使用するＨＴＴＰメソッドは、ＧＥＴ４０１、ＰＯＳＴ４０２、ＰＵＴ４０３、ＤＥＬＥＴＥ４０４の４種類のみである。ＨＴＴＰの規格としては他のメソッドも存在するが、取得、生成、更新、削除といった、ほとんど全てのコンピュータソフトウェアが持つ永続的な４つの基本機能に限定している。なお、本通信ＡＰＩにおける４メソッドのそれぞれの意味は以下の通りである。
【００５１】
ＧＥＴ４０１は、コンテンツ（画像ファイル）の取得、カメラの情報や状態の取得、設定項目の能力値や設定値を取得する場合に使用する。
【００５２】
ＰＯＳＴ４０２は、外部装置からデジタルカメラ１００に対してコンテンツファイルなどデータの保存、撮影の実行やズーム操作など、カメラの機能を実行する場合に使用する。
【００５３】
ＰＵＴ４０３は、デジタルカメラ１００のメニュー設定や撮影パラメータ設定など、設定値を変更する場合に使用する。
【００５４】
ＤＥＬＥＴＥ４０４は、コンテンツの削除や、設定値を初期化する場合に使用する。
【００５５】
上記４メソッドに絞ることで、複雑なＨＴＴＰメソッドの制御を必要としない。そのため、デジタルカメラ１００を制御するためのスマートデバイス２００の制御プログラムを作成するプログラマは、最低限かつ頻繁に活用するＨＴＴＰメソッドを使用するだけでプログラムを作成することができる。
【００５６】
次に、本実施形態における通信ＡＰＩのトップＵＲＬについて説明する。トップＵＲＬとは、クライアントがデジタルカメラ１００をコントロールする際に、最初にアクセスするＵＲＬとして規定されるＵＲＬである。コントローラは必ずこのトップＵＲＬにアクセスしてから、カメラのリモートコントロールのための他のＡＰＩを利用する必要がある。
【００５７】
図４のＵＲＬ４０５は通信ＡＰＩのトップＵＲＬである。トップＵＲＬのホスト名、ドメイン名は、デジタルカメラ１００に割り当てられたＩＰアドレスとポート番号で構成される。それに続き、通信ＡＰＩを示すディレクトリ、さらに通信ＡＰＩのバージョンを示すディレクトリがその後に続く構成になっている。例えば、デジタルカメラ１００に割り振られたＩＰアドレスが１９２．１６８．１．１であり、ポート番号が８０８０であった場合のトップＵＲＬは、
ｈｔｔｐ：／／１９２．１６８．１．１：８０８０／ａｐｉ／ｖｅｒ１
となる。
【００５８】
ＨＴＴＰクライアントであるスマートデバイス２００が、ＨＴＴＰサーバであるデジタルカメラ１００が公開する通信ＡＰＩのトップＵＲＬをＧＥＴ４０１でリクエストすると、デジタルカメラ１００はＡＰＩ４０６に示すレスポンスボディ（ＪＳＯＮ）を返す。ここには、デジタルカメラ１００が対応している通信ＡＰＩの一覧が記述されている。なお特徴的なのは、各ＵＲＬに対して、どのＨＴＴＰメソッドが対応しているかがわかるＪＳＯＮ構文になっている点である。トップＵＲＬにアクセスすることで、スマートデバイス２００は、デジタルカメラ１００が対応している通信ＡＰＩの種類を知ることができる。
【００５９】
次に、ＡＰＩ表４０７は通信ＡＰＩのカテゴリを示す表である。本実施形態における通信ＡＰＩは、機能の種類によってＵＲＬを複数のカテゴリに分類していることを示している。なお、表におけるＡＰＩカテゴリのＵＲＬ表記は、トップＵＲＬを省略した表記になっている。実際には、ＡＰＩカテゴリ４０８は、
ｈｔｔｐ：／／１９２．１６８．１．１：８０８０／ａｐｉ／ｖｅｒ１／ｄｅｖｉｃｅｉｎｆｏｒｍａｔｉｏｎ
となる。
【００６０】
次に、通信ＡＰＩの機能のカテゴライズについて説明する。まず、ＡＰＩカテゴリ４０８は、デジタルカメラ１００の固定情報を取得するカテゴリである。次に、ＡＰＩカテゴリ４０９は、デジタルカメラ１００の状態情報を取得するカテゴリである。次に、ＡＰＩカテゴリ４１０は、デジタルカメラ１００のメニュー設定の取得や変更、メニュー機能を実行するカテゴリである。次に、ＡＰＩカテゴリ４１１は、デジタルカメラ１００の撮影機能を実行するカテゴリである。次に、ＡＰＩカテゴリ４１２は、デジタルカメラ１００の撮影パラメータの設定を取得、変更するカテゴリである。次に、ＡＰＩカテゴリ４１３は、デジタルカメラ１００が出力するスルー画を取得するカテゴリである。次に、ＡＰＩカテゴリ４１４は、デジタルカメラ１００が発行するイベント情報を取得するカテゴリである。次に、ＡＰＩカテゴリ４１５は、デジタルカメラ１００に装着されたメディアに保存されたコンテンツを取得するカテゴリである。
【００６１】
以上のように通信ＡＰＩがＵＲＬでカテゴライズされることにより、デジタルカメラ１００を制御するためのスマートデバイス２００の制御プログラムを作成するプログラマは、実行したい通信ＡＰＩがどのＵＲＬにあるのかが一目瞭然になるのが特徴である。
【００６２】
なお、個々の通信ＡＰＩは、上記のＡＰＩカテゴリ以下のディレクトリにＵＲＬが規定されている。
【００６３】
以上が、ＡＰＩの基本的な構成の説明である。続いて、各ＡＰＩカテゴリにおける個々の仕様について説明する。
【００６４】
＜デジタルカメラ１００の固定情報や状態情報を取得するＡＰＩ＞
図５のＡＰＩ表５００は、デジタルカメラ１００の固定情報と状態情報を取得するＡＰＩ群を示した表であり、図４のＡＰＩカテゴリ４０８、４０９に属するＡＰＩを示す。なお、表においてＡＰＩ名（ＵＲＬ）は省略した表記になっている。実際にはＡＰＩ５０２は、
ｈｔｔｐ：／／１９２．１６８．１．１：８０８０／ａｐｉ／ｖｅｒ１／ｄｅｖｉｃｅｓｔａｔｕｓ／ｓｔｏｒａｇｅ
となる。以下で説明するすべてのＡＰＩ表が省略した表記になる。
【００６５】
ＡＰＩ５０１は、デジタルカメラ１００の固定情報を取得するＡＰＩである。本ＡＰＩをＧＥＴ４０１で実行すると、製品名、製造者名、ファームウェアバージョン、シリアルナンバーなど、原則的に変更されない固定の機器情報が取得できる。不図示だが、ＭＡＣアドレスなどもそれに当てはまる。
【００６６】
ＡＰＩ５０２は、デジタルカメラ１００に装着されたメディアなど記録媒体１１０の情報を取得するＡＰＩである。本ＡＰＩをＧＥＴ４０１で実行すると、ＳＤかＣＦなどといったメディアの種類、アクセス能力（Ｒｅａｄ／Ｗｒｉｔｅ、Ｒｅａｄのみ、Ｗｒｉｔｅのみ）、保存可能容量や現在の空き容量、保存されているコンテンツの総数が取得できる。
【００６７】
ＡＰＩ５０３は、図１に不図示であるがデジタルカメラ１００に装着されたバッテリーの情報を取得するＡＰＩである。本ＡＰＩをＧＥＴ４０１で実行すると、バッテリーの名称、バッテリーの名称、バッテリーの残量、バッテリーの劣化度が取得できる。
【００６８】
なお、デジタルカメラ１００の状態情報については、上記以外にデジタルカメラ１００の内部温度、レンズ交換式のデジタルカメラであれば装着されているレンズの製品名や種類といったレンズ情報などもそれに当てはまる。
【００６９】
なお、ＡＰＩ５０２とＡＰＩ５０３は、デジタルカメラ１００の状態情報を取得するＡＰＩであるため、同じＡＰＩカテゴリ内のディレクトリにＵＲＬが規定されているのが特徴である。
【００７０】
図６は、デジタルカメラ１００とスマートデバイス２００を接続し、図５で示す通信ＡＰＩを実行した際の処理の流れを示すシーケンスである。なお、ＡＰＩを実行するまでに必要なＷｉ−Ｆｉ接続の処理と機器発見の処理は実行されたものとしてここでの説明は割愛する。
【００７１】
ステップＳ６０１、Ｓ６０２は、ＡＰＩ５０１を実行した際のシーケンスである。ステップＳ６０３、Ｓ６０４は、ＡＰＩ５０２を実行した際のシーケンスである。
【００７２】
ステップＳ６０１にて、スマートデバイス２００の制御部２０１は、通信部２１１を介してＡＰＩ５０１をＧＥＴ４０１でデジタルカメラ１００にリクエストする。
【００７３】
ステップＳ６０２にて、デジタルカメラ１００の制御部１０１が通信部１１１を介してこのリクエストを受信したことを検知すると、製品名、製造者名、ファームウェアバージョン、シリアルナンバーを不揮発性メモリ１０３より取得する。そして、レスポンス用ＪＳＯＮ構文に基づいたデータセットに成形する。更に、制御部１０１は成形したデータセットをレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【００７４】
ステップＳ６０３にて、スマートデバイス２００の制御部２０１は、通信部２１１を介してＡＰＩ５０２をＧＥＴ４０１でデジタルカメラ１００にリクエストする。
【００７５】
ステップＳ６０４にて、デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると、種々の情報を、記憶媒体１１０もしくは不揮発性メモリ１０３より取得する。ここで取得される情報は、例えば記憶媒体１１０のメディアの種類、アクセス能力、保存可能容量、空き容量、保存されているコンテンツの総数である。取得された情報は、レスポンス用ＪＳＯＮ構文に基づいたデータセットに成形される。
【００７６】
そして、制御部１０１は成形したデータセットをレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。なお、ＡＰＩ５０３を含めた本ＡＰＩカテゴリに属するすべてのＡＰＩは、Ｓ６０３、Ｓ６０４のように処理するため説明は割愛する。
【００７７】
以上が、デジタルカメラ１００の固定情報や状態情報を取得するＡＰＩについての説明である。
【００７８】
＜デジタルカメラ１００のメニュー機能の設定を取得、変更するＡＰＩ＞
図７のＡＰＩ表７００は、デジタルカメラ１００のメニュー機能の設定を取得、変更するＡＰＩ群を示した表であり、図４のＡＰＩカテゴリ４１０に属するＡＰＩを示す。なお、本実施例におけるデジタルカメラ１００のメニュー機能とは、メニュー形式で一覧される各種設定項目のことを指す。
【００７９】
ＡＰＩ７０１は、デジタルカメラ１００のメニュー機能で設定できる日付時刻情報を取得、変更するＡＰＩである。本ＡＰＩの日付時刻情報はＲＦＣ１１２３に準拠した形式で表記される。なお、他に規格に準拠した表記、または独自の形式に則したものであってもよい。本ＡＰＩをＧＥＴ４０１で実行すると、デジタルカメラ１００に設定されている日付時刻情報が取得できる。また、規定された表記に倣って日付時刻の設定値をリクエストボディに記述してＰＵＴ４０３で実行すると、リクエストボディに記述した日付時刻の設定値がデジタルカメラ１００に反映される。
【００８０】
ＡＰＩ７０２は、撮影して生成されるコンテンツ（画像）ファイルに記録されるメタ情報の１つである著作権者名の設定情報を取得、変更、削除を行うＡＰＩである。本ＡＰＩをＧＥＴ４０１で実行すると、現在設定されている著作権者名が取得できる。また、著作権者名をリクエストボディに記述してＰＵＴ４０３で実行すると、リクエストボディに記述した著作権者名がデジタルカメラ１００に反映される。また、本ＡＰＩをＤＥＬＥＴＥ４０４で実行すると、著作権者名が初期値に変更される。本実施例では初期値が空の状態であるため、記録されていた著作権者名がクリアされる。
【００８１】
なお、デジタルカメラ１００のメニュー設定は上記に限らない。不図示であるが、記録媒体１１０のフォーマットの指示、デジタルカメラの操作音の設定、デジタルカメラを自動的に電源オフするまでの時間を設定するオートパワーオフ設定などがそれに当てはまる。
【００８２】
ここで特徴的なのは、以下の点である。すなわち、図７のＡＰＩの仕様として、ＰＵＴメソッドのようにリクエストとレスポンスの両方にＪＳＯＮ構文が付随するメソッドの場合、レスポンスボディに記述するＪＳＯＮ構文と、リクエストボディに記述するＪＳＯＮ構文とを、同じ形式にする。具体的には、ＡＰＩ７０１では、リクエストとレスポンスの両者とも、ＪＳＯＮの“ｄａｔｅｔｉｍｅ”と“ｄｓｔ”の２つのフィールド名が同じであり、値の形式もＲＦＣ１１２３に準拠した形式で同じである。ＡＰＩ７０２においても、ＪＳＯＮのフィールド名が“ｃｏｐｙｒｉｇｈｔ”となり同じである。このような仕様にすることで、デジタルカメラ１００を制御するためのスマートデバイス２００の制御プログラムを作成するプログラマは、ＪＳＯＮ構文が同じであるため、ＨＴＴＰメソッドによって処理プログラムを書き分ける必要がなくなる。デジタルカメラ１００から送信されたレスポンスボディに記述されたＪＳＯＮ構文を複製し必要な部分のみを変更したものを、ＰＵＴメソッドを実行する際のリクエストボディに記述するＪＳＯＮ構文としてそのまま活用することができる。そのため、プログラム量が減るといったメリットが生まれる。
【００８３】
図８は、図７で示す通信ＡＰＩを実行した際の処理の流れを示すシーケンスである。
【００８４】
ステップＳ８０１、Ｓ８０２、Ｓ８０３、Ｓ８０４は、ＡＰＩ７０１を実行した際のシーケンスである。
【００８５】
ステップＳ８０１にて、スマートデバイス２００の制御部２０１は、通信部２１１を介してＡＰＩ７０１をＧＥＴ４０１でデジタルカメラ１００にリクエストする。
【００８６】
ステップＳ８０２にて、デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると、日付時刻の情報を不揮発性メモリ１０３より取得し、レスポンス用ＪＳＯＮ構文に基づいたデータセットに成形する。そして、制御部１０１は成形したデータセットをレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【００８７】
ステップＳ８０３にて、スマートデバイス２００の制御部２０１は、プログラム処理によって作業用メモリ２０４に記録された日付時刻の情報を、リクエスト用ＪＳＯＮ構文に基づいたデータセットに成形してリクエストボディに記述する。そして、通信部２１１を介してＡＰＩ７０１をＰＵＴ４０３でデジタルカメラ１００にリクエストする。
【００８８】
ステップＳ８０４にて、デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると、リクエストボディに記述されたＪＳＯＮ構文を解析し、リクエストされた日付時刻情報を不揮発性メモリ１０３に記録する。設定が完了すると、制御部１０１は設定が完了した日付時刻情報をＪＳＯＮ構文に基づいたデータセットに成形してレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【００８９】
なお、ＡＰＩ７０２もＳ８０１、Ｓ８０２と同様のシーケンスで処理するため説明は割愛する。
【００９０】
以上が、デジタルカメラ１００のメニュー設定を取得、変更するＡＰＩについての説明である。
【００９１】
＜デジタルカメラ１００の撮影機能を実行するＡＰＩ＞
図９のＡＰＩ表９００は、デジタルカメラ１００の撮影機能を実行するＡＰＩ群を示した表であり、図４のＡＰＩカテゴリ４１１に属するＡＰＩを示す。
【００９２】
ＡＰＩ９０１は、静止画を撮影するＡＰＩである。本ＡＰＩをＰＯＳＴ４０２で実行すると、デジタルカメラ１００は撮影処理を実行し、生成されたコンテンツファイル（静止画ファイル）を記録媒体１１０に記録する。
【００９３】
ＡＰＩ９０２は、デジタルカメラ１００の動画撮影を実行するＡＰＩである。本ＡＰＩをＰＯＳＴメソッドで実行すると、デジタルカメラ１００に動画撮影の開始と停止を指示できる。本ＡＰＩをＰＯＳＴ４０２で実行すると、生成されたコンテンツファイル（動画ファイル）を記録媒体１１０に保存する。
【００９４】
図１０は、図９で示す通信ＡＰＩを実行した際の処理の流れを示すシーケンスである。
【００９５】
ステップＳ１００１、Ｓ１００２はＡＰＩ９０１を実行した際のシーケンスであり、ステップＳ１００３、Ｓ１００４、Ｓ１００５、Ｓ１００６はＡＰＩ９０２を実行した際のシーケンスである。
【００９６】
ステップＳ１００１にて、スマートデバイス２００の制御部２０１は、プログラム処理により作業用メモリ２０４に記録された静止画撮影指示を取得する。そして、静止画撮影指示をリクエスト用ＪＳＯＮ構文に基づいたデータセットに成形してリクエストボディに記述し、通信部２１１を介してＡＰＩ９０１をＰＯＳＴ４０２でデジタルカメラ１００にリクエストする。なおＳ１００１では、静止画撮影をする際、ＡＦ（オートフォーカス）を実行するよう指示している。デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると、ＡＦ処理と撮影処理を実行する。撮影処理が完了すると、生成されたコンテンツファイル（静止画ファイル）を記録媒体１１０に記録する。
【００９７】
ステップＳ１００２にて、制御部１０１は、レスポンス用ＪＳＯＮ構文に基づいたデータセットに成形する。そして、制御部１０１は成形したデータセットをレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【００９８】
ステップＳ１００３にて、スマートデバイス２００の制御部２０１は、プログラム処理により作業用メモリ２０４に記録された動画撮影の開始指示を取得する。そして、動画撮影の開始指示をリクエスト用ＪＳＯＮ構文に基づいたデータセットに成形してリクエストボディに記述し、通信部２１１を介してＡＰＩ９０２をＰＯＳＴ４０２でデジタルカメラ１００にリクエストする。なおＳ１００３では、録画を開始するよう指示している。デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると、動画の録画処理を開始する。
【００９９】
ステップＳ１００４にて、制御部１０１は録画の開始処理が完了すると、レスポンス用ＪＳＯＮ構文に基づいたデータセットに成形する。そして、制御部１０１は成形したデータセットをレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【０１００】
ステップＳ１００５にて、スマートデバイス２００の制御部２０１は、プログラム処理により作業用メモリ２０４に記録された動画撮影の停止指示を取得する。そして、動画撮影の停止指示をリクエスト用ＪＳＯＮ構文に基づいたデータセットに成形してリクエストボディに記述し、通信部２１１を介してＡＰＩ９０２をＰＯＳＴ４０２でデジタルカメラ１００にリクエストする。なおＳ１００５では、録画を停止するよう指示している。デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると録画を終了する。録画の停止処理が完了すると、生成されたコンテンツファイル（動画ファイル）を記録媒体１１０に記録する。
【０１０１】
ステップＳ１００６にて、制御部１０１は、レスポンス用ＪＳＯＮ構文に基づいたデータセットに成形する。そして、制御部１０１は形成したデータセットをレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【０１０２】
以上が、デジタルカメラ１００の撮影機能を実行するするＡＰＩについての説明である。
【０１０３】
＜デジタルカメラ１００の撮影パラメータを取得、変更するＡＰＩ＞
図１１のＡＰＩ表１１００は、デジタルカメラ１００の撮影パラメータを取得、変更するＡＰＩ群を示した表であり、図４のＡＰＩカテゴリ４１２に属するＡＰＩを示す。
【０１０４】
ＡＰＩ１１０１は、デジタルカメラ１００の露出補正の値を取得、変更するＡＰＩである。本ＡＰＩをＧＥＴ４０１で実行すると、デジタルカメラ１００に設定されている露出補正の現在値と設定可能値が取得できる。また、設定可能値の中から露出補正の値をピックアップしてリクエストボディに記述しＰＵＴ４０３で実行すると、リクエストボディに記述した露出補正の値がデジタルカメラ１００に反映される。
【０１０５】
ＡＰＩ１１０２は、デジタルカメラ１００のＩＳＯ感度の値を取得、変更するＡＰＩである。本ＡＰＩをＧＥＴ４０１で実行すると、デジタルカメラ１００に設定されているＩＳＯ感度の現在値と設定可能値が取得できる。また、設定可能値の中からＩＳＯ感度の値をピックアップしてリクエストボディに記述し、ＰＵＴ４０３で実行すると、リクエストボディに記述したＩＳＯ感度の値がデジタルカメラ１００に反映される。
【０１０６】
ＡＰＩ１１０３は、デジタルカメラ１００のホワイトバランスの値を取得、変更するＡＰＩである。本ＡＰＩをＧＥＴ４０１で実行すると、デジタルカメラ１００に設定されているホワイトバランスの現在値と設定可能値が取得できる。また、設定可能値の中からホワイトバランスの値をピックアップしてリクエストボディに記述し、ＰＵＴ４０３で実行すると、リクエストボディに記述したホワイトバランスの値がデジタルカメラ１００に反映される。
【０１０７】
なお、撮影パラメータは上記の他、ＡＶ値、ＴＶ値、色温度、静止画撮影画質、動画撮影画質などがあげられる。
【０１０８】
ここで特徴的なのは、ＡＰＩの仕様として、本ＡＰＩカテゴリに属するＡＰＩのレスポンスボディに記述するＪＳＯＮ構文が同じ形式になっている点である。具体的には、現在値のフィールド名を“ｖａｌｕｅ”、設定可能値のフィールド名を“ａｂｉｌｉｔｙ”に統一している点である。そうすることで、撮影パラメータの種類毎、またＨＴＴＰメソッド毎に処理を分ける必要がなくなる。そのため、デジタルカメラ１００を制御するためのスマートデバイス２００の制御プログラムを作成するプログラマは、ＡＰＩカテゴリ４１２の撮影パラメータの処理は、同じ関数ですべて処理することが可能になる。つまり、撮影パラメータの種類毎に処理をかき分ける必要がなくなるため、プログラム量が減るといったメリットが生まれる。
【０１０９】
図１２は、図１１で示す通信ＡＰＩを実行した際の処理の流れを示すシーケンスである。
【０１１０】
ステップＳ１２０１、Ｓ１２０２、Ｓ１２０３、Ｓ１２０４は、ＡＰＩ１１０１を実行した際のシーケンスである。
【０１１１】
ステップＳ１２０１にて、スマートデバイス２００の制御部２０１は、通信部２１１を介してＡＰＩ１１０１をＧＥＴ４０１でデジタルカメラ１００にリクエストする。
【０１１２】
ステップＳ１２０２にて、デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると、露出補正の現在値と設定可能値を作業用メモリ１０４及び不揮発性メモリ１０３より取得する。そして、露出補正の現在値と設定可能値をレスポンス用ＪＳＯＮ構文に基づいたデータセットに成形する。そして、制御部１０１は成形したデータセットをレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【０１１３】
ステップＳ１２０３にて、スマートデバイス２００の制御部２０１は、プログラム処理により作業用メモリ２０４に記録された露出補正の値を取得する。そして、露出補正の値をリクエスト用ＪＳＯＮ構文に基づいたデータセットに成形してリクエストボディに記述し、通信部２１１を介してＡＰＩ７０１をＰＵＴ４０３でデジタルカメラ１００にリクエストする。デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると、リクエストボディに記述されたＪＳＯＮ構文を解析し、リクエストされた露出補正の値を作業用メモリ１０４、または不揮発性メモリ１０３に記録する。
【０１１４】
ステップＳ１２０４にて、処理が完了すると、制御部１０１は、設定が完了した露出補正の値をＪＳＯＮ構文に基づいたデータセットに成形してレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【０１１５】
なお、ＡＰＩ１１０２、ＡＰＩ１１０３共に上記と同様のシーケンスで処理するため、説明は割愛する。なお、ＪＳＯＮ構文の形式が同じであるため、ステップＳ１２０３でのＪＳＯＮ構文の解析についても、同様の処理を使いまわすことができる。そのため、より効率的にアプリケーションを実装することができる。
【０１１６】
以上が、デジタルカメラ１００の撮影パラメータを取得、変更するＡＰＩについての説明である。
【０１１７】
＜デジタルカメラ１００のスルー画を取得するＡＰＩ＞
図１３のＡＰＩ表１３００は、デジタルカメラ１００のスルー画（リモート用ライブビュー画像）を取得するＡＰＩ群を示した表であり、図４のＡＰＩカテゴリ４１３に属するＡＰＩを示す。
【０１１８】
ＡＰＩ１３０１は、デジタルカメラ１００のスルー画の生成の開始と終了を指示するＡＰＩである。リクエストボディにスルー画のサイズとデジタルカメラ１００の表示部１０６にスルー画を表示するか否かの指示を記述して本ＡＰＩをＰＯＳＴ４０２で実行すると、デジタルカメラ１００は指示された内容に従ってスルー画の生成を開始および停止する。
【０１１９】
ＡＰＩ１３０２は、デジタルカメラ１００のスルー画を１フレーム取得するＡＰＩである。本ＡＰＩをＧＥＴ４０１で実行すると、ＡＰＩ１３０１で設定スルー画を１フレーム取得できる。
【０１２０】
ＡＰＩ１３０３は、デジタルカメラ１００のスルー画をチャンク送信で取得するＡＰＩである。チャンク送信（Ｃｈｕｎｋｅｄ  Ｔｒａｎｓｆｅｒ）とは、ＨＴＴＰ１．１（ＲＦＣ２６１６）で定義されているデータ転送メカニズムの１つである。チャンク送信は、事前にレスポンスデータ全体のサイズが不明であっても、データの塊ごとにサイズを記してレスポンスを返していく送信方法である。詳細なメカニズムについては公知の技術であるためここでの説明は割愛する。本ＡＰＩをＧＥＴ４０１で実行すると、ＡＰＩ表１３００に示すように、スルー画のサイズ情報、スルー画の実データの順でスルー画が送信され続ける。また、本ＡＰＩをＤＥＬＥＴＥ４０４で実行すると、ＡＰＩ表１３００に示すように、スルー画のサイズが０と送信され、スルー画のチャンク送信が停止する。
【０１２１】
図１４は、図１３で示す通信ＡＰＩを実行した際の処理の流れを示すシーケンスである。
【０１２２】
ステップＳ１４０１、Ｓ１４０２は、ＡＰＩ１３０１を実行した際のシーケンスである。ステップＳ１４０３、Ｓ１４０４はＡＰＩ１３０２を実行した際のシーケンスである。ステップＳ１４０５、Ｓ１４０６、Ｓ１４０７、Ｓ１４０８、Ｓ１４０９はＡＰＩ１３０３を実行した際のシーケンスである。
【０１２３】
ステップＳ１４０１にて、スマートデバイス２００の制御部２０１は、プログラム処理により作業用メモリ２０４に記録されたスルー画の生成を開始するための値を取得する。そして、スルー画の生成を開始するための値をリクエスト用ＪＳＯＮ構文に基づいたデータセットに成形してリクエストボディに記述し、通信部２１１を介してＡＰＩ１３０１をＰＯＳＴ４０２でデジタルカメラ１００にリクエストする。なおＳ１４０１ではＡＰＩ１３０１の仕様に則り、スルー画のサイズをデジタルカメラ１００の表示部１０６へのスルー画表示有無を指示している。デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると、リクエストボディに記述されたＪＳＯＮ構文を解析する。そして、リクエストされたスルー画のサイズとデジタルカメラ１００の表示部１０６へのスルー画表示の有無の指示に従って、スルー画の生成処理を開始する。生成されたスルー画は、逐次作業用メモリ１０４に一次記録される。
【０１２４】
ステップＳ１４０２にて、上記処理を開始すると、制御部１０１は、レスポンスの値をＪＳＯＮ構文に基づいたデータセットに成形してレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【０１２５】
ステップＳ１４０３にて、スマートデバイス２００の制御部２０１は、通信部２１１を介してＡＰＩ１３０２をＧＥＴ４０１でデジタルカメラ１００にリクエストする。
【０１２６】
ステップＳ１４０４にて、デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると、作業用メモリ１０４より逐次一時的に記録されるスルー画を取得し、レスポンス用データセットに成形する。そして、制御部１０１は成形したデータセットをレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【０１２７】
なお、スマートデバイス２００より繰り返しＡＰＩ１３０２が実行されることで、スマートデバイス２００上でのライブビューの表示を実現する。
【０１２８】
ステップＳ１４０５にて、スマートデバイス２００の制御部２０１は、通信部２１１を介してＡＰＩ１３０３をＧＥＴ４０１でデジタルカメラ１００にリクエストする。デジタルカメラ１００の制御部１０１が通信部１１１を介してリクエストの受信を検知すると、ステップＳ１４０６にて、逐次一時的に記録されるスルー画を作業用メモリ１０４から順次取得し、ＡＰＩ表１３００に示すデータ順でチャンク送信を開始する。
【０１２９】
ステップＳ１４０７にて、チャンク送信が開始すると、レスポンス用データセットに成形する。そして、制御部１０１は成形したデータセットをレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【０１３０】
ステップＳ１４０８にて、スマートデバイス２００の制御部２０１は、通信部２１１を介してＡＰＩ１３０３をＤＥＬＥＴＥ４０４でデジタルカメラ１００にリクエストする。デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると、ＡＰＩ表１３００に示すようにチャンク送信のスルー画のサイズを０と送信し、チャンク送信を終了する。
【０１３１】
ステップＳ１４０９にて、チャンク送信が終了すると、レスポンス用データセットに成形する。そして、制御部１０１は成形したデータセットをレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【０１３２】
以上が、デジタルカメラ１００のスルー画を取得するＡＰＩについての説明である。
【０１３３】
＜デジタルカメラ１００のイベント情報を取得するＡＰＩ＞
図１５のＡＰＩ表１５００は、デジタルカメラ１００のイベント情報を取得するＡＰＩ群を示した表であり、図４のＡＰＩカテゴリ４１４に属するＡＰＩを示す。本実施例におけるイベント情報とはデジタルカメラ１００の状態が変化したことを外部機器に通知するための情報のことである。例えば、バッテリーの残容量が更新されたり、記録装置１１０に保存されているコンテンツファイルに増減があったり、デジタルカメラ１００が操作されて設定が変更されたり、レンズなどアクセサリが装着されたりするなどの状態変化があった場合である。本実施例においては、バッテリー残容量が更新された場合を例に挙げて説明する。
【０１３４】
ＡＰＩ１５０１は、デジタルカメラ１００のイベント情報を取得するＡＰＩである。本ＡＰＩは、二つの手法を選択できる。一つはイベント情報の有無と内容を即座にレスポンス送信する方法である。もうひとつは、イベントが発生するまでＨＴＴＰステータスコード１００Ｃｏｎｔｉｎｕｅを送信してＨＴＴＰセッションを継続し、イベントが発生した段階でレスポンス送信する、ロングポーリングと呼ばれる方法である。これらの指定は、ＵＲＬクエリパラメータをＵＲＬに追加することで実現する。ＵＲＬクエリパラメータは公知の技術であるため、ここでの説明は割愛する。ＡＰＩ表１５００に記載した通り、ロングポーリングでイベント情報を取得する場合、以下のＵＲＬでリクエストする。
ｈｔｔｐ：／／１９２．１６８．１．１：８０８０／ａｐｉ／ｖｅｒ１／ｅｖｅｎｔ／ｐｏｌｌｉｎｇ？ｃｏｎｔｉｎｕｅ＝ｏｎ
【０１３５】
“？ｃｏｎｔｉｎｕｅ＝ｏｎ”がクエリパラメータである。クエリパラメータを何も指定していない場合、または“？ｃｏｎｔｉｎｕｅ＝ｏｆｆ”とした場合は即座にレスポンスを送信する。本ＡＰＩをＧＥＴ４０１で実行すると、デジタルカメラ１００はイベント情報を上記で説明した方法で取得する。
【０１３６】
ＡＰＩ１５０２は、デジタルカメラ１００のイベント情報をチャンク送信で取得するＡＰＩである。チャンク送信の説明については前述の通りであるため、ここでの説明は割愛する。本ＡＰＩをＧＥＴ４０１で実行すると、イベント情報が送信され続ける。なお、チャンク送信の具体的な送信方法であるが、何もイベントが発生していない場合はその旨を示す“｛｝”を送信する。“｛｝”のサイズは２ｂｙｔｅであるため、“２”、“｛｝”の順で送信する。イベントが発生した場合、その旨のＪＳＯＮが送信される。ＡＰＩ１５００ではバッテリーの残量が変化した場合の例をＪＳＯＮで表現している。なお、ここで送信されるＪＳＯＮ構文は、個々のＡＰＩでレスポンス送信されるＪＳＯＮ構文と同じである。例えば、バッテリー情報はＡＰＩ５０３のレスポンス情報と同じである。また、本ＡＰＩをＤＥＬＥＴＥ４０４で実行すると、ＡＰＩ表１５００に示すように、イベント情報のサイズ情報が０と送信され、イベント情報のチャンク送信が停止する。
【０１３７】
図１６は、図１５で示す通信ＡＰＩを実行した際の処理の流れを示すシーケンスである。
【０１３８】
ステップＳ１６０１、Ｓ１６０２、Ｓ１６０３、Ｓ１６０４、Ｓ１６０５、Ｓ１６０６は、ＡＰＩ１５０１を実行した際のシーケンスである。ステップＳ１６０７、Ｓ１６０８、Ｓ１６０９、Ｓ１６１０、Ｓ１６１１はＡＰＩ１５０２を実行した際のシーケンスである。ステップＳ１４０５、Ｓ１４０６、Ｓ１４０７、Ｓ１４０８、Ｓ１４０９はＡＰＩ１３０３を実行した際のシーケンスである。
【０１３９】
ステップＳ１６０１にて、スマートデバイス２００の制御部２０１は、通信部２１１を介してＡＰＩ１３０２をＧＥＴ４０１でデジタルカメラ１００にリクエストする。この時、ＵＲＬクエリパラメータを付与していない。
【０１４０】
ステップＳ１６０２にて、デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると、作業用メモリ１０４に記録されているイベント情報を取得し、レスポンス用データセットに成形する。そして、制御部１０１は成形したデータセットをレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。なお、イベント情報がない場合は、ない旨のレスポンス用データセットを送信する。
【０１４１】
ステップＳ１６０３にて、スマートデバイス２００の制御部２０１は、通信部２１１を介してＡＰＩ１３０２をＧＥＴ４０１でデジタルカメラ１００にリクエストする。この時、ロングポーリングを実行する旨のＵＲＬクエリパラメータを付与している。
【０１４２】
ステップＳ１６０２にて、デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると、作業用メモリ１０４に記録されているイベント情報を取得する。もしイベント情報があった場合はイベント情報をレスポンス用データセットに成形する。そして、制御部１０１は成形したデータセットをレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。一方、イベント情報がない場合は、Ｓ１６０４に示すように、ＨＴＴＰステータスコード１００Ｃｏｎｔｉｎｕｅを、通信部１１１を介してスマートデバイス２００に送信する。なお、イベント情報が発生するまで上記を繰り返す。
【０１４３】
ステップＳ１６０５にて制御部１０１がイベント発生を検知すると、ステップＳ１６０６にて、制御部１０１は作業用メモリ１０４に記録されているイベント情報を取得し、レスポンス用データセットに成形する。そして、制御部１０１は成形したデータセットをレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【０１４４】
ステップＳ１６０７にて、スマートデバイス２００の制御部２０１は、通信部２１１を介してＡＰＩ１５０２をＧＥＴ４０１でデジタルカメラ１００にリクエストする。
【０１４５】
デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると、ステップＳ１４０８に示すように作業用メモリ１０４より取得したイベント情報を、ＡＰＩ表１５００に示すデータ順でチャンク送信を開始する。
【０１４６】
ステップＳ１６０９にて、チャンク送信が開始すると、レスポンス用データセットに成形する。そして、制御部１０１は成形したデータセットをレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【０１４７】
ステップＳ１６１０にて、スマートデバイス２００の制御部２０１は、通信部２１１を介してＡＰＩ１５０２をＤＥＬＥＴＥ４０４でデジタルカメラ１００にリクエストする。デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると、ＡＰＩ表１５００に示すようにチャンク送信のイベント情報のサイズ情報を０と送信し、チャンク送信を終了する。
【０１４８】
ステップＳ１６１１にて、チャンク送信が終了すると、レスポンス用データセットに成形する。そして、制御部１０１は成形したデータセットをレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【０１４９】
以上が、デジタルカメラ１００のイベント情報を取得するＡＰＩについての説明である。
【０１５０】
＜デジタルカメラ１００のコンテンツファイルを取得するＡＰＩ＞
図１７のＡＰＩ表１７００は、デジタルカメラ１００のデジタルカメラに装着されたメディアに保存されたコンテンツファイル（画像ファイル）の取得、コンテンツファイルの削除、コンテンツファイルを操作するＡＰＩ群を示した表である。これらは、図４のＡＰＩカテゴリ４１５に属するＡＰＩを示す。
【０１５１】
ＡＰＩ１７０１は、デジタルカメラ１００の記録媒体１１０にアクセスするためのＵＲＬを取得するＡＰＩである。本ＡＰＩをＧＥＴ４０１で実行すると、ＡＰＩ表１７００に示すような記録媒体１１０のＵＲＬが取得できる。本実施例においては、記録媒体１１０がＳＤを例として説明する。また、デジタルカメラ１００が複数のメディアが装着可能である場合は、複数のＵＲＬが取得できる。
【０１５２】
ＡＰＩ１７０２は、記録媒体１１０に記録されているディレクトリのＵＲＬを取得するＡＰＩである。本ＡＰＩをＧＥＴ４０１で実行すると、ＡＰＩ表１７００に示すようなディレクトリ名を含めたＵＲＬ一覧が取得できる。本実施例においてはＤＣＦ（Ｄｅｓｉｇｎ  ｒｕｌｅ  ｆｏｒ  Ｃａｍｅｒａ  Ｆｉｌｅ  ｓｙｓｔｅｍ）規格に則り、それに準拠したディレクトリが取得できる。ＤＣＦ規格については自明の規格であるため説明は割愛する。なお、その他の例として、本ＡＰＩで取得できるディレクトリはＤＣＦ準拠でなくてもよい。
【０１５３】
ＡＰＩ１７０３は、ディレクトリの中に記録されているコンテンツファイルのＵＲＬを取得するＡＰＩである。本ＡＰＩをＧＥＴ４０１で実行すると、ＡＰＩ表１７００に示すような記録媒体１１０のＵＲＬ一覧が取得できる。なお、本ＡＰＩは、コンテンツファイルのファイルフォーマットを指定して取得することができる。指定の方法は、ＵＲＬクエリパラメータをＵＲＬに追加することで実現する。ＵＲＬクエリパラメータは公知の技術であるため、ここでの説明は割愛する。ＡＰＩ表１７００に記載した通り、例えばＪＰＥＧ画像のみに絞りＵＲＬ一覧を取得する場合、以下のＵＲＬでリクエストする。
ｈｔｔｐ：／／１９２．１６８．１．１：８０８０／ａｐｉ／ｖｅｒ１／ｃｏｎｔｅｎｔｓ／ｓｄ／１００ＣＡＮＯＮ？ｔｙｐｅ＝ｊｐｅｇ
【０１５４】
“？ｔｙｐｅ＝ｊｐｅｇ”がクエリパラメータである。クエリパラメータを指定していない場合、対象ディレクトリ内にあるすべてのコンテンツファイルのＵＲＬ一覧をレスポンス送信する。ＵＲＬクエリパラメータについては、不図示であるがコンテンツファイルのＵＲＬの一覧を、画像番号の少ない順または多い順、また生成日時の新しい順または古い順を指定することも可能である。また、ＵＲＬクエリパラメータは同時に複数の項目を指定することも可能である。
【０１５５】
本ＡＰＩをＤＥＬＥＴＥ４０４で実行すると、指定したＵＲＬのディレクトリとディレクトリ内に記録されているコンテンツファイルを削除する。削除可能な場合は全てを削除する。コンテンツファイルにプロテクトが設定され削除できない場合はディレクトリとプロテクトが設定されたコンテンツファイルのみを残す。なお、本実施例では上記のように動作するが、プロテクトされたコンテンツファイルがある場合は、コンテンツファイルの一切を削除しないといった処理の仕方もある。
【０１５６】
ＡＰＩ１７０３は、コンテンツファイルを取得、もしくは操作、もしくは削除するＡＰＩである。本ＡＰＩをＧＥＴ４０１で実行すると、コンテンツファイルが取得できる。なお、本ＡＰＩは、コンテンツファイルのデータの種類を指定して取得することができる。指定の方法は、ＵＲＬクエリパラメータをＵＲＬに追加することで実現する。ＵＲＬクエリパラメータは公知の技術であるため、ここでの説明は割愛する。ＡＰＩ表１７００に記載した通り、例えばコンテンツファイルのサムネイル画像のみを取得する場合、以下のＵＲＬでリクエストする。
ｈｔｔｐ：／／１９２．１６８．１．１：８０８０／ａｐｉ／ｖｅｒ１／ｃｏｎｔｅｎｔｓ／ｓｄ／１００ＣＡＮＯＮ／ＩＭＧ＿０００１．ＪＰＧ？ｋｉｎｄ＝ｔｈｕｍｂｎａｉｌ
【０１５７】
“？ｋｉｎｄ＝ｔｈｕｍｂｎａｉｌ”がクエリパラメータである。クエリパラメータを指定していない場合、画像ファイル本体を送信する。また、本ＵＲＬクエリパラメータで指定できるデータの種類は、埋込み画像、画像ファイルのメタ情報などがある。
【０１５８】
本ＡＰＩはコンテンツファイルを操作できる。コンテンツファイルの操作とは、プロテクトの設定、画像の回転、レーティング情報の付与などを指す。リクエストボディに操作の内容と値をそれぞれ記述して本ＡＰＩをＰＵＴ４０３で実行すると、デジタルカメラ１００は、指示された内容に従ってＵＲＬで指定したコンテンツファイルを操作する。
【０１５９】
本ＡＰＩをＤＥＬＥＴＥ４０４で実行すると、指定したＵＲＬのコンテンツファイルを削除する。なお、コンテンツファイルにプロテクトが設定され削除できない場合は削除されない。
【０１６０】
図１８は、図１７で示す通信ＡＰＩを実行した際の処理の流れを示すシーケンスである。
【０１６１】
ステップＳ１８０１、Ｓ１８０２はＡＰＩ１７０１を実行した際のシーケンスである。ステップＳ１８０３、Ｓ１８０４はＡＰＩ１７０２を実行した際のシーケンスである。ステップＳ１８０５、Ｓ１８０６はＡＰＩ１７０３を実行した際のシーケンスである。ステップＳ１８０５、Ｓ１８０６はＡＰＩ１７０３を実行した際のシーケンスである。ステップＳ１８０７、Ｓ１８０８、Ｓ１８０９、Ｓ１８１０はＡＰＩ１７０４を実行した際のシーケンスである。
【０１６２】
ステップＳ１８０１にて、スマートデバイス２００の制御部２０１は、通信部２１１を介してＡＰＩ１７０１をＧＥＴ４０１でデジタルカメラ１００にリクエストする。
【０１６３】
ステップＳ１８０２にて、デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると、作業用メモリ１０４に記録されている装着メディアのＵＲＬを取得し、レスポンス用データセットに成形する。そして、制御部１０１は成形したデータセットをレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【０１６４】
ステップＳ１８０３にて、スマートデバイス２００の制御部２０１は、通信部２１１を介してＡＰＩ１７０２をＧＥＴ４０１でデジタルカメラ１００にリクエストする。
【０１６５】
ステップＳ１８０４にて、デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると、作業用メモリ１０４からディレクトリのＵＲＬ一覧を取得し、レスポンス用データセットに成形する。そして、制御部１０１は成形したデータセットをレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【０１６６】
ステップＳ１８０５にて、スマートデバイス２００の制御部２０１は、通信部２１１を介してＡＰＩ１７０３をＧＥＴ４０１でデジタルカメラ１００にリクエストする。この時、ＪＰＥＧファイルのみピックアップするようＵＲＬクエリパラメータを付与している。
【０１６７】
ステップＳ１８０６にて、デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると、作業用メモリ１０４に記録されているＪＰＥＧファイルのみのＵＲＬ一覧を取得し、レスポンス用データセットに成形する。そして、制御部１０１は成形したデータセットをレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【０１６８】
ステップＳ１８０７にて、スマートデバイス２００の制御部２０１は、通信部２１１を介してＡＰＩ１７０４をＧＥＴ４０１でデジタルカメラ１００にリクエストする。この時、サムネイル画像を取得するようＵＲＬクエリパラメータを付与している。
【０１６９】
ステップＳ１８０８にて、デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると、記録媒体１１０に記録されている画像ファイルからサムネイルファイルを取得し、レスポンス用データセットに成形する。そして、制御部１０１は成形したデータセットをレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【０１７０】
ステップＳ１８０９にて、スマートデバイス２００の制御部２０１は、プログラム処理により作業用メモリ２０４に記録されたコンテンツファイルを操作するための指示の内容を取得する。そして、コンテンツファイルを操作するための指示の内容をリクエスト用ＪＳＯＮ構文に基づいたデータセットに成形してリクエストボディに記述し、通信部２１１を介してＡＰＩ１３０１をＰＯＳＴ４０２でデジタルカメラ１００にリクエストする。本実施例では、ＡＰＩ表１７００に記載したように、コンテンツファイルにプロテクト処理を実施するよう指示している。デジタルカメラ１００の制御部１０１が通信部１１１を介して、このリクエストを受信したことを検知すると、リクエストボディに記述されたＪＳＯＮ構文を解析する。そして、リクエストされた指示に従い、記録媒体１１０のコンテンツファイルにプロテクト属性を付与する。
【０１７１】
ステップＳ１８１０にて、上記処理が完了すると、制御部１０１は、レスポンスの値をＪＳＯＮ構文に基づいたデータセットに成形してレスポンスボディに記述し、通信部１１１を介してスマートデバイス２００に送信する。
【０１７２】
以上が、デジタルカメラ１００のコンテンツファイルを取得するＡＰＩについての説明である。
【０１７３】
＜本実施形態のスマートデバイスの動作について＞
上述したように、本通信ＡＰＩは様々な特徴を持つ。１つは、レスポンスボディに記述するＪＳＯＮ構文と、リクエストボディに記述するＪＳＯＮ構文が同じ形式になっている点である。この仕様により、デジタルカメラ１００を制御するためのスマートデバイス２００の制御プログラムを作成するプログラマは、ＪＳＯＮ構文が同じであるため、ＨＴＴＰメソッドによって処理プログラムを書き分ける必要がなくなる。デジタルカメラ１００から送信されたレスポンスボディに記述されたＪＳＯＮ構文を複製し必要な部分のみを変更したものを、ＰＵＴメソッドを実行する際のリクエストボディに記述するＪＳＯＮ構文としてそのまま活用することができる。
【０１７４】
また、更なる特徴の一つとして以下の点も上げられる。すなわち、特定のＡＰＩカテゴリに属するＡＰＩのレスポンスボディに記述するＪＳＯＮ構文が同じ形式になっている点である。この仕様により、撮影パラメータの種類毎、またＨＴＴＰメソッド毎に処理を分ける必要がない。そのため、デジタルカメラ１００を制御するためのスマートデバイス２００の制御プログラムを作成するプログラマは、ＡＰＩカテゴリ４１２の撮影パラメータの処理は、同じ関数ですべて処理することが可能になる。つまり、撮影パラメータの種類毎に処理をかき分ける必要がなくなるため、プログラム量が減るといったメリットが生まれる。
【０１７５】
以上について、図１９、図２０を用いて、デジタルカメラ１００を制御するためのスマートデバイス２００の制御プログラムの視点に立って具体的に説明する。
【０１７６】
まず、従来のＪＳＯＮ構文の形式について何ら考慮されていない場合について述べる。ここでは、レスポンスボディに記述するＪＳＯＮ構文と、リクエストボディに記述するＪＳＯＮ構文が異なる形式であり、さらに、ＡＰＩカテゴリに属するＡＰＩのレスポンスボディに記述するＪＳＯＮ構文が異なる形式になっている場合を例に挙げる。
【０１７７】
図１９は、上記の場合の、デジタルカメラ１００を制御するためのスマートデバイス２００の制御プログラムのフローチャートである。
【０１７８】
本フローチャートの処理は、デジタルカメラ１００とスマートデバイス２００とが接続した状態で、アプリケーションによってＡＰＩがリクエストされることに応じて開始される。
【０１７９】
Ｓ１９０１にて、スマートデバイス２００の制御部２０１は、アプリケーションによってどのＡＰＩがリクエストされたかを判断する。日時情報を取得または変更するＡＰＩがリクエストされた場合、Ｓ１９０２に進む。露出補正値を取得または変更するＡＰＩがリクエストされた場合、Ｓ１９１０に進む。ＩＳＯ感度値を取得または変更するＡＰＩがリクエストされた場合、Ｓ１９１８に進む。なお、日時情報や露出補正値、ＩＳＯ感度値は、説明のための一例であり、他のＡＰＩがリクエストされることもある。
【０１８０】
まず、日時情報を取得または変更するＡＰＩがリクエストされた場合について説明する。
【０１８１】
Ｓ１９０２にて、スマートデバイス２００の制御部２０１は、どのＨＴＴＰメソッドがリクエストされたかを判断する。なお、日時情報を取得するためにＧＥＴメソッドがリクエストされ、変更するためにＰＵＴメソッドがリクエストされる。そこで、本ステップでは、ＧＥＴメソッドがリクエストされたか、ＰＵＴメソッドがリクエストされかを判断する。ＧＥＴメソッドがリクエストされた場合、Ｓ１９０３に進む。
【０１８２】
Ｓ１９０３にて、制御部２０１は、日時情報を取得するために所定のＵＲＬにＧＥＴメソッドでアクセスすることによって、日時情報を取得するＡＰＩをリクエストする。
【０１８３】
一方、ＰＵＴメソッドがリクエストされた場合、Ｓ１９０４に進む。
【０１８４】
Ｓ１９０４では、制御部２０１は、変更を指示された日時をＪＳＯＮに記述するためにＪＳＯＮのパラメータを生成する。
【０１８５】
そして、Ｓ１９０５にて、制御部２０１は、Ｓ１９０４で生成したパラメータを記述したＰＵＴ用のＪＳＯＮを生成する。
【０１８６】
その後、ＧＥＴと同様にＳ１９０３にて、制御部２０１は、日時情報を変更するために、所定のＵＲＬにＰＵＴメソッドでアクセスすることによって、日時情報を変更するＡＰＩをリクエストする。
【０１８７】
Ｓ１９０３のリクエストの結果、デジタルカメラ１００は現在カウントしている日時情報を、要求されたＡＰＩに従ったＪＳＯＮ構文の形式に記述し、レスポンスとして返す。
【０１８８】
Ｓ１９０６で制御部２０１は、このレスポンスを受信する。
【０１８９】
続くＳ１９０７で、制御部２０１は、どのメソッドのレスポンスかを判断する。
【０１９０】
ＧＥＴメソッドのレスポンスである場合、Ｓ１９０８にて、制御部２０１は、ＧＥＴメソッドのレスポンスで返されるＪＳＯＮ構文の形式に沿ったＪＳＯＮ解析処理を実行し、レスポンスから日時情報を取り出す。これによって、スマートデバイス２００はデジタルカメラ１００から日時情報を取得する。
【０１９１】
一方、ＰＵＴメソッドのレスポンスである場合、Ｓ１９０９にて、制御部２０１は、ＰＵＴメソッドのレスポンスで返されるＪＳＯＮ構文の形式に沿ったＪＳＯＮ解析処理を実行し、レスポンスから変更後の日時情報を取り出す。これによって、スマートデバイス２００はデジタルカメラ１００から日時情報の変更結果を取得する。
【０１９２】
以上、日時情報を取得または変更するＡＰＩがリクエストされた場合について説明した。
【０１９３】
次に、露出補正値を取得または変更するＡＰＩがリクエストされた場合について説明する。
【０１９４】
Ｓ１９１０にて、制御部２０１は、どのＨＴＴＰメソッドがリクエストされたかを判断する。なお、露出補正値を取得するためにＧＥＴメソッドがリクエストされ、変更するためにＰＵＴメソッドがリクエストされる。そこで、本ステップでは、ＧＥＴメソッドがリクエストされたか、ＰＵＴメソッドがリクエストされかを判断する。ＧＥＴメソッドがリクエストされた場合、Ｓ１９１１に進む。
【０１９５】
Ｓ１９１１にて、制御部２０１は、露出補正値を取得するために所定のＵＲＬにＧＥＴメソッドでアクセスすることによって、露出補正値を取得するＡＰＩをリクエストする。
【０１９６】
一方、ＰＵＴメソッドがリクエストされた場合、Ｓ１９１２に進む。
【０１９７】
Ｓ１９１２では、制御部２０１は、変更を指示された露出補正値をＪＳＯＮに記述するためにＪＳＯＮのパラメータを生成する。
【０１９８】
そして、Ｓ１９１３にて、制御部２０１は、Ｓ１９１２で生成したパラメータを記述したＰＵＴ用のＪＳＯＮを生成する。
【０１９９】
その後、ＧＥＴと同様にＳ１９１１にて、制御部２０１は、露出補正値を変更するために、所定のＵＲＬにＰＵＴメソッドでアクセスすることによって、露出補正値を変更するＡＰＩをリクエストする。
【０２００】
Ｓ１９１１のリクエストの結果、デジタルカメラ１００は現在の露出補正値を、要求されたＡＰＩに従ったＪＳＯＮ構文の形式に記述し、レスポンスとして返す。
【０２０１】
Ｓ１９１４で制御部２０１は、このレスポンスを受信する。
【０２０２】
続くＳ１９１５で、制御部２０１は、どのメソッドのレスポンスかを判断する。
【０２０３】
ＧＥＴメソッドのレスポンスである場合、Ｓ１９１６にて、制御部２０１は、ＧＥＴメソッドのレスポンスで返されるＪＳＯＮ構文の形式に沿ったＪＳＯＮ解析処理を実行し、レスポンスから露出補正値を取り出す。これによって、スマートデバイス２００はデジタルカメラ１００から露出補正値を取得する。
【０２０４】
一方、ＰＵＴメソッドのレスポンスである場合、Ｓ１９１７にて、制御部２０１は、ＰＵＴメソッドのレスポンスで返されるＪＳＯＮ構文の形式に沿ったＪＳＯＮ解析処理を実行し、レスポンスから変更後の露出補正値を取り出す。これによって、スマートデバイス２００はデジタルカメラ１００から露出補正値の変更結果を取得する。
【０２０５】
以上、露出補正値を取得または変更するＡＰＩがリクエストされた場合について説明した。
【０２０６】
次に、ＩＳＯ感度値を取得または変更するＡＰＩがリクエストされた場合について説明する。
【０２０７】
Ｓ１９１８にて、制御部２０１は、どのＨＴＴＰメソッドがリクエストされたかを判断する。なお、ＩＳＯ感度値を取得するためにＧＥＴメソッドがリクエストされ、変更するためにＰＵＴメソッドがリクエストされる。そこで、本ステップでは、ＧＥＴメソッドがリクエストされたか、ＰＵＴメソッドがリクエストされかを判断する。ＧＥＴメソッドがリクエストされた場合、Ｓ１９１９に進む。
【０２０８】
Ｓ１９１９にて、制御部２０１は、ＩＳＯ感度値を取得するために所定のＵＲＬにＧＥＴメソッドでアクセスすることによって、ＩＳＯ感度値を取得するＡＰＩをリクエストする。
【０２０９】
一方、ＰＵＴメソッドがリクエストされた場合、Ｓ１９２０に進む。
【０２１０】
Ｓ１９２０では、制御部２０１は、変更を指示されたＩＳＯ感度値をＪＳＯＮに記述するためにＪＳＯＮのパラメータを生成する。
【０２１１】
そして、Ｓ１９２１にて、制御部２０１は、Ｓ１９２０で生成したパラメータを記述したＰＵＴ用のＪＳＯＮを生成する。
【０２１２】
その後、ＧＥＴと同様にＳ１９１９にて、制御部２０１は、ＩＳＯ感度値を変更するために、所定のＵＲＬにＰＵＴメソッドでアクセスすることによって、ＩＳＯ感度値を変更するＡＰＩをリクエストする。
【０２１３】
Ｓ１９１９のリクエストの結果、デジタルカメラ１００は現在のＩＳＯ感度値を、要求されたＡＰＩに従ったＪＳＯＮ構文の形式に記述し、レスポンスとして返す。
【０２１４】
Ｓ１９２２で制御部２０１は、このレスポンスを受信する。
【０２１５】
続くＳ１９２３で、制御部２０１は、どのメソッドのレスポンスかを判断する。
【０２１６】
ＧＥＴメソッドのレスポンスである場合、Ｓ１９２４にて、制御部２０１は、ＧＥＴメソッドのレスポンスで返されるＪＳＯＮ構文の形式に沿ったＪＳＯＮ解析処理を実行し、レスポンスからＩＳＯ感度値を取り出す。これによって、スマートデバイス２００はデジタルカメラ１００からＩＳＯ感度値を取得する。
【０２１７】
一方、ＰＵＴメソッドのレスポンスである場合、Ｓ１９２５にて、制御部２０１は、ＰＵＴメソッドのレスポンスで返されるＪＳＯＮ構文の形式に沿ったＪＳＯＮ解析処理を実行し、レスポンスから変更後のＩＳＯ感度値を取り出す。これによって、スマートデバイス２００はデジタルカメラ１００からＩＳＯ感度値の変更結果を取得する。
【０２１８】
以上、ＩＳＯ感度値を取得または変更するＡＰＩがリクエストされた場合について説明した。
【０２１９】
以上のように、各ＡＰＩ毎にＰＵＴメソッドのリクエストで用いるＪＳＯＮ構文の形式が異なる、Ｓ１９０５、Ｓ１９１３、Ｓ１９２１に示す通り、それぞれに対して異なるＪＳＯＮ生成プログラムを用意する必要がある。更に、各ＡＰＩのリクエストメソッド毎に、ＪＳＯＮ構文の形式が異なる場合、Ｓ１９０８、Ｓ１９０９、Ｓ１９１６、Ｓ１９１７、Ｓ１９２４、Ｓ１９２５に示す通り、それぞれに対して異なるＪＳＯＮ解析プログラムを用意する必要がある。
【０２２０】
続いて、本実施形態にて提案するＡＰＩを利用した場合について説明する。ここでは、レスポンスボディに記述するＪＳＯＮ構文と、リクエストボディに記述するＪＳＯＮ構文が同じ形式であり、さらに、特定のＡＰＩカテゴリに属するＡＰＩのレスポンスボディに記述するＪＳＯＮ構文が同じ形式である場合の一例を挙げて説明する。
【０２２１】
図２０は、本実施形態にて提案するＡＰＩを利用した場合の、デジタルカメラ１００を制御するためのスマートデバイス２００の制御プログラムのフローチャートである。
【０２２２】
本フローチャートの処理は、デジタルカメラ１００とスマートデバイス２００とが接続した状態で、アプリケーションによってＡＰＩがリクエストされることに応じて開始される。
【０２２３】
Ｓ２００１では、図１９のＳ１９０１と同様の処理が実行され、アプリケーショによってリクエストされたＡＰＩの種類が判断される。
【０２２４】
まず、Ｓ２００１にて、日時情報を取得または変更するＡＰＩ７０１がリクエストされた場合について説明する。この場合、Ｓ２００２に進む。
【０２２５】
Ｓ２００２からＳ２００６までは、図１９のＳ１９０２からＳ１９０６までと同様の処理が実行される。
【０２２６】
続くＳ２００７では、制御部２０１は、レスポンスで返されるＪＳＯＮ構文を、ＧＥＴメソッドとＰＵＴメソッドの両方に共通して用いることのできるＪＳＯＮ解析処理によって解析し、現在の日時情報または日時情報の変更結果を取り出す。このように、ＪＳＯＮ構文の形式が同じ形式である場合、メソッドが異なっていても、解析処理を一つにまとめることができるため、プログラムを実装する負荷が軽減される。
【０２２７】
続いて、Ｓ２００１にて、露出補正値を取得または変更するＡＰＩ１１０１がリクエストされた場合について説明する。この場合、処理はＳ２００８に進む。
【０２２８】
Ｓ２００８からＳ２０１２までは、図１９のＳ１９１０からＳ１９１４までと同様の処理が実行される。
【０２２９】
続くＳ２００９では、制御部２０１は、レスポンスで返されるＪＳＯＮ構文を、ＧＥＴメソッドとＰＵＴメソッドの両方に共通して用いることのできるＪＳＯＮ解析処理によって解析し、現在の露出補正値または露出補正値の変更結果を取り出す。このように、ＪＳＯＮ構文の形式が同じ形式である場合、メソッドが異なっていても、解析処理を一つにまとめることができるため、プログラムを実装する負荷が軽減される。なお、図１１に示す露出補正値のＡＰＩのレスポンスボディは、ＧＥＴの場合、”ｖａｌｕｅ”と”ａｂｉｌｉｔｙ”とがあり、ＰＵＴの場合”ｖａｌｕｅ”だけである。ＪＳＯＮ構文の形式が異なるが、その一方で”ｖａｌｕｅ”というフィールドは共通する。従って、共通した解析処理を実行し、”ｖａｌｕｅ”というフィールドについてはＧＥＴとＰＵＴの両方で参照し、”ａｂｉｌｉｔｙ”については、ＰＵＴの場合のみ参照するように解析処理を設計することができる。これにより、フィールドがすべて異なる場合の解析処理を設計する場合よりも、プログラム量を減らすことができる。
【０２３０】
続いて、Ｓ２００１にて、ＩＳＯ感度値を取得または変更するＡＰＩ１１０２がリクエストされた場合について説明する。この場合、処理はＳ２０１４に進む。
【０２３１】
Ｓ２０１４では、図１９のＳ１９１８と同様に、制御部２０１は、どのＨＴＴＰメソッドがリクエストされたかを判断する。
【０２３２】
ＧＥＴメソッドがリクエストされた場合、Ｓ２００９に進み、露出補正値を取得または変更するＡＰＩがリクエストされた場合と同様の処理が実行される。これは、ＩＳＯ感度値を取得するＧＥＴメソッドと、露出補正値を取得するＧＥＴメソッドとの、それぞれのレスポンスのＪＳＯＮ構文の形式が同じ形式であるため実現され得る。すなわち、構文の形式が同じであるため、構文の解析も共通化でき、実装負荷を軽減することができる。
【０２３３】
一方、ＰＵＴメソッドがリクエストされた場合、Ｓ２０１５に進む。
【０２３４】
Ｓ２０１５では、制御部２０１は、変更を指示されたＩＳＯ感度値をＪＳＯＮに記述するためにＪＳＯＮのパラメータを生成する。その後、Ｓ２０１１にて、露出補正値を変更するＰＵＴメソッドと同様のＪＳＯＮ生成処理によってＳ２０１５で生成したパラメータを記述する。これは、ＩＳＯ感度値を変更するＰＵＴメソッドと、露出補正値を変更するＰＵＴメソッドとの、それぞれのレスポンスのＪＳＯＮ構文の形式が同じ形式であるため実現され得る。すなわち、構文の形式が同じであるため、構文の生成も共通化でき、実装負荷を軽減することができる。その後は、Ｓ２００９に進み、露出補正値を変更する場合と同様の処理が実行される。
【０２３５】
以上のように、本実施形態の通信ＡＰＩを用いる場合、ＨＴＴＰメソッド毎にＪＳＯＮ構文の処理プログラムをそれぞれ用意する必要はない。加えて、レスポンスボディのＪＳＯＮ構文が同じＡＰＩはすべて、同じプログラムで処理することが可能となる。つまり、図２０のフローチャートからわかるように処理プログラムの量が減るため、実装者が簡単に使い方を理解し、好適にプログラム作成できる。
【０２３６】
なお、本実施例ではＡＰＩカテゴリ４１２を例に説明したが、その他のＡＰＩカテゴリにおいてもリクエストボディとレスポンスボディのＪＳＯＮ構文が同じであれば同様の効果が得られる。カテゴリによっては、すべて同じＪＳＯＮ構文の構成を同じにすることが難しい場合もあるが、少なくとも同じものはひとまとめにして処理できるため、同様に実装負荷の軽減効果が得られる。
【０２３７】
＜カメラの動作について＞
次に、図２０に対応するカメラの動作について説明する。
【０２３８】
図２１は、デジタルカメラ１００の動作を示すフローチャートである。本フローチャートは接続状態にあるスマートデバイス２００から、通信ＡＰＩを用いてリクエストを受け付けたことに応じて開始される。
【０２３９】
Ｓ２１０１では、制御部１０１は、スマートデバイス２００から受信した通信ＡＰＩを用いたリクエストの種類を判断する。日時情報を取得または変更するリクエストを受信した場合、処理はＳ２２０２に進む。露出補正値を取得または変更するリクエストを受信した場合、処理はＳ２２０７に進む。ＩＳＯ感度値を取得または変更するリクエストを受信した場合、処理はＳ２２１２に進む。
【０２４０】
Ｓ２１０２では、制御部１０１は、リクエストされたメソッドを判断する。ＧＥＴの場合Ｓ２１０３に進む。ＰＵＴの場合Ｓ２１０４に進む。
【０２４１】
Ｓ２１０３では、制御部１０１は、現在の日時情報を読み出し、日時情報をＪＳＯＮに記述するためのパラメータを生成する。
【０２４２】
Ｓ２１０４では、制御部１０１は、指定された日時情報に変更し、変更した結果をＪＳＯＮに記述するためのパラメータを生成する。
【０２４３】
Ｓ２１０５では、制御部１０１は、共通のＪＳＯＮ生成処理によって、Ｓ２１０３またはＳ２１０４で生成されたパラメータを、共通のＪＳＯＮ構文の形式に記述する。
【０２４４】
Ｓ２１０６では、制御部１０１は、Ｓ２１０５で生成したＪＳＯＮと共にリクエストに対するレスポンスをスマートデバイス２００に返す。
【０２４５】
Ｓ２１０７では、制御部１０１は、メソッドを判断する。ＧＥＴの場合Ｓ２１０８に進む。ＰＵＴの場合Ｓ２１１０に進む。
【０２４６】
Ｓ２１０８では、制御部１０１は、現在の露出補正値を読み出し、露出補正値をＪＳＯＮに記述するためのパラメータを生成する。
【０２４７】
続くＳ２１０９では、制御部１０１はＧＥＴメソッドで共通のＪＳＯＮ生成処理によって、Ｓ２１０８で生成されたパラメータを、ＧＥＴメソッドで共通のＪＳＯＮ構文の形式に記述する。その後、Ｓ２１０６で、制御部１０１は、Ｓ２１０９で生成したＪＳＯＮと共にリクエストに対するレスポンスをスマートデバイス２００に返す。
【０２４８】
Ｓ２１１０では、制御部１０１は、指定された露出補正値に変更し、変更した結果をＪＳＯＮに記述するためのパラメータを生成する。
【０２４９】
続くＳ２１１１では、制御部１０１はＰＵＴメソッドで共通のＪＳＯＮ生成処理によって、Ｓ２１１０で生成されたパラメータを、ＰＵＴメソッドで共通のＪＳＯＮ構文の形式に記述する。その後、Ｓ２１０６で、制御部１０１は、Ｓ２１１１で生成したＪＳＯＮと共にリクエストに対するレスポンスをスマートデバイス２００に返す。
【０２５０】
Ｓ２１１２では、制御部１０１は、メソッドを判断する。ＧＥＴの場合Ｓ２１１４に進む。ＰＵＴの場合Ｓ２１１３に進む。
【０２５１】
Ｓ２１１３では、制御部１０１は、指定されたＩＳＯ感度値に変更し、変更した結果をＪＳＯＮに記述するためのパラメータを生成する。その後、Ｓ２１１１にて、露出補正値と同様のＪＳＯＮ構文の形式にパラメータを記述し、Ｓ２１０６にてレスポンスとしてスマートデバイス２００に送信される。
【０２５２】
Ｓ２１１４では、制御部１０１は、現在のＩＳＯ感度値を読み出し、ＩＳＯ感度値をＪＳＯＮに記述するためのパラメータを生成する。その後、Ｓ２１０９にて、露出補正値と同様のＪＳＯＮ構文の形式にパラメータを記述し、Ｓ２１０６にてレスポンスとしてスマートデバイス２００に送信される。
【０２５３】
以上が図２０に対応するデジタルカメラ１００の動作の説明である。
【０２５４】
以上説明したように、ＧＥＴメソッドとＰＵＴメソッドとで共通のＪＳＯＮ構文の形式を持つレスポンスを返すことで、通信ＡＰＩを用いたアプリケーションの実装負荷を軽減することができる。また、各メソッドに対するレスポンスのＪＳＯＮ構文の形式を、特定のＡＰＩカテゴリ内のＡＰＩ間で共通にすることで、同様に通信ＡＰＩを用いたアプリケーションの実装負荷を軽減することができる。
【０２５５】
［他の実施形態］
以上、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。上述の実施形態の一部を適宜組み合わせてもよい。また、上述の実施形態の機能を実現するソフトウェアのプログラムを、記録媒体から直接、或いは有線／無線通信を用いてプログラムを実行可能なコンピュータを有するシステム又は装置に供給し、そのプログラムを実行する場合も本発明に含む。従って、本発明の機能処理をコンピュータで実現するために、該コンピュータに供給、インストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明の機能処理を実現するためのコンピュータプログラム自体も本発明に含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。プログラムを供給するための記録媒体としては、例えば、ハードディスク、磁気テープ等の磁気記録媒体、光／光磁気記憶媒体、不揮発性の半導体メモリでもよい。また、プログラムの供給方法としては、コンピュータネットワーク上のサーバに本発明を形成するコンピュータプログラムを記憶し、接続のあったクライアントコンピュータはがコンピュータプログラムをダウンロードしてプログラムするような方法も考えられる。
【符号の説明】
【０２５６】
１００  デジタルカメラ
２００  スマートデバイス
１０１，２０１  制御部
１０２，２０２  撮像部
１０３，２０３  不揮発性メモリ
１０４，２０４  作業用メモリ
１０５，２０５  操作部
１０６，２０６  表示部
１１０，２１０  記録媒体
１１１，２１１  通信部
【図１】
2020091788.tif 000003
【図２】
2020091788.tif 000004
【図３】
2020091788.tif 000005
【図４】
2020091788.tif 000006
【図５】
2020091788.tif 000007
【図６】
2020091788.tif 000008
【図７】
2020091788.tif 000009
【図８】
2020091788.tif 000010
【図９】
2020091788.tif 000011
【図１０】
2020091788.tif 000012
【図１１】
2020091788.tif 000013
【図１２】
2020091788.tif 000014
【図１３】
2020091788.tif 000015
【図１４】
2020091788.tif 000016
【図１５】
2020091788.tif 000017
【図１６】
2020091788.tif 000018
【図１７】
2020091788.tif 000019
【図１８】
2020091788.tif 000020
【図１９】
2020091788.tif 000021
【図２０】
2020091788.tif 000022
【図２１】
2020091788.tif 000023