트위터에 근무중인 GDE 인 JORGE CASTILLO 가 온라인 교육을 진행하고 있는데, 어떤 코스로 가르치는지 궁금해서 정리해둡니다. (저자의 스펙이 굉장하네요) 저대로 공부하면 나도 컴포즈 전문가..?
왜 써야할까 ?
Compose 는 새로운 UI 개발에 있어 안드로이드 표준이기 떄문에 꼭 배워야 합니다.
1. 필수 코스
Composable 함수를 작성해보고 어떤식으로 동작하는지 Compose compiler, Compose runtime 입장에서 바라봅니다.
- 컴포즈 아키텍쳐 알아보기(UI, Foundation, Material, Runtime, Compiler)
- Box, Text 을 이용한 첫번째 Composable 함수 작성해보기
- Composable Preview 에 대해 알아보기
- Composable 함수와 프로퍼티들을 어떤식으로 모델링할지 깊게 알아봅니다.
- Compiler 입장에서 @Composable 어노테이션 바라보기
- Compiler 를 통한 런타임에서 최적화 하는 방식 알아보기
- Button 을 이용하여 유저 상호작용 처리해보기
- 첫 composition 이 발생할 때 프로세스 알아보기 (컴포즈 트리 구성하고 특정 UI 를 Applier 에 위임하는 것들)
- Composition 과 Slot table 알아보기
- Scaffold 와 TopAppBar 알아보기
- Composable 함수에 로직 추가해보기 (특정 조건이나 Flow 활용해보기)
- Compose runtime 이 UI tree 를 실체화 하는 과정 알아보기
- Column, Row 로 리스트 요소들 만들어보기, Modifier 를 활용해서 스크롤 제어하기
- LazyColumn, LazyRow 를 활용해서 동적이면서 게으른 리스트 구성해보기
- UI 에 padding 넣어보기
- 안드로이드에서 컴포즈를 통합하는 방식 알아보기
2. UI 고급 코스
Modifier 처리 심층분석, 레이아웃 시스템, 크기를 측정하고 그리거나, intrinsics min, max 처리, composition 그리고 subcomposition 에 대해 알아봅니다
- Modifier 시스템, 우선순위, 런타임에서 어떤식으로 모델링 할 수 있는지 알아봅니다
- 커스텀 Composable 레이아웃을 만들어봅니다.
- measure, layout 에 대한 깊은 이해
- Intrinsics 처리
- Canvas 에 Compose 를 사용해서 그려보기
- BoxWithConstraints 를 사용해서 이용 가능한 공간 Composition 제어 하기
- SubcomposeLayout 을 통한 Composition 지연시키기
- Composition 트리에 Composition 들을 연결 시켜보기
- CompositionLocals 어떤식으로 부모에서 자식 Composition 으로 전파시킬 수 있을지 알아보기
- Compose 내 Vector 처리
- Compose Runtime 사용하는 노드(VNode, LayoutNode) 알아보기
- LayoutNode 트리 그리고 Owner 개념 알아보기
- 노드를 추가, 이동, 제거, 대체 작업이 트리에서 어떤식으로 실체화 되는지 알아보기
- 클라이언트(라이브러리) 쪽에서 제공되는 Applier 의 다양한 타입 알아보기
- 테마 (Material 그리고 커스텀 테마)
- 애니메이션 작성하기
- 고급 애니메이션 처리하기
- 드래그, 스와이프 등의 제스쳐 처리 해보기
3. 상태 관리
컴포즈 스냅샷 시스템에 대해 깊이있게 알아보기
- 입력에서 출력까지 관리하는 Composable 함수 작성해보기
- 변경 가능한 상태 추가하기 / 추가된 값으로 부터 읽어드리기
- 상태 변경을 자동으로 감지해서 UI 에 최신화해서 반영해보기
- 컴포즈 스냅샷 상태가 어떤식으로 동작하는지 알아보기 feat. MVCC(multi-version-concurrency-control) system
- 상태 비교 전략 알아보기(State comparision strategies - structuralEqualityPolicy 같은 것을 이야이 하는 것으로 보이네요)
- 데이터 안정성, 클래스 안정성 추론, 컴파일러 지원 알아보기
- 재구성(Recomposition) - Composition 내에 저장된 데이터 업데이트 하기
- 스마트한 재구성 알아보기 feat. 가능하면 Skippable 하게 만들기
- 추가적인 메타 데이터로 재구성 지원하기 feat. Key Composable (Lazy 류에 key 를 넘겨서 효율적으로 관리할 수 있도록 하는 것을 의미하는 것 같네요)
- 포지션 메모이제이션 (위에서 이야기한 key 를 넘기면 발생하는 이점), Composable 고유하게 식별하기
- 재구성 내부 알아보기, 런타임에서 재구성 스코프 알아보기
- State holder 알아보기
- AAC ViewModel 통합하기
- Stateful, Stateless Composable 알아보기, 최상위 레벨에서 Stateful vs Stateless 바보 Composable 을 만들어서 재사용성 높이기
- 상태 호이스팅, 상태 내리고 이벤트로 올리기
- 상태 저장하고 복원하기
- 프로세스 종료시에도 설정 변경들 유지하기
4. 이벤트 다루기, Composable 생명주기
Composable 의 생명주기와 어떤식으로 안드로이드 생명주기에 적용하는지 알아봅니다. Composable 생명주기에 따른 제약 조건들을 알아봅니다.
- 이펙트란 무엇인지, 이벤트를 왜 제어해야하는지 알아봅니다.
- Composable 생명주기 알아보기 feat, Entering, Leaving the Composition
- Composable 생명주기에 따른 제약조건 알아보기
- Compose effect 다뤄보기
- Compose runtime 에서 생명주기에 따라 모델링 하기
- Compose runtime 으로 부터 effect 가 모델링 하고 디스패치 되는 방식 알아보기
- 다양한 사이드 이펙트 적용해보기
- effect 를 처리하는 위치, Composable 함수 내부 vs State holders vs AAC ViewModel 방식 비교하기
- effect 를 테스트 용이하게 만들고 고립시키는 것을 유지하는 방법
- Composable 생명주기를 어떤식으로 Activity or Fragment 생명주기에 매핑할 수 있는지 알아보기
- RecyclerView 내부에서 Composable 함수를 사용할 때 Composable 생명주기 최적화 하기
5. 전반적인 컴포즈 아키텍쳐, 접근성, 테스팅
단방향 데이터 흐름, 현대 아키텍쳐를 컴포즈에 통합하기, 모든 것을 테스트 가능하도록 유지하는 법에 대해 알아봐요
- 절차지향에서 선언형 UI 로 패러다임 시프트 하기
- 데이터 바인딩 하기, UI state 모델링 하기, 완벽한 UI state 만들기
- 단방향 데이터 흐름 만들기 어플리케이션 이벤트 흐름에서 매핑, 변환 과정을 거쳐서UI state 상태로 변환하기
- LiveData, StateFlow, RxJava 타입 같이 서드 파티 상태 관리들 통합해보기
- 양방향에서 사용 가능한 상호 운용성(ComposeView, AndroidView)
- 컴포즈 네비게이션 알아보기
- 컴포즈 네비게이션 구현해보기
- 컴포즈를 사용할 때 Single Activity vs Fragment 방식 알아보기
- Composable 함수내에서 의존성 주입 사용하기
- 시멘틱 트리 구성하기 feat. Merged and unmerged
- 접근성 관련 policy 병합하기
- Composable 에 시맨틱 적용해보기
- 안드로이드에서 시맨틱 다루기
- 시맨틱 트리를 활용하는 도구 알아보기
- Composable UI 테스트 적용하기
- Shot, Paparazzi, ShowKase 서드 파티 라이브러리를 사용해서 스크린 테스트 작성하기
- Headless UI 테스트 하기
6. 고급 Compose 유즈케이스
- 각 사례 스터디 : 컴포즈 컴파일러와 런타임을 위한 클라이언트 라이브러리 만들어보기
- 새로운 노드 타입을 Applier 에 제공해보기
- 컴포즈 멀티 플랫폼 알아보기
- 컴포즈 데스크탑 알아보기
- 컴포즈 웹 알아보기
공부할 것 정말 많네요! 차근차근 공부해가면 되겠죠 ㅎ.ㅎ!?
그럼 20000-
'Android > Compose' 카테고리의 다른 글
Tips. Compose stable, unstable 상태와 자주 사용하는 어노테이션 정리 (0) | 2023.12.10 |
---|