Compose 무작정 맛보기 [0.시작]

ricky_0_k·2022년 1월 12일
0

Compose 맛보기

목록 보기
1/7

서론

작년부터 조금조금 하던 Compose 적응 내역들을 차근차근 포스팅해보려 한다.
사실 런칭 신청까지 완료하고 포스팅을 하려고 했으나, 작업하면서 좌충우돌이 너무 컸다.

메인 기능들을 다루기 시작하면서 작업시간이 오래 걸렸고 그만큼 포스트에 많은 글이 써질 것 같았다.
(내가) 스압을 싫어하므로 시리즈 포스트 형태로 작성해보기로 마음 먹었다.

Compose 맛보기

xml 로만 Android 화면을 작성해왔던 나에게, Compose 는 처음보는 무서운 녀석의 느낌이었다.
하지만 Kotlin 으로 작성하는 UI 이기 때문에 무섭지만은 않겠지하고 공부방법을 생각해보게 되었다.

하다보면 이렇게 되겠지 ㅇㅅㅇa

공부방법 선택하기

필자는 과거에 새로운 언어 혹은 개념을 공부하기 위해 아래 두가지 방법을 사용했었다.

  1. 무작정 경험을 해보는 방식
  2. 코드랩을 통해 차근차근 접근하는 방식

두 가지 방법을 효과를 보았기에 어떤 방식으로 할지 고민이 있었고 고민 끝에 무작정 경험을 선택했다.
그리고 과거의 MVP 프로젝트를 리펙터링 하는 방식을 선택하게 되었다.

선택한 이유

사실 이 선택을 하면서 정답이라고 생각이 들진 않았다.
Compose 관련 코드랩이 잘 되어 있어 코드랩으로 차근차근 해보는 게 정답이라고 느꼈기 때문이다.
하지만 나름의 이유는 있었다.

1. 왜 MVVM 에 맞는지 몸소 느껴보기

필자는 예전 Compose 관련 컴퍼런스에서 MVP 보다는 MVVM 이 Compose 에 어울린다고 들은 적이 있었다.
당시에 머리로는 끄덕끄덕했지만 실제 체감까지는 하지 못했다.

그러던 도중 예전의 MVP 로 구현된 안드로이드 프로젝트가 눈에 보였다.
어짜피 Kotlin 이어서 언어의 제약도 덜할 것 같았고 당장의 궁금함을 해소하고 싶어 이 방식을 선택했다.

2. 언젠가 마주하게 될 리펙터링

무작정 하되 프로젝트 리펙터링 방식을 선택한 이유도 나름 있었다.

Compose 는 기존 프로젝트에 섞어서 사용할 수 있다.
xml 에서 Compose 를 사용할 수 있고, Compose 에서도 xml view 를 사용할 수 있다.

만약 Compose 를 배운다면 이 경험도 꽤 중요할거란 생각이 들어
프로젝트 리펙터링으로 Compose 를 다뤄보려 했다.

물론 무작정하는 만큼 한번에 완벽하겐 불가능할 것이다. (위와 같이 되면 기적이다)
하지만 난 리펙터링을 한 번으로 생각하지 않는다.

무작정 리펙터링, 개념보고 느낀바대로 리펙터링 등 여러번 리펙터링하며
Compose 를 공부하기 위한 충실한 실험쥐 프로젝트로 꾸준히 활용하려 한다.

3. 무작정의 좋은 이면 살리기

사실 무작정은 위험할 수 있다. 무작정 해본 지식이 잘못된 기본기로 둔갑할 수 있기 때문이다.

이렇게 생각없이 무작정했다가 망할수도 있다

하지만 무작정 해본 이후 개념을 바라보는 시간을 가진다면
무작정 경험은 개념 공부의 디딤돌이 될 수 있다.
애로사항만큼 기억에 깊게 남는 게 없기 때문이다.

필자의 경우 무작정 검색으로 작성한 코드로 애로사항을 직접 느끼고
그 이후 개념을 돌아볼 때, 실제 사례들을 연계하며 개념을 습득한 사례가 제법 있었기 때문에
오히려 개념 공부하고 실제 어떻게 쓰일지 예상하는 데 도움이 되었었다.

당장 Compose 를 실무에 써야하는 상황이라면 경험보다 개념 공부가 우선이겠지만,
길게 공부해도 문제 없는 상황이므로, 이번엔 이렇게 Compose 개념을 익혀보려 했다.

정리

그 외에도 언어의 제약이 덜함 등 다양한 명분이 있었고
나름의 고민 끝에 무작정 경험 으로 Compose 공부를 시작하게 되었다.

프로젝트 선택하기

4년전(...) 에 Kotlin 언어 공부용으로 개발했던 앱을 리펙터링 진행해보려 한다.
앱은 학점을 입력하는 앱이며 큰 기능은 아래와 같다.

  1. 기본점수 설정 화면
  2. 졸업학점 입력 화면
  3. 학점을 아름답게 볼 수 있는 화면
  4. 학점 및 과목 입력 화면
  5. 학점 통계 화면
  6. 이미지 크롭 화면
  7. 설정 화면

그리고 현재 앱을 돌아봤을 때 개발 스펙은 이렇다.

  1. MVP 아키텍처
  2. MPAndroidChart
  3. Custom ProgressBar
  4. Room
  5. Deprecated 코드 다수 존재 (AsyncTask 등..)
  6. 거대한 Application class 코드

어째 스펙을 적어야하는데 문제가 더 돋보이는 듯한 느낌은 느낌일뿐이다 ㅇㅅㅇa
이거 이외에도 4년전엔 몰랐던 개념들을 적용하기 위해 추가적인 작업들을 더 하게 될 것 같다.

본래 사진을 넣을까했으나 삭제된 앱이고
마음 속에서 아직 공개하지 말라는 마음의 소리가 있어
각 포스팅마다 스크린샷을 드문드문 넣어놓으려 한다.

현재 진행상황

현재 4번까지 진행을 완료한 상태이다. (5~60 %)
4번의 경우 개선 아이디어가 생겨, 일부 UX 도 같이 개선하고 있다.

위에 언급했던 명분은 어느정도 맞아들어가고 있다.
하지만 일부 아쉽게 된 내용들도 있다.

  1. xml 에 ComposeView 도 써보고, Compose 에 xml 용 View 도 넣어보고 있다.
    그러면서 Base 도 같이 작성했으며, 어떻게 호환을 시킬지에 대해 나만의 생각을 정리해보고 있다.

  2. 뒤 포스트에서 적겠지만 state 관리 방법으로 인해 제대로 애로사항을 겪는 중이다.
    뒤에 내가 처리한 방법을 언급하면서, 이 방법이 맞을지에 대해서도 이야기를 들어볼 수 있으면 좋겠다.
    (viewer 가 거의 없어 현실성까진 모르겠다만 ㅇㅅㅇa 아무말이든 다 환영)

  3. 뒤로 갈수록 개발 속도가 느려져, 100% 체감하지 못한 내용들도 일부 생기고 있다.
    MVP 에 Compose 를 적용못한다는 건 몸으론 이해했는데
    실제 MVP 에 Compose 를 적용해보진 못해 설정 화면 리펙터링 때 이 부분을 다뤄보려 한다.

잘못된 기본기가 정립되는 걸 막기 위해,
포스팅과 코드 내용들을 통해 과거의 나를 되돌아보고
최대한 내가 느꼈던 바들과 깨달은 바들을 수두룩빽빽히 정리해보려 한다.

profile
valuable 을 추구하려 노력하는 개발자

0개의 댓글