1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

お題は不問!Qiita Engineer Festa 2023で記事投稿!

Laravel で使いたい便利なパッケージ4選 (Pint, Larastan, Telescope, Insights)

Posted at

はじめに

Laravel での開発効率・品質向上に繋がる便利なパッケージのまとめ記事です。

パッケージ名 用途 対応バージョン
Laravel Pint コード整形 PHP 8.1 以上
Larastan 静的コード解析 PHP 8.0 以上 かつ Laravel 9.x 以上
Laravel Telescope デバッグ PHP 8.0 以上 かつ Laravel 8.37 以上
PHP Insights コード品質分析 PHP 7.4 以上

Laravel Pint

概要

PHP-CS-Fixer をベースとして作成された Laravel 用のコード整形ツール

対応バージョン

PHP 8.1 以上

インストール手順

Laravel 9.x 以上のアプリケーションであれば基本的には不要です。
もしインストールされていなければ、以下のコマンドを実行してください。

composer require laravel/pint --dev

使い方

以下のコマンドを実行するとコードが整形され、ファイルが自動で変更されます。

./vendor/bin/pint

ファイルを自動で変更したくない場合は、--test オプションを付加して実行してください。

./vendor/bin/pint --test

補足

整形ルールを変更する場合は、PHP-CS-Fixer のドキュメントを参照して pint.json に記載してください。

例)不要なPHPDocのタグを削除するルールを OFF にする

pint.json
{
    "preset": "laravel",
    "rules": {
        "no_superfluous_phpdoc_tags": false
    }
}

Larastan

概要

PHPStan をベースとして作成された Laravel 用の静的コード解析ツール

対応バージョン

PHP 8.0 以上 かつ Laravel 9.x 以上
※ Laravel 9.x 未満の場合でも古いバージョンの Larastan であれば利用可能ですが、今回は対象外とさせていただきます。

インストール手順

以下のコマンドを実行してください。

composer require nunomaduro/larastan:^2.0 --dev

phpstan.neon または phpstan.neon.dist の名称で設定ファイルを作成してください。

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

parameters:

    paths:
        - app/

    # Level 9 is the highest level
    level: 5

使い方

以下のコマンドを実行すると静的解析が実行され、コンソールに結果が出力されます。

./vendor/bin/phpstan analyse

もし Allowed memory size exhausted のエラーが表示された場合は、--memory-limit オプションを付加してメモリの上限を上げて実行する必要があります。

./vendor/bin/phpstan analyse --memory-limit=2G

補足

細かい設定を行いたい場合は、以下のリンクを参照して phpstan.neon または phpstan.neon.dist に記載してください。

例)===!== で常に true となる条件文があればエラーとする

phpstan.neon
parameters:
    checkAlwaysTrueStrictComparison: true

また、既存のプロジェクトに静的解析ツールを導入して現状のプログラムを修正するのはリスクを伴います。 そのような場合は --generate-baseline オプションを付加して静的解析を実行し、ベースラインファイルを作成すれば対応可能です。ベースラインファイルには現状のプログラムから検出されたエラーが出力されます。ファイルを読み込むことで、そのエラーを以降の静的解析で無視することができます。

./vendor/bin/phpstan analyse --generate-baseline

# メモリ不足の場合はこちら
./vendor/bin/phpstan analyse --memory-limit=2G --generate-baseline

なお、作成したベースラインファイルを読み込むためには phpstan.neon または phpstan.neon.dist に以下の追記が必要です。

phpstan.neon
includes:
    - ./phpstan-baseline.neon

Laravel Telescope

概要

アプリケーションが受信するリクエスト、データベースのクエリ、実行した Artisan コマンド、発生した例外などをブラウザから確認できる Laravel のデバッグツール

対応バージョン

PHP 8.0 以上 かつ Laravel 8.37 以上
※ Laravel 8.37 未満の場合でも古いバージョンの Telescope であれば利用可能ですが、今回は対象外とさせていただきます。

インストール手順

データベースに接続可能な状態で、以下のコマンドを実行してください。

composer require laravel/telescope --dev
php artisan telescope:install
php artisan migrate

次に、ローカル環境でのみ Telescope を動作させるため、config/app.php からapp\Providers\TelescopeServiceProvider::class の記述を削除してください。そして、その代わりに app/Providers/AppServiceProvider.php に以下の記述を追記してください。

app/Providers/AppServiceProvider.php
    public function register(): void
    {
        if ($this->app->environment('local')) {
            $this->app->register(\Laravel\Telescope\TelescopeServiceProvider::class);
            $this->app->register(TelescopeServiceProvider::class);
        }
    }

最後に、Package Discovery の機能で Telescope が自動で検出されないように、composer.json"dont-discover""laravel/telescope" を追記してください。

composer.json
    "extra": {
        "laravel": {
            "dont-discover": [
                "laravel/telescope"
            ]
        }
    },

使い方

Laravel の開発用サーバを php artisan serve で起動して /telescope にアクセスすると Telescope のダッシュボードを開けます。

補足

Telescope では telescope_entries テーブルに各種データを保存しており、あっという間に大量のデータが登録されます。したがって、以下のコマンドをスケジュール実行等で定期的に実行する必要があります。ちなみに、デフォルトで24時間を超過したデータが削除されます。

php artisan telescope:prune

また、もしローカル環境で Telescope を無効にしたくなった場合は .env に以下の記述を追記してください。

.env
TELESCOPE_ENABLED=false

PHP Insights

概要

以下の観点でコードの品質を分析するツール

  • コードの品質

    • 未使用の変数がないか
    • 等価演算子は == でなく === を使用しているか など
  • コーディングスタイル

    • 余分な空白行がないか
    • 1行の文字数が多すぎる行がないか など
  • アプリケーションアーキテクチャ

    • 1つの関数に多くの処理を記述していないか
    • 1つのファイルに複数のクラスが宣言されていないか など
  • コードの複雑さ

    • 循環的複雑度が高くないか

循環的複雑度とは?(Wikipedia より引用)

循環的複雑度(英: Cyclomatic complexity)とは、ソフトウェア測定法の一種である。Thomas McCabe が開発したもので、プログラムの複雑度を測るのに使われる。プログラムのソースコードから、線形的に独立した経路の数を直接数える。

対応バージョン

PHP 7.4 以上

インストール手順

以下のコマンドを実行してください。

composer require nunomaduro/phpinsights --dev
php artisan vendor:publish --provider="NunoMaduro\PhpInsights\Application\Adapters\Laravel\InsightsServiceProvider"

使い方

以下のコマンドを実行すると分析が開始されます。

php artisan insights

分析が完了すると、コード全体に関する分析結果がコンソールに表示されます。

Enter キーを押すと、続けて具体的に修正すべき箇所が表示されます。

補足

自動で修正しても問題ないと思われる一部の箇所に関しては、--fix オプションを付加して実行すれば自動で修正を行うことができます。

php artisan insight --fix
1
5
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
1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?