[AI를 활용한 타이머 앱 개발기] 주간 회고 #7

@_@·2025년 8월 31일
0

타이머 앱 개발기

목록 보기
5/7

⏰ 퀵라벨타이머 (QuickLabelTimer)

플랫폼·기술: iOS 앱, SwiftUI
앱 컨셉: 시간을 빠르게 설정할 수 있는 퀵 타이머에, ‘왜 맞췄는지’를 기록할 수 있는 라벨 기능을 결합한 타이머 앱
개발 목적: AI-Assisted Programming을 실제 서비스 개발에 적용하여 장단점을 살펴보고, 서비스 완성 및 운영 경험을 통해 설계 능력과 문제 해결 능력을 강화하고자 함
GitHub: https://github.com/data-sy/quick-label-timer



이번 주에 한 일

이번 주는 버그 수정과 리팩토링을 주로 진행했다. 그 과정에서 알림 동작과 관련된 예상치 못한 문제를 발견했고, 정책을 조금 더 안정적인 방향으로 바꾸게 되었다. 출시 전에 발견해서 다행이었다.


[ 주요 작업 요약]

  • 주요 버그 해결
  • 타이머, 프리셋 정책 재정의 (영속성, 속성, 개수 제한)
  • 정책 변경에 따른 사이드 이펙트

버그를 해결하는 과정은 연쇄적인 결정의 흐름으로 이어졌다. 예를 들어,

[예시 1]
앱을 강제 종료하면 실행 중이던 타이머는 사라지는데, 예약된 알림은 그대로 울려버리는 문제
→ 이를 개선하기 위해 앱 재실행 후에도 타이머를 유지하기로 했고,
→ 그러려면 영속성(UserDefaults) 로직을 추가해야 했으며,
→ 타이머가 남아있게 되니 프리셋을 숨기는 대신 실행 중 상태로 덮는 오버레이 방식으로 UI를 변경했고,
→ 오버레이 방식에서의 최신순 정렬은 공간적 일관성이 깨져 보여서, 정렬 기준을 최신순에서 생성순으로 바꿔야 했다.

[예시 2]
알림 개수에는 시스템 한계가 있으므로 실행 중인 타이머 개수를 5개로 제한하기로 함
→ 타이머는 최대 5개인데, 즐겨찾기를 무제한 저장하는 건 UX적으로 어색하니 즐겨찾기 개수도 20개로 제한을 두기로 했고,
→ 그러다 보니 기존 모델 구조(Bool isFavorite)로는 다음 버그를 해결하기 복잡했다.

즐겨찾기가 19개 저장된 상태에서 실행중인 타이머 5개를 즐겨찾기 토글(⭐️)로 예약 할 수 있음.
이 때문에 사용자는 20개 이상 프리셋을 저장할 수 있다고 착각하지만, 실제로 저장 버튼을 누를 때 제한에 걸려 실패.
결국 UI와 데이터 상태가 불일치하는 버그 발생

→ 그래서 속성을 Enum endAction으로 바꾸어 상태를 더 명확히 표현했고,
→ 그 결과 데이터 마이그레이션, 모델 관련 로직 전면 수정이 뒤따랐다.


하나의 버그 수정에서 예상하지 못했던 사이드 이펙트들이 팡팡 터졌다. 마치 100층짜리 탑에서 99층을 고치려다 10층이 흔들리는 느낌이랄까? 앱이 완성에 가까워질수록 작은 수정이 전체 구조에 큰 파장을 미친다는 걸 실감한 한 주였다.



배운 점

  • 문제 재정의
    iOS 정책은 내가 바꿀 수 없는 부분이 많다. 억지로 뚫으려다 막히기보다는, 문제를 관점 전환으로 풀어내 재정의함으로써, 버그를 기능처럼 녹여내는 방법이 더 효과적이었다. 그렇게 해서 “버그처럼 보였던 걸 버그가 아닌 걸로 만든” 셈인데, 앞으로도 이런 시각이 필요하다고 느꼈다.
  • 버그 수정의 연쇄 효과
    하나의 버그를 잡으면 끝나는 게 아니라, 그 수정이 또 다른 문제를 불러온다는 걸 뼈저리게 느꼈다. 정책을 고치다 보니, 데이터 구조를 손봐야 했고, 거기에 맞춰 UX까지 바꿔야 했다. 버그 하나를 고칠 때, 뒤따라올 사이드 이펙트까지 고민해보는 습관을 가져야겠다.
  • AI를 통해 초급자도 중고급 단계의 지식을 경험할 수 있음
    사실 나는 리팩토링에 패턴 이론이 있다는 것조차 몰랐다. 그런데 AI에게 “모델의 속성을 안전하게 바꾸는 방법이 있을까?”라고 물어봤더니, 마틴 파울러의 리팩토링 패턴 중 하나인 Parallel Change(병렬 변경)를 알려주었다. 그제서야 “아, 디자인 패턴처럼 리팩토링에도 정식으로 이름 붙은 방법론이 있구나”라는 걸 알게 되었다. 이 경험을 통해, 지식을 선형적으로 쌓아가는 게 아니라 필요한 순간 필요한 지식을 경험할 수 있다는 것이 AI의 큰 장점이라는 걸 느꼈다.



다음 주에 할 일

이번 주에 진행하려 했으나 버그 수정 규모가 커서 한 주 미룬 작업들:

  • Crashlytics 에러 로깅 추가, 접근성 개선
  • 사운드 음원 정책(3초)에 맞춘 편집
  • 스토어 메타데이터 준비


profile
STEP BY STEP

0개의 댓글