laravel-debugbarでデバッグを快適に

アイキャッチ画像

デバッグ作業をどのように行っていますか?

システムを開発をするうえでデバッグ作業は避けては通れません。

例えばLaravelの場合、デフォルトで開発環境向けにインストールされるライブラリ

spatie/laravel-ignition

https://packagist.org/packages/spatie/laravel-ignition

を使用してどこでエラーが出ているかチェックすることが多いと思います。

次のような画面、見覚えありますよね?

エラー時はこの画面からどのファイルの何行目でエラーが出ているのか確認することができます。

エラーを潰すだけがデバッグ作業ではない

もちろんまずはエラーが出ないように開発するのが大前提ですが、エラーが表示されず、問題なく画面が表示されていたとしても対応が必要な場合があります。

  • 不要なクエリが実行されていないか?
  • クエリの実行時間に問題はないか?
  • 正しくデータが保存されているか?
  • 画面表示に時間がかかっていないか?

これらについても対応が必要になります。

実行されているクエリや実行時間を確認するためにdd()やvar_dumpで出力するのも面倒ですし、表示も見づらいですよね。

laravel-debugbarの導入

そこでlaravel-debugbarを導入します。

https://packagist.org/packages/fruitcake/laravel-debugbar

以前は下記のライブラリとして公開されていました。

https://packagist.org/packages/barryvdh/laravel-debugbar

現在もバージョンは統一されていますが、今後はfruitcakeがメインとなるようです。

以前のライブラリは更新が続く保証がないので、すでに旧バージョンを導入済みの場合はbarryvdh/laravel-debugbarをアンインストールして、fruitcake/laravel-debugbarをインストールしなおしましょう。

インストール方法

ライブラリのインストールは下記のコマンドで可能です。

debugbar用のconfigファイルを作成する場合は下記も実行してください。

.envのAPP_DEBUG=true、かつ、APP_ENV=localの場合のみ各画面の下部にlaravel-debugbarが表示されます。

laravel-debugbarで出来ること

Requestの内容を表示

各処理時間の表示

処理が始まってから画面が表示されるまでの時間を確認できます。

使用しているviewファイルの確認

発行されたクエリと実行時間の確認

不要なクエリが発行されていないか、N+1問題が発生していないかなどを確認できます。

読み込まれているモデル

その他にも以下の情報を確認できます。

ログ確認

Log::info()の内容や、専用のDebugbar::info()などを使用するとMessagesというタブが追加され、そこで出力内容を確認できます。

どこまで正しく処理が動き、どこで止まっているかのチェックなどに利用できます。

ルーティング

どのルーティングを経由してどのController、メソッドが呼ばれているか確認できます。

セッション、Cookie

セッションやCookieに保存されている内容を確認できます。

まとめと注意点

確認が必要な情報を1カ所で確認出来るので非常にデバッグ作業が楽になります。

一つ注意点として、基本的にはローカル環境のみ、かつデバッグ時のみ表示されるため問題ないですが、下記の設定を.envに追記した場合、本番環境であっても強制的にlaravel-debagbarが有効化されてしまいます。

リリース前に本番環境でのみエラーが出るので原因を調査したいといった場合には利用できますが、リリース後は絶対にdebugbarが表示されないように設定しましょう。

悪意のあるものにとって重要な情報がまる見えになってしまうためです。