[프로젝트 #1] 예약플랫폼, 오픈북

Kevin Hong
3 min readMar 1, 2017

--

현재 활동하고 있는 동아리(넥스터즈)의 연계로 2박3일(170203~170205) 동안 D캠프에서 열렸던 유니톤(해커톤)에 서버개발자로 참여하게 되었다.

학생 시절, 열심히 다녔던 해커톤의 느낌과는 사뭇 달랐지만, 내가 성장했음을 느꼈다(그리고 이제는 체력적인 한계가 있음을 실감했다)

최종적으로 구현한 프로그램은 안드로이드 어플로서 주변에 있는 카페, 레스토랑 등을 미리 예약하고 사용할 수 있는 서비스, “오픈북”. 자영업자들이 큰 돈을 들이지 않고, 본인이 운영하고 있는 매장의 예약서비스를 “오픈북”을 통해 간편하게 제공하고, 예약관련사항들을 관리할 수 있는 서비스.

2박 3일을 요약하면, 아래와 같다.

  1. 새로운 기술을 경험: 네이버 오픈 API(로그인, 지도), 크롤링(Cheerio)
  2. 새로운 사람들과의 협업(개발을 갓시작한 동료 & 해커톤이 처음인 동료)
  3. 아쉬웠던점: 체력, 익숙하지 않은 기술에 대한 사전준비

2박 3일 동안의 작업을 요약하면, 아래와 같다.

  1. 네이버 오픈 API 사용을 위해서 가장 먼저 계정을 발급받았다.
  2. 로그인은 클라이언트(안드로이드)가 직접 네이버 서버와 통신해서 token 값을 기반으로 사용자 정보를 전달: 연령대, 성별, 전화번호 등
  3. 지도 API 의 경우에는 1) 위도와 2) 경도가 Key 값: “도로명 주소”로 요청을 보내서 해당 주소의 위경도 값을 응답받을 수 있고, 반대로 위경도로 주소값을 받아 올 수 있다. (질문: 두 지점 사이의 거리는 피타고라스의 정리 a² = b² + c² 를 통해 두 지점 사이의 거리를 측정할 수 있는가?)
  4. 크롤링은 npm 모듈인 requestcheerio 를 사용했다. 레스토랑 및 카페를 주된 컨텐츠로 하는 망고플레이트다이닝코드의 웹사이트를 크롤링의 주된 타겟으로 설정. Get Method 가 메인이기 때문에, URL 스킴 구조(querystring 및 pagination) 및 HTML 태그들의 구조 파악이 중요.
  5. 참고: 안수찬님의 블로그: scraping(request) 과 parsing(cheerio): https://dobest.io/nodejs-web-crawling-with-cheerio/

2박 3일 동안의 단상

  1. 모두가 무엇인가 얻어갈 수 있으면 베스트. 개발을 갓시작한 사람이 뚝딱뚝딱 무언가 만드는 것은 대단히 어려운 일. 하지만, 옆에서 동료의 작업을 보고 따라서 치거나, 한 가지 기능만 집중해서 이틀만에 만든다면, 그것도 충분히 굳
  2. 좋은 서비스, 검증된 BM을 갖춘 아이디어도 중요하지만 무엇보다 “구현”이 중요. 따라서 BM, 매출/비용/이익분석 등 기획적인 부분보다는 정말로 그 서비스가 필요한지, 구현할 수 있는지가 매우 중요.
  3. 이제는 체력적으로 힘듬을 느꼈음(밤을 새는 것이 쉽지 않음)
  4. 마지막으로 “미리” 신기술을 공부하고 기본적인 틀을 준비해 놓은 상태에서 해커톤에 참여할 필요가 있음. 튜토리얼 정도는 미리 진행해보고(postgresql, AWS rekognition, MS Azure 등) 그것을 활용해서 직접 만들 수 있도록 해보자. 학습비용은 평소에, 활용은 해커톤(혹은 업무)에서!

2박 3일 동안의 작업물

  1. Android 소스코드: https://github.com/KimHunJin/OpenBook

2. Node.js 소스코드: https://github.com/gomyk/Unithon_Server

3. 시연 영상 : https://youtu.be/--f0_7Zn4tk

4. 사진(네이버 D2 특별상 수상):

--

--

Kevin Hong

Critical thinker, Problem solver, and Creative creator