🥇

「Laravel最新化、スムーズに進んでいますか?」~【laravel】今週の人気記事TOP5(2025/09/28)

に公開

【2025/9/28】「Laravel最新化、スムーズに進んでいますか?」今週の人気記事TOP5(2025/09/28)

生成AIと進める、制約ある環境でのテストコード導入

要約が生成できませんでした

Laravelバージョンアップ時の注意点(Carbon3)

Laravel 10から12へのバージョンアップ時、Carbonライブラリの3系への移行でdiffIn系メソッドの挙動が変わる点に注意が必要です。Carbon 2系では常に正の整数を返していたdiffInMonthsなどが、3系では符号付きのfloatを返すようになりました。これにより、既存コードで意図しない小数点やマイナス値が発生する可能性があります。対策として、intキャストとabsolute: trueオプションによる絶対値化が有効です。バージョンアップ時は、Laravel本体だけでなく関連ライブラリの公式ドキュメントも確認し、AIを活用して影響範囲を洗い出すことが重要です。

MySQLでANDとORを併用する時の落とし穴とその回避策

MySQLでANDとORを併用する際、OR条件を括弧で囲まないと、意図しない優先順位で評価され、誤った検索結果を取得する可能性がある。例えば、「東京店または大阪店のユーザ」かつ「delete_flag=0」という条件で、OR条件を括弧で囲まないと、東京店のユーザがdelete_flagに関わらず取得される。回避策として、Laravelのクエリビルダでは、toSQL()でSQLを確認したり、クロージャで条件をグループ化することが有効。複雑なクエリでは特に、生成されるSQLを理解することが重要。

業務システムの PHP と Laravel のバージョンアップの調査・実装を 10 日間でやってみた 🚀

業務システムのPHP 7.4→8.2、Laravel 6.x→9.xバージョンアップを10日間で完了。ChatGPTを活用し、非互換リストの整理、シェルスクリプトによる自動変換(ファクトリ、モデル、テストコード)、Eloquentリレーションの最適化、テストエラー特定を行った。特に、データベースファクトリやリレーションの修正、whereHaswithの最適化が重要だった。結果、コードの8割を自動変換し、短期間での移行を実現した。

Laravelバージョンアップ時の注意点(カラム修飾子)

Laravel 10から12へのバージョンアップ時、カラム変更時にカラム修飾子(default, comment等)が失われる問題が発生。change()メソッド使用時に修飾子を再定義する必要がある。過去のマイグレーションについては、php artisan schema:dumpでスキーマファイルを生成することで既存の属性を保持できる。ただし、バージョンアップ後のchange()使用時は、ダンプ内容と既存DB設定から修飾子を再定義する必要がある。公式ドキュメントの重要性を再認識。

【2025/9/21】「Laravel × React、セッション管理でハマり中?」今週の人気記事TOP5(2025/09/21)

Laravel (Blade) モノリス環境でのフロントエンド技術選定と設計

Laravelモノリス環境のフロントエンド刷新で、Vue.jsからReact+TypeScript+Tailwind CSSへ移行。SPA構成とし、UXと保守性を向上。Next.jsは見送り、既存環境との整合性を重視。Atomic Designの課題を克服するため、featuresディレクトリ構成を採用し、Presenter/Container/Hooksで責務を分離。StorybookとVitestでUIテストとロジックテストを導入し、開発効率を改善。技術選定は既存プロダクトとの整合性を重視し、継続的な改善を目指す。

「Laravelの「マルチ認証」、最適なセッション管理とは?」~【laravel】今週の人気記事TOP5(2025/09/14)

Laravel人気記事TOP5の要約です。

  • マルチ認証: sessionsテーブルにadmin_idカラムを追加し、カスタムセッションハンドラーでuser_idまたはadmin_idを管理。
  • バウンスメール対策: SESからの通知をSNS経由で受け取り、Laravelの各層で処理。
  • レガシーリニューアル: PHP5.2からLaravel11へ移行。課題解決にAIを活用し、段階的移行とデータ移行自動化を実施。文字コード変換やデータ整合性チェックも重要。
  • 開発環境構築: SailとBreezeでモダンなフロントエンド環境を高速に構築。
  • Railsとの比較: 設計思想、ORM、テストなど、RailsとLaravelの違いを解説。

