JPEGとGPS EXIF
デジタルカメラやスマートフォンで撮影されたJPEG画像には,様々な撮影条件や設定がメタデータとして記録されています.本ツールは,このメタデータ規格であるEXIF(Exchangeable Image File Format)構造を解析し,写真GPSの検出を行うことを目的としています.
ユーザーがブラウザ上で選択したJPEGファイルは,ファイルリーダーを介してメモリ内に読み込まれ,バイナリデータとして専用のパーサーに渡されます.画像本体を地図URLへ含める処理はありませんが,本ツールはJPEG形式のみを解析の対象としており,PNGやHEIC,WebPといった他の画像フォーマットには対応していません.
読み込み処理の段階において,ファイルが破損していたり,EXIFヘッダが標準的な構造から逸脱している場合は,読み込み失敗として処理され,位置情報の解析は即座に中断されます.パーサーは画像の先頭から順にマーカーを探索し,アプリケーションデータセグメント(APP1)内に格納されているEXIF領域を特定します.
この領域内には,画像そのものの情報や撮影機材の情報が記録された複数のIFD(Image File Directory)が存在します.位置情報検出において最も重要なのが,GPS関連のメタデータが格納されているGPS IFDです.本ツールは,EXIFディレクトリの中からGPS IFDへのオフセットを参照し,その内部に記録されている各タグのデータを取得します.
ただし,GPS IFDが存在しない場合や,規格外の非標準的な形式でデータが記録されている場合,ツールは情報を正常に抽出することができません.このような場合,結果としてGPS情報が見つからないと判定されますが,これはあくまで画像内にGPS IFDが確認できなかったというプログラム上の事実を示すのみであり,他の領域や独自のタグに位置を推定できる情報が完全に存在しないことを保証するものではありません.
DMSから十進度
GPS IFD内に緯度および経度の情報が存在する場合,それらのデータは通常,度(Degrees),分(Minutes),秒(Seconds)の三つの要素からなる有理数の配列として格納されています.このDMS形式のデータを,近代的な地図上で扱うために適した十進数(Decimal Degrees)形式へと変換する数学的な処理が行われます.
プログラムの実装では,それぞれの要素の分子を分母で除算し,浮動小数点数として度,分,秒の値を正確に計算します.そして,度成分に対し,分を60で割った値と秒を3600で割った値を加算することで,十進数度の絶対値を算出します.この計算過程において,元データに配列の不足がある場合や,分母がゼロであるなどの不正値が含まれている場合は,演算が破綻するため正確な座標への変換を行うことができません.
また,算出された絶対値だけでは地球上の正確な位置を特定できないため,緯度参照タグ(GPSLatitudeRef)および経度参照タグ(GPSLongitudeRef)の文字列値を確認します.緯度参照タグが南緯(S)を示す場合,または経度参照タグが西経(W)を示す場合,算出された十進数度にマイナス符号を付与して値を反転させます.
これにより,南半球や西半球の座標が正しく表現されるようになります.しかしながら,元のEXIFデータにおいて,度分秒の配列が意図せず欠落していたり,参照タグの文字列が標準的なN,S,E,W以外の不正な文字であったりするような異常値が存在する場合,不正確な位置情報検出結果が導出される可能性があります.
本ツールは,提供された値に基づいて機械的な変換アルゴリズムを実行するのみであり,その算出された座標が現実に存在する場所であるかどうかの正当性や論理的整合性の確認までは実施しません.
高度・機種・日時
緯度および経度の計算と並行して,本ツールは画像ファイル内の他の有用なメタデータの抽出も試みます.GPS IFD内に高度情報(GPSAltitude)が含まれている場合,その値も同様に有理数として記録されているため,分子を分母で除算してメートル単位の高度を算出します.
しかし,EXIFの規格に存在する高度基準符号(GPSAltitudeRef)が海抜以下を示す場合は負の値として表示します.ただし測位精度や値の現実性までは検証しません.さらに,GPS IFD以外の領域である0th IFDおよびExif IFDからも関連情報が取得されます.
0th IFDからは,撮影に使用された機材の製造元(Make)とモデル名(Model)が読み取られ,結合されて一つのデバイス情報として表示されます.これらのタグが存在しない,あるいは空の文字列である場合は「不明なデバイス」としてフォールバック処理されます.また,Exif IFDからはオリジナル画像が生成された撮影日時(DateTimeOriginal)が抽出されます.
これらの高度,機種,日時に関するメタデータは,写真GPSの座標データとともにブラウザのメモリ内で保持され,ユーザーへの表示用に整形されます.すべてのタグが常に画像ファイル内に存在するとは限らず,カメラの設定や画像を処理したソフトウェアによっては,これらの情報が意図的に削除されていたり,独自の形式に変更されていたりすることが頻繁にあります.
本ツールは,標準的なIFD領域内で確認できたタグの内容をそのまま表示する仕組みであり,情報が欠落している場合はそのまま「情報なし」または初期値として扱われます.
地図通信
抽出した緯度・経度は,まず数値としてページ内に表示されます.この段階ではJPEG本体や座標を地図サービスへ送る処理は実行しません.利用者が「座標を送信して地図を表示」ボタンを押した場合にだけ,OpenStreetMapの埋め込みiframeを作成します.そのURLにはマーカー座標と表示範囲を定めるバウンディングボックスが含まれるため,緯度・経度がOpenStreetMapへ送信されます.
画像ファイル本体を地図URLへ含める実装ではありません.座標を第三者へ送りたくない場合はボタンを押さず,数値表示だけで確認してください.地図表示にはネットワーク接続が必要で,通信を遮断した環境では地図タイルを読み込めません.
GPS IFDだけの削除
写真GPSによる位置情報の意図せぬ漏洩リスクを低減するため,本ツールには解析したメタデータの一部を削除する機能が実装されています.この削除機能が実行されると,ツールはメモリ上に展開されているEXIFオブジェクトを再構築し,GPSに関する座標や高度などのメタデータが格納されているGPS IFDの領域全体を意図的に空のオブジェクトとして上書きします.
その後,変更が加えられたEXIFデータをバイナリ形式に再ダンプし,元の画像データのヘッダ部分に挿入し直すことで,新しいJPEG画像データを生成してダウンロード可能にします.ここで利用者が強く留意すべき点は,このツールのメタデータ削除処理の対象が「GPS IFDのみ」に厳格に限定されているという事実です.
撮影日時を記録したExif IFDや,カメラの機種名,製造元,解像度などを記録した0th IFD,さらにはプレビュー用のサムネイル画像が含まれる1st IFDなどの他のメタデータ領域は一切削除されず,そのまま新しい画像に引き継がれます.したがって,この機能を利用してクレンジング生成された画像は,GPSによる直接的な緯度・経度情報こそ持たないものの,撮影デバイス情報や撮影時刻といった他のメタデータを完全に保持した状態にあります.
ファイル内のすべてのメタデータが完全削除されるわけではないため,これらの残存している情報から,撮影者の行動パターンや特定の時間帯における使用機材が第三者に推測される可能性は依然として残ります.本ツールの削除機能は,あくまで座標情報が格納された特定のディレクトリを標的とした部分的な除去処理に過ぎず,画像全体の完全な匿名化やプライバシーの安全性を無条件に保証するものではありません.
共有前の再確認
メタデータの部分的な削除処理を経て生成された新しいJPEG画像をローカルにダウンロードした後,それをSNSやブログ,または第三者のサーバーへ共有する前には,ユーザー自身による慎重な再確認を行うことが強く推奨されます.本ツールを用いてGPS IFDを削除した画像を再度読み込ませた場合,対象領域が空なら「標準GPS座標は検出されませんでした」と表示します.
しかし,前述の各章で解説した通り,これはあくまでプログラムが規定のGPS IFDから座標抽出を行えなかったことを意味するだけであり,その画像ファイルが公開して問題ないことを証明するものではありません.例えば,画像そのものに特徴的な風景,地域の看板,あるいは特定の建物の外観が明確に写り込んでいる場合,デジタルなメタデータが存在しなくても,視覚的な情報から撮影場所が容易に特定されるリスクが存在します.
また,本ツールはJPEGの標準的なEXIF構造のみを解析対象としているため,他の非標準的なデータ領域や,画像のピクセルデータ自体に電子透かしとして埋め込まれた情報などを検出したり削除したりすることは不可能です.削除後の再解析において位置情報が未検出となった場合でも,システム上の「未検出だから安全である」という表示を過信することなく,残存している他のメタデータ(撮影日時や機種名など)の公開を許容できるか,画像そのものにプライバシーに関わる被写体が含まれていないかを総合的に判断する必要があります.
公開前には,残存メタデータ,ファイル名,画像に写った情報も確認し,本ツールはその確認を補助するものとして利用してください.