章: 第6章: パフォーマンスとインフラ
プルリクエストのたびに手動でテストを実行していませんか?
テストの実行忘れ・PHPStanのチェック漏れ——手作業での確認は必ずミスが生まれます。GitHub Actionsを使えば、コードのpushや Pull Requestをトリガーにテスト・解析を自動実行できます。
CI/CDなしで運用を続けると何が起きるか
人手によるデプロイは手順書の追い忘れ・環境の不一致・ロールバック失敗のリスクが伴います。自動化されたパイプラインで「マージ前に必ず検証が通る」状態を作ることで、ミスと工数を同時に削減できます。
CI/CDの導入効果の比較
| 観点 | 手動運用 | GitHub Actions導入 |
| テスト実行 | 忘れることがある | Push/PRで自動実行 |
| コードレビュー | 静的解析は任意 | PHPStanが自動でブロック |
| デプロイ | 手順書を見ながら手動 | mainブランチへのマージで自動デプロイ |
| 環境差異 | ローカルと本番が違うことがある | CIの実行環境で再現性を担保 |
チェックポイント: GitHub Actionsのワークフローファイルは
.github/workflows/に配置します。シークレット(APIキー・DBパスワード)はリポジトリの「Settings > Secrets」に登録し、${{ secrets.SECRET_NAME }}で参照しましょう。ワークフローファイルには機密情報を直書きしないでください。
コードサンプル
# .github/workflows/ci.yml
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
- run: composer install --no-progress
- run: cp .env.example .env && php artisan key:generate
- run: php artisan test
- run: ./vendor/bin/phpstan analyse --level=5 src
まとめ & 次のステップ
- GitHub Actionsでテスト・静的解析を自動化し、マージ前に品質を保証できます
- ワークフローファイルをバージョン管理に含め、チームで共有しましょう
- シークレットはリポジトリのSecretsに登録し、ワークフロー内で参照しましょう
- CIが通らない限りマージできないブランチ保護ルールを設定することを推奨します
- デプロイの自動化(CD)はCIが安定してから段階的に導入しましょう
次回は XSS対策実践 を学びます。悪意あるスクリプトを埋め込まれないための出力エスケープを整理しましょう。