Laravel Debugbarとエディタを連携させる

# はじめに
Laravelでの開発時にDebugbarとエディタを連携させブラウザでの出力とシームレスに連携してコーディングを行うためのTIPSです。

インストールや初期設定などは行っている状態での説明になります。
上記に関する詳しい解説は以下をご参照ください。

https://qiita.com/sano1202/items/6021856b70e4f8d3dc3d

https://qiita.com/ucan-lab/items/8eab84e37421f907dea0

# デバッグしたい
Laravelでも何でもそうですが、開発している時は**とりあえずデバッグしたい**と考えるかと思います。
xdebugをインストール・設定してリモートデバッグしてもいいのですが、お手軽に環境を作りたいです。

## Laravel Debugbar

利用する場合はcomposer経由でインストールし
```shell:composer
composer require --dev barryvdh/laravel-debugbar
```
設定を下記のように有効にするだけです。
```php:.env
APP_DEBUG=true
```
:::note info
初期設定ではデフォルトで**true**になっています
:::
laravelの組み込みサーバを立ち上げて

```shell:artisan
php artisan serve
```

http://127.0.0.1:8000/ にアクセスするとこのような感じでブラウザの出力にオーバーライドされます。

![スクリーンショット 2024-03-21 10.02.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031/6593bdc3-be7b-c558-45db-766cdebe90bf.png)

いろいろな情報が把握できて便利ですね。このあたりは割とデファクトなのかと思います。

# Debugerとエディタを連携させたい

せっかくブラウザに関連するlaravelのファイルがリストアップされるのにエディタとして[JetBrains社のPhpStorm](https://www.jetbrains.com/ja-jp/phpstorm/ 'PhpStorm: JetBrains の PHP IDE とコードエディター')を利用していないとハイパーリンクが繋がりません。
これはリンクが「*phpstorm://open?file=%path&line=%line*」のようなフォーマットになっているからです。
つまりPhpStormをエディタとして使っていれば内部の独自プロトコルとして認識され、当該ファイルがエディタでオープンされる仕組みのようです。

それではせっかくの便利機能が使えないのは困ります…ですので設定で改善していきます。

## configファイルで設定
Debugbarのconfigファイルで細かく設定を調整したい場合は以下のようにartisanを用いてconfigファイルをコピーします。
```shell:artisan
php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"
```
これにより *APP_PATH/config/debuger.php* が生成され設定の上書きが可能になります。

```php:config/debuger.php
    /*
    |--------------------------------------------------------------------------
    | Editor
    |--------------------------------------------------------------------------
    |
    | Choose your preferred editor to use when clicking file name.
    |
    | Supported: "phpstorm", "vscode", "vscode-insiders", "vscode-remote",
    |            "vscode-insiders-remote", "vscodium", "textmate", "emacs",
    |            "sublime", "atom", "nova", "macvim", "idea", "netbeans",
    |            "xdebug", "espresso"
    |
    */

   'editor' => env('DEBUGBAR_EDITOR') ?: env('IGNITION_EDITOR', 'phpstorm'),
```

例示でサポートされたエディタの値を環境変数 *IGNITION_EDITOR*[^1] の初期値として設定することが可能です。
[^1]:IGNITION_EDITORなどIGNITION_〜 の環境変数はlaravel-ignitionで定義されています。laravel-ignitionはLaravelバージョン9以降ではcomposer.jsonに記述があるためデフォルトでインストールされます。

:::note warn
config/debuger.phpをコミット対象にするとプロジェクト全般で設定が有効になります。チーム開発の場合、環境は人それぞれ違うかと思いますのでコミットされる可能性があるconfigで属人的な設定を行うよりは次で例示する.envファイルで行う方法の方が一般的かと思います。
:::

## .envファイルで設定
.envファイルに環境変数として設定します。
```diff_php:.env
+DEBUGBAR_EDITOR=idea
```
また[^2]は
```diff_php:.env
+IGNITION_EDITOR=idea
```
で上書き設定が可能です。
[^2]:laravel-ignitionを利用している場合はIGNITION_〜の方を設定します。

これでハイパーリンクのクリックでファイルをエディタでオープンすることができるようになり便利です。

![スクリーンショット 2024-03-21 11.22.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031/49abdc54-1b4c-5bf5-a310-64a764b0b1ef.png)

# リモートサーバ実行時でも動作させたい
docker/sailなどリモートサーバでデバッグしている場合はパスがサーバ上の値でハイパーリンクに設定されるため、うまくファイルが開けません。そこでパスを調整するために以下の設定を追加します。
```diff_php:.env
+DEBUGBAR_LOCAL_SITES_PATH=/path/to/local/development_project/laravel
```
または
```diff_php:.env
+IGNITION_LOCAL_SITES_PATH=/path/to/local/development_project/laravel
```
これでパスが通り、リモート実行時でも連携可能になります。