SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
선언형 UI가 대세임을 선언합니다
Compose 학습부터 실제 적용까지
이현우 Mathpresso Inc.
Android/React Native Developer
Compose, 그 시작
어떤 계기로 Compose를 시작했는가?
어떻게 공부를 했는가?
#Android Dev Challenge
#Android Dev Challenge
Compose 걸음마 떼기
Compose가 Stable Release 된 이후
Devfest Codelab과 같은 커뮤니티 스터디를 활용하여
Compose Codelab을 간단하게나마 훑어보기
QANDA에 도입된 Compose 코드와 디자인 시스템 코드를
활용하여 Compose UI/디자인 이해하기
Am I Stuck?
Compose로 하나의 앱을 만들어나갈 때
Compose로 하나의 기능 제작할 때
Compose Codelab 마칠 때
React Native
<->
Jetpack Compose
React Native 개발을 하면서 알게 된 지식 Jetpack Compose에서 사용되는 지식
사이드 프로젝트에 적용해보기
Why Compose?
Declarative UI/Recomposition
State Hoisting
선언형 UI
선언형 UI
State에 맞춰서 UI가 그려진다
개발자가 직접 State를 설정할 필요가 없어져
Human Error의 가능성이 현저히 떨어짐
Android Composable 함수들의 호출로 새로운 UI
Component가 만들어짐
빠르게 본인이 원하는 형태의 UI를 그릴 수 있음
Recomposition
Composable 함수를 구성하는 State가 변경될 때, Composable을 갱신시키는 것
Recomposition
Recomposition
Smart Recomposition
Smart Recomposition
Smart Recomposition이 보장되어있지 않다
@
Stable
Use
@
Stable annotation to make skippable state
@
Immutable,
@
StableMarker
Use
@
StableMarker annotations to make skippable state
State Hoisting
State
->
UI 공통적으로 사용하는 State는 최소 공통 조상 LCA 에게 할당
Side Effect
Declarative UI Function & Side Effect
선언형 UI
F STATE
=
UI
함수는 상태 STATE 에 따라 UI를 그려주는 액션을 취함
그렇다면…
F STATE
=
UI
그러면 UI를 그려주는 동작 이외의 것들은?
Side Effect
Composable 함수의 목적 UI 렌더링 이외의
앱 상태의 변경사항
React React Native 에서는?
React React Native 에서는?
학생들의 정보를 DataSource 서버, 로컬 저장소 등
에서 가져오기 위한 함수
React React Native 에서는?
classId가 변하는 경우에만 위의 함수를 호출한다 Dependency Key
Dependency Array가 비어있는 경우, UI Component가 올라왔을 때 한 번만 호출
React React Native 에서는?
UI Component가 화면에 올라올 때 함수가 호출됨
React React Native 에서는?
UI Component가 화면에서 안 보일 때 자동으로 함수가 종료됨
React React Native 에서는?
매 Re rendering Recomposition 마다 호출
그럼 Compose에서는?
함수 scope 내에서 suspend function 호출 가능
LaunchedEffect
useEffect에서 Dependency Array가 비어있는 경우
=>
Composable 함수가 처음 불릴 때 호출
LaunchedEffect
useEffect에서의 Dependency Array
=>
isSuccess, progress가
변경되면 내부 호출
DisposableEffect
isSuccess, progress가 변경될 때에만 호출
DisposableEffect
isSuccess, progress가 변경될 때에만 호출
Composable이 화면에서 안보일경우 자동으로 해제
SideEffect
매 Recomposition마다 호출함
이외에도
produceState
derivedStateOf
snapshotFlow
rememberCoroutineScope
Conclusion
And Then…
F STATE
=
UI
F STATE
=
UI
Compose로 UI 구현하기
Layout/Modifier/Animation
Style Design System
F STATE
=
UI
UI 상태 관리하기
State/State Hoisting/Architecture Layering
CompositionLocal
F STATE
=
UI
App 품질 관리/유지보수
Performance Recomposition/Stability
Side Effect/Architecture Layering
Testing/Accessibility
Compose Your Self
Compose, Your Development
이현우 Mathpresso Inc.
Android/React Native Developer

Más contenido relacionado

Similar a 선언형 UI가 대세임을 선언합니다

카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
Ryan Park
 
08 fragment 태블릿 대응
08 fragment   태블릿 대응08 fragment   태블릿 대응
08 fragment 태블릿 대응
운용 최
 

Similar a 선언형 UI가 대세임을 선언합니다 (20)

한발 앞서 배워보는 Xamarin overview
한발 앞서 배워보는 Xamarin overview한발 앞서 배워보는 Xamarin overview
한발 앞서 배워보는 Xamarin overview
 
React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.
React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.
React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.
 
2016년 #implude 안드로이드 단기속성 - 2. 간단한 화면 인터페이스 (+토스트)
2016년 #implude 안드로이드 단기속성 - 2. 간단한 화면 인터페이스 (+토스트)2016년 #implude 안드로이드 단기속성 - 2. 간단한 화면 인터페이스 (+토스트)
2016년 #implude 안드로이드 단기속성 - 2. 간단한 화면 인터페이스 (+토스트)
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
 
Ionic으로 모바일앱 만들기 #1
Ionic으로 모바일앱 만들기 #1Ionic으로 모바일앱 만들기 #1
Ionic으로 모바일앱 만들기 #1
 
Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1
 
Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005
 
Beginning react native
Beginning react native Beginning react native
Beginning react native
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
 
코드잇-리액트-특강.pdf
코드잇-리액트-특강.pdf코드잇-리액트-특강.pdf
코드잇-리액트-특강.pdf
 
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
 
3D 모델러 ADDIN 개발과정 요약
3D 모델러 ADDIN 개발과정 요약3D 모델러 ADDIN 개발과정 요약
3D 모델러 ADDIN 개발과정 요약
 
08 fragment 태블릿 대응
08 fragment   태블릿 대응08 fragment   태블릿 대응
08 fragment 태블릿 대응
 
[React-Native-Seoul] React-Native 초심자를 위한 실습위주의 간단한 소개 및 구현법 안내
[React-Native-Seoul] React-Native 초심자를 위한 실습위주의 간단한 소개 및 구현법 안내[React-Native-Seoul] React-Native 초심자를 위한 실습위주의 간단한 소개 및 구현법 안내
[React-Native-Seoul] React-Native 초심자를 위한 실습위주의 간단한 소개 및 구현법 안내
 
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulCreate App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
 
프론트엔드 개발자
프론트엔드 개발자프론트엔드 개발자
프론트엔드 개발자
 
Eclipse RCP 1/2
Eclipse RCP 1/2Eclipse RCP 1/2
Eclipse RCP 1/2
 
Ionic project guide
Ionic project guideIonic project guide
Ionic project guide
 
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
 
Modern PHP
Modern PHPModern PHP
Modern PHP
 

선언형 UI가 대세임을 선언합니다