본문 바로가기

우리 성공할 수 있을까?

iOS, Android 어떻게 한번에 만들까?

반응형

다양한 플랫폼 다양한 언어

Android, iOS, 웹 페이지를 각각 개발하다보면 UI를 구성하는 방법이 쉽지 않다는 것을 느끼게 된다. 21세기인데 당연히 wix같은 UI 에디터가 있어서 끌어다가 붙이고 드래그해서 크기를 조절하면 화면이 뚝딱 생기는 방법이 있을 것이라 생각했다. 물론 각각의 플랫폼에 화면을 이용한 에디터들이 존재하긴 하지만 다양한 디바이스 크기에 적용하지 못하기 때문에 결국은 코드로 모든 화면이 구성이 된다. 코드로 화면이 구성된다는 말은 "가로 100픽셀 세로 50픽셀의 네모 버튼이 화면에 위에서 80픽셀 왼쪽으로 40픽셀 위치에 존재하고 이 버튼을 누르면 화면을 넘어가거나 데이터가 저장되어야 한다" 등의 명령어를 직접 글로 입력하는 것과 같다. 뿐만아니라 Android, iOS, 웹 페이지의 각각의 언어가 다르기 때문에 각 플랫폼별 언어를 따로 익혀야 하는 문제도 발생한다. 다양한 플랫폼을 개발하기 위해서는 자바, objective-c, html & 자바스크립트등 다양한 언어를 각각 배워야 하는데 이는 영어, 스페인어, 불어 등 전혀 다른 나라의 언어를 배워서 사용하는 것과 같은 어려움이 있다.

 

모바일 웹앱

모바일쪽의 UI 개발이 어렵다 보니 이를 한번에 해결하기 위한 다양한 시도가 있었다. 모바일은 버튼, 뷰, 텍스트 등 여러가지 UI 아이템으로 구성이 되는데 그 중 하나가 웹뷰이다. 웹뷰는 화면에 일정 부분에 말 그대로 웹 페이지를 보여주는 아이템인데 이를 화면 전면에 넣어두고 외부에 모바일 웹페이지 주소를 넣거나 HTML을 앱에 심어서 실제로는 웹 UI를 그대로 사용하면 어떨까라는 의문에 의한 모바일 웹앱이라는 앱 개발 방법이 생겨났다. 물론 화면구성이 극단적으로 쉬워지긴 했지만 한계가 명확했다. 실제 모바일에서만 사용 가능한 푸시 알람, 카메라 녹화, 사진찍기, 앨범 불러오기 등의 기능들을 웹앱에서는 사용할 수 없었기 때문이다. 그래서 모바일 웹앱의 경우는 일반 화면에서 버튼을 클릭하면 모바일에 있는 특정 기능을 호출하거나 특정화면은 다시 각 플랫폼별 화면을 각각의 언어들로 따로 구성해야 했다. 때문에 앱 개발이 복잡해 질수록 선호할 수 없는 방식이 되어갔다. 거기에 웹뷰를 기본으로 사용하면 특유의 웹 로딩시간이 필요하기 때문에 앱이 전체적으로 느려보인다. 현재 웹뷰로 이루어진 앱인 CGV, 롯데시네마등 영화관 앱을 보면 무슨 뜻인지 아실것이라 생각한다.

 

네이티브류 앱

모바일 개발에 네이티브라고 한다면 각각의 플랫폼별 언어로 개발한다는 뜻이다. 예를들어 안드로이드는 자바나 코틀린 언어로 iOS는 Objective-C나 스위프트라는 언어를 선택해서 개발할 수 있다. 위 웹앱의 한계를 극복하고자 네이티브류의 개발 방법이 나타난다. 웹을 개발하는데 사용하는 언어로 모바일을 개발하면 이를 각각의 네이티브 언어로 변경해서 저장해주는 방식의 개발도구들이 하나둘씩 생겨나기 시작했다. 마이크로 소프트의 자마린과 페이스북의 리액트 네이티브, 구글의 플러터라는 개발도구가 차례로 생겼다. 초기의 에어비앤비는 빠르게 리액트 네이티브를 사용해 한동안 서비스를 한 적이 있다. 이 네이티브류 앱의 모토는 한번 배워서 여려군데 써먹자 인데 기존의 웹 앱과는 다르게 웹언어를 사용해 코드를 만들면 실제 네이티브의 UI 아이템으로 이를 변경해 주는 방식이기 때문에 화면의 로딩속도가 네이티브와 차이가 없고 실제 모바일 고유의 기능도 바로바로 사용할 수 있다.

 

