$30 off During Our Annual Pro Sale. View Details »

ElixirImp#31_書籍【Elixir実践ガイド】の写経の感想

 ElixirImp#31_書籍【Elixir実践ガイド】の写経の感想

2023/5/17に開催される、【ElixirImp#31:Elixirで作ったもの、何でもLT会】の発表資料です。

ElixirImp#31:Elixirで作ったもの、何でもLT会 URL:
https://fukuokaex.connpass.com/event/283391/

※URLリンクが有効な資料はこちらを参照ください。
https://www.docswell.com/s/juraruming/5GXLMD-2023-05-17-124330

k-abe

May 17, 2023
Tweet

More Decks by k-abe

Other Decks in Programming

Transcript

  1. ॻ੶:ʲElixir࣮ફΨΠυʳͷࣸܦͷײ૝
    2023/5/17


    ύʔιϧΫϩεςΫϊϩδʔגࣜձࣾ


    Ѩ෦ߞೋ [email protected]
    ElixirImp#31ɿElixirͰ࡞ͬͨ΋ͷɺԿͰ΋LTձ

    View Slide

  2. ▪ύʔιϧΫϩεςΫϊϩδʔגࣜձࣾ


    ɹୈ1ٕज़։ൃຊ෦ ୈ4ઃܭ෦ ઃܭ2՝ɹѨ෦ɹߞೋʢ͋΂ɹ͜͏͡ʣ


    ▪ҩྍػث։ൃ


    ɾ૊ࠐΈιϑτ΢ΣΞ։ൃɻ


    ɾCݴޠɺϕΞϝλϧͷ։ൃۀ຿ܦݧ͕΄ͱΜͲɻ


    ࣗݾ঺հ 1
    2

    View Slide

  3. ▪ٕज़ॻΛॻ͍ٕͯज़ॻయ13ʹࢀՃͨ͠Γɺ


    ɹ


    ▪ϚΠίϯͷίϯςετ(※)ʹࢀՃͨ͠Γɺ


    ɹ※SPRESENSE™ ׆༻ίϯςετ


    ɹ૊ࠐΈιϑτ΢ΣΞ։ൃ͕޷͖ͳ͓͡͞ΜͰ͢ɻ


    ɹΑΖ͓͘͠ئ͍͠·͢ɻ


    ▪LAPRASϙʔτϑΥϦΦɿhttps://lapras.com/public/k-abe


    ▪twitter: @juraruming
    ࣗݾ঺հ 2
    3

    View Slide

  4. • ࣸܦͷಈػ


    • ࣸܦͨ͠ຊͷ঺հ


    • ࣸܦ͢Δલͷঢ়گ


    • ࣸܦͷํ๏


    • ࣸܦͷײ૝


    • ࠓޙ΍ͬͯΈ͍ͨ͜ͱ
    ໨࣍
    4

    View Slide

  5. • ࣸܦͷಈػ


    • ࣸܦͨ͠ຊͷ঺հ


    • ࣸܦ͢Δલͷঢ়گ


    • ࣸܦͷํ๏


    • ࣸܦͷײ૝


    • ࠓޙ΍ͬͯΈ͍ͨ͜ͱ
    ໨࣍
    5

    View Slide

  6. • ࡢ೥8݄ɺElixirͱNervesͷϋϯζΦϯ(※)ʹࢀՃ͠ɺ૊ࠐΈγεςϜͰϞμϯʹ
    ։ൃͰ͖Δ͜ͱΛମݧ͠ɺײಈͨ͠ɻ


    ɹElixirͱnervesͷ͜ͱΛΑΓਂ͘஌Γ͍ͨͱߟ͑ɺͱΓ͋͑ͣElixirͷॻ੶ͷࣸܦ
    Λ࢝ΊͯΈΔ͜ͱʹͨ͠ɻ


    ※೔ຊιϑτ΢ΣΞՊֶձୈ39ճେձνϡʔτϦΞϧ


    ʮؔ਺ܕݴޠElixirͰ࢝ΊΔIoTγεςϜ։ൃೖ໳ʯ


    GitHubϦϙδτϦ
    ࣸܦͷಈػ
    6

    View Slide

  7. • ࣸܦͷಈػ


    • ࣸܦͨ͠ຊͷ঺հ


    • ࣸܦ͢Δલͷঢ়گ


    • ࣸܦͷํ๏


    • ࣸܦͷײ૝


    • ࠓޙ΍ͬͯΈ͍ͨ͜ͱ
    ໨࣍
    7

    View Slide

  8. • ࣸܦͨ͠ຊ(ݱࡏ΋ܧଓதɾɾɾ)


    ɹ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)


    ෇࿥ ԋश໰୊ղ౴

    View Slide

  9. ▪ͳͥ͜ͷຊΛηϨΫτͨ͠?


    ɹElixirͷdiscordίϛϡχςΟ(elixirͱݟश͍࿉ۚज़ࢣ)ʹ૬ஊͨ͠Β͜ͷຊ
    Λ঺հ͍͍ͨͩͨͨΊɻ


    ɹϓϩάϥϛϯάElixir(ୈ2൛)ͱ໎͕ͬͨ೉қ౓͕Elixir࣮ફΨΠυΑΓ΋
    ೉қ౓͕ߴ͍ɺͱ͍͏͝ҙݟ͕͋ͬͨͷͰࢀߟʹ͍͍ͤͯͨͩͨ͞ɻ


    ࣸܦͨ͠ຊͷ঺հ
    9

    View Slide

  10. • ࣸܦͷಈػ


    • ࣸܦͨ͠ຊͷ঺հ


    • ࣸܦ͢Δલͷঢ়گ


    • ࣸܦͷํ๏


    • ࣸܦͷײ૝


    • ࠓޙ΍ͬͯΈ͍ͨ͜ͱ
    ໨࣍
    10

    View Slide

  11. ▪Elixirܦݧ͸Webهࣄͷࣸܦ(※1)ɺલड़ͷϋϯζΦϯ(※2)Ͱମݧͨ͠ɺͱ͍͏
    ঢ়گɻ


    ※1 en ΤϯδχΞHub ͭ͗ͷهࣄ


    ɾ࠷଎Ͱ஌Δʂ ElixirϓϩάϥϛϯάͱErlang/OTPͷ࢝Ίํʲୈೋݴޠͱ͠
    ͯͷElixirʳ


    ɾ௅ઓʂ ElixirʹΑΔฒߦɾ෼ࢄΞϓϦέʔγϣϯͷ࡞Γํʲୈೋݴޠͱͯ͠
    ͷElixirʳ


    ※2 ೔ຊιϑτ΢ΣΞՊֶձୈ39ճେձνϡʔτϦΞϧ


    ʮؔ਺ܕݴޠElixirͰ࢝ΊΔIoTγεςϜ։ൃೖ໳ʯ


    ɹGitHubϦϙδτϦ
    ࣸܦ͢Δલͷঢ়گ
    11

    View Slide

  12. • ࣸܦͷಈػ


    • ࣸܦͨ͠ຊͷ঺հ


    • ࣸܦ͢Δલͷঢ়گ


    • ࣸܦͷํ๏


    • ࣸܦͷײ૝


    • ࠓޙ΍ͬͯΈ͍ͨ͜ͱ
    ໨࣍
    12

    View Slide

  13. ▪@t_wada͞ΜͷࣸܦελΠϧɻ


    ɾҙຯͷ͋ΔίʔυΛ1೔1ճͰ΋ॻ͘ɻ


    ɾมߋཤྺ؅ཧπʔϧʹίϛοτϩά(ຊͷষ൪߸ɾෆ໌఺)Λॻ͘ɻ


    ɾ࠲ΕΔӺ(࢝ൃӺ)ʹॅΈɺ௨ۈதʹίʔυΛॻ͘؀ڥΛͭ͘Δɻ


    ɹˠίϩφͷ࣌ࠩग़ۈ(1hૣ͘)Ͱ௨ۈిं಺ͰࣸܦՄೳʹͳͬͨ!!!


    ɹ+α


    ɾElixir࣮ફΨΠυͷষ຤ͷ࿅श໰୊΋͔ܽͣࣸ͞ܦ&ཧղ͢ΔΑ͏ʹͨ͠ɻ


    ɾֶशͨ͠ίʔυ͸ͲͷΑ͏ͳγʔϯͰ࢖͑Δ͔Πϝʔδ͠ɺࣸܦͷͱ͖ʹ
    ײͨ͜͡ͱͳͲ΋ίϛοτϩάʹ௥هͨ͠ɻ
    ࣸܦͷํ๏
    13

    View Slide

  14. ▪ݱࡏͷঢ়گ


    ɾશ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)


    ෇࿥ ԋश໰୊ղ౴

    View Slide

  15. • ࣸܦͷಈػ


    • ࣸܦͨ͠ຊͷ঺հ


    • ࣸܦ͢Δલͷঢ়گ


    • ࣸܦͷํ๏


    • ࣸܦͷײ૝


    • ࠓޙ΍ͬͯΈ͍ͨ͜ͱ
    ໨࣍
    15

    View Slide

  16. ▪ϞμϯͳΤίγεςϜ!!!


    ▪Elixirͷؾ࣋ͪΑ͞Λମײ!!!


    ▪ElixirΒ͍͠ϓϩάϥϛϯάΛͳΜͱͳ͘ཧղ!!!


    ࣸܦͷײ૝
    16

    View Slide

  17. ▪ϞμϯͳΤίγεςϜ!!!


    ɾର࿩ܕͷγΣϧ؀ڥ(IEx)Ͱ͙͢ʹಈ࡞֬ೝͰ͖Δ!!!


    ɾ˒ςετ͕ॻ͚Δ!!ςετͰݴޠࣗମΛֶशͰ͖Δɻ


    ɾMixͰϓϩδΣΫτͷ਽ܗΛαΫͬͱ࡞ΕΔ!!!


    ɾ೔ຊͷίϛϡχςΟ͕׆ൃ!!!


    ɹฏ࣌ͷ׆ಈɺ೥຤ͷQiitaΞυϕϯτΧϨϯμʔͷه
    ࣄ౤ߘ਺͕ੌ͍ɾɾɾɻ
    ࣸܦͷײ૝
    17

    View Slide

  18. ▪ϞμϯͳΤίγεςϜ!!!


    ▪Elixirͷؾ࣋ͪΑ͞Λମײ!!!


    ▪ElixirΒ͍͠ϓϩάϥϛϯάΛͳΜͱͳ͘ཧղ!!!


    ࣸܦͷײ૝
    18

    View Slide

  19. ▪Elixirͷؾ࣋ͪΑ͞Λମײ!!!


    ɾύΠϓ


    ɾύλʔϯϚον


    ɾϏοτετϦϯάɾόΠφϦ


    ࣸܦͷײ૝
    19

    View Slide

  20. ▪Elixirͷؾ࣋ͪΑ͞Λମײ!!!


    ࣸܦͷײ૝
    20
    👍
    👍
    ↓ʲElixirImp ConnpassΠϕϯτϖʔδʳ


    ΑΓҾ༻

    View Slide

  21. ▪Elixirͷؾ࣋ͪΑ͞Λମײ!!!


    ɾϏοτετϦϯάɾόΠφϦ


    ϏοτετϦϯάɿϏοτͷྻΛද͢σʔλߏ଄


    όΠφϦɿϏοτετϦϯάͷ͏ͪɺ௕͕͞8ͷഒ਺


    →૊ࠐΈιϑτ΢ΣΞͰ࢖͑Δ!!!


    ૊ࠐΈιϑτ΢ΣΞͷϋʔυ΢ΣΞ੍ޚ(ϨδελΞ
    Ϋηεɺ௨৴ɺetc)͸͜ͷσʔλߏ଄Λଟ༻͢Δɻ
    ࣸܦͷײ૝
    21

    View Slide

  22. ▪Elixirͷؾ࣋ͪΑ͞Λମײ!!!


    ɾϏοτετϦϯάɾόΠφϦ


    ྫ)


    # σʔλಡΈग़͠


    ɹ{:ok, read_data} = File.read(“binary_data.bin”)


    # ઌ಄0byte໨, ઌ಄1ʙ3byte໨, ࢒ΓΛऔΓग़͢


    <> = read_data


    ͜Μͳʹ؆୯ʹඞཁͳσʔλΛऔΓग़ͤΔ!!!


    ΑΓৄ͍͠આ໌͸ͪ͜ΒͷQiitaهࣄΛࢀরͯ͠Έ͍ͯͩ͘͞ɻ


    ૊ࠐΈʹ͔ܽͤͳ͍ Elixir ͰͷϏοτͷѻ͍ํ


    ࣸܦͷײ૝
    22

    View Slide

  23. ▪ϞμϯͳΤίγεςϜ!!!


    ▪Elixirͷؾ࣋ͪΑ͞Λମײ!!!


    ▪ElixirΒ͍͠ϓϩάϥϛϯάΛͳΜͱͳ͘ཧղ!!!


    ࣸܦͷײ૝
    23

    View Slide

  24. ▪ElixirΒ͍͠ϓϩάϥϛϯάΛͳΜͱͳ͘ཧղ!!!


    ●Elixir࣮ફΨΠυ͕ਵॴͰʲElixirΒ͍͠ॻ͖ํʳΛ
    ஸೡʹهࡌͯ͘͠Ε͍ͯΔɻ


    ʲElixirΒ͍͠ʳΛݴޠԽͰ͖ͳ͍͕ɺElixirܦݧऀ
    ͷίʔυΛͳΜͱͳ͘ཧղ͢Δ͜ͱ͕Ͱ͖ͨɻ


    ࣸܦͷײ૝
    24

    View Slide

  25. • ࣸܦͷಈػ


    • ࣸܦͨ͠ຊͷ঺հ


    • ࣸܦ͢Δલͷঢ়گ


    • ࣸܦͷํ๏


    • ࣸܦͷײ૝


    • ࠓޙ΍ͬͯΈ͍ͨ͜ͱ
    ໨࣍
    25

    View Slide

  26. ▪ࠓޙ΍ͬͯΈ͍ͨ͜ͱ


    ●ElixirͰΞϓϦΛͭ͘Δɻ


    ɹElixir࣮ફΨΠυͷࣸܦະ࣮ࢪͷষͰʲࡾ໨ฒ΂ʳ
    ͷΞϓϦ࡞੒༧ఆͰָ͠Έ̇̇̇


    ●γϦΞϧ௨৴ͷ͓Խ͚(※)Έ͍ͨͳγεςϜΛ
    NervesɾόΠφϦͷύλʔϯϚονϯάͰରԠͨ͠
    ͍(Ώ͘Ώ͘͸PhoenixΞϓϦԽͳͲ)ɻ


    ※120ݸ͘Β͍ͷύϥϝʔλ͕͋ΔจࣈͰ۠੾ΒΕɺ
    ҰఆपظͰσʔλऩूɾදࣔΛߦ͏γεςϜɻ
    ࣸܦͷײ૝
    26

    View Slide

  27. ▪ࠓޙ΍ͬͯΈ͍ͨ͜ͱ


    ࣸܦͷײ૝
    27
    ↓ʲElixirImp ConnpassΠϕϯτϖʔδʳ


    ΑΓҾ༻

    View Slide

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

    View Slide