jscamp에서 twitter를 통해 들어온 Titanium 관련 질문들

jsCamp에서 twitter를 통한 질문에 대한 답변을 트위터라는 140글자로 적기엔 모자랄 것 같아 블로그에 정리해 봅니다. ^^

Q1. Titanium으로 안드로이드용 앱을 개발하려면 분기처리와 별도의 코드를 사용해야 하는 부분들이 상당히 많은 걸로 아는 … 이에 대해서 어떻게 생각하시나요? (from @wanyBae)

A1.  네트워크나 db등 시각적으로 보이지 않는 것과 관련된 API의 경우 거의 100%에 동일하며 시각적인 보이는 UI와 관련된 API의 경우 약 80%가 동일하다 보시면 됩니다. 구현하려는 UI방식에 따라 이 20%의 차이로 인해 많은 수고를 하거나 거의 수고를 안 할 수 있습니다. (위에서 100%와 80%라는 수치는 Appcelerator에서 말하는 수치입니다.)
또한 Titanium에서는 플랫폼별 리소스 관리가 편하게 되어있습니다.(wiki참조) 따라서 ui관련된 부분만 따로 분리하여 작성하는 것도 안드로이드와 아이폰 동시 개발의 수고를 더는 해결책 중의 하나일겁니다.

Q2. Titanium과  Phonegap을 비교했을 때 공수는 어느쪽이 더 적을거라 생각하시나요? (from @wanyBae)

A2. 둘의 성격은 달라서 개발하려는 상황에 따라 다르므로 어느쪽이 우세하다고 딱잘라 말하기는 어려운 것 같습니다. NativeUI의 형태를 띄는 앱을 개발하기에는 html+css3+js 등으로 네이티브 앱을 흉내내기보단 Titanium을 이용해서 Native UI로 구현하는게 성능면이나 개발 공수면에서 유리하다 생각합니다. 반면, 기존 모바일 웹페이지가 있고 이페이지를 랩핑해서 오프라인 기능을 추가하거나 카메라등을 이용하기 위함이라면 Phonegap을 이용하여 기존 개발된 모바일 페이지를 최대한 활용하는게 더 유리하다 생각됩니다.


Appcelerator’s Marketplace에 거는 기대

appcelerator developer blog 캡쳐화면 (CCL 미적용)

며칠전 크로스 Appcelerator의 Developer Blog에 흥미로운 글 하나가 올라왔다. 글 내용은 다름이 아닌 Appcelerator에서 몇 주 후면  Marketpalce를 연다는 것이다. (원문링크) (*Appcelerator는  플랫폼 개발 프레임워크 중의 하나인 Titanium을 만드는 회사이다.)

Appclerator Marketplace가 무엇인가?
Titanium의 팬이자 한 명의 개발자로서 상당히 흥미로운 일이다. Marketplace는 개발자들이 자신이 만든 소프트웨어의 일부를 다른 개발자들에게 사고 파는 장터이기 때문이다. 애플 사용자들에게 앱 스토어가 있다면 Titanium 개발자들에겐 Marketplace가 있는 샘이다.  개인 개발자가 만든 하나의 앱을 앱스토어를 통해 판매자에게 팔 수 있었던 앱스토어 처럼, Titanium을 통해 개발하면서 자신이 만들었던 모듈, UI component, template 등등 소프프트웨어의 일부를 사고 팔 수 있는 곳이 곧 열릴 Appcelerator’s Marketplace이다.

과연 이 마켓 플레이스는 잘 될까?
기존에 소프트웨어 개발자들이 peer to peer로 소프트웨어의 일부를 파는 시장이 있었는지는 난 잘 모른다. 이 Marketplace가 성공 할까? 아님 실패 할까? 개인적으로 이 appcelerator의 marketplace가 잘 성장하길 기대한다.(그리고 바란다^^) 그 이유는 다음과 같다.

