스물네칸은 하루를 시간 단위로 간단하게 기록하는 Android 앱이다.
# 문제 발견
스물네칸에서는 별도의 자체 서버 없이 데이터를 기기에 저장하고, Google Drive를 이용해 동기화할 수 있도록 만들고 있다.
Google Drive를 연결한 상태에서 앱을 다시 실행했을 때 한 가지 불편한 문제가 있었다.
기존 연결을 복원하는 과정에서 Google 인증 Bottom Sheet가 다시 나타날 수 있었고, 사용자가 이 과정에서 화면을 터치하거나 인증을 취소하면 Drive 연결이 정상적으로 복원되지 않을 수 있었다.
문제는 여기서 끝나지 않았다.
한 번 연결이 정상적으로 복원되지 않으면 다시 Drive를 연결해야 했고, 이후 동기화 과정도 오래 걸릴 수 있었다.


# 처음에는 터치를 막으려고 했다
처음 생각한 해결책은 단순했다.
"인증이 진행되는 동안 사용자가 다른 곳을 터치하지 못하게 하면 되지 않을까?"
그래서 앱 중앙에 Google Drive 연결 상태를 보여주고 인증이 진행되는 동안 화면 입력을 제한하는 방법을 검토했다.
그런데 직접 화면을 확인하니 또 다른 문제가 보였다.
화면 중앙에는 스물네칸의 연결 안내가 있고, 하단에는 Google 인증 Bottom Sheet가 나타났다.
Bottom Sheet가 나타나면서 기존 앱 화면은 어두워져 배경으로 물러나는데, 중앙에는 여전히 연결 안내가 있었다.
전체적으로 보았을 때 사용자가 어디를 봐야 하는지 명확하지 않았다.
그래서 다음에는 앱의 안내와 Google 인증 UI를 단계별로 나누는 방법을 고민했다.
# 그런데 질문 자체가 잘못되어 있었다
인증 구조를 더 확인하면서 새로운 사실을 알게 됐다.
Google Bottom Sheet 자체를 앱에서 마음대로 수정하거나 바깥 터치를 제어할 수 없는 것은 맞았다.
하지만 Google Drive 연결을 복원할 때마다 반드시 이 UI를 호출해야 하는 것은 아니었다.
저장된 계정 정보를 이용해 기존 Drive 권한이 아직 유효하지만 UI 없이 확인할 수 있었다.
기존 권한이 유효하면 Google Bottom Sheet를 보여주지 않고 자동으로 Drive에 연결할 수 있고, 권한을 확인할 수 없을 때만 사용자에게 로그인을 요청할 수 있었다.
여기서 문제를 다시 생각했다.
처음 질문은 이것이었다.
"Google 인증 화면이 나타났을 때 사용자가 취소하지 못하게 하려면 어떻게 해야 할까?"
하지만 실제로 필요한 질문은 이것에 가까웠다.
"이미 Drive 권한이 있는 사용자에게 Google 인증 화면을 다시 보여줄 필요가 있을까?"
# 자동 연결과 로그인을 분리했다
결국 흐름을 두 가지로 나눴다.
- 기존 Drive 권한이 유효한 사용자는 앱을 실행하면 짧은 Loading만 보고 자동으로 Drive에 연결된다.
- Google 인증 Bottom Sheet는 나타나지 않는다.
반대로 기존 권한을 확인할 수 없다면 스물네칸에서 먼저 로그인 여부를 묻는다.
사용자가 로그인을 선택했을 때만 Google 인증 UI를 호출한다.
즉, Google의 인증 UI를 제어한 것이 아니라 Google 인증 UI가 필요한 상황 자체를 줄였다.
# Loading 화면의 역할도 달라졌다
기존 구조에서 Google 인증 Bottom Sheet가 자동으로 나타날 수 있었기 때문에, 사용자의 터치로 인증이 취소되는 문제를 막기 위해 입력을 제한하는 방법을 검토했다.
하지만 인증 구조를 변경하면서 자동 연결 단계에서는 Google Bottom Sheet 자체가 나타나지 않게 됐다.
앱을 실행하면 대신 중앙에 Loading Indicator가 잠깐 나타난다.
이 화면은 Google이 제공하는 인증 UI가 아니라 스물네칸에서 표시하는 화면이며, 기존 Drive 권한 확인과 앱 설정 로딩 등의 작업이 진행된다.
따라서 자동 연결 과정에서는 사용자의 터치로 Google 인증 UI가 취소되는 문제 자체가 발생하지 않게 됐다.
현재 이 과정에서 입력을 제한하는 목적도 달라졌다. 이제는 인증 취소를 막기 위한 것이 아니라, 필요한 작업이 완료되기 전에 기록 추가나 설정 이동 등의 기능이 실행되어 앱의 상태가 엇갈리는 것을 방지하기 위한 것이다.


# 이번 개선에서 배운 것
처음에는 주어진 기술적 제약 안에서 UX를 개선하려고 했다.
하지만 기술 구조를 더 확인하면서 그 제약 자체가 정말 필요한 것인지 다시 생각하게 됐다.
"Google 인증 UI를 어떻게 보여줄까?" 에서,
"Google 인증 UI가 지금 필요한가?" 로 질문이 바뀌었다.
결과적으로 UI를 추가해서 문제를 해결한 것이 아니라, 불필요한 UI가 나타나는 흐름 자체를 제거하는 방향으로 해결할 수 있었다.
UX를 설계할 때 화면 안에서만 해결책을 찾지 않고, 그 화면이 나타나는 기술적 흐름까지 이해하는 것이 중요하다는 것을 경험한 사례였다.

'개발 기록 > 프로젝트' 카테고리의 다른 글
| [스물네칸] 스물네칸 안드로이드 앱 (Seumulnekan Android App) (0) | 2026.10.03 |
|---|---|
| [mini-project] Yoga Responsive Website Re-design (0) | 2025.07.08 |
| [mini-project] To-do List (React) (0) | 2025.07.07 |
| [mini-project] Country Flag Guessing Game (JS) (0) | 2025.07.05 |
| [toy-project] JWT 기반 인증/인가 구현 (Spring Boot) (0) | 2025.07.04 |