2026. 1. 28. 05:16ㆍAI Product Building/HalloGerman
이 글의 핵심
- 학습 앱 홈 화면에서 ‘진도 숫자’가 사용자 행동에 미치는 영향
- 여러 학습 기능의 결과를 하나의 진도 지표로 통합한 구현 방식
15편에서 알람(리마인드) 기능을 다뤘다면, 이번 16편에서는 그 알람 이후 사용자가 가장 먼저 마주하는 홈 화면 진도 모니터링을 다룬다.
HalloGerman에서 홈 화면은 단순한 메뉴 화면이 아니다. 사용자가 “오늘도 할까?”를 결정하는 가장 중요한 판단 지점이다.
1. 홈 화면은 왜 가장 중요할까
학습 앱에서 홈 화면은 사용 빈도가 가장 높은 화면이다.
- 앱을 켜자마자 보게 되고
- 학습을 마친 후 다시 돌아오며
- 오늘 할지 말지를 여기서 결정한다
이 화면이 아무 말도 하지 않으면, 사용자는 행동하지 않는다. 그래서 홈 화면에는 지금 상태를 즉시 이해할 수 있는 정보가 필요하다.
2. 진도 모니터링에서 숫자가 중요한 이유
“열심히 공부했어요”라는 문장은 사용자에게 아무 행동도 유도하지 못한다. 반면 숫자는 다르다.
- 오늘 학습 단어 수
- 연속 학습 일수
- 복습 대기 항목 수
이 숫자들은 사용자에게 현재 위치를 명확히 보여준다. 특히 ‘0’이라는 숫자는 행동을 촉발하는 강력한 신호가 된다.
3. HalloGerman 홈 화면 진도의 구성 요소
HalloGerman의 홈 화면 진도는 여러 학습 기능의 결과를 하나로 모아 보여준다.
- 오늘 학습한 단어 수
- 오늘 완료한 학습 세션
- 연속 학습 일수(Streak)
- 복습이 필요한 단어 수
각 숫자는 서로 독립적이면서도 하나의 학습 흐름을 구성한다.
4. 학습 기록은 어디서 수집되는가
홈 화면 진도는 특정 기능에서만 만들어지지 않는다.
- 플래시 카드 학습 결과
- 쓰기 학습(타이핑/필기)
- 말하기 학습 시도 여부
- 복습 완료 기록
이 모든 이벤트가 학습 기록으로 수집되고, 홈 화면에서 재가공된다.
4-1. 학습 이벤트 기록 예시
fun recordStudyEvent(type: StudyType) {
studyLogRepository.save(
StudyLog(type = type, timestamp = System.currentTimeMillis())
)
}
이처럼 학습이 발생하는 지점마다 가볍게 이벤트를 남긴다.
5. 홈 화면용 데이터는 어떻게 가공되는가
원본 학습 로그를 그대로 홈 화면에 보여주면 정보가 너무 많아진다.
그래서 HalloGerman에서는
- 오늘 기준으로 필터링하고
- 카테고리별로 집계하며
- 사용자에게 의미 있는 숫자만 추출한다
이 과정은 UI 로직과 분리된 별도의 계산 단계에서 처리된다.
5-1. 홈 화면 진도 계산 로직 예시
fun calculateTodayProgress(logs: List<StudyLog>): Int {
return logs.count { it.isToday() }
}
이 단순한 숫자 하나가 사용자의 행동을 바꾸는 핵심 지표가 된다.
6. 진도 수치를 ‘강요’하지 않은 이유
처음에는 목표 달성률, 퍼센트 바 같은 시각 요소도 고려했다.
하지만 테스트 결과, 이런 요소들은 오히려
- 압박감을 주고
- 학습을 미루게 만들며
- 포기 지점을 앞당긴다
그래서 HalloGerman에서는 진도 수치를 평가 도구가 아니라 상태 표시로만 사용한다.
7. 홈 화면 진도와 알람의 연결
홈 화면 진도는 15편에서 설명한 알람 기능과 직접 연결되어 있다.
- 오늘 학습 기록이 0이면 알람 대상
- 연속 학습이 끊기기 직전이면 우선 알림
이 연결 덕분에 알람은 무작위가 아니라 상태 기반 행동 유도가 된다.
8. 홈 화면 진도의 역할 정리
정리하면, 홈 화면 진도 모니터링은
- 학습을 평가하지 않고
- 현재 상태를 보여주며
- 다음 행동을 암시한다
이 세 가지 역할을 동시에 수행한다. 그래서 이 화면이 무너지면, 앱 전체 학습 흐름도 함께 무너진다.
9. 다음 편 예고
다음 17편에서는 학습 데이터를 어디까지, 어떻게 저장할지에 대한 데이터 저장 전략을 다룬다. 왜 모든 것을 저장하지 않았는지, 그리고 이 선택이 유지보수에 어떤 영향을 주는지 설명할 예정이다.
참고 자료
- Android Architecture Guide
https://developer.android.com/guide/architecture
'AI Product Building > HalloGerman' 카테고리의 다른 글
| [독일어 학습 앱 개발기 18편] 유지보수를 고려한 구조 설계 – 앱이 커져도 무너지지 않게 하는 기준 (0) | 2026.01.30 |
|---|---|
| [독일어 학습 앱 개발기 17편] 학습 데이터 저장 전략 – 무엇을 저장하고, 무엇을 버릴 것인가 (0) | 2026.01.29 |
| [독일어 학습 앱 개발기 15편] 알람(리마인드) 기능은 왜 필요한가 – 학습을 ‘습관’으로 만드는 설계 (0) | 2026.01.27 |
| [독일어 학습 앱 개발기 14편] 복습 로직 설계 – 왜 단순 반복 학습은 실패하는가 (1) | 2026.01.26 |
| [독일어 학습 앱 개발기 13편] 플래시 카드 암기 기능 – 단어를 ‘외우게 만드는’ 구조 설계 (0) | 2026.01.25 |