<一覧に戻る

Pythonのエラー特定とデバッグ方法

プログラミングをしていると、どんなに丁寧にコードを書いてもエラーやバグは必ず発生します。 大切なのは、エラーをゼロにすることではなく、発生したエラーを正しく理解し、効率的に解決するスキルを身につけることです。

今回は、エラーの特定方法と基本的なデバッグ(バグを直す作業)の手順を解説します。

エラーの特定

Pythonでエラーが発生すると、例外(Exception)が投げられ、画面にエラーメッセージが表示されます。 このメッセージには、どの種類のエラーが、どの行で発生したのかが詳しく示されます。

以下のコードを見てみましょう。

def divide_numbers(num1, num2):
    return num1 / num2

result = divide_numbers(10, 0)
print(result)

このコードを実行すると、次のようなエラーメッセージが表示されます。

ZeroDivisionError: division by zero

このメッセージは「ゼロで割ろうとしたためにエラーが発生した」という意味です。 Pythonでは「0で割る」ことは数学的に許されないため、自動的にエラーを発生させてプログラムを止めています。

デバッグの基本方法

では、実際にエラーが起きたときにどのように修正していけばよいでしょうか。ここでは初心者でもすぐに使えるデバッグ方法を紹介します。

1. print文で変数の値を確認する

もっともシンプルで効果的な方法は、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デバッグはシンプルですが、初心者がコードを追いかける際にとても役立つテクニックです。

2. エラーメッセージを正しく読む

プログラミング初心者がやりがちなのは、エラーが出るとすぐに焦ってしまうことです。 しかし、Pythonが表示しているエラーメッセージには必ず「原因」が書かれています。

例えば、次のようなエラーが出たとしましょう。

TypeError: 'int' object is not callable

これは「整数型(int型)のオブジェクトを関数のように呼び出そうとした」という意味です。 多くの場合、変数名と関数名を同じにしてしまったり、数値を誤って関数のように書いてしまったときに発生します。

このように、エラーメッセージを落ち着いて読むことが、解決の一番の近道になります。

また、エラーの英文を翻訳したり、ChatGPTに解説してもらうことでも、エラーの内容を理解することができます。

まとめ

プログラムのエラーは避けられませんが、正しく対処できれば怖いものではありません。

今回学んだポイントを振り返りましょう。

  • Pythonのエラーメッセージには「エラーの種類」と「発生した場所」が書かれているので、まずは落ち着いて読む。
  • print文を活用すれば、変数の値を確認しながらエラーの原因を特定できる。

デバッグは「エラーと会話する作業」とも言えます。最初は難しく感じるかもしれませんが、繰り返し練習することで、自然とエラーメッセージを読んで原因を推測する力が身についていきます。

出力結果: