MAD MAPS Version0.3公開

ふぅ、何とか新バージョンの開発に成功した。今回の更新は予告どおりブックマーク機能と時間同期機能だ。・・・これがなかなか予想外に大変だったのだが(^^;)。

今回のブックマーク機能では、本体画面から独立したダイアログ画面で登録とか選択操作をすることになる。この画面作り自体もそこそこ大変だったのだが、ここで大きな問題が出てしまったのだ。いわゆる「文字化け」である。まぁりなざうのJavaVMの問題なんだろうが、普通に画面部品を作って配置すると、Windows上では問題ないのにりなざう上では日本語文字が思いっきり化けまくって話にならなかったのだ。

なぜ文字化けが起こるのかを一生懸命に調べた結果、ようやく分かったのが、どうやら文字フォントのサイズによって文字化けしたりしなかったりするらしいということ。もちろん英数字だけなら化けないのだが、日本語文字を表示するには18ポイント以上のサイズでないと駄目ってことらしいのだ。・・・なんだそりゃ(^^;)。ちなみに、ひらがなだけなら12ポイントでも表示できたりするんだが、ますますワケのわからん話である。

んで、文字化け問題は画面表示だけでなく、ファイル入出力でも発生した。どーゆーわけか普通にFileReader/FileWriterクラスでファイルを読み書きすると、日本語文字が全部化けてしまった。これもまたあぁでもないこぉでもないを繰り返した末に、無理やりUTF-8で読み書きする派生クラスをでっちあげて対処したのだが・・・・これってJavaVMのバグだと思うんだが(^^;)。

つーわけで、まぁ結局なんとかなったわけなんだが、つくづく思うのはこのりなざうJavaの作りが甘すぎるんじゃないかとゆーこと。バグも多いし安定性もアレだし画像読込みも遅いし(^^;)。だいたい、りなざうのスペックならこんな中途半端なJavaVMじゃなく、ちゃんとしたJava2のVMを動かせると思うんだが。まぁSunもあまりやる気がないんだろーけどなぁ。

MAD MAPS雑記

MAD MAPSにさくっと時間同期機能を搭載完了。ま、簡単な機能だしな。

つか、りなざう使いな人はみんな痛感してると思うが、りなざうはどういうわけかやたらと時計がずれる。まともな内蔵時計があれば普通ずれたりしないと思うんだが、気がつくと時間どころか日付からして思い切り狂ってたりする。なんでこんなにおかしな時計機能なのか、シャープのりなざう開発担当者をじっくり問い詰めたいくらいである。

つーわけで、MAD MAPSに搭載した同期機能は、いちいち画面操作で時間合わせの操作をしたりするのではなく、有効な測位があった時点でその時刻を勝手に設定するようにしてある。どうせ本体の時刻は信頼できないんだから、常に合わせっぱなしにしたところで問題あるまいという、内蔵時計を小バカにしまくった仕様なのだ(^^;)。

あと現在ブックマーク機能を実装中。まぁ地図ソフトとして最低限これくらいは必要だし、さっさとつけないとなぁ。ただ、MAD MAPSは縦画面専用ソフトなんで、操作中にキーボードが使えないという問題がある。ブックマークで位置を記録しても、それにキーボードで名前を入力できないのだ。横画面にも対応すれば済む話ではあるが、けっこう面倒だしなぁ・・・。


そいや、AirH"カードでATコマンド使うと、最寄のアンテナの位置情報を得られるなんて話もあったな。機構的には似たようなもんだし、MAD MAPSに組み込んでボタン一発で現在位置周辺を表示、なんて機能も面白いかも知れないなぁ。

・・・と言っても、私はAirH"なんて持ってないから作りようがないんだが(^^;)。それにまぁ、AirH"なら通信できるんだから、別にMAD MAPSなんぞ使わなくてもGoogleMapsとかを使えば済む話だしな。

MAD MAPS雑記

この週末は久しぶりにいい天気だったので、また例によって走ってみた。今度は東京湾横断道を抜けて千葉行きだ。海底トンネルを抜けて海ほたるに寄り、そのまま千葉に渡って目的地は道の駅「あずの里いちはら」。いや目的地自体に大した意味はないのだが。帰りは東京湾をぐるっと回って東京のどまんなかを突っ切るコースだ。手袋つけずに走ってて、帰ってみたら手の甲だけ思い切り日焼けしててびっくりした(^^;)。日差しはもう夏なんだねぇ・・・。

