리액트 네이티브: 진짜 하이브리드 앱의 시대

바야흐로 앱의 시대 입니다. 저희 집에는 PC가 2대가 있는데 거의 켜지 않습니다. 대부분의 일과 웹서핑을 모바일에서 하는 것이 편하니까요. 사용자의 다양한 필요에 맞는 앱을 개발하는 것은 비용이 많이 드는 일입니다. 특히 iOS와 안드로이드 두개의 플랫폼을 지원하는 앱을 각각 만들어야 하기때문에 비용이 많이 듭니다.

그래서 PhoneGap(Cordova), Titanium 등 한번 코딩으로 iOS, 안드로이드 앱 솔루션이 많은 관심을 받아왔습니다. 하지만 하이브리드 앱은 많은 단점을 가지고 있는데요, PhoneGap(Cordova)는 브라우져위에서 모바일 웹을 실행하는 것이라서 속도나 사용자 경험면에서 제약이 많고, Titanium과 같은 솔루션은 Javascript 로 코딩을 하면 Native 결과물을 만들어 주지만, 배우기도 힘들고 새로운 플랫폼 버전, 기능 들이 나왔을 때 Titanium이 지원해주기를 기다려야 한다는 불편하고 유료라는 점 등이 불편했습니다.

이런 개발 뉴스를 더 만나보세요

리액트 네이티브는 발표된지 1년정도밖에 안된 젊은 플랫폼 입니다. 요즘 각광받고 있는 React.js를 사용하여 모바일 앱을 개발할 수 있고, 결과물로 네이티브 앱이 나오기 때문에 고품질의 속도가 빠른 앱을 개발할 수 있습니다. 아직까지는 문서화나 샘플, 사례가 계속 나아지고 있는 중이지만 현재도 간단한 정보성 앱을 만드는데에는 충분한 완성도를 지니고 있다고 합니다.

왜 리액트 네이티브인가?

  • 무료이고 활발하게 개발되고 있는 오픈소스 이다. 페이스북에서 직접 사용되고있는 React.js를 사용하고 있으며 리액트네이티브 자체도 빠르게 개발되고있습니다. GitHub를 보면 500명이 넘는 사람이 코드에 기여 했으며, 꾸준히 개발이 이루어지고 있는 것을 볼 수 있습니다.
  • React.js를 사용한다. 개발자의 시간은 돈 입니다. 요즘 대세인 것을 하나 배워서 웹은 물론 앱도 개발할 수 있다면 얼마나 좋을까요? 현재 AngularJS 1은 추가 개발중단이 되었고 Angular 2는 아직 안정적이지 않은 상태에서 React.js 는 Javascript 계의 대세입니다. 개발자가 시간을 투자할 만한 가치가 있는 기술입니다.
  • 페이스북등 좋은 레퍼런스가 빠르게 늘고있다. 페이스북 그룹, 페이스북 광고 관리 앱 등에 사용되고 있으며 태스크 래빗 등과 같은 미국의 커다란 스타트업에서도 활용하기 시작했습니다.
  • 네이티브 결과물을 제공한다. 리액트 네이티브로 개발하면 결과물이 네이티브 입니다. 사용자에게 더 나은 경험을 제공할 수 있습니다.
  • DECO와 같은 IDE가 등장하기 시작해서 초기 개발 부분을 scaffolding 하여 빠르게 할 수 있게 해줍니다. 다양한 생태계가 늘어나고 있습니다.

단점

  • 모든 코드를 재사용할 수 있는건 아니다. 비지니스 로직은 거의 그대로 쓸 수 있지만, 리액트 네이티브 문서를 보면 iOS, Android 별 플랫폼의 특징적인 부분을 지원하기 위해서 각 플랫폼별 API가 별도로 있는 것을 볼 수 있습니다. 예를 들어 안드로이드에서는 ProgressBar 를 써야 한다면 iOS에서는 ActivityIndicator를 써야 합니다.
  • 내부적인 proxy 구현등으로 인해 제약이 발생하기도 한다. 예를 들면, Javascript 애니메이션등을 사용하는데에는 지장이 있습니다.(네이티브가 제공하는 애니메이션을 써야 합니다). 또, 아직 구현안된 API도 물론 있는데요, 예를들어 현재는 Android M의 새로운 퍼미션 기능도 제공이 되지 않고있습니다.
  • 아직은 버전이 낮은 편이고(현재 v0.20) 계속 개발 중이라 API가 업데이트 될 수 있다. 버전이 낮은 편이다. 이부분은 개발이 빠르게 진행되고 있으므로 버전 숫자를 보고 큰 고민을 할 필요는없을 듯 합니다. 언제 React.js 처럼 갑자기 0.20이 v20 이 될 수고 있으니까요. 문서를 보면 현재 iOS, 안드로이드 별도로 되어있는 API가 하나로 합쳐질 수 있는 것들도 있는 등 API의 정리가 계속 진행 될 것으로 보입니다.

리액트 네이티브면 충분하다!

앱이 스마트폰의 다양한 API를 십분 활용하면서 대기업의 비지니스에서 핵심역할을 하는 경우가 있습니다. 예를 들면 카카오톡, 네이버 지도, 드롭박스, 페이스북 앱 같은 것들. 이런 것들이 적극적으로 네이티브 앱개발을를 버리고 리액트 네이티브를 적용하는 것은 아직은 힘들지 모릅니다. 리액트 네이티브가 불안해서가 아니라, 현재 네이티브로 구현해 놓은 세세한 최적화 구현등을 그대로 리액트 네이티브로 가져오기 힘들것이기 때문에 그렇습니다.

하지만 이세상에는 그런 앱보다는 간단한 정보를 보여주는 앱들이 훨씬 많습니다. 웹뷰를 사용해서 내용을 보여주는 것이 대부분인 앱 이라던가, 정부와 지방자치 단체에서 만들내고 있는 수많은 단순한 앱들이 그렇죠. 쇼핑 앱이라던지, 예약 앱, 날씨 앱 등 스마트폰의 네이티브 기능을 많이 사용하지 않는 앱들이 더 많습니다.

로컬에 데이터를 저장하고 사용하자

작은 비지니스를 위한 스마트 폰앱의 대표적인 사례는 인터넷에 있는 데이터를 가져와서 사용자의 스마트폰에서 보여주는 단순한 일입니다. 스마트폰 안에서 데이터를 조작(일명 CRUD: Create, Read, Update, Delete)하고 서버와 그 정보를 맞추는 것입니다. 리액트 네이티브에서는 그런 데이터베이스 작업을 하기가 힘들었는데, Realm에서 리액트 네이티브를 위한 데이터베이스를 출시했습니다.

벌써 미국의 태스크래빗 청소도우미/각종전문가 연결 같은 서비스)과 같은 대형 스타트업들이 Realm과 리액트 네이티브를 써서 앱을 출시했습니다. Realm 리액티브는 쓰기 쉽고, 간결하며 기존 솔루션보다 2배에서 10배 빠릅니다! 누가 공짜 점심이 존재하지 않는다고 했던가요? 지금 당장 Realm 리액트 네이티브 문서를 확인해보세요!

컨텐츠에 대하여

이 컨텐츠는 저자의 허가 하에 이곳에서 공유합니다.


Leonardo YongUk Kim

Leonardo YongUk Kim is a software developer with extensive experience in mobile and embedded projects, including: several WIPI modules (Korean mobile platform based on Nucleus RTOS), iOS projects, a scene graph engine for Android, an Android tablet, a client utility for black boxes, and some mini games using Cocos2d-x.

4 design patterns for a RESTless mobile integration »

close