いなあものPalmware開発日記 このページをアンテナに追加 RSSフィード

2005-11-22

[]愚行の尻拭い 愚行の尻拭い - いなあものPalmware開発日記 を含むブックマーク

今回はちょっと難しい話です。

さて、本日、B-CAL 1.3.0を公開しました。

今回のバージョンアップの目的は、J-OSとJaPon環境でB-CALのデータを受け渡す事です。

最近は、英語Palm日本語化する人が増えたため、今までJ-OSを使っていた人が、新しいデバイスを購入した際にJaPonに乗り換えたり、逆にJaPonからJ-OSに乗り換えたりする機会が増えています。

そんな折、B-CALユーザから

「機種を乗り換えたらアイコン状態が保存できなくなった」

とか

「B-CALに登録してある情報を読み出せなくなった」

と言った報告を聞くようになって来ました。

原因を調査すると、たいていの場合上記のようにJaPonとJ-OSの乗り換えがきっかけだと言う事も分かりましたので、それぞれの環境で色々と調べてみると、興味深い事実が発覚。

JaPonとJ-OSではB-CALの保存データの並び順が違うのです。

B-CALは、表示に使ったアイコンの種類と最後に表示した人、そしてB-CALに登録している人の氏名と生年月日を1つのデータベースでまとめて管理しています。

データベースではこれらの情報レコードごとに管理しています。

例えば太郎さん、花子さんという二人の情報を登録したデータベースがあったとして、J-OSではそれが以下のように作られます。


 1.最後に表示した人の情報

 2.最後に表示したアイコン情報

 3.花子さん情報

 4.太郎さんの情報


これは、僕がB-CALをリリースした頃に使っていたVisor Platinum(日本語版PalmOS3.5)と同じ並び順になります。

ところがJaPon環境ではこの並び順が以下のようになります。


 1.花子さん情報

 2.太郎さんの情報

 3.最後に表示した人の情報

 4.最後に表示したアイコン情報


そう、環境設定の情報が後ろに来るんですね。

実はこの並び順は、OSデータベースソート(並べ替え)機能の違いに由来しています。

B-CALは最初に設定情報を読み、その後データベースソート順に従ってデータを順番に読む仕組みになっています。

ところが環境が変わってしまうと、今まで綺麗に整列していたデータがぐちゃぐちゃのデータになってしまうので、ソートされた順番でデータを読み出す事が出来なくなってしまっていたのです。

ここで皆さんは、

「これはJ-OSやPalmOS3.5と並び順が違うJaPonの不具合ではないのか?」

と思うかもしれません。

ところがどっこい。何と僕が調べた限り、クリエPEG-NX80V(日本語版PalmOS5.0)では、JaPonと同じ並び順になるのです。

もうこれでは訳がわかりません。

今年になって何度かJaPon対応と言って行った改修作業は、全てこの問題を解決しようと試みた結果です。

ただ、小手先で対応しようとしたのが間違いで、結局JaPon環境では動作するようになったけど、J-OSへの移行ダメという状態に持っていくのが精一杯でした。

今回のVer1.3.0で追加した「情報再構築」機能とは、まさにJ-OS配列のデータをJaPon配列に変換(またはその逆)するための機能です。

一番泥臭い手法ですが、保存データを先頭から全て読み込んでOSデータベースソート順にあわせて再度保存データを作り直しをしています。

これで何とか表示のつじつまを合わせる事が出来ました。

さて、では何故B-CALでだけこんな問題が発生しているのでしょうか?

その理由は、ソートの鍵となる文字列に含まれていた特殊文字にあります。

実際には、JaPonもJ-OSもデータの整列を行う際に、それほど大きな違いがあるわけではありません。一部の特殊な文字を除いては。

実はB-CALで使われていたキー文字列に、たまたまその特殊文字が含まれていたために、こんな現象が発生してしまったのです。

当時は良かれと思って組み込んだ特殊文字が仇となってしまった訳です。

とんだ愚行のおかげで、その尻拭いに長い時間を費やす結果となってしまいました。

2005-08-31

[]週間天気予報から始まった 週間天気予報から始まった - いなあものPalmware開発日記 を含むブックマーク

こう言っては何だが、僕はB-CALがこれほど根強い人気を得るとは思っても見なかった。

ご存知の通り、B-CALはただのバイオリズムを表示するだけのアプリだ。

