初めてのプログラム講習

2023.05.01

よくバグが出る!ここに注目の要注意ポイント

どうも、ヒヨコラボのプログラム担当のネズマエです。
プログラムにはバグがつきもので、ちゃんと実装したと思っても、やっぱりバグは出てきます。
そんなバグについて、ネズマエの経験的によくバグが出るポイントを4点ご紹介します。

作る時に思い込みやすいところやフォローが抜けやすいところが多いですので、検証の際にそういったところをよく確認してください。

①「〜以上」「〜未満」などの境界付近

「クイズの点数が3点以上だと合格」などプログラムを作った時、「3点」や「2点」などの境界付近でバグが起きやすいです。
そんな簡単なところで・・・?と思うかもしれませんが、意外とこういう所はミスをしやすいんです。
「3点以上」を「3より多い」にしてしまったり、「3点の時」にしてしまったり・・・。

ケアレスミスなので直すのも簡単なのですが、気をつけないと見落としがちなので注意が必要です。

余談ですが、「〜以上」などの境界付近について、どの値で検査するか分析することを、検証の分野では「境界値分析」と言います。

単純な数字の打ち間違いなど、数値に関するミスはよくあります。

②画面遷移

「ゲーム画面からオプション画面を開く」など、画面が切り替わる動作にバグがよく潜んでいます。
このタイミングで起きるバグは結構多岐に渡りますが、特に多いのが「初期化し忘れ」「削除し忘れ」「別ルートでの遷移を忘れてた」などの「忘れてた系」です。

画面の遷移を挟むことで、通常やらなくては良いことが増えたり、逆にやってはいけないことが増えたりします。
そのため、1画面内では大丈夫でも、画面が切り替わるとバグが起きてしまうことがよくあります。

画面が切り替わった時に、きちんと前の画面の処理が残っていないか、次の画面の処理を開始できるのか、そういったところに注目して検証が必要です。

アプリなどの起動も一種の画面遷移です。漏れのない様に意識しましょう。

③ポップアップ

「ロックされている箇所を触った時に、ポップアップで注意を出す」こういった画面上にポップアップが出てくる時もバグが多く出てきます。

ポップアップは少し特殊な表示状態なので、普通の状態とは異なります。
そのため、それをきちんと考慮できていないと、バグが発生してしまいす。

例えば、
・ポップアップを表示したまま他の箇所を触れてしまう
・ポップアップ表示中に勝手にゲームが進んでしまう
・1度ポップアップを表示すると、次にポップアップが表示できない
などです。

ポップアップについては少し難しいですが、排他処理や優先順位をきちんと明確化することで、バグの発生をある程度抑えることができます。

想定することが難しい状況も多いですので、検証の際は、少し意地悪な操作をすることで、ポップアップ関連のバグ発見に繋がるかと思います。

こういうポップアップの時、辞退(キャンセル)を選んだ時の処理が漏れていたりすることもあります。

④データの並べ替え

「点数順に並べ替える」「勝率順に並べ替える」などの並べ替え動作時、表面上は大丈夫でも、内部的なデータがバラバラになることがあります。
並び替えてからデータを編集すると、あらぬ箇所が変更されてしまったりです。

こういったバグはそのまま直すのは非常に困難なので、データ管理の機能を作る場合は「内部のデータ情報を出力する」機能を作成しておいたほう良いです。(実体験)

「内部がこうなっているはずだから、こう変えたらこうなるはず・・・あれ、ならない(焦り)」という状態に陥る為、「内部のデータ情報を出力する」機能を作成しておきましょう。(大事なのことなのでry)

複雑なリストほど間違いが起こりやすいです。

バグとは一生のお付き合い

いかがでしたでしょうか?
プログラムに関わっていると、バグとは一生付き合う必要があります。
うまく付き合うには、見つける工夫が大事です。
できれば、直しやすい工夫まで考えられるとより良いですね。
次回のプログラム関係の記事では、またプログラムを作る上で気をつけたいことなどを書いていきたいと思います。

執筆者:ネズマエ