티스토리 뷰

지금까지 3주 정도 매일은 아니었지만 드문드문 RN (React Native) 개발을 해보면서 든 생각을 정리해보았습니다.

정말 네이티브 코드 없이 JavaScript로만 개발이 가능했나

RN 을 처음 접할 때 가장 궁금했던 것 중에 하나는 '네이티브 코드를 전혀 건드리지 않고 앱 하나를 개발하는 게 가능할까? ' 였는데요. 간단한 앱 하나를 제작하면서 보니 가능한 것 같습니다. 요구사항이 많지 않고 운이 좋다면 (?) 가능하다는 생각이 들었습니다. 사실 이런 얘기는 어느 하이브리드 프레임워크를 가져와도 할 수 있는 말입니다. 그러니까 말하자면 네이티브 기능을 온전히 다 쓸 수 없는 (네이티브 코드 없이는) 하이브리드 앱 특성상 RN도 예외가 아니었다는 점입니다.

기존의 다른 하이브리드 프레임워크 보다 제공해주는 기능이 다양한지 묻는다면 아직은 잘 모르겠다 입니다. 바로 이 지점에서 RN의 러닝커브가 심각하게 올라가게 되는 것 같습니다. 그래도 네이티브 퀄리티의 안드로이드와 iOS 기능을 이 정도로 공유할 수 있다는 것만으로도 대체할 수 없는 장점을 지닌 것은 사실이기 때문에 RN이 그토록 인기를 얻고 있는 이유가 아닐까 합니다. 원래 네이티브 개발자였으면 RN을 배우는 것이 손해는 아니지 않을까요?

이 부분만큼은 너무 좋습니다

그 동안 RN개발을 하면서 계속해서 만족도가 올라가는 부분은 수정한 부분을 바로바로 확인할 수 있는 개발환경이었습니다. 이번에 개발하면서 금방금방 업데이트된 화면을 보고 디버깅을 쉽게 할 수 있다는 게 얼마나 효율적이고 개발을 쉽게 하는 일인지 깨달았습니다.

왜 이러는 걸까요

뭔가 react-native link를 해줘야 하는 패키지를 설치를 했을 때 바로 적용이 되지 않고 충돌이 나서 현재 띄운 앱과 기본적으로 8081포트에서 동작하는 프로세스를 모두 지우고 (정상적으로 지워지지 않아 프로세스가 남아있는 경우 직접 8081 프로세스를 찾아 지워야 합니다) 다시 실행을 해야 하며 다시 실행을 할 때 캐시도 지워줘야 한다는 점이었습니다. 이 부분은 어떻게 해야한다는 언급을 찾지 못해서 저는 개인적으로 설치할 때마다 이런 과정을 반복해줬는데요. 아직 괜찮은 솔루션을 찾지 못했습니다.


그리고 중간에 한번 확인하고 iOS 먼저 개발을 해야겠다고 생각이 들었던 게 (공식 문서에 있는 컴포넌트라도) iOS에서는 되는데 안드로이드에서는 잘 되지 않는 부분이 조금 있었습니다. 이 부분은 앞으로 좀 더 확인해봐야 할 것 같습니다.

되돌아보면 웃픈 시행착오 😭

그리고 사실 저는 큰 시행착오를 중간에 겪으면서 프로젝트를 한번 갈아엎어야 하는 경험을 했는데요. RN 보일러플레이트 프로젝트를 생성하는 방식 expo와 react-native init 두 가지가 큰 차이를 가지고 있다는 것을 나중에 여러 에러를 접하면서 그 때서야 깨달았습니다. 공식 문서에 몇 가지 기본 언급이 되어 있기는 하지만 ejecting이 뭔지 알지 못해서 슬쩍 넘어간 제 탓도 있지만 expo는 react-native와 다르게 ios, android 폴더를 생성조차 하지 않는 다는 것도 나중에서야 알게되었습니다. (맨 처음은 expo로만 개발을 해서)

여기에 대해 자세한 이야기는 여기에서 확인할 수 있는데 처음에 이 개념을 잘 알고 넘어갔더라면 좋았을 거란 생각 했습니다.

React Native Guide : 위의 링크와 동일한 곳인데 RN에 대한 개발환경 구성부터 전반적인 설명이 잘 되어 있어서 한번 전체적으로 훑어보면 좋을 것 같습니다.

현재까지의 결론

RN을 접한 첫 주만 해도 굉장히 긍정적인 결론을 내렸는데, 이제 슬슬 하이브리드 태생으로서의 한계가 보이고 있는 것 같아서 조금 조심스러운 부분이 생겼습니다. 지금까지는 뷰 디자인부터 기능 구현까지 전체적인 경험을 해보고자 하드코딩을 한 부분도 있었고, 띄엄띄엄 넘어간 부분들이 있는데 앞으로 RN을 RN답게 해주는 도구나 RN의 아키텍처에 대해 좀 더 관심을 가져볼까 합니다.


댓글