Slide 1

Slide 1 text

.ŇoO(ͬͪ͞ΌΜͰ͢Αʌ(ʏl _ l)ůƄˑ)

Slide 2

Slide 2 text

ElixirͰήʔϜαʔόʔΛ։ᚙͯ͠Ι·͢ɻ

Slide 3

Slide 3 text

Elixirͱ͸? σʔλ͕ෆᏓɻ ҆ఆɻ Lock freeɻ

Slide 4

Slide 4 text

Elixirͱ͸? σʔλ͕ෆᏓɻ ҆ఆɻ Lock freeɻ

Slide 5

Slide 5 text

Elixirͱ͸? σʔλ͕ෆᏓɻ ҆ఆɻ Lock freeɻ

Slide 6

Slide 6 text

Elixirͱ͸? σʔλ͕ෆᏓɻ ҆ఆɻ Lock freeɻ

Slide 7

Slide 7 text

ʮElixir͍͍ΑͶʯ ͱӠ;࿩͸ฉ͖๞͖ͨɻ

Slide 8

Slide 8 text

ʮElixir͍͍ΑͶʯ ͱӠ;࿩͸ฉ͖๞͖ͨɻ

Slide 9

Slide 9 text

ʮRuby is God.ʯ Έ͍ͨͳ࿩Λฉ͖͍ͨɻ

Slide 10

Slide 10 text

Ruby is God

Slide 11

Slide 11 text

ۙॴͷElixir։ᚙऀʹฉ͍ͯΈͨʮRubyͷ޷͔ͬͨॴʯ Q. RubyͷͲ͕͜޷͔ͬͨͰ͔͢? A. ॻ͍ͯͯᒜ͍͠ᩇΜͰͯᒜ͍͠ɻMatz is Great. A. ΦʔϓϯΫϥε

Slide 12

Slide 12 text

ۙॴͷElixir։ᚙऀʹฉ͍ͯΈͨʮRubyͷ޷͔ͬͨॴʯ Q. RubyͷͲ͕͜޷͔ͬͨͰ͔͢? A. ॻ͍ͯͯᒜ͍͠ᩇΜͰͯᒜ͍͠ɻMatz is Great. A. ΦʔϓϯΫϥε

Slide 13

Slide 13 text

ۙॴͷElixir։ᚙऀʹฉ͍ͯΈͨʮRubyͷ޷͔ͬͨॴʯ Q. RubyͷͲ͕͜޷͔ͬͨͰ͔͢? A. ॻ͍ͯͯᒜ͍͠ᩇΜͰͯᒜ͍͠ɻMatz is Great. A. ΦʔϓϯΫϥε

Slide 14

Slide 14 text

ۙॴͷElixir։ᚙऀʹฉ͍ͯΈͨʮRubyͷ޷͔ͬͨॴʯ Q. RubyͷͲ͕͜޷͔ͬͨͰ͔͢? A. ॻ͍ͯͯᒜ͍͠ᩇΜͰͯᒜ͍͠ɻMatz is Great. A. ΦʔϓϯΫϥε ʊਓਓਓਓਓਓਓਓਓʊ ʼɹΦʔϓϯΫϥεɹʻ ʉY^Y^Y^Y^Y^Y^Y^Yʉ

Slide 15

Slide 15 text

͔֬ʹɺ Elixir͸monkey patchΛᙛͯਏ͍ɻ ނʹActiveSupport͸ແ͍ɻ

Slide 16

Slide 16 text

͔֬ʹɺ Elixir͸monkey patchΛᙛͯਏ͍ɻ ނʹActiveSupport͸ແ͍ɻ

Slide 17

Slide 17 text

Rubyͷclass͸mutableɻ ͦΜͳRubyͷίʔυΛᒜ͠ΜͰΈ΍͏ɻ

Slide 18

Slide 18 text

໰୊Ͱ͢ɻ

Slide 19

Slide 19 text

class Sample end Sample.new.sample ?

Slide 20

Slide 20 text

class Sample end Sample.new.sample undefined method `sample' for # (NoMethodError)

Slide 21

Slide 21 text

class Sample end Sample.new.sample ?

Slide 22

Slide 22 text

class Sample end Sample.new.sample "Momonga say sample"

Slide 23

Slide 23 text

class BasicObject def method_missing(method_name, *args) p "Momonga say #{method_name}" end end class Sample end Sample.new.sample "Momonga say sample"

Slide 24

Slide 24 text

class BasicObject def method_missing(method_name, *args) p "Momonga say #{method_name}" end end class Sample def sample p 42 end end Sample.new.sample ?

Slide 25

Slide 25 text

class BasicObject def method_missing(method_name, *args) p "Momonga say #{method_name}" end end class Sample def sample p 42 end end Sample.new.sample 42

Slide 26

Slide 26 text

class BasicObject def method_missing(method_name, *args) p "Momonga say #{method_name}" end end class Sample def sample p 42 end end Sample.new.sample ?

Slide 27

Slide 27 text

class BasicObject def method_missing(method_name, *args) p "Momonga say #{method_name}" end end class Sample def sample p 42 end end Sample.new.sample "Momonga say sample"

Slide 28

Slide 28 text

class BasicObject def self.method_added(method_name) if method_name != :method_missing remove_method method_name end end end class BasicObject def method_missing(method_name, *args) p "Momonga say #{method_name}" end end class Sample def sample p 42 end end Sample.new.sample "Momonga say sample"

Slide 29

Slide 29 text

class BasicObject def self.method_added(method_name) if method_name != :method_missing remove_method method_name end end end class BasicObject def method_missing(method_name, *args) p "Momonga say #{method_name}" end end class Sample def sample p 42 end end Sample.new.sample "Momonga say sample" ʊਓਓਓਓਓʊ ʼɹ͓ΘΓɹʻ ʉY^Y^Y^Yʉ