초보 스마트TV 개발자를 위한 안내서

스마트TV 애플리케이션 개발은 기존의 웹이나 스마트폰 애플리케이션과 무엇이 어떻게 다를까? 사실 많은 개발자가 잘 모르고 궁금해한다. 사실 스마트TV에 대한 전략적인 이야기나 논의는 많이 있었지만, 이에 대한 실질적인 정보는 얻기 쉽지 않았던 까닭이다.

그래서 이에 대한 답을 핸드스튜디오 개발팀 전태경 연구원에게 물었다. 전태경 연구원은 2013년 5월 현재 핸드스튜디오의 최연소(25세) 연구원으로, 기존에 웹 프로그래밍을 하다가 작년 7월부터 10여 개월간 스마트TV 애플리케이션 개발 중이다.

 

Q. 어떻게 스마트TV 개발을 시작하게 되었는지 간단한 소개를 부탁한다.

2008년부터 C++로 게임 개발하는 것을 배웠다. 2009년부터는 실무를 시작해 Java 환경의 웹 기반 교육 솔루션을 만들었고, 2년 반 동안 COBOL을 JAVA로 바꿔주는 마이그레이션 툴 개발과 유닉스 시스템을 웹으로 백업하고 복구하는 솔루션 개발 등도 진행했다.
그때까지만 해도 스마트TV 개발을 배우게 되리라고 생각하지는 않았다. 어느 날, 우연히 핸드스튜디오를 알게 되었고, 회사의 가치와 함께 일할 직원들에게 매력을 느껴 입사를 희망하게 되었다. 입사 후에는 2012년 7월부터 ‘WISE TV’라는 스마트TV 기반 콘텐츠 유통 솔루션을 진행하게 되었다. 이 이후에 ‘아리랑 TV’나 ‘EBS’ 등의 애플리케이션을 제작했다.
사실 그동안 서버 쪽 프로그래밍 업무를 진행했으니 막연히 비슷한 일을 하지 않을까 생각했는데, 막상 들어와서 보니 스마트TV 개발을 배우지 않으면 안 된다는 걸 알았다.

Q. 처음 스마트TV 개발하는 걸 보고 어떤 느낌을 받았나?

핸드스튜디오 입사 후 처음 진행한 업무는 스마트 TV에 응답해줄 Restful API Service를 개발하는 것이었는데, 코드가 TV라는 장치를 통해 디스플레이 되는 게 신기했다. 소스를 뜯어봤는데 너무 어렵고 난해하게 느껴져서 스마트TV 개발을 하는 동료 개발자가 대단해 보였다. 지금 돌아보니 크게 내가 ‘난해하다’고 느낀 이유는 세 가지였다.

1. 디바이스 환경이 다르다.
일반 PC는 서버 데이터나 WAS(웹 애플리케이션 서버, Web Application Server)도 구축할 수 있다. 스마트TV에서 자체적으로 백엔드 서비스를 구축하기엔 무리가 있으며, 스마트TV에서 백엔드 서비스가 필요하면 별도의 장치에 구축 후 API를 통해 데이터를 제공해야 한다.

2. 언어의 차이(프로그래밍 랭귀지 차이)
JavaScript는 이전에 서버 프로그래밍을 할 때 사용했던 Java와 차이가 있다. 우선 흔히들 JavaScript를 Java의 일부라고 생각하지만, 실제 JavaScript는 Netscape에서 개발한 스크립팅 언어로 프로그래밍 언어인 Java와는 다르다. 변수의 경우 특정한 형식(String, Int)로 지정하지 않고 사용 중에 변경이 가능하며 함수 리터럴을 사용하여 변수 형태로 함수 지정 및 전달이 가능하다.
또한 일반적으로 자신의 객체를 지칭하는 this의 경우 JavaScript에서는 호출된 위치에 따라 참조되는 객체가 달라지는데 이점이 JavaScript을 다루기 시작하면서 조금 어려웠던 부분이다. 하지만 JavaScript에서도 prototype을 이용한 객체지향 프로그래밍이 가능하고 이벤트 중심의 애플리케이션을 개발할 때 오히려 편리한 개발 환경을 제공한다.

