キーワード逆サーチ投稿

こんな辺鄙なブログにも、検索してやってくる方々がいます。

キーワードを見れば、必要な情報が何か、なんとなく判るんですが、
たまに良く分からないキーワードで来ている人がいますね。

というわけで、それらのキーワードを元に、後からブログを書く、というシリーズ。

今回のキーワードは「アプリ バグ 原因」です。

これが、「アプリ バグ」なら、なんとなく裏技的なものを探している気がしないでもないですが。
(その場合は、ゲームのタイトルをキーワードにするよな…)

原因となると、プログラムで困ったことになっているのではないか、という想像になってしまう。
というわけで、プログラマとバグについて、考えてみた。

バグは発生させないに越したことは無いけど、それは無理。
一流?のプログラマは、発生したバグを退治するのがうまいのだ。

では、いままで自分でやらかしたり、周りで見てきたなかで、どんな原因のバグが多いのだろうか?

第一位は…「初期化ミス」。
もし統計が取れるなら、2位に大差をつけているに違いない。

例えば、RPGなどで、アイテムウインドウを開くときの初期化に、どんなミスが起こりうるか?

前回開いた時のカーソル位置を覚える仕様だった場合、もしかしたら、
イベント消費などで、アイテム数が変化しているかもしれない。
それを考慮してないと、欄外にカーソルがいくだろう。

メモリ周りの初期化はいうまでもなく、上記のようなちょっとした部分の初期化でミスることが多い。
なので、変な動作をする場合は、まず初期化を疑ってみるべきだ。

次に、もっとも厄介なのが、携帯電話などで起こる、機種による違いだ。
メモリ容量はもちろん、生成できる画像枚数なども機種によってまったく違う。

とにかく仕様書を読み込み、CP(コンテンツプロバイダ)として契約しているなら、
サポートデスクをバンバン使おう。

過去にあったこれ系の不具合を上げてみると…。

・透過GIFが透過しないことがある(論外だよな…)
・短いサウンド(カーソル移動音)を連続して鳴らすとフリーズ( System.gc()で回避した)
・生成できる最大画像は 320 x 320だが、そもそもInputのバッファが、310x310分しかない
・ScratchPadに保存したフリをして保存してない
・APIリファレンスには、ノンブロッキングとかいているが、実はブロッキング

などなど…。
これらは、テストプログラムを作って確かめるしかない部類。
たとえ、キャリア(メーカー)から提供された仕様でも、信用するなかれ。


とにかく、バグを早期に退治するには、

・どういう現象なのかを把握
・発生条件を確認/推測する
・どのタイミングでそうなるのかを、1ステップずつ確認する

地道に退治するしかないのだ。

数時間かかって、「そんな原因かよ!」というのは、良くあることだが。
[PR]
by miries | 2010-10-09 01:53 | デジタル系


<< ミッフィー大収穫 コナミネットDXに登録してみた。 >>