습관관리 앱 개발 일지: 대규모 리팩토링 및 기능 추가

오늘은 '습관 추가 화면' 수정이라는 커밋 메시지 뒤에 숨겨진, Habit 앱의 대규모 구조 개선 및 기능 추가 작업을 기록합니다. 데이터베이스 설계부터 MVVM 아키텍처 도입까지, 앱의 내실을 다지는 중요한 변경이 있었습니다.
1. 데이터 레이어(Data Layer) 대규모 개편
이번 작업의 핵심은 데이터 모델을 확장하고 안정성과 성능을 개선하는 것이었습니다.
습관 기록 기능 추가
사용자가 매일의 습관 실천을 기록할 수 있도록 HabitRecord 엔티티와 HabitRecordDao를 새로 추가했습니다. 이를 통해 '어떤 습관을' '언제' 실천했는지 저장할 수 있게 되었습니다.
데이터베이스 통합 및 안정화
기존에 AppDatabase와 HabitDatabase로 나뉘어 있던 데이터베이스 클래스를 HabitDatabase로 통합하고, 사용되지 않는 AppDatabase.kt는 삭제하여 혼동을 줄였습니다. 또한, HabitRecord 엔티티를 스키마에 추가하고 데이터베이스 버전을 올리는 과정에서 발생할 수 있는 런타임 오류를 해결하여 데이터베이스 마이그레이션의 안정성을 확보했습니다.
// C:/Users/nari4/AndroidStudioProjects/Habit1007/app/src/main/java/com/billcorea/habit1007/data/HabitDatabase.kt
@Database(entities = [Habit::class, HabitRecord::class], version = 3, exportSchema = false)
@TypeConverters(DateConverter::class, DaysConverter::class)
abstract class HabitDatabase : RoomDatabase() { ... }
성능 최적화 및 모델 확장
HabitRecord의 외래 키(habitId)에 인덱스를 추가하여, 특정 습관의 기록을 조회할 때 발생할 수 있는 성능 저하를 방지했습니다. 더불어, Date 타입을 Room에 저장하기 위한 DateConverter와, 습관과 그 기록들을 한 번에 조회하기 위한 HabitWithRecords 관계 데이터 클래스를 추가하여 데이터 모델을 확장했습니다.
2. ViewModel 도입 및 MVVM 아키텍처 적용
UI와 비즈니스 로직의 분리를 위해 MVVM 아키텍처를 본격적으로 도입했습니다. MainViewModel과 StatsViewModel을 새로 추가하여, 각각 MainActivity와 통계 화면(StatsScreen)의 상태 관리 및 데이터 처리를 담당하도록 했습니다. 이로써 UI 코드는 더욱 간결해지고, 로직의 재사용성과 테스트 용이성이 크게 향상되었습니다.
3. UI 레이어 리팩토링
데이터 레이어와 ViewModel의 변경에 맞춰, 사용자에게 보여지는 화면들도 대대적으로 수정되었습니다.
- 핵심 UI 화면 수정:
AddScreen,HomeScreen,StatsScreen이 새로운 데이터 구조와 ViewModel과 상호작용하도록 리팩토링되었습니다. - MainActivity 업데이트:
MainActivity역시MainViewModel을 사용하도록 변경되어, UI 상태 관리를 ViewModel에 위임하는 현대적인 방식으로 개선되었습니다.
결론
이번 커밋은 단순한 기능 수정을 넘어, 앱의 확장성과 안정성, 유지보수성을 크게 향상시키는 중요한 아키텍처 개선 작업이었습니다. 견고해진 데이터 레이어와 MVVM 패턴 도입을 통해 앞으로 더 빠르고 안정적인 기능 개발을 위한 훌륭한 기반을 마련했습니다.
'모바일 앱(안드로이드)' 카테고리의 다른 글
| 습관관리 앱 : Jetpack Compose 광고 페이지 개발 및 성능 개선기 (1) | 2025.10.20 |
|---|---|
| 습관관리 앱 구현 과정 : Jetpack Compose에서 TopAppBar 구현 과정, 동적 버전 표시 및 웹 연동 (2) | 2025.10.18 |
| 습관관리 앱, 개발 작업 일지 (1) | 2025.10.14 |
| 습관관리, 사용자 경험을 한 단계 위로 (개발 일지) (2) | 2025.10.12 |
| 습관 관리 앱 만들기 (1) - Hilt, Room으로 뼈대 세우기 (1) | 2025.10.10 |