PalmDreams
過去のひとりごと2006



2006年8月31日(木)
共通化のジレンマ
ソフトウェア開発に携わる方なら経験すると思うのですが、ソースコードの共通化や評価テスト方法の共通化をどのように管理するのか頭の痛いところだと思います。
実は、PalmDreamsオリジナルソフト NavnBT,SC,BTiは、基本部分を共通としながらも メイン処理の構造が異なるアプリケーションなのです。

一番最初に開発を開始したのはNX70V用のNavnBTです。そして外付けシリアル通信よる有線GPS対応のNavnSC ,最後にBluetooth内蔵クリエ用としてNavnBTiを開発しリリースしました。

もともとは、GPSアンテナとの接続方式を外付けBluetoothアダプタHNT-BT1,RS232C,内蔵Bluetoothの3種類を一つのアプリケーションで対応する予定でしたが、プログラムの構造が複雑になることと、特定の通信方式のアルゴリズムを変更すると、他の通信方式への影響を確認する必要があり、その結果、評価に必要なコストが増えることを嫌い、分けて管理する事にしたのです。

しかし、最近になってこの個別の管理が重荷になってきました。
それは、 NavnBTiで好感触を得た実装をNavnBTに適用したときのことです。
UX50,TG50用のNavnBTiは内蔵Bluetoothドライバのクセの強さと、内部のリソースの効率化などの改善をVer1.15に多数加えました。一方、ベースソフトのNX70V,TH55,TG50?用のNavnBTは、処理が単純で変更を受けることもありませんでしたのでソーススコードの違いが多くなりました。

その結果、全く同一の機能を、同一のソースコード置換できないほどの差になり、ソースコードのメンテナンスが煩雑になりました。

そこで、今後の事も考え双方のソースコードを書き換えることでメンテナンス性を最大限に確保しました。

作業を終えてからこのソースコード共通化作業コスト増加分(正確にはNavnSCが未着手なのですが..)と 最初から統一したアプリケーションによる評価コスト増加分のいったいどちらが有利なのだろうと、ふと考え始めました..
きっと ケース・バイ・ケースなんだろうな ... という結論に達しましたが...でも今回の場合はどちらが有利? うーん どちらなんでしょう..

そんな些細なこと..と思われるかもしれませんね。

面倒くさがりやなんです..根っからの。


NavnXX..



2006年7月7日(金)
震災時避難用地図データ リリース..
CLIE + GPSによる歩きナビは震災時にこそ役立つはずと以前から考えていました。
そしてこの地図データは、首都圏への出張が多いPalmDreamsが知りたかった情報なのです。

なぜなら、被災直後は鉄道やクルマなどの交通機関は機能せず、カーナビを搭載したクルマは使えず、携帯電話も通信施設の機能停止などの状況下でとにかく徒歩で避難しなければならない状況は容易に推測出来ますから..そしてそのようなときに素早く確実に避難先を検索したい場合や避難先への移動途中に自分の位置を確認したい...このような場合に使えるかもしれません。

Palm機は軽いから普段から仕事やプライベートに使用しているCLI'Eユーザーなら持ち歩きに苦労しないはずです。BluetoothGPSユニットを持たなきゃならないですけどあれも小さく軽いから.. うーんこれが一番の問題か..
でも PalmDreamsはお出かけの際はCLI'Eと同様に必ず持って行きますから...
CLI'Eは、こまめに電源を切れば数日間は充電無しでいけると思いますしバックライトが緊急時の簡易照明にもなります。
水に弱いので 「つかえる.エル.える」のジップロックを数枚もお忘れ無く.

話は変わって、地図データ登録中に感じたのですが、各行政区によって震災後の対応可能な病院に差が感じられます。特にどことはいいませんがある地域は、大きな病院が多数あるにもかかわらず、医院やクリニックなど比較的小規模な医療機関しか対応していなかったり、主要道路周辺に何キロも病院が無かったりと、実際この地域で被災した場合は途方に暮れるはずです。 また、広域避難場所に河川敷を割り当ててる場合が多く、火災に対する対応としては正しいのでしょうが、津波が逆流してくる可能性もありますし、液状化で亀裂が入り河川敷はかえって危険じゃないの?と思う場合もありました。
このため避難経路や避難場所は事前に調査しておいた方が良いと思います。 杞憂ですけれど..



NVdeESC





2006年6月7日(水)
High Density mode と 3Dオブジェクト
久々にPalm Application をリリースすることにしました。

以前ベータ版をテストしていたCoCalcに対しなんか 遊び心がないねー..と酷評されていた事を思い出し..それならばと

アイコンとして3Dキャラを表示することにしました。 (なんて安易なんだろう..) 数年前に少しだけ流行った「ひ○まりの民」をイメージしてみました。


