ステップバイステップで学ぶ初めてのPHPアップデート
目次[非表示]
- 1.はじめに
- 2.なぜPHPバージョンアップが必要なのか?
- 3.PHPバージョンアップ手順
- 3.0.1.PHP 7.4とPHP 8.3の変更差分調査
- 3.0.2.Laravelのバージョンアップ(7.3から10へ)の調査
- 3.0.3.Composerライブラリのバージョンアップ
- 3.0.4.PHP 8のローカル環境設定を更新する
- 3.0.5.静的解析の実施
- 3.0.6.テスト仕様書の作成
- 3.0.7.エラーの修正
- 3.0.8.テスト環境へのデプロイ
- 3.0.9.デバッグ
- 3.0.10.本番環境へのデプロイ
- 4.静的解析ツールの活用
- 4.0.1.PHPStanを使用した理由
- 4.1.ルールレベルの設定
- 4.1.1.使用した感触
- 5.まとめ
- 6.お悩みご相談ください
はじめに
こんにちは、株式会社DIVXでエンジニアを務めております、本間と申します。
今回は、PHPのバージョンを7.4から8.3にメジャーアップデートした手順や使用したツールについてご紹介します。
弊社が受託するプロジェクトでは、バックエンド開発にPHPとLaravelを使用し、Dockerも活用しています。同じような環境で作業を行う皆様の参考になれば嬉しいです。
なぜPHPバージョンアップが必要なのか?
- セキュリティ強化
- 古いPHPバージョンには脆弱性が多く存在します。最新バージョンはこれらを修正し、安全性を確保します。
- パフォーマンス向上
- 新しいPHPバージョンは最適化されており、処理速度が向上します。これにより、ウェブサイトの表示速度も速くなり、サーバー負荷も軽減されます。
- サポート継続
- 古いPHPバージョンは公式サポートが終了すると、バグ修正やセキュリティパッチが提供されなくなります。最新バージョンなら安心してサポートを受け続けられます。
- 互換性確保
- 最新のPHPバージョンを使用することで新しいライブラリやフレームワークと互換性が保たれます。古いバージョンでは開発に支障が生じる可能性があります。
PHPバージョンアップ手順
-
PHP 7.4とPHP 8.3の変更差分調査
PHP公式ドキュメント (https://www.php.net/manual/ja/appendices.php)を参照し、PHP 7.4とPHP 8.3の変更点を調査します。
-
Laravelのバージョンアップ(7.3から10へ)の調査
-
同様に、Laravelの公式ドキュメント (https://laravel.com/docs)を参照し、バージョン7.3から10への変更点を確認します。
以下、各バージョンごとのアップグレードガイド7.xから8.0へのアップグレード(https://readouble.com/laravel/8.x/ja/upgrade.html)
8.xから9.0へのアップグレード(https://readouble.com/laravel/9.x/ja/upgrade.html)
9.xから10.0へのアップグレード(https://readouble.com/laravel/10.x/ja/upgrade.html)
-
-
Composerライブラリのバージョンアップ
“composer.json"ファイルで依存ライブラリのバージョンを更新し、ライブラリを最新にします。
-
PHP 8のローカル環境設定を更新する
Dockerを使用している場合は、"Dockerfile"や"docker-compose.yml”を更新してPHP 8を使用するよう設定します。
-
静的解析の実施
PHPStanやPsalmなどの静的解析ツールを用いてコードベースをチェックし、潜在的なエラーや互換性の問題を洗い出します。
-
テスト仕様書の作成
システム全体を対象としたテスト仕様書を作成します。
-
エラーの修正
静的解析で見つかった問題について、エラーごとにまとめて詳細な修正を行います。
-
テスト環境へのデプロイ
修正が完了したら、コードをテスト環境にデプロイします。ここで、事前に作成したテスト仕様書の確認を行います。
-
デバッグ
テスト環境での動作を確認して、不具合があればデバッグします。また、必要に応じて追加の調整を行います。
-
本番環境へのデプロイ
最終的に、本番環境にコードをデプロイします。
静的解析ツールの活用
今回使用した静的解析ツールはPHPStanです。
Composerで簡単にインストールでき、Dockerイメージも公式で公開されています。
PHPStanを使用した理由
特徴: 高速で正確な解析を行えるツールとして知られています。
レベル設定: エラー検出の厳しさを0〜9までのレベルで設定できるので、プロジェクトに合わせた柔軟な調整が可能です。
コミュニティ: 活発なコミュニティがあり、定期的にアップデートされているのでキャッチアップしやすいです。
おすすめの理由:初心者から上級者まで幅広く使える強力なツールで、エラーレポートも分かりやすいです。
ルールレベルの設定
PHPStanのルールレベルは0〜9で設定可能です。以下、公式ドキュメントの抜粋です。
ルール |
設定内容 |
0 |
基本的なチェック、不明なクラス、不明な関数、不明なメソッド、未定義の変数など |
1 |
未定義の変数、未知のマジックメソッド、およびクラスプロパティ |
2 |
メソッドのすべての式のチェック、PHPDocsの検証 |
3 |
戻り値の型、プロパティに割り当てられた型 |
4 |
基本的なデッドコードチェック - 常に falseの型チェック、デッドelseブランチ、戻り後の到達不能コードなど |
5 |
メソッドや関数に渡される引数の型を確認 |
6 |
不足しているタイプヒントの報告 |
7 |
部分的に間違ったユニオン型の報告、その他の誤りの可能性 |
8 |
メソッドの呼び出しとnull許容型のプロパティへのアクセスの報告 |
9 |
型について厳格にmixed。型に対して実行できる唯一の操作は、別の型に渡すこと |
PHPStan (https://phpstan.org/user-guide/getting-started)
※PHPStanのダウンロードには PHP 7.2以降 が必要です。
使用した感触
ダウンロードが簡単
解析が早い
- 資料が豊富
- 多数のエラーが表示されるが、潜在的なバグの発見に役立つ
まとめ
上記の手順を行い無事にPHPバージョンアップが完了しました。
今回の作業を通じて感じたことは、以下の点です。
- 事前の調査が重要: バージョンアップの前に詳細な調査を行うことで潜在的な問題を未然に防ぐことができました。
- 静的解析の活用: PHPStanのようなツールを活用することでコードの品質を高め、潜在的なバグを早期に検出することができました。
- テストとデバッグの徹底: テスト仕様書に沿った動作確認を行うことで本番環境へのデプロイもスムーズに行うことができました。
今回のバージョンアップによって、セキュリティの強化、パフォーマンスの向上、サポートの継続、新しい機能の活用が実現されました。これからも最新技術を積極的に取り入れていくことでより良いエンジニアリングを提供していきたいと思います。