laravel-debugbarの導入手順と初期設定でつまずかないポイント
laravel-debugbarは画面下部にSQLやルート、メモリ使用量を表示するデバッグツールです。導入はcomposer require一行で済み、APP_DEBUG=trueのときだけ自動で有効になります(barryvdh/laravel-debugbarの3系を想定)。
Composerでのインストールと環境別の有効化制御
開発でのみ使うツールなので、必ず--devを付けます。こうしておけば、うっかり本番のautoloadに乗る心配がありません。
composer require barryvdh/laravel-debugbar --dev
有効・無効はデフォルトでAPP_DEBUGに連動しますが、DEBUGBAR_ENABLEで明示的に上書きできます。ステージングでだけ表示したいといった要件では、この環境変数を.envに書くのが確実です。設定ファイルを直接触るより、環境ごとの.envで切り替えるほうが事故が起きにくいでしょう。
画面に表示されないときに確認すべき設定と原因
「入れたのに出ない」でまず疑うのはAPP_DEBUG=falseのままになっているケースです。.envを書き換えても、php artisan config:clearを実行しない限り古い設定がキャッシュされ、変更は反映されません。
もう一つ多いのが、JSONやリダイレクトのレスポンスにはバーが出ないという仕様です。debugbarはHTMLの</body>直前にマークアップを注入する仕組みのため、APIエンドポイントでは描画されません。この場合はstorage/debugbar/に出力されるデータを、ブラウザのXHRから確認する運用に切り替えます。
SQL・ルート・メモリ情報を使ったパフォーマンス調査の実践
debugbarの真価はクエリタブにあります。1リクエストで発行された全SQLと実行時間、重複クエリが一覧で見えるので、体感の遅さを数字で裏付けられます。
N+1問題をクエリタブから特定して解消する流れ
一覧ページでクエリ数が数十〜数百に膨らんでいたら、まずN+1を疑います。同一のselectが件数分並ぶため一目で分かります。原因のリレーションをwith()でeagerロードすれば、クエリは数本に収束します。
テストデータを手早く用意したいときはLaravel Factoryでレコードを量産し、件数を増やしてもクエリ数が変わらないことを確認します。これで修正の効果を再現性のある形で検証できます。
本番環境で誤って有効化しないための運用上の防御策
debugbarはクエリ内容やアプリ内部の状態を画面に晒すため、本番で有効化すると情報漏洩に直結します。最大のリスクは、障害調査のため一時的にAPP_DEBUG=trueにして戻し忘れる運用です。
対策として、本番の.envにはDEBUGBAR_ENABLE=falseを明示し、APP_DEBUGとは独立させて二重の歯止めをかけます。さらにデプロイ時はphp artisan config:cacheを通したうえで、トップページのHTMLソースにdebugbarのマークアップが混入していないか実際に目視で確認しましょう。