Laravelのデバッグにdddヘルパーを使ってみた(Laravelエラー画面解説)

Laravel

Laravelでデバッグするときに、ddヘルパーではなく、dddヘルパーというものがあることを知りました。
通常のエラーが発生したときにも使用されている画面にて表示してくれるものです。

今回、この記事では
dddヘルパーの使い方や、それぞれのタブに出力される内容について
そして、Flareサービスを使ってエラー内容を共有する方法などの内容で記事を書いています。

Laravelでのデバッグについて

dddヘルパーの他にもddヘルパーやvar_dumpなどを使って画面出力することができます。
それぞれ違うところは、出力して表示される形式が違います。
また、画面ではなく、ログに出力して確認するという方法もあります。

今回はdddヘルパーを使って、どんな出力形式になるのか確認してみたいと思います。

dddヘルパーについて

dddヘルパーはLaravelのバージョン6以降から登場しました。(デフォルトで使えるようになっています)
なので、Laravelをインストールして、すぐ使えるのはバージョン6以降からです。

dddヘルパーを使ってみる

実際に使うときは、ddヘルパーと同じようにdddヘルパーを呼び出して、出力したい値を渡します。

$fruits = collect(['apple', 'grape', 'lemon']);
ddd($fruits);

下記のように複数渡すことも可能です。

$fruits = collect(['apple', 'grape', 'lemon']);

$user = new User();
$user->name = "taro";

ddd($fruits, $user);

実際に画面を確認すると、このように複数出力されました。
Debugタブがデフォルトで表示されます。

laravelでdddヘルパーを使用する

それぞれ、渡した内容が出力されていることが確認できました。
三角のアイコンを押すと、それぞれ閉じられている内容を確認することが可能です。

dddヘルパーで表示される画面を確認

dddヘルパーで表示された、それぞれのタブクリックして画面を確認します。
Stack trace / Request / App / User / Context / Debug といった6つのタブが表示されています。

Stack traceを確認する

スタックトレースでは、どこでエラーがでたかということを追うことが可能です。
dddヘルパーで出力した時は、出力された箇所が表示されます。

laravelでエラー画面でのスタックトレース

右側に出力されたところのコードが、ハイライトされて出てきます。
エラーだった場合はエラーのコードがハイライトされます。

左側が実際にエラーが出るまでに通ってきた箇所のトレースですね。

表示されているコードからエディターを開く

表示されているコードにフォーカスすると、鉛筆マークが表示されます。
鉛筆マークをクリックするとエディタを開いて、その位置にフォーカスしてくれます。

このエディターがデフォルトではPhpStormになっていますが、「.env」に下記のように書いておけば別のエディタにできます。
下記はVSCodeで開くようにしてみました。

IGNITION_EDITOR=vscode

サポートしているエディタは下記になります。
vendor/facade/ignition/config/ignition.phpのコメントに書いてありました。

Supported: “phpstorm”, “vscode”, “vscode-insiders”, “vscodium”, “textmate”, “emacs”,
“sublime”, “atom”, “nova”, “macvim”, “idea”, “netbeans”,
“xdebug”

Requestを確認する

リクエストされたURLやメソッド、ヘッダーの内容やクッキーの中身など、HTTPリクエストの内容がまるっと確認できる感じですね。

laravelでエラー画面でのリクエスト確認

Appを確認する

エラーが出力されたWebアプリケーションのエラー箇所のコントローラーやビューが確認できるようです

laravelでエラー画面でのアプリケーション情報確認

Userを確認する

リクエストしたユーザーのUser DataとIP AddressとUser-agentが確認できます。
User DataはLaravelでログインしている場合に、ユーザーの情報が表示されます。

laravelでエラー画面でのユーザーデータ確認

Contextを確認する

Laravelのバージョンやロケール設定、PHPのバージョンなんかも見れました。

laravelでエラー画面でのコンテキストの確認

エラー箇所を共有する

Flareというサービスを使って、エラー箇所を共有することが可能です。

まず、Shareというタブを押すと下記のようになるので、「share」をクリックします。
Flare Shareボタン

「Open public share」もしくは「Open share admin」でURLが発行されます。
Shareボタンを押してから「Open public share」を押します。

Flare ShareボタンからURL発行

URLが発行されてアクセスすると下記のような画面になります。
Open public share

「Open share admin」だと下記のような画面になります。
adminモードだと、共有したエラーページを消せるようです!(delete shareから)

Open share admin

普通のエラー共有のURLの有効期限はいつまでか調べたのですがわかりませんでした。。
これはいつまでなのだろうか…何かわかる方はぜひコメントいただけると嬉しいです🤯

便利ではありますが、オープンでないコードで使うと危険な機能な気がします。
URLが漏れたりしたら…🤯

公開されているコードでエラー内容を共有したい時は、すごく便利そうなので、是非使いたいと思いました。

darkモードにする

その他の小技として、darkモードも搭載されています😄
darkモードにするには、「.env」に下記のように設定します。

IGNITION_THEME=dark

実際に画面を見てみると、こんな感じです。

Laravelのエラー画面をダークモードに

おわりに

dddヘルパーで出力される内容を確認していきました。

ddではスタックトレースなどが表示されませんでした。
dddではトレース内容などを表示してくれるので、開発時にtry catch箇所などに仕込んでおくとエラーが出た時に原因調査しやすそうです。

エラー箇所の共有は便利ですが、使い方を間違えると問題になりそうなので、気をつけたいところです。

コメント

タイトルとURLをコピーしました