【laravel トピック】今週の人気記事TOP5!(2025/3/16 更新)
【2025/3/16】集計 新着週間Like数 ランキング Top5
dedoc/scrambleを使ってLaravel API仕様書生成からの後付けスキーマ駆動開発
dedoc/scrambleを用いたLaravel API仕様書生成とスキーマ駆動開発についての記事です。 Laravelプロジェクトからscramble
コマンドでOpenAPI仕様書(JSON)を生成し、openapi-generator
でTypeScriptクライアントコードを自動生成します。 Homebrewとcomposerによるツールインストール手順と、生成された仕様書、コードの検証結果が示されています。 本記事では、効率的なAPI仕様書作成とコード生成を実現する手法が提示されています。
Laravel + Docker + Cloudflare Tunnel: ローカル開発環境を外部公開してWebhookテストを簡単に
Laravel SailとCloudflare Tunnelを組み合わせたWebhookテスト環境構築方法を紹介。ngrokのようにURLが変更される問題を解決し、開発中のみ外部公開を可能にする。Cloudflare TunnelコンテナをLaravel Sailに追加することで、開発環境起動と同時に自動で外部公開され、終了と同時に公開が停止する。独自ドメインが必要だが、費用対効果は高く、チーム開発でも効率的な環境構築を実現する。
Laravelでのリダイレクト方法まとめ
Laravelのリダイレクト機能は、redirect()->route()
で名前付きルート、redirect()->route()
でルートパラメータ付き、back()->withInput()
で入力データ保持、redirect()->away()
で外部URLへのリダイレクトをサポートする。 セッションフラッシュメッセージはwith()
メソッドで設定可能。名前付きルートの使用はURL変更時の保守性を高め、back()->withInput()
はバリデーションエラー時のユーザー体験向上に有効。
Laravelのログを識別しやすく!リクエストIDをログに埋め込む方法
Laravelアプリケーションのログ調査を効率化するため、リクエストIDをログとレスポンスヘッダーに付加するミドルウェアを作成する方法を紹介。Str::uuid()
で生成したリクエストIDをLog::withContext()
でログに、レスポンスヘッダーにset('Request-Id', $requestId)
で設定する。これにより、エラー発生時のログ特定が容易になり、デバッグ効率が向上する。 ユーザーID等の追加情報もログに含めることが可能。
[Laravel]CLIから内部APIにHttp::post()しようとして失敗した話
Laravel CLIから内部API(POST)アクセスで、バリデーションエラー時にステータスコードが200を返し、エラーメッセージ取得に失敗した。原因はHttp::post()
がLaravelライフサイクルを実行せず、セッションデータが共有されないこと。Http\Kernel
を用いてリクエストすることで解決。Http::post()
は外部API、Http\Kernel
は内部APIに適している。Http::withoutRedirecting()
も併用し、リダイレクト前のレスポンスとステータスコード(302)を取得可能にした。 セッションデータはRedisには保存されるものの、session('errors')
では取得できない点に注意が必要。
【2025/3/9】集計 新着週間Like数 ランキング Top5
Vue.js初心者がプロジェクトに入ったらこうなった!学習のリアルを公開
Vue.js未経験のLaravelエンジニアが、3~5日でYouTubeとChatGPT、メンターを活用し、基礎を習得。簡単なカウンターアプリ作成を経て、実務では既存プロジェクトの修正タスクに携わり、複数コンポーネント間のデータ連携やエラー処理を学び、簡単な機能作成レベルに到達。学習ステップとして、YouTube動画で概要把握→小規模アプリ作成→実務投入→デバッグ実践→Laravel連携を推奨している。 公式ドキュメントは使いにくかったと結論づけている。
Rectorを使って地獄のLaravelアップグレード作業をEASYにしよう[Laravel7→11]
Laravel 7から11へのアップグレードをRectorとRector-laravelを用いて実施。composer
で両ツールをインストール後、rector.php
の設定ファイルでアップグレード対象バージョン(Laravel 11, PHP 8.4など)を指定。vendor/bin/rector process
コマンドでコードを自動修正する。ドライラン機能で変更内容を確認可能。Rectorにより、大規模なアップグレード作業を容易かつ効率的に行えた。
Laravel 12の新しいスターターキットを一瞬で日本語化
Laravel 12の新スターターキットを日本語化する方法を紹介。laravel new proj
で新規プロジェクト作成後、LivewireとLaravel標準認証を選択。composer require askdkc/breezejp --dev
とphp artisan breezejp
を実行するだけで日本語化が完了する。著者はLaravel側にPRを送信し、日本語化の迅速化を実現した。Pestテストフレームワークの利用も推奨。
Docker で Laravel + React を構築する手順
記事は、Docker Composeを用いたLaravel(バックエンド)とReact(フロントエンド)の統合開発環境構築手順を解説。docker-compose.yml
でLaravel(PHP8.2+Apache+MySQL)、React(Node.js 18)コンテナを定義し、それぞれDockerfile
で環境構築を行う。ReactアプリはLaravel APIをfetchで呼び出し、データを表示する。構築過程で発生したポート競合、artisanコマンド実行、npm installエラー、Reactレンダリングエラー等のトラブルシューティングと解決策も示されている。最終的にdocker-compose up -d --build
で環境構築が完了し、ローカル環境で動作確認できることを確認している。
Laravel環境構築の備忘録(MacOS)
macOS環境でのLaravel開発環境構築をLaravel Sail(Docker)を用いて解説。ComposerによるLaravelインストール後、sail up -d
でDockerコンテナを起動し、http://localhost
で動作確認。Laravel 11はPHP 8.2以上、MySQL 8.0を推奨。PHPやMySQLバージョンはdocker-compose.yml
修正とコンテナ再ビルドで変更可能。特定のLaravelバージョンをインストールする場合はcomposer create-project
コマンドにバージョン指定が必要。
【2025/3/2】集計 新着週間Like数 ランキング Top5
LaravelのRefreshDatabase についてのメモ
LaravelのRefreshDatabaseは、テスト実行時にmigrate:fresh
を実行し、各テスト前後でトランザクションを開始/ロールバックする。初回のみmigrate:fresh
実行で高速だが、非同期処理や明示的/暗黙的コミットがあるとデータ整合性が崩れる可能性がある。SQLiteインメモリ使用時は毎回マイグレーションが実行されるため、注意が必要。テストコードはデータベースの挙動に依存しない設計が重要である。
[パフォーマンス改善]LaravelのwhereIn()をgroupBy()で改善
Laravelアプリのパフォーマンス改善事例。1万件のデータ処理で、whereIn()
を用いた処理(24秒、18.3MB)を、groupBy()
による事前インデックス化にリファクタリングすることで、実行時間を0.03秒に短縮(メモリ消費は22.06MBに増加)。whereIn()
はコレクション全体を走査するため低速だが、groupBy()
はインデックス化により高速化を実現。メモリ消費と処理速度のトレードオフを考慮し、状況に応じた最適化が必要であることが結論付けられた。keyBy()
も有効な代替手段として示唆されている。
もう技術選定や設計に悩まない!?全部入りフルスタックTypeScriptフレームワークAdonisJS - ルーティング&コントローラ編
AdonisJS v6はTypeScript対応のフルスタックNode.jsフレームワークで、バックエンドからフロントエンドまでを統合開発できる。MVCアーキテクチャ、Lucid ORM、認証/バリデーション機能を備え、生産性向上に貢献する。記事では、Node.js 20以上でのインストール、Inertia starter kitを用いたプロジェクト作成、start/routes.ts
でのルーティング定義、ace make:controller
コマンドによるコントローラー作成と、response.json()
を使ったレスポンス送信を解説している。
信じられるかい?Laravelの高階メッセージングが全てをシンプルにする
Laravelのコレクションの高階メッセージング機能により、従来each
メソッドとクロージャを用いて行っていたコレクションの要素へのメソッド適用処理が簡潔に記述できるようになる。$users->each->markAsVip();
のように、メソッドをチェーンすることで、各ユーザーをVIPにする処理を簡素化できる。 average
, contains
, filter
, map
など多数のメソッドで利用可能で、開発効率の向上に繋がる。
Laravelで大規模データを扱う:toBase()でメモリを抑える方法
Laravelで大量データ処理時のメモリ消費を削減する toBase()
メソッドを紹介。Eloquentモデルのインスタンス化を避け、シンプルなPHPオブジェクト(stdClass)としてデータを取得することでメモリ使用量を軽減する。CSVエクスポートやバッチ処理など、データ読み取りのみでモデル機能が不要なケースに有効。chunk()
メソッドと併用することで、さらにメモリ効率を高められる。
【2025/2/23】集計 新着週間Like数 ランキング Top5
LaravelでN+1を回避!with()を使う or 使わない?
LaravelでのN+1問題回避を検討。with()
によるEager Loadingと、個別クエリ発行を比較。with()
はリレーション追加が容易で可読性が高いが、不要なデータ取得によるメモリ消費増加のリスクあり。処理データが200件程度と少なかったため、今回は可読性を優先し、個別クエリ発行を選択。データ量やリレーション数が多い場合は、パフォーマンス重視でクエリ最適化が推奨される。with()
はjoinではなく、各リレーション毎にクエリ発行する点が明らかになった。
Laravel + Vite環境でWebWorkerを読み込めない
Laravel + Inertia + Vite環境でWeb Workerを読み込む際、開発環境ではViteとLaravelサーバのオリジンが異なり、Same Origin Policy違反でエラーが発生する。解決策として、ViteプラグインでWorker読み込み時のパスをLaravelサーバに書き換え、Laravel側でそのパスをプロキシする設定を追加した。これにより、開発環境でもホットリロード可能なWeb Workerの実装を実現した。本番環境ではビルド済みファイルを使用するため、この問題は発生しない。
Laravel Developer Survey Report 2025の主要内容
2025年版Laravel開発者調査レポートでは、世界中のLaravel開発者(経験5-10年層が49%)の現状とトレンドが示された。主要なフロントエンド技術はVue.js、Tailwind CSS、Bladeで、バックエンドは82%がLaravel単体利用。データベースはMySQLが主流。AIツール活用率は64%で、GitHub Copilotが最も人気。地域別では、ヨーロッパが開発者数の最多地域だが、北米・オーストラリアでは高給与傾向にある一方、アジア・アフリカはコスト効率が良い人材プールとなっている。 レガシーコードやスケーラビリティの懸念から、一部企業はNode.jsやGoを選択している。
ORMめんどくせぇって思った人のカンニングサイト(特にDjangoの変換サイトほうは、かなり使えそう)
SQLからDjango/LaravelのORMへの変換サイトを紹介。Laravel用サイトはSQLをそのまま変換するため、通常のアプリ開発には不向きだが、イレギュラーなクエリには有効。一方、Django用サイトはDjangoのORMがSQLのJOINをサポートしているため、変換結果も実用的なコードとなる。Django用サイトの方が、開発効率向上に役立つと結論付けられる。
Laravel 命名規則一覧まとめ
Laravel命名規則を網羅した記事。クラス・ファイルはモデル、コントローラ等を単数形、マイグレーションは日付付きファイル名とする。ルートは複数形、ビューはケバブケース。データベースはテーブルを複数形、カラムをスネークケースとする。リレーションはHasOne/belongsToを単数形、それ以外は複数形。メソッド・変数はキャメルケースを使用する。 一貫性のある命名規則により、コードの可読性と保守性を向上させる。
Discussion