티스토리 뷰
완성된 버전 - https://ya-manna.com
본 글은 구체적인 설명이나 코드가 들어있지는 않습니다.
그냥 자연스럽게 프로토타입을 만드는 과정을 일기처럼 쓴 글입니다 편하게 읽어주세요 ^^
완성된 프로토타입 - https://yamanna-6ebcd.firebaseapp.com/
github - https://github.com/mandooro/YaManNa
'카카오톡에서 링크로 공유해서 실시간으로 서로의 위치를 공유해 중간지점을 찾아주는 앱'
우리가 원하는 바는 명확했다. 친구들과 약속 잡을 때 중간 위치를 정확하게 잡아주는 기능,
일단 종이에 간단히 스토리보드를 그리고 하고 간단히 프로토타입 개발을 하기로 했다.
일단 필요한 스펙을 함께 고민해봤는데,
프론트는 요즘 사람들이 잘 쓰고 있는 React
백엔드는 간단하게 서버 구성이 가능하고, 실시간db를 지원하는 firebase를 백엔드 서버로 쓰기로 했다.
지도 같은 경우엔 카카오톡에서 주로 사용할거니까 그냥 KakaoMap으로 결정!;;
프로토타입이니까 아무 생각 없이 react 프로젝트를 시작하는 가장 편한 방법인 create-react-app으로 시작!
얼마전에 V3가 나온 것 같은데, 일단은 자료가 많을 것 같고 비교적 최신인 V2로 시작했다.
그리고 구글링을 해서 밑도 끝도 없이 초기화면을 다 지워버리고 카카오맵을 장착!
이제 지도를 넣었으니, 내 위치를 찍을 차례다. 구글링을 해보니, html5에서 기본으로 지원해주는 기능이 있다고 한다.
이제 샘플 코드를 복붙해서 내 위치를 찍어보는 차례이다.
구글링을 해서 위치를 받는 코드를 보고,
카카오맵 api문서에서 위도와 경도를 받아 마커를 찍고, 그곳으로 지도를 옮겨주는 방법을 찾았다.
간단히 복붙을 한 뒤, 잘 동작하는지 확인해본다.
성공! 위치를 찍는데 성공했다.
html5에서 위치를 받아오는 기능은 https나 localhost 환경에서만 돌아간다고 한다.
나중에 배포했을 경우 https 환경을 해야하는 것을 메모해둔다
이젠 내 위치를 db에 저장해야한다.
db는 firebase의 realtime database를 쓸 것이다. 이유는 사용량이 적으면 무료이고, 사용하기 쉽고, 실시간 db이기 때문이다.
firebase는 키,값의 형태로 모든 데이터를 저장한다.
그런데 그 사이에 firebase에서 새로운 db를 내놨다. cloud firestore라는 db인데, 잠깐 검색해보니 좀 더 좋은 기능이 많은 것 같다.
하지만 프로토타입을 개발할 때는 최대한 빨리 사용하는게 좋다고 생각이 되기 때문에, firebase realtime database를 쓰기로 했다.
구글링을 해서 firebase 사용법을 간단히 찾은 후에 그대로 따라해서, db에 데이터를 저장한다.
성공! 이젠 내 위치 뿐만 아니라, 상대방의 위치를 저장하기 위해서,
내 key값을 저장해서 url로 만들어 친구들과 공유할 수 있는 기능을 만들어야 한다.
그러면 친구들에게 공유할 url을 만들기 위해 route 기능이 필요하다고 판단해, react의 route library인
react-router-dom을 설치해서, 간단한 튜토리얼을 따라해보기로 한다.
먼저 파라미터를 설정하고, 파라미터가 잘 받아지는지 확인한다.
파라미터가 잘 받아지는 걸 확인한 뒤, 같은 기기가 동시에 접속할 경우에도 db에 저장이 되는 문제를 발견하고,
이를 처리하기로 한다.
찾아보니 기기의 고유 id를 받아오는건 웹에서 불가능하다고 한다.
그래서 사람들은 쿠키를 사용하고 있었고, 이 프로토타입에선 쿠키 설정하는 것도
귀찮아서 브라우저 고유 저장 장소인 localstorage를 사용하기로 했다.
로컬스토리지에 키값을 넣어서, 키값이 있으면 더이상 데이터를 집어넣지 않는다.
데이터가 잘 저장되고, 중복 기기 방지 기능도 잘 동작한다
이제 위치를 뿌려주고, 중간 위치를 찾아주기만 하면 성공!
중간위치의 계산은 프로토타입이니 간단히 위도의 평균과 경도의 평균으로 하기로 한다.
데이터를 다 읽어와서, 각자의 위치와 중간 평균 위치를 뿌려주고,
새로운 사람이 접속했을 시 중간위치 마커를 지운 뒤, 다시 새로운 중간 위치 마커를 찍어주는 작업만 하면 완성!
이 부분은 아까 마커를 찍어볼 때 했던 것들이라, 어렵지 않았다.
https로 배포하는걸 고민했었는데, firebase의 hosting 기능은 기본적으로 https여서 고민할 필요가 없었다
프로토타입 개발 끝!
이제 어떻게 동작하는지 대충 실험을 했으니, 코드를 처음부터 다시 짤 일만 남았다.
안녕!
'React' 카테고리의 다른 글
야만나 - 약속장소 중간위치 주변 추천 서비스 (9) | 2019.08.26 |
---|
- Total
- Today
- Yesterday
- Terminal
- Javascript
- 쿼드트리
- 한글 자동 완성
- 백준
- java #하노이 #알고리즘 #백준
- java #알고리즘 #백준 #퇴사
- webspider
- javascript #연속합 #알고리즘 #백준
- 2630번
- TypeScript
- 알고리즘
- javascript #백준 #회의실배정 #알고리즘
- 백준 #java #알고리즘
- 중간거리 #야만나 #약속장소추천 #중간위치 #웹 #리액트 #React #reactjs #kakao지도 #kakaoapi
- react
- java #퀵소트 #quicksort #알고리즘 #백준
- Game
- javascript #백준 #알고리즘 #LCS
- npm
- webpack
- java #알고리즘 #백준
- java #백준 #알고리즘 #2805 #나무자르기
- java #알고리즘 #백준 #N과M #백트래킹
- java #알고리즘 #백준 #패션왕신해빈
- 1992번
- 색종이자르기
- java #백준 #알고리즘 #로또 #6603
- java #오르막수 #백준 #알고리즘
- 백준 #알고리즘 #전깃줄 #NodeJs #javascript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |