技術面からみる パフォーマンス改善 / Frontrend Vol.13 Dec 19th, 2018

技術面からみる パフォーマンス改善 / Frontrend Vol.13 Dec 19th, 2018

Chrome Dev Summit 2018 の内容を共有。
発表の中では少し端折ったところもありましたので、こちらで参照いただけますと幸いです。このスライドを見た上で、YouTube に上がっている動画を見ることでより深い理解につながれば幸いです。

CDS 2018 の YouTube 動画はこちら:
https://www.youtube.com/playlist?list=PLNYkxOF6rcIDjlCx1PcphPpmf43aKOAdF

Dc696687bae442425a220771df158346?s=128

tsuyoshi wada

December 19, 2018
Tweet

Transcript

  1. DISPNFEFWTVNNJUCSJFpOHTFTTJPO 'SPOUSFOE7PM%FDUI  5TVZPTIJ8BEB !XBEBDLFM ٕज़໘͔ΒΈΔ ύϑΥʔϚϯεվળ

  2. "CPVUNF DISPNFEFWTVNNJUCSJFpOHTFTTJPO 5TVZPTIJ8BEB࿨ా߶ !XBEBDLFM w $ZCFS"HFOU *OD೥த్ೖࣾ w $"54 $MJFOU"EWBODFE5FDIOPMPHZ4UVEJP

    ॴଐ w $"54ͱ͍͏૊৫ͰϦʔυΤϯδχΞΛ΍͍ͬͯ·͢
  3. DISPNFEFWTVNNJUCSJFpOHTFTTJPO ຊεϥΠυͷझࢫҙ޲

  4. DISPNFEFWTVNNJUCSJFpOHTFTTJPO w $ISPNF%FW4VNNJUͷ಺༰Λڞ༗ w ൃදҎ֎ͷ৔Ͱࢀরͯ͠΋಺༰͕೺ѲͰ͖ΔΑ͏ʹจ ষΛଟ͘ࡌ͍ͤͯ·͢ w ൃද࣌ؒͷؔ܎͔ΒলུΛڬΈͭͭਐΊ·͢ w ͜ͷεϥΠυΛݟ্ͨͰɺ:PV5VCFʹ্͕͍ͬͯΔ

    ಈըΛݟΔ͜ͱͰΑΓਂ͍ཧղʹͭͳ͕Ε͹޾͍Ͱ͢ IUUQTXXXZPVUVCFDPNQMBZMJTU MJTU1-/:LY0'SD*%KM$Y1DQI1QNGB,0"E'
  5. DISPNFEFWTVNNJUCSJFpOHTFTTJPO ຊεϥΠυͰѻ͏಺༰

  6. DISPNFEFWTVNNJUCSJFpOHTFTTJPO w #VJMEJOH'BTUFS .PSF3FTJMJFOU"QQTXJUI4FSWJDF 8PSLFS"$BDIJOH4USBUFHZ%FFQ%JWF w 6TJOH8FC"TTFNCMZBOE5ISFBET w "2VFTUUP(VBSBOUFF3FTQPOTJWFOFTT 4DIFEVMJOH0OBOE0⒎UIF.BJO5ISFBE

  7. DISPNFEFWTVNNJUCSJFpOHTFTTJPO ͔͜͜Β͕ຊฤ

  8. DISPNFEFWTVNNJUCSJFpOHTFTTJPO 4FSWJDF8PSLFSʹΑΔɺΑΓૣ͘ɺΑΓॊೈͳΞϓϦέʔγϣ ϯͷߏஙɿΩϟογϡઓུ%FFQ%JWF #VJMEJOH'BTUFS .PSF3FTJMJFOU "QQTXJUI4FSWJDF8PSLFS" $BDIJOH4USBUFHZ%FFQ%JWF

  9. DISPNFEFWTVNNJUCSJFpOHTFTTJPO w 4FSWJDF8PSLFS͸ϝΠϯετϦʔϜͳٕज़ʹͳͬͨ w શͯͷϞμϯϒϥ΢βͰαϙʔτ͞ΕͯΔ w 4FSWJDF8PSLFSʹؔͯ͠ɺ͠͹͠͹ΦϑϥΠϯରԠ ͕࿩୊ʹऔΓ্͛ΒΕΔ w ͔͠͠ɺօ͞Μ΋͝ଘ஌ͷ௨ΓɺΦϯϥΠϯͷ8FC

    αΠτʹର͢ΔύϑΥʔϚϯεվળʹ໾ཱٕͭज़ͱ͠ ͯ΋༏ल
  10. DISPNFEFWTVNNJUCSJFpOHTFTTJPO 4FSWJDF8PSLFSΛ࢖͏͜ͱͰ ड͚ΔԸܙ

  11. DISPNFEFWTVNNJUCSJFpOHTFTTJPO w ଟ͘ͷ৔߹ɺ/FUXPSLMBUFODZΑΓ΋ૣ͘൓Ԡ͢Δ͜ ͱ͕Ͱ͖Δ w ྫ͑͹ΞϓϦશମΛΩϟογϡͤͨ͞৔߹ɺ/FUXPSL ʹΞΫηε͢Δඞཁ͢Βͳ͍ w Ωϟογϡίϯςϯπ͕ଘࡏ͢Δ৔߹ɺҰ౓Ωϟογϡ Λද্ࣔͨ͠ͰɺόοΫάϥ΢ϯυͰ࠷৽ͷ৘ใΛऔ

    ಘ͢Δ౳ͷॊೈͳରԠ΋Մೳ
  12. DISPNFEFWTVNNJUCSJFpOHTFTTJPO w +BWB4DSJQUΛ࢖༻͢Δ·Ͱʹ͸ɺύʔεɺίϯύΠϧɺ ࣮ߦɺͱز͔ͭͷϑΣʔζ͕ඞཁ w ͜ΕΒͷϑΣʔζʹֻ͕͔࣌ؒͬͯ͠·͏͜ͱ͕͋Δ w 7ͷΑ͏ͳΤϯδϯͰ͸εΫϦϓτΛόΠτίʔυ ͱͯ͠อଘ͢Δ͜ͱͰ࠷దԽΛਤ͍ͬͯΔ ଞʹ΋ʜ

  13. DISPNFEFWTVNNJUCSJFpOHTFTTJPO ஫ҙ͠ͳ͚Ε͹͍͚ͳ͍ͷ͸ɺ ԸܙΛड͚Δʹ͸τϨʔυΦϑ͕͋Δ͜ͱΛ ཧղ͢Δ͜ͱɻ ࢧ෷͏ίετΛ࠷খݶʹͭͭ͠ɺ ԸܙΛ࠷େԽ͢Δඞཁ͕͋Δɻ

  14. DISPNFEFWTVNNJUCSJFpOHTFTTJPO ۩ମతʹͲͷΑ͏ͳίετʹ ஫ҙ͢΂͖͔ʁ

  15. DISPNFEFWTVNNJUCSJFpOHTFTTJPO w 4FSWJDF8PSLFSͷىಈ࣌ؒ w ΩϟογϡͷಡΈࠐΈ࣌ؒ

  16. DISPNFEFWTVNNJUCSJFpOHTFTTJPO w 4FSWJDF8PSLFSͷىಈ࣌ؒ w ΩϟογϡͷಡΈࠐΈ࣌ؒ ຊεϥΠυͰ͸ͪ͜Βʹ஫໨

  17. DISPNFEFWTVNNJUCSJFpOHTFTTJPO w 4FSWJDF8PSLFSͷىಈ͕࣌ؒ࠷΋ݟա͝͞Ε΍͍͢ w ͲΕ͘Β͍ͷ͕࣌ؒফඅ͞ΕΔ͔͸ϢʔβͷσόΠε ʹґଘͯ͠͠·͏ʜ w ͔͠͠6TFS5JNJOH"1*Ͱܭଌ͢Δ͜ͱ͕Մೳ w QIJMJQXBMUPODPNͰ͸

    w σεΫτοϓNT w ϞόΠϧ NT  NT΋͋Γ͑Δ
  18. DISPNFEFWTVNNJUCSJFpOHTFTTJPO 4FSWJDF8PSLFSΛ࢖༻͠ͳ͕Β αΠτΛߴ଎ʹಈ࡞ͤ͞Δʹ͸ Ͳ͏͢Ε͹Α͍͔ʁ

  19. DISPNFEFWTVNNJUCSJFpOHTFTTJPO લఏͱͯ͠3FRVFTUʹ͸ͭͷछྨ͕͋Δ w /BWJHBUJPOSFRVFTUT w 8FCϖʔδࣗମͷ3FRVFTU w Ωϟογϡ͕೉͍͠ w ͔͠͠ɺύϑΥʔϚϯε΁ͷΠϯύΫτ͕Ͱ͔͍

    w 3FTPVSDFSFRVFTUT w 8FCϖʔδ಺ʹࢀর͞ΕΔΞηοτͷ3FRVFTU w +BWB4DSJQUɺ$44ɺ*NBHFT౳ w Ωϟογϡ͕༰қͰར༻ྫ΋ଟ͍
  20. DISPNFEFWTVNNJUCSJFpOHTFTTJPO Ωϟογϡ੍ޚ͸೉͍͠΋ͷͷɺ ޮՌͷߴ͍/BWJHBUJPOSFRVFTUTͷ ࠷దԽΛߦ͏ͷ͕ྑͦ͞͏

  21. DISPNFEFWTVNNJUCSJFpOHTFTTJPO /BWJHBUJPOSFRVFTUTͷ࠷దԽΛਤΔ w Ωϟογϡ͔Β͙͢ʹίϯςϯπΛฦ͢ w 8PSLCPYΛ࢖͏ͱ؆୯ʹಋೖͰ͖Δ w XPSLCPYTUSBUFHJFTDBDIF'JSTU  w

    XPSLCPYTUSBUFHJFTTUBMF8IJMF3FWBMJEBUF  w ΩϟογϡΛฦ٫ͨ͋͠ͱʹɺόοΫάϥ΢ϯυͰ࠷ ৽ͷϦιʔεΛऔಘ͢ΔΑ͏ʹ͢Δ
  22. DISPNFEFWTVNNJUCSJFpOHTFTTJPO workbox.routing.registerRoute( '/about', workbox.streams.strategy([ cacheFirst.makeRequest({ request: new Request(‘/_header.html’), }), networkFisrt.makeRequest({

    request: new Request(‘/about.content.html’), }), cacheFirst.makeRequest({ request: new Request(‘/_footer.html’), }), ]), ); 8PSLCPYΛ࢖͏ͱ؆୯ͳهड़ͰରԠͰ͖Δ Ωϟογϡ༏ઌ͔ɺ/FUXPSL༏ઌ͔ͷΩϟογϡઓུΛॊೈʹ૊Ή͜ͱ͕ॏཁ
  23. DISPNFEFWTVNNJUCSJFpOHTFTTJPO ଞʹ΋/BWJHBUJPO1SFMPBEΛ࢖༻ͯ͠ 4FSWJDF8PSLFSͷىಈͱ/BWJHBUJPOSFRVFTUTΛฒྻ Ͱ࣮ߦ͢Δ͜ͱͰɺίετΛ࠷খԽͰ͖Δ IUUQTEFWFMPQFSTHPPHMFDPNXFCVQEBUFTOBWJHBUJPOQSFMPBE IUUQTCMPHKYDLJPFOUSJFTOBWJHBUJPOQSFMPBEIUNM

  24. DISPNFEFWTVNNJUCSJFpOHTFTTJPO $BDIJOHTUSBUFHZ

  25. DISPNFEFWTVNNJUCSJFpOHTFTTJPO Ωϟογϡ؅ཧ w ద੾ͳϦιʔεΛద੾ͳλΠϛϯάͰอଘ͢Δ w 4UPSBHFͷ༰ྔ͸༗ݶͰ͋Δ͜ͱΛߟྀ͢Δ w 2VPUBΛ௒͑ͳ͍Α͏ʹ੍ޚ͢Δ w ޮ཰తͳߋ৽Λ͢Δඞཁ͕͋Δ

  26. DISPNFEFWTVNNJUCSJFpOHTFTTJPO ίϯςϯπͷ಺༰ʹΑΔΩϟογϡઓུ w αʔϏεʹͱͬͯॏཁͳίϯςϯπ DSJUJDBM  w ࠷ॏཁͰ͸ͳ͍ίϯςϯπ OPODSJUJDBM 

    w ͜ΕΒͷଐੑʹΑͬͯઓུΛ෼͚Δͷ͕ޮՌత
  27. DISPNFEFWTVNNJUCSJFpOHTFTTJPO 1SFDBDIJOH DSJUJDBM w ϝϦοτ w ࣮૷ͱ੍ޚɺߋ৽͕ൺֱత༰қ w αΠζ΋طʹ෼͔͍ͬͯΔ΋ͷ͕΄ͱΜͲ w

    σϝϦοτ w ೚ҙͷλΠϛϯάͰΩϟογϡ੍ޚ͕ඞཁ w ઌߦͯ͠/FUXPSLίετ͕ඞཁ w ࣮ࡍʹ͸ෆඞཁͳ63-ΛΩϟογϡͯ͠͠·͏ Մೳੑ͕͋Δ
  28. DISPNFEFWTVNNJUCSJFpOHTFTTJPO 3VOUJNFDBDIJOH OPODSJUJDBM w ϝϦοτ w औಘࡁΈը૾ɺΤϯτϦϙΠϯτʹԠͨ͡Ωϟογϡ ౳ʹద͍ͯ͠Δ w σϝϦοτ

    w Ωϟογϡͷ੔߹ੑ୲อ͕೉͍͠ w ίϯςϯπϋογϡ΍ɺ3FWJTJPOɺϑΝΠϧ໊ͷ޻ ෉Ͱճආ w Ωϟογϡ͕ͲΜͲΜ૿͑ͯ͠·͏ ͭ·ΓαΠζ ͕ෆఆ
  29. DISPNFEFWTVNNJUCSJFpOHTFTTJPO const { usage, quota } = await navigator.storage.estimate(); 4UPSBHF.BOBHFS"1*Λ࢖੍ͬͨޚ

    2VPUBΛ௒͑ͳ͍Α͏ʹ੍ޚΛ͢Δ͜ͱ͕ग़དྷΔɻ 8PSLCPYͷ&YQJSBUJPO1MVHJOΛ࢖͏͜ͱͰ؆୯ʹ࢖༻͢Δ͜ͱ΋ग़དྷΔɻ IUUQTEFWFMPQFSTHPPHMFDPNXFCUPPMTXPSLCPYSFGFSFODFEPDTMBUFTUXPSLCPYFYQJSBUJPO1MVHJO
  30. DISPNFEFWTVNNJUCSJFpOHTFTTJPO Ϣʔβ΁ͷ഑ྀΛ๨Εͣʹ w ଟ͘ͷ։ൃऀ͸ܙ·Εͨ௨৴؀ڥʹ͍Δ w 4MPX(ΤϛϡϨʔγϣϯͰಈ࡞Λ֬ೝ͢Δ w 3FRVFTU)FBEFSʹೖͬͨA4BWF%BUBAʹΑͬͯ Ωϟογϡͷಈ࡞Λ੾Γସ͑Δ w

    ༨ܭͳσʔλΛϢʔβଆʹอ࣋ͤ͞ͳ͍
  31. DISPNFEFWTVNNJUCSJFpOHTFTTJPO ൃੜ͠ಘΔτϨʔυΦϑΛॆ෼ʹཧղͯ͠ ͦΕΒΛߟྀͨ͠࢖༻Λߦ͍ͬͯ͘͜ͱ͕ॏཁɻ

  32. DISPNFEFWTVNNJUCSJFpOHTFTTJPO 8FC"TTFNCMZͱεϨουͷ࢖༻ 6TJOH8FC"TTFNCMZBOE 5ISFBET

  33. DISPNFEFWTVNNJUCSJFpOHTFTTJPO 8FC"TTFNCMZͱ͸

  34. DISPNFEFWTVNNJUCSJFpOHTFTTJPO w 8FCͷͨΊͷ৽͍͠ݴޠ w ͨͩ͠ɺ8FCҎ֎Ͱ΋׆༻Ͱ͖ΔΑ͏ͳॊೈੑ΋ w +BWB4DSJQUΛஔ͖׵͑ΔΑ͏ͳ΋ͷͰ͸ͳ͍ w ผͷݴޠ͔ΒίϯύΠϧ͞ΕΔ w

    ߴ͍৴པੑɺߴ͍ύϑΥʔϚϯεΛఏڙͰ͖ΔՄೳੑ ͕͋Δ w ೥Ҏ্લʹ+BWB4DSJQU͕஀ੜͯ͠Ҏདྷɺϝδϟʔϒ ϥ΢βͰͪΌΜͱαϙʔτ͞ΕΔॳΊͯͷݴޠ w ϙʔλϏϦςΟʹ΋༏Ε͍ͯͯɺ$ Ͱॻ͔Εͨίʔ υͳͲΛ׆༻͢Δ͜ͱ͕Ͱ͖Δ
  35. DISPNFEFWTVNNJUCSJFpOHTFTTJPO Ϣʔεέʔε w ߴ͍৴པੑɺߴ͍ύϑΥʔϚϯε͕ఏڙ͞ΕΔ͜ͱͰɺ ༷ʑͳϢʔεέʔε8FCͰରԠ͢Δ͜ͱ͕Ͱ͖ΔΑ ͏ʹͳΔ w ಈըฤू w ίʔσοΫ

    w Ի੠ॲཧ w ΑΓෳࡶͳΞϓϦέʔγϣϯ w FUDʜ
  36. DISPNFEFWTVNNJUCSJFpOHTFTTJPO ڈ೥औΓ૊Μͩ৽ػೳ w 4PVSDF.BQT w σόοάʹ͸ෆՄܽʂ w #SFBLQPJOUͷઃఆ౳΋Մೳ w 4USFBNJOH$PNQJMBUJPO

    w ͜Ε·Ͱ͸Ϟδϡʔϧશମ͕ಡΈࠐ·ΕΔ·Ͱ࣮ ߦΛ଴ػ͢Δඞཁ͕͋ͬͨ w μ΢ϯϩʔυͱ࣮ߦΛಉ࣌ʹߦ͑ΔΑ͏ʹ
  37. DISPNFEFWTVNNJUCSJFpOHTFTTJPO (async () => { const promise = fetch('./fibonacci.wasm'); const

    { instance } = await WebAssembly.instantiateStreaming(promise); const result = instance.exports.fibonacci(42); document.querySelector('main').textContent = `The Fibonacci is ${result}`; }); 8FC"TTFNCMZJOTUBOUJBUF4USFBNJOH IUUQTEFWFMPQFSNP[JMMBPSHFO64EPDT8FC+BWB4DSJQU3FGFSFODF(MPCBM@0CKFDUT8FC"TTFNCMZJOTUBOUJBUF4USFBNJOH
  38. DISPNFEFWTVNNJUCSJFpOHTFTTJPO -JGUP⒎DPNQJMFS w 7Ͱ͸ىಈ࣌ؒΛߋʹ࠷దԽ͢ΔͨΊɺ-JGUP⒎ͱ͍͏ϕʔ εϥΠϯίϯύΠϥΛ࡞੒ w 8FC"TTFNCMZͷόΠτίʔυΛड͚औΓɺ͙͢ʹ࣮ߦΛ ։࢝ w ͦͷޙɺ8FC"TTFNCMZNPEVMF͸.BJOUISFBE͔Βऔ

    Γআ͔Εɺ5VSCP'BOʹΑͬͯ͞ΒͳΔ࠷దԽ͕ࢪ͞ΕΔ w ࠷దԽ͕׬ྃ͢ΔͱɺಛผͳࢦࣔΛग़ͣ͞ͱ΋௚઀ϗοτ εϫοϓ͞ΕΔ w ͭ·Γʜ
  39. DISPNFEFWTVNNJUCSJFpOHTFTTJPO w ߴ଎ىಈ༻ϕʔεϥΠϯίϯύΠϥͱͯ͠ͷ-JGUP⒎ w ࠷େݶύϑΥʔϚϯεΛൃش͢ΔͨΊͷ
 ࠷దԽίϯύΠϥ5VSCP'BOͱ͍͏ߏ੒ʹ -JGUP⒎DPNQJMFSIUUQTWEFWCMPHMJGUP⒎ 'VSCP'BOPQUJNJ[BUJPODPNQJMFSIUUQTWEFWEPDTUVSCPGBO

  40. DISPNFEFWTVNNJUCSJFpOHTFTTJPO ࠓ೥ͷ৽ػೳ8FC"TTFNCMZ5ISFBET w ߴ଎͔ͭฒྻԽ͞Εͨίʔυ͕࣮ߦͰ͖Δ w 1UISFBET౳ͷεϨουΛ࢖༻ͨ͠ίʔυΛ8FCʹ࣋ ͪࠐΊΔΑ͏ʹʜʂ w ເͷ͋Δػೳ

  41. DISPNFEFWTVNNJUCSJFpOHTFTTJPO 8FC"TTFNCMZ5ISFBET

  42. DISPNFEFWTVNNJUCSJFpOHTFTTJPO 8FC"TTFNCMZ5ISFBETͷϝϦοτ w σεΫτοϓʹݶΒͣɺJ04΍"OESPJEͷ୺຤Ͱෳ਺ ͷίΞΛ࣋ͭ୺຤͕౰ͨΓલ w ௨ৗͷ8FC"QQMJDBUJPOͳΒͭͷίΞͷΈΛ࢖༻͢ Δ w .BJOUISFBEͱ8FC8PSLFSΛ࢖༻ͯ͠΋ίΞ

    w 8FC"TTFNCMZ5ISFBETΛ࢖༻͢Δ͜ͱͰΑΓଟ͘ͷ ίΞΛ׆༻͢Δ͜ͱ͕Ͱ͖Δ w ୺຤ͷੑೳΛϑϧʹ׆༻͢Δ͜ͱͰɺϢʔβମݧͷ޲ ্͕ظ଴Ͱ͖Δ
  43. DISPNFEFWTVNNJUCSJFpOHTFTTJPO ௨ৗͷ8PSLFSͱͷҧ͍ w +BWB4DSJQU͔Β௨ৗ࡞੒͞ΕΔ8PSLFSͰ͸7ͷΠ ϯελϯε͕8PSLFSͷ਺͚ͩੜ੒͞ΕɺϝϞϦ࢖༻ ཰্͕͕ͬͯ͠·͏ ඇྗͳ୺຤Ͱಛʹෆར  w 8FC"TTFNCMZ5ISFBET͔Β࡞੒͢Δ৔߹͸ɺ

    4IBSFE"SSBZ#V⒎FSΛհͯ͠ϝϞϦঢ়ଶΛڞ༗͢Δͨ Ίߴޮ཰ͳՔಇ͕ݟࠐΊΔ
  44. DISPNFEFWTVNNJUCSJFpOHTFTTJPO ࣮ྫΛ؆୯ʹ঺հ

  45. DISPNFEFWTVNNJUCSJFpOHTFTTJPO 4LFUDI6Q w %ϞσϦϯάιϑτ΢ΣΞ w %FTLUPQ"QQ .PCJMF J04 "OESPJE ͷڞ௨Ͱ࢖༻

    ͞Ε͍ͯΔ$ ͷίʔυΛ&NTDSJQUFOͰίϯύΠ ϧͯ͠ྲྀ༻ w ࠷ॳͷҠߦ࡞ۀͰ͸ਓͷΤϯδχΞ͔͍͠ͳ͔ͬͨ ͕ɺϲ݄Ͱ࡞ۀΛऴ͑Δ͜ͱ͕Ͱ͖ͨʂ w ಉ࣌ظʹ4VCTDSJQUJPOϞσϧΛެ։ɺϲ݄ͷؒͰސ ٬ϕʔεΛ૿΍͢͜ͱʹ੒ޭ IUUQTXXXTLFUDIVQDPN
  46. DISPNFEFWTVNNJUCSJFpOHTFTTJPO (PPHMF&BSUI w օ͞Μ͝ଘ஌ͷΞϓϦέʔγϣϯ w .VMUJUISFBEͰಈ࡞͢Δ8FC"TTFNCMZΛಋೖ w Ճ͑ͯɺલड़ͷ.VMUJUISFBEʹରԠͨ͠Ϗϧυ͕ $ISPNFͱ'JSFGPYͰಈ࡞͢Δʂ w

    4JOHMFUISFBEͳ8FC"TTFNCMZͷ࣮૷ͱൺֱͯ͠ɺ ฏۉ'14ίϚམͪ KBOL Λఔվળ͢Δ͜ͱʹ ੒ޭͨ͠ IUUQTXXXHPPHMFDPNFBSUI
  47. DISPNFEFWTVNNJUCSJFpOHTFTTJPO 4PVOEBUJPO w 8FCϕʔεͷ.VTJD4UVEJP w εϜʔζͳૢ࡞ମݧΛ࣮ݱ͢ΔͨΊʹ"VEJP 8PSLMFUT 8FC"TTFNCMZ 4IBSFE"SSBZ#V⒎FS౳ͷ Τοδͳٕज़Λ࠾༻

    w .VMUJUISFBEͳ8FC"TTFNCMZ͸"VEJP.JYJOH &OHJOFͷ෦෼΁ద༻ w 4JOHMFUISFBEͷ৔߹͸࠶ੜԻ్͕੾Ε్੾ΕʹͳΔ ͕ɺ.VMUJUISFBEͷ৔߹͸ɺεϜʔζͳ࠶ੜ͕Մೳʹ w $16ར༻཰΋൒෼ҎԼʹͳͬͨ IUUQTTPVOEBUJPODPN
  48. DISPNFEFWTVNNJUCSJFpOHTFTTJPO αʔϏε։ൃͷ৔໘Ͱ͸ɺͦΕ΄ͲඞཁͱͳΔέʔε͸ ଟ͘ͳ͍͔΋͠Εͳ͍ɻ ͔͠͠ɺαʔϏεཁ݅ͱͯ͠ߴ͍ύϑΥʔϚϯεΛٻΊ ΒΕͨ৔߹ʹɺରॲͰ͖ΔΑ͏Ҿ͖ग़͠ͱ͓ͯ࣋ͬͯ͠ ͖͍ͨɻ

  49. DISPNFEFWTVNNJUCSJFpOHTFTTJPO Ԡ౴ੑΛอূ͢ΔͨΊͷऔΓ૊Έɿ .BJO5ISFBEͷεέδϡʔϦϯά "2VFTUUP(VBSBOUFF 3FTQPOTJWFOFTT4DIFEVMJOH 0OBOE0⒎UIF.BJO5ISFBE

  50. DISPNFEFWTVNNJUCSJFpOHTFTTJPO .BJOUISFBE6*UISFBEͷࠅ࢖ʹؔ͢Δ໰୊ w ೖྗʹର͢Δॲཧ͕࣮ߦ͞Ε͍ͯΔؒʹɺଓ͚ͯೖྗ Λड͚෇͚Δͱʜ w ࠷ॳͷೖྗʹର͢Δॲཧ͕׬͍ྃͯ͠ͳ͍ͨΊɺ࠷ޙ ͷೖྗʹର͢ΔϨεϙϯε͕஗Ԇͯ͠͠·͏ w ͜Ε͸.BJOUISFBEͷϒϩοΩϯά͕ൃੜ͍ͯ͠Δ

    ঢ়ଶ ஗Ԇͨ͠ॲཧ͸RVFVFʹ٧·Δ
  51. DISPNFEFWTVNNJUCSJFpOHTFTTJPO ରࡦͱͯ͠༏ઌ౓ʹԠͨ͡λεΫ෼͚ w λεΫ͸ͭʹ෼ྨ͞ΕΔ w VTFSCMPDLJOHUBTLT w ࣮૷ऴྃ·Ͱʹ࣌ؒత੍໿͕͋Δॲཧ w EFGBVMUUBTLT

    w Ϣʔβʹݟ͑Δॲཧ w JEMFUBTLT w Ϣʔβʹݟ͑ͳ͍ॲཧ CBDLVQ΍BOBMZUJDTͳͲ  w ͦΕͧΕS"'TFU5JNFPVUSFRVFTU*EMF$BMMCBDLͰͰ͖Δ͚Ͳ TFU5JNFPVU͸গ͠ෆ҆ఆͳͷͰઐ༻"1*͕ඞཁ w ΋ͬͱঢ়ଶΛίϯτϩʔϧͰ͖ΔΑ͏ʹ͢ΔͨΊʹ"1*Λ௥Ճ͢Δ
  52. DISPNFEFWTVNNJUCSJFpOHTFTTJPO .BJOUISFBE4DIFEVMJOH"1* IUUQTHJUIVCDPNTQBOJDLFSNBJOUISFBETDIFEVMJOH w 3FBDU౳ͷϑϨʔϜϫʔΫͰ͸TDIFEVMFSΛࣗલͰ࣋ͬ ͍ͯΔ w ͦΕΒ͕ϒϥ΢βͷϏϧτΠϯͰఏڙͰ͖ͨΒྑͦ͞ ͏ w

    ఏҊ͸·࣮ͩݧஈ֊ͳͷͰϑΟʔυόοΫΛઈࢍड෇
  53. DISPNFEFWTVNNJUCSJFpOHTFTTJPO 0⒎UIF.BJO5ISFBE w લड़ͨ͠Α͏ͳλεΫͷ༏ઌ౓Λઃ͚Δ͚ͩͰ͸ɺෆ े෼ͳέʔε͕Ͳ͏ͯ͠΋Ͱͯ͘Δ w ରࡦͱͯ͠ɺͦΕΒΛ8FC8PSLFSΛ࢖͍ #BDLHSPVOEUISFBEʹಀ͕͢ w $"%ɺήʔϜɺΤϯίʔυɺػցֶशɺ҉߸Խɺ


    ͦͷଞʹ΋༷ʑͳϢʔεέʔε͕ଘࡏ͢Δ
  54. DISPNFEFWTVNNJUCSJFpOHTFTTJPO ໰୊఺ w QPTU.FTTBHFͳͲͷϝοηʔδϕʔεͰ
 MPXMFWFMͳ"1*͕࢖ΘΕ͍ͯΔ w ϝοηʔδͷ΍ΓऔΓͰൃੜ͢Δ4FSJBMJ[BUJPO %FTFSJBMJ[BUJPOͷίετ͸ͦΕͳΓʹߴ͍ w ͜ͷҰ࿈ͷྲྀΕΛUISFBEIPQͱݺͿ

    w ϝϞϦϦʔΫɺεϨουͷ؅ཧΛखಈͰߦ͏ඞཁ͕͋ Δ
  55. DISPNFEFWTVNNJUCSJFpOHTFTTJPO ͜ΕΒͷ໰୊Λղফ͢ΔͨΊʹ

  56. DISPNFEFWTVNNJUCSJFpOHTFTTJPO r+BTPO.JMMFS “we need a higher level API.”

  57. DISPNFEFWTVNNJUCSJFpOHTFTTJPO 5BTL8PSLMFU IUUQTHJUIVCDPNEFWFMPQJUUBTLXPSLMFU w ϝοηʔδϕʔεͰ͸ͳ͘ɺλεΫϕʔε w "OESPJE J04ͳͲଞͷ1MBUGPSNΛࢀߟʹߟ͑ΒΕͨ w ֤λεΫͷ࿈࠯Λߟྀ͠ɺεϨουΛݡ͘࢖͏͜ͱͰ

    UISFBEIPQͷίετΛ࠷খԽ͢Δ w ྫ͑͹ɺλεΫΛॲཧ͢ΔͷʹUISFBEIPQඞཁͩͬ ͨ΋ͷ͕ɺUISFBEIPQͰࡁΉ
  58. DISPNFEFWTVNNJUCSJFpOHTFTTJPO 8FC8PSLFSTͷ࢖͍ॴ w ࢖͏΂͖ w ௕͍ϒϩοΩϯά͕ൃੜͦ͠͏ͳॲཧ w ೖग़ྗͷখ͞ͳॲཧ w 3FRVFTU3FTQPOTFʹै͏৔߹

    w ࢖Θͳ͍΂͖ w %0.΁ͷґଘ͕͋Δ৔߹ w ೖྗ΁ͷԠ౴ॲཧ w খ͞ͳ஗ԆͰϨεϙϯεΛฦ͢ඞཁ͕͋Δ৔߹
  59. DISPNFEFWTVNNJUCSJFpOHTFTTJPO 8FC8PSLFSTͳͲɺ#BDLHSPVOEUISFBEʹॲཧΛಀ͕ ͢͜ͱͰɺ'14͸վળ͞ΕΔɻ ͔͠͠ɺUISFBEIPQʹίετֻ͕͔Δ͜ͱΛҙ͍ࣝͯ͠ ͳ͍ͱೖྗ΁ͷԠ౴ੑ JOQVUMBUFODZ ͕௿Լͯ͠͠· ͏఺ʹ஫ҙ͕ඞཁʂ

  60. DISPNFEFWTVNNJUCSJFpOHTFTTJPO 5IBOLZPV