プログラミングをしていると、どんなに丁寧にコードを書いてもエラーやバグは必ず発生します。 大切なのは、エラーをゼロにすることではなく、発生したエラーを正しく理解し、効率的に解決するスキルを身につけることです。
今回は、エラーの特定方法と基本的なデバッグ(バグを直す作業)の手順を解説します。
Pythonでエラーが発生すると、例外(Exception)が投げられ、画面にエラーメッセージが表示されます。 このメッセージには、どの種類のエラーが、どの行で発生したのかが詳しく示されます。
以下のコードを見てみましょう。
def divide_numbers(num1, num2):
return num1 / num2
result = divide_numbers(10, 0)
print(result)
このコードを実行すると、次のようなエラーメッセージが表示されます。
ZeroDivisionError: division by zero
このメッセージは「ゼロで割ろうとしたためにエラーが発生した」という意味です。 Pythonでは「0で割る」ことは数学的に許されないため、自動的にエラーを発生させてプログラムを止めています。
では、実際にエラーが起きたときにどのように修正していけばよいでしょうか。ここでは初心者でもすぐに使えるデバッグ方法を紹介します。
もっともシンプルで効果的な方法は、print文を使って変数の中身を出力することです。 これにより、「関数にどんな値が渡されているのか」「処理の途中で値がどう変わっているのか」を目で確認できます。
例えば、先ほどのコードにprint文を追加してみましょう。
def divide_numbers(num1, num2):
print(f"num1: {num1}, num2: {num2}") # デバッグ用の出力
return num1 / num2
result = divide_numbers(10, 0)
print(result)
実行すると、計算が始まる前に num1とnum2の値が表示されます。 これにより、10と0が関数に渡されていることが確認でき、エラーの原因が「0で割ろうとしたこと」だとすぐにわかります。
printデバッグはシンプルですが、初心者がコードを追いかける際にとても役立つテクニックです。
プログラミング初心者がやりがちなのは、エラーが出るとすぐに焦ってしまうことです。 しかし、Pythonが表示しているエラーメッセージには必ず「原因」が書かれています。
例えば、次のようなエラーが出たとしましょう。
TypeError: 'int' object is not callable
これは「整数型(int型)のオブジェクトを関数のように呼び出そうとした」という意味です。 多くの場合、変数名と関数名を同じにしてしまったり、数値を誤って関数のように書いてしまったときに発生します。
このように、エラーメッセージを落ち着いて読むことが、解決の一番の近道になります。
また、エラーの英文を翻訳したり、ChatGPTに解説してもらうことでも、エラーの内容を理解することができます。
プログラムのエラーは避けられませんが、正しく対処できれば怖いものではありません。
今回学んだポイントを振り返りましょう。
デバッグは「エラーと会話する作業」とも言えます。最初は難しく感じるかもしれませんが、繰り返し練習することで、自然とエラーメッセージを読んで原因を推測する力が身についていきます。