メインコンテンツまでスキップ

「laravel」タグのついた44記事

全てのタグを見る

Laravel × DDD × クリーンアーキテクチャ実践ガイド

Laravel 未経験でも大丈夫。Vue/React など SPA 開発者を対象に、API バックエンドとしての Laravel とドメイン駆動設計 (DDD)・クリーンアーキテクチャをステップバイステップで解説する全 20 章のガイド。値オブジェクト・エンティティ・集約・リポジトリの理論から、Laravel プロジェクトでの実装パターン・トランザクション・テスト・認証までを網羅します。

Laravel API 開発ガイド

Laravel を API バックエンドとして使うための全 22 章のガイド。ルーティング・Eloquent・バリデーションの基礎から、認証認可 (Sanctum / Policy)・キャッシュ・キュー・タスクスケジューラ・ファイルストレージ・本番運用までを、EC サイトの注文システムを題材に順を追って解説します。Blade などのフロントエンド機能は扱いません。

Laravel API 開発の基礎 — Controller・FormRequest・Eloquent・DI

Laravel 未経験者向けに API バックエンド開発の基礎を解説。ルーティング・Controller・FormRequest・API Resource・Eloquent ORM・DI コンテナ・Sanctum 認証、本書で使う PHP 8.x 構文 (readonly / enum / コンストラクタプロモーション) までをまとめます。

Laravel での DDD アーキテクチャ — 4 層構成と依存性逆転

従来の Laravel MVC とクリーンアーキテクチャを比較し、プレゼンテーション / アプリケーション / ドメイン / インフラの 4 層構成、依存性逆転の原則 (DIP)、ディレクトリ構成、Eloquent Model とドメインエンティティの分離を解説します。

PHPクラス設計ガイド

PHP でクラス設計そのものを入門から実践まで学ぶ全14章のガイド。フレームワーク非依存の設計原則 (カプセル化・単一責任・継承とコンポジション・インターフェース・SOLID) から、Laravel でのモデル/サービスクラス設計まで一気通貫で扱います。

イベントと通知 — 注文確定から先を疎結合にする

Laravel API 開発ガイドの第15章。サービスクラスに処理が足され続ける問題をイベントとリスナーで解きます。リスナーの自動検出、Notification クラスと Mailable、同期送信のコストの測り方、Notification::fake によるテストと Mail::fake との使い分けも扱います。

エラーハンドリング — ドメイン例外と HTTP ステータスの対応

DDD アーキテクチャでのエラーハンドリングを解説。集約ごとに整理した例外階層、DomainException の設計、Exception Handler での HTTP ステータス (404/409/422 など) へのマッピング、統一エラーレスポンス、Result 型パターン、ロギング戦略と機密情報の保護をまとめます。

エラー設計 — 例外を HTTP レスポンスに翻訳する

Laravel API 開発ガイドの第9章。エラーレスポンスの形を決め、カスタム例外クラスを作り、bootstrap/app.php の withExceptions を唯一の変換地点にします。何をログに送るか、何をクライアントに見せないかも扱います。

キャッシュ — 速くするために、正しさをどこまで諦めるか

Laravel API 開発ガイドの第18章。何をキャッシュしてよいかの判断、Cache::remember とドライバ選択、キー設計、TTL と明示的な失効、スタンピード対策 (Cache::flexible / Cache::lock)、Laravel 13 の Cache::touch、キャッシュを使うテストの書き方を扱います。

キューの基礎 — 重い処理をリクエストの外に出す

Laravel API 開発ガイドの第16章。リスナーに ShouldQueue を付けて非同期にし、queue:work でワーカーを動かします。Job クラスと dispatch、ドライバの選び方、SerializesModels、トランザクション内で dispatch しないための afterCommit、Queue::route、Queue::fake によるテストも扱います。

テスト — Pest で API の契約を固定する

Laravel API 開発ガイドの第10章。Pest の書き方を導入し、ここまでに作った API に Feature テストを書きます。正常系だけでなく失敗パスを固定する理由、テストデータの用意、そして以降の章で守るテストの型を決めます。

テスト戦略 — テストピラミッドと層別テスト

DDD アーキテクチャのテスト戦略を解説。テストピラミッド (Unit / Integration / Feature) の考え方、ドメイン層を DB なしで高速にテストする利点、モックの最小限利用、Arrange-Act-Assert、日本語テストメソッド名、テストデータビルダーパターンをまとめます。

ドメインイベント — 集約間を疎結合に連携する

DDD のドメインイベント (Domain Event) を OrderConfirmed などの実装例で解説。イベント駆動による疎結合、記録 (Record) とディスパッチ (Dispatch) の 2 フェーズ実装、Laravel Events との統合、同期 / 非同期 (ShouldQueue)、冪等性と結果整合性の設計をまとめます。

ドメインモデルとテーブル設計 — マッピングとインデックス

ドメインモデル優先で設計する理由と、ドメインモデルとテーブルが 1:1 でない前提でのマッピングパターン (埋め込み / 1 集約複数テーブル / 技術的分割)、リポジトリによる差の吸収、複合インデックスの左端原則やトレードオフを含むインデックス設計をまとめます。

トランザクション管理 — 整合性の境界をどこに置くか

