こんにちは、megaoです。
プログラム実装完了!よし検証始めるぞ!ん?なんだこのバグは?とりあえず、ここを修正して・・・
エラーエラーエラー
ビルド通らなくなった。それから2時間、不具合の原因が全くわからないどうしたら良いんだ?
本日は、このような悩みについてお答えします。
本記事の内容- プログラム不具合が発生した時の対処方法
初心者の方が、プログラムを実装して、一発でビルドが通るのはなかなか難しく、その度にどこが原因か探すだけで時間がたってしまい、イライラする。なんてよくある話です。
私もプログラムを始めた頃は、ビルドが通らない、不具合が発生してもどこが原因か分からない。自分が書いたプログラムに自らが苦しめられました。
しかし、現在は、組み込みソフトというジャンルで、プログラムを作る開発現場で働いています。
というわけで、本記事は、「プログラム不具合が発生した時の対処方法」というテーマでお話しさせていだだきます。ぜひご覧ください。
プログラム不具合が発生した時の対処方法
プログラムが上手く動かない時に、対処する方法を5つほどお話します。
凡ミスがないか調べる
ビルドが通らない場合、かなりの確率で凡ミスをしている場合があります。
ビルドが通らないことには、先に進めませんので、早く解決したいですよね。しかし焦ってしまっては、見つけれる凡ミスも見逃してしまいます。
まずは冷静になり、どこが原因かエラー内容を見てプログラムを確認していきましょう。
以下にプログラムでよくする凡ミスについてまとめた記事がありますので、ご参考にどうぞ。
プログラムの変更前との差分を取る
ここからは不具合が発生した時の対処方法です。
プログラムの変更前と差分を比べてみましょう。
更新する変数が間違っていたり、条件文で比較する変数や論理演算子が間違っている場合、比較すると案外簡単に見つけられます。
私がよく使用する比較ツールは、「Winmerge」と「DF」です。
比較もファイル単位、フォルダ単位でできるため、重宝しています。
変更する量を減らす
プログラムの変更量を減らし、問題がければ、次の変更を行うようにしましょう。
一度に大量の変更をしてしまうと、どこが不具合の原因か見つけるまでに時間がかかります。そのため、変更を少しずつ行うことで、原因の切り分け作業が行えます。
私も、不具合が発生した場合、一度プログラムを元に戻し、そこから少しずつ変更を加え、プログラムに問題がないことを確認し、次の変更を加えるようにしています。この方法で、不具合をいくつも解決してきました。
仮説を立ててデバッグを行う
仮説を立てながらデバックしていきましょう。
不具合が発生しデバックをしている際、設計した通りプログラムを書いたなら、ここで、この条件が成立するはずと想定できます。
しかし、そうならない場合、どこかで処理がうまくいってないところがあります。そこを探すために、仮説をたてながら、デバックしていきましょう。
条件が成立しない場合、その条件で使用されている変数が正しいのか、そもそも値が正しく更新されているのか、考える要素はたくさんあります。
考えられる要素から順に仮説を立てて、要素を一つずつクリアしていくうちに、不具合の原因に辿りつきます。
諦めて、次の日に出直す
上記の内容を試しても、全く原因が分からない場合、その日は諦めましょう。
現実逃避?と思うかもしれませんが、案外この方法で不具合が解決した。なんてこともあります。
不具合が発生してしまうと、どうしても気持ちが焦ります。
ましてや納期3日前に不具合が発生した日には、その場からいなくなりたいです。しかしそうも言っていられないので、不具合を解析するのですが、なかなか原因が分からない。
しかし、時間だけが過ぎていく。そのため、焦りながら解析していると、どうしても考え方が一方方向になりがちです。そうなってしまうと、何時間解析しても結果は同じです。
なので、原因が分からない場合、その日は諦めて、次の日に出直すのも一つの方法です。気持ちが一度リセットされるため、見逃していた点に気づく可能性も出てきます。
昔、2、3時間かけて不具合を解析しても、原因が分からない時がありました。その日は諦め、次の日に出直しましたが、次の日、ものの数分で、不具合の原因が特定できたこともあります。
なので、不具合の原因が全く分からない場合、その日は諦めて、次の日に出直しましょう。
まとめ
いかがだったでしょうか?
不具合が発生した時は、以下のことを常に頭に入れておくと、原因の特定がしやすいです。
不具合発生時に気をつけたいポイント- 凡ミスはしていないか?
- 変更による差分は正しいか?
- 一度に変更し過ぎていないか?
- 仮説は正しいか?
- 解析に時間をかけ過ぎていないか?
人間はミスをする生き物です。そのため、人間がプログラムを作っている以上、不具合は必ず発生します。
そのため、不具合が発生した時の対処方法を知っているか知らないかで、仕事の効率も変わってきます。不具合が発生した時、この記事が参考になれば幸いです。
というわけで以上になります。
コメント