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
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
430
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Are puppies a ranking factor?
jonoalderson
2
4k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Into the Great Unknown - MozCon
thekraken
41
2.8k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Typedesign – Prime Four
hannesfritz
42
3.2k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
210
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Leo the Paperboy
mayatellez
10
2.3k
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