Tips

今日の開発Tips(2025-07-28)

長時間のデバッグに悩まされている時、printデバッグは手軽ですが、コードに直接print文を追加するのは非効率です。 デバッグ用のprint文を簡単に追加・削除できる方法があれば、開発効率を大幅に向上できます。このTipsでは、Pythonのコンテキストマネージャーを活用した、スマートなprintデバッグ手法を紹介します。

Pythonコンテキストマネージャーを使ったスマートprintデバッグ

デバッグ用のprint文を、コンテキストマネージャーを使って簡単に制御できます。以下のコード例では、debug_printコンテキストマネージャーがprint文の有効・無効を切り替えます。

from contextlib import contextmanager

@contextmanager
def debug_print(enabled=True):
    try:
        if enabled:
            yield
    finally:
        pass

with debug_print(enabled=True): # デバッグモード有効時はprint文が実行される
    print("変数の値:", my_variable)
    print("関数の中身:", my_function())

with debug_print(enabled=False): # デバッグモード無効時はprint文は実行されない
    print("このprint文は表示されない")

enabled引数をFalseに設定することで、print文を無効化できます。 デバッグが完了したら、enabled=Falseに変更するだけで、print文をきれいに削除できます。 コメントアウトするより、コードの可読性を保ちやすく、開発速度も向上します。

注意点:enabled変数をグローバル変数にしたり、コマンドライン引数で制御するなど、より高度な制御も可能です。 ただし、複雑になりすぎるとかえって非効率になるため、必要に応じて使い分けることが重要です。