0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LaravelプロジェクトにLarastanとPintを導入して感じたこと

0
Last updated at Posted at 2026-07-03

Laravelで開発を続けていると、

  • 型の間違いに気づかない
  • コーディング規約が人によって違う
  • レビューで毎回同じ指摘が入る

ということがよくあります。

そこで導入したのが

  • Larastan
  • Laravel Pint

です。

どちらも派手なツールではありませんが、導入してからレビューの質や開発効率が少しずつ改善したと感じています。

この記事では、それぞれの役割や導入方法、実際に使って感じたことを紹介します。


Larastanとは

LarastanはLaravel向けの静的解析ツールです。

内部的にはPHPStanをベースにしており、Laravel特有のコードも解析できます。

例えば、

  • 型の不一致
  • 存在しないメソッド呼び出し
  • nullの可能性
  • 到達しないコード

などを実行前に検出できます。


なぜ導入したのか

PHPは柔軟な言語ですが、その分実行するまでエラーに気づかないケースがあります。

例えば

$user = User::find($id);

echo $user->name;

一見問題なさそうですが、

find()はnullを返す可能性があります。

Larastanでは

Cannot access property name on User|null

という警告が表示されます。

実際にバグになる前に気付けるため、安心してリファクタリングできるようになりました。


導入

インストールします。

composer require --dev larastan/larastan

設定ファイルを作成します。

includes:
    - vendor/larastan/larastan/extension.neon

parameters:
    level: 5

    paths:
        - app

実行します。

vendor/bin/phpstan analyse

レベル設定

Larastanには解析レベルがあります。

0
↓
5
↓
8
↓
9

数字が大きいほど厳しくなります。

最初から最高レベルにすると大量の警告が出ることが多いため、

まずは

level: 5

くらいから始めるのがおすすめです。


Laravel Pintとは

PintはLaravel公式のコードフォーマッターです。

PHP-CS-Fixerをベースに作られています。

役割はシンプルで、

コードを自動で整形する

ことです。


導入

composer require --dev laravel/pint

実行します。

./vendor/bin/pint

これだけです。


例えば

修正前

if($user){
return $user;
}

Pint実行後

if ($user) {
    return $user;
}

スペースやインデントなどを自動で整えてくれます。


pint.json

必要であればルールを変更できます。

{
    "preset": "laravel"
}

Laravel標準のルールを使う場合はこれだけで十分です。


GitHub Actionsにも組み込める

例えばPR作成時に

- name: Run Pint
  run: ./vendor/bin/pint --test

- name: Run Larastan
  run: vendor/bin/phpstan analyse

とすることで、

  • コードフォーマット
  • 静的解析

を自動でチェックできます。

問題があればCIが失敗するため、品質を一定に保ちやすくなります。


導入して感じたこと

一番変わったのは、レビューの内容でした。

以前は

  • インデントが違う
  • 空行がない
  • スペースが違う

といった指摘が多くありました。

Pintを導入してからは、それらを自動で直せるようになり、

レビューでは

  • 設計
  • 命名
  • 実装方針

といった本質的な議論がしやすくなりました。

Larastanについても同様で、

「実行して初めて気付く不具合」が減り、リファクタリングへの心理的なハードルが下がったと感じています。


AIとの相性も良い

最近はAIでコードを書く機会も増えています。

便利な反面、

  • 型が曖昧
  • 存在しないメソッドを呼んでいる
  • コーディングスタイルが統一されていない

といったコードが生成されることもあります。

LarastanとPintをCIに組み込んでおけば、AIが生成したコードも一定の品質でチェックできます。


まとめ

LarastanとPintは、それぞれ役割が異なります。

ツール 役割
Larastan 静的解析
Pint コードフォーマット

どちらも導入コストはそれほど高くありません。

一方で、

  • バグの早期発見
  • コーディングルールの統一
  • レビュー効率の向上

といった効果を得られます。

Laravelではテストに注目されることが多いですが、テストだけでは防げない問題もあります。

LarastanとPintを組み合わせることで、コードを書く前・実行する前の段階から品質を高められるようになりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?