LoginSignup
0
0

More than 1 year has passed since last update.

Laravel sailの初期設定についてのメモ 〜誰でも入れるような環境づくり〜

Posted at

背景

業務では一人で開発するわけではないので、どのレベルの人が入っても気持ちよく開発できるように、最初にプロジェクトを始める人は多少の時間をかけてでも開発しやすい環境を整えておくことは大切だと思います。

ずっと自分が開発に関われるわけではないし、1年後にバグ見つかるかもしれません。
この環境づくりは未来の自分の時間の削減と仲間の時間の削減につながります。
そして、後々恨まれないようにできることはやっておきたいなぁ・・・。

下心

>>>もっといい方法がある、いつもこの設定をしている、など教えてください!!!

自分の環境

どのプロジェクトにも共通するとは思いますが、今回使用したベースの環境は以下の通りです。

  • mac
  • Laravel sail
  • PHP8.1
  • Heroku

**テストの環境変数は .env.testingを使っています。

快適な開発環境を

開発段階で設定したいこと

テストコマンドはカンタンに

例:

composer testでテストできます

phpmyadminを追加

例:

READMEを書く(誰でもクローンして勝手に始められるようになっている?)

  • ReadMeを読めばクローンできるようにしたいですよね。
  • コードの書き方や命名規則はある程度統一したいので、参考になる資料を貼っておけば、レビューした時に楽そう(いろいろ。。)
  • テストを書いて欲しいなら、どうやってテストが動くのかは書いておきたら丁寧ですよね。
  • あと、ブランチ運用や構成が書いてあってもわかりやすいなぁと思います。

例:

GithubActionsにフォーマッターを追加(みんなのコード、ある程度は統一させたいな)

- GithubActionsに設定してプルリクした時に勝手にフォーマットしてもらうように設定します。
- 勝手にcommitするようにしてあるのでフォーマットは最低限にしたものを使っています。
(一時期、フォーマットしたコードの変更箇所を自動プルリクされるようにしていたのですが...運用が面倒でした😢)

今回使用しているパッケージ: PHP-CS-Fixer(言語それぞれ何かしらあると思います)

インストールコマンド:
composer require friendsofphp/php-cs-fixer

設定ファイルの例:
.github/workflows/php_cs_fixer.yml (Github Actions自動コミット)
.php-cs-fixer.dist.php (フォーマッターの設定)

その機能本当にテストは通っているの🤔

  • Github actionsで勝手にテスト回しちゃいます。
    一目瞭然!
    GithubActionsの修正_by_gebageba_·Pull_Request__3·_gebageba_start-project-base-setting.png

例:

main用のGithubActionsはslack通知を入れます

  1. Slackにci用のチャンネルを作る
  2. Github SecretにSLACK_WEBHOOKを追加
  3. ymlファイルを追加
  4. prod.yml の76行目、84行目(Slackのチャンネル名)を編集

リリースする際に設定したいこと

デプロイ完了のSlack通知(ちゃんとデプロイされた?)

  • slackと連携して通知を。
    例: Heroku
  1. Github SecretHEROKU_API_TOKEN を追加
  2. ymlファイルを追加
  3. テストが通っていなかったらデプロイしないとか色々設定できます。便利。

Sentryの追加(本番環境で予期せぬエラーは出ていない?)

  • Sentryを入れてエラー監視を。
  1. Sentryに登録して、プロジェクトを追加したら、コマンドを表示してくれるのでその通りにコマンドを打ちます。
  2. Sentryはとても便利で、環境ごとにエラーを分けてくれます。 APP_ENVSENTRY_LARAVEL_DSNを本番の環境変数に設定します。
  3. SENTRY_LARAVEL_DSNをローカルの環境変数に追加すると、ローカルのログも監視させるので、ローカルには書かないようにします。
  4. エラーが通知されるようにSlackと連携させます。sentryのコンソールからできます。

sakusaku-library-php_–_sentry_php.png

  • 無駄な通知はオフに。
    そのままだと、フロント側(400番台)のエラーもSlackに通知されるので、Handler.php$dontReport に通知したくないExceptionを追加します。

start-project-base-setting_–_Handler_php.png

プラスα編

MessageやErrorMessageは統一されるように設定しておきます。

自分は Laravel-fractal を使用しているが、LaravelにあるResourcesを使うなどなんでもいいと思います。

例:

Handler.php を活用

422のエラーをそのまま返すとフロント側が使いにくかったり、500のエラーには攻撃できる情報(SQLエラーなど)が入っていたりするので、そこら辺をいい感じにします。
例:

Logを日付別に出力させます。

個人の設定ですが、.env ファイルを変更します。
LOG_CHANNEL=daily

ログの保存期間を7日間に変更したり...
例:

swagger

ymlファイルを作るとこまでやっておく。

コマンド:

//インストール
composer require "darkaonline/l5-swagger"
//設定ファイル
php artisan vendor:publish --provider "L5Swagger\L5SwaggerServiceProvider"

例:

/api/documentation でアクセスできる。

あとは、ER図を自動的に作成したいなぁ。。

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