이 글의 원문은 여기서 확인하실 수 있으며 블로그 리뷰에는 노현석(GDE)님이 참여해주셨습니다.
Jetpack Compose 1.0이 출시된 이후 약 1년이 지난 지금, 많은 개발자 커뮤니티가 Compose를 채택했으며 간결한 Kotlin 문법과 선언적 접근 방식으로 더 간편하고 빨라진 UI 설계 방식을 높이 평가했습니다.
커뮤니티 속 Compose
여러 기업에서 Compose를 채택해 눈에 띄는 최신 기능을 앱에 더하고 있습니다. 예를 들어, 저희와 긴밀히 협력하는 Play 스토어 팀은 초창기부터 실험을 통해 Compose가 사용하기 쉬울 뿐만 아니라 개발자의 생산성에도 유익하다는 점을 확인했습니다. Play 스토어 팀은 “Play 스토어의 새 기능은 전부 이 프레임워크에 기반을 두고 있습니다. Compose는 앱 개발 과정을 더 빠르고 유연하게 만들어 줍니다.”라고 설명했습니다. Twitter 팀은 “Compose를 사용하면 저희만의 앱 구성 요소를 쉽게 정의하고, API 계약을 보다 명확하고 유연하고 이해하기 쉽게 만들 수 있습니다.”라고 말하며, Jetpack Compose를 채택해 여러 측면에서 앱을 더 효율적으로 구축하게 되었다고 덧붙였습니다. 마찬가지로 Compose를 채택한 Airbnb 팀도 “Jetpack Compose는 저희 기술 전략의 핵심입니다. 생산성이 어마어마하게 늘었죠.”라고 밝혔습니다.
이 팀들은 복잡한 대규모 프로덕션 환경에서 Compose를 사용하고 신중하게 평가하며 더 쉽고 명확한 UI 개발 경험뿐 아니라 엔지니어링 측면에서도 다양한 이점을 경험했습니다! 현재 Play 스토어 상위 1,000개 앱 중 100개 이상이 Compose를 사용하므로, 이 같은 사례는 더욱 늘어날 것입니다.
저희는 늘 개발 과정 및 로드맵 설계에 있어 이처럼 폭넓은 Android 커뮤니티와 긴밀히 협력하며 피드백에 귀 기울이고 있습니다. 따라서 고급 사용 사례를 지원하는 데 중점을 두고 Compose로 앱을 더 쉽게 구축할 수 있도록 기능을 개선했고 새 API와 도구도 제공합니다. Compose는 완전히 새로운 UI 구축 방식을 제시합니다. 그래서 여러분이 Compose에 적응해 외관과 기능 모두 탁월한 앱을 만들 수 있도록 가이드라인, 세션, 고급 토픽에 관한 Codelab을 비롯해 더 심도 있는 영상을 준비했습니다. 이제 새 기능을 소개합니다.
Compose 1.2 베타
드디어 많은 기능과 개선 사항이 포함된 Compose 1.2의 첫 베타 버전을 출시했습니다.
텍스트 관련 개선 사항
글꼴 패딩
Issue Tracker에서 문제로 손꼽히는 버그 중 하나를 처리하기 위해 includeFontPadding을 맞춤설정이 가능한 매개변수로 만들었습니다. 이 값을 false로 설정해야 텍스트가 레이아웃 내에 더 정확히 정렬할 수 있으므로 이 값을 설정하는 것이 좋습니다. 이후 버전에서는 이를 기본값으로 확정하려고 합니다. 만약 값을 false로 설정했을 때 앱에 문제가 생기면 저희에게 알려 주시기 바랍니다. 또한, includeFontPadding을 false로 설정하면 lineHeightStyle 매개변수를 바꿔 Text 컴포저블의 줄 높이를 조정할 수 있습니다. 종합하면 다음과 같은 모습입니다.
여러 줄 텍스트에서 includeFontPadding을 true로 설정한 경우 (왼쪽, 현재 기본값) vs false로 설정하고 lineHeightStyle을 사용한 경우 (오른쪽)
다운로드 가능한 글꼴
Compose 1.2에는 Compose에서 다운로드 가능한 글꼴을 추가했습니다. Compose의 새 API로 Google Fonts에 비동기식으로 접근하고, 복잡한 설정 없이도 대체 글꼴을 정의할 수 있습니다. 다운로드 가능한 글꼴 덕분에 여러 앱에서 같은 글꼴을 공유하여 APK 크기를 작게 유지하고 사용자의 시스템 상태를 향상할 수 있습니다.
텍스트 돋보기
Android 텍스트에는 돋보기 위젯이 제공되어 텍스트를 쉽게 선택할 수 있습니다. 이제 Compose도 텍스트 돋보기를 지원합니다.
선택 핸들을 드래그하면 돋보기가 나타나 손가락 아래 무슨 텍스트가 있는지 볼 수 있습니다. Compose 1.1.0에서는 텍스트 필드 내 선택된 영역에 돋보기를 적용했지만, Compose 1.2.0에서는 텍스트 필드와 SelectionContainer 모두 지원합니다. 또한, 돋보기를 개선하여 Android 돋보기의 동작이 View와 일치하도록 만들었습니다.
레이아웃 관련 기능 및 개선 사항
지연 레이아웃
지연 레이아웃은 실험이 끝난 Grid API LazyVerticalGrid와 LazyHorizontalGrid와 함께 계속해서 개발 중이며, 새로운 실험용 API LazyLayout을 추가하여 맞춤 지연 레이아웃을 구현할 수 있습니다. 이 API에 관한 자세한 내용은 Compose의 지연 레이아웃을 다룬 I/O 세션에서 확인해 보세요.
CoordinatorLayout과의 상호 운용성
스크롤 컴포저블을 뷰 시스템의 CoordinatorLayout에 삽입할 때, 스크롤 동작을 상호 운용 가능하도록 만들 수 있습니다. 이 덕분에 접기 방식 툴바(collapsible toolbar) 설정이 간편해졌습니다. 새로운 실험용 rememberNestedScrollInteropConnection 메서드를 호출한 결과를 nestedScroll 수정자로 전달하여 이 동작을 옵트인할 수 있습니다. 이 새로운 기능을 구현한 샘플을 확인해 보세요.
Window insets
Accompanist 내 insets 라이브러리를 Compose Foundation 라이브러리로 이전하여 WindowInsets 클래스를 사용할 수 있습니다. 자세한 내용은 Compose와 기존 UI 통합에 관한 문서에서 확인해 보세요.
창 크기 클래스
크기 조절이 가능한 레이아웃을 쉽게 디자인 및 개발하고 테스트할 수 있도록 체계적인 표시 영역 중단점인 창 크기 클래스를 출시했습니다. 현재 Material 3 라이브러리 세트 중 하나인 새 라이브러리 material3-window-size-class의 알파 버전에서 사용할 수 있습니다. 창 크기 클래스에 관한 자세한 내용은 다양한 화면 크기 지원을 다룬 문서와 Crane에서 구현한 샘플을 참고하시기 바랍니다.
성능 중심
여러분의 앱 성능 이해와 개선에 도움을 드리기 위해 새로운 성능 도구와 가이드라인을 제공하는 데 중점을 두었습니다. 이를 통해 앱이 느려지는 이유와 상황을 수월하게 이해할 수 있습니다.
Android Studio Dolphin에서 Layout Inspector를 사용해 컴포저블이 얼마나 자주 재구성하는지 검사하고, 재구성이 지나치게 많이 발생한 컴포저블을 최적화할 수 있습니다. Android Studio Electric Eel에는 재구성 하이라이터가 추가되어 어떤 컴포저블이 언제 재구성하는지 시각적으로 파악할 수 있습니다. 이 새 도구에 관한 자세한 내용은 Android Studio에 관한 새로운 소식을 다룬 블로그에서 확인하실 수 있습니다.
Layout Inspector에서 재구성 횟수와 재구성 하이라이터 확인하기
Compose를 이용해 완전히 새로운 방식으로 UI를 구축하고 앱 성능을 확보하려면 몇 가지 권장사항이 있습니다. 새롭게 공개한 문서 페이지에서 최고 성능을 구현하기 위해 Compose 앱을 어떻게 구성하고 설정해야 하는지 확인할 수 있습니다. Jetpack Compose에서 흔히 발생하는 성능 관련 문제를 다룬 I/O 세션에서는 Compose 팀이 흔히 발생하는 성능 관련 문제와 이를 바로잡는 법을 소개합니다.
성능은 저희가 늘 중점을 두는 영역입니다. 이와 관련한 도구와 가이드라인을 개선 및 확장하려 노력하고 있으니, 지금까지의 결과물에 피드백을 주시면 감사하겠습니다. Issue Tracker에 버그를 제출하거나 KotlinLang Slack 그룹에 질문을 남겨 주세요.
새로운 도구
기존 기능을 개선했을 뿐만 아니라, Compose를 더 효율적으로 사용할 수 있는 새로운 도구도 업데이트했습니다. 현재 베타 버전인 Android Studio Dolphin에는 Compose 개발을 위한 흥미로운 기능이 추가되었습니다. 새로운 도구로는 재구성 횟수 확인뿐 아니라 모든 애니메이션을 한 번에 보고 수정할 수 있는 애니메이션 조정, 다양한 화면 크기 구축을 돕는 MultiPreview Annotation이 있습니다. Android Studio Electric Eel(Canary)에서는 빠른 반복 작업을 위한 LiveEdit 기능을 제공합니다.
자세한 내용은 Android 개발 도구에 관한 새로운 소식을 참고하시고, Compose에서 여러분에게 필요한 도구를 지원할 수 있도록 피드백을 공유해 주세요.
Wear OS용 Compose
Compose 보다 좋은 건 더 다양한 Compose죠! 드디어 Wear OS용 Compose 베타 버전이 공개되었습니다. 다른 Jetpack 라이브러리와 마찬가지로 베타 버전에서도 완전한 기능과 정식 버전 API를 제공하기 때문에 프로덕션 환경에서 사용 가능한 앱을 구축할 수 있습니다. 자세한 내용은 블로그에서 확인해 보세요.
개선 및 추가 가이드라인
Compose 가이드라인을 상당수 추가하고 개선했습니다.
Compose 시작하기
여러분도 저희처럼 Compose의 새 기능을 흥미롭게 느끼길 바랍니다. 아직 시작하지 않았다면 Jetpack Compose가 여러분의 팀과 개발 과정에 적합할지 확인하고, 향상된 속도와 개발 생산성을 누려 보세요. Compose와 함께라면 개발이 즐거워집니다!