3. 해상도의 제약이 있다.
스마트TV는 웹킷webkit 브라우저 엔진이 내장되어 있으며 스마트TV 애플리케이션은 HTML 문서를 기반이기 때문에, 일반적인 웹 페이지와 환경이 유사하다. 하지만 스마트TV는 1280*720과 960*540으로 해상도가 지정되어 있어서, HTML이나 CSS 작성 시 해상도의 제한이 있다.

덧붙이면 나는 그때까지 스마트TV 개발을 대하는 마음이 ‘기존에 백엔드를 개발하던 경험에 익숙해져서, 스마트TV 개발이 기존에 내가 개발했던 환경과는 너무 다르다’라고 생각한 것이지, 사실 스마트TV 개발이 어려운 것은 아니다.

IMG_6460

Q. 스마트TV 애플리케이션 개발은 기존 웹 개발과 어떻게 다르고, 어떤 사람이 유리한가?

삼성 스마트TV 애플리케이션 개발은 일반 웹 서비스의 프론트엔드 개발과 유사하다. 서버 요청이나 이벤트 처리와 같은 비즈니스 로직은 JavaScript로 구현하며 스타일은 CSS, HTML 문서로 구성된다. 서버 측 컨테이너나 서버 사이드 언어와 같이 웹을 구현하는 모든 기술을 지원하는 것은 아니지만, 프론트엔드만 본다면 거의 동일하며 웹 애플리케이션의 클라이언트를 개발하는 방법을 그대로 활용할 수 있다.
당연히 프론트엔드 개발을 잘하는 사람이 유리하다. 자바스크립트에 능숙하면 좋고, HTML과 CSS도 잘해야 한다. 이해를 돕기 위해 덧붙이면, 능숙하게 스마트TV 애플리케이션을 개발하려면 JavaScript로 HTML의 DOM 요소를 자유롭게 제어할 수 있는 정도여야 한다.

Q. 스마트TV 애플리케이션 개발은 개발 환경이 다른가?

개발환경도 크게 다르지 않다. 삼성스마트TV는 자체 SDK를 배포하고 있어서 이를 활용해 개발할 수 있다. 개발 기기는 SDK가 설치된 윈도우 환경의 컴퓨터만 있으면 된다. 맥용과 리눅스 SDK도 있지만, 맥이나 리눅스에서는 아직 제약이 많다. 실질적 서비스를 위한 개발은 윈도우에서만 가능하다. SDK 안에는 에뮬레이터까지 포함되어 있어, TV가 없어도 2011년, 2012년, 2013년도 TV 전부를 에뮬레이터를 통해 테스팅할 수 있다.
다만, 2011년의 스마트TV는 완전히 다르다. 이때는 브라우저 엔진을 메이플MAPLE을 사용했으나, 12년이 되면서 브라우저 엔진이 웹킷으로 바뀌었다. 따라서 COMMON LIBRARY부터 카메라 등 선언방법 등이 광범위하게 다르다. 다행히 2012년 TV와 2013년 TV 개발은 거의 똑같다.

Q. 스마트TV 애플리케이션 개발시 가장 까다로운 부분이 무엇인가?

일반적으로 웹이나 모바일의 경우, 일반적으로 마우스, 키보드, 터치 등의 입력장치가 있다. 하지만 스마트TV는 리모컨 뿐이다(리모컨을 통해 인식하는 등의 스마트 인터렉션 [1] 이 있지만, 이걸로 애플리케이션을 콘트롤하는 것은 아직 어렵다).
일반적인 웹앱과 다른 것은 모든 화면마다 리모컨 이벤트에 따라 포커스(TV 내부의 커서) [2] 가 달라지는 처리 방식이다. 한 페이지 개발에 엄청난 시간이 소요된다. 웹에서는 페이지를 만드는 것이 쉽고 작은 규모의 홈페이지만 해도 수십 페이지로 구성된다. 하지만 2013년 기준으로, 스마트TV는 한 애플리케이션 내의 페이지가 8개 정도다. 그만큼 한 페이지 안에 고려할 게 많고 개발 기간이 오래 걸린다.
게다가, 입력장치로 리모컨과 스마트 인터렉션을 동시에 고려한 애플리케이션 개발은 정말 고난도다. 물론 언젠가는 결국 인터렉션이나 리모컨 등이 발전하여, 이런 고민이 줄어들 것으로 예상한다. 삼성 스마트TV 역시 삼성에서 내놓는 SDK와 리모컨과 SI가 발전하고 있는 걸 보면 알 수 있다. 하지만 아직은 이 부분을 고려해야만 사용자가 불편 없이 애플리케이션을 사용할 수 있다.

