태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

 

 

 

 
분류 전체.. (1308)
마이크로소.. (132)
민수네 가족 (17)
호랭이 사.. (141)
열이아빠의.. (7)
PlayPhone (98)
NetworkON (1)
ratharn의.. (10)
큐브 해법 (10)
사람들 (6)
개발 이야기 (94)
아이티 이.. (539)
영어 이야기 (2)
좋은책 이.. (8)
대기중인.. (1)
발명 이야기 (2)
건강하게.. (15)
LG전자  개발자  삼성전자  아이폰  호랭이  마이크로소프트웨어  블로그  구글  마이크로소프트  마소 
 free offers
└>free offers
 online pharma..
└>online pharma..
 Go here
└>Go here
 visit my webp..
└>visit my webp..
 Go Source
└>Go Source
«   2018/06   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
+ ITViewpoint
+ 도이모이
+ with okgosu
+ 학주니닷컴
+ 열이아빠의 RI..
+ Gsong.s Blog
+ 비주얼스튜디..
+ 광파리의 글로..
+ LovedWeb
+ 블루오션의 터..
+ 울지 않는 벌새
+ PC 지존
+ 디지털통
+ 아크비스타
+ 고독한 프로그..
+ Total : 2,031,504
+ Today : 15
+ Yesterday : 57
  

 

 

 

앱스토어 _해당되는 글 18건
2010.02.12   소리바다 애플리케이션 활용기 (1)
2010.02.12   아이폰 소리바다 음악 미투데이로 '고고싱' 
2010.01.22   C++로 만든 코드 안드로이드로 마이그레이션 하기 
2010.01.19   세계로 가는 '삼성 앱스', 한국은 언제??? 빈정상하네!!! (2)
2010.01.14   모바일에서 찾는 개발자의 미래 
2010.01.11   아이폰의 매력에 빠진 개발자를 위한 책! '애플리케이션 개발자 아이폰 매력에 빠지다' 
2009.12.28   왜 모바일 애플리케이션에 열광할까?!. 
2009.12.18   실전 아이폰 게임 개발 준비하기 
2009.12.18   앱스토어&바다 앞세운 삼성전자 스마트폰 전략 (2)
2009.12.14   애플 앱스토어 경험기, 드리밍 인 앱스토어-2 (1)

 

소리바다 애플리케이션 활용기
+   [PlayPhone]   |  2010.02.12 18:41  


어제 소리바다가 아이폰 애플리케이션의 새 버전을 발표했죠. 1.1 버전이요.
SNS로 음악을 포스팅할 수 있는 것이 대표적인 특징이죠.
그래서 한 번 써 봤습니다.
어차피 무료 앱이니까 부담없이ㅎㅎ




일단 아이튜즈를 통해 앱스토어에서 소리바다 앱을 다운로드 받은 후 동기화를 시키니

저렇게 소리바다 앱 아이콘이 생성됐습니다.



아이콘을 더블클릭하면 저렇게 앱이 열려요.

처음에 딱 뜨는 화며은 <일간차트>예요. 그 날 가장 인기 있는 노래 순서겠죠~?
저기서 저는 2AM의 '죽어도 못 보내'를 들어보려고 해요.
사실 요즘 깝권이 너무 귀엽드라고요. 딱 내 동생이었으면 좋겠다는....
(가끔 완전 기합ㅋ을 주고 싶을지도 모르겠지만요ㅋㅋ)


이렇게 앨범 표지로 추정되는 이미지와 함께 노래를 들을 수 있답니다.
저~~어기 상단의 <ALBUM>을 클릭하면 아래와 같이 '죽어도 못 보내'가 포함돼 있는 앨범의 노래 목록이 나오는 것 같아요.

그리고, 아까 그. 노래 듣던 화면에서 우측의 <Full> 아이콘을 클릭하면 이렇게 이용권을 구매하면 전곡 듣기가 가능하다는 메시지가 뜨네요. 저는 당연히 Pass!!!

이번에는 검색을 좀 해보려고요.
앱 메인 화면 하단의 검색 메뉴를 클릭하고, 깝권의 부인 <가인>을 검색해 봤습니다.
깝권이랑 가인이 함께 부른 노래가 듣고싶어서요. 제목은 기억도 안나고ㅎㅎ


검색 결과는 아주 훌륭합니다. 바로 저 노래예요, 제가 원하던 게.
이것 역시 관련 이미지와 함께 노래를 들을 수 있어요ㅎㅎ

헐...
근데 좀 들어보려고 하니 <종료>!!! 돈을 내라, 이거죠ㅠㅠ


이번에는 <최신앨범>
이건 검색시간이 다른 차트보다 좀 더 걸렸던 것 같아요. 아주 조금.


저는 요즘 한창 인기있는 <파스타>의 ost를 선택해 보겠습니다.

이렇게 ost에 포함돼 있는 노래 목록이 나오고요, 들어볼 수도 있어요. 쪼금만ㅋ

요 아래 있는 것은 <마이 리스트>예요. 제가 들어본 혹은 선택한 음악들이 저장되는 것 같아요.
저기서 아이폰의 제스처 기능 중 '옆으로 밀기(?))를 하면 이렇게 <삭제>버튼이 나와요^^

 

소리바다 아이폰 애플리케이션 1.1 버전의 특징 중 가장 큰 것이 트위터와 미투데이에 음악을 보낼 수 있다는 거잖아요~
이를 위해서는 <환경설정>에 들어간 후 계정을 등록해야 해요.


(위의 이미지를 보시면 아시겠지만 3G 네트워크 사용 여부를 설정할 수 있어요.)


저는 트위터 계정으로 로그인했어요.


일단 여기까지 하고 구입한 음악만 포스팅할 수 있는 줄 알고
또 막 '버럭버럭' 했어요.
근데 친절한 한 분께서 댓글로 알려주셨어요, 구입하지 않아도 된다고요.
그래서 해보니까 정말 되네요~~~

"감사합니다~!!" 


음악 재생 중에 화면을 한 번 클릭하면 다음과 같은 화면이 나와요.



저기 가사 위 쪽에 아이콘 보이시죠~?


저는 트위터 계정이 로그인 돼 있으니 트위터를 선택하겠습니다~

아~~ 되는군요, 됩니다!!!!


저기서 <sedn> 버튼만 누르면 완료!!!!



보이시죠~? 이게 제 트위터인데요, 저기 저렇게 포스팅돼 있네요.
(근데 이 트위터는 대체 어떻게 쓰는 거래요? ㅠㅠ)

어쨌든 이렇게 소리바다 애플리케이션 활용기였습니다^^





     MP3, 개발자, 블로그, 소리바다, 아이폰, 앱스토어, 활용기
     0   1
BlogIcon 고원규 2010.06.06 22:47 신고
요즘인기절정의쇼핑몰중 스타일와우 다들아시죠?? 모르시면 검색688j

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

아이폰 소리바다 음악 미투데이로 '고고싱'
+   [PlayPhone]   |  2010.02.12 18:40  


소리바다가 아이폰용 애플리케이션의 새 버전인 ‘소리바다 아이폰 애플리케이션 1.1 버전’ 을 공개했습니다.

이 1.1 버전에는 트위터, 미투데이에 음악 보내기 기능인 ‘SNS 포스팅’이 추가 됐다고 합니다.

이 SNS 포스팅 기능은 소리바다가 보유한 120만 여 곡에 고유 URL을 생성해 줘서 아이폰으로 감상하던 어떤 음악이라도 트위터와 미투데이에 즉각적으로 포스팅하게 합니다.

음악 URL을 전송할 때 원하는 메시지를 함께 보낼 수 있고, 트위터와 미투데이에 전송된 음악을 한 번의 클릭만으로 들을 수도 있다네요.

이와 함께 사용자 환경도 크게 개선됐다고 하는데요, 개선 내용은 PC에 접속하지 않아도 바로 회원 가입을 할 수 있는 정도인가봐요. (자세한 것은 더 찾아 보겠습니다)

또 사용자가 3G 네트워크 사용 여부를 미리 설정해 과도한 데이터 요금에 대한 걱정도 덜어줄 수 있을 것으로 보이네요.

‘소리바다 아이폰 애플리케이션 1.1 버전’의 자세한 사용기는 잠시 후 포스팅 됩니다ㅋ


소리바다는 이 애플리케이션을 기반으로 향후 스마트폰 시장에서의 음악 소비환경을 주도하겠다는 계획을 밝혔습니다.

소리바다의 손지현 상무가 보도자료를 통해 발표한 포부로 이 포스팅을 마무리하겠습니다.

“소리바다 아이폰 애플리케이션 업그레이드 버전은 모바일에서 실시간으로 음악을 공유하는 최적의 모바일 음악 네트워크 프로그램이다. 이를 기반으로 향후 다양한 스마트폰 애플리케이션을 선보여 새로운 음악 소비 환경을 주도해 나가겠다"





     개발자, 블로그, 소리바다, 아이폰, 애플리케이션, , 앱스토어
     0   0

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

C++로 만든 코드 안드로이드로 마이그레이션 하기
+   [마이크로소프트웨어]   |  2010.01.22 09:12  


요즘 소프트웨어 개발하는 사람치고 아이폰이나 안드로이드 개발과 전혀 무관할 수 있는 분이 드물텐데요. 그런데 갑좌~기 회사에서 떨어진 프로젝트가 기존에 만들어서 사용중인 C++ 코드를 안드로이드로 마이그레이션 하는 일이라면? 아 이거 참 만만찮게 난감한 일일텐데요. 월간 마이크로소프트웨어의 필자 이상욱 님이 이런 난감한 상황에 대처할 수 있는 방법을 재미있게 설명한 글이 있어 옮겨봅니다. 아직 정식으로 인사 드리진 못했는데 조만간 한번 꼭 뵙고 싶어지는 분이네요. 좋은 글 주신 상욱 님께 감사드립니다. 그리고 이 글이 많은 개발자분들께 도움이 되길 바라겠습니다.

출처| 아이마소

안드로이드 네이티브 라이브러리Ⅰ

이번 컬럼에서는 기존에 C/C++ 로 개발한 코드가 안드로이드 플랫폼에서 어떻게 동작하는지 안드로이드 플랫폼 구조를 통해 알아보고, Java 응용프로그램과 연동하기 위한 다양한 방법을 소개한다. 또 C/C++ 코드를 안드로이드 플랫폼에서 동작하는 바이너리로 빌드할 수 있는 툴체인 안드로이드 NDK에 대해 알아보고 간단한 사용법에 대해 알아보도록 하겠다.

이상욱 bumwoogi@gmail.com|새로운 기술을 배우는 것을 좋아하고 다방면에 관심이 많은 오지랍쟁이 개발자. 얼마전까지 무인잠수함을 만드는 것을 계획하였으나 도중하차 하였고, 지금은 전 인류에 공헌할 대단한 소프트웨어를 만드는 것을 꿈꾸고 있다.

이번 컬럼은 가상의 시나리오를 통해 실제 프로젝트 진행 중에 벌어질 수 있는 문제상황을 제시하고 동시에 이 문제를 해결해나가는 과정을 알아보도록 하겠다.


등장인물

  • 허우대 대리 : 몇달전 경력사원 공채로 새로 입사한 인물로 Java를 사용해봤다는 이유만으로 난생 처음으로 안드로이드 플랫폼에 기존에 C++로 작성한 소스를 마이그레이션 하는 업무를 맞는다. 허우대는 멀쩡 하지만 성과가 없다고 일정만 차장으로 부터 허우대라는 별명을 얻었다.
  • 신익한 선배 : 허우대 대리의 학교 선배로 모바일 분야에서 안해본게 없는 대단한 실력자 이지만, 일을 너무 사랑하는 나머지 인간관계는 별로 소질이 없어 보이는 시니컬한 성격의 소유자, 허우대 대리의 질문에 매번 퉁명스럽게 대답 하지만 그 속마음에는 후배를 스스로 깨우치게 하려는 나름의 철학을 가지고 있다.
  • 일정만 차장 : 이번 프로젝트의 책임자로, 일에 대한 책임감이 투철하지만 상냥한 성격은 아니다. 특히 일정을 어기는 사람을 무척 싫어한다.

허우대 대리는 얼마전 일정만 차장으로 부터 1주일간의 시간동안 이전 누군가가 C++ 로 작성한 방대한 양의 xml 문서 parser를 이번 프로젝트에 재사용 할 수 있도록 안드로이드 플랫폼에 마이그레이션 하라는 지시를 받았다. 허우대 대리에게 주어진 시간은 고작 7일. 7일 동안 허우대 대리가 어떻게 이 프로젝트를 진행하는지 함께 지켜보도록 하자.

선배, 안드로이드 애플리케이션 개발은 Java로 하는거지?

생전 처음 안드로이드 플랫폼에서 개발을 시작하는 허우대 대리는 신익한 선배를 찾아가서 조언을 구하게 되었다.

“선배, 차장님께 안드로이드 플랫폼에 기존에 c++로 작성한 엄청난 양의 parser 소스를 마이그레이션 하라는 지시를 받았는데, 나 이거 다 java로 다시 만들어야 하는건가?”

선배는 한심하다는 반응으로 특유의 시니컬한 한숨을 내쉬며 이렇게 얘기한다.

“안드로이드= java의 공식은 아니야. 안드로이드 플랫폼이 어떻게 구성돼있는지 먼저 확인해 보는게 어때?”


안드로이드 플랫폼은 크게 리눅스 커널과, C/C++로 작성한 라이브러리(보통 네이티브 라이브러리라 부른다), 안드로이드 응용프로그램의 뼈대를 제공하는 애플리케이션 프레임워크와 기본 애플리케이션으로 구성돼 있다.

리눅스 커널은 OS의 기본 기능인 태스크간의 스케줄링과 메모리, 디스크, 네트워크 등의 자원을 사용할 수 있도록 시스템 콜을 제공한다. 이는 리눅스 커널 윗부분에 초록색으로 표시된 네이티브 라이브러리를 통해 응용프로그램이 편하게 사용 할 수 있는 형태로 제공된다.

