강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
하이브리드 모바일을 위한 Native 방식의 App 개발<유엔진 Best Article>
조회 : 12,686  
   http://www.uengine.org [1900]
   http://www.uengine.org:8088/wiki/index.php/%ED%95%98%EC%9D%B4%EB%B8%8C… [1558]


하이브리드 모바일을 위한 Native 방식의 App 개발

하이브리드 모바일을 위한 프로그램을 개발하는 방법은 웹 개발과 앱 개발로 나누어 진다. 웹 개발은 모든 모바일이 지원하는 브라우저를 통해 결과를 볼 수 있는 단순한 웹 애플리케이션이고 앱 개발은 하나의 프로그램인 Application 형태로의 개발을 얘기한다. 그런데 Major Mobile들은 각 기기의 특성이나 브라우저의 특성상 서로 다른 방식의 개발을 해 주어야 동작하게 된다. 따라서 이 부분을 극복하기 위해 한번의 개발로 작업할 수 있도록 하는 Native 방식의 App 개발을 제안한다.


1. 서론

하이브리드 모바일은 기존 모바일의 각 장점을 모아 하나의 특화된 결과물의 모바일을 의미한다. 예를 들어 그림1과 같이 터치 폰의 터치기를 이용하면서 기기상의 자판을 제공하여 자판 입력 시 오류를 줄여 주는 것과 같은 것이 하이브리드인 것이다.

파일:H1_1.jpg

그림1 하이브리드 모바일


여하튼 이런 모바일들은 OS나 App 작성 방법 및 빌드 형식이 모두 상이하여 하나의 통일된 형태의 서비스를 제공하지 못하고 있다. 예를 들면, iPhone은 Xcode 상에서 Object-C를 이용해 개발을 해야 하고, Android[1]는 Darvic VM 상에서 Java로 개발해야 한다. 물론 이 내용들을 전혀 모르고는 개발이 불가능하지만 기초 내용만으로 동일한 결과물을 생산할 수 있도록 도와 주는 방식(Native 방식)이 있는데 바로 Rhomobile Framework[2]와 PhoneGap[3] 이다. 이는 Web으로 개발되는 내용을 App으로 변형시켜 Native 방식으로 프로그램을 제공한다. 이 중 PhoneGap API의 경우에는 JQuery[4] 기반의 JQTouch[5]와도 호환성이 좋아 UI 상의 표현력을 높일 수 있을 것으로 기대된다.

2. 관련연구

하이브리드 모바일에 웹과 같은 서비스를 공통적인 포맷으로 제공하기 위해서는 웹이 공용하고 있는 자바스크립트 기반의 API가 필요하고 내부적인 작동원리 보다는 클라이언트 측면의 조작으로 동작하는 App 방식을 채택해야 한다. PhoneGap, QuickConnectiPhone[6], Rhomobile 그리고 Appcelerator's Titanium Mobile[7]은 이러한 서비스를 제공하기 위해 오픈 소스로 API를 제공한다. 이 중 QuickConnectiPhone Framework는 완전한 하나의 템플릿 형태를 제공하고 있기 때문에 다른 개발 모듈들과의 호환성이 뛰어나다. 그러나 App으로의 변환을 위해 배포하는 방법이 조금 복잡하다는 단점이 있다. Appcelerator's Titanium Mobile은 Desktop과 Mobile를 모두 호환하는 App을 개발할 수 있는 환경을 만들어 주고 있다.

파일:H2_1.jpg

그림2 Appcelerator's Titanium Mobile


한 가지 추가 되어야 할 사항은 그림 2에서 보는 것처럼 현재 이 Framework를 통해서는 iPhone과 Android의 App만 개발 가능하기 때문에 다른 Major Mobile에 대한 지원이 필요하다는 것이다. 사실 PhoneGap의 경우에도 Apple의 발표처럼 OS4.0에서는 표준을 따르지 않는 App의 경우 등록을 시켜 주지 않겠다는 사항 때문에 문제의 소지가 있고, Rhomobile도 Ruby를 알지 못하는 개발자들에게 익숙하지 않을 것이라는 단점이 존재하기는 하지만 현재의 상황에서 PhoneGap과 Rhomobile의 기반 기술을 분석하는 것이 조금 더 시간적으로 효율적인 대안이 될 수 있을 것이다. 따라서 이번 연구에서는 Rhomobile과 PhoneGap 그리고 JQTouch의 API를 사용하는 방법을 통하여 그 기반 Framework를 생산하는 데 기여하기 위한 방안을 찾아보고자 한다.

3. 접근방법

파일:H3_1.jpg

그림3 Rhomobile Architecture

파일:H3_2.jpg

그림4 Rhomobile Device Capabilities

