fv17の日記

Webエンジニアの備忘用ブログです。主にWeb界隈の技術に関して書いています。

Rails - delegateはなぜ必要なのか

delegateの基本的な使い方

基本的な使い方は公式ドキュメントか、日本語の場合はググればいっぱい出てきます。
https://api.rubyonrails.org/classes/Module.html#method-i-delegate

なぜ必要か?

オブジェクト指向の「デメテルの法則」(最小知識の原則)に反している書き方を正すため。

Wikipediaの「オブジェクト指向における適用」に理由が記載されている。
デメテルの法則 - Wikipedia

もっと深く知りたい場合は書籍

StackOverflowを漁ったところ、詳細に知りたい場合は「Practical Object-Oriented Design in Ruby」のChapter 4を読めばいいよ!と提案されていた。

日本語版出ている「オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方」
https://www.amazon.co.jp/dp/477418361X/ref=sr_1_1?s=books&ie=UTF8&qid=1541035982&sr=1-1

参考にした記事

qiita.com

stackoverflow.com

Tips

デメテルの法則」のデルメルは、あるプロジェクトの名前に由来し、さらに元を辿ると農業の女神デーメーテールに由来する。古典ギリシア語で「母なる大地」を意味する。なんだか凄い名前。