2011年5月8日日曜日

アップデートその後の失態

昨日は、ASE Rally Monitorのちょっと大きなアップデートを行いました。

記事の中で、”機能は毎日テストをしていた”と書いていながら、大失態をしてしまいました。原因を追究することが重要なので、大失態にいたる原因を追究します。

まず、大失態の内容というのは

”キャリブレーションモードが正しく機能しない”

というもの。操作系は正常なのですが、キャリブレーション終了処理をしても、計算結果が”0”になってしまうというものです。

キャリブレーションモードを開発したのは4月半ば。その際には当然繰り返しテストをして思うように動作するようになりました。その後、外部GPSロガーを使用するためのテストに移行します。結論はここで根本的な原因が発生します。

まず、距離の算出を簡単にいうと

GPSから取得する秒速 x キャリブレーション比率 = 表示する秒速

となります。スマートフォンの最小更新間隔が”1秒”なので、GPSは1秒ごとに位置情報を取得します。したがって、1秒ごとに秒速を加算していけば、そのまま距離として使えるという内容です。

ところが、ここで外部GPSを使用するということは、この”1秒ごとの更新”が違ってくるということになります。

そこで、その対策をするために、テスト用にAとBという2系統の追加トリップをプログラム上で走らせてどちらが良いかを試して、最終的にAという系統を使うことにしたのですが、テスト中、最初はAにしていたものを後半からBにしていました。

AでもBでもトリップは表示するので、気づかなかったのですが、キャリブレーションモードの計算にはAしか使っていなかった。そのため、Bのままだった状態ではキャリブレーションモード内で距離を計算できずに、結果として”0”になったというわけです。

なぜこういうことがおきたのか?

理由は簡単。それは

頭の中でしかプログラムを考えない

から。本職の方からしたらお叱りを受けるかもしれません。

フローチャートとかを絵に描いて、流れや動きを把握するべきなんでしょうが、それをすべて頭の中でしかやらないため、たまに全体像を把握しきれなくなる。これが根本的な原因ですね。

幸い頭の中でしか考えないため、自分の頭で考えて理解できたことしか頭の中で組みあがらず、自分の技量以上のことはできません。従って原因は自分の頭で考えたこと以外には無く、発見は比較的簡単に行えました。

ということで、大失態発覚から10分程度で再アップデート完了しましたが、大失態ですね。


0 件のコメント:

コメントを投稿