Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Erlang and Elixir Fest 2018 Keynote

Erlang and Elixir Fest 2018 Keynote

16-JUN-2018 Akihabara Convention Hall / my history of involving in Erlang and Elixir communities and why Erlang and Elixir are attractive systems (presentation in Japanese)
Erlang and Elixir Fest 2018 キーノート
Note: revised to include the last-minute modification and to avoid possible national flag rule violation against the flag of Sweden.

Kenji Rikitake

June 16, 2018
Tweet

More Decks by Kenji Rikitake

Other Decks in Programming

Transcript

  1. ErlangͱElixir͕ಥ͖෇͚Δ΋ͷ
    ͋Δ͍͸ੑೳͱ҆શͷऴΘΓͳ͖ઓ͍ʹ͍ͭͯ
    Erlang/OTPͱͷ͜ͷ10೥ΛৼΓฦΓͭͭߟ͑Δ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 1

    View Slide

  2. ྗ෢ ݈࣍
    Γ͖͚ͨ ͚Μ͡
    2018೥6݄16೔
    Erlang and Elixir Fest 2018
    ळ༿ݪίϯϕϯγϣϯϗʔϧ
    @jj1bdx
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 2

    View Slide

  3. [PR]
    ͓࢓ࣄืूதͰ͢
    53ࡀ / ϓϩάϥϛϯάྺ44೥
    ιϑτ΢ΣΞΤϯδχΞྺ28೥໨
    Erlang/OTPྺ11೥໨
    ྗ෢݈ٕ࣍ज़࢜ࣄ຿ॴ ॴ௕
    ϖύϘݚڀॴ ٬һݚڀһ
    ઌ݄·Ͱ7ϲ݄C++ͱC#ͱsvnͱVisual Studioͷ࢓ࣄͯ͠·ͨ͠
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 3

    View Slide

  4. ͜ͷ10೥ΛৼΓฦΔ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 4

    View Slide

  5. Erlang/OTPͱͷग़ձ͍
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 5

    View Slide

  6. 2008೥2݄
    Cݴޠʹઈ๬͍ͯͨ͠
    ౦ژ ೔ຊڮ ؙળ
    खʹͱͬͯΈͨ
    ໘ന͍
    ͙͢ʹ௨ൢͰങͬͯಡΜͩ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 6

    View Slide

  7. Erlang/OTPίϛϡχςΟ΁
    ࠷ॳ͸FreeBSDͰͷ͏Δ͏ඵύον͔Β
    ͦͷ͏ͪWindowsͱࠞͥͨΓ͍Ζ͍Ζ࣮ݧ
    ౰࣌͸ηΩϡϦςΟؔ࿈ͷݚڀΛ͍ͯͨ͠
    SSHͷRPCͱ͔ࢥ͍ͭ͘
    …ൃදͰ͖ͦ͏
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 7

    View Slide

  8. 2010೥3݄
    Erlang Factory SF
    Bay 2010
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 8

    View Slide

  9. ௕͍෇͖߹͍͕࢝·Δ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 9

    View Slide

  10. 2011೥9݄
    ౦ژͰ
    Erlang Workshop
    ࣮ߦҕһ௕Λ΍Γ੾Δ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 10

    View Slide

  11. ࣮͸2011೥ʹ
    ͍͢͝Eຊ
    ͦͯ͠
    Erlang In Anger
    …ͷݪయͱͳΔϓϨθϯ͕
    αϯϑϥϯγείͰߦΘΕͨ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 11

    View Slide

  12. ໘ന͘ͳ͖ͬͯͨ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 12

    View Slide

  13. Elixirͱͷग़ձ͍ *
    * Elixirͷϩΰ͸PlataformatecͰ঎ඪొ࿥࡞ۀதͷͨΊڐՄͳ͘࢖͏͜ͱ͸Ͱ͖·ͤΜɻ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 13

    View Slide

  14. 2014೥3݄
    Erlang Factory SF Bay 2014
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 14

    View Slide

  15. José Valim
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 15

    View Slide

  16. Dave Thomas
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 16

    View Slide

  17. িܸతͳߨԋ
    ݁ߏͳ෺ٞΛৢͯ͠େมͩͬͨΈ͍ͨͰ͕͢
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 17

    View Slide

  18. Catalyze changes
    มԽͷ৮ഔͱͳΕ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 18

    View Slide

  19. ߨԋ಺༰ʢͷཁࢫʣ
    Erlang͸ಡΈʹ͍͘!
    Ϩίʔυ͕೉͍͠!
    υΩϡϝϯτ͕ͳ͍!
    ͳΜͱ͔͠Α͏ͥ!
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 19

    View Slide

  20. ༗ݴ࣮ߦ
    Dave Thomas͸
    Elixirͱؔ࿈ٕज़ͷ
    ϓϩϞʔγϣϯʹ
    ਚྗ
    ࣗ෼Ͱ1࡭
    PragProgͰ7࡭
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 20

    View Slide

  21. 2016೥
    ϓϩάϥϛϯά
    Elixir೔ຊޠ൛ొ৔
    RubyίϛϡχςΟ
    ͷਓୡΛͪΒ΄Β
    ͱݟ͔͚ΔΑ͏ʹ
    ͳͬͨ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 21

    View Slide

  22. 2018೥
    2݄ʹେࣄ݅
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 22

    View Slide

  23. erlang-questions ϝʔϦϯάϦετʹͯ
    ͜ͱ΋͋Ζ͏ʹࠩผ༻ޠΛ
    ࣗ෼ͷϨϙδτϦʹ෇͚ͯ
    ͠·ͬͨਓ͕͍ͨ
    ͍͢͝EຊͱErlang In Angerͷ
    ஶऀ͕߅ٞ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 23

    View Slide

  24. େ࿦૪
    ऩर͢Δͷ͕େมͩͬͨΒ͍͠Ͱ͢
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 24

    View Slide

  25. 2018೥5݄31೔ʙ6݄1೔
    ε΢ΣʔσϯͷετοΫϗϧϜʹͯ
    Code BEAM STO 2018
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 25

    View Slide

  26. ձٞͷςʔϚʢͷҰ෦ʣ
    Open Erlang 20प೥
    BEAMίϛϡχςΟͷ༥߹
    ೔ৗͱͯ͠ͷμΠόʔγςΟ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 26

    View Slide

  27. ௕͍લৼΓΛऴΘΓ·͢
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 27

    View Slide

  28. ErlangͱElixir
    ͦͯͦ͠ͷଞͷLFE, efene, Alpaca, clojerl, luerl, etc.
    Ͳ͕͓͍͍͜͠ͷ?
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 28

    View Slide

  29. ྗ෢ͷߟ͑ΔϝϦοτ
    Immutability
    σΟʔϓίϐʔ
    ࢀরΛ࢖Θͳ͍
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 29

    View Slide

  30. ैདྷͷݴޠ
    ม਺͸࠶ར༻
    ࢀর͔͠ίϐʔ͠ͳ͍
    Ͱ͖ΔݶΓ࣮ମΛڞ༗
    ↑͢΂ͯόάͷݩ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 30

    View Slide

  31. ैདྷͷݴޠͷݪଇ
    ۃྗίϐʔͨ͘͠ͳ͍
    ۃྗϝϞϦΛઅ໿͍ͨ͠
    ҆શΑΓ΋ޮ཰
    ୅ೖͷཤྺΛऔΕͳ͍
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 31

    View Slide

  32. C++Ͱࠔͬͨ͜ͱ
    ม਺͸஋? ࢀর?
    const෇͖? ͳ͠?
    ίϯετϥΫλ͸͍ͭಈ͘?
    std::unique_ptr<> ͋Δ͍͸ shared_ptr<>
    →ෳ਺ͷໃ६͢ΔηϚϯςΟΫε͕ಉ࣌ʹଘࡏ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 32

    View Slide

  33. Erlang΍ElixirͰ͸ࠔΓ·ͤΜ
    ม਺͸͢΂࣮ͯମ
    Ұ౓֬ఆ࣮ͨ͠ମ͸ෆม
    ୅ೖ͸ඞͣ৽͍࣮͠ମΛ࡞Δ
    ࢀরΛߟ͑ͳ͍͍͔ͯ͘Βָ
    ʢETSͱ͔ϓϩηεࣙॻͱ͔࢖͏ͱେมͰ͕͢ʣ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 33

    View Slide

  34. Erlang΍Elixirͷݪଇ
    ඞཁͳΒͲΜͲΜίϐʔ
    ϝϞϦઅ໿͸GCͰ
    ޮ཰ΑΓ΋҆શ
    ୅ೖͷཤྺΛऔΕΔ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 34

    View Slide

  35. JavaScriptͷྫ
    // var a = {first: 1, second: 2}
    // b = a // ࢀরͷΈͷڞ༗
    { first: 1, second: 2 }
    // a.second = 3
    3
    // b // ཁૉͷ࣮ମ͸ڞ༗
    { first: 1, second: 3 }
    // b == { first: 1, second: 3 }
    false // ͳͥ?
    // ӈଆ͸ίϯετϥΫλͳͷͰҰக͠ͳ͍
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 35

    View Slide

  36. Erlang/OTPͷྫ
    %%% ୅ೖ͢Δ࣮ମ͸ৗʹ৽ͭ͘͘͠ΒΕΔ
    %%% ࠶୅ೖ͸ͦ΋ͦ΋Ͱ͖ͳ͍
    % A1 = {1,2,3}.
    {1,2,3}
    % B1 = A1.
    {1,2,3} % ίϐʔ͕Ͱ͖Δ
    % A2 = setelement(3,A1,4).
    {1,2,4}
    % B1 =:= {1,2,3}.
    true
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 36

    View Slide

  37. Erlang΍ElixirͷσϝϦοτ
    ͱͯ΋஗͍
    ൃ૝ͷస׵͕ඞཁ
    Ruby΍PHPͷΑ͏ʹ͸ॻ͚·ͤΜ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 37

    View Slide

  38. Erlangͷ։ൃऀͷҰਓ
    Joe Armstrong͸
    Ͳ͏ߟ͍͑ͯΔͷ͔
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 38

    View Slide

  39. Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 39

    View Slide

  40. Erlang/ElixirͰେࣄͳ͜ͱ
    ܰྔฒߦϓϩηε
    ΤϥʔϋϯυϦϯά
    ʢͱɺimmutabilityͩͱɺྗ෢͸ࢥ͍ͬͯ·͢ʣ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 40

    View Slide

  41. ܰྔฒߦϓϩηε 1
    ॲཧաఔ͸ͦΕͧΕϓϩηεʹׂΓ౰ͯΒΕͯฒߦʹॲཧ
    ೖྗ ॲཧ ग़ྗ
    ೖྗ1 → ॲཧ1 → ग़ྗ1
    ೖྗ2 → ॲཧ2 → ग़ྗ2
    ೖྗ3 → ॲཧ3 → ग़ྗ3
    ೖྗ4 → ॲཧ4 → ग़ྗ4
    1 Francesco Cesarini, Simon Thompson, "Erlang Programming", O'Reilly Media, 2009, p. 112,
    Figure 4-14 ΑΓྗ෢݈࣍ʹΑͬͯ࠶ߏ੒
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 41

    View Slide

  42. ܰྔϓϩηεͷίϯτϩʔϧ 2
    ࡞Δͷ͸spawnҰൃ
    མͱ͢ͷ͸link΍monitorͰOK
    ͖Ε͍ʹམͱ͢ͷ͸େม
    ϓϩηεΩϡʔ͕٧·Δͱऴྃ
    ॲཧ͕஗͍ͷͰ஫ҙ
    2 ࡢ೥ͷElixir Conf Japan 2017ͷ@voluntasʹΑΔߨԋʮͳͥ Erlang/OTP Λ࢖͍ଓ͚Δͷ
    ͔ʯΛࢀর
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 42

    View Slide

  43. ErlangͷΤϥʔϋϯυϦϯά
    ϦϯΫ (link)
    Ϟχλʔ (monitor)
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 43

    View Slide

  44. Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 44

    View Slide

  45. Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 45

    View Slide

  46. Erlang/Elixirͷࠓޙ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 46

    View Slide

  47. جຊཧ೦
    Lagom är bäst
    ΄Ͳ΄Ͳͳͷ͕Ұ൪ྑ͍
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 47

    View Slide

  48. ΄Ͳ΄Ͳɺͱ͸
    ҆શ͸ߴ଎Խʹ༏ઌ
    खΛൈ͔ͣʹߴ଎Խ
    έϯΧ͠ͳ͍/ͤ͞ͳ͍ίϛϡχςΟ
    ٸ͕ͣͰ͖Δ͜ͱΛண࣮ʹ΍͍ͬͯ͘
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 48

    View Slide

  49. ૊ΈࠐΈ෼໺΁ͷԠ༻
    GRiSP / Nerves / ֤छ૊ΈࠐΈϘʔυͰͷ࣮ߦ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 49

    View Slide

  50. ࠓޙͷൃలͷ༧૝
    େن໛(>1000ϊʔυ)Ϋϥελ
    ϒϩοΫνΣʔϯ (Aeternity)
    Erlang/ElixirҎ֎ͷ֤छݴޠ
    Gradual Type System
    Language Server Protocol
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 50

    View Slide

  51. Erlang/ElixirίϛϡχςΟ
    ଞͷݴޠʹ͘Β΂Δͱখ͞ͳίϛϡχςΟͰ͢
    ͍͢͝ਓͩΒ͚ͰษڧͰ͖·͢
    Elixirͷ͓͔͛Ͱ৽͍͠ਓ΋૿͑·ͨ͠
    ೉͍͠ݴޠγεςϜͳͷͰϨϕϧ͕ߴ͍Ͱ͢
    ඈͼࠐΜͰ͍͘ͱ਌੾ʹͯ͘͠Ε·͢
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 51

    View Slide

  52. ੑೳΑΓ΋҆શΛ
    ༏ઌͰ͖ΔਓͳΒ͹
    Erlang΍Elixirʹ
    ޲͍͍ͯΔͱࢥ͍·͢
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 52

    View Slide

  53. ࠷ޙʹࡢ೥ʹҾ͖ଓ͖
    ͓ئ͍
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 53

    View Slide

  54. ίϛϡχςΟʹ
    ೔ຊͷਓ͕
    ͍·ͤΜ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 54

    View Slide

  55. ೔ຊࠃ֎Ͱ
    ӳޠͷ
    ੒ՌൃදΛ!
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 55

    View Slide

  56. ΑΖ͘͠
    ͓ئ͍͠·͢!
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 56

    View Slide

  57. ँࣙ
    ͜ͷߨԋ͸
    GMOϖύϘגࣜձࣾ
    ϖύϘݚڀॴͷ
    ͝ࢧԉͰ࣮ݱ͠·ͨ͠
    ͋Γ͕ͱ͏͍͟͝·͢
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 57

    View Slide

  58. [PR]
    ྗ෢݈ٕ࣍ज़࢜ࣄ຿ॴͰ͸
    ͓࢓ࣄืूதͰ͢
    ͝૬ஊ׻ܴக͠·͢
    ͥͻ࠙਌ձͰ͓੠͕͚͍ͩ͘͞
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 58

    View Slide

  59. ͓͠·͍
    ͋Γ͕ͱ͏͍͟͝·ͨ͠
    ࣭͝໰ΛͲ͏ͧ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 59

    View Slide

  60. ࣸਅ౳ΫϨδοτ
    • Title: Samuel Wong on Unsplash.com
    • José Valim: By Augie De Blieck from USA (elixirconf-47), CC BY 2.0, via Wikimedia Commons
    • Dave Thomas: By James Davidson (Flickr: Dave Thomas) CC BY 2.0, via Wikimedia Commons
    • Pragmatic Bookshelf Elixir/OTP/Phoenix books page
    • ϦϯΫʹΑΔྫ֎γάφϧૹ৴ྫ
    • ϞχλʔʹΑΔྫ֎ϝοηʔδૹ৴ྫ: ྗ෢݈࣍ɺʮErlangͰֶͿฒߦϓϩάϥϛϯάୈ8ճʯɺ
    Software Design 2015೥11݄߸ɺٕज़ධ࿦ࣾɺp. 124ͷਤΛ࠶ߏ੒ɻ
    • ε΢Σʔσϯࠃض: By Jon Harald Søby and others. Public domain, via Wikimedia Commons
    • ϖύϘݚڀॴϩΰ: GMOϖύϘגࣜձࣾ
    • εϥΠυதͷॻ੶ͷදࢴͱதදࢴʹ͍ͭͯ͸ΦʔϜࣾɺNo Starch Press, Pragmatic Bookshelfͷ
    ॻ੶৘ใΛઐΒॻ੶঺հͷ໨తͰ࢖༻͍ͯ͠·͢ɻ
    • ্هʹ஫ऍͷͳ͍ࣸਅɺਤɺֆʹ͍ͭͯ͸ྗ෢݈͕࣍ࡱӨɺฤूɺ੍࡞͍ͯ͠·͢ɻ
    Kenji Rikitake / Erlang and Elixir Fest 2018 16-JUN-2018 60

    View Slide