以下に、本発明を実施するための形態について、添付の図面を用いて詳細に説明する。
なお、以下に説明する実施の形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正又は変更されてもよい。また、各実施の形態は適宜組み合わされることも可能である。
[第1の実施形態]
<デジタルカメラ100の内部構成>
図1は、本実施形態の記録装置の一例であるデジタルカメラ100の構成例を示すブロック図である。なお、ここでは記録装置の一例としてデジタルカメラについて述べるが、記録装置はこれに限られない。例えば記録装置は、携帯電話や、タブレットデバイス、パーソナルコンピュータなどの情報処理装置であってもよいし、カメラ付き携帯電話等の撮像装置であってもよい。
本実施形態のデジタルカメラ100では、第1制御部101と第2制御部110とが協働することにより各部の制御を行う。第1制御部101は、主に撮像して画像を生成するための処理を制御する。第2制御部110は、主にデジタルカメラ100の移動軌跡を示すログデータを生成するための処理を制御する。第1制御部101の制御する機能が必要無い場合は、ユーザ操作により第1制御部101への通電を停止することができる。その一方で、第2制御部110には通電を継続する。つまり、消費電力の低減とロギングの継続を両立する。
第1制御部101は、入力された信号や、後述のプログラムに従って、後述の第2制御部110と協働してデジタルカメラ100の各部を制御する。本実施形態では、第1制御部101は、主に撮像して画像を生成するための処理を制御する。なお、第1制御部101の機能を複数のハードウェアが分担してもよい。
撮像部102は、撮像部102に含まれるレンズで結像された被写体光を電気信号に変換し、ノイズ低減処理などを行いデジタルデータを画像データとして出力する。撮像した画像データはバッファメモリに蓄えられた後、第1制御部101にて所定の演算を行い、記録媒体107に記録される。
不揮発性メモリ103は、電気的に消去・記録可能な不揮発性のメモリであり、第1制御部101で実行される後述のプログラム等が格納される。
作業用メモリ104は、撮像部102で撮像された画像データを一時的に保持するバッファメモリや、表示部106の画像表示用メモリ、第1制御部101の作業領域等として使用される。
表示部106は、撮像の際のビューファインダー画像の表示、撮像した画像データの表示、対話的な操作のための文字表示などを行う。なお、表示部106は必ずしもデジタルカメラ100が備える必要はない。デジタルカメラ100は表示部106と接続することができ、表示部106の表示を制御する表示制御機能を少なくとも有していればよい。
記録媒体107は、撮像部102から出力された画像や、後述の第2制御部110から提供されるログデータ等を記録することができる。記録媒体107は、デジタルカメラ100に着脱可能なよう構成してもよいし、デジタルカメラ100に内蔵されていてもよい。すなわち、デジタルカメラ100は少なくとも記録媒体107にアクセスする手段を有していればよい。
通信部108は、外部装置と通信するためのインターフェースである。本実施形態のデジタルカメラ100は、通信部108を介して、外部装置とデータのやりとりを行うことができる。データを通信するためのプロトコルとしては、例えば無線LANを通じたPTP/IP(Picture Transfer Protocol over Internet Protocol)を用いることができる。なお、デジタルカメラ100との通信はこれに限られるものではない。例えば、通信部108は、赤外線通信モジュール、Bluewtooth(登録商標)通信モジュール、WirelessUSB等の無線通信モジュールを含むことができる。さらには、USBケーブルやHDMI(登録商標)、IEEE1394など、有線接続を採用してもよい。
第2制御部110は、入力された信号や、後述のプログラムに従って、前述の第1制御部110と協働してデジタルカメラ100の各部を制御する。本実施形態では、第2制御部110は、主にログデータを生成するための処理を制御する。なお、第2制御部110の機能を複数のハードウェアが分担してもよい。本実施形態では、第2制御部110は、第1制御部101に電力を供給していない状態でも通電することができる。すなわち、第1制御部101の動作を停止した状態(いわゆる省電力状態)であっても、第2制御部110により制御される機能を有効に保つことができる。
不揮発性メモリ111は、電気的に消去・記録可能な不揮発性のメモリであり、第2制御部110で実行される後述のプログラム等が格納される。
作業用メモリ112は、後述のログ取得部114から出力されるデータを一時的に保持するバッファメモリや、第2制御部110の作業領域等として使用される。
操作部113は、ユーザがデジタルカメラ100に対する指示をユーザから受け付けるために用いられる。操作部113は例えば、ユーザがデジタルカメラ100の電源のON/OFFを指示するための電源ボタンや、撮像を指示するためのレリーズスイッチ、画像データの再生を指示するための再生ボタンなどの操作部材を含む。なお、操作部材が第2制御部110により制御されるのは、省電力状態から復帰する指示を受け付けられるようにするためである。ユーザは、操作部113の操作部材を操作することで、デジタルカメラ100を省電力状態から通常状態へと復帰させることができる。
ログ取得部114は、測位処理を行う。測位処理とは、GPS衛星から信号を受信し、受信した信号からデジタルカメラ100の位置を示す位置情報、および信号を受信した日時を示す日時情報を算出する処理である。ログ取得部114により算出された位置情報および日時情報は、必要に応じて第2制御部110に提供される。
シリアルフラッシュメモリ115は、ログ取得部114で得られた位置情報および日時情報をログデータとして記録するための記録媒体である。本実施形態では、シリアルフラッシュメモリ115の記録領域をリングバッファの形で扱う。第2制御部110は、ログ取得部114から提供される位置情報と日時情報を対応づけてシリアルフラッシュメモリ115へ記録する。なお、本実施形態のデジタルカメラ100では、外部からシリアルフラッシュメモリ115に直接アクセスすることは出来ないように制御される。シリアルフラッシュメモリ115に記録されたログデータは、一旦記録媒体107を経由して外部に出力されることになる。この処理については後に詳述する。
<PC200の内部構成>
図2は、本実施形態の外部装置の一例であるパーソナルコンピュータ(PC)200の構成例を示すブロック図である。なお、ここでは外部装置の一例としてPCについて述べるが、外部装置はこれに限られない。例えば外部装置は、他のデジタルカメラ、携帯電話、あるいはタブレットデバイスなどであってもよい。
制御部201は、入力された信号や、後述のプログラムに従ってPC200の各部を制御する。なお、制御部201が装置全体を制御する代わりに、複数のハードウェアが処理を分担することで、装置全体を制御してもよい。
メモリ203データを一時的に保持するバッファメモリや、表示部106の画像表示用メモリ、制御部101の作業領域等として使用される。
操作部205は、PC200に対する指示をユーザから受け付けるために用いられる。操作部205は例えば、キーボードや、ポインティングデバイス等が含まれる。ポインティングデバイスとしては、例えばマウスやタッチパッド、タッチパネル等を用いることができる。
表示部206は、画像データの表示、対話的な操作のための文字表示などを行う。なお、表示部206は必ずしもPC200が備える必要はない。PC200は表示部206と接続することができ、表示部206の表示を制御する表示制御機能を少なくとも有していればよい。
記録媒体210は、制御部201により実行される各種の制御プログラムやOS(Operating System)、画像ファイルや音声ファイル等のコンテンツ情報、地図に関する情報等を格納する。記録媒体210は、PC200に着脱可能なよう構成してもよいし、PC200に内蔵されていてもよい。すなわち、PC200は少なくとも記録媒体210にアクセスする手段を有していればよい。
通信部208は、外部装置と通信するためのインターフェースである。本実施形態のPC200は、通信部208を介して、デジタルカメラ100とデータのやりとりを行うことができる。本実施形態では、通信部208はアンテナであり、制御部101は、アンテナを介して、デジタルカメラ100と通信することができる。なお、デジタルカメラ100との通信では、直接通信してもよいしアクセスポイントを介して通信してもよい。データを通信するためのプロトコルとしては、例えば無線LANを通じたPTP/IP(Picture Transfer Protocol over Internet Protocol)を用いることができる。なお、デジタルカメラ100との通信はこれに限られるものではない。例えば、通信部208は、赤外線通信モジュール、Bluewtooth(登録商標)通信モジュール、WirelessUSB等の無線通信モジュールを含むことができる。さらには、USBケーブルやHDMI(登録商標),IEEE1394など、有線接続を採用してもよい。
ネットワークインターフェース211は、例えばインターネット等のネットワーク回線に接続するために利用される。なお、本実施形態では、画像ファイルや地図に関する情報は記録媒体210に保存されているものとして説明するが、ネットワークインターフェース211を介して外部装置から画像ファイルや地図に関する情報を取得する場合も同様に本発明を実現できる。なお、本実施形態における情報処理装置は、単一の情報処理装置で実現してもよいし、必要に応じた複数の情報処理装置に各機能を分散して実現するようにしてもよい。複数の情報処理装置で構成される場合は、互いに通信可能なようにLocal Area Network(LAN)などで接続されている。また、前述の通信部208はネットワークインターフェース211と兼用してもよい。
<シリアルフラッシュメモリへのログデータの記録>
次に、デジタルカメラ100においてシリアルフラッシュメモリ115にログデータを記録する処理について説明する。本実施形態のデジタルカメラ100では、前述のように、第2制御部110がログデータを記録するための処理を制御する。第2制御部110は予め定められた間隔でログ取得部114に位置情報および日時情報を要求する。そして、その要求に対する応答として受信される位置情報と日時情報とを対応づけて、ログデータとしてシリアルフラッシュメモリ115に記録する。以後、このログデータの記録を繰り返すことをロギングと呼ぶ。また、位置情報と日時情報とが対応づけられてシリアルフラッシュメモリ115に記録されている状態のデータをログデータと呼ぶ。
このロギングの結果、複数のログデータが記録されたシリアルフラッシュメモリ115の記録領域の一部の概念図を図3に示す。図3において、記録領域300は、シリアルフラッシュメモリ115の記録領域の一部である。この領域300の内、記録領域302にはログデータが記録される。記録領域302に記録されている複数のログデータのうち、一つのログデータのデータ構造を示す概念図をログデータ320に示す。ログデータの一つ一つには、位置情報を取得した日時を示す日時情報321が先頭に記録される。この日時情報はUTCの時間軸で計時される日時を示す。また、位置情報として、緯度・経度を示す情報322〜326が記録される。また、この位置情報の精度を示す情報として、算出に用いた信号の数、すなわち利用した衛星の数327や、DOP情報328なども併せて記録される。この記録領域302はリングバッファの形式で構成される。ゆえに、ログデータは記録領域の先頭から末尾まで順に記録され、記録領域302の空き容量を超えるログデータが記録される場合は、足りない容量の分だけ最も古いログデータから上書きされていく。なお、これらのログデータのデータ長は一定となるように調整される。例えばデータの末尾に空データを付与するなどして調節する。
記録領域301は、ログデータを管理するための情報であるログ管理レコードが記録される。このログ管理レコードが記録される領域301もリングバッファ形式で構成される。
本実施形態のデジタルカメラ100では、シリアルフラッシュメモリ115に記録されている状態から、記録媒体107に出力する際に、このログ管理レコードが管理するログデータを一つのまとまりとして出力する。記録領域301に記録されている複数のログ管理レコードのうち、一つのログ管理レコードの概念図をログ管理レコード310に示す。ログ管理レコードには、ロギングを開始した日時を示す開始日時311が記録されている。この開始日時311には、ログ管理レコードに対応する先頭のログデータの日時情報が用いられる。また、ログ管理レコードにはUTC時差312も記録される。UTC時差とは、UTC(Universal Time, Coordinated:協定世界時)と現地時間(地方標準時)との時差を示す時差情報である。このUTC時差の情報は、ユーザがメニュー操作等を介して現在位置に対応するタイムゾーンを選択することにより、予めデジタルカメラ100の設定値として設定しておく。あるいは、ログ取得部114から取得される位置情報に基づき、タイムゾーンを決定し、UTC時差を算出してもよい。更に、それぞれのログ管理レコードには、対応するログデータの記録開始アドレス313とデータサイズ314が含まれており、これらの情報により対応するログデータ群が決定される。具体的には、前述のように、ログデータのデータ長は一定であり、かつログデータは記録領域に順に記録されるため、開始アドレスからデータサイズの示す値分だけデータ量をカウントすれば、ログ管理レコードに対応するログデータ群を決定できる。これにより、記録領域300に順次記録されていく複数のログデータが、特定のまとまりに分けて管理される。なお、ロギング中の最新のログ管理レコードについては、対応するログデータが随時増加していく。つまり、最終的にそのログ管理レコードが管理するログデータのデータサイズが定まっていない。そのため、ロギング中の最新のログ管理レコードのデータサイズは未記録となる。このログ管理レコードのデータサイズが記録されるタイミングは、時間の経過やユーザ操作による日付の変更があった場合や、ユーザ操作やカメラの移動によりタイムゾーンの設定、すなわちUTC時差が変更された場合である。すなわち、ログ管理レコードは日付毎およびUTC時差毎に異なるレコードとなるように記録される。
上述のデータの記録を実現するための、デジタルカメラ100の処理について説明する。図4は、シリアルフラッシュメモリ115に位置情報と日時情報とを対応づけてログデータとして記録する際のデジタルカメラ100の動作を示すフローチャートである。このフローチャートに示される各処理は、デジタルカメラ100の第2制御部110が、不揮発性メモリ111に記録されているプログラムを実行し、プログラムに従いデジタルカメラ100の各部を制御することにより実現される。以降の第2制御部110が実行するフローチャートについても同様である。また、このフローチャートに示される処理は、例えばGPSを用いたロギングを開始する指示を、メニュー操作等を介して受け付けたことに応じて開始される。
まず、ステップS401にて、第2制御部110は、ログ取得部114から位置情報および日時情報を受信する。これらの情報は、第2制御部110がログ取得部114に要求した応答として返される情報である。
次に、ステップS402では、第2制御部110は、ステップS401で受信した位置情報および日時情報を、ログデータとしてシリアルフラッシュメモリ115に記録する。
続くステップS403では、第2制御部110は、ログ管理レコードのうち、ログデータを追加して対応付けるべきログ管理レコードが記録されているか否かを判断する。具体的には、第2制御部110は、シリアルフラッシュメモリ115に記録されているログ管理レコードのうち、データサイズが記録されていないものがあるか否かを判断する。前述のように、ロギング中はそのログ管理レコードには、対応するログデータのデータサイズが記録されない。つまり、管理するログデータのデータサイズが未記録のログ管理レコードは、今後ログデータが追加されるものであると判断できる。
まず、ステップS403で第2制御部110が、データサイズが記録されていないログ管理レコードがあると判断した場合について述べる。この場合、処理はステップS404に進む。
ステップS404では、第2制御部110は、ステップS402でシリアルフラッシュメモリ115に記録したログデータの日時情報に基づき、日付の変更があるか否か判断する。具体的には、ステップS402以前に記録したログデータの日時情報とステップS402で記録したログデータの日時情報とを比較して、日付が異なるか否かを判断する。日付が異なっている場合は、日付の変更があったと判断することになる。例えば、時間の経過により次の日になってからログデータが取得される場合などは、異なる日付を示す。
まず、ステップS404にて、第2制御部110が、日付の変更があったと判断した場合について説明する。この場合、処理はステップS406に進む。
ステップS406では、第2制御部110は、ログ管理レコードが管理するログデータの総サイズを、該当するログ管理レコードのデータサイズの項目に記録する。ここで記録するサイズは、ステップS402で記録された位置情報を含まないように記録される。これによりログ管理レコードが管理するログデータの範囲が確定する。例えば、図3のログ管理レコード4の記録開始アドレス313にログデータ7のアドレスが記録されている状態で、本ステップの処理によりログ管理レコード4のデータサイズ314に3つのログデータ分のサイズが記録されたとする。この場合、ログ管理レコード4が管理するログデータの範囲は、ログデータ7〜ログデータ9として確定する。
そして、続くステップS407にて、第2制御部110は、新たにログ管理レコードを生成し、ステップS402で記録された位置情報のアドレスを記録開始アドレスの項目に記録する。これにより、新たなログ管理レコードの記録範囲の開始位置が確定する。
その後、ステップS408では、第2制御部110は、ロギングの終了指示を受け付けたか否かを判断する。指示を受け付けていないと判断した場合、処理はステップS401に戻り、本フローチャートの処理を繰り返す。結果として、定期的に位置情報が記録される。これらの一連の位置情報は、デジタルカメラ100の移動軌跡を示すことになる。一方、ロギングの終了指示を受け付けたと判断した場合、処理を終了する。
以上が、ステップS404にて、第2制御部110が、日付の変更があったと判断した場合の説明である。
次に、ステップS404にて、第2制御部110が、日付の変更がなかったと判断した場合について説明する。この場合、処理はステップS407に進む。
ステップS407では、第2制御部110は、UTC時差が変更されたか否かを判断する。具体的には、現在のデジタルカメラ100のUTC時差の設定と、シリアルフラッシュメモリ115に記録されている最新のログ管理レコードのUTC時差とを比較する。比較の結果、UTC時差が一致していない場合は、UTC時差が変更されたと判断する。UTC時差が変更されていないと判断した場合、処理はステップS408に進む。一方、UTC時差が変更されたと判断した場合、処理はステップS406に進む。
次に、ステップS403で第2制御部110が、データサイズが記録されていないログ管理レコードがないと判断した場合について述べる。この場合は、既にログ管理レコードの管理するログデータの範囲が定まっているため、新たに記録されたログデータは新たなログ管理レコードに管理されることになる。ゆえに、処理はステップS407に進み、第2制御部110は新たなログ管理レコードを生成する。その後の処理は上述で説明した通りである。
以上が、シリアルフラッシュメモリ115にログデータを記録する際のデジタルカメラ100の動作の説明である。
<記録媒体107へのログデータの出力>
次に、シリアルフラッシュメモリ115に記録されているログデータを、記録媒体107にログファイルとして出力する処理について説明する。
本実施形態におけるデジタルカメラ100では、シリアルフラッシュメモリ115に記録されているログデータを、管理レコードで区切られた単位毎に一つのログファイルとして記録媒体107に出力することができる。なお、記録媒体107の記録領域をログデータで圧迫する可能性があるため、本実施形態ではログデータの出力は自動ではなく、ユーザの操作に応じて実行する。
図5は、シリアルフラッシュメモリ115に記録されているログデータを、記録媒体107にログファイルとして出力する際のデジタルカメラ100の動作の概要を示すシーケンス図である。このシーケンス図に示す動作は第1制御部101および第2制御部110がそれぞれ、不揮発性メモリ103および不揮発性メモリ111に記録されているプログラムを、作業用メモリ104および作業用メモリ112に展開・実行することにより実現される。またこのシーケンス図の動作は、例えばログデータを記録媒体107に出力する指示を第2制御部110が受け付けたことに応じて開始する。
まず、ステップS501にて、第2制御部110は、シリアルフラッシュメモリ115に記録されているすべてのログ管理レコードの情報を第1制御部101に送信する。それぞれのログ管理レコードの情報には、データサイズと開始日時、およびUTC時差が含まれる。
ログ管理レコードの情報を受信した第1制御部101は、ステップS502にて、ログ管理レコードの情報に含まれるデータサイズからログデータの総サイズを算出し、記録媒体107の空き容量とログデータの総サイズとを比較する。これにより、記録媒体107にログデータを記録するのに十分な空き容量があるかを判断する。比較の結果、第1制御部101が、記録媒体107の空き容量が足りないと判断した場合、第1制御部101は空き容量が不足している旨をユーザに通知し、本シーケンスの処理を終了する。一方、比較の結果、第1制御部101が空き容量が十分であると判断した場合、第1制御部101はS501で情報を送信されたログ管理レコードのうち、一つのログ管理レコードに対応するログデータの要求を第2制御部110に送信する。図5では、説明のため、空き容量が十分あると判断した場合の例を示している。すなわち、ステップS503にて、第1制御部101はログデータの要求を第2制御部110に送信する。
ログデータの要求を受信した第2制御部110はステップS504にて、シリアルフラッシュメモリ115に記録されているログデータのうち、要求されたログデータを読み出し、第1制御部101に送信する。
ログデータを受信した第1制御部101はステップS505で、受信したログデータを記録媒体107に記録するログファイルの形式に変換する。本実施形態では記録媒体107は、FAT(File Allocation Tables:データの管理のためのファイルシステムの形式)形式でデータを取り扱う。
続くステップS506では、第1制御部101は、変換して得たログファイルを、記録媒体107に記録する。
ステップS507では、第1制御部101は、ステップS501で情報を送信されたすべてのログ管理レコードに対応するログデータに関して、ステップS505の処理が実行されたか否かを判断する。第1制御部101が、まだすべてのログ管理レコードに対応するログデータに関してステップS505の処理を実行していないと判断した場合、ステップS503に戻り、他のログ管理レコードに関して処理を繰り返す。一方、第1制御部101が、すべてのログ管理レコードに対応するログデータに関してステップS505の処理が完了したと判断した場合、処理を終了する。
以上が、ログデータを記録媒体107に出力する際のデジタルカメラ100の動作の概要である。
ログデータの出力の結果、記録媒体107には、図6に示すようなログファイル600が記録される。本実施形態におけるログファイル600はNMEAフォーマットに従ったデータが記録されたテキストデータである。NMEAフォーマットでは記録されている情報のうち、$GPGGAから始まる行と$GPRMCから始まる行とが対になっている。この対の情報には、位置情報613とその位置情報を取得した日付612および時間611が記録されている。また、ログファイルのヘッダ領域601には、ログファイルが記録される際の記録条件が記録される。具体的には、ログファイルとして記録される位置情報が取得された日時を示す記録日時602が記録される。この記録日時602には、位置情報を管理していたログ管理レコードの開始日時311の値が用いられる。さらに、ログファイルを生成した際にデジタルカメラ100に設定されているタイムゾーンの情報、すなわちUTC時差603も記録条件として記録される。これらの記録条件は、図5のステップS501で送信されたログ管理レコードの情報が用いられ、ステップS506で記録媒体に記録される際にヘッダに記録される。また、ログファイルのファイルネームは、ログ管理レコードの開始日時311の値に基づき決定される。
次に、各制御部の動作について詳述する。
図7は、上記の動作を実現するための第1制御部101の動作を示すフローチャートである。このフローチャートの各処理は、第1制御部101が不揮発性メモリ103に記録されているプログラムを作業用メモリ104に展開・実行することにより実現される。またこのフローチャートの処理は、例えば第1制御部101が通電されたことに応じて開始する。
まず、ステップS701にて、第2制御部110からログ管理レコードの情報(開始日時とUTC時差、およびデータサイズ)を受信する。このログ管理レコードの情報は、それぞれのログ管理レコードに対応する情報であることが区別可能な状態で受信される。
次に、第1制御部101は、ステップS702にて、記録媒体107の空き容量とログデータの総サイズとを比較して、記録媒体107にログデータを記録するのに十分な空き容量があるかを判断する。
比較の結果、第1制御部101が、記録媒体107の空き容量が足りないと判断した場合、処理はステップS703に進む。ステップS703では、第1制御部101は空き容量が不足している旨を第2制御部110に通知する。これに併せて、第1制御部101はステップS704にて、空き容量が不足している旨をユーザに通知し、本シーケンスの処理を終了する。
一方、比較の結果、第1制御部101が空き容量が十分であると判断した場合、処理はステップS705に進む。第1制御部101はステップS705で、ログ管理レコードが管理するログデータの要求を第2制御部110に送信する。ここは、ステップS701で受信したログ管理レコードの情報に基づき、一つのログ管理レコードが管理するログデータをまとめて要求する。この要求を受けた第2制御部110は、シリアルフラッシュメモリ115から対応するログデータを読み出し、第1制御部101に送信する。
ステップS706にて第2制御部110からログデータを受信すると、第1制御部101はステップS707でログデータを、記録媒体107に記録するログファイルの形式に変換する。例えば、FAT(File Allocation Tables:データの管理のためのファイルシステムの形式)形式に変換する。
本実施形態では、ステップS707で得られるログファイルを記録する前に、既に記録媒体107に記録されているログファイルにまとめて記録するか、別のファイルとして記録するかを判断する。具体的には、ステップS708にて、第1制御部101は記録媒体107に既に記録されているログファイルのヘッダ領域からログファイルの記録条件を読み出し、ステップS701で受信したログ管理レコードの情報に含まれる情報と比較する。比較の結果、記録条件とログ管理レコードの情報に含まれる情報とが所定の関係を満たす場合、ログデータは既に記録されているログファイルに追記されることになる。ここでログファイルのヘッダ領域から読み出される記録条件とは、図6の説明で述べた記録日時602とUTC時差603である。第1制御部101は、ログファイルから読み出した記録日時602と、これから記録しようとしている位置情報に対応するログ管理レコードに含まれる開始日時311とを比較する。同様に、ログファイルから読み出したUTC時差603と、これから記録しようとしている位置情報に対応するログ管理レコードに含まれるUTC時差312とを比較する。比較の結果、記録日時602の示す日付と開始日時311の示す日付とが一致していないと判断された場合、ステップS707で得られたログファイルは、既に記録媒体107に記録されているログファイルとは記録条件が異なると判断する。または、UTC時差603とUTC時差312とが一致しない場合、ステップS707で得られたログファイルの記録条件は、既に記録媒体107に記録されているログファイルの記録条件と異なると判断する。日付の比較、及びUTC時差の比較の両方で一致していると判断された場合は、ステップS707で得られたログファイルの記録条件は、既に記録媒体107に記録されているログファイルの記録条件と一致すると判断する。
ステップS708にて、記録条件が一致すると判断された場合、処理はステップS709に進む。
ステップS709では、第1制御部101は既に記録されているログファイルに、ステップS707で変換したログファイルをマージする。この結果、同一日、同一UTC時差のログデータは、一つのログファイルにまとめて記録されることになる。これにより、ログファイルの管理が容易になる。その後、処理はステップS711に進む。
ステップS711では、第1制御部101はステップS701で受信した全てのログ管理レコードに関して、ステップS705以降の処理を行ったかを判断する。
第1制御部101が第1制御部101はステップS701で受信した全てのログ管理レコードに関して、ステップS705以降の処理を行っていないと判断した場合、処理はステップS705に戻り、ステップS705以降の処理を繰り返す。
一方、全てのログ管理レコードに関してステップS705以降の処理を行ったと判断した場合は、本フローチャートの処理を終了する。
一方、ステップS708にて、記録条件が一致しないと判断された場合、処理はステップS710に進む。
ステップS710では、第1制御部101はステップS707で変換したログファイルを、既に記録されているログファイルとは別のファイルとして記録媒体107に記録する。この結果、日付あるいはUTC時差が異なるログデータは別のファイルとして記録されることになる。その後、処理はステップS711に進む。
以上が第1制御部101の動作の説明である。
次に、上記の第1制御部101の動作に対応する第2制御部110の動作について説明する。図8は、図5の動作を実現するための第2制御部101の動作を示すフローチャートである。このフローチャートの各処理は、第2制御部101が不揮発性メモリ111に記録されているプログラムを作業用メモリ112に展開・実行することにより実現される。またこのフローチャートは、例えば操作部113を介して第2制御部110がログデータの出力指示を受け付けたことに応じて開始する。
まずステップS801にて第2制御部110は、一旦ロギングの処理を停止するようログ取得部114を制御する。
次に、ステップS802で第2制御部110は、データサイズが未記録のログ管理レコードについて、現在記録されているログデータまでを管理の対象としてデータサイズを記録する。これにより、現在シリアルフラッシュメモリ115に記録されているログ管理レコードは全てデータサイズが記録され、その管理範囲が決定されることになる。
続いて、ステップS803では、第2制御部110は、シリアルフラッシュメモリ115に記録されているすべてのログ管理レコードに関する情報を第1制御部101に送信する。具体的にはそれぞれのログ管理レコードに含まれるデータサイズ、開始日時、およびUTC時差が送信される。
次に、ステップS804にて第2制御部110は、第1制御部101からの応答が、空き容量が足りない旨を示す情報か、ログデータの要求であるかを判断する。空き容量が足りない旨を示す情報であった場合、本フローチャートの処理を終了する。一方、ログデータの要求であった場合、処理はステップS805に進む。
ステップS805では、第2制御部110は、シリアルフラッシュメモリ115に記録されているログデータのうち、要求されたログデータを読み出し、第1制御部101に送信する。
ステップS806では、第2制御部110は、すべてのログデータを送信したか否かを判断する。まだ送信していないログデータがあると判断された場合、処理はステップS804に戻り、第1制御部101からの要求を待つ。一方、すべてのログデータを送信したと判断した場合、処理はステップS807に進む。
ステップS807では、第2制御部110は第1制御部101に送信したログデータおよびそれらのログデータを管理の対象としていたログ管理レコードを削除し、ロギングを再開するようログ取得部114を制御する。
以上が、ログデータを記録媒体107に出力する際のデジタルカメラ100の動作の説明である。
<PC200へのログデータの出力>
次に、デジタルカメラ100の記録媒体107に記録されているログファイルをPC200に取り込む際の処理について述べる。
PC200では、デジタルカメラ100と接続した状態で所定のアプリケーションを実行することにより、デジタルカメラ100の記録媒体107に記録されているログファイルを取り込むことができる。これにより取り込まれたログファイルの利用について、地図上に移動軌跡を表示することを例に挙げて説明する。PC200には、デジタルカメラ100から取り込んだログファイルを用いて地図上に移動軌跡を表示することができるアプリケーションがインストールされているものとする。このアプリケーションを実行中のPC200の表示部206に表示される画面の一例を図9に示す。
図9の画面900は、PC200で実行中のアプリケーションのウインドウが表示されている領域である。このウインドウのうち、表示領域901には、デジタルカメラ100から取り込み記録媒体210に記録されているログファイルがリストアップされる。ユーザはこのログファイルのリストの中から、任意のログファイルを、操作部205を介して選択することができる。
表示領域902には、選択中のログファイル904に含まれる位置情報に基づき算出される移動軌跡910が表示される。この移動軌跡910は、位置情報に基づき適切な縮尺の地図上に重畳して表示される。これにより、ユーザはデジタルカメラ100を持ち歩いた移動軌跡を容易に把握することができる。
また、このアプリケーションのウインドウには、取り込みボタン905が表示されている。この取り込みボタン905は、デジタルカメラ100とPC200との通信が確立している状態で選択することができる。取り込みボタン905が選択されると、PC200からデジタルカメラ100に対して、記録媒体107に記録されているログファイルを送信させるための要求が送信される。
本実施形態のデジタルカメラ100では、この要求に対して、記録媒体107に記録されているログファイルのみならず、シリアルフラッシュメモリ115に記録されているログデータも併せてPC200に送信する。このような動作を行うのは以下の理由による。例えば、一度シリアルフラッシュメモリ115に記録されているログデータを記録媒体107に出力する。図8で説明したようにログデータの出力中はロギングの動作を停止するが、ログデータの出力が完了すると、ロギングの動作は再開する。結果として、記録媒体107とシリアルフラッシュメモリ115の両方に、デジタルカメラ100の移動軌跡を示す情報が記録されることになる。このような状況でPC200が記録媒体107からログファイルを取り込む場合、予めログデータを記録媒体107に出力しなければ、シリアルフラッシュメモリ115に記録されている分のログデータを取りこぼす恐れがある。そこで、本実施形態のデジタルカメラ100は、PC200からログファイルの要求を受け付けた場合に、記録媒体107に記録されているログファイルを送信する前に、シリアルフラッシュメモリ115に記録されているログデータを記録媒体107に出力する。これにより、ロギングして得られた全てのログデータが、記録媒体107に出力されるため、ユーザの手間を要することなく、ログデータの取りこぼしを防ぐことができる。
以下、本実施形態の特徴であるこの処理を実現するためのデジタルカメラ100の動作について説明する。
図10は、要求元のPC200へログファイルを送信する際のデジタルカメラ100の動作を示すフローチャートである。このフローチャートは例えば第1制御部101がPC200からの要求を受信することに応じて開始される。
まず、ステップS1001では、第1制御部101は、PC200から要求を受信した旨を第2制御部110に通知する。
続くステップS1002では、第1制御部101と第2制御部110とが協働して、図5〜8で説明したログデータをシリアルフラッシュメモリ115から記録媒体107に出力する処理を実行する。すなわち、第2制御部110は、第1制御部101から要求を受信した旨を通知されることをトリガとして、図8のフローチャートに示す処理を開始する。
ステップS1003では、第1制御部101は、記録媒体107に記録されているログファイルをPC200へ送信する。ここで、記録媒体107には、ステップS1002の処理により既にシリアルフラッシュメモリ115に記録されているログデータがログファイルとして出力済みである。すなわち、ユーザは記録媒体107に記録されているログファイルを取得する要求を入力するだけで、記録媒体107に記録されているログファイルのみならず、シリアルフラッシュメモリ115に記録されているログデータも取得することができる。記録媒体107に記録されているログファイルが全てPC200に送信されると、本フローチャートの処理は終了する。
以上のように、本実施形態のデジタルカメラ100では、記録媒体107に記録されているログファイルをPC200に送信する前に、シリアルフラッシュメモリ115に記録されているログデータを記録媒体107に出力する。すなわち、ロギングして得られた全てのログデータが記録媒体107に出力される。そのため、ユーザは複数の領域に移動軌跡の情報が記録されていることを意識するという手間を要することなくログデータの取りこぼしを防ぐことができる。
[第2の実施形態]
第1の実施形態では、デジタルカメラ100が一つの記録媒体を扱う場合を例に挙げて説明した。これに対し、本実施形態では、デジタルカメラ100が複数の記録媒体を扱うことができる場合を例に挙げて説明する。なお、本実施形態では、第1の実施形態と共通する部分については説明を省略し、本実施形態に特有の部分を中心に説明する。
<デジタルカメラ100の内部構成>
図11は、本実施形態の記録装置の一例であるデジタルカメラ1100の構成例を示すブロック図である。なお、ここでは記録装置の一例としてデジタルカメラについて述べるが、記録装置はこれに限られない。例えば記録装置は、携帯電話や、タブレットデバイス、パーソナルコンピュータなどの情報処理装置であってもよいし、カメラ付き携帯電話等の撮像装置であってもよい。
図11のデジタルカメラ1100は、記録媒体1107と記録媒体1117の二つの記録媒体を取り扱うことができること以外は、図1のデジタルカメラ100と同様である。
記録媒体1107と記録媒体1117は、どちらも撮像部1102から出力された画像や、後述の第2制御部110から提供されるログデータ等を記録することができる。記録媒体1107および記録媒体1117は、デジタルカメラ100に着脱可能なよう構成される。
ユーザは、撮像モードにおいて撮像部1102により生成される画像をこれらの記録媒体のどちらに記録するかを、メニュー操作を介して予め設定することができる。なお、ここでいう撮像モードとは、撮像部1102を用いて被写体を撮像し、画像データを生成するためのモードである。
また、再生モードにおいて表示部1106に再生される画像をこれらの記録媒体のどちらから読み出すかを、メニュー操作を介して予め設定することができる。なお、ここでいう再生モードとは、記録媒体1107または記録媒体1117に記録されている画像データを表示部1106に表示させることで、ユーザに画像の閲覧を可能とさせるためのモードである。
なお、本実施形態では、撮像モードでの記録先の記録媒体と、再生モードでの読み出し元の記録媒体とを個別に設定することができるものとして説明するが、これに限られるものではない。例えば、記録と読み出しのどちらにも共通した設定として記録媒体を選択させるようにしてもよい。
さて、本実施形態でも、第1の実施形態と同様に、シリアルフラッシュメモリ1115に記録されたログデータをログファイルとして、記録媒体1107または記録媒体1117に出力することができる。ただし、本実施形態では、記録媒体が複数存在するため、どの記録媒体に記録すべきかを適切に決定する必要がある。
本実施形態では、このログデータの出力先についても、撮像モードでの記録先と再生モードでの読み出し元とは別に選択することができる。
例えば、ユーザはメニュー操作を介して、図12(a)のようなGPSに関する設定メニューを表示させることができる。このうち、ログデータに関するメニュー項目の選択を制御部1101が検知すると、例えば図12(b)のような画面に遷移する。
図12(b)の画面では、ログデータの記録のON/OFFの切り替えや、シリアルフラッシュメモリ1115に記録されているログデータを消去するためのメニュー項目が表示される。そして、シリアルフラッシュメモリ1115に記録されているログデータを、記録媒体に出力するためのメニュー項目も表示される。ユーザは、これらのメニュー項目を操作部1113を介して選択することにより、メニュー項目に応じた指示を入力することができる。
さて、ユーザ操作によって、ログデータを記録媒体に出力する指示が入力されたことを、制御部1101が検知した場合、図12(c)のような画面に遷移する。ここでは、ログデータを出力する記録媒体を選択することができるボタン1211およびボタン1212が表示されている。なお、記録媒体が接続されていない場合、ボタンはグレーアウトされ、選択できない状態で表示される。これにより、記録媒体が接続されていないことをユーザに把握させる。また、ボタン1211およびボタン1212は、どちらか一方のみを選択できるようにしてもよいし、両方とも選択できるようにしてもよい。両方選択した場合は当然、両方にログデータが出力される。
図12(c)では、二つの記録媒体が接続されており、ボタン1211が選択されている状態の例である。ボタンが選択された状態で、例えば操作部1105に含まれる決定ボタンの押下等によって決定の指示が入力されると、シリアルフラッシュメモリ1115に記録されているログデータをログファイルとして、指示に応じた記録媒体に記録する。
本実施形態では、図12(c)の画面に遷移した際に、ボタン1211とボタン1212のうち、予め撮像モードでの記録先として設定されている記録媒体に対応するボタンが選択された状態の画面を表示する。なお、このボタンの「スロット」という文字列は記録媒体の挿入口を表すものであるが、これは、デジタルカメラ1100としては、記録媒体を識別するというよりむしろ、どのスロットに接続されている記録媒体かで、データの出力先を区別することに由来する。なお、上述の説明で記録媒体を選択するという表現を用いている部分は、いずれもデジタルカメラ1100の動作としては、対応するスロットを選択するという認識に等しい。ただし、説明が煩雑になることを防ぐため、以降の説明でも、スロットを選択することも「記録媒体を選択する」という表現を用いる。
さて、このように、予め撮像モードでの記録先として設定されている記録媒体に対応するボタンが選択された状態でログデータの出力先を選択するための画面を表示するのには以下のような理由がある。すなわち、撮像画像を記録する記録媒体が、現在メインで利用している記録媒体である可能性が高く、また、画像とログデータとを一つの記録媒体に記録することで、より簡単に画像とログデータとを管理できると考えられるためである。これにより、ユーザは例えば方向キー等を用いて記録媒体を選択する手間を必要とすることなく、画像データの記録先と同じ記録媒体をログデータの出力先として選択することができる。なお、例えば撮像モードにて、両方の記録媒体に画像データを記録するよう設定される場合も考えられる。このような場合は、やはりボタン1211とボタン1212の両方が選択された状態で表示される。
図13に、上述の表示を実現するためのデジタルカメラ1100の動作を示すフローチャートを示す。このフローチャートに示す処理は、例えば図12(b)のシリアルフラッシュメモリ1115に記録されているログデータを、記録媒体に出力するためのメニュー項目が選択されたことを第2制御部1101が検知することに応じて開始される。
まず、ステップS1301では、デジタルカメラ1100は、接続されている複数の記録媒体のうち、現在撮像画像を記録する記録媒体として設定されている記録媒体がどの記録媒体かを判断する。
続くステップS1302では、デジタルカメラ1100は、ログデータの出力先を選択するための画面を表示部1106に表示する。ここでは、ステップS1301で判断した結果に基づき、現在撮像画像を記録する記録媒体として設定されている記録媒体をログデータの出力先として決定するためのボタンを選択した状態で、表示が開始するよう制御される。結果として、たとえは図12(c)のような画面が表示される。これに併せて、ユーザからの操作に応じてログデータの出力先の記録媒体を決定する指示を受け付ける。
ユーザからの指示を受け付けると、次にステップS1303では、第1制御部1101と第2制御部1110とが協働して、図5〜8で説明したログデータをシリアルフラッシュメモリ115から記録媒体に出力する処理を実行する。
以上のように、本実施形態のデジタルカメラでは、複数の記録媒体のうち、撮像画像を記録する記録媒体が選択された状態でログデータの記録先を選択する画面を表示する。これにより、ユーザがログデータの記録先を選択する際の手間を低減することができる。
[その他の実施形態]
上述の実施形態では、ユーザ操作に応じてログデータをシリアルフラッシュメモリ115から記録媒体107に出力する処理を実行する例について述べた。しかしながら、記録媒体107の記録容量が十分大きければ、記録領域をログデータで圧迫する可能性は低くなる。そのような場合は上述の実施形態に加えて、ログデータを自動的に記録媒体107に出力するようにしてもよい。具体的には、シリアルフラッシュメモリ115の空き容量が一定値以下になった場合、自動的にログデータを記録媒体107に出力する。これにより、ログデータを出力する指示をユーザが入力する手間を省くことができる。
また、上述の実施形態では、ログデータを記録媒体107に出力する際に、これから記録するログファイルを既に記録されているログファイルに追記するか新たなログファイルとして記録するかを、ログファイルへの変換後に判断する例について述べた。これについては、ログ管理レコードの情報を受信した後(図7のステップS701以降)であれば、ログファイルへの変換前に判断してもよい。具体的には、図7のステップS708の処理は、ステップS701〜ステップS707の間のうち、どのタイミングで実行されてもよい。一般的にステップS707の処理でログファイルが生成される条件は、ステップS701〜ステップS707の間で変化することは考えにくい。そのため、ステップS708の処理は、ステップS701〜ステップS707の間のどのタイミングで実行しても、ステップS707の後に実行する場合と同様の結果である場合が多いと考えられる。そのため、ステップS708の処理のタイミングは、上述の実施形態に限定されない。
また、上述の実施形態では、これから記録するログファイルを既に記録されているログファイルに追記するか新たなログファイルとして記録するかを判断する際に用いる条件として、記録日時やUTC時差を用いる例について述べた。これについては、更に他の情報を用いてもよい。例えば、ログファイルを生成したデジタルカメラのモデル名、機器毎に固有の値を持つシリアルナンバー、ベンダ名等、ログファイルを生成したデジタルカメラに関する情報を用いてもよい。あるいは、ファイルフォーマットバージョンや測地系、位置情報の記録の間隔等、予め定められた記録形式の情報を用いてもよい。なお、記録日時やUTC時差以外の情報は、ログファイルを生成する際に決定される情報であるため、ログ管理レコードに記録されない。したがって、シリアルフラッシュメモリ115から出力したログデータを、既に記録されているログファイルにマージする際には、ログ管理レコードの情報ではなく、デジタルカメラ100に設定されているログファイルの生成に関する値を参照する。このように様々な種類の条件が一致するかどうかを判断することで、予期せぬエラーが生じる可能性を低減したり、後のログファイルの取り扱いを容易にしたりすることができる。
また、上述の実施形態では、記録媒体107に記録されるログファイルの数に制限を設けることはしていなかった。これについては、レスポンスの速度を保証するために、記録媒体107に記録されるログファイルの数に上限を定めてもよい。なお、このように上限を定めた場合、カード内に存在するログファイルが上限に達してしまう場合が考えられる。このような状況でログファイルが更に生成される動作が実行される場合、ユーザに上限に達していることを伝え、カードを入れ替えることを促すメッセージを表示させるなどの処理を行っても良い。
また、上述の実施形態に加えて、シリアルフラッシュメモリ115に記録されているログ管理レコードのうち、開始日時の示す日付とUTC時差が同じログ管理レコード同士を関連づけて保持してもよい。例えば、一旦タイムゾーンが変更されて別なログ管理レコードが生成された後に元のタイムゾーンに再変更された場合には、開始日時の示す日付とUTC時差とが共通していながら別のログ管理レコードが生成されることになる。このような場合、これらのログ管理レコードはまとめて取り扱うことが好ましいと考えられる。そこで、これらのログ管理レコードを関連付けておく。なお、関連付けの方法としては、例えば元のタイムゾーンでのログデータを管理するログ管理レコードに、再変更後のタイムゾーンでのログデータを管理するログ管理レコードの先頭アドレスを記録しておく等の方法が考えられる。これにより、例えば第1制御部101からの要求に対して、関連付けられたログ管理レコードのログデータも送信する等、より柔軟にログデータを取り扱うことができる。
また、上述の第2の実施形態に加えて、接続されたPCからの要求に応じてログデータを出力する前に先にシリアルフラッシュメモリ内のログデータを記録媒体に出力する場合は、撮像画像の記録先として設定されている記録媒体に出力するようにしてもよい。
また、上述の第2の実施形態では、画像データとログデータとを一緒の記録媒体に記録することを目的として、撮像モードで記録先として設定した記録媒体が選択された状態でログデータを出力する記録媒体を選択する画面を表示する場合を例に挙げて説明した。その一方で、記録媒体の容量を考慮する場合も考えられる。すなわち、画像データを記録する記録媒体の空き容量を考慮して、ログデータは、画像データを記録する記録媒体とは別の記録媒体とすることが考えられる。このような場合は、例えば、図12(c)の画面に遷移する際に、予め撮像モードでの記録先として設定されていた記録媒体ではない記録媒体に対応するボタンが選択された状態で図12(c)の画面を表示する。
また、上述したように、撮像モードで両方の記録媒体が記録先として設定される場合も考えられる。この場合は、記録する画像データのクオリティの設定(画像のサイズや圧縮率等の設定)を記録媒体毎に設定することができる。例えば、片方には例えばJpegのように圧縮された(つまりデータサイズの小さい)画像を記録し、もう片方には、例えばRAW画像のように圧縮していない(つまりデータサイズの大きい)画像を記録するように設定することが考えられる。一方、記録媒体の総容量そのものがそれぞれ異なることも考えられる。これらの点を考慮し、記録媒体の容量とその記録媒体に記録される画像のデータサイズとから、残りの撮像回数を計算する。残りの撮像回数が多い方が、より容量に余裕のある記録媒体である。したがって、残り撮像回数が多い方の記録媒体に対応するボタンが選択された状態で図12(c)の画面を表示する。
なお、上述の実施形態に加えて、ログデータの出力先の記録媒体が選択された際に、同日の記録された他のログデータが、選択されていない方の記録媒体に記録されている場合も考えられる。しかしながら、同日に取得されたログデータは、マージして扱う方がより便利であることが多いと考えられる。そこで、このような場合には、このまま選択された記録媒体にログデータを出力した場合、ログデータが分散して記録される可能性があることをユーザに通知してもよい。例えば、図12(d)のような画面を表示し、出力先の確認を促す。
また、上述の実施形態では、図12(c)に遷移した際に選択状態とするボタンを、撮像モードの記録先に基づき決定する例について述べた。これについては、例えば再生モードの読み出し元として設定されている記録媒体が選択された状態で表示されてもよい。
なお、上述の実施形態は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記録媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。