30
26

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.

Laravel開発を快適にするツール

Last updated at Posted at 2022-03-14
  • Laravel IDE Helper: PHPDocを自動生成
  • larastan: 静的解析ツール
  • PHP-CS-Fixer: コード整形ツール
  • L5-Swagger: OpenAPIドキュメント作成
  • Redoc: OpenAPIファイルから静的なドキュメント作成

自分が残して置きたい設定などをメモ。

Laravel IDE Helper

ソースコードからIDE用のPHPDocを生成する。IDEからファサードやモデルのオートコンプリートが使えるようになる。

インストール

composer require barryvdh/laravel-ide-helper --dev 

実行

# ファサード用のPHPDocを生成(_ide_helper.phpファイルが生成される)
php artisan ide-helper:generate
# モデル用のPHPDocを生成(_ide_helper_models.phpファイルが生成される)
php artisan ide-helper:models -N
# モデル用のPHPDocを生成(モデルのファイルに直接書き込むこともできる)
php artisan ide-helper:models -W

生成された_ide_helper.php_ide_helper_models.phpをgitに追加するはプロジェクト次第。
(IDEに依存するところもあるので、個人的にはgit管理に含めずに.gitignoreに追加することを勧めます。)

larastan

Laravel用の静的解析ツール。PHPStanの拡張でLaravel用のルールなどが追加されている。細かい設定は公式のドキュメントが詳しいので参考に。

インストール

composer require nunomaduro/larastan --dev

設定

設定ファイルphpstan.neon.distを作成し、gitに追加しておく。
個人的な設定をしたい場合、phpstan.neonを作成するとphpstan.neon.distよりも優先される。

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

parameters:

    paths:
        - app

    # The level 9 is the highest level
    level: 5

    ignoreErrors:
        - '#PHPDoc tag @var#'

    excludePaths:
        - ./*/*/FileToBeExcluded.php

    checkMissingIterableValueType: false

    reportUnmatchedIgnoredErrors: false

実行

./vendor/bin/phpstan analyse

PHP-CS-Fixer

ソースコードを自動で整形してくれるツール。PSRやSymfony、PHP-CS-Fixerのコーディング規則に合わせて自動整形してくれる。設定できるルールはかなり多いので公式ドキュメントを参考にルールセットをベースに適宜追加していけばよいかと。

インストール

composer require friendsofphp/php-cs-fixer --dev

設定

設定ファイルphp-cs-fixer.dist.phpを作成し、gitに追加しておく。
個人的な設定をしたい場合、php-cs-fixer.phpを作成するとphp-cs-fixer.dist.phpよりも優先される。

PHP-CS-Fixerのルールセットを使いたかったが、Laravelのコードスタイルに合わなかったので、PSR-12をベースにルールを追加して設定した。(個人的なスタイルの好みを含みます)

.php-cs-fixer.dist.php
<?php

$finder = PhpCsFixer\Finder::create()
    ->exclude('vendor')
    ->exclude('storage')
    ->exclude('bootstrap/cache')
    ->in(__DIR__);
$config = new PhpCsFixer\Config();

return $config->setRules([
    '@PSR12' => true,
    'array_indentation' => true,
    'binary_operator_spaces' => true,
    'fully_qualified_strict_types' => true,
    'function_typehint_space' => true,
    'method_chaining_indentation' => true,
    'no_extra_blank_lines' => true,
    'no_multiline_whitespace_around_double_arrow' => true,
    'no_trailing_comma_in_singleline_array' => true,
    'no_unused_imports' => true,
    'no_whitespace_before_comma_in_array' => true,
    'normalize_index_brace' => true,
    'operator_linebreak' => true,
    'ordered_imports' => [
        'imports_order' => ['class', 'function', 'const'],
        'sort_algorithm' => 'alpha',
    ],
    'single_quote' => true,
    'trailing_comma_in_multiline' => true,
    'trim_array_spaces' => true,
    'whitespace_after_comma_in_array' => true,
])->setFinder($finder);

キャッシュファイルは不要なので.gitignoreに追加しておく。

.gitignore
.php-cs-fixer.cache

実行

# 自動整形
./vendor/bin/php-cs-fixer fix
# ファイルの変更は行わず、結果のみ表示
./vendor/bin/php-cs-fixer fix --dry-run
# ファイルの変更箇所を表示
./vendor/bin/php-cs-fixer fix --diff

(Laravel-PHP-CS-Fixer)

Laravelのコードスタイルをデフォルトで設定してくれるツールもあったのでこちらを使ってもいいかも。artisanコマンドでの呼び出しにも対応している様です。(初めからこっちを使っておけばよかった・・)

L5-Swagger

コントローラやモデルにアノテーションを追加してOpenAPIファイルを生成する。Swagger UIもローカルでホストしてくれるようになるのでテストなどにも便利。

Swagger-PHPのラッパーなのでアノテーションの書き方などは以下が参考になる。

アノテーションの書き方に癖があり扱いにくかった。最新のOpenAPIに完全に対応しているわけではない、ドキュメントがあまり充実してないなど苦労する点も多かったのでOpenAPIファイルを直接書いた方が良かったかもしれない。(Swagger UIとかSwagger Editorを自分で用意しなくていいのは良いですが。。)

インストール

composer require darkaonline/l5-swagger --dev

設定

L5-Swaggerのconfigやviewをカスタマイズする場合に以下のコマンドでファイルを生成しプロジェクトに含める。

php artisan vendor:publish --provider "L5Swagger\L5SwaggerServiceProvider"

実行

# OpenAPIファイル生成(storage/api-docs/api-docs.jsonが生成される)
php artisan l5-swagger:generate

OpenAPIファイル生成後、/api/documentationにアクセスすれば、Swagger UI上で確認できる。

Redoc

L5-Swaggerで作成されるOpenAPIファイルを静的なHTMLファイルに出力する。L5-Swaggerでは静的なファイルを出力することはできないので。

インストール

npm install -g redoc-cli

実行

redoc-cli bundle storage/api-docs/api-docs.json -o doc/index.html
30
26
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
30
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?