「位置情報付き写真をWebにアップしたら、なぜか座標が消える」——その原因はAndroidだった
GPSタグ付き写真をWebアプリにアップロードしたら、EXIFの位置情報が消えていた——そんな経験をしたことはないだろうか。これはバグではない。Googleが意図的に実装した仕様変更だ。記念ベンチの写真と場所を共有するサイト「OpenBenches」を運営するTerence Eden氏が、この変更によって自分のサービスが機能しなくなった経緯を詳細に報告している。
段階的に「塞がれた」位置情報の抜け道
Eden氏によると、Googleはここ数年で複数の方法を順次ブロックしてきた。
<input type="file" accept="image/jpeg">(フォトピッカー経由)→ EXIFがストリップされるよう変更<input type="file">(ファイルマネージャー経由)→ 一時的に動いたが、後にこれも封鎖- Progressive Web App(PWA) 経由のアップロード → 動作しない
- Bluetooth / QuickShare での転送 → 位置情報が削除される
- メール添付 → 同様に剥ぎ取られる
結論として、現時点でAndroid端末から位置情報付き写真をWebにアップロードできる唯一の方法は「USBケーブルでPCに転送してからデスクトップブラウザでアップロードする」という手段のみ。モバイルファーストの時代に逆行した運用を強いられる格好だ。
なぜGoogleはこうしたのか——プライバシー保護 vs ユーザーの自律性
Googleの意図は「プライバシー保護」にある。写真にGPS座標が埋め込まれていることをユーザーが知らずに、自宅や職場の位置が特定されるリスクは実際に存在する。FacebookやMastodon、BlueskyなどのSNSは以前からEXIF位置情報を自動でストリップしており、「知らないうちに場所を晒す」事故を防いでいる。
ただし、Eden氏はこう反論する。問題はプライバシー保護そのものではなく、ユーザーへの選択肢を与えないことだと。「このサイトは写真の位置情報を取得しようとしています。許可しますか?」というパーミッションダイアログを実装すれば、双方のニーズを満たせるはずだ。Androidにはネイティブアプリ向けに ACCESS_MEDIA_LOCATION という位置情報アクセス権限が存在するが、Webブラウザからはこれを利用できない。
開発者としての現実的な選択肢
現状、Webアプリ開発者が取れる対策はかなり限られている。
- Geolocation API を使い、写真アップロード時にブラウザの位置情報取得(
navigator.geolocation)を呼び出す → 精度に課題あり、毎回許可が必要 - ネイティブAndroidアプリを開発する →
ACCESS_MEDIA_LOCATION権限でEXIF取得可能だが、開発・維持コストが高い - iOS向けにも同様のアプリが必要になる可能性
Eden氏はHTML仕様のIssueにコメントを残しており、ブラウザレベルでの解決を求めている(記事内にリンクあり)。Webアプリから地理情報を扱うサービスを作っている、または作ろうとしているエンジニアは、このIssueに+1することが当面できる最善の一手かもしれない。
所感——「静かな仕様変更」が開発者を黙らせる構造
この件で特に問題だと感じるのは、事前アナウンスなしに動作が変わった点だ。Eden氏のもとには「サービスが壊れた」という報告が殺到したが、原因はGoogleの変更であり、Eden氏のコードではない。プラットフォームが告知なく既存の挙動を変えることで、開発者は突然ユーザーから責められる立場になる。プライバシー保護は大切だが、エコシステムへの配慮なき変更は、特にニッチなユースケースを持つ小規模サービスを静かに殺していく。地図・位置情報・フィールドワーク系のWebアプリを運営している開発者は、今すぐ自分のサービスで再現テストをすることを強くすすめる。