Upgrade to Pro — share decks privately, control downloads, hide ads and more …

React Native New Architecture 移行実践報告

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for taminif taminif
November 26, 2025

React Native New Architecture 移行実践報告

React Native Meetup #23

Avatar for taminif

taminif

November 26, 2025

More Decks by taminif

Other Decks in Programming

Transcript

  1. ࿩͢͜ͱɾ࿩͞ͳ͍͜ͱ • ࿩͢͜ͱ • New Architectureͷ֓ཁ • Ҡߦ࣮ફͱ࣮ࡍʹى͖ͨ͜ͱ • ࿩͞ͳ͍͜ͱ

    • Repro ͷ SDK ʹ͓͍ͯɺͦ΋ͦ΋Legacy ArchitectureΛ࢖͍ͬͯΔཧ༝ • ։ൃதʹ࢖ͬͨAIͷ࿩
  2. ࣗݾ঺հ • Reproגࣜձࣾ Development Div. App SDK ΤϯδχΞ • ීஈ͸iOS/AndroidͲͪΒ΋։ൃͯ͠·͢

    • ࠓ೔͸େࡕ͔Βདྷ·ͨ͠ • ීஈ͸ϑϧϦϞʔτͰۈ຿͍ͯ͠·͢ • React Native͸ SDK ͷ։ൃͰ৮Δ͘Β͍ͷ஌ࣝʢͳͷͰ͓खॊΒ͔ʹ͓ئ͍͠·͢ɾɾʣ
  3. Reproגࣜձࣾͱ͸ • ϚʔέςΟϯάιϦϡʔγϣϯΛఏڙ͢Δձࣾ • ΫϥΠΞϯτ͕ఏڙ͢ΔΞϓϦʹ SDK Λಋೖ͢Δ͜ͱͰɺϓογϡ௨஌ ΍ΞϓϦ಺ϝοηʔδΛग़͢͜ͱ͕Ͱ͖Δ • iOS/Android

    ΞϓϦ͓Αͼ֤छϓϥοτϑΥʔϜΛαϙʔτ • React Native/Flutter/Unity/Cordova/Cocos2d-x • SDK಺෦Ͱ NativeModules Λ࢖ͬͯ iOS/Android ͷίʔυΛݺͼग़͍ͯ͠ Δ
  4. ͳͥ New Architecture αϙʔτ͕ඞཁ͔ • React Native ͷόʔδϣϯΞοϓΛݕ౼͍ͯ͠ΔΫϥΠΞϯτ͔Β ʮόʔδϣϯΞοϓΛߦ͏ͱSDKͰΤϥʔ͕ൃੜ͢Δʯͱ໰͍߹ΘͤΛड͚Δ •

    όʔδϣϯΞοϓΛߦ͏͜ͱͰ New Architecture ͷϑϥά͕ONʹͳΓ NativeModules ͷݺͼग़͠ͰΤϥʔʹͳ͍ͬͯͨ • NativeModules ʹ୅Θͬͯ৽࣮͘͠૷͞Εͨ TurboModules ͷରԠ͕ඞਢ → New Architecture ΁ͷҠߦ͕ඞཁʹͳͬͨ • ʢͪͳΈʹʣNew Architecture ͸ React Native v0.74 ͔ΒσϑΥϧτͰ༗ޮʹͳ͍ͬͯΔ
  5. ʢཁ๬͋Ε͹ʣNew Architecture ͷ؆୯ͳઆ໌ • New Architecture ͱ͸ɺ React Native Λߴ଎Խɾ҆ఆԽͤ͞ΔͨΊ

    ͷࠜຊతͳ࠶ઃܭʢGeminiஊʣ • ैདྷͷੑೳͷϘτϧωοΫͩͬͨʮϒϦοδʯΛͳ͘͠ɺ JavaScript ͱ Native Code ͕௚઀௨৴͢Δ͜ͱͰ࣮ݱ • ͜ͷϒϩά͕ͱͯ΋ࢀߟʹͳΓ·͢ʂʢਤ΋͋Γ·͢ʂʣ • https://tomoima525.hatenablog.com/entry/2020/12/18/183556
  6. New Architecture Λαϙʔτ͢Δ·Ͱͷ ϙΠϯτᶃ: Codegen • React Native ͷ JavaScript

    ίʔυͱ Native Code ͷʮܕʯΛࣗಈͰ ಉظͤ͞Δ࢓૊Έ • ։ൃऀ͸ Native Ͱ࣮ߦ͍ͨ͠ίʔυΛʢޙग़͢ΔʣSpecΛ༻ҙ͢Δ ͚ͩͰͭͳ͗ࠐΈΛߦͬͯ͘ΕΔ • ۩ମతʹ͸ɺϏϧυ࣌ʹ C++ ͷϒϦοδίʔυΛࣗಈੜ੒͢Δ https://reactnative.dev/docs/the-new-architecture/what-is-codegen
  7. New Architecture Λαϙʔτ͢Δ·Ͱͷ ϙΠϯτᶃ: Codegen • ࢖͍ํ: con fi g.json

    ʹ Codegen ͷ؀ڥΛઃఆ͢Δ -> Ϗϧυ࣮ߦ࣌ʹίʔυΛࣗಈੜ੒ͯ͘͠ΕΔʢ࣍ϖʔδʣ
  8. New Architecture Λαϙʔτ͢Δ·Ͱͷ ϙΠϯτᶄ: Spec • JavaScript ͱ Native ؒͰ΍ΓऔΓ͢Δػೳ΍ϓϩύςΟͷ࢓༷Λఆ

    ٛͨ͠ɺ TypeScript/Flow Ͱهड़ͨ͠ܕఆٛϑΝΠϧ • ͨͩ͠ TypeScript αϙʔτ͸ϕʔλ൛ʢυΩϡϝϯτະΞοϓσʔτͷՄೳੑ͋Γʣ • Codegen ͸͜ͷϑΝΠϧΛݩʹ C++/Native Code Λੜ੒͢Δ • SDK Λಋೖͨ͠ΞϓϦ͸ Spec ϑΝΠϧʹఆٛ͞Εͨϝιου/ϓϩ ύςΟΛݺͼग़͢͜ͱͰ Native Code Λ࣮ߦͰ͖Δ
  9. New Architecture Λαϙʔτ͢Δ·Ͱͷ ϙΠϯτᶅ: Legacy Architectureͱͷޙํޓ׵ • લఏ: Legacy Architecture

    ͱ New Architecture ͸ཱ྆Ͱ͖ͳ͍ • New Architecture ϑϥά͕OFFʹͳ͍ͬͯΔΞϓϦ͸ NativeModules ͕ಈ࡞͢Δඞཁ͕͋Δ • υΩϡϝϯτΛࢀߟʹɺ iOS/Android × Legacy/New Architecture ͦΕͧΕ෼͚ͯίʔυΛॻ͘ඞཁ͕͋Δʢ࣍ϖʔδʣ • Spec ϑΝΠϧ͸ڞ௨ͰOK
  10. ։ൃ࣮ફใࠂ ͦͷᶄ: ೔ຊޠͷهࣄ͕ݟ͔ͭΒͳ͍ • ʢࣗ෼͕ௐ΂ͨݶΓʣNew Architecture + ֎෦ϥΠϒϥϦͷҠߦྫ͸ ΄ͱΜͲݟ͔ͭΒͳ͔ͬͨ •

    Firebase΍Brazeʢڝ߹ʣͷιʔεΛݟͯษڧ͍ͯͨ͠ • ಛʹޙํޓ׵ʹ͍ͭͯɺҠߦྫ͕ݟ͔ͭΒͳ͍ • υΩϡϝϯτ͸͋Δʹ͸͋Δͷ͕ͩɺΤϥʔ͕ൃੜͨ࣌͠ʹͲ͏͢ ΂͖͔Λಛʹۤ࿑ͨ͠
  11. ։ൃ࣮ફใࠂ ͦͷᶅ: ফ͍͑ͯ͘αϯϓϧͱυΩϡϝϯτ • ͖͔͚ͬ: JavaScriptͰ΋ New Architecture ͔Ͳ͏͔൑ఆ͍ͨ͠ •

    index.js Ͱ New Architecture ͔Ͳ͏͔൑ఆ͢ΔͨΊͷॲཧ -> global.__turboModuleProxy • ௐࠪͨ͠ͱ͜ΖˢΛ࢖ͬͯ൑ఆ͍ͯ͠ΔWebهࣄ΍Geminiͷճ౴͕ ग़ͯ͘Δ
  12. ։ൃ࣮ફใࠂ ͦͷᶆ: ख୳ΓͰίʔυΛॻ͍͍ͯ͘ • TypeScript Ͱॻ͔Εͨ Spec ͱ Native Code

    ͷܕΛ߹Θͤͳ͍ͱੜ੒ ͞ΕͨΫϥεΛ Override Ͱ͖ͳ͍ • ΫΠζ: Codegen ͕ TypeScript ͔Β Java ʹίʔυม׵͢Δ࣌ TypeScript ͷ Numberܕ͸Կʹม׵͞ΕΔͰ͠ΐ͏ʁ ᶃint ᶄdouble ᶅNumber • ͜Ε͸υΩϡϝϯτʹॻ͔Ε͍ͯͨʢ͚Ͳؾ͚ͮͳ͔ͬͨʣ
  13. ։ൃ࣮ફใࠂ ͦͷᶇ: ޙํޓ׵Λҡ࣋ͭͭ͠ίʔυΛॻ͘ • SDKʹ༻ҙ͍ͯͨ͠ϝιου͸͜Ε·Ͱ௨Γݺͼग़ͤΔඞཁ͕͋Δ • Ұ෦ index.js ͰσʔλΛՃ޻͔ͯ͠Β Native

    ʹ౉͍ͯ͠Δॲཧ͕ ͋ͬͨ • New Architecture ͸ Spec Ͱఆٛͨ͠ϝιουͱ௚௨Ͱ౉͍ͯ͠Δ • ղܾࡦ: Legacy Architecture ઐ༻ͷ Native Code Λ༻ҙ͠ɺ index.js Ͱ෼ذ͢Δ
  14. ·ͱΊ • গͳ͍৘ใͱ Gemini ͷ͓͔͛ͰͳΜͱ͔։ൃ͢Δ͜ͱ͕Ͱ͖ͨ • React Native Ͱ Native

    पΓΛ৮Δ͜ͱ͕͋Ε͹ ੋඇͱ΋ࢀߟʹ͍ͯͩ͘͠͞ • ͓Αͦ2ϲ݄ఔ౓ͰϦϦʔε·ͰͰ͖·ͨ͠ • ͜ͷ஌ݟ͕ଞͷ։ൃऀͷࢀߟʹͳΓɺΑΓ։ൃ͕ૣ͘ͳΔ͜ͱΛ ف͍ͬͯ·͢🙏