지그재그 앱에서 나이를 입력받아 태어난 연도로 저장했더니 일부 사용자의 값이 10 이하나 2500 이상으로 찍히던 버그를 추적한 짧은 기록이다. 원인은 시간 조작도 입력 오류도 아닌 iOS 의 캘린더 설정이었다.
핵심 포인트- 나이는 매년 달라지므로 고정값인 태어난 연도로 변환해 저장하는 구조였는데, 일부 값이 비정상적으로 튀었다.
- 처음에는 사용자가 게임 등을 위해 폰 시간을 바꿔서라고 봤지만, 값이 너무 튀는 데다 종류가 다양하지 않아 설명이 안 됐다.
- 이상값이 전부 iOS 라는 공통점을 발견하고, 2500~2600 이라는 범위를 단서로 "ios year 2500" 을 검색해 원인을 찾았다.
- iOS 는 그레고리력 외에 일본력과 불교력도 지원한다. 일본력으로 헤이세이 28년이므로 20살을 입력하면 연도가 9가 되고, 불기로는 2560년이라 2541이 된다.
- 검증: 이상값 사용자의 사용 언어를 다시 보니 일본력은 일본어, 불교력은 태국어 사용자였다.
상세 정리- 배경은 사용자 분석을 위해 최근 업데이트에 나이 입력 화면을 추가한 것이었다.
- 해결은 코드 한 줄을 바꾸는 것이었다. 기본 캘린더를 쓰던 부분을 명시적으로 지정하도록 바꾸자 사용자가 설정한 캘린더와 무관하게 기대한 값이 반환됐다.
- 부수적으로 얻은 것도 남긴다. 한국·한국어에 특화된 서비스라고 여겼는데 드물게 외국어 사용자가 있다는 사실을 데이터로 확인하게 됐다.
- 유사 증상이 있으면 캘린더 설정을 한번 의심해 보라는 조언으로 맺는다.
왜 읽나날짜 계산 결과가 일부 사용자에게만 이상하게 나오는 버그를 만난 iOS 개발자에게, 기기 로케일이 캘린더 체계까지 바꾼다는 사실을 알려준다.