여러분의 지속적인 관심과 소중한 피드백으로 4장 <Compose UI>의 번역 작업이 마무리되었다는 소식을 전해드립니다.🎉🎉
4장은 Jetpack Compose의 UI에 대한 내용을 다룹니다. Compose UI가 내부적으로 어떻게 트리를 구체화(materialize)하는지, 측정, 배치, 그리기와 같은 UI 구성 요소의 핵심 개념과 modifier, semantics와 같은 중요한 기능들이 어떻게 작동하는지에 대한 이해를 높일 수 있습니다.
- Compose UI 관점에서의 Composition과 Subcomposition에 대해 자세히 살펴보고 이를 통해 Compose UI 어플리케이션에서 트리가 어떤 구조로 되어있는지 살펴봅니다.
- Applier 추상화를 통해 라이브러리가 사용되는 플랫폼에 대해 Compose 런타임이 알지 못하도록 의존성을 반전시키고, 플랫폼과의 통합에 사용될 노드를 선택하는 과정을 살펴보고, Compose UI가 제공하는 다양한 Applier 구현체에 대해 살펴봅니다.
- LayoutNode의 삽입, 제거, 이동과 같은 변경 사항이 어떻게 구체화되는지 살펴봅니다.
- 측정 정책(Measuring Policy), 고유 크기 측정(Intrinsic Measurements), 그리고 레이아웃 제약 조건(Layout Costraint)을 통해 레이아웃의 크기가 계산되는 과정을 살펴봅니다.
- LookaheadLayout을 통해 자식들의 새로운 크기와 위치의 사전 계산값을 제공하는 원리와 이를 기반으로 한 부드러운 애니메이션의 예시를 살펴봅니다.
- Modifier와 Modifier chain의 모델링에 대해 살펴보고, 레이아웃에 Modifier가 전달되는 과정을 살펴봅니다.
- Compose UI의 노드가 실제로 그려지는 과정에 대해 살펴봅니다.
- Compose UI에서의Semantics(의미론)에 대해 살펴보고, semantics와 안드로이드 SDK 접근성 API와의 연결, semantics의 변화가 안드로이드 SDK에 어떻게 알려지는지 살펴봅니다.
⚠️ 4장 Compose UI는 실제 구현 코드의 축약본을 많이 담고 있습니다. 이번 챕터를 읽으실 때는 관련 코드를 찾아가며(cs.android.com) 읽으시는 것이 이해에 큰 도움이 될 것입니다. 번역을 하면서 현재 시점 기준으로 변경된 코드가 상당 수 있었는데, 이 부분은 CL(Change List) 혹은 commit 링크를 첨부했습니다. 원저자의 설명을 바탕으로 기본 원리를 이해하고, 변경사항을 살펴보는 방식의 학습을 권합니다. 코드 히스토리를 통해 어떤 문제와 논의가 있었는지, 어떤 의사 결정을 통해 변경이 이뤄진 것인지 살펴보며 과거로부터 현재로 지식을 확장해나갈 수 있을 것입니다.
Compose Multiplatform 1.6 공식 출시
저번 뉴스레터에서 Compose Multiplatform 1.6 beta 출시를 언급했었는데, 1.6 정식 버전이 공식 출시 되었습니다. 뉴스레터 발송 시점 기준으로 1.6.1 버전이 최신 안정 버전이며, Compose 컴파일러 1.5.10과 Kotlin 1.9.23을 지원합니다. 자세한 사항은 릴리스 노트를 확인하시길 바랍니다.
어느 덧, 책의 절반 이상 번역이 완료되었습니다. 따뜻한 봄날에 커피 한 잔의 여유로움으로 책을 읽어보시길 바라며, Jetpack Compose Internals 한국어 번역 프로젝트를 응원해 주신 모든 분들께 항상 감사의 말씀을 전해드립니다. 남은 부분도 좋은 번역을 제공해 드리도록 최선을 다하겠습니다.
Jetpack Compose Internals 기술 번역팀 드림
|