WebAssemblyを Rubyにコンパイルする 黒魔術コード完全解説

WebAssemblyを Rubyにコンパイルする 黒魔術コード完全解説

Tama Ruby会議01の発表資料です

C850cbd06664627eb8e41cdff4a544b9?s=128

alice345

July 06, 2019
Tweet

Transcript

  1. 8FC"TTFNCMZΛ
 3VCZʹίϯύΠϧ͢Δ
 ࠇຐज़ίʔυ׬શղઆ !BMJUBTP !5BNB3VCZձٞ

  2. ࣗݾ঺հ w ؙࢁ͋Γ͢ w 5XJUUFS!BMJUBTP w (JU)VC!BMJUBTP w ॴଐϐΫγϒגࣜձࣾ

  3. 8FC"TTFNCMZͱ͸ $$  3VTU &NTDSJQUFO ίϯύΠϥ XBTN 8FC"TTFNCMZόΠφϦ

  4. 8FC"TTFNCMZͱ͸ $$  3VTU &NTDSJQUFO ίϯύΠϥ XBTN 8FC"TTFNCMZόΠφϦ )5.- 

    +4 ϒϥ΢β্Ͱಈ࡞
  5. 8FC"TTFNCMZͱ3VCZ 3VCZPO8FC"TTFNCMZ5PN#MBDLIUUQXXXCMBDLUNDPNCMPHSVCZPOXFCBTTFNCMZ NSVCZ $ XBTN )5.-  +4 NSVCZΛϒϥ΢β্Ͱಈ࡞

  6. 8FC"TTFNCMZΛ3VCZͰಈ͔͢ $$  3VTU &NTDSJQUFO XBTN ঺հͨ͠ྫ ຊൃදͰऔΓ্͛Δ Ξϓϩʔν XBTN

    3VCZ੡
 XBTNॲཧܥ 3VCZ
  7. ʮXBHZVʯ3VCZ੡ͷXBTNॲཧܥ XBTN 3VCZ XBHZV w 1VSF3VCZXBTNॲཧܥɺXBHZV ࿨ڇ Λ঺հ w IUUQTHJUIVCDPNFEWBLGXBHZV

    w 3VCZ,BJHJޙɺ!FEWBLG͞ΜͱҰॹʹ։ൃΛਐΊ͍ͯΔ w ຊൃදͰ͸XBHZVͷ೉ղͳ෦෼Λղઆ
  8. XBTNͷόΠφϦܗࣜ όΠφϦܗࣜ

  9. XBTNͷςΩετܗࣜ ςΩετܗࣜ

  10. XBHZVͷΞϓϩʔν XBHZV ςΩετܗࣜ 3VCZͷίʔυ தؒදݱ͔Β3VCZͷίʔυʹม׵ͯ͠FWBM͢Δ

  11. XBHZVͷΞϓϩʔν XBHZV ςΩετܗࣜ 3VCZͷίʔυ தؒදݱ͔Β3VCZͷίʔυʹม׵ͯ͠FWBM͢Δ ม׵͕ҰےೄͰ͸͍͔ͳ͍ྫ

  12. ੍ޚ໋ྩͱCS w 8FC"TTFNCMZʹ͸ҎԼͷΑ͏ͳ੍ޚ໋ྩ͕͋Δ w JGCMPDLMPPQCSCS@JGCS@UBCMFSFUVSODBMMMDBMM@JOEJSFDU

  13. XBTNͷzCSz w CS͸EFQUI ϒϩοΫͷਂ͞ ͋Δ͍͸λάΛҾ਺ʹࢦఆ w JGจΛൈ͚ͨΓɺMPPQΛ܁Γฦͨ͠Γ͢Δͷʹ࢖͏

  14. XBTNͷzCMPDLz 8FC"TTFNCMZ 3VCZ ม׵ w XBTNͷzCMPDLz͸3VCZͷXIJMF USVF CSFBLFOEͰදݱͰ͖Δ w XBTNͷzCSz͸3VCZͷCSFBLʹରԠ

  15. XBTNͷzCMPDLzͱzCMPDLz w XBTNͷzCMPDLzͱzCMPDLz͕ωετ w XBTNͷzCSz͸3VCZͷUISPXDBUDIʹରԠ 3VCZ 8FC"TTFNCMZ ม׵

  16. XBTNͷzMPPQzͱzCMPDLͷωετ 8FC"TTFNCMZ ςΩετܗࣜ 3VCZ ม׵ w XBTNͷzMPPQzͱzCMPDLz͕ωετ w MPPQͷઌ಄ʹ໭ΔͨΊͷม਺͕ඞཁ

  17. ωετͷൈ͚ํΛߟ͑௚͢ w Ұؾʹ֎ଆ·Ͱൈ͚Α͏ͱ ͢Δͱ໘౗ w CSFBL UISPXDBUDI 
 OFYU ͲΕΛ࢖͏͔͸


    ωετͷਂ͞ͱ੍ޚ໋ྩ ʹΑͬͯ୅ΘΔ
  18. ஈ֊తʹωετΛൈ͚Δ ࠷دΓͷωετ͔Βൈ͚͍ͨ ݸ֎ଆͷωετ͔Βൈ͚͍ͨ ݸ֎ଆͷωετ͔Βൈ͚͍ͨ CSͷҾ਺ ୤ग़͍ͨ͠ωετͷਂ͞ Λ ୤ग़͠ͳ͕Β֎΁֎΁఻͍͑ͯ͘3VCZίʔυʹม׵

  19. ಥવͰ͕͢໰୊Ͱ͢ w l)FMMP8PSMEzͱग़ྗ͞ΕΔ3VCZ ͷίʔυʹม׵͍ͨ͠ w ʹڞ௨ͯ͠ೖΔͷ͸
 ͳΜͰ͠ΐ͏
 
 "SFUVSO
 #CSFBL


    $OFYU
  20. SFUVSOΛ࢖ͬͨ৔߹ w ม਺EFQUI
 ୤ग़͍ͨ͠ωετͷஈ਺ w ͜ͷίʔυͰ΍Γ͍ͨ͜ͱ
 CSͷҾ਺ΛϒϩοΫΛ୤ग़
 ͠ͳ͕Β֎΁֎΁ͱ఻͍͑ͯ͘ IUUQTHJUIVCDPNFEWBLGXBHZVCMPCDFFFCCCDCEFCBDFMJCXBHZVXBTNNPEVMFSC-

  21. SFUVSOΛ࢖ͬͨ৔߹ w MBNCEB಺ͰSFUVSO
 खଓ͖Λதஅ͠஋Λฦ͢ w CSΛSFUVSOͱஔ͖׵͓͑ͯΓ
 ϧʔϓͷઌ಄ʹδϟϯϓ͍ͨ͠ IUUQTHJUIVCDPNFEWBLGXBHZVCMPCDFFFCCCDCEFCBDFMJCXBHZVXBTNNPEVMFSC-

  22. SFUVSOΛ࢖ͬͨ৔߹ w @MPPQϝιου಺ͷϒϩοΫͰ SFUVSO
 @MPPQϝιουΛൈ͚Δ
 ϧʔϓ͠ͳ͍
 SFUVSOͨ͠஋  Λฦ͢
 

    IUUQTHJUIVCDPNFEWBLGXBHZVCMPCDFFFCCCDCEFCBDFMJCXBHZVXBTNNPEVMFSC-
  23. CSFBLͷ৔߹ IUUQTHJUIVCDPNFEWBLGXBHZVCMPCDFFFCCCDCEFCBDFMJCXBHZVXBTNNPEVMFSC- w @MPPQϝιου಺ͷϒϩοΫͰ
 CSFBL
 @MPPQϝιουΛதஅ
 OFYU·Ͱ౸ୡͤͣ
 l)FMMPz

  24. w @MPPQϝιου಺ͷϒϩοΫͰ
 OFYU
 ݺͼग़͠ݩ ZJFME ʹ໭Δ
 ໭Γ஋͸OFYUͷҾ਺
 ϧʔϓͷઌ಄ʹ໭ΕΔ OFYUͷ৔߹ IUUQTHJUIVCDPNFEWBLGXBHZVCMPCDFFFCCCDCEFCBDFMJCXBHZVXBTNNPEVMFSC-

  25. OFYUͷ৔߹ w ࠶ͼJGจΛ࣮ߦ ࠓ౓͸FMTF ͳͷͰϧʔϓͤͣ୤ग़͍ͨ͠ IUUQTHJUIVCDPNFEWBLGXBHZVCMPCDFFFCCCDCEFCBDFMJCXBHZVXBTNNPEVMFSC-

  26. OFYUͷ৔߹ w ࠶ͼJGจΛ࣮ߦ ࠓ౓͸FMTF  w ZJFMEͷ໭Γ஋͸͔ͩΒϧʔϓͤͣ w @MPPQ͸Λฦ͢ IUUQTHJUIVCDPNFEWBLGXBHZVCMPCDFFFCCCDCEFCBDFMJCXBHZVXBTNNPEVMFSC-

     
  27. w @CMPDLϝιου಺ͷϒϩοΫͰ
 OFYU
 ݺͼग़͠ݩͷZJFMEʹ໭Γ
 ஋Λฦ͢   IUUQTHJUIVCDPNFEWBLGXBHZVCMPCDFFFCCCDCEFCBDFMJCXBHZVXBTNNPEVMFSC- OFYUͷ৔߹

  28. w @CMPDLϝιου಺ͷϒϩοΫͰ
 OFYU
 ݺͼग़͠ݩͷZJFMEʹ໭Γ
 ஋Λฦ͢ w ແࣄʹωετΛൈ͚ͯ
 l)FMMP8PSMEz OFYUͷ৔߹ 

     IUUQTHJUIVCDPNFEWBLGXBHZVCMPCDFFFCCCDCEFCBDFMJCXBHZVXBTNNPEVMFSC-
  29. CSΛ3VCZͰ؆୯ʹѻ͏ͨΊͷϙΠϯτ w 8FC"TTFNCMZͷzCS͸3VCZͷOFYUʹม׵ w 8FC"TTFNCMZͷJGCMPDLMPPQ͸ɺQSPD·ͨ͸CMPDLΛҾ਺ʹͱΔ
 ϝιουʹ੾Γग़ͯ͠EFQUI͔Β࢝ΊΔ w ϒϩοΫऴ୺ͰOFYUEFQUIΛฦͯ͠ɺͭϒϩοΫΛ୤ग़͢Δ w ͜ΕΒΛڞ௨ͯ͠࢖͏͜ͱͰ੍ޚ໋ྩͷҧ͍ɺωετͷਂ͞Λҙࣝͤͣ

    3VCZʹม׵Մೳ
  30. ·ͱΊ w 8FC"TTFNCMZΛ3VCZʹίϯύΠϧ͢Δίʔυͷ࣮૷ͱಈ࡞ྫΛ঺հ w ϝλϓϩάϥϛϯάύλʔϯͷ͏ͪɺಈతͳϝιουఆٛΛ࢖͍
 8FC"TTFNCMZͷؔ਺Λ3VCZͷϝιουʹίϯύΠϧ͢Δ w 8FC"TTFNCMZͷJGCMPDLMPPQͱCSΛ3VCZʹίϯύΠϧ͢Δࡍ͸
 QSPDΦϒδΣΫτͱOFYUΛ͏·͘࢖͏ͱεοΩϦॻ͚Δ