ブラウザの機能拡張「Gears」とは
GeolocationAPIとは
Geolocation APIはユーザーの現在位置を知るためのAPIで、IPアドレス、携帯電話の基地局、無線LANなどを利用してユーザーの現在いる地点の緯度経度を取得することができます。
また、Geolocation APIで特徴的なのは実際の位置情報の取得手段(無線LAN、基地局、IPアドレス等)を開発者が意識しなくても良い点が挙げられます。位置情報がもっとも有効に活用されるのは、やはりモバイルPCなどの持ち運びができる端末かと思いますが、一度書いたGeolocation APIを使ったコードはそのままデスクトップPCでもモバイルPCでも可能になります。
さて、GeoLocaion APIを使うのにJavaScriptの中ではじめにgeolocationオブジェクトを生成します。以下のようになります。
var geo = google.gears.factory.create('beta.geolocation');
そのオブジェクトのgetCurrentPositionメソッドに取得した緯度経度を扱うメソッドをハンドラとして登録します。
geo.getCurrentPosition(successHandler,errorHandler);
上記コードでsuccessHandlerとあるのが、緯度経度がちゃんと取得できた時にたたかれる関数名です。逆にerrorHnadlerは何らかの理由により緯度経度取得に失敗した時に起動します。そのように登録すると緯度経度取得に成功した時に、以下のようにしてデータが取得できます。
function successHandler(position) {
alert('緯度' + position.latitude + ',経度:' + position.longitude);
}
これを使うと位置情報を使ったサービスをちょっと便利にすることができます。
Gearsのこれから
今回はデータベースと位置情報の取り扱いを中心に紹介しましたが、スレッド処理などもGearsならではの機能のひとつです。オフライン=オンライン切り替え時のバックグラウンドでのデータの同期がよく使われる例ですが、それだけでなく、ユーザーのUIを邪魔したくないような重い演算をスレッド処理させるとユーザビリティを損ねることなく複雑な処理を実現することができます。
ですので、重い処理になるからとあきらめていた機能も、もしかしたらスレッド処理させることで実現可能になるかもしれません。うまく使うといろいろと利便性の高くなる機能です。WorkerPoolの場合、JavaScrit側の実装方法として、文字列オブジェクトとしてスレッド実行するためのJavaScriptソースを書く、もしくはfunctionオブジェクトをStringに変換してWorkerPoolに渡すという、ややトリッキーな方法なので、多くの人がデバッグに苦労しているというのも事実なのですが、今後そのあたりも改善されていくのではないかと期待しています。
Gearsのアップデートについては、今後開発中のファイルアップロード機能の拡張(中断したアップロードを再開する機能など)やGtalkのようにデスクトップ上に新着通知などをポップアップするノーティフィケーション機能があります。それらがそろってくると、単にWebアプリケーションをオフライン化するものという位置づけから、Webブラウザだけではできかった機能を補完するに変化していくように感じられます。
また、Googleが開発しているChromeやAndroidテクノロジーとの親和性も期待されるところです。Android携帯がどこまで普及するかは未知数ですが、Chrome Liteを搭載するとされていますので、モバイル環境とデスクトップ環境を橋渡しするような役割の一部を担ってくるかもしれません。
Gearsは、まだまだベータ段階という位置づけですが、正式リリースされると、将来的には、現在のFlash Playerのように普及してきて、それにより依存した形での開発も可能になってくるかもしれません。