krgm.so-manager-dev.com/docs/TEAM_GUIDE_JA.md

3.0 KiB
Raw Blame History

チーム開発ガイドSo-Manager / Laravel12

このドキュメントは、Laravel5 旧コードと Laravel12 新コードが混在する現状で、重複実装を避け、保守しやすい構成を保つための最小ルールを示します。

ディレクトリと責務

  • app/Models

    • 新規機能/新規テーブル向けのEloquentモデル
    • クラス名は単数・StudlyCase例: AdminUser)。ファイル名=クラス名。
    • 複雑な業務ロジックは置かない(テーブル定義・リレーション・簡易スコープのみ)。
    • 共通Traitは app/Models/Concerns、基底は app/Models/BaseModel.php
  • app/Legacy

    • 旧システムLaravel5の互換モデル群。テーブル名/主キー/既存メソッド・定数を維持。
    • 旧Bladeから参照されるFQCN互換のため、LegacyServiceProviderclass_alias を設定。
  • app/Services

    • 画面用のユースケースを実装複数モデルのオーケストレーション、CSV、外部API、トランザクション等
    • ControllerはServicesのみを呼び出し、モデルを直接組み合わせない。
  • app/Support

    • 純粋な技術ユーティリティ(ビジネスロジックを含めない)。
  • app/Enums

    • 共通定数はPHP列挙型で表現。旧配列定数から段階的に移行。

命名と重複回避

  • モデルは1テーブル1モデル。admin_user.php のような snake_case は禁止。
  • 新しい画面・機能で共通取得口が必要な場合、モデルを複製せず app/Services/*Service.php に集約。

旧→新の互換方針

  • 旧Bladeは当面そのまま動かす\App\OperatorQue::QueClass 等の直参照を許容)。
  • 新規Bladeではモデル直参照を避け、Service経由のDTO/配列を描画。
  • 段階的に旧配列定数を app/Enums へ置換し、class_alias を撤去。

Legacy を新規で使わない(明記)

  • app/Legacy 配下は互換専用。新規機能・新規画面・新規サービスで Legacy を直接参照しないこと。
  • モデルは必ず app/Models の正式モデルを使用し、Controller からは app/Services 経由で利用する。

Middleware / Provider / Controller

  • Middleware: 横断的関心認証・権限・CSRFなど
  • Provider: 起動時の装備DI、イベント、互換エイリアス
  • Controller: 薄く保ち、入力検証Service呼び出しのみ。

トランザクション

  • 複数テーブル更新は Service 層で DB::transaction() を使用。

チェックリストPR提出時

  • 新規モデル: テーブル/主キーを明記。既存モデルとの重複なし。
  • 新規機能: 複雑な処理は Service に実装。Controllerは薄いか。
  • Blade: 新規はモデル直参照なし(旧は許容)。
  • ルート: 旧名互換を維持(置換時は動作確認)。

以上。段階的に Enum 化と互換撤去を進め、最終的に Legacy 依存を解消します。