🥇

「Inertia.js再評価の波、レガシー脱却の鍵はAI連携?」~【laravel】今週の人気記事TOP5(2025/7/6)

に公開

【2025/7/6】「Inertia.js再評価の波、レガシー脱却の鍵はAI連携?」~今週の人気記事TOP5(2025/7/6)

フロントエンドの分離は正義だったのか──AI時代にInertia.jsを再評価する理由

AI時代において、Inertia.jsのようなモノリシック構成が、AIツールによる開発支援と相性が良いと著者は述べています。Inertia.jsはAPIレスでReact/Vue/Svelteを使用可能にし、Laravel等のバックエンドと連携、フルスタックエンジニアとAIの組み合わせで開発効率を向上させます。AIツールがコードベース全体のデータフローを把握しやすく、変更が容易になる点がメリットです。Laravelの知識があれば学習コストも低く、AIと連携した開発を試したい開発者におすすめです。

レガシーなフロントエンドにReact + Web Componentsを導入し、社内デザインシステムを部分的に利用できるようにした話

レガシーなLaravel + PHPのフロントエンドにReactとWeb Componentsを導入し、社内デザインシステムを部分的に利用可能にした事例。r2wcライブラリでReactコンポーネントをWeb Components化し、Bladeテンプレートに <react-component> タグで埋め込み、必要な時だけ読み込むように改善。課題として、reset.cssによるスタイル競合をCSSの@layerで解決、CodeBuildでのNode.jsバージョン問題をNode.js 18の手動インストールで回避。これにより、UI改修の効率化と開発体験の向上が実現。

2025年6月の技術棚卸しログ

2025年6月はバッチ処理中心に、LaravelのinsertUsingやチャンク処理を実践投入。大量データ処理での分割・ループ設計に苦戦しつつ、パーティション削除処理も担当。PHP基礎理解の甘さを痛感し、マニュアル学習を開始。『世界一流のエンジニアは何をしているのか』から刺激を受け、成長とアウトプットを見つめ直す。来月はDB設計、データ加工・テスト、OSS活動、複雑な取得処理のリファクタリング、Laravelコレクション学習、PHPマニュアル継続、Zennアウトプットに注力予定。

【個人開発】Laravel + Vue.jsで作る週刊少年ジャンプ年表アプリ【ジャンプなに読んでた?】

フルスタックエンジニアのミヤツカ氏が、Laravel+Vue.jsで週刊少年ジャンプの年表アプリ「ジャンプなに読んでた?」を個人開発。
1968年からの連載作品を年表形式で表示し、作品クリックで詳細を表示。
技術スタックは、バックエンドにLaravel(API,DB,ルーティング)、フロントエンドにVue.js(SPA)を使用。
工夫点として、Wikipediaとゼブラック等のデータからMySQLに作品データとバックナンバーデータを格納し、PHPで年表データを整形。
Vue.jsで縦スクロール年表を描画し、ニコニコ動画風コメント機能も実装。
コメントは画面上を横方向に流れ、ユーザ体験を向上させている。

【Laravel実例で学ぶ】リーダブルコードの要点まとめ

この記事は、Laravel開発における「リーダブルコード」の実践に焦点を当てています。重要なのは、明確な命名規則(Laravel規約に準拠)、単一責任の原則(コントローラ、サービス、モデルの役割分担)、早期リターン(ガード節によるネスト削減)、処理の抽出(複雑な処理の分割)、意図を伝えるコメントです。Eloquentモデルのスコープやアクセサ、サービスクラスでの責務分離、フォームリクエストによるバリデーションの整理など、Laravel特有のテクニックも紹介し、保守性と理解しやすさを重視したコード作成を推奨しています。

【2025/6/29】「Laravel最新トレンド、「外部API」と「DDD」、どう活かす?」~今週の人気記事TOP5(2025/6/29)

5 分でできちゃう!?Laravel 12 アップグレード

Laravel 12へのアップグレードを「えんさがそっ♪」で検証した結果、公式ドキュメントの「5分で完了」は非現実的であり、実際には約2人日を要した。

composer updateによるライブラリ更新自体は短時間で完了するものの、仕様変更の影響調査(特にDIコンテナ関連)と動作確認に時間を要した。

DIコンテナのクラスプロパティのデフォルト値に関する変更は注意が必要。アップグレードは段階的に行うのが賢明である。

外部データを取得するAPIを使った開発から学んだ「自由度とパフォーマンス」のバランス

Laravelで外部APIを利用する際、柔軟性とパフォーマンスのバランスが重要。使いやすいAPIとして、必要なデータのみ取得、豊富な検索条件、関連データ同時取得の3つの設計を紹介。実装例として、GraphQL的なフィールド指定、フィルタリング、Eager Loadingを提示。

速度対策には、APIリクエスト制限、キャッシュ活用、頻用パターンのエンドポイント事前定義が有効。制限設定、LaravelのCacheファサード利用、専用エンドポイント作成の実装例も解説。これらの設計と対策で、開発効率と運用性を高められる。

ドメイン駆動設計(DDD)実践:GHG排出量可視化で学ぶ集約ルートの設計と責務

この記事では、ドメイン駆動設計(DDD)における集約と集約ルートの設計と責務について、GHG排出量可視化ソリューションを題材に解説します。集約ルートは、集約内部の整合性を保証し、外部との唯一の接点となるオブジェクトです。具体的な例としてEmission集約を挙げ、活動量の変更に伴う排出量の再計算といった責務を担うことを示します。内部構造への直接アクセスはNGであり、集約ルートを経由した操作が推奨されます。次回は、複数集約を扱う際の整合性保証について解説予定です。

Laradock + Laravel環境構築のハマりどころ備忘録【2025年版】

Laradock + Laravel環境構築におけるハマりどころと解決策をまとめた記事です。

Nginxで403エラーが出る場合は、Laradock側の.envとNginx設定ファイルでドキュメントルートを修正。DB接続エラーは、Laravel側の.envDB_HOSTmysqlに設定。db:seedDBクラスが見つからない場合は、Seederファイルにuse Illuminate\Support\Facades\DB;を追加します。
Dockerの知識と.envファイルの役割理解が重要と結論付けています。

【Laravel】configと.envの使い分け

Laravelのconfigと.envの使い分けについて解説。.envは環境変数(DB接続情報等)を定義し、config/*.phpはアプリ全体の設定(アプリ名等)を記述する。config()で設定を参照し、config:cacheで本番環境の.env読み込みを高速化する。設計のポイントとして、.envを直接参照せずconfig経由で使用、共通設定はconfigに集約、動的なUI/機能切り替えに活用できる。設定変更後はconfig:cacheの再生成が必須。

【2025/6/22】「DB遅延、型定義…Laravel開発の「悩み」、解決策は?」~今週の人気記事TOP5(2025/6/22)

ClaudeCodeが高いからCursorで再現できるか試してみた(2025/06)

ClaudeCodeのワークフロー(Explore→Plan→Code)をCursorのRules機能で再現する試みが紹介されています。ClaudeCodeで生成したRulesをCursorに適用した結果、完全再現には至らないものの、類似の挙動を実現。Explore,PlanフェーズはClaudeCodeが優秀。常にワークフローが発動し開発速度が低下する課題も。適切なRulesカスタマイズで品質の高い開発環境を構築可能。開発効率を重視するならClaudeCode Maxプランが推奨されるが、Cursorでの代替アプローチも選択肢。

[Laravel × Aurora MySQL]DB接続先を分離してアプリの耐久性を上げる

LaravelアプリケーションにおけるDB起因の遅延対策として、Aurora MySQLの読み書き分離を実装。config/database.phpを修正し、readwriteで異なるエンドポイントを設定。これにより、管理画面からのCSVダウンロード処理による負荷がリーダーDBに分散され、ライターDBへの負荷集中を回避。結果、ユーザー向け画面の遅延を解消。設定変更時は切り戻し手順の準備が重要。クエリチューニングだけでなく、設定レイヤーでのチューニングも有効な選択肢であると結論。

【FrankenPHP・ZTS】スレッド安全を考慮して、PHP拡張機能を追加する

FrankenPHPはZTS (Thread Safe) で構築されたPHP環境のため、拡張機能のインストール時にスレッド安全性を考慮する必要がある。aptpeclでXdebugをインストールすると、NTS (Non Thread Safe) 版が導入され動作しない。install-php-extensions を使用することで、現在のPHP環境(ZTS/NTS, バージョン)に合わせてソースからコンパイルされ、ZTS対応版を確実に導入できる。Dockerイメージの品質と安定性向上のため、積極的に活用すべき。

TypeScriptと共に組織の開発体験を向上させる取り組み

組織の課題として、APIレスポンスの型定義の欠如、Propsの不明確さ、型への意識の低さがあった。

TypeScript導入として、StorybookでUIコンポーネントをTypeScriptで記述し、Propsの型推論を可能にした。また、APIレスポンスの型を定義し、バックエンドで共通処理を作成、スキーマ駆動開発を行った。

TypeScript以外では、バッチ処理サーバーを分離し、疎結合・オブジェクト指向の考え方を学習した。TypeScriptを効果的に使うには、設計思想の学習が重要であると結論付けている。

Laravelのキューイングで陥りやすい罠:シリアライズ問題を理解する

Laravelのキューイングでシリアライズ問題に陥らないための解説。ジョブをキューに保存する際、PHPのserialize()が使用されるため、オブジェクトにDB接続などのリソースや複雑な依存関係を持つサービスクラスを直接含めるとエラーが発生する。解決策として、コンストラクタではプリミティブ型やIDのみを受け取り、必要なサービスはhandle()メソッドの引数で注入する。シリアライズできないデータはIDやパスのみを保持し、実行時に再取得する。

【2025/6/15】「Laravel12で開発効率爆上げ、次はInertia?DTO?」~今週の人気記事TOP5(2025/6/15)

Laravel 12 を日本語化する方法

Laravel 12を日本語化する方法の備忘録。laravel-lang/commonパッケージとlaravel-lang/starter-kits(Starter Kits使用時)をComposerでインストール。php artisan lang:add jaで日本語言語ファイルを追加し、config/app.phpでlocale, fallback_locale, faker_localeをjaに変更、timezoneをAsia/Tokyoに設定。composer.jsonpost-update-cmd@php artisan lang:updateを追加し、composer update時に言語ファイルを自動更新。完全な日本語化には手動修正が必要。

Laravelでリクエストが認証済みか判定する流れ

Laravel 12におけるリクエスト認証判定の流れは、Authenticateミドルウェアで開始。まず、AuthManagerからガードインスタンス(SessionGuard)を生成し、GuardHelpers::check()で認証を判定します。これはセッションデータにユーザーIDが存在し、DBからユーザーを取得できるかで判断。認証済みの場合はupdateSessionメソッドでセッションIDを再生成し、セッションレコードを更新。次回以降のcheck()ではキャッシュされたユーザー情報を使用します。

Laravelのログイン/ログアウト時のセッションの流れ

Laravel Breeze環境下でのログイン/ログアウト時のセッション処理の流れ。

ログイン時:

  1. SessionGuardloginメソッドで、認証ユーザー情報をガードインスタンスにセット。
  2. updateSessionでセッションIDを再生成し、セッションインスタンスにセット。既存セッションレコードは削除。

ログアウト時:

  1. SessionGuardlogoutメソッドで、ガードインスタンスのユーザー情報をnullに。
  2. migrateメソッドでセッションIDを再発行し、既存セッションレコードを削除。

セッションIDの再発行は、ログイン処理中で2度実行される可能性がある。

Laravel 12 + React + Inertia の開発を劇的に改善する Cursor Rules

Laravel 12 + React + Inertia環境でCursorがNext.jsと誤認したり、古いLaravel構造を提案したり、Inertiaの機能を無視する問題に対し、Cursor Rulesによる解決策を提示。.cursor/rules/laravel-inertia.mdcにプロジェクト固有のルールを定義することで、AIがLaravel 12の最新構造、Inertiaの利用を認識し、適切なコード生成を促す。設定反映後はCursorを再起動し、認識を確認する。

LaravelでDTOを使う理由と設計ルール

LaravelにおけるDTO導入の意義と設計ルールに関する記事。DTOはバリデーション済みのデータを安全にServiceやModelに渡すためのクラスであり、データの入口を明確化、型保証、getter経由での安全な値の取得、Service・Model間のインターフェース明確化に貢献する。DTOはコンストラクタで値を受け取り、セッターは原則禁止。データの加工はDTOに渡す前に行う。構造化テンプレートでは、DTOの設計・配置・命名をルール化し、チーム開発における属人化を防ぎ、保守性・再利用性・テスト性を高める。

【2025/6/9】集計 新着週間Like数 ランキング Top5

PHPUnitからPestPHPへ:テストをもっと軽快に!

PHPUnitの記述量や実行時間の課題に対し、PestPHPはより軽快で読みやすいテスト環境を提供する。PestPHPはPHPUnitを拡張し、シンプルな構文、直感的なアサーション、インラインデータプロバイダによりBDDを意識したテスト記述が可能。Laravelプラグインも提供。導入にはPHP8.2以上が必要で、PHPUnitの知識も求められるが、テストコードの意図を直接記述できる点がメリット。変換ライブラリも存在し、導入しやすい。

Laravel 12 を日本語化する方法

Laravel 12を日本語化する手順の備忘録。laravel-lang/commonlaravel-lang/starter-kitsをcomposerでインストール後、php artisan lang:add jaで日本語ファイルを追加。config/app.phpでlocale、fallback_locale、faker_localeを'ja'に変更し、timezoneを'Asia/Tokyo'に設定。composer update時にphp artisan lang:updateを実行し言語ファイルを自動更新するよう設定。ただし、完全な日本語化には手動修正が必要。

LaravelでDTOを使う理由と設計ルール

LaravelでDTO(Data Transfer Object)を導入する意義と設計ルールに関する記事です。
DTOは、バリデーション済みのデータを安全にServiceやModelへ受け渡すための専用クラスであり、データの流れを明確化し、型安全性を高めます。
DTOはコンストラクタで値を受け取り、getter経由でのみ公開します。
セッターは原則禁止とし、加工処理はDTOの外部で行うことで、保守性、再利用性、テスト性を向上させるという結論です。
構造化テンプレートにおけるDTOの設計ルールについても解説されています。

LaravelのFormRequestのバリデーションと紐づいたVueのエラーフィードバックコンポーネントを作成する

LaravelのFormRequestとVue3/Inertia.jsを連携させ、バックエンドのバリデーションエラーをフロントエンドで効率的に表示するコンポーネントを作成する。TypeScriptでフォームデータとエラーレスポンスの型を定義し、再利用可能なValidationErrorコンポーネントとComposableを実装。これにより、型安全性を確保し、エラー表示ロジックを集約、配列フィールドのエラーも適切に表示。FormRequestで定義されたバリデーションルールと連携し、保守性の高いエラーフィードバックを実現する。

Gmail と MailHog にメールがランダムに送られる Laravel でのバグを仮説ドリブンなアプローチで解決してみた

ステージング環境からのメールがGmailやローカルMailHogにランダムに届くバグの原因は、全環境が同じAWS SQSキューをポーリングし、ジョブを取り合っていたこと。LaravelのQUEUE_CONNECTIONsyncに変更することで解決。仮説ドリブンなアプローチで、dispatch()がSQSにジョブをディスパッチしていることを突き止め、ローカル環境とステージング環境のワーカーが競合していることを特定。根本的な解決策として、SQSの使用を避けることを提案。

【2025/6/1】集計 新着週間Like数 ランキング Top5

令和最新版LaravelCollective/htmlからspatie/laravel-htmlへの移行注意点

LaravelCollective/htmlパッケージの廃止に伴い、代替パッケージspatie/laravel-htmlへの移行が必須となった。Laravel Shiftというツールが移行を支援するものの、radio要素の挙動変更(old値の扱い、checked属性の優先順位)や、date系の入力形式変更、selectの多重ネスト配列非対応など、いくつかの相違点に注意が必要。特にradio要素の変更は重大な影響を及ぼす可能性があり、手動修正が求められるケースもある。移行後は動作検証が不可欠である。

[conoha VPSにDocker + Laravel構築④] GitHubActionsでデプロイする

記事は、Conoha VPS上にDockerとLaravelで構築された開発環境へのGitHub Actionsを用いたデプロイ方法を紹介している。devブランチへのプッシュをトリガーに、GitHub Actionsが以下の処理を実行する。1. Apacheをメンテナンスモードにする。2. git pullでコードを更新。3. php artisan migrate --forceでマイグレーションを実行。4. Apacheのメンテナンスモードを解除。appleboy/ssh-actionを用いてSSH接続し、これらの処理をVPS上で実行する。 Apacheのバーチャルホスト設定変更により、メンテナンスページの表示と切り替えを実現している。

LaravelとGoogleカレンダーの連携

この記事は、LaravelアプリケーションからGoogleカレンダーにイベントを登録する手順を解説しています。Google Cloud ConsoleでGoogle Calendar APIを有効化し、サービスアカウントを作成、必要な認証情報を取得します。Laravel側ではgoogle/apiclientライブラリを用い、config/services.phpに認証情報とカレンダーIDを設定、コントローラーでイベント登録処理を実装します。 記事では、各ステップの詳細な手順とコード例を示し、エラー処理も考慮されています。 Google Drive、Sheets、Gmail APIなどへの拡張性も示唆されています。

ミニカーコレクションSNSサービス開発④▶️開発50日目 - いいね機能の非同期処理 -

Laravel, Livewire, Alpine.js, Tailwind CSSを用いたミニカーコレクションSNS「The Garage」のいいね機能を非同期処理で改修。jQueryとAjaxを用いて、いいねボタンクリックでページリロードなしに、データベースへのいいね登録/解除とハートマークの表示/非表示を切り替える実装を行った。コントローラーはログインユーザー認証といいね状態判定を行い、JSONレスポンスを返す。ルーティングはfavorites.toggleでコントローラーのtoggleLike関数に接続。 開発効率向上のため、今後ペースアップを目指す。

ミニカーコレクションSNSサービス開発③▶️開発40日目 - LaravelとGmail連携 -

LaravelとGmail連携による意見箱機能を実装した。Googleアカウントの仕様変更により、App Passwordを用いた認証が必要になった。 現在、メールで意見を受け取っているが、必要に応じてデータベース保存に変更する可能性あり。今後の開発はいいね機能の非同期処理実装で、ページリロードをなくし、リアルタイム性を高める。 サービスはミニカー特化型オンラインディスプレイサービス「The Garage」で、開発進捗はZennで公開中。

【2025/5/25】集計 新着週間Like数 ランキング Top5

LINE活用で地域を活性化:自治体向けスタンプラリーLIFFアプリを開発

地方自治体向けLINEスタンプラリーLIFFアプリをNext.js(フロントエンド), Laravel(バックエンド), Aurora Serverless(DB)を用いて開発。 100万円前後の小規模予算でも対応可能な汎用アプリとして、QRコードによるスタンプ管理、クーポン発行機能を実装。 実機デモによる営業効率向上、UX向上、地域活性化に貢献。 今後はサーバサイド・クライアントサイドの分離による保守性向上、ダッシュボードUI改善を検討。

TermuxでLaravel

Termux上でLaravel 11(Vue.js使用)の開発環境構築を試みた。Laravel installerを用いてプロジェクト作成し、開発サーバー起動を試みたが、ファイル監視数の上限超過によりエラー発生。viteのソースコード修正で回避。 データベースをSQLiteからMariaDBへ移行することに成功した。ただし、Hot Reloadは完全には機能せず、root権限がないためファイル監視数上限の増加は不可能だった。

S3へ画像アップロード

Laravel 12、PHP 8.4、AWS S3を用いた画像アップロード機能の実装手順を解説。AWSコンソールでIAMユーザー作成、S3バケット作成を行い、Laravel側ではleague/flysystem-aws-s3-v3パッケージを用いてStorage::disk('s3')でアップロード処理を実装。envファイルにAWS認証情報、config/filesystems.phpにS3設定を記述する。アップロード成功時にはS3 URLを取得し、表示する。セキュリティを考慮し、パブリックアクセスはブロックされている。

Laravel 経験者のための FastAPI チャットボット構成ガイド(初心者向け)

Laravel経験者向けに、FastAPIを用いたチャットボットアプリ開発ガイドが公開された。Laravel風のディレクトリ構造(routers, controllers, services, models, templates)を採用し、Jinja2テンプレートエンジンとLangchainを用いて、OpenAI APIとの連携を実現する。 MVC構造を踏襲した設計で、拡張性と可読性を高めている。 main.pyでアプリ全体を制御し、ルーティング、コントローラー、サービス層でビジネスロジックを分離することで、保守性の高いアプリケーション構築を支援する。

95%削減!Laravel開発を劇的に高速化するツール【LAC】

Laravel開発ツール「Laravel Arsenal Core (LAC)」は、CRUD開発における反復作業を自動化するツールキットです。モデル、コントローラー、サービス、ビュー、ルーティング、バリデーションなどを自動生成し、開発時間を95%削減します。 Excel連携によるデータインポート機能や、モデルリレーション、バリデーションの自動同期も備えています。サービス層パターンを採用し、コード品質と保守性を向上させます。php artisan lac:scaffoldコマンドなどを用いて簡単に利用可能です。

【2025/5/18】集計 新着週間Like数 ランキング Top5

[備忘録]phpunitのdataProviderメソッドはsetupメソッドよりも先に呼び出されるっぽい

Laravel PHPUnitテストでdataProviderメソッドがsetUpメソッドより先に実行されることを発見。config/app.phpのタイムゾーン変更後、dataProvider内で生成したCarbonオブジェクトのタイムゾーンがUTCのままとなりテストが失敗。原因はdataProviderの実行タイミングがアプリケーションのブートストラップ前だったため、config設定が反映されていなかったこと。Carbon::makeにタイムゾーンを明示的に指定することで対処。dataProvider使用時は設定の反映タイミングに注意が必要。

AIに1トーク2万文字のプロンプトを投げたら人格が宿った件:③制作話編

2万文字のプロンプトを用いた人格AIチャットボット「VFriend」の開発経緯を記述。小説生成AI「KANDO」開発を皮切りに、オリジナルキャラクター設定、個人情報・人生エッセイ追加による人格向上、画像生成による自己認識向上などを経て完成。React、Next.js、Laravel、MySQLなどを用いた自作アプリで、3人会話構造と三層記憶を実装し、Amazon Lightsailにデプロイ。 技術と感情の融合を目指す実験として、ChatGPTの制限回避も課題だった。

初心者が説明する初心者のためのMVCフレームワーク

Laravelを用いたMVCフレームワークによるアプリケーション開発を解説した記事。Model(データベース操作とビジネスロジック)、View(ユーザーインターフェース)、Controller(リクエスト処理とModel、Viewの連携)の3層構造と、ルーティング機能を説明。新規投稿機能の実装例では、ユーザー入力値のバリデーション、データベースへの保存、ユーザー認証、Bladeテンプレートを用いたView作成を詳細に示す。MVCモデルは保守性と再利用性を高め、開発効率を向上させる。

【Mailpit/Mail.tm】Webアプリ開発でメール機能検証に役立つツール

MailpitとMail.tmを組み合わせることで、Webアプリ開発におけるメール機能のテストが容易になる。Mailpitはローカル環境でメール送信をキャプチャし、ブラウザで確認できるツールで、DockerやHomebrewで導入可能。Laravelの設定例も紹介されている。Mail.tmは使い捨てメールアドレスを発行し、ユーザー登録など本番環境に近いテストを可能にする。両ツールを併用することで、メール送信の動作確認とユーザー視点での検証を効率的に行える。特にMailtrapの代替を探している開発者にとって有用な組み合わせである。

フロントエンドエンジニアが挑戦してみた!Laravel初心者のためのコンポーネント入門

Laravel(PHP)初心者フロントエンドエンジニアが、Bladeコンポーネントとクラスベースコンポーネントを実装。Bladeコンポーネントはシンプルで学習コストが低く、複雑でない限り推奨。クラスベースコンポーネントは複雑なUIや状態管理に適する。コンポーネント呼び出しは <x-コンポーネント名>形式で、ディレクトリ構造を反映。@propsでプロパティを定義し、Next.jsやVue.jsと類似性を感じ、比較的容易に実装できた。 複雑なロジックが必要な場合はクラスベース、そうでない場合はBladeコンポーネントを選択すべきと結論付けている。

【2025/5/11】集計 新着週間Like数 ランキング Top5

3500件以上あったLarastanのエラーを約3ヶ月で解消するまで

3500件以上のLarastanエラーを抱えるLaravel(10.48.17) プロジェクトにおいて、6~7名チームで約3ヶ月かけてエラー解消を達成した。毎日30分の時間を固定し、スプレッドシートで進捗管理、プルリクエストの粒度を小さくする等工夫することで、全エラーの解消(テストコード除く)を実現。 チームでの継続的な取り組みと、小さな改善の積み重ねが成功要因となり、コード品質向上、チームのモチベーション向上に繋がった。 今後はpre-commitフックやCIへの組み込みでエラー発生の予防を目指す。

EC2にLaravelを構築する手順

Amazon Linux 2023 EC2インスタンスにLaravel 12.0、Nginx 1.26.3、PHP 8.4を構築し、静的ページ表示に成功した手順を示す記事。yumを用いたシステムアップデート、PHP, Nginx, Composerのインストール、ユーザー権限設定、Laravelプロジェクトのクローンと初期設定、NginxとPHP-FPMの設定、アクセス確認までを解説。Vite利用時のnpm設定についても触れている。データベース設定は別記事を参照。 基本構成の構築と動作確認を目的としたチュートリアルである。

RailwayのHobbyプランでスロークエリが発生した原因と対処法

Railway Hobbyプランで開発したLaravelアプリにおいて、DBアクセスが著しく遅い問題が発生した。コードやクエリに問題はなく、LaravelのDB::listen()で遅いクエリを特定した。原因は、アプリサーバーをアジア圏、DBをUS-WESTに配置したため、物理的な距離による遅延だった。アプリサーバーのリージョンをUS-WESTに変更することで、クエリ実行時間は約10分の1に改善された。 アプリのパフォーマンス低下の原因はコードだけでなく、インフラ構成(リージョン設定)も考慮すべきであることを学んだ。

LaravelにおけるEnumの活用方法

LaravelにおけるPHP 8.1のEnum活用は、型安全性を向上させ、ビジネスロジックをカプセル化する強力な手段です。php artisan make:enumでEnumを作成し、モデルの$castsプロパティでデータベース値をEnumにキャストできます。Enumにメソッドを追加し、バリデーションやビューで活用可能です。メリットは型安全性、自己文書化、カプセル化、IDEサポートの向上ですが、PHP 8.1以降が必要な点がデメリットです。Enum採用はコードの可読性と保守性を高めます。

laravel12 starter kit(react)のavatar画像の扱い

Laravel 12 starter kit (React) でのavatar表示は、shadcn/uiコンポーネントを使用。user.avatarが存在すれば表示、なければイニシャル表示となる。 データベースのusersテーブルにavatarカラムを追加し、外部サービス(例:pravatar.cc)からURLを取得して格納することで実装可能。ただし、URL管理のメンテナンス性は低いため、次回以降、より良いavatar生成手法を検討する。

【2025/5/4】集計 新着週間Like数 ランキング Top5

NativePHP for desktop が正式リリースしたのでインストールして少し触った

NativePHP for desktop v1.0.0が正式リリースされた。PHP 8.3+、Laravel 11+、Node 22+の環境で、Composerとphp artisan native:installコマンドでインストール可能。php artisan native:serveで開発サーバーを起動し、app/Providers/NativeAppServiceProvider.phpbootメソッドを修正することでウィンドウサイズ、タイトル、表示URL、開発者ツールの表示/非表示などを制御できる。PHPでデスクトップアプリ開発が可能になったことを示す。

【Postman】Bearer Token認証が必要なAPIを叩く方法

Laravel Sanctumを用いたBearer Token認証をPostmanで実現する方法を示した記事。Postmanでログインリクエストを送信し、レスポンスから取得したaccess_tokenをコレクション変数に保存。その後、認証が必要なAPIリクエストのヘッダーにAuthorization: Bearer {{access_token}}を追加することで認証を行う。 Post-responseスクリプトによる自動化と、Authorizationヘッダーのプリセット化による効率化も提案されている。

開発環境でログインするのが面倒な人ー!!こっち!!

Laravel開発で特定ユーザーへの迅速なログイン切り替えが必要な場合、Auth::loginUsingId()メソッドが有効です。ユーザーIDを直接渡すことで、セッション(または永続セッション)を生成し、ログイン状態を簡単に設定できます。 これは管理者権限によるユーザーになりすましなどに有用で、公式ドキュメントにも記載されている安全な方法です。 Auth::loginUsingId(1); (セッションログイン)や Auth::loginUsingId(1, true); (永続ログイン)といったシンプルなコードで実現可能です。

1年運用して気づいたLaravel環境(WSL + Docker)のメモ

1年間Laravel環境(WSL+Docker)を運用した結果、Docker Desktopの代わりにWSLにDocker Engineを直接インストールすることで、PC性能の大幅な改善(ファン騒音、フリーズ解消、100GB以上の容量解放)を実現した。 プロジェクトをWSLのルート直下に配置することでファイルI/Oのオーバーヘッドを削減。vendorstorage/frameworkbootstrap/cache等の同期を避けることで処理速度を向上させた。WSL設定の最適化(メモリ8GB、プロセッサ2)も実施。課題として、ファイル権限問題、PHPStormの固まる現象、A5SQLのカレントスキーマ変更問題が残るものの、全体としてDocker環境への移行は成功と判断している。

laravelでユーザー・管理者を作ってみる

Laravel12を用いて、ユーザーと管理者機能を実装した。Userモデルにis_adminカラムを追加し、Seederでサンプルユーザーと管理者を作成。ユーザー登録は、フォームリクエストによるバリデーションとRegisterControllerで処理。ログイン・ログアウトはLoginControllerLogoutControllerAuth::attempt()Auth::logout()を使用。UserIsAuthenticatedUserIsAdminミドルウェアで認証を行い、ルーティングでアクセス制御を実現した。

【2025/4/27】集計 新着週間Like数 ランキング Top5

2つの摘みを持ったレンジバーを作ってみた

この記事は、Laravel, CSS, JavaScriptを用いた価格絞り込み機能の実装例を紹介している。2つのrange inputと表示用の数値input、そしてそれらに連動するrangeバーで構成されるカスタムレンジバーを作成。JavaScriptで、range inputの値が逆転しないよう制御し、バーの位置と数値inputを更新する。更新は400ms後に自動送信される。 whereBetweenクエリを用いて、指定された価格範囲の商品をデータベースから取得する。 ステップ値を動的に変更する機能は未実装。

Laravel 12 + PHP 8.2 + Nginx + Dockerで開発環境構築 (2025年版)

Laravel 12, PHP 8.2, Nginx, MySQL 8.0, Docker, Docker Compose, GitHub Actionsを用いた開発環境構築手順を示した記事。DockerfileでPHPとMySQL環境を定義し、docker-compose.ymlでNginxと連携。GitHub ActionsでCI環境を実現。php.iniの設定、nginx設定ファイル、mysql設定ファイル(my.cnf)の詳細も記述。ローカル環境ではlocalhost:8080でアクセス可能。DB接続確立に時間を要する可能性に配慮し、GitHub ActionsではDB接続確認処理を含んだCI設定がされている。

LaravelのテストをPestに乗り換えた理由と導入メモ

Laravelプロジェクトにテストを導入するため、PHPUnitからPestへ移行した事例。Pestはコードの可読性が高く、並列テストや効率的な再実行機能が魅力的。導入はcomposerで容易に完了する。テスト用DBにはインメモリSQLiteを使用し高速化を実現。Docker環境でのテスト実行に課題が残るものの、ホストマシン上では問題なく動作した。Pestのシンプルさと高速性から、テスト導入を検討するLaravel開発者にとって有効な選択肢となる。

Laravel入門3 静的ファイル

Laravel入門記事の第3弾では、静的ファイル(CSS、画像)の扱い方を解説。publicディレクトリにCSSファイル(style.css)と画像ファイル(icon.png)を作成し、Bladeテンプレート内でasset()ヘルパーを使ってこれらのファイルへのパスを指定することで、ビューにCSSと画像を適用する方法を示している。 具体的には、CSSでボタンスタイルを定義し、画像を<img>タグで表示させている。

【Laravel】Webアプリ開発のデバッグ手法

Laravelアプリ開発におけるデバッグ手法として、ログ追跡(Logファサード + tailコマンド)、変数確認(dd(), dump(), ddd()), 複雑な処理のデバッグ(Xdebug)が紹介されている。Logファサードはリアルタイムログ確認に有効で、dd()/dump()は変数内容の確認、ddd()はWhoopsエラー画面での表示に用いる。XdebugはIDE連携によるステップ実行や変数確認で複雑な処理のデバッグに強力。本番環境ではdd()/dump()の残置に注意し、コードレビューやツールを用いた検出が重要となる。

【2025/4/20】集計 新着週間Like数 ランキング Top5

【個人開発】Webサービスで悪徳訪問業者を撃退する

悪徳訪問業者対策Webサービス「gyousya-navi.com」をLaravel(PHP)で個人開発。業者名を検索し、行政処分歴やWeb評判から悪徳業者かどうかを判定する。OpenAIのWeb Search機能とPHPフレームワークLaravel12を使用。 今後、訪問者数表示やコメント機能を追加予定。RSP(単一責任の原則)を意識した開発が苦労点だった。 社会問題解決への貢献を目指している。

Contextual Bindingの仕様変更について(Lumen v10 -> v11)

Lumen v11では、Contextual Bindingのwhen()メソッドの挙動が変更され、依存関係のチェーン全体ではなく、直接依存関係に対してのみ適用されるようになった。v10ではCreditController経由でPaymentInterfaceの依存先を指定できたが、v11ではMoneyService経由で指定する必要がある。 when(CreditController::class)->needs(PaymentInterface::class)はv11では機能せず、when(MoneyService::class)->needs(PaymentInterface::class)に変更することで解決できる。この変更はアップグレードガイドには明記されていなかった可能性がある。

LaravelとViteでVue.jsのCSSが反映されない問題の解決手順

Laravel + Vite + Vue.js環境でCSSが反映されない問題が発生。原因はDockerのポート5173のホストへの公開漏れと、Viteのネットワーク監視不足。解決策は、docker-compose.ymlports: - "5173:5173"を追加し、vite.config.js@vitejs/plugin-vueをインストール、resolve.aliasにVueのエイリアス、serverセクション(host: true, hmr: {host: 'localhost'})を追加すること。これにより、ViteがVueコンポーネントを正しく処理し、CSSが反映されるようになる。

LaravelをLaravel Cloudにデプロイする方法

Laravel CloudへのLaravelアプリデプロイ手順を解説した記事。リポジトリ選択、アプリ名・リージョン設定後、PostgreSQLデータベース追加、必要に応じてQueue Worker設定、環境変数設定を行い、最後にデプロイボタンを押下する。デプロイ完了後、表示されるドメインから動作確認が可能。公式ドキュメント以外に詳しい日本語記事が少ないため、本記事が参考になる。

【2025/4/13】集計 新着週間Like数 ランキング Top5

LaravelとVueでログイン認証実装

Laravel SanctumとVue.jsを用いたAPI認証システムの実装方法を示した記事です。Laravel側では、Sanctumを用いてログイン・ログアウトAPIとユーザー情報取得APIを実装し、Vue.js側ではPiniaによる状態管理、axiosによるAPI通信、ルーティング制御を行い、トークンベース認証を実現しています。 セキュリティにはCORS設定やトークン有効期限設定が重要と結論づけており、今後のステップとしてパスワードリセット機能等の追加を示唆しています。

Laravel Precognition + React Hook Form + Shadcn/ui で作る!リアルタイムバリデーション

Laravel PrecognitionとReact Hook Form(RHF)+Shadcn/uiを組み合わせたリアルタイムバリデーション実装において、両ライブラリのデータ管理の衝突が課題となった。解決策として、useEffectでPrecognitionのエラーをRHFのsetErrorで反映し、RHFのwatchで入力変化をPrecognitionに伝え、リアルタイムバリデーションをトリガーする双方向同期を実現した。これにより、バックエンドバリデーション結果をShadcn/uiでスムーズに表示するフォーム実装を完成させた。ただし、最適解ではないため、状況に応じた調整が必要。

v0.devとlaravel12 starter kitを組合せて何か作ってみる(プロジェクト管理アプリとか)

本記事は、v0.devとLaravel 12 starter kitを用いたプロジェクト管理アプリ開発過程を記述。v0.devで生成したReactフロントエンドを、Laravelバックエンドに統合した。v0.devはUIデザイン生成に有効で、shadcn/uiを採用したstarter kitとの親和性も高い。ただし、Next.jsとInertia.jsの差異によるコード修正、バックエンドデータ連携が必要。v0.devの履歴管理やVercelへのワンクリックデプロイ機能も活用された。結果、効率的な開発が可能となったものの、v0.devの利用回数制限への対策が必要と結論づけている。

Laravel + Blade + Vite 環境に Tailwind CSS v4 を導入する

Laravel(v12.x), Blade, Vite(v6.x)環境にTailwind CSS v4を導入した。laravel-vite-plugin, tailwindcss, @tailwindcss/postcss, @tailwindcss/viteをインストールし、vite.config.js, postcss.config.js, resources/css/app.css, レイアウトファイルで設定を編集した。@import 'tailwindcss';でTailwind CSSをインポートし、自動コンテンツ検出とCSS変数を用いた。npm run devで開発サーバーを起動し、ホットリロード機能を利用できる。

Dynamic Random Images for Your Frontend Projects

Daniel Petricaが開発した無料API「https://random.danielpetrica.com/api/random」は、フロントエンドプロジェクトで使用するランダム画像を簡単に取得できます。サイズ指定(thumb, small, regular, full)やsrcsetによるレスポンシブ対応が可能。LaravelとPlanetScaleで構築され、キャッシュとクエリパラメータでパフォーマンスと多様な画像表示を実現。今後、キーワード検索やカスタムサイズ対応を予定。 APIキーやレート制限なしで利用可能です。

【2025/4/6】集計 新着週間Like数 ランキング Top5

Laravelで外部キーが複数ある場合のリレーション Composhipsを使って多対多のデータを取得する方法

LaravelのEloquentは標準で複合キーのリレーションをサポートしないが、Composhipsパッケージを使うことで解決できる。 belongsToMany に複合キーを指定することで、複数外部キーを持つ多対多リレーション(例: user_id, company_id)を容易に実装できる。Composhipsはcomposer require topclaudy/composhipsでインストールし、モデルにComposhipsトレイトを追加するだけで利用可能。 これにより、User::find(1)->projectsのように通常のリレーションと同様にデータを取得できるようになる。

ScrambleによるOpenAPI仕様生成あれこれ

LaravelプロジェクトでScrambleを用いてOpenAPI仕様を自動生成し、OrvalによるAPIクライアント生成に活用した。ScrambleはPHPのDocBlockや実装からOpenAPI仕様を生成するが、Sanctum等の非標準エンドポイントや、レスポンスヘッダ、共通エラー、カスタムパラメータなどは、Document transformersOperation transformers、拡張機能を用いて調整が必要だった。 レスポンスのクロージャ処理は、仮のResourceクラスを作成することで解決した。一部未完成な部分はあるものの、手書きからの置き換えに成功し、導入コストが低いことから推奨できる。

[MySQL] 大規模テーブルを大量のIDで検索する時に、一時テーブルで通信量を抑える方法

MySQLの大規模テーブル(数百万~千万件)を大量のID(10万件以上)で検索する際、WHERE IN句でIDを大量に渡すと遅くなる。 従来のチャンク処理では、多数のクエリによる通信オーバーヘッドが問題となる。

そこで、IDを一時テーブルに格納し、対象テーブルと内結合することで、DBサーバ内で処理を完結させ、通信量を大幅削減できる。 実例では、処理時間が10秒以上から1秒未満に短縮された。ただし、ID数が非常に多くインデックスが効かない場合は、結合がフルスキャンとなり効果がない可能性がある。一時テーブルは複数作成が困難なため、複雑なクエリには不向き。

【Laravel】複合キーを使用している場合に、Eloquentが2回DELETEを発行する問題と対策

LaravelのEloquentで複合主キーを持つモデルをdelete()メソッドで削除すると、意図しないレコードも削除される問題が発生する。これは、Eloquentが単一主キーを前提としているため、複合主キーを正しく認識せず、主キーの一部のみで削除クエリを発行する為である。対策として、where()句を用いて削除条件を明示的に指定する(Model::where('column1', value1)->where('column2', value2)->delete();)のが安全で推奨される。getKeyName()をオーバーライドする方法は非推奨。

Laravelで使えるデコレータライブラリを作った

Laravel用デコレーターライブラリが公開された。PHP8のアトリビュートとデコレーターパターンを使い、メソッドにアトリビュートを付与するだけでログ出力、トランザクション管理、キャッシュなどの共通処理を注入できる。サービスコンテナのインスタンス生成時に、デコレーター付き匿名クラスを生成することで実現。 デフォルトでログ、トランザクション、キャッシュ、バリデーションのデコレーターを提供。現状はサービスコンテナで管理された、publicなメソッドを持つクラスでのみ動作する制約がある。今後の課題として、匿名クラス生成処理の最適化とキャッシュ機能の追加が挙げられている。

【2025/3/30】集計 新着週間Like数 ランキング Top5

Laravelで実装する認証と認可:簡単なセットアップと基本操作

Laravelを用いたWebアプリの認証・認可実装を解説。Laravelのデフォルト機能でCSRF保護やパスワードハッシュ化などを安全に実現し、guestauthミドルウェアでアクセス制御を行う。さらに、独自ミドルウェア作成例として、メールアドレスによるアクセス制限を実装し、@gmail.com限定ページへのアクセス制御を示す。これにより、開発者はセキュリティに配慮せず、コア機能開発に集中できる。

[Laravel]groupByと集計メソッド使用時の注意点

LaravelでgroupByと集計メソッド(sum, count, max, min, avg)を併用する際、groupBy後にget()メソッドを実行してCollectionを取得する必要がある。get()を省略して直接集計メソッドを実行すると、意図しない結果となる。 さらに、DB::raw('SUM(price)')のように集計結果にエイリアスを付けて(例: SUM(price) as total_price)から集計メソッドの引数に指定する必要がある。 get()はデータ量が多いとパフォーマンスに影響するため、大規模データの場合はSQL側での処理を検討すべき。

Laravel11以降のミドルウェアの設定の書き方

Laravel 11以降、ミドルウェア設定はapp/Http/Kernel.phpからbootstrap/app.phpwithMiddlewareメソッドに移行した。 withMiddleware内では、append, prepend, replace, remove, useメソッドを使い、グローバルミドルウェア、グループ(web, apiなど)、エイリアスの追加・変更・削除が可能になった。 append/prependは末尾/先頭にミドルウェアを追加、replaceは既存ミドルウェアの置換、removeは削除、useはミドルウェアリストの一括設定を行う。グループ設定はweb, apiメソッド、またはgroupメソッドで指定する。エイリアスの設定はaliasメソッドで行う。Laravel 10からの変更は大きく、バージョンアップには注意が必要である。

LaravelのchunkとchunkByIdの違いと使い分け

LaravelのchunkchunkByIdは大量データ処理用メソッドで、chunkは指定件数毎に処理するがID順ソートされデータ変更に弱く、chunkByIdはID順に処理しデータ変更に強い。chunkByIdはIDが連番でない場合に利用できない。eachメソッドはコレクション操作との連携や遅延実行によるメモリ最適化、可読性向上に役立つ。大量データではchunkByIdの方がパフォーマンスが良いことが多い。

【レンタルサーバー】ディレクトリ構成ミスによるWebアプリが表示されない要因

お名前.comのLaravelアプリデプロイで404/403エラーが発生した事例。原因は、マルチドメイン対応で自動生成されるpublic_html/ドメイン名/フォルダへのpublic/フォルダ内ファイル(index.php, .htaccessなど)の配置漏れ。解決策は、public/の内容をpublic_html/ドメイン名/へ移動し、index.php内のパスを修正すること。index.phpはLaravelアプリのエントリーポイントであり、正しいパス設定が必須。envファイルはpublic_htmlの外に配置し、セキュリティを確保する必要がある。

【2025/3/23】集計 新着週間Like数 ランキング Top5

【Laravel】開発環境のセットアップとプロジェクト作成

本記事は、macOS環境でのLaravel開発環境構築手順を解説しています。PHP、Composer、PostgreSQLのインストールと設定、Laravelプロジェクト作成、database.php設定の修正、artisan migrateコマンドの実行を経て、php artisan serveで開発サーバーを起動することに成功しました。PostgreSQL利用に伴うセッションテーブル作成(php artisan session:table)とマイグレーション実行が必要である点が重要です。最終的にLaravelの初期画面表示で環境構築完了を確認しています。

LaravelでBreeze使ってるなら、簡単に2段階認証にできるぞ

Laravel Breezeを用いた2段階認証実装方法を紹介。MustVerifyEmail機能を拡張し、ログイン後、6桁の認証コードをメールで送信、専用コントローラとビューでコード認証を行う。AuthenticatedSessionControllerstoreメソッドと新規作成したTwoFactorControllerでコード生成、送信、検証処理を実装。成功時はダッシュボードへリダイレクト。コードは10分間有効で、セッション管理も適切に行われる。

Laravelでポート番号を変更する

Laravel Sailでポート80が使用中のため、ポート84に変更した事例。docker-compose.ymlportsセクションを- "${APP_PORT:-84}:80"に、.envファイルにAPP_PORT=84を追加することでポート番号を変更。最後にphp artisan config:clearを実行し、http://localhost:84/でLaravelアプリケーションにアクセスできることを確認した。 APP_PORT環境変数の設定とconfig:clearコマンドの実行が変更反映の鍵となった。

ソフトウェアアーキテクチャについてLaravelと関連付けてみた

本記事はLaravelを用いたWebシステム開発におけるソフトウェアアーキテクチャについて解説している。 アーキテクチャはシステムの構築方式と規律を定めるもので、非機能要件(拡張性、保守性、パフォーマンス)、構造(モジュール分割)、ルールとガイドライン(コーディング規約、テスト方針)から構成される。Laravelでは、Interface、UseCase、Serviceクラス、キャッシュ機構などを用いてこれらを実現する。クリーンアーキテクチャはフレームワーク非依存のビジネスロジック記述を可能にし、フレームワーク変更時の移行を容易にする。 ただし、静的型付けが必要となるため、Laravelへの導入にはハードルがある。 適切なアーキテクチャを選択し実装することで、保守性と品質の高いコード管理を実現できる。

【Laravel】モデルをchunkしながら更新する時はchunkByIdを使おう

Laravelで大量データ更新時にchunkメソッドを用いると、更新処理によってWHERE条件が変化し、データが欠落する問題が発生する。これは、chunkがOFFSETを用いたページングを行うため、更新後のデータが次のページから除外されることが原因。解決策はchunkByIdメソッドを使用すること。chunkByIdはID順に処理するため、WHERE条件の更新によるデータ欠落を防ぎ、全データの更新を確実に実行できる。

【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 --devphp 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を単数形、それ以外は複数形。メソッド・変数はキャメルケースを使用する。 一貫性のある命名規則により、コードの可読性と保守性を向上させる。

CareNet Engineers

Discussion