9월 15일 낚시일기에서 손본 것은 물때 표시의 데이터 경로입니다. 시간을 한 시간 앞당기는 식의 보정으로 해결할 문제가 아니었습니다. 어느 관측소에 요청했는지, 받은 응답을 제대로 읽었는지부터 확인해야 했습니다. 이 글은 해당 날짜의 커밋과 코드를 확인해 작성한 개발 기록입니다. 새 버전이 모든 사용자 기기에 배포됐다는 뜻은 아닙니다.
오류가 가려질 수 있었던 두 지점
첫째는 앱에 저장된 관측소 이름과 코드의 대응이었습니다. 지역 이름이 맞아 보이더라도 코드가 다른 관측소를 가리키면 전혀 다른 위치의 값을 요청하게 됩니다. 둘째는 응답 파싱 경로였습니다. 기존의 response.body.items 대신 실제 처리 대상인 body.items.item을 읽도록 바뀌었습니다.
여기서 빈 응답을 대체 데이터로 바꾸는 기능이 문제를 가릴 수 있습니다. 화면에 숫자가 나오면 사용자는 조회가 성공했다고 생각하기 쉽습니다. 요청 성공, 파싱 성공, 표시값의 출처는 서로 다른 항목으로 확인해야 합니다.
지역 이름보다 지점 좌표를 전달합니다
수정된 흐름은 낚시 지점의 위도·경도를 조회까지 전달하고, 그 좌표를 기준으로 가까운 관측소를 고릅니다. 지역 이름만 넘기던 경우보다 선택 근거를 추적하기 쉽습니다. 관측소 목록도 함께 교체했습니다.
다만 가장 가까운 관측소의 값이 해당 낚시 지점과 완전히 같다는 뜻은 아닙니다. 해안 형태와 위치 차이가 있기 때문에 관측소 선택과 현장 적용의 한계는 구분해야 합니다. 이 글은 특정 시각의 물때나 출조 안전을 보증하는 예보가 아닙니다.
같은 이름의 고성은 따로 확인합니다
강원 고성과 경남 고성은 이름 일부가 같지만 서로 다른 지역입니다. 후속 수정은 도 이름과 지역 코드로 두 경우를 구분하고, 각각의 좌표를 관측소 선택에 사용하도록 했습니다. 기존 테스트의 기대 관측소 코드도 수정된 목록에 맞춰 갱신돼 있습니다.
| 확인할 입력 | 확인할 결과 |
|---|---|
| 지점 좌표가 있는 요청 | 그 좌표가 관측소 선택까지 전달되는가 |
| 지역 이름만 있는 요청 | 지역 좌표를 찾았는가, 대체 경로를 썼는가 |
| 강원·경남 고성 | 동명 지역이 섞이지 않는가 |
| 단일 응답과 여러 응답 | 객체와 배열을 모두 처리하는가 |
| 빈 응답·요청 실패 | 실제 예측을 읽은 것처럼 보이지 않는가 |
다른 데이터 앱에도 적용할 점
대체값은 화면을 유지하는 데 유용하지만 장애를 숨기는 역할까지 해서는 안 됩니다. 개발 중에는 선택한 관측소, 파싱한 항목 수, 대체 경로 사용 여부를 나눠 확인하는 것이 좋습니다. 지역명 문자열 하나로 서비스를 연결할 때는 동명 지역 사례도 테스트에 넣어야 합니다.
이번 글에서는 외부 API의 최신 예측값을 다시 호출하거나 휴대폰에서 시간 정확도를 재측정하지 않았습니다. 확인 근거는 9월 15일 커밋 2b91a20, 1e43fb0의 관측소 선택·응답 파싱·테스트 변경입니다. 앱 사용 범위는 낚시일기 소개에서 확인할 수 있습니다.