mybook
15

デザインパターンを人間らしく学ぶ

GoF デザインパターンを日常の比喩と Rails コードで理解する

1
プロローグ — コードの「匂い」に気づく日

なぜデザインパターンが必要か。ジュニアエンジニアのケンタが初めてコードレビューでフィードバックを受ける物語

2
Strategy パターン — アルゴリズムを交換可能にする

料金計算の条件分岐地獄をStrategyパターンで解決する。変わる部分を抽出してカプセル化する考え方を学ぶ

3
Observer パターン — 変更を通知する仕組み

注文完了時の処理がコントローラに集中する問題をObserverパターンで解決。ActiveSupport::Notificationsを使った実装を学ぶ

4
Factory パターン — オブジェクト生成を委譲する

支払い方法ごとに異なるオブジェクトを生成するFactoryパターン。FactoryBotとの関係や、Railsでの実践的な使い方を学ぶ

5
Singleton パターン — インスタンスを1つだけに

アプリ全体で唯一のインスタンスを保証するSingletonパターン。Rails.application.configや設定管理での実践的な使い方を学ぶ

6
Adapter パターン — インターフェースを変換する

複数の外部API(Stripe・PayPal)を同じインターフェースで扱うAdapterパターン。既存コードへの影響を最小化しながら外部サービスを統合する方法を学ぶ

7
Decorator パターン — 機能を動的に追加する

継承を使わずにオブジェクトに機能を追加するDecoratorパターン。Draper gemを使ったRailsでの実践的な実装を学ぶ

8
Facade パターン — 複雑さを隠す

複数のサービス呼び出しをまとめるFacadeパターン。サービスオブジェクトとしての実践的な使い方と、コントローラのスリム化を学ぶ

9
Template Method パターン — 処理の骨格を定義する

処理の流れは同じで一部だけ違うコードをTemplate Methodパターンで解決。ApplicationControllerやベースクラスでの活用法を学ぶ

10
Command パターン — 操作をオブジェクト化する

操作をオブジェクトとして表現するCommandパターン。ActiveJobとの関係や、undo/redo機能の実装、非同期処理との相性を学ぶ

11
State パターン — 状態遷移を管理する

注文ステータスの管理をStateパターンで整理する。AASM gemを使ったRailsでの実装と、状態機械の考え方を学ぶ

12
Builder パターン — 複雑なオブジェクトを段階的に構築する

複数のオプションを持つ複雑なオブジェクトをBuilderパターンで構築する。クエリビルダやメール生成での実践例を学ぶ

13
Proxy パターン — アクセスを制御する

オブジェクトへのアクセスを代理するProxyパターン。キャッシュプロキシの実装とAWS CloudFrontとの関係を学ぶ

14
Chain of Responsibility — 処理を連鎖させる

リクエストを処理のチェーンに通すChain of Responsibilityパターン。Rackミドルウェアの仕組みと独自バリデーションチェーンの実装を学ぶ

15
エピローグ — パターンの組み合わせと過剰適用の罠

学んだパターンを組み合わせて実際のシステムを設計する。アンチパターンの回避と、パターンを学んだその先にある設計力を育てる