総走行距離で200km近い遠征で、走行時間も6時間くらいになるのだが、MAD MAPSは快調に動いている。途中3回ほど道を間違えてしまったが、まぁ致命的なことはなかったし。チェックポイント機能が実装できれば事前に道を間違えそうなところを設定しておくことで、こんな道の間違いも回避できるようになるだろう。

あと今回、ゼンリン地図で作ったルートデータを最適化しないで使ってみたのだが、別に問題なく走ることができた。ただ、最適化しない状態ではルートのポイント数が5倍以上あるため、残り距離の計算がかなり重くなり、レスポンスは悪くなってしまう。まぁナビとしての実用性に問題が出るほどではないが・・・。やっぱこの計算処理はもっと高速化しとくべきだなぁ。


さて、日帰り旅行としてはもう限界距離だし、そろそろ土日を使った一泊旅行なんかもしてみたい所なんだが、今週末は天気悪いみたいだなぁ。来週末となるともうそろそろ梅雨の季節だし、やっぱ夏までおあずけかな・・・。

MAD MAPSバージョンアップ

つーわけで、カスタムマップ機能追加〜〜。設定は結構大変だけど、使いたい人はまぁ頑張ってください。・・・つかまぁ、カスタムマップ作るならMAD MAPSよりqpeGPS使う方がよっぽどいいんじゃないかとは思うんだけどね。まぁこの機能はどちらかとゆーとシャープからクレームがこないようにするための対策機能と言った方がいいだろう(^^;)。

あとついでに、定義ファイルのモード設定で、地図画像の先読みをOFFにする機能もつけた。元々MAD MAPSはメモリのかなりぎりぎりまで先読みバッファに使うようになっているのだが、これは私の使い方として、MAD MAPS以外のソフトは何も動かさない前提でこうなってるのだ。しかし世の中にはそーでもない方もいるようで(^^;)。

先読みをOFFにすれば、VGA画面モードでもメモリ面はかなり余裕が出来る。そのかわり基本的に画面に表示されているぶんしか画像を保持しないため、GPS測位してるときでもスクロールしたときに画面の端の方がすぐには表示されなくなる。まぁこれでもナビするぶんにはほとんど実害はないとは思うけどね。


さて、とりあえず今後追加する予定の機能を列挙しておこう。まぁそもそも実現できるかどうかも怪しいし、出来るとしても気が向いた時にしかつけないから、いつになるかは知らんけど。

・ブックマーク機能
座標情報を任意の名前で記録し、後からリスト選択することでそこにすぐに移動するようにする

・ショートカット機能
画面の長押し、画面ゼスチャ、OK/CANCELボタン等のアクションに対し、MAD MAPSの各機能の呼出を任意に登録できるようにする

・チェックポイント機能
ルートデータ上に複数のチェックポイントを指定できるようにして、次のチェックポイントまでの距離も表示するようにする。

・簡易音声ガイド機能
チェックポイントの設定で、ポイントまでの残り距離が指定値以下になったときに、特定のサウンドファイルを演奏するようにする。チェックポイント自体も種類を指定できるようにして、右折用と左折用など、色々なパターンを用意できるようにする。

・時間同期機能
有効な測位が行われているときに、そのときの時刻を勝手にりなざう本体の時刻に設定する。

・Web地図表示機能
インターネット上の地図サイトのデータを直接表示できるようにする。地図画像取得のためのURLは自由にカスタマイズ出来るようにして、座標から直接画像ファイルが得られるサイトなら、大抵対応できるようにする。

・Web地図保存機能
Web地図表示機能で表示される画像を、カスタムマップ扱いで自動保存する。範囲指定しての一括ダウンロードも可能にする。

・・・・ま、いまんとこ考えてるのはこんな感じ。Web地図関連はへたに作ると後が怖いから、たとえ作れても公開しないかも知れんけど(^^;;)。

MAD MAPS雑記

そーいや書いてなかったけど、MAD MAPSでモバイルマップNAVIのデータを使う場合にちょっとおいしい話がある。

モバイルマップNAVIの地図データは、一枚が500x500ピクセルPNG形式画像ファイルになっている。一枚あたりのサイズが小さいために、全体としては物凄く膨大なファイルが存在することになる。まぁそれはある程度仕方ない話なのだが、問題はこの一枚一枚の地図ファイルごとに、そのファイルの内容を示すテキストファイルが付属していること。書かれている内容は緯度経度とかの情報なのだが、このせいぜい300バイトほどのサイズのファイルが、画像ファイルと同数存在しているのだ。