あなたのLaravelアプリは大丈夫?マスアサインメント保護の落とし穴

Laravelのマスアサインメント保護は重要だが、$fillable$guardedの設定だけでは不十分です。create, fill, updateは保護される一方、プロパティ直接代入、forceFill, forceCreate, insert, DB::table(), Query Builderのupdate()は保護されません。対策として、$fillableの利用、開発環境でのpreventSilentlyDiscardingAttributes()の有効化、安全なメソッドの使用、テストによる保護の検証が推奨されます。安易な過信を避け、メソッド選択に注意することでセキュアな開発が可能です。

📚 用語まとめメモ(React × Laravel Sanctum 認証編)

ReactとLaravel Sanctumを用いた認証における主要な用語と流れをまとめた記事です。

SanctumはセッションIDでログイン状態を管理し、SPA向けの認証を簡素化します。React側ではaxiosを用いてAPIリクエストを送信し、withCredentials: trueでCookieを送信。CORS設定やSANCTUM_STATEFUL_DOMAINSの設定により、異なるドメイン間でのセッション維持を実現します。

ログイン処理はCSRF Cookie取得後、ログインAPIを叩きセッションを確立。meエンドポイントでユーザー情報を取得します。React Routerで画面遷移を制御し、React Queryでデータ取得とキャッシュ更新を行います。

Laravel Sanctum × React で /me がずっと401になる地獄を突破した記録

Laravel SanctumとReactで/meが401エラーとなる問題が発生。ログインは成功しているように見えるものの、/meへのアクセスが認証されず。原因はログイン処理後の$request->session()->regenerate();の欠如。この一行を追加することでセッションにユーザーが記録され、/meが200を返すようになった。Laravel Sanctumでのセッション認証設定の繊細さ、特にセッションIDの再生成の重要性が強調されている。

【2025/9/14】「Laravelの「マルチ認証」、最適なセッション管理とは?」今週の人気記事TOP5(2025/09/14)

Laravel11 マルチ認証環境でのセッション管理をカスタマイズ

Laravelでマルチ認証(Admin/User)を実装する際、デフォルトのセッション管理ではuser_idカラムが共有されるため問題が発生します。解決策として、sessionsテーブルにadmin_idカラムを追加し、カスタムセッションハンドラーを作成します。このハンドラー内で、認証状態に応じてadmin_idまたはuser_idに値を設定し、もう一方をnullにします。AppServiceProviderでカスタムハンドラーを登録し、動作確認を行います。パフォーマンスとセキュリティに注意し、高負荷環境ではRedisの利用を検討します。

AWS SES(SNS)×Laravelのバウンスメール対策

AWS SESのバウンスメール対策をLaravelで実装する方法を解説。バウンスメールはハードバウンスとソフトバウンスの2種類があり、対策しないとアカウント制限の可能性がある。実装では、SESからのバウンス通知をSNS経由で受け取り、LaravelのRoute, Controller, UseCase, Repository, Presenter層で処理する。UseCase層でSNSサブスクリプションの確認と、バウンスメールアドレスの保存を行う。SubscriptionConfirmationにはステータスコード200を返す必要がある。

PHP 5.2からLaravel 11への大規模リニューアル #2 アーキテクチャ設計と技術選定

レガシーシステムのリニューアルで、Claude Codeの分析に基づきLaravel 11を採用。エコシステム、長期サポート、日本語情報の充実度、ホスティング環境との相性が決め手。
旧システムの課題(ビジネスロジックとプレゼンテーションの混在、グローバル変数の多用など)を解消するため、データベースを正規化し、週単位時間システムを導入。
4段階の権限レベルを持つ認証・認可システム、RESTful API、多層キャッシュ、セキュリティ対策を実装。
X(Twitter)、OpenAIのAPI連携も行った。
次回はデータ移行戦略(文字コード変換、段階的移行、自動化、整合性チェック)について解説予定。

composer global require laravel/installerしたのにlaravel: not found

Docker環境でcomposer global require laravel/installer後、laravel new .laravel: not foundエラーになる問題。原因はcomposerのグローバルディレクトリがデフォルトの/tmpになっているため、laravelコマンドがPATHに含まれていないこと。解決策は、export COMPOSER_HOME="$HOME/.config/composer"でグローバルディレクトリを適切な場所に変更し、その後PATHを通す(Dockerfileへの記述が推奨)。

