この記事はうるるAdvent Calendar2024の記事です。
OurPhotoでサーバーサイドエンジニアをしているkmyです。
LaravelのDebugBar導入してから便利だなーと思いつつ、なんとなく日々、利用していましたが入れた当初はなにそれ、使い方わからんとなっていたので簡単にまとめてみます。
Laravel DebugBarとは?
Laravelのデバッグを支援してくれるツールのことです。
ブラウザ上にデバッグ情報を表示するバーを追加して、アプリケーション上の挙動を追跡しやすくなります。
画面の端っこにいる赤い小さいアイコンのこれがDebugBarになります。
機能紹介
Messages
ログが出力される場所です。
試しに下記のようなコードを実行してみます。
User::where('id', 1)->get();
throw new \Exception("エラーだよ");
Timeline
実行時間の計測が出来ます。
下記のように計測したい場所を挟んで実行すると場所ごとに時間を確認できます。
start_measure('query1', 'クエリ1の処理');
// 計測したい処理
stop_measure('query1');
試しに下記のコードを流してみます。
start_measure('query1', 'クエリ1の処理');
User::where('id', 1)->get();
stop_measure('query1');
start_measure('query2', 'クエリ2の処理(+ sleep)');
User::where('id', 2)->get();
sleep(2);
stop_measure('query2');
下記のように全体の実行時間、場所ごとの実行時間が出力されます。
Exceptions
例外が出力されます。
さきほどと同じように例外を投げてみます。
throw new \Exception("エラーだよ");
どのファイルの何行目で例外が発生しているかを表示してくれています。
Views
Route
ルーティングの情報が表示されます。
HTTPリクエストメソッドや、どのコントローラのメソッドを参照しているかなどの情報を出してくれます。
デバッグ時にどこ参照してたっけ?とかなってもすぐに確認出来るので便利です。
Queries
発行されているクエリの数や発行クエリが表示されています。
dumpとかddを使用するとクエリが下記のようになって見にくいのもDebugBarなら一回で全量見られるので便利です。
select * from `users` where `id` = ? and `users`.`deleted_at` is null
Models
Mails
ここは使用したことも、使用予定もないのでメモです...
調べた限りでは過去に推奨されていたSwift Mailerはサポート終了しているため、Symfonyを使用してほしいとのことです。
Optionsで便利そうなものの紹介
DebugBarはdebugbar.phpというファイルで表示するタブの表示、非表示や表示内容を調整することが出来ます。
個人的に使ってみて便利そうなものをいくつか紹介します。
公式のドキュメントはこれです。
explain表示の追加
Queriesにexplainを自動で出せるようになります。
下記にdebugbar.phpの一部を抜粋します。
'options' => array(
'auth' => array(
'show_name' => false,
),
'db' => array(
'with_params' => true,
'timeline' => false,
'backtrace' => false,
'explain' => array(
'enabled' => true, //ここをtrueにする
'types' => array('SELECT'),
),
'hints' => true,
),
toSqlとかexplainいちいちしなくても良いので便利。
Timelineにクエリの実行時間を出す
Timelineにクエリの実行時間を出力して、どこのタイミングでどれくらい時間がかかったのかを出力してくれます。
'options' => array(
'auth' => array(
'show_name' => false,
),
'db' => array(
'with_params' => true,
'timeline' => true, //ここをtrueにする
'backtrace' => false,
'explain' => array(
'enabled' => false,
'types' => array('SELECT'),
),
'hints' => true,
),
まとめ
DebugBarを使い始める前はどのblade見てるんだっけ、コントローラーどれだっけなーみたいなことが多かったのですが、入れてからは調査する際に楽に対象のファイル見つけられるようになったのでおすすめです。
興味があったら使ってみてください〜
明日はk_yamakiさんの記事です!
お楽しみに〜