Tech:android:apps:gps

出典: Tariki

目次

androidのGPS関連アプリ: androidはgarminの夢を見るか?

そもそもandroidというアーキテクチャはGPSありとなしでは全然、使われ方が違うと思う。ユーザ側の人生もGPSがあるかどうかでかなり変わってくる。おおげさと思うかもしれないが、最近では携帯電話全般にも言える、と思えるくらい(やっと)普及してきたしこのことを理解してくれるひとも多くなってきた。

ここ10年ほどは、ずっとGarminの専用機GPS (eTrex) を持ち歩いていた。その前はどうだったかというと、あちこちに書き散らしたかもしれないが

  • 専用機はなかなか貧弱: PCで地図を切り出してロードできる機種もあったがそれとて地図は(2万5千分の一程度の解像度で)数km四方で実用にならない。増して機能の増強など望むべくもない
  • GPSモジュールはPCの持ち歩きがままならない: SSDなんてない時代。東芝Librettoの時代はずいぶん持ち歩いたなあ。その上で動くUNIX系OS (FreeBSD) でロガー・地図表示ソフトも作ったりしたっけ
  • ログ取るだけの単体機は現場で確認できないから面白くない・マークセットができない・ナビには使えない

ということだった。eTrexに移行してからだって全然枠組みは変わったといえないのだが、痒いところに手が届くくらい操作性が良い・地図の表示ができしかも日本全土をSDで持ち歩ける(HCx)・ログの整理は母艦上のKashimirで一元化、という要素があった。要するに専用機の出来がよかったから一本化できて長く使っている。

これがandroidの出現によってちょっと変わりつつあるかな、と思えてきた。

多数のフリーソフトがあり、下で不満をぶちまけるがそれらはどれもGarmin専用機に取って代われるほどよくできていないのだが、改良される見込みがあること、さらに不満があるなら自分で作ればよいことがある。

さらに地理情報だけならGarmin専用機を上回ってGoogle Mapsを再利用できることが超強力である。無料であるというのはさておいて (Garmin専用機の日本地図のアップデートの少なさ・価格の高さもこの際さて置こう)、航空写真・ストリートビューとの連携、経路探索(乗り換え案内の時刻表との連携)・お店の情報なども含めて、情報のアップデートが速い・リアルタイムというのは、いくら毎年DVDが出るカーナビでも追いつけない価値がある。

GPS利用地図関連アプリの数々

以下は現状(2009年11月)までで、主にマーケットに出ているアプリで私が使用してみたものについてである。ここの更新がしばらくなされていないと、下記の不都合・不具合も修正されていたりするかもしれないし、新しいアプリが出ているかもしれないので、あくまでも参考程度に。

Google Maps/Streetview

ご存知総本山Googleの純正ソフト。純正って言い方も難があるかもしれない。実はandroidのSDKではGoogle Mapsへのインターフェースはライブラリで提供されていて、下記サードパーティー製ソフトだって『純正』マップを利用できていることには間違いはない。

さておいて、まずGoogle Mapsがびみょーなのは、OEM提供される電話機の会社(とアクセスするプロバイダ)によって、入っていたりいなかったり(?)、マーケットでバージョンアップできなかったりするらしい、ということである。

私が購入した台湾HTCバージョン(電話会社の紐付けなしのいわゆる白ロム)では、最初から入っていた(バージョン失念)。これが台湾滞在中にマーケットで更新可能との表示が出てバージョンアップ(確か3.1xになったと思う)。日本に帰ってROM遊びをはじめたらROMによっては古いバージョンだったりして、じゃあ3.1xに上げようと思ってマーケットに行ってもGoogle Mapsがあったりなかったり。そうこうしているうちに、CyanogenさんにGoogleから『GoogleクローズドなアプリをROM配布に含めるな』という警告が出たりして、それでも別の電話機から抜き出したGoogle Maps (それもEclairの最新3.2だったり) が謎な配布をされていて、CupcaleベースのROMでは動くがDonutベースでは動かなかったり。と割とめちゃくちゃなのです。

そういったわけで手に入るバージョンにはいろいろ違いがあると思うが、最初に私が手に入れたバージョン(2.xか3.0xか?)にくらべて最近のは以下のように進化しています。

  • 3.1x: 経路探索ができるようになった(車・公共交通機関・徒歩)。ちなみに徒歩の検索は(PCのGoogle Mapsでも体験できるが)日本ではいい加減な最短距離しか表示されないが、台湾ではちゃんと最短(だけではなく高低差がないところを選んでくれる)経路を検索してくれるので、徒歩ナビにも使える。
  • 3.2: レイヤ機能が追加。これによってMy Mapsがクラウド環境で使えるようになった。どういうことかというと、PCのMy Maps機能で追加した (←Google EarthなどでKMLで吐いた)、あるいはandroidなら『My Maps Editor』(このアプリはGoogle Mapsがマーケットに表示されない条件でも表示されるので面食らってしまう) で編集したウェイポイント・トラックなどをそのままGoogle Maps上で利用できる

Google Mapsそのものの機能はPC版の(ブラウザから使う)Google Mapsとそれほど違いはない。例えば

  • スクロールして検索
  • 緯度・経度で検索
  • 住所から検索
  • その他キーワードから検索
  • (可能なところでは)ストリートビューを表示
  • 二点を指定して経路探索

