2012

04월

24

네이티브 앱, 하이브리드 앱, 웹 앱.

얼마전 페이스북에 모질라 OS에 대한 기사를 올렸다가 (2초 정도 광고 후 기사가 나옵니다;) 모바일앱에 대하여 잠시 이야기가 있었는데, 제가 알고 있는 부분에 대해서 혼동이 왔습니다.
이 글은 개인적으로 간략하게 정리한 내용입니다. 이해는 하고 있으면서도 자주 그 범주와 개념에 대해서 혼동이 오는 경우가 있어서요.
제 기억이 장기간 신선도가 보존되지 않는 관계로 정리를 위해 남기는 글 입니다. 젠.. ㅠ_ㅠ

모바일용 앱은 Native App (네이티브 앱), Hybrid App (하이브리드 앱), Web App (웹 앱) 의 세 가지로 나뉜다. 또는 Mobile Web (모바일 웹)을 웹 앱이라고 말하기도, 또는 그의 반대로 표현하기도 한다고 한다. 하지만 엄밀히 따져보면 웹 앱과 모바일 웹은 웹에 바탕을 두고는 있으나 차이점이 좀 있다.

따라서 개인적인 생각에는 모바일용 앱은 네이티브 앱, 하이브리드 앱, 웹 앱 의 총 세가지, 또는 모바일 웹과 웹 앱으로 세분화 하여 네가지로 로 나누는 것이 맞지 않을까 생각한다.
모바일 웹은 html 마크업 언어를 통해 사이트를 구현하는 것이며, 웹 앱은 html5 (와 jquary 등)를 통해 웹에서 구현되는 게임등의 앱을 구현하는 것이기 때문이다.

 

네이티브 앱

이미지 출처 : 애플코리아

모바일 OS제조사에서 제공하는 개발언어를 이용하여 자신들의 제품에서만 동작되는 앱을 말함.
UI 등 앱제작에 필요한 다양한 요소가 패키지화 되어있고, 편리한 개발툴 제공 및 라이브러리나 함수들이 내장되어있어 개발이 쉽고 유지가 쉽다.
가령 애플의 iOS는 개발언어가 Object-C이며, 개발언어를 완벽히 모르더라도 Xcode라는 개발자툴을 제공함으로서 어느정도의 간단한 앱은 쉽게 개발할 수 있는 환경을 제공한다.

단점으로는 특정 플랫폼에서만 동작하며 앱스토어를 통해 업데이트가 가능하기 때문에 업데이트가 느린 단점이 있다.
또한 안드로이드 같은 경우는 버전 별, 제조사 별 단편화가 심각하기 때문에 (가령 제품마다 다른 해상도) 모든 제품을 지원할 수 없다.

 

모바일 웹

모바일 웹은 모바일에 최적화된 웹사이트라고 보면 된다.
웹사이트 개발방식과 거의 동일하여 별도의 개발방식이 필요하지 않고 인터넷 (또는 온라인 네트워크)에 접속이 가능하다면 어떠한 모바일 플랫폼으로도 접근이 가능하다.
하지만 모바일 플랫폼에서 작동되는 API를 통한 특화된 다양한 기능들의 활용이 불가능 하다. 이를 어느정도 해결하기 위해 Sencha Touch (센차 터치)나 jQuary Mobile (제이쿼리 모바일) 등의 프레임워크를 사용하지만 어느정도 극복 가능한 상황이지만 한계가 있다.

 

웹 앱

대부분 모바일 웹과 웹 앱을 하나로 보지만 개인적으로는 따로 구분할 수도 있다고 본다. 또한 웹 앱은 모바일 웹의 일부로 볼 수 있을 것이다. html5, 다양한 프레임워크, 프러그인 등을 통해 제공할 수 있는 서비스가 있다.?웹메일, 에버노트나 온라인 문서작성 같은 웹서비스, 웹에서 할 수 있는 게임등이 그것이다.

