Slide 1

Slide 1 text

ආ͚ΒΕͳ͍I/O଴ͪʹରॲ͢Δ: Rails ΞϓϦʹ͓͚ΔSSEͱasync gemͷ׆༻ Tackling Inevitable I/O Latency in Rails Apps with SSE and the async gem

Slide 2

Slide 2 text

 !NP[OJPO !NP[OJPO 4NBSU#BOL *OD 4PGUXBSF&OHJOFFS 5BJLJ,BXBLBNJ !NP[OJPO

Slide 3

Slide 3 text

X

Slide 4

Slide 4 text

44&TFSWFSTFOUFWFOUT 

Slide 5

Slide 5 text

 44&ͱ͸ Ұ౓ΫϥΠΞϯταʔόʔؒͰ )551ͷ44&ίωΫγϣϯΛுΔͱɺ αʔόʔ͔ΒΫϥΠΞϯτʹରͯ͠ ܧଓతʹσʔλΛૹग़Ͱ͖Δ࢓૊Έ ͬ͘͟Γݴ͏ͱ ఻౷తʹ͸ɺ΢Σϒϖʔδ͕৽ͨͳσʔλΛड͚औΔͨΊʹɺ αʔόʔʹϦΫΤετΛૹ৴͠ͳ͚Ε͹ͳΓ·ͤΜɻ͢ͳΘͪɺ ϖʔδ͕αʔόʔ͔ΒσʔλΛཁٻ͠·͢ɻαʔόʔૹ৴Πϕϯ τʹΑͬͯɺαʔόʔ͕΢ΣϒϖʔδʹϝοηʔδΛϓογϡૹ ৴͢Δ͜ͱʹΑΓɺαʔόʔ͔Β΢Σϒϖʔδ΁৽ͨͳσʔλΛ ͍ͭͰ΋ૹ৴͢Δ͜ͱ͕Ͱ͖·͢ɻ IUUQTEFWFMPQFSNP[JMMBPSHKBEPDT8FC"1*4FSWFS TFOU@FWFOUT z ௨ৗͷ)551 44&

Slide 6

Slide 6 text

 ͲͷΑ͏ͳঢ়گͰ44&͸༗ޮ͔ ‣χϡʔεͷΞοϓσʔτ ଎ใ  ‣ϩάͷετϦʔϛϯάදࣔ ‣ϝοηʔδϯάɾνϟοτ ‣,P3ͷαϒεΫϦʔϯ̈  ‣௕͔͔࣌ؒΔॲཧͷʜ ‣ਐḿදࣔ ‣׬ྃ௨஌ ྫ ˢ$IBU(15΋44&Ͱಈ࡞͍ͯ͠Δͱ͍͏ྫ ̈IUUQTHJUIVCDPNLBJHJPOSBJMTTIJSBUBLJ

Slide 7

Slide 7 text

 ͲͷΑ͏ͳঢ়گͰ44&͸༗ޮ͔ ྫ ˢ$IBU(15΋44&Ͱಈ࡞͍ͯ͠Δͱ͍͏ྫ ‣χϡʔεͷΞοϓσʔτ ଎ใ  ‣ϩάͷετϦʔϛϯάදࣔ ‣ϝοηʔδϯάɾνϟοτ ‣,P3ͷαϒεΫϦʔϯ̈  ‣௕͔͔࣌ؒΔॲཧͷʜ ‣ਐḿදࣔ ‣׬ྃ௨஌ ̈IUUQTHJUIVCDPNLBJHJPOSBJMTTIJSBUBLJ

Slide 8

Slide 8 text

 44&˰Ϣʔβʔମݧ޲্ࢪࡦͷҰछ

Slide 9

Slide 9 text

 Ϣʔβʔମݧ޲্ࢪࡦͷҰछ ࡢࠓͷΞϓϦͩͱΑ͋͘Δ ‣"1*31$ݺͼग़͠ ‣"* --. ਪ࿦ ӈਤ͸ϫϯόϯΫΞϓϦͷʮ"*εΫγϣಡΈऔΓػೳʯ ྫ௕͍଴ͪ࣌ؒ FH *0XBJU ͕ൃੜ͢Δॲཧͷਐḿ εΫγϣը૾Λ0$3ͯ͠--.͕৘ใநग़͢Δػೳ

Slide 10

Slide 10 text

 Ϣʔβʔମݧ޲্ࢪࡦͷҰछ ࡢࠓͷΞϓϦͩͱΑ͋͘Δ ‣"1*31$ݺͼग़͠ ‣"* --. ਪ࿦ ӈਤ͸ϫϯόϯΫΞϓϦͷʮ"*εΫγϣಡΈऔΓػೳʯ ྫ௕͍଴ͪ࣌ؒ FH *0XBJU ͕ൃੜ͢Δॲཧͷਐḿ εΫγϣը૾Λ0$3ͯ͠--.͕৘ใநग़͢Δػೳ ͜͜ʹ͕͔͔࣌ؒΔ

Slide 11

Slide 11 text

 Ϣʔβʔମݧ޲্ࢪࡦͷҰछ ࡢࠓͷΞϓϦͩͱΑ͋͘Δ ‣"1*31$ݺͼग़͠ ‣"* --. ਪ࿦ ӈਤ͸ϫϯόϯΫΞϓϦͷʮ"*εΫγϣಡΈऔΓػೳʯ ྫ௕͍଴ͪ࣌ؒ FH *0XBJU ͕ൃੜ͢Δॲཧͷਐḿ εΫγϣը૾Λ0$3ͯ͠--.͕৘ใநग़͢Δػೳ ͜ͷҰ࿈ͷॲཧΛ44&ʹͯ͠ਐḿΛදࣔ͢Δ

Slide 12

Slide 12 text

 Ϣʔβʔମݧ޲্ࢪࡦͷҰछ ‣͜ͷΑ͏ͳʮ଴ͪʯʹؔ͢Δ࠷దԽͷ༨஍͸ݶఆ͞Ε͍ͯΔ ‣ʮݺग़ઌʯͷੑೳΛྑ͘͢Δ͜ͱ͸ࠔ೉ͳ৔߹͕ଟ͍ ‣͔͠͠Ϣʔβʔମݧ͸ྑ͍ͨ͘͠ ‣44&͸ͦͷͨΊͷબ୒ࢶͷͻͱͭʹͳΓ͑Δ ྫ௕͍଴ͪ࣌ؒ FH *0XBJU ͕ൃੜ͢Δॲཧͷਐḿ

Slide 13

Slide 13 text

3BJMTͰ44&3FTQPOTFΛฦ٫͢Δʹ͸ʁ 

Slide 14

Slide 14 text

 3BJMTͰ44&3FTQPOTFΛฦ٫͢Δํ๏ ग़లIUUQTBQJSVCZPOSBJMTPSHDMBTTFT"DUJPO$POUSPMMFS-JWF44&IUNM &YBNQMF

Slide 15

Slide 15 text

؆୯Ͱ͢Ͷ

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

 എޙͰ͸ͲͷΑ͏ͳ͜ͱ͕ى͍ͬͯ͜Δͷ͔

Slide 18

Slide 18 text

 44&࢓༷͜ͱ͸͡Ί ҎԼ͕ඪ४࢓༷👇 IUUQTIUNMTQFDXIBUXHPSHNVMUJQBHFTFSWFSTFOUFWFOUTIUNM

Slide 19

Slide 19 text

 44&࢓༷͜ͱ͸͡Ί ‣جຊతʹ)551Λϕʔεͱͨ͠zϝοηʔδϯάϑΥʔϚοτz ‣8FC4PDLFUͱൺֱͯ͠γϯϓϧͳ࢓૊Έʹͳ͍ͬͯΔ ‣8FC4PDLFUʹΑΔ΋Ζ΋Ζͷ՝୊͕)551Λϕʔεʹ͢Δ͜ͱͰ ղܾ͞Ε͍ͯΔ ‣Ұํ44&͸αʔόʔ͔Βσʔλ͕Ұํతʹϓογϡ͞Εͯ͘Δ࢓૊Έ 8FC4PDLFUͷΑ͏ͳίωΫγϣϯͰͷ૒ํ޲ੑ͸ແ͍

Slide 20

Slide 20 text

 44&ϓϩτίϧ͜ͱ͸͡Ί

Slide 21

Slide 21 text

 44&઀ଓཱ֬ϑΣΠζ

Slide 22

Slide 22 text

 44&઀ଓཱ֬ϑΣΠζ ‣$MJFOU44&ͷΤϯυϙΠϯτ΁)551 ϦΫΤετ͢Δ ‣$MJFOUϥΠϒϥϦ͸಺෦తʹ44&઀ଓ ͷεςʔτ؅ཧΛߦ͏ ‣4FSWFS௨ৗͷϨεϙϯεͱͯ͠ AUFYUFWFOUTUSFBNAΛฦ٫ͯ͠ 44&઀ଓΛཱ֬ < HTTP/1.1 200 OK < cache-control : no-store < content-type : text/event- stream < x-accel-buffering : no < Transfer-Encoding : chunked

Slide 23

Slide 23 text

 ΠϕϯτετϦʔϜॲཧ

Slide 24

Slide 24 text

 ΠϕϯτετϦʔϜॲཧ ‣ετϦʔϜͷจࣈྻ͸65' ‣ߦࢦ޲ͷϝοηʔδϑΥʔϚοτ ‣ۭߦ۠੾Γ AaOAPSAaSaOA data : first event id : 1 data : second event id data : third event &YBNQMF

Slide 25

Slide 25 text

 ΠϕϯτετϦʔϜॲཧ ߦͷछผ͸ҎԼͷ௨Γ ߦ͕ۭന ۭനߦ  ‣σϦϛλͱͯ͠ѻ͍ɺΠϕϯτΛॲཧ͢Δ ߦ͕ίϩϯ͔Β࢝·͍ͬͯΔ ‣ແࢹ͞ΕΔ ϋʔτϏʔτʹศར  ߦʹίϩϯؚ͕·Ε͍ͯΔ৔߹ ‣ίϩϯʹΑΔ,FZ 'JFME ͱ7BMVFͱͯ͠ ѻ͏ ޙड़  ͦΕҎ֎ ‣ߦશମΛ'JFMEͱۭͯ͠จࣈΛ7BMVFͱ͠ ͯѻ͏

Slide 26

Slide 26 text

 ΠϕϯτετϦʔϜॲཧ ‣ڐՄ͞ΕΔ'JFME͸ҎԼ ଞ͸ແࢹ͞ΕΔ  ‣FWFOU೚ҙͷΠϕϯτλΠϓ ‣EBUB೚ҙͷσʔλ ‣JEҰҙͳ*% ‣A-BTU&WFOU*%AͰ࠶઀ଓ࣌ͷ ࠶։ϙΠϯτͱͯ͠࢖ΘΕΔ ‣SFUSZ࠶઀ଓ࣌ؒ ϛϦඵ  ͦͷଞͷࡉ͔ͳϧʔϧ͸࢓༷Λࢀর͞Ε͍ͨ

Slide 27

Slide 27 text

 ΠϕϯτετϦʔϜॲཧ ྫ : test stream data : first event id : 1 data : second event id data : third event ίϩϯ͔Β͸͡·Δϝοηʔδ͸ແࢹ͞ΕΔ ͜ͷϒϩοΫͰ͸Կ΋ൃੜ͠ͳ͍

Slide 28

Slide 28 text

 ΠϕϯτετϦʔϜॲཧ ྫ : test stream data : first event id : 1 data : second event id data : third event EBUB͕ fi STUFWFOU JE͕ ͱͯ͠ϒϩοΫ͕ॲཧ͞ΕΔ

Slide 29

Slide 29 text

 ΠϕϯτετϦʔϜॲཧ ྫ : test stream data : first event id : 1 data : second event id data : third event EBUB͕TFDPOEFWFOU JE͕ۭจࣈྻ VOTFU  ͱͯ͠ϒϩοΫ͕ॲཧ͞ΕΔ

Slide 30

Slide 30 text

 ΠϕϯτετϦʔϜॲཧ ྫ : test stream data : first event id : 1 data : second event id data : third event EBUB͕UIJSEFWFOU ͱͯ͠ΠϕϯτϒϩοΫ͕ॲཧ͞ΕΔ ۭߦͰऴ୺͞Ε͍ͯͳ͍ͱΠϕϯτ͕ൃՐ͠ͳ͍

Slide 31

Slide 31 text

 ΠϕϯτετϦʔϜॲཧ ‣ΫϥΠΞϯτ͸ۭߦΛσϦϛλͱͨ͠ ΠϕϯτϒϩοΫΛͭͷ୯Ґͱͯ͠ ॲཧ͢Δ ‣EBUB͕ෳ਺͋Δ৔߹͸վߦAaOAͰ ࿈݁͞Εͯ౉͞ΕΔ data : uno data : dos data : tres

Slide 32

Slide 32 text

 ΠϕϯτετϦʔϜॲཧ ‣ΫϥΠΞϯτ͸ۭߦΛσϦϛλͱͨ͠ ΠϕϯτϒϩοΫΛͭͷ୯Ґͱͯ͠ ॲཧ͢Δ ‣EBUB͕ෳ਺͋Δ৔߹͸վߦAaOAͰ ࿈݁͞Εͯ౉͞ΕΔ data : uno data : dos data : tres ͜͜ʹ͸ϒϩοΫ಺ͷσʔλ͕AVOPaOEPTaOUSFTAͱͯ͠དྷΔ

Slide 33

Slide 33 text

 ΠϕϯτετϦʔϜॲཧ ‣ΫϥΠΞϯτ͸ஞ࣍དྷΔFWFOU EBUB JE Λॲཧͯ͠ॴ๬ͷػೳΛ࣮ݱ͢Δ ‣࣮༻ྫEBUBʹ+40/͕ೖͬͯ͘ΔͷͰ ΫϥΠΞϯτ͸ͦΕΛ౎౓ϨϯμϦϯά ͢Δ ‣SFUSZ͸جຊతʹ͸ΫϥΠΞϯτϥΠϒϥ Ϧ͕έΞ͢Δ

Slide 34

Slide 34 text

 ઀ଓऴྃॲཧ

Slide 35

Slide 35 text

 ઀ଓऴྃॲཧ ‣ΫϥΠΞϯτ͔Β໌ࣔతʹ44&઀ଓΛ DMPTF͢Δ ‣ྫAFWFOU4PVSDFDMPTF A ‣αʔόʔ͔Β44&઀ଓΛDMPTF͢Δ ‣ྫATTFDMPTFA ‣ద֬ʹDMPTF͞Εͳ͔ͬͨ৔߹͸ ΫϥΠΞϯτ͔Β࠶઀ଓ͕ߦͳΘΕΔ

Slide 36

Slide 36 text

 جຊతʹΫϥΠΞϯτϥΠϒϥϦ͸͜ͷ΁ΜΛΑ͠ͳʹ΍ͬͯ͘ΕΔ ‣ϒϥ΢βʹ͸΋͏࣮૷͕ଘࡏ͍ͯ͠Δ ‣A&WFOU4PVSDFAΠϯλʔϑΣΠε ‣/BUJWF"QQ༻ͷΫϥΠΞϯτ΋ෳ਺͋Δ ग़లIUUQTEFWFMPQFSNP[JMMBPSHFO64EPDT8FC"1*&WFOU4PVSDF

Slide 37

Slide 37 text

44&ͱඇಉظॲཧ͸૬ੑ͕ྑͦ͞͏ʹࢥ͍·ͤΜ͔ 

Slide 38

Slide 38 text

 44&ͱඇಉظॲཧͷ૬ੑ αϯϓϧγφϦΦ αʔόʔଆͰඇಉظͰॏ͍ॲཧΛฒྻԽ͠ɺͦͷਐḿΛΫϥΠΞϯτʹ஌ΒͤΔ ϦΫΤετ 44&઀ଓཱ֬ ฒྻॲཧ ྫ--.ਪ࿦ ... ਐḿใࠂ ׬ྃ௨஌XDMPTF $MJFOU 4FSWFS --.

Slide 39

Slide 39 text

 44&ͱඇಉظॲཧͷ૬ੑ αϯϓϧγφϦΦ αʔόʔଆͰඇಉظͰॏ͍ॲཧΛฒྻԽ͠ɺͦͷਐḿΛΫϥΠΞϯτʹ஌ΒͤΔ 👉*0଴ͪͷΑ͏ͳ࣌ؒͷ͔͔Δॲཧʹ͸Ұൠʹඇಉظॲཧ͕༗ޮ 44&ʹΑΔද໘తͳମݧͷվળʹՃ͑ ඇಉظॲཧʹΑΔຊ࣭తͳύϑΥʔϚϯεͷվળ͕ݟࠐΊΔ ϦΫΤετ 44&઀ଓཱ֬ ฒྻॲཧ ྫ--.ਪ࿦ ... ਐḿใࠂ ׬ྃ௨஌XDMPTF $MJFOU 4FSWFS --.

Slide 40

Slide 40 text

 BTZODHFN

Slide 41

Slide 41 text

 BTZODHFN TPDLFUSZBTZOD  "TZODJTBDPNQPTBCMFBTZODISPOPVT*0 GSBNFXPSLGPS3VCZCBTFEPO JPFWFOU 'JCFSΛϕʔεͱͨ͠ΠϕϯτυϦϒϯ*0Λఏڙ  ݸਓతʹ͸७ਮʹॻ͖ຯ͕ྑ͘ɺ޷Έ z

Slide 42

Slide 42 text

 BTZODHFN 5ISFBE ‣(7-ͷӨڹΛड͚Δ͕ɺ*0଴ͪͳͲ͸ฒྻԽͰ͖Δ ‣ϝϞϦϦιʔεΛ৯͏େྔʹTQBXOͰ͖ͳ͍ 'JCFS ‣ڠௐత ΠϕϯτϧʔϓͱϊϯϒϩοΩϯά*0  ‣ϝϞϦϦιʔεʹର͢Δ༏Ґੑ͕͋Δ ‣$16ό΢ϯυͳॲཧ͸ฒྻԽͰ͖ͳ͍ ‣ϒϩοΩϯάॲཧ͕ೖΔͱશମΛϒϩοΫ͢Δ ‣ؔ࿈͢Δίϯϙʔωϯτ͕ඇಉظ*0ɾ'JCFS BXBSFͰ͋Δඞཁ͕͋Δ

Slide 43

Slide 43 text

 BTZODHFN 5ISFBE ‣(7-ͷӨڹΛड͚Δ͕ɺ*0଴ͪͳͲ͸ฒྻԽͰ͖Δ ‣ϝϞϦϦιʔεΛ৯͏େྔʹTQBXOͰ͖ͳ͍ 'JCFS ‣ڠௐత ΠϕϯτϧʔϓͱϊϯϒϩοΩϯά*0  ‣ϝϞϦϦιʔεʹର͢Δ༏Ґੑ͕͋Δ ‣$16ό΢ϯυͳॲཧ͸ฒྻԽͰ͖ͳ͍ ‣ϒϩοΩϯάॲཧ͕ೖΔͱશମΛϒϩοΫ͢Δ ‣ؔ࿈͢Δίϯϙʔωϯτ͕ඇಉظ*0ɾ'JCFS BXBSFͰ͋Δඞཁ͕͋Δ *0଴ͪաଟͳ λΠϓͷΞϓϦ Ͱ͸5ISFBEΑΓ εέʔϧ͢Δ Մೳੑ͕ߴ͍

Slide 44

Slide 44 text

44&ͱ૊Έ߹Θ࣮ͤͨ૷ύλʔϯ

Slide 45

Slide 45 text

 44&ͱ૊Έ߹Θ࣮ͤͨ૷ύλʔϯ "TZOD2VFVFͱͷ૬ੑ͕ྑͦ͞͏ ‣ATUBSUAͰλεΫΛฒྻॲཧ ‣׬ྃͨ͠Β44&ͷϝοηʔδΛ "TZOD2VFVFʹFORVFVF ‣AOFYUAͰ44&ϝοηʔδΛ RVFVF͔Βऔಘ

Slide 46

Slide 46 text

 44&ͱ૊Έ߹Θ࣮ͤͨ૷ύλʔϯ ͜Μͳײ͡ͰΠςϨʔλతʹ ѻ͏ͱ͍͏ύλʔϯ

Slide 47

Slide 47 text

 "TZODλεΫͷಉ࣮࣌ߦ਺੍ݶ #BSSJFSͱ4FNBQIPSFΛ ૊Έ߹ΘͤΔͱྑ͍ ‣4FNBQIPSFʹ࠷େฒྻ࣮ߦ਺ͱ #BSSJFSΛ༩͑Δ ‣A4FNBQIPSFBTZODAͷதͰ ॲཧ͢Δͱ࣮ߦ਺Λ੍ݶͰ͖Δ ‣A#BSSJFSXBJUAͰ׬ྃ଴ͪ  XFMMEPDVNFOUFEͰ࠷ߴ ‣ IUUQTTPDLFUSZHJUIVCJPBTZODHVJEFTUBTLTJOEFYIUNMDPNCJOJOHBCBSSJFSXJUIBTFNBQIPSF ‣ IUUQTTPDLFUSZHJUIVCJPBTZODHVJEFTCFTUQSBDUJDFTJOEFYIUNMVTFBUPQMFWFMTZODUPEFOPUFUIFSPPUPGZPVSQSPHSBN

Slide 48

Slide 48 text

 "TZODλεΫͷλΠϜΞ΢τઃఆ A5BTLXJUI@UJNFPVUAΛ࢖͏ͱྑ͍ ‣λΠϜΞ΢τ͠͏ΔॲཧΛ ίʔυϒϩοΫͰ༩͑Δ ‣λΠϜΞ΢τͨ͠Β A"TZOD5JNFPVU&SSPSA্͕͕Δ  XFMMEPDVNFOUFEͰ࠷ߴ ‣ IUUQTTPDLFUSZHJUIVCJPBTZODHVJEFTUBTLTJOEFYIUNMUJNFPVUT ‣ IUUQTTPDLFUSZHJUIVCJPBTZODHVJEFTCFTUQSBDUJDFTJOEFYIUNMVTFBUPQMFWFMTZODUPEFOPUFUIFSPPUPGZPVSQSPHSBN

Slide 49

Slide 49 text

 44&ͱ૊Έ߹Θ࣮ͤͨ૷ύλʔϯ ΠϨΪϡϥʔ BTZODUBTL಺͔Β"DUJWF3FDPSE NZTRM ͷίωΫγϣϯΛCPSSPX͢Δͱɺ ಈ࡞தͷ5ISFBE಺ͷίωΫγϣϯΛआ༻͢Δ͜ͱʹͳΔɻ आΓ͖ͯͨ ୯Ұ5ISFBEʹׂΓ౰ͯΒΕͨ ίωΫγϣϯΛ'JCFSԣஅͰ ࢖͍ճ͢ͱϦιʔεڝ߹͕ൃੜͯ͠Ϋϥογϡͯ͠͠·͏ɻ ্هͷΑ͏ʹεϨουϓʔϧͱίωΫγϣϯϓʔϧΛซ༻͠ɺ TQBXO͞Εͨ5ISFBE͕%#ίωΫγϣϯΛద੾ʹऔಘ͢ΔXSBQQFSΛ࢖͏͜ͱͰɺ BTZODUBTL಺͔Β%#Λฒߦʹ৮ΕΔΑ͏ͳղܾΛࢼΈͨɻ ଞʹԿ͔ྑ͍ΞΠσΞ͕͋Ε͹஌Γ͍ͨʜʜ 5ISFBEΛ࡞Δͱ'JCFSͷྑ͕͞ݮΔͷͰ

Slide 50

Slide 50 text

 BTZODʹ͸44&ͱ૊Έ߹Θͤͯ࢖͏ͨΊͷ ػೳ͕શ෦ἧ͍ͬͯͯ͢͹Β͍͠

Slide 51

Slide 51 text

͢΂͕ͯղܾ ΊͰͨ͠ΊͰͨ͠

Slide 52

Slide 52 text

ͱࢥ͍͖΍࣮ಈ·Ͱ͸༷ʑͳϒϩοΧʔ͕͋Δ  ͋ͬͨ 

Slide 53

Slide 53 text

 ϒϩοΧʔ৭ʑϨεϙϯεϔομͷௐ੔ ‣ඪ४࢓༷Ͱ͸A$BDIF$POUSPMOPTUPSFAΛ෇͚Αɺͱ͍͏;͏ʹॻ͍ͯ͋Δ ‣.%/ͷυΩϡϝϯτͰ͸A$BDIF$POUSPMOPDBDIFAΛ෇͚͍ͯΔ ‣Ͳͬͪ΍ͶΜ OPDBDIFͰྑͦ͞͏͕ͩʜʜ  ‣3FBDUͷϓϩΩγΛ௨͢ͱ44& 4FSWFSTFOUFWFOUT ͷϨεϙϯεΛड͚औΕͳ͍ 3FBDU2JJUBΛࢀߟʹ͢ΔͱAOPUSBOTGPSNAΛ෇͚ͨ΄͏͕ྑͦ͞͏ʹݟ͑Δ ‣ͳͷͰA$BDIF$POUSPMOPDBDIF OPUSBOTGPSNAΛ෇༩͢Δ͜ͱͰಈ͔͍ͯ͠Δ

Slide 54

Slide 54 text

 ϒϩοΧʔ৭ʑϨεϙϯεϔομͷௐ੔ ‣ϦόʔεϓϩΩγͷόοϑΝϦϯάΛ཈੍͢ΔͨΊʹA9"DDFM#V ff FSJOHOPA΋ ઃఆ͓ͯ͘͠ ‣͜ͷ͋ͨΓͷௐ੔͸ϦόʔεϓϩΩγͷઃఆͱಉظΛऔΔඞཁ͋Γ ‣࣮ྫ )5510, DBDIFDPOUSPMOPDBDIF OPUSBOTGPSN DPOUFOUUZQFUFYUFWFOUTUSFBN YBDDFMCV ff FSJOHOP 5SBOTGFS&ODPEJOHDIVOLFE

Slide 55

Slide 55 text

 ϒϩοΧʔ৭ʑϦόʔεϓϩΩγͷઃఆ ྫOHJOYDPOG ‣MPDBUJPOʹӈͷΑ͏ͳઃఆΛ෇༩͢Δ ‣લܝͷϨεϙϯεϔομͱॏෳ͢ΔՕॴ͸͋Δ͕ʜʜ ‣ϓϩτίϧతͳಛੑ͔Β44&ʹ͍ͭͯ͸)551ͷόʔδϣϯΛʹݻఆͯ͠ ͓͘΄͏͕҆શ ‣ϦόʔεϓϩΩγ͕ଟஈͰ͋ͬͨ৔߹͸ܦ࿏͢΂ͯͷઃఆΛ͢Δඞཁ͕͋Δ ‣Ұ෦ͷϦόʔεϓϩΩγͰઃఆ͕࿙Ε͍ͯͯಈ͔ͳ͔ͬͨܦݧ͋Γ ഊ ༨ஊϦόʔεϓϩΩεͷઃఆ౳ʹΑΓແ௨৴ঢ়ଶ͕ଓ͘ͱίωΫγϣϯ͕੾ΒΕΔ͜ͱ͕͋ΔͷͰ44&্ͰϋʔτϏʔτΛૹΔඞཁ͕͋Δ৔߹͕͋Δ

Slide 56

Slide 56 text

 ϒϩοΧʔ৭ʑศརͳ"DUJPO$POUSPMMFS-JWF͕ͩʜʜ AJODMVEF"DUJPO$POUSPMMFS-JWFAͨ͠ίϯτϩʔϥʔͰABQQMJDBUJPOKTPOA ͷΑ͏ͳDPOUFOUUZQF͕ʮී௨ͳʯϨεϙϯεΛฦ٫͠Α͏ͱ͢Δͱࢗ͞Δ ‣"DUJPO಺Ͱʮ44&ͷΑ͏ͳTUSFBNJOHʯΛฦ٫͢Δ࣌͸ίʔυ಺Ͱ໌ࣔతʹ ADMPTFAͯ͠ϦιʔεΛฦ٫͢Δνϟϯε͕͋Δ ‣Ұํɺී௨ͷϦιʔεΛී௨ʹฦ٫͢Δ FHASFOEFSKTPOA ͱ ADMPTFA͕ݺ͹ΕΔػձ͕ແ͍ͨΊϦιʔε͕औΒΕͬͺͳ͠ʹ 👉QVNBUISFBE͕CVTZʹͳͬͯΞϓϦέʔγϣϯશମ͕ετʔϧ͢Δ ˰ैͬͯ44&ͱͦΕҎ֎ͱͰ$POUSPMMFS$MBTTΛ෼͚Δඞཁ͕͋Δ  3BJMTతʹͪΐͬͱඍົͳݟͨ໨ʹʜʜʁ

Slide 57

Slide 57 text

 DPNNJUUFFHFNͷ3FTQPOTF#PEZ7BMJEBUJPO.JEEMFXBSFΛ࢖͏ͱࢗ͞Δ ‣ਖ਼͘͠ݴ͏ͱϨεϙϯεϘσΟΛશ෦ฦ͠ऴ͑Δ·Ͱϛυϧ΢ΣΞͰόοϑΝͯ͠ ͠·͏ͷͰετϦʔϛϯάॲཧʹͳΒͳ͍ ‣QVNBUISFBE͕CVTZʹͳͬͯΞϓϦέʔγϣϯશମ͕ετʔϧ͢Δ ࠶ొ৔  ‣ৄࡉ͸աڈͷࢿྉ$PNNJUUFF.JEEMFXBSF3FTQPOTF7BMJEBUJPOͰ4USFBNJOH 3FTQPOTF#PEZΛॲཧ͢Δͱࢗ͞Γ·͢ ϒϩοΧʔ৭ʑDPNNJUUFFHFN

Slide 58

Slide 58 text

 Ξο IUUQTHJUIVCDPNJOUFSBHFOUDPNNJUUFFCMPCDGDGFDDBDBDDEGDBCMJCDPNNJUUFFTDIFNB@WBMJEBUPSPQFO@BQJ@SC աڈεϥΠυ͔ΒҾ༻

Slide 59

Slide 59 text

 ‣DPNNJUUFFʹݶΒͣϨεϙϯεϘσΟશମΛόοϑΝ͢ΔΑ͏ͳϛυϧ΢ΣΞͰ͸ ಉ༷ͷ໰୊͕ൃੜ͢ΔՄೳੑ͕͋Δ ‣αʔόʔଆ͚ͩͰ͸ͳ͘ΫϥΠΞϯτଆͰ΋ى͜ΔՄೳੑ͕͋ΔͷͰ஫ҙ ‣ྫ"OESPJEͷ)UUQ-PHHJOH*OUFSDFQUPS ϒϩοΧʔ৭ʑDPNNJUUFFHFN

Slide 60

Slide 60 text

 0QFO"1*ͱ44&ͷ૬ੑ͕͋·Γྑ͘ͳ͍ ‣0QFO"1*͕3&45GVMͳ"1*ఆٛΛهड़͢Δ͜ͱΛओ؟ͱ͍ͯ͠ΔͨΊ 4USFBNJOHͳ44&ͱͷ૬ੑ͕͋·Γྑ͘ͳ͍ ‣ΫϥΠΞϯτͷࣗಈੜ੒͸ࠓ͋ΔҰൠతͳπʔϧͰ͸ࠔ೉ ϒϩοΧʔ৭ʑ0QFO"1*

Slide 61

Slide 61 text

44&ͰϋϚͬͨ࣌ͷτϥϒϧγϡʔςΟϯά

Slide 62

Slide 62 text

 44&ͰϋϚͬͨ࣌ͷτϥϒϧγϡʔςΟϯά ϦΫΤετϔομͱϨεϙϯεϔομΛਅͬઌʹݟΔ ‣ϔομ͕ҧ͍ͬͯΔͱجຊతʹ͸ਖ਼ৗʹಈ͔ͳ͍ ‣ ͨ·ʹ࣮૷ґଘͰ͏͔ͬΓಈ͍ͨΓͯ͠͠·͏͜ͱ͕͋Δ͕ʜʜ

Slide 63

Slide 63 text

 44&ͰϋϚͬͨ࣌ͷτϥϒϧγϡʔςΟϯά ‣ϦΫΤετͱϨεϙϯε͕௨Δܦ࿏͢΂ͯΛνΣοΫ͢Δ ‣ྫ͑͹ϦόʔεϓϩΩγ͕͋ΔͷʹΞϓϦαʔόʔͱ͚ͩૄ௨ࢼݧͯ͠΋ҙຯ͕ແ͍

Slide 64

Slide 64 text

 44&ͰϋϚͬͨ࣌ͷτϥϒϧγϡʔςΟϯά ‣ϦΫΤετͱϨεϙϯε͕௨Δܦ࿏͢΂ͯΛνΣοΫ͢Δ ‣ྫ͑͹ϦόʔεϓϩΩγ͕͋ΔͷʹΞϓϦαʔόʔͱ͚ͩૄ௨ࢼݧͯ͠΋ҙຯ͕ແ͍ ‣ ܦݧ্ "84ͷ"-#͸ݪҼʹͳΒͳ͍

Slide 65

Slide 65 text

 44&ͰϋϚͬͨ࣌ͷτϥϒϧγϡʔςΟϯά ‣ϦΫΤετͱϨεϙϯε͕௨Δܦ࿏͢΂ͯΛνΣοΫ͢Δ ‣ྫ͑͹ϦόʔεϓϩΩγ͕͋ΔͷʹΞϓϦαʔόʔͱ͚ͩૄ௨ࢼݧͯ͠΋ҙຯ͕ແ͍ ‣ ܦݧ্ "84ͷ"-#͸ݪҼʹͳΒͳ͍ ͝ΊΜΑʜʜ

Slide 66

Slide 66 text

 44&ͰϋϚͬͨ࣌ͷτϥϒϧγϡʔςΟϯά ‣νϟϯΫαΠζͰ੾ΒΕͯ44&ͷίϯςϯπ͸ૹΒΕͯ͘Δ͜ͱʹཹҙ͢Δ ‣44&ͷΠϕϯτϒϩοΫ୯ҐͰૹΒΕͯ͘ΔΘ͚Ͱ͸ͳ͘ɺ QVNB΍OHJOY౳Ͱઃఆ͞ΕΔνϟϯΫαΠζʹैͬͯૹΒΕͯ͘Δ ‣ΫϥΠΞϯτ͸ϨεϙϯεϘσΟΛετϦʔϛϯάͰड͚औΓɺ ͦΕΛόοϑΝ͍͖ͯ͠ͳ͕ΒσϦϛλ͕དྷͨ࣌ʹ 44&ͷΠϕϯτϒϩοΫͱͯ͠QBSTF͢Δඞཁ͕͋Δ

Slide 67

Slide 67 text

 44&ͰϋϚͬͨ࣌ͷτϥϒϧγϡʔςΟϯά ‣UDQEVNQ ύέοτΩϟϓνϟ ΛݟΒΕΔͷ͕Ұ൪ྑ͍ ‣͍Ζ͍Ζͱ໘౗Ͱ͋Δͷ͸ͦ͏ ‣"NB[PO&$4ͷΑ͏ͳίϯςφ؀ڥʹࠩ͠ࠐΉํ๏ ‣5-4ʹ્·ΕΔ

Slide 68

Slide 68 text

ϒϩοΧʔΛऔΓআ͍͍ͯ͘औΓ૊Έ 

Slide 69

Slide 69 text

 ϒϩοΧʔ৭ʑศརͳ"DUJPO$POUSPMMFS-JWF͕ͩʜʜ AJODMVEF"DUJPO$POUSPMMFS-JWFAͨ͠ίϯτϩʔϥʔͰABQQMJDBUJPOKTPOA ͷΑ͏ͳDPOUFOUUZQF͕ʮී௨ͳʯϨεϙϯεΛฦ٫͠Α͏ͱ͢Δͱࢗ͞Δ ‣QVNBUISFBE͕CVTZʹͳͬͯΞϓϦέʔγϣϯશମ͕ετʔϧ͢Δ

Slide 70

Slide 70 text

 ϒϩοΧʔ৭ʑศརͳ"DUJPO$POUSPMMFS-JWF͕ͩʜʜ AJODMVEF"DUJPO$POUSPMMFS-JWFAͨ͠ίϯτϩʔϥʔͰABQQMJDBUJPOKTPOA ͷΑ͏ͳDPOUFOUUZQF͕ʮී௨ͳʯϨεϙϯεΛฦ٫͠Α͏ͱ͢Δͱࢗ͞Δ ‣QVNBUISFBE͕CVTZʹͳͬͯΞϓϦέʔγϣϯશମ͕ετʔϧ͢Δ IUUQTHJUIVCDPNSBJMTSBJMTQVMM

Slide 71

Slide 71 text

 DPNNJUUFFHFNͷ3FTQPOTF#PEZ7BMJEBUJPO.JEEMFXBSFΛ࢖͏ͱࢗ͞Δ ‣ਖ਼͘͠ݴ͏ͱϨεϙϯεϘσΟΛશ෦ฦ͠ऴ͑Δ·Ͱϛυϧ΢ΣΞͰόοϑΝͯ͠ ͠·͏ͷͰετϦʔϛϯάॲཧʹͳΒͳ͍ ‣QVNBUISFBE͕CVTZʹͳͬͯΞϓϦέʔγϣϯશମ͕ετʔϧ͢Δ ࠶ొ৔ ϒϩοΧʔ৭ʑDPNNJUUFFHFN

Slide 72

Slide 72 text

 DPNNJUUFFHFNͷ3FTQPOTF#PEZ7BMJEBUJPO.JEEMFXBSFΛ࢖͏ͱࢗ͞Δ ‣ਖ਼͘͠ݴ͏ͱϨεϙϯεϘσΟΛશ෦ฦ͠ऴ͑Δ·Ͱϛυϧ΢ΣΞͰόοϑΝͯ͠ ͠·͏ͷͰετϦʔϛϯάॲཧʹͳΒͳ͍ ‣QVNBUISFBE͕CVTZʹͳͬͯΞϓϦέʔγϣϯશମ͕ετʔϧ͢Δ ࠶ొ৔ IUUQTHJUIVCDPNJOUFSBHFOUDPNNJUUFFQVMM ϒϩοΧʔ৭ʑDPNNJUUFFHFN

Slide 73

Slide 73 text

 ϒϩοΧʔ৭ʑDPNNJUUFFHFN 6TBHF&YBNQMF ಺෦࣮૷ ؆ུ  if strea mi ng_response?(headers) response = Rack : : BodyProxy.ne w (response) do begin validate(request, status, headers, response) rescue = > e handle_exception(e, request.env) raise e if @raise end end else ಺෦తʹ3BDL#PEZ1SPYZΛ࢖༻ ৄ͘͠͸1VMM3FRVFTUΛࢀরͷ͜ͱ

Slide 74

Slide 74 text

 ϒϩοΧʔ৭ʑ0QFO"1* ‣0QFO"1*ͱ44&ͷ૬ੑ͕͋·Γྑ͘ͳ͍ ‣0QFO"1*͕3&45GVMͳ"1*ఆٛΛهड़͢Δ͜ͱΛओ؟ͱ͍ͯ͠ΔͨΊ 4USFBNJOHͳ44&ͱͷ૬ੑ͕͋·Γྑ͘ͳ͍ ‣ΫϥΠΞϯτͷࣗಈੜ੒͸ࠓ͋ΔҰൠతͳπʔϧͰ͸ࠔ೉

Slide 75

Slide 75 text

 ϒϩοΧʔ৭ʑ0QFO"1* ‣0QFO"1*ͱ44&ͷ૬ੑ͕͋·Γྑ͘ͳ͍ ‣0QFO"1*͕3&45GVMͳ"1*ఆٛΛهड़͢Δ͜ͱΛओ؟ͱ͍ͯ͠ΔͨΊ 4USFBNJOHͳ44&ͱͷ૬ੑ͕͋·Γྑ͘ͳ͍ ‣ΫϥΠΞϯτͷࣗಈੜ੒͸ࠓ͋ΔҰൠతͳπʔϧͰ͸ࠔ೉ IUUQTHJUIVCDPN0"*0QFO"1*4QFDJ fi DBUJPOEJTDVTTJPOT

Slide 76

Slide 76 text

 ϒϩοΧʔ৭ʑ0QFO"1* ‣0QFO"1*ͱ44&ͷ૬ੑ͕͋·Γྑ͘ͳ͍ ‣0QFO"1*͕3&45GVMͳ"1*ఆٛΛهड़͢Δ͜ͱΛओ؟ͱ͍ͯ͠ΔͨΊ 4USFBNJOHͳ44&ͱͷ૬ੑ͕͋·Γྑ͘ͳ͍ ‣ΫϥΠΞϯτͷࣗಈੜ੒͸ࠓ͋ΔҰൠతͳπʔϧͰ͸ࠔ೉ IUUQTHJUIVCDPN0"*0QFO"1*4QFDJ fi DBUJPOEJTDVTTJPOT

Slide 77

Slide 77 text

 ϒϩοΧʔ৭ʑ0QFO"1* ‣0QFO"1*ͱ44&ͷ૬ੑ͕͋·Γྑ͘ͳ͍ ‣0QFO"1*͕3&45GVMͳ"1*ఆٛΛهड़͢Δ͜ͱΛओ؟ͱ͍ͯ͠ΔͨΊ 4USFBNJOHͳ44&ͱͷ૬ੑ͕͋·Γྑ͘ͳ͍ ‣ΫϥΠΞϯτͷࣗಈੜ੒͸ࠓ͋ΔҰൠతͳπʔϧͰ͸ࠔ೉  IUUQTHJUIVCDPN0"*0QFO"1*4QFDJ fi DBUJPOEJTDVTTJPOT

Slide 78

Slide 78 text

 ϒϩοΧʔ৭ʑ0QFO"1* ‣0QFO"1*͔ΒA4FRVFOUJBM.FEJB5ZQFTA ͕ಋೖ͞ΕΔ ‣FH ABQQMJDBUJPOKTPOMA AUFYUFWFOUTUSFBNA ‣4FRVFOUJBM.FEJB5ZQFTͷ֤ΞΠςϜͷεΩʔϚΛ AJUFN4DIFNBAͰఆٛͰ͖ΔΑ͏ʹͳΔ ࢀরIUUQTTQFDPQFOBQJTPSHPBTWIUNM

Slide 79

Slide 79 text

 ϒϩοΧʔͰ͸ͳ͍͕ศརʹ͍ͯ͘͠औΓ૊Έ

Slide 80

Slide 80 text

 BTZODHFNͷϑοΫVOIBOEMFEͳྫ֎Λϋϯυϧ͢Δ IUUQTHJUIVCDPNTPDLFUSZBTZODQVMM

Slide 81

Slide 81 text

 STQFDTTFNBUDIFST 44&ؔ࿈ͷςετΛॻ͖΍͘͢͢ΔͨΊͷSTQFDNBUDIFS

Slide 82

Slide 82 text

 STQFDTTFNBUDIFST &YBNQMF

Slide 83

Slide 83 text

44&पΓ͸ࠓͰ΋े෼ʹαϙʔτ͞Ε͍ͯΔ ͋Γ͕͍ͨ  ҰํͰ࢖ͬͯΈΔͱ΋ͬͱศརʹͰ͖ΔՕॴ͕͋Δ͜ͱʹؾ෇͘

Slide 84

Slide 84 text

 44&ʹݶΒͣ  ͦͷΑ͏ͳࣄฑʹग़͘Θͨ࣌͠ʹ͸ ίϛϡχςΟʹؐݩͰ͖Δͱྑ͍Ͱ͢Ͷ

Slide 85

Slide 85 text

 ίϛϡχςΟΛҭͯΔͷ͸ར༻ऀ

Slide 86

Slide 86 text

·ͱΊ 

Slide 87

Slide 87 text

 ·ͱΊ ‣44&ʹ͍ͭͯઆ໌͠·ͨ͠ ‣44&ͷ༗ޮͳ༻్ʹ͍ͭͯઆ໌͠·ͨ͠ ‣44&ͱBTZODΛ૊Έ߹ΘͤͨඇಉظॲཧʹΑΔԸܙɾ࣮૷ύλʔϯΛઆ໌͠·ͨ͠ ‣ΤίγεςϜΛศརʹͰ͖ΔνϟϯεΛݟ෇͚ͨΒͲ͠Ͳ͠ߩݙ͍͖ͯ͠·͠ΐ͏

Slide 88

Slide 88 text

No content

Slide 89

Slide 89 text

ࢀߟ৘ใ

Slide 90

Slide 90 text

 ࢀߟ৘ใ ‣)5.-4UBOEBSE4FSWFSTFOUFWFOUT IUUQTIUNMTQFDXIBUXHPSHNVMUJQBHFTFSWFSTFOUFWFOUTIUNM ‣4FSWFSTFOUFWFOUT8FC"1*Tc.%/ IUUQTEFWFMPQFSNP[JMMBPSHFO64EPDT8FC"1*4FSWFSTFOU@FWFOUT