Google Developers Hackathon Korea 참여 후기 by 오리대마왕

12/03(일)에 있었던 1회 gooigle developers hackathon korea에 참여했다. 관련 내용은 google+ 에서 #gdhk 로 찾아볼 수 있다.

이번 이벤트는 구글로 회사를 옮기신 권순선님 주도로 준비된 것으로 알고 있고, 직원분 몇 분이 스탭으로 수고해 주셨다. 고맙습니다. (행사 진행 중에 알게 되었는데 스탭 중엔 내 친구도 있었다.)

처음엔 그냥 새로운 이벤트에 참여해 보고자 하는 마음이었으나, 하면서 나름 욕심이 나기도 했다. 하여간 결론은 계속 읽어보시고. ^^

발단


처음 행사에 대한 공지를 보고, 오홍 요거 재밌겠다 생각을 했다. 개인 지원도 가능했지만 기왕이면 아는 개발자 중 같이 작업해 보고 싶었던 분들과 함께 놀아보고 싶었기에 팀원을 모집했다. 그래서 내 마수에 불쌍한 daclous님과 오락실원숭이(실명 미상)이 걸려들었다.

일단 50명 정도만 선발한다고 하니 프로젝트 구상을 먼저 해야 했다. 조건은 간단하다. 하루에 할 수 있으며, google 제품을 쓸 것. 구글 제품이라면 안드로이드, chrome, g+ 정도가 떠올랐는데 chrome은 해 본 적도 없고 안드로이드와 g+ 정도에서 고르려고 했다.

평상시 아이디어가 많은 사람이라면 좋았겠지만 난 아이디어가 참 부족한 사람이라 이리저리 머리통을 굴려보다가 hangouts API를 이용한 프로젝트를 구상했다.
hangouts API는 2011.09월에 최초 공개되고, 피드백을 받아 11월에 0.1 버전이 공개된 아주 따끈한 api이다. 한 마디로 hangouts 화면에 자신이 만든 웹 애플리케이션이 들어가고, 몇 가지 조작이 가능하다. 참여자의 화면에 overlay 이미지를 얹을 수 있고, 사운드 끄기,켜기/화면 끄기,켜기 등의 조작과 여러 이벤트에 대한 콜백이 가능하다. 또 shared map 객체를 이용해 모든 사용자가 동일한 정보를 공유할 수 있다.

이 hangouts API로 뭘 해 볼까 생각하다 마피아 게임을 생각했다. 얼굴보며 해야만 하는 놀이 중에 상대적으로 간단하고 재밌을게 뭐가 있을까 하다가 기껏 생각한 게 마피아... 이 프로젝트로 3명이 참여신청을 했고, 다행히 셋 다 선정되었다. 그리고 12/02(금) 밤에 참여자들 프로젝트 소개 자리에서 아래 pt를 공개했다.



이날 저녁은 유명한 구글의 부페 식사를 맛나게 했다.

그리고 12/03(토)


hangouts api 는 javascript 기반이므로 미리 js 언어 공부, webstorm 깔아서 적응하기, hangouts api 공부를 하며 준비를 해 왔다.

오전 시간엔 시작에 앞서 설계를 하기 위해 머리를 맞대고 열심히 회의를 했는데... 헉-_-; 밥 먹을 시간이 되었다. 슬슬 식은 땀이 나기 시작했다.

오전 시간을 다 잡아먹은 분석 산출물


음냐리. 일단 밥 부터 먹고 보자 하여 맹렬히 식사를 시작했다. 벤또가 나왔는데 맛있었다. 냠냠.

후다닥 밥을 먹고 오후 시간에 본격적으로 개발을 시작했다. hangouts API를 보면 shared map 객체인 state라는 api를 사용할 수 있다. 문제는 이 map이 {"string":"string"} 형태의 맵이라 사용하기가 쉽지가 않다.
API 문서를 보면 객체를 넣고 싶다면 json stringify를 통해 json string 으로 만들어 저장하고, 뺄 땐 다시 객체로 parsing하라고 나와있다. 그리고 state 전체를 받아올 수 있는 api는 있지만 state 전체를 갈아치우는 api는 없다. 변경된 부분/삭제할 부분만 update하는 형식이다. 우린 구현을 단순화 하기 위해 state가 바뀔 때 마다 통짜로 갈아엎는 방식을 취하기로 했다.

위기


일단 나는 state가 잘 동작한다는 가정 하에 게임 로직 부분을 대강 대강 작성하기 시작했고, 오락실원숭이는 ui와 서버 구현을 시작했으며, 종일님이 문제의 core api쪽을 맡았다. 나도 core api를 함께 보긴 했는데 아, 이거 뭔가 좀 어렵네-_-; 너무 기초적인 부분에서 막혀서 종일님과 나 둘 다 당황했다.

개발하기 쉽지 않은 환경이란 문제도 있었다. api를 사용하려면 앱으로 실제 돌려봐야 하고, 실제 돌려보려면 xml과 js가 외부 접근 서버에 올라가야 한다. 다행히 이런 저런 시도를 해 보니 xml만 외부 접근 서버에 있다면 localhost의 js도 무리없이 접근이 가능했다. 만만한 외부 접근 서버가 없는 터라 일단 GAE에 xml만 올리고 js는 localhost의 apache 등에 얹어서 돌리기 시작했다.

