Slide 1

Slide 1 text

ॻ੶:ʲElixir࣮ફΨΠυʳͷࣸܦͷײ૝ 2023/5/17 ύʔιϧΫϩεςΫϊϩδʔגࣜձࣾ Ѩ෦ߞೋ [email protected] ElixirImp#31ɿElixirͰ࡞ͬͨ΋ͷɺԿͰ΋LTձ

Slide 2

Slide 2 text

▪ύʔιϧΫϩεςΫϊϩδʔגࣜձࣾ ɹୈ1ٕज़։ൃຊ෦ ୈ4ઃܭ෦ ઃܭ2՝ɹѨ෦ɹߞೋʢ͋΂ɹ͜͏͡ʣ ▪ҩྍػث։ൃ ɾ૊ࠐΈιϑτ΢ΣΞ։ൃɻ ɾCݴޠɺϕΞϝλϧͷ։ൃۀ຿ܦݧ͕΄ͱΜͲɻ ࣗݾ঺հ 1 2

Slide 3

Slide 3 text

▪ٕज़ॻΛॻ͍ٕͯज़ॻయ13ʹࢀՃͨ͠Γɺ ɹ ▪ϚΠίϯͷίϯςετ(※)ʹࢀՃͨ͠Γɺ ɹ※SPRESENSE™ ׆༻ίϯςετ ɹ૊ࠐΈιϑτ΢ΣΞ։ൃ͕޷͖ͳ͓͡͞ΜͰ͢ɻ ɹΑΖ͓͘͠ئ͍͠·͢ɻ ▪LAPRASϙʔτϑΥϦΦɿhttps://lapras.com/public/k-abe ▪twitter: @juraruming ࣗݾ঺հ 2 3

Slide 4

Slide 4 text

• ࣸܦͷಈػ • ࣸܦͨ͠ຊͷ঺հ • ࣸܦ͢Δલͷঢ়گ • ࣸܦͷํ๏ • ࣸܦͷײ૝ • ࠓޙ΍ͬͯΈ͍ͨ͜ͱ ໨࣍ 4

Slide 5

Slide 5 text

• ࣸܦͷಈػ • ࣸܦͨ͠ຊͷ঺հ • ࣸܦ͢Δલͷঢ়گ • ࣸܦͷํ๏ • ࣸܦͷײ૝ • ࠓޙ΍ͬͯΈ͍ͨ͜ͱ ໨࣍ 5

Slide 6

Slide 6 text

• ࡢ೥8݄ɺElixirͱNervesͷϋϯζΦϯ(※)ʹࢀՃ͠ɺ૊ࠐΈγεςϜͰϞμϯʹ ։ൃͰ͖Δ͜ͱΛମݧ͠ɺײಈͨ͠ɻ ɹElixirͱnervesͷ͜ͱΛΑΓਂ͘஌Γ͍ͨͱߟ͑ɺͱΓ͋͑ͣElixirͷॻ੶ͷࣸܦ Λ࢝ΊͯΈΔ͜ͱʹͨ͠ɻ ※೔ຊιϑτ΢ΣΞՊֶձୈ39ճେձνϡʔτϦΞϧ ʮؔ਺ܕݴޠElixirͰ࢝ΊΔIoTγεςϜ։ൃೖ໳ʯ GitHubϦϙδτϦ ࣸܦͷಈػ 6

Slide 7

Slide 7 text

• ࣸܦͷಈػ • ࣸܦͨ͠ຊͷ঺հ • ࣸܦ͢Δલͷঢ়گ • ࣸܦͷํ๏ • ࣸܦͷײ૝ • ࠓޙ΍ͬͯΈ͍ͨ͜ͱ ໨࣍ 7

Slide 8

Slide 8 text

