Python応用

誰も教えてくれなかったデバッグの本質「戦略的ロギング」とは?

「本番でエラーが出た!でもどこが原因かさっぱりわからない…😱」

こんな経験、一度はありますよね。とりあえずコードをいじってみたり、Stack Overflowを片っ端から読んだり、最近だとエラーをそのままAIに貼り付けたり…。

実は、こういった「当てずっぽうデバッグ」から抜け出すためのスキルが海外エンジニアのコミュニティで注目を集めています。それが 「戦略的ロギング(Strategic Logging)」 です。

戦略的ロギングって何が違うの?

debugging code
debugging code / Photo by Godfrey Atima via Pexels

「ロギングって print() でデバッグするやつでしょ?」と思った方、ちょっと待ってください。

ただ値を出力するだけの print デバッグとは根本的に考え方が違います。戦略的ロギングとは、「コードが今何をしているかを、体系的に可視化する仕組みを最初から設計すること」 です。

イメージとしては、飛行機のフライトレコーダーに近いです。問題が起きたときに「さかのぼって確認できる記録」を意図的に残しておく、という発想ですね。

Pythonで実践する戦略的ロギングの基本

Pythonには標準ライブラリに logging モジュールがあります。これを使えば print とは比べ物にならないくらい柔軟なログが残せます。

まずは基本的な設定から見てみましょう👇

# strategic_logging_sample.py
import logging

# ログの基本設定(レベル・フォーマット・出力先を一括で管理)
logging.basicConfig(
    level=logging.DEBUG,
    format="%(asctime)s [%(levelname)s] %(funcName)s: %(message)s",
    handlers=[
        logging.StreamHandler(),           # コンソール出力
        logging.FileHandler("app.log")    # ファイルにも保存
    ]
)

logger = logging.getLogger(__name__)

def calculate_discount(price, discount_rate):
    # 処理の入り口でINFOログを残す
    logger.info(f"割引計算を開始 - 元値: {price}, 割引率: {discount_rate}")

    # 想定外の値はWARNINGで記録
    if discount_rate > 1.0:
        logger.warning(f"割引率が100%を超えています: {discount_rate}")

    result = price * (1 - discount_rate)
    logger.debug(f"計算結果: {result}")  # 詳細はDEBUGレベル

    return result

# 実行
calculate_discount(5000, 0.2)
calculate_discount(5000, 1.5)  # 意図的におかしな値を渡してみる

ポイントをまとめるとこんな感じです:

  • DEBUG:細かい処理の途中結果(開発中のみ確認)
  • INFO:処理の開始・終了など「何が起きたか」の記録
  • WARNING:おかしいけど動いている状態の記録
  • ERROR:処理が失敗したときの記録

本番で役立つ「ログを設計する」という考え方


戦略的ロギングの本質は、「何かが起きてから調べる」のではなく「調べやすいように先に仕込んでおく」 ことです。

具体的には、以下のポイントを意識するだけでデバッグの効率がガラッと変わります👇

  • 関数の入り口と出口にログを入れる
  • ループや分岐の結果を記録しておく
  • 外部APIへのリクエスト・レスポンスを必ず残す
  • 例外は logger.exception() でスタックトレースごと保存する

まとめ

戦略的ロギングは「事後のデバッグ」を「事前の設計」に変えるスキルです。print を使い捨てするのをやめて、logging モジュールで意図的にログを設計する習慣をつけるだけで、本番環境でのトラブル対応が驚くほどラクになります。

ぜひ今日から自分のコードに取り入れてみてください!🚀 一緒にデバッグ力を底上げしていきましょう。

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る

徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

もしも

徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

電子工作とプログラミングを同時に学べる

Amazonで見る

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

もしも

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

AIコーディングの現場活用法を学ぶ一冊

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です