【あくてぃぶれこーどぱたーん】

アクティブレコードパターン とは?

💡 データベースの行がそのまま自分で保存も削除もこなすオブジェクト
📌 このページのポイント
アクティブレコードパターン User オブジェクト データ: id, name, email user.save() user.delete() User.find(1) 1対1対応 users テーブル | id | name | email | 1行 = 1オブジェクト メリット 直感的 コード量が少ない 学習コスト低 デメリット 責任過多 テストしにくい DB依存 代表例: Ruby on Rails (ActiveRecord)、Laravel (Eloquent)
アクティブレコードパターンのイメージ
ひよこ ひよこ

アクティブレコードって何がアクティブなの?

ペンギン先生 ペンギン先生

データベースの行を表すオブジェクトが、自分自身でsave()やdelete()できるからアクティブなんだ。user.save() って呼ぶだけでDBに保存されるよ

ひよこ ひよこ

すごく便利そうだね!

ペンギン先生 ペンギン先生

直感的でコードが短くなるのが魅力だよ。Ruby on RailsのActiveRecordが有名で、user = User.find(1) でDBから取得して、user.name = 'Taro' としてuser.save()するだけで更新できるんだ

ひよこ ひよこ

デメリットはあるの?

ペンギン先生 ペンギン先生

オブジェクトがデータとロジックとDB操作を全部持つから、大きくなると責任過多になりやすい。テストでもDBが必要になりがちで、単体テストが書きにくくなることもあるよ

ひよこ ひよこ

じゃあ大規模な開発には向かないのかな?

ペンギン先生 ペンギン先生

規模が大きくなるとリポジトリパターンに移行するチームも多いね。ただRailsは設定より規約の思想でアクティブレコードをうまく活用してるし、小〜中規模なら生産性が高い。適材適所で使い分けるのが大事だよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「アクティブレコード」って出てきたら「DBの行がオブジェクトになって自分でCRUDする設計」と思えればだいたいOK!
📖 おまけ:英語の意味
「Active Record Pattern」 = 能動的な記録パターン
💬 Martin Fowlerの『Patterns of Enterprise Application Architecture』で定義されたパターンだよ
← 用語集にもどる