오늘 ‘코로나 SDK’가 무엇이고 어떤 점이 좋은 지 혹은 나쁜 지와 어떻게 사용될 수 있는지를 설명할 생각이다. 이 글을 통해 ‘코로나 SDK’의 매력을 직접 느낄 수 있으리라 기대한다.
코로나라면 퍼뜩 떠오르는 것은 해변과 레몬 곁들인 시원한 ‘코로나 맥주’일 것이다. 또한 코로나는 태양에서 수백만킬로미터를 뻗어나가는 거대한 불꽃을 일컫기도 한다. 여러분이 모바일 업계에 종사한다면 오늘 또 하나의 뜻을 알게될 것이다. ‘코로나 SDK’…!
썰렁하게 ‘코로나 SDK’ 소개를 시작하는 이유는 특정 솔루션에 대한 각인 효과는 역시 솔루션의 이름일 것이라는 생각에서이다. 이 글을 쓰기 시작하면서 코로나로 명명한 배경에 대해서 Corona Labs에 공식적으로 문의를 했으나 아직 답변은 받지 못했다. 코로나는 세계에서 가장 많이 팔리는 코로나 맥주와 같이 투명하고 시원하게 해주겠다는 의지와 로고의 강렬한 주황색은 태양과 같이 강렬함을 선사하겠다는 Corona Labs의 의지를 투영한 이름이 아닐런지 미루어 짐작해본다.

[그림1] 코로나 SDK 로고 이미지
자 이제 ‘코로나 SDK’의 세계로 여행을 떠나보자!
한마디로 ’코로나 SDK’는 아이폰, 아이패드, 안드로이드용 모바일 애플리케이션을 개발하는 개발툴킷이다. 물론 개발자를 위한 툴킷이다. 이쯤에서 독자 중 상당수는 여행을 취소하고 ‘코로나 SDK’여행 환불을 요구하고 나설 것이다. 하지만 조금만 더 읽어보시라.
여러분은 ‘앵그리버드’라는 게임을 들어보거나 해봤을 것이다. 자, 웹브라우저를 열고 ‘30분만에 앵그리버드 만들기(From Zero to Angry Birds in 30 minutes)’를 검색해보시라. 아마 검색 결과의 상단에 랭크된 링크의 대부분이 바로 ‘코로나 SDK’로 만든 결과물에 대한 이야기들일 것이다. 솔직히 필자도 우연히 검색된 링크를 따라가서 Seb Lee-Delisle란 사람이 떠드는 것을 30분 동안 바라보면서 눈을 의심하지 않을 수 없었다. ‘코로나 SDK’를 사용하면 앱을 아주 빠르게 제작이 가능하다. 그리고 한번 작성된 소스코드로 iOS와 안드로이드에서 동시에 사용이 가능하다. Corona Labs는 10배 빠른 개발이 가능하며 다양한 해상도의 디바이스에 보다 쉽게 적용가능하다고 주장한다. 글보다는 영상을 보는 것도 괜찮을 듯 하다.
Corona Labs의 주장대로라면 이제 Objective-C 개발자나 Java나 Javascript 개발자에게 의지하지 않고도 쉽게 모바일 애플리케이션을 개발할 수 있다는 이야기인 것이다. 이쯤에서 “‘코로나 SDK’는 어떤 언어로 누가 개발할 수 있을까?”란 물음이 생길것이다. 바로 Lua라는 프로그래밍 언어이다. 루아는 특히 게임에서 많이 사용된다. 예를 들면 ‘월드 오브 워크래프트’에서는 사용자 인터페이스, 캐릭터 애니메이션, 게임 내의 외관을 루아를 사용해서 변경할 수 있다.
이처럼 루아는 프로그래밍 언어 자체보다는 디자이너 프렌들리한 확장 스크립트 언어로 더 유명하다. 게임의 캐릭터의 움직임을 표현하기 위해 여러장의 이미지를 사용하는데 여러장의 이미지의 묶음을 스프라이트라고 부른다. 스프라이트를 디자이너가 개발자에게 전달하기 위해서는 각 프레임의 크기가 다를 경우 좌표, 크기 그리고 순서를 일일이 표시를 해줘야한다. 때문에 대부분의 게임 개발사에서는 스프라이트를 생성할 수 있는 툴(PC 프로그램)을 자체 제작하여 사용해왔다. 디자이너에게는 회사마다 다른 이런 스프라이트 툴을 배워야했으며 적응하는 어려움이 있었을 것이다. 루아를 확장 스크립트로 사용하면서 디자이너들은 이런 툴을 사용하는 대신 루아로 스프라이트의 섬세한 움직임을 기술할 수 있고 이는 게임업계에 공통으로 사용이 가능해졌다. 루아는 배우기 쉬운 프로그래밍 언어임은 틀림없다.
다음은 스프라이트를 표현하는 루아 예제 코드이다.
local SpriteSheet = { }
SpriteSheet.getSprite = function ( )
return {
frames = {
{
name=“foo1.png”,
x=2, y=358, width=55, height = 72
},
{
name=“foo2.png”,
x=59, y=434, width=55, height = 70
},
},
sheetContentWidth = 256,
sheetContentHeight = 512,
}
end
return SpriteSheet
보시다시피 루아는 각 행의 구분자로 세미콜론(;)을 사용하지 않으며 콤마(,) 사용에 대하여 관대하다.
다음의 팩토리얼을 계산하는 루아 예제 코드를 보자.
function factorial( n )
if n == 0 then
return 1
end
return n * factorial( n - 1 )
end
보통의 절차적 언어에서 보이는 선언부, 구현부의 구분이 없으며 함수 재귀호출도 쉽게 허용된다.
이제 여러분들도 [그림2]와 같이 CoronaLabs.com에서 Corona SDK Trial을 받아서 당장 프로그래밍을 해볼 수 있다.

