YAPC Hachioji 2016の資料です
ಥݟΒ͵ݴޠʹग़ձͬͯ͠·ͬͨԶୡ@moznion
View Slide
͜Μʹͪ
@moznion
͜͜Ͱ࣭
ࠓೖ͔ͬͯΒ৽͍͠ݴޠͬͯΔͧʙʙʙʙͬͯਓ
ࠓೖ͔ͬͯΒ(झຯͰ)৽͍͠ݴޠͬͯΔͧʙʙʙʙͬͯਓ
ԹײΘ͔Γ·ͨ͠
ࠓճ͢͜ͱ·ͨͦͷλʔήοτ
ϓϩάϥϛϯά ݴޠͷֶͼํʹ͍ͭͯݸਓతʹࢥ͏͜ͱ·͍ͨͬͯΔ͜ͱͷհ
ϓϩάϥϛϯά ॳֶऀͷਓ
͋Δ͍ποίϛΛ ೖΕ͍ͨਓ
dan the questionOK!
ࠓճ͞ͳ͍͜ͱ
໊: ҟৗͳྗ
ຊ
ͷલʹ……
ͷલʹ……ࠓ͙͢ΫϦοΫ
ͳͥ৽͍͠ݴޠΛΔͷ͔ʁ
ຖগͳ͘ͱҰͭͷݴޠΛֶश͢Δ: ݴޠ͕ҟͳΔͱɼಉ͡Ͱҧͬͨղܾํ๏͕࠾༻͞Ε·͢ɽͭ·Γɼ͍͔ͭ͘ͷҟͳͬͨΞϓϩʔνΛֶश͢Δ͜ͱʹΑΓɼ෯͍ࢥߟ͕Ͱ͖ΔΑ͏ʹͳΔΘ͚Ͱ͢ɽ͜ΕʹΑͬͯɼ͵͔ΔΈʹ·ͬͯ͠·͏ࣄଶΛආ͚Δ͜ͱ͕Ͱ͖ΔΑ͏ʹͳΓ·͢ɽ
ͳΔ΄Ͳ
Ͳ͍ͬ͜ཧ༝ͳͲແ͘Δ߹/Β͞ΕΔ ߹͋Δ
৭ʑ͋Γ·͢৭ʑͬͯΈ·͠ΐ͏
ͱͳʹ͔……
ݟ·͢
Erlang: rabbitmq-server/src/rabbit_router.erl
Clojure: ring/ring-core/src/ring/middleware/resource.clj
Perl: Plack/lib/Plack/Request.pm
C: h2o/src/main.c
Ͳ͏Ͱ͔͢(৭ʑͳײ͕͋Γ·͢)
ݟ֮͑ͷ͋Δͷ͋·Γා͘ͳ͍
ڪා = ແ
Δͱ͍͏͜ͱڪාΛࠀ͢Δ͜ͱ
ڪාΛࠀͯ͠ࢀΓ·͠ΐ͏
ڪාΛࠀ͍ͯ͘͠ͱͲΜͲΜݴޠΛ͍͚ͬͯΔ
ݟΒ͵ݴޠΛֶͿ࣌Ͳ͏͢Δ͔
߹Λߟ͑·͠ΐ͏
ۚ͋Δ࣌ؒ͋Δۚ͋Δ࣌ؒͳ͍ۚͳ͍࣌ؒ͋Δۚͳ͍࣌ؒͳ͍ۚ࣌ؒ
ۚ͋Δ࣌ؒ͋Δ
ຊΛಡΉͷָࣗવͱମܥֶ͚ͮͯͿ͜ͱ͕Ͱ͖Δ
ͨͩಡΉ͚ͩͰແӹखΛಈ͔͢ͷ͕؊ਛ
खΛಈ͔͞ͳ͍ܥͷຊ୯ͳΔಡΈͳͷͰ͋Μ·͑ͳ͍
ͳΜ͔ίϐϖͯ͠ಈ͔ͤΔిࢠ൛ศར
ͨͩ͠ͳΔ͘৽͍͠ຊΛ͍·͠ΐ͏
ۚͳ͍࣌ؒ͋Δ
࠷ۙྑ͍࣌ʂ
ͪΌΜͱͨ͠ݴޠͩͱνϡʔτϦΞϧ͕ॆ࣮ͯ͠Δ
e.g.A Tour of Gohttps://tour.golang.org/The Rust Programming Languagehttps://doc.rust-lang.org/book/README.html
Πϯλʔωοτ্ʹαʔυύʔςΟͳ ใ͕๛ʹ͋Δ
͜͜Ͱ ikura ͞ΜͷϗʔϜϖʔδͷਤ
୯७ʹίϐϖͯ͠ࡁ·ͤΔͷΊ·͠ΐ͏
ෳͷใΛরΒ͠߹Θͤ·͠ΐ͏
ՄೳͳݶΓ৽͍͠ ใιʔεʹ ͨΓ·͠ΐ͏
܁Γฦ͠ʹͳΓ·͕͢खΛಈ͔͠·͠ΐ͏
ಈըίϯςϯπͳͲྑͦ͞͏
e.g.courserahttps://www.coursera.org/υοτΠϯετʔϧhttp://dotinstall.com/
)> ΞυόΠε͕1ݸ͋ͬͯɼڭࡐ͕ಈըͳͷͰɼ෮श͠ʹ͍͘ɽ͜Ε෮शͰ͖ͳ͍͠ͲΜͲΜΕ͍ͯ͘ͷͰͬͯؾ͍ͯɼ3ि͘Β͍͔Βɼಈըݟͳ͕ΒϝϞͱ͓ͬͯ͘Α͏ʹͨ͠Βཱͭײ͡ʹͳͬͨɽhitode909ͷه/Courseraͷػցֶशͷίʔεͨ͠http://blog.sushi.money/entry/2016/04/09/101854
ۚ͋Δ࣌ؒͳ͍
ۚͰͲ͏ʹͳΒΜ͖͋ΒΊΖʂʂʂʂʂ
ֶͿࣄ͕తͰͳ͍߹
ਓޏͬͨ΄͏͕ྑ͍Ͱ͢Α
ͱ͍͏Θ͚Ͱࣗવͱۚͳ͍ϧʔτҠߦ͠·͢
ۚͳ͍࣌ؒͳ͍
ͳΓ;Γߏ͍ͬͯΒΕͳ͍ਓʹ㘤͖·͠ΐ͏
ਓૣ͍
͜͏͍͏࣌ʹίϛϡχςΟʹଐͯ͠Δͱྑ͍Ͱ͢ΑͶ
ೖͬͯͳ͍߹ίϛϡχςΟʹ ೖΓ·͠ΐ͏
͍ͣΕͷ߹Ͱݴ͑Δ͜ͱ
ͦͷݴޠಛ༗ͷػೳੈք؍Λ֮͑Δ͜ͱʹྗ͢Δ
ྫ͑ go ͱ͔ clojure ͳΒฒྻϓϩάϥϜͷٕ๏Scala ͱ͔ Haskell ͱ͔ͳΒڧྗͳܕγεςϜΛجௐͱͨ͠വϓϩάϥϜͷٕ๏Java C# ͳΒΦϒδΣΫτࢦͷٕ๏ͳͲͳͲ
৭ʑͳੈք؍Λ͓ͬͯ͘ͱࣅͨػೳʹग़ձͬͨ࣌ʹ͔ͬͨͿΕΔ
ڪා͠ͳ͘ͳΔ
REPLͰษڧ͢ΔͷΛΊΔ
ϓϩμΫγϣϯͰREPLΘΜ(ͪΖΜ։ൃதͷಈ࡞֬ೝͱ͔ͰΊͬͪΌ͏͚Ͳ)
ͳΜ͔ແཧ
γϯλοΫεϋΠϥΠτ͕ແ͍
࠶ݱͤ͞ϏϦςΟ ͷࠩ
ίʔυͷશΛ ͔ͭΈʹ͍͘งғؾ͕Θ͔Βͳ͍
IDE͍·͠ΐ͏
·͋·ౖ͋Βͳ͍Ͱ
ੲVimҰຊͰྑ͍ͱࢥ͓ͬͯͨΕΕΔΜͩͱࢥͬͯͨ
ੲ˓̋ (͜͜ʹ͖ͳΤσΟλͷ໊લΛೖΕ·͠ΐ͏)ҰຊͰྑ͍ͱࢥ͓ͬͯͨΕΕΔΜͩͱࢥͬͯͨ
ےਸഈ(Կಉ͡ίʔυΛॻ͘ͱ֮͑Δͧ)ͷ࣌
Կॻ͘ඞཁ͋ΔίʔυΛॻ͘ඞཁແ͍ʂʂʂʂʂIDEʹॻ͔ͤΖʂʂ
IDE͕ਖ਼͍͠ίʔυʹಋ͍ͯ͘ΕΔͷ͕ॏཁ
ؒҧ͑ͨίʔυΛԿวԿวॻ͘ͷѱਖ਼͍͠ίʔυΛॻ͍ͨ΄͏͕ྗʹͳΔ
ຊ࣭Λֶͼ͍͢
ͱ͍͑·͋VimͰྑ͍ͱࢥ͍·͢
IDEͳ͍ݴޠͰେৎ(Padre͞Μ͓ݩؾͰ͔͢)
ਖ਼͍͠ίʔυΛॻ͘ࣄΛॿ͚ͯ͘ΔπʔϧΛ͏
੩తղੳ(Perl::Lint͞Μ͓ݩؾͰ͔͢)
ਖ਼͍͠ίʔυελΠϧʹಋ͍ͯ͘ΕΔgofmt, check style,code sniffer and etc
όάͷগͳ͍ίʔυʹಋ͍ͯ͘ΕΔgolint, findbugsand etc
͜ΕΒ྆ऀ݉Ͷ͍ͯΔ߹͋Δperl-critic, rubocop,js-[hl]int and etc
͍ͬͯ͘͏ͪʹਖ਼͍͠ (ਖ਼ͦ͏) ͳίʔυ͕Θ͔ͬͯ͘Δ, ॻ͚ΔΑ͏ʹͳͬͯ͘Δ
ΤσΟλʹΈࠐΜͰɼϦΞϧλΠϜతʹૉૣ͍ϑΟʔυόοΫΛಘΔͱͳ͓Α͍
ਖ਼͍͠ίʔυΛॻ͘ࣄΛॿ͚ͯ͘ΔπʔϧΛ࡞Δ͘͠ॲཧܥΛ࡞Δ
e.g.Perl࡞Λܾҙʮਂ͘ཧղ͍ͨ͠ͳΒ࡞Δʯͱ͍͏ ϞοτʔͷͱɺֶͿͳΒ࡞ֶͬͯͼ͍ͨʂͲ͏ͤͳΒɺεΫϦϓτݴޠք࠷ͷPerlΛ࡞Γ͍ͨPerlͱग़ձ͍ɺPerlΛ࡞Δ/@goccyhttp://www.slideshare.net/goccy/perlperl
ͦ͏͍͏͜ͱΛΔͱཧղ͕ਂ·Δͱ͍͏߹͕͋Γ·͢(Perl::Lint ͞Μ͓ݩؾͰ͔͢)
৽͍͠ݴޠΛΔͱ͖ʹඞͣॻ͘ͷΛܾΊΔ
ಉ͡ͷΛҧ͏ݴޠͰͨ͘͞Μॻ͍ͯΈΔ
ಉ͡ͷΛॻ͘͜ͱͰݴޠͷࠩҟ͕ݟ͘͢ͳΔಘखෆಘखΛ͔ͭΊΔΑ͏ʹͳΔ
ΰʔϧ໌֬ʹఆ·Δޭମݧʹܨ͕Δ
yes ίϚϯυΫϩʔϯͱ͔ख࢝Ίʹ؆୯ͰΓ͍͢
ͭ·Βͳ͍ʁ
Web Application Frameworkͱ͔ॻ͘ͱ໘ന͍
template engine ໘ന͍Ͱ͢Ͷ
ίϛϡχέʔγϣϯ͠·͠ΐ͏
̍ਓͰΔͱ٧·Δ
͍
·ͱΊ
ͱʹ͔͘ॻ͖·͠ΐ͏
Q?