とりあえず入れとけ「LaravelDebugbar」【Laravel】

デバッグは大事だけどめんどくさい

デバッグ、つまりバグを発見する作業ですが、そもそも開発時にデバッグツールを使って効率よく開発を進めることが多々あります。
コンパイル言語であればIDEの機能でブレークポイント設定したり、ステップ実行したりとIDEだけで解決することがほとんどです。
しかし、PHP開発はそうはいかない。。。(というよりインタプリタ言語だと??)
元々コンパイル言語メインで仕事をしてきた私にはPHPでのデバッグは地獄そのものでした、、、(笑)

そんなデバッグですが、最近ではVSCodeや開発環境の設定を整えることで簡単にデバッグが出来るようになりました。
サラリーマン時代にはとても感動したものです。
とはいえ、初学者の方がそのあたりを設定するのは非常に大変。。。。

ということでデバッグを少しでも簡単に進めるためにLaravelDebugbarを紹介します。

導入方法

プロジェクトで以下のコマンドを実行します。

composer require barryvdh/laravel-debugbar

昔は導入時に色々と設定をしましたが、少なくともLaravel9ではこのコマンドを実行するだけでOKです。
アプリケーションを起動して、ページ下部に見慣れないツールバーが出ていればOKです。

私が良く使うタブ

Debugbarには様々なタブがありますが、私が良く使うタブについてご紹介します。

Messages

ソースコードで指定したメッセージを出力できます。
処理が上手く動いていないときに、IF分岐にメッセージを設置して動作することを確認したり、変数の中身を出力するために使用します。以下、記述例と出力例です。配列(Collection)など、文字列以外の値が入った変数や処理結果も出力してくれるので助かりますね。

変数の中身を見るのにdd()を使う方もいると思いますが、開発が進んできた際にはお勧めしません。処理が止まってしまいますし、万が一消し忘れたら大変なことになりますからね。。。

\Debugbar::debug(Post::get());
\Debugbar::info('infoレベルメッセージ');
\Debugbar::warning('warningレベルメッセージ');
\Debugbar::error('errorレベルメッセージ');

Views

このタブでは画面表示に使用しているbladeファイルを確認できます。
「どのbladeファイルを使用しているかなんて、自分でわかるだろ!」と言いたくなる人もいるかもしれませんね。開発が進むと、bladeの継承bladeの外部読み込み(include)をするようになるので、複数のbladeを利用するようになります。そういった場合に確認するのに適しているわけですね。

Queries

私個人としては「コレのために入れている」と言っても過言ではないほど使うタブです。画面表示に使用しているクエリが確認できます。
リレーションを多用していると、うっかりN+1問題が発生していたり、QueryBuilderの書き方をミスって思っていたものと違うクエリが発行されていたり。。。。結構あるんですよね。特にOR使った時なんて、、、
思ったようにデータが取れていないときに、処理が悪いのか、そもそもSQLが想定した結果になっていないのかを確認できます。
重複したSQLもすべて表示してくれるので、N+1問題の解決にも役立ちますよ。
画像の黄色いものが「重複」のサインです。処理を見直して、重複が削除できるか検討してみましょう。

Session

セッションの内容を確認できます。
凝った処理を実装すると、セッションに値を保持することも多いので画面で確認できるのは助かりますね。

右上に出ている情報

ちなみにDebugbar右上には基本情報が表示されています。
処理にかかっている時間やメモリ使用量URLなどが出ています。これだけでも役に立ちますね。

DebugbarはHTMLの上に表示されているので、画面の要素に覆いかぶさるように表示されてしまいます。
画面の内容が見えなくなってしまうので、「×」で消したり(消すと画面左下にアイコン表示されるので、アイコン押せばOK再表示されます)、「>」が下向いているものを押下して1行表示にしたりして適宜邪魔にならないように調整しましょう。

ということで、ざっくり紹介させてもらいました。
個人的にはSQLが確認できることが嬉しくて使っています。