Rhomobile은 Rhodes, RhoSync 그리고 RhoHub API를 제공하는데 Rhodes는 iPhone, Windows Mobile, RIM, Symbian, Android 등의 OS에 하나의 코드가 동시에 적용될 수 있도록 만들어 주는 오픈 소스 프레임워크이다. RhoSync는 사용자의 모바일에서 사용가능한 Enterprise Application Data를 지원해 주는 독립 서버이다. 이 데이터는 사용자 디바이스에 저장되기 때문에 연결이 끊어진 상태에서도 사용할 수 있다. RhoHub는 모바일 Applications의 Host된 개발 환경을 제공한다. 이는 Native App를 개발하기 위해 HTML과 Ruby[7]를 사용한다. 그림 4는 Rhomobile의 각 버전별 Nabive UI 요소를 지원하는 스펙을 보여준다. 여기서 보는 바와 같이 Rhomobile는 대부분의 Major Device에 대한 App 변환을 지원한다. Architecture를 살펴보면 Device에서 사용하는 HTML Templates들은 Ruby Interpreter나 ORM 혹은 RhoSync Client를 통해 RhoSync Server와 통신을 하게 되고 RohSync Server는 Source Adapter를 통해 Backend App를 실행하게 된다. 그림 5는 그러한 Architecture를 표현한 것이다.

파일:H3_3.jpg

그림5 Rho Architecture


다음으로 이와 유사한 형태의 Native App 개발을 지원하는 Framework로 PhoneGap이라는 것이 있다. PhoneGap은 iPhone OS4.0에서의 App 등록이 불투명하지만 현재로서는 가장 손쉽게 Major Mobile을 위한 Native App을 개발할 수 있는 Framework이다. 사실 Framework라기 보다는 API라고 보는 것이 더 바람직하다. 그림 6은 현재 PhoneGap이 지원하는 Device 별 Native UI 요소 들이다.

파일:H3_4.jpg

그림6 Device 별 지원 Native UI 요소


현재까지 Window Mobile에 대한 지원은 Sound를 제외하고는 거의 없다. 그러나 향후 계획상에는 Window Mobile에 대한 거의 모든 지원을 예상하고 있다. PhoneGap을 이용하여 App을 개발하는 방법과 순서는 다음과 같다.

A. 폰갭 프레임워크 다운로드 및 압축해제 
B. 대쉬코드에서 UI 영역 작성 
C. Component에서 필요 이벤트 핸들러 작성 
D. 폰갭의 phonegap.js 파일 include 
E. 시뮬레이터 테스트 
F. 폰갭 프로젝트의 www 디렉토리에 필요 파일 복사 후 빌드 
G. 각 Device별 개발 환경에 프로젝트 생성 후 대쉬코드 파일 복사 
H. 소스코드 컴파일 
I. 대쉬코드에서 사용하던 경로 수정 후 배포 

이렇게 App을 개발하면 특정 Device에 종속되지 않고 각 단위의 작업을 수행할 수 있게 된다. 여기에 UI적인 부분을 JQuery 기반의 JQTouch를 사용하게 되면 좀 더 효율적인 화면작업을 할 수 있게 된다. JQTouch 관련 API는 필요한 UI 페이지에서 include 하기만 하면 사용이 가능하다. 기본 초기화 코드는 다음과 같다.

$.jQTouch( {      
icon: 'jqtouch.png',      
statusBar: 'black-translucent',      
preloadImages: 
['themes/jqt/img/chevron_white.png',       
'themes/jqt/img/bg_row_select.gif',        
'themes/jqt/img/back_button_clicked.png',        
'themes/jqt/img/button_clicked.png‘] 
}); 


4. 결론 및 향후계획

본 연구에서는 Write Once, Run Anywhere 라는 관점에서 접근하여 한 번의 코드 작성으로 모든 Device에 공통적 실행을 처리할 수 있는 방안에 대해 고찰한다. 이러한 방법의 접근에서 몇 가지 API나 Framework가 제공되고 있는데 문제는 현 시점의 각 OS 제공 업체의 관점이 문제가 될 수 있다. 특히 OS4를 제공할 예정인 iPhone에서는 PhoneGap으로 작성된 App의 등록에 대해서 부정적 관점을 보이고 있는 것이 문제이다. 이렇게 되면 자동으로 각 Device에 공통으로 실행될 App의 Generation API 들이 문제가 될 수 있으며 개발자들은 다시금 각 Device를 지원하기 위한 App을 매번 새로 개발해야 한다. 따라서 이를 해결하기 위해서는 먼저 어떤 OS 제공 업체도 반박할 수 없는 표준을 따라 코드가 작성되도록 하는 Framework를 개발해야 하고, 그 표준이 범용으로 사용될 수 있도록 해야 한다. 향후 이 분야에 대한 연구는 계속 진행될 것이며, 아마 이제는 API의 제공이 아닌 표준에 입각한 Framework의 작성법이 주를 이루게 될 것이며, 그에 대한 연구가 요구될 것이다.



참고문헌

[1] Android.

http://www.android.com/

[2] Rhomobile - the open mobile framework. http://rhomobile.com/

[3] PhoneGap.

http://www.phonegap.com/

[4] jQuery - write less, do more.

http://jquery.com/

[5] jQTouch- jQuery plugin for mobile web development.

http://www.jqtouch.com/

[6] QuickConnectiPhone.

http://quickconnect.pbworks.com/QuickConnectiPhone/

[7] Appcelerator's Titanium Mobile.

http://www.appcelerator.com/


[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1740


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
유엔진
www.uengine.org