1. はじめに|「トレースバック」ってなに?初心者が混乱しがちなポイント
Pythonでプログラムを書いていて、実行したときにこんなメッセージが出たことはありませんか?
Traceback (most recent call last):
File "example.py", line 3, in <module>
result = 10 / 0
ZeroDivisionError: division by zero
この「Traceback(トレースバック)」という言葉、なんだか難しそうに見えますよね。でも、実はエラーの「原因を探すヒント」が詰まった、すごく大事なメッセージなんです!
初心者のうちは「うわっ、英語ばっかり!怖い!」と感じてしまうかもしれませんが、大丈夫。このトレースバックを読み解くコツさえつかめば、どこで何が起きたのかが一目でわかるようになります。
この記事では、そんなトレースバックについて、
- どんな情報が書かれているのか
- どうやって読み解けばいいのか
tracebackモジュールを使ってエラー情報をログとして保存する方法
などを、やさしく丁寧に解説していきます。
「エラーが出たらパニック!」という状態から、「あっ、どこが悪いかすぐにわかるぞ!」と自信が持てるようになることを目指して、一緒に学んでいきましょう!
2. トレースバックの基本|どこをどう見ればいいの?
トレースバック(Traceback)は、Pythonでエラーが起きたときに自動で表示される「エラーの履歴(記録)」です。これを見ることで、「どの行で何が原因でエラーになったのか」がわかります。
では、まず基本的なトレースバックの形を見てみましょう。
Traceback (most recent call last):
File "sample.py", line 5, in <module>
result = divide(10, 0)
File "sample.py", line 2, in divide
return a / b
ZeroDivisionError: division by zero
これを1行ずつ、ゆっくり読み解いていきますね。
✅ ①「Traceback (most recent call last):」
これは「トレースバックの始まり」を示す見出しみたいなものです。
「直近で呼び出された処理から順番に、さかのぼって表示するよ〜」という意味です。
✅ ② File ... in <module> や in 関数名
たとえば次の行:
File "sample.py", line 5, in <module>
ここでは、「sample.pyというファイルの5行目でエラーが起きたよ」ということを教えてくれています。
さらに次の行:
File "sample.py", line 2, in divide
これは、「divideという関数の中の2行目で何かが起きていた」ということを示しています。
つまり、関数がどう呼び出されたかの履歴(スタック)を上から順にたどれるのです。
✅ ③ どのコードが実行されたか
それぞれのFile行の下には、実際に実行されたコードの1行が表示されます。
return a / b
この行で実際に「割り算」が行われているのがわかりますよね。
✅ ④ 一番下に注目!「エラーの種類と原因」
最後の行が一番大事!
ZeroDivisionError: division by zero
これは、「0で割り算しちゃダメですよ!」というPythonからの怒られメッセージです。
このように、一番下には**エラーの種類(ZeroDivisionError)と、その理由(division by zero)**が書かれています。ここを読むと、「何が問題だったのか」がズバリわかるのです。
💡ポイントまとめ
| トレースバックの位置 | 意味 |
|---|---|
| 上の方 | エラーが起こるまでに実行された関数の流れ |
| 下の方 | 実際にエラーが起きた場所 |
| 一番下の行 | エラーの種類とその理由 |

次は、実際にトレースバックを使って「エラーの場所」を特定する練習をしてみましょう!
3. 実例で学ぶ!トレースバックの読み解き方
ここでは、実際のPythonコードとトレースバックの表示を見ながら、エラーの原因をどうやって見つけるかを一緒に体験してみましょう!
🔰 例1:ゼロ除算エラー(ZeroDivisionError)
まずは、よくある「0で割っちゃった」パターンです。
def divide(a, b):
return a / b
result = divide(10, 0)
このコードを実行すると、次のようなトレースバックが表示されます:
Traceback (most recent call last):
File "example.py", line 4, in <module>
result = divide(10, 0)
File "example.py", line 2, in divide
return a / b
ZeroDivisionError: division by zero
🔍 読み解きポイント:
line 4 in <module>→ メイン処理でdivide(10, 0)を実行したところline 2 in divide→divide関数の2行目、a / bで計算しようとしてるZeroDivisionError: division by zero→ 0で割ったのが原因!
➡️ このトレースバックから、「b=0」が原因でエラーになったことがわかります。
🔁 例2:関数の中でさらに関数を呼び出している場合
次は、関数が入れ子になっているパターンです。
def calc():
return divide(5, 0)
def divide(x, y):
return x / y
calc()
これを実行すると、こんな感じのトレースバックになります。
Traceback (most recent call last):
File "example.py", line 7, in <module>
calc()
File "example.py", line 2, in calc
return divide(5, 0)
File "example.py", line 5, in divide
return x / y
ZeroDivisionError: division by zero
🔍 読み解きポイント:
- 一番上:
calc()を呼び出したのはexample.pyの7行目 - その中で
divide(5, 0)を呼び出して… - 結果として
x / yの計算でZeroDivisionErrorが発生!
➡️ 関数が重なっていても、トレースバックを上からたどれば原因までしっかり追えます。
🧠 コツまとめ:
- 一番下のエラー種類と理由をまずチェック(今回は
ZeroDivisionError) - そのエラーがどのコードで発生したかを見つける
- 関数がどこから呼ばれたかを、上にたどって確認する

トレースバックを読めるようになると、Pythonのエラーが「怖いもの」ではなく「問題を教えてくれる先生」に変わりますよ!
4. tracebackモジュールを使ってみよう
ここまでで、Pythonのトレースバックの読み方はバッチリですね!
でも実際の開発では「エラーが起きたら、その内容をファイルに保存して後で確認したい!」という場面もよくあります。そんなときに便利なのが、Pythonに標準で用意されている tracebackモジュール です。
🔧 tracebackモジュールってなに?
tracebackは、Pythonのエラー情報(スタックトレース)を文字列として取得したり、ファイルに出力したりできる便利なモジュールです。
📄 traceback.format_exc():文字列で取得
import traceback
try:
result = 1 / 0
except ZeroDivisionError:
error_info = traceback.format_exc()
print("エラー内容を取得しました:")
print(error_info)
✅ ポイント
format_exc()を使うと、トレースバック全体を1つの文字列として取得できます。- これをログファイルに保存したり、Slackやメールで送ったりできます。
🖨 traceback.print_exc():ファイルに出力
import traceback
try:
result = 1 / 0
except ZeroDivisionError:
with open("error_log.txt", "w") as f:
traceback.print_exc(file=f)
print("エラー内容をファイルに書き出しました。")
✅ ポイント
print_exc()はそのまま 指定したファイルにトレースバックを出力してくれます。- デバッグ用ログを残したいときに便利!
📝 ログ出力と組み合わせてみよう
実務では、loggingモジュールと一緒に使うのが定番です。
import traceback
import logging
logging.basicConfig(filename='error.log', level=logging.ERROR)
try:
x = 10 / 0
except ZeroDivisionError:
logging.error("エラーが発生しました:\n%s", traceback.format_exc())
これで、error.log にエラー内容(トレースバック付き)が記録されます!
🧠 まとめ
| 関数名 | できること |
|---|---|
traceback.format_exc() | トレースバックを文字列で取得する |
traceback.print_exc(file=...) | トレースバックをファイルに直接出力する |
logging.error(..., traceback.format_exc()) | ログファイルにエラー情報を残すときに便利 |