Q. 그밖에 스마트TV 애플리케이션 개발시 고려할 점은 무엇인가?

API를 가져오는 방법은 ajax를 통한 비동기 통신인데, 이건 웹과 동일하다. 다만 스마트TV는 API가 없으면 서버와 인터페이스를 진행할 수 없다. 소켓을 이용하는 등의 다른 방법도 있지만, 아직은 사례도 미미하며 사용하기 쉽지 않다.

Q. 스마트TV를 처음 개발하는 사람이 공부하면, 얼만큼의 시간이 소요되는가?

일반 개발자가 바싹 공부하면 2개월쯤 걸린다. 프론트엔드 환경에 익숙한 개발자라면 1개월도 가능하다. 개발 자체의 난도는 그렇게 높지 않기 때문이다. 하지만 상용화되는 서비스를 만드는 수준이라면, 2~4개월 이상이 걸릴 수도 있을 것 같다.
이번에 핸드스튜디오에서 내놓은 ‘손에 잡히는 삼성 스마트TV 앱 개발’ 책은 직원들이 4년여간 정리한 노하우를 쉽게 따라할 수 있도록 정리했으니, 이 책을 활용한다면 초기에 이해하는 기간을 단축할 수 있으리라 믿는다.

책 표지

Q. ‘손에 잡히는 삼성 스마트TV 앱 개발’에 대한 소개를 좀 더 한다면?

클라우드북스 대표님이자 로아컨설팅 이사인 김석기님의 추천사를 그대로 옮기고 싶다.
“스마트 TV는 커넥티드 디바이스의 영역에서 스마트폰과 함께 빠질 수 없는 가장 중요한 스크린 중 하나이다. TV는 가장 전통적인 미디어이면서 현재도 가장 영향력 있는 매체로 자리잡고 있는데, 스마트TV로 진화하면서 그 영향력이 더욱 커지고 있다.
이 책 ‘손에 잡히는 삼성 스마트TV 앱 개발’은 스마트 TV의 선두주자인 삼성 스마트 TV에서 동작하는 콘텐츠를 만드는 레퍼런스 가이드라해도 손색이 없다. 삼성 스마트 TV에 대한 이해부터 앱 개발, 환경 설정 등 기본적인 사항부터 개발을 위한 에뮬레이터의 사용이나 실제 소스코드를 따라서 구현해볼 수 있도록 상세하게 구성되었다. 스마트 TV 분야에 도전하는 개발자, 디자이너, 기획자에게 이 책을 권하는 바이다.

글 : 전태경

 

  1. 스마트 인터렉션SMART INTERACTION : 스마트TV의 일반적인 입력장치는 리모컨이지만 삼성 스마트TV에서는 리모컨 뿐 아니라 음성이나 동작 인식으로 TV를 조작할 수 있는 환경을 제공한다. 삼성 스마트TV에서는 이와 같은 기술을 스마트 인터랙션이라고 한다. []
  2. 포커스FOCUS : ‘한 화면에 여러 개의 탐색 혹은 접근 가능한 요소가 존재할 경우 어던 요소가 선택되었는지 표시한 상태’다. 스마트TV나 셋톱박스 형태에서의 IPTV에서 제공하는 서비스를 이용하기 위해 리모컨의 방향키(상/하/좌/우)로 포커스를 이동하고, 확인키로 포커스된 콘텐츠를 실행하는 경우를 떠올리면 포커스의 역할을 이해하기 쉽다. []
banner_book_300x100_2

벤처스퀘어 독자들에게 ‘손에 잡히는 삼성 스마트TV 앱 개발’ 10권을 증정합니다! 이 글에 ‘내게 손에 잡히는 삼성 스마트TV 앱 개발이 필요한 이유’를 남겨주신 분 중 10명을 선정하여 책을 보내드립니다. 선정되신 분들께 메시지를 드릴 수 있도록 트위터/페이스북 계정을 이용해서 댓글을 남겨주세요. 관심있는 여러분의 많은 참여 부탁드립니다.
참여 기간 : 2013년 5월 23일 ~ 2013년 6월 6일
당첨자 발표 : 2013년 6월 7일 벤처스퀘어 페이스북 페이지에서 발표

%d bloggers like this: