Android 채용 공고를 보다 보니 Compose와 MVVM 경험을 요구하는 경우가 많았습니다. 강의만 듣고 넘어가기보다 직접 한번 만들어보자는 생각으로 시작한 학습용 프로젝트입니다.
외부 API에서 고양이 fact를 가져와 화면에 보여주는 간단한 Android 앱입니다.
Compose와 MVVM을 강의로만 접하는 것이 아니라, 직접 부딪혀보며 익혀보기 위해 만들었습니다.
기존에는 XML 기반 개발 경험이 더 많았고, Compose는 간단한 예제만 따라 해본 정도였습니다.
마침 채용 공고에서 Compose와 MVVM 경험을 자주 요구하는 것을 보면서,
"강의만 듣고 끝내지 말고, 직접 한번 만들어보자."
라는 생각으로 이 프로젝트를 시작했습니다.
기능은 단순합니다. 버튼을 누르면 외부 API에서 고양이 fact를 가져와 화면에 보여주는 것이 전부입니다.
대신 이 작은 기능 안에 실제 프로젝트에서 자주 사용하는 흐름을 직접 넣어봤습니다.
- Compose와 StateFlow를 이용한 상태 관리
- ViewModel과 Repository의 역할 분리
- Hilt를 활용한 의존성 주입
- Retrofit 기반 API 호출 및 결과 처리
거창한 서비스를 만드는 것보다, 요즘 Android 개발에서 자주 보이는 구조를 직접 손으로 익혀보는 것에 더 의미를 두었습니다.
-
MainScreen (
app/src/main/java/com/example/compose_mvvm/ui/main/MainScreen.kt)초기 상태 결과 상태 

버튼을 누르면 API를 호출해 고양이 fact를 가져오고, 로딩 상태와 결과/에러 상태를 화면에 그대로 반영합니다.
| 기술 | 사용 목적 |
|---|---|
| Kotlin | 안드로이드 앱 개발 언어 |
| Jetpack Compose | 선언형 UI 구현 |
| MVVM | UI - 상태 - 데이터 레이어 분리 |
| Coroutine · StateFlow | 비동기 API 호출 및 UI 상태 관리 |
| Hilt | 의존성 주입 (Repository, Retrofit 등) |
| Retrofit / OkHttp | 외부 REST API(catfact.ninja) 통신 |
- Compose를 사용해보며 화면을 그리는 것보다 상태가 어떻게 흘러가는지를 이해하는 것이 더 중요하다는 것을 느꼈습니다.
- 작은 기능이라도 직접 만들어보니 강의만 볼 때보다 기술을 훨씬 빠르게 익힐 수 있었습니다.
- 강의에서는 당연하게 보였던 ViewModel과 Repository의 역할 분리를 직접 구현해보며, 왜 이런 구조를 사용하는지 조금 더 체감할 수 있었습니다.
- 새로운 기술이 필요할 때 막연히 공부하기보다, 작은 프로젝트를 만들어 직접 부딪혀보는 방식이 저에게 더 잘 맞는다는 것을 알게 되었습니다.