Nikon WirelessMobileUtility のワナ

今回ハマったので.
Nikon WirelessMobileUtility はスマートフォンで D750 と WiFi 接続し,写真をスマートフォンに転送したり,リモートで簡易撮影したりするに用いるアプリです.こいつに接続するとき,スマートフォンの時刻にカメラの時刻を同期する機能があります.こいつにハマったとです.

WirelessMobileUtility の時刻同期は怖い

先週イタリアに行っていましたが,D750 の時刻関連でハマってしまいました.
ハマった原因は,

  1. そもそもカメラのタイムゾーンを変更し忘れた
  2. WirelessMobileUtility でカメラに接続したときに,タイムゾーン変更することなく時刻だけ勝手に修正された

というところです.
1.はもう完全にぼくが忘れていました.JSTなので UTC+09:00なわけですが,この季節イタリアに行く場合UTC+01:00にタイムゾーン変更すべきです.忘れていました.でも,この時点では,タイムゾーンは異なるものの,カメラの中の絶対時刻は正しい状態です.
2.はもはやバグであります.携帯電話は現地ローミングしていたので,イタリア到着後現地時間であるUTC+01:00に変更され,時刻も現地時刻に自動修正されていました.しかし,WirelessMobileUtility は,タイムゾーンを変更せず,時刻だけ同期するんですな.
カメラはイタリア到着時には,UTC+09:00になってはいたものの,絶対時刻という意味では正しかったのです.
でも,WirelessMobileUtility のせいで,UTC+09:00のまま見た目の時刻だけ相対的にイタリア時間にあわされてしまいました.つまり,カメラ内部時計が+08:00だけ狂ったことになります.
この影響で,AndroidGPS MyTrack で取っておいた gpx ログと写真を同期させることができなくなりました*1

JPEG はともかく NEF が問題だ:NEFファイルのタイムゾーンを変更できない

JPEG データの EXIF は実はタイムゾーンを持っていないのです.だから,JPEG で撮影するだけなら,ぶっちゃけタイムゾーンが狂っていても時刻だけが現地時刻と合っていればOK.
だから,海外旅行のときに時刻変更をし忘れちゃったうっかりさんは大勢居て,そういう場合は,exiftool というツールの -AllDates オプションを使って修正するのが一般的です(参考:写真のexif撮影時刻とファイルタイムスタンプを一括置換 - いーぐる02's Blog).
しかし,今回のぼくのように,Nikon RAW データである NEF ファイルで撮影している場合 話は複雑です.NEFファイルの EXIF に相当する部分だけはexiftoolを使って同じように修正できるんですが,RAWデータ部分は困ったことに(? *2 )タイムゾーン情報を持っていて,View NX2 などのツールはUTC絶対時刻でデータを取り扱ってしまいます.
そういうわけで,NEF ファイルの場合は,時刻情報だけでなく,タイムゾーンも変更してあげたいところなんですが,exiftool のマニュアルを読んでも NEF のタイムゾーン変更方法は見当たらないし,exiftool の gui ツールで触ってみても修正できませんでした.

適当に -timezone="+01:00" とかやったらうまくいった

WirelessMobileUtility で同期するまでのデータは,相対時刻(現地時刻)を-8時間(イタリアの方が日本より8時間遅い)して,タイムゾーンを+01:00に変更します.

exiftool.exe -AllDates-=8 -timezone="+01:00" -overwrite_original dir\*.NEF

WirelessMobileUtility に同期して以降はタイムゾーンは狂っていますが,相対時刻(現地時刻)はあっています.なので,タイムゾーンだけ+01:00します.

exiftool.exe -timezone="+01:00" -overwrite_original dir\*.NEF

いやあ,はまったはまった.

*1:ViewNX2 の LogMatching 機能には,カメラの内部時計が狂っていた時の補正情報を入力できるため,なんとかなるっちゃあなんとかなるんですが,気持ち悪い.

*2:いや,Jpeg EXIFタイムゾーンを持っていないことの方が致命的にマズかろう.NEF データにタイムゾーンを格納することは自然だ.