デザインパターンを人間らしく学ぶ
GoF デザインパターンを日常の比喩と Rails コードで理解する
なぜデザインパターンが必要か。ジュニアエンジニアのケンタが初めてコードレビューでフィードバックを受ける物語
料金計算の条件分岐地獄をStrategyパターンで解決する。変わる部分を抽出してカプセル化する考え方を学ぶ
注文完了時の処理がコントローラに集中する問題をObserverパターンで解決。ActiveSupport::Notificationsを使った実装を学ぶ
支払い方法ごとに異なるオブジェクトを生成するFactoryパターン。FactoryBotとの関係や、Railsでの実践的な使い方を学ぶ
アプリ全体で唯一のインスタンスを保証するSingletonパターン。Rails.application.configや設定管理での実践的な使い方を学ぶ
複数の外部API(Stripe・PayPal)を同じインターフェースで扱うAdapterパターン。既存コードへの影響を最小化しながら外部サービスを統合する方法を学ぶ
継承を使わずにオブジェクトに機能を追加するDecoratorパターン。Draper gemを使ったRailsでの実践的な実装を学ぶ
複数のサービス呼び出しをまとめるFacadeパターン。サービスオブジェクトとしての実践的な使い方と、コントローラのスリム化を学ぶ
処理の流れは同じで一部だけ違うコードをTemplate Methodパターンで解決。ApplicationControllerやベースクラスでの活用法を学ぶ
操作をオブジェクトとして表現するCommandパターン。ActiveJobとの関係や、undo/redo機能の実装、非同期処理との相性を学ぶ
注文ステータスの管理をStateパターンで整理する。AASM gemを使ったRailsでの実装と、状態機械の考え方を学ぶ
複数のオプションを持つ複雑なオブジェクトをBuilderパターンで構築する。クエリビルダやメール生成での実践例を学ぶ
オブジェクトへのアクセスを代理するProxyパターン。キャッシュプロキシの実装とAWS CloudFrontとの関係を学ぶ
リクエストを処理のチェーンに通すChain of Responsibilityパターン。Rackミドルウェアの仕組みと独自バリデーションチェーンの実装を学ぶ
学んだパターンを組み合わせて実際のシステムを設計する。アンチパターンの回避と、パターンを学んだその先にある設計力を育てる