Takeru Chuganji2021/10/02 10:10‐10:50ϝϧΧϦUS͕ϞόΠϧΞϓϦΛReact NativeͰ࡞Γ͍ͯ͠ΔReact Native Matsuri 2021
View Slide
Takeru ChuganjiSoftware EngineerMercari, Inc.chuganzy
TokyoJapanPalo Alto / Portland / BostonUnited States
TokyoJapanPalo Alto / Portland / BostonUnited StatesϑϧϦϞʔτԽ
$15$15$15$15$15$15$15$15$15$15$15$15What are you looking for?CategoryHome Chat My PageSellSearch2014 2017 2017 2018 2021
$15$15$15$15$15$15$15$15$15$15$15$15What are you looking for?CategoryHome Chat My PageSellSearch2014 2017 2017 2018 2021Objective-C, Swift, Java Swift, Java, Kotlin, React Native
$15$15$15$15$15$15$15$15$15$15$15$15What are you looking for?CategoryHome Chat My PageSellSearch2014 2017 2017 2018 2021Objective-C, Swift, Java Swift, Java, Kotlin, React Native৽͍͠ίʔυϕʔε
Double2017.4-7 RewriteϓϩδΣΫτ
Double2017.4-7 RewriteϓϩδΣΫτϏδωεࢦඪΛ“ഒ”ʹ͢Δ
DoubleRewriteͷഎܠUS൛ϝϧΧϦΛࠜຊ͔Βߟ͑͠ظؒͰ࣮ݱ͢ΔUS։ൃνʔϜͷຊνʔϜ͔Βͷಠཱٕज़ελοΫΛ৽͠DXΛ্ͤ͞ΔUS։ൃνʔϜͷΧϧνϟʔ࠶ߏஙɹͳͲ
ϗʔϜ ৄࡉ ϓϩϑΟʔϧ ϨϏϡʔ
Native Native React Native React Native
DoubleNativeͱReact NativeͷHybridΞϓϦNativeϗʔϜ / ݕࡧ /ৄࡉ / ग़ / ߪೖ /Σϒ / αΠϯΠϯ ͳͲϝΠϯ ಈత / ύϑΥʔϚϯεReactNative֤छઃఆ / ট /औҾ / Ҿ͖མͱ͠ / ݸਓೝূ ͳͲαϒ੩త / ಠཱ
DoubleReact NativeΛ࠾༻ͨ͠ཧ༝୯७ʹNative͚ͩͰΔ࣌ؒͱਓ͕Γͳ͔ͬͨ։ൃظؒ 3ϲ݄AndroidΤϯδχΞ 4ਓiOSΤϯδχΞ 4ਓ
DoubleReact NativeΛ࠾༻ͨ͠ཧ༝୯७ʹNative͚ͩͰΔ࣌ؒͱਓ͕Γͳ͔ͬͨ։ൃظؒ 3ϲ݄AndroidΤϯδχΞ 4ਓiOSΤϯδχΞ 4ਓͦͷଞͷJavaScriptॻ͚Δਓ 4-6ਓ
DoubleϏδωεͷϦϒϥϯσΟϯάΧʔτਅآೝূUberఏܞૹޙ͍ܾࡁɹͳͲ ʴ ଟͷABςετྲྀ௨૯ֹ
DoubleϏδωεͷϦϒϥϯσΟϯάΧʔτਅآೝূUberఏܞૹޙ͍ܾࡁɹͳͲ ʴ ଟͷABςετྲྀ௨૯ֹଞʹΓ͍ͨ͜ͱ͕ࢁ΄Ͳʂ
DoubleҰํ։ൃ໘Ͱ…࠾༻ߴΦϯϘʔσΟϯάίετߴίϛϡχέʔγϣϯίετߴϝϯςφϯείετߴϏϧυ࣌ؒεϧʔϓοτʢงғؾʣ
DoubleҰํ։ൃ໘Ͱ…࠾༻ߴΦϯϘʔσΟϯάίετߴίϛϡχέʔγϣϯίετߴϝϯςφϯείετߴϏϧυ࣌ؒεϧʔϓοτʢงғؾʣScalabilityʹ͋Γ
Doubleঢ়گվળͷͨΊʹ1ϓϥοτϑΥʔϜͷΈͰͷABςετڞ௨ϩδοΫͷNative ModuleԽΠϯϑϥͷվળϏϧυͷߴԽ
Doubleঢ়گվળͷͨΊʹReact NativeΞϓϦʹͨ͠Β͍͍ͷͰʁʢ2019/4ʣ1ϓϥοτϑΥʔϜͷΈͰͷABςετڞ௨ϩδοΫͷNative ModuleԽΠϯϑϥͷվળϏϧυͷߴԽ
React NativeΞϓϦԽʹ͚ͯReact NativeΞϓϦԽ͢Δํ๏Refactoring طଘΞϓϦͷReact NativeΛ૿͍ͯ͘͠Rewrite ৽نͰΞϓϦΛॻ͖͢
React NativeΞϓϦԽʹ͚ͯRefactoring vs Rewriteن ϦεΫ ظؒ ෛ୲ қRefactoring தRewrite ઈେ
React NativeΞϓϦԽʹ͚ͯRefactoring vs Rewriteن ϦεΫ ظؒ ෛ୲ қRefactoring த খRewrite ઈେ େ
React NativeΞϓϦԽʹ͚ͯRefactoring vs Rewriteن ϦεΫ ظؒ ෛ୲ қRefactoring த খ 3ʴRewrite ઈେ େ 1
React NativeΞϓϦԽʹ͚ͯRefactoring vs Rewriteن ϦεΫ ظؒ ෛ୲ қRefactoring த খ 3ʴ େRewrite ઈେ େ 1 த
React NativeΞϓϦԽʹ͚ͯRefactoring vs Rewriteن ϦεΫ ظؒ ෛ୲ қRefactoring த খ 3ʴ େ ߴRewrite ઈେ େ 1 த த
React NativeΞϓϦԽʹ͚ͯRefactoring vs Rewriteن ϦεΫ ظؒ ෛ୲ қRefactoring த খ 3ʴ େ ߴRewrite ઈେ େ 1 த தReact NativeΞϓϦԽࣗମ͕ΰʔϧͰͳ͍
React NativeΞϓϦԽʹ͚ͯͦͦͰ͖Δͷ͔ʁ࣮ݧΞϓϦ։ൃ / ٕज़ݕূReact NativeΛ͍ͬͯΔձࣾͷώϠϦϯάReact / Native྆ํͷ๛ͳࣝ҆શͳϦϦʔεϓϥϯχϯάଞΫϩεϓϥοτϑΥʔϜٕज़ͱͷൺֱɹͳͲ
React NativeΞϓϦԽʹ͚ͯFlutterͱͷൺֱطʹReact Nativeͷ͕ࣝ͋ΔJavaScriptύϑΥʔϚϯεेʹΑ͘վળͷ༧ఆ͢Β͋ΔWebରԠ
Denali2021.4- RewriteϓϩδΣΫτ
Denali2021.4- RewriteϓϩδΣΫτΞϝϦΧͰҰ൪ߴ͍ࢁ
DenaliϞόΠϧνʔϜ৫ମ੍iOS Android React Native DenaliʢRewriteʣ
DenaliϞόΠϧνʔϜ৫ମ੍iOS Android React Native DenaliʢRewriteʣ…
DenaliϞόΠϧνʔϜ৫ମ੍iOS Android React Native DenaliʢRewriteʣ…ඞཁʹԠͯ͡ੵۃతʹॿ͚߹͏
Denaliٕज़ελοΫTypeScript Expo Redux Toolkit React NavigationfastlaneProtocol Buffers SentryͳͲGitHub Actions
DenaliলΛੜ͔ٕͨ͠ज़ํ“؆୯” ͳίʔυΛॻ͘υΩϡϝϯτΛੵۃతʹΞοϓσʔτࣾษڧձʢDiscussionʣΛຖि։࠵σβΠϯγεςϜΛશ໘దԠ
Denaliεέʔϧ͍ͯ͠Δ։ൃݩWebνʔϜϝϯόʔݩAPIνʔϜϝϯόʔݱiOS / AndroidνʔϜϝϯόʔNativeະܦݧΤϯδχΞ࠾༻ۀҕୗɹͳͲͷίϯτϦϏϡʔτεϧʔϓοτʢงғؾʣ
DenaliϑΣʔζPhase 1 Phase 2 Phase 3 Phase 4
DenaliϑΣʔζPhase 1 Phase 2 Phase 3 Phase 4ج൫ओཁը໘νέοτચ͍ग़͠
DenaliϑΣʔζPhase 1 Phase 2 Phase 3 Phase 4ج൫ओཁը໘νέοτચ͍ग़͠ඞਢػೳͷࣾςετ։࢝
DenaliϑΣʔζPhase 1 Phase 2 Phase 3 Phase 4ج൫ओཁը໘νέοτચ͍ग़͠ඞਢػೳͷࣾςετ։࢝αϒͷػೳݱߦΞϓϦͱͷࠩݱߦ։ൃͷ εϩʔμϯ
DenaliϑΣʔζPhase 1 Phase 2 Phase 3 Phase 4ج൫ओཁը໘νέοτચ͍ग़͠ඞਢػೳͷࣾςετ։࢝αϒͷػೳݱߦΞϓϦͱͷࠩݱߦ։ൃͷ εϩʔμϯϑΣʔζϦϦʔεͷ։࢝ෆ۩߹मਖ਼100%ϦϦʔεʂ
DenaliϑΣʔζPhase 1 Phase 2 Phase 3 Phase 4ج൫ओཁը໘νέοτચ͍ग़͠ඞਢػೳͷࣾςετ։࢝αϒͷػೳݱߦΞϓϦͱͷࠩݱߦ։ൃͷ εϩʔμϯϑΣʔζϦϦʔεͷ։࢝ෆ۩߹मਖ਼100%ϦϦʔεʂνέοτશମͷ60%ۙ͘ফԽࡁΈ
2022AndroidϩʔϧΞτ։࢝༧ఆʂ
React NativeޙΤϯδχΞ৫ͱͯ͠ࢦ͢ઌReact NativeίϛϡχςΟͷߩݙҾ͖ଓ͖ “ෑډ” Λ͘͢Δ“Pods”ʢʹখ͍͞νʔϜʣͰ Γ͍ͨ͜ͱΛͳΊΒ͔ʹ࣮ߦ͢ΔΤϯδχΞੵۃతʹΞΠσΟΞΛग़͢
React NativeޙΤϯδχΞ৫ͱͯ͠ࢦ͢ઌReact NativeίϛϡχςΟͷߩݙҾ͖ଓ͖ “ෑډ” Λ͘͢Δ“Pods”ʢʹখ͍͞νʔϜʣͰ Γ͍ͨ͜ͱΛͳΊΒ͔ʹ࣮ߦ͢ΔΤϯδχΞੵۃతʹΞΠσΟΞΛग़͢ຖ͕ϋοΧιϯঢ়ଶʹͳΔ!?
શ໘తɾੵۃతʹ࠾༻த
We are hiring!શΤϯδχΞੵۃ࠾༻தUS / JPͱʹ࠾༻தReact Native EngineeriOS EngineerAndroid EngineerAPI EngineerɹͳͲͳͲ