네이티브류 앱의 단점

하지만 여기에도 문제가 있는데 기존의 안드로이드 iOS의 라이브러리를 사용하기 위해서는 각각의 플랫폼으로 한번 변환해줄 필요가 있다. 이 때문에 이미 개발된 라이브러리를 한번 감싼 라이브러리를 누군가가 개발해 배포해야 할 필요가 있다. 만약 내가 원하는 기능을 누군가 해당 개발 도구로 만들얻 두지 않았다면 네이티브 코드를 직접 개발해야 하는 경우가 생긴다. 이러한 문제 때문에 결국은 에어비엔비도 일정이상 회사가 성장하고나서 각각의 네이티브 앱으로 분리해서 개발을 시작했다. 에어비엔비는 네이티브언어로 돌아가며 다음과 같이 인터뷰했다. "처음에는 하나의 언어로 두가지 플랫폼을 관리할 수 있을 줄 알았어요. 그런데 내가 필요한 기능을 누군가 개발해 두지 않아서 네이티브 코드를 추가로 개발하게 되었고 결국은 안드로이드 iOS에 웹 언어까지 세가지를 관리하게 되서 손해라고 느꼈죠."

또한, 한가지 언어로 두가지 플랫폼을 개발한다면 인원이 적은 스타트업 같은 경우에는 빠르게 개발해서 배포할 수 있다는 장점이 있을 지 모르지만 이런 류의 개발도구를 사용하는 사람 자체가 적기 때문에 회사가 커졌을 때 인원을 충원하는데 어려움을 겪을 수 있다.

 

그럼에도 불구하고

패스트레인의 J는 리액트 네이티브를 선택해 개발을 하고 있다. 웹 언어를 사용하기 때문에 UI 구성이 쉽고 빠르고 실제로 Android, iOS 네이티브 언어를 모두 사용할 수 있기때문에 필요한 기능을 누군가 만들어 두지 않았더라도 스스로 개발이 가능해 앞에 언급한 단점이 문제가 되지 않는다. 뿐만아니라 리액트 네이티브에 사용되는 웹 기술은 리액트라고하는 웹 페이지 개발 기술과 동일해서 최신형 SPA(Single Page Application) 웹 페이지를 만드는 기술도 리액트 네이티브를 사용하면서 익히게 되었다. 어떤 도구든 잘만쓰면 유용하고 그 장점만을 취할 수 있는 방법이 있다. 실제로 J는 이 기술을 사용하여 이주 혹은 일주일 단위로 앱을 개발했고 구글과 애플에 각각의 앱을 배포할 수 있었다.

 

리액트 네이티브

크로스 플랫폼은 쉬운 기술은 아니다. 하나의 언어를 사용해 두가지를 개발한다는 좋은 아이디어에도 불구하고 사실은 세가지 모두를 잘 다룰수 있어야 효과를 보는 방법이다. 하지만 그 방식에 익숙해 지고 내가 사용하던 개발도구가 하루아침에 망하지만 않는다면 최대의 효율을 얻을 수 있다. 패스트레인은 회사의 이름과 같이 빠르게 성장 할 것이며 속도는 이를 위한 필수 요소이다. 나만의 앱을 다양한 플랫폼에 빠르게 배포하고 싶은 사람이라면 자신있게 이 기술에 도전해 보라고 말하고 싶다. 이에 성공한다면 당신은 한명의 Android 개발자, iOS 개발자가 아닌 모든 종류의 모바일과 웹까지도 개발 할 수 있는 챔피언 타이틀을 손에 넣게 될것이다.[참고:스토어 사업자 등록 실패기]

반응형