« 「覚えない」のススメ | メイン | 愛乙女★DOLL「GO!! MY WISH!!」本日発売!! »

2012年5月 7日

なぜ、iPhoneは写真にアクセスするだけなのに、位置情報を利用したがるのか

iPhoneアプリ、特に、写真をあつかう系アプリで

「"***"は現在の位置情報を利用します。よろしいですか?」

という、ダイアログが表示されたこと、ないですか?

「写真やビデオに含まれる位置情報の利用を許可します。」

と出るけど、僕は自分で撮った写真をどうこうしたいだけなの!! 位置情報とか関係ないの!! って思ったことないですか?

僕はあります。
そして、開発者としても、最初、カメラロールの画像を一覧表示したいだけなのに、なんで、ユーザに位置情報の利用を確認しなくちゃいけないの? と不思議に思ったのでした。

はてなアルバムというアプリがリリースされました。

使い方 - HatenaAlbum

iPhoneで撮った写真でアルバムを作れるサービス用のクライアントアプリですね。
このアプリで、写真を追加しようとすると、こんなダイアログが出ます。

はてなアルバムの確認ダイアログ1

続いて、

はてなアルバムの確認ダイアログ2

こんなダイアログが表示されます。
前者は、「はてなアルバム」が表示しています。後者は「iOS」が表示してます。
写真を取得したいのになぜ位置情報? その疑問に先にこたえるために、前者のダイアログをはてなは用意したのだと思います。

しかし、写真と位置情報の利用、一瞬「関係ないのに位置情報をこっそり盗むつもりだな!」って思っちゃうかもしれません。
でも、写真には実は位置情報が含まれている場合があります。iPhoneの標準のカメラアプリでも、位置情報の利用を有効にしていると、撮影した写真に撮影場所の情報が付加されます。位置情報を有効にしているかどうかは、設定アプリの、位置情報サービスで確認することができます。

なんで、こんなことになってるの?
当然の疑問です。
でも、これ、開発者がどうにかできるものではないのです。
なぜなら、後者のダイアログ、これは、ユーザの写真にアクセスしようとするときに、iOSが勝手に出すダイアログだからなのです。

iPhoneでアプリが、ユーザの撮った写真にアクセスするためには「ALAssetsLibrary」というiOSが用意した仕組みを使う必要があります。
他のOSのように直接ファイルシステムにアクセスして、ファイル列挙して一覧ゲット! とかできないのです。
例えば、カメラロールに保存されている画像の一覧を画面に表示して、それを選択させるようなUIを作りたいとします。
カメラロールの中から、1枚だけ画像を選択させるのであれば「ALAssetsLibrary」を使わず、「UIImagePicker」という別の方法で取得することができ、この場合は、位置情報うんぬんのダイアログは出ません。
しかし、複数の画像を選択させたいという用途には、「UIImagePicker」は使えないので、「ALAssetsLibrary」を使うことになります。
この「ALAssetsLibrary」は、一覧を取得するだけではなく、画像の情報(画像そのもの、ファイル名、メタ情報)も取得することができます。このメタ情報に位置情報が含まれていて、これを利用「できてしまう」のです。
自分の開発しているアプリが、これを実際に取得するかどうかは関係ありません。取得出来てしまうのであるからユーザには許可を取るべき! 確かに、正しい動きだと思います。
ただ、ユーザも戸惑ってしまうし、開発者もユーザにどう説明したらいいのか難しいところではあります。
今回のはてなアルバムのやり方は、数段階でアラートを出しています。とても行儀が良いと思います。
でも、それでも、なかなかユーザには伝わりにくいんですよね。
位置情報を取得する、その直前までダイアログは出さずに、取得するその直前でダイアログを出していくれたらいいんですけど、メタ情報の一部に含まれる位置情報なので、その取得方法を考えるとちょっとこれは難しいのかなとも思います。

このあたり、今後のiOSでもう少しうまい対応がされていくと良いなと思うのですが......。

※できるだけ、開発者でないユーザにも分かるように書いたつもりです。が、そのため、若干開発者が見ると、ちょっとニュアンスが違うと思うところがあるかもしれません。もし、誤解を招きそうな記述がありましたら、ご指摘いただけるとうれしいです。

投稿者 CHEEBOW : 2012年5月 7日 18:55 このエントリーを含むはてなブックマーク

[ iPhone ]
【お知らせ】音楽に関することはこちらのブログで書いています。くじら音楽部::BLOG