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

突如見知らぬ言語に出会ってしまった俺達は

moznion
July 03, 2016

 突如見知らぬ言語に出会ってしまった俺達は

YAPC Hachioji 2016の資料です

moznion

July 03, 2016
Tweet

More Decks by moznion

Other Decks in Technology

Transcript

  1. ಥ೗ݟ஌Β͵ݴޠʹ
    ग़ձͬͯ͠·ͬͨԶୡ͸
    @moznion

    View Slide

  2. ͜Μʹͪ͸

    View Slide

  3. @moznion

    View Slide

  4. ͜͜Ͱ࣭໰

    View Slide

  5. ࠓ೥ೖ͔ͬͯΒ৽͍͠ݴޠ
    ΍ͬͯΔͧʙʙʙʙͬͯਓ

    View Slide

  6. ࠓ೥ೖ͔ͬͯΒ(झຯͰ)
    ৽͍͠ݴޠ
    ΍ͬͯΔͧʙʙʙʙͬͯਓ

    View Slide

  7. Թ౓ײΘ͔Γ·ͨ͠

    View Slide

  8. ಥ೗ݟ஌Β͵ݴޠʹ
    ग़ձͬͯ͠·ͬͨԶୡ͸
    @moznion

    View Slide

  9. @moznion

    View Slide

  10. ࠓճ࿩͢͜ͱ
    ·ͨͦͷλʔήοτ

    View Slide

  11. ϓϩάϥϛϯά

    ݴޠͷֶͼํʹ͍ͭͯ
    ݸਓతʹࢥ͏͜ͱ
    ·ͨ΍͍ͬͯΔ͜ͱͷ঺հ

    View Slide

  12. ϓϩάϥϛϯά

    ॳֶऀͷਓ

    View Slide

  13. ͋Δ͍͸ποίϛΛ

    ೖΕ͍ͨਓ

    View Slide

  14. dan the question
    OK!

    View Slide

  15. ࠓճ࿩͞ͳ͍͜ͱ

    View Slide

  16. ໊෺: ҟৗͳ౒ྗ

    View Slide

  17. ຊ୊

    View Slide

  18. ͷલʹ……

    View Slide

  19. ͷલʹ……
    ࠓ͙͢ΫϦοΫ

    View Slide

  20. ͳͥ৽͍͠ݴޠΛ
    ΍Δͷ͔ʁ

    View Slide

  21. View Slide

  22. ຖ೥গͳ͘ͱ΋ҰͭͷݴޠΛֶश͢Δ: ݴޠ͕ҟͳΔͱɼಉ͡
    ໰୊Ͱ΋ҧͬͨղܾํ๏͕࠾༻͞Ε·͢ɽͭ·Γɼ͍͔ͭ͘ͷ
    ҟͳͬͨΞϓϩʔνΛֶश͢Δ͜ͱʹΑΓɼ෯޿͍ࢥߟ͕Ͱ͖
    ΔΑ͏ʹͳΔΘ͚Ͱ͢ɽ͜ΕʹΑͬͯɼ͵͔ΔΈʹ͸·ͬͯ͠
    ·͏ࣄଶΛආ͚Δ͜ͱ͕Ͱ͖ΔΑ͏ʹͳΓ·͢ɽ

    View Slide

  23. ͳΔ΄Ͳ

    View Slide

  24. Ͳ͍ͬ͜ཧ༝ͳͲແ͘
    ΍Δ৔߹/΍Β͞ΕΔ

    ৔߹΋͋Δ

    View Slide

  25. ৭ʑ͋Γ·͢
    ৭ʑ΍ͬͯΈ·͠ΐ͏

    View Slide

  26. ஌ͱ͸ͳʹ͔……

    View Slide

  27. ݟ·͢

    View Slide

  28. Erlang: rabbitmq-server/src/rabbit_router.erl

    View Slide

  29. Clojure: ring/ring-core/src/ring/middleware/resource.clj

    View Slide

  30. Perl: Plack/lib/Plack/Request.pm

    View Slide

  31. C: h2o/src/main.c

    View Slide

  32. Ͳ͏Ͱ͔͢
    (৭ʑͳײ૝͕͋Γ·͢)

    View Slide

  33. ݟ֮͑ͷ͋Δ΋ͷ͸
    ͋·Γා͘ͳ͍

    View Slide

  34. ڪා = ແ஌

    View Slide

  35. ஌Δͱ͍͏͜ͱ͸
    ڪාΛࠀ෰͢Δ͜ͱ

    View Slide

  36. ڪාΛࠀ෰ͯ͠ࢀΓ
    ·͠ΐ͏

    View Slide

  37. ڪාΛࠀ෰͍ͯ͘͠ͱ
    ͲΜͲΜݴޠΛ΍ͬͯ
    ͍͚Δ

    View Slide

  38. ݟ஌Β͵ݴޠΛֶͿ࣌Ͳ͏͢
    Δ͔

    View Slide

  39. ৔߹Λߟ͑·͠ΐ͏

    View Slide

  40. ۚ͋Δ
    ࣌ؒ͋Δ
    ۚ͋Δ
    ࣌ؒͳ͍
    ۚͳ͍
    ࣌ؒ͋Δ
    ۚͳ͍
    ࣌ؒͳ͍
    ۚ
    ࣌ؒ

    View Slide

  41. ۚ͋Δ
    ࣌ؒ͋Δ

    View Slide

  42. ຊΛಡΉͷ͸ָ
    ࣗવͱମܥֶ͚ͮͯͿ
    ͜ͱ͕Ͱ͖Δ

    View Slide

  43. ͨͩಡΉ͚ͩͰ͸ແӹ
    खΛಈ͔͢ͷ͕؊ਛ

    View Slide

  44. खΛಈ͔͞ͳ͍ܥͷ
    ຊ͸୯ͳΔಡΈ෺ͳͷ
    Ͱ͋Μ·࢖͑ͳ͍

    View Slide

  45. ͳΜ΍͔΍ίϐϖͯ͠
    ಈ͔ͤΔిࢠ൛͸ศར

    View Slide

  46. ͨͩ͠ͳΔ΂͘৽͠
    ͍ຊΛ࢖͍·͠ΐ͏

    View Slide

  47. ۚͳ͍
    ࣌ؒ͋Δ

    View Slide

  48. ࠷ۙ͸ྑ͍࣌୅ʂ

    View Slide

  49. ͪΌΜͱͨ͠ݴޠͩͱ
    νϡʔτϦΞϧ͕ॆ࣮
    ͯ͠Δ

    View Slide

  50. e.g.
    A Tour of Go
    https://tour.golang.org/
    The Rust Programming Language
    https://doc.rust-lang.org/book/
    README.html

    View Slide

  51. Πϯλʔωοτ্ʹ΋
    αʔυύʔςΟͳ

    ৘ใ͕๛෋ʹ͋Δ

    View Slide

  52. ͜͜Ͱ ikura ͞Μͷ
    ϗʔϜϖʔδͷਤ

    View Slide

  53. View Slide

  54. ୯७ʹίϐϖͯ͠ࡁ·
    ͤΔͷ͸΍Ί·͠ΐ͏

    View Slide

  55. ෳ਺ͷ৘ใΛরΒ͠
    ߹Θͤ·͠ΐ͏

    View Slide

  56. ՄೳͳݶΓ৽͍͠

    ৘ใιʔεʹ

    ౰ͨΓ·͠ΐ͏

    View Slide

  57. ܁Γฦ͠ʹͳΓ·͕͢
    खΛಈ͔͠·͠ΐ͏

    View Slide

  58. ಈըίϯςϯπͳͲ
    ΋ྑͦ͞͏

    View Slide

  59. e.g.
    coursera
    https://www.coursera.org/
    υοτΠϯετʔϧ
    http://dotinstall.com/

    View Slide

  60. ஫)
    > ΞυόΠε͕1ݸ͋ͬͯɼڭࡐ͕ಈըͳ
    ͷͰɼ෮श͠ʹ͍͘ɽ͜Ε෮शͰ͖ͳ͍͠
    ͲΜͲΜ๨Ε͍ͯ͘ͷͰ͸ͬͯؾ෇͍ͯɼ
    3ि໨͘Β͍͔Βɼಈըݟͳ͕ΒϝϞͱͬ
    ͓ͯ͘Α͏ʹͨ͠Β໾ཱͭײ͡ʹͳͬͨɽ
    hitode909ͷ೔ه/Courseraͷػցֶशͷίʔε׬૸ͨ͠
    http://blog.sushi.money/entry/2016/04/09/101854

    View Slide

  61. ۚ͋Δ
    ࣌ؒͳ͍

    View Slide

  62. View Slide

  63. ۚͰ͸Ͳ͏ʹ΋ͳΒΜ
    ͖͋ΒΊΖʂʂʂʂʂ

    View Slide

  64. ֶͿࣄ͕໨తͰͳ͍
    ৔߹

    View Slide

  65. ਓޏͬͨ΄͏͕ྑ͍
    Ͱ͢Α

    View Slide

  66. ͱ͍͏Θ͚Ͱ
    ࣗવͱۚͳ͍ϧʔτ΁
    Ҡߦ͠·͢

    View Slide

  67. ۚͳ͍
    ࣌ؒͳ͍

    View Slide

  68. ͳΓ;Γߏ͍ͬͯΒΕͳ͍
    ਓʹ㘤͖·͠ΐ͏

    View Slide

  69. ਓ͸ૣ͍

    View Slide

  70. ͜͏͍͏࣌ʹ
    ίϛϡχςΟʹ
    ଐͯ͠Δͱྑ͍Ͱ͢ΑͶ

    View Slide

  71. ೖͬͯͳ͍৔߹͸
    ίϛϡχςΟʹ

    ೖΓ·͠ΐ͏

    View Slide

  72. ͍ͣΕͷ৔߹Ͱ΋
    ݴ͑Δ͜ͱ

    View Slide

  73. ͦͷݴޠಛ༗ͷػೳ΍
    ੈք؍Λ֮͑Δ͜ͱʹ
    ஫ྗ͢Δ

    View Slide

  74. ྫ͑͹ go ͱ͔ clojure ͳΒ
    ฒྻϓϩάϥϜͷٕ๏
    Scala ͱ͔ Haskell ͱ͔ͳΒڧྗͳܕγε
    ςϜΛجௐͱͨ͠വ਺ϓϩάϥϜͷٕ๏
    Java ΍ C# ͳΒΦϒδΣΫτࢦ޲ͷٕ๏
    ͳͲͳͲ

    View Slide

  75. ৭ʑͳੈք؍Λ஌ͬ
    ͓ͯ͘ͱࣅͨػೳʹ
    ग़ձͬͨ࣌ʹ஌ͬͨ
    ͔ͿΕΔ

    View Slide

  76. ڪා͠ͳ͘ͳΔ

    View Slide

  77. REPLͰษڧ͢Δͷ
    Λ΍ΊΔ

    View Slide

  78. ϓϩμΫγϣϯͰ
    REPL࢖ΘΜ
    (΋ͪΖΜ։ൃதͷಈ࡞֬ೝ
    ͱ͔Ͱ͸ΊͬͪΌ࢖͏͚Ͳ)

    View Slide

  79. ͳΜ͔ແཧ

    View Slide

  80. γϯλοΫεϋΠϥΠτ
    ͕ແ͍

    View Slide

  81. ࠶ݱͤ͞ϏϦςΟ

    ͷࠩ

    View Slide

  82. ίʔυͷશ๴Λ

    ͔ͭΈʹ͍͘
    งғؾ͕Θ͔Βͳ͍

    View Slide

  83. IDE࢖͍·͠ΐ͏

    View Slide

  84. ·͋·ౖ͋Βͳ͍Ͱ

    View Slide

  85. ੲ͸VimҰຊͰྑ͍ͱ
    ࢥͬͯͨ
    ͓Ε͸΍ΕΔΜͩͱ
    ࢥͬͯͨ

    View Slide

  86. ੲ͸˓̋ (͜͜ʹ޷͖ͳΤ
    σΟλͷ໊લΛೖΕ·͠ΐ
    ͏)ҰຊͰྑ͍ͱࢥͬͯͨ
    ͓Ε͸΍ΕΔΜͩͱࢥͬͯͨ

    View Slide

  87. ے೑ਸഈ
    (Կ౓΋ಉ͡ίʔυΛ
    ॻ͘ͱ֮͑Δͧ)
    ͷ࣌୅

    View Slide

  88. Կ౓΋ॻ͘ඞཁ͋Δ
    ίʔυΛॻ͘ඞཁ͸
    ແ͍ʂʂʂʂʂ
    IDEʹॻ͔ͤΖʂʂ

    View Slide

  89. IDE͕ਖ਼͍͠ίʔυ
    ʹಋ͍ͯ͘ΕΔͷ͕
    ॏཁ

    View Slide

  90. ؒҧ͑ͨίʔυΛԿว
    ΋Կว΋ॻ͘ͷ͸֐ѱ
    ਖ਼͍͠ίʔυΛॻ͍ͨ
    ΄͏͕ྗʹͳΔ

    View Slide

  91. ຊ࣭Λֶͼ΍͍͢

    View Slide

  92. ͱ͸͍͑
    ·͋VimͰ΋ྑ͍ͱ
    ࢥ͍·͢

    View Slide

  93. IDEͳ͍ݴޠͰ΋େৎ෉
    (Padre͞Μ͓ݩؾͰ͔͢)

    View Slide

  94. ਖ਼͍͠ίʔυΛॻ͘ࣄ
    Λॿ͚ͯ͘ΔπʔϧΛ
    ࢖͏

    View Slide

  95. ੩తղੳ
    (Perl::Lint͞Μ͓ݩؾͰ͔͢)

    View Slide

  96. ਖ਼͍͠ίʔυελΠ
    ϧʹಋ͍ͯ͘ΕΔ
    gofmt, check style,
    code sniffer and etc

    View Slide

  97. όάͷগͳ͍ίʔυ
    ʹಋ͍ͯ͘ΕΔ
    golint, findbugs
    and etc

    View Slide

  98. ͜ΕΒ͸྆ऀ݉Ͷ͍ͯΔ৔
    ߹΋͋Δ
    perl-critic, rubocop,
    js-[hl]int and etc

    View Slide

  99. ࢖͍ͬͯ͘͏ͪʹਖ਼͍͠ (ਖ਼
    ͦ͏) ͳίʔυ͕Θ͔ͬͯ͘
    Δ, ॻ͚ΔΑ͏ʹͳͬͯ͘Δ

    View Slide

  100. ΤσΟλʹ૊ΈࠐΜͰɼϦ
    ΞϧλΠϜతʹૉૣ͍ϑΟʔ
    υόοΫΛಘΔͱͳ͓Α͍

    View Slide

  101. ਖ਼͍͠ίʔυΛॻ͘ࣄΛ
    ॿ͚ͯ͘ΔπʔϧΛ࡞Δ
    ΋͘͠͸ॲཧܥΛ࡞Δ

    View Slide

  102. e.g.
    Perl࡞੒Λܾҙ
    ʮਂ͘ཧղ͍ͨ͠ͳΒ࡞Δʯͱ͍͏ Ϟο
    τʔͷ΋ͱɺֶͿͳΒ࡞ֶͬͯͼ͍ͨʂ
    Ͳ͏ͤͳΒɺεΫϦϓτݴޠք࠷଎ͷPerlΛ
    ࡞Γ͍ͨ
    Perlͱग़ձ͍ɺPerlΛ࡞Δ/@goccy
    http://www.slideshare.net/goccy/perlperl

    View Slide

  103. ͦ͏͍͏͜ͱΛ΍Δͱཧղ
    ͕ਂ·Δͱ͍͏৔߹͕
    ͋Γ·͢
    (Perl::Lint ͞Μ͓ݩؾͰ͔͢)

    View Slide

  104. ৽͍͠ݴޠΛ΍Δͱ͖
    ʹඞͣॻ͘΋ͷΛ
    ܾΊΔ

    View Slide

  105. ಉ͡΋ͷΛҧ͏ݴޠͰͨ͘
    ͞Μॻ͍ͯΈΔ

    View Slide

  106. ಉ͡΋ͷΛॻ͘͜ͱͰݴޠ
    ͷࠩҟ͕ݟ΍͘͢ͳΔ
    ಘखෆಘखΛ͔ͭΊΔΑ͏
    ʹͳΔ

    View Slide

  107. ΰʔϧ΋໌֬ʹఆ·Δ
    ੒ޭମݧʹܨ͕Δ

    View Slide

  108. yes ίϚϯυΫϩʔϯͱ͔
    ͸ख࢝Ίʹ؆୯Ͱ΍Γ΍͢
    ͍

    View Slide

  109. ͭ·Βͳ͍ʁ

    View Slide

  110. Web Application Framework
    ͱ͔ॻ͘ͱ໘ന͍

    View Slide

  111. template engine ΋໘ന͍Ͱ
    ͢Ͷ

    View Slide

  112. ίϛϡχέʔγϣϯ
    ͠·͠ΐ͏

    View Slide

  113. ̍ਓͰ΍Δͱ٧·Δ

    View Slide

  114. ͸͍

    View Slide

  115. ·ͱΊ

    View Slide

  116. ͱʹ͔͘ॻ͖·͠ΐ͏

    View Slide

  117. Q?

    View Slide