다리는 걸을 뿐.. 만보기 서비스 개발기

Dophi·2023년 1월 15일
2

컨퍼런스

목록 보기
5/14

소개글

각종 컨퍼런스에 나온 강연들을 정리해보면서 공부해보고 있습니다.
이번 포스팅은 if(kakao) 2022에서 이현재님께서 강연해주신 내용을 정리했습니다.
제목은 "다리는 걸을 뿐.. 만보기 서비스 개발기"이며 제목 그대로 만보기 서비스 개발 경험에 대한 내용입니다.
말투는 편한 말투로 작성하니 양해 부탁드립니다.

영상 다시보기
문서 자료

발표내용

만보기 서비스 소개

  • 카카오페이에서 제공하는 서비스
  • 메인화면에서는 걸음 수를 알 수 있고 배경 설정 가능
  • 그래프를 통해 일주일 걸음 수를 확인 가능
  • 친구와 걷기 대결 가능

실제 개발 이야기

걸음 수를 FE와 Server에 보내기

걸음 수 측정하기 -> HealthKit? CoreMotion?

HealthKit

  • 사용자의 건강 및 피트니스 데이터에 접근하고 공유 가능한 프레임워크
  • 1년 전 데이터도 접근 가능할만큼 데이터를 오래 보관
  • 실시간 동작을 위해서는 지속적으로 쿼리문을 보내는 등의 방법을 사용해야만 함

CoreMotion

  • 가속도계, 자이로스코프 등 iOS 장치의 하드웨어에서 일어나는 모션 및 환경 관련 데이터를 관리하는 프레임워크
  • 7일간의 데이터만 보관
  • 걸음수를 Serial DispatchQueue에서 계속 업데이트하면서 실시간으로 가져오기 가능

CoreMotion을 채택하기로 결정

  • startUpdate: 시작 날짜를 전달해주면 현재 시간까지의 걸음 수를 정기적으로 업데이트해줌
  • stopUpdate: 업데이트를 멈춤
  • queryPedometerData: 시작 날짜와 종료 날짜를 전달해서 그 사이의 걸음 수를 받아올 수 있음

프레임워크를 선택할 때는 어떤게 더 좋다기보다는, 앱에서 어떤 서비스를 제공할 것이냐에 따라서 달라질 수 있습니다.

만보기에서는 걸음 수 외의 데이터는 쓰지 않는 다는 점, 7일 정도의 데이터도 충분하다는 점, 실시간 처리가 쉬운 점으로 인해 CoreMotion을 선택했다고 합니다.

백그라운드 처리

  • 백그라운드 환경에서도 걸음 수를 서버에 보낼 수 있어야함
  • 적절한 전략 찾기
    • 포그라운드 작업을 백그라운드 계속해야 하는지
    • 크고 오래 걸리는 작업인지
    • 앱의 Content를 업데이트하는 작업인지
    • 백그라운드에서 앱을 깨우는 작업인지
    • 백그라운드에서 작업을 수행하고 사용자에게 알리는 작업인지
  • BackgroundTasks 프레임워크 사용
    • 간단한 서버 호출에서부터 머신러닝과 같은 큰 작업까지 가능
    • BGAppRefreshTask를 사용하여 구현
    • 앱이 시작할 때 원하는 작업을 스케줄러에 등록하여 백그라운드에서 실행될 수 있도록 도와줌
  • 백그라운드 작업이 원하는대로 동작하지 않을 수 있음
    • 백그라운드 작업은 배터리, 저전력 모드, 시스템 리소스 등 다양한 것들을 고려해서 실행 여부를 결정함
    • 이러한 특성때문에 테스트하기가 까다로움
  • BackgroundTasks 프레임워크는 테스트할 수 있는 명령어를 제공

iOS는 백그라운드 처리가 상당히 까다로운 것으로 알고 있습니다.
발표에서도 "앱의 Content를 업데이트하는 작업"이라고 정의를 하고 이에 맞는 전략으로 BackgroundTasks를 찾은 것처럼, 구현하는 기능에 맞는 전략을 찾아보고 공부해야할 것 같습니다.

배운 점 및 회고

배운 점

  • 질문: 모르는 부분이 생긴 경우는 질문하기
  • 기획: 스펙을 항상 먼저 확인하고 구현하기
  • 설계: 목적에 맞는 규모와 방법을 정하기
  • 리뷰: PR에 팀원들이 작성해주신 리뷰 코멘트들 잘 살펴보기
  • 재미: 서비스를 만드는 것에 재미를 갖기

남은 것

  • 만든 만보기 모듈 리팩토링
  • 온보딩 화면의 복잡한 플로우 개선
  • iOS 16의 새로운 기능 추가
profile
개발을 하며 경험한 것들을 이것저것 작성해보고 있습니다!

0개의 댓글