そして小さいファイルが大量にあるという状況は、いわゆるクラスタギャップ問題を発生させる。1ファイルあたりのクラスタサイズはFAT32でも4kbになるから(容量8GBまでの場合)、このファイルが1万個もあった日にはそれだけでざっと40MBの容量を消費することになる。しかも、市販のSDカードなんかは1GBタイプでも最初はFAT16でフォーマットされてる場合があるから、そのまま使うとクラスタサイズは16kbであり、1万個で160MBも消費してしまうのだ。・・・あまり悪口は言いたくないが、モバイルマップNaviのこの仕様は、とてもほめられたものではないと思うなぁ。

しかし実は、MAD MAPSから使うぶんには、このテキストファイルは不要だったりする。モバイルマップNaviの地図データは緯度経度毎に一定の法則で分類されているので、ファイルを参照しなくても必要な座標情報は計算で求められる。本家モバイルマップNaviの方ではどうやらこのテキストファイルの情報をスクロール領域の制限とかに使ってるらしく、削除してしまうと動作がおかしくなるのだが、MAD MAPSで使うだけなら削除してしまって全く問題ないのだ。

例によって素人にお勧めできる話ではないが、結構容量の節約になるし、モバイルマップNaviがなくてもMAD MAPSが使えればいいという奇徳な方はお試しあれ。

MAD MAPS拡張計画

やはりMAD MAPSの地図データとしてモバイルマップNaviしか使えないってのは色々と悲しいので、さっさとカスタムマップの表示機能を実装中である。まぁモバイルマップNaviの地図専用でなくなれば、シャープからクレームをつけられるいわれはなくなるしな。さすがに複数枚の地図をきっちりシームレス表示するのは大変だが、1枚絵の表示なら別に大したことはないし。

んで、考えてみれば地図画像を1枚と言わず2枚くらいなら大して問題なく表示できる。となると、複数の地図画像を登録しといて、現在位置から最も近い2枚だけを自動選択して表示するようにすれば、とりあえずシームレスっぽい表示になるだろう。1枚目の地図の端の方に来るころには、そこから次に近い地図も表示されているわけで、結果として連続表示されることになる。ま、これなら実装も簡単だし、さっさと作っちまうかね。


しかし実は、もっと恐ろしいことを考えていたりする。MAD MAPS自体に簡易Webブラウザ機能を組み込んで、インターネットの地図サイトのデータを直接表示できないかと考えているのだ。

もちろんまともなHTMLレンダラを実装するとなると大変だが、地図画像を直接URL指定してデータを受け取るなら大して問題ない。元々Javaってのはそういう通信とかストリーム処理に強い言語だからね。んで、mapionとかYahoo mapとかのサイトはURLに緯度経度を指定して直接画像を得られるので、そのデータを直接MAD MAPSで表示しようってわけなのだ。これならネットワークさえ繋がっていればモバイルマップNaviの地図データが無くてもナビできる。

もっともこれだけだと、Windows上ではともかくりなざう上で動かすには難がある。なんといっても通信環境がないと意味がないわけで、AirH''とかでモバイル通信するにしてもGPSユニットと併用できないとどーしよーもない。しかし、あらかじめ指定ルートの周辺地図をファイル保存しといてオフラインで利用するなんていう空恐ろしいマネもそう難しくない話なのだ。別に全国の地図を全部落とさなくても、走行予定ルートとその周辺1〜2km程度の範囲だけを自動で溜め込んで、要らなくなったら削除してしまえばいい。また必要になったらダウンすればいいだけだし。もちろんダウンはWindowsで夜中とかにやっておけばいい。実現したらかなり極楽な機能になるだろう。

本当はこれをGoogleMapsで出来たら、日本だけでなく世界中を相手にナビできて最高なんだけど、さすがにこれは難しいね。GoogleMapsの地図は単なる画像でなくAjaxベースのWebアプリケーションだから、そうそう簡単にはブラウザを実装できないし。まぁこればかりは諦めるしかないな。

しかし・・・実装はさほど困難でないとはいえ、これは下手に作るとあまりに危険すぎる気がする(^^;)。モバイルマップNaviどころか日本中の地図ソフト相手にケンカ売るよーな話だしなぁ・・・・。