Laravel の DB::transaction() を使ったトランザクション管理を解説。ACID 特性、1 集約は Repository 内・複数集約は UseCase 内という置き場所の使い分け、ネストしたトランザクション (Savepoint)、楽観的ロックと悲観的ロックの実装と使い分けをまとめます。

なぜ DDD か — Fat Controller / Fat Model の限界

従来の Laravel MVC で複雑なビジネスロジックを扱うと生じる Fat Controller・Fat Model・ロジック散在の問題を整理し、DDD を採用することで得られる「ビジネスルールの明確化・変更対応力・テスタビリティ・チームコミュニケーション」の 4 つのメリットを解説します。

はじめに — 何を作り、何を作らないか

Laravel API 開発ガイドの第1章。チュートリアルどおりに書いた注文 API が本番で壊れる 3 つの場面を示し、この連載が扱う範囲と題材、既存ガイドとの読み分けを整理します。

ファイルストレージ — 商品画像と領収書 PDF

Laravel API 開発ガイドの第19章。ディスクという抽象と local / public の使い分け、アップロードの検証と保存、Sanctum の ability による保護、非公開ファイルの配信と署名付き URL、ジョブでの PDF 生成、ファイルとレコードの整合、Storage::fake によるテストを扱います。

まとめと次のステップ — DDD の段階的導入

本ガイド全 20 章の要点 (DDD の戦術的設計 / クリーンアーキテクチャ / 実践テクニック / 総合実践) を整理し、値オブジェクト → ユースケース層 → リポジトリ → ドメインイベントという段階的導入のロードマップ、よくある質問、推奨書籍・コミュニティ・学習パスをまとめます。

ユースケース層の設計 — Command / Query 分離と DTO

アプリケーション層 (ユースケース層) の設計を解説。ドメインオブジェクトの調整・トランザクション管理・入出力変換の責務、CQS 原則による Command / Query 分離、Command オブジェクトと DTO、Query 専用サービス、単一責任などの設計指針をまとめます。

リクエストライフサイクルと Laravel 13 の骨格

Laravel API 開発ガイドの第2章。1 つのリクエストが public/index.php からコントローラまで届く経路を追い、bootstrap/app.php・サービスコンテナ・サービスプロバイダ・設定ファイルがその経路のどこに刺さるかを整理します。

リポジトリパターン — ドメインと永続化の境界

リポジトリパターンを Laravel + Eloquent で実装。インターフェースをドメイン層に置く理由 (DIP / テスタビリティ)、1 集約 = 1 リポジトリ、エンティティと Eloquent Model のマッピング、N+1 問題と Eager Loading、Mass Assignment 対策、DI コンテナへの登録をまとめます。

ルーティング設計と最初のエンドポイント

Laravel API 開発ガイドの第4章。install:api で API 用の骨格を作り、apiResource でルートをまとめ、ルートモデルバインディングで ID をモデルに変換します。URL 設計・バージョニング・ステータスコードの決め方も扱います。

一覧 API — ページネーション・フィルタ・N+1

Laravel API 開発ガイドの第8章。商品一覧 API を題材に、ページネーション 3 種の使い分け、フィルタとソートを安全に受け取る方法、N+1 問題の観測と eager loading による解決、そして機械的に検出する仕組みを扱います。

入力の検証 — Form Request で境界を固める

Laravel API 開発ガイドの第5章。注文作成 API を題材に、コントローラ直書きのバリデーションを Form Request へ移します。配列とネストしたデータの検証、検証前後の処理、日本語メッセージ、そして形式チェックとビジネスルールの境界線を扱います。

出力の設計 — API Resource でレスポンスの形を決める

Laravel API 開発ガイドの第7章。モデルをそのまま返す危うさを示し、API Resource でレスポンスの形をコードとして固定します。リレーションの含め方、条件付きの項目、日付・金額・enum の表現、data ラッピングを扱います。

実践:注文システムの実装 — 全層を貫く実装例

これまで学んだ DDD・クリーンアーキテクチャを統合し、注文作成・確定 API を題材に 4 層 (プレゼンテーション / アプリケーション / ドメイン / インフラ) を実装。各層の責務、データ変換の流れ、層別テスト (ドメイン / UseCase / Repository) を通して全体像をまとめます。

認可 — Gate と Policy で「誰が何をできるか」を決める

Laravel API 開発ガイドの第12章。注文の一覧と詳細を作りながら、Policy によるモデル単位の認可を実装します。一覧 API では Policy が効かない理由、403 と 404 の使い分け、認可漏れをテストで検出する方法を扱います。

認証 — Sanctum によるトークン認証

Laravel API 開発ガイドの第11章。Sanctum で会員登録・ログイン・ログアウトを作り、ルートをトークン認証で保護します。ゲスト注文を会員注文へ移す手順、トークンの権限と有効期限、テストでの認証済み状態の作り方まで扱います。

認証・認可設計 — JWT と層別の責務分担

DDD とクリーンアーキテクチャでの認証 (Authentication) と認可 (Authorization) の設計を解説。認証はプレゼンテーション層、認可はアプリケーション層とドメイン層という責務分担、JWT の構造、Laravel × tymon/jwt-auth の実装、アクセス/リフレッシュトークン、ロールベース認可をまとめます。