といったところか。

androidで強力なのは、やはりGPSで現在位置を知ることができるので、そのままナビゲーションに使えるということである(なおGoogle Navigationなる別アプリもこの11月から登場するようだが、私はその存在意義が分からない。3Dになっただけちゃうか? と思える)。

また出先で思いついたものを検索できる。従来であれば、出かける前に検索しておいてプリントアウトしたのを持っていくか、人目をはばかってPCを広げて(持っていればね)3GモデムなりWLANなどを探して接続……という手順だったのだがこれが実に簡単だ。

まそんなことをいったら携帯電話のなんとかナビがあるじゃんと反論されるだろうが、もうそんなのはGoogle Mapsと比較するほうがおかしい、というくらい勝負にならない(私だって今まで使えなかったわけではないが、出先で貧弱ナビを高いパケット代で使うくらいなら事前のGoogle Mapsのプリントアウトのほうがマシであった)。

そのほかPDAとの連携が強力である。

  • 電話帳(Gmailアドレス帳)の住所に一発ジャンプ→そこから経路探索・ストリートビュー・……(略
  • (別項で書くが)androidのアプリケーション連携 (インテント)により、地理情報を持つアプリケーションのデータを『奪って』すべて地図表示→そこから経路探索・ストリー(略

後者には説明が必要であろう。インテントは、あるアプリの中であるデータ型のデータを他のアプリで利用させる局面があれば、『そのときそのマシンにインストールされているすべてのアプリの中でそのデータ型を扱えるアプリ』を選択させて起動・受け渡しさせることができるというものだ。

地理データはGoogle MapsへのURLがそれと定義されているようで、例えば

  • ブラウザでどっかのwebページをみていたらGoogle Mapsへのリンクがある
  • メール・SMSにGoogle Mapsへのリンクがある
  • メモ(テキストエディタ・付箋紙系)アプリにGoogle Mapsへのリンクがある

という場合、それをクリックしたときに単純にブラウザが(ブラウザが開いて)ジャンプするのではなく、Google Mapsをはじめとする(私なんかの場合ほかにもgeocache探しのアプリなんかも)地理情報を利用するアプリの一覧が飛び出て、それらの中から選べるようになるのだ。

これは強力である。従来ならgeocacheを探しに行く前にGoogle Mapsで確認してプリントアウトしていたのが、とりあえずPCではGmailで自分に座標を送っておく。いざ出先では、androidでGmailを受けてその地図を表示させるとともに、geocache beagle (geocache探しのアプリ)に食わせて登録、web表示してヒント読んで地図表示させてあれまた地図が? 、ついでに近くのキャッシュも表示させてその座標を地図表示させてそれをgeocache beagleに食わせてその座標を地図表示させて……と、ぼーっと操作しているとアプリ連携がループしてしまったりするので注意が必要である(笑)。

Google Skymap

ちょっと他の地図表示アプリと違ってここに書くのは余談に近い。これもGPSを利用することはするが、現在地の現在の星空を表示させるだけのために使う。

これ、実はPCでも(Google Earthのモード切替で)使ったことがあるが、それほどハマらなかったんですね。だけどandroidで実行すると、みな「おおっ」と驚く。というかandroidって何がいいの、というひとを驚かせるためにまずこれを起動している私である。

そのわけは、加速度センサ・磁気コンパスの利用である。画面にはごく狭い範囲の星空しか表示されていない(視野角で10度くらいか?)が、androidをぐりぐり頭上に動かすと、その部分の星空が表示されるのである(実は足元方向も表示されるので、南半球や昼間の星座も見放題である)。

だからもう少し情報がほしいかな、と思える程度のまばらな星空なのだが、寝転んでみていると実に飽きない。6歳まで天文マニアであった私にはヨダレものの機能である。

そればかりでなく、秋の夜空に持ち出すと、実用的に星座を探したり「あの星は何だろう」というときちょっと起動して確かめたりが実に手軽にできる(ちなみに目がつぶれてしまわないためのナイトビューモードも装備された)。

さらに検索ボタンを押すと、恒星・惑星・星座の名前で(インクリメンタル)検索ができて、選ぶとそちらの方角に矢印が出てナビゲートまでしてくれる。さすが検索のGoogleである(笑)。

PaPaGo! (台湾専用カーナビ) android用

これは店売りのパッケージソフトである。magicを購入したときに店(台中NOVAの〓)で一緒に買った。

実はPaPaGo! は台湾では有名なカーナビソフトである。

話が逸れるが、私のeTrex Vista (英語版→日本版)には台湾の地図は載せられない。日本版もそうであるが、漢字フォントはこの機種までは日本版・台湾版でハードウェアに搭載していたので(現在の新機種はUnicodeらしい)、ファーム・データの更新だけでは英語版・日本版で台湾地図は使えない (逆に英語版・台湾版で日本地図も使えないだろう。英語版はどちらも使えず、アメリカ・ヨーロッパ地図はどれでも使える)。そこで『台湾で使えるGPS』を夢見て (GenioにコンパクトフラッシュGPSを搭載して)、Windows CE版を以前、購入したことがある。まあ7、8千円くらいのものだったと記憶しているが、嫁の弟にそのことを言うと「ふーん、高いソフト買ったねえ」みたいな反応をされた。

結局そのときは帰国直前だったので帰ってからちょろっとインストールしてちょろっと地図を使ってみて終わり、次回台湾に行ったときはGenioを買い換えたタイミングだったと思う(HTC CavariereはWindows Mobileなので理屈ではソフトは動くが、GPSを挿せるCFスロットがない)。だからまじめに『GPSでリアルタイムナビできる単体機地図』として使ってみてはいなかった。

さてandroid版であるが、購入当時、台湾でも有料Marketというのは始まっていなかったので、仕方なくパッケージにした……であろうことと、あと膨大な地図データ(音声データも)はDVDで供給、ということなのだろう。事実インストール(これは現地で行なった)が終わると、オンラインで実行プログラム本体(apk)のアップデートをしろといわれた。

その前にまず、ソフトのシリアルとandroid機のIMEIを使ってとある認証サーバで認証キーを得ると、その個体専用のキーが送られてくる。これでソフト1本を本体1台に紐付けしてコピー防止をするわけだ(Garminの地図の紐付けと同じ方法だ)。

ソフトの使い勝手であるが、かなり微妙である。というか、結局残りの台湾旅行期間もGoogle Mapsの方が使用頻度が高かった。ひとことで言うと (最初から分かっていたことであるが) これはカーナビであって地図ソフトではないということだからだ。

徒歩と公共交通機関を使う旅行者であれば、道が表示されて(ある程度自分で選べて)乗り換え案内も利用できるGoogle Mapsのほうが便利なのは当然だ。航空写真に切り替えて実際の風景と見比べられるし、店舗の情報などはカーナビにもあるだろうが、それ以外の情報(Google先生の膨大な検索情報)と結びついた地図のほうが、一般的には強力に決まっている。

ただしPaPaGo!はドライバー向けとしてはもちろん十分強力で、タクシーに乗っているときなど動かしてみたが、高速を降りるときの車線変更指示・ジャンクションの拡大、音声による読み上げとかはもちろんドライバーには便利だろう。

こういうものがandroid用に (そしてWindows Mobileなどの単体機PDA用、ガラケータイプの携帯電話でもはじめから内蔵しているのがあったと思う) 売られている背景には、台湾のカーナビ事情がある。日本のいわゆるDVD-ROMドライブやTVチューナまで付いていて、12Vで電気をバカ食いするカーナビは、台湾の車ではほとんどみたことがない (バスのGPSは据え置きタイプだが。まあ専用機だろうけど)。高級車の運転手からタクシーの運ちゃん (ちなみに台湾語でも「うんちゃん 運将」という) まで、これらのPDA・携帯をダッシュボードにつけたアタッチメント(アンテナ接続・外部電源供給もできると思う)にさっと載せカーナビとして使う。車を降りるときには外すとPDAなり携帯電話になる、という枠組みである。

このことに起因するが、PaPaGo! の最大の使いにくさは、androidのUIをPaPaGo!が奪ってしまって、バックグラウンドでは使えないということである。メニューの遷移も『MENU』ボタンではなく画面上のメニューボタン、戻るときは『←』ボタンではなく画面上の戻るボタン、ということである。バックグラウンドに回せないのだから当然、目的地に着くまで暇だから2chでも読むか、なんてことはできない。

検索も (もちろん虫眼鏡ボタンではない) 標準の中国語(台湾)IMは使わず、通りの名前などをBPMF (台湾のひらがなに当たる)でどんどん入力していけば、候補となる文字が絞られる (台湾全土の通りの名前の中であり得ない次の文字を消す) 擬似インクリメンタル検索のような仕掛けがある。一から十まで全部PaPaGo! がUIの面倒をみている。これは運転中に細かいボタンを押したりとかandroidの標準IMを操作していたら事故る(笑)、ということなのだろう。

長くなったが(面白いでしょ?)、台湾でドライブするひとにしか役に立たない情報。将来日本でもandroidが単体機カーナビに取って代わるかというと、音声認識(日本語でできれば)は現在の日本のカーナビよりandroidのほうが優れている気がするが、こないだホームセンターで3万円くらいのカーナビをみたので、まあ無理でしょうな(笑)。

GPS status

まずこのツールは、決してナビをしないひとであっても(しないなら要らないか(笑))、GPS・磁気コンパス・加速度センサの作動状態を確かめるためには必須でしょう。

シンプルなコンパス表示に見えている衛星が表示され(Garmin機のsatellite表示のよう)、ほかに緯度・経度などの生データや加速度データも表示されます。

現在位置はインテント機能でメールやエディタに送ることができるほか、最近他のアプリからのウェイポイントを受け取って、その方角を表示(直線ナビ)することもできるようになりました。

それから水平にすると上端に来て、垂直にするとコンパス中央に来る謎の○があるのですが、これって○を衛星に重ねると、そのときandroidの頭が指している方角が衛星、という機能です。Garmin機にも(目的が衛星じゃなくて目的地方角だけど)本体中央にマークがあるけど、そういう感じ。いちおう私は『腕を伸ばしてこぶしが10度』法で天球図から星を探したり、GPS衛星が見える場所に移動(笑)したりしますけども、この機能で正確にみてみると、以外に地平近く(5度とか)の衛星って見える場所では見えたりするんだなー、と再認識します。

Ridetrack

現在のログ取りで大活躍のツール。地図上に軌跡を表示してくれるし、私はあまり必要性はないが移動速度によって軌跡の色が変わったりする機能もある。

ログをスタートするときはまず衛星捕捉ボタンを押してからレコードボタンを押すが(しかしアイコンがダサいぞ)、地図表示なんてしなくていいから(爆)←実は地図は別のツールで見ていたりするもので、いっそ常時 (起動したら終了するまでバックグラウンドで) ログ取り続けてくれればよいのにな、と思います。あといちおうポーズボタン(屋内に入ったら押せばGPSはオフになるしツールもお休みするので軽くなる……はず)があるのだが、どうもGPSがオフになっている様子がない(?)。

最大の問題は安定性。他のGPSデータを使うツールと同時起動し、衛星が見えない場所でバックグラウンドからフォアグラウンドにすると、まず100%の確率で落ちる。そこまでのログは残っているのだが、このツールもご多分に漏れず1個のトラックしか地図上に表示してくれないため、(後でKashimirに読み込めばログの接続はできるのだが)非常にストレスです。

それからログの書き出しも面倒。最新のログ以外はDBに入っていて、これをひとつひとつ呼び出してはGPX (KMLも可能) フォーマットでSDカードにエクスポートするのですが、これが操作手順が多くて時間がかかる。

私が一番気に入っているのは、このツールでログを取る間隔が『GPS精度』ということができる、という点である。『GPS精度』というのは半径1σの確率でそこに入っているわけだから、その円内から出たら移動したとみなしましょ、という、非常に合理的な根拠に基づいている。どうして他のツールにはないんだろう。

これがあるおかげで、屋内に入ったら自動的にポイントを記録するのはやめてくれるし(そういう意味ではGarmin専用機 - 私は解像度を『Auto』にして使っている)より優れている。またこれは一般論であるが、青空が見えている移動手段 (徒歩とか) は低速なので細かくログをとりたいが、屋根があるとかGPSが見えない乗り物ほど高速移動するから間隔は広くてよい(いや高速移動するから精度が落ちるのか?)、というのとマッチしている。まあもしかして複葉機とかオープンカーの新幹線にでも乗ったら当てはまらないかもしれないのだが。

Location Log

まさにウェイポイントを打つだけのツール、と思えるシンプルさだが、単に制作途上なだけかも。その割に操作が多い。理想的には(Garmin機的に使えるためには)起動したら即現在地で、仮の名前(Garminなら『001』とか番号がインクリメントしていく)がもうセットされていて(編集したいなら書き換える)、OKボタンでセーブ、という2アクションで操作したいのだが、このツールでは起動→今のロケーションをセット→名前必須(→一覧に戻る)という面倒さです。

Marketでの記述によればGPX・KMLから(へ?)のインポート(エクスポート?)も予定されている、とはあるんですが、現状このツール専用DBで閉じてしまっているから再利用性なし。

ただしGPS statusとの連携で、『Rader』機能で直線(目的方位)ナビゲーションができるのはやや好感。

My Maps Editor

Google純正ツール。まあPCなくてもMy Mapsが編集できるよ、というツールなのだろうが、オフラインで (キャッシュ利用の表示およびオンライン接続時のサーバとの同期) は使えるかどうか不明(台湾の常時オンラインの極楽環境でしか試していないのだが使えないと思う)。

ウェイポイントを打つだけに使うこともできるのだが、どういうわけか『地図上のある点』『緯度・経度指定』『住所検索』はできるのに、一番ほしい『現在位置』が登録できない(もちろん『地図上のある点』で現在位置を長押しすればよいのだが、指の太さ程度の誤差が出る)。

また後述するように、My Mapsがいまのところ『データの墓場』であるため、これで記録を取る気はありません。

My Tracks

デザイン、機能とも秀逸で、最近(2009年11月)私の中で急浮上中のアプリである。

機能はトラックログおよびGoogle Maps API上での表示が中心であるが、主要なウィンドウとして

  • Map (トラックログ)
  • 高度遷移: Garminハンディ機の高度グラフみたいなの
  • 統計: Garminハンディ機のtrip computerみたいなの

がある。

トラックログはスタート・ストップ(ストップ時に名前をつけて保存させられる - 突然落ちたらどうなるか実験してみていないが、後セーブ方式だとちょっと不安)ができるが、再スタートすると別のトラックになってしまう。とこれはGarmin単体機でもそうなのであるが(そしてRideTrackなどGPSトラッキングアプリの大半はそうであるが)、複数のトラックを同時に表示できなければ、例えば帰りに行きの経路をたどりつつログも取る、ということができない。

何でもGarmin機と比較してしまうのも野暮であるが、ちなみにGarmin機では現在メモリされているすべてのトラックを強制的に表示する仕様になっている。旅先で1週間とか母艦PCにログを移動(コピー・消去)せず同じ地域を2週間とかぐるぐるうろついていると地図上がごじゃごじゃの線だらけになるが、私はこの方がまだ便利だと思う。My Tracksでも衛星を見失って一定距離離れてまた捕捉すると (Garmin機ではGPSを見失っただけで) 別々のセグメント(トラック)に分けてしまうので、過去一本のトラックだけしか表示しないという使用では話にならない。このアプリでも、SDカードに書き出し(・My MapsとGoogle Documentsに書き出し)・地図上のトラック消去は手軽にできるのだから(後述)、いっそ全部Garmin仕様で全部のトラックを表示してしまったらいかがなものかと思う。

高度グラフは横軸が時間・移動距離両方に取れて、拡大・縮小もできる (縦軸の拡大・縮小ができない)。Garmin単体機でもあまり私はこの機能を使わないが、My Tracksで必要十分であろう。

統計は、現在の速度のほかに、総距離・総時間・移動時間、速度の最高・平均・移動中の平均、高度・高度総変化・最高高度・最低高度、最小および最大傾斜、緯度・経度が表示できる。またこれが総パス・最新セグメントについて切り替えられる。Garmin機のtrip computerみたいに自分で必要項目の表示設定をできないため、ややごちゃごちゃしている印象がある。また当然ながら、ナビゲーション機能はないため、ETAなどこれからのルートに関する情報表示はできない。

実は私としては、トラックログと高度遷移・統計ページは別々のアプリケーションにしてほしかった。もちろんこれらはログを別々に取るか、あるいはDBを共有する必要があるため、一個のアプリケーションで実現するのは現実的には妥当だろう。

特筆すべきはトラックのエクスポート系機能の充実である。選択したトラックをSDカードにセーブ(GPX・KML)できるほか、現在あるトラックを一括セーブもできる(トラック選択ウィンドウから)。My Mapsにエクスポートするときは(後の節で述べるように私はこれは整理の不便さから現実的だとは思っていない)同時にGoogle Documentsの表計算ドキュメントに統計データの概略を行として追加できる。なおこのとき気づいたが、My Mapsの経路は、既存の経路に新しいパスを追加することもできるようだ (web版My MapsでPC上にあるKMLからのエクスポートでは新しい1経路として新規作成され、既存経路にパスを追加することができない)。

あとちょっとだけRideTrackに劣ると思われるのが、トラックの記録間隔にGPS精度を反映できず、固定距離で決め打ちになっていることである。もっともこれで一番困るのは、屋内など『衛星半見え』状態に入って精度が落ちるとふらふら現在地が動き回って、めちゃくちゃなログが記録されることである(これはGarmin単体機でも起きる)ことであるが、My Tracksでは精度が落ちると自動的に記録を一時停止するのであまり問題はない。だが移動中は徒歩でも航空機でも一定間隔でログを取り続けるので、高速移動中はデータ点が多くなってムダなのではないかと思える。

Track My Life

これはどちらかというと『今いる位置を友人とシェア』みたいなツールであり、専用サーバと接続してのオンライン使用が前提。名前が『人生の全てのトラックを取る』と大仰なのであるが、私はこの思想に賛成ですね、ええ(笑)。ただしandroid稼動中に常に動かしておくと(後述解像度にもよるが)電池の持ち時間が激減するので、全人生のトラック取りたくなるかは疑問。

初回起動時(または操作すると)専用キーが生成され、そのキーでサーバにアップロードされる。もちろん動作中は経路がGoogle Maps API上に表示されるが、後でも経路をみたいときはサーバにアクセスすると、1トラック1ページでトラックが表示される。ここからはGPXファイルなどにダウンロードできるが、1トラックずつ操作しないといけないので面倒。

工夫しているなと思うのは、オフラインになったときはポイントをためておいて、後でオンラインになったときアップロードする点。

台湾でmagicを買った当初はいろいろ試して一番気に入って使っていたのだが、その後使わなくなった最大の原因は、データの解像度が原因です。時間間隔(自分で設定はできるが)でログを取るのだが、最高解像度(2分に一度だっけ)にしておいても、かなりぎざぎざな経路しか取れない。高速の新幹線・低速の徒歩旅行で取ったのなどはまあまあ満足いったが、バイク・バスや電車などの中速、かつ進行方向が割と変わる場合の経路はダメダメです。

OutWalk

これは何で使わなくなったんだけなー、えーと(笑)。とにかく今残っているログを見てみると

  • KML出力である。
  • 基本Google Mapsに吹き出し(Google Mapsのでかいウェイポイント)で一点一点表示(見づらい!!)
  • 解像度に不満が

といったところが見受けられます。

Wardrive

ちょっとこれはおまけ的。ツールの目的はアレをナニしてくれるというものなのだが(もごもご)、私はこれで統計データなどとりながら歩いていることが多いため、実は地図としてみている時間は最長かもしれない(笑)。アレをナニするツールはいくつかPCでも動かしたことがありますが、いつでも持っている性・電池のもちや振動への耐性・アプリが実用的に高速で動くこととOSの軽さ・Google Mapsとの連携など、まさにandroid (iPhoneでもいいけど)で動かすべきツールであります。

その他

まず移動経路のトラッキングというのは、一般の(GPSまにあでない)ひとにとっては、あくまでも『友人とのシェア』『日記でネタに』『なくした携帯電話をwebで探す』といった目的がある行為であって、私みたいに後でKashimirで眺めながら旅情に浸る、なんてのはあまり必要性ないみたいです。そんなわけで、マーケットで多々ある『サーバ上でいまみられる』系ツールは、Marketで説明読んだだけでスキップ、というのがたくさんある。

あとGPSの活用例でへー、と思ったのは下記のようなものですた。

  • ロケーションベースメッセージ交換システム『Echo』: 木霊のように場所にメッセージが残せる (※ ほんとはサーバ上だよ。近づくと表示される)。アートのような実用になるような、面白さがある。
  • 目的地が近づくと鳴るアラーム: 電車等での乗り過ごし防止に。
  • 留守番電話アプリ: GPS速度が一定以上だと運転中だと判断して自動応答。

などなど。

androidはGarminの夢を見るか?

これだけいろいろあって(まだ進化し続けて)自分でも不都合・不具合を改善できるとなると、単体機のGPSは要らなくなってきそうである。また現在母艦PCで行なっているデータ収集・整理は、より便利なクラウド環境のMy Mapsに移行してしまいたくなる。さてそれは実現可能なのか? (2009年11月現在)

Garmin単体機に比較して(現状)

まず現在のアプリ全般に言えるのは、どれも帯に短し襷に長し、という点である。理想的には、あるひとつのアプリは『Garmin専用機のメニューで言えば○○にあたる機能』だけで構わず、インテントを利用した(あるいはファイル・DBを介した)アプリ間のデータの連携が重要であるのに、現状ではどのアプリも欲張っていろいろな機能を付けようとする(その結果どれも使い物にならない)のが多い。

それからオフラインでも使えることに重点を置いたソフトが少ない。つまりトラックログやウェイポイントはフラッシュメモリに記録してくれればよく、アップロードして友人に現在位置を知らせる必要はない (というかそういうことがしたければそういうアプリに任せればよい)。また地図はある程度大量にフラッシュメモリにキャッシュしてくれることが必要である。そうでなければ山歩きには使えない。山歩きしないけど(笑)、どちらかというと通信料金が莫大な日本ではおちおち使えない、ということである。

以上の観点で、Garmin単体機を置き換える組み合わせを探ってみる。

  • コンパス表示: これは文句なくGPS statusでしょう。他のアプリケーションとの連携もまあまあ。最近になって(他のアプリ、例えば『Location Log』から渡される)『目的地』方角へのポインタ表示もできるようになった。
    →できれば(航空機マニアの私には)トラッキング表示もしてほしいところだが、これは『出発点』『目的地』(直線ナビの場合)、あるいは『ナビゲーション経路』(経路ナビの場合) をGPS statusに渡す方法がないと無理でしょう。
  • データ表示 (trip computer): Garmin単体機の、好きなデータだけ好きな配置で、という専用ツールは該当なし。
    →最善はMy Tracks。データ表示ウィンドウで似た見た目の(そして最も多機能の)データ表示はできる。ほかにもGPS status、その他各種ツールのデータ表示である程度なら代用できる。
    →odometerや平均時速など『過去の経路』はMy Tracksのデータ表示ウィンドウで表示されるもので文句なし。これはログに基づいて計算しなければならないわけで、独立アプリとして用意するとなると、ログを別ツールで取っているなら二重記録になるし (つ 電池のもち)、そうでなければログ取りツールとDBの共有化を図らないといけない。
    →目的地までの道なり距離とかETAなどの『未来の経路』のデータについては、強いていうとGoogle Mapsの経路探索表示。別ツールにするならば、経路設定・探索ツールで保存したルートを読み取って計算する必要がある。
  • 地図表示: オフラインでの可用性からいってRMAPSがダントツ(ちなみにGoogle Maps以外の地図・衛星サービスも選べる)。実は自分で事前に切り出したマップはかなりの大きさがフラッシュメモリに持てるらしいが、キャッシュが小さいので特別な操作をしなくても自動で残せる地図の大きさ(キャッシュの大きさ)がもっと大きいと良いと思う。あるいは事前に緯度・経度などで地図を切り出しておく操作が簡単にできるとかね(地図著作権の兼ね合いで難しいか?)。
    → 目的地・経路の検索はダントツでGoogle Maps。RMAPS内でも検索とかできるのだが、Google Mapsの検索に比べて微妙におかしい。また他アプリで作った(検索した)ルートやトラック、打ったウェイポイントを表示させる機能もない。したがってGoogle Mapsにマップキャッシュの機能が付いてもよいと思う。
  • ルート作成・表示: 該当なし。
    → これは(1) Google Mapsで検索したルートは、検索結果をトラックのようにKML保存できればよい (2) 任意のルートは、母艦でGoogle Earthで(しかし地図がみられないので不便だが) 作成したKMLをMy Maps登録する、という手段で、現状でも3.2以降のGoogle Mapsでできることはできる (→My Mapsの整理ツールとしての問題点は次節参照)
  • ウェイポイント作成・表示: これは決め手なし。さまざまなツールでウェイポイントを作るだけなら作れるんですが、他のツールとの可換性が乏しかったり。すぐみたりできなくてよいのなら、母艦でコンバートしてMy Mapsに登録する(→上記ルートと同じ問題点あり)、Maps 3.2以降で利用、という手はあります。
    →次点としてはGoogle純正のMy Maps Edoitor。上に書いたように、現在地を登録する方法がみつからない、オフラインで使えるか分からない、後々の整理・可換性を考えると登録が億劫になってしまう、などの問題あり。また登録自体もいろいろやらなければならないことがあって、Garmin単体機ほどお手軽ではない。
  • トラックログ・表示: いまのところRideTrackがダントツ。オフラインでの可用性とポイントの残し方(GPS精度から出たら点を打てるのはこれだけ)、ログの可用性という点から。ちなみにログは一次的にはDBに残しちゃうんですが(このおかげで落ちたとき・shutdownしたとき安心ともいえる)、exportする操作が面倒というのがあります。またMy Mapsに読ませるには母艦が必要(?)。トラックが一度に一個しかロード・表示できないというのもやや難。それから最大の難点は、GPSがみえないときに落ちるバグ。exportがその場でできてMy Mapsで利用できるなら(My Maps側の整理機能向上も必要だが)、地図表示なし(記録だけ)でよいから安定してくれないかな。
    My Tracksが次点。データの解像度も徒歩で文句なし(ただしムダがあるかも)。エクスポートの容易さ・多様性はこちらのほうが上です。
  • 高度表示: 該当なしMy Tracksの高度表示ウィンドウ。縦軸の拡大ができないだけでGarmin機に比べほぼ遜色ない。気圧高度計はandroidに現状ないんですが、GPS高度(精度が悪い)であるがために与圧された旅客機内でも正確な高度が記録できる利点はある。

これらのツールの分離・独立性と連携性があれば、androidはGPS専用機としても十分使いやすい。文字入力などは(これもandroidの利点だが) 好きなIMで楽にできるし、『メインキー長押しでウェイポイント登録』という手軽さも、Homeキー→ウェイポイント登録専用アプリのショートカット起動、という手順でそれほど遜色なくできる。

Garmin単体機を超えるには

以上自分でいろいろ書いてみて考察すると、Garmin機の機能をandroid上で実現するのに必要なのは

  • track (過去の経路)型ファイルまたはDBの共有
    ログツールで生成
    地図(ナビゲーション)ツール、trip computerツール、高度表示ツール、(DBの場合)GPXエクスポータなどで利用
  • route (未来の経路)型ファイルの共有
    経路探索ツール・エディタで生成 (GPXフォーマットであればコンバートの必要なし)
    地図(ナビゲーション)ツール、trip computerツール、コンパス(ナビゲーション型)ツールなどで利用
  • ウェイポイント型ファイルの共有
    経路探索・マップツール、編集ツール、インスタントログ打ちツールなどで生成 (GPXフォーマットであればコンバートの必要なし)
    地図(ナビゲーション)ツール、コンパス(コンパス型)ツール、trip computerツールなどで利用

といったデータ利用の標準化だと思われる。

とかいってたらGarminがandroid搭載機作りそうだ (※ちなみにGarminは最近、台湾でHTCと組んで台湾版ガラケー(? WindowsMobileとかだったかも)を作ってます。カーナビ兼携帯電話、というのが落としどころみたいだけど)。

クラウド地図の可能性

現在Garmin単体機のデータ整理は、PC上でフリーソフトのKashimirを使っている。他の機種もKashimir上にすべて統合してきたし、androidで取ったデータも然りである。

Google MapsにMy Maps機能がついたことで、これが置き換えられる(しかもクラウド化できる)のではないか、と夢見たが、結論から言えば(2009年11月現在)、まだまだ置き換えるには程遠い。

母艦やクラウド地図との連携(整理・再利用)

android記録データのKashimirでの整理

まず現在のandroidで取ったデータをKashimirで利用するにはどうしたらよいか、ということである。

私は基本的に、ウェイポイントとトラックログしか残していない。ルートデータも(ルーティングナビはするので)取っておけば便利であるが、基本的に街ナビでは電車乗り換えポイントくらいしかないし、Garmin単体機ではいちいち作っても面倒ではない。

まずウェイポイントであるが、これは(Garminの最近の機種でもいえる)地図側のGISデータと検索機能が充実していれば、自分でそれほど作ったりする必要はないものである。昔はGarminの日本語マップではレストランの検索など夢であったから、自分でちまちま登録していた。今ではGarmin機であっても有名ポイントはすでにマップにあるため(電話番号から検索できたりする)、『お気に入り』『訪れた記録』という意味で複製・登録することが大半である(小さいラーメン屋などは自分で登録する必要がある)

android/Google Mapsでは、PC母艦であらかじめ(あるいは事後に)検索して、緯度・経度をKashimirに移しウェイポイントを作る程度で済む。実は(上記にあるように決め手になるツールがないからでもあるが)androidで出先で登録したポイントをKashimirに移行、というのはやってみていないが、KMLで記録されていたらSD経由で(後述)Kashimirに移すことも考えられる。

トラックは数百~数万点の緯度・経度(・高度・時刻)のあつまりなので、これは手で移すわけには行かない。Track My Lifeでは(主にポイントのまばらさの問題で使わなくなったが)オンラインのページからひとつひとつ(これが面倒だ)、GPXで吐き出してKashimirで読むことができる、というのは確認した。RideTrackでは、DBからSDカードにGPXで吐き出し、Kashimirで読ませた。これも(1) トラックをLoad (2) SDカードにセーブというのがトラックひとつにつき一回必要であるし、母艦側では (3) GPXデータをKashimirでひとつひとつ読ませなければならないのでやはり面倒だ。

KashimirデータのMy Maps (android Google Maps 3.2)での利用

現実的にウェイポイント・トラックデータをandroid上で利用するために一番便利なツールは、Google Maps 3.2のレイヤ機能でMy Mapsレイヤを表示させることである (ここ2週間ほど1.5ベースのROMで使っているので、3.2が恋しいなあ)。

ただしこれが不便なのは、次に述べるようにMy Mapsは整理に適していないということである。ある一日の行程として過去のトラック・ウェイポイントを利用する、という程度であれば、事前にその日表示させるトラック・ウェイポイントを適当な名前でMy Mapsに仕込んでおいて利用する(終わったら消す)ことが考えられる。

まずPC版のGoogle MapsのMy Maps機能は、KMLデータを一括して読むことができる。KashimirはGPXでデータをやり取りできるので、GPSBabelでコンバートする。オープンソースでコマンドラインで利用できるためバッチ処理にも向いているしUNIXでも利用できるが、Windowsでは一応GUIの皮をかぶったツールも利用できる。

いろいろ試した結果、漢字(ウェイポイント名)を含むKashimirデータを利用するには

  1. Kashimir (8.8.2) では必要なトラック・ウェイポイントをGPXフォーマット(dd.ddddd形式)で吐く
  2. GPSBabel (GPSBabel 1.3.7-beta20090906) ではGPX XML (UTF-8)で読みKML(UTF-8)で吐く
    → 文字によってはエラーになる(カタカナの『イ』とか?)ようです
    → このバージョン、KML出力を選ぶと拡張子が『.kml)』になる(笑)
  3. KMLファイルをMy Mapsで読み込む

という手順でできる模様。

My Mapsの整理機能のなさ

上で書いたように、My Mapsはクラウド環境地図(マーク・トラックの)ツールであるにも関わらず、私はデータの集積点はKashimirにしている。

その理由は、(1) ディレクトリを作って整理できない (2) 編集ができない (3) 追加ができない (4) 書き出しができない ということである。

(1)は致命的で、トラック・ウェイポイントそれぞれについて、多層からなるディレクトリ構造を作って整理し、さらに非表示にしたいものは階層的に非表示にできる、という機能がないと整理には使えない。もしMy Mapsに、Kashimirのように『○年○月○日のトラック』『○地域のウェイポイント』をすぐ表示できるようにしておいたら、(それはルートディレクトリに平たくおいてある状態になるので) My Mapsのインデックスが膨大なものになってしまう。androidで目的となる数年前のトラックをスクロールさせて探すだけでも死ぬであろう事は容易に予想できる。

(2)は、少なくともウェイポイントのディレクトリからディレクトリへの移動・コピー、トラックの接続・分割・コピーは必要である。できればKashimirのようにトラックを構成する一点一点を表示させて削除とかできると、GPSの化けデータを削除するのに役立つ。

(3)は現状のMy Maps (web版) でできないだけで、おそらく改善される点であろう(だいたいMy MapsにKMLファイルからの読み込み機能が付いたのも結構最近である)。現状のMy Mapsでは、既存のMy Mapにウェイポイントを追加したり、トラックの続きを流し込んだりできない。結果、一回データを移すたびにMy Mapのトラック・ウェイポイント分類が一個増えてしまう。

  • (追記) 上記My Tracksの使用レポートであるように、My Tracksからは少なくともトラックにセグメントを追加はできる。追加ができないのはweb版のMy MapsでKMLファイルからのインポートは新規作成時にしかないというのが正確だ。サーバに機能はあるのにweb版が利用していないだけかもしれない。

(4)は100%満足のいくクラウドツールにならない限り、オフライン時参照できるように、またバックアップとして、手元にコピーを作っておきたい(またそれを読み込ませることができる - データ重複をいとわなければ)、という必要性がある。別項でも書いたがほかに、Googleサーバ上のデータが飛んでしまったら (まさかGoogleがなくなったら、とは言えないが)、といった危機に対処する意味合いもある。例えばGmailアドレスブック(androidの電話帳)は、web版のGmailでもCSVファイルに吐けるし、android上にもエクスポートツールは多数ある。だからこれを他ツールで利用(年賀状の宛名に再利用とか)したり、万一の際には再度Gmailアカウントに読み込ませたりできる。My MapsのKMLデータは読み込む一方の一方通行なので、データの墓場になってしまうということだ。

ただし上記すべて、手元で動くアプリケーションである (webアプリではない) Google Earthを整理に使えば現状でもまあ改善できるだろうとは思える。だがその場合クラウド性はKashimirと同じく失われるし、表示もなんかGoogle Earthのアイコンは見づらいし、やはりKashimirがいいかな、と思えるのである。