MAD MAPS雑記

地図データの取得に向けてゼンリン地図をいじりまわしているうちに、別のところでまずいことに気がついた。最新のZ9では、ルートデータをMAD MAPSに持っていくのが無理っぽいようだ。

Z7で描画データを保存するフォーマットのZPO形式は、中身はほとんどテキストだったので問題なかったのだが、Z9のフォーマットであるZCT形式は、中身がバイナリになってしまったのだ。バイナリデータをさっと眺めてもあまり単純な形式ではなさそうで、これでは手の出しようがない。んで、Z9には描画データをCSV形式でエクスポートする機能があるので試してみたのだが、このデータには肝心の描画データの座標情報が含まれていない!。どうやら地図上に登録したアイコンのコメントとかの情報を出すだけのようで、これでは全く使い物にならない。というわけで、折角便利だったルート探索データの出力は、Z9では出来なくなってしまった。ああ、残念・・・。

それはそーと、MAD MAPSのソースをいじってるうちにちと間抜けなミスに気がついた。GPSでの自動時刻あわせをやってると、動作がおかしくなる可能性があるのだ(^^;)。MAD MAPSでは、GPSデータの更新とか画面操作とか、あちこちで内部時間を計測してタイミング調整をやっているのだが、GPS時刻同期でシステム時刻が操作されると、この内部時間計測が狂ってしまい、タイミング調整がおかしくなる。いかん、これはさっさと直しとく必要があるなぁ・・・・。

久しぶりに近況

半年振りに日記更新なわけなんだが。年をとると月日が経つのが早くなっていかんのぅ(^^;。つか、本業のほうで去年の夏から入り込んだプロジェクトがいろいろと無茶なことになったせいで、あまりヒマがなかったってわけなんだけど・・・。

そんなわけなんで、ツール開発もあんまし進んでません。まぁMAD MAPSはちょこちょこいじってるんだけど、公開するほどのもんじゃないしなぁ。MPG2AVIの方はもう完全に放置。ここ1年近くソースに手を入れたことすらないし(^^;)。まぁ自分で使うのに必要な機能はだいたい揃ったから、これ以上いじる気にならないわけなんだけど。

しかしMAD MAPSも、本家たるモバイルマップNAVIが販売終了することになったわけで、今後どうするかが困り物である。地図を手に入れる標準の方法がなくなるわけだから、これまではオマケ扱いだったカスタムマップ機能をもっとちゃんとしたものにせんといかんよな。まぁ、本家が他界したってことは、もうシャープからクレームが来る可能性が無くなったってことでもあるわけだし(^^;)。

てなわけで、今わりとマジに作ろうとしてるのが、「ゼンリン電子地図のデータを自動的にカスタムマップ化するツール」である。と言っても別に難しいことをするわけじゃなくて、ゼンリン電子地図ソフトを起動しといて、その座標を自動で変更しつつ画面に表示された地図をファイル化していくってだけなんだけど。このときに出力する画像ファイルをモバイルマップNAVIのデータと同じような形で出すようにすれば、かなり便利なものになるだろう。

もちろん同じようなことをYahooMapとかGoogleMapでやれば無料で地図が手に入るわけだけど、さすがにそれをやると訴えられそうだから作る気は無い。でもゼンリン地図ならちゃんと買うわけだから、個人で使う分にはこんなことをしても訴えられる心配はあるまい。つーわけで、現在着々と開発中なわけなのだ。

つか、実はこんなことをやってるのは、最新のゼンリンZ9を買ったからなんだけど。私はだいぶ前からゼンリンの地図を定期的に買うことにしてるんだが、さすがにバージョンアップ毎に買い換えるのは大変なので、1バージョン置きにしてる。Z3→Z5→Z7と買い換えてきて、今度はZ9ってわけなんだが、せっかく買ったんだからMAD MAPSでも使ってみたいなってのが主な動機だ(^^;)。

MAD MAPS Ver0.5公開

つーわけで新バージョン公開。前バージョンからちょうど2ヶ月ぶりだな・・・。今回の更新はかなり重要だし、実際に使ってる人にはそれなりに価値あるんじゃないだろうか。

実際、チェックポイント機能はかなり使えると思う。自分でもすでに何度か試しているが、曲がり角までの距離が表示されるってのはやはり非常に便利だ。道を間違う可能性が格段に下がるし。後は今後の拡張で、チェックポイントの種類をいくつか選択できるようにすればベストだな。「右折/左折チェックポイント」とかを指定した上で、ある程度の指示表示とか出来るようにするわけだ。その上で、距離に応じたガイド音声も再生できるようになれば完璧だろう。

画像の分割ダウンロードも重要だわな。恩恵を受けるのはモバイルマップNaviの地図データだけで、カスタムマップ使用者の場合は関係ないんだけど。本当は、りなざう用のJavaがまともな画像ロード機能を持っていれば、こんな事する必要もなかったんだが・・・。

しかし、画像ロードを自前で行うようにしたおかげで、今までにない機能展開も見えてきたのは怪我の功名だな。先にも書いた画面の90度回転機能はつけるだろうし、ダウンロードされてない地図領域を上位スケール地図の拡大図で補完する処理なんてのも面白いし。

MAD MAPS雑記

画像の分割ロード処理であるが、予想外に簡単に実装できてしまった(^^;)。適当に入手したPNG展開ソースをMAD MAPS用に改造し、分割処理するようにしたのだが、なかなかいい感じで動いている。

本来は500×500サイズの地図画像を250×250単位でImage化するわけなのだが、予想通り1ピースあたりの処理は1〜2秒程度になった。とりあえず画面の中心付近が素早く表示されるようになるので、今までより相当快適だろう。さらにQVGA画面モードの時は、1ピースをさらに分割して125×125単位にしてるので、より効率的になっている。

ついでに、レスポンスが向上した事で、もう先読み処理する必要がなくなったから機能削除することにした。これでメモリ不足の心配もなくなるだろう。

あと今後の機能拡張として、画像ロードが自前処理になったことから、画面の回転機能も作れそうになってきた。任意角度の回転は難しいが、90度単位での回転なら問題なく実装できるし、たとえ90度単位でもあるとないとでは大違いだろう。ううむ、全体的にかなり実用性が増してきたよーな(^^)。

MAD MAPS雑記

ひさしぶりに近況〜〜〜。
画像ロードの高速化がどうあがいても無理とわかって、しばらくやる気を無くしてたのだが、長い梅雨もようやく明けたことだしってんで、またぼちぼちと改修を進めてる。とりあえずかねてから予定していたチェックポイント機能はだいたいOKになった。チェックポイントへの到達判定が少々甘いので不安は残るが、まぁ実用にはなるだろう。

ちなみにチェックポイント機能に伴って、次のチェックポイントの方向ガイド(直線ライン)と直線距離も表示するようにした。ルートポイントの最終点は自動的にチェックポイントになるから、目的地の1点だけをルートポイントに設定すれば、モバイルマップNaviの目的地機能と同等の動作をすることになったりする。まぁ人によってはこっちの方がいいこともあるだろう。

あと、地図スケールに日本全図レベルをつけた。モバイルマップNaviの地図は、Ver2.0より前は4段階だったが、Ver2.0からより広域な日本全図データが加わっていた。しかしMAD MAPSの地図管理処理はVer2.0が出る前に作ってたので、まだ対応してなかったのだ。まぁ簡単に対応できたんだけど(^^;)。ただ、この日本全図データは他のスケールと違って、地図ファイルが1000x1000ピクセルPNGデータになってる。ザウルスJavaの画像展開速度は、ほぼ画像ファイルのピクセル数に比例するので、当然他スケールの4倍くらい、ざっと30秒ほどの時間がかかってしまうのだ。正直これはかなりつらい(^^;)。まぁオマケということで、あまり実用性はないだろうなぁ。

なお、地図ロード速度に対して、完全に諦めたわけではない。速度自体はどうしようもないが、使い勝手をもっと上げる余地はあると思うのだ。

地図ロードは、ほとんどが画像データをJavaで表示できるImageオブジェクトに変換するところで時間を食っている。で、この速度はほぼ画像のピクセル数に比例している。なら、地図画像を縦横幾つかに分解して別々にImageオブジェクトにするようにすれば、一つ一つのピース自体は短い時間で表示出来るようになるはずなのだ。モバイルマップの地図データを、縦横それぞれ2分割してImageオブジェクト化するようにすれば、1ピースあたりは1秒強くらいで処理できるはずだ。画面中央に近いところを優先して処理するようにすれば、全体としての速度は変わらなくても使い勝手はだいぶ良くなるだろう。

ただ、この機能を実現するためには、PNGの展開処理を自前で用意しなければならない。標準ライブラリの展開処理では画像の一部分だけをImage化なんて真似はできないから、自前でメモリ上に展開した上で分割してImage化する処理を書かないといけないのだ。・・・・うーん、どっかに使いまわしやすいソース転がってないかなぁ(^^;)。

MAD MAPS雑記

言うまでもないことだが、MAD MAPSの最大の弱点は画像ロードの遅さである。モバイルマップNaviの地図データは1ピースあたり500x500ピクセルPNG画像データであるが、1枚のロードに5〜6秒くらいの時間がかかってしまっている。このPNG読込処理はJavaのライブラリ機能をそのまま利用しているのだが、このライブラリ機能の処理自体が重いために、基本的にはどーしよーもない問題である。それでも何とかしたいと色々試してたのだが、どうやら完全にどーにもならないらしいことが判明してしまった。根本的に、Java内での画像イメージの生成自体が無茶苦茶遅いらしいのだ。

てっきり、ライブラリ機能でのPNGの展開処理が遅いんだろうと思っていたのだが、単にメモリ上にバイナリデータを用意し、そこからImageクラスのオブジェクトを作るだけの処理で、信じられないほどの無茶苦茶な時間がかかっている。

int[] bitmap_buf=new int[500*500];
for(int i=0;i<500*500;i++) bitmap_buf[i]=0xff000000 + i;
Image img = createImage( new MemoryImageSource(500, 500, bitmap_buf, 0, 500) );

上例のように、単に配列上に生成したデータを元にImageオブジェクトを生成するだけの処理で、りなざう上では5秒くらいの時間がかかっているのだ。普通ならこんなの一瞬で終わるはずの処理で、実際に手元のWindows環境では、ほとんど時間を測定できないくらいの短時間で終了してしまう。こんな事でこんなに時間がかかるなんて、一体何の冗談かと呆れてしまうほどである。

つーわけで、そもそもImageオブジェクトの生成自体が遅すぎるから、どう足掻いても高速化は望めそうにない。PNGの展開が重いのであれば、最悪一部の処理をC言語化してでも対処しようかと思っていたのだが、これではいくらなんでも手の出しようがないなぁ。


つか、先の文字化け問題といい、このImage処理速度といい、やっぱこのりなざうJavaの実装があまりにアレすぎるよなぁ。まぁタダで提供されてるものにあまり文句も言えないんだが、PDAでのJavaアプリ開発ってのはもっと可能性があると思うだけに、これはあまりに勿体ない。

Java開発のアプリケーションは、実装にちょっと気をつければJavaの稼動する各種環境で動かすことが出来る。このMAD MAPSも普通にWindows環境で動かせるし、LinuxとかMacとかでも普通に動くはずだ。WinCE系ではどーもフリーのJava環境はないみたいだが、存在しないわけではないみたいだし。環境の垣根にとらわれずに動かすことが出来るってのはJavaの本領だし、使い慣れたソフトがPC上でもPDA上でも動くってことになれば嬉しい人は多いだろう。

それにPDA環境ってのは開発の垣根が高いから、フリーソフト作者も結構二の足を踏んでる事が多いと思うんだが。PDAそのものが最近はすっかり下火だが、その一因として開発の垣根のせいでソフト開発がいまいち発展しないってのもあるんじゃないかと思う。Javaなら開発環境はタダで手に入るし、PC上で開発できるから垣根もずっと低くなる。実行環境さえもっとしっかりとしたのが提供されれば、もっと盛り上がっていくんじゃないかと思うんだが・・・。

しかし残念ながら、SunにはPDAに対するやる気が全くないみたいなんだよな。まぁあまりSunの金儲けには繋がらないだろうし、仕方ないといえばそうなんだが・・・。

MAD MAPS Ver0.4公開

てなわけで新バージョン公開だ。今度はポカミスありませんように(^^;)。まぁ世の中はすっかり梅雨モードだし、いま更新したところで大して需要なかろーけど。

今回の更新の目玉?であるショートカット機能は、実はVer0.1の時から実装はだいたい出来てたりする。ただ、ごくたまに勝手にショートカット機能が動いてしまうことがあったため、公開版から外していたのだ。とりあえず原因と思われる部分は直したからもう大丈夫だろうとは思うが、もしまだ勝手に動くようなら・・・・諦めてくださいな(^^;)。

ブックマークの編集機能は、元々Ver0.3でつけるつもりだったのだが、面倒なので後回しにしてた機能。さすがにこれくらいはないとねぇ・・・。

あとルート表示機能の切替がついたが、これは次に控えているチェックポイント機能の伏線である。チェックポイント機能は、事前にルートを設定しておいてから設定済みのルートポイントからチェックポイントを選ぶというやりかたになるので、今までのルート表示のようにルートポイントが見えない状態では操作に困るのだ。ちなみにゼンリン地図のルートデータは数m単位でポイントが細かく並んでいるため、MAD MAPS上でポイントを表示するとえらいことになる。まぁ最適化すりゃいいんだが。


しかし、MAD MAPSもだいぶカスタマイズ項目が増えてきたんだが、設定GUIはどーしよーかなぁ。まともなツールならカスタマイズ項目をGUI化して簡単に設定できるようにするもんだが。・・・まぁ、MAD MAPSを使うような人ならテキストエディタくらい普通に使えるだろうし、今のようにconfファイル直書きでも大して問題ないとは思うけど・・・・・。