1. Appcelerator의 통제력 : 로그인 기반 Titanium Studio을 통해 정당하지 않은 사용을 통제한다.
Appcelerator는 Titanium 프레임워크 상에서 개발하는 개발자들에게  Titanium Studio는라는 강력한 툴을 Appcelerator가 aptana를 인수하고 몇달 후에 공개한 바있다. 이 Studio는 총 두가지 버전이 존재한다. basic과 premium. 이 두 버전은 다른 소프트웨어가 아니다 동일한 설치파일로 소프트웨어를 설치하고 프로그램 사용시 로그인 되는 방식으로 유료회원일 경우 디버깅과 같은 프리미엄 기능을 제공한다. 만약 인터넷이 되지 않는 곳에서 Studio를 실행하면 무조건 basic 기능으로 동작한다. 일반적으로 볼 수 있는 서로 다른 설치 파일 형태가 아닌 로그인을 통해 보다 확실하게 사용자들을 구분하고  통제한다. 이런 식의 통제는 marketplace에서도 존재하리라 생각된다. 내가 구매하지 않은 marketplace의 모듈을 사용하려 한다면  studio 차원에서  하지 못하게 막을 것이라 예상 된다.(개인적인 예상이다.^^)

2. 앱은 실패했지만 앱을 개발하면서 만든 모듈은 성공 할 수 있다?
예를 들어 한 개인 개발자가 얼굴 인식하는 게임을 만들었다고 하자. 이 때 얼굴 인식하는 기능은 직접 모듈을 개발해서 구현했다. 하지만 그 게임은 사용자들의 사랑을 받지 못하고 조용히 사라졌다. 한마디로 앱은 실패한 샘이다. 하지만 그가 개발한 얼굴인식 모듈을 titanium에서 얼굴인식 기능을 사용하려는 개발자들에게 marketplace를 통해 팔수있다. 개발자에게는 분명 또 다른 시장이라고 생각한다. 앱은 단순히 개발력만을 가지고 성공할 수 있는 곳이 아니다. 하지만 marketplace는 좀 더 기술적인 개발력만으로도 해볼 만한 시장이라 생각된다.

3. 더욱더 빠른 개발 가능
Titanium의 장점 중에 하나는 빠른 개발이다. 이제 조금(?)의 돈만 더  더 지불한다면 그냥 Titanium을 쓸때 보다 조금 더 빠른 개발을 할 수 있어 지는 거다. marketplace에서 실제로 어떤 가격에 거래 될지는 알수 없지만 뭐 appstore와 비슷하지 않을까?^^ 0.99불에 커스터마이징 된 Tab 컴포넌트를 살 수 있고 4.99불에 얼굴인식 모듈을 살 수 있고 ^^. 블로그 글에 보니 trial도 제공 할 수 있단다. 써보고 살 수 있으면 얼마나 좋은가?

Marketplace 반갑습니다.
Appstore가 백화점이라면 appcelerator’s marketplace는 뭐 원단 시장 같은게 아닐까? 옷을 만들만한 감각은 없지만 신소재 원단 만큼은 끝내주게 만들 수 있는 장인이라면 marketplace가 상당히 반가울 것이다. 반대로 원단은 못 만들지만 디자인은 끝내주게 할 수 있는 디자이너도  끝내주는 최신 유행 원단을 사서 유행의 변화에 대응하는 웃을 만수 있을테고, 그 옷을 백화점 가서 팔 수 있을 것이다. 그렇다면 marketplace의 등장은 디자이너들에게도 반길일이 아닐까?


이제 Titanium이 Mobile Web까지..

출처: Appcelerator Developer Blog (CCL 적용대상 아님)

Appcelerator가  Titanium Studio 및 Mobile SDK 1.7의 RC1 버전을 공개했다. 그리고 다양한 내용을 담고 있는 블로그 포스트가 올라왔다.
http://developer.appcelerator.com/blog/2011/05/major-titanium-updates.html

위 포스트의 내용은 다음과 같다.

  1. Titanium Mobile 1.7 RC1
  2. Titanium Desktop 1.2
  3. Titamium Mobile Web
  4. Titanium Mobile for BlackBerry Beta 2
  5. Titanium Studio RC1
  6. 새로운 Titanium 유료 계정 (inde, professional, enterprise)

