Jetpack compose 도입기 1

안드로이드 그룹의 위대한 첫 발

Mike
DelightRoom
5 min readJan 27, 2023

--

freepik.com

대 Jetpack Compose 시대

지금 안드로이드는 대 jetpack compose 시대를 맞이하고 있다.(이하 compose) 우리 안드로이드 그룹도 compose의 수많은 장점들을 알라미에 적용하기 위해 오늘도 composable 함수를 써 내려가고 있다.

우리 안드로이드 그룹 역시 compose 도입을 성공적으로 마쳤고, 현재 알라미의 신규 기능들은 모두 compose로 구현하고 있다. 알라미에 compose를 도입하기 까지 어떤 노력이 있었고, 어떤 문제들을 만났는지 이 글을 통해서 공유하고자 한다.

큰 목표를 작은 목표로 쪼개자

안드로이드 그룹의 목표는 알라미 전체를 compose로 전환하는 것이다. 알라미를 compose로 전환하는 일은 멋진 일이지만, 너무나도 큰 작업이기에 작업자들 모두 부담감을 가질 수밖에 없다.

그렇다면 compose를 첫 도입하는 시점에 가장 중요한 것은 무엇일까? 그것은 바로 compose에 대한 부담감을 없애는 것. compose 가 아직 익숙하지 않은 상태에서 compose 코드를 실 서비스에 적용하는 것은 작업자나 리뷰어 모두에게 꽤나 큰 부담이다. 이 부담감을 해소한다면 모든 멤버들이 수월하게 compose를 도입할 수 있을 거라 생각했다.

compose에 대한 부담감을 낮추기 위해 우리는 작업 목표를 “compose를 사용해 본다”로 작게 쪼개어 설정하였다. 완성도나 스킬적인 부분을 제외하고 compose를 사용해 보는 것 자체에 집중하는 것으로 결정하였고, 작업자는 compose 사용에만 집중할 수 있기 때문에 빠르게 compose 사용을 이행할 수 있을 것이라 생각하였다. 멤버들과 함께 compose 사용에만 집중하는 것을 목표로 설정한 후에야 비로소 compose 도입의 첫 삽을 뜰 수 있었다.

목표를 달성을 위한 구체적인 액션

우리의 목표는 compose를 사용해 보는 것. 그렇다면 compose를 어떻게 하면 효과적으로 사용해 볼 수 있을까? 우리가 선택한 구체적인 액션은 바로 UI 표현에 집중하는 것이었다.

compose는 kotlin의 다양한 기능들을 활용할 수 있도록 많은 장치들이 마련되어 있다. 하지만 이러한 기능들을 사용하기 이전에 우리는 우선적으로 compose 활용에 익숙해져야만 한다. (언제나 기본이 가장 중요) 따라서 compose의 본질인 UI 표현에 집중하는 것으로 결정하였다.

통신이나 데이터 처리가 없고 단순한 UI 구성의 화면을 먼저 선정하여 UI 전환에 집중할 수 있도록 계획하였다. 덕분에 작업자는 온전히 UI 작업에만 집중할 수 있었고 코드 리뷰 또한 UI 표현 방식에 집중하여 진행할 수 있었다. 그룹원 모두의 노력으로 마침내 알라미의 첫 compose 화면이 탄생하였다.

Jetpack Compose로 재탄생한 알라미의 About 화면

이 단순한 화면을 compose 로 전환하면서 정말 다양한 개선 포인트들을 발견할 수 있었다. UI 전환만으로 그룹이 나눠야 할 이야기들이 꾸준히 나오는 것을 보며 정말 작게 시작하길 잘했다는 생각을 했다.

개선 포인트

  • 컴포넌트 구성 (함수이름, 범위, 일반화)
  • 마진 표현 방식 (padding, spacer)
  • fragment에서 composeView를 활용할 때 고려해야 할 점
  • Design System 적용 여부

코드리뷰에서 나온 개선 포인트들은 별도의 미팅을 통해 논의하는 시간을 가졌다. 이 시간을 통해서 알라미에 적합한 compose 적용 방식들을 함께 고민하고 결정할 수 있었다. 이렇게 compose 적용 & 논의 과정을 반복하면서 우리는 자연스럽게 compose에 익숙해졌다.

compose 첫 도입 이후

compose 첫 도입 이후 우리는 본격적으로 compose 전환을 진행하기 시작하였다. 단순한 화면을 넘어 데이터와 밀접한 화면들까지도 compose로 전환하며 멤버들 모두가 많은 시행착오를 겪었다. 현재는 모두가 성장하여 신규 기능들은 모두 compose로 적용하고 있다.

하지만 여기서 끝이 아니다. 다양한 기능들이 추가되는 상황 속에서 여전히 많은 논의들이 발생하고 있고, 이를 함께 해결하며 앞으로 나아가고 있다. 함께 신규 기능을 개발하며 겪은 이야기들은 차차 다음 글에서 소개하도록 하겠다.

결론

compose를 도입하기로 결정했다면, 바로 실행할 수 있는 목표를 설정하여 이행하는 것을 추천한다. 아직도 compose 도입을 고민하는 그룹에게 이 글이 작게나마 도움 되길 바란다.

⏰ 딜라이트룸에서 알라미와 함께 아침을 바꿀 분들을 모십니다 🙌

--

--