以下に、本発明を実施するための形態について、添付の図面を用いて詳細に説明する。
なお、以下に説明する実施の形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正又は変更されてもよい。また、各実施の形態を適宜組み合せることも可能である。
[第1の実施形態]
<デジタルカメラ100の構成>
図1(a)は、本実施形態の通信装置の一例であるデジタルカメラ100の構成例を示すブロック図である。なお、ここでは通信装置の一例としてデジタルカメラについて述べるが、通信装置はこれに限られない。例えば通信装置は携帯電話や、携帯型のメディアプレーヤ、いわゆるタブレットデバイス、パーソナルコンピュータなどの情報処理装置であってもよい。
制御部101は、入力された信号や、後述のプログラムに従ってデジタルカメラ100の各部を制御する。なお、制御部101が装置全体を制御する代わりに、複数のハードウェアが処理を分担することで、装置全体を制御してもよい。
撮像部102は、例えば、光学レンズユニットと絞り・ズーム・フォーカスなど制御する光学系と、光学レンズユニットを経て導入された光(映像)を電気的な映像信号に変換するための撮像素子などで構成される。撮像素子としては、一般的には、CMOS(Complementary Metal Oxide Semiconductor)や、CCD(Charge Coupled Device)が利用される。撮像部102は、制御部101に制御されることにより、撮像部102に含まれるレンズで結像された被写体光を、撮像素子により電気信号に変換し、ノイズ低減処理などを行いデジタルデータを画像データとして出力する。本実施形態のデジタルカメラ100では、画像データは、DCF(Design Rule for Camera File system)の規格に従って、記録媒体110に記録される。
不揮発性メモリ103は、電気的に消去・記録可能な不揮発性のメモリであり、制御部101で実行される後述のプログラム等が格納される。
作業用メモリ104は、撮像部102で撮像された画像データを一時的に保持するバッファメモリや、表示部106の画像表示用メモリ、制御部101の作業領域等として使用される。
操作部105は、ユーザがデジタルカメラ100に対する指示をユーザから受け付けるために用いられる。操作部105は例えば、ユーザがデジタルカメラ100の電源のON/OFFを指示するための電源ボタンや、撮影を指示するためのレリーズスイッチ、画像データの再生を指示するための再生ボタンを含む。さらに、後述の接続部111を介して外部機器との通信を開始するための専用の接続ボタンなどの操作部材を含む。また、後述する表示部106に形成されるタッチパネルも操作部105に含まれる。なお、レリーズスイッチは、SW1およびSW2を有する。レリーズスイッチが、いわゆる半押し状態となることにより、SW1がONとなる。これにより、AF(オートフォーカス)処理、AE(自動露出)処理、AWB(オートホワイトバランス)処理、EF(フラッシュプリ発光)処理等の撮影準備を行うための指示を受け付ける。また、レリーズスイッチが、いわゆる全押し状態となることにより、SW2がONとなる。これにより、撮影を行うための指示を受け付ける。
表示部106は、撮影の際のビューファインダー画像の表示、撮影した画像データの表示、対話的な操作のための文字表示などを行う。なお、表示部106は必ずしもデジタルカメラ100が内蔵する必要はない。デジタルカメラ100は内部又は外部の表示部106と接続することができ、表示部106の表示を制御する表示制御機能を少なくとも有していればよい。
記録媒体110は、撮像部102から出力された画像データを記録することができる。記録媒体110は、デジタルカメラ100に着脱可能なよう構成してもよいし、デジタルカメラ100に内蔵されていてもよい。すなわち、デジタルカメラ100は少なくとも記録媒体110にアクセスする手段を有していればよい。
接続部111は、外部装置と接続するためのインターフェイスである。本実施形態のデジタルカメラ100は、接続部111を介して、外部装置とデータのやりとりを行うことができる。例えば、撮像部102で生成した画像データを、接続部111を介して外部装置に送信することができる。なお、本実施形態では、接続部111は外部装置とIEEE802.11の規格に従った、いわゆる無線LANで通信するためのインターフェイスを含む。制御部101は、接続部111を制御することで外部装置との無線通信を実現する。なお、通信方式は無線LANに限定されるものではなく、例えば赤外通信方式や、Bluetooth(登録商標)、WirelessUSB等、他の無線通信方式を採用してもよい。
近距離無線通信部112は、例えば無線通信のためのアンテナと無線信号を処理するため変復調回路や通信コントローラから構成される。近距離無線通信部112は、変調した無線信号をアンテナから出力し、またアンテナで受信した無線信号を復調することで非接触近接通信を実現する。本実施形態では、ISO/IEC 18092の規格(いわゆるNFC:Near Field Communication)に従った非接触近接通信を実現する。また、NFCの通信においてやり取りされるデータは、NDEF(NFC Data Exchange Format)のフォーマットに従う。本実施形態の近距離無線通信部112は、デジタルカメラ100の側部に配される。
後述するスマートデバイス200とは、互いの近距離無線通信部を近接させることにより通信を開始して接続される。なお、近距離無線通信部を用いて接続させる場合、必ずしも近距離無線通信部同士を接触させる必要はない。近距離無線通信部は一定の距離だけ離れていても通信することができるため、互いの機器を接続するためには、近接無線通信可能な範囲まで近づければよい。以下の説明では、この近接無線通信可能な範囲まで近づけることを、近接させる、とも記載する。
また、互いの近距離無線通信部が通信不可能な範囲にあれば、通信は開始されない。また、互いの近距離無線通信部が通信可能な範囲にあって、デジタルカメラ100同士が通信接続されている際に、互いの近距離無線通信部112が通信不可能な範囲に離れてしまった場合は、通信接続が解除される。なお、近距離無線通信部112が実現する非接触近接通信はNFCに限られるものではなく、他の無線通信を採用してもよい。例えば、近距離無線通信部112が実現する非接触近接通信として、ISO/IEC 14443の規格に従った非接触近接通信を採用してもよい。
本実施形態では、接続部111により実現される通信の通信速度は、後述の近距離無線通信部112により実現される通信の通信速度よりも速い。また、接続部111により実現される通信は、近距離無線通信部112による通信よりも、通信可能な範囲が広い。その代わり、近距離無線通信部112による通信では、通信可能な範囲の狭さにより通信相手を限定することができるため、接続部111により実現される通信で必要な暗号鍵の交換等の処理を必要としない。すなわち、接続部111を用いるよりも手軽に通信することができる。
なお、本実施形態におけるデジタルカメラ100の接続部111は、インフラストラクチャモードにおけるアクセスポイントとして動作するAPモードと、インフラストラクチャモードにおけるクライアントとして動作するCLモードとを有している。そして、接続部111をCLモードで動作させることにより、本実施形態におけるデジタルカメラ100は、インフラストラクチャモードにおけるCL機器として動作することが可能である。デジタルカメラ100がCL機器として動作する場合、周辺のAP機器に接続することで、AP機器が形成するネットワークに参加することが可能である。また、接続部111をAPモードで動作させることにより、本実施形態におけるデジタルカメラ100は、APの一種ではあるが、より機能が限定された簡易的なAP(以下、簡易AP)として動作することも可能である。デジタルカメラ100が簡易APとして動作すると、デジタルカメラ100は自身でネットワークを形成する。デジタルカメラ100の周辺の装置は、デジタルカメラ100をAP機器と認識し、デジタルカメラ100が形成したネットワークに参加することが可能となる。上記のようにデジタルカメラ100を動作させるためのプログラムは不揮発性メモリ103に保持されているものとする。
なお、本実施形態におけるデジタルカメラ100はAPの一種であるものの、CL機器から受信したデータをインターネットプロバイダなどに転送するゲートウェイ機能は有していない簡易APである。したがって、自機が形成したネットワークに参加している他の装置からデータを受信しても、それをインターネットなどのネットワークに転送することはできない。
次に、デジタルカメラ100の外観について説明する。図1(b)、図1(c)はデジタルカメラ100の外観の一例を示す図である。レリーズスイッチ105aや再生ボタン105b、方向キー105c、タッチパネル105dは、前述の操作部105に含まれる操作部材である。また、表示部106には、撮像部102による撮像の結果得られた画像が表示される。また、本実施形態のデジタルカメラ100は、カメラ筺体の側面に近距離無線通信部112のアンテナ部分を有する。この近距離無線通信部112同士を一定の距離に近づけることにより、他の機器と近接無線通信を確立することができる。これにより、ケーブル等を介さずに非接触で通信可能であると共に、ユーザの意図に沿って通信相手を限定することができる。
以上がデジタルカメラ100の説明である。
<スマートデバイス200の内部構成について>
図2は、本実施形態の情報処理装置の一例であるスマートデバイス200の構成例を示すブロック図である。なお、スマートデバイスとはスマートフォン等の携帯電話やいわゆるタブレットデバイスを含む。なお、ここでは情報処理装置の一例としてスマートデバイスについて述べるが、情報処理装置はこれに限られない。例えば情報処理装置は、無線機能付きのデジタルカメラやプリンタ、テレビ、あるいはパーソナルコンピュータなどであってもよい。
制御部201は、入力された信号や、後述のプログラムに従ってスマートデバイス200の各部を制御する。なお、制御部201が装置全体を制御する代わりに、複数のハードウェアが処理を分担することで、装置全体を制御してもよい。
撮像部202は、撮像部202に含まれるレンズで結像された被写体光を電気信号に変換し、ノイズ低減処理などを行い、デジタルデータを画像データとして出力する。撮像した画像データはバッファメモリに蓄えられた後、制御部201にて所定の演算を行い、記録媒体210に記録される。
不揮発性メモリ203は、電気的に消去・記録可能な不揮発性のメモリである。不揮発性メモリ203には、制御部201が実行する基本的なソフトウェアであるOS(オペレーティングシステム)や、このOSと協働して応用的な機能を実現するアプリケーションが記録されている。また、本実施形態では、不揮発性メモリ203には、デジタルカメラ100と通信するためのアプリケーション(以下アプリ)が格納されている。
作業用メモリ204は、表示部206の画像表示用メモリや、制御部201の作業領域等として使用される。
操作部205は、スマートデバイス200に対する指示をユーザから受け付けるために用いられる。操作部205は例えば、ユーザがスマートデバイス200の電源のON/OFFを指示するための電源ボタンや、表示部206に形成されるタッチパネルなどの操作部材を含む。
表示部206は、画像データの表示、対話的な操作のための文字表示などを行う。なお、表示部206は必ずしもスマートデバイス200が備える必要はない。スマートデバイス200は表示部206と接続することができ、表示部206の表示を制御する表示制御機能を少なくとも有していればよい。
記録媒体210は、撮像部202から出力された画像データを記録することができる。記録媒体210は、スマートデバイス200に着脱可能なよう構成してもよいし、スマートデバイス200に内蔵されていてもよい。すなわち、スマートデバイス200は少なくとも記録媒体210にアクセスする手段を有していればよい。
接続部211は、外部装置と接続するためのインターフェイスである。本実施形態のスマートデバイス200は、接続部211を介して、デジタルカメラ100とデータのやりとりを行うことができる。本実施形態では、接続部211はアンテナであり、制御部101は、アンテナを介して、デジタルカメラ100と接続することができる。なお、デジタルカメラ100との接続では、直接接続してもよいしアクセスポイントを介して接続してもよい。データを通信するためのプロトコルとしては、例えば無線LANを通じたPTP/IP(Picture Transfer Protocol over Internet Protocol)を用いることができる。なお、デジタルカメラ100との通信はこれに限られるものではない。例えば、接続部211としては、赤外線通信モジュール、Bluetooth(登録商標)通信モジュール、WirelessUSB等の他の無線通信モジュールを採用してもよい。
近距離無線通信部212は、他機との非接触近距離通信を実現するための通信ユニットである。近距離無線通信部212は、無線通信のためのアンテナと無線信号を処理するための変復調回路や通信コントローラから構成される。近距離無線通信部212は、変調した無線信号をアンテナから出力し、またアンテナで受信した無線信号を復調することにより非接触近距離通信を実現する。ここでは、ISO/IEC 18092の規格(いわゆるNFC)に従った非接触通信を実現する。近距離無線通信部212は、他のデバイスからデータ読み出し要求を受けると、不揮発性メモリ203に格納されているデータに基づき、応答データを出力する。本実施形態では、スマートデバイス200は、近距離無線通信部212を通じて、NFCの規格で定義されているカードリーダモード、カードライタモードおよびP2Pモードで動作し、主にInitiatorとしてふるまう。対して、デジタルカメラ100は近距離無線通信部112を介して、主にTargetとしてふるまう。
公衆網接続部213は、公衆無線通信を行う際に用いられるインターフェイスである。スマートデバイス200は、公衆網接続部213を介して、他の機器と通話することができる。この際、制御部201はマイク214およびスピーカ215を介して音声信号の入力と出力を行うことで、通話を実現する。本実施形態では、公衆網接続部213はアンテナであり、制御部101は、アンテナを介して、公衆網に接続することができる。なお、接続部211および公衆網接続部213は、一つのアンテナで兼用することも可能である。
以上がスマートデバイス200の説明である。
<メニュー操作で画像を送信する手順について>
次に、デジタルカメラ100において、ユーザ操作によってメニュー画面からスマートデバイスと無線LAN接続し画像を送信する手順について、図3、図4(a)を用いて説明する。
図3は、第1の実施形態におけるデジタルカメラ100において、ユーザ操作によって表示部106に表示されるメニュー画面からスマートデバイス200と無線LAN接続し画像を送信する処理を示すシーケンス図である。
図4(a)は第1の実施形態におけるデジタルカメラ100において、ユーザ操作によって表示部106に表示されるメニュー画面からスマートデバイス200と無線LAN接続し画像を送信する際の画面遷移図である。
まず、ステップS301において、デジタルカメラ100は図4の画面401を表示部106に表示させ、スマートデバイスと接続する機能を実行するためのアイコン(画面401のアイコン450)の選択を受け付ける。ユーザは、アイコン450を、操作部105(例えばタッチパネル)を介して選択することで、スマートデバイスと接続する機能を実行する指示を入力することができる。なお、この画面401においては他の通信機能を用いるためのアイコンも表示される。例えばスマートデバイスではなく、他のカメラと接続する機能を実行するためのアイコンや、対応するアプリがインストールされているPCと接続する機能を実行するためのアイコンが表示される。また、ネットワークのSNSや、オンラインアルバムのウェブサイトにコンテンツをアップロードする機能を実行するためのアイコンも表示される。さて、制御部101が、アイコン450の選択を検知したならば、無線LAN接続のための処理(すなわちステップS302以降の処理)を開始する。なお、無線LANの規格としては例えばWi−Fiを採用することができる。
次に、ステップS302において、制御部101は、簡易APを起動する準備を行う。具体的には、簡易APを起動してビーコンの発信を開始する前に、無線LANの通信パラメータ(ここでは少なくともネットワーク識別子であるSSID(Service Set Identifier)と暗号化キー)を生成する。本実施形態では、生成するSSIDと暗号化キーは、いずれも本ステップが実行される度にランダムに決定される値が用いられる。すなわち、ユーザがメニュー操作によって無線LAN接続を開始する度に、毎回異なる通信パラメータを生成する。SSIDは、予め不揮発性メモリに記録された機器情報を基に生成する。機器情報とは、例えば、機器名や個体識別情報(GUID:Globally Unique Identifierあるいは、UUID:Universally Unique Identifierなど)などである。暗号化キーは、生成した乱数をパスフレーズとして暗号化計算を繰り返すことで生成する。例えば、IEEE802.11i規格書に提示された方法によって暗号化キーを生成する。本ステップの処理はパスフレーズに対して、ハッシュ関数計算を4096回繰り返すことで暗号化キーを生成するため、多量の計算を実行する。そのため、暗号化キー生成には、ある程度の時間を要する。
次に、ステップS303において、制御部101は、ステップS302で生成したSSIDと暗号化キーを用いて簡易APを起動して無線LANネットワークを生成し、画面402を表示する。なお、ステップS302の前に、過去に接続したことのある機器のリスト(いわゆる接続履歴一覧)を表示して、過去に接続したことのある機器と接続するか、新たな機器と接続するかの選択をユーザに促してもよい。この場合、過去に接続したことのある機器との接続に用いた通信パラメータを、過去に接続したことのある機器の個体識別情報と共に保持しておく。そして、ここで過去に接続したことのある機器との接続が選択された場合には、保持していた通信パラメータを利用して無線LANネットワークを生成する。これによりスマートデバイス側で保持する履歴と同じ通信パラメータを用いることになるため、スマートデバイス側の操作も履歴からの選択で済み、新たなパスの入力の手間を省くことができる。
次に、ステップS304において、制御部101は、DHCP(Dynamic Host Configuration Protocol)サーバを起動し、簡易APが生成するネットワークに参加した機器に対してIPアドレスを割り振る準備を行う。
次に、ステップS305において、制御部101は、機器の検索を開始する。なお機器検索で用いられるのはディスカバリプロトコルであり、例えば、SSDP(Single Service Discovery Protocol)やMalticast DNSなどを用いることができる。
次に、ステップS306において、スマートデバイス200は、無線LAN設定を開始する指示を受け付ける。ユーザは、OSのメニューから、無線LA設定を開始する指示を入力するためのメニューを選択することで、本ステップの処理の実行を指示することができる。無線LAN設定を開始すると、表示部206に、不図示のSSID一覧表示画面が表示される。
一方、スマートデバイス200は、ステップS307において、ステップS305にて表示部206に表示されたSSID一覧から、デジタルカメラ100が生成した簡易APのネットワークの選択を受け付ける。なお、この際、デジタルカメラ100の表示部106には、画面402のように、デジタルカメラ100が生成しているネットワークの通信パラメータが表示されている。ユーザは、デジタルカメラ100の画面402に表示されるSSIDを見ながら、SSID一覧に表示されるSSIDから、デジタルカメラ100が生成しているネットワークのSSIDを選択することができる。
次に、ステップS308において、ユーザ操作によってネットワークが選択されると、スマートデバイス200は、デジタルカメラ100の簡易APのネットワークに参加する。
スマートデバイス200がネットワークに参加すると、デジタルカメラ100は、ステップS309において、スマートデバイス200にIPアドレスを設定する。ここまでの処理によって、ネットワークレベルで、デジタルカメラ100とスマートデバイス200との間の接続が確立する。
続いて、以降の処理によって、アプリケーションレベルでの接続の確立を行う。ステップS310において、スマートデバイス200は、操作部205を介して、スマートデバイスの不揮発性メモリ203に保存されたアプリケーションを起動する指示をユーザから受け付ける。
次に、ステップS311において、スマートデバイス200は、起動したアプリケーションの制御に従い、参加したネットワーク内にアドバタイズ通知をブロードキャストし、自身の存在をデジタルカメラ100に通知する。なおアドバタイズ通知で用いられるのはディスカバリプロトコルであり、例えば、SSDP(Single Service Discovery Protocol)やMalticast DNSなどを用いることができる。
次に、ステップS312において、デジタルカメラ100の制御部101は、ステップS310でアドバタイズ通知を受信したならば、アドバタイズに含まれるデバイス名を表示部106に表示するよう制御する。ここでは、図4の画面403を表示部106に表示して接続可能な機器の一覧をユーザに示す。なお、デジタルカメラ100の生成するネットワークには、複数のスマートデバイスが参加することが可能である(すなわちネットワークレベルでの接続は1対複数での接続が可能である)。そのため、アドバタイズも複数機器から受信することがあるため、本ステップにて、どの機器とアプリケーションレベルでの接続を確立するのか選択するよう、ユーザに促す。ユーザは操作部105を操作して、画面403から接続したい機器を選択することができる。
次に、ステップS313において、デジタルカメラ100の制御部101は、接続したい機器を選択したことを検知すると、選択された接続対象機器であるスマートデバイス200との接続処理を開始する。これに併せて、表示部106に画面404を表示する。
次に、ステップS314において、スマートデバイス200の制御部201はデジタルカメラ100に対して接続可否を通知する。
次に、ステップS315において、デジタルカメラ100とスマートデバイス200の、アプリケーションレベルの接続が完了する。制御部101はスマートデバイス200との接続が完了することを検知すると画面405や画面407を表示する。これらの画面では、送信対象となる画像が表示され、画像送信サービスを開始する。
次に、ステップS316において、ユーザ操作によって送信したい画像の選択が行われる。1枚の画像のみを送信する場合は画面405から再生表示されている画像の1枚送信を実行するボタンを選択する。複数枚の画像を送信する場合は、画面407に遷移して複数の画像を一度に選択することも可能である。制御部101は、複数枚の画像選択が選択され、送信を実行するボタンが選択されたことを検知すると、画像送信前のユーザ確認のため画面408を表示部106に表示する。ユーザは再度、画像送信を実行するボタンを選択することで画像送信が実行される。
次に、ステップS317において、制御部101はユーザ操作によって選択された画像をスマートデバイス200に送信する。なお、画像送信を実行する通信プロトコルは、例えばHTTP(Hyper Text Transfer Protocol)であってもよいし、PTP−IP(Picture Transfer Protocol over IP)などがある。画像送信中、制御部101は表示部106に画面406を表示し、画像送信の進捗をユーザに示す。
最後に、ステップS318において、制御部101は画像の送信完了を検知すると、不図示だが画像送信が完了したことを表示部106に表示する。なお、この後、デジタルカメラ100は、再度送信したい画像の選択、及び送信に進むことも可能であり、画像送信モードを抜けて撮影モード、画像再生モードへの遷移、またはシャットダウンすることも可能である。
以上が、デジタルカメラ100において、ユーザ操作によってメニュー画面からスマートデバイスと無線LAN接続し画像を送信する手順である。
<NFCでの通信をトリガに無線LAN接続する手順について>
次に、デジタルカメラ100とスマートデバイス200において、近距離無線通信部同士の非接触通信(以下、NFCタッチ通信と呼ぶ)をトリガに無線LAN接続し画像を送信する手順について、図5、図4(b)、図6を用いて説明する。
図5は、第1の実施形態におけるデジタルカメラ100の近距離無線通信部112がスマートデバイス200の近距離無線通信部212とNFCタッチ通信をトリガにスマートデバイス200と無線LAN接続して画像を送信する処理を示すシーケンス図である。
図4(b)は第1の実施形態におけるデジタルカメラ100の近距離無線通信部112がスマートデバイス200の近距離無線通信部212とNFCタッチ通信をトリガにスマートデバイス200と無線LANに接続して画像を送信する際の画面遷移図である。
図6(a)は、第1の実施形態におけるデジタルカメラ100内の近距離無線通信部112の不揮発性メモリにデジタルカメラ100の制御部101が書き込む情報600の構造を示す概念図である。
図6(b)は第1の実施形態におけるデジタルカメラ100内の近距離無線通信部112の不揮発性メモリにスマートデバイス200の近距離無線通信部が書き込む情報610の構造を示す概念図である。
まず、ステップS501において、デジタルカメラ100とスマートデバイス200とは、互いに近接したことを検知する。ここでは、ユーザが互いの機器を近づけることで近接した場合を例に挙げて説明する。なお、デジタルカメラ100の近距離無線通信部112がNFCタグであり、スマートデバイス200の近距離無線通信部212がNFCリーダーライターである場合を例に挙げて説明する。この時デジタルカメラ100は、画像再生モードにて表示部106に画面411のように画像を再生している。また、スマートデバイス200は基本ソフトが起動している状態である。
次に、ステップS502において、制御部201は、近接無線通信が開始されたことを検知すると、近距離無線通信部112の不揮発性メモリに保存されている情報600を、近距離無線通信部212を介して読み込む。なお、ここで読み込む情報600はデジタルカメラ100自身に関する情報であるデジタルカメラ機種情報と、デジタルカメラ100が対応するアプリケーションを示す対応アプリケーション情報とを含む。更に、デジタルカメラ100の簡易AP機能で用いる通信パラメータを含む簡易AP情報を含む。
デジタルカメラ機種情報は、デジタルカメラ100の製品種別601や世代情報602、モデルID603、デジタルカメラ100の個体を識別するGUID604を含む。更に、デジタルカメラ100がスマートデバイス200と無線LAN通信可能な状態であるかを示す状態情報605などを含む。
また、対応アプリケーション情報は、スマートデバイス200上で動作しデジタルカメラ100と無線LAN通信を介して連携し、カメラ内の画像データや種々の情報を取得することが可能なアプリケーションを示すパッケージ名606を含む。
また、簡易AP情報は、SSID607、暗号化キーのパスフレーズとなるSecurityKey608などを含む。
なおこれらの情報は、スマートデバイス200とNFCタッチ通信する前(例えばデジタルカメラ100が電源をオフするタイミング等)に、予め制御部101が近距離無線通信部112の不揮発性メモリに書き込まれる。また、メニュー操作からの無線LAN接続の場合とは異なり、近距離無線通信部112の不揮発性メモリに保存するSSIDは、デジタルカメラ毎にユニークな固定値を用いる。例えば、接続部111に割り当てられるMACアドレスから算出したSSIDを用いる。このようにするのは以下の理由による。すなわち、NFCを介して無線LAN接続する手順は、パスワードの入力を必要としないが故に手軽に利用できる。この時、毎回異なるSSIDを用いてしまうと、スマートデバイス側の履歴にいくつもの、これ以降利用されないSSIDの記録が残ってしまう。これを防ぐために、近距離無線通信部112の不揮発性メモリに保存するSSIDは固定値を用いる。なお、SecurityKeyは、セキュリティ性を優先し、毎回ランダムに生成した値を近距離無線通信部112の不揮発性メモリに保存する。なお、このSecurityKeyの文字数は、メニュー操作からの無線LAN接続の場合と比べて、少なくしてもよい。こうした場合、スマートデバイス側で、足りない文字数を補うようにすればよい。この場合、文字数の補い方について予め規定しておき、それに応じてデジタルカメラ100側でも対応した値を算出してネットワークを生成すればよい。例えば、少なくした文字列の冒頭または末尾にゼロを付加して、文字数を補う方法などを採用することができる。
次に、ステップS503において、制御部201は、読み込んだパッケージ名606を解析し、パッケージ名に対応したアプリケーションを起動する。次に、制御部201はアプリケーションの指示に従い、情報600を解析し、製品種別601や世代情報602、モデルID603などから、スマートデバイス200と無線LAN接続による画像の転送に対応しているデジタルカメラであるか否かを判定する。更に、スマートデバイス200は状態情報605からデジタルカメラ100が現在スマートデバイス200と無線LAN通信が可能な状態か否かを判断する。例えば、デジタルカメラ100のメニューから、ユーザが無線LANを利用しないという設定にしていた場合、この状態情報605は、無線LAN通信が不可能な状態であることを示す値で記録される。
次に、ステップS504において、制御部201は、近距離無線通信部212を通じてデジタルカメラ100の近距離無線通信部112へスマートデバイス200の情報610を書き込む。これにより、デジタルカメラ100に対して、ステップS502での情報の読み取りが完了したことを伝えると共に、自機が無線LANのハンドオーバー機能に対応していることを伝える。
ここで書き込まれる情報610は図3(b)に示すように、アプリケーションID611やアプリケーションのGUID612を含むアプリケーション情報や、SSID613、SecurityKey614などの簡易AP情報を含む。ここで書き込みを行う簡易AP情報はステップS502でデジタルカメラ100の近距離無線通信部112から読み込んだ情報600に含まれていた簡易APの情報と同一の情報である。また、本書き込みは近距離無線通信部112の有する不揮発性メモリの先頭から図6(a)のデジタルカメラ100の情報を上書きするように書き込みを行う。
なお、ここで、ステップS502で読み取った情報を上書きするのは以下の理由による。すなわち、近距離無線通信部112(ここではNFCタグ)の記録領域へのNDEFデータの書き込みは、例えばOSによって提供されるAPIを用いることで、簡単に実装することができる。例えば、NFCタグの記録領域への書き込みには、どのようなサイズのデータをどの領域に書き込むのかを指定したり、書き込んだ後にその領域の属性情報を更新したりしなければならない。しかし、APIを利用すれば、アプリは書き込みたいデータを指定するだけで済む。つまり、デベロッパはデータのペイロード部分の取り扱いだけを意識すればよくなる。しかしながら、APIは実装の簡便さが優先されていることも多く、細かな指示を入力することができない場合がある。例えば所定の項目以外の項目をそのままにしておきつつ所定の項目のみを書き変える、ということが難しい場合がある。例えば、単にスマートデバイス200の情報610を書きこむようアプリがOSに指示し、その他の領域について書き込むデータを指示しなかった場合、その他の領域には何も記録されていないという情報がNDEFのヘッダに書き込まれることになる。つまり、その他の領域のデータが削除されたことと同じ扱いになる。この場合、以下の点で不都合が生じる。すなわち、デジタルカメラ100がネットワークを生成する際には、NFCタグの記録領域に記録されている通信パラメータを利用する。これにより、スマートデバイス200と通信パラメータを共有する。しかし、スマートデバイス200がNFCタグの情報を読み終えたことを書きこむことに伴って通信パラメータが削除されてしまった場合、デジタルカメラ100は、ネットワークを生成する際に利用する通信パラメータをNFCタグの記録領域から取得できない。このため、スマートデバイス200は、NFCタグの情報を読み終えたことに加えて、読みだしたばかりのNFCタグの情報を書き戻す。これにより、少なくとも通信パラメータが記録されている項目については、NFCタグの読み出し前と同じ状態にして、デジタルカメラ100が、ネットワークの生成に用いる通信パラメータを得ることができるようにする。
次に、ステップS505において、制御部201は、デジタルカメラ100が簡易APの無線LANネットワークを生成するまで無線LANネットワークの検索を繰り返すことにより待つ。
一方、デジタルカメラ100では、ステップS506において、制御部101がスマートデバイス200から近距離無線通信部112の不揮発性メモリに情報610が書き込まれたことを検知すると、表示部106に画面412を表示する。
ステップS507において、近距離無線通信部112の不揮発性メモリに保存された情報610を読み込み作業用メモリ104に展開する。
次に、ステップS508において、制御部101は情報610を解析し、アプリケーションID611などから、デジタルカメラ100と無線LAN接続による画像の転送に対応しているスマートデバイスからの書き込みであるか否かを判断する。
次に、ステップS509において、制御部101は、ステップS504にてスマートデバイス200に書き潰された近距離無線通信部112の不揮発性メモリ内の情報を、再度デジタルカメラ100を示す情報600の構成に戻す。具体的には、近距離無線通信部112の不揮発性メモリにデジタルカメラ100の情報600を書き込む。この時、SecurityKey608は、次回のNFCタッチ接続のためにステップS502で読み込まれたSecurityKeyとは異なるSecurityKeyが書き込まれる。例えば、制御部101が近距離無線通信部112の不揮発性メモリに情報600を書き込む前に生成した乱数などである。これにより、NFCタグの通信パラメータは、これから接続するスマートデバイス200との無線LAN接続で用いるパラメータではないパラメータが記録されることになる。それゆえ、これから接続するスマートデバイス200との無線LAN接続で用いるパラメータが、近接するだけで読み取られてしまうことを防ぐことができる。つまり、セキュリティ性をより高めることができる。なお、SSIDについては前述のとおり、ステップS502で読みこまれたSSIDと同じSSIDが書き込まれる。また、この後デジタルカメラ100はスマートデバイス200と無線LAN接続を行うため、他の機器とは無線LAN接続しなくなる。したがって、状態情報605には予め無線LAN通信不可能な状態を示す情報を書き込み、対応するスマートデバイスが無線LAN接続を試みてしまうことを防ぐ。
次に、ステップS510において、制御部101は簡易APを起動する準備を行う。簡易APを起動する前に、SSIDと暗号化キーを生成する。SSIDは、S507において作業用メモリ104に展開したSSID613を基に生成する。また、暗号化キーは、同様にS507において作業用メモリ104に展開したSecurityKey614を基に生成する。この時、図3のS302と比較し、計算量を少なくして暗号化キーを生成し、生成時間を短くする。例えば、ハッシュ関数計算を繰り返す回数を、4096回ではなく10回にする。
次に、ステップS511において、制御部101は、簡易APを起動し、無線LANネットワークを生成し、スマートデバイス200が本ネットワークに参加するのを待つ。
次に、ステップS512において、制御部101はDHCPサーバを起動する。本ステップではステップS303と同様の処理が実行される。
次に、ステップS513において、制御部201は、ステップS502で読み込んだSSID607、SecurityKey608を基に、ステップS511でデジタルカメラ100が生成した簡易APの無線LANネットワークに参加する。
次に、ステップS514において、制御部101は、スマートデバイス200にIPアドレスを設定する。本ステップはステップS308と同様に処理する。
次に、ステップS515において、制御部101は、スマートデバイス200との接続処理を開始し、表示部106に画面413を表示する。
次に、ステップS516において、制御部201はデジタルカメラ100に対して接続可否を通知する。
次に、ステップS517において、デジタルカメラ100とスマートデバイス200の接続が完了する。制御部101はスマートデバイス200との接続が完了することを検知すると画面414や画面416を表示し、送信対象となる画像を表示部106に表示する。
次に、ステップS518において、デジタルカメラ100は、送信する画像の選択を受け付ける。1枚の画像のみを送信する場合は画面414から再生表示されている画像の1枚送信を実行するボタンを選択する。複数枚の画像を送信する場合は、画面416に遷移して複数の画像を一度に選択することも可能である。制御部101は、複数枚の画像選択が選択され、送信を実行するボタンが選択されたことを検知すると、画像送信前のユーザ確認のため画面417を表示部106に表示する。ユーザは再度、画像送信を実行するボタンを選択することで画像送信が実行される。
次に、ステップS519において、制御部101はユーザ操作によって選択された画像をスマートデバイス200に送信する。なお、画像送信を実行する通信プロトコルは、例えばHTTP(Hyper Text Transfer Protocol)や、PTP−IP(Picture Transfer Protocol over IP)などを用いることができる。画像送信中、制御部101は表示部106に画面415を表示し、画像送信の進捗をユーザに示す。
次に、ステップS520において、制御部101は画像の送信完了を検知すると、不図示だが画像送信が完了したことを表示部106に表示する。なお、この後、デジタルカメラ100は、再度送信したい画像の選択、及び送信に進むことも可能であり、画像送信モードを抜けて撮影モード、画像再生モードへの遷移、またはシャットダウンすることも可能である。ユーザの指示に応じて、デジタルカメラ100とスマートデバイス200との無線LAN接続を切断すると、処理はステップS521に進む。なお、ここでは説明を簡単にするためにユーザ指示に応じて無線LAN接続を切断する場合を例に挙げて説明するが、無線LAN接続を切断するトリガとしては、ユーザ指示に限られるものではない。例えば、画像の送信が完了したことに応じて無線LAN接続を切断するようにしてもよい。
無線LAN接続が切断したならば、ステップS521において、制御部101は、近距離無線通信部112の不揮発性メモリに保存された情報600の状態情報605に、無線LAN通信が可能である状態を示す情報を書き込む。
以上が、デジタルカメラ100とスマートデバイス200において、近距離無線通信部同士の非接触通信をトリガに無線LAN接続し画像を送信する手順である。なお、上述のステップS504が完了した後は、ユーザは機器同士を近接させた状態を維持する必要はない。また、無線LAN接続が確立した後にNFC通信が切断しても、無線LAN接続に影響はない。すなわち、無線LAN接続は維持される。
<デジタルカメラ100の動作について>
次に、上記の手順を実現するためのデジタルカメラ100の動作について説明する。
図7は、本実施形態におけるデジタルカメラ100の動作を示すフローチャートである。
まず、ステップS701において、制御部101は、近距離無線通信部112の不揮発性メモリに書き込みがあったか否かを検知する。本ステップの処理は図5のステップS506に相当する。もし、近距離無線通信部112の不揮発性メモリに書き込みがあった場合はステップS715に進み、そうでない場合はステップS702へ進む。
まず、ステップS702に進んだ場合について説明する。
ステップS702において、制御部101は、ユーザ操作によって、スマートデバイス200と接続して画像送信するメニューが選択されたか否かを検知する。メニューが選択されたと検知した場合はステップS703に進む。そうでない場合はステップS701に戻る。なお、本ステップの処理は図3のステップS301に相当する。
次に、ステップS703において、制御部101は、簡易APの起動準備を行う。即ち、ランダムな値の無線LAN通信パラメータ(少なくともSSIDと暗号化キー)を生成する。本ステップの処理は図3のステップS302に相当する。
次に、ステップS704において、制御部101は、簡易AP機能を起動し、ステップS703で生成した通信パラメータを含むビーコンのブロードキャストを開始する。本ステップの処理は図3のステップS303に相当する。
次に、ステップS705において、制御部101は、DHCPサーバを起動する。本ステップの処理は図3のステップ304に相当する。
次に、ステップS706において、制御部101は、機器検索を開始する。本ステップの処理は図3のステップS305に相当する。
次に、ステップS707において、制御部101は、簡易APネットワークに機器が参加したか否かを検知する。機器が参加したと判断した場合はステップS709に進む。そうでない場合は、処理を終了する。例えば、一定時間が過ぎた後、ネットワークに機器が参加しなかった旨を不図示であるが表示部106に表示し、簡易APの起動を終了する。
次に、ステップS708において、制御部101は、ネットワークに参加した機器に対してIPアドレスを割り当てる。本ステップの処理はS309に相当する。
次に、ステップS709において、制御部101は、接続可能な相手機器が発見されたか否かを検知する。ステップS311においてスマートデバイス200がアドバタイズ送信したことを検知した場合、ステップS711に進む。そうでない場合は処理を終了する。例えば、一定時間が過ぎた後、アドバタイズ送信を受信しなかった旨を不図示であるが表示部106に表示し、簡易APの起動を終了する。
次に、ステップS710において、制御部101は、ユーザ操作によって接続する相手機器が選択されたかを検知する。本ステップの処理は図3のS312に相当する。
次に、ステップS711において、制御部101は、ユーザ操作によって選択された相手機器であるスマートデバイス200に対して接続処理を開始する。本ステップの処理は図3のステップS313、S315に相当する。
次に、ステップS712において、制御部101は、ユーザ操作によって送信対象となる画像選択が行われたか否かを検知する。本ステップの処理は図3のステップS316に相当する。
次に、ステップS713において、制御部101は、選択画像をスマートデバイス200に送信する。本ステップの処理は図3のステップS317に相当する。画像の送信が完了すると、画像送信処理を終了する。
以上が、ステップS701からステップS702に進んだ場合についての説明である。
続いて、ステップS701からステップS714に進んだ場合について説明する。
ステップS714において、制御部101は、ステップS701で近距離無線通信部112の不揮発性メモリに書き込まれた情報を読み出す。本ステップの処理は図5のステップS507に相当する。
次に、ステップS715において、制御部101は、読み出した情報を解析する。本ステップの処理は図5のステップS508に相当する。なお、ここで情報を解析した結果、デジタルカメラ100と無線LAN接続による画像の転送に対応しているスマートデバイスからの書き込みではないことを検知した場合、本フローチャートの処理を終了する。例えば、スマートデバイス200が書き込む情報に含まれるアプリケーションを示す識別子を参照して、対応しているアプリであるかどうかをチェックする。また、SSIDやSecurityKeyが過不足なく書き込まれているかどうかをチェックする。アプリが対応していないと判断されたり、SSIDやSecurityKeyの情報が不足している場合には、対応しているスマートデバイスからの書き込みではないと判断し、本フローチャートの処理を終了する。
次に、ステップS716において、制御部101は、近距離無線通信部112の不揮発性メモリに、次回以降のハンドオーバーのための通信パラメータを含む情報を書き込む。ここで書き込まれるハンドオーバー用の通信パラメータのうち、SSIDについてはステップS703とは異なり、毎回同じ値が書き込まれる。これにより、スマートデバイス200の接続履歴に不要な情報が残ってしまうことを防ぐ。なお、SecurityKeyについてはランダムな値が用いられる。本ステップの処理は図5のステップS509に相当する。
次に、ステップS717において、制御部101は、簡易APの起動準備を行う。ここではステップS716で近距離無線通信部112の不揮発性メモリに書き込んだ通信パラメータではなく、ステップS714で読みだした通信パラメータから、SSIDと暗号化キーを生成する。なお、ここで暗号化キーを生成するための計算は、ステップS703での暗号化キーの生成の際の計算に比べて、計算量が少なくする。これにより、無線LAN接続までの時間をより短くする。本ステップの処理は図5のステップS510に相当する。
次に、ステップS718において、制御部101は、簡易APを起動する。本ステップの処理は図5のステップS511に相当する。
次に、ステップS719において、制御部101は、DCHPサーバを起動する。本ステップの処理は図5のステップS512に相当する。
次に、ステップS720において、制御部101は、簡易APネットワークに機器が参加したか否かを検知する処理を行う。機器が参加したと判断した場合はステップS721に進む。そうでない場合は、処理を終了する。例えば、一定時間が過ぎた後、ネットワークに機器が参加しなかった旨を不図示であるが表示部106に表示し、簡易APの起動を終了する。
次に、ステップS721において、制御部101は、接続機器にIPアドレスを割り当てる。本ステップの処理は図5のステップS514に相当する。
次に、ステップS722において、制御部101は、制御部101は、接続機器であるスマートデバイス200に対して接続処理を開始する。本ステップの処理は図5のステップS515、S517に相当する。
次に、ステップS723において、制御部101は、ユーザ操作によって送信対象となる画像選択が行われたか否かを検知する。本ステップの処理は図3のステップS518に相当する。
次に、ステップS724において、制御部101は、選択画像をスマートデバイス200に送信する。本ステップの処理は図5のステップS519に相当する。画像の送信が完了すると、画像送信処理を終了する。これに伴い、スマートデバイス200との無線LAN接続を切断する。
最後に、ステップS725において、制御部101は、デジタルカメラ100の状態情報を近距離無線通信部112の不揮発性メモリに書き込む。具体的には、新たに無線LAN接続が可能である旨を示す情報を書き込む。この後、例えば自動的にデジタルカメラ100の電源をOFFにしてもよい。
以上が、本実施形態におけるデジタルカメラ100の処理を示すフローチャートである。
<スマートデバイス200の処理のフローについて>
次に、上記の手順を実現するためのスマートデバイス200の動作について説明する。
図8は、本実施形態におけるスマートデバイス200の動作を示すフローチャートである。
まず、ステップS801において、制御部201は、近距離無線通信部212がデジタルカメラ100の近距離無線通信部112に近接したか否かを検知する。本ステップの処理は図5のステップS501に相当する。もし、近接したと判断した場合はステップS810に進み、そうでない場合はステップS802へ進む。
まず、ステップS802に進んだ場合について説明する。
ステップS802において、制御部201は、ユーザ操作によって、デジタルカメラ100と接続して画像受信するメニューが選択されたか否かを検知する。メニューが選択されたと検知した場合はステップS803に進む。そうでない場合はステップS801に戻る。
次に、ステップS803において、制御部201は、ユーザ操作によって、操作部205を用いて無線LANネットワークの設定メニューを選択したかを検知する。本ステップの処理は図3のステップS306に相当する。
次に、ステップS804において、制御部201は、ユーザ操作によって、操作部205を用いて接続するネットワークが選択されたか否かを検知する。本ステップの処理は図3のステップS307に相当する。
次に、ステップS805において、制御部201は、ステップS804で選択したネットワークに参加する。本ステップの処理は図3のステップS308に相当する。
次に、ステップS806において、制御部201は、DHCPアドレッシングにより図3のステップS309にてデジタルカメラ100から貸与されたIPアドレスをスマートデバイス200のIPアドレスとして設定する。
次に、ステップS807において、制御部201は、デジタルカメラ100と接続して画像を受信するためのアプリケーションを起動する。本ステップの処理は図3のステップS310に相当する。
次に、ステップS808において、制御部201は、デジタルカメラ100に対してアドバタイズ送信を行う。本ステップの処理は図3のステップS311に相当する。
次に、ステップS809において、制御部201は、デジタルカメラ100との接続処理を行う。本ステップの処理は図3のステップS314に相当する。
次に、ステップS810において、制御部201は、デジタルカメラ100から送信された画像を受信する。すべての画像の受信が完了した場合、画像送信が完了した旨をデジタルカメラ100に通知し、例えば不図示であるが表示部206に受信完了のメッセージを表示して処理を終了する。
以上が、ステップS801からステップS802に進んだ場合についての説明である。
続いて、ステップS801からステップS811に進んだ場合について説明する。
ステップS811において、制御部201は、近距離無線通信部212よりデジタルカメラ100の近距離無線通信部112の不揮発性メモリに記録された情報を読み込む。本ステップの処理は図5のステップS502に相当する。なお、ここで読みだした情報が、対応する情報でなければ、エラーを通知して本フローチャートの処理を終了する。対応する情報でない場合とは、例えば、読みだしたデータがNDEFに従ったデータでない場合等が考えられる。また、機器同士を近接させる時間が短く、読み取り終える前に離れてしまった場合も、エラー通知の後に処理を終了する。これに加えて、既にスマートデバイス200が、他の装置と無線LAN接続している場合にも、本フローチャートの処理を終了する。
次に、ステップS812において、制御部201は、ステップS811で読みだした情報に基づき、デジタルカメラ100と接続して画像を受信するためのアプリケーションを起動する。本ステップの処理は図5のステップS503に相当する。
次に、ステップS813において、制御部201は、近距離無線通信部212よりデジタルカメラ100の近距離無線通信部112の不揮発性メモリに対して情報を書き込む。ここで書き込む情報は、スマートデバイス200の情報に加え、ステップS811で読みだしたSSIDやSecurityKeyを含む。本ステップの処理は図5のステップS504に相当する。なお、既に他のデジタルカメラとの無線LAN通信が確立している場合は、本ステップを経ることなく、通信中である旨をユーザに通知して本フローチャートの処理を終了する。
次に、ステップS814において、制御部201は、無線LANネットワークを探索する。具体的には、OSの管理するSSIDのデータベースに、ステップS811で読みだしたSSIDとSecurityKeyを、有効な情報として記録する。これに併せて、既に管理されている他のSSIDの状態を無効に設定する。これにより、既に他の無線LANネットワークに参加していたとしても、その無線LANネットワークを離脱して、デジタルカメラ100のネットワークのみを探索するように制御する。本ステップの処理は図5のステップS505に相当する。
次に、ステップS815において、制御部201は、ネットワークが発見されたか否かを検知する。もし無線LANネットワークを検知した場合はS816に進む。そうでない場合は処理を終了する。例えば、一定時間が過ぎた後、無線LANネットワークが発見されなかった旨を不図示であるが表示部106に表示し、無線LANネットワークの検索を終了する。
次に、ステップS816において、制御部201は、無線LANネットワークに参加する。本ステップの処理は図5のステップS513に相当する。
次に、ステップS817において、制御部201は、DHCPアドレッシングにより図5のステップS514にてデジタルカメラ100から貸与されたIPアドレスをスマートデバイス200のIPアドレスとして設定する。
次に、ステップS818において、制御部201は、デジタルカメラ100との接続処理を行う。本ステップの処理は図5のステップS516に相当する。
最後に、ステップS819において、制御部201は、制御部201は、デジタルカメラ100から送信された画像を受信する。すべての画像の受信が完了した場合、画像送信が完了した旨をデジタルカメラ100に通知し、例えば不図示であるが表示部206に受信完了のメッセージを表示して処理を終了する。なお、受信した画像は、スマートデバイス200の撮像部202によって撮像されて得られる画像を保存する領域と同じ領域に保存する。
以上が、本実施形態におけるスマートデバイス200の処理を示すフローチャートである。
以上、本実施形態では、メニュー操作から無線LAN接続する場合に用いる暗号化キーの値を算出する場合に比べて、非接触無線通信をトリガとして無線LAN接続する場合に用いる暗号化キーの値の算出方法の計算量を削減した。これにより、暗号化キーを用いない場合に比べてセキュリティ性を維持でき、また、メニュー操作から無線LAN接続する場合に比べてより早く無線LAN接続を確立することができる。すなわち、ハンドオーバーにおいて接続時間を短くすることと、セキュリティを維持することとを両立することができる。
[その他の実施形態]
上述の実施形態では、メニュー操作から無線LAN接続する場合に用いるSSIDはランダムに生成し、非接触無線通信をトリガとして無線LAN接続する場合に用いるSSIDは固定値を用いると述べた。このメニュー操作から無線LAN接続する場合に用いるSSIDについては、一部の文字列に、非接触無線通信をトリガとして無線LAN接続する場合に用いるSSIDと共通の文字列を利用するようにしてもよい。例えば前分の文字を共通にして、後半をメニュー操作から無線LAN接続する場合はランダム、非接触無線通信をトリガとして無線LAN接続する場合は固定値とする。これによりユーザは、メニュー操作から無線LAN接続する場合に用いるSSIDと非接触無線通信をトリガとして無線LAN接続する場合に用いるSSIDとのどちらを参照しても、同じデジタルカメラ100のネットワークであると認識することができる。また、この共通する文字列は、例えばデジタルカメラ100のGUIDに基づく値を用いてもよいし、接続部111に割り当てられるMACアドレスから算出した値を用いてもよい。すなわち、機器毎にユニークな値であればよい。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。