• ࣸܦͨ͠ຊ(ݱࡏ΋ܧଓதɾɾɾ) ɹElixir࣮ફΨΠυ ɹhttps://book.impress.co.jp/books/1120101021 ࣸܦͨ͠ຊͷ঺հ 8 ୈᶗ෦ɹElixirೖ໳ ୈ 1 ষɹΠϯτϩμΫγϣϯ ୈ 2 ষɹElixir ։ൃ؀ڥͷߏங ୈ 3 ষɹElixir ͷجૅ (1) ୈ 4 ষɹElixir ͷجૅ (2) ୈ 5 ষɹElixir ͷجૅ (3) ୈ 6 ষɹElixir ͷجૅ (4) ୈᶘ෦ɹϞδϡʔϧɺؔ਺ɺϚΫϩ ୈ 7 ষɹϞδϡʔϧ ୈ 8 ষɹؔ਺ (1) ୈ 9 ষɹؔ਺ (2) ୈ 10 ষɹ ϚΫϩͷॳาͱ৚݅෼ذ ୈᶙ෦ɹσʔλߏ଄ ୈ 11 ষɹΞτϜ ୈ 12 ষɹϦετ ୈ 13 ষɹλϓϧͱΩʔϫʔυϦετ ୈ 14 ষɹϚοϓ ୈ 15 ষɹϏοτετϦϯάɺόΠφϦɺจࣈྻɺจࣈϦετ ୈᶚ෦ɹັ࿭ͷElixirϫʔϧυ ୈ 16 ষɹύλʔϯϚονϯά ୈ 17 ষɹ Enum Ϟδϡʔϧ ୈ 18 ষɹ಺แදه ୈ 19 ষɹcase ϚΫϩͱ with ϚΫϩ ୈ 20 ষɹෳ਺ͷઅΛ࣋ͭؔ਺ ୈ 21 ষɹreduce ؔ਺ ୈ 22 ষɹΤϥʔॲཧ ୈᶛ෦ɹ։ൃԋश ୈ 23 ষɹExUnit ୈ 24 ষɹMix ୈ 25 ষɹΤʔδΣϯτͱ GenServer ୈ 26 ষɹࡾ໨ฒ΂ (1) ୈ 27 ষɹࡾ໨ฒ΂ (2) ୈ 28 ষɹࡾ໨ฒ΂ (3) ෇࿥ ԋश໰୊ղ౴

Slide 9

Slide 9 text

▪ͳͥ͜ͷຊΛηϨΫτͨ͠? ɹElixirͷdiscordίϛϡχςΟ(elixirͱݟश͍࿉ۚज़ࢣ)ʹ૬ஊͨ͠Β͜ͷຊ Λ঺հ͍͍ͨͩͨͨΊɻ ɹϓϩάϥϛϯάElixir(ୈ2൛)ͱ໎͕ͬͨ೉қ౓͕Elixir࣮ફΨΠυΑΓ΋ ೉қ౓͕ߴ͍ɺͱ͍͏͝ҙݟ͕͋ͬͨͷͰࢀߟʹ͍͍ͤͯͨͩͨ͞ɻ ࣸܦͨ͠ຊͷ঺հ 9

Slide 10

Slide 10 text

• ࣸܦͷಈػ • ࣸܦͨ͠ຊͷ঺հ • ࣸܦ͢Δલͷঢ়گ • ࣸܦͷํ๏ • ࣸܦͷײ૝ • ࠓޙ΍ͬͯΈ͍ͨ͜ͱ ໨࣍ 10

Slide 11

Slide 11 text

▪Elixirܦݧ͸Webهࣄͷࣸܦ(※1)ɺલड़ͷϋϯζΦϯ(※2)Ͱମݧͨ͠ɺͱ͍͏ ঢ়گɻ ※1 en ΤϯδχΞHub ͭ͗ͷهࣄ ɾ࠷଎Ͱ஌Δʂ ElixirϓϩάϥϛϯάͱErlang/OTPͷ࢝Ίํʲୈೋݴޠͱ͠ ͯͷElixirʳ ɾ௅ઓʂ ElixirʹΑΔฒߦɾ෼ࢄΞϓϦέʔγϣϯͷ࡞Γํʲୈೋݴޠͱͯ͠ ͷElixirʳ ※2 ೔ຊιϑτ΢ΣΞՊֶձୈ39ճେձνϡʔτϦΞϧ ʮؔ਺ܕݴޠElixirͰ࢝ΊΔIoTγεςϜ։ൃೖ໳ʯ ɹGitHubϦϙδτϦ ࣸܦ͢Δલͷঢ়گ 11

Slide 12

Slide 12 text

• ࣸܦͷಈػ • ࣸܦͨ͠ຊͷ঺հ • ࣸܦ͢Δલͷঢ়گ • ࣸܦͷํ๏ • ࣸܦͷײ૝ • ࠓޙ΍ͬͯΈ͍ͨ͜ͱ ໨࣍ 12

Slide 13

Slide 13 text

▪@t_wada͞ΜͷࣸܦελΠϧɻ ɾҙຯͷ͋ΔίʔυΛ1೔1ճͰ΋ॻ͘ɻ ɾมߋཤྺ؅ཧπʔϧʹίϛοτϩά(ຊͷষ൪߸ɾෆ໌఺)Λॻ͘ɻ ɾ࠲ΕΔӺ(࢝ൃӺ)ʹॅΈɺ௨ۈதʹίʔυΛॻ͘؀ڥΛͭ͘Δɻ ɹˠίϩφͷ࣌ࠩग़ۈ(1hૣ͘)Ͱ௨ۈిं಺ͰࣸܦՄೳʹͳͬͨ!!! ɹ+α ɾElixir࣮ફΨΠυͷষ຤ͷ࿅श໰୊΋͔ܽͣࣸ͞ܦ&ཧղ͢ΔΑ͏ʹͨ͠ɻ ɾֶशͨ͠ίʔυ͸ͲͷΑ͏ͳγʔϯͰ࢖͑Δ͔Πϝʔδ͠ɺࣸܦͷͱ͖ʹ ײͨ͜͡ͱͳͲ΋ίϛοτϩάʹ௥هͨ͠ɻ ࣸܦͷํ๏ 13

