Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
React Native JSI ソースコードリーディング / React Native JS...
Search
Shoken Fujisaki
October 02, 2021
1.8k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
React Native JSI ソースコードリーディング / React Native JSI source code reading
React Native Matsuri 2021で発表したスライドです。
https://reactnative-matsuri.com/ja
Shoken Fujisaki
October 02, 2021
More Decks by Shoken Fujisaki
See All by Shoken Fujisaki
KitchHike式 React Native 設計チェックポイント / React Native App Design in KitchHike
shoken
0
2.3k
React Nativeコンポーネントを 公開してわかった3つのこと / React Native Component Library npm published
shoken
0
1.9k
React Native for macOS
shoken
1
2k
React Native の E2E テストフレームワーク Detoxの紹介 / React Native E2E Test Detox
shoken
0
3.4k
広告計測してと言われた時にReact Nativeエンジニアが詠む資料 / React Native with AppsFlyer and Firebase Analytics
shoken
3
2.1k
デザイナーからのラブレター デザイナーが本音で話すエンジニアとの新しいカンケイ
shoken
0
1.3k
MongoDB CTO パネルディスカッション / MongoDB CTO panel discussion 2014
shoken
0
910
Featured
See All Featured
For a Future-Friendly Web
brad_frost
183
10k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
570
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
460
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
350
How STYLIGHT went responsive
nonsquared
100
6.3k
First, design no harm
axbom
PRO
2
1.3k
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
Designing for Timeless Needs
cassininazir
1
520
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
Transcript
3FBDU/BUJWF.BUTVSJ-5 3FBDU/BUJWF +4*ιʔείʔυϦʔσ Οϯά 4IPLFO'VKJTBLJ
ࣗݾհ w 4IPLFO'VKJTBLJ !TIPLFOY w גࣜձࣾΩονϋΠΫ ڞಉۀऀ$50 w
ڞஶ3FBDU/BUJWFʹࢧ͑Β͑Δاۀ w ΩονϋΠΫΤϯδχΞνʔϜͰ ݄ץ3/'FBUVSFT࿈ࡌத IUUQTUFDILJUDIIJLFDPN
ࠓճ+4*ʹͨ͠ ίʔυϦʔσ ΟϯάͰ͢
ΞδΣϯμ 3FBSDIJUFDUVSFͱ+4* +4*ͷιʔείʔυΛಡΉ +4*.PEVMFͷιʔείʔυΛಡΉ
ΞδΣϯμ 3FBSDIJUFDUVSFͱ+4* +4*ؔ࿈ͷιʔείʔυΛಡΉ +4*ΛͬͨϥΠϒϥϦΛಡΉ
#SJEHF $ 4IBEPX5ISFBE :PHB /BUJWF.PEVMFT +BWB0CK$ +4#VOEMF +BWB4DSJQU
+4$ +40/ +40/ ඇಉظΩϡʔ 6*5ISFBE +45ISFBE /BUJWF6* +BWB0CK$ 3FBSDIJUFDUVSFҎલ #SJEHF
#SJEHF $ 4IBEPX5ISFBE :PHB /BUJWF.PEVMFT +BWB0CK$ +4#VOEMF +BWB4DSJQU
+4$ +40/ +40/ ඇಉظΩϡʔ 6*5ISFBE +45ISFBE #SJEHFҰͭͳͷͰϘτϧ ωοΫʹͳΓ͍͢ ඇಉظͰॲཧ͢ΔͨΊɺىಈ࣌ ʹશͯಡΈࠐΉඞཁ͕͋Δ ૄ݁߹ͳඇಉظॲཧͰྑͦ͞͏͕ͩ τϨʔυΦϑ ඇಉظͷͨΊɺύϑΥʔϚϯε ʹͳΔՄೳੑ /BUJWF6* +BWB0CK$ ϨϯμϦϯάߋ৽ʹ#SJEHFɾ +45ISFBEͷ௨՟͕ඞཁ
+4#VOEMF +BWB4DSJQU +45ISFBE 3FBSDIJUFDUVSFҎ߱ /FX"SDIJUFDUVSFͱ+4* +4* +47. 0CKFDUJWF$ +BWB+/*
$
+4#VOEMF +BWB4DSJQU +45ISFBE 3FBSDIJUFDUVSFҎ߱ /FX"SDIJUFDUVSFͱ+4* +4* +47. /BUJWF.PEVMFT
+BWB0CK$ 6*5ISFBE /BUJWF6* +BWB0CK$
+4#VOEMF +BWB4DSJQU +45ISFBE 3FBSDIJUFDUVSFҎ߱ /FX"SDIJUFDUVSFͱ+4* +4* +47. /BUJWF.PEVMFT
+BWB0CK$ 6*5ISFBE /BUJWF6* +BWB0CK$ $ +40/͕ͳ͘ͳͬͨ #SJEHFܦ༝ͷඇಉظॲཧ͔Β ͷಉظॲཧ $ Ͱڞ௨ͷ/BUJWF.PEVMFT ͕ॻ͚ΔΑ͏ʹͳͬͨ -B[ZMPBEJOH͕Մೳʹ
ΞδΣϯμ 3FBSDIJUFDUVSFͱ+4* +4*ؔ࿈ͷιʔείʔυΛಡΉ +4*ΛͬͨϥΠϒϥϦΛಡΉ
݄ʹ+4$͔Β+4*ͷมߋ͕ ίϛοτ͞ΕΔ IUUQTHJUIVCDPNGBDFCPPLSFBDUOBUJWFDPNNJUDEFGCCCBGDBCBCE 3$5$YY#SJEHFͰҎԼͷมߋ มߋલ+4$&YFDVUPS'BDUPSZ มߋޙ+4*&YFDVUPS'BDUPSZ +4$3VOUJNF
+4*&YFDVUPS'BDUPSZ ͱ͍͏ͷ͕ॏཁͦ͏🤔
3$5$YY#SJEHFͰҎԼͷมߋ มߋલ+4$&YFDVUPS'BDUPSZ มߋޙ+4*&YFDVUPS'BDUPSZ +4$3VOUJNF
ݱࡏͷ3$5$YY#SJEHFNN IUUQTHJUIVCDPNGBDFCPPLSFBDUOBUJWFCMPCDEFCECFEFEDBGDGCB3FBDU$YY#SJEHF3$5$YY#SJEHFNN-- 3$5@64&@)&3.&4͕USVFͳΒ )FSNFT&YFDVUPS'BDUPSZ +4*&YFDVUPS3VOUJNF*OTUBMMFS GBMTFͳΒ +4$&YFDVUPS'BDUPSZ
+4*&YFDVUPS3VOUJNF*OTUBMMFS
+4*&YFDVUPS3VOUJNF*OTUBMMFS 🤔
)FSNFT&YFDVUPS'BDUPSZI IUUQTHJUIVCDPNGBDFCPPLSFBDUOBUJWFCMPCFBEBDGDBECBDEECGD3FBDU$PNNPOIFSNFTFYFDVUPS)FSNFT&YFDVUPS'BDUPSZI )FSNFT&YFDVUPS'BDUPSZͷୈҰҾ͕ +4*&YFDVUPS3VOUJNF*OTUBMMFS
3$5+4*&YFDVUPS3VOUJNF*OTUBMMFSNN IUUQTHJUIVCDPNGBDFCPPLSFBDUOBUJWFCMPCFBEBDGDBECBDEECGD3FBDU$YY#SJEHF3$5+4*&YFDVUPS3VOUJNF*OTUBMMFSNN ίʔυΛಡΜͰΘ͔ͬͨ͜ͱ ɾ/BUJWFͱCJOE͍ͯ͠Δ ɾSVOUJNFΛͯ͠ϥοϓͯ͠Δ SVOUJNFʹ)FSNFTͳͲ+BWB4DSJQU&OHJOF ͕ࢀর͞ΕΔɻ +4*+4&OHJOFͷϥούʔɻ
+4*ؔ࿈Ϋϥε w SFBDUOBUJWF3FBDU$PNNPOKTJFYFDVUPSKTJSFBDU+4*&YFDVUPS w SFBDUOBUJWF3FBDU$PNNPOKTJFYFDVUPSKTJSFBDU+4*/BUJWF.PEVMFT
+4*&YFDVUPSDQQ IUUQTHJUIVCDPNGBDFCPPLSFBDUOBUJWFCMPCBBDDCBGFBFE3FBDU$PNNPOKTJFYFDVUPSKTJSFBDU+4*&YFDVUPSDQQ /BUJWF.PEVMF1SPYZ /BUJWF.PEVMFTͷࢀরΛ࣋ͭ
+4*/BUJWF.PEVMFTDQQ IUUQTHJUIVCDPNGBDFCPPLSFBDUOBUJWFCMPCBBDDCBGFBFE3FBDU$PNNPOKTJFYFDVUPSKTJSFBDU+4*/BUJWF.PEVMFTDQQ SVOUJNFHMPCBM HFU1SPQFSUZ"T'VODUJPO SVOUJNFHMPCBM HFU1SPQFSUZ"T0CKFDU Λݺͼग़ͯ͠࡞ͨ͠NPEVMFΛฦ͢
+4#VOEMF +BWB4DSJQU +45ISFBE +4* +47. /BUJWF.PEVMFT +BWB0CK$ 6*5ISFBE
/BUJWF6* +BWB0CK$ $ ͜͜·ͰಡΜͩίʔυ KTJ3VOUJNFΦϒδΣΫτ +4*&YFDVUPS +4*/BUJWF.PEVMFT )FSNFT +4$ )FSNFT&YFDVUPS'BDUPSZ +4$&YFDVUPS'BDUPSZ 3$5+4*&YFDVUPS3VOUJNF*OTUBMMFS KTJDQQ +4*%ZOBNJDDQQ SVOUJNFHMPCBM TFU1SPQFSUZ SVOUJNFHMPCBM HFU1SPQFSUZ
ίϥϜTFU5JNFPVUͷ࣮
SFBDUOBUJWF-JCSBSJFT$PSF5JNFST +45JNFSTKT /BUJWF5JNJOHͱ
SFBDUOBUJWF-JCSBSJFT$PSF5JNFST /BUJWF5JNJOHKT 5SVCP.PEVMFʂ
SFBDUOBUJWF3FBDU$PSF.PEVMFT 3$55JNJOHNN TFU5JNFPVUͰΘΕΔDSFBUF5JNFSͷ J04ωΠςΟϒ࣮
TFU5JNFPVU5VSCP.PEVMFԽࡁΈ
ΞδΣϯμ 3FBSDIJUFDUVSFͱ+4* +4*ͷιʔείʔυΛಡΉ +4*.PEVMFͷιʔείʔυΛಡΉ
DSBGU[EPH͞ΜͷSFBDUOBUJWFRVJDLCBTF ͷίʔυΛಡΉ IUUQTHJUIVCDPNDSBGU[EPHSFBDUOBUJWFRVJDLCBTF
IUUQTUFDILJUDIIJLFDPNFOUSZSFBDUOBUJWFGFBUVSFT •React NativeͷύϑΥʔϚϯεͱɺNULLจࣈΛؚΉόΠφϦจࣈྻΛॲཧͰ͖ͳ͍՝ •base64 ͰΤϯίʔυ͞Εͨը૾σʔλΛJS ͔ΒReact Native ϒϦοδΛհͯ͠WebView ʹ͢ͷ Ͱ͕͔͔࣌ؒΔ
•C++ ͰJSI ωΠςΟϒϞδϡʔϧΛ࡞ͨ͠ •JSI Λ༻͢Δ͜ͱʹΑΓɺJavaScript C++ ϗετΦϒδΣΫτͷࢀরΛอ࣋͠ɺϝιουΛݺ ͼग़͢͜ͱ͕Ͱ͖Δɻ͜ΕʹΑΓɺઌʹड़ͨNULLจࣈͷΛ࠷ऴతʹճආͰ͖ͨɻ
͜ͷลΓͷίʔυΛಡΉ
DQQCBTFI CBTF@FODPEFCBTF@EFDPEFͳͲͷ ͕ؔએݴ͞Ε͍ͯΔɻ࣮CBTFDQQ
DQQSFBDUOBUJWFRVJDLCBTFDQQ ࣮ࡍͷ+4*όΠϯσΟϯάॲཧɻ +BWB4DSJQU͢ΛKTJ7BMVFͱͯ͠࡞ JOTUBMM#BTFؔͷ࣮ +BWB4DSJQUͷάϩʔόϧ +BWB4DSJQUͰ͑ΔϓϩύςΟʢؔʣ
JPT2VJDL#BTFNN +4*όΠϯσΟϯάެ։༻ʹ 3FBDU3$5#SJEHF 1SJWBUFϔομʔϑΝΠϧΛΠϯϙʔτ DYY#SJEHFSVOUJNFͷࢀরΛऔಘɻ $ ίʔυͰૢ࡞༻ͷ+BWB4DSJQU7BMVFTΛ ࡞͢ΔͨΊʹඞཁͳSVOUJNFΦϒδΣΫτ SVOUJNFΛJOTUBMM#BTFؔʹ͠
ͯɺ+4*όΠϯσΟϯάΛ࡞
JOEFYUTͰؔόΠϯσΟϯάΛએݴ DQQͰKTJ3VOUJNFHMPCBM TFU1SPQFSUZ ͨؔ͠ FYQPSUGVODUJPO
"QQUTYͰJNQPSU FYQPSUͨ͠GVODUJPO
+4#VOEMF +BWB4DSJQU +45ISFBE +4* +47. /BUJWF.PEVMFT +BWB0CK$ 6*5ISFBE
/BUJWF6* +BWB0CK$ $ CBTFI DQQ SFBDUOBUJWFRVJDLCBTFI DQQ 2VJDL#BTFI NN ·ͱΊ KTJ3VOUJNFΦϒδΣΫτ +4*&YFDVUPS +4*/BUJWF.PEVMFT )FSNFT +4$ )FSNFT&YFDVUPS'BDUPSZ +4$&YFDVUPS'BDUPSZ 3$5+4*&YFDVUPS3VOUJNF*OTUBMMFS KTJDQQ +4*%ZOBNJDDQQ
͝੩ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ ΩονϋΠΫςοΫϒϩάͰ 3FBDU/BUJWF࠷৽ใΛ࿈ࡌத IUUQTUFDILJUDIIJLFDPN