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

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

全てのタグを見る

Laravel × DDD × クリーンアーキテクチャ実践入門

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

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 でのモデル/サービスクラス設計まで一気通貫で扱います。

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

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

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

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 つのメリットを解説します。

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

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

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

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

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

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

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

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

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

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