안드로이드 응용프로그램은 애플리케이션 프레임워크(응용프로그램의 구조를 제공하고 제작에 도움을 주는 Java class로 구성)을 이용하고 역시 Java언어로 작성한다.

이 Java파일을 안드로이드 SDK를 이용해 빌드하면 내부적으로 Java컴파일러와 dex converter를 거쳐 Dalvik VM(안드로이드 응용프로그램을 동작시키는 VM으로 일반적인 Java VM과는 다르다.) 위에서 동작하는 byte 코드로 변환하게 된다.

결론적으로 안드로이드 응용프로그램(Java로 작성)은 애플리케이션 프레임워크(.jar형태의 Java class.)를 이용해 VM에서 제공하는 코어 라이브러리(core library) 기능을 사용하게 되고, 이 코어 라이브러리는 리눅스 커널 위에서 동작하는 다양한 C/C++ 라이브러리(c/c++)를 호출하게 된다. 이 라이브러리는 필요에 따라 리눅스 커널의 system call을 호출하게 된다. 위 그림에서 화살표 방향을 따라 가면서 확인하자.

위 그림에서 안드로이드 런타임 계층과 라이브러리 계층을 연결하는 왼쪽 화살표로 표현된 부분에서 일반적인 함수호출 관계 외에 추가적으로 C/C++ ↔ java 호출 사이의 ‘glue’가 존재한다. 결국 이 덕분에 안드로이드 프레임워크는 자연스럽게 OS의 복잡한 기능을 리눅스 커널로부터 빌려 쓸 수 있는 것이다.

허우대 대리는 결국 C/C++ ↔ Java사이의 ‘glue’를 만들면 기존 소스를 리눅스 상에 포팅 하는 정도의 노력으로 재사용 할 수 있겠다는 결론을 내리고, 곧바로 Java ↔ C/C++ 를 호출 할 수 있는 방법을 찾아보기 시작했다.

Java ↔ C/C++ 사이의 glue는 어떤것을 사용할까?

일반적으로 Java에서 C/C++ 모듈을 사용하기 위해서는 다음과 같은 방법을 사용한다.

1. Java Native Access (JNA) 

자바 코드에서 네이티브 코드와 같은 형태로 네이티브 함수를 호출하는 방식으로 기존 코드의 최소한의 수정으로 응용이 가능해, 최상의 방법으로 생각되나 현재 안드로이드 Dalvik VM에서 지원하지 않는 방법이다.

2. Java Native Interface (JNI)
Java 초창기부터 존재한 Java/Native interface 방법으로 안드로이드 Dalvik VM에서 지원하는 방법으로 실제 안드로이드 플랫폼 소스 여러 부분에서 사용되고 있다. 그러나 이 방식은 raw form을 다루는 형태로 개발해야 하기 때문에 개발 시간이 많이 소요되고 에러를 발생 시킬만한 요소가 많다.

3. Simplified Wrapper and Interface Generator (SWIG)
JNI를 좀 더 쉽게 사용 할수 있도록 해주는 도구로 C/C++ 인터페이스를 정의한 파일을 입력 받아 C/C++ JNI wrapper 코드를 생성한다. 이 방법 역시 Dalvik VM과는 호환성 문제가 존재한다.


Native library(C/C++) 로 개발할 것 인지에 대한 선택 기준

안드로이드에서는 J2SE의 대부분의 기능과, 애플리케이션 프레임워크를 통해 다양한 API 셋을 제공하고, Java를 사용하여 대부분의 응용프로그램을 제작 하는데 부족함이 없도록 배려하고 있다.

신규 개발시 애플리케이션 프레임워크를 통해 제공받을 수 없는 일부 기능(대부분 외부 기기 나 디바이스 종속적인) 부분과 성능이 아주 중요한 일부 기능을 제외하고는 Java를 사용하여 개발하는 것이 프로젝트 장기적인 관점에서는 나은 판단이라 생각된다.

C/C++로 코드로 개발은 유지보수와 디버깅 측면에서 번거롭고 불편한 부분이 있으며 JNI를 이용하여 Java 쪽으로 glue를 만드는 일이 예상하는 것만큼 간단한 일은 아니기 때문이다. 여기서 제시하는 가상의 시나리오 역시 주제를 이끌어 가기 위해 단순화시킨 예일 뿐이지 실제로 기존에 C/C++로 작성한 코드를 마이그레이션 하는 작업이 주어질 경우 얼마나 인터페이스가 단순한지, 기존코드에서 플랫폼 종속적인 부분이 얼마나 있으며 이것을 안드로이드(Linux kernel)에 포팅하기 위해서 얼마나 노력이 필요한지, 혹은 HTTP나 STL등 안드로이드 Native library단에서 충분히 제공하지 않는 기능을 사용한 부분이 있어서 재작업이나 추가 포팅 작업이 필요한지 충분히 고려하여 기존 모듈을 재활용할 것인지, Java코드로 다시 작업할 것인지 결정해야 할 것 이다.


허우대 대리는 Dalvik VM과의 호환성 문제와 보편적으로 사용하는 기술이라는 점을 감안해 JNI를 이용해 프로젝트를 진행하기로 했다.

점심시간에 허우대 대리는 자신이 JNI를 이용하여 기존 parser소스를 거의 재활용 할수있는 방법을 생각해 냈다고 신익한 선배에게 자랑을 늘어놓았다. 이때, 밥을 먹던 신익한 선배는 이런 이야기를 남긴 뒤, 아무일도 없었다는 듯 식사를 계속 했다. 신익한 선배가 남긴 말은 이렇다.

“그럼 안드로이드 시스템에 포함해서 빌드 하겠다는 얘기야? 배포는 어떻게 할건데?”

그렇다. 그림에서 보는 C/C++ 라이브러리는 안드로이드 시스템의 영역으로 허우대 대리는 배포방법에 대해 고려하지 못한 것이다. 안드로이드 에뮬레이터를 실행하고 <화면 1>에서 초록색으로 표시한 C/C++ 라이브러리 파일의 실제 위치를 확인해보자. 아래와 같이 커맨드 창에서 emulator를 실행하거나 이클립스 IDE를 통해 emulator를 실행한다.

에뮬레이터가 정상적으로 실행되면 위와 같이 에뮬레이터 화면을 확인할 수 있는데, 이때 콘솔에서는 <리스트 1>과 같이 adb 명령을 이용하여 shell을 실행한다.

     <리스트 1> adb shell을 이용하여 네이티브 라이브러리 확인하기
    ----------------------------------------------------------------------------------------------------------
    >adb shell
    adb shell 이 실행되면 아래와 같이 library path를 확인해보자
    #echo $LD_LIBRARY_PATH
    #/system/lib
    system/lib가 library path로 잡혀있는 것을 확인하고 /system/lib directory로 이동한다.
    #cd /system/lib
    ----------------------------------------------------------------------------------------------------------

<리스트 1>의 내용을 <화면 3>를 통해 확인해보자.

<화면 3>에서는 안드로이드 플랫폼에서 제공하는 네이티브 라이브러리가 위치하는 것을 확인할 수 있다.

허우대 대리가 준비하는 프로젝트의 결과물은 다운로드 가능한 형태로 배포되어야 하는데 /system 디렉토리는 다운로드한 애플리케이션이 설치할 수 있는 영역이 아니기 때문에 /system 디렉토리 대신 /data 디렉토리에서 동작 할 수 있는 방법을 찾아야 한다.

안드로이드 시스템 이미지
안드로이드 시스템 이미지는 리눅스 운영체제에서 파일시스템은 단순히 자료의 저장기능 뿐 아니라 운영체제 동작에 필요한 필수 정보를 포함하고 장치 관리 등의 특별한 용도로도 사용하므로 선택항목이 아니라 필수 항목이다. 시스템 이미지는 안드로이드 프레임워크를 구동하기 위해 필수적인 항목으로 <안드로이드 SDK설치 디렉토리>/platforms/<플랫폼버전>/images/system. img 에서 확인 할 수 있다.

이 이미지파일은 실제 에뮬레이터가 구동될 때 /system directory에 마운트하게 되는데, 이내용은 adb shell을 실행시킨 후 최상위 디렉토리의 init.rc파일에서 확인 할 수 있다.

/system 디렉토리는 임베디드하여 탑재할 기본 응용프로그램을 포함해 안드로이드 프레임워크에 필요한 라이브러리 설정파일 등이 들어있는 영역으로 추가로 다운로드받은 응용프로그램과는 구별된다. 다운로드 받은 응용프로그램은 /data 디렉토리에 위치하게 된다.

안드로이드 SDK 설치
앞서 설명된 부분들을 실습하기 위해서는 안드로이드 SDK를 설치하고 버추얼 디바이스를 생성해야 하는데, 이 부분은 이번 컬럼의 주제와는 벗어나므로 아래 URL을 참고해 설치하기 바란다.

http://developer.android.com/sdk/index.html

허우대 대리, NDK와 만나다

다음날 배포문제로 고민하던 허우대 대리는 아래의 안드로이드 개발자 웹사이트를 통해 NDK에 대한 내용을 접했다.
 
http://developer.android.com/sdk/ndk/1.6_r1/index.html

NDK는 C/C++로 작성한 코드로 리눅스 OS 기반의 ARM binary를 생성하기 위한 크로스 툴체인을 제공한다. 여기서 ‘크로스 툴체인’이란 타깃머신과는 다른 환경에서 타깃 머신용으로 바이너리를 생성할 수 있도록 제공되는 툴인데 컴파일러 링커 그리고 기타 컴파일에 필요한 유틸리티를 포함하고 있다.

   <리스트 2> Application.mk 파일 

   --------------------------------------------------------------
   APP_PROJECT_PATH := $(call my-dir)/project
   APP_MODULES      := hello-jni
   --------------------------------------------------------------

일반적인 x86호환 CPU의 윈도우나 리눅스 PC기반 환경에서 ARM이나 MIPS등 임베디드 머신의 CPU에서 동작하는 바이너리를 컴파일 할 수 있도록 해준다.

그리고 아래와 같은 라이브러리를 사용할 수 있도록 header file을 제공하는데, 이 내용은 앞서 제시된 adb 쉘에서 확인한 /system/lib 디렉토리에 있는 라이브러리의 일부임을 확인할 수 있다.

  • libc(C library)
  • libm(math library)
  • JNI interface
  • libz (zip 압축 library)
  • liblog(Android logging library)
  • OpenGL ES library (3D graphic library, NDK 1.6버전부터)
추가적으로 안드로이드 응용프로그램 패키지 파일(.apk)에 native library를 포함할 수 있는 방법을 제공한다. 허우대 대리가 찾던 바로 그 방법이다. 그럼 이제 허우대 대리와 함께 NDK를 설치해 보도록 하자.
 
(1) http://developer.android.com/sdk/ndk/1.6_r1/index.html 에서 윈도우용 패키지를 다운로드 받는다.
(2) 적당한 위치에 (1)에서 다운로드 받은 압축파일을 푼다.
(3) www.cygwin.com에서 최신 cygwin 을 설치한다.
(4) 설치한 Cygwin bash shell을 실행하고 bash shell에서 /cygdrive/<NDK 설치 경로> 로 이동해 ‘Build/host-setup.sh’ 라고 명령을 수행한다.

이처럼 순차적으로 따라하고 나면, <화면 4>와 같이 ‘Host setup complete…’라는 문구가 나타나는데, 이럴 경우 셋업이 성공한 것이다.

이제 설치가 끝났으니 먼저 NDK에 샘플로 제공되는 hello-jni 예제를 빌드해 보자. 빌드시에는 $make APP=hello-jni라고 명령을 수행한다. 재빌드시에는 -B 옵션을 사용하고 실제 build command를 모두 확인하고 싶은 경우 V=1 옵션을 사용한다.

빌드결과로 apps/hello-jni/project/libs/areabi/libhello-jni.so가 생성되었는지 확인하자.

어떻게 NDK에서 제공하는 툴을 이용하여 예제가 빌드 되는지 알고 싶다면, apps/hello-jni/Application.mk 와 sources/ hello-jni/Android.mk 파일을 열어보자.
일반적인 make 파일과 같은 형태이며 빌드를 위한 변수를 설정하는 부분을 확인 할 수 있다. 또한 Application.mk 파일에는 응용프로그램 에서 어떤 네이티브 라이브러리 모듈을 사용할 것인지에 대해 기술해야 한다. 이 부분은 네이티브 라이브러리를 빌드하는 것과는 직접적인 관계가 없으나 이 파일을 참조해 빌드할 타깃 모듈을 결정하기 때문에 필수적으로 작성해야 한다.

     <리스트 3> Android.mk 파일
     ----------------------------------------------------
     … 중략…
 
     LOCAL_MODULE    := hello-jni
     LOCAL_SRC_FILES   := hello-jni.c
 
     include $(BUILD_SHARED_LIBRARY)
     ----------------------------------------------------

Android.mk 파일에는 실제 shared library로 빌드할 c/c++ 파일 목록 과 사용하는 라이브러리 목록, compile/link option 등을 기술해야 하는데, 이때 변수 LOCAL_MODULE 에 모듈이름을 기술하게 된다. 이어 변수 LOCAL_SRC_FILES 에 빌드하려고 하는 소스 파일명을 기술하고, 파일명 사이는 스페이스로 구별한다.

마지막 줄이 shared library, 즉 .so 파일로 빌드 하겠다는 뜻이다. 이렇게 기술하면 자동으로 lib+모듈명+.so 형태의 파일을 빌드하게 된다.

추가로 특정 라이브러리를 사용하기 위해서는 아래와 같이 LOCAL_LDLIBS 변수에 내용을 기술한다. 아래는 안드로이드 로그 라이브러리를 사용하기 위한 예이다. 또한 이에 대한 추가적인 내용은 NDK document 폴더의 ‘ANDROID-MK.TXT’,’APPLICATION-MK.TXT’,’HOWTO.TXT’ 문서를 참고하기 바란다.

LOCAL_LDLIBS     :=-L$(SYSROOT)/usr/lib/ -llog