이날은 여차저차하여 회사 맥북으로 작업을 했는데, 맨날 쓰던 내 노트북이 아니라 회사 노트북을 쓰려니 여러모로 익숙하질 않아 시간을 좀 날렸다. 어차피 js 개발이니 webstorm위에서만 작업할 줄 알았는데 하다못해 apache 설정 잡고 document root 변경하는 삽질하다 날린 시간도 좀 있었다. 아이고, 아까운 시간아.

결말 - 망했어요!


야속한 시간은 하릴없이 흘러 어느덧 5시가 가까워져 갔다. core가 문제를 일으키니 내가 개발새발 짜 놓은 뒷단 로직은 쓸 데가 없어져서 일단 스샷이라도 찍기 위해 오락실원숭이가 열심히 만든 UI를 올렸다. 다행히 이 작업은 종일님이 후딱 잘 처리해 주셨다.

그렇게 나온 결과물이 이 PT.



5시에 모여서 발표를 시작하는데 와, 다른 분들의 결과물들 매우 멋졌다. gori, cindle, 안총무, social curator, pet talk, xe 알리미, tango, beagle term 등의 프로젝트가 인상깊었다. 우리 팀 발표는 주모자인 내가 나와서 발표했는데, 내가 좀 많이 유들유들 해 지긴 했지만 망한 구현 pt 하느라 등에 식은 땀이 좀 났다. 엉엉.

그리고 안드로이드 개발자로 다른 안드로이드 결과물을 보니 많이 반성이 되었다. 물론 내가 참여하는 프로젝트의 특성 상 고민하는 부분이 좀 다르긴 하지만, 이날 하루만에 뚝딱 만들어진 결과물을 내가 만든다면 어느 수준까지 만들어낼 수 있었을까. 마음속으로 '난 서버에서 안드로이드로 전향한 지 얼마 안되었으니깐...' 하는 나태한 마음이 있었다. 특히나 고급 UI 쪽은 매우 약한데, 얼른 skill up 하지 않으면 밥 굶겠다 생각했다. 공부하자.

훈훈한 결론


  1. 준비해 주시고 수고해 주신 스탭 분들 고맙습니다. 첫 회 행사라 많이 허술할거라고 거듭 말씀하셨지만 전혀 불편함 없이 매끄럽게 행사가 진행되었다. 딱히 개선의 여지를 찾기 어려울 정도?
  2. 당일 이전엔 참여자 간 인터렉션이 메일링으로만 진행되다가 g+ 로 전환이 되었다. 메일링은 좀 딱딱해 지기도 쉽고, 다른 메일과 섞여서 좀 귀찮아진 면도 있는데 g+ 의 #gdhk 로 전환하니 훨씬 좋았다. 다음 행사땐 처음부터 #gdhk 로 진행되면 더 좋을 듯 하다.
  3. 우리는 왜 망했을까. 간단히 요약하면 준비의 부족이라고 정리할 수 있겠지만 좀 더 생각해 봐야지.
    1. 나름 샘플 분석은 한다고 했지만, 복잡한 경우의 처리에 대한 테스트가 부족했다. 하다못해 array, object, map 을 state에 넣고 빼는 것 테스트만 열심히 해 봤었어도 훨씬 나았을 텐데. 안되면 미리 다른 방식으로 설계를 했을 테니깐.
    2. 너무 초기설계를 깊게 했고, 이 때문에 시간을 많이 까먹었다. 코딩에 대한 자만에 불탔었는지 당연히 구현은 슥슥 될 테니 앞 단에 잘 잡고 가자는 욕심이 앞섰던 듯.
    3. 개발 환경이 어떻게 될 지도 미리 알아봤었어야 했다. xml만 외부에 있으면 localhost의 js도 읽어들일 수 있었기 망정이지, 이 마저 안되었다면 어쩔 뻔 했을까. 그럼 미리 hosting 계정이라도 하나 터 뒀었어야 했지 싶다.


결국 결과는 아쉽게 되었지만 관심사가 다른 분들의 결과물을 즐겁게 볼 수 있었고, 오락실원숭이와 종일님과도 함께 작업해 볼 수있었던 좋은 기회였다. 덤으로 티셔츠/ 스피커/ 먹거리까지. 함께 해 준 오락실원숭이와 종일님에게 감사드리며, 나의 준비 부족으로 멋들어진 작품을 만들지 못하고 고생만 시킨 것 같아 두 분에게 아주 조~금 미안하다. 향후에도 계속 유지되고 발전해서 개발자들의 즐겨운 축제의 장으로 성장했으면 하는 바람이다.

덧글

  • Outsider 2011/12/05 13:43 # 삭제

    고생하셨는데 결과물이 안나와서 아쉬우셨겠어요.. ㅎㅎㅎ 저도 여유랑 아이디어가 있었으면 참여했을텐데요 ㅎㅎ
  • 오리대마왕 2011/12/06 11:56 #

    같이 완성해봅시다. (물귀신 작전)
※ 로그인 사용자만 덧글을 남길 수 있습니다.