ちょっとした思いつきで、PCの位置情報を知らせる何らかの方法がないか考えていた。用途は、PC紛失対策など色々使えて、なんかビジネスできないかと。。。
とは言え調べた本当の動機は、子供くさい話ですが、、、、映画の「アンフェア」でUSBメモリを挿すとUSB内のデータが自動転送され、その後、USBが位置情報を第3者に伝え爆発するというシーンが有り、まさにそれを作ってみようと思いったのです。
ところが、まぁそこら辺の専門家ではないので、技術的課題が色々有り、ひとまずPCが位置情報を知らせるにはどうしたらいいか調べてみた。
概ねネットで調べた情報から見ると以下のパターンがある。
GPSを使う
GPSは言わずと知れた衛星と通信して位置情報を取得する技術で、スマホなどにGPSモジュールが内蔵され衛星と通信して位置情報を取得する仕組み。
またUSB型でPCに指してGPS情報を取得するUSB接続GPSレシーバーといった商品があったりする。
最近ではWindows 8の機能でGPS機能を搭載したPCの場合、アプリなどで位置情報をPCとして扱え、Windowsアプリとしても使えるし、Powershellでも利用できる。PowerShellで位置情報を取得する - PowerShell Scripting Weblog
今回の目的である、USBをPCに挿したら位置情報を取得し、、、というところにおいては、USBのAutorunでPowershellとかキックさせて位置情報を取得後、位置情報をメールで飛ばすというのも可能ですね。
ただ、USBを刺した機器がGPSに対応していないPCの場合を想定すると、USBメモリのファームウェアをハックしてGPSモジュールを配線して、、、とかやらないと実現はできないなぁ。そんなクラッカー的スキルはないので諦めよう。ひとまず。
Wifiを利用した位置情報を取得
近頃はスマホで位置情報機能をオンにすると、Wifiを使うとより正確に位置情報を取得できるとかって出たりする。理由はさっぱりわかっていなかったが、仕組みはこうらしい。
ユーザがいる場所周辺に飛んでいる複数のWifiホットスポット情報をスマホアプリが取得し、電波の強度なども合わせて収集をする。そのデータをWifiホットスポットと、その物理的な位置情報を管理しているデータベースと照合し、そのユーザが居る位置情報を割り出す。そのDBはGoogleなどが個別に管理していてスマホアプリ経由で利用ができる。
ぶったまげた。
そして、Googleカーが街中を走ってWifiスポット情報を収集しそのデータベースを日々更新しているとのこと。
ということで、PCの位置情報を取得するという意味では、GoogleとかがそういったAPIを出していないかぎり難しい。その流れで一応提供されているものを紹介。
ブラウザの機能を使って位置情報を取得する
GoogleのJavascriptを使ったAPIでブラウザ経由で位置情報を取得できる。恐らく内々では上で書いたDBを使っているのだろう。
JavaScriptで位置情報を取得する方法(Geolocation API)
今回の目的においては、USB内にhtml/javascriptファイルを入れておいて、USBを挿したらAutorunでそのHTMLファイルを開き、javascriptのロードイベントで位置情報を取得後、データをWebサーバに送り、サーバが受け取ったデータをメールで送るといった流れ。う”~ん全部バックグラウンドでできればいいんだけど、無駄にブラウザが開くのはおしゃれではない。
結論
Autorunで、GPS搭載PC上で位置情報を取得後、メールで連絡するやり方が自分の知識では限界かと。Autorunの作り方も分からないが次はそれを調べてみよう。