이제 네이티브 라이브러리 빌드가 끝났으니 네이티브 라이브러리를 사용하는 Java 코드를 살펴보자. <화면 6>과 같이 apps/hello-jni 프로젝트를 이클립스에서 열어보도록 하자. 왼쪽 패키지 익스플로러 창에서 마우스 오른쪽 버튼을 클릭한 뒤 Import 메뉴를 선택한다.

이어 Existing Projects into Workspace를 선택한후 app/hello-jni/ 디렉토리를 선택한다. 이를 실행하면 <화면 7>과 같이 Package Explorer에  HelloJni 프로젝트가 로딩되면 성공한것이다.

이클립스 메뉴에서 Run->Run을 선택하거나 단축키로 Ctrl+F11을 선택하면 에뮬레이터에서 Hello-jni 프로젝트의 결과를 확인할수 있다.

에뮬레이터가 실행되는데 제법 시간이 걸리므로 인내심을 가지고 기다리기 바란다. 에뮬레이터를 동작하기 위해서는 플랫폼 버전에 맞는 AVD 파일을 미리 생성해야 하는데 이 내용은 http://developer.android.com/guide/developing/eclipse-adt.html을 참고하길 바란다.

더불어 이전에 adb shell 명령을 이용한 안드로이드 파일시스템을 살펴보았는데, 이번에는 이클립스 IDE에서 DDMS툴을 이용하여 손쉽게 파일시스템을 확인해보자. 이때 이클립스 툴바 오른편에서 DDMS perspective 버튼을 선택한다. 오른편에 File Explorer 창을 이용하여 data/data/com.example.hellojni 폴더의 내용을 확인할 수 있으며, lib폴더아래에 libhello-jni.so 파일이 있는 것 또한 확인할 수 있다.

<화면 9>에서 보여지듯, 결국 안드로이드 응용프로그램은 system/lib 폴더의 라이브러리 이외에 /data/data/<자신의 package이름>/lib 아래 네이티브 라이브러리를 추가로 참고하는 것을 확인할 수 있다.

네이티브 라이브러리를 사용하는 Java 코드 맛보기

허우대 대리는 Java코드 에서 어떻게 C로 작성한 네이티브 코드를 참고하는지 궁금해졌다. 이번에는 허우대 대리와 함께 src/com/example/HelloJni.java 코드를 살펴보자.

    <리스트 4> HelloJni.java 파일
    -----------------------------------------------------------------
    … 중략…
    public class HelloJni extends Activity
    {
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            TextView  tv = new TextView(this);
           tv.setText( stringFromJNI() ); //-- (3)
            setContentView(tv);
        }
     
    public native String  stringFromJNI(); //-- (1)
     
    … 중략…
       static {
        System.loadLibrary("hello-jni"); //-(2)
        }
    }
    -----------------------------------------------------------------

<리스트 4>는 stringFromJNI 함수를 호출하여 얻은 문자열을 textView에 내용으로 넣어주는 간단한 소스로, 3가지 의미로 이용된다.

1) native 키워드를 붙혀서 선언부만 작성한다. 네이티브 라이브러리에 구현부가 있음을 알려준다.

2) static {..} 부분은 이 class가 로딩될 때 호출되는 되는데 이때 ‘hello-jni’ 라는 이름의 네이티브 라이브러리를 로딩하라는 의미이다.

3) 네이티브 라이브러리 함수라도 보통의 Java 메소드와 같은 방식으로 사용한다.
 
이어 Source/samples/hello-jni.c 파일을 열어서 네이티브 라이브러리 구현부도 함께 살펴보도록 하자.

<리스트 5> 네이티브 라이브러리 구현부 코드 
----------------------------------------------------------------------------------------------
Jstring Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
                                            jobject thiz )
{
    return (*env)->NewStringUTF(env, "Hello from JNI !")
}
----------------------------------------------------------------------------------------------

<리스트 5>를 보면 함수이름 앞에 ‘Java_com_example_ hellojni_HelloJni_’ 가 붙어 있는데, 이 부분은 JNI 함수이름 규칙에 의해 package명_클래스명이 Java에서 선언한 함수 이름 앞에 붙게 된다. 함수의 내용은 단순히 “Hello from JNI!” 라는 문자열을 Java에서 사용하는 String 타입으로 변환하여 반환하는 내용이다.

참고자료
1. http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html
2. http://developer.android.com/sdk/ndk/1.6_r1/index.html
3. http://www.aton.com/android-native-libraries-for-java-applications/
4. http://www.swig.org/





     c++ 코드, Google, 개발, 개발자, 마소, 마이그레이션, 마이크로소프트웨어, 블로그, 소프트웨어, 아이폰, 안드로이드, 앱스토어, 이상욱, 호랭이
     0   0

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

세계로 가는 '삼성 앱스', 한국은 언제??? 빈정상하네!!!
+   [아이티 이야기]   |  2010.01.19 05:50  


얼마 전 오픈한 삼성전자의 애플리케이션스토어 '삼성 앱스(www.samsungapps.com)'가 해외에 진출했다는 소식입니다. 이미 싱가폴과 독일에 오픈을 했고 오는 29일에는 중국과 브라질에 오픈한다는 계획인데요. 특히 중국 등 주요 국가는 현지언어 지원으로 차별화된 서비스를 제공할 예정이라고 합니다.

그런데 제가 알고 있기로는 삼성 앱스가 한글을 지원하지 않는 걸로 알고 있는데요.

www.samsungapps.com 에 접속해봐도 현재 지원되는 언어는

영어, 독일어, 이태리, 프랑스, 싱가폴어 정도인데...

이럴때 보면 삼성전자가 이제는 한국회사가 아니구나하는 생각에 섭섭해 지기까지 합니다.

아무리 시장이 작아도 그렇지... OTL

다른 회사들이 무시하는 것도 서러워 죽겠는데...

게다가 개발자 지원 페이지도 만들어 두긴 했지만 보도자료에서도 얘기하는 것처럼 중소 개발사나 개인 개발자 위주가 아닌 EA-Mobile과 Gameloft, Handmark 등 세계적으로 유명한 모바일 콘텐츠 회사의 콘텐츠 위주로 앱스를 운영하고 있나보네요.

젝일...


보도자료 전문

삼성전자가 삼성 스마트폰용 애플리케이션 스토어인 ‘삼성 앱스’의 본격적인 글로벌 시장 확대에 나선다.

삼성전자는 삼성 애플리케이션 스토어인 ‘삼성 앱스(Samsung Apps)’를 15일 싱가포르, 독일에 오픈했고 오는 29일에는 중국과 브라질에 오픈할 예정이다.

지난 6일 미국 CES 2010에서 ‘삼성 앱스’라는 브랜드명을 발표한 삼성 애플리케이션 스토어는 EA Mobile, Gameloft, Handmark 등 세계적인 모바일 컨텐츠 제작사들이 제공하는 900여개의 다양한 애플리케이션을 서비스 중에 있다.

‘삼성 앱스’는 지난해 영국, 프랑스, 이태리 등 선진 시장 서비스에 이어 이번 중국, 브라질 등 신흥시장 서비스를 오픈하며 본격적인 글로벌 스마트폰 애플리케이션 스토어로 발돋움 하는 한편 이를 통해 스마트폰 판매 확대에도 도움이 될 것으로 기대되고 있다.

삼성전자는 ‘삼성 앱스’의 빠른 현지화 공략을 위해 중국어 등 현지 언어로 제작된 차별화된 애플리케이션을 서비스 할 계획이며 다양한 이벤트도 진행할 계획이다.

주력 지원 단말기는 옴니아2 이며 현지 스토어에서 추가되는 애플리케이션 중 내부 검증을 거쳐 국내 SK텔레콤 ‘T 스토어’내 숍인숍 형태로 운영 중인 ‘삼성 앱스’를 통해 국내 옴니아2 사용자도 이용 가능하도록 할 계획이다.

삼성전자 미디어솔루션센터 권강현 상무는 “삼성전자는 이번 글로벌 확대를 시작으로 보다 많은 국가의 소비자들이 서비스를 사용할 수 있도록 향후 출시 예정인 전략 모델에 삼성 앱스를 지원 예정” 이라며 “소비자 들에게 양질의 애플리케이션을 제공할 수 있도록 할 예정”이라고 말했다.

삼성전자 소개: 삼성전자는 반도체, 통신, 디지털 미디어와 디지털 컨버전스 기술을 보유한 글로벌 리더로, 2008년 73조원의 매출과 5조2천억원의 순이익을 달성했다. 전세계에서 12만8천명의 직원을 고용하고 있으며 세계 51개국에 90개가 넘는 오피스를 열고 있다. 삼성전자는 디지털 어플라이언스 부문, 디지털 미디어 부분, LCD부분, 반도체 부분, 통신 네트워크 부분 등 5개 부문으로 이루어져 있다. 세계에서 가장 빠르게 성장하는 브랜드인 삼성전자는 디지털 TV, 메모리 반도체, 휴대폰, TFT-LCD 분야에서 세계 선두 주자이다.
출처: 삼성전자
홈페이지: http://www.sec.co.kr




     개발자, 바다, 블로그, 삼성앱스, 삼성전자, 스마트폰, 아이폰, 안드로이드, 앱스토어
     1   2
옆집아저씨 2010.01.19 00:02 신고
영국가서 보니까 옴니아용 어플에 한국 개발자도 많이 들어가 있던데요.

한국회사도 많고, 개인개발자도 있는데... 얼마전에는 한국사람이 삼성앱스 글로벌 대회에서 상도 받고 했던데요.. 금액도 꽤큰 1억2천인가...

한국에서는 앱스가 웹에서만 보이지만 현지에서는 단말에서 직접 되는 구조니 다운로드도 많죠.

물론 아직 WinMo폰이라서 수량은 상대적으로 작지만..

앞으로 bada폰이나 삼성자체폰 많이 나오니 스마트폰 시장 확대와 더불어 점차 시장이 커 지겠죠..
BlogIcon 마소호랭이 2010.01.19 05:52 신고 
좋은 정보 감사합니다.

스마트폰의 확대가 아이디어와 능력이 뛰어난 대한민국 개발자들에게도 좋은 기회의 장이 되어 주면 좋겠네요.

대한민국 개발자들 파이팅입니다요.

파이팅!!!

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

모바일에서 찾는 개발자의 미래
+   [마이크로소프트웨어]   |  2010.01.14 11:23  


요즘 아이폰과 안드로이드폰 등 다양한 스마트폰의 발표와 함께 개발자들의 크고작은 성공담을 듣는 일이 호랭이의 큰 기쁨 중에 하나입니다. 소프트웨어 개발자들의 열악한 처우와 개발자 등록제 등 우울한 이야기들로 가득하던 분위기에 그나마 작은 희망의 빛처럼 느껴지기도 합니다. 다음의 글은 월간 마소에 기고된 글인데요. 다소 윈도우 모바일에 치중된 내용이기는 하지만 큰 틀에서 보면 좋을 듯하여 옮겨봅니다.


개발자의 미래, 윈도우 폰과 마켓플레이스

요즘 커뮤니티나 트위터를 통해 알게 된 개발자들은 ‘국내 소프트웨어 산업이 붕괴될 만큼 침체되었다’고 하소연한다. 다소 극단적인 표현이긴 하지만 모 회사의 대규모 인원 감축으로 시작해 이제 더 이상 대학교의 컴퓨터 관련 학과에 학생들이 몰리지 않는다는 얘기도 쉽게 들려온다.

