🥇

「Laravel、まだEloquentだけで消耗してる?」~【laravel】今週の人気記事TOP5(2025/10/12)

に公開

【2025/10/12】「Laravel、まだEloquentだけで消耗してる?」今週の人気記事TOP5(2025/10/12)

Laravelで知ってると差がつくEloquentとQuery Builder(+おまけで現場Tipsも)

LaravelのEloquent、Query Builder、Collectionの違いと使い分けを解説。Query Builderは複雑なJOINや集計、バルク処理、生SQL実行に強く、Eloquentはモデルイベント、リレーション、アクセサ/ミューテータが特徴。Collectionは取得後のデータ整形に使うがSQLは発行されない。現場で役立つTipsとして、SQL確認、条件グルーピング、遅延ロード検知、hydrate()、モデルイベント活用、tap()の理解を紹介。重要なのは、各層の役割を理解し、適切なものを選択すること。

SerializeModelトレイトの導入

Laravelで非同期処理を行う際、Eloquentモデルをシリアライズするとキューストアの容量を圧迫する問題に対し、SerializesModelsトレイトが有効。これはモデルをModelIdentifierに置き換えてシリアライズし、ジョブ実行時にDBから再取得する。これにより容量は削減されるが、DBアクセスが発生し、最新データが取得される点に注意。既存ジョブへの導入時は、デプロイ順序によっては型エラーが発生するため、ジョブ実行側を先にデプロイするか、代替クラスやトレイトの導入が必要。ジョブ設計時にSerializesModelsの導入有無を決定すべき。

Laravel12でmake:configコマンドがしれっと追加された

Laravel 12.26.4 で make:config Artisanコマンドが追加されました。このコマンドは config ディレクトリに設定ファイルを簡単に作成できます。php artisan make:config <設定ファイル名> で実行し、ファイル名を指定しない場合はインタラクティブに入力を求められます。過去に Laravel 6, 9 で提案されたものの却下され、Laravel 12 でようやくマージされました。ファイル作成の手間は少ないものの、コマンドにより確実に config ディレクトリにファイルを作成できる利点があります。AIによる設定ファイル生成時のコマンド実行に役立つ可能性も示唆されています。

【Laravel超入門】web.php と api.php の違いとは??

Laravelのweb.phpapi.phpはルーティングを定義するファイルだが、適用されるミドルウェアが異なる。web.phpはセッションやCSRF保護があり、主にWebページ(HTML)のルーティングに使用され、api.phpはセッションがなく、JSONを返すAPIのルーティングに使用される。Vue.jsなどSPAとの連携では、初期HTMLはweb.php、データ取得APIはapi.phpに記述するのが一般的。記述を間違えるとエラーの原因になるため、用途に応じて使い分ける必要がある。

Inertia.js 2.0 → 2.2まとめ:Wayfinder・Form・InfiniteScroll の全貌

Inertia.js 2.0から2.2のアップデート内容まとめ。
主な新機能は、型安全なルーティング補助APIのWayfinder、公式フォーム統合の<Form>コンポーネント、無限スクロールを実現する<InfiniteScroll>コンポーネント。

WayfinderはZiggyに代わるルーティングヘルパーで、<Form>はuseForm()を代替し、よりHTMLライクな記述を可能にする。<InfiniteScroll>は双方向無限スクロールを容易に実装でき、スクロール位置の保持や手動/自動読み込みモードをサポートする。

【2025/10/5】「Laravel開発、次は「Vue3 + TS」と「Wayfinder」?」人気記事TOP5(2025/10/05)

Vue3 + TypeScript で「一度閉じたら二度と出ない」お知らせモーダルを実装する

Vue3 + TypeScriptで「一度閉じたら二度と出ない」お知らせモーダルを実装する方法を紹介。localStorageを優先し、利用不可時はCookieで代替する既読管理が特徴。ログインユーザーID単位で既読を管理し、未ログイン時は"guest"を共通キーに利用。初回アクセス時にモーダルを表示し、閉じると同端末では非表示。Escキーでのクローズや背景スクロール抑制などUXにも配慮。再掲機能や、localStorage利用不可環境への対策も実施。

【Laravel】ZiggyからWayfinderに移行した理由と手順

この記事では、Laravelのルーティング情報をフロントエンドで扱うパッケージ「Ziggy」から「Wayfinder」への移行について解説しています。WayfinderはLaravel公式でTypeScriptをネイティブサポートし、より安全かつ高性能です。Ziggyが全ルート情報をクライアントに送信するのに対し、Wayfinderはビルド時に必要な情報のみを生成し、初期ロードのパフォーマンスを向上させます。移行手順も解説されており、セキュリティ、パフォーマンス、開発体験の向上が期待できます。

Deep Dive Laravel Queue

Laravelのキュー機能における非同期処理の仕組みを解説。Job処理単位として、各キュードライバに対応する「パケットクラス(Illuminate\Queue\Jobs\Job)」と、具体的な処理内容を記述する「コマンドクラス(App\Jobs)」を区別。コマンドクラスはCallQueuedHandlerでラップされキューに登録。ShouldQueueインターフェースとQueueableトレイトの役割、queue:workとqueue:listenの違い、ジョブチェーンのPendingChainクラス、バッチ処理のBatchableトレイトとBatchクラスについて説明。

Carbon使用時の注意点

Laravel PHPでCarbonライブラリを使用する際、addHours()などのメソッドは元のCarbonオブジェクトを直接変更する(破壊的操作)。そのため、同じオブジェクトに対して複数回時間操作を行うと、予期せぬ結果になる可能性がある。元のオブジェクトを保持したい場合は、代わりにCarbonImmutableを使用することで、非破壊的な操作が可能になる。CarbonImmutable::now()で初期化し、addHours()などで新しいインスタンスを得ることで、元のオブジェクトの値は保持される。日時処理では、破壊的操作を避けることが重要。

PHPの依存性注入(Dependency Injection)を正しく理解する

この要約は、PHPにおける依存性注入(DI)の仕組みと利点を解説しています。DIは、クラスが依存オブジェクトを外部から「注入」されることで、疎結合を実現し、テスト容易性や変更への強さを向上させる設計パターンです。インターフェースを介することで、実装の詳細を隠蔽し、Laravelのサービスコンテナを利用したDIの実装方法も紹介。テスト時におけるモック利用の簡便さなど、具体的な改善点を挙げています。コンストラクタインジェクションが推奨されるDIの3パターンについても触れています。

CareNet Engineers

Discussion