PHP 5.2からLaravel 11への大規模リニューアル #3 データ移行戦略と文字コード問題への対処

PHP5.2からLaravel11へのリニューアルにおけるデータ移行戦略が解説されています。

EUC-JPからUTF-8mb4への文字コード変換、表記揺れのあるパーソナリティ名寄せ、HTML形式のイベントレポート移行が主要な課題でした。

文字コード変換では、AIを活用しつつも実データでの目視確認を重視。パーソナリティ管理では、個人・ユニットの階層構造を導入。Eventernoteとの連携でイベント情報を補完しました。
65個のArtisanコマンドを生成し移行を自動化。7割の自動化と3割の手動修正でデータ品質を確保しました。

【2025/9/7】「モダンLaravel、どこまで進化してる? あなたの現場は?」今週の人気記事TOP5(2025/09/07)

[Laravel] 10年付き合うことになるWebAPIをチームで作るときに考えたこと

10年間の運用を想定したWebAPIリプレイスプロジェクトにおいて、オンプレミス環境でAlmaLinuxとコンテナを採用し、Laravelを導入。チームのスキルセットに合わせてディレクトリ構成を再考し、UseCaseとInternalディレクトリを設け、型ヒントの活用やアンチパターンの定義を行った。

課題として、テストコードの浸透、コードレビュー文化の醸成、ドメイン知識の共有、認証・認可の強化が残る。将来的なアーキテクチャ変更を見据えつつ、現状のチームに適したソフトな設計を目指す一方、リファクタリングの経済効果を定量的に示す必要性を感じている。

なぜlaravelのbladeで@phpみたいなことができるのか

LaravelのBladeファイルで@phpなどの独自シンタックスが使えるのは、Laravelがレスポンス生成時にBladeファイルをコンパイルするからです。BladeCompiler.phpが独自シンタックスをPHPに変換し、storage/framework/views/にキャッシュ。その後、PHPコードがrequireされ、ブラウザが解釈可能なHTMLやJSに変換されてレスポンスとして返されます。この仕組みを理解することで、フロントエンドとバックエンドの役割分担が明確になり、開発時の疑問を解消できます。

PHP 5.2からLaravel 11への大規模リニューアル #1 プロジェクト概要と課題分析

20年以上稼働するアニメ・ラジオ番組情報サイト「Aniradi Network」の、PHP 5.2からLaravel 11への大規模リニューアルプロジェクトの概要。レガシーシステムはセキュリティリスク、メンテナンス性、パフォーマンスに課題を抱えていた。リニューアルを阻んでいた要因を、Claude Codeの導入により、開発速度、技術的ハードル、品質担保の面で解決。PHP 8.3 + Laravel 11、MySQL 8.0への移行、セキュリティ強化、保守性向上、ユーザー体験の向上が目標。段階的な移行とデータ移行戦略、文字コード変換の自動化を実施。

Laravel + Vite + α のモダンフロントエンド環境を5分で立ち上げる手順

LaravelでViteを使ったモダンなフロントエンド環境を構築する手順を紹介。Docker環境構築にLaravel Sailを使用し、laravel/breezeで認証機能付きのスターターキットを導入。artisan breeze:installコマンドでBootstrap/Vue/Reactの足場を生成し、npm installnpm run devで依存関係をインストール、ビルドする。SailとBreezeを活用することで、高速なHMR(ホットリロード)による快適な開発環境が容易に実現可能。

RailsからLaravelを眺めるシリーズまとめ|RailsとLaravelの違いを整理する

Rails経験者がLaravelを学ぶ、あるいはLaravelエンジニアがRailsを知る際に役立つ、RailsとLaravelの比較シリーズのまとめ。Service Container、ORM(ActiveRecord vs Eloquent)、責務分離、Hotwire vs Livewire、テスト(RSpec vs PHPUnit)、バリデーション(FormObject vs FormRequest)等の違いを、コード例を交えながら解説。両フレームワークの設計思想の違いを理解することを目的とする。

CareNet Engineers

Discussion