「LaravelとVue.js、どこまで連携させてる?次のトレンドは?」~【laravel】今週の人気記事TOP5(2025/10/26)
【2025/10/26】「LaravelとVue.js、どこまで連携させてる?次のトレンドは?」今週の人気記事TOP5(2025/10/26)
Laravel12でソシャゲAPI用のプロジェクトを作成してみる
Laravel 12でソシャゲAPIプロジェクトを作成する手順を解説。
Laravel 11以降、プロジェクト作成後のマイグレーション時にエラーが発生するため、事前に.envファイルのDB設定変更とマイグレーションファイルの修正が必要。API利用にはphp artisan install:apiコマンドで必要な設定を準備。ルーティングはapi.phpに記述し、URLに/api/を追加。また、usersテーブルの変更に合わせてUserモデルを修正。
Laravel+Vueでマークダウンを取り扱う
Laravel + Vue3 環境で、Markdown を安全に表示・保存するための実装手順を紹介。フロントエンドで markdown-it と highlight.js を導入し、マークダウンテキストを HTML に変換。v-html を使用して表示を修正。Tailwind CSS typography プラグインでスタイルを調整。highlight.js を markdown-it に統合し、シンタックスハイライトを実現。
v-cloakで“既読判定が終わるまで完全非表示”にするモーダル実装(Vue 3 + TS + Laravel Blade + Vite)
Vue 3 + TypeScript + Laravel Blade + Vite で、リロード時のチラつきがない安全なモーダル実装を紹介。v-cloak で既読判定完了までモーダルを非表示にし、v-show で表示を制御。localStorage で既読/未読を判定し、未読ならモーダルを表示して記録。CSSでは position: fixed と Flexbox で中央寄せ、width: min(92vw, 600px) でレスポンシブ対応。TypeScript でスクロール抑止やキー操作を実装。@include と Vite 読込を整理して Blade から簡単に呼び出す。
Inertia.js 2.1で変わったフォームの書き方:Wayfinder + <Form> 実践ガイド
Inertia.js 2.1では、useFormの代わりに<Form>コンポーネントとWayfinderが導入され、スターターキットのコードが変更されました。Wayfinderはroute()を置き換え、URLとHTTPメソッドを解決します。<Form>はuseFormを簡略化するもので、Slot Propsで処理状態やエラーを表示できます。Wayfinderと<Form>は統合可能で、<Form action={store()}のように記述できます。ただし、スターターキット内ではコントローラー注入とルートインポートが混在しており、AI生成プログラミング時に注意が必要です。
Laravelで最終ログイン日時を記録する:UTC基準のタイムゾーン設計とInertiaでの表示
Laravelで最終ログイン日時を記録する方法を解説。
-
last_login_atカラム: ユーザーテーブルに追加し、モデルでfillableとcastsに登録。 -
イベントリスナー: ログインイベント (
Illuminate\Auth\Events\Login) をUpdateLastLoginリスナーで捕捉し、last_login_atを更新。 -
UTC: DBにはUTCでタイムスタンプを記録。PostgreSQLでは
timestampTz型が推奨。 -
タイムゾーン設定:
config/app.phpとconfig/database.phpのタイムゾーン設定に注意。 -
フロントエンド表示: Inertia.jsで
date-fnsライブラリを使用し、UTCからローカルタイムへ変換して表示。
github差分ブランチ: https://github.com/catatsumuri/laravel12-starter-kit-react/tree/custom/track-last-login
【2025/10/19】「Laravel、そのままでいいの?ボトルネック見つけてない?」今週の人気記事TOP5(2025/10/19)
「Laravel、まだEloquentだけで消耗してる?」~【laravel】今週の人気記事TOP5(2025/10/12)
Laravel人気記事TOP5(2025/10/12)の要約:Eloquent/Query Builder/Collectionの使い分け、SerializesModelsトレイトによるキュー容量削減、Laravel 12のmake:configコマンド、web.php/api.phpのルーティング差異、Inertia.js 2.0-2.2のWayfinder/Form/InfiniteScroll、Vue3+TSモーダル実装、ZiggyからWayfinderへの移行、Laravel Queueの詳細解説、Carbonの破壊的操作への注意点、PHPのDI解説。それぞれ現場で役立つTipsや実装方法、注意点がまとめられている。
Laravelのマイグレーション機能をちゃんと知る
Laravelのマイグレーション機能は、PHPコードでDBのテーブル定義変更を管理する機能です。マイグレーションファイルを作成し、DDLを記述して実行します。Eloquentと似ていますが、マイグレーションはDDL操作、EloquentはDML操作を目的とします。
ファイル生成はphp artisan make:migrationコマンドで行い、オプションや命名規則で初期コードを調整可能。upメソッドにDDLを、downメソッドにその逆操作を記述します。
実行はphp artisan migrateで行い、バッチとステップの概念があります。実行状況はmigrationsテーブルで管理。ロールバック、リフレッシュ等の派生コマンドや、実行クエリ確認(--pretend)などのオプションも利用できます。
Laravel版のAPI PlatformでSystem ProviderやSystem Processorをデコレートするのが難しかった話
Laravel版API PlatformでSystem Processorをデコレートしようとした際、循環依存が発生。原因はAPI Platformの内部構造にあり、ProcessorInterfaceの実装クラスがCallableProcessorの依存に含まれるため。解決策として、自作のSkipAutoconfigureアトリビュートで自動構成を回避するPRを試みたが、根本的な解決には至らず。
Laravelで大量のリクエストパラメータを送るときにFormRequestはやめたほうがいい話
Laravelで大量のリクエストパラメータ(配列、JSON)を処理する際、FormRequestのアスタリスク指定バリデーションが遅延の原因となる。検証対象4,000件で2分以上かかる場合も。原因は計算量の増大。対策として、Respect\Validation\Validatorライブラリを導入することで、速度を大幅に改善。このライブラリは配列のどの行でエラーが発生したかをFormRequestと同様に検知可能。既存のFormRequestを生成AIで置換・実装することで効率的な移行が可能。
Laravel + Docker環境の「解決不能に見えた」500エラー:原因特定までの全記録
Laravel + Docker環境で発生した原因不明の500エラーは、複数の要因が連鎖した結果だった。
-
設定キャッシュ問題:
.env修正後も古い設定が読み込まれるのは、config:clearで削除されないキャッシュが原因。コンテナ内で直接削除し解決。 -
複数
docker-compose.yml: プロジェクト内に異なる設定ファイルが存在し、環境変数やサービス名の混乱を招いた。
解決策は、docker-compose.ymlを一つに統一し、.envを修正後、docker-compose down -vで環境を再構築。
教訓として、設定ファイルの一元管理、Dockerキャッシュの徹底的な疑い、バックエンドログの重要性が挙げられた。
【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.phpとapi.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パターンについても触れています。
Discussion