Ⅰ. 서론
지인들과의 미팅 장소를 정할 때 특정 인원에게 가까운 장소로 정한다면 불만이 생길 수 있다. 사람들은 이런 상황을 피하기 위해 최대한 중간지점에서 만나려고 하는 경향이 있으나 출발지가 매번 달라지기 때문에 항상 중간지점을 정해야 하는 번거로움이 존재한다.
본 논문은 다인원의 미팅에서 구성원 모두에게 최대한 공평한 장소를 추천해 주는 시스템을 개발하고 한다. 본 시스템은 지하철 이동 시간을 기반으로 미팅 장소를 추천하며 이를 위해 각 구성원의 출발지와 추천 미팅 장소를 지하철역을 기반으로 하고, 추천 미팅 장소 주변에 있는 먹거리와 놀거리를 지도에 표시하여, 최종 미팅 장소 결정을 용이하도록 한다. 또한 구성원들과의 최종 미팅 장소 결과를 원활하게 할 수 있도록 채팅 기능을 제공하여 구성원간의 의견 교환을 용이하도록 한다.
배달앱의 등장으로 자영업자들은 종이로 된 쿠폰북을 만들어 배포할 이유가 사라졌고 그 결과 가게 홍보를 배달앱에만 의존하는 경향을 보인다. 본 논문에서는 미팅 장소 추천 시스템과 연동하여, 추천된 최종장소 주변에 자신의 매장이 표시되도록하여 자신의 매장을 홍보할 수 있도록 한다. 본 시스템을 통해 자영업자들은 자신의 매장정보를 등록하고 할인쿠폰 등을 등록하여 매장을 홍보할 수 있으며, 미팅 장소 추천 시스템의 사용자는 좀 더 다양한 장소에 관한 정보를 얻을 수 있다.
본 논문의 구성은 다음과 같다. 2장에서 기존 유사 앱과의 비교와 관련 기술에 관해 기술하고, 3장에서 논문에서 개발할 시스템의 구성과 미팅 장소 추천 알고리즘에 관해 논한다. 4장에서는 개발할 시스템의 구현에 관련된 사항에 관해 기술하고, 마지막으로 5장에서 결론을 맺는다.
Ⅱ. 관련 연구
본 장에서는 미팅 장소를 추천해 주는 기존 유사 앱에 관해서 논하고, 본 논문에서 활용할 서버 관련 기술인 파이어베이스(Firebase)[1,2]와 앱 관련 통합 개발 환경인 안드로이드 스튜디오에 관해 기술한다.
1. 기존 유사 앱과의 비교
미팅 장소를 추천해 주는 기능을 제공하는 앱은 표 1에서 보는 바와 같이 ‘야만나’[3], ‘여기서 만나요2’[4], ‘위밋플레이스’[5] 등이 있다. ‘야만나’는 최종 목적지까지의 경로를 표시해 주지 않고, ‘여기서 만나요2’는 실제 모임을 가질 수 없는 장소를 추천하는 경우가 있으며, 이 두 앱은 최종장소 주변 매장들의 정보를 알려 주지 않아 따로 찾아봐야하는 불편함이 있다. ‘위밋플레이스’는 본 논문의 시스템과 가장 유사한 기능을 제공하고 있으나 자영업자들이 매장을 등록하여 홍보할 수 있는 기능을 제공하고 있지 않았다.
표 1. 기존 앱과의 비교 분석
Table 1. Comparative Analysis of Existing Apps
기존에 존재하는 미팅 장소 추천 앱들과의 차별점은 미팅 장소 추천에만 한정하지 않고 자영업자들의 매장 정보 등록 기능과 미팅 구성원간의 채팅 기능을 제공한다는 점이다.
2. 파이어베이스(Firebase)
파이어베이스(Firebase)[1,2]는 2011년 Firebase (Firebase, Inc)사가 개발하고 2014년 구글에 인수된 모바일 및 웹 애플리케이션 개발 플랫폼이다.
파이어베이스는 모바일 서버 개발에 필요한 인증, 데이터베이스, 스토리지, 푸시 알람, 원격 구성, 애드워즈(광고), 클라우드 기능을 제공한다. 과거에는 개발에 필요한 각 기능들을 모두 다른 환경에서 구현하여야 했기에 반복적인 작업에 따른 개발의 효율이 매우 떨어졌으나 파이어베이스는 모든 플랫폼을 프로젝트 구축 시 자동적으로 만들어주기 때문에 개발자의 부담을 줄여 준다. 본 논문에서는 서버 플랫폼으로 파이어베이스를 채택하여 보다 효율적인 앱/웹 개발을 진행하였다.
3. 안드로이드 스튜디오(Android Studio)
본 논문에서 구현할 앱은 안드로이드 스튜디오를 통해 개발되었다. 안드로이드 스튜디오는 구글이 안드로이드 앱 개발을 위해 JetBrains 사의 IntelliJ IDEA를 기반으로 만든 통합 개발 환경으로 2014년 10월부터 이클립스를 대체해 안드로이드의 공식 IDE가 되었다. 무료로 제공되고 있으며 Windows, macOS, 리눅스를 지원하고, 2017년 5월부터 안드로이드의 공식 프로그래밍 언어로 채택된 Kotlin을 지원한다[8,9].
Ⅲ. 시스템 설계
본 장은 본 논문에서 구현할 미팅 장소 추천 시스템의 구성과 미팅 장소 추천 알고리즘에 관해서 기술한다.
1. 미팅 장소 추천 시스템 구성
본 논문에서 구현한 시스템은 그림1과 같이 미팅 장소 추천이 필요한 회원이 사용할 앱, 매장 업체가 매장 정보를 등록하기 위해서 사용할 웹, 그리고 앱과 웹에서 생성한 데이터를 관리를 서버로 구성된다.
그림 1. 시스템 구성도
Fig. 1. System Architecture
앱은 미팅 장소 추천이 필요한 사용자가 회원으로 등록하여 자신의 위치와 회원정보를 제공하고 이를 기반으로 미팅 장소를 추천하며, 회원들간에는 채팅 기능을 제공하여 최종 미팅장소를 결정할 수 있는 환경을 제공한다.
웹에서는 매장 업체가 구글맵[6] 기반의 위치정보 관리 모듈을 사용하여 매장의 위치와 메뉴, 쿠폰 등의 매장 정보를 등록 및 관리하도록 한다. 앱과 웹에서 등록한 정보는 파이어베이스 기반의 서버에 저장된다.
2. 미팅 장소 추천 알고리즘
본 시스템은 지하철 이동 시간을 기반으로 미팅 장소를 추천함으로 회원이 입력한 출발 지하철역들을 기반으로 최적의 미팅 장소 지하철역을 탐색해야 한다. 지하철역은 모든 출발 지하철역으로부터의 이동시간의 합계와 표준편차가 가장 작고 지하철역이다.
지하철역을 탐색하기 위한 알고리즘은 두 단계를 이루어진다.
단계1: 모든 출발 지하철역으로부터 직선거리만을 고려하여 최적의 미팅 지점을 탐색한다.
단계2: 최적의 미팅 지점 주변의 후보 지하철역에 대해서 지하철 노선도상의 최단 경로로 지하철 이동 시간을 고려한 지하철역을 결정한다.
가. 최적의 미팅 지점 탐색
최적의 미팅 지점은 출발역의 수가 2개인 경우에는 두 역의 직선거리 기준 중간지점이 되고, 출발역의 수가 3개인 경우에는 그림 2에서 보는 바와 같이 가장 멀리 떨어진 두 역(A, B)의 중간지점(M)을 구하고, 나머지 역(C)이 중간지점(M)까지의 거리(|CM|)가 역(A)와 중간지점(M)까지의 거리(|AM|)보다 작거나 같은 경우와 큰 경우로 나누어 계산되어 진다.
그림 2. 출발역이 3개인 경우의 미팅지점
Fig. 2. Meeting Point on 3 Departure Stations
|CM| ≤ |AM|인 경우는 모든 출발역으로부터 같은 거리에 있는 것에 비해서 전체 이동 거리가 짧기 때문에 중간지점(M)을 최적의 미팅 지점으로 선정하고, |CM| > |AM|인 경우는 모든 출발역으로부터 같은 거리에 있는 지점(M’)으로 선정하는 것이 전체 이동 거리가 짧기 때문에 새로운 지점(M’)을 최적의 미팅 지점으로 선정한다.
출발역의 개수가 4개 이상인 경우도 3개인 경우와 같이 최장 거리에 있는 두 역(A, B)을 기준으로 다른 모든 역들이 그림 2(a)와 같으며 두 역(A, B)의 중간점(M)을 최적의 미팅 지점으로 선정한다. 그림 2(b)와 같은 경우에는 중간점(M)으로부터 가장 멀리 떨어져 있는 출발역을 포함한 중간점을 선정하여 위의 프로세스를 반복한다.
나. 미팅 장소 지하철역 탐색
결정된 미팅 지점 반경 3km내에 있는 지하철을 후보 지하철역(G’)으로 선정한다. 모든 출발역으로부터 각 후보 지하철역까지의 이동 시간을 다익스트라 알고리즘(Dijkstra’s Algorithm)[7]을 사용하여 구한다. 각 후보 지하철역에 대해서 총 이동 시간과 표준편차가 가장 작은 후보 지하철역을 미팅 장소 지하철역으로 결정한다.
결정된 미팅 장소 지하철역 주변의 매장 정보와 각 출발역으로부터의 경로정보를 회원들에게 제공한다.
Ⅳ. 시스템 구현
본 논문에서 구현한 시스템은 미팅 장소 추천이 필요한 회원이 사용할 앱, 매장 업체가 매장 정보를 등록하기 위해서 사용할 웹, 그리고 앱과 웹에서 생성한 데이터를 관리를 서버로 구성된다.
앱은 안드로이드로[8] 구현하였으며, 앱에서는 그림 3과 같이 출발역과 미팅 목적을 입력하고 이를 기반으로 최종목적지와 지하철 경로를 제공한다.
그림 3. 출발역 입력과 탐색 결과
Fig. 3. Departure Station Input and Search Results
탐색 결과에서 주변 매장 보기를 선택하면 그림 4와 같이 최종 목적지의 위치와 목적지 주변에 있는 매장을 지도에 표시해 준다. 그림에서 최종 목적지 마커의 색상은 보라색이고 상단에 주변 매장 검색 버튼을 누르면 최종 목적지 반경 1km 내에 존재하는 매장들의 정보를 마커로 표시하게 된다. 매장들의 정보는 GooglePlace API[6]에 존재하는 매장들과 본 시스템의 웹을 통해 자영업자가 등록한 매장들의 정보이다.
그림 4. 목적지 주변의 매장 정보
Fig. 4. Store Information around the Destination
그림 4에서 빨간색 마커는 GooglePlace API에서 제공하는 매장이고 파란색 마커는 본 시스템을 통해 등록된 매장이다. 빨간색 마커를 누르면 매장의 이름, 매장의 별점 그리고 구글 리뷰 개수를 확인할 수 있다. 파란색 마커를 누르면 그림 5와 같이 마커 위에 작은 팝업창이 뜨게 되며 매장의 이름과 주소를 확인할 수 있다. 팝업창을 누르면 그림 5와 같이 매장의 메뉴와 가격, 매장에서 쓸 수 있는 쿠폰 등을 확인할 수 있다.
그림 5. 시스템 등록 매장 정보
Fig. 5. System Registration Store Information
앱에서는 그림 6과 같이 회원 목록과 채팅 기능을 제공하여 미팅 장소 결정에 구성원의 의견 수렴을 용이하도록 하였다.
그림 6. 친구 목록과 채팅 화면
Fig. 6. Friends List and Chat Screen
본 시스템은 매장 정보 등록을 위한 웹 서비스와 매장 정보와 회원 정보 관리를 위해서 서버를 파이어베이스를 사용하여 구현하였다.
매장 정보 등록을 위해서 웹에서는 그림 7과 같이 구글맵 API를 활용하여 매장 위치를 등록하고, 매장의 메뉴 이미지, 이름, 가격 등의 상세 정보를 등록할 수 있도록 하였다.
그림 7. 매장 정보 등록 화면
Fig. 7. Store Information Registration Screen
Ⅴ. 결론
모든 참여자의 이동 시간과 적당한 매장 등을 고려한 모임 장소를 정하는 것은 항상 번거로운 일이다. 본 논문에서는 모든 참여자의 이동 시간이 공평하면서 최소화하는 장소와 매장을 추천하는 시스템을 개발하였다.
본 논문에서는 지하철 기반의 모임 장소를 추천하기 위해서 2단계의 장소 추천 알고리즘을 제안하였고, 이를 기반으로 장소 추천 앱을 구현하였다. 그리고, 자영업자들이 자신의 매장 정보를 등록하는 웹 기반의 서비스를 제공하여 모임 참여자들이 모임 장소에 관한 좀 더 많은 정보를 제공할 수 있도록 하였다. 뿐 만 아니라, 채팅 기능을 제공하여 모임 참여자들의 의견 수렴을 용이하도록 하였다.
본 시스템은 배달앱을 통한 홍보에만 의존하는 자영업자들에게 새로운 홍보 채널을 제공함으로써 소상업의 발전에도 기여할 것이라고 기대된다.
참고문헌
- Kyoung-Sub Kim, Young-Cheol Park, Chan-jin Eom, Yun-Bok Lee, Sang-Ho Lee, "Implementation of a Location-Based SNS System Using AR," The Journal of The Institute of Internet, Broadcasting and Communication, Vol. 19, No. 6, pp. 133-138, 2019. DOI: https://doi.org/10.7236/jiibc.2019.19.6.133
- Firebase URL: https://firebase.google.com/docs?hl=kor.
- Yamanna URL: https://ya-manna.com/.
- See You Here2 URL: https://minnote.net/icaros7%20works/Meet-Here-v2/.
- We Meet Place URL: https://wemeetplace.com/
- Google Map URL: https://developers.google.com/maps/documentation/javascript?hl=ko.
- In-Guk Cheon, Yong-Hae Gong, Sang-Ho Ha, Data Structure Easily Translated Into C Language, Saeng neung Press, 2019.
- Dong-Jin Shin, Seung-Yeon Hwang, Jae-Kon Oh, Jeong-Joon Kim, "Development of an App-Based Bicycle Riding System," The Journal of The Institute of Internet, Broadcasting and Communication, Vol. 23, No. 3, pp. 113-118, 2023. DOI: https://doi.org/10.7236/jiibc.2023.23.3.113
- DiMarzio J, "Beginning Android Programming with Android Studio", John Wiley & Sons, Dec 2016.
- Gongkyu Byeon, Kwon-Taeg Choi, and Sunjin Yu, "Painting Contents Production Technique using Mobile AR Remote Technology," The Journal of KIIT, Vol. 19, No. 10, pp. 57-65, 2021. DOI: https://doi.org/10.14801/jkiit.2021.19.10.57