달리기, 걷기 류의 건강관리 앱은 스마트워치(wearOS)용으로 몇개 만들어 봤으므로 이번에는 스마트폰용 웹앱으로 누구나 쉽게 사용할 수 있고 SNS와 연동하여 운동에 의욕을 가질 수 있는 소셜게임 건강관리 앱을 구상하고 개발 중이다

뭐 거창한 운동을 하자! 그런건 아니고 상당수 비만/과체중 환자들이 움직임 자체를 싫어하는대 행동변화를 일으키고자 보다 자주 산책을 하도록 유도하는 프로그램이다. 처음부터 글로벌 서비스로서 상위 몇가지 언어들을 지원하고 기본적으로 텍스트가 별로 없는 도구적인 프로그램을 구상하였다

어제 밤 안드로이드 스튜디오를 열어 산책 신뢰성 체크부분 코딩에 들어가기까지 기획단계에서 10일 가량 상당한 시간이 소요되었다. 왜냐하면 내가 소셜도 잘 모르고 게임도 잘 모르기 때문에 어떻게 SNS를 엮어 운동을 함께 할 수 있을까 어떻게 게임화를 해야 도전과 성취와 즐거움을 제공할 수 있을까 많은 고민이 필요했기 때문이다

맨 처음에는 플러터 flame게임라이브러리를 활용해 땅따먹기 그래픽게임을 만들려고 했고 그 다음에는 구글맵과 SNS을 활용해 뭔가를 해보려 했으나 기술적 한계와 더불어 기획단계에서 도저히 그림이 안 나왔다. 구글맵에 함께 산책한 사람들의 위치를 점으로 다 찍으려고 계산해 보니 DB설계가 답이 안 나오는 등의 문제도 있었다(물론 지도를 확대 축소 했을때 단계별로 DB에서 정보를 불러오도록 한다든지 방법은 있을 것이다)

그렇게 고민하다가 결국 산책을 검증하는 기능과 산책을 릴레이 하여 피라미드처럼 함께 하는 사람들이 늘어나는 것을 지켜볼 수 있는 소셜기능에 집중하는 기획안이 도출되었다. 가장 중요한 것은 운동을 권유하고 할 기회와 의욕을 제공하는 것이다

사용자가 위치조작 프로그램 등으로 치팅하지 않고 실제로 산책을 했느냐 그리고 이동수단을 사용해 더 많은 마일리지를 조작하지 않았으냐 하는 신뢰성 검증이 이뤄져야만 산책을 했을때 주어지는 인센티브가 의미가 있다. 신뢰성이 무너진다면 인센티브의 가치도 무너질 것이며 SNS를 통해 산책을 함께 하고자 하는 사람들도 흥미를 잃어버릴 것이다

geolocator라는 플러터 위치 라이브러리를 사용하기로 했는데 생각보다 산책에 대한 신뢰성 검증 부분을 만드는 것은 어렵지 않았다. 위치정보를 스트림으로 청취하면 중간에 사용자가 위치를 조작할 경우 연속성이 깨지게 되고 에러가 발생하는데 그 에러를 처리하는 코드에서 신뢰성 변수에 거짓을 입력하면 상당부분 치팅을 막을 수 있다

또한 계산가능한 최소거리를 100m로 잡았을때 갱신되는 위치정보가 갑자기 150mg 이상의 차이가 날때도 신뢰성 변수에 거짓을 입력하도록 했고 그 외에도 몇가지 장치를 더해 나름의 치팅 방지 기능을 만들었다. geolocator가 제공하는 isMocked는 안드로이드에서만 기능하는 것 같고 IOS나 WEB에서는 작동하지 않는 것 같다. 여타의 만보계 앱처럼 가속도계 등의 센서값까지 동원해 검증계산식을 만들지는 않았다

자동차, 전동기계, 자전거 등 탈 것을 이용하여 산책 마일리지를 조작하는 것을 방지하기 위하여 인간의 최대빨리걷기가 마라톤 선수기준 시속10km 정도이며 자전거는 시속 15~50km 정도라는 사실을 확인 했으며 간단한 수식으로 신뢰성을 체크할 수 있다. 물론 이용자가 전동기계나 자전거를 매우 느린 속도로 조금씩 전진하여 나 걸은거 맞아! 라고 프로그램을 속이려고 한다면 그건 그냥 그 노력을 인정하기로 했다 (그 짓거리는 걷는 것보다 더 힘들 것 같다)

위치에 대한 신뢰성을 프로그램으로 체크하려는 시도 이외에도 산책에 따른 인센티브는 목적을 위한 보조적 수단으로(없으면 진행을 못하는건 맞지만 많이 있다고 해서 특별할 것이 없는) 만들었다. 인센티브를 활용하여 이루고자 하는 목적은 웹앱에서 확인가능한 나와 함께 산책한 사람의 수 늘이기 도전 그리고 각종 SNS 태그검색을 통해 나와 함께 산책한 사람들의 포스팅 읽기 재미다