Ⅰ. 서론
최근 전 세계에서 ‘코로나19’ 바이러스가 발병하고, 한국도 자연스럽게 언택트(Untact) 문화가 일상속에서 깊이 자리잡게 되었다. 그에따라 교통 수단 선택의 빠른 변화와 함께 개인 이동 수단에 대한 관심과 수요도 꾸준히 증가하고 있다. 그 중에서도 가장 대표적인 공공 자전거는 자동차와 지하철의 대체 교통수단으로서 각광 받고 있으며, 국내에서도 수도권 및 지방마다 다양한 명칭으로 운영 중에 있다[1]. 특히 서울시는 시밀들의 삶의 질과 교통안전을 위해 보행 친화 도시 조성과 공공자전거와 같은 비동력 교통 수단의 확산을 위해 노력하고 있다. 그 동안 일상생활 교통수단보다는 여가목적으로 많이 이용되었던 자전거가 서울시 공공자전거의 확충과 함께 출/퇴근과 같은 통근 통행의 수단으로 활용이 증가하고 있다. 따라서 여가 시간대를 비롯하여 출퇴근 시간대 모두 자전거 통행이 증가하게 되었고, 자전고와 자동차와의 교통사고 증가에도 영향을 미치게 되었다[2,3].
자전거 사고로 한양대학교 의과대학 명지병원에 내원한 총 519명의 환자들 중 코로나19 이전 환자들은 253명이었으나 COVID-19 이후 환자들은 전체 266명으로 13명(5.1%) 증가하였다. 또한, 전체 자전거 사고 환자들의 손상 정도는 타박상이 423명 (81.7%)으로 가장 흔하게 관찰되었으며 골절 73명(14.1%), 뇌출혈 10명(1.9%), 열상 7명(1.4%), 척추신경 손상 4명(0.8%)이었다[4].
이처럼 자전거 사고는 환자는 점차 증가하고 있고, 위험성이 증가하고 있지만, 정부에서 자전거 사고에 대한 대처는 불안정한 현실이다. 자전거 사고에 대한 대처가 불안정한 이유 중 큰 하나는 블랙박스가 없어서 사고 자료를 수집할 수 없다는 점이다. 자동차의 사고는 블랙박스를 통해 가해자와 피해자의 보상 범위를 측정할 수 있지만, 자전거는 현재 개발되어있는 앱 중에 이러한 기능이 적용되어 있지 않다.
따라서 본 논문에서는 이러한 상황을 방지하기 위해 자전거에도 블랙박스가 있는 앱을 제작했다. 자전거를 타다가 건강상의 이유나 실수로 자전거에서 넘어졌을 때 늦은 오후나 새벽 같은 경우에는 구조자가 없어 신고를 못할 수 있다. 사고가 나면 아는 지인에게 문자가 가도록 해서 위급상황 때 빠르게 신고할 수 있다. 또한 라이딩한 경로를 업로드하여 다른 라이더들에게 장소를 추천해주고, 그동안 주행한 거리 시간 등을 저장한 것을 웹에서 볼 수 있고 공유할 수 있을 뿐만 아니라 주변에 편의시설을 이용하고 싶을 때 앱을 이용하여 주변 편의점이나 카페를 찾을 수 있도록 한다. 경로 또한 원하는 곳으로 설정하여 자전거 우선도로로 안내를 받아 라이딩할 수 있게 한다.
Ⅱ. 관련 연구 및 기술
1. 관련 연구
자전거 라이딩과 관련된 앱은 현재 “Strava GPS 및 사이클링 달리기”, “오픈라이더 – 자전거 내비게이션”, “사이클링 – 자전거 측정기” 들이 가장 다운로드 횟수도 많고, 평가도 좋게 되어 있다. 위 앱들은 공통적인 기능으로는 오픈 API 지도를 활용하여 라이딩 기록을 제공하며 나머지로는 각 앱마다 제공하는 특정 기능들이 존재한다. 하지만, 사고 감지나 사고지역 안내, 블랙박스 등 안전에 대한 기능은 없는 것을 볼 수 있다. 표 1은 타 앱과 비교 분석한 내용을 보여준다.
표 1과 같은 비교 분석을 통해 우리는 기본으로 제공되는 맵과 기록뿐만 아니라 추가적으로 편의시설을 검색하는 기능을 넣고, 차별되는 점으로 사고 감지, 블랙 박스 촬영, 사고지역 안내를 넣어 보다 안전하고 편리하게 이용할 수 있게 제작할 예정이다.
표 1. 타 앱 비교 분석
Table 1. Comparative Analysis of Other Apps
2. 관련 기술
가. Android Studio
본 시스템에서 구현되는 앱은 Android Studio를 통해 개발되었다. Android Studio는 구글이 안드로이드 앱 개발을 위해 JetBrains 사의 IntelliJ IDEA를 기반으로 만든 통합 개발 환경으로 2014년 10월부터 이클립스를 대체해 안드로이드의 공식 IDE가 되었다. 무료로 제공되고 있으며 Windows, macOS, 리눅스를 지원한다. 2017년 5월부터 안드로이드의 공식 프로그래밍 언어로 채택된 Kotlin도 사용가능하다[5].
나. PHP
PHP(PHP: Hypertext Preprocessor PHP)는 프로그래밍 언어의 일종으로 원래는 동적 웹 페이지를 만들기 위해 설계되었으며 이를 구현하기 위해 PHP로 작성된 코드를 HTML 소스 문서 안에 넣으면 PHP 처리 기능이 있는 웹 서버에서 해당 코드를 인식하여 작성자가 원하는 웹 페이지를 생성한다. 근래에는 PHP 코드와 HTML을 별도 파일로 분리하여 작성하는 경우가 일반적이며, PHP 또한 웹서버가 아닌 php-fpm(PHP FastCGI Process Manager)을 통해 실행하는 경우가 늘어나고 있다[6].
다. Tomcat
아파치 톰캣(Apache Tomcat)은 아파치 소프트웨어 재단에서 개발한 서블릿 컨테이너(또는 웹 컨테이너)만 있는 웹 애플리케이션 서버이다. 톰캣은 웹 서버와 연동하여 실행할 수 있는 자바 환경을 제공하여 자바 서버 페이지(JSP)와 자바 서블릿이 실행할 수 있는 환경을 제공하고 있다. 또한 관리 도구를 통해 설정을 변경할 수 있지만, XML 파일을 편집하여 설정할 수도 있으며 HTTP 서버도 자체 내장하기도 한다[7].
라. Database
MySQL은 관계형 데이터베이스 관리 시스템(RDBMS)으로, 데이터베이스를 관리하거나 자료를 관리하기 위한 GUI 관리 도구가 내장되어 있지 않다. 따라서 이용자들은 명령 인터페이스 도구들을 사용하여 데이터베이스를 만들고, 관리하며, 데이터를 백업한다. 또한, 데이터 백업 시 관련 레코드 상태를 검사하고, 데이터베이스 구조를 생성하거는데, 또는 데이터 레코더를 작성하는데 있어서 MySQL 프론트엔드 데스크톱 소프트웨어나 웹 애플리케이션을 사용해야 한다. 공식적인 MySQL 프론트엔드 툴인 MySQL 워크벤치는 오라클에 의해 개발되었으며, 자유롭게 사용할 수 있다[8].
마. Spring Framework
스프링 프레임워크는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 간단히 스프링이라고도 불린다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 주요 특징으로 의존성 주입, 관점 지향 프로그래밍을 지원하는 POJO(Plain Old Java Object) 방식의 프레임워크이다. 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다[9,10].
Ⅲ. 시스템 기능 소개
본 연구에서 개발된 SmartRider의 첫 앱 화면은 그림 1과 같다.
그림 1. 앱의 첫 화면 메뉴
Fig. 1. App's first-screen menu
그림 1의 ①번 메뉴는 SmartRider의 첫 화면을 보여 주고, 오른쪽 상단의 톱니바퀴 모양을 누르면 앱의 기본 설정을 선택할 수 있다. 그림 1의 ②번 메뉴는 다양한 기본 설정을 보여주며, 앱의 배터리 효율을 위한 GPS 수신 감도를 기본, 낮음, 중간, 높음으로 설정하고, 가장 아래 몸무게를 입력하면, 라이딩 경로에 따라 칼로리 계산하여 라이딩 후 얼마나 칼로리를 소비했는지 확인할 수 있는 기능이다.
그림 2는 라이딩을 하면서 출발지와 목적지를 설정하여 라이딩 경로를 설정있는 모습을 보여준다. ①의 메뉴에서 최상단 GPS 아이콘을 선택하면, ②의 메뉴에서 출발지, 목적지를 적용할 수 있다. ③의 메뉴에서는 목적지를 적용하여 ④의 메뉴를 통해 출발지에서 목적지까지의 경로를 확인할 수 있다. 지도의 경우 Open API로 제공되는 KAKAO API를 사용했기 때문에 카카오맵을 기준으로 경로가 표출된다. 또한, 거리가 1km 미만일 경우 m(미터)로 거리가 출력되고, 카카오맵과 동일하게 자전거의 주행 경로를 선택할 수 있을 뿐만 아니라, 도보를 선택하여 주행경로를 선택할 수도 있다.
그림 2. 라이딩 주행경로 설정 메뉴
Fig. 2. Riding path setting menu
그림 3은 라이딩 정보를 공유할 수 있는 게시판 메뉴의 모습을 보여준다. ①의 메뉴에서 주행경로 좌측 아이콘을 선택하면, ②의 메뉴인 게시판이 출력된다. 게시판은 서로의 정보를 공유할 수 있으며, 글쓰기를 선택하면 ③의 메뉴처럼 글을 작성하고, 아래 첨부파일 형태로 관련된 사진(.jpg, .png, .gif) 파일을 업로드할 수 있다.
그림 3. 라이딩 정보 공유 게시판 메뉴
Fig. 3. Riding Information Sharing Bulletin Menu
그림 4는 라이딩 도중 사고가 발생했을 때 자동으로 설정해둔 연락처로 사고가 발생한 상황을 문자로 자동 발송해주는 메뉴이다. ①의 메뉴에서 게시판 아래 사고 감지 아이콘을 선택하면, ②의 메뉴처럼 긴급 연락처로 문자를 수신할 전화번호를 입력할 수 있다. 그리고 하단에 안전 서비스 시작, 중지를 통해서 이 기능을 활성화/비활성화 할 수 있다. 사고가 발생하면, ③의 메뉴처럼 사고가 발생했다는 화면이 출력되고, 사고가 아닌 상황이라면, 중앙에 검은색 출력 스크린을 터지하여 해지할 수 있다. 또한, 실제 사고가 발생하면, ④의 메뉴처럼 ②에서 설정해준 전화번호로 현재 위치와 사고가 발생했다면 문자를 전송할 수 있다.
그림 4. 사고 감지 및 자동 문자 발송 메뉴
Fig. 4. Incident detection and automatic text sending menu
그림 5는 주변 편의시설을 검색할 수 있는 모습을 보여준다. ①의 메뉴에서 지도 모양 아이콘을 선택하면, ②의 메뉴인 현재 위치를 기준으로 지도 맵을 출력한다. ②의 메뉴에서 오른쪽 하단의 검색 아이콘을 선택하면, 주변 1km 반경 내에 편의시설을 출력하여 ③의 메뉴처럼 출력이 된다. ②의 메뉴에서 오른쪽 하단의 장소 아이콘을 선택하면, 주변 편의시설을 직접 검색할 수 있고, GPS 아이콘을 선택하면, 현재 위치를 확인할 수 있다. 또한, ④의 메뉴인 주요 편의시설이 검색된 상태에서 좌측 최하단 돋보기 아이콘을 선택하면, ⑤의 메뉴처럼 주변에 검색된 편의시설에 대한 개수, 총합 평점 등을 확인할 수 있는 상세보기가 출력된다.
그림 5. 주변 편의시설 검색 메뉴
Fig. 5. Search menu for nearby amenities
그림 6은 라이딩 후 자동 기록되는 블랙바스와 라이딩시 발생하는 정보 측정 메뉴를 보여준다. ①의 메뉴에서 하단 자전거 아이콘을 선택하면, ②의 메뉴와 같이 카메라가 같이 활성화되어 현재 영상의 모습과 주행 시 시간, 거리, 최고속도, 평균속도, 위치오차, 칼로리가 측정되어 표출된다. ③의 메뉴는 측정을 시작하여 현재 라이딩 시작지점이 구글 Open API 맵을 통해 표시되고, 시작 버튼은 일시정지 버튼으로 변환된다. 그리고 주행이 완료되면, ④의 메뉴처럼 일시정지 버튼이 다시 시작 버튼으로 변환되고, 오른쪽에 클라우드 아이콘이 생긴다. ⑤의 메뉴는 클라우드 아이콘을 클릭하면 주행하면서 스마트폰의 카메라를 통해 주행 시 영상이 저장된 블랙박스 앨범이 표출되는 모습을 보여준다.
그림 6. 주행 블랙박스 기록 및 정보 측정 메뉴
Fig. 6. Riding black box record and information measurement menu
그림 7은 라이딩시 발생하는 주행 기록을 확인하는 모습을 보여준다. ①의 메뉴에서 사람 상반신 아이콘을 선택하면, ②의 메뉴처럼 사용자마다 데이터베이스에 저장된 주행기록을 불러온다. 주행기록에는 출발 시간, 도착시간, 출발장소, 도착장소, 평균속도, 최고속도, 칼로리가 표출된다. ②의 메뉴에서 주행기록을 클릭하면, ③의 메뉴처럼 라이딩 도착지점을 구글 Open API 맵을 통해 위치를 표출할 수 있다.
그림 7. 라이딩 주행기록 확인 메뉴
Fig. 7. Riding driving record check menu
Ⅳ. 결론
본 논문에서는 코로나19에 영향으로 자전거 이용자들이 증가하면서, 사고의 위험성도 증가한 상황을 개선하고자 안전하고, 편의성이 추가된 앱 기반 라이딩 시스템인 SmartRider를 개발했다. 다른 타 앱과 동일하게 라이딩 시 실시간으로 속도, 칼로리, 주행경로 등을 확인할 수 있으며, 추가로 긴급 연락 기능, 블랙박스 기능, 주변 편의시설 검색 기능이 구현되어 있다.
블랙박스 기능을 통해 주행 시 자동으로 영상이 저장된다면, 사고 발생 시 가해자와 피해자의 보상 범위 측정에 도움이 된다. 또한, 사고 발생 시 사전에 입력한 전화번호로 긴급 문자가 발송되어 신속히 구조 요청과 스스로 대처가 가능하다. 마지막으로 주변 편의시설 검색을 통해 라이딩 시 필요한 편의시설을 따로 검색할 필요없이 SmartRider 앱 내에서 편의시설 위치와 통계를 통해 편리하게 확인할 수 있다.
References
- Jee-Hae Baek, "Analysis of the effect of public bicycle use characteristics on satisfaction", Dept. of Urban and Real Estate Development, Hanyang University, Master Thesis, Feb
- Sun-Geun Hwang, Su-Gie Lee, "Analysis of Physical Environment Factors of Bicycle Accidents in Seoul, Korea", Journal of Korea Planning Association Vol, 56, No. 5, pp. 83-96, Aug 2021. DOI: https://doi.org/10.17208/jkpa.2021.10.56.5.83
- Jang-Won Kim, "Bicycle Accident Position Tracing and Alarm System", The Journal of the Institute of Internet, Broadcasting and Communication (IIBC), Vol. 14, No. 6, pp. 93-98, Dec 2014. DOI: http://dx.doi.org/10.7236/JIIBC.2014.14.6.93
- Bong-Seong Ko, Soong-Hwan Cho, Dong-Young Noh, Jin-Goo Kim, "Epidemiological Characteristics of Bicycle-related injuries with the Emergence of the COVID-19", The Korean Journal of Sports Medicine, Vol. 39, No. 3, pp. 110-116, Sep 2021. DOI: https://doi.org/10.5763/kjsm.2021.39.3.110
- DiMarzio J, "Beginning Android Programming with Android Studio", John Wiley & Sons, Dec 2016.
- Laaziri M, Benmoussa K, Khoulji S, Larbi K M, El Yamami A, "A comparative study of laravel and symfony PHP frameworks", International Journal of Electrical and Computer Engineering, Vol. 9, No. 1, pp. 704-712, Feb 2019. DOI: https://doi.org/10.11591/ijece.v9i1.pp704-712
- Dong-Jin Shin, Moon-Jin Yong, Jeong-Joon Kim, "Development of Application-Based Point Management System", The Journal of the Institute of Internet, Broadcasting and Communication (IIBC), Vol. 18, No. 5, pp. 179-185, Oct 2018. DOI: https://doi.org/10.7236/JIIBC.2018.18.5.179
- Valentine T, "Installing and Using the MySQL Database Server", In Database-Driven Web Development Conference, Apress, Berkeley, CA, pp. 139-153, May 2021. DOI: https://doi.org/10.1007/978-1-4842-5970-2_8
- Mane D, Ojha N, Chitnis K, "The spring framework: An open source java platform for developing robust java applications", International Journal of Innovative Technology and Exploring Engineering, Vol. 3, No. 2, pp. 137-143, July 2013.
- Spring Framework Documentation. https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/overview.html