Slide 1

Slide 1 text

ElixirʹΑΔBEAMݴޠ ͷ࡞ΓํͱUiro(Ծ)ͷ ͝঺հ

Slide 2

Slide 2 text

ࣗݾ঺հ i2yͱਃ͠·͢ɻ ੈؒͰ͸ෳ߹ػϝʔΧʔͱͯ͠ೝ஌͞Εͯ ͍Δձࣾͷιϑτ΢ΣΞΤϯδχΞͰ͢ɻ ࢓ࣄͰ͸ɺJava΍C#ɺJavaScriptΛओ ʹ࢖͍ͬͯ·͢ɻ ElixirɺErlangͱ΋ʹॳ৺ऀϨϕϧͰ ͢^^; ࠷ۙͷझຯ͸ΦϨΦϨݴޠ࡞ΓͰ͢ɻ PythonͰ࣮૷ͨ͠PythonʹࣅͨMochi ͱ͍͏ݴޠΛGitHubͰެ։͍ͯ͠·͢ɻ

Slide 3

Slide 3 text

τʔΫ಺༰ ࠷ۙ࡞ͬͨUiro(Ծ)ΛྫʹBEAMݴޠͷ࡞ΓํΛ͓࿩͠͠·͢ɻ Uiro(Ծ)͸RubyΆ͍จ๏ͷBEAMݴޠͰ͢ɻ ※ ࠷ޙʹRubyΛ৮ͬͨͷ͸13೥͘Β͍લͰɺRubyʹৄ͍͠༁Ͱ ͸͋Γ·ͤΜɻɻ

Slide 4

Slide 4 text

Uiro(Ծ)ͷ࡞੒εςοϓ ͬ͘͟Γɺ3εςοϓ 1.۩ମతͳจ๏ΛܾΊΔ ίϯύΠϥʢτϥϯεϨʔλʣΛ࣮૷͢Δ 2. ιʔείʔυΛߏจղੳͯ͠தؒܗࣜ(AST)ʹม׵͢Δ 3. தؒܗࣜ(AST)ΛBEAMͷόΠτίʔυʹม׵͢Δ

Slide 5

Slide 5 text

۩ମతͳจ๏ΛܾΊΔ Uiro(Ծ)ΛɺRubyʹࣅͨจ๏ͱ͠·ͨ͠ɻ • Rubyʹࣅͨߏจ • ཧ༝ɿErlangͱRubyʹ͸ࣅ͍ͯΔ఺͕͋ΓɺErlangͷػ ೳΛRubyʹϚοϐϯά͠қ͔͔ͬͨΒ ※ ڞʹؔ਺ͱม਺(ଋറʣͷ໊લۭؒΛ۠ผ͢ΔLisp-2ํࣜ ※ ͞ΒʹErlangͷΞτϜΛRubyͷγϯϘϧ(:hoge)ͱಉ͡ هड़ͰදݱͰ͖ͦ͏

Slide 6

Slide 6 text

۩ମతͳจ๏ΛܾΊΔ • ΫϥεϕʔεͷΦϒδΣΫτࢦ޲ɺμοΫλΠϐϯά • ཧ༝ɿࣗ෼΍ଟ͘ͷਓʹೃછΈ͕͋Δ͔Βɻ • Πϯελϯεͷঢ়ଶ͸ෆม • ཧ༝ɿΦϒδΣΫτࢦ޲͔ͩΒͱ͍ͬͯɺՄม͕σϑΥϧτ Ͱͳͯ͘΋͍͍ͷͰ͸ɻ

Slide 7

Slide 7 text

Uiro(Ծ)ίʔυ͸͜Μͳײ͡ # Ϋϥεఆٛʢ1ϑΝΠϧʹ1Ϋϥε΋͘͠͸1ϞδϡʔϧͰ͢ʣ class Person def initialize(name, age) {name: name, age: age} end def name() @name end end module Test_Person def test_name() hoge_san = new Person("hoge", 60) hoge_san.name # => "hoge" end end

Slide 8

Slide 8 text

Uiro(Ծ)ίʔυ͸͜Μͳײ͡ # Ϟδϡʔϧఆٛ module Enumerable def select(func) self.reduce([]) {|item, acc| if func.(item) acc ++ [item] else acc end } end # ҎԼɺলུ end

Slide 9

Slide 9 text

Uiro(Ծ)ίʔυ͸͜Μͳײ͡ # ϛοΫεΠϯ module uiro_list include Enumerable def reduce(acc, func) lists::foldl(func, acc, self) end # ҎԼɺলུ end module test_list def self.test_select() [1, 2, 2, 3].select {|item| item == 2 or item == 3) .unique # => [2, 3] end end

Slide 10

Slide 10 text

ߏจղੳͯ͠தؒܗࣜʹ leexͱyeccͷೖྗϑΝΠϧΛsrcσΟϨΫτϦʹஔ͍͓͚ͯ͹ɺ MixͰϏϧυ࣌ʹࣗಈతʹleexͱyecc͕࣮ߦ͞Ε·͢ɻ

Slide 11

Slide 11 text

தؒܗࣜΛBEAMͷόΠτίʔυʹ Erlangͷerl_syntaxϞδϡʔϧͱcompileϞδϡʔϧΛ࢖͑ ͹ɺBEAMͷόΠτίʔυΛੜ੒͸͔ΜͨΜͰ͢ɻ

Slide 12

Slide 12 text

࠷ޙʹ • BEAMݴޠ࡞Δͷ͸Χϯλϯ • Erlang΍Elixirͱࣅ͍ͯΔݴޠ΍ɺHTMLςϯϓϨʔτ΍ JSONͱ͍ͬͨΧϯλϯͳݴޠͳΒಛʹɻ • Elixir͸࢖͍΍͍͢ʂ • Mix͸ͱͯ΋ศར

Slide 13

Slide 13 text

࠷ޙʹ • Uiro(Ծ)΋ΑΖ͓͘͠ئ͍͠·͢ʂ • ϓϧϦΫͯ͠΋Β͑ͨΒخ͍͠Ͱ͢ʂUiro • ϩΰ΋΄͍͠Ͱ͢ɾɾ(Mochi΋ʣ • MixͱReber3༻ͷϓϥάΠϯΛ࡞੒༧ఆͰ͢ʂʢ࡞ͬͯ΋Β ͬͯ΋خ͍͠Ͱ͢ʂʣ • ࠷ऴతʹ͸ηϧϑϗεςΟϯά͍ͨ͠ɻ