[그림2] CoronaLabs.com의 초기 화면
다음 [그림3]은 Corona SDK 를 실행한 화면이다. 시뮬레이터를 내장하고 있으며 예제와 튜토리얼을 프로그램 내에서 실행하고 배울 수 있도록 되있다.

[그림3] Corona SDK의 초기 화면
‘코로나 SDK’의 탄생
Corona Labs(전 Ansca Mobile)는 월터 루Walter Luh와 카를로스 이카자Carlos Icaza가 2007년에 어도비Adobe사를 퇴사하며 세운 회사이다. 두 사람은 어도비사에서 모바일 엔지니어로 ‘플래쉬 라이트’를 개발했다. ‘코로나 SDK’는 2009년에 첫 베타버전이 일반에 공개됐다. 이후 2010년 4월에 2.0 베타가 릴리즈되었다. 2.0에서 아이폰, 아이패드, 안드로이드 디바이스에 대한 크로스 플랫폼 지원이 첫 선을 보였다. 2011년 1월에 Windows XP용 ‘코로나 SDK’ 프로그램을 내놓았다. PC에서는 android용 빌드는 가능하지만 iOS용은 Mac에서만 가능하다. 2011년 4월에는 반스앤노블Barnes & Noble의 누크 컬러Nook Color에도 배포가 가능해졌다.
‘코로나 SDK’의 특징
첫째, OpenGL-ES 엔진을 이용해 하드웨어 그래픽 가속을 사용하며 GPU 최속으로 스프라이트 애니메이션이 가능하다. 둘째, Box2D 물리엔진을 내장하고 트랜지션Transition 라이브러리로 스프라이트의 이동, 회전, 크기, 알파 등을 자유롭게 조절이 가능하다. 셋째, 연단위 계약을 통해 최신 업데이트를 받을 수 있다. (iOS/Android 각각은 $199USD/yr, Pro는 $349USD/yr, Enterprise는 $3,000/yr) 넷째, 카메라, 엑셀레로미터, 마그네토미터, 비디오 플레이어, 콤파스, GPS 등 디바이스 고유 기능을 사용할 수 있다. (일부 제한 있음. 로드맵 문서 참고)
‘코로나 SDK’의 장점
첫째, 열배 빠른 앱 개발이 가능하다. 둘째, 크로스 플랫폼에 적용이 가능하다. 셋째, OpenGL, OpenAL, Google Maps, Box2D physics, Facebook Connect, Game Center, In-app Purchases 등 업계의 표준을 준수한다. 넷째, 안드로이드 파편화에 대응이 용이하다. 다섯째, HTML5 호환 WebView를 제공한다. 여섯째, 연단위 계약자에게는 커뮤니티, 이벤트, 리소스, 툴 등을 제공된다. (프로그램에 따라 일부 제외)
‘코로나 SDK’의 단점
첫째, 새로운 프로그래밍 언어인 Lua를 배워야한다. 둘째, Corona Labs에 종속적이다. 셋째, 다른 크로스 플랫폼 솔류션에 비해 가격이 비싸다. 넷째, 코로나 엔터프라이즈Corona Enterprise의 경우 맥킨토시Macintosh에서만 iOS, Android 빌드가 가능하다.
결론
eBook 시장에서 강조되는 인터렉티브한 앱북을 제작할 수 있을 것으로 예상한다. 특히 미니 게임과 유아용 애플리케이션 제작이 용이할 것이다. 결론은 간단하다. 지난 3주간 파일럿한 내용을 동영상에 담았다. 참조란을 보시라!
참고
다음 동영상은 지난 3주간 파일럿으로 진행했던 iOS용 애플리케이션 동영상이다.
코로나 엔터프라이즈 라이브러리, 넷앤티비 라이브러리, 넷앤티비로 저작한 ‘인어공주’ 컨텐츠를 포함하는 네이티브 앱을 보여준다. 참고로 코로나 프로와 달리 엔터프라이즈는 코로나 엔진을 라이브러리 형태로 제공받을 수 있다. (Corona Enterprise 트라이얼 2012.878 버전을 사용했다.)
(=== URL은 저작권 문제로 삭제함 ===)
’앱북과 코로나’ 세미나 자료
’코로나 SDK’ 위키피디아
Updates
2012.09.12 from David Rangel of Corona Labs
코로나랩의 COO인 David에게서 답변이 왔다. 필자의 두 번째 추측이 맞았다 ;-). 루아Lua가 포르투갈어로 ‘달’을 의미하므로 그 주변을 환하게 비추는 코로나가 되겠다는 단순한 생각에서 명명했다는 이야기다. Corona SDK는 Lua 프로그래밍 언어를 선택하면서 시작되었다는 이야기다. 참으로 흥미롭다.
(원문)
Where the name Corona came from :).
Well, it does not make complete sense, but it is because Corona uses the Lua language. “Lua” means moon in Portuguese. Since the Corona SDK is a set of tools “around” Lua, they chose the name “Corona”, as in the corona of the moon (see:
http://en.wikipedia.org/wiki/Corona_(optical_phenomenon))