「まどか☆マギカから考えるメカニズムデザイン」も合わせてご参照ください。 class Hope attr_reader :value def initialize(value) @initial_value = value @value = value value_changed end def add(value) @value += value value_changed end def despair @value = - @initial_value end def value_changed=(block) @on_value_changed = block end def value_changed @on_value_changed.call(self) if @on_value_changed end end class Human def initialize h = H