次は、実際にトレースバックをログファイルに保存するコード例をまとめて紹介します。
5. トレースバックを使ったエラーログの保存例
ここでは、実際にトレースバックをログファイルに保存するサンプルコードを紹介します。
開発中のアプリやツールで、エラーが発生したときにその内容を記録しておけば、あとで「何が起きたのか」を落ち着いて確認できますよね。そんなときに便利なのが、tracebackとloggingの組み合わせです!
📝 例:エラーログをファイルに出力するPythonコード
import logging
import traceback
# ログ設定:ログレベルと出力ファイルを指定
logging.basicConfig(
filename='error.log', # 出力先のログファイル名
level=logging.ERROR, # ログに記録する最低レベル
format='%(asctime)s [%(levelname)s] %(message)s' # ログの書式
)
def divide(a, b):
return a / b
try:
result = divide(10, 0)
except Exception:
# トレースバックの情報をログに出力
logging.error("エラーが発生しました:\n%s", traceback.format_exc())
✅ コードのポイント
logging.basicConfig()で、ログの設定をしています。traceback.format_exc()を使って、エラーのトレースバックを文字列として取得。logging.error()でその内容をerror.logに書き込みます。
このコードを実行すると、同じフォルダ内に error.log ファイルが作成され、次のようなログが保存されます:
2025-06-12 12:34:56,789 [ERROR] エラーが発生しました:
Traceback (most recent call last):
File "example.py", line 12, in <module>
result = divide(10, 0)
File "example.py", line 7, in divide
return a / b
ZeroDivisionError: division by zero
🧠 補足:本番環境ではどう使う?
実際の開発現場では、次のような形で活用されます。
| シーン | 活用例 |
|---|---|
| ローカル開発 | print()の代わりにloggingを使ってエラー内容を保存 |
| Webアプリ本番環境 | サーバーログにトレースバックを残し、運営チームが後から確認できるようにする |
| チーム開発 | Slackやメール通知にログを送る仕組みを追加すれば、即対応できる体制に! |
6. まとめ|トレースバックを味方につけて、エラーを怖がらない開発を
ここまで、Pythonの「トレースバック(traceback)」についてじっくり見てきました。
最初はちょっと怖く見えるエラーメッセージも、**仕組みがわかれば「ただの情報」**だということがわかったと思います。
📝 今回のポイントをおさらい!
- トレースバックは、エラーの発生場所や原因を教えてくれるヒントのかたまり!
- 上から順に読むことで、プログラムの流れをたどれる
- 一番下の行には、エラーの種類と原因が書かれている
tracebackモジュールを使えば、エラーの内容をログとして保存できるloggingモジュールと組み合わせれば、本番環境でも便利に活用可能!

エラーは誰にでも起こるものです。プログラミングに慣れている人でも、毎日どこかでエラーと戦っています。
大切なのは、エラーを恐れず、トレースバックを読み解く習慣をつけること。それだけで、Python開発がグンと楽になりますよ!
📚あわせて読みたい|エラー対処力をもっと鍛えたいあなたへ
Pythonのエラー対策やログ出力に関する理解をさらに深めたい方は、以下の記事もぜひチェックしてみてください!
- 🔗 【Python入門】ログ出力の基本をやさしく解説|printとの違いやloggingの使い方も紹介!
↳ ログの仕組みや、printとの違いがよくわかります! - 🔗 【Python入門】引数のデフォルト値とタイプアノテーションの使い方をやさしく解説!
↳ エラーを防ぐために「型を意識する」こともとても大切です。
よくある質問(Q&A)
- Qトレースバックは毎回表示されるんですか?
- A
はい、Pythonで例外(エラー)が発生すると、通常は標準出力に自動でトレースバックが表示されます。ただし、try-except文で例外をキャッチした場合は表示されません。
- Qトレースバックの内容は日本語にできませんか?
- A
基本的にトレースバックのメッセージは英語です。ただし、意味がわかってくれば、英語でも読めるようになります!また、エラー文をコピーして検索すれば、日本語で解説しているサイトが見つかることも多いです。
- Qトレースバックを使って自動通知できますか?
- A
はい、
traceback.format_exc()で取得した内容を、メール・Slack・エラーレポートなどに自動で送る仕組みを作れば、開発中のトラブルをすばやく検知できます!







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。