6장 <이펙트 핸들러>, 7장 <Compose 런타임 고급 사용 사례> 번역본을 공개합니다.
2024. 5. 9.
번역이 모두 완료 되었습니다🎉
6장 <이펙트 핸들러>, 7장 <Compose 런타임 고급 사용 사례> 번역본을 공개합니다.
안녕하세요. Jetpack Compose Internals 기술 번역팀입니다.
저희는 이번 뉴스레터를 통하여 6장 <이펙트와 이펙트 핸들러>, 7장 <Compose 런타임 고급 사용 사례>를 끝으로 Jetpack Compose Internals의 번역이 모두 완료되었다는 소식을 전하고자 합니다.
제 6장 이펙트와 이펙트 핸들러 (Effects and effect handlers) 번역 완료
6장에서는 Jetpack Compose에서 사이드 이펙트를 안전하고 효과적으로 관리하기 위한 필수 도구인 이펙트 핸들러에 대해 깊이 있게 다룹니다.
사이드 이펙트란, 본질적으로 함수의 제어 및 범위를 벗어나는 모든 것을 의미합니다. 사이드 이펙트는 함수를 비결정적으로 만들며, 코드에 대한 추론을 어렵게 합니다. Composable 함수는 여러 번 recomposition 될 수 있으므로 사이드 이펙트를 관리 못하면 예상치 못한 동작과 자원 누수가 발생할 수 있습니다.
이펙트 핸들러는 위와 같은 상황을 방지하기 위해, 다음과 같은 역할을 수행합니다.
사이드 이펙트를 Composable의 생명주기에 맞춰 실행
일시 중단된 이펙트를 적절한 코루틴 컨텍스트에서 실행
컴포지션을 떠날 때 자원 해제 및 작업 취소
변경된 입력에 따라 이펙트 재시작
Compose가 제공하는 주요 이펙트 핸들러로는 아래와 같은 것들이 있습니다.
DisposableEffect - 폐기가 필요한 비일시 중단 이펙트 (예: 콜백 등록/해제)
SideEffect - 폐기가 필요 없는 이펙트 (예: Composable의 상태를 외부로 업데이트)
7장에서는JetpackCompose의핵심엔진인ComposeRuntime이UI를넘어선다양한영역에서어떻게활용될수있는지, 다양한 활용 사례를 통해 살펴봅니다.
Compose Runtime은 상태 관리, composition, recomposition 등 핵심 기능을 제공하는데, 이는 충분히 일반적이기에 Android UI를 넘어 트리 구조 관리에도 활용될 수 있습니다.
Compose에서 벡터 그래픽의 구현을 통해 독립적인 composition을 생성하고 관리하는 법을 배울 수 있습니다.
Compose 컴파일러와 런타임은 Kotlin이 실행 가능한 환경에서 사용할 수 있어 다양한 플랫폼에서 활용할 수 있습니다. 이런 활용 예시는 이 장의 DOM 관리 라이브러리 구현을 통해 자세히 살펴보실 수 있습니다.
Compose & Android 소식
Kotlin 2.0부터 Jetpack Compose compiler가 Kotlin Repository를 통해 관리됩니다.
최근 구글은 블로그를 통해 Jetpack Compose compiler가 Kotlin Repository로 이전되었다는 사실을 공유했습니다.
Jetpack Compose는 출시 초기, 강력히 결합되어있는 의존성으로 특정 Compose 버전과 Kotlin 버전이 묶이는 문제가 있었습니다. 공식 출시 1년 뒤, 각 Jetpack Compose 라이브러리의 버전을 독립적으로 지정할 수 있도록 하는 해결책을 발표합니다. 이를 통해 Kotlin 버전에 영향을 주었던 Compose Compiler의 버전을 독립적으로 정할 수 있게 되었습니다. 프로젝트의 Kotlin 버전에 맞는 Compose Compiler 버전을 알려주는 호환성 표 또한 제공되었습니다.
이러한 개발 구조에는 크게 2가지 문제가 있었습니다.
Kotlin 새 버전이 출시 되고, 해당 버전을 지원하는 Compose Compiler의 출시를 최소 2주에서 최대 4주까지 기다려야합니다.
Kotlin 버전을 올릴 때마다, 알맞은 Compose Compiler 버전을 찾아 올려야합니다.
위와 같은 문제들은 Jetpack Compose compiler가 Kotlin Repository로 이전되며 모두 해결되었습니다. Kotlin Repository로 이전되며 출시 주기가 통일 되었으며, 함께 제공되는 Compose Compiler Gradle plugin을 통해 알맞는 버전으로 매칭이 됩니다. Compose Compiler Gradle Plugin은 또한 컴파일러 옵션들을 설정할 수 있는 dsl을 제공하여 개발자의 편의성을 높였습니다.
Compose Compiler Gradle Plugin으로의 마이그레이션이 궁금하신 분들은 이 pull request를 통해 미리 살펴보실 수 있습니다.
5월 14일, Google I/O가 열립니다.
올해도 어김없이, Google I/O가 열립니다. 트렌드에 맞춰 AI와 관련한 세션이 눈에 많이 띄지만, 여전히 다양한 Android 세션이 준비되어있습니다. 여기서 모든 세션들을 확인하실 수 있으며, Android, Compose와 관련된 세션은 아래와 같은 것들이 있으니 참고 하시기 바랍니다.
다음 달인 6월 11일, 코엑스에서 DroidKnights 2024가 열립니다. 여기서 세션 정보를 확인하실 수 있습니다. 국내 최대의 안드로이드 개발자 행사답게 다양한 주제의 발표가 준비되어있습니다. 이번 드로이드나이츠에서는 안드로이드 뿐만 아니라 협업, 커리어와 같은 제네럴한 주제의 발표들도 준비되어있으니 많은 관심 부탁드립니다.
저희는 이것이 끝이 아니라 새로운 시작이라 생각합니다. 번역을 시작한다는 소식을 알려드렸을 때 보내주신 열렬한 응원과 메시지가 큰 힘이 되었습니다. 그에 보답하고자 Compose Internals 학습을 도울 수 있는 프로그램을 계획하고 있으니 앞으로도 잘 부탁드립니다 🙌.
번역이 완료되었지만, 본 이메일과 같이 Compose와 관련한 업데이트나 안드로이드 개발자를 위한 소식을 담은 뉴스레터로 꾸준히 인사드리겠습니다 📣.