癒されてください...。 :-)

ちなみにこのキャラクタのベースデザインは おまけの小さなぬいぐるみらしいです。 実物はというと、かなりお気に入りでかわいがられた結果、ぼろぼろで分解寸前..なので3Dデータで永久保存してしまいました。 ついでに動かないの?などと無理難題をおしつけられまして..
骨(ボーン)を入れて動かしてみました。

 残念なことに、Palmデバイスに搭載されているCPUは低消費電力がウリのARMプロセッサなので、PS3に搭載される予定のIBMのCellや現行品のEmotion Engineのようにリアルタイムに3Dを合成出来るぐらいパワフルではないので、リアルタイムの3D生成はあきらめましたが雰囲気はそれっぽいです。
でも動きが ぎこちないですね もう少し改善することにいたしましょう..

また、Palmデバイスに負荷の重い処理をさせた場合ですが、バッテリの持ちが気になります。この点を考慮すると簡単なアニメーションにとどめるべきなのかもしれません。

しかも3Dキャラを埋め込んだ結果、プログラムサイズは100kByte増量..

またPalmデバイスのHigh Density関連のAPIって謎なところが多くて試行錯誤してます。(まぁいつものことですが) 
基本的にあのAPIは未完成なのでは..との結論に..きっとPalmSDK に数多く存在している謎のうちの一つですね。 それに対しCLI'E SDKのハイレゾ関数は思い通りに動くんですよね..あらためてCLI'Eの撤退が惜しまれます..でも互換性は大事ですからね。

やはりこの手のアプリはケータイのJavaが一番向いているのかもしれませんね。
イメージ






2006/4/13
NavnBTi For UX50 Ver1.12 あわてて改修...

先日リリースしたNavnBTi Ver 1.12ですが不具合を発見しあわてて改修しました。
お試しいただいたお客様へ... ご迷惑をおかけいたしました。 この場を借りてお詫び申し上げます。

実はこの版はすこし特殊な事情があります。
NavnBTiのターゲットデバイスはTG50,VZ90 そして今回追加したUX50ですが
TG50とUX50の動作タイミングが全く異なるのです。 通常のアプリですと全ての動作タイミングはそのアプリ自体が管理すればよいのですが、NavnBTiは、NavinYouPocketの動作の合間に動作させているので、処理タイミングが違いが大きく影響し、困ってしまいました。UX50だけ独立した版をリリースすることも考えたのですが、その後のメンテナンス作業を考えると躊躇してしまいましてやはり共通にすることに..

そしてこのことが今回の改修につながるのです。
実はVer1.12はTG50ではおそらく今回の改修につながる不具合は発生しません。(更新フリーズ後のリンク切断)

UX50は、PalmDreamsのお散歩に持ち歩きフィールド評価をしていました。 (健康にもいいですしね 最近ちょっと太りましたので 一石二鳥.. なんて素晴らしい発想...)

問題なさそうでしたのでリリースしたのですが、その翌日、自動車の後部座席で追従性を見ていたときに問題の現象が発生しました。 あわててリセットし再度様子を見ていると再現性も高く症状が醜かったのでリリース中止としました。  
移動速度が速い場合、込み入った地図のスクロール処理で更新する路線が多く処理時間が長かったのが原因でした。 TG50で調整したタイマ値があわなかったのですね...
これはタイマ値を変更して対処しましたので たぶん大丈夫かなとおもっています。

VECTORに依頼しているのも改版しなきゃ..でもあれ時間かかるんですよね...




2006/4/10
NavnBTi UX50 やっと動きました...

UX50とNavnBTi なかなか実機確認が出来ず 本当に動作しているのかいないのか不安でしたがようやく実機による検証が出来ました。まだ不安定ですが、とりあえず リンク切れが発生しにくいはず...です (でも自信ないなぁ。)

今回の実機確認作業のおかげで既に実機確認の出来ているTG50版とUX50の実機で比較確認をすることで動作の違いが判りました。

やっぱり実機での確認は必要ですねぇ...と痛感...
でも、お客様からいただいた動作状況のメールから予想したいくつかの要因のうちのひとつでしたので読みが当たったと少し安堵しました。


また、まだ荒削りですが今回GPS通信ドライバの処理を大幅に書き換えました。これは、以前のNavnBTiのFeatureMgrの使い方が今ひとつで効率が良くなかったのもひとつの要因ですが、本格的な仮想ドライバに転用しようとした場合いくつかの不整合があることが判明したためです。このため下層のGPSドライバは以前の版とは別物です。実行ファイルが以前の版より2K程度圧縮されたのはこのためです。
しかも副産物として以前の版のコーディングミスも発見し修正しました。(...まだ潜在してるんでしようね...もう一度ソースコードを見直しますかぁ...)

ドキュメント 整備しておくんだった... 思い出すのが大変です。 たった 半年前なのに....



2006/4/06
NavnBTi UX50 検証中...

あっという間に もう四月 ...
暖かくなってきて良い季節になりました。
旅行のシーズを迎えたせいでしょうか。GPSアプリのお問い合わせが増えてきました。

お問い合わせの内容は、「このアプリはUX50では動かないの」 とか 「NavnBTi UX50で動きません」という指摘が多くUX50での動作を望んでいるお客様が意外と多いことに気がつきました。

しかし、なかなか開発時間がとれなく、また実機による検証が出来ていない状況でしたが、
先日、NavnBTiのBluetooth GPSドライバを 別のアプリに流用している作業中に 不具合の原因と思われる コーデイングミスを発見いたしました。この不具合は内蔵Bluetooth搭載機対応ドライバで発見し、もしかするとTG50のリンク切れもこれが原因なのかも...と推測しているのですがTG50とUX50では発生する不具合の症状が違うのです。
これが現在の悩みの種です。

もう少しデバッグが進めば明確になると思っているんですけれどね。

当初このBluetooth/NMEA-0183 GPS ドライバ(NavnBTiに実装済み) は「 New Bluetooth GPS 仮想ドライバ(難航してます..)」に転用し、性能が良ければ NavnBTi,BT,SCへとフィードバックする予定でしたが、不具合の解決が先ですね。
結果として UX50での動作保証が出来るはずですのでUX50のユーザー様はもうしばらくお待ち下さい。




2006/2/27
CoCalc リリース...

あっという間にもう三月... 記録的な豪雪と寒波に見舞われた今年の冬ももうすぐ終わりです。ああ 春が待ち遠しいですね。 いろいろ割り込みがありましてリリースが遅れておりましたCoCalcですが ようやく販売直前にこぎ着けました。
βテスターにリリースしたし後は ダメだしをしてもらっておりますのが小変更で何とかいけそうです。
ここのアプリケーション開発の最大のヤマは、MathLibでした。 関数電卓ではないので当初から 数学関数ライブラリは使わない方針で作業を進めましたが、PalmOSの浮動小数点演算ライブラリは機能が貧弱で、内部のエラー処理はあまりスマートな方法を実装してはおりません。チカラ技で切り抜けました。途中何度MathLibを組み込もうと考えたことか...
でも一番影響が大きかったのが、途中の割り込みの業務で開発を中断したことがリリースが遅れた大きな要因と反省しております。
やはり 無理のない計画的な作業がいいですよね。でもこの職業、計画通りに開発が、進行したという経験もあまり無いですねえ..たいていは、途中にカベあり谷ありで えいやっの チカラ技で何とか乗り越えているのではないでしょうか... でも 次の作品はもう少しスマートに進めたいですね (と いつも思もっているんですけれどね)

話は変わって 2006冬季五輪ですが待望の金メダル獲得に思わず興奮してしまいました。やはり選手の人生の時間の大半を費やしたであろうその集大成は世界中の人たちに与える感動も桁外れで本当に素晴らしいと思います。
ある意味 1/65億人 の頂点ですから、これはもう本当にすごいとしか言いようがありません。

ほんとうにおめでとうございました。


2006/1/11
JavaScriptのデバッガが...

一昨年、ネットショップを開設する際に、まずは公開すること...を優先させた旧ホームページでしたがようやくリニューアルさせることが出来ました。 旧サイトはマルチフレームを採用したことから、携帯端末から閲覧しにくいページになってしまいました。この結果、画面サイズの大きなPalmデバイスとその付属ブラウザであるNetFrontでも閲覧が困難なページ構成でしたから少しは閲覧しやすくなると思っています。 というかそう思いたい...

ただし、以前からサイトページに埋め込む予定でキー入力だけ済ませていたJavaScriptソースコードの組み込みとデバッグに時間をとられ、当初予定していた機能やコードを大幅に簡略化した暫定版を埋め込むことにいたしました。

いつも感じているのですが、JavaScriptのデバッグは面倒というか、使い勝手の良い便利なデバッガほしいですね。
それに ecmaが発行している JavaScriptドキュメントecma-262は 相変わらず難解度満点で、精神力が試されます。これを読んだ後であれば、Palm OSのドキュメントは良くできてるなぁとさえ思えてしまいます。 でもこれは単なる錯覚ですね....

結局 実際のサイト上で動作確認を繰り返すことになりました。 でも まぁ こんな作業は滅多に行わないのでよしとしましょうか。 でも 移植しなければならないページはまだ残っています......Fuu...



ページの先頭へ