Slide 14

Slide 14 text

▪ݱࡏͷঢ়گ ɾશ28ষͷ͏ͪ25ষ·Ͱ׬ྃɻશମͷ8ׂ͘Β͍ऴΘͬͨɻ ɾ2023/2/24͔Β։࢝ɻ ࣸܦͷํ๏ 14 ୈᶗ෦ɹElixirೖ໳ ୈ 1 ষɹΠϯτϩμΫγϣϯ ୈ 2 ষɹElixir ։ൃ؀ڥͷߏங ୈ 3 ষɹElixir ͷجૅ (1) ୈ 4 ষɹElixir ͷجૅ (2) ୈ 5 ষɹElixir ͷجૅ (3) ୈ 6 ষɹElixir ͷجૅ (4) ୈᶘ෦ɹϞδϡʔϧɺؔ਺ɺϚΫϩ ୈ 7 ষɹϞδϡʔϧ ୈ 8 ষɹؔ਺ (1) ୈ 9 ষɹؔ਺ (2) ୈ 10 ষɹ ϚΫϩͷॳาͱ৚݅෼ذ ୈᶙ෦ɹσʔλߏ଄ ୈ 11 ষɹΞτϜ ୈ 12 ষɹϦετ ୈ 13 ষɹλϓϧͱΩʔϫʔυϦετ ୈ 14 ষɹϚοϓ ୈ 15 ষɹϏοτετϦϯάɺόΠφϦɺจࣈྻɺจࣈϦετ ୈᶚ෦ɹັ࿭ͷElixirϫʔϧυ ୈ 16 ষɹύλʔϯϚονϯά ୈ 17 ষɹ Enum Ϟδϡʔϧ ୈ 18 ষɹ಺แදه ୈ 19 ষɹcase ϚΫϩͱ with ϚΫϩ ୈ 20 ষɹෳ਺ͷઅΛ࣋ͭؔ਺ ୈ 21 ষɹreduce ؔ਺ ୈ 22 ষɹΤϥʔॲཧ ୈᶛ෦ɹ։ൃԋश ୈ 23 ষɹExUnit ୈ 24 ষɹMix ୈ 25 ষɹΤʔδΣϯτͱ GenServer ୈ 26 ষɹࡾ໨ฒ΂ (1) ୈ 27 ষɹࡾ໨ฒ΂ (2) ୈ 28 ষɹࡾ໨ฒ΂ (3) ෇࿥ ԋश໰୊ղ౴

Slide 15

Slide 15 text

• ࣸܦͷಈػ • ࣸܦͨ͠ຊͷ঺հ • ࣸܦ͢Δલͷঢ়گ • ࣸܦͷํ๏ • ࣸܦͷײ૝ • ࠓޙ΍ͬͯΈ͍ͨ͜ͱ ໨࣍ 15

Slide 16

Slide 16 text

▪ϞμϯͳΤίγεςϜ!!! ▪Elixirͷؾ࣋ͪΑ͞Λମײ!!! ▪ElixirΒ͍͠ϓϩάϥϛϯάΛͳΜͱͳ͘ཧղ!!! ࣸܦͷײ૝ 16

Slide 17

Slide 17 text

▪ϞμϯͳΤίγεςϜ!!! ɾର࿩ܕͷγΣϧ؀ڥ(IEx)Ͱ͙͢ʹಈ࡞֬ೝͰ͖Δ!!! ɾ˒ςετ͕ॻ͚Δ!!ςετͰݴޠࣗମΛֶशͰ͖Δɻ ɾMixͰϓϩδΣΫτͷ਽ܗΛαΫͬͱ࡞ΕΔ!!! ɾ೔ຊͷίϛϡχςΟ͕׆ൃ!!! ɹฏ࣌ͷ׆ಈɺ೥຤ͷQiitaΞυϕϯτΧϨϯμʔͷه ࣄ౤ߘ਺͕ੌ͍ɾɾɾɻ ࣸܦͷײ૝ 17

Slide 18

Slide 18 text

▪ϞμϯͳΤίγεςϜ!!! ▪Elixirͷؾ࣋ͪΑ͞Λମײ!!! ▪ElixirΒ͍͠ϓϩάϥϛϯάΛͳΜͱͳ͘ཧղ!!! ࣸܦͷײ૝ 18

Slide 19

Slide 19 text

