30秒で判断
- 対応すべき人: Laravel 12系・13系を利用しており、
onOneServer()とwithoutOverlapping()を併用するジョブ、キュー投入失敗時のユニークロック、多数データベース環境でのgetForeignKeys()のパフォーマンスに関心がある方 - 対応不要な人: Laravelを使用していない方。該当機能(ジョブの重複制御・キューのユニークロック・自己参照one-of-many関連の
has()/withCount())を利用していない方 - 確認コマンド:
php artisan --version(またはcomposer show laravel/framework)で現在のバージョンを確認
この変更が意味すること
Laravel 13.37.0は、12.x系・13.x系の両ブランチに対するバグ修正と小規模な機能追加を含むリリースです。破壊的変更の記載はなく、ジョブ・キュー周りの不具合修正が中心です。
とくに onOneServer() と withoutOverlapping() を併用した場合のジョブ競合修正と、キューへのジョブ投入に失敗した際にユニークロックが解放されない不具合の修正は、スケジュール済みジョブやキューを多用するプロジェクトにとって実務上の影響が大きい変更です。12系・13系を利用しているプロジェクトであれば、通常のアップデートサイクルで取り込む価値があります。
主な変更点
onOneServer() と withoutOverlapping() 併用時のジョブ競合を修正
両方のメソッドを併用してジョブをスケジュールしている場合に発生していた競合状態が修正されました。
キュー投入失敗時にユニークロックを解放
ユニークジョブをキューに投入する処理が失敗した際、ユニークロックが解放されずに残ってしまう不具合が修正されました。
limiter の block() タイムアウトでfaked Sleepを尊重
テストでSleepをフェイクしている場合に、limiter の block() タイムアウトがそれを尊重するよう修正されました。
多数データベース環境でのgetForeignKeys()パフォーマンス改善
多数のデータベースを抱えるMariaDB/MySQLサーバーにおいて、getForeignKeys() のパフォーマンスが改善されました。
自己参照one-of-many関連のhas()/withCount()を修正
自己参照のone-of-many関連に対する has() と withCount() の不具合が修正されました。
その他
whereBelongsTo()/whereAttachedTo()のコレクション型の修正queue:failedコマンドへの--queueオプション追加- 13.xのデフォルトキュー設定へのバックグラウンド接続追加
- キューワーカーがジョブ間でスティッキー接続をフラッシュ可能に(13.x)
EOL / サポート状況
| バージョン | ステータス | EOL |
|---|---|---|
| 13 | active | 2028-03-17 |
| 12 | active | 2027-02-24 |
| 11 | eol | 2026-03-12 |
| 10 | eol | 2025-02-04 |
| 9 | eol | 2024-02-06 |
13系は2028年3月まで、12系は2027年2月まで長期的にサポートされます。11系以前はすでにEOLのため、利用中の場合はアップグレードを検討してください。
開発者への影響
onOneServer()とwithoutOverlapping()を併用するジョブのスケジューリングで競合が解消されます- キュー投入失敗時のユニークロック解放により、意図せずロックが残り続ける状態を回避できます
- 多数データベース環境では
getForeignKeys()のパフォーマンス向上が見込めます - 破壊的変更はないため、12系・13系内でのアップデート負荷は小さい見込みです
アップデート方法
composer update laravel/framework
アップデート後は php artisan test などでアプリケーションの動作を確認してください。
データソース: GitHub Releases API, endoflife.date AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
export const impactScoreData = {
"total": 30,
"level": "medium",
"label": "影響度: 中",
"factors": [
{"name": "Breaking Changes", "score": 0, "maxScore": 40},
{"name": "新機能", "score": 8, "maxScore": 25},
{"name": "バグ修正", "score": 17, "maxScore": 20},
{"name": "セキュリティ", "score": 0, "maxScore": 15},
{"name": "依存関係", "score": 5, "maxScore": 15}
]
};
export const breakingChangesData = {
"count": 0,
"items": []
};
export const updateAdviceData = {
"rating": 3,
"maxRating": 5,
"label": "ジョブ・キュー機能を使うなら適用を推奨",
"shouldUpdate": [
"onOneServer()とwithoutOverlapping()を併用するジョブを運用している",
"キューのユニークロックや自己参照one-of-many関連を利用している"
],
"canWait": [
"Laravelを使用していない",
"該当するジョブ・キュー機能を利用していない"
]
};
export const versionNavData = {
"previousVersion": "13.36.0",
"nextVersion": null
};
export const actionGuideData = {
"evaluation": {
"priority": "medium",
"actionRequired": "recommended"
},
"action": {
"steps": [
"テスト環境で13.37.0へのアップデートを検証する",
"本番環境に適用する",
"ジョブ・キュー周りの動作を確認する"
],
"skipIf": [
"Laravelを使用していない",
"12系・13系を使用していない(該当バージョン外)",
"ジョブの重複制御・キューのユニークロック・自己参照one-of-many関連のいずれも利用していない"
],
"notes": ["破壊的変更はないため、12系・13系内であれば移行負荷は小さい見込みです"]
},
"impact": {
"targets": ["Laravel 12/13利用者", "キュー機能利用者"],
"scope": "partial"
},
"changeCategory": "バグ修正"
};
