Ray.Di Study: 実践的なオブジェクト指向設計パターン

このスタディではどの問題にどのパターンを使うかを学びます。Ray.Diを使ってSOLID原則と設計パターンの実践的な理解を深め、保守性と拡張性の高いアーキテクチャを構築する判断力を養います。

学習の焦点

  • 問題からパターンへ: 密結合、肥大化したコントローラー、混在したデータアクセスなどの問題を適切なパターンで解決
  • 判断基準: いつFactoryを使い、いつStrategyを使い、いつRepositoryを使うかを学習
  • 実践的なSOLID: 実際のコードを通じて単一責任、開放閉鎖、依存性逆転の各原則を理解
  • アーキテクチャ設計: レイヤー分離、関心の分離、モジュール設計
  • コンパイルタイムの決定: ランタイムのif文($_ENVチェック、型チェック)をDIバインディングに置き換え、少ないコードパスと開放閉鎖原則を実現

このチュートリアルは設計パターンの学習に焦点を当てています。Ray.Diの機能リファレンスはマニュアルを参照してください。

チュートリアル構成

Part 1: 基礎 - なぜDIが必要か

問題: 密結合、テストが困難、変更に脆弱 学習内容: 依存性注入とSOLID原則がこれらの問題をどう解決するか

Part 2: オブジェクト生成パターン

問題: 肥大化したコンストラクタ、実行時パラメータの扱い、オプショナルな依存関係 学習内容: オブジェクト生成責任を分離する判断基準

Part 3: 振る舞いパターン

問題: 条件分岐の増殖、横断的関心事の散在 学習内容: 振る舞いを切り替え可能にし、関心事を分離する方法

Part 4: アーキテクチャパターン

問題: データアクセスの混在、肥大化したコントローラー、肥大化したDI設定 学習内容: レイヤーを分離し責任を明確化するアーキテクチャ設計

学習アプローチ

各セクションは以下の一貫した構成に従います:

  1. 問題 - 実際のコードにおける具体的な課題(10-20行)
  2. なぜ問題なのか - 保守性、テスト容易性、拡張性への影響
  3. 解決策 - パターンの核となる実装(30-50行)
  4. パターンの本質 - 図解による視覚的理解
  5. 判断基準 - このパターンをいつ使うか、いつ使わないか
  6. アンチパターン - よくある間違いとその理由
  7. SOLIDとの関連 - このパターンが実現する原則

どこから始めるか

OOP初心者の方 推奨順序: 依存性注入の原則SOLID原則Factoryパターン

経験豊富な開発者の方 どこからでも開始できます!各セクションは独立しています。

アーキテクト向け 推奨: SOLID原則アーキテクチャパターン

カバーする主要パターン

パターン 解決する問題 いつ使うか
Factory 実行時パラメータとDI依存関係の混在 オブジェクト生成に実行時の値が必要な場合
Provider コンストラクタの肥大化 複雑な初期化ロジックが必要な場合
Null Object nullチェックと環境チェックの散在 オプショナルな依存関係を環境別に切り替える場合
Strategy 条件分岐の増殖 実行時にアルゴリズムを切り替える場合
Decorator/AOP 横断的関心事の散在 ログ、トランザクションなどを分離する場合
Adapter 外部APIとアプリケーションの不一致 外部サービスをアプリケーションに適合させる場合
Repository データアクセスの混在 ビジネスロジックからデータアクセスを分離する場合
Service Layer 肥大化したコントローラー ビジネスロジックを調整する場合
Module Design 肥大化したDI設定 設定の可読性に問題があるとき

前提条件

  • OOPの基本的な理解
  • インターフェースに関する知識

追加リソース


開始: 依存性注入の原則

設計パターンは暗記するものではありません - 判断基準を理解することが重要です。このチュートリアルで、各状況に適したパターンを選ぶ判断力を養いましょう。