ユーザー位置情報(User Location)を信じてはいけない
(austingil.com)- アプリに位置情報関連のロジックを入れる例
- 地域に応じてアプリの言語や通貨を設定したい場合
- 特定の国の人々に割引を提供したい場合
- ユーザーに最も近い場所を表示する必要があるストアロケーターがある場合
- 天気アプリがあらゆる種類のデータを提供する前に位置に依存する場合
- 法的な理由でアプリにジオフェンスをかけたい場合(例: クッキーバナー)
- いくつかの共通テーマがある
- 表示/ユーザー体験: 位置情報を使ってユーザー体験を改善または簡素化する
- 機能/ロジック: 位置に応じてアプリケーションのビジネスロジックが変わる
- ポリシー/コンプライアンス: 機能を含める、または除外しなければならない法的要件がある
- 常に明確に区別できるわけではない。場合によっては重なることもあるが、誤った入力をした場合の重大性が異なるため、こうした区別を意識しておくことが重要
ユーザー位置を取得する方法
- ユーザーに直接位置を尋ねる
- 利点: 実装が簡単、ユーザーが正確な情報を提供すれば信頼できる、さまざまな場所に対応できる
- 欠点: ユーザーがタイプミスをしたり情報を省略したりする可能性がある、虚偽の情報を提供する可能性がある
- デバイスのヒューリスティクスを使う
- 現代のデバイスは GPS、Wi-Fi データ、携帯電話基地局、IP アドレスを通じて位置情報にアクセスできる
- Web 開発者はブラウザの Geolocation API を通じてユーザー位置にアクセスできる
- 欠点: ユーザーに位置情報共有の許可を求める必要があり、拒否される可能性がある
- IP アドレスを使う
- IP アドレスはネットワーク上でデバイスを一意に識別し、位置を特定するために使われる
- IP アドレスの各数値チャンクは、広い範囲から狭い範囲へとサブネットを表している
- IP アドレスだけではユーザー位置を知るには不十分なので、既知のサブネット位置データベースと照合する必要がある
- エッジコンピューティングを使う
- ユーザーのリクエストを最も近いサーバーで処理する方式
- ユーザーに許可を求めたり IP アドレスを参照したりしなくても位置情報を提供できる
- 欠点: 実際のユーザー位置ではなく、エッジノードの位置である
ユーザー位置を信頼できない理由
- ユーザーは信頼できない
- ユーザーが常に正直に実際の位置を入力するとは限らない
- うっかり誤った情報を入力することもある
- デバイスは信頼できない
- ユーザーは Geolocation API の使用を拒否できる
- Geolocation API の情報はブラウザ設定でユーザーが変更できる
- IP アドレスは信頼できない
- ユーザーは VPN を通じてリクエストをルーティングできる
- VPN の IP アドレスしか見えず、ユーザーの実際の IP は分からない
- エッジコンピューティングは信頼できない
- エッジノードの位置情報なので、実際のユーザー位置と異なる可能性がある
- VPN を使っている場合、元の IP アドレスにアクセスできない
では、どうすればよいのか?
- 位置情報を得る方法はいくつもあるが、そのどれも完全に信頼できるわけではない
- だからといって諦めるべきだろうか? No! より良い情報を得て備えることはできる
例: コンテンツ翻訳
- 英語で書かれているが他言語もサポートするウェブサイトがあると仮定する
- ユーザーの現地言語を読み込み、ユーザー体験を改善したい
- オランダ語(フラマン語)、フランス語、ドイツ語を使うベルギーのユーザーはどう扱うべきだろうか?
- ユーザーがウェブサイトをリクエストする
- エッジコンピューティングにより、ベルギーからのリクエストであることを確認する
- HTTP クッキーから言語の基本設定を探す
- クッキーがあれば、その優先言語を使う
- クッキーがなければ、英語版またはオランダ語版を使う
- ウェブサイト上でユーザーに対応言語の一覧を提示する
- ユーザーが言語設定を選択したら、クッキーに保存する
- このシナリオでは、ユーザー体験を改善するために、エッジコンピューティングとユーザー申告を組み合わせて位置情報を得ている
- Geolocation API を使う必要はなさそうだ
- 間違った言語が表示されるリスクはあるが、コストは低い
- 位置情報が誤っていたり欠けていたりしても、ウェブサイトは動作する
- 更新: クライアントの優先言語とロケールを示す Accept-Language ヘッダーも利用できる
例: 天気アプリ
- 位置ベースで天気情報を表示するアプリケーションがある
- この場合、アプリが動作するには位置情報が必要だ。情報がなければ、どうやって天気を表示できるだろうか?
- このシナリオでは、初回ロード時にユーザーの位置を仮定しても安全だ
- エッジコンピューティングや IP アドレスからその情報を取得し、(こちらが想定した)ユーザーの地域の天気を表示できる
- また、ウェブサイトの主な焦点が位置にあるため、Geolocation API を使ってより正確なデータを要求できる
- ユーザーが別の場所の情報を望む場合に備えて、柔軟なユーザー申告オプションも提供すべきだ
- そのために、できるだけ詳細な位置情報をオートコンプリートする検索入力フィールドを提供できる
- 今後の訪問への対応方法はさまざまだ。常に「ローカル」の天気をデフォルトにすることも、前回訪問時の位置を記憶することもできる
- ユーザーがウェブサイトをリクエストする
- 初回リクエスト時にエッジコンピューティングまたは IP アドレスで位置情報を推定してアプリを開始する
- 最初のクライアントロード時に Geolocation API を実行して情報を更新する
- 今後のロードのためにクッキーへ位置情報を保存できる
- 別の場所を検索するため、オートコンプリート付きの柔軟な入力を提供する
- ここで重要なのは、アプリは実際にユーザーがどこにいるかを気にしていないということだ
- 必要なのは単に位置だけだ
- ユーザーが申告した位置(検索)は、クッキー、エッジコンピューティング、IP アドレスから得た位置より優先される
- 天気は毎日変わるため、キャッシュ戦略や、アプリを主にサーバーレンダリングにするかクライアントレンダリングにするかも検討に値する
例: 店舗検索
- 複数の場所で実店舗を運営していると仮定する
- 製品カタログや在庫をオンラインで表示できるが、店舗在庫の最新情報を提供するのは良い方法だ
- そのためには、どの店舗の在庫を表示すべきかを知る必要があり、最良のユーザー体験のためにはユーザーに最も近い店舗であるべきだ
- ここでも、エッジコンピューティングや IP アドレスを使ってユーザー位置を予測するのは妥当だ
- そのうえで、ユーザーが位置情報を入力できる柔軟な入力を提供しつつ、オートコンプリートは近接順に並んだ店舗一覧に制限すべきだ
- Geolocation API を実行するのもよい
- この例と前の例の違いは、サイトの主目的が位置に依存しないことだ
- したがって、ユーザーが位置依存の機能とやり取りするまで待つべきだ
- つまり、ユーザーが店舗検索フィールドにフォーカスしたときにだけ位置を要求すべきだ
例: 地域別価格差
- これは少し厄介なテーマだが、ユーザーの位置に応じて異なる価格を請求したい場合はどうすればよいだろうか?
- たとえば、一部の航空会社やホテルは、ある地域から予約するユーザーに対して別の地域より高い価格を提示することで知られている
- 倫理的な問題はさておき、これは収益性に関わる問題なので影響は非常に大きい
- したがって、ユーザーが自己申告の位置情報で簡単に価格を変更できるようにはしたくないだろう
- この場合、おそらくエッジコンピューティングか IP アドレスだけを使うことになる
- ユーザーは VPN を使ってこれを回避できるが、それでもできる最善の方法だろう
- 詐欺師を避けることを本当に気にするなら、Akamai の高度なプロキシ検出機能を使って VPN ユーザーからのリクエストをブロックしようとすることもできる
- ただし、そうすると値引き販売になる代わりに、販売自体が成立しないかもしれない。選ぶのはあなた次第だ
例: クッキーバナー
- この最後の例は法的コンプライアンスにより重点を置いているので、小さな免責事項から始めたい: 私は弁護士ではない!!!
- これはあくまで仮定の例であり、法的助言として受け取るべきではない
- 2016 年、欧州連合は一般データ保護規則(GDPR)を可決した
- これは EU 内のインターネット利用者のプライバシーを保護する法律であり、企業が EU 外にあっても、EU 内の個人に商品やサービスを提供する企業に適用される
- ウェブサイト所有者には多くの要件があるが、ここで注目したいのは、今やオンラインの至る所で見かけるクッキーバナーの弊害だ
- プライバシーの問題、クッキーバナーが正しいか間違っているか、その効果または無効果、より良いアプローチがあるかどうかについては議論しない
- 代わりに、法的に必要な場合にのみクッキーバナーを表示し、そうでない場合は避けるのが望ましいと言っておく
- 改めて、ユーザーの位置を知ることは非常に重要だ
- これは前のケースと非常によく似ており、実装も似ている。主な違いは、失敗した場合の重大性であり、そのため正しく行うために必要な努力の水準が異なることだ
- クッキーバナーは、法律とユーザー位置がウェブサイトにどのような影響を与えうるかを示す最も広く知られた例かもしれないが、より強力な例を探すなら、おそらく中国のファイアウォールだろう
結論
- ユーザー位置の判定に正解はない
- シナリオに応じて、ユーザー申告、デバイスのヒューリスティクス、エッジコンピューティング、IP アドレスを組み合わせて対応すべきだ
- 重要なこと
- 必要なのはユーザーの位置なのか、それとも単に何らかの位置なのか?
- データはどれほど正確である必要があるのか?
- ユーザー位置が偽装されても問題ないのか?
- また、法的コンプライアンス、規制、機能性、95% の信頼性で十分かどうかも考慮すべきだ
- 法的な理由で位置ロジックを使うなら、自分を守るための対策を講じるのがよい
- CCPA、GDPR などのデータプライバシー法への準拠
まだコメントはありません。