ウェブサイト上のJavascriptから位置情報を取得するにはどうするか調べた結果
ネイティブアプリではGPS機能にアクセスしてとれるけど、ウェブサイトで位置情報つかった何かを作ろうとしたとき、どうすればいいかよくわからないですよね。
調べても、これを使えば取れる!的な記事はあるけど、それがどういう仕組みで、どういう環境で動くのかを教えてくれるものがない。
だから調べてみた。
Geolocation API
Geolocation API は位置情報をくれる機能として、多くの記事が紹介していますが、一体どこから情報とってる?ということは言及してなくて、使い方に困る。
(そういう人は仕様書見たほうがいいじゃんって話ですが)
結局の所、下記仕様を参照することに。
https://developer.mozilla.org/ja/docs/Web/API/Geolocation/Using_geolocation
https://www.w3.org/TR/geolocation-API/
- Geolocation APIでは、無線LAN・WiFi・携帯電話基地局・GPS・IPアドレスなどから位置情報を取得してくれます
- 位置情報を取得するにはユーザーの許可が必要
- 取得自体は非同期で行われるので、受ける際はコールバック処理でおこなう
こんな感じ。
PCだったり、スマホだったり、端末ごとの通信状況などから位置情報を収集してくれるので、かなり便利。
ただ、仕様として速くレスポンスすることを求められているため、状況によって精度が低いこともしばしば。
どこからとっているかが大事
位置情報は navigator.geolocation からとれるよ!っていう思考停止な記事をみると、エンジニアとしては本当に危機感を感じる。
それを鵜呑みにして利用して、どこから情報とってるのかもよく調べずに使ったら、将来的に、法律にひっかかった!、突然機能が使えなくった!、とかハマってしまうことになる。
位置情報も個人情報に関わるものだから、どういう仕組みで、どういう使い方をするのか、とかをしっかり知っておくことは大事です。
ほんと、仕組みとかをあまり意識せずにプログラミングできるような時代になりつつあるけど、そのなかで僕みたいなエンジニアは、安全・安心・安定のシステムやウェブサイトをつくること、提案すること、サポートすることでしか差別化は図れない。
安価で簡単に作ってくれるところなんていくらでもある。
もちろん安いにこしたことはないし、高い≠高品質であることもザラにあります。
あれ、後半話ずれてきてますね。すみません。
位置情報を使ったアプリ作りたい方、安定して取れそうな機能なので、ぜひ使ってみてください。
ビバウェブアプリ。