Back to Blog

Flaskでデバッグする方法を解説【デバッグツールバーを活用しよう】

flask

2024年7月22日

こんにちは!

今回の記事では、Flaskでデバッグをする方法について解説します。

デバッグとは、ソフトウェアのソースコードのエラーやバグを見つけて修正するプロセスのことです。Flaskが予期した動作をしない場合にデバッグが必要になります。

デバッグの方法を知ることで、不具合の対処の時間が早くなり、開発の効率が上がります。

Flaskでデバッグする方法を解説

Flaskでデバックする方法は、以下の3つがあります。

  • デバッグモードを有効にする
  • デバッグツールバーを活用する
  • ログを出力する

それぞれについて解説します!

デバッグモードを有効にする

Flaskにはデバッグモードがあり、エラーメッセージを詳細に表示し、コードの変更を自動的に検知して再起動する便利な機能があります。

これを有効にするには、app.pyで以下のように設定します。

from flask import Flask

app = Flask(__name__)

if __name__ == "__main__":
    app.run(debug=True)

その後、app.pyファイルを実行して、Flaskを起動させます。

python app.py

app.pyファイルを直接実行すると、__name__は__main__となります。つまり、app.run(debug=True)が実行され、デバッグモードが有効になります。

デバッグモードが有効になっていると、Webページを表示した際、以下のようなエラーメッセージが表示されます。

デバッグモードを有効にした場合の表示

デバッグツールバーを活用する

Flask-DebugToolbarは、Flaskアプリケーションのデバッグを助けるツールです。

これを使うことで、リクエストやレスポンス、SQLAlchemyのクエリなどの詳細情報を簡単に確認できます。

インストールするには、以下のコマンドを実行します。

pip install flask-debugtoolbar

有効にするには、以下のようにapp.pyを編集します。

from flask import Flask
from flask_debugtoolbar import DebugToolbarExtension

app = Flask(__name__)
app.debug = True
app.config['SECRET_KEY'] = 'your_secret_key'

toolbar = DebugToolbarExtension(app)

if __name__ == "__main__":
    app.run()

デバッグバーは、デバッグモードが有効の場合のみ起動します。また、SECRET_KEYが必要なので、適当な文字列を指定します。

参考サイト

ログを出力する

Pythonの標準ライブラリであるloggingモジュールを使用して、Flaskアプリケーションでログを出力させます。

以下の例では、app.logger.debugとapp.logger.infoを使用して、変数nameとageの値をログに出力しています。

import logging
from flask import Flask

app = Flask(__name__)

# ログの基本設定
logging.basicConfig(level=logging.DEBUG)

@app.route('/')
def index():
    name = "Alice"
    age = 30
    
    # 変数の中身をログに出力
    app.logger.debug('Name: %s', name)
    app.logger.info('Age: %d', age)
    
    return "Check the logs for variable values."

if __name__ == "__main__":
    app.run(debug=True)

このようにログをコードの間に設定することで、現在の変数の値などを出力することが可能です。

まとめ

今回の記事では、Flaskでデバッグする方法について解説しました。

基本的なデバッグモードの設定から、Flask-DebugToolbarの設定方法、loggingの活用方法を解説しました。

これらのツールや手法を駆使して、効率的にデバッグを行い、より安定したアプリケーションを開発してください。

今回の記事がWeb開発のお役になれば幸いです。

ここまでお読みいただきありがとうございました。

Webの知識を作りながら学ぶ
Flask WebAcademy

SNSアプリやチャットアプリ、さまざまなアプリを作りながら学べる実践的なカリキュラム

詳細を見る