ããã¯äœã§ãã ããã¯ãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã®å€§éäœæãè€è£œãããã³éçšäžã®ä¿å®ãå¯èœã«ãããã«ãã¢ãžã¥ãŒã«è£œåã§ãã
![](https://habrastorage.org/files/9b7/42d/b4c/9b742db4c3dd49b8ae379d6f8a0a82c2.jpg)
ããã§ãç§ãã¡ã¯é çªã«ããããŠãã€ã³ãããšã«äœãããŸãã
補åéçº
React Nativeã©ã€ãã©ãªã䜿çšããŠç¬èªã®ãã¬ãŒã ã¯ãŒã¯ãéçºããŠããŸãã åœç€Ÿã®ãã¬ãŒã ã¯ãŒã¯ã¯ãåŸæ¥å¡åãã®ESFã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã«å«ãŸããŠããããã€ãã£ãã³ãŒããå«ãã¢ãã€ã«ã³ã¢ã§ãã ã¢ãã€ã«ããžãã¹ã¢ããªã±ãŒã·ã§ã³ã¯JavaScriptã§éçºãããŠããŸãã
ãã³ã³ããŒãã³ãããŸãã¯ããµãŒãã¹ããšåŒã°ãããšã³ãã£ãã£ã®å žåçãªã³ãŒããã©ã°ã¡ã³ããåãåºããŸãã
çŸæç¹ã§ã¯ãã³ã³ããŒãã³ãã«ã¯3ã€ã®ã¿ã€ãããããŸãã
- èŠèŠçãªã³ã³ããŒãã³ãïŒæ§åŒåããããã¿ã³ãã¹ã€ããããªã¹ããã¹ã€ãããããŒãããŒããŒãªã©ïŒ;
- éããžã¥ã¢ã«ãµãŒãã¹ïŒãããã¯ãŒã¯ãèªèšŒããã®ã³ã°ããªã¢ãŒãæ§æãªã©ïŒ;
- ã¢ãã€ã«ãŠã£ãžã§ããïŒãããã·ã¥ããŒãããšåŒã°ããç¹å¥ãªã»ã¯ã·ã§ã³ã«éçŽãããã€ã³ãžã±ãŒã¿ãŒã衚瀺ã§ãããšã³ãããŒãšã³ãã®ã³ã³ããŒãã³ãïŒã
ã³ã³ããŒãã³ãã«ã¯JavaScriptã®ããªããžã©ãããŒãããïŒReactNativeã¡ã«ããºã ã䜿çšïŒãJavaScriptéçºè ã¯JS / TSãReact + Reduxã¹ã¿ãã¯ã䜿çšããŠã¢ãã€ã«ã¯ã©ã€ã¢ã³ããšããã³ããšã³ãã¯ã©ã€ã¢ã³ããäœæã§ããŸãã
åã³ã³ããŒãã³ãã®èåŸã«ã¯ããã€ãã£ãå®è£ ããããŸãã Objective-Cãã¡ã€ã³èšèªãšããŠäœ¿çšããå³å¯ã«ã¢ãŒããã¯ãã£ã«ã¢ãããŒãããããã©ãŒãã³ã¹ãšæé©åã«ã泚æããŸãã
ReactNativeã©ã€ãã©ãªã®çµç¹ã«ã¯æºè¶³ããŠããŸããã§ããããªããªãã åé¢ãããéå±€åãããã¹ã±ãŒã©ãã«ã«èŠããªãã£ããããã³ã³ããŒãã³ãã©ã€ãã©ãªã¢ãŒããã¯ãã£ãçºæããŸãããçŸåšãã¢ãŒããã¯ãã£ã¯éå±€åãããVIPERãSOLIDãSOAã®åºæ¬ã«ãŒã«ãé å®ããŠããŸãã
äžã®ç»åã®æŠå¿µå³ïŒ
![](https://habrastorage.org/files/fae/96e/a3f/fae96ea3fb4e4cb5b6b124fe54182183.png)
å®éãReactNativeãšVIPERãåéã«ããŸããã
![](https://habrastorage.org/files/e7b/150/4af/e7b1504af6da41c1b12a4889f61363b5.png)
![](https://habrastorage.org/files/45a/230/7ae/45a2307ae6c846b1b42e97eb88a424c0.png)
Facebookãéçºããæšæºã³ã³ããŒãã³ãã¯ã»ãŒå®å šã«æŸæ£ããã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ã«å¿ èŠãªã³ã³ããŒãã³ããåå®è£ ããŠããŸãã ãªãã§ïŒ
- ã³ã³ããŒãã³ãã¯ãESFã®ãŠããŒã¯ãªåäžã®èŠèŠã¹ã¿ã€ã«ãæã¡ãå€æŽã«é©ããŠããªãå¿
èŠããããŸãïŒããããã£ãä»ããæå¹ãªèšå®ã®ã¿ïŒã
- ReactNativeã³ãŒãããã¹ãã§ã«ããŒããããšã¯ã§ããããã®å質ãšæ£ããåäœã«è²¬ä»»ãæã€ããšã¯ã§ããŸããã
- ãã©ãŒã¯ã©ã€ãã©ãªãšãã®ãããªãéçºã¯åãä»ããŠããŸããã
- ã¢ãŒããã¯ãã£ã®ç解ã¯ReactNativeã®äœæè
ã«ãã£ãŠå
±æãããŠããããã³ã³ããŒãã³ãã§äœ¿çšãããã³ãŒãã®ç¹å®ã®éšåã泚å
¥ãŸãã¯åå©çšããããšã¯ã§ããŸããã
- ReactNativeã¯ãŸã ãã£ãŒãããŒã¿çã§ãããåçã«å€åããŠããŸãã ããŒãžã§ã³ãå€æŽããããŸã§ãäžäœäºææ§ã®ååã¯ãµããŒããããŠããããFacebookããã®æŽæ°ã®ãªãªãŒã¹åŸã«ã©ã€ãã©ãªã®ã³ãŒããæ£ããã³ã³ãã€ã«ãããããšã確èªã§ããŸããã
- ãã®ã³ã³ããŒãã³ããä»ã®ãããžã§ã¯ããReactNativeã³ã³ã»ãã以å€ã§ã䜿çšã§ããããã«ãããåšåº«ãã®ãã€ãã£ãã³ãŒããå¿ èŠã§ãã
ReactNativeãéžã¶çç±
äœææã«ã¯ã次ã®ååãé å®ããŸããã
- åãæè¡ã¹ã¿ãã¯ãæã€éçºè
ãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãšããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã®äž¡æ¹ãéçºã§ãããœãªã¥ãŒã·ã§ã³ãäœæããŸãã
- 以åã«éçºãããæ©èœããã°ããåå©çšã§ããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã®éçºãšãµããŒãã®éè¡ã³ã¹ããæå°éã«æããŸãã
- åžå Žæå ¥ãŸã§ã®æéãççž®ããŸãã
ãœãªã¥ãŒã·ã§ã³ãåæããŠéžæãããšããããã€ãã®åºåãã©ã¡ãŒã¿ãŒãšåºæºããããŸããã
- Webçšã«éçºãããéè¡å
ã®å€æ°ã®ã¬ã¬ã·ãŒã·ã¹ãã ã
- çµæãšããŠãJavaScriptã³ã³ããã³ã·ãŒãæã€å€æ°ã®éçºè
ã
- JSãReactãããã³Reduxã掻çšããæ°ããææãªWeb補åã
æåã®ã¿ã¹ã¯ã®1ã€ã¯éçºã¹ã¿ãã¯ã®çµ±åãšã³ã¹ãã®æå°åã§ãã£ããããã¢ããªã±ãŒã·ã§ã³ã³ãŒããèšè¿°ããããã®èšèªãšããŠJavaScriptã䜿çšããŠã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãäœæã§ãããœãªã¥ãŒã·ã§ã³ãéžæãå§ããŸããã
CordovaãšPhoneGapã¯ããã«å§¿ãæ¶ãã ãããã䜿çšããŠãåºåã§éãã€ãã£ãã¢ããªã±ãŒã·ã§ã³ãååŸããŸãã
ReactNativeã¯ãã©ã³ã¿ã€ã ã®Objective-CåŒã³åºãã§JSã³ãŒãã解éããŸããããã«ããããã€ãã£ãã³ãŒããå®è¡ããUIViewã®åå«ããã€ã³ã¿ãŒãã§ã€ã¹ãã©ãŒã ãæ§ç¯ã§ããŸãã
ReactNativeã¯ãReactã®èªç¶ãªç¶ç¶ã§ãããã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ããã³ãã¹ã¯ãããäžã®ããã³ããšã³ãã¯ã©ã€ã¢ã³ãã§å®è¡ãããçµ±åã³ãŒããèšè¿°ããããšãã§ããŸãã
ãã¹ãäž
ãã©ãããã©ãŒã ã©ã€ãã©ãªã®æ¬è³ªçãªå質ã®1ã€ã¯ä¿¡é Œæ§ã§ãããããéçºäžã®è£œåãåžžã«ãã¹ãããŸãã
ãã¬ãŒã ã¯ãŒã¯ã®ãã¹ãŠã®PRããã³ãã«ãã§èµ·åãããèªåãŠããããã¹ãããããŸãã
åã ã®ã³ã³ããŒãã³ãããã¹ããããããžã§ã¯ãã³ãŒããæäœæ¥ã§ãã¢ããå¿ èŠããããšèããŠããŸãã
è¿ãå°æ¥ãã¢ãžã¥ãŒã«éã®èªåçµ±åãã¹ããUIãã¹ããããã³ããžãã¹ãããžã§ã¯ãã§ã®å®è£ ã®ããã®ããã©ãŒãã³ã¹ãã¹ããå ããäºå®ã§ãã
ãŸããæŠç¥èšç»ã«ã¯ãã¯ãã¹ã³ãŒããã¹ãïŒJavaScript <-> objc-CïŒãèšè¿°ããããã®ç¬èªã®ãã¬ãŒã ã¯ãŒã¯ã®éçºãããã³ããžãã¹ãããžã§ã¯ãã®ã³ãŒããåæããããã®éçã¢ãã©ã€ã¶ãŒã®éçºãå«ãŸããŸãã
ããã»ã¹èªåå
ç§ãã¡ã¯äœãããããèªååããŸãã ããã§ãåã ã®ãã©ãããã©ãŒã ã¢ãžã¥ãŒã«çšã®CIãšCDãã§ããŸããã äŒæ¥ã®ãžã§ã³ãã³ãºã«æ¥ç¶ãããåå¥ã®ç©çãã«ããã·ã³ããããŸãã
ãã¹ãã®å®è¡ãã³ãŒãã«ãã¬ããžã¬ããŒãã dashing.ioã§ã®ã€ã³ãžã±ãŒã¿ãŒã®æŽæ°ãããŒãžã§ã³ã®æ§ç¯ãããã³nexusã§ã®å ¬éã¯ãçŸåšèªååãããŠãããã¹ãŠã®ããã»ã¹ã®ã»ãã®å°ããªãªã¹ãã§ãã
DevOpsãéçºããŠãããCI / CDããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ãããžã§ã¯ããšçµ±åãããµããŒãäœæ¥ãã€ã³ã·ãã³ãåæãªã©ãèªååããäºå®ã§ãã
ã¹ã±ãŒãªã³ã°
çŸåšããã©ãããã©ãŒã ã䜿çšããESFå ã®ãã¹ãŠã®ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®ã°ããŒãã«ã¢ãŒããã¯ãã£ãšååã«åãçµãã§ããŸãã
ãããžã§ã¯ãéã§åå©çšã§ããããã«ãã¢ããªã±ãŒã·ã§ã³ã³ãŒããšç»é²ãç¬ç«ããJSãã³ãã«ãšããŠåé¢ããã·ã¹ãã ãéçºããŠããŸãã JSãã³ãã«ã¯npmããã±ãŒãžã®åœ¢åŒã§é åžãããã³ã³ãã€ã«æ®µéã§ã¢ããªã±ãŒã·ã§ã³ã«æ¥ç¶ãããŸãã
ãã®ã¢ãããŒãã«ãããéçã¢ããªã±ãŒã·ã§ã³ãäœæããã¢ã»ã³ããªãéããŠæŽæ°ããããšãã§ããŸãã ããã¯åé¡ã解決ããŸããïŒããžãã¹ã¯ããŠãŒã¶ãŒã®åœ¹å²ã«å¿ããŠã¢ããªã±ãŒã·ã§ã³ã®JSãã³ãã«ãšã¯ç°ãªããã»ããããèŠãããšèããŠããŸãïŒå£²ãæã¯1ã€ã®æ©èœãæã¡ããã¹ã¯ç°ãªããŸãïŒããã®åé¡ã¯ã 1ã€ã®ãã€ããªã
æ®å¿µãªããããã®å Žåãåžå Žæå ¥ãŸã§ã®æéã®èŠä»¶ã«éåããŠããŸãã ã¢ããªã±ãŒã·ã§ã³ã倧ããã»ã©ãç¹å®ã®ããŒãžã§ã³ã®æ¬ é¥ãç¹å®ããããšãç®çãšããååž°ãã¹ããé·ããªããŸãã
JS Bundleãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã«åçã«ããŒããããšããæŠå¿µãææ¡ãããŸããã ã¯ããéåžžã«ã¯ãŒã«ã§é©æ°çã§ãïŒ ããããããã¯éçºããããã¿ã€ãã³ã°ãããã³ãã€ããããå¿ èŠãšããæ°ããã·ã¹ãã ã§ãã çŸåšãŸã§ã«ããã®ãããªã·ã¹ãã ã¯äžçã«å°æ°ãããããŸããïŒç¹ã«ãã€ãã£ãã¢ããªã±ãŒã·ã§ã³çšïŒã
ãã®ã³ã³ã»ããã®éçºãRïŒDã§éå§ããŸãã ãã®ãããªéå¿çãªã¹ããŒãªãŒã«èå³ãããå Žåã¯ãããŒã ã«åå ãã絶奜ã®æ©äŒã§ã:-)
ã©ã®ããã«äœæ¥ããŸããïŒ
ESFã¢ãã€ã«ãã©ãããã©ãŒã ã®éçºããŒã ã¯ãã¹ã¯ã©ã ã¢ãããŒãã䜿çšããŠã¢ãžã£ã€ã«ææ³ã«åãçµãã§ããŸãã
2é±éã®é ä¿¡ãµã€ã¯ã«ãšããã¹ãŠã®å¿ é ã®ã¹ã¯ã©ã ã¢ãŒãã£ãã¡ã¯ãïŒèšç»ãã¹ã¿ã³ãã¢ãããã°ã«ãŒãã³ã°ããã¢ãã¬ããïŒããããŸãã
ã¹ã¿ã³ãã¢ããã¯ãæ¯æ¥åé¡ãæŽæ°ãããã¹ãŠã®ããŒã ã¡ã³ããŒéã§å®è£ ãããŠããå 容ãå ±æããã®ã«åœ¹ç«ã¡ãŸãã éèŠïŒç§ãã¡ã¯ã1æ¥15å以äžã¹ã¿ã³ãã¢ããã«è²»ããããšã¯ãããç«ã£ããŸãŸéããã ãã§ãã
å®æçã«ããã¯ãã°ãé倧è©äŸ¡ããã¿ã¹ã¯ã®è©³çŽ°ã説æããŸããããã«ãããèšç»ã«è²»ããæéãççž®ãããŸãã ãããŠãã¬ãããšãã¢ã¯æ¥œãããŠç©æ¥µçã§ãïŒã¹ã¯ã©ã ãã¹ã¿ãŒãäž»å¬ããã³ã³ãã¹ããããããŒãã«åå ããŠããŸãïŒã
ããã»ã¹ã«å ããŠã補åã®æè¡é¢ãå³å¯ã«ç£èŠããŸããããã¥ã¡ã³ããã¬ã€ããäœæããçžè«ãè¡ããä»ã®ãããžã§ã¯ããæ¯æŽããŸãã
ããã»ã¹ãšã¢ãããŒããææžåããããããå¿ããªãããã«ãã次åã®æŽ»çºãªè°è«ãæå°éã«ããŸãã
ç§ãã¡ã¯è¿ãã«åº§ã£ãŠãåžžã«ã¡ã³ã¿ãŒã匷調ããå éšã®ããŒãã·ãŒããæã£ãŠããã®ã§ãåå¿è ã¯è¿·åã«ãªããŸããã
ãã£ãšåŠã³ãåå ããæ¹æ³ã¯ïŒ
ãã£ãšç¥ãããã§ããïŒ ãã®ãããã¯ã«èå³ã®ããåºçç©ãžã®ã³ã¡ã³ãã§ãã©ãããã©ãŒã ã®äœæè ãšçŽæ¥è©±ããŸãããã掻çºãªå¯Ÿè©±ãã§ããŠããããã§ãã
ãŸããç§ãã¡ã®ããã©ãŒãã³ã¹ãèŠãããšãã§ããŸãã
ãããŠãããªããèªåã®åŒ·ããšæ¬²æãæããããéå¿çã§æèœã®ããå°é家ã®ããŒã ã«æåŸ ããŸãïŒ
- iOSéçºè ïŒobj-cãReactNativeãVIPERãJSãSOAãTyphoonïŒã
- ããã³ããšã³ãéçºè ïŒTypeScriptãJavaScriptãReactãReduxïŒã
- ãã¶ã€ããŒãšã€ã³ã¿ãŒãã§ã€ã¹ãã¶ã€ããŒã
- Automatorsãšã¢ãã€ã«ãã¹ã¿ãŒã
ã¡ãŒã«ESRtishev.SBT@sberbank.ruãŸãã¯Ostrovskaya Anastasia ASOstrovskaya.SBT@sberbank.ru
å§ãŸããŸãããããã«ãéçºãšããã»ã¹ç®¡çããšã³ãžãã¢ãªã³ã°ãšèšèšã®ãããã¯ã«é¢ããå€ãã®èå³æ·±ãæçšãªã³ã³ãã³ããå ¬éããŸãã