하이브리드앱,네이티브앱,모바일웹의 스마트폰 개발 방법의 차이점과 장단점 비교
요즘 스마트폰 열풍으로 많은 분들이 앱들을 개발을 하시는데, 아이폰, 아이패드의 ios는 object-c로 개발을 하고(어제 뉴스에 보니 델파이로도 개발이 가능하다고), 안드로이드는 java를 이클립스를 이용해서 주로 개발을 합니다.
문제는 세상의 폰이 안드로이드, 아이폰이 전부가 아니라, 블랙베리, 윈도우모바일, 심비안의 노키아, web os의 HP 등 다양한 OS가 존재한다는것입니다.
구글이나 페이스북같은 회사들조차 이 모든 환경에 맞추어서 포팅을 한다는것이 정말 어렵하고 해서 최근에 회자가 되고 있는것이 바로 HTML5입니다.
하나의 개발로 모든 기종에 적용을 한다는 이야기인데, 여기에서 오해가 조금 생기는듯 합니다.
네이티브앱(Native app)은 기종별로 만드는것이므로 구분이 확실하게 가는데, 하이브리드앱과 모바일앱을 거의 동일시하는듯 하더군요.
뭐 모바일 홈페이지를 하나 만들어서, xcode나 eclipse에서 웹뷰(webview) 컨트롤 하나 만들어서 링크주소만 던져주면 되지 않냐라는것이 잘못된 오해가 아닐까 싶습니다.
하이브리드 앱(Hybrid app)이라는것의 정의의 모호성도 좀 그렇고, 어찌보면 위의 방식도 우긴다면 하이브리드라고 볼수도 있기는 하지만, 전형적인 하이브리드 앱과는 다르다고 보시면 됩니다.
모바일 웹(Mobile web)은 서버측에서 html, css, javascript, 이미지 등을 가져오는것이고,
하이브리드앱은 스마트폰자체에 html, css, javascript, 이미지 등을 가지고 돌리며, 모바일웹에서 할수 없는 카메라, 주소록 등 하드웨어와 폰의 데이터등을 제어할수 있도록 해줍니다.
(네이티브 앱과 하이브리드를 합쳐서 개발을 할수도 있지만, 보통은 phonegap, 앱스프레소, titanium 등의 툴을 이용해서 범용적으로 만들고, 물론 개발 여건에 따라서 모바일 웹과 하이브리드 기술을 함께 사용하기도 합니다)
한국형 통합 엡스토어 K-Apps(KWAC)와 하이브리드 모바일앱 개발의 폰갭(PhoneGap), 앱스프레소(Appspresso)
예를 들어서 기상청의 날씨자료를 가지고 안드로이드(android), 아이폰(ios), 윈도우모바일(Windows Mobile) 프로그램을 만들라는 오더가 떨어져서 수주를 하게 됬다고 합시다.
http://www.kma.go.kr/weather/forecast/mid-term-xml.jsp?stnId=108
네이티브앱은 안드로이드, 아이폰, 윈도우모바일 별로 각각의 개발툴과 각각의 언어인 object-c, java, c#.net, silverlight 등으로 화면을 만들고, xml이나 json을 파싱해서 앱을 3개를 따로 따로 만들어야 합니다.
만약 화면 인터페이스나 파싱 방법이 바뀐다면 각각의 앱을 전부 다 수정해서 다시금 마켓이나 앱스토어에 올려야 합니다.
거기다가 개발자가 한명이 3가지를 다 할수 있는 경우는 드물고, 된다고해서 시간상 포팅을 할 여건도 안되기 때문에 각각의 os별로 개발자를 구해야 해서 인건비도 상승할수밖에 없을겁니다.(앞으로 카카오톡의 게임은 동시에 안드로이드, ios를 개발해야 출시가 가능하다고...)
모바일앱으로 만든다면 웹개발자와 디자이너가 홈페이지를 하나 만들어서 javascript나 jquery 등으로 ajax 등을 이용해서 만들수도 있고, 서버에서 tool을 이용해 불러와서 브라우저에는 그냥 뿌려주기만 할수도 있습니다.
우선 인건비도 적게들고, 수정을 하게되면 모두 동시에 변경이 되는 장점까지 있습니다.
다만 네트워크가 연결되어 있지 않다면 page not found라는 메세지밖에는 보여줄수 없고, 사람들이 앱에 비해서 브라우저를 실행하고, 웹페이지를 열어야 하기때문에 웹에 접근하는것은 접근성도 많이 떨어집니다.(물론 단축아이콘을 생성할수도 있지만, 그리 많이 사용되지는 않지요~)
편법으로 위에서 언급한 웹뷰로 링크를 던져주는 간단한 프로그램으로 만들수도 있어서 App인것처럼 포장을 할수도 있지만, 네트워크가 안되는 경우에는 마찬가지입니다. 그리고 이 경우에는 jsp, asp, php 등으로도 개발이 가능합니다.(간혹 업체들이 jsp, asp, php등 기존의 소스를 가지고 수정을 해서 모바일에 최적화된 화면을 만들어서, 자신들은 홈페이지는 기본이고, app이나 모바일웹도 제공을 하는 최신기술이라고 허위과장광고를 하는 마케팅을 하기도...-_-;;)
애플 앱스토어(Apple Appstore), 웹앱을 가장한 하이브리드앱 앱스토어 등록 제한
이런 경우에 요즘 애플이 제재 조치를 취하기도 하는듯 합니다.
하이브리드 앱으로 만든다면 모바일앱과 유사합니다.
다만 서버측 홈페이지에 올라가있던 html, css, javascript, jquery, sencha touch 등이 서버가 아닌, 스마트폰안에서 로컬로 실행이 된다는것 입니다.(물론 코딩은 모바일앱이 그대로 돌아가지는 않겠지요~)
네트워크가 끊겨서 안되더라도 로컬에서 돌아가기때문에 기본적인 화면은 보여줄수 있고, 네트워크 오류라고 메세지를 날려주고, 캐쉬파일로 예전 자료나 저장된 자료를 보여줄수도 있습니다. 하지만 이 경우에는 html5로만 가능하며, jsp, asp, php등은 개발이 불가능 합니다.
서버에서 모든 자료를 받아오는것이 아니라, 앱의 골격은 스마트폰에서 바로 실행되기 때문에 웹보다는 속도가 훨씬 빠르고, 데이터만 ajax와 같은 방식으로 보여주면 되는데, 이부분이 가장 큰 장점중에 하나일듯 합니다.
그리고 이 로컬파일들을 아이폰, 안드로이드, 블랙베리 용 앱으로 감싸서 변환을 시켜주는것이 바로 폰갭, 앱스프레소 등과 같은 프로그램입니다.
단점은 프로그램을 수정하면 네이티브앱처럼 다시금 컴파일을 해서 마켓, 앱스토어에 다시 올려야 하지만, 각각 개발을 하는것과는 차원이 다르고, 일석이조라는 말처럼 네이티브앱에 비해서 비용은 상당히 절감할수 있다는것이 장점입니다.
이외에 하이브리드앱과 모바일앱을 섞어서 타이틀바나 네이게이션바는 하이브리드로 본문내용은 모바일앱을 이용해서 만드는 경우도 많은데, 최근에 페이스북(facebook)의 주커버그가 html5을 버리고, 네이티브앱으로 전환을 해서 하이브리드앱이나 html5에 문제가 있는것이 아닌가하는 이야기도 나왔지만, 기존의 페이스북은 하이브리드라기보다는 모바일웹에 가까운 앱인듯한것이, 수시로 새로운 기능은 추가되지만, 앱스토어나 구글플레이에서 업데이트되는 횟수는 적었는데, 서버사이드 앱이여서 속도가 느린것이지, 하이브리드앱이라서 느린것은 아닌듯합니다.
암튼 고생해서 프로그램을 다 만들었는데, 이번에는 사용자들이 사진을 찍어서 현재의 날씨를 GPS정보와 함께 올리도록 수정하라는 업데이트 관련 오더가 내려옵니다.
네이티브앱은 각각의 OS별로, 각각의 api에 따라서 사진을 찍고, gps정보를 가지고 서버에 올리는 프로그램을 기종별로 만들어야 합니다.
모바일앱은 GPS정보는 html5에서 지원을 하기때문에 가능하지만, 사진을 찍고 가져오는것은 api를 지원하는것이 없기때문에 현재로써는 불가능 해서, update를 포기하거나, 네이티브나 하이브리드로 변환을 해야 합니다.
하이브리드앱같은 경우는 폰갭, 엡스프레소에서 api를 지원해주기 때문에 해당되는 api를 이용하면 하나의 소스 추가만으로 변경이 가능합니다. 물론 컴파일은 os별로 다시 해야겠지요.
애플 앱스토어(Apple Appstore), 웹앱을 가장한 하이브리드앱 앱스토어 등록 제한
뭐 간략하게 대충 설명을 하기는 했지만, 이 정도라면 하이브리드앱은 앞으로 아이폰, 안드로이드, 윈도우모바일, 바다, 블랙베리 등의 다양한 기종이 나오는 상황에서 상당히 매력적일수밖에 없습니다.
현재로써 cross platform과 web 서비스 매쉬업을 지원할수 있는 유일한 대안이고, html5에서 지원하는 다양한 새로운 기능으로 게임개발 등 다양한 확장이 가능한데, 현재 앱중에서 80% 이상은 하이브리드 앱으로 만들수 있다는 이야기도 있더군요.
(간혹 html5가 기존의 html과 전혀 다른것으로 인식하는 분들이 있던데, 기존의 html은 호환되면서 기능이 추가된것으로 보시면 되고, 현재 상당수의 홈페이지들이 html5로 구축되어 있습니다)
단점도 있습니다. 아무리 잘 만든다고 해도 컴파일된 네이티브앱에 비해서는 속도가 조금 느릴수 밖에 없고, 혼자나 몇명의 팀원이서 개발을 한다면 초기에 배워야 할것도 참 많은데, 일반적으로 프로그래머들이 조금은 경시하던 html5, css3, javascript을 비롯해서 ajax, jquery mobile(또는 sencha touch), 앱스프레소(또는 phonegap, titianium) 등에 대해서도 좀 심도깊게 학습을 해야 할듯 하며, 아직은 초창기이기때문에 참고할 자료도 부족한 편이고, 네이티브에 비해서 제약조건이 어느정도 있습니다.
저도 안드로이드로 개발은 조금 하면서 앱을 하나 만들었는데, 1인 개발자로서 아이폰까지 생각을 한다면, 추후에 히트를 쳐서 확장을 하게될수도 있다는(^^) 생각해보니 아무래도 처음부터 하이브리드 앱으로 가는것이 좋겠다는 생각이 들더군요.(물론 떡줄 사람은 생각도 안하는데, 김치국부터 마신다는 말이 생각나는데, 아래에도 이야기를 하지만... 하나의 OS에서 히트를 친다면 돈을 벌거나 투자를 받아서 다른 OS의 개발자를 구하는것도 좋을듯 합니다.)
html5가 스마트폰에서 대부분 지원을 하면서 캔버스로 그래픽처리 기능이 상당히 발전했고, 로컬 저장소에 스토리지나 sql 데이터베이스를 지원도 해주고, 웹소켓, 웹워커 등 다양한 지원으로 이제는 잘만 다룬다면 굳이 네이티브앱보다는 하이브리드앱으로 가는것이 좋지 않을까 싶은 생각이 듭니다.
물론 만들고자하는 앱의 특성에 따라서 비용이 들더라도 네이티브로 가는것이 좋은것도 있겠지만, 그런것이 아니라면 굳이 각 os별로 만들기보다는 하이브리드로 만들어 보시면 어떨까 싶습니다.(물론 장점이나 긍정적인 측면을 위주로 설명을 했는데, 부정적인 부분은 아래의 글을 참고하시길...)
아이폰은 C, 안드로이드는 java 이고, 하이브리드는 html5, javascript가 주인데, 최근에 html5와 자바스크립트의 발전과 성장을 보면 미래를 위한 준비로 생각하고 공부를 하시는것도 좋지 않을까 싶습니다.
2012 KT econovation 에코노베이션 개발자 캠프와 컨퍼런스 후기(스마트폰의 트렌드와 미래 그리고 하이브리드앱)
위의 세미나에 다녀왔는데, 안드로이드, 아이폰, 윈도우8, 하이브리드 개발자가 나와서 자신의 플랫폼의 장단점을 허심탄회하게 이야기를 했는데, 참 배울점이 많은데... 동영상도 있으니 참고하시길 바라겠습니다.
하이브리드 앱에 대해서는 좀 비관적이더군요...-_-;;
일반적인 웹앱의 형태라면 큰 문제는 없지만, 스마트기기의 터치, 진동, 카메라, gps 등의 기능을 사용하는 네이티브 앱같은 방식에서는 참 힘들다고 하는데, 특히나 애플의 기기에서는 크게 문제가 없지만, 안드로이드폰에서는 삼성, LG같은 제조사들이 자신의 기기에 최적화를 시키기 위해서 오픈소스를 수정하면서 문제가 발생하는 경우가 상당히 많아서 난관이라고 하던데, 최근에는 webkit쪽에서 Chrome 브라우저쪽으로 기본브라우저가 바뀌고 있어서, 한 2년정도 후면 해볼만하다고 하는데.. 하이브리드를 너무 만만하게 보면, 웃으면서 들어갔다가 울면서 나올수 있으니, 너무 쉽게 생각하지 말고, android, ios 각각마다 꽤많은 사용자가 있으니 하나의 플랫폼씩 공략을 하는것도 하나의 방법이라고 하더군요.
꽤 괜찮은 내용이니 위 링크에 가서 KT 유스트림의 동영상을 보시면 좋을듯합니다.