웨어러블 기기를 활용한 서비스 개발 … ‘글로벌 해커톤’ 2일간의 참가 기록
지난 18일, 남산 제이그랜하우스에서 제2회 글로벌 해커톤 – 웨어러블 챌린지(2nd Global Hackathon – Wearable Challenge) 행사가 개최되었다. 웨어러블 기기를 활용한 서비스 개발을 목적으로 하는 이번 행사는 제12회 서울디지털포럼(SDF)의 심화 세션이다. 필자는 공공데이터를 활용하여 스마트워치용 애플리케이션을 만드는 한 팀의 참가자를 현장에서 섭외하여 그가 경험하게 될 ‘무박 2일’을 기록해보기로 하였다.
‘IT파스타’ 팀 이주용 팀장(24)
‘IT파스타’팀의 이주용 팀장은 두 달 전 우연히 유튜브 광고를 보고 처음 이 행사를 알게 되었다고 한다. 웨어러블 기기에 관심이 많았던 찰나였다. 이후 교수님의 추천으로 다시 한 번 자세히 행사를 알아본 후 참가하기로 했다. “처음 참가하는 거라 참가 자체에 의의를 두고 겁 없이 도전해보는 거에요.”라고 말하는 이 팀장은 학과 게시판을 통해 팀원을 모집했다고 한다.
그럼 이제 그의 이야기를 들어볼까.
■ 행사 전, 서비스 기획 이야기
팀 구성 후 서비스를 결정하는 데에 고민을 많이 했다. 4월 말부터 팀원들끼리 모여서 회의를 했다. 나는 제일 먼저 기존 웨어러블 기기에 설치된 앱들을 찾아보았다. 시간 확인, 거리 측정과 같이 특정 기능을 수행하는 앱만 있고 생각보다 장르가 다양하지 않았다. ‘웨어러블 기기로는 개발할 수 있는 게 한정적이겠구나.’라고 생각했다. 그래서 우리는 공공데이터를 활용해서 새로운 서비스를 만들자고 의견을 모았다. 그리고 공공데이터를 받아서 바로 보여주는 것보다는 정보를 가공하여 새로운 데이터를 만들기로 하였다.
팀원들끼리 내린 결론은 ‘운동과 건강’이라는 키워드에 조금 더 집중해보자는 거였다. 우리는 웨어러블 기기에 내장된 각종 센서를 활용한 가칭, ‘다이어트 헬퍼(Diet Helper)’ 서비스를 개발하기로 했다.
일반인의 입장에서는 미세먼지 정보, 오존 농도 등의 환경 관련 공공데이터는 표시 단위도 생소할뿐더러 야외 활동 시 어떤 값이 건강에 해로운지 파악하기 어렵다. 우리는 대기오염 데이터를 갖고 누가 보아도 쉽게 판단할 수 있도록 시각화된 이미지로 보여주고 싶었다. 그리고 만보계 센서와 심장박동 센서를 통해서는 다이어트를 효과적으로 할 수 있는 적정 운동 강도를 알려주고 싶었다.
이러한 기획 의도와 핵심 기능을 정리하여 5월 3일, 참가 신청서를 제출했다. 다음날 합격 통보를 받고, 5월 7일에 성균관대학교에서 열린 사전모임 행사에 참석하였다. 사전모임에서는 아직 출시되지 않은 스마트워치 신제품이다 보니 사용법과 프로그램 연동에 관한 기술교육을 받았다. 5월 12일에는 행사 주최 측에서 제공하는 소프트웨어 개발 도구(SDK)를 갖고선 활용법을 익혔다.
■ 첫째 날, 서비스 개발에 들어가다
아침 일찍 천안에서 출발하여 오전 9시 40분에 행사장에 도착했다. 행사장 입구에서 명찰과 기념티셔츠를 나눠주고 있다. 개회사 후에 스태프분이 삼성 기어 SDK와 갤럭시 S6 Edge 스마트폰 기기를 팀별로 나눠준다. 삼성 기어 SDK는 아직 시중에 출시되지 않은 제품이다 보니 보안을 위한 ‘Gear 단말 이용자 준수사항 서약서’에 서명해야 했다. ‘Gear 트랙 참가 동의서’에도 서명했다. 스피커에서 개발 과정에 있어 문의 사항이 있으면 행사장 내 삼성전자 멘토링 부스를 이용하라는 안내 멘트가 흘러나온다.
도착했을 때부터 인터넷 와이파이가 불안정했는데 11시부터는 아예 인터넷이 되지 않는다. 그래서 우리 팀은 USB 메모리와 외장하드를 이용해서 파일을 주고받기로 했다. 역할분담은 크게 두 파트로 나누었다. 디자인을 제작하여 정적인 화면에 넣는 ‘화면 구성 파트’와 화면상의 버튼을 구현하는 ‘터치와 로터리 기술 구현 파트’로 말이다. 각자 작업 후엔 정해진 시간에 작업물을 합치고 상세 기능을 하나씩 만들어가자고 했다.
우리 팀은 메인 화면을 완성한 후 12시 30분에 옆 건물로 이동하여 식사를 했다. 점심을 먹고 나서 1시부터 다시 Tizen IDE를 통해 개발 작업에 들어갔다. 추가로 개설된 와이파이 네트워크에 노트북을 연결하였다. 오늘 밤 10시까지 팀별 서비스 소개자료를 제출해야 하고 내일 오후부터 심사가 들어갈 예정이니 개발 시간은 촉박한 셈이다.
화면에서 이미지 크기를 조정하면 뒤에 자동으로 흰색 배경이 들어가버리는 문제가 발생했다. 김다경 디자이너가 디자인 자체에서 배경이 없도록 이미지를 만든 후 신재규 개발자가 올리는 것으로 해결하였다. 그런데 아까부터 기어 로터리를 돌렸을 때 화면 전환이 안 되는 문제 때문에 오후 3시가 넘어가고 있다. 결국, 팀원 2명이 멘토링 부스로 가서 화면 전환 동작 방법에 관해 물어보기로 하였다. 멘토 한 분이 직접 우리 자리로 오셔서 코딩을 수정해주시면서 유의사항을 설명해주신 후 문제가 해결되었다. ‘진작에 물어볼 걸 그랬다.’ 3시 20분이다. 나는 로터리를 돌렸을 때 기능을 선택할 수 있는 프로그램을 짜면서 센서가 제대로 작동하는지 확인해나갔다. 경대현 개발자와 상의하면서 메뉴 전환은 로터리 방식으로, 기능 선택은 터치 방식으로 개발하기로 했다.
오후 3시 50분. 행사 스태프가 팀별로 나눠주는 간식을 먹으면서 기기에 넣은 화면을 버튼화하는 작업을 진행하였다. 그런데 조금만 로터리를 돌려도 기기가 너무 민감하게 반응한다. 반응 값을 수정하는 한편 화면 전환 효과를 팝업 방식으로 수정하였다. 훨씬 세련돼 보이는 느낌 때문이다. 잠시 쉬는 시간을 가졌다.
오후 5시 10분. 심박 수와 관련한 기능 개발에 들어가면서 하단 콘솔 창을 통해 기기 동작을 지켜보다가 로터리와 운동강도 설정이 겹치는 걸 발견했다. 이 부분은 생각하지 못했던 부분이다. 로터리를 돌렸을 때 시스템이 인지하는 이벤트가 있는데, 이게 메인화면에서 메뉴를 바꾸라고 돌린 것인지 아니면 운동 강도 설정을 하기 위해 돌린 것인지 기기가 헷갈려 하고 있다. 화면 전환에만 쓰이는 스크립트와 운동 강도 설정 스크립트 코드를 따로 만들어야겠다.
오후 6시 20분. 김다경 디자이너와 신재규 개발자가 기어 로터리를 돌릴 때 넘어가는 화면 4개(시작, 종료, 저장, 세팅)와 전체 운동 정보가 뜨는 다섯 번째 화면까지 완성했다. 핵심 기능을 보여주는 화면이 다 나왔다. 이제 데이터를 연결하여 화면에 띄우는 작업을 해야 할 차례이다. 오후 6시 30분, 저녁 식사를 하러 갔다.
오후 7시. 우리 팀은 기본적으로 기기 안에 GPS가 있을 거로 생각했었다. 그런데 서비스를 찍어보니 GPS가 안 된다. 멘토링 부스에 문의했더니 GPS 기능이 내재되어 있지 않다고 한다. 우리 팀은 처음에 GPS 정보를 통해 거릿값을 받아서 소모 칼로리를 계산하려고 했다. 만보계 센서를 통해서 운동량을 보여주려면 거릿값을 통해 사용자가 걷고 있는지 아니면 뛰고 있는지를 알아야 하는데.. 당황스럽다. 방법을 바꿔야 한다. 우리가 확보할 수 있는 다른 정보가 있나 찾아보니 다행히도 모션 API가 있다. GPS 대신에 활용하기로 했다.
오후 9시 30분. 행사장 무대에서 팀별 사진 촬영 후 팀장들끼리 모여서 사전 심사 순서를 제비뽑기했다. 나는 7번을 뽑았다. 김민서 기획자가 오후 10시 마감 시한에 맞춰 우리 팀 서비스 소개 자료를 주최 측에 제출했다. 10시 20분에 야식으로 치킨이 나왔다.
■ 둘째 날, 사전 심사와 발표 시간
새벽 1시. 모션 API를 이용하다 보니 또 다른 문제에 봉착했다. GPS가 없다 보니 사용자 위치를 알 수 없고, 사용자 위치를 알 수 없으니 우리가 공공데이터에서 가져오려던 주변 환경 정보를 알 수 없게 된 것이다. 고민이 시작되었다. 사용자가 자신이 현재 머무르고 있는 지역을 직접 입력해서 검색하는 방법을 써야겠다. 그러나 이 방법은 세 가지 문제가 예상된다. 첫째, 인터넷을 통해 정보를 받아오려면 지역 정보를 요청해야 하므로 만약 우리가 지역 정보를 잘못 입력해서 요청하면 정보를 받지 못할 수 있다. 둘째, 서버 쪽의 문제가 발생하여 서버에서 요청한 정보를 넘기지 못하는 상황을 맞닥뜨릴 수도 있다. 마지막으로, 우리가 정보를 받는 데에 성공한다 해도 필요한 환경 정보를 추출할 때 잘못된 접근을 할 수도 있다. 이 중 가장 큰 가능성은 우리가 필요한 정보를 추출하지 못할 가능성이다.
새벽 4시. 결과가 안 나온다. 이 문제가 생각보다 심각하다는 걸 느낀다. 팀원들과 다시 회의했다. 공공데이터 말고 다른 곳에서도 한 번 데이터를 받아와 보기로 했다. 그런데 이것도 여의치 않다. 내가 하고 있던 작업을 일부 신재규 개발자에게 맡기고 이 문제를 내가 확실히 맡아서 해결하기로 했다. 통신 절차를 다시 조사해서 정리했다. 개념을 정리한 후 실질적인 작업을 시작하니 새벽 5시를 넘어가고 있다. 그런데 공공데이터에 접근을 요청해도 데이터가 오지 않는다. 알고 보니 요청이 정상적으로 되었는지에 대한 확인 절차를 빼놓았다. 통신을 위해서 서버 요청을 하는데, 접근 권한을 설정해놓지 않고 데이터 요청을 하는 바람에 데이터를 못 받고 있는 것이었다. 빠뜨린 건 또 있었다. 기어와 휴대폰이 멀어지거나 기어가 인터넷에 연결되어 있지 않으면 먹통이 되는 문제가 있는데, 이러한 예외 상황이 발생할 시에 적절히 처리할 수 있게끔 코딩해놓지 않았다. 우리가 만든 프로그램은 기기가 항상 네트워크와 연결되어 있다는 가정하에 만든 거였다. 네트워크가 끊어질 때를 대비하여 인터넷에 연결될 때 정보를 기기 안에 문서로 저장해놓게끔 하였다.
아침 8시에 아침 식사를 하고 잠시 눈을 붙였다. 일어나서 다시 작업하니 아까 저장한 정보가 로딩이 안 된다는 문제를 발견했다. 멘토에게 물어보니 “크로스도메인을 사용해서 데이터를 가져와야 한다.”고 했다. SOP를 회피하는 Ajax를 사용하라고 했지만, 우리에겐 지금 시간도 없고, 안내 문서에 나와 있는 이런 방법을 사용해본 적도 없다. 나는 “꼭 이 방법을 써야 하나요? 우리가 만든 API를 쓰면 안 되나요?”라고 물었다. 상관없단다. 기존 방식으로 데이터에 접근해서 우리에게 필요한 정보만 뽑을 수 있게끔 코딩했다. 아까 예외 상황을 처리하려고 한 부분에 이 코딩을 집어넣으면 완성이 될 것 같다. 신재규 개발자가 코드를 취합하기로 했다. 옆에서 김민서 기획자는 우리의 서비스를 SBS ‘생방송 투데이’라는 프로그램에서 활용하는 스토리텔링 방안을 모색 중이다.
한편, 만보계 센서가 제대로 작동하지 않는 것 같다. 기기 보안을 위해 기어가 네모난 플라스틱 고정틀에 들어가 있다 보니 심박 수도 제대로 계산되지 않는 상황이다. 멘토링 부스에 물어보니 고정틀을 풀어줄 수는 없다고 하면서 센서가 고정틀 속에 있는 거로 인해 인식이 부자연스러운 경우는 평가에 충분히 참작하도록 하겠다고 답했다.
오후 1시 30분. 김다경 디자이너는 최종 발표 자료를 만들어 제출하고 나머지 팀원들은 멘토링 부스로 향했다. 두 분의 심사위원 앞에서 사전 평가를 위한 기능 구현 사항 발표를 시작했다. 심사위원은 전체적인 화면 구성을 보여달라고 한다. 사전에 UI 가이드 문서를 나눠주었는데 그걸 지키려고 노력했는지를 보려는 것 같다.
6분간의 발표가 끝나자 아쉬운 마음이 든다. 우선 기어만으로는 퍼포먼스에 한계가 있어 스마트폰 앱과 정보를 주고받게 하고 싶었는데 시간이 없어서 연동하지 못했다. 그리고 화면 전환이나 값 조정은 로터리로 컨트롤하고, 화면 안의 메뉴들 선택의 경우에는 터치로 컨트롤하게 만들어 명확히 구분하고 싶었는데 초기 기획과 달리 일부 컨트롤만 로터리로 만들어서 아쉬웠다. 공공데이터를 받아오는 데에 너무 많은 시간이 들어간 게 가장 큰 이유였던 것 같고, 코드 취합에도 시간이 오래 걸렸다.
아까 점심 먹을 시간이 없어서 식사를 건너뛰었더니 배가 고프다. 팀원들과 간식을 사서 나눠 먹으면서 이런저런 이야기를 나눴다.
오후 3시. 전체 39개 참가팀 중 최종 발표 기회를 얻은 9팀의 명단이 한 팀씩 호명되었다. 해당 팀은 무대로 올라가서 3분간 발표한 후 질의 응답 시간을 가졌다. 그 중 ‘와치가 당긴다’ 팀의 발표가 인상적이었다. 스마트워치라는 작은 화면에서 여러 가지 툴을 사용해 색을 섬세하게 선택한 후 스마트폰 화면에 손가락으로 그림을 그리는 드로잉 앱이었다. 대개 기어 화면은 사용자에게 무언가를 보여주기 위한 창으로 활용하는데, 이 팀은 오히려 기어로 툴을 선택하게 한 후 스마트폰으로 무언가를 보여주는 역발상을 취했다. 굉장히 참신하다.
오후 4시 40분. 간단한 요가 스트레칭 프로그램이 끝난 후 팀원들과 서로 “수고 많았다.”며 인사를 나눴다. 이어서 시상식과 기념촬영까지 마치고 행사가 종료되었다. 시원섭섭한 기분이지만 이틀 동안 많은 것을 배울 수 있는 자리였다. 다음에는 좀 더 향상된 모습으로 참가해보고 싶다.
원문 : [앱센터 다큐 2] ‘글로벌 해커톤’ 2일간의 참가 기록
안경은 앱센터 외부필진 / 자신이 하고 싶은 일을 하는 사람들을 좋아합니다. 그들의 이야기에 귀를 기울이는 것을 즐깁니다. 글로 정리해 사람들과 공유할 때 신이 납니다.