Symfony Profilerのココが好き！

[Symfony Advent Calendar 2023](https://qiita.com/advent-calendar/2023/symfony) の5日目の記事です！:santa:

\ :bow_tone1: カレンダー空きがありますので是非埋めてください :bow_tone1: /

今回は、Symfony Profilerの個人的に好きなところを勝手に紹介します！！！

## 概要

- [Symfony Profilerとは？](#symfony-profilerとは)

- [好きなところ5選](#好きなところ5選)
  - [好きなところ①「Validatorの詳細がわかる！」](#好きなところvalidatorの詳細がわかる)
  - [好きなところ②「DoctrineやSQLについて確認できる！」](#好きなところdoctrineやsqlについて確認できる)
  - [好きなところ③「DispatchされたMessagesの確認ができる！」](#好きなところdispatchされたmessagesの確認ができる)
  - [好きなところ④「DispatchされたEventsの確認ができる！」](#好きなところdispatchされたeventsの確認ができる)
  - [好きなところ⑤「Deprecationsについて気付きやすい！」](#好きなところdeprecationsについて気付きやすい)
- [【追記】Symfony6.4から増えたもの](#追記symfony64から増えたもの)
  - [ConsoleCommand](#consolecommand)
  - [Workflow](#workflow)

- [最後に](#最後に)

## Symfony Profilerとは？

リクエスト実行時の詳細情報を提供してくれる開発ツールです。
「なんか思った通り動かないな〜」って時のデバックに私はよく使用しています。

以下コマンドを使って導入することができます。
```
$ composer require --dev symfony/profiler-pack
```
https://symfony.com/doc/6.4/profiler.html


## 好きなところ5選
### 好きなところ①「Validatorの詳細がわかる！」

Formsナビも便利なんですが、これとセットでフォームをsubmitする系の開発をしてる時によくお世話になっているのがValidatorナビです。

フォームsubmitで想定してないエラーが出た時は大体ココを確認します。

下の画像の場合、「想定していない`id`というフィールドをsubmitしたためinvalidとされた」ということがわかります :bulb:
![スクリーンショット 2023-12-03 14.27.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83896/be9c3994-1e7b-75a7-0388-efb05207b528.png)


### 好きなところ②「DoctrineやSQLについて確認できる！」

find系のメソッドを実装した時に、想定通りのSQLかなとか確認するのに使ってます。

Entities Mappingを確認すると、定義のミスとかにも気付けるのでたまに見てます。

![スクリーンショット 2023-12-03 13.58.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83896/2ce568a4-5e46-5fe7-1d07-9a67c8e08d7d.png)



最近気づいたんですが、EXPLAN結果も確認できます。

![スクリーンショット 2023-12-03 13.52.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83896/e309a3e6-f089-ffd7-e9a7-2eb82ed099ed.png)


### 好きなところ③「DispatchされたMessagesの確認ができる！」

![スクリーンショット 2023-12-03 13.35.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83896/47f9b68d-924b-b3ce-e97b-6f1af7607abc.png)


### 好きなところ④「DispatchされたEventsの確認ができる！」

Called / No Callled Listenerの確認もできます！

Symfonyって[ビルドインされたKernel Event](https://symfony.com/doc/current/reference/events.html)がこんだけあって、デフォルトでEventListenerこんなにあるんだーってのも確認できます。

Symfonyまだよくわかってない私からすると勉強になります :sunglasses: 

![スクリーンショット 2023-12-05 6.29.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83896/96a853b4-a943-cb35-d5c1-933c40974f32.png)


ちなみにSymfonyってどんな順番でEventとか動いてるんだろ？ってときにはPerformanceナビが便利です。

![スクリーンショット 2023-12-05 6.27.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83896/afdf48cb-ae2d-9b4d-8bbc-c6454b912303.png)


### 好きなところ⑤「Deprecationsについて気付きやすい！」

Logs > Deprecationsより、Deprecationsについてだけピックアップして確認できるのが個人的にありがたいです。
ここをたまに見て、issueを作って時間ある時に対応したりしています。

![スクリーンショット 2023-12-03 13.25.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83896/f2114926-4a5e-9849-efaa-19ba28631cf5.png)

## 【追記】Symfony6.4から増えたもの
### ConsoleCommand
![スクリーンショット 2023-12-11 17.06.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83896/1bbae0e3-2848-0cb6-a35f-9f31823084bc.png)


参考： https://symfony.com/blog/new-in-symfony-6-4-command-profiler


### Workflow
![スクリーンショット 2023-12-11 16.46.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83896/61250a95-6e78-280e-c2e0-277f878baaa2.png)

参考: https://symfony.com/blog/new-in-symfony-6-4-workflow-profiler

## 最後に

最後に、私のSymfony Profiler最大推しポイントは「なんか開発ゴリゴリやってる感がでてワクワクする！」ですかね :sunglasses: