본문
- 등록일시2009-09-27
- 작성자
- 조회수3093
저는 웹 디벨로퍼이고 제 웹제품들을 iPhone으로 옮기고 싶습니다. 제품들 중 하나는 구글 맵스(Google Maps) 같은 것인데요: 폰의 스크린 상에 맵을 보여주는 것입니다. 맵을 드래그 하거나 맵 크기를 조정할 수 있고, 맵에 추가되는 정보를 볼 수도 있습니다.
HTML와 CSS, 그리고 Javascript를 이용해서 iPhone 고유의 앱들을 개발할 수 있게 해주는 기술들이 있는걸로 알고 있는데요. 다음의 것들이 제가 알고 있는 것들입니다:
위의 것말고 다른 것들 중에 이와 비슷한 제품들이 더 있나요? 있다면 그것들 사이의 차이점은 무엇인가요? 그리고 그중에 제가 어떤 것을 선택해야 할까요?
"objective c를 배우시고 네이티브 앱(native app)들을 프로그래밍하셔야 합니다. 님이 생각하기에 문제를 일으키지 않을 것 같은 것들이라고 해서 다 믿으면 안 됩니다. 가장 쉬운 방법은 Apple 고유의 네이티브 툴들과 언어를 사용하는 것입니다. 저는 단 3줄의 코드 또는 상황에 따라서는 코드를 전혀 쓰지 않고도 님의 100줄이나 되는 javascript와 똑같이 할 수 있습니다. 몇몇 지침서들을 참고하세요. - 만약 님이 javascript를 이해한다면 objective c는 그리 어려운 것이 아닙니다. 제2의 해결책들은 다 끔찍한 것들 뿐이에요. " | 2009-11-14 | ||
님이 언급했던 해결책 중 아무 것도 님이 OS 3.0에 도입된 맵키드 프레임워크(MapKit framework)에 직접 접속할 수 있도록 해주지 못합니다. 예를 들어, 구글 래티튜드(Google Latitude) 같은 구글 맵스 HTML 위젯(Google Maps HTML widget)들은 맵키트만큼 좋지 못하지 때문에, 네이티브 Cocoa 터치 애플리케이션(native Cocoa touch application)을 개발하거나 맵키트 통합(MapKit integration)를 추가하는 것이 가장 좋죠. PhoneGap은 이런 방식으로 (오픈소스이기 때문에 디폴트에 의해서) 확장가능합니다. 수정: 현재는 Titanium이 Mapkit를 위한 지원사항을 가지고 있습니다. " | 2009-09-27 | ||
iphone 위젯들인 것처럼 보이는 HTML5 위젯들을 만드는 것이 한가지 방법이겠지만, 그것들이 똑같이 잘 기능하도록 만들 수 있는가가 문제가 될 수 있겠죠. html5 애니메이션들(even plain View Transitions)의 성능, 긴 목록에 대한 스크롤링, 그리고 제스처(gesture)에 대한 반응성이 그리 훌륭하지 못하죠. 많은 iPhone 유저들이 차이점을 느끼게 될 겁니다. 또한 특정 플랫폼에 고유한 코드를 사용하며 유용성 문제까지도 초래할 수 있는 다른 디바이스들에 의해 지원되는 제스처들에 있어서도 차이점이 있습니다. 저는 그냥 네이티브 앱(native app)들 을 사용하고 싶네요. " | 2010-02-17 | ||
저는 단지 가장 많은 추천표를 받은 맨 위에 위치한 답변에 대한 코멘트를 쓰기 위해 stackoverflow에 등록했습니다. stackoverflow의 단점은 새로운 사람들이 코멘트를 쓸 수 없다는 겁니다. 따라서 저는 지금 이 코멘트를 하나의 답변에 보다 가깝게 만들어야 하죠. Rory Blyth님의 답변은 위의 두 javascript 모바일 프레임워크들에 대한 몇몇 유효한 정보를 포함하고 있습니다. 하지만, 그가 말하는 핵심들은 올바른 것이 아닙니다. 사실, Titanium과 PhoneGap는 서로 다르다기보다는 오히려 유사하다고 봐야하죠. 두가지 모두 javascript API들을 통해 모바일 폰 기능들을 접하게 해 줍니다. 그리고 애플리케이션의 로직(논리, html, css, javascript)은 네이티브 WebView 컨트롤러 안에서 실행되죠.
자, 그럼 그것들 사이에 차이점은 존재하는 것일까요? 예, 있습니다. 첫째, Titanium은 PhoneGap에 비해 좀 더 많은 모바일 폰 기능들을 javascript와 연결시켜 주기 때문에 기능이 좀 더 풍부한 것처럼 보입니다. 대부분 알고 계시겠지만, PhoneGap은 그리 많은 네이티브 UI 컴포넌트들을 javascript로 노출시키지 않습니다. 반면, Titanium은 포괄적인 UI API들을 javascript 안으로 호출하여 모든 종류의 네이티브 UI 컨트롤러들을 생성하고 제어할 수 있게 해주죠, 이러한 UI API들을 활용하여, Titanium 앱은 PhoneGap보다 좀 더 "네이티브"하게 보일 수 있는 것이죠. 둘째, PhoneGap은 Titanium보다 모바일 폰 플랫폼을 좀 더 지원합니다. PhongGap API들은 좀 더 포괄적이며 따라서 iPhone, Android, Blackberry, Symbian 등의 다양한 플랫폼들 상에서 사용될 수 있습니다. Titanium은 주로 iPhone과 Android을 대상으로 하고 있죠. 최소한 현재는 그렇습니다. Titanium 몇몇 API들은 특정 플랫폼에 고유한 특성을 가지고 있습니다. (예를 들어, iPhone UI API들). 이러한 API들을 사용하면 애플리케이션의 크로스 플랫폼(cross-platform) 기능이 저하되죠. 따라서, 만약 님이 님의 앱을 좀 더 "네이티브"하게 보이도록 하고 싶다면, Titanium이 좋은 선택이 되겠죠. 그리고 만약 님의 앱을 다른 플랫폼으로 보다 쉽게 "포트(port)"하고 싶다면 PhoneGap가 좋은 선택이 될 겁니다. " | 2009-11-27 | ||
제가 PhoneGap에 알고 있는 바에 따르면, 상당수의 iPhone API들에 Javascript API들이 제공됩니다. Titanium은 웹 개발 경험을 가지고 있는 사람들에게는 더 쉬울 겁니다. 그것은 TabView 애플리케이션을 만드는 단순한 하나의 XML 파일이고, 콘덴츠 영역에 있는 모든것들은 HTML/JS에 의해 제어됩니다. 제가 아는 또 한가지는, Titanium은 몇몇 프레임워크들이 특정javascript에 (특히, 위치정보와 폰 ID 등에) 접속할 수 있도록 해 줍니다. 업데이트: Titanium의 0.8버전 프레임워크에는 Maps API가 추가되었습니다. " | 2009-10-26 | ||
제가 알고 있는 바에 따르면, 두가지의 차이는 다음과 같습니다. :
위 두가지의 유사점은 님이 가지고 있는 모든 것들을 전형적인 웹 기술들(html/js/css 그리고 기타 등등)을 사용해서 쓸 수 있다는 것이죠. 그리고 커스텀 JavaScript API를 통해 네이티브 기능들에 접속할 수 있다는 겁니다. 하지만, PhoneGap 앱(아니면 PhoneGapp이 맞나요? 잘 모르겠네요...)들은 웹 앱으로서 그 생명을 시작하고 또한 웹앱으로서 그 생명이 끝나죠. iPhone 상에서는, 님의 html/js/등등이 단지 UIWebView 컨트롤 안에서 실행되는 것이고, PhoneGap JavaScript API들 상에서 님의 js 호출들이 네이티브 API로 라우트(routed)됩니다. Titanium 앱들은 네이티브 앱들이 됩니다. - 그것들은 웹 디벨로포먼트 기술(web dev tech)을 이용하여 개발됩니다. . 이것이 실제로 의미하는 바는 뭘까요?
님에게 적합한게 어떤 건지 생각해 보세요.
님이 다음과 같은 질문을 할 수도 있겠죠: 왜 제가 웹 상에서 호스팅되는 웹 앱 대신 PhoneGapp(그냥 이 이름으로 쓰기로 합시다)를 쓸거라고 생각하죠? 그렇게 하지 않아도 여전히 몇몇 네이티브 다바이스 기능들에 접속할 수 있지 않나요? 또한 유저로 하여금 제 "네이티브" 앱을 다운받아 설치하게 하는 것 대신 그냥 편리하게 웹 디벨로프먼트를 할 수도 있지 않나요? 이에 대한 답변을 하겠습니다: 왜냐하면 님의 PhoneGapp를 App Storedp 제출해서 돈을 받을 수 있기 때문이죠. 또한 유저 님의 앱을 쉽게 잊을 수 없도록 해주는 런처 아이콘(launcher icon)을 얻을 수도 있습니다. (저는 북마크는 잘 있어도 앱 아이콘은 잘 안 잊게 되더군요). 님은 확실히 님의 웹호스팅된 웹 앱에 접속하는 것을 유료화할 수 있습니다. 하지만 실제로 얼마나 사람들이 이러한 접속을 위한 모든 과정을 선뜻 진행하려 할까요? App Store를 이용하면, 앱을 하나 골라서 "구입" 버튼을 치고, 비밀번호를 입력합니다. 그리고 그걸로 끝이죠. 설치됩니다. 그리고 몇 초 후면 사용할 수 있습니다. 만약 제가 다른 누군가가 운영하는 모바일 웹 트랜젝션(거래) 인터페이스를 사용해야 한다면, 제 이름, 주소, 전화번호, CC넘버 등을 입력해야 하죠. 물론 그렇게 하고 싶지 않지만 그렇게 해야 하죠. 그리고 결론적으로 저는 이 모든 과정을 진행하지 않을 겁니다. 또한, 저는 Apple을 믿습니다 - 저는 스티브 잡스(Steve Jobs)가 제 개인정보에 로그인해서 제 CC에다 외설적인 잡지구독 비용을 청구하지는 않을 거라고 확신해요. 어쨌든, 웹 디벨로프먼트 기술이 관련되어 있다는 것만 제외하면,PhoneGap과 Titanium는 매우 다릅니다. - 단지 표면적으로 비교할 경우에 말입니다. 저는 웹 앱들을 싫어합니다. 그리고 만약 님이 iTunes App Store 리뷰들을 읽어 보시면, 유저들이 이런 점들을 꽤 많이 지적하고 있습니다. 제 폰 상에는 그냥 쓰레기 같은 앱들이 몇개 있습니다. 물론 그 앱들의 이름은 거론하지는 않겠습니다. 그리고 그것들은 UIWebView 인스턴스들 안으로 호스팅되는 웹 앱들입니다. 만약 제가 웹 앱을 하나 사용하고 싶어진다면, 저는 Safari를 열어서 거기 있는 것들 중에서 하나 찾을 겁니다. 저는 iPhone-y 물건들이 필요해서 iPhone을 하나 샀습니다. 그리고 Safari 안에 있는 아무 멎진 구글 웹 앱을 사용하는데 있어 아무런 문제가 없죠. 하지만 만약 구글이 웹 앱을 네이티브 앱인 것처럼 보여주면서 Springboard 상에 몰래 북마크(즐겨찾기)를 추가한다면 사기당한 느낌이 들겠죠. 이제 가야겠네요. 안 그러면 제 여자친구로부터 "제발 컴퓨터 좀 그만하고 3초만이라도 내 얼굴 좀 봐 주면 안돼 이 자식아"라고 바가지를 긁을게 뻔하니. " | 2009-10-04 | ||
Corona SDK (Ansca Mobile)는 코드 언어로서 Lua를 사용합니다. Lua에 대한 더 상세한 정보를 원하시면 lua.org를 참고하세요. 추가적인 웹 통합(web integration)을 계획하고 UI에 고유한 요소들을 추가하려할 때, 우리는 웹 기반 기술에 반하여 게임개발 같은 그래픽 강화 애플리케이션(graphics-intensive application)에 초점을 두는 경향이 있죠. 즉, 전적으로 Javascript/HTML/CSS 안에서만 Corona 앱들을 쓰는 사람들에 대해서 생각하지는 않는다는 겁니다. " | 2010-01-11 | ||
관련링크
- 이전글증강 현실, 현실과 가상이 혼합된 새로운 세상이 다가온다. 11.04.11
- 다음글하이브리드앱 개발 솔루션 11.07.28
댓글목록
등록된 댓글이 없습니다.
Titanium에서 네이티브 맵키트(native mapkit)가 지원됩니다.
"