서진호 jinho.Seo@microsoft.com|한국마이크로소프트에서 모바일/임베디드 개발자 전도사로 일하고 있다. 서진호의 윈도우 폰 이야기(http://blogs.msdn.com/jinhoseo) 블로그와 윈도우폰 개발자 그룹(http://www.winmodev.net)에 참여하고 있다.

암울하게만 느껴지는 여러 상황 속에서 개발자들이 탈출구로 생각할 수 있는 것은 많지 않다. 그러한 의미에서 애플의 아이폰과 앱스토어는 국내뿐만 아니라 전 세계 개발자들의 가슴을 뛰게 하는 이슈라고 할 만하다. 마이크로소프트는 10월 7일, 전 세계에 30종의 윈도우 폰을 선보이며, ‘윈도우 마켓플레이스 포 모바일’ 이름으로 마켓 플레이스를 오픈하기 시작했다. 이번 글에서는 왜 수많은 개발자들이 이 마켓플레이스에 참여하고 있고, 이러한 마켓 플레이스에 참여하기 위해 어떤 것을 준비해야 하는지에 대해 알아본다.

왜 모바일 마켓플레이스인가?

앱스토어라고 불리기도 하고 마켓플레이스라고도 불리는 모바일 장터에 대해 알아보기에 앞서 일반 휴대폰과 스마트폰의 차이점에 대해 알아보자. 가장 큰 차이점은 PC나 웹으로 애플리케이션을 다운로드해서 직접 사용자가 설치할 수 있는가로 구분할 수 있다. 이런 것이 가능하다면 스마트폰이고 그렇지 않다면 일반 휴대폰이라고 보면 된다.

 

사용자 삽입 이미지

그렇다면 일반 휴대폰과 스마트폰 비율은 얼마나 될까? <그림 1>에서 보듯이 넬슨사가 조사한 바에 의하면 이번 2009년 3사분기에 스마트폰의 트래픽 점유율이 일반 휴대폰을 4% 앞섰다.

이렇게 된 원인으로 음성 중심의 일반 휴대폰에 비해 다양한 데이터와 인터넷을 자유롭게 활용할 수 있는 스마트폰의 장점을 들 수 있다. 뿐만 아니라 애플리케이션을 다운로드해서 사용할 수 있다는 사실도 큰 장점이다. 현재 애플 아이폰의 경우 10만 개 이상의 애플리케이션이 앱 스토어에 등록되어 있고, 전 세계에 1억만 번 이상이나 다운로드해서 대형 마켓플레이스로 자리 잡고 있다.

마이크로소프트 윈도우폰?

윈도우폰이란 윈도우 모바일 운영체제를 탑재한 모든 스마트폰을 말한다. 윈도우폰은 윈도우 모바일 6.5와 6.1 그리고 6.0 버전에서 동작한다. 현재 국내에서 유통되는 스마트폰의 약 99%가 윈도우 폰(T옴니아2 아몰레드, 다이아몬드폰, X1폰 등)이다.

윈도우폰이 발표되자 국내의 많은 기자들이 ‘윈도우폰을 마이크로소프트에서 직접 개발하는 것이냐’라는 질문을 했다. 그러나 공식적으로 마이크로소프트는 마우스/키보드나 XBOX360, Zune HD와 같이 특별한 경우가 아니면 장치를 만들지 않는다.

마이크로소프트는 하드웨어 보다는 소프트웨어가 훨씬 잠재적인 시장 가치를 지니고 있다고 생각하기 때문이다.

새로운 윈도우 모바일 6.5와 IE6 모바일

윈도우 모바일 6.5는 지난 2월 모바일 월드 콩그레이스(MWC) 회의 때 소개된 이후로 10월 7일 전 세계적으로 출시되었다. 국내의 경우에 윈도우 모바일 6.5가 탑재된 폰은 오즈 옴니아 아몰레드와 LG ‘라일라’라는 코드명을 사용한 폰이다. 참고로 T옴니아2 아몰레드와 SHOW 옴니아 아몰레드, 옴니아 팝 등은 윈도우 모바일 6.1 운영체제가 탑재되어 있다.

윈도우 모바일 6.5는 윈도우 모바일 6.0과 6.1 같은 윈도우 CE 5.0 운영체제 커널 기반에 개발된 윈도우 폰 운영체제지만 시스템 안쪽을 볼 때 폰 하드웨어 디자인이나 개발 비용을 축소시켰고 부팅 속도를 약 25% 정도 향상시켰다.

또한 똑같은 하드웨어 사양에서 이틀 정도 더 사용할 수 있도록 배터리 관리 장치 드라이버 아키텍처를 재설계했으며, 현재 윈도우 모바일 6.1 애플리케이션을 그대로 호환 가능하도록 했다. 사용자 입장에서 가장 눈에 띄는 점은 스타일러스로 조작하는 인터페이스에서 한 손으로 조작이 쉽게끔 개선되었다는 사실이다. 이른바 풀 터치의 제스처를 이용해 모바일 사용자 경험을 향상시켰고 이러한 점을 반영해 시작, 투데이 그리고 잠금 화면이 <화면 1>과 같이 변화되었다.

 

사용자 삽입 이미지

또한 윈도우 모바일 6.5에서 변화된 점 중 하나가 IE6 모바일이다. 그 동안 오픈소스의 웹킷에 기반을 두고 있는 경쟁사 스마트폰의 브라우저보다 기존의 윈도우 모바일 6.1에서 인터넷 익스플로러 모바일 버전은 기능이 떨어졌다. 그러나 이번 윈도우 모바일 6.5에 탑재된 IE6 모바일은 데스크톱 PC의 인터넷 익스플로러 7을 스마트 폰에 최적화시켜 놓은 버전이다.

특히, 모바일 브라우저를 풀 스크린으로 볼 수 있도록 지원하고 새로운 주소 바와 아이콘 바를 통해 즐겨찾기와 화면 확대와 축소를 통해 문서의 내용을 볼 수 있다. 또한 확대/축소를 연속적으로 사용자가 원하는 만큼 슬라이더를 통해 조작할 수 있다.

그 외에 돋보기 기능이나 가로/세로 화면이 자동으로 전환되는 기능, 한 손가락으로 위/아래로 스크롤링을 하는 팬 락킹 기능들을 제공함으로써 사용자 편의성을 높이기 위해 노력했다(화면 2> 참조).

 

사용자 삽입 이미지

어떻게 윈도우 모바일 마켓플레이스를 준비할까?

전통적으로 모바일/임베디드 개발자들은 하드웨어 이식성 때문에 C/C++ 언어를 선호한다. 그러나 마이크로소프트는 다양함을 추구하기 위해 C/C++ 언어 이외에도 C#과 VB.NET 언어를 .NET 콤팩트 프레임워크 기반 하에서 지원한다.

C# 언어는 가장 근래에 개발된 언어로서 관리형 환경(Managed Enviro nment)에서 메모리를 시스템이  관리해 줌으로써 메모리나 리소스 누수 현상을 막을 수 있다. 뿐만 아니라, 데스크톱 PC의 WPF나 웹의 실버라이트를 개발한 웹 개발자들도 모바일이나 임베디드 애플리케이션을 쉽게 만들 수 있다. 나아가서는 Zune HD나 XBOX와 같은 게임 개발도 C# 언어를 지원하고 있기 때문에 그 쓰임새가 다양해질 수 있는 것이 큰 장점이다.

이와 더불어 또 하나의 시너지를 낼 수 있는 것이 바로 개발에 편리한 비주얼 스튜디오라는 개발도구다. 개발자가 윈도우 모바일의 마켓플레이스를 준비하려면 애플리케이션 개발을 할 수 있는 개발도구와 SDK만 있으면 된다. 윈도우 모바일 6 SDK와 윈도우 모바일 6.5 DTK를 마이크로소프트에서 다운로드해 설치하면 된다. 주요 특징을 살펴보면 다음과 같다.

첫째, 윈도우 모바일 6 SDK에서 기본적으로 윈도우 폰 애플리케이션을 개발할 수 있는 6만여 가지 이상의 Windows CE API와 .NET 콤팩트 프레임워크를 이용한 C# 언어의 네임스페이스를 이용할 수 있도록 제공해 준다. 또한 모바일 이동성을 위한 2G/3G 모뎀 제어나 블루투스, WiFi, 카메라, GPS, 아웃룩의 SMS나 전자 메일 기능들을 개발할 수 있도록 네트워킹 및 분산 미들웨어 컴포넌트 등도 제공한다.

둘째, 윈도우 모바일 6.5 DTK는 실제 장치 없이도 애플리케이션을 개발할 수 있도록 장치 에뮬레이터와 스킨, 그리고 싱글 터치의 제스처 API를 제공한다. 그 뿐만 아니라 이번 윈도우 모바일 6.5부터는 모바일 위젯이라는 작고 가벼운 웹의 기능을 장치에서 구현할 수 있도록 도와준다.

 

사용자 삽입 이미지

이 위젯의 아키텍처는 <화면 3>에 잘 설명되어 있다. 데스크톱 PC에서 사용하던 웹 브라우저와 동일한 수준의 AJAX를 지원하며, 액티브X 컨트롤이나 플래시와 같은 플러그인 등을 지원한다. 또한 장치 데이터들은 샌드박스 위에 접근하므로 웹에서 발생한 문제들을 안전하게 지켜주며 시작 화면에 숏컷(Shortcut)으로 쉽게 실행할 수 있도록 지원한다.

셋째, 윈도우 모바일 SDK 이외에 옴니아 폰이나 HTC 다이아몬드 폰, 소니 에릭슨 X1 폰의 장치 특성을 살린 API들은 OEM 제조사들이 확장 SDK를 따로 배포하고 있다. 최근에 옴니아II 폰을 국내외에 출시한 삼성전자는 삼성 모바일 이노베이터를 통해 SDK 버전 2.0용을 발표했는데, G-Sensor와 같은 액셀러메이터, 옴니아용 카메라 및 카메라 플래시 제어, FM 라디오, 햅틱, LED 및 라이트 센서, 옵티컬 마우스, 오리엔테이션 및 나침반 지자기 센서, R2VS 사운드 및 슬라이드 등의 API가 업그레이드되어 지원하고 있다.

개발자들의 미래와 윈도우 모바일

최근에 윈도우 마켓플레이스 포 모바일(Windows Mobile for Mobile)은 업그레이드되었다. 그 동안 윈도우 모바일 6.5용 윈도우폰에서만 접속할 수 있었던 것이 데스크톱 PC를 통해 웹(http://marketplace.windowsphone.com)에서도 접속할 수 있도록 제공해 준다. 또한 윈도우 모바일 6.5뿐만 아니라 이제 윈도우 모바일 6.1과 6.0에서도 마켓플레이스를 <화면 4>와 같이 쓸 수 있도록 해준다.

 

사용자 삽입 이미지

10월 7일 오픈 이후 지금까지의 성적을 보면, 애플 아이폰의 앱스토어보다는 적지만 2개월 전보다 5배 증가한 수치로 1천 여 개 애플리케이션이 올라온 상태이고 ISV 소프트웨어 업체도 1천여 개 이상 참여하고 있다.

또한 Live ID를 가진 이용자들은 윈도우 마켓 플레이스를 바로 사용할 수 있는데, 현재까지 약 10만 명 이상이 윈도우 마켓 플레이스를 사용하고 있다. 또한 그 중에 현재까지 약 40만 번 이상 애플리케이션을 다운로드했다고 한다. 그렇다면 유료 애플리케이션의 구입 통계는 어떠할까? 40만 번 중에 30% 이상이 유료 애플리케이션을 구입했다는 통계가 나왔다. 이제 윈도우 모바일 6.1과 6.0 애플리케이션도 마켓 플레이스를 사용할 수 있는 만큼 애플리케이션 업로드 수는 더 증가할 것이다.

현재 국내에서는 무료 애플리케이션만 다운로드할 수 있으나 내년 초 쯤이면 유료화 결제를 제공할 예정이며, 국내뿐만 아니라 전세계 30개국 이상의 이용자들이 개발한 애플리케이션을 다운로드할 수 있다.

또한 사용자는 구입한 애플리케이션을 24시간 내에 환불할 수 있도록 제공해 준다. 반면에 개발자들은 애플리케이션 업로드를 위해 운영비 99달러를 내야 한다. 개발자의 수익은 판매액의 70%다. 또한 윈도우 마켓플레이스는 전 세계의 이통사 앱스토어와도 체결해 운영비의 30% 중 10%를 이통사에게 전달함으로써 개발자와 사용자에게 애플리케이션이 더 많이 다운로드될 수 있도록 해준다.

모바일 애플리케이션은 시시 때때로 업데이트에 민감할 때가 많다. 사용자가 업데이트를 자주 하지 않을 때를 고려해야 하는 탓이다. 따라서 이러한 배포 장벽을 철회할 수 있도록 해주는 역할도 마켓 플레이스가 담당한다.

아이디어 꿈을 펼치는 무대

작년에 이어 올해에도 로스앤젤레스에서는 ‘마이크로소프트 PDC 2009’ 컨퍼런스가 열렸다. 작년에는 모든 것을 서비스화하겠다면서 서비스 경험을 강조하는 비전의 포문을 열었다면 올해는 그것을 구체화시키는 행사로 마치 학술대회 토론회처럼 진행되었다.

모바일과 임베디드 같은 소규모 장치뿐만 아니라 클라이언트 PC에서의 가상화부터 클라우드까지 마이크로소프트는 토털 서비스 업체로 다시 한 번 거듭나려고 하고 있다. 이와 관련해 요즘 ‘3스크린’이니 ‘4스크린’이니 멀티스크린에 대응하는 많은 전략들이 흘러나오고 있다. 이는 마이크로소프트의 모바일 애플리케이션 전략과 일맥상통한다.

바로 투명하고 신뢰할 수 있는 애플리케이션을 기반으로 글로벌하게 소비자와 소비자가 직접 연결될 수 있도록 궁극의 모바일 애플리케이션 생태계를 생성하는 데 그 목적이 있다. 다시 말해, 모바일 소프트웨어 생태계에서 데스크톱 PC처럼 많은 애플리케이션이 탄생하며 개발자들이 비즈니스를 할 수 있도록 돕는 데 있다.

다시 원점으로 돌아가서 왜 개발자들이 윈도우 마켓 플레이스 포 모바일에 참여해야 하느냐고 묻는다면, 여러분들의 아이디어와 꿈을 펼칠 수 있는 무대이기 때문이라고 한마디로 대답할 수 있다. 또한 데스크톱 PC에서 보듯이 윈도우 마켓 플레이스 포 모바일은 스마트폰에서 가장 넓은 지역에 직판으로 판매할 수 있기 때문이다.


아이마소 홈페이지에 오시면 더욱 다양하고 유익한 정보들을 만나볼 수 있습니다.

>>> 아이마소 가기 <<<





     개발자, 모바일, 소프트웨어, 아이폰, 앱스토어, 윈도우
     0   0

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

아이폰의 매력에 빠진 개발자를 위한 책! '애플리케이션 개발자 아이폰 매력에 빠지다'
+   [좋은책 이야기]   |  2010.01.11 16:26  


2007년 1월 세상에 첫 선을 보인 아이폰은 만 3년 간 수많은 기적을 일으키며 전 세계 사용자들을 매료시켰습니다. 급기야 다음달 폰이라는 별명이 내년 폰으로 바뀌기 직전인 2009년 말는 아이폰이 한구에도 상륙하며 급속도로 사용자층을 늘려가고 있는데요. 아이폰의 인기에 발맞춰 다양한 아이폰 관련 커뮤니티가 만들어지고 관련 서적도 쏟아져 나오고 있습니다. 여기서 소개할 건 아이폰 개발서입니다.

 

사용자 삽입 이미지

마침 후배 기자가 아이폰 관련 도서를 마케팅하게 되었다며 보도자료와 본문 내용 일부를 보내줬는데요.

내용을 대략적으로 보니 아이폰 개발을 처음 시작하는 분들께 적당할만한 책입니다.

아이폰 SDK의 구조와 기초, 그리고 간단한 예제 프로그램을 만들어 보면서 아이폰 개발에 필요한 여러 기능들을 숙달할 수 있도록 설계된 책인데요.

일단 이 책으로 기본기를 다지고 거기에 개발자의 상상력을 더한다면 다양한 앱들을 만들어 낼 수 있을테지요!

다만 단편적인 예제라고는 하지만 아이폰의 좀 더 다양한 기능을 활용하는 예제를 다루지 않는다는 점은 좀 아쉽습니다.

책은 전반적으로 친절하고 자세하게 설명하고 있기 때문에 기초가 좀 부족한 분들이라도 쉽게 아이폰 개발의 기초를 다질 수 있을 듯합니다.

이 책을 통해 한국에서도 억만장자 개발자들이 마구마구 생겨나면 좋겠습니다.

돈 많이 버시면 호랭이도 좀 굽어 살피소서~ 굽슨굽슨~~

>>> 책 사러 가기 <<<


보도자료 전문

【 책 소개 】

이 책은 처음으로 아이폰으로 애플리케이션을 개발하는 분들을 대상으로 개발 언어인 Objective-C, iPhone OS의 API, 개발 툴의 사용법을 기초부터 설명하고 있습니다. C언어의 지식과 객체지향의 기초적인 개념을 이해하고 있는 분들을 대상으로, 튜토리얼 형식으로 하나씩 하나씩 스탭을 밟아가면서 설명하고 있습니다. 실제로 Mac에서 이 책을 읽어가며 프로그램을 만든다면 이 책을 모두 읽었을 때는 이미 간단한 애플리케이션을 혼자서 만들 수 있게 될 것입니다.

【 이 책의 특징 】

▶ C 언어 밖에 모르는 사람이 처음 아이폰 어플리케이션을 만들려고 할 때 필요한 최적의 입문서입니다.

▶ 실제적인 예제 응용 프로그램을 작성해가면서 당장 필요한 지식을 조금씩 알려주고 있습니다.

▶ iPhone SDK를 사용하여 애플리케이션 개발을 튜토리얼 형식으로 설명하고 있습니다.

▶ 아이폰 프로그램 개발을 목표로 하는 프로그래머에게 필요한 기초적인 부분을 충분히 습득할 수 있도록 구성되어 있습니다.

【 출판사 리뷰 】

전세계적으로 유행을 하고 있는 아이폰이 드디어 국내에서도 판매를 하기 시작했다. 아이폰은 애플의 앱 스토워를 통해 다양한 애플리케이션을 제공함으로서 사용자의 오감을 만족시키며 흥행가도를 달리고 있다. 이러한 아이폰의 흥행과 더불어 프로그램 개발자라면 누구나 아이폰의 애플리케이션 개발에 관심을 가져하고 있다. 앱 스토워의 애플리케이션 수익분배 방식에 대한 이점과 전세계 사용자를 대상으로 판매를 한다는 장점 때문에 많은 수의 개발자들이 아이폰이 정식 판매를 하기 전부터 관심의 대상이었던 것이다.

이러한 애플리케이션 개발을 위해서는 맥(Mac)과 iPhone SDK, 테스트용 기기가 필요한데 iPhone SDK는 기기에서의 거의 모든 기능을 에뮬레이터를 통해 실행해 볼 수 있다. 이러한 iPhone SDK를 사용하기 위해서 필요한 지식은 C언어를 바탕으로 둔 Objective-C 이며 아이폰에 맞게 소형화된 MAC OS인 iPhone OS를 이해하여야 한다. 이러한 점들을 다소 어렵게 느껴 질 수 있으나 이 책은 C언어를 학습해본 독자라면 누가나 쉽게 이러한 내용을 이해하며 학습해 갈 수 있도록 가이드 역할을 하고 있다.

【 옮긴이 소개 】

강동수(firemp@gmail.com)

숭실대학교 기계공학과를 졸업하였고, 현재 일본 도쿄에 거주 중이며, 일본 통신사의 휴대전화 시스템의 개발 프로젝트에 참여 중이다. 심비안OS, 윈도우모바일, 아이폰OS 등 휴대 단말기의 OS와 어플리케이션 개발에 대해 관심을 가지고 있습니다. 현재 네이버카페 맥부기의 아이폰 동경 스터디인 코코아한잔의 팀원이며 팀내에서 기술개발 팀장의 역할을 하고 있다.

박한철(parkhanc@gmail.com)

중앙대학교에서 전기전자제어공학을 전공하고 업무시스템개발에 흥미를 가져서 무역협회에서 일본어와 IT을 공부한후 일본기업에 취업을 해 일본에서 직장생활 6년차의 직장인이다.

【 원서 】

본 도서는 일서인 "基礎からの iPhone SDK | Beginning iPhone SDK" 의 번역 출간 도서입니다. 원서의 경우 2009년 4월 23일 출간되어 아마존 저팬에서 프로그래밍분야 베스트셀러 2위에 올랐으며 지금까지도 프로그래밍 분야와 아이폰 관련 분야 베스트셀러 상위 도서입니다.

【 목차 (장별 요약) 】

CHAPTER 1. iPhone OS/iPhone SDK 개요

먼저 첫 시작으로 iPhone/iPod touch에 탑재되어 있는 iPhone OS의 특징과 구성, 그리고 iPhone SDK를 사용한 개발의 개략적인 흐름이나 주의점등에 대해서 설명합니다.

CHAPTER 2. iPhone OS 기능 카탈로그

사용자 인터페이스는 iPhone OS의 특징 중 하나입니다. 화면의 스냅 샷을 보면서, 어떠한 사용자 인터페이스를 작성하면 좋을지, 그리고 그때 OS의 어느 기능을 결합해나가면 실현 가능한지를 설명합니다.

CHAPTER 3. 처음으로 만들어보는 애플리케이션 개발

이번 장부터 실제로 iPhone 애플리케이션을 개발해봅니다. 실제 소스코딩을 하지는 않지만 개발툴의 사용법이나 대략적인 개발의 흐름들을 익혀 봅니다.

CHAPTER 4. Objective-C 입문(웹브라우저 기초편)

소스코딩을 포함한 애플리케이션 개발을 해봅니다. 간단한 웹브라우저를 예제로 작성해 가면서, Objective-C언어의 기본, Xcode와 Interface Builder와의 연계, 그리고 iPhone OS의 프레임워크를 사용하여 기초적인 클래스와 개념들에 대해서 설명합니다.

CHAPTER 5. 메모리 관리(디지털시계의 작성)

iPhone OS의 프로그래밍 기초를 다지기 위해서 메모리 관리와 서브 클래스를 구현하는 방법을 학습합니다. 디지털시계를 예제로 만들면서 정기적으로 수행하는 처리와 일시정보를 다루는 처리를 학습해 봅니다.

CHAPTER 6. 뷰와 이벤트(슬라이드 쇼의 작성)

슬라이드 쇼 어플리케이션을 만들어 봅니다. 읽어 들인 이미지에 익펙트를 반영한 애니메이션의 출력, 그리고 뷰를 다루는 다양한 방법과 이벤트 처리에 대해서 배워 봅니다.

CHAPTER 7. 설정과 로컬라이즈(메모장 작성)

메모장을 과제로 지금까지 다루어보지 않은 새로운 뷰에 대한 설명과 어플리케이션의 설정에 필요한 값의 저장과 불러오기에 대한 설명합니다. 그리고 여러 국가 에서 사용이 가능하도록 리소스의 로컬라이즈 방법에 대해서도 설명합니다.





     개발자, 블로그, 아이팟, 아이폰, 아이폰 개발서, 애플, 애플리케이션 개발자 아이폰 매력에 빠지다, 앱스토어, 영진닷컴, 영진출판사
     0   0

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

왜 모바일 애플리케이션에 열광할까?!.
+   [마이크로소프트웨어]   |  2009.12.28 10:46  


아이폰 광풍이란 말이 과하게 느껴지지 않을 만큼 요즘은 IT와 조금이라도 관련이 있는 모임이나 커뮤니티, 카페 등에는 온통 아이폰 얘기로 떠들썩합니다. 굳이 지난 8월 18일에 발표된 LG경제연구원의 발표자료를 들먹이지 않더라도 정말 머지않아 스마트폰의 세상이 올 것만 같습니다. 상황이 이렇다보니 소프트웨어 개발사와 개발자는 물론 다양한 콘텐츠 관련 회사들이 모바일 애플리케이션과 콘텐츠 개발에 뛰어들고 있는데요. 제가 발행하고 있는 월간 마소에 관련 기고가 있어 옮겨봅니다.

 

사용자 삽입 이미지


2000년대 초기 새로운 사업의 기회가 모바일에 있다는 예측 속에서 많은 업체가 모바일 사업 비중을 늘렸고, 이후 2004년에 이르러 자신들의 예측이 옳지 않았다는 판단 하에 대부분 포털은 서비스 유지 쪽으로 방향을 선회하기 시작했다. 그러나 조금 더 세월이 흐른 지금은 상황이 바뀌었고 모바일 애플리케이션에 적잖은 관심이 집중되고 있다.

김동현 dreaming@daumcorp.com, http://www.i-dreaming.com|2004년 다음 신규 서비스팀에 입사, 다음 파이 서비스를 기획/개발했고 UCC 동영상 기획/개발을 거쳐 현재 다음 tv팟과 UCC 동영상 서비스 그리고 로컬 서비스를 담당하고 있다. 최근 다음 tv팟 아이폰 애플리케이션을 개발했으며 『예제로 시작하는 아이폰 개발』을 번역했다. 요즘 관심사는 모바일과 그에 따른 위치기반서비스이다.

 

사용자 삽입 이미지

인터넷에서 사업 분야를 선도하는 분들과 향후 어떤 분야가 각광받을 것인가에 대해 이야기를 나눈 자리에서 누군가 이런 얘기를 했다. “인터넷 붐은 내 생각보다 10년은 먼저 찾아왔다. 하지만 모바일은 내 예측보다 10년 늦게 붐이 오는 것 같다. 그런데 사실 지금도 그 붐이 진짜 다가온 것인지는 확신이 없다.” 2008년 초기에도 2004년 이후 이어져온 모바일 영역 축소는 계속되고 있었다. 그러나 지금은 어떤가. 모두들 올해는 모바일의 해라고 말한다. 또 한 번의 환상일까?

모바일 시대의 재림, 그리고 아이폰 임팩트

애플을 좋아하든 아니든 지금 그 누구도 부인하지 못할 한 가지 사실은 아이폰이 출시된 이후 기존 모바일을 바라보던 시각이나 시장에 대한 사고가 바뀌었다는 점이다. 그저 하나의 단말기일 뿐인 아이폰이 모바일의 어떤 고질적인 문제점을 해결했기에 이런 움직임을 만들어 낸 것일까?


앞서 말했듯이 지금까지 모바일의 가장 큰 장점은 거대한 시장 규모였다. 그렇지만 아이러니하게도 현재 모바일의 가장 큰 문제점은 도리어 시장이 너무 작다는 사실이다. 논리적으로 모순처럼 들리지만 그것이 현실이다. 단말기들의 짧은 교체주기로 인해 시장이 파편화되어 있기 때문이다. 시장의 분산(?)으로 인해 일어나는 문제점은 사실 한두 가지가 아니다. 현재 인터넷의 가장 보편화된 광고모델인 배너광고를 생각해 보자. 배너광고의 가장 큰 미덕은 어마어마한 노출수다. 대량의 노출수를 모바일에서 얻어내기 위해서는 하나의 단말기를 지원해서는 절대 얻을 수 없다. 적어도 현 시장에서 주로 사용하고 있는 단말기는 다 지원해야 가능하다. 당연히 쉽지 않은 일이다.


또 단말기마다 사양도 너무나 다양하기 때문에 최적의 효과와 사용성 사이에서 어려운 결정을 내려야 한다. 하지만 의외로 해답은 간단하다. 단말기의 통일된 환경을 조성하면 된다. 아이폰은 그것이 가능함을 증명했고, 안드로이드는 한걸음 더 나아가 복수의 제조사를 기반으로 그런 환경이 가능함을 증명하려 애쓰고 있다.


다음으로 꼽을 수 있는 문제점은 애플리케이션의 배포다. 지금까지 통신사와 제조사의 협조 없이 모바일에서 애플리케이션을 배포한다는 것은 결코 쉬운 일이 아니었다. 당연히 특정 규모 이상의 업체가 아니면 폰에 애플리케이션을 설치한다는 것은 거의 불가능했다. PDA와 윈도우 모바일의 경우 싱크를 통해 설치는 할 수 있었지만 그 절차는 복잡하기 이를 데 없다. 그러나 애플은 앱스토어를 통해 데스크톱을 통하지 않고도 쉽게 애플리케이션을 설치하는 방법을 제공한다. 혹자의 말처럼 앱스토어는 애플의 창사 이래 가장 뛰어난 아이디어일지도 모른다.

기기, 통신 서비스에서 이제는 플랫폼의 시대로

이처럼 모바일 시장에 새바람을 불러일으킨 원동력은 바로 ‘사용성에 대한 혁신’이다. 아이폰의 터치를 통한 입력방식과 앱스토어에 등장한 수많은 애플리케이션을 통해 사용자는 기존 단말기가 갖고 있던 기능을 더욱 매력적으로 느끼기 시작했다. 지금까지 논의한 해결방법이 의미하는 것은 명확하다. 이제 짧은 주기의 단말기 시장이 플랫폼 시장으로 변화하고 있는 것이다. 지금처럼 하루가 멀다하고 쏟아지는 무슨 폰, 무슨 폰이 아니라 플랫폼 차원에서 아이폰인지 안드로이드폰인지 심비안폰인지를 정하는 것이다. 스티브 잡스가 강조했던 말처럼 바로 소프트웨어에 의해 폰이 차별화되는 것이다.


여기서 늘 한 가지 문제 제기가 뒤따른다. 모바일 단말기는 패션의 일부이며 사용자들은 끊임없이 교체를 원한다는 분석이다. 플랫폼의 의미를 가지기 위한 교체 주기, 최소 2년의 생명력을 과연 모바일 단말기가 가질 수 있는가라는 의문이다. 이런 지적에 여러분은 어떤 생각을 가지고 있는지 모르지만, 필자는 그런 의문을 심각하게 받아들이지 않는다. 이미 가지고 다니는 단말기이면서 통신 기능을 가졌고 아주 개인적이면서 자신의 아이덴티티를 보여주는 기기는 존재한다. 바로 휴대용 게임기이다. 왜 닌텐도 DS는 일본에서 아직도 팔리고 있는 것인가? 휴대용 게임기는 과연 개인의 아이덴티티를 보여주지 못하는가? 이미 이에 대한 실험은 끝난 게 아닌가 생각한다. 끊임없는 킬러 애플리케이션의 제공 그리고 플랫폼의 의미를 해치지 않는 한도 내에서의 끊임없는 변화(예를 들면 색상의 다양화, 유명 디자이너들과의 협업, 킬러 애플리케이션과의 협업)를 통해 플랫폼의 생명력을 유지하면서 기존 단말기에 지친 사용자들을 다시 묶어두는 방법을 말이다.


여러 가지 의미에서 아이폰과 앱스토어의 조합은 닌텐도 DS가 게임시장에서 점유하고 있는 위치를 떠올리게 한다. 엄청난 커버리지와 상대적으로 매우 저렴한 개발비를 통해 끊임없이 개발자들을 유입시키고 있는 것이다. 몇 번이든 실패해도 크게 문제가 없다. 저렴한 개발비와 어느 정도 예상되는 고정 매출은 실패의 타격을 줄여준다. 그렇지만 그를 통해 습득한 경험들은 언젠가는 그들에게 한 번의 성공을 안겨 줄 수 있다. 얼마나 매력적인가? 소규모 팀들은 여태까지 환경에서는 실현하기 어려웠던 아이디어를 소프트웨어로 구현해낼 수 있다. 대규모 개발사들 또한 명확한 하나의 플랫폼을 추가 지원함으로써 기존 리소스로 또 다른 부를 창출할 수 있다. 매혹적이지 않은가?


게다가 기존에 제기되어온 의문점도 많이 해소됐다. 바로 플랫폼의 가장 큰 미덕인 시장규모를 들지 않을 수 없다. 우리 시각으로 3월 18일 새벽, 애플이 발표한 바에 따르면 아이폰 OS 유닛의 현재 수량은 3백만 대를 넘어섰다. 지금도 끊임없이 늘고 있으며 이는 PSP에 필적하는 개수다. 어떤 단말기종도 이만큼의 단일 플랫폼 규모를 제공하지 못한다. 이는 그저 아이폰이 대세라는 이야기가 아니다. 아이폰의 성공을 통해 모바일 시장에 있어 플랫폼적 접근이 무모한 것이 아니라는 사실을 입증했다는 점이 매우 중요하다.

앞으로 남은 도전과제와 전망

 

사용자 삽입 이미지

그럼 뛰어들기만 하면 되는 것인가? 절대 그렇지 않다. 모바일 애플리케이션은 개발자에게 전혀 다른 덕목을 요구하고 있다. 모바일 애플리케이션의 성공에 있어 개발은 가장 쉬운 부분일 것이다. 플랫폼이 많은 것을 해결해 주었다. 더 중요한 것은 기획과 사용자 경험 디자인이다. 개발자 각자 모든 것에 대한 통찰력을 가지고 있어야 한다. 이미 앱스토어에 등록된 애플리케이션의 수는 25,000개를 넘어섰으며 참여자는 50,000명을 넘어섰다. 이들과 경쟁해야 한다. 결국 모바일 애플리케이션이라는 것은 자신이 제공할 콘텐츠와 모바일 환경에 걸맞은 사용자 경험 디자인이다. 지금 앱스토어가 주는 꿈, 소규모 팀 또는 개인의 성공을 위해서는 각자가 모든 것에 대한 노력을 들이지 않으면 힘들 것이다.

지금까지 필자가 최대한 쓰지 않으려고 애쓴 단어는 스마트폰이다. 결코 지금 시장의 움직임은 스마트폰으로 가는 과정이라고 생각하지 않는다. 지금 스마트폰이 할 수 있는 일을 기존 폰들이 하지 못 하는 게 과연 있을까? 이제 플랫폼으로 가는 시점에 우리는 서 있다.

지금까지 아이폰에 조금은 치우쳤지만 분명 아이폰 이전과 이후는 달라졌다. 아이폰은 디바이스까지 결합한 단일 플랫폼을 제공한다. 안드로이드는 복수 디바이스를 지원하는 플랫폼을 지향한다. 수많은 제조사들의 차별화 전략 사이에서 플랫폼의 의미를 잃지 않도록 어떻게 균형을 유지할지 궁금하다. 윈도우 모바일의 시장점유율 하락이 계속될지도 궁금한 부분이다. 현재 크게 다루어지고 있지는 않지만 여전히 이종 플랫폼에서 단일 환경을 지원하기 위해 노력중인 어도비의 Flash Lite 그리고 화려하게 재기할 지도 모를 마이크로소프트의 실버라이트 모바일도 올해 하반기에는 한 번 더 스포트라이트를 받을 것이다.

모바일은 개발자에게 전에 없던 새로운 기회를 주고 있지만 선택과 역할의 확장까지도 요구하고 있다. 나에겐 이 정도 도전과제는 아무것도 아닐 만큼 모바일은 매력적이다. 여러분들은 어떠한가?





     개발자, 마소, 마이크로소프트웨어, 모바일, 블로그, 삼성전자, 아이팟, 아이폰, 애플리케이션, 앱스토어
     0   0

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

실전 아이폰 게임 개발 준비하기
+   [마이크로소프트웨어]   |  2009.12.18 10:32  


드디어 한국에도 불기 시작한 아이폰 광풍은 개발자들의 관심을 끌기에도 충분합니다. 이에따라 주변 개발자들 중 전혀 다른 분야에 근무하던 분들까지 아이폰 개발에 관심을 가지거나 직접 아이폰 애플리케이션 개발을 시작하게 되는 경우들을 많이 접하게 되는데요. 그중에는 여러가지 시행 착오를 겪는 분들도 많습니다. 이번 글은 월간 마소에 실린 글 중 이창신 님이 쓰신 글이며, 아이폰 게임 개발을 하기 위해 알아두어야 할 내용들이 잘 정리되어 있습니다. 아이폰 게임 개발을 준비하는 분들께 도움이 되면 좋겠네요. 참고로 이창신 님은 월간 마소 연재를 통해 아이폰 게발과 관련된 노하우들을 독자들에게 제공할 예정입니다.

아이마소 : http://www.imaso.co.kr

최근 한 한국 개발팀이 만든 아이폰 게임이 앱스토어 상위에 올라 화제가 된 적이 있고 아이폰 애플리케이션의 여러 종류 중 가장 인기 있는 것은 단연 게임이기도 하다. 그동안 잘 된다는 말은 많이 들었지만, 막상 가까운 같은 나라에서 히트작이, 그것도 본업(회사원)이 있으면서 개발자와 디자이너 2명의 힘으로 일궈낸 성과라 많은 사람들에게 희망과 자극이 되지 않았나 싶다.

이창신 iasandcb@gmail.com, http://ias.myid.net|현재 아이폰 애플리케이션 개발에 몰두하고 있다.

그래서 막상 아이폰 게임 제작에 뛰어 들어보면 꽤나 난관이 많음을 알게 된다. 일단 개발과 관련된 것만 추려 보면 다음과 같다.

● 아이폰 애플리케이션 개발 기반 마련: 크게 두 가지 문제가 있다.
   - 하드웨어: 일단 맥 컴퓨터가 있어야 한다. 게다가 국내에 아이폰이 들어오지 않아 아이팟 터치를 대신 써야 하는데, 고환율 덕분에 맥과 아이팟 터치 둘 다 매우 비싸다.
   - 소프트웨어: 개발 환경이 매우 낯설다. 개발 언어도 무척 생소한 Objective-C이고, IDE도 Xcode를 쓴다. 이전부터 맥 애플리케이션 개발에 관심이 없었던 경우는 그야말로 ‘듣보잡’ 수준일 수도 있다.
● 아이폰 애플리케이션 개발 기본 습득: 전에는 우리말로 된 책조차도 없어 학습에 애로가 많았지만, 최근 입문 번역서가 나와 한숨 돌릴 수 있게 되었다.
● 아이폰 게임 개발에 필요한 기술 습득: 입문서에서는 자세히 다루지 않은 그래픽스와 사운드 처리 쪽을 더 파야 한다.

그리고 다음과 같은 배경을 가졌다면 앱스토어에 있는 높은 수준의 게임을 보며 갈 길이 먼 것을 깨달을 것이다.

● 전에 게임을 개발해 본 적이 (별로) 없다.
● (자바나 스크립트 언어 같은 환경에 비해) C 언어에 익숙하지 않다.

그러던 차, 게임에도 프레임워크가 있을 터, 우연히 발견하게 된 것이 바로 이 글을 통해 소개할 cocos2d iPhone(이하 cocos2d, 참고로 cocos2d는 파이썬으로 되어 있는 게임 엔진이고, 기본 개념을 따와 Objective-C로 응용해 아이폰에서도 쓸 수 있게 한 것이 cocos2d iPhone이다)이다. 이름에서 알 수 있듯이 이 게임 엔진은 2차원을 대상으로 하고 있다. 혹 3차원 게임 개발에 관심이 있는 독자는 SIO2(http://sio2interactive.com/HO ME/HOME.html)가 3D 엔진으로 cocos2d 격이므로 참고해 보길 바란다.

Hello cocos2d

cocos2d는 2D 게임을 위한 엔진이지만, 흥미롭게도 기반은 OpenGL, 즉 3D 기술이다. 이는 근본적으로 아이폰(아이팟 터치도 동일)에 PowerVR이라는 3D 가속 칩이 들어 있어 3D 처리가 무척 강력하기 때문에, 2D조차도 3D로(즉 3차원에서 한 차원 줄이면 되므로) 처리하는 방식인데, 3D 기능이 강력한 PC나 가정용 게임기에서도 쓰인다. 하지만 그렇게 cocos2d를 쓰기 위해 OpenGL을 알아야 필요는 없다. 되레 게임 개발을 쉽고 편하게 하기 위해 OpenGL과 같은 하부 기술은 상당히 감춰 놓았다. cocos2d의 또 하나의 장점은 코코아 스타일의 API이다. 객체 지향 프로그래밍에 익숙하다면 Objective-C의 기본 감각으로도 충분히 이해할 수 있는 구조여서 자바나 C#과 같은 플랫폼에서 작성하는 기분을 느낄 수 있다. cocos2d는 오픈소스 프로젝트로 http://code.google.com/p/ cocos2d-iphone/에서 진행되고 있으며, 2009년 3월 현재 0.7 버전이 릴리즈되어 있고 곧 0.8과 1.0을 출시할 계획이다.

흥미로운 것은 이 cocos2d 엔진을 만든 사람 자신도 이 엔진을 써서 Sapus Tongue이라는 게임을 만들었다는 사실이다. 엔진이 오픈소스에 무료라서 수익 모델이 없어 보이는데, 아직 관련 자료가 많지 않아 실제 게임 개발에 참고할 만한 예제가 충분치 않다.

cocos2d 준비

cocos2d를 배워보려고 하는 데 있어서 가장 큰 장애라면 역시 문서의 부족이다. 특히 공식 문서라 할 수 있는 프로젝트 문서가 거의 없다(이점은 Ricardo도 인정하고 있다). 그나마 있는 문서들은 많이 흩어져 있는데, cocos2d의 공식 블로그(http:// blog.sapusmedia.com/)에서 문서에 대한 안내 포스트(http:// blog.sapusmedia.com/2009/03/documentation-in-cocos2d. html)에도 가장 먼저 소개된 문서인 cocos2d whitepaper (http://monoclestudios.com/cocos2d_whitepaper.html, 이 문서는 cocos2d를 이용해 게임을 만드는 회사에서 작성한 것)를 참고로 cocos2d 준비를 설명해 보려 한다.
cocos2d는 일종의 라이브러리이므로 쉽게 가져다 쓸 수 있을 것 같지만, 실은 소스를 자신의 프로젝트에 넣어야 한다. 그래서 아예 cocos2d를 이용한 애플리케이션을 만들 때에는 다음과 같은 과정으로 프로젝트를 생성하고 설정해야 한다.

먼저 Xcode를 실행하여 File -> New Project를 선택한 다음, 오른쪽에서 Window-Based Application을 선택하고 Choose 버튼을 누른다. 프로젝트 이름은 HelloCocos2d라고 해보자.

cocos2d 통합

먼저 cocos2d를 받아 적당한 곳에 압축을 푼다. 그리고 앞으로 파일을 추가할 때는 Copy items into destination group’s folder (if needed)는 선택해도 좋지만 압축을 푼 파일의 사본이 프로젝트에 추가되는 것이므로 만약 cocos2d 코드를 한 곳에서 관리하고 싶다면 선택하지 않는 것도 방법이다.

첫 번째, HelloCocos2d 프로젝트로 돌아가 Project -> Add to Project...를 선택하여 cocos2d를 푼 디렉토리로 가서 그 밑의 external 디렉토리를 선택한다. 그러면 팝업 메뉴가 하나 뜨는데 Add 버튼을 누른다. 그러면 프로젝트 뷰의 왼쪽에 external이라는 그룹(폴더 모양)이 생긴 것을 볼 수 있는데, 이 그룹을 펼쳐서 Chipmunk 디렉토리 밑으로 Demo라는 디렉토리가 보이는데 이것을 지운다(지울 때, 위의 Copy items into destionation... 옵션을 선택했다면 Also Move to Trash, 아니면 Delete References를 선택한다).

두 번째, 또 다시 Project -> Add to Project를 선택하여 cocos2d를 푼 디렉토리 밑의 cocos2d 디렉토리를 선택한다(혼동하지 말도록. cocos2d를 푼 디렉토리를 선택하는 것이 아니라 그 밑의 cocos2d 디렉토리를 선택하는 것이다).

세 번째, 이번에는 프로젝트 뷰의 왼쪽 Groups & Files에서 Resources 그룹을 선택하여 컨텍스트 메뉴로 Add -> Existing Files...를 선택한 다음, cocos2d를 푼 디렉토리 밑의 Resources 아래의 Images 디렉토리에 있는 fps_images.png을 선택하여 추가한다.

마지막으로 네 번째, Groups & Files에 Frameworks라는 그룹이 있는데 이것을 선택하여 컨텍스트 메뉴로 Add -> Existing Frameworks...를 선택한 다음 OpenGLES.framework와 QuartzCore.framework을 선택하여 추가한다.

이로써 cocos2d를 사용하는 애플리케이션을 만들 준비가 다 되었다. 그럼 어떤 새로운 기술을 배우더라도 꼭 처음에 등장하는 예제인 ‘Hello World’를 바로 만들어 보자.

Hello cocos2d

<리스트 1>은 지금까지 작업한 결과로 생성되는 HelloCocos2 dAppDelegate.m 파일이다.


<리스트 1>  HelloCocos2dAppDelegate.m의 내용

    //
    //  HelloCocos2dAppDelegate.m
    //  HelloCocos2d
    //
    //  Created by Changshin Lee on 09. 03. 19.
    //  Copyright __MyCompanyName__ 2009. All rights reserved.
    //
    #import "HelloCocos2dAppDelegate.h"
    @implementation HelloCocos2dAppDelegate
    @synthesize window;

    - (void)applicationDidFinishLaunching:(UIApplication *)application {    
        // Override point for customization after application launch
        [window makeKeyAndVisible];
    }

    - (void)dealloc {
        [window release];
        [super dealloc];
    }
    @end


이 파일에 추가해야 할 것은 크게 세 가지다.

첫째, cocos2d를 쓰기 위해 #import “cocos2d.h”를 맨 위에 넣는다.
둘째, cocos2d 엔진의 초기화 코드를 // Override point for ... 부분에 넣는다.
셋째, Hello cocos2d를 출력하는 로직을 구현한다.

<리스트 2>의 코드는 앞서 언급한 세 가지 작업을 마친 것이다. 엔진 초기화는 간단히 주화면인 window를 Director 싱글턴([Director sharedDirector]의 반환값)에 붙이면(attachIn Window) 된다. 이후 코드는 아직 배우지 않은 것들이 많이 나와 생경하지만, 간단히 <그림 1>과 같은 흐름이라 할 수 있다.

 

사용자 삽입 이미지


<리스트 2> 세 가지 작업을 마친 결과

    //
    //  HelloCocos2dAppDelegate.m
    //  HelloCocos2d
    //
    //  Created by Changshin Lee on 09. 03. 19.
    //  Copyright __MyCompanyName__ 2009. All rights reserved.
    //

    #import "HelloCocos2dAppDelegate.h"
    #import "cocos2d.h"
    @implementation HelloCocos2dAppDelegate
    @synthesize window;

    - (void)applicationDidFinishLaunching:(UIApplication *)application {    
    [[Director sharedDirector] attachInWindow:window];   
    Scene *helloScene = [Scene node];
    Label *helloLabel = [Label labelWithString:@"Hello cocos2d" fontName:@"TrebuchetMS" fontSize:40.0f];
    helloLabel.position = cpv(150, 100);
    [helloScene add:helloLabel];
    [[Director sharedDirector] runWithScene:helloScene];
    [window makeKeyAndVisible];
    }

    - (void)dealloc {
        [window release];
        [super dealloc];
    }
    @end


cocos2d의 특징

가장 먼저 눈에 띄는 것은 아이폰 애플리케이션의 기본 구조인 Model-View-Controller의 표준 클래스인 UIView와 UIView Controller를 쓰지 않는 cocos2d 고유의 모델이다. 물론 기존 UIView·UIViewController와 같이 써도 되지만, 쓰지 않고도 완결된 애플리케이션 작성이 가능하다는 점이 독특하다. 그래서 아마 처음 이 모델을 보면 꽤나 적응이 안 될 수도 있는데, 자주 쓰게 되면 자연스럽게 차츰 적응이 된다(필자의 경험상).

또 하나는 좌표계다. UIView의 기본 좌표계는 왼쪽 위 모서리가 (0, 0)이고 오른쪽으로 갈수록 x 좌표가, 아래로 갈수록 y 좌표가 증가한다. cocos2d는 OpenGL 기반의 좌표계를 채용하여 왼쪽 아래 모서리가 (0, 0)이고 위로 갈수록 y 좌표가 증가한다.

좌표계와 더불어 독특한 것이 뷰의 위치 지정인데, 앞의 코드에서 나온 position은 UIView의 frame.origin이 아닌 center, 즉 뷰의 중심을 뜻한다. 뷰의 위치를 좌표로 지정하다 보면 왼쪽 위 모서리에 해당하는 origin이 편할 경우가 있는데, 항상 중심을 지정해야 하므로 계산이 필요할 수 있다.

cocos2d API의 기본 구조

cocos2d 아이폰 버전의 API는 cocos2d 원조(파이썬 버전) API로부터 기본 개념을 가져왔다. 따라서 cocos2d의 개념 파악을 위해서라면 파이썬 버전 기반의 프로그래밍 가이드인 http://www.cocos2d.org/doc/programming_guide/도 충분히 도움이 된다. 이 글에서는 cocos2d API의 핵심 클래스들을 나열하며 소개해 보려 한다.

CocosNode

엔진의 이름과 겹치는 만큼, CocosNode 클래스는 핵심 중의 핵심이다. 이후 나오는 Scene, Layer, Sprite 등 cocos2d 엔진을 바탕으로 돌아가는 그래픽 오브젝트의 뿌리가 되는 클래스이다. 이 클래스에는 position이나 visible과 같은 공통 프로퍼티와 그래픽 오브젝트의 계층 구조를 구성하게 해주는 add, remove와 같은 메소드, 그리고 액션과 스케줄링을 위한 기능까지 들어 있다.

특히 그래픽 오브젝트의 계층 구조는 UIView의 그것과 마찬가지라고 이해하면 쉽다. 따라서 화면을 구성함에 있어 이 계층 구조를 잘 활용하는 것이 관건이기도 하다. 액션에 대해서는 Action 클래스에서 언급하기로 하고 스케줄링에 대해 말하자면, NSTimer와 같이 중앙 집중적인 스케줄링 기능을 이용하는 것이 아니라, 오브젝트마다 분산된 자신만의 스케줄링이 가능하다는 점에서 매력적이다.

Scene과 Director

하지만 앞의 예제에서는 CocosNode 클래스는 나오지 않는다. 대신 Scene과 Director가 나오는데, 클래스 이름이 영화에서 온 것 같아 이해가 쉽다. 먼저 Director는 말 그대로 cocos2d 엔진에 있어 감독 같은 존재이다. 영화에 감독은 보통 한 명이듯이, Director 오브젝트도 하나, 즉 싱글턴(singleton)으로 되어 있어서 항상 [Director sharedDirector] 클래스 메소드 호출로 싱글턴을 얻어 낸다.

감독이 영화 제작에 있어 단위로 삼는 것은 씬(Scene), 즉 장면이다. cocos2d에서도 Scene은 가장 큰 화면 구성 단위이며 Director는 이 Scene 오브젝트 단위로 화면을 표시한다.

Layer

Scene이 게임에 있어 전체 화면을 가리킨다면, Layer는 그 화면을 구성하는 요소요소를 나타낸다. Scene이 영화에서 배경화면이라면, Layer는 배우나 소품에 해당하는 셈이다.

 

사용자 삽입 이미지

Scene과 Layer의 기능상의 가장 큰 차이점은 사용자 입력을 받을 수 있는가이다. 따라서 사용자 입력이 필요 없는 정적인 요소는 Scene에 바로 추가하는 방식을 취하며, Layer는 주로 사용자 입력이 필요한 동적인 요소를 구성하는 바탕이 된다. Layer가 터치 이벤트나 액셀로미터 이벤트를 받으려면 TouchEvents Delegate 프로토콜을 구현해야 한다.

 

사용자 삽입 이미지

Sprite

스프라이트는 게임 개발에 있어 화면상에 움직임이 있는 물체의 단위이며, Sprite 클래스도 바로 그런 의미이다. 스프라이트를 생성하는 방법에는 몇 가지가 있는데, 가장 쉽게 이미지 파일(아이폰에서는 PNG를 주로 쓴다)로부터 생성하며 애니메이션을 위해 하나의 스프라이트에 복수 개의 이미지를 넣을 수 있다. 부가적으로, 앞서 소개했던 PowerVR 3D 가속칩에 최적화된 PVRTC 이미지 파일도 사용할 수 있다.

 

사용자 삽입 이미지

Action

Action은 기본적으로 CocosNode에 액션을 취하게 하는 클래스이긴 하지만, 보통은 게임에서 주로 움직이는 대상인 Sprite에 많이 적용하게 된다. Action에는 크게 InstantAction, IntervalAction, 그리고 RepeatForever가 있는데

- InstantAction은 즉시 실행되고 바로 끝나는 단발성의 액션
- IntervalAction은 일정 시간동안 지속되는 액션
- RepeatForever은 특정 IntervalAction을 무한 반복하는 액션

각 종류별로 무척 다양한 액션들이 제공되어 있어 스프라이트의 움직임을 프로그램으로 작성할 때 무척 편리하다.

cocos2d 기반 게임의 기본 구성

앞서 cocos2d의 핵심 API를 배웠다고 해도, 게임 자체의 개발과 직결되는 것은 아니다. Director - Scene - Layer - Sprite - Action을 개별적으로 사용하여 아주 간단한 게임을 구성할 수 있겠지만(또는 게임의 핵심 부분을 빠르게 구현하는 프로토타이핑도 가능할 것이다), 제품 수준의 게임이라면 <그림 2>와 같은 구도를 갖게 마련이다.

 

사용자 삽입 이미지

<그림 2>를 이루는 요소 하나하나가 Scene이 되는데, 그럼 차례대로 살펴보자.

TitleScene과 MenuScene

게임을 시작하면 보통 화려한 오프닝이 시선을 집중시킨다. 타이틀 화면은 동영상으로 간단하게 처리할 수도 있지만, 여기서부터 인터렉션과 애니메이션이 필요할 경우는 TitleScene의 별도 작성도 요구된다.

타이틀 화면을 마치면 게임의 준비 화면인 메뉴가 나오게 된다. MenuScene은 모든 게임에 필수이므로, 따라서 cocos2d는 Menu와 MenuItem이라는 클래스를 제공하여 메뉴 구성의 편의성을 높이고 있다. Menu는 Layer를 상속하고 있어 당연히 사용자 입력을 받을 수 있는데, MenuItem을 이미지나 텍스트로 추가만 하면 알아서 터치 이벤트를 해당 MenuItem과 연결된 셀렉터(selector)로 이어준다. <그림 2>에서와 같이 메뉴 아이템에는 본 게임, 도움말, 스코어, 설정 등이 있으며 해당 아이템을 터치하면 Director의 replaceScene으로 화면 전환을 해주는 식으로 작성한다. 타이틀과 메뉴를 제외하고 모든 화면은 언제고 메뉴 화면으로 돌아올 수 있어야 하는 점도 간과해서는 안 된다.

GameScene

GameScene은 게임 본편에 해당한다. 여기에 게임 로직이 들어가게 되는데, 게임 오버가 되면 보통 ScoreScene으로 이어진다.

ScoreScene

ScoreScene은 그동안의 점수와 하이 스코어일 경우 이름을 받는 등의 작업이 일어난다.

HelpScene과 OptionScene

HelpScene은 게임을 처음 하는 사람을 위한 안내를 하며, 간단히 그림이나 동영상으로 설명할 수도 있다. OptionScene은 게임의 콘트롤이나 난이도, 사운드 등을 설정하게 해주는 화면이다.

아직 cocos2d에 대한 문서가 많지 않아 배우기가 만만치 않지만, 그래도 뜻이 있는 곳에 길이 있는 법이다. 가장 좋은 학습방법은 실제 cocos2d로 만든 게임 코드를 보는 것이다. 마침 오픈소스로 되어 있는 cocos2d 기반 게임인 Gorillas(http:// gorillas.lyndir.com/trac/wiki/TheSource)가 있어(게임 자체도 꽤 재밌다) cocos2d로 게임을 만들어 보려는 이들에게 최고의 도우미 역할을 해주리라 본다.

더불어 이번 특집에서의 cocos2d 소개에 이어 다음 달부터는 마소의 연재 코너를 통해 cocos2d와 함께 아이폰 게임을 만드는 과정을 좀 더 깊게 살펴보려 하니 아무쪼록 cocos2d의 기초를 잘 닦는 시간으로 4월을 보내고 5월호에서 다시 만나기를 소망한다.


cocos2d의 새 버전 0.7.1

원고를 마소 편집부로 넘기고 난 다음 날 아침, cocos2d의 새 버전인 0.7.1이 나온 것을 알고 받아보니 중요한 변경 사항이 있어 서둘러 추가했다. 본문에도 소개된 CocosNode의 멤버 메소드들 중 코드 표기법에 맞지 않는 메소드들을 대거 교체했다.

[self add:node];        // OLD
[self addChild:node];   // NEW

[self add:node z:0];          // OLD
[self addChild:node z:0];     // NEW

[self add:node z:0 tag:t];          // OLD
[self addChild:node z:0 tag:t];     // NEW

[self add:node z:0 tag:t parallaxRatio];        // OLD
[self addChild:node z:0 tag:t parallaxRatio];   // NEW

[self getByTag:tag];        // OLD
[self getChildByTag:tag];   // NEW

[self remove:node];                    // OLD
[self removeChild:node cleanup:NO];    // NEW

[self removeAndStop:node];                  // OLD
[self removeChild:node cleanup:YES];        // NEW

[self removeByTag:tag];                    // OLD
[self removeChildByTag:tag cleanup:NO];    // NEW

[self removeAndStopByTag:tag];              // OLD
[self removeChildByTag:tag cleanup:YES];    // NEW

[self removeAll];                           // OLD
[self removeAllChildrenWithCleanup: NO];    // NEW

[self removeAndStopAll];                    // OLD
[self removeAllChildrenWithCleanup: YES];    // NEW

[self do: action];          // OLD
[self runAction: action];   // NEW

[self absolutePosition];                   // OLD
[self convertToWorldSpace:CGPointZero];    // NEW

0.7.1에서도 // OLD에 해당하는 옛 메소드를 사용할 수 있지만 비추천(deprecated) 상태이며 0.8부터는 아예 사라진다고 하니 지금부터 0.7.1을 쓰더라도 // NEW에 해당하는 메소드를 쓰기 시작하자. 따라서 본문의 HelloCocos2d 예제 코드에서 [helloScene add:helloLabel];도 [helloScene addChild:helloLabel];와 같이 바꾸는 것이 좋다.






     cocos2d, 개발, 개발자, 게임, 블로그, 소프트웨어, 아이팟, 아이폰, 애플리케이션, 앱스토어, 이창신
     0   0

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

앱스토어&바다 앞세운 삼성전자 스마트폰 전략
+   [마이크로소프트웨어]   |  2009.12.18 09:39  


다들 오늘 삼성전자가 자사의 앱스토어를 한국에도 공개한다는 소식 들으셨지요! 자사 스마트폰용 OS 바다와 앱스토어를 통해 삼성전자는 어떤 전략을 펼쳐 나가려는 걸까요? 아래에 붙여드리는 마소 이미선 기자의 기사에 따르면 삼성전자는 바다 공개와 함께 개발자 사이트 오픈. 게다가 270만 달러라는 어마어마한 상금을 건 개발자 콘테스트도 시행할 예정이라고 합니다. 270불이 아닙니다. 270만원도 아니고 270만 달러! ㄷㄷㄷㄷㄷ 역시 대인배 다운 간지나는 콘테스트가 될 듯한데요. 마소와 블로그를 통해 이 소식들을 계속 전해드릴 수 있으면 좋겠네요. 유후~ 2010년. 모바일 세계의 뜨거운 열풍이 대한민국 소프트웨어 개발자들에게도 순풍이 되어 주면 좋겠습니다. 대한민국 개발자 파이팅!!!


이미선 기자 init@imaso.co.kr

삼성전자가 스마트폰의 활성화를 위해 앞장서고 나섰다.

삼성전자는 자사 앱스토어의 국내 서비스를 시작한데 이어 독자적인 스마트폰 플랫폼을 공개하며 본격적인 스마트폰 대중화 시대를 위한 행보에 나선다고 18일 밝혔다.

삼성전자는 SK텔레콤을 통해 자사의 스마트폰용 애플리케이션 장터인 ‘삼성 애플리케이션 스토어’의 국내 서비스를 시작했다.

 

삼성 애플리케이션 스토어는 SK텔레콤의 ‘T스토어’에 입점하는 ‘숍인숍(Shop in Shop)’방식으로 운영되며, 오는 2010년 1월에는 휴대폰 메뉴를 통해 바로 다운로드할 수 있는 서비스도 제공될 방침이다.

현재 삼성 애플리케이션 스토어에서는 ‘다이어트 댄스’, ‘퍼즐 맞추기’, ‘브레인 퍼즐’, ‘옥스포드 영어사전’ 등 FUN/생활위치/어학·교육 등 3가지 카테고리리의 애플리케이션이 제공되며, 2010년 벤쿠퍼 동계 올림픽 정도 프로그램인 ‘WOW(Wireless Olympic Works)’도 지원된다.

오는 2010년 2월에는 시뮬레이션 게임 ‘심시티’, 레이싱 게임 ‘페라리 GT’, 보드 게임 ‘모노폴리’ 등의 유명 게임을 즐길 수 있는 게임 카테고리도 추가될 예정이다.

이와 함께 옴니아2 고객을 대상으로 네이버의 웹툰·미투데이·윙버스·블로그·지도·뉴스캐스터, 다음의 지도·TV팟·싱크 등의 애플리케이션을 제공하고 있으며, 싸이월드 미니홈피·UCC 업로드·네이트 커넥트 등도 추가로 제공할 계획이라고 회사측은 설명했다.

 

더불어 삼성전자는 영국 런던에서 독자적인 스마트폰 플랫폼 ‘바다(bada)’와 소프트웨어 개발 도구인 ‘바다SDK’도 공개했다.

삼성전자측에 따르면 바다는 최신 스마트폰 기능이 집약된 플랫폼으로, SNS, LBS, 커머스(Commerce) 등의 다양한 서비스를 접목해 새로운 서비스의 개발이 가능하다는 것이 가장 큰 특징이다.

휴대폰에 탑재된 지도를 통해 친구의 위치를 찾은 후 주변 정보를 볼 수 있는 것은 물론 게임 중 아이템 구매가 가능하며, 통화, 메시지 전송 등의 다양한 기능을 쉽게 사용할 수 있도록 개발돼 휴대폰 UI와 밀접하게 연동되는 애플리케이션 개발이 가능하다.

또한 웹 및 플래시 기반의 애플리케이션을 지원하고, 삼성 풀터치폰 UI인 터치위즈 기반의 차세대 스마트폰 UI가 탑재돼 쉽고 직관적인 사용 환경을 제공하며, 햅틱, 가속센서 등 각종 센서의 지원과 얼굴인식 및 동작인식 등 다양한 입력 인터페이스를 활용할 수 있다.

삼성전자는 바다의 공개에 맞춰 개발자 사이트(developer.bada.com)를 통해 지속적으로 개발자 지원 정책을 펼치는 것은 물론 총상금 270만 달러의 개발자 콘테스트를 진행한다는 계획이다.

삼성전자 미디어솔루션센터 이호수 부사장은 “바다를 통해 보다 많은 전세계 휴대폰 사용자들에게 스마트폰 경험을 제공할 수 있게 됐다”며 “향후 바다 개발자를 위한 다양한 지원책을 아낌없이 펼쳐 나갈 것”이라고 말했다.






     개발자, 바다, 삼성전자, 소프트웨어, 스마트폰, 아이폰, 앱스토어, 콘테스트
     1   2
ALAL 2009.12.20 19:46 신고
뒤늦게 따라가보지만 스마트폰 시장은 이미 뺏긴 것 같은 삼성
BlogIcon 마소호랭이 2009.12.21 13:16 신고 
에이 설마요... 열심히 하면 잘 되지 않을까요?

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

애플 앱스토어 경험기, 드리밍 인 앱스토어-2
+   [마이크로소프트웨어]   |  2009.12.14 05:59  


지난 [애플 앱스토어 경험기, 드리밍 인 앱스토어-1]에 이어지는 글입니다. 총 3회로 나누어 옮기고 있습니다.

2단계 : 개발 과정

다시 필자의 경험으로 돌아오자. 책을 통해 공부하고 보니 어느 정도 감이 잡히기 시작했다. 이제 실제로 앱스토어에 올릴 프로그램을 만들어야 하는 단계다. 가장 먼저 프로그램 기획이 필요했다. 앱스토어는 약 20개의 카테고리로 프로그램들을 분류하는데, 프로그램을 올릴 때 이 중 한 분야를 선택하게 된다.

카테고리 선정, productivity

기획단계에서 우선 카테고리를 선정해야 한다. 여러 자료들을 조사하니 게임이나 엔터테인먼트 분야가 소위 ‘대박’ 기회가 많다는 것을 알았다. 하지만 필자는 게임 쪽으로는 경쟁력이 없을 것 같아 숙고 끝에 ‘productivity’ 분야를 택했다. 업무 효율성을 높여주는 유틸리티 분야다. 이 분야의 특징은 게임과 같이 대박은 나지 않지만 생명력이 긴 스테디셀러가 탄생할 수 있다는 것이다.

구체적 기획, 셀링포인트 확정
이렇게 분야는 productivity로 정했으니 구체적인 프로그램 기획을 해야 했다. 필자는 소위 ToDo 리스트라는, 해야 할 일들을 쭉 적어놓고 관리하는 프로그램을 개발하기로 결정했다.

여기서 시장 조사를 조금 해 봤다. 앱스토어에는 이미 많은 ToDo 리스트 관련 프로그램들이 있었고, 어떤 것은 상당히 많이 판매되는지 꽤 높은 순위를 차지하고 있었다. ‘이것 혹시 레드오션 아닌가?’. 하지만 이제 막 개발 역량을 갖추고 하루라도 빨리 앱스토어에 프로그램을 올리고 싶은 욕망 앞에 레드오션도 오션이었다. 그래서 그냥 ToDo 리스트 비슷한 것으로 정했다. 대신 본인만의 셀링포인트(광고나 마케팅 시 특별히 강조할 상품이나 서비스의 특징)가 없으면 안 됐다.

필자의 프로그램의 셀링포인트는 마크 트웨인의 말에서 영감을 얻었다. 톰 소여의 모험 등의 작품으로 우리나라 사춘기 청소년들로 하여금 한 번쯤 동네 뒷산에서 동굴 찾기를 시도하게 했던 그 분의 말이 있다. “왜 일을 당장 시작하지 못하고 계속 미루는지 아는가? 그건 일이 너무 복잡해 보여서야. 그 일을 아주 작은 일들로 쪼개고 나서 하나하나 해 가면 할 수 있지”.

예를 들어, 책을 읽고 독후감을 써야 하는 것이 나의 ToDo라고 하자. 그런데 할 일에 ‘독후감쓰기’라고 덩그러니 적어 놓으면, 이 핑계 저 핑계 대면서 미루기만 하고 당장 그 일을 시작하지는 못한다. ‘독후감 쓰기’가 되려면 책을 선택해 읽고 초안을 써야하는 것은 물론 고치기를 반복해야 하는 등 해야 할 일이 굉장히 많은 것처럼 느껴지기 때문에 선뜻 시작하지 못하는 것이다. 하지만 그것을 책 고르기, 10페이지 읽기, 그 다음 10페이지 읽기 등의 작은 일들로 쪼개 놓으면 최소한 시작은 할 수 있다. 책을 고르기만 하면 되니 말이다.

그래, 바로 이것이었다. 기존의 ToDo 리스트 개념에 ‘일 쪼개기’ 컨셉을 접목시켜 프로그램의 셀링포인트로 하기로 했다. 해야 할 일들을 리스트로 보여주되 각 일들 옆에 ‘망치’ 아이콘을 붙여  그 일을 좀 더 많은 일들로 쪼갤 수 있도록 하는 것이다.

설계·구현, 디자이너와 협업도…
본격적으로 프로그램의 설계 및 구현에 돌입했다. 이 과정에서 앞에서 언급한 서적 『Beginning iPhone Development』의 9장 <Navigation Controllers and Table Views>의 예제코드를 참조해 근간을 잡았다. 중간에 막히는 부분에서는 Addison-Wesley의 『The iPhone Developer’s Cookbook』의 예제들을 참조했다. 이 책은 초보자가 보기에는 무리가 있다. 하지만 어느 정도 아이폰 프로그램을 이해하고 있는 개발자라면 가끔씩 ‘이것을 어떻게 해야 하나’하고 막히는 부분에서 찾아보기엔 좋다(이 책 역시 필자와는 아무런 관계가 없다).

프로그램을 구현하며 가장 힘들었던 것은 아이콘을 손수 만들었던 부분이다. 사실 이 부분이 개발자들에게 아주 어려울 수 있다. 때문에 그래픽 디자이너들과 손잡고 일할 필요가 있을지도 모르겠다. 얼마 전 앱스토어에 탱크게임 비슷한 것을 제작해 크게 성공한 우리나라 개발자도 회사 동료 디자이너와 함께했다고 하지 않는가. 이런 면에서 앱스토어 프로그램 개발은 학생들에게 서로 다른 전공의 친구들과 협업하는 것을 배울 수 있는 좋은 기회이기도 하다

 

사용자 삽입 이미지

이렇게 필자의 첫 번째 프로그램인 ‘NextAction’을 완성했다(<화면 1> 참조). 일을 쪼개 다음 단계(Next)에 해야 할 일(Action)이 무엇인지 결정하도록 하겠다는 의도에서 그렇게 작명했다. 이제 앱스토어에 올려야 하는데, 프로그램의 설명글이 필요했다.

사람들이 앱스토어에 올려진 프로그램들을 볼 때 가장 먼저 보는 것이 스크린샷이고, 조금이라도 흥미가 있으면 설명글을 읽게 되는데, 여기서 구매여부가 결정날 것이다. 그러니 설명글을 최대한 매력적으로 작성하는 것이 중요하다. 즉, 기획과 개발이 끝나고 이제 마케팅 단계가 온 것이다. 앞서도 언급했지만 NextAction의 셀링포인트는 분명하다. 설명글을 작성할 때도 마크 트웨인이 직접 나서서 도와줬다. 뭐라고 썼는지 궁금하다면 앱스토어에서 NextAction으로 검색해 보면 된다(^^).

가격 책정, 대담한 결정
마지막 단계는 가격결정이었다. 앱스토어 프로그램들의 가격이 대부분 $0.99인 상황에서 필자는 소위 ‘명품’ 컨셉을 채택하기로 하고 NextAction의 가격을 $3.99로 정했다. 이렇게 비싼 축에 속하는 가격을 책정하면 판매가 되지 않을 위험이 있지만, 필자는 다음과 같은 세 가지를 염두에 뒀다.

● 하나만 팔아도 $0.99짜리 4개를 판 것과 같으니 얼마나 좋은가.
● 높은 가격에서 시작해야 가격을 내릴 여지가 있을 것 아닌가.
● NextAction과 같은 프로그램의 주 소비자층은 분명 자기관리에 관심이 많은 30~40대 일 것인데, 그들은 업무 효율성이 높아지고 자기관리에 유용하다면 가격에 크게 구애받지 않을 것이다.

‘만약 내 예상이 틀리다면?’이라는 걱정도 해 봤다. 하지만 그렇다고 해도 뭔가 배우는 게 있으니 좋지 아니한가?





     개발, 개발자, 드리밍 인 앱스토어, 마소, 마이크로소프트웨어, 블로그, 아이팟, 아이폰, 앱스토어, 호랭이
     0   1
BlogIcon 우치타 2009.12.14 08:04 신고
멋지십니다! app store 에 나오면 알려주세요 ^^

아이디 
비밀번호 
홈페이지 
비밀글   

 

<<이전 | 1 | 2 | 다음>>

마소호랭이's Blog is powered by Daum

 

티스토리 툴바