Pro Yearly is on sale from $80 to $50! »

20190126_YAPC_TOKYO.pdf

 20190126_YAPC_TOKYO.pdf

58758490105b10d8cee797179bc0d1cc?s=128

Shigeki SUGAI

January 26, 2019
Tweet

Transcript

  1. ϨΨγʔ1FSMͱ 1FSMͷ͜Ε͔Β !UFDLM :"1$5PLZP

  2. :"1$

  3. 5PLZP

  4. ΊͰ͍ͨ✨✨✨

  5. ͯ͞

  6. ฏ੒ωοτ࢙ʢԾʣ օ༷͝ཡͳΒΕ·ͨ͠Ͱ͠ΐ͏͔ʁ

  7. ࠓ೔͸ ओʹ ͪΐͬͱҰੲͷ1FSMΛ ަ͑ͨ࿩Λ͠·͢ Πϯλʔωοτ࿝ਓձ޲͚ ίʔυ͸΄ͱΜͲग़ͳ͍ͷͰؾָʹௌ͍͍ͯͩ͘͞X

  8. ࣗݾ঺հ w 4IJHFLJ4VHBJʢ!UFDLMʣ w γʔαʔגࣜձࣾ w αʔόαΠυΤϯδχΞʢӡ༻ϝΠϯʣ w ΒʔΊΜ໺࿠ w

    *OHSFTTɺ1PLÉNPO(0
  9. ձࣾ঺հ w 4FFTBB#MPH w 4FFTBB8JLJ w #PPN"QQ(BNFT w ΄ͱΜͲ1FSMͰಈ͍ͯ·͢ʂʂʂ̍ w

    ͦͷଞ##։ൃɺεϚϗΞϓϦडୗ։ൃͳͲ΋
  10. ͓͠ͳ͕͖ w ࢲͱ1FSMͱͷग़ձ͍ w 8&#࣌୅ w Ψϥέʔ࣌୅ w 65'࣌୅ w

    $(*NPE@QFSM1MBDL w ϨΨγʔ؀ڥͱ1FSM w %PDLFSͷొ৔ w ͜Ε͔Βͷ1FSM w ςΩετॲཧݴޠͱͯ͠ͷ1FSM
  11. ࢲͱ1FSMͱͷग़ձ͍ w ֶੜ࣌୅ɺࣗ෼͸ϓϩάϥϛϯάͱ͸શ͘ແԑͷੜ׆Ͱ ͨ͠ w ຖ೔ͻͨ͢ΒDIʜΠϯλʔωοτΛ͢Δຖ೔ w ࠇྺ࢙ͷʮϗʔϜϖʔδʯΛ࡞ͬͯɺ,&/58&#Ͱआ Γ෺ͷ$(*εΫϦϓτʢ1FSMʣͷܝࣔ൘Λҙຯ΋Θ͔Β ͣઃஔͯ͠༡ΜͰ͍ͨ

  12. ࢲͱ1FSMͱͷग़ձ͍ w ͦͷޙɺ4*FSʹब৬͢Δ΋ɺ w ද޲͖͸+BWBͷΦʔϓϯܥͷҊ݅ w ͔͠͠೔ʑΤΫηϧ͍͡Γ΍ௐࠪ༻్ͳͲͰ͋ͬͯ ΋ΠϯλʔωοτͳͲ͸࢖͑ͳ͍؀ڥͩͬͨΓɺࣗ ෼ͷ޷͖ͳΠϯλʔωοτͱ͸ԕ͍࢓ࣄͷ೔ʑ

  13. ࢲͱ1FSMͱͷग़ձ͍ w ͦΜͳ࣌ɺझຯͰݸਓతʹϒϩά Λॻ͍͍ͯͨͱ͜Ζ͕ۮવ༑ਓͩͬ ͨͷ͕͖͔͚ͬͰ 1FSMͷ ϒϩά ͷձࣾʹߦ͘͜ͱʹ w ౰࣌͸ʮϒϩάʯͰ͸ͳ͘ɺ·ͩ

    ʮ΢Σϒϩάʯͱ͍͏ݺশͷํ͕ ϝδϟʔͩͬͨ
  14. ࢲͱ1FSMͱͷग़ձ͍ w ೖ͙ࣾͯ͢͠ʹ1FSMͷҊ ݅Λख఻͏͜ͱʹ w ͍͖ͳΓϥΫμຊΛ౉͞ ΕͯʮಡΜͲ͍ͯʯ w ༁΋෼͔ΒͣɺݟΑ͏ݟ ·ͶͰࣸܦ͍ͯ͘͠ʜ

  15. ೥౰࣌ͷ؀ڥ w ੈͷதͷ΢Σϒܥاۀͱ͍͑͹-".1େྲྀߦ͍ͯͨ͠

  16. ೥౰࣌ͷ؀ڥ w ฐࣾ΋యܕతͳ-".1؀ڥͰͨ͠ w -JOVY $FOU04  w "QBDIF w

    .Z42- w 1FSM w NPE@QFSM w 4MFEHF w )5.-5FNQMBUF5FNQMBUF5PPMLJU
  17. 8&#࣌୅ ʢ೥ࠒʙʣ

  18. 8&#શ੝ظ IUUQTKBXJLJQFEJBPSHXJLJ8FC@ΑΓ

  19. 8&#࣌୅ w ೥ʹʮ΢ΣϒਐԽ࿦ʯ͕ొ৔ w ϚογϡΞοϓ w "KBY w ϩϯάςʔϧ w

    ϢʔβࢀՃܕͷίϯςϯπ͕࿩୊ʹ
  20. 8&#࣌୅ͷ1FSM w ౰࣌͸8FCαʔϏεΛ1FSM͕େ͖ ͘ࢧ͍͑ͯͨ w ·ͩ8FC"1*΋௝͔ͬͨ࣌͠୅ w "KBYͷొ৔ʹΑΓ+40/͕ঃʑʹ࢖Θ Ε࢝ΊΔ

  21. 8&#࣌୅ͷ1FSM w NJZBHBXB͞Μͷ1MBHHFS͕Ұେ ϒʔϜʹ w ʮͦΕ1MBHHFSͰͰ͖ΔΑʯ w ʮͦΕ1MBʯ w ౰࣌͸DQBONͳͲ͸·ͩແ͘ɺૉ

    ͷ$1"/ͩͬͨͷͰ؀ڥߏஙͷ஌ ͕͓ࣝ΅͔ͭͳ͍ঢ়ଶͰ͸Πϯε τʔϧ͢Δ͚ͩͰ΋େมʜ
  22. 8&#࣌୅ͷ1FSM w 8FC4DSBQFS w ݸਓతʹͱͯ΋ࢗͬͨ͞Ϟ δϡʔϧ w ͦΕ·Ͱ͸-81΍888  ͳͲͰؤு͍ͬͯͨͷ͕ɺ

    91BUIͱ$44ηϨΫλ͚ͩͰ αΫοͱऔͬͯ͜ΕΔͷ͸ͱ ͯ΋ັྗతͰͨ͠✨
  23. Ψϥέʔ࣌୅

  24. Ψϥέʔ࣌୅ w 5XJUUFS͕೥ࠒ͔Βঃʑʹ೔ຊͰྲྀߦ͠͸͡ΊΔ w ΠϯλʔωοτΛ࢖ͬͨίϛϡχέʔγϣϯͱ͍͏΋ͷ ͕ɺ͋ΒΏΔ૚ʹ޿·ͬͨ w ͔͠͠ɺ౰࣌͸εϚϗͳͲͳ͘ɺΈΜͳΨϥέʔͰνΣο Ϋ͍ͯͨ͠

  25. Ψϥέʔ࣌୅ͷ։ൃ w $PPLJF +BWB4DSJQUͳͲ΋౰ॳ͸Ұ੾࢖͑ͣ w 3'$ҧ൓ͷΩϟϦΞϝʔϧΞυϨε w 44-5-4ରԠʹ͸ূ໌ॻͷറΓͳͲ͕͋ͬͨ w Ψϥέʔʹ࣮૷͞Ε͍ͯΔϑϧϒϥ΢βͷṖͷڍಈ

  26. Ψϥέʔ࣌୅ͷ։ൃ w )551.PCJMF"HFOUͰΩϟϦΞɺ୺຤Λ൑ผͯ͠ग़ྗ ಺༰ʢը૾αΠζʣΛม͑ͨΓɺ$PPLJFαϙʔτ͕͋Δ ͔Ͳ͏͔Λ൑ఆͨ͠ w ϖʔδ͋ͨΓͷ༰ྔ੍ݶʹΑΓɺϖʔδϯάαΠζ ͕ϢʔβʹΑͬͯେ͖͘มΘͬͯ͠·͍ͬͯͨ w $PPLJFΛαϙʔτ͍ͯ͠ͳ͍୺຤޲͚ʹ

    )5.-4UJDLZ2VFSZΛ࢖ͬͯηογϣϯ*%Λ63-ʹຒ ΊࠐΜͰηογϣϯҡ࣋ͤͨ͞
  27. Ψϥέʔ࣌୅ͷจࣈίʔυ w ͍͍ͩͨͷΨϥέʔ͸4IJGU@+*4ɺ͔͠͠-JOVY͸&6$+1 ͩͬͨͷͰɺ౰࣌͸จࣈίʔυॲཧ͕൥ࡶͩͬͨ w ιʔείʔυ&6$+1 w %#&6$+1 w Ϣʔβ΁ͷදࣔ4IJGU@+*4

    w ϝʔϧɿ+*4 *40+1
  28. ঃʑʹ65'ʹ ೥ࠒd

  29. 1FSM΋65'Խͷ೾͕ w Ψϥέʔ΋ঃʑʹ65'͕දࣔՄೳʹͳ͖ͬͯͨ w طʹ͜ͷ౰࣌-JOVY͸65'͕σϑΥϧτ w 65'ʹ؀ڥΛد͍ͤͯ͘ͱ൥Θ͍͠ॲཧ͔Β։์͞Ε ͯ޾ͤʹͳΕΔΒ͍͠ w +DPEFQN͔Β&ODPEFQN΁ͷస׵ظ

  30. 1FSM΋65'Խͷ೾͕ w ιʔείʔυ΍%#΋65'ʹҠߦ͢Δ͜ͱʹ w ࠷ॳ͸VTFVUGΛͻͨ͢ΒೖΕ͍ͯ͘࡞ۀ w ౰ॳ͸65'ϑϥάपลͷ஌ݟ΋๡͘͠ɺࢼߦࡨޡ͠ ͳ͕ΒԿ͔͢ΔຖʹจࣈԽ͚ͱͷઓ͍ w খखઌͰJT@VUGͯ͠FODPEF

    EFDPEFΛ܁Γฦ͢ͱ ͍͏ͱͯ΋ݫ͍͠ࣄʹʜ
  31. 1FSM΋65'Խͷ೾͕ ͜Ε͕શͯͩͱؾ͍ͮͨͷ͸͋Δఔ౓࡞ۀ͕ਐΜͰ͔Βͩͬͨ lೖΓޱͰEFDPEFͯ͠ɼ಺෦Ͱ͸͢΂ͯqBHHFEVUG Ͱѻ͍ɼग़ޱͰFODPEF͢Δɽ͜Ε͕͢΂ͯͰ͢ʂͱʹ͔ ͘͜ͷجຊํ਑Λ·΋͍ͬͯΕ͹޾ͤʹͳΕ·͢ɽz Perl Ͱ utf8 Խ͚ͨ͠ͱ͖ʹͲ͏ͨ͠Β͍͍͔ -

    TokuLog
  32. 14(*1MBDL࣌୅ ʢ೥ʙʣ

  33. 14(*1MBDL࣌୅ w ೥ʹ14(*1MBDL͕஀ੜ w 8FCϑϨʔϜϫʔΫͱ8FCαʔ όΛͭͳ͙ڞ௨ΠϯλϑΣʔε IUUQTHJIZPKQEFWTFSJBMQFSM IBDLFSTIVC

  34. 14(*1MBDL࣌୅ w ౰࣌͸NPE@QFSM͕ओྲྀɺ࠷ॳ͸ڪΔڪΔॻ͖׵͑ w $(*QNͱͷผΕ ͦͷޙ1FSMͰίΞϞδϡʔϧ͔ Β࡟আ  w ৄ͘͠͸!YUFUTVKJ͞ΜʹΑΔ<1FSM΢Σϒ։ൃͷதੈʙ

    $(*ͱ1MBDLͷؒʙ> IUUQTXXXTMJEFTIBSFOFU YUFUTVKJQFSMDHJQMBDL Λࢀর
  35. ϨΨγʔ؀ڥͱ1FSMʢ೥ʙʣ

  36. ϨΨγʔ؀ڥͱ1FSM w ੈͷத೉͍͠΋ͷͰɺ༷ʑͳཁҼʢύοέʔδ؅ཧ͕ෆ े෼ͩͬͨɺίϯύΠϧͷൿ఻ͷλϨʣͰ؆୯ʹ͸1FSM ͷόʔδϣϯɺ04ͷόʔδϣϯΛ্͛ΒΕͳ͍ͱ͍͏໰ ୊͕ग़͖ͯͨ w ࣮૷ͷมߋɺಈ࡞֬ೝͳͲͷ޻਺͕೔ʑͷαʔϏεӡ༻ Ͱ͸ͳ͔ͳ͔औΓͮΒ͘ͳ͖ͬͯͨ

  37. ϨΨγʔ؀ڥͱ1FSM w ʮৗʹ࠷৽Λ௥͏΂͖ʯͱݴ͏ͷ͸؆୯Ͱ౰ͨΓલͷࣄ ͕ͩ w ੈͷதʹ͸ͳ͔ͳ͔ͦ͏΋͍͔ͳ͍ঢ়گ΋ʜ w ݱঢ়໰୊ͳ͘ಈ͍ͯΔ͠ʜ w ͦΕ΍ͬͨͱͯ͠ɺϢʔβʹϝϦοτ͋Δͷʁ

    w ࠷ऴతʹ͸ɺޙճ͠ͷ࿈ଓʹʜ
  38. ϨΨγʔ؀ڥ w ༷ʑͳཧ༝͸͋ΔʹͤΑɺʮελʔτΞοϓͷ౰࣌ʯΛɺͦͷ ··์ஔ͓ͯ͘͠ͱ༷ʑͳ΄͜Ζͼ͕ग़͖ͯ·͢ w ࢓༷ॻͳͲ͸ແ͍ʜ w લ೚ऀ͕ډͳ͍ʜ w ੬ऑੑ͕ग़ͯ΋04Ξοϓσʔτ΋೉͍͠ʜ

    w ։ൃ؀ڥͱ঎༻؀ڥͷϞδϡʔϧͷόʔδϣϯ͕ҧͬͯΔʜ w ͜ͷϑΝΠϧͱͬ͘ʹ࢖ͬͯແ͍Μ͡Όʜʁ
  39. %PDLFSͷొ৔

  40. %PDLFS࣌୅ w ϨΨγʔͳ؀ڥΛ͍ͭ͘΋࢒ͯ͠Δͱɺݟͯͳ͍ϑϦΛ ͍ͯ͠Δ͏ͪʹڊେͳෛ࠴ʹͳ͍ͬͯͨʜ w ؾ͕ͭ͘ͱ։ൃ؀ڥΛ༻ҙ͢Δ͚ͩͰ΋ঃʑʹίετ͕ ͔͔ΔΑ͏ʹͳͬͯདྷͯ͠·͍ͬͯͨ w 04ɺϥΠϒϥϦ͕ݹ͍͜ͱʹΑΓ༷ʑͳฐ֐͕ൃੜ w

    ݹͷαʔϏε͸%PDLFSԽʹΑͬͯԆ໋͢Δ͜ͱʹ
  41. %PDLFS࣌୅ w NPE@QFSM࣌୅͔Β14(*Խ΋ग़དྷͳ͔ͬͨ࢒೦ͳαʔϏεΛ %PDLFSԽͰԆ໋ w ੲ͸ʮγεςϜ1FSMʯʹஸೡʹೖΕ͍ͯͨ$1"/Ϟδϡʔϧ΋ɺ ؾ͕ͭ͘ͱؾܰʹ$BSUPOόʔδϣϯݻఆՄೳʹͳ͍ͬͯͨ w ੲ͸ঊ͕୮೦ʹߏங͍ͯͨ͠؀ڥ΋ɺ୭Ͱ΋؀ڥΛ࡞Δ͜ͱ ͕Ͱ͖ΔΑ͏ʹ

    w %PDLFSԽʹΑΓɺ͜Ε·ͰͷηοτΞοϓํ๏͕7BSHSBOU Ҏ্ʹ؆୯ʹͳͬͨ
  42. %PDLFS࣌୅ w ैདྷ͸ڞ༻ͷ։ൃ7.ͳͲΛ༻͍ͯ։ൃΛ΍͖͕ͬͯͨɺ֤ ࣗઐ༻ͷ؀ڥΛαΫοͱ༻ҙग़དྷΔΑ͏ʹ w ڞ༻؀ڥͰى͖͍ͯͨτϥϒϧ΋ͳ͘ͳͬͨ w ։ൃεϐʔυ͕͕͋Δ͜ͱͰɺϨΨγʔ؀ڥͷߋ৽࡞ۀ΋ɺ νʔϜͰऔΓ૊Ή͜ͱ͕Ͱ͖ΔΑ͏ʹ

  43. %PDLFSͰ1FSMΛখ͘͞࢖͏ w Θ͟Θ͟1FSMͰ΍Βͳͯ͘΋ɺͱ͍͏ͷ͸͋ΕͲɺ΍ͬ ͺΓ1FSMΛ࢖͍͍ͨ w ͦΕ͕%PDLFSʹΑͬͯ͞Βʹݱ࣮తʹͳͬͨ

  44. %PDLFSͰ1FSMΛখ͘͞࢖͏ w %PDLFSԽʹΑΓ؀ڥΛ׬શʹ෼཭ग़དྷΔΑ͏ʹͳͬͨͨ Ίͪΐͬͱͨ͠8FCΞϓϦͳͲΛͲ͜Ͱ΋࣋ͪӡ΂ΔΑ ͏ʹ w 8FCIPPLΛड͚Δͪΐͬͱͨ͠$IBUCPU w *'555Ͱ͸ख͕ಧ͔ͳ͍Α͏ͳݸਓతͳεΫϨΠϐϯά w

    ࢖͍ࣺͯʹ͍ۙΑ͏ͳ໨తͷ8FCΞϓϦέʔγϣϯͱ͔ Λྔ࢈ͯ͠΋؀ڥΛԚ͞ͳ͘ͳͬͨ
  45. ͦͯ͠ɺ͜Ε͔Β

  46. ੲͱൺ΂Δͱʜ w Ψϥέʔ΋ɺεϚϗͷ୆಄ʹΑͬͯߟྀ͠ͳͯ͘΋ྑ͘ ͳ͖ͬͯͨ w 14(*ԽʹΑΓಛఆͷ8&#αʔόʹϩοΫΠϯ͞ΕΔ͜ ͱ΋ͳ͘ͳ͖ͬͯͨ w DQBON $BSUPOͷొ৔ʹΑͬͯόʔδϣϯΞοϓ΋༰қ

    ʹ w %PDLFSԽʹΑΓݹ͍04͔Β΋୤٫Ͱ͖ΔΑ͏ʹ
  47. ࢲ͕ߟ͑Δ͜Ε͔Βͷ 1FSMʹٻΊΒΕΔ͜ͱ

  48. ͜Ε͔Βͷ1FSM w ೥͘Β͍લͱ͸8&#։ൃΛऔΓר͘ঢ়گ΋มΘΓɺ ޙ͔Βग़དྷͨݴޠ΋ଓʑͱ૿͖͍͑ͯͯ·͢ɻ w ޙൃͷݴޠ͕ྑ͍ͱ͜ΖΛ͍࣋ͬͯΔͷ͸౰વ w ͜Ε͔Β৽نͰαʔϏεΛ࡞Δࡍʹ1FSM͕બ͹ΕΔࣄ͸ ࣮֬ʹগͳ͘ͳ͖͍ͬͯͯΔҹ৅͕͋Γ·͢ɻ

  49. ͜Ε͔Βͷ1FSM w ௕͘ଓ͍ͨαʔϏε͸ɺͲ͏ͯ͠΋΄͜Ζͼ͕ग़ͯ͘Δ w ࠓޙ΋αʔϏε͕ଓ͘ݶΓอक͠ଓ͚͍ͯ͘ࣄ͸ඞཁ w ރΕٕͨज़ʢ1FSMʣͰ͋ͬͯ΋ɺదࡐదॴʹ༻͍Ε͹ɺ ࢖͍ଓ͚Δ͜ͱ͕Ͱ͖Δ w աڈͱݱࡏɺະདྷ͸ܨ͕͍ͬͯΔ

  50. ͜Ε͔Βͷ1FSM w 1FSMʹ͸ҎԼͷϝϦοτ͕͋Γ·͢ɻ w ๲େͳ$1"/ࢿ࢈ w ڧྗͳޙํޓ׵ੑ w ଞͷݴޠͱḮ৭ͷͳ͍8"'΍ϥΠϒϥϦ w

    ࠷ߴͷςΩετॲཧ؀ڥ w :"1$ɺ஍Ҭ1.ͳͲͷૉ੖Β͍͠ίϛϡχςΟ
  51. 1FSMͷݪ఺ ςΩετॲཧݴޠͱͯ͠ͷ1FSM

  52. ςΩετॲཧݴޠͱͯ͠ͷ1FSM w ڈ೥ͷ࿡ຊ໦QNʹͯ!UPLVIJSPN͞ΜʹΑΔൃද͕͋ Γ·ͨ͠ɻ w 1FSM͸ɺςΩετॲཧ࣌୅$(*࣌୅NPE@QFSM࣌ ୅1MBDL࣌୅Λܦͯɺ·ͨςΩετॲཧͷ࣌୅ʹճ ؼ͍ͯ͠ΔɺͱకΊΒΕ͍ͯ·ͨ͠ɻ w ʜ͕ͦΕ͸͜ͷޙͷΩʔϊʔτͰ΋ฉ͚Δ͔΋͠Ε·ͤ

    ΜͷͰɺৄ͘͠͸ͦͪΒʹৡΖ͏ͱࢥ͍·͢
  53. ςΩετॲཧݴޠͱͯ͠ͷ1FSM w 1FSM͸΋ͱ΋ͱैདྷͷBXL TFEͱฒͿς ΩετॲཧݴޠͷͨΊͷݴޠ͔Β࢝·ͬͨ w ϫϯϥΠφʔͳͲʹ୅ද͞ΕΔΑ͏ʹɺ͜ Ε͔Β΋ςΩετΛѻ͏Α͏ͳॲཧ͸ͣͬ ͱ࢒͍ͬͯ͘ w

    6/*9ͷ఩ֶ͕೥Ҏ্ܦաͯ͠΋ະͩʹ ࢖͍ଓ͚ΒΕΔΑ͏ʹɺ1FSM΋͜ͷઌ΋ς ΩετॲཧͷੈքͰ͸ͣͬͱ࢖͍ଓ͚ΒΕ Δʢ΋ͪΖΜ8FC։ൃͷੈքͰ΋ʣ
  54. ςΩετॲཧݴޠͱͯ͠ͷ1FSM w ॊೈͰɺ୹͘ॻ͘͜ͱ͕Ͱ͖ɺԿΑΓૣ͘ॻ͚Δ w ޙํޓ׵ੑ͕͋Γɺ೥Ҏ্҆ఆͯ͠Քಇ͢Δ w ڧྗͳਖ਼نදݱ w ଟ͘ͷ؀ڥͰಈ࡞ w

    ඇϓϩάϥϚͷํͰ΋ɺ೔༵େ޻ͷΑ͏ͳझຯతͳͱ͜ΖͰ΋ w ීஈ͸ଞͷݴޠ͕ϝΠϯͰ͋ͬͯ΋ɺBXL TFEͷΑ͏ʹҰͭ ͷಓ۩ͱͯ͠࢖͍͚ͬͯ͹͍͍
  55. ͜Ε͔Β΋1FSMΛָ͠ΜͰ ߦ͖·͠ΐ͏ʂ

  56. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠☺