모바일 환경에 대하여
모바일(Mobile)은 “이동하는” 또는 “움직임이 자유로운” 이라는 뜻으로, 휴대성, 이동성의 특징을 지닌 기기를 말합니다.
즉, 현재 많이 사용하고 있는 스마트폰, 태블릿PC 가 모바일이라는 범주에 속하는 기기로, 모바일 웹이라는 것은 이 모바일 범주에 속하는 기기에 최적화된 최적화된 웹을 지칭한다고 할 수 있습니다.
모바일 웹과 모바일 앱
모바일 앱도 모바일 범주에 속하는 기기에 최적화된 앱을 말합니다.
여기서의 앱(App) 이란 운영체제 혹은 플랫폼에서 제공하는 SDK(Software Development Kit)를 기반으로 개발된 애플리케이션을 지칭하는 용어이며 일반적으로 네이티브 앱(Native App)을 말합니다.
그리고 네이티브 앱은 사용자가 아이폰 앱스토어 또는 구글 안드로이드 마켓에서 다운로드하여 사용하는 앱을 네이티브 앱이라고 합니다.
모바일 웹과 모바일 앱의 특징과 차이점
모바일 웹은 HTML 기반의 웹 브라우저로 동작하는데요, PC 웹하고의 가장 큰 차이점은 화면 사이즈가 작고, 터치 스크린의 인터페이스를 가지며, ‘Click-to-Call’과 같은 모바일에 특화된 기능을 제공한다는 점입니다.
모바일 앱은 디바이스에 직접 설치(다운로드) 후 사용하는 방식입니다.
플랫폼(iOS, Android)에 따라 이용 가능한 서비스가 구분되며, 컨텐츠는 웹 콘텐츠를 활용(하이브리드 앱)거나 인터넷 연결 없이도 이용 가능합니다.
모바일 웹과 모바일 앱은 구동방식이 다르고, 운영체제 및 플랫폼에 따라 다르기 때문에 각각의 일장일단이 있습니다.
다시 정리하자면, 모바일 웹과 모바일 앱은 서비스나 콘텐츠를 제공한다는 역할을 같지만 동작하는 플랫폼과 구현 방식에 따라 구분됩니다.
이러한 기술적인 차이로 서비스나 콘텐츠의 용도에 따라 모바일 웹으로 개발할 것인지 모바일 앱으로 개발할 것인지로 나뉘게 됩니다.
모바일 웹
- 대체로 새로운 정보를 지속적으로 제공하는 것이 목적인 제품 리뷰, 블로그, 소식, 뉴스등과 같은 업데이트가 지속적으로 발생하는 콘텐츠를 제공하고자 하는 경우에 모바일 웹을 사용
- 모바일 웹은 웹 브라우저에서 동작하는 서비스라서 사용자는 URL 정보만 알면 사용 가능하다.
- 웹 표준을 따르면 다양한 플랫폼에서 동작하기 때문에 개발 생산성이 높고 유지보수가 쉽다.
모바일 앱
- 게임, 음악과 같이 하드웨어 성능이 높아야 하거나 모바일 기기의 하드웨어를 제어해야 하는 영역에서 모바일 앱을 주로 사용한다
- 모바일 앱은 운영체제 또는 플랫폼에 따라 각기 다르게 개발해야 하기 때문에 개발 생선성이 낮고 유지보수하기가 어렵다.
- 플랫폼에 따라 각기 다른 앱 스토어에서 다운로드해야하기 때문에 배포, 설치가 쉽지 않다.
- 모바일 웹에 비해 뛰어난 성능과 모바일 기기의 하드웨어를 제어할 수 있다는 점은 모바일 앱의 가장 큰 장점이다.
모바일 웹의 한계 극복
모바일 웹은 모바일 앱에 비해 실행 속도가 느리고 모바일 기기의 하드웨어를 제어할 수 없다는 모바일 웹의 단점을 극복하려는 노력이 계속되고 있으며 브라우저, 레더링 엔진, 자바스크립트 엔진(V8)의 성능향상, 하드웨어 가속 기술에 대한 향상이 이루어지고 있습니다.
모바일 앱 개발 방식에 대하여
모바일 앱을 제작하는 경우에도 서비스의 목적, 여러 환경에 따러 어떤 방법으로 개발할 것인지로 나뉘게 됩니다.
네이티브 앱(Native App)
위에 서 언급했듯이 네이티브 앱은 SDK를 기반으로 개발된 애플리케이션 즉, 모바일 플랫폼 API를 이용해 개발하는 앱을 말합니다.
그리고 모바일 기기에 직접 다운로드하여 로컬(기기)에 저장되는 실행 파일로 사용됩니다.
모바일 기기에 최적화된 언어로 개발되며, 안드로이드 SDK를 이용해 java 언어로 만드는 안드로이드 앱과 iOS SDK를 이용해 Objective-C 언어로 개발된 아이폰 앱들이 여기에 속하게 됩니다.
그리고 다음과 같은 특징이 있습니다.
- 고성능의 그래픽 처리가 가능해서 2D 및 3D 게임이나 증강현실과 같은 앱을 개발할 수 있다.
- 특정 플랫폼에서만 동작하여 앱스토어를 통해 업데이트가 가능하기 때문에 업데이트가 느린 단점이 있다.
- 해당 운영체재나 플랫폼이 다르면 많은 시간과 비용을 감수하여 새롭게 개발해야하는 단점이 있다.
네이티브 앱의 웹뷰(WebView)
웹뷰는 네이티브앱 내에서 웹 기술을 사용할 수 있는 환경, 즉 네이티브 앱에 내장된 브라우저를 말합니다.
웹 앱(Web App)
웹 앱은 모바일 웹과 네이티브 앱을 결합(웹 + 앱)한 것으로 모바일웹의 특징을 가지면서 네이티브앱의 장점도 가지고 있습니다.
다시말해, 웹 기술로 구현하는 앱을 말합니다. 모바일웹 보다는 조금 더 모바일에 최적화된 앱이라고 할수 있습니다.
웹앱의 일반적인 정의는'브라우저를 이용한 HTML, CSS, 자바스크립트를 사용해 만들어진 애플리케이션'이기 때문에 사용자가 직접 모바일 브라우저의 주소 창에 웹 주소를 입력해 사용하는 인터넷 서비스도 웹앱의 범주 안에 있습니다.
사용자가 웹사이트의 주소를 입력하게 하지 않고 스마트폰의 홈에 아이콘을 위치시켜 마치 네이티브앱처럼 아이콘을 클릭할 때 앱이 실행되도록 할 수도 있고 태그로 브라우저 주소 입력창 등을 숨길 수도 있어 겉모습과 동작 과정을 네이티브앱처럼 보이게 할 수도 있습니다.
웹앱은 다음과 같은 특징이 있습니다.
- 모바일웹처럼 HTML, CSS, Javascript, JSP, PHP, ASP, ASP NET 등 일반적인 웹 기술로 개발
- 웹 개발 기술을 사용하되 모든 UI와 UX를 앱과 유사하게 제작
- 모바일 브라우저에서 실행
- 모바일 웹보다 실행 속도가 빠름
- 네이티브 앱처럼 설치형이 아니기 때문에 웹앱을 실행하기 위해서 사용자가 브라우저를 열고 URL로 접근
- 첫 페이지는 웹으로부터 풀 브라우징으로 받고, 그 이후부터 AJAX 통신으로 모든 것 처리, 화면 전환시 애니- 메이션 효과, 사용자 터치 이벤트 처리, AJAX 통신, HTML5 로컬 저장소 이용하여 네이티브 앱과 유사한 실행 환경 제공
그리고 웹앱과 모바일 웹에 다음과 같은 공통점이 있습니다.
- HTML, CSS, 자바스크립트 기반의 웹 기술을 똑같이 사용한다.
- 모바일 기기의 하드웨어에서 제공하는 센서, 카메라 등을 사용할 수 없다.
- 스마트폰 운영체제 혹은 플랫폼에서 제공하는 API 를 사용할 수 없다.
- 운영체제 혹은 플랫폼, 그리고 브라우저에서 사용할 수 있도록 제공하는 API 만을 사용한다
하이브리드 앱(Hybrid App)
위의 웹앱의 단점을 보안한 것이 바로 하이브리드앱입니다.
다시 말해, 하이브리드 앱은 단어 그대로 네이티브 앱과 웹 앱 기반의 기술을 함께 사용한다는 것을 의미합니다.
네이티브 앱을 개발할 경우 아이폰이든 안드로이드든 각 운영체제 혹은 플랫폼에서 제공하는 프로그래밍 언어로 제작해야 합니다.
이는 해당 운영체제나 모바일 기기에 최적화된 기능을 제공하는 점에서 이점이 있지만 운영체제나 플랫폼이 다르면 많은 시간과 비용을 감수하면서 새롭게 개발해야 하는 단점도 지니고 있습니다.
하지만 하이브리드 형태의 앱을 만들면 이는 달라집니다.
앱의 기반이 되는 콘텐츠 영역은 HTML 기반의 웹 앱으로 제작을 하고 최종 앱 배포에 필요한 패키징 처리만 아이폰, 블랙베리, 안드로이드의 플랫폼 안에서 하는 것입니다.
이는 프로그래밍 언어가 다르다는 사실과 관계없이 편리하게 다양한 앱을 제작할 수 있는 환경을 제공하며 시간과 비용도 절감할 수 있습니다.
이렇듯, 웹 퍼블리셔도 스스로 앱을 디자인하고 개발해서 앱스토어, 안드로이드 마켓등에 배포할 수 있습니다.
요약하자면, 하이브리드앱은 웹앱을 네이티브앱으로 포장하는 것을 말하는데 웹기술로 개발되었지만 모바일에 최적화된 언어로 만드는 네이티브앱처럼 보이게 하는 것으로 하이브리드앱은 네이티브앱의 형태를 띄고 있어 앱스토어나 마켓에서 다운받아 모바일에 설치할 수 있으며, 모바일의 고유정보를 이용하고 하드웨어를 제어할 수도 있습니다.
현재 즐겨쓰는 네이버앱 다음앱이 하이브리드앱 이라고 할 수 있습니다.
그리고 하이브리드 앱을 제작할 경우에는 하이브리드 앱을 지원하기 위해서는 별도의 하이브리드 프레임워크가 필요합니다.
대표적으로 해외에서 개발한 폰갭(PhoneGap), 티타니움(Titanium) 등이 있고 국내에는 KTH 가 제공하는 앱스프레소(Appspresso) 가 있습니다.
폰갭
웹을 이용한 크로스플랫폼 모바일 앱 제작 플랫폼으로서 WebView를 이용해 웹 콘텐츠를 표현할 수 있도록 하고 폰갭 고유의 자바스크립트 API를 만들어 이 자바스크립트 API에서 카메라나 가속도계 같은 장치를 제어할 수 있도록 한 것입니다.
일종의 HAL(Hardware Abstraction Layer)라고도 할 수 있는데 네이티브 API와 웹 기술을 사용했기 때문에 하이브리드앱이라고도 합니다.
물론 네이티브앱을 개발하면서도 WebView를 사용하는 경우도 많지만 폰갭의 정체성은 크로스플랫폼이기 때문에 네이티브앱 개발 지식이 없어도 앱을 개발할 수 있다는 점에서 구별되고 있습니다.
모바일 앱 개발 방법의 경계
이렇게 모바일 앱을 개발하는 방식은 다양합니다.
그리고 엄밀히 따지자면 분명한 차이점은 있지만 커다란 개발 방법론 범주안에 모바일 웹을 포함시키기도 합니다.
이러한 네이티브앱, 하이브리드앱, 웹앱의 경계를 명확히 구분하는 것은 경우에 따라서 큰 의미가 없는 일이 되기도 합니다.
이런 상황에서 콘텐츠 제공 위주의 앱을 개발할 때 웹을 사용하는 것은'적용 여부'의 문제가 아니라'얼마나 사용할 것이냐'는 정도의 문제가 될 수 있습니다.
네이티브 API를 사용하면 웹을 사용하는 것보다 더 좋은 성능으로 더 미려한 UI를 제공할 수 있고 장치 제어를 원활하게 할 수 있지만 그만큼 개발에 부담이 따르게 됩니다.
하지만 하드웨어 성능의 향상과 브라우저 성능 개선으로 네이티브앱과 웹앱과의 성능 차이는 갈수록 줄고 있고 웹브라우저에서 장치 제어를 할 수 있는 다양한 방법이 제시되고 있기도 하기 때문에 이 개발 방법에 따라 네이티브앱이냐 웹앱, 하이브리드 앱이냐를 구분하는 경계가 더욱더 모호해질 것으로 보입니다.
'Dev Environment > 개발 환경' 카테고리의 다른 글
자바스크립트 디버깅(Debugging) - alert, console (0) | 2016.09.30 |
---|---|
Tomcat & Apache (4) | 2016.02.29 |
오프라인에서 크롬 확장 프로그램 설치하기 (0) | 2016.01.11 |
[Window] cmd 명령어 & DOS Command (3) | 2015.09.09 |
.bashrc 문서 별칭(Alias) 등록 및 CLI 에서 유효성검사하기 (0) | 2015.09.09 |