▪Elixirͷؾ࣋ͪΑ͞Λମײ!!! ɾύΠϓ ɾύλʔϯϚον ɾϏοτετϦϯάɾόΠφϦ ࣸܦͷײ૝ 19

Slide 20

Slide 20 text

▪Elixirͷؾ࣋ͪΑ͞Λମײ!!! ࣸܦͷײ૝ 20 👍 👍 ↓ʲElixirImp ConnpassΠϕϯτϖʔδʳ ΑΓҾ༻

Slide 21

Slide 21 text

▪Elixirͷؾ࣋ͪΑ͞Λମײ!!! ɾϏοτετϦϯάɾόΠφϦ ϏοτετϦϯάɿϏοτͷྻΛද͢σʔλߏ଄ όΠφϦɿϏοτετϦϯάͷ͏ͪɺ௕͕͞8ͷഒ਺ →૊ࠐΈιϑτ΢ΣΞͰ࢖͑Δ!!! ૊ࠐΈιϑτ΢ΣΞͷϋʔυ΢ΣΞ੍ޚ(ϨδελΞ Ϋηεɺ௨৴ɺetc)͸͜ͷσʔλߏ଄Λଟ༻͢Δɻ ࣸܦͷײ૝ 21

Slide 22

Slide 22 text

▪Elixirͷؾ࣋ͪΑ͞Λମײ!!! ɾϏοτετϦϯάɾόΠφϦ ྫ) # σʔλಡΈग़͠ ɹ{:ok, read_data} = File.read(“binary_data.bin”) # ઌ಄0byte໨, ઌ಄1ʙ3byte໨, ࢒ΓΛऔΓग़͢ <> = read_data ͜Μͳʹ؆୯ʹඞཁͳσʔλΛऔΓग़ͤΔ!!! ΑΓৄ͍͠આ໌͸ͪ͜ΒͷQiitaهࣄΛࢀরͯ͠Έ͍ͯͩ͘͞ɻ ૊ࠐΈʹ͔ܽͤͳ͍ Elixir ͰͷϏοτͷѻ͍ํ ࣸܦͷײ૝ 22

Slide 23

Slide 23 text

▪ϞμϯͳΤίγεςϜ!!! ▪Elixirͷؾ࣋ͪΑ͞Λମײ!!! ▪ElixirΒ͍͠ϓϩάϥϛϯάΛͳΜͱͳ͘ཧղ!!! ࣸܦͷײ૝ 23

Slide 24

Slide 24 text

▪ElixirΒ͍͠ϓϩάϥϛϯάΛͳΜͱͳ͘ཧղ!!! ●Elixir࣮ફΨΠυ͕ਵॴͰʲElixirΒ͍͠ॻ͖ํʳΛ ஸೡʹهࡌͯ͘͠Ε͍ͯΔɻ ʲElixirΒ͍͠ʳΛݴޠԽͰ͖ͳ͍͕ɺElixirܦݧऀ ͷίʔυΛͳΜͱͳ͘ཧղ͢Δ͜ͱ͕Ͱ͖ͨɻ ࣸܦͷײ૝ 24

Slide 25

Slide 25 text

• ࣸܦͷಈػ • ࣸܦͨ͠ຊͷ঺հ • ࣸܦ͢Δલͷঢ়گ • ࣸܦͷํ๏ • ࣸܦͷײ૝ • ࠓޙ΍ͬͯΈ͍ͨ͜ͱ ໨࣍ 25

Slide 26

Slide 26 text

▪ࠓޙ΍ͬͯΈ͍ͨ͜ͱ ●ElixirͰΞϓϦΛͭ͘Δɻ ɹElixir࣮ફΨΠυͷࣸܦະ࣮ࢪͷষͰʲࡾ໨ฒ΂ʳ ͷΞϓϦ࡞੒༧ఆͰָ͠Έ̇̇̇ ●γϦΞϧ௨৴ͷ͓Խ͚(※)Έ͍ͨͳγεςϜΛ NervesɾόΠφϦͷύλʔϯϚονϯάͰରԠͨ͠ ͍(Ώ͘Ώ͘͸PhoenixΞϓϦԽͳͲ)ɻ ※120ݸ͘Β͍ͷύϥϝʔλ͕͋ΔจࣈͰ۠੾ΒΕɺ ҰఆपظͰσʔλऩूɾදࣔΛߦ͏γεςϜɻ ࣸܦͷײ૝ 26

Slide 27

Slide 27 text

▪ࠓޙ΍ͬͯΈ͍ͨ͜ͱ ࣸܦͷײ૝ 27 ↓ʲElixirImp ConnpassΠϕϯτϖʔδʳ ΑΓҾ༻

Slide 28

Slide 28 text

͝੩ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠ɻ ऴΘΓ 28