이번에 마이크로소프트 4월에 기고했던 삼성 바다폰 개발에 관련된 내용입니다.
바다SDK 다운로드 바로가기
바다SDK/IDE는 bada Developer(http://developer.bada.com) 사이트에 가입하면 바로 다운받으실 수 있습니다.
‘바다’는 순수 한국어의 바다에서 나온 말로, 삼성전자(이하 삼성)에서 제시하는 차세대 오픈형 휴대폰 플랫폼의 통칭 브랜드이다. 삼성은 이를 글로벌로 서비스하기 위해 ‘bada’로 표기했으며 기존에 삼성이 도전과 창의를 의미하기 위해 활용하던 ‘블루’의 확장 의미로도 이해할 수 있다. 아울러 무한하고 신비로운 공간에서 상상의 나래를 펼칠 수 있다는 이미지도 함께 강조되는 것 같다. 지금부터 이런 이해를 바탕으로 바다의 기술적 면모를 살펴본다.
바다의 궁극적인 취지 또한 현 IT의 대세와 맞게 ‘오픈(Open)’이다. 휴대폰 플랫폼을 오픈하고 그 위에 수많은 애플리케이션이 받아들여질 수 있도록 하는 취지로 볼 수 있다.
바다 운영체제의 등장 의미
바다가 등장하는 계기로 아이폰 앱스토어의 영향을 언급하지 않을 수 없다. 앱스토어에 올린 애플리케이션 판매가 상위 랭크되면서 대박이 터졌다는 소식은 개발자들의 로망이 되어버렸다. 마찬가지로 삼성의 바다는 개발자들에게 또 하나의 기회가 될 수 있겠지만, 아직까지는 모두가 기다려지는 미지의 바다이다.
최근 알려진 이건희 회장의 발언은 소프트웨어 경쟁력 시대임을 강조하는 의미이기도 했다. 결국 하드웨어 부문의 시장 경쟁력이 비슷하다는 전제에서 차별화 포인트는 소프트웨어인 것이다. 향후 휴대폰 업계에서 스마트폰이 점유율을 높여가는 상황에서(다시 말해 휴대폰이 스마트폰화함에 따라서) 휴대폰 경쟁력은 결국 소프트웨어 경쟁력이라고까지 말할 수 있는 상황이 된 것이다.
삼성이 향후 출시되는 모든 피처(Feature)폰의 기반을 오픈형 플랫폼 탑재로 선언할 만큼, 이제는 스마트폰 내에서의 경쟁이 아니라 휴대폰 시장의 경쟁이 결국 소프트웨어 경쟁력임을 알 수 있다. 타 경쟁사에 비해 출발도 늦고 소프트웨어 경쟁력도 상대적으로 낮지만 삼성 폰의 시장 점유율을 생각하면 바다폰 애플리케이션 제작에도 관심을 가져볼 만하다.
삼성이 가진 강점은?
삼성의 강점 가운데 하나는 휴대폰의 세계 시장 점유율이다. 향후 출시되는 피처폰에 바다플랫폼을 기본 탑재하겠다는 의지가 있기에 스마트폰 분야에서 아직 그 점유율이 적더라도 휴대폰 시장 점유율로 치면 가능성이 많은 것이다. 삼성 휴대폰용 킬러 애플리케이션(Killer Application)이 만들어질 경우 전 세계로 순식간에 퍼져 나갈 수 있는 보급망 역할을 하고 있는 것이다.
삼성의 다양한 전자 기기들 역시 강점으로 꼽힌다. 삼성의 제품 라인업은 가전제품들의 총집합이라고 해도 과언이 아닌데, 대표적으로 TV를 들 수 있다. 이미 많은 IT 기업들은 TV 콘텐츠 및 상거래 진출을 위한 준비를 하고 있다. TV 상에서의 콘텐츠 상거래에 있어서도 삼성이 소홀할 리 없고, 삼성 제품들의 호환성 측면에서 유리한 고지에 있다고 볼 수 있다. 홈네트워킹을 이루는 구성 요소간의 데이터 통신과 콘텐츠 재사용성, 그리고 애플리케이션 제작의 필요성은 점점 더 절실해지고 있다. 이번에 오픈되는 바다 SDK의 경우 서버 based API를 제공하고 있어 디바이스 간의 연동을 제공하는 애플리케이션 제작이 지원된다.
▪ 바다 SDK의 강점
삼성 자체가 삼성 바다폰이 가진 대부분 피처 기능(중력 센서, 간단한 움직임 인식, 터치 패널, 카메라, 멀티미디어 등)을 쉽게 제어할 수 있는 API를 제공하는 것이 바다 SDK가 제시하는 강점으로 분석된다. 따라서 카메라로 사람의 얼굴을 인식하는 기능, 특정 패턴의 동작을 인식하는 기능 등을 조합해 새롭고 창의적인 작품을 만들어 낼 수 있다.
그리고 서버를 기반으로 돌아가는 API를 함께 제공하는 것도 빼놓을 수 없다. 예를 들어 트위터(Twitter)와 같은 SNS(Social Network Service)를 구현할 수 있는 기능의 API, 그리고 위치 기반 서비스를 할 수 있는 LBS와 같은 기능을 가진 API를 제공한다. 이를 적절히 재구성해 모바일과 연동되는 새로운 킬러 애플리케이션을 구현할 수 있다.
▪ 바다 에코 시스템(bada Eco-system)
플랫폼 오픈의 목표는 외부 개발자들이 관심을 갖고 참여해서 또 다른 서비스나 애플리케이션이 세상에 나오는 것이다. 개발자의 참여 이유는 그렇게 새롭게 만들어진 서비스나 애플리케이션을 통해 이익을 창출하는 것이다. 결국 상생 관계가 존재하게 되고 일종의 ‘생태계’가 만들어지는 것이다. 최근 인터넷 오픈형 마켓의 비즈니스 상에서 파트너와 개발자, 소비자를 연결하는 유기적인 네트워크가 구성되어 수요와 공급이 만나고 가격이 형성되며 자연스러운 경쟁 제품들이 나오게 되는 등의 발전이 이뤄진다. 안드로이드는 자유로운 오픈을 지향하며 관리를 그 사업자들에게 맡기는 방식이고 애플의 경우는 중앙에서 관리하고 통제해 어느 정도의 품질 관리, 제품 관리, 사용자 관리를 하는 방식을 선택했다. 바다 에코시스템은 애플과 같이 애플리케이션을 인증하는 방식의 통제를 하고 있다.
<그림 1> 바다폰 앱스를 위한 에코시스템
bada Developer(http://developer.bada.com)는 개발자 사이트이다. 이곳에서 개발자들은 SDK, IDE를 다운로드할 수 있으며 다운로드한 SDK로 개발하다가 문의사항이 생기면 바로 문의할 수 있는 Forum 서비스를 제공한다. 애플리케이션을 판매하기 위해서는 애플리케이션을 다른 사람들이 구매하고 다운로드할 수 있도록 올려야 한다. Seller Site(http://seller.samsungapps.com)에 등록하게 되면 애플리케이션 인증이라는 것을 거쳐서 애플리케이션 판매가 이뤄진다.
Samsung Apps(http://www.samsungapps.com)는 아이폰의 앱스토어와 같은 애플리케이션 판매 사이트이다. 이곳은 일종의 마케팅 홍보 사이트라고 볼 수 있다. 애플리케이션의 리스트를 보여주고 구매할 수 있게 연결시키는 사이트이다. 사용자가 Samsung Apps에서 애플리케이션을 선택하고 ‘Buy’하게 되면 PC 프로그램(Kies)가 자동으로 런칭되어 구매 절차가 진행된다.
Kies 애플리케이션은 전형적인 PC 애플리케이션으로, 과거에 PC와 휴대폰을 연결하던 PC Manager나 PC Sync를 생각하면 된다(PC와 휴대폰의 데이터케이블 연결을 ‘키스’라는 감성적인 단어에 비유한 것으로 통합 콘텐츠 관리 프로그램의 ‘key’ 된다는 의미). 이 프로그램은 애플의 아이튠즈(iTunes)와 유사하게 동작된다. 또는 폰 내의 ODC(On-Device Client)라는 폰용 프로그램을 통해 애플리케이션을 구매할 수도 있다.
기술적 배경 및 개발환경 특성 소개
지금의 바다라고 하면 바다폰에 들어가는 클라이언트 플랫폼과 서비스 기능을 제공하는 서버 API를 제공하는 서버 플랫폼을 통칭해서 의미한다. 구글의 안드로이드가 구글이 만든 오픈소스 기반의 플랫폼이라고 하면 바다는 삼성이 만든 바다폰에 들어가는 오픈형 플랫폼이다. 오픈 플랫폼이란 플랫폼의 기능을 제어, 관리할 수 있는 API를 외부에 노출함으로써 그를 기반으로 다양한 애플리케이션을 개발할 수 있도록 공개하는 형태의 플랫폼을 의미한다.
<그림 2>는 바다폰의 내부 구성도이다. Framework는 외부와의 인터페이스를 제공하는 Layer이다. Service Layer는 애플리케이션 엔진들과 서버를 지원하는 컴포넌트들로 구성되어 있다. Device의 경우 Device를 제어할 수 있는 시스템적인 기능들을 담고 있는 Layer로 보안, 그래픽, 멀티미디어, 커뮤니케이션 컴포넌트들이 이에 해당된다. Kernel은 OS Kernel인데, 이 부분이 전략이나 휴대폰 모델에 따라서 변경될 수 있는 부분으로 삼성 자체 휴대폰 OS가 탑재될 수도 있고 리눅스 커널에 기반할 수도 있다.
<그림 2> 바다 아키텍처
▪ 바다로 할 수 있는 것은 무엇인가?
플랫폼을 이용해서 무엇을 할 수 있을지 보려면 제공하고 있는 SDK의 내용을 살펴봐야 한다. 바다 SDK를 잠깐 들여다보면 다음과 같다. 크게 세 가지의 큰 분류로 되어 있는데, 기본적인 API를 담고 있는 Basic, 사용자와의 입출력을 받기 위한 User-interactive, 그리고 바다 서버를 통해 제공하는 API들로 구성된 Service-oriented Features로 구성되어 있다.
종류 내 용
App폰 내 다양한 애플리케이션의 컨트롤을 위한 코드 값 및 Handle
Base 데이터 처리를 위한 buffer, Data, String과 Runtime 시 모니터링이나 Utility 보유
Io 파일이나 디렉토리 레지스트리 I/O 조작을 위한 클래스
Locales 국가 코드 및 언어를 가져오거나 Dates, Times 또는 TimeZone 정보
Network DNS, IP Address, HTTP, Socket 그리고 Wi-Fi 또는 Bluetooth 제어
Security 전자 인증 지원 및 관리 키 관리
System 시스템 시간, 배터리, 진동 정보 등의 시스템 정보를 가져오는 클래스
Telephony 전화, SIM Card 그리고 네트워크 정보 관리
Text 문자에 대한 변환 지원
<표 1> Basic bada Features
종류 내 용
Graphics 이미지, 다각형, 색깔, 곡선 등의 Draw와 OpenGL 사용 관련
Media 이미지, 오디오, 비디오 그리고 카메라 사용 관련
UI 폰 UI에 사용되는 폼, 버튼, 리스트박스 등의 컨트롤 생성 및 제어
Uix 카메라 기능 중 얼굴 인식하기, 상세한 Vibration, 움직임 포착하기 등
Web 인터넷 웹브라우저 사용 및 브라우저 컨트롤 제어
<표 2> User-interactive Features
종류 내 용
Commerce Samsung Apps의 상품 정보 및 지불 관련
Content 콘텐츠에 대한 변환, 검색 및 관리 관련
Device PIMS 데이터 동기화 관련
Messaging SMS, MMS, Email 그리고 Push Service 관련
Location 위치 정보 및 지도 관련 서비스
Social 디바이스의 개인정보 관리, 다른 사용자와의 공유
<표 3> Service-oriented Features
<표 1>과 <표 2>, <표 3>에서 보는 것처럼 흥미로운 기능들이 다수 포함되어 있다. 최신형 휴대폰에 탑재된 대부분의 기능을 제어할 수 있고 그러한 다양한 기능을 조합해 멋진 아이디어를 구현할 수 있는 기회를 가질 수 있다.
SDK를 다운로드하기 위해서는 바다의 개발자 사이트(http://developer.bada.com)로 접속해서 회원가입을 해야 한다. 바다에서 제공하는 것은 SDK와 IDE이다. 이 둘은 개발 환경을 구성하는 요소로 SDK는 바다폰용 애플리케이션의 API가 담겨 있는 묶음의 라이브러리라 할 수 있고, IDE는 편집 툴과 컴파일 시뮬레이터를 포함한 개발자 지원 툴이다. 그리고 IDE에는 폰용 애플리케이션의 필수인 시뮬레이터가 포함되어 있다. IDE의 경우 이클립스(eclipse) 개발 툴을 바다에 맞게 변경한 것이라서 이클립스로 개발하던 개발자들은 익숙하게 개발을 진행할 수 있다. 바다 SDK의 코드는 C++로 만들 수 있다. STL 지원이 가능하며 일부 C 언어도 지원한다. 비주얼 스튜디오 프로젝트로 만들어진 개발 코드를 바다 애플리케이션 프로젝트로 변경하는 기능도 제공된다.
<그림 3> 바다 IDE/SDK 다운로드 및 설치 과정
바다 IDE의 경우 이클립스 CDT-based(C/C++ Development Tools)의 개발환경에 바다 SDK와 예제들이 바로 컴파일되고 바다 시뮬레이터(simulator)로 돌아갈 수 있도록 커스터마이징한 개발 툴이다. 이것은 기존 개발 경험자들에게는 다소 익숙하게 느껴질 수 있는 환경으로 Application Wizard, UI Builder, Resource Explorer, File Explorer 등을 제공한다.
<화면 1> 바다에서 제공하는 개발환경 - IDE
바다폰용 애플리케이션 개발에서 화면 개발을 위해서는 Resource를 편집하고 UI Builder를 이용할 수 있다. <화면 2>와 같이 UI에 대한 편집 툴을 제공하며 이것은 기존의 PC 개발 툴과 마찬가지로 UI 편집을 하고 자동으로 코드가 생성되는 툴이며 이를 기반으로 폰에 들어가는 UI를 손쉽게 만들 수 있다.
<화면 2> 바다에서 제공하는 개발환경 – UI Builder
<화면 3>과 같이 코딩 후에 컴파일하고 실행해 볼 수 있도록 바다 시뮬레이터를 제공하며 이것을 실행해 봄으로써 PC 상에서도 어느 정도 코드의 동작 여부를 확인해 볼 수 있다.
<화면 3> 바다에서 제공하는 개발환경 - Simulator
서버 API를 사용하는 경우에는 한 가지 독특한 방식의 API 사용 가능 레벨이 존재한다. ID에 따라서는 이용할 수 있는 범위를 manifest.xml이라는 정의서를 통해 구분하고 사이트로부터 다운로드해 프로젝트에서 컴파일해서 API를 사용할 수 있다.
삼성 바다폰 출시와 더불어 대규모 상금을 걸고 각국 개발자들을 대상으로 애플리케이션 개발 공모전이 진행될 예정이라고 한다. 삼성의 글로벌 전파 효과가 큰 만큼 관심 있는 개발자라면 한번 도전해 볼만 할 것이다(developer.bada.com 참고)
바다SDK 다운로드 바로가기