プログラミングでエラーが出たときの原因を特定する方法

Left Caption
プログラミングでエラーが出たときには、どうやって原因を特定すればいいんだろう。そもそもどうすればバグを少なくすることができるんだろう。

こんな疑問を解決します。

もくじ

  • プログラミングでエラーが出たときの原因を特定する方法
  • バグを作り込まないようにするためのコツ

この記事を書いている私は、業界歴10数年のシステムエンジニアです。
これまでの私の経験を踏まえ、ポイントを書いていきます。

新米エンジニア、プログラマーの方は必見です。ぜひご覧ください。

広告

プログラミングでエラーが出たときの原因を特定する方法

結論として、「事実確認 → 推測 → 立証」です。
具体的には次から解説していきます。

手順① 事実を確認する。

何はともあれ、事実確認です。

プログラムはエラーが発生した時には原因を辿れるように、エラーメッセージが出力されます。そのエラーメッセージを真っ先に確認しましょう。

大抵のエラーメッセージは英語で出力されますが、翻訳ツールなどを利用し、メッセージの内容を理解しましょう。

メッセージを確認すると大方は理由が分かります。極端な例を挙げると、「アクセス権限がありません」や、「サーバーの容量が足りません」など、そもそもプログラムに関係のない場合もあります。

プログラム以外のところが原因でエラーが出ているのであれば、プログラムの見直しを何度も繰り返したとしても、エラーは全く解決されませんので、まずはエラーメッセージを確認しましょう。

手順② 事実を集め推測する

次に確認したメッセージを基に、原因を推測しましょう。この工程がいちばんの難関になります。
なぜならば、エラーメッセージがテキトーな時が多々あるからです。

例えば、ひどい時には「システムエラーが発生しました。」というメッセージで纏められたりします。しかしこれには理由があって、プログラムが上手く動かない原因となるものは多岐に渡るため、全てに対応するエラーメッセージをカバーできないのです。

エラーメッセージの意味が良くわからない場合には、プログラムの処理の流れが分かるように、プログラムにわざとログを仕込むと良いです。

ログを仕込むとは、例えば「処理①→処理②→処理③」と処理が進むプログラムがあった場合に、それぞれの処理の開始終了のタイミングで、「処理が開始しました。」、「終了しました。」のように処理がどこまで進んでいるのかなどを把握できるようにログ(記録)を残すようにします。

他にもプログラムで計算した値が想定と異なるのであれば、計算過程の計算結果をログに出力することもあります。

このように、様々な事実・情報を集め、原因を特定していきます。

手順③ 推測が正しいかを確認する

手順の②までが済んだら、あとは考えた原因が正しいかを実際に確認してみましょう。
最終判断をする前に、必ずプログラムを動かして確認することが大事です。

なぜならば、手順②で大方は原因を特定できたと思いますが、間違った判断をしてしまう場合があります。

例えば、実は気づいていないプログラムや処理などがあって、そのことを考慮しておらず誤って別のことを原因と判断してしまう場合があります。

よくある話

よくある話として、同じような処理が複数箇所にあり、1箇所だけを見て誤った判断をする場合があります。

1箇所の処理を見て、「○○が悪かったんじゃない!?」と、間違った判断をしてしまったり、逆に「うまくいくはずなんだけどなぁ」とエラーの原因を特定できない場合があります。

同じ処理が複数箇所にあることなんて、「いや気づこうよ」という話ですが、案外見落としがちです。
このような誤りを防止するためにも、最終的には必ず動かして確認をしましょう。

バグを作り込まないようにするためのコツ

エラー原因を特定するのも大事ですが、バグを作り込まないように、作っていくことが大事です。

正しく作成すれば、エラーが出ることもないですからね。
次からコツを紹介していきます。

コツ①:ソースコードを書いたら目で確認する。

コツの1つ目としては、ソースコードを書いたあとは、必ず目検チェックをしましょう。
理由は簡単です。人間は間違えるからです。

よく、ソースコードを書き終えると、「はい、次!」となりがちですが、一度立ち止まって確認をしましょう。

例えば、if文1つ抜けているだけでも正しく想定どおりの動作をさせることはできません。細かなところまで全部見る必要はありませんが、処理構造のメインであるところや、登場する変数が多岐にわたる部分については、誤りがあると後々面倒なので確認しておくと良いです。

案外間違っているものなので、一度目検確認しておくことがおすすめです。

コツ②:考慮漏れを防止しましょう。

プログラミングのときだけではありませんが、考慮することを漏らしてしまうと思わぬエラーを引き起こしてしまいます。一瞬でもそのことを考慮し考えていれば防げたものを、そのときは頭から抜けていて後々苦労する、なんてこともよく聞く話です。

それらを防止すべく、漏れやすいポイントはチェックリストにまとめ、プログラムを作成後には目を通すようにしましょう。

例えば、「nullの考慮は正しくできているか。」という設問が1つあれば、変数の値がnullになった場合にも正しく動作することを考慮することができます。作業時に気づきを与えることができるのです。

このようにチェックリストにまとめ、作業時に意識することで未然に事故を防止することができます。

=====

今日は以上となります。
なんでもそうですが、いかに不備を無くしていくかって大事ですね。

広告