Titanium을 사용하고 있는 개발자라면 하나를 제외하고 이미 예고된 내용들일 것이다.  처음으로 등장한 것이 바로 Mobile Web 관련이다.
아래 시연 동영상처럼 Titanium Mobile SDK를 통해 App을 제작하면 그대로 Mobile Web 으로 구동 가능하게 해준다는 것이다. indie 계정 이상에게만 공개된것이다 보니 아직 써보진 못했다. 당연히 완벽하게 되진 않겠지?

[iframe http://player.vimeo.com/video/23832536 640 480]

동영상 출처: Appcelerator Developer Blog (CCL 적용대상 아님)

하지만 요즘 Titanium의 행보를 보면 Titanium 으로 모든 것을 다 할 수 있는 맥가이버 칼(?) 같은 걸 만들고 싶은게 아닌가 하는 생각이든다. (맥가이버 칼은 매력적이지만 정교한 작업은 힘들듯이 이것이 장점이 되기도 하지만 단점이 되기도..)

비록 새롭고 쓸만한 것들은 이제 유료 계정에서만 사용가능하게 끔 하는 것 같다. ㅠㅠ
어찌 되었든 Titanium의 새로운 소식들은 나에게는 재미있고 반가운 소식이다^^


Titanium과 Aptana의 합작품 "Titanium Studio" 공개!

지난 1월 Titanium*을 만드는 회사인 Appcelerator가 통합 개발 환경 툴(IDE)을 만드는 Aptana를 인수했다.
웹 개발자라면 Aptana는 다들 들어 봤을 정도로 유명하다. (이클립스를 기반으로 하는 독립된 프로그램은 물론 이클립스 플러그인 으로도 제공 한다.)
[* titanium 은 javascript언어로만 여러 플랫폼의 navtive app개발이 가능한  framework이다. 공식 site product 소개 페이지 바로가기]

Appcelerator가 Aptana를 인수 했다는 사실은 매우 반가운 소식이었다. 보나마나 Titanium용 IDE가 나올 것이 뻔하기 때문이었다. 아니나 다를까 발표당시 2011년 1분기에 Aptana와Titanium의 합작품의 Beta버전을 발표한다고 했다. (인수 관련 블로그 글) 비록 1분기라는 약속은 지키지 못했지만 며칠 전 Titanium Studio preview버전을 공개했다. 근데 공개 한건 알겠는데 나는 왜이리 호들갑을 떨고 있는 걸까? Titanium의 장점인 빠른 개발인데 이제는 Titanium Studio를 통해 더욱 빠르고 편리하게 개발 가능해졌기 때문이다.

1. 개발시 사용하는 툴의 감소
과거 : Eclipse(혹은 기타 다른 편집기) + Titanium Developer(컴파일 및 실행을 위해)
현재 : Titanium Studio
이클립스 환경에서 개발할때 Code completion을 하는 방법에 대해 블로그에 정리한 적이 있는데(관련 글) 이젠 이 설정도 필요 없다. 기본적으로 제공한다. 이제 각종 sdk를 제외하면 Titanium Studio 하나로 코드짜고 실행하고 할 수 있다.^^

2. Debuging의 편리함
기존의 Titanium 개발을 할때는  javascript code를 Firebug에서 처럼 breakpoint를 건다거나 특정 값을 바꾼다거나 object를 inspect할 수 없었다. 이젠 요런 것도 다 가능하다. ^^ (breakpoint에 조건도 넣을 수 있다.)
Titanium은 Javascript로 개발 하지만 실제 앱은 native이기 때문에 여러 Thread가 생성/동작 하게 된다. Titanium Studio에서는 각 Thread에 대한 정보는 보여줌은 물론  call stack 까지 보여준다. 자세한 사항은 아래 동영상 참조.


Titanium Studio Debugger Demo from Appcelerator Video Channel on Vimeo.

Aptana를 인수 했기에 너무나 당연한 결과이자 너무나도 예상된 결과이지만 Titanium이 계속 성장한다는 사실이 날 흥분하게 만든다. (비록 개인적으로 Titanium을 끄적이고 있지만..ㅋㅋ)

Titanium Studio를 살짝 써봤다. 아직 preview 버전이라 그런지 android sdk 설정이 제대로 되지 않았지만 (이 문제가 있다면 이 글 참고) iOS관련 해서는 잘 작동했다.  Code completion이 기존 Eclipse에 설정했을 때보다도 친절하다.후훗.  Titanium 개발이 한결 편해지겠네.하하

p.s. Titanium Studio 다운로드는 http://preview.appcelerator.com/studio/


Titanium의 대표적 개발 사례 Wunderlist


Wunderlist.com
1백만 이상 다운로드와 1천만 이상 to-do task생성을 자랑하는 To-do 앱이 있다. 이 앱은 아이폰, 아이패드, 안드로이드, 맥os, windows 전용 앱을 제공하며 Web 버전도 제공한다. 게다가 cloud 연결을 통해 언제 어디서나 똑같은 Task가 보여지도록 동기화 되며 지원하는 플랫폼은 앞으로 계속 확대 예정이다.

이 모든게 무료이다. 다른 사람들과 특정 카테고리 공유까지 가능하니 있을 건 다 있고 없을 건 없는 심플한 서비스이다.

“머리 아프다. 페이스북에 새 기능을 추가하면 동시에 7개의 플랫폼을 작업해야한다. HTML5가 미래의 플랫폼이다.” – Facebook CTO Bret Taylor

“구글조차도 모든 플랫폼을 네이트브로 지원하기엔 예산이 모자르다.” – Google VP Vic Gundotra

다양한 플랫폼을 지원하려고 고민해 보신 분들은 이미 뼈저리게 느꼈을 사실중 하나, ‘다양한 플랫폼을 지원하기란 정말 쉬원일이 아니다. ‘ 웹서비스의 경우 javascript, html, css로 이루어진 한벌의 코드를 크로스 브라우징이 되도록 손보는 일도 쉬운 일이 아닌데 서로 다른 언어를 통해 개발해야기에 플랫폼별 네이티브 어플리케이션을 다양하게 지원한다는 것은 더더욱 쉬운 일이 아니다.

그것도 Wunderlist를 만든 직원이 9명에 불과한 6wunderkinder회사의 경우에는 어떻겠는가?
(이 회사 직원은 회사 소개 페이지를 보면 9명에 불과하다. http://www.6wunderkinder.com/about/ )
더 놀라울 것은 그 9명에서 개발자라고 보이는 사람은 3명이다.

현재 지원 플랫폼 5개 + 웹서비스 1개…. 단순하게 개발자 수로 나눠보면 한사람당 2개!!!

다양한 플렛폼을 지원가능한 이유는 바로 Titanium Framework을 통해 개발했기에 다양한 플렛폼을 지원하는데 드는 비용을 많이 줄일 수 있었다고 한다.  iPhone 앱을 만들고 이때 개발한  코드의 90% 를 재사용 할 수 있어서 android 에 맞게 완벽히 porting하는데 4주 밖에 안 걸렸다고 한다. ( 관련기사 )

내가 Titanium을 처음 접했을 때가 작년 10월경으로 기억한다. 그 때부터 혼자 아름 아름 Titanium을 가지고 놀았다. 몇달 전 Aptana를 인수하는 등 범상치 않은 움직임을 보이고 있는 Titanium Appcelerator의 미래는 상당히 재미있을 거라 기대된다. 더 늦기 Titanium과 함께한 경험을 정리하고 공유하려 하려 한다. 하루에 하나씩!!!^^

p.s. Titanium을 통한 개발이 정답이라는 얘기는 아니다. Titanium을 통한 방법이 가지는 가장 큰 매력은 쉽고 빠른 멀티 플랫폼 개발이라는 점이다! 나는 그 매력에 빠졌다.^^ (특히 요즘 재미들인 Javascript 기반이라는 점도 매력^^)