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

React Native New Architecture 移行実践報告

Avatar for taminif taminif
November 26, 2025

React Native New Architecture 移行実践報告

React Native Meetup #23

Avatar for taminif

taminif

November 26, 2025
Tweet

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ϲ݄ఔ౓ͰϦϦʔε·ͰͰ͖·ͨ͠ • ͜ͷ஌ݟ͕ଞͷ։ൃऀͷࢀߟʹͳΓɺΑΓ։ൃ͕ૣ͘ͳΔ͜ͱΛ ف͍ͬͯ·͢🙏