結論
- Laravel PintはLaravel公式のコード整形ツール
- Laravel 10では初期状態で導入済みのため、インストール不要
- VSCodeの保存時整形とPintが競合する場合があるため、PHPはPintで統一する運用が安全
- Pint実行後にPHPStanで静的解析を確認すると、より安心して運用できる
Laravel Pintとは
Laravel PintはLaravel公式が提供するPHPのコード整形ツールです。
内部的にはPHP-CS-Fixerをベースとしており、Laravelの標準コーディング規約に沿った整形を自動で行ってくれます。
主な整形内容の例:
-
use文の並び替え・整理 - インデントの修正
- 不要な空行の削除・追加
- メソッドチェーンの整形
基本的にはコードの動作ではなく、「書き方を統一する」ためのツールです。
環境
| 項目 | 内容 |
|---|---|
| Laravel | 10.x |
| 実行環境 | Laravel Sail(Docker) |
| エディタ | VSCode |
Pintの導入確認
Laravel 10では通常インストール済みです。
以下のコマンドで確認できます。
sail composer show laravel/pint
インストール済みであれば、バージョン情報が表示されます。
name : laravel/pint
descrip. : An opinionated code style fixer for minimalists.
...
未導入の場合は以下でインストールできます。
sail composer require laravel/pint --dev
実行方法
プロジェクトルートで以下を実行します。
sail pint
特定のファイルやディレクトリだけを対象にする場合はパスを指定します。
sail pint app/Http/Controllers
実行結果
整形が完了すると、修正されたファイルの一覧が表示されます。
FIXED ... style issues fixed
表示される整形ルールの例:
-
ordered_imports…use文をアルファベット順に並び替え -
single_line_after_imports…use文の後に1行空ける -
method_chaining_indentation… メソッドチェーンのインデントを統一
整形対象がなければ何も表示されず、正常終了します。
実際の変更内容
以下は自動整形によって変更された差分の例です。
+use Illuminate\Validation\ValidationException;
use 文の追加・並び替えや、インデントの調整が中心でした。
基本的には、コードの動作ではなく見た目や書き方を整える変更です。
PHPStan確認
Pintによる整形はコードの動作を変えませんが、念のため整形後に静的解析を実行しておくと安心です。
sail php ./vendor/bin/phpstan analyse
問題がなければ以下のように表示されます。
[OK] No errors
Pint適用後も問題なく解析を通過することを確認しました。
VSCodeの保存時整形との関係
VSCodeの保存時整形(editor.formatOnSave)が有効になっている場合、PintとVSCodeの整形が競合することがあります。
PHPファイルについてはVSCodeの保存時整形をOFFにし、Pintで統一する運用にしました。
settings.json に以下を追加します。
"[php]": {
"editor.formatOnSave": false
}
これにより、PHPファイルの整形はPintに一本化されます。
Git管理
Pintを初回実行すると、多くのファイルに差分が発生します。
機能変更と混在させると差分が把握しにくくなるため、独立したコミットとして管理するのがおすすめです。
git add .
git commit -m "style: Laravel Pint適用"
git push
2回目以降は整形済みのファイルが増えるため、差分は少なくなります。
実際に触って感じたこと
Laravelの開発補助ツールを整理すると、それぞれ役割が異なります。
| ツール | 役割 |
|---|---|
| Laravel Pint | コード整形(書き方の統一) |
| Laravel IDE Helper | IDEの補完強化 |
| Larastan(PHPStan) | 静的解析(型・ロジックの検査) |
この3つを組み合わせると、コード品質を保ちながら開発しやすい環境が整います。
初学者のうちから導入しておくことで、書き方の癖がつきにくくなる点もメリットだと感じました。
ソースコード
今回使用した設定・コマンド例:
-
phpstan.neon… PHPStan設定ファイル -
.vscode/settings.json… PHPの保存時整形OFFの設定 -
composer.json… Pintがrequire-devに含まれているか確認