これは実用度を考えるとかなり低い。

なのに、ShoppingListやC-MATEといった実用アプリを抑えて、Muchy.comの月間ダウンロード数は毎月僕のアプリ中トップである。

と言うことで、今日はB-CAL誕生の話をさせていただく。

バイオリズムとは不思議なものである。

世間には広く認知されているくせに、詳しい内容を知っている人は殆どいないのだ。

身体、感情、知性の3つの要素が、生まれた日を起点に一定の周期で変化して、高調期、低調期、要注意日の3つの状態がある事までは分かる。

でも「それぞれの周期は?」と聞かれて正確に回答できる人は何人いるのだろうか?

しかも「高調期だとどうなのか?」とか「低調期と言うのはどんな状態なのか?」また「要注意日って何を注意する日なの?」となると、正確に答えられる人は殆どいない。

実際、僕も知らなかった。

最初は興味本位でネットを漁り、書籍を立ち読み(!)して何となく理解は出来たのだが、これを例のサインカーブを表示するだけのよくあるバイオリズムアプリから読み取ることは出来ないのだった。

本来ならアノ手のサインカーブを表示するプログラムは、片手にバイオリズムの解説本を持ちながら使わないといけない代物だったのだ。

「片手にPalm、もう片方の手には解説本!?」

ナンセンスだと思った。

でも、その時はそれで終わり。

大したアイデアがあるわけじゃなく、狭いPalmの画面にサインカーブと解説まで載せるのは不可能だと思った。

アイデアが閃いたのは、TV天気予報で週間天気の表示を見たときだった。

B-CALでもお馴染みの1日毎の升目に天気の状態を示すアイコン表示である。

「これならいける!」

アイデアは10秒で完成された。

升目をボタンにしてしまえば、その日の状態の解説を表示させるロジックを組み込むことが出来る。

同じロジックで、身体、感情、知性、といった要素の説明も出来てしまうではないか。

あとは、生まれた日からの日数計算ロジックを組んでしまえば完成したも同然である。

こうしてB-CALは、他に例を見ない程の解説を160x160という低解像度のスクリーンコンパクトに封じ込めつつ、見た目も風変わりながら愛嬌のあるアイコンをちりばめたアプリとして誕生した。

今も時々、ユーザから「面白いデザインですね」というメールを頂くことがある。

確かにバイオリズムプログラムとしては異端かもしれない。

だけど作り手からすれば、このデザインは「必然」から生まれたものだったのだ。

「機能とデザインの融合」と言えばちょっと格好よすぎて恥ずかしいのだが、本当にそんな感じだ。

でも、どんなに格好よくてもただのバイオリズムアプリ。実用性は人それぞれだが必ず必要な物ではない。

まぁ、飲み会などでB-CALをちらつかせて、バイオリズムの講釈をしながら気になる女の子誕生日をさりげなく聞きだすには格好のアイテムかもしれないが…(本当かっ?)。

2005-08-17

[]B-CALの憂鬱 B-CALの憂鬱 - いなあものPalmware開発日記 を含むブックマーク

この春頃にB-CALを立て続けにバージョンアップしたことがあります。

B-CALのDB構造を変えたことによって、JaPon環境での動作がおかしくなってしまったのが原因。

現在は小康状態なのですが、まだ完全ではないのです。

実はJ-OS環境で作ったDBをJaPon環境移行するとうまく使えません。

これは、DBソート順が一部J-OSとJaPonで異なるのが原因なのですが、実はこの両者の日本語ソフトに非がある訳ではないようなので、尚更やっかいなんですね。

JaPonのDBソート規則は、手元にあるClie PEG-NX80Vと同じ規則で動作しているのが確認されています。

また、J-OSDBソート規則は同じく手元にあるVisor Platinumと一致しているのが確認されています。

つまり、OSによってソートの規則が異なるのが原因のようです。

この辺の情報を詳しく調べて、JaPonの作者の関野さんやJ-OSの作者である山田さんにご報告差し上げるべきなのですが、忙しさにかまけてそれらの情報を整理できないでいます。

また、実際にDBソートを行っているのがNS Basicランタイムライブラリなのが話を厄介にさせています。

それよりも今は、B-CALを両方の環境でも問題なく使えるような仕組みを作るべきなんだろうなとも考えているのですが、スマートな解決方法を見出せずに苦労しているところです。