【Laravel初期設定】開発を楽しくするデバッグライブラリ集

Laravel開発をより楽しくするパッケージやツールをご紹介します。
今回改めて調べて発見したパッケージもあるので使ってないものもありますがご容赦ください🙇‍♂️

## 情報元

- https://twitter.com/laravelphp
- https://twitter.com/laravelnews
- https://laravel-news.com
- https://github.com/chiraggude/awesome-laravel
- https://github.com/TimothyDJones/awesome-laravel

## 標準

Laravel標準で組み込まれているパッケージをご紹介します。

### briannesbitt/Carbon

https://github.com/briannesbitt/carbon

Laravel標準で組み込まれているPHPのDateTime拡張パッケージです。
日付の操作をより便利に、簡単にできます。

使い方は公式サイトに詳しく載っています。
https://carbon.nesbot.com

### laravel/tinker

https://github.com/laravel/tinker

```
$ php artisan tinker
```

Laravel標準で組み込まれているLaravelのコードを対話的に実行できるコマンドです。
手軽にLaravelコードを試せるので使わないと損です。

追記: tinkerコマンドの紹介記事を書きました。

- [Laravel 標準搭載のデバッグ機能 tinker コマンドのご紹介](https://qiita.com/ucan-lab/items/0e9537be6d5709e1d099)

### JeffreyWay/laravel-mix

https://github.com/JeffreyWay/laravel-mix

Laravel標準で組み込まれているWebpackのラッパーパッケージです。
Webpackでは複雑な設定もLaravelMixでは簡潔に記述できます。

## ほぼ必須

### doctrine/dbal

https://github.com/doctrine/dbal

データベースのカラム変更を伴うマイグレーションを書く場合に必要です。
まぁ、まず書かないことはほぼないので入れますね。

後述の `laravel-ide-helper` もモデルの補完ファイルを生成する際にこのライブラリを使用しているので必要です。

## IDE

### barryvdh/laravel-ide-helper

https://github.com/barryvdh/laravel-ide-helper

`Facade` や `EloquentModel` のプロパティのコード補完ファイルを生成します。
ほぼ必須で入れた方が良いと思うパッケージです。

2021.03.16追記: Laravel8.x から標準ライブラリになるようです。
[[8.x] Implement IDE Helper](https://github.com/laravel/laravel/pull/5562)

## デバッグ

### barryvdh/laravel-debugbar

![79428890-196cc680-7fc7-11ea-8229-189f5eac9009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52879/ad533158-bb87-2450-3675-b35f07884b2e.png)

https://github.com/barryvdh/laravel-debugbar

デバッグ情報を表示するデバッグバーを画面下部に表示してくれるパッケージです。
デバッグコードを仕込むことなく、SQLの実行クエリやセッション、ログ等の様々な情報を参照できます。
API開発では使用しないですが、Bladeで画面開発もある場合は必須と言っても良いツールでしょう。

### beyondcode/laravel-debugbar-companion

前述のlaravel-debugbarのデスクトップアプリ版です。

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">I&#39;m proud to release the first version of the open-source <a href="https://twitter.com/laravelphp?ref_src=twsrc%5Etfw">@laravelphp</a> DebugBar companion app! I also recorded an awesome announcement video - check it out.<br><br>Dive into the codebase, help us improve it, become AWESOME 👊<a href="https://t.co/vQZDWNlvRW">https://t.co/vQZDWNlvRW</a> <a href="https://t.co/gzmNm9DpMo">pic.twitter.com/gzmNm9DpMo</a></p>&mdash; Marcel Pociot 🧙‍♂️ (@marcelpociot) <a href="https://twitter.com/marcelpociot/status/1346480225404665858?ref_src=twsrc%5Etfw">January 5, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

- https://github.com/beyondcode/laravel-debugbar-companion
- https://laravel-news.com/laravel-debugbar-companion-app
- https://github.com/beyondcode/laravel-debugbar-companion/releases
  - ダウンロードはこちらから

### laravel/telescope

https://github.com/laravel/telescope

<img width="1149" alt="68747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f6474666276766b79702f696d6167652f75706c6f61642f76313533393131303836302f53637265656e5f53686f745f323031382d31302d30395f61745f312e34372e32335f504d2e706e67.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52879/e5c73b8c-31c7-bede-5cce-875cf267cd8d.png">

デバッグ情報を管理するパッケージです。
先ほど紹介した `laravel-debugbar` と対となるパッケージなのかなと思います。
こちらはAPI開発で効果を発揮するパッケージです。

こちらもデバッグコードを仕込むことなく、ログ、SQLの実行ログを確認できます。

### beyondcode/laravel-dump-server

![68747470733a2f2f6265796f6e64636f2e64652f6769746875622f64756d707365727665722f64756d707365727665722e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52879/4ddec24c-a046-2568-18c4-266bc30e72f5.gif)

https://github.com/beyondcode/laravel-dump-server

`dump()` の結果をコンソールに出力してくれるツールです。
ブラウザで画面表示を見つつ、 `dump()` 結果もコンソール上で確認できるのでとても便利です。

元々は標準で入っていたパッケージですが、Laravel5.9で一時的に動作しなくなったのか公式から外されてました。。
https://github.com/laravel/laravel/pull/5052/commits/f053116c5680e77c3a6c73afd193984a17ea482d

Laravel7の環境で普通に動くし普通に便利なパッケージなので、入れておきたいパッケージです。

### spatie/laravel-web-tinker

![spatie/laravel-web-tinker](https://camo.githubusercontent.com/a136a7976d5e65f03346bcaa205d9f3681390671d4fdd68821b222b4b9cfdb69/68747470733a2f2f7370617469652e6769746875622e696f2f6c61726176656c2d7765622d74696e6b65722f6461726b2e706e67)

https://github.com/spatie/laravel-web-tinker

ブラウザ上でtinkerコマンドを実行できます。
開発用途のサーバー上に入れてるとブラウザ上からデバッグできて便利です。
本番サーバーでtinker実行できたら危ないので、本番では有効化しないでください。

### rap2hpoutre/laravel-log-viewer

![](https://cloud.githubusercontent.com/assets/1575946/5243642/8a00b83a-7946-11e4-8bad-5c705f328bcc.png)

https://github.com/rap2hpoutre/laravel-log-viewer

ブラウザ上でログファイルの中身を確認できるログビューアです。
こちらも開発用途のサーバー上に入れてるとブラウザ上からログが見れて便利です。
本番サーバーでログが自由に見れたら危ないので本番ではcloudwatch等、別のログ収集サービスを利用してください。

## マイグレーション

### ucan-lab/laravel-dacapo

https://github.com/ucan-lab/laravel-dacapo

Laravelマイグレーションのサポートライブラリです。
データベースのテーブル定義をYAMLファイル(スキーマファイル)で管理し、マイグレーションファイルの生成を行います。

※初期の開発時期に利用されることを想定しています。

- [Laravel × Dacapo データベースマイグレーションサポートツールの使い方](https://qiita.com/ucan-lab/items/e75ef2bba744d9dcd4d0)

## テスト

### laravel/dusk

https://github.com/laravel/dusk

ブラウザの自動テストが行えるパッケージです。
(使う機会がなくて使ってないですが、使ってみたい)

- 公式ドキュメント: https://laravel.com/docs/7.x/dusk

### Laravel TestTools

https://chrome.google.com/webstore/detail/laravel-testtools/ddieaepnbjhgcbddafciempnibnfnakl

ブラウザ上でテストコードを生成できるChrome拡張機能です。

### mpociot/laravel-test-factory-helper

https://github.com/mpociot/laravel-test-factory-helper

既存のモデルからモデルファクトリを生成するパッケージです。
テストデータの生成が楽になりそうです。
(使ったことがないですが、めっっちゃ便利そうなので使ってみたい)

## コード品質

### nunomaduro/phpinsights

![preview.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52879/bfcf5057-0d05-efee-2210-ac312d9a6615.png)

https://github.com/nunomaduro/phpinsights

コードの信頼性、疎結合、簡潔さをチェックしてコード品質を向上させてくれるパッケージです。

- 公式サイト: https://phpinsights.com

## データベース

### ucan-lab/laravel-dacapo

https://github.com/ucan-lab/laravel-dacapo

Laravelのマイグレーション作成をサポートするパッケージです。
テーブル構造をYAMLで短くシンプルに記述できます。
(手前味噌ですみません...)

- [Laravel × Dacapo で始める快適マイグレーション生活！](https://qiita.com/ucan-lab/items/8d23dc08fc5f964a3e72)
- [Laravel 整理整頓したマイグレーションファイルを生成するライブラリを作った話](https://qiita.com/ucan-lab/items/10bb60e10c5b26a59b92)

## メール

### Qoraiche/laravel-mail-editor

![markdown-mailable-editor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52879/e06bbbf4-a3a4-1d38-89b1-9ad4a5669839.png)

https://github.com/Qoraiche/laravel-mail-editor

GUIでメール内容を編集できるパッケージです。
このパッケージは使う機会がなくて使い勝手等わからないですが、とても気になってます。

- 公式サイト: https://maileclipse.io
- Laravel News: https://laravel-news.com/maileclipse-laravel-mail-editor-package
- デモ動画: https://youtu.be/QFgEGNBY3FI

## Aspect

### ytake/Laravel-Aspect

https://github.com/ytake/Laravel-Aspect

オブジェクト指向だけでは分離できない事をアスペクトという単位で分離できます。
ログやトランザクションといった業務ロジックとは関係のないことをアノテーションを使って横断的なプログラミングができます。
(使った事がないので使ってみたい...)

- [Laravel aspectで関心の分離](https://www.slideshare.net/KenjiroKubota/laravel-aspect)
- [アスペクト指向を利用した関心事の分離](https://qiita.com/katsutomu/items/473ced7a31ea3e459f42)

## CI

### StyleCI

https://styleci.io

コーディングスタイルをチェックするCIです。
自動的にプルリクが作成され、開発者はマージして取り込むだけでコードの整形できます。

## 監視

### getsentry/sentry-laravel

https://github.com/getsentry/sentry-laravel

エラーの監視サービスです。
発生した例外レポートを管理してくれます。

公式サイト: https://sentry.io

## さいごに

他にもおすすめのパッケージやツール等ありましたらコメントいただけますと幸いです。
この記事が開発のお役に立てればハッピーです☺️