위의 스크린샷은 웹브라우저에서 실행한 게임이다. http://chrome.plantsvszombies.com/에 가면 유명한 아이폰용 게임 중 하나인 Plants VS Zombies라는 게임을 브라우저에서 즐길 수 있다.

구글은 크롬OS와 크롬 브라우저로 Chrome 웹 스토어를 통해 이런한 온라인 서비스인 웹 앱을 제공하고 있으며, 위 게임에서 알 수 있듯이 이것은 앱이 아닌 온라인 서비스의 링크를 제공하는 것과 같다.

 

하이브리드 앱

장단점 모두 네이티브 앱과 모바일 웹 (웹 앱)의 중간적인 앱이며 UI나 내부구조, 하드웨어에서 지원하는 기능을 전용 API로 앱 자체를 구성하고 컨텐츠는 웹으로 구성하여 앱처럼 실행되도록 하는 경우가 많다.

앱스토어를 통해 배포 되어야 하나 컨텐츠 등의 업데이트 등은 재배포가 필요하지 않는 등의 장점도 있지만 아직까지는 단점이 더 많다.
주변의 앱 개발자들의 이야기도 그렇고, 하이브리드 앱에 대해서 회의적이거나 반대적인 입장을 취하는 개발자들도 많은편이며 개발의 용이성이나 운영상의 입장에서 좋은평가를 받지 못하기도 한다.
하이브리드앱의 또다른 관점? 참고.

 

 

아래의 내용은 위 링크의 내용과는 별도로 iOS개발업체 대표님께 받은 메시지를 정리한 내용이다. 명제나 기능에 대한 정리를 한 것이 아니므로 참고용 정도.

네이티브 앱: 개발은 편하지만 각 디바이스 별로 만들어야 하고 특히 안드로이드는 파편화가 심해서 다양하게 지원이 힘듬.

하이브리드 : 기본 UI는 네이티브로 개발하고 수시로 업데이트 되는 컨텐츠만 웹으로.
아이폰과 안드로이드의 기본 UI프레임워크만 쓰고 컨텐츠는 웹과 연동해서 안드로이드의 파편화 문제를 어느정도 해결 가능.

모바일웹 : 한 번만 개발하면 되지만 고해상도로 나오지 않고, 네이티브앱 처럼 토치 인터페이스 효과를 넣을 수 없음.
이러한 대안으로 sencha나 jquary Mobile을 사용. sencha나 jquary로 모바일용 프레임워크 컴퍼넌트와 토치 인터페이스를 흉내 낼 수 있음.
센차 터치나 제이쿼리 모바일로 개발하는걸 하이브리드라고 하기도 한다고 함. 모바일 웹의 한계 때문에 이것으로 개발한다고 함.

센차, 제이쿼리는 모바일 디스플레이, UI에 최적화 된 프레임 워크.
가령 swipe, pinch 등 터치스크린에서 가능한 UI를 구현 가능.

 

센차터치 데모 사이트.?http://www.sencha.com/products/touch/demos/
제이쿼리 모바일 사이트. ?http://jquerymobile.com/

이 두 프레임워크는 표현 방식도 다르지만 지향하는 바가 다르다고 한다.
센차 터치는 네이티브 앱 처럼 보이는 웹앱을, 제이쿼리 모바일은 기존의 제이쿼리 처럼 모바일용 웹을 지향한다고 함.

웹앱은 크롬OS나 크롬 브라우저의 웹스토어에서 볼 수 있는데, 개인적으로는 웹앱을 선호하지 않는다.

모질라에서 공개하는 모바일 OS도 크롬OS 처럼 웹을 기반으로 동작할 것으로 보이며, 웹 앱과 센차 터치, 제이쿼리 모바일의 역할도 커지지 않을까 생각함.

—————————————————————————–

글을 적다보니 굳이 웹 앱과 모바일 웹을 구별하지 않아도 될 것 같다.
어차피 구성은 html5와 프레임 워크로 동일하게 구성되는 것이므로 어떻게 호칭을 말하더라도 의미만 파악하면 될 것이다.