4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

株式会社うるる(ULURU)Advent Calendar 2024

Day 15

Laravel DebugBarの紹介

Last updated at Posted at 2024-12-14

この記事はうるるAdvent Calendar2024の記事です。

OurPhotoでサーバーサイドエンジニアをしているkmyです。
LaravelのDebugBar導入してから便利だなーと思いつつ、なんとなく日々、利用していましたが入れた当初はなにそれ、使い方わからんとなっていたので簡単にまとめてみます。

Laravel DebugBarとは?

Laravelのデバッグを支援してくれるツールのことです。
ブラウザ上にデバッグ情報を表示するバーを追加して、アプリケーション上の挙動を追跡しやすくなります。

画面の端っこにいる赤い小さいアイコンのこれがDebugBarになります。
スクリーンショット 2024-12-06 16.44.23.png

展開するとこんな感じ。
スクリーンショット 2024-12-06 16.52.52.png

機能紹介

Messages

ログが出力される場所です。
試しに下記のようなコードを実行してみます。

User::where('id', 1)->get();
throw new \Exception("エラーだよ");

例外含めログが出力されています。
スクリーンショット 2024-12-06 17.14.31.png

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');

下記のように全体の実行時間、場所ごとの実行時間が出力されます。
スクリーンショット 2024-12-06 17.48.00.png

Exceptions

例外が出力されます。
さきほどと同じように例外を投げてみます。

throw new \Exception("エラーだよ");

どのファイルの何行目で例外が発生しているかを表示してくれています。
スクリーンショット 2024-12-06 17.24.10.png

Views

表示ページで使用しているbladeが表示されます。
スクリーンショット 2024-12-06 17.30.43.png

Route

ルーティングの情報が表示されます。
HTTPリクエストメソッドや、どのコントローラのメソッドを参照しているかなどの情報を出してくれます。
デバッグ時にどこ参照してたっけ?とかなってもすぐに確認出来るので便利です。
スクリーンショット 2024-12-09 13.52.09.png

Queries

発行されているクエリの数や発行クエリが表示されています。
dumpとかddを使用するとクエリが下記のようになって見にくいのもDebugBarなら一回で全量見られるので便利です。
select * from `users` where `id` = ? and `users`.`deleted_at` is null

スクリーンショット 2024-12-09 14.21.06.png

Models

参照しているモデルとその数が表示されます。
スクリーンショット 2024-12-09 14.29.49.png

Mails

ここは使用したことも、使用予定もないのでメモです...
調べた限りでは過去に推奨されていたSwift Mailerはサポート終了しているため、Symfonyを使用してほしいとのことです。

Optionsで便利そうなものの紹介

DebugBarはdebugbar.phpというファイルで表示するタブの表示、非表示や表示内容を調整することが出来ます。
個人的に使ってみて便利そうなものをいくつか紹介します。
公式のドキュメントはこれです。

explain表示の追加

Queriesにexplainを自動で出せるようになります。
下記にdebugbar.phpの一部を抜粋します。

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いちいちしなくても良いので便利。
スクリーンショット 2024-12-12 17.58.15.png

Timelineにクエリの実行時間を出す

Timelineにクエリの実行時間を出力して、どこのタイミングでどれくらい時間がかかったのかを出力してくれます。

debugbar.php
'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,
        ),

赤枠内に下記のような形で出力されます。
スクリーンショット 2024-12-12 18.32.04.png

まとめ

DebugBarを使い始める前はどのblade見てるんだっけ、コントローラーどれだっけなーみたいなことが多かったのですが、入れてからは調査する際に楽に対象のファイル見つけられるようになったのでおすすめです。
興味があったら使ってみてください〜

明日はk_yamakiさんの記事です!
お楽しみに〜

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?