JP7218165B2 - 通信装置、通信装置の制御方法、プログラム - Google Patents

通信装置、通信装置の制御方法、プログラム Download PDF

Info

Publication number
JP7218165B2
JP7218165B2 JP2018229968A JP2018229968A JP7218165B2 JP 7218165 B2 JP7218165 B2 JP 7218165B2 JP 2018229968 A JP2018229968 A JP 2018229968A JP 2018229968 A JP2018229968 A JP 2018229968A JP 7218165 B2 JP7218165 B2 JP 7218165B2
Authority
JP
Japan
Prior art keywords
request
api
digital camera
communication device
communication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018229968A
Other languages
English (en)
Other versions
JP2020091788A5 (ja
JP2020091788A (ja
Inventor
幸史 徳永
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2018229968A priority Critical patent/JP7218165B2/ja
Priority to CN201911100436.7A priority patent/CN111294506B/zh
Priority to US16/694,863 priority patent/US11522941B2/en
Priority to KR1020190156247A priority patent/KR102473833B1/ko
Priority to EP19213451.8A priority patent/EP3664460A1/en
Publication of JP2020091788A publication Critical patent/JP2020091788A/ja
Publication of JP2020091788A5 publication Critical patent/JP2020091788A5/ja
Application granted granted Critical
Publication of JP7218165B2 publication Critical patent/JP7218165B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/66Remote control of cameras or camera parts, e.g. by remote control devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/422Input-only peripherals, i.e. input devices connected to specially adapted client devices, e.g. global positioning system [GPS]
    • H04N21/4223Cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/431Generation of visual interfaces for content selection or interaction; Content or additional data rendering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4431OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB characterized by the use of Application Program Interface [API] libraries
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8166Monomedia components thereof involving executable data, e.g. software
    • H04N21/8173End-user applications, e.g. Web browser, game
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/617Upgrading or updating of programs or applications for camera control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/66Remote control of cameras or camera parts, e.g. by remote control devices
    • H04N23/661Transmitting camera control signals through networks, e.g. control via the Internet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/69Control of means for changing angle of the field of view, e.g. optical zoom objectives or electronic zooming
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/14Picture signal circuitry for video frequency region
    • H04N5/21Circuitry for suppressing or minimising disturbance, e.g. moiré or halo
    • H04N5/213Circuitry for suppressing or minimising impulsive noise

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Library & Information Science (AREA)
  • Studio Devices (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は外部装置と通信できる通信装置に関する。
近年、デジタルカメラや携帯電話等の通信装置の通信機能の進歩に伴い、通信装置同士でコンテンツを送受信することが行われている。
特許文献1では、HTTPのようなサーバ・クライアントのシステムを用いて、カメラがサーバ側となってリモート撮影を実現することが開示されている。
特開2013-073506号公報
HTTPのサーバ・クライアントのシステムを用いたリモートコントロール機能をユーザに提供する場合、リモートコントロールされるカメラがサーバとなり、リモートコントロールする側がクライアントとなる。そして、クライアントとなる装置にカメラをコントロールするプログラムを実装することで、リモートコントロールを実現する。この場合、カメラを制御するためのURLと実行可能なHTTPメソッドの組み合わせをAPI(Application Programming Interface)として公開することで、クライアントのプログラム実装負荷を低減することが考えられる。対向機であるクライアントには、公開されたAPIの仕様に基づいて、リモートコントロールを実現するプログラムを実装する。しかしながら、公開されたURLとHTTPメソッド、及びリクエストボディやレスポンスボディの扱い方といったAPIの仕様は独自の仕様を展開していることが多く、API仕様書を確認しなければわからないことが多い。特に、公開されたURL毎やメソッド毎にリクエストボディやレスポンスボディの構造が異なる場合、それぞれの構造を理解する負荷が大きく、APIの公開によって負荷が低減されたとしても、依然として実装負荷が残ることが想定される。
そこで、本発明は、通信装置を制御するための対向アプリケーションを開発する際の実装負荷をより低減することを目的とする。
上記の目的のため、本発明の通信装置は、外部装置とHTTPに従って通信する通信手段と、複数のAPIに対応するプログラムを記録する記録媒体と、前記通信手段を介して前記複数のAPIのうちいずれかのAPIに関するリクエストを受け付けた場合、前記リクエストを受け付けたAPIに対応するプログラムを実行すると共に、前記リクエストに対し、所定の構造で記述されるデータセットを含むレスポンスを返すよう前記通信手段を制御する制御手段とを有し、前記制御手段は、前記複数のAPIのうち所定のAPIに関する第一のHTTPリクエストメソッドを用いたリクエストを受信した場合のレスポンスボディのフィールド名と、前記所定のAPIに関する第二のHTTPリクエストメソッドを用いたリクエストを受信した場合のレスポンスボディのフィールド名とが同一に記述されるようよう制御することを特徴とする。
本発明によれば、通信装置を制御するための対向アプリケーションを開発する際の実装負荷をより低減することができる。
実施形態におけるデジタルカメラのブロック構成、正面、背面を示す図である。 実施形態におけるスマートデバイスの構成を示すブロック図である。 実施形態におけるシステム構成を示すブロック図である。 実施形態における通信APIの基本構成を示す図である。 実施形態におけるデジタルカメラの固定情報や状態情報を取得するAPIを説明する図である。 実施形態におけるデジタルカメラの固定情報や状態情報を取得するAPIを実行した場合のシーケンス図である。 実施形態におけるデジタルカメラのメニュー設定を取得、変更するAPIを説明するための図である。 実施形態におけるデジタルカメラのメニュー設定を取得、変更するAPIを実行した場合のシーケンス図である。 実施形態におけるデジタルカメラの撮影機能を実行するAPIを説明するための図である。 実施形態におけるデジタルカメラの撮影機能を実行するAPIを実行した場合のシーケンス図である。 実施形態におけるデジタルカメラの撮影パラメータを取得、変更するAPIを説明するための図である。 実施形態におけるデジタルカメラの撮影パラメータを取得、変更するAPIを実行した場合のシーケンス図である。 実施形態におけるデジタルカメラのスルー画を取得するAPIを説明するための図である。 実施形態におけるデジタルカメラのスルー画を取得するAPIを実行した場合のシーケンス図である。 実施形態におけるデジタルカメラのイベント情報を取得するAPIを説明するための図である。 実施形態におけるデジタルカメラのイベント情報を取得するAPIを実行した場合のシーケンス図である。 実施形態におけるデジタルカメラのコンテンツファイルを取得するAPIを説明するための図である。 実施形態におけるデジタルカメラのコンテンツファイルを取得するAPIを実行した場合のシーケンス図である。 実施形態におけるスマートデバイスで動作するデジタルカメラ100を従来の通信APIで制御するプログラムのフローチャートである。 実施形態におけるスマートデバイスで動作するデジタルカメラ100を実施形態の通信APIで制御するプログラムのフローチャートである。 実施形態におけるデジタルカメラの動作を示すフローチャートである。
以下、添付図面に従って本発明の実施形態を詳細に説明する。なお、以下に説明する実施形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正又は変更されてもよい。また、各実施の形態を適宜組み合せることも可能である。
[第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に限定されるものではなく、例えば赤外線通信方式、Bluewtooth(登録商標)通信方式、WirelessUSB等の無線通信方式などを含むことができる。さらには、USBケーブルやHDMI(登録商標)、IEEE1394、Ethernetなど、有線接続を採用してもよい。
近距離通信部112は、例えば無線通信のためのアンテナと無線信号を処理するため変復調回路や通信コントローラから構成される。近距離通信部112は、変調した無線信号をアンテナから出力し、またアンテナで受信した無線信号を復調することでISO/IEC 18092の規格(いわゆるNFC:Near Field Communication)に従った近距離通信を実現する。またその他、赤外線通信方式、Bluewtooth(登録商標)通信方式、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は、赤外線通信モジュール、Bluewtooth(登録商標)通信モジュール、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とスマートデバイス200が、ネットワークルータ302を経由して接続する構成である。この時ネットワークルータがWi-FiアクセスポイントとなってLANを構築する。デジタルカメラ100とスマートデバイス200AはWi-Fiクライアントとなり、ネットワークルータ302が構築したLANにジョインする。なお本実施例においては、通信303、304がWi-Fiで接続されている例をあげたが、Ethernetなどのような有線接続であってもよい。
最後に、ネットワークルータ302、通信303、公衆回線305に示すように、スマートデバイス200Bが公衆回線305を経由してデジタルカメラ100と接続する構成である。前述の2つのシステム構成では、同一LAN内での接続の構成となる。一方、この構成では、例えばVPN(Virtual Private Network)を使用することで、インターネットを通じ、LANの外側の離れた場所からデジタルカメラ100と通信することが可能である。なお、VPNは公知の技術であるため、ここでは説明を割愛する。
以上の3種類のシステム構成において、スマートデバイス200はデジタルカメラ100の通信APIを利用できる。
<デジタルカメラ100が公開する通信APIの基本構成>
図4、図5、図7、図9、図11、図13、図15、図17は、スマートデバイス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レスポンスボディに付加して、外部機器に返却する。以上の手順で実現される。
また、通信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の基本的な構成の説明である。続いて、各APIカテゴリにおける個々の仕様について説明する。
<デジタルカメラ100の固定情報や状態情報を取得するAPI>
図5のAPI表500は、デジタルカメラ100の固定情報と状態情報を取得するAPI群を示した表であり、図4のAPIカテゴリ408、409に属するAPIを示す。なお、表においてAPI名(URL)は省略した表記になっている。実際にはAPI502は、
http://192.168.1.1:8080/api/ver1/devicestatus/storage
となる。以下で説明するすべてのAPI表が省略した表記になる。
API501は、デジタルカメラ100の固定情報を取得するAPIである。本APIをGET401で実行すると、製品名、製造者名、ファームウェアバージョン、シリアルナンバーなど、原則的に変更されない固定の機器情報が取得できる。不図示だが、MACアドレスなどもそれに当てはまる。
API502は、デジタルカメラ100に装着されたメディアなど記録媒体110の情報を取得するAPIである。本APIをGET401で実行すると、SDかCFなどといったメディアの種類、アクセス能力(Read/Write、Readのみ、Writeのみ)、保存可能容量や現在の空き容量、保存されているコンテンツの総数が取得できる。
API503は、図1に不図示であるがデジタルカメラ100に装着されたバッテリーの情報を取得するAPIである。本APIをGET401で実行すると、バッテリーの名称、バッテリーの名称、バッテリーの残量、バッテリーの劣化度が取得できる。
なお、デジタルカメラ100の状態情報については、上記以外にデジタルカメラ100の内部温度、レンズ交換式のデジタルカメラであれば装着されているレンズの製品名や種類といったレンズ情報などもそれに当てはまる。
なお、API502とAPI503は、デジタルカメラ100の状態情報を取得するAPIであるため、同じAPIカテゴリ内のディレクトリにURLが規定されているのが特徴である。
図6は、デジタルカメラ100とスマートデバイス200を接続し、図5で示す通信APIを実行した際の処理の流れを示すシーケンスである。なお、APIを実行するまでに必要なWi-Fi接続の処理と機器発見の処理は実行されたものとしてここでの説明は割愛する。
ステップS601、S602は、API501を実行した際のシーケンスである。ステップS603、S604は、API502を実行した際のシーケンスである。
ステップS601にて、スマートデバイス200の制御部201は、通信部211を介してAPI501をGET401でデジタルカメラ100にリクエストする。
ステップS602にて、デジタルカメラ100の制御部101が通信部111を介してこのリクエストを受信したことを検知すると、製品名、製造者名、ファームウェアバージョン、シリアルナンバーを不揮発性メモリ103より取得する。そして、レスポンス用JSON構文に基づいたデータセットに成形する。更に、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
ステップS603にて、スマートデバイス200の制御部201は、通信部211を介してAPI502をGET401でデジタルカメラ100にリクエストする。
ステップS604にて、デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、種々の情報を、記憶媒体110もしくは不揮発性メモリ103より取得する。ここで取得される情報は、例えば記憶媒体110のメディアの種類、アクセス能力、保存可能容量、空き容量、保存されているコンテンツの総数である。取得された情報は、レスポンス用JSON構文に基づいたデータセットに成形される。
そして、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。なお、API503を含めた本APIカテゴリに属するすべてのAPIは、S603、S604のように処理するため説明は割愛する。
以上が、デジタルカメラ100の固定情報や状態情報を取得するAPIについての説明である。
<デジタルカメラ100のメニュー機能の設定を取得、変更するAPI>
図7のAPI表700は、デジタルカメラ100のメニュー機能の設定を取得、変更するAPI群を示した表であり、図4のAPIカテゴリ410に属するAPIを示す。なお、本実施例におけるデジタルカメラ100のメニュー機能とは、メニュー形式で一覧される各種設定項目のことを指す。
API701は、デジタルカメラ100のメニュー機能で設定できる日付時刻情報を取得、変更するAPIである。本APIの日付時刻情報はRFC1123に準拠した形式で表記される。なお、他に規格に準拠した表記、または独自の形式に則したものであってもよい。本APIをGET401で実行すると、デジタルカメラ100に設定されている日付時刻情報が取得できる。また、規定された表記に倣って日付時刻の設定値をリクエストボディに記述してPUT403で実行すると、リクエストボディに記述した日付時刻の設定値がデジタルカメラ100に反映される。
API702は、撮影して生成されるコンテンツ(画像)ファイルに記録されるメタ情報の1つである著作権者名の設定情報を取得、変更、削除を行うAPIである。本APIをGET401で実行すると、現在設定されている著作権者名が取得できる。また、著作権者名をリクエストボディに記述してPUT403で実行すると、リクエストボディに記述した著作権者名がデジタルカメラ100に反映される。また、本APIをDELETE404で実行すると、著作権者名が初期値に変更される。本実施例では初期値が空の状態であるため、記録されていた著作権者名がクリアされる。
なお、デジタルカメラ100のメニュー設定は上記に限らない。不図示であるが、記録媒体110のフォーマットの指示、デジタルカメラの操作音の設定、デジタルカメラを自動的に電源オフするまでの時間を設定するオートパワーオフ設定などがそれに当てはまる。
ここで特徴的なのは、以下の点である。すなわち、図7のAPIの仕様として、PUTメソッドのようにリクエストとレスポンスの両方にJSON構文が付随するメソッドの場合、レスポンスボディに記述するJSON構文と、リクエストボディに記述するJSON構文とを、同じ形式にする。具体的には、API701では、リクエストとレスポンスの両者とも、JSONの“datetime”と“dst”の2つのフィールド名が同じであり、値の形式もRFC1123に準拠した形式で同じである。API702においても、JSONのフィールド名が“copyright”となり同じである。このような仕様にすることで、デジタルカメラ100を制御するためのスマートデバイス200の制御プログラムを作成するプログラマは、JSON構文が同じであるため、HTTPメソッドによって処理プログラムを書き分ける必要がなくなる。デジタルカメラ100から送信されたレスポンスボディに記述されたJSON構文を複製し必要な部分のみを変更したものを、PUTメソッドを実行する際のリクエストボディに記述するJSON構文としてそのまま活用することができる。そのため、プログラム量が減るといったメリットが生まれる。
図8は、図7で示す通信APIを実行した際の処理の流れを示すシーケンスである。
ステップS801、S802、S803、S804は、API701を実行した際のシーケンスである。
ステップS801にて、スマートデバイス200の制御部201は、通信部211を介してAPI701をGET401でデジタルカメラ100にリクエストする。
ステップS802にて、デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、日付時刻の情報を不揮発性メモリ103より取得し、レスポンス用JSON構文に基づいたデータセットに成形する。そして、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
ステップS803にて、スマートデバイス200の制御部201は、プログラム処理によって作業用メモリ204に記録された日付時刻の情報を、リクエスト用JSON構文に基づいたデータセットに成形してリクエストボディに記述する。そして、通信部211を介してAPI701をPUT403でデジタルカメラ100にリクエストする。
ステップS804にて、デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、リクエストボディに記述されたJSON構文を解析し、リクエストされた日付時刻情報を不揮発性メモリ103に記録する。設定が完了すると、制御部101は設定が完了した日付時刻情報をJSON構文に基づいたデータセットに成形してレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
なお、API702もS801、S802と同様のシーケンスで処理するため説明は割愛する。
以上が、デジタルカメラ100のメニュー設定を取得、変更するAPIについての説明である。
<デジタルカメラ100の撮影機能を実行するAPI>
図9のAPI表900は、デジタルカメラ100の撮影機能を実行するAPI群を示した表であり、図4のAPIカテゴリ411に属するAPIを示す。
API901は、静止画を撮影するAPIである。本APIをPOST402で実行すると、デジタルカメラ100は撮影処理を実行し、生成されたコンテンツファイル(静止画ファイル)を記録媒体110に記録する。
API902は、デジタルカメラ100の動画撮影を実行するAPIである。本APIをPOSTメソッドで実行すると、デジタルカメラ100に動画撮影の開始と停止を指示できる。本APIをPOST402で実行すると、生成されたコンテンツファイル(動画ファイル)を記録媒体110に保存する。
図10は、図9で示す通信APIを実行した際の処理の流れを示すシーケンスである。
ステップS1001、S1002はAPI901を実行した際のシーケンスであり、ステップS1003、S1004、S1005、S1006はAPI902を実行した際のシーケンスである。
ステップS1001にて、スマートデバイス200の制御部201は、プログラム処理により作業用メモリ204に記録された静止画撮影指示を取得する。そして、静止画撮影指示をリクエスト用JSON構文に基づいたデータセットに成形してリクエストボディに記述し、通信部211を介してAPI901をPOST402でデジタルカメラ100にリクエストする。なおS1001では、静止画撮影をする際、AF(オートフォーカス)を実行するよう指示している。デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、AF処理と撮影処理を実行する。撮影処理が完了すると、生成されたコンテンツファイル(静止画ファイル)を記録媒体110に記録する。
ステップS1002にて、制御部101は、レスポンス用JSON構文に基づいたデータセットに成形する。そして、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
ステップS1003にて、スマートデバイス200の制御部201は、プログラム処理により作業用メモリ204に記録された動画撮影の開始指示を取得する。そして、動画撮影の開始指示をリクエスト用JSON構文に基づいたデータセットに成形してリクエストボディに記述し、通信部211を介してAPI902をPOST402でデジタルカメラ100にリクエストする。なおS1003では、録画を開始するよう指示している。デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、動画の録画処理を開始する。
ステップS1004にて、制御部101は録画の開始処理が完了すると、レスポンス用JSON構文に基づいたデータセットに成形する。そして、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
ステップS1005にて、スマートデバイス200の制御部201は、プログラム処理により作業用メモリ204に記録された動画撮影の停止指示を取得する。そして、動画撮影の停止指示をリクエスト用JSON構文に基づいたデータセットに成形してリクエストボディに記述し、通信部211を介してAPI902をPOST402でデジタルカメラ100にリクエストする。なおS1005では、録画を停止するよう指示している。デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると録画を終了する。録画の停止処理が完了すると、生成されたコンテンツファイル(動画ファイル)を記録媒体110に記録する。
ステップS1006にて、制御部101は、レスポンス用JSON構文に基づいたデータセットに成形する。そして、制御部101は形成したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
以上が、デジタルカメラ100の撮影機能を実行するするAPIについての説明である。
<デジタルカメラ100の撮影パラメータを取得、変更するAPI>
図11のAPI表1100は、デジタルカメラ100の撮影パラメータを取得、変更するAPI群を示した表であり、図4のAPIカテゴリ412に属するAPIを示す。
API1101は、デジタルカメラ100の露出補正の値を取得、変更するAPIである。本APIをGET401で実行すると、デジタルカメラ100に設定されている露出補正の現在値と設定可能値が取得できる。また、設定可能値の中から露出補正の値をピックアップしてリクエストボディに記述しPUT403で実行すると、リクエストボディに記述した露出補正の値がデジタルカメラ100に反映される。
API1102は、デジタルカメラ100のISO感度の値を取得、変更するAPIである。本APIをGET401で実行すると、デジタルカメラ100に設定されているISO感度の現在値と設定可能値が取得できる。また、設定可能値の中からISO感度の値をピックアップしてリクエストボディに記述し、PUT403で実行すると、リクエストボディに記述したISO感度の値がデジタルカメラ100に反映される。
API1103は、デジタルカメラ100のホワイトバランスの値を取得、変更するAPIである。本APIをGET401で実行すると、デジタルカメラ100に設定されているホワイトバランスの現在値と設定可能値が取得できる。また、設定可能値の中からホワイトバランスの値をピックアップしてリクエストボディに記述し、PUT403で実行すると、リクエストボディに記述したホワイトバランスの値がデジタルカメラ100に反映される。
なお、撮影パラメータは上記の他、AV値、TV値、色温度、静止画撮影画質、動画撮影画質などがあげられる。
ここで特徴的なのは、APIの仕様として、本APIカテゴリに属するAPIのレスポンスボディに記述するJSON構文が同じ形式になっている点である。具体的には、現在値のフィールド名を“value”、設定可能値のフィールド名を“ability”に統一している点である。そうすることで、撮影パラメータの種類毎、またHTTPメソッド毎に処理を分ける必要がなくなる。そのため、デジタルカメラ100を制御するためのスマートデバイス200の制御プログラムを作成するプログラマは、APIカテゴリ412の撮影パラメータの処理は、同じ関数ですべて処理することが可能になる。つまり、撮影パラメータの種類毎に処理をかき分ける必要がなくなるため、プログラム量が減るといったメリットが生まれる。
図12は、図11で示す通信APIを実行した際の処理の流れを示すシーケンスである。
ステップS1201、S1202、S1203、S1204は、API1101を実行した際のシーケンスである。
ステップS1201にて、スマートデバイス200の制御部201は、通信部211を介してAPI1101をGET401でデジタルカメラ100にリクエストする。
ステップS1202にて、デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、露出補正の現在値と設定可能値を作業用メモリ104及び不揮発性メモリ103より取得する。そして、露出補正の現在値と設定可能値をレスポンス用JSON構文に基づいたデータセットに成形する。そして、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
ステップS1203にて、スマートデバイス200の制御部201は、プログラム処理により作業用メモリ204に記録された露出補正の値を取得する。そして、露出補正の値をリクエスト用JSON構文に基づいたデータセットに成形してリクエストボディに記述し、通信部211を介してAPI701をPUT403でデジタルカメラ100にリクエストする。デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、リクエストボディに記述されたJSON構文を解析し、リクエストされた露出補正の値を作業用メモリ104、または不揮発性メモリ103に記録する。
ステップS1204にて、処理が完了すると、制御部101は、設定が完了した露出補正の値をJSON構文に基づいたデータセットに成形してレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
なお、API1102、API1103共に上記と同様のシーケンスで処理するため、説明は割愛する。なお、JSON構文の形式が同じであるため、ステップS1203でのJSON構文の解析についても、同様の処理を使いまわすことができる。そのため、より効率的にアプリケーションを実装することができる。
以上が、デジタルカメラ100の撮影パラメータを取得、変更するAPIについての説明である。
<デジタルカメラ100のスルー画を取得するAPI>
図13のAPI表1300は、デジタルカメラ100のスルー画(リモート用ライブビュー画像)を取得するAPI群を示した表であり、図4のAPIカテゴリ413に属するAPIを示す。
API1301は、デジタルカメラ100のスルー画の生成の開始と終了を指示するAPIである。リクエストボディにスルー画のサイズとデジタルカメラ100の表示部106にスルー画を表示するか否かの指示を記述して本APIをPOST402で実行すると、デジタルカメラ100は指示された内容に従ってスルー画の生成を開始および停止する。
API1302は、デジタルカメラ100のスルー画を1フレーム取得するAPIである。本APIをGET401で実行すると、API1301で設定スルー画を1フレーム取得できる。
API1303は、デジタルカメラ100のスルー画をチャンク送信で取得するAPIである。チャンク送信(Chunked Transfer)とは、HTTP1.1(RFC2616)で定義されているデータ転送メカニズムの1つである。チャンク送信は、事前にレスポンスデータ全体のサイズが不明であっても、データの塊ごとにサイズを記してレスポンスを返していく送信方法である。詳細なメカニズムについては公知の技術であるためここでの説明は割愛する。本APIをGET401で実行すると、API表1300に示すように、スルー画のサイズ情報、スルー画の実データの順でスルー画が送信され続ける。また、本APIをDELETE404で実行すると、API表1300に示すように、スルー画のサイズが0と送信され、スルー画のチャンク送信が停止する。
図14は、図13で示す通信APIを実行した際の処理の流れを示すシーケンスである。
ステップS1401、S1402は、API1301を実行した際のシーケンスである。ステップS1403、S1404はAPI1302を実行した際のシーケンスである。ステップS1405、S1406、S1407、S1408、S1409はAPI1303を実行した際のシーケンスである。
ステップS1401にて、スマートデバイス200の制御部201は、プログラム処理により作業用メモリ204に記録されたスルー画の生成を開始するための値を取得する。そして、スルー画の生成を開始するための値をリクエスト用JSON構文に基づいたデータセットに成形してリクエストボディに記述し、通信部211を介してAPI1301をPOST402でデジタルカメラ100にリクエストする。なおS1401ではAPI1301の仕様に則り、スルー画のサイズをデジタルカメラ100の表示部106へのスルー画表示有無を指示している。デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、リクエストボディに記述されたJSON構文を解析する。そして、リクエストされたスルー画のサイズとデジタルカメラ100の表示部106へのスルー画表示の有無の指示に従って、スルー画の生成処理を開始する。生成されたスルー画は、逐次作業用メモリ104に一次記録される。
ステップS1402にて、上記処理を開始すると、制御部101は、レスポンスの値をJSON構文に基づいたデータセットに成形してレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
ステップS1403にて、スマートデバイス200の制御部201は、通信部211を介してAPI1302をGET401でデジタルカメラ100にリクエストする。
ステップS1404にて、デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、作業用メモリ104より逐次一時的に記録されるスルー画を取得し、レスポンス用データセットに成形する。そして、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
なお、スマートデバイス200より繰り返しAPI1302が実行されることで、スマートデバイス200上でのライブビューの表示を実現する。
ステップS1405にて、スマートデバイス200の制御部201は、通信部211を介してAPI1303をGET401でデジタルカメラ100にリクエストする。デジタルカメラ100の制御部101が通信部111を介してリクエストの受信を検知すると、ステップS1406にて、逐次一時的に記録されるスルー画を作業用メモリ104から順次取得し、API表1300に示すデータ順でチャンク送信を開始する。
ステップS1407にて、チャンク送信が開始すると、レスポンス用データセットに成形する。そして、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
ステップS1408にて、スマートデバイス200の制御部201は、通信部211を介してAPI1303をDELETE404でデジタルカメラ100にリクエストする。デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、API表1300に示すようにチャンク送信のスルー画のサイズを0と送信し、チャンク送信を終了する。
ステップS1409にて、チャンク送信が終了すると、レスポンス用データセットに成形する。そして、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
以上が、デジタルカメラ100のスルー画を取得するAPIについての説明である。
<デジタルカメラ100のイベント情報を取得するAPI>
図15のAPI表1500は、デジタルカメラ100のイベント情報を取得するAPI群を示した表であり、図4のAPIカテゴリ414に属するAPIを示す。本実施例におけるイベント情報とはデジタルカメラ100の状態が変化したことを外部機器に通知するための情報のことである。例えば、バッテリーの残容量が更新されたり、記録装置110に保存されているコンテンツファイルに増減があったり、デジタルカメラ100が操作されて設定が変更されたり、レンズなどアクセサリが装着されたりするなどの状態変化があった場合である。本実施例においては、バッテリー残容量が更新された場合を例に挙げて説明する。
API1501は、デジタルカメラ100のイベント情報を取得するAPIである。本APIは、二つの手法を選択できる。一つはイベント情報の有無と内容を即座にレスポンス送信する方法である。もうひとつは、イベントが発生するまでHTTPステータスコード100Continueを送信してHTTPセッションを継続し、イベントが発生した段階でレスポンス送信する、ロングポーリングと呼ばれる方法である。これらの指定は、URLクエリパラメータをURLに追加することで実現する。URLクエリパラメータは公知の技術であるため、ここでの説明は割愛する。API表1500に記載した通り、ロングポーリングでイベント情報を取得する場合、以下のURLでリクエストする。
http://192.168.1.1:8080/api/ver1/event/polling?continue=on
“?continue=on”がクエリパラメータである。クエリパラメータを何も指定していない場合、または“?continue=off”とした場合は即座にレスポンスを送信する。本APIをGET401で実行すると、デジタルカメラ100はイベント情報を上記で説明した方法で取得する。
API1502は、デジタルカメラ100のイベント情報をチャンク送信で取得するAPIである。チャンク送信の説明については前述の通りであるため、ここでの説明は割愛する。本APIをGET401で実行すると、イベント情報が送信され続ける。なお、チャンク送信の具体的な送信方法であるが、何もイベントが発生していない場合はその旨を示す“{}”を送信する。“{}”のサイズは2byteであるため、“2”、“{}”の順で送信する。イベントが発生した場合、その旨のJSONが送信される。API1500ではバッテリーの残量が変化した場合の例をJSONで表現している。なお、ここで送信されるJSON構文は、個々のAPIでレスポンス送信されるJSON構文と同じである。例えば、バッテリー情報はAPI503のレスポンス情報と同じである。また、本APIをDELETE404で実行すると、API表1500に示すように、イベント情報のサイズ情報が0と送信され、イベント情報のチャンク送信が停止する。
図16は、図15で示す通信APIを実行した際の処理の流れを示すシーケンスである。
ステップS1601、S1602、S1603、S1604、S1605、S1606は、API1501を実行した際のシーケンスである。ステップS1607、S1608、S1609、S1610、S1611はAPI1502を実行した際のシーケンスである。ステップS1405、S1406、S1407、S1408、S1409はAPI1303を実行した際のシーケンスである。
ステップS1601にて、スマートデバイス200の制御部201は、通信部211を介してAPI1302をGET401でデジタルカメラ100にリクエストする。この時、URLクエリパラメータを付与していない。
ステップS1602にて、デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、作業用メモリ104に記録されているイベント情報を取得し、レスポンス用データセットに成形する。そして、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。なお、イベント情報がない場合は、ない旨のレスポンス用データセットを送信する。
ステップS1603にて、スマートデバイス200の制御部201は、通信部211を介してAPI1302をGET401でデジタルカメラ100にリクエストする。この時、ロングポーリングを実行する旨のURLクエリパラメータを付与している。
ステップS1602にて、デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、作業用メモリ104に記録されているイベント情報を取得する。もしイベント情報があった場合はイベント情報をレスポンス用データセットに成形する。そして、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。一方、イベント情報がない場合は、S1604に示すように、HTTPステータスコード100Continueを、通信部111を介してスマートデバイス200に送信する。なお、イベント情報が発生するまで上記を繰り返す。
ステップS1605にて制御部101がイベント発生を検知すると、ステップS1606にて、制御部101は作業用メモリ104に記録されているイベント情報を取得し、レスポンス用データセットに成形する。そして、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
ステップS1607にて、スマートデバイス200の制御部201は、通信部211を介してAPI1502をGET401でデジタルカメラ100にリクエストする。
デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、ステップS1408に示すように作業用メモリ104より取得したイベント情報を、API表1500に示すデータ順でチャンク送信を開始する。
ステップS1609にて、チャンク送信が開始すると、レスポンス用データセットに成形する。そして、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
ステップS1610にて、スマートデバイス200の制御部201は、通信部211を介してAPI1502をDELETE404でデジタルカメラ100にリクエストする。デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、API表1500に示すようにチャンク送信のイベント情報のサイズ情報を0と送信し、チャンク送信を終了する。
ステップS1611にて、チャンク送信が終了すると、レスポンス用データセットに成形する。そして、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
以上が、デジタルカメラ100のイベント情報を取得するAPIについての説明である。
<デジタルカメラ100のコンテンツファイルを取得するAPI>
図17のAPI表1700は、デジタルカメラ100のデジタルカメラに装着されたメディアに保存されたコンテンツファイル(画像ファイル)の取得、コンテンツファイルの削除、コンテンツファイルを操作するAPI群を示した表である。これらは、図4のAPIカテゴリ415に属するAPIを示す。
API1701は、デジタルカメラ100の記録媒体110にアクセスするためのURLを取得するAPIである。本APIをGET401で実行すると、API表1700に示すような記録媒体110のURLが取得できる。本実施例においては、記録媒体110がSDを例として説明する。また、デジタルカメラ100が複数のメディアが装着可能である場合は、複数のURLが取得できる。
API1702は、記録媒体110に記録されているディレクトリのURLを取得するAPIである。本APIをGET401で実行すると、API表1700に示すようなディレクトリ名を含めたURL一覧が取得できる。本実施例においてはDCF(Design rule for Camera File system)規格に則り、それに準拠したディレクトリが取得できる。DCF規格については自明の規格であるため説明は割愛する。なお、その他の例として、本APIで取得できるディレクトリはDCF準拠でなくてもよい。
API1703は、ディレクトリの中に記録されているコンテンツファイルのURLを取得するAPIである。本APIをGET401で実行すると、API表1700に示すような記録媒体110のURL一覧が取得できる。なお、本APIは、コンテンツファイルのファイルフォーマットを指定して取得することができる。指定の方法は、URLクエリパラメータをURLに追加することで実現する。URLクエリパラメータは公知の技術であるため、ここでの説明は割愛する。API表1700に記載した通り、例えばJPEG画像のみに絞りURL一覧を取得する場合、以下のURLでリクエストする。
http://192.168.1.1:8080/api/ver1/contents/sd/100CANON?type=jpeg
“?type=jpeg”がクエリパラメータである。クエリパラメータを指定していない場合、対象ディレクトリ内にあるすべてのコンテンツファイルのURL一覧をレスポンス送信する。URLクエリパラメータについては、不図示であるがコンテンツファイルのURLの一覧を、画像番号の少ない順または多い順、また生成日時の新しい順または古い順を指定することも可能である。また、URLクエリパラメータは同時に複数の項目を指定することも可能である。
本APIをDELETE404で実行すると、指定したURLのディレクトリとディレクトリ内に記録されているコンテンツファイルを削除する。削除可能な場合は全てを削除する。コンテンツファイルにプロテクトが設定され削除できない場合はディレクトリとプロテクトが設定されたコンテンツファイルのみを残す。なお、本実施例では上記のように動作するが、プロテクトされたコンテンツファイルがある場合は、コンテンツファイルの一切を削除しないといった処理の仕方もある。
API1703は、コンテンツファイルを取得、もしくは操作、もしくは削除するAPIである。本APIをGET401で実行すると、コンテンツファイルが取得できる。なお、本APIは、コンテンツファイルのデータの種類を指定して取得することができる。指定の方法は、URLクエリパラメータをURLに追加することで実現する。URLクエリパラメータは公知の技術であるため、ここでの説明は割愛する。API表1700に記載した通り、例えばコンテンツファイルのサムネイル画像のみを取得する場合、以下のURLでリクエストする。
http://192.168.1.1:8080/api/ver1/contents/sd/100CANON/IMG_0001.JPG?kind=thumbnail
“?kind=thumbnail”がクエリパラメータである。クエリパラメータを指定していない場合、画像ファイル本体を送信する。また、本URLクエリパラメータで指定できるデータの種類は、埋込み画像、画像ファイルのメタ情報などがある。
本APIはコンテンツファイルを操作できる。コンテンツファイルの操作とは、プロテクトの設定、画像の回転、レーティング情報の付与などを指す。リクエストボディに操作の内容と値をそれぞれ記述して本APIをPUT403で実行すると、デジタルカメラ100は、指示された内容に従ってURLで指定したコンテンツファイルを操作する。
本APIをDELETE404で実行すると、指定したURLのコンテンツファイルを削除する。なお、コンテンツファイルにプロテクトが設定され削除できない場合は削除されない。
図18は、図17で示す通信APIを実行した際の処理の流れを示すシーケンスである。
ステップS1801、S1802はAPI1701を実行した際のシーケンスである。ステップS1803、S1804はAPI1702を実行した際のシーケンスである。ステップS1805、S1806はAPI1703を実行した際のシーケンスである。ステップS1805、S1806はAPI1703を実行した際のシーケンスである。ステップS1807、S1808、S1809、S1810はAPI1704を実行した際のシーケンスである。
ステップS1801にて、スマートデバイス200の制御部201は、通信部211を介してAPI1701をGET401でデジタルカメラ100にリクエストする。
ステップS1802にて、デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、作業用メモリ104に記録されている装着メディアのURLを取得し、レスポンス用データセットに成形する。そして、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
ステップS1803にて、スマートデバイス200の制御部201は、通信部211を介してAPI1702をGET401でデジタルカメラ100にリクエストする。
ステップS1804にて、デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、作業用メモリ104からディレクトリのURL一覧を取得し、レスポンス用データセットに成形する。そして、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
ステップS1805にて、スマートデバイス200の制御部201は、通信部211を介してAPI1703をGET401でデジタルカメラ100にリクエストする。この時、JPEGファイルのみピックアップするようURLクエリパラメータを付与している。
ステップS1806にて、デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、作業用メモリ104に記録されているJPEGファイルのみのURL一覧を取得し、レスポンス用データセットに成形する。そして、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
ステップS1807にて、スマートデバイス200の制御部201は、通信部211を介してAPI1704をGET401でデジタルカメラ100にリクエストする。この時、サムネイル画像を取得するようURLクエリパラメータを付与している。
ステップS1808にて、デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、記録媒体110に記録されている画像ファイルからサムネイルファイルを取得し、レスポンス用データセットに成形する。そして、制御部101は成形したデータセットをレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
ステップS1809にて、スマートデバイス200の制御部201は、プログラム処理により作業用メモリ204に記録されたコンテンツファイルを操作するための指示の内容を取得する。そして、コンテンツファイルを操作するための指示の内容をリクエスト用JSON構文に基づいたデータセットに成形してリクエストボディに記述し、通信部211を介してAPI1301をPOST402でデジタルカメラ100にリクエストする。本実施例では、API表1700に記載したように、コンテンツファイルにプロテクト処理を実施するよう指示している。デジタルカメラ100の制御部101が通信部111を介して、このリクエストを受信したことを検知すると、リクエストボディに記述されたJSON構文を解析する。そして、リクエストされた指示に従い、記録媒体110のコンテンツファイルにプロテクト属性を付与する。
ステップS1810にて、上記処理が完了すると、制御部101は、レスポンスの値をJSON構文に基づいたデータセットに成形してレスポンスボディに記述し、通信部111を介してスマートデバイス200に送信する。
以上が、デジタルカメラ100のコンテンツファイルを取得するAPIについての説明である。
<本実施形態のスマートデバイスの動作について>
上述したように、本通信APIは様々な特徴を持つ。1つは、レスポンスボディに記述するJSON構文と、リクエストボディに記述するJSON構文が同じ形式になっている点である。この仕様により、デジタルカメラ100を制御するためのスマートデバイス200の制御プログラムを作成するプログラマは、JSON構文が同じであるため、HTTPメソッドによって処理プログラムを書き分ける必要がなくなる。デジタルカメラ100から送信されたレスポンスボディに記述されたJSON構文を複製し必要な部分のみを変更したものを、PUTメソッドを実行する際のリクエストボディに記述するJSON構文としてそのまま活用することができる。
また、更なる特徴の一つとして以下の点も上げられる。すなわち、特定のAPIカテゴリに属するAPIのレスポンスボディに記述するJSON構文が同じ形式になっている点である。この仕様により、撮影パラメータの種類毎、またHTTPメソッド毎に処理を分ける必要がない。そのため、デジタルカメラ100を制御するためのスマートデバイス200の制御プログラムを作成するプログラマは、APIカテゴリ412の撮影パラメータの処理は、同じ関数ですべて処理することが可能になる。つまり、撮影パラメータの種類毎に処理をかき分ける必要がなくなるため、プログラム量が減るといったメリットが生まれる。
以上について、図19、図20を用いて、デジタルカメラ100を制御するためのスマートデバイス200の制御プログラムの視点に立って具体的に説明する。
まず、従来のJSON構文の形式について何ら考慮されていない場合について述べる。ここでは、レスポンスボディに記述するJSON構文と、リクエストボディに記述するJSON構文が異なる形式であり、さらに、APIカテゴリに属するAPIのレスポンスボディに記述するJSON構文が異なる形式になっている場合を例に挙げる。
図19は、上記の場合の、デジタルカメラ100を制御するためのスマートデバイス200の制御プログラムのフローチャートである。
本フローチャートの処理は、デジタルカメラ100とスマートデバイス200とが接続した状態で、アプリケーションによってAPIがリクエストされることに応じて開始される。
S1901にて、スマートデバイス200の制御部201は、アプリケーションによってどのAPIがリクエストされたかを判断する。日時情報を取得または変更するAPIがリクエストされた場合、S1902に進む。露出補正値を取得または変更するAPIがリクエストされた場合、S1910に進む。ISO感度値を取得または変更するAPIがリクエストされた場合、S1918に進む。なお、日時情報や露出補正値、ISO感度値は、説明のための一例であり、他のAPIがリクエストされることもある。
まず、日時情報を取得または変更するAPIがリクエストされた場合について説明する。
S1902にて、スマートデバイス200の制御部201は、どのHTTPメソッドがリクエストされたかを判断する。なお、日時情報を取得するためにGETメソッドがリクエストされ、変更するためにPUTメソッドがリクエストされる。そこで、本ステップでは、GETメソッドがリクエストされたか、PUTメソッドがリクエストされかを判断する。GETメソッドがリクエストされた場合、S1903に進む。
S1903にて、制御部201は、日時情報を取得するために所定のURLにGETメソッドでアクセスすることによって、日時情報を取得するAPIをリクエストする。
一方、PUTメソッドがリクエストされた場合、S1904に進む。
S1904では、制御部201は、変更を指示された日時をJSONに記述するためにJSONのパラメータを生成する。
そして、S1905にて、制御部201は、S1904で生成したパラメータを記述したPUT用のJSONを生成する。
その後、GETと同様にS1903にて、制御部201は、日時情報を変更するために、所定のURLにPUTメソッドでアクセスすることによって、日時情報を変更するAPIをリクエストする。
S1903のリクエストの結果、デジタルカメラ100は現在カウントしている日時情報を、要求されたAPIに従ったJSON構文の形式に記述し、レスポンスとして返す。
S1906で制御部201は、このレスポンスを受信する。
続くS1907で、制御部201は、どのメソッドのレスポンスかを判断する。
GETメソッドのレスポンスである場合、S1908にて、制御部201は、GETメソッドのレスポンスで返されるJSON構文の形式に沿ったJSON解析処理を実行し、レスポンスから日時情報を取り出す。これによって、スマートデバイス200はデジタルカメラ100から日時情報を取得する。
一方、PUTメソッドのレスポンスである場合、S1909にて、制御部201は、PUTメソッドのレスポンスで返されるJSON構文の形式に沿ったJSON解析処理を実行し、レスポンスから変更後の日時情報を取り出す。これによって、スマートデバイス200はデジタルカメラ100から日時情報の変更結果を取得する。
以上、日時情報を取得または変更するAPIがリクエストされた場合について説明した。
次に、露出補正値を取得または変更するAPIがリクエストされた場合について説明する。
S1910にて、制御部201は、どのHTTPメソッドがリクエストされたかを判断する。なお、露出補正値を取得するためにGETメソッドがリクエストされ、変更するためにPUTメソッドがリクエストされる。そこで、本ステップでは、GETメソッドがリクエストされたか、PUTメソッドがリクエストされかを判断する。GETメソッドがリクエストされた場合、S1911に進む。
S1911にて、制御部201は、露出補正値を取得するために所定のURLにGETメソッドでアクセスすることによって、露出補正値を取得するAPIをリクエストする。
一方、PUTメソッドがリクエストされた場合、S1912に進む。
S1912では、制御部201は、変更を指示された露出補正値をJSONに記述するためにJSONのパラメータを生成する。
そして、S1913にて、制御部201は、S1912で生成したパラメータを記述したPUT用のJSONを生成する。
その後、GETと同様にS1911にて、制御部201は、露出補正値を変更するために、所定のURLにPUTメソッドでアクセスすることによって、露出補正値を変更するAPIをリクエストする。
S1911のリクエストの結果、デジタルカメラ100は現在の露出補正値を、要求されたAPIに従ったJSON構文の形式に記述し、レスポンスとして返す。
S1914で制御部201は、このレスポンスを受信する。
続くS1915で、制御部201は、どのメソッドのレスポンスかを判断する。
GETメソッドのレスポンスである場合、S1916にて、制御部201は、GETメソッドのレスポンスで返されるJSON構文の形式に沿ったJSON解析処理を実行し、レスポンスから露出補正値を取り出す。これによって、スマートデバイス200はデジタルカメラ100から露出補正値を取得する。
一方、PUTメソッドのレスポンスである場合、S1917にて、制御部201は、PUTメソッドのレスポンスで返されるJSON構文の形式に沿ったJSON解析処理を実行し、レスポンスから変更後の露出補正値を取り出す。これによって、スマートデバイス200はデジタルカメラ100から露出補正値の変更結果を取得する。
以上、露出補正値を取得または変更するAPIがリクエストされた場合について説明した。
次に、ISO感度値を取得または変更するAPIがリクエストされた場合について説明する。
S1918にて、制御部201は、どのHTTPメソッドがリクエストされたかを判断する。なお、ISO感度値を取得するためにGETメソッドがリクエストされ、変更するためにPUTメソッドがリクエストされる。そこで、本ステップでは、GETメソッドがリクエストされたか、PUTメソッドがリクエストされかを判断する。GETメソッドがリクエストされた場合、S1919に進む。
S1919にて、制御部201は、ISO感度値を取得するために所定のURLにGETメソッドでアクセスすることによって、ISO感度値を取得するAPIをリクエストする。
一方、PUTメソッドがリクエストされた場合、S1920に進む。
S1920では、制御部201は、変更を指示されたISO感度値をJSONに記述するためにJSONのパラメータを生成する。
そして、S1921にて、制御部201は、S1920で生成したパラメータを記述したPUT用のJSONを生成する。
その後、GETと同様にS1919にて、制御部201は、ISO感度値を変更するために、所定のURLにPUTメソッドでアクセスすることによって、ISO感度値を変更するAPIをリクエストする。
S1919のリクエストの結果、デジタルカメラ100は現在のISO感度値を、要求されたAPIに従ったJSON構文の形式に記述し、レスポンスとして返す。
S1922で制御部201は、このレスポンスを受信する。
続くS1923で、制御部201は、どのメソッドのレスポンスかを判断する。
GETメソッドのレスポンスである場合、S1924にて、制御部201は、GETメソッドのレスポンスで返されるJSON構文の形式に沿ったJSON解析処理を実行し、レスポンスからISO感度値を取り出す。これによって、スマートデバイス200はデジタルカメラ100からISO感度値を取得する。
一方、PUTメソッドのレスポンスである場合、S1925にて、制御部201は、PUTメソッドのレスポンスで返されるJSON構文の形式に沿ったJSON解析処理を実行し、レスポンスから変更後のISO感度値を取り出す。これによって、スマートデバイス200はデジタルカメラ100からISO感度値の変更結果を取得する。
以上、ISO感度値を取得または変更するAPIがリクエストされた場合について説明した。
以上のように、各API毎にPUTメソッドのリクエストで用いるJSON構文の形式が異なる、S1905、S1913、S1921に示す通り、それぞれに対して異なるJSON生成プログラムを用意する必要がある。更に、各APIのリクエストメソッド毎に、JSON構文の形式が異なる場合、S1908、S1909、S1916、S1917、S1924、S1925に示す通り、それぞれに対して異なるJSON解析プログラムを用意する必要がある。
続いて、本実施形態にて提案するAPIを利用した場合について説明する。ここでは、レスポンスボディに記述するJSON構文と、リクエストボディに記述するJSON構文が同じ形式であり、さらに、特定のAPIカテゴリに属するAPIのレスポンスボディに記述するJSON構文が同じ形式である場合の一例を挙げて説明する。
図20は、本実施形態にて提案するAPIを利用した場合の、デジタルカメラ100を制御するためのスマートデバイス200の制御プログラムのフローチャートである。
本フローチャートの処理は、デジタルカメラ100とスマートデバイス200とが接続した状態で、アプリケーションによってAPIがリクエストされることに応じて開始される。
S2001では、図19のS1901と同様の処理が実行され、アプリケーショによってリクエストされたAPIの種類が判断される。
まず、S2001にて、日時情報を取得または変更するAPI701がリクエストされた場合について説明する。この場合、S2002に進む。
S2002からS2006までは、図19のS1902からS1906までと同様の処理が実行される。
続くS2007では、制御部201は、レスポンスで返されるJSON構文を、GETメソッドとPUTメソッドの両方に共通して用いることのできるJSON解析処理によって解析し、現在の日時情報または日時情報の変更結果を取り出す。このように、JSON構文の形式が同じ形式である場合、メソッドが異なっていても、解析処理を一つにまとめることができるため、プログラムを実装する負荷が軽減される。
続いて、S2001にて、露出補正値を取得または変更するAPI1101がリクエストされた場合について説明する。この場合、処理はS2008に進む。
S2008からS2012までは、図19のS1910からS1914までと同様の処理が実行される。
続くS2009では、制御部201は、レスポンスで返されるJSON構文を、GETメソッドとPUTメソッドの両方に共通して用いることのできるJSON解析処理によって解析し、現在の露出補正値または露出補正値の変更結果を取り出す。このように、JSON構文の形式が同じ形式である場合、メソッドが異なっていても、解析処理を一つにまとめることができるため、プログラムを実装する負荷が軽減される。なお、図11に示す露出補正値のAPIのレスポンスボディは、GETの場合、”value”と”ability”とがあり、PUTの場合”value”だけである。JSON構文の形式が異なるが、その一方で”value”というフィールドは共通する。従って、共通した解析処理を実行し、”value”というフィールドについてはGETとPUTの両方で参照し、”ability”については、PUTの場合のみ参照するように解析処理を設計することができる。これにより、フィールドがすべて異なる場合の解析処理を設計する場合よりも、プログラム量を減らすことができる。
続いて、S2001にて、ISO感度値を取得または変更するAPI1102がリクエストされた場合について説明する。この場合、処理はS2014に進む。
S2014では、図19のS1918と同様に、制御部201は、どのHTTPメソッドがリクエストされたかを判断する。
GETメソッドがリクエストされた場合、S2009に進み、露出補正値を取得または変更するAPIがリクエストされた場合と同様の処理が実行される。これは、ISO感度値を取得するGETメソッドと、露出補正値を取得するGETメソッドとの、それぞれのレスポンスのJSON構文の形式が同じ形式であるため実現され得る。すなわち、構文の形式が同じであるため、構文の解析も共通化でき、実装負荷を軽減することができる。
一方、PUTメソッドがリクエストされた場合、S2015に進む。
S2015では、制御部201は、変更を指示されたISO感度値をJSONに記述するためにJSONのパラメータを生成する。その後、S2011にて、露出補正値を変更するPUTメソッドと同様のJSON生成処理によってS2015で生成したパラメータを記述する。これは、ISO感度値を変更するPUTメソッドと、露出補正値を変更するPUTメソッドとの、それぞれのレスポンスのJSON構文の形式が同じ形式であるため実現され得る。すなわち、構文の形式が同じであるため、構文の生成も共通化でき、実装負荷を軽減することができる。その後は、S2009に進み、露出補正値を変更する場合と同様の処理が実行される。
以上のように、本実施形態の通信APIを用いる場合、HTTPメソッド毎にJSON構文の処理プログラムをそれぞれ用意する必要はない。加えて、レスポンスボディのJSON構文が同じAPIはすべて、同じプログラムで処理することが可能となる。つまり、図20のフローチャートからわかるように処理プログラムの量が減るため、実装者が簡単に使い方を理解し、好適にプログラム作成できる。
なお、本実施例ではAPIカテゴリ412を例に説明したが、その他のAPIカテゴリにおいてもリクエストボディとレスポンスボディのJSON構文が同じであれば同様の効果が得られる。カテゴリによっては、すべて同じJSON構文の構成を同じにすることが難しい場合もあるが、少なくとも同じものはひとまとめにして処理できるため、同様に実装負荷の軽減効果が得られる。
<カメラの動作について>
次に、図20に対応するカメラの動作について説明する。
図21は、デジタルカメラ100の動作を示すフローチャートである。本フローチャートは接続状態にあるスマートデバイス200から、通信APIを用いてリクエストを受け付けたことに応じて開始される。
S2101では、制御部101は、スマートデバイス200から受信した通信APIを用いたリクエストの種類を判断する。日時情報を取得または変更するリクエストを受信した場合、処理はS2202に進む。露出補正値を取得または変更するリクエストを受信した場合、処理はS2207に進む。ISO感度値を取得または変更するリクエストを受信した場合、処理はS2212に進む。
S2102では、制御部101は、リクエストされたメソッドを判断する。GETの場合S2103に進む。PUTの場合S2104に進む。
S2103では、制御部101は、現在の日時情報を読み出し、日時情報をJSONに記述するためのパラメータを生成する。
S2104では、制御部101は、指定された日時情報に変更し、変更した結果をJSONに記述するためのパラメータを生成する。
S2105では、制御部101は、共通のJSON生成処理によって、S2103またはS2104で生成されたパラメータを、共通のJSON構文の形式に記述する。
S2106では、制御部101は、S2105で生成したJSONと共にリクエストに対するレスポンスをスマートデバイス200に返す。
S2107では、制御部101は、メソッドを判断する。GETの場合S2108に進む。PUTの場合S2110に進む。
S2108では、制御部101は、現在の露出補正値を読み出し、露出補正値をJSONに記述するためのパラメータを生成する。
続くS2109では、制御部101はGETメソッドで共通のJSON生成処理によって、S2108で生成されたパラメータを、GETメソッドで共通のJSON構文の形式に記述する。その後、S2106で、制御部101は、S2109で生成したJSONと共にリクエストに対するレスポンスをスマートデバイス200に返す。
S2110では、制御部101は、指定された露出補正値に変更し、変更した結果をJSONに記述するためのパラメータを生成する。
続くS2111では、制御部101はPUTメソッドで共通のJSON生成処理によって、S2110で生成されたパラメータを、PUTメソッドで共通のJSON構文の形式に記述する。その後、S2106で、制御部101は、S2111で生成したJSONと共にリクエストに対するレスポンスをスマートデバイス200に返す。
S2112では、制御部101は、メソッドを判断する。GETの場合S2114に進む。PUTの場合S2113に進む。
S2113では、制御部101は、指定されたISO感度値に変更し、変更した結果をJSONに記述するためのパラメータを生成する。その後、S2111にて、露出補正値と同様のJSON構文の形式にパラメータを記述し、S2106にてレスポンスとしてスマートデバイス200に送信される。
S2114では、制御部101は、現在のISO感度値を読み出し、ISO感度値をJSONに記述するためのパラメータを生成する。その後、S2109にて、露出補正値と同様のJSON構文の形式にパラメータを記述し、S2106にてレスポンスとしてスマートデバイス200に送信される。
以上が図20に対応するデジタルカメラ100の動作の説明である。
以上説明したように、GETメソッドとPUTメソッドとで共通のJSON構文の形式を持つレスポンスを返すことで、通信APIを用いたアプリケーションの実装負荷を軽減することができる。また、各メソッドに対するレスポンスのJSON構文の形式を、特定のAPIカテゴリ内のAPI間で共通にすることで、同様に通信APIを用いたアプリケーションの実装負荷を軽減することができる。
[他の実施形態]
以上、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。上述の実施形態の一部を適宜組み合わせてもよい。また、上述の実施形態の機能を実現するソフトウェアのプログラムを、記録媒体から直接、或いは有線/無線通信を用いてプログラムを実行可能なコンピュータを有するシステム又は装置に供給し、そのプログラムを実行する場合も本発明に含む。従って、本発明の機能処理をコンピュータで実現するために、該コンピュータに供給、インストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明の機能処理を実現するためのコンピュータプログラム自体も本発明に含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。プログラムを供給するための記録媒体としては、例えば、ハードディスク、磁気テープ等の磁気記録媒体、光/光磁気記憶媒体、不揮発性の半導体メモリでもよい。また、プログラムの供給方法としては、コンピュータネットワーク上のサーバに本発明を形成するコンピュータプログラムを記憶し、接続のあったクライアントコンピュータはがコンピュータプログラムをダウンロードしてプログラムするような方法も考えられる。
100 デジタルカメラ
200 スマートデバイス
101,201 制御部
102,202 撮像部
103,203 不揮発性メモリ
104,204 作業用メモリ
105,205 操作部
106,206 表示部
110,210 記録媒体
111,211 通信部

Claims (19)

  1. 外部装置とHTTPに従って通信する通信手段と、
    複数のAPIに対応するプログラムを記録する記録媒体と、
    前記通信手段を介して前記複数のAPIのうちいずれかのAPIに関するリクエストを受け付けた場合、前記リクエストを受け付けたAPIに対応するプログラムを実行すると共に、前記リクエストに対し、所定の構造で記述されるデータセットを含むレスポンスを返すよう前記通信手段を制御する制御手段とを有し、
    前記制御手段は、前記複数のAPIのうち所定のAPIに関する第一のHTTPリクエストメソッドを用いたリクエストを受信した場合のレスポンスボディのフィールド名と、前記所定のAPIに関する第二のHTTPリクエストメソッドを用いたリクエストを受信した場合のレスポンスボディのフィールド名とが同一に記述されるよう制御することを特徴とする通信装置。
  2. 前記第一のHTTPリクエストメソッドを用いたリクエストはデータの取得要求であることを特徴とする請求項1に記載の通信装置。
  3. 前記第二のHTTPリクエストメソッドを用いたリクエストはデータの変更要求であることを特徴とする請求項1または2に記載の通信装置。
  4. 前記第一のHTTPリクエストメソッドを用いたリクエストはデータの取得要求であり、
    前記第二のHTTPリクエストメソッドを用いたリクエストはデータの変更要求であり、
    前記第一のHTTPリクエストメソッドはリクエストボディを持たず、
    前記第二のHTTPリクエストメソッドはリクエストボディを持つことを特徴とする請求項1乃至3のいずれか1項に記載の通信装置。
  5. 前記第二のHTTPリクエストメソッドを用いたリクエストはデータの変更要求であり、
    前記第二のHTTPリクエストメソッドは、リクエストのデータセットの構造と、レスポンスのデータセットの構造とが同じであることを特徴とする請求項1乃至4のいずれか1項に記載の通信装置。
  6. 撮像手段をさらに有し、
    前記複数のAPIは、前記撮像手段をリモートコントロールするためのAPIを含むことを特徴とする請求項1乃至5のいずれか1項に記載の通信装置。
  7. 前記複数のAPIは、前記リモートコントロールのカテゴリごとに階層構造のURLで表現されることを特徴とする請求項6の通信装置。
  8. 前記制御手段は、前記複数のAPIのうち、上位の階層で表現されるURLに対応するAPIの要求を受け付けることなく下位の階層で表現されるURLに対応するAPIの要求を受け付けないよう制御することを特徴とする請求項7の通信装置。
  9. 前記データセットの構造はJSON構造であることを特徴とする請求項1乃至8のいずれか1項に記載の通信装置。
  10. 通信手段と、複数のAPIに対応するプログラムが記録されている記録媒体と、制御手段とを有する通信装置の制御方法であって、
    前記通信手段を介して外部装置とHTTPに従って通信するステップと、
    前記通信手段を介して前記複数のAPIのうちいずれかのAPIに関するリクエストを受け付けた場合、前記リクエストを受け付けたAPIに対応するプログラムを実行すると共に、前記リクエストに対し、所定の構造で記述されるデータセットを含むレスポンスを返すよう前記通信手段を制御する制御ステップとを有し、
    前記制御ステップでは、前記複数のAPIのうち所定のAPIに関する第一のHTTPリクエストメソッドを用いたリクエストを受信した場合のレスポンスボディのフィールド名と、前記所定のAPIに関する第二のHTTPリクエストメソッドを用いたリクエストを受信した場合のレスポンスボディのフィールド名とが同一に記述されるよう制御することを特徴とする通信装置の制御方法。
  11. 前記第一のHTTPリクエストメソッドを用いたリクエストはデータの取得要求であることを特徴とする請求項10の通信装置の制御方法。
  12. 前記第二のHTTPリクエストメソッドを用いたリクエストはデータの変更要求であることを特徴とする請求項10または11に記載の通信装置の制御方法。
  13. 前記第一のHTTPリクエストメソッドを用いたリクエストはデータの取得要求であり、
    前記第二のHTTPリクエストメソッドを用いたリクエストはデータの変更要求であり、
    前記第一のHTTPリクエストメソッドはリクエストボディを持たず、
    前記第二のHTTPリクエストメソッドはリクエストボディを持つことを特徴とする請求項10乃至12のいずれか1項に記載の通信装置の制御方法。
  14. 前記第二のHTTPリクエストメソッドを用いたリクエストはデータの変更要求であり、
    前記第二のHTTPリクエストメソッドは、リクエストのデータセットの構造と、レスポンスのデータセットの構造とが同じであることを特徴とする請求項10乃至13のいずれか1項に記載の通信装置の制御方法。
  15. 前記通信装置は撮像手段をさらに有し、
    前記複数のAPIは、前記撮像手段をリモートコントロールするためのAPIを含むことを特徴とする請求項10乃至14のいずれか1項に記載の通信装置の制御方法。
  16. 前記複数のAPIは、前記リモートコントロールのカテゴリごとに階層構造のURLで表現されることを特徴とする請求項15の通信装置の制御方法。
  17. 前記制御ステップでは、前記複数のAPIのうち、上位の階層で表現されるURLに対応するAPIの要求を受け付けることなく下位の階層で表現されるURLに対応するAPIの要求を受け付けないよう制御することを特徴とする請求項16の通信装置の制御方法。
  18. 前記構造はJSON構造であることを特徴とする請求項10乃至17のいずれか1項に記載の通信装置の制御方法。
  19. コンピュータを請求項1乃至9のいずれか1項に記載の通信装置の各手段として機能させるための、コンピュータが読み取り可能なプログラム。
JP2018229968A 2018-12-07 2018-12-07 通信装置、通信装置の制御方法、プログラム Active JP7218165B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2018229968A JP7218165B2 (ja) 2018-12-07 2018-12-07 通信装置、通信装置の制御方法、プログラム
CN201911100436.7A CN111294506B (zh) 2018-12-07 2019-11-12 能够与外部设备通信的通信设备及其控制方法和记录介质
US16/694,863 US11522941B2 (en) 2018-12-07 2019-11-25 Communication apparatus capable of communicating with external apparatus based on hypertext transfer protocol, method for controlling communication apparatus, and recording medium
KR1020190156247A KR102473833B1 (ko) 2018-12-07 2019-11-29 외부 장치와 통신할 수 있는 통신장치, 통신장치의 제어방법, 및 기록매체
EP19213451.8A EP3664460A1 (en) 2018-12-07 2019-12-04 Communication apparatus capable of communicating with external apparatus, method for controlling communication apparatus, recording medium, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018229968A JP7218165B2 (ja) 2018-12-07 2018-12-07 通信装置、通信装置の制御方法、プログラム

Publications (3)

Publication Number Publication Date
JP2020091788A JP2020091788A (ja) 2020-06-11
JP2020091788A5 JP2020091788A5 (ja) 2022-01-11
JP7218165B2 true JP7218165B2 (ja) 2023-02-06

Family

ID=68771449

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018229968A Active JP7218165B2 (ja) 2018-12-07 2018-12-07 通信装置、通信装置の制御方法、プログラム

Country Status (5)

Country Link
US (1) US11522941B2 (ja)
EP (1) EP3664460A1 (ja)
JP (1) JP7218165B2 (ja)
KR (1) KR102473833B1 (ja)
CN (1) CN111294506B (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6824949B2 (ja) * 2018-12-26 2021-02-03 キヤノン株式会社 通信装置、制御方法およびプログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150222517A1 (en) 2014-02-05 2015-08-06 Apple Inc. Uniform communication protocols for communication between controllers and accessories
JP2017516193A (ja) 2014-03-21 2017-06-15 ピーティーシー インコーポレイテッド バイナリ動的restメッセージを使用したシステム及び方法
WO2017133611A1 (zh) 2016-02-02 2017-08-10 上海交通大学 多媒体系统信息交互机制及网络传输方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013073506A (ja) 2011-09-28 2013-04-22 Canon Inc 画像処理装置、その制御方法、及びプログラム
US20140047368A1 (en) * 2012-08-13 2014-02-13 Magnet Systems Inc. Application development tool
US10331504B2 (en) * 2013-06-28 2019-06-25 Vmware, Inc. Method and system for extending application programming interfaces
JP6603513B2 (ja) * 2014-09-03 2019-11-06 キヤノン株式会社 通信装置及び情報処理装置及びそれらの制御方法、並びに記憶媒体
JP6376015B2 (ja) * 2015-03-24 2018-08-22 ソニー株式会社 情報処理装置、情報処理方法、およびプログラム
US11663205B2 (en) * 2017-05-04 2023-05-30 Salesforce, Inc. Technologies for asynchronous querying
CN107295007A (zh) * 2017-07-31 2017-10-24 浪潮天元通信信息系统有限公司 一种支持多种协议的服务方法、装置及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150222517A1 (en) 2014-02-05 2015-08-06 Apple Inc. Uniform communication protocols for communication between controllers and accessories
JP2017511028A (ja) 2014-02-05 2017-04-13 アップル インコーポレイテッド コントローラとアクセサリとの通信のための統一的通信プロトコル
JP2017516193A (ja) 2014-03-21 2017-06-15 ピーティーシー インコーポレイテッド バイナリ動的restメッセージを使用したシステム及び方法
WO2017133611A1 (zh) 2016-02-02 2017-08-10 上海交通大学 多媒体系统信息交互机制及网络传输方法

Also Published As

Publication number Publication date
US11522941B2 (en) 2022-12-06
CN111294506A (zh) 2020-06-16
CN111294506B (zh) 2022-05-31
KR102473833B1 (ko) 2022-12-05
KR20200070107A (ko) 2020-06-17
JP2020091788A (ja) 2020-06-11
EP3664460A1 (en) 2020-06-10
US20200186586A1 (en) 2020-06-11

Similar Documents

Publication Publication Date Title
JP6429539B2 (ja) 通信装置、通信装置の制御方法、プログラム
JP5084640B2 (ja) データ受信装置、データ送信装置、それらの制御方法及びプログラム。
JP6603513B2 (ja) 通信装置及び情報処理装置及びそれらの制御方法、並びに記憶媒体
JP6395522B2 (ja) 通信装置、通信装置の制御方法、プログラム
JP7101525B2 (ja) 電子機器およびその制御方法、並びに、プログラム
JP6004807B2 (ja) 画像処理装置、その制御方法、プログラム
JP6433265B2 (ja) 情報処理装置、電子機器およびそれらの制御方法、プログラム並びに記憶媒体
JP7218165B2 (ja) 通信装置、通信装置の制御方法、プログラム
US20180152491A1 (en) Image provision apparatus and image reception apparatus, control method thereof, image communication system, and computer-readable storage medium
US9756195B2 (en) Communication apparatus capable of communicating with external apparatus, control method for communication apparatus, and storage medium
US10728451B2 (en) Communication device for communicating with external device, method for controlling the same, and recording medium
JP7196209B2 (ja) 通信装置、制御方法、およびプログラム
JP6824949B2 (ja) 通信装置、制御方法およびプログラム
JP2020091787A (ja) 通信装置およびその制御方法
JP2020123086A (ja) 情報処理装置、制御方法およびプログラム
JP6478615B2 (ja) 通信装置、その制御方法およびプログラム
JP7253919B2 (ja) 通信装置、通信装置の制御方法、およびプログラム
JP7086743B2 (ja) 通信装置、通信装置の制御方法、プログラム
JP2023125841A (ja) 通信装置、通信制御方法、及びプログラム
WO2018203437A1 (ja) 通信システム、並びに、通信装置及びその制御方法及びプログラム
JP2015084156A (ja) 電子機器、データ転送方法、及びプログラム
JP2019067133A (ja) 情報処理装置、情報処理装置の制御方法、プログラム
JP2018207422A (ja) 撮像装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211203

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211203

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220914

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221129

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221227

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230125

R151 Written notification of patent or utility model registration

Ref document number: 7218165

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151