デバッグとはプログラム内のバグを見つけて、改修/修正を行うことを指します。
デバッグをすることで意図した処理が行われているか、思った通りの値が返ってきているかを見ていくこと作業のことを意味することが多いです。
つまり、デバッグ効率が上がることで開発効率が上がると言っても過言ではありません。
Laravelではデバッグを行いやすくするために、デバッグバーというツールを用意してくれています。
デバッグバーを導入することでLaravelにおける開発効率がかなり上がります。
実際、私はデバッグバーがないと生きていけない体になりました。(笑)
この記事ではそんなデバッグバーを導入する方法を解説していきます。
簡単ですので、ぜひ自分のLaravelプロジェクトに導入してみてください。
デバッグバーの導入
composerでデバッグバーをインストールする
それでは早速デバッグバーをインストールしていきましょう。
デバッグバーのインストールはbarryvdh/laravel-debugbarというパッケージをcomposerの下記コマンドで行います。
composer require barryvdh/laravel-debugbar
コマンド実行後にcomposer.jsonを確認すると、デバッグバーの記述が追記されていることが確認できます。
{
"name": "laravel/laravel",
"type": "project",
...省略...
"require": {
"php": "^7.2.5|^8.0",
"barryvdh/laravel-debugbar": "^3.6",
...省略...
},
...省略...
}
「barryvdh/laravel-debugbar」という記述が確認出来たら、無事にインストールが出来ています。
.envファイルを編集する
インストールしただけではデバッグバーは使えるようになりません。
プロジェクトフォルダ直下にある.envファイルの「APP_DEBUG
」という項目があります。APP_DEBUG
がfalse
になっている場合は、true
に変更してあげます。
APP_DEBUG=true
これでデバッグバーの導入が完了しました。画面を確認してみましょう。
画面の左下にLaravelのアイコンが追加されているのが確認できます。
クリックしてみましょう。
画面した部分に表示されたのがデバッグバーの領域です。
ここに様々な情報が表示されて、デバッグが行えるようになります。
無事にデバッグバーの導入が出来ました。
デバッグバーの使い方
それではデバッグバーの使い方をいくつか紹介しましょう。
Messages
Messagesではデバッグメッセージを出力します。
デバッグメッセージを出力するためのメソッドは様々ありますが、よく用いられるのはinfo
メソッドです。
コントローラーなどで下記のような使い方をします。
public function index(){
$users = User::all();
\Debugbar::info($users);
return view('test.index', ['users' => $users]);
}
引数に変数やオブジェクト、コレクションなどを指定することで、中身をデバッグバーで確認することが出来ます。
attributesに連想配列の形でデータを確認することが出来ます。(attributesが現在保持しているデータで、originalには編集前のデータが入っています。)
もちろん、引数に文字列リテラルを指定することで単にメッセージを表示することも可能です。
Exceptions
エラーが発生した際にエラーの内容やエラー発生個所を表示してくれます。
Laravelはブラウザにエラーを表示してくれるから、別に必要ないのではないか?と思うかもしれませんが、非同期処理などの場合には非常に便利です。
非同期処理の場合は、サーバーサイドでエラーが発生したときにブラウザにはエラーが表示されなかったり、ブラウザのデベロッパーツールを確認しても500エラーしか出なかったりと原因究明するのに時間がかかったりします。
デバッグバーでエラー個所をすぐに特定できるので、開発効率も爆上がりです。
Views
表示されているBladeテンプレートを確認することができます。
もちろん、インクルードされているコンポーネントのBladeテンプレートなども全て確認できます。
Queries
ここでは実行されているSQL文を確認することができます。
SQLをちゃんと理解している人であれば、期待したデータを取得するためのSQL文が実行されているか確認できることはデバッグする上でかなり役に立ちます。
まとめ
Laravelにデバッグバーを導入する方法から使い方まで紹介してきました。
Laravelでの開発においてデバッグバーを導入することで開発効率が上がることは間違いないでしょう。
また、最後に本番環境では.envのAPP_DEBUG=false
にしてデバッグバーは表示しないようにするのが良いでしょう。
デバッグバーでクエリやリクエストが確認できてしまうため、情報漏洩やセキュリティ的にかなり問題があります。
適切にデバッグバーを使いこなせるようになりましょう。