SlideShare une entreprise Scribd logo
1  sur  23
Plannin
g Poker
with Jetpack
목차
1. Jetpack
2. Architecture Component
3. 기타 적용 기술 소개
4. Planning Poker 개발 과정
5. Planning Poker 시연
Jetpack
- Jetpack은 라이브러리 묶음
- 크게 4가지 컴포넌트로 분류
(Foundation, Architecture, Behaviour, UI)
- 개발속도 향상
- 보일러플레이트 코드 제거
- 높은 수준의 앱 품질
Architecture Component
DataBinding
- 바인딩 객체를 이용한 코드와 레이아웃의 디커플링
- findViewById() 사용할 필요가 없음
- Observable객체를 이용한 데이터 변경 감지 및 UI업데이트
- 레이아웃 xml에서 간단한 조건식을 사용한 값 대입
- NullPointerException 방지
- BindingAdapter 애노테이션을 활용한 사용자 지정 Setter
LifeCycles
- 생명주기와 관련된 작업들을 정리하고 가볍게 처리
- 메모리 누수나 생명주기와 관련된 크래시 방지
- 단독으로 사용하기보다는 LiveData나 ViewModel과 사용하길 권장
LiveData
- 항상 최신의 데이터를 얻을 수 있음
- 싱글톤 패턴등을 이용한 전역적 데이터 공유 가능
- 수동적인 생명주기 관리 필요없음
- UI와 data간의 동기화를 보장
ViewModel
- 디바이스 회전과 같은 환경변화로 인한 UI컨트롤러 재생성에서도 살아남음
- 하나의 액티비티와 다수의 프레그먼트를 갖는, Master - Detail 같은, 구조에서
프레그먼트간의 소통을 위한 interface설계가 필요없음.
- Lifecycle객체를 참조하면 절대 안 된다.
- 아주 간단한 생명주기를 가지고 있다. onCleared()
- 기존 Loader 클래스를 대체 가능
Room
- Room은 SQLite를 기반으로 한 추상화된 계층
- 기존 SQLite 다루는 방법보다 간결함
- 질의에 대한 결과값으로 LiveData 또는 Flowable등과 같은 Observable객
체를 받을 수 있음.
- DAO패턴 사용 강제. like Retrofit
- 간단한 Query는 할 줄 알아야 함. (컴파일시간에 문법오류를 검사함)
- Realm vs Room => ?
퍼포먼스 벤치마크, 장단점
Paging
- 점진적인 데이터 로딩
- RxJava2 또는 LiveData와 함께 사용 가능
- Local, Remote 모두 사용 가능
- RecyclerView + PagedList + PagedListAdapter 으로 UI구성
WorkManager
- 백그라운드 작업(Work)을 WorkManager에게 위임하는 방식 (Fire-and-forget)
- 앱이 종료 되어도 작업이 수행되는것을 보장
- 연계작업, 반복작업 수행 가능
- 환경이 변할때 작업 수행 가능(네트워크 연결상태, 충전상태, 내부용량 부족 등)
- Work 객체 생성시 기본생성자만 이용
- 인자 전달 시 inputData, outputData 이용(Primitive type only)
- Progress Bar 등의 UI를 업데이트하는데는 적합하지 않음.
- Work 체이닝시 간헐적으로 Blocked되는점 확인.
WorkManager
출
Navigation
- 기본적으로 하나의 Activity(NavHostFragment)와 여러개의 Fragment의 UI를
구성하는것을 지향함
- 하나의 NavHostFragment에 여러개의 CustomFragment를 트랜잭션 하는 방
식
- Fragment간 이동시 백스택을 자동으로 관리해줌
- Bundle을 통한 인자 전달 가능, 트랜지션 애니메이션기능 제공
- Shared Element Transition 미지원
- Nested Navigation Graph 기능 지원
- 시각적 다이어그램 제공으로 UI-Flow를 쉽게 확인할 수 있음
- Dagger2와 사용시 문제가 생길 수 있음.
Navigation
Constraint Layout
- RelativeLayout 보다 풍부한 표현력
- flat한 구조로 더 나은 성능
- API9 이상부터 사용가능
- 제약 조건(Constraint)
방정식(Equation)
해법(Solver) 으로 구성
- iOS Autolayout과 비슷
- 반응형 레이아웃으로 재사용 증가
Kotlin
- NullPointerException으로 부터 해방
- extension
- Higher-order functions / 람다식
- Data 클래스
- 자바 라이브러리와의 100% 호환
- lateinit, lazy, let() , apply(), also(), run()... 등등
장점 -> 생산성 증가
단점 -> 학습곡선, 클린빌드속도, 외부 정적분석툴 부재, 돌아갈수 없는 강(?)
RxJava
- 데이터의 흐름을 정의하고 데이터가 변경되었을 때 업데이트
- pull방식에서 push방식으로 바꿈
- Side Effect(부수효과)가 없음.
- 순수 함수 지향
- 우아한 비동기 처리
Prototype
Clash Royal Resource
Firebase DataBase, Storage 준비
Initializing on the SplashActivity
Final Architecture

Contenu connexe

Tendances

자바병렬프로그래밍 9.gui 애플리케이션
자바병렬프로그래밍 9.gui 애플리케이션자바병렬프로그래밍 9.gui 애플리케이션
자바병렬프로그래밍 9.gui 애플리케이션Choonghyun Yang
 
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)DK Lee
 
서버리스 기반의 프론트엔드 서버 구축(Serverless frontend web server)
서버리스 기반의 프론트엔드 서버 구축(Serverless frontend web server)서버리스 기반의 프론트엔드 서버 구축(Serverless frontend web server)
서버리스 기반의 프론트엔드 서버 구축(Serverless frontend web server)ChanMin Park
 
모듈시스템과 webpack
모듈시스템과 webpack모듈시스템과 webpack
모듈시스템과 webpackDataUs
 
Android binding framework
Android binding frameworkAndroid binding framework
Android binding framework동우 김
 
Android Network
Android NetworkAndroid Network
Android Networkcooddy
 

Tendances (6)

자바병렬프로그래밍 9.gui 애플리케이션
자바병렬프로그래밍 9.gui 애플리케이션자바병렬프로그래밍 9.gui 애플리케이션
자바병렬프로그래밍 9.gui 애플리케이션
 
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
 
서버리스 기반의 프론트엔드 서버 구축(Serverless frontend web server)
서버리스 기반의 프론트엔드 서버 구축(Serverless frontend web server)서버리스 기반의 프론트엔드 서버 구축(Serverless frontend web server)
서버리스 기반의 프론트엔드 서버 구축(Serverless frontend web server)
 
모듈시스템과 webpack
모듈시스템과 webpack모듈시스템과 webpack
모듈시스템과 webpack
 
Android binding framework
Android binding frameworkAndroid binding framework
Android binding framework
 
Android Network
Android NetworkAndroid Network
Android Network
 

Similaire à Planning poker with jetpack

MVVM Pattern for Android
MVVM Pattern for AndroidMVVM Pattern for Android
MVVM Pattern for Androidtaeinkim6
 
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912Yooseok Choi
 
Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJSEunYoung Kim
 
Agados Function and Feature Overview
Agados Function and Feature OverviewAgados Function and Feature Overview
Agados Function and Feature OverviewYongkyoo Park
 
Things Factory Introduction (한글)
Things Factory Introduction (한글)Things Factory Introduction (한글)
Things Factory Introduction (한글)Hatio, Lab.
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Hyosang Hong
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Hyosang Hong
 
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...Taekyu Lim
 
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?주식회사 내일비
 
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?Sang-ho Choi
 
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)SangIn Choung
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.효근 박
 
03.실행환경 교육교재(배치처리)
03.실행환경 교육교재(배치처리)03.실행환경 교육교재(배치처리)
03.실행환경 교육교재(배치처리)Hankyo
 
Angular 2 rc5 조사
Angular 2 rc5 조사Angular 2 rc5 조사
Angular 2 rc5 조사Rjs Ryu
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)중선 곽
 
주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기Yeonhee Kim
 
2015 n tels iot product lineup_2015
2015 n tels iot product lineup_20152015 n tels iot product lineup_2015
2015 n tels iot product lineup_2015SangHoon Lee
 
Spring vs. spring boot
Spring vs. spring bootSpring vs. spring boot
Spring vs. spring bootChloeChoi23
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
 

Similaire à Planning poker with jetpack (20)

MVVM Pattern for Android
MVVM Pattern for AndroidMVVM Pattern for Android
MVVM Pattern for Android
 
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
 
Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJS
 
Agados Function and Feature Overview
Agados Function and Feature OverviewAgados Function and Feature Overview
Agados Function and Feature Overview
 
Things Factory Introduction (한글)
Things Factory Introduction (한글)Things Factory Introduction (한글)
Things Factory Introduction (한글)
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
 
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
 
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
 
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
 
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.
 
03.실행환경 교육교재(배치처리)
03.실행환경 교육교재(배치처리)03.실행환경 교육교재(배치처리)
03.실행환경 교육교재(배치처리)
 
Angular 2 rc5 조사
Angular 2 rc5 조사Angular 2 rc5 조사
Angular 2 rc5 조사
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
 
주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기
 
2015 n tels iot product lineup_2015
2015 n tels iot product lineup_20152015 n tels iot product lineup_2015
2015 n tels iot product lineup_2015
 
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Sencha ExtJS를 활용한 Big Data Platform 개발 사례 Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
 
Spring vs. spring boot
Spring vs. spring bootSpring vs. spring boot
Spring vs. spring boot
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 

Planning poker with jetpack

  • 2. 목차 1. Jetpack 2. Architecture Component 3. 기타 적용 기술 소개 4. Planning Poker 개발 과정 5. Planning Poker 시연
  • 3. Jetpack - Jetpack은 라이브러리 묶음 - 크게 4가지 컴포넌트로 분류 (Foundation, Architecture, Behaviour, UI) - 개발속도 향상 - 보일러플레이트 코드 제거 - 높은 수준의 앱 품질
  • 4.
  • 6. DataBinding - 바인딩 객체를 이용한 코드와 레이아웃의 디커플링 - findViewById() 사용할 필요가 없음 - Observable객체를 이용한 데이터 변경 감지 및 UI업데이트 - 레이아웃 xml에서 간단한 조건식을 사용한 값 대입 - NullPointerException 방지 - BindingAdapter 애노테이션을 활용한 사용자 지정 Setter
  • 7. LifeCycles - 생명주기와 관련된 작업들을 정리하고 가볍게 처리 - 메모리 누수나 생명주기와 관련된 크래시 방지 - 단독으로 사용하기보다는 LiveData나 ViewModel과 사용하길 권장
  • 8. LiveData - 항상 최신의 데이터를 얻을 수 있음 - 싱글톤 패턴등을 이용한 전역적 데이터 공유 가능 - 수동적인 생명주기 관리 필요없음 - UI와 data간의 동기화를 보장
  • 9. ViewModel - 디바이스 회전과 같은 환경변화로 인한 UI컨트롤러 재생성에서도 살아남음 - 하나의 액티비티와 다수의 프레그먼트를 갖는, Master - Detail 같은, 구조에서 프레그먼트간의 소통을 위한 interface설계가 필요없음. - Lifecycle객체를 참조하면 절대 안 된다. - 아주 간단한 생명주기를 가지고 있다. onCleared() - 기존 Loader 클래스를 대체 가능
  • 10. Room - Room은 SQLite를 기반으로 한 추상화된 계층 - 기존 SQLite 다루는 방법보다 간결함 - 질의에 대한 결과값으로 LiveData 또는 Flowable등과 같은 Observable객 체를 받을 수 있음. - DAO패턴 사용 강제. like Retrofit - 간단한 Query는 할 줄 알아야 함. (컴파일시간에 문법오류를 검사함) - Realm vs Room => ? 퍼포먼스 벤치마크, 장단점
  • 11. Paging - 점진적인 데이터 로딩 - RxJava2 또는 LiveData와 함께 사용 가능 - Local, Remote 모두 사용 가능 - RecyclerView + PagedList + PagedListAdapter 으로 UI구성
  • 12. WorkManager - 백그라운드 작업(Work)을 WorkManager에게 위임하는 방식 (Fire-and-forget) - 앱이 종료 되어도 작업이 수행되는것을 보장 - 연계작업, 반복작업 수행 가능 - 환경이 변할때 작업 수행 가능(네트워크 연결상태, 충전상태, 내부용량 부족 등) - Work 객체 생성시 기본생성자만 이용 - 인자 전달 시 inputData, outputData 이용(Primitive type only) - Progress Bar 등의 UI를 업데이트하는데는 적합하지 않음. - Work 체이닝시 간헐적으로 Blocked되는점 확인.
  • 14. Navigation - 기본적으로 하나의 Activity(NavHostFragment)와 여러개의 Fragment의 UI를 구성하는것을 지향함 - 하나의 NavHostFragment에 여러개의 CustomFragment를 트랜잭션 하는 방 식 - Fragment간 이동시 백스택을 자동으로 관리해줌 - Bundle을 통한 인자 전달 가능, 트랜지션 애니메이션기능 제공 - Shared Element Transition 미지원 - Nested Navigation Graph 기능 지원 - 시각적 다이어그램 제공으로 UI-Flow를 쉽게 확인할 수 있음 - Dagger2와 사용시 문제가 생길 수 있음.
  • 16. Constraint Layout - RelativeLayout 보다 풍부한 표현력 - flat한 구조로 더 나은 성능 - API9 이상부터 사용가능 - 제약 조건(Constraint) 방정식(Equation) 해법(Solver) 으로 구성 - iOS Autolayout과 비슷 - 반응형 레이아웃으로 재사용 증가
  • 17. Kotlin - NullPointerException으로 부터 해방 - extension - Higher-order functions / 람다식 - Data 클래스 - 자바 라이브러리와의 100% 호환 - lateinit, lazy, let() , apply(), also(), run()... 등등 장점 -> 생산성 증가 단점 -> 학습곡선, 클린빌드속도, 외부 정적분석툴 부재, 돌아갈수 없는 강(?)
  • 18. RxJava - 데이터의 흐름을 정의하고 데이터가 변경되었을 때 업데이트 - pull방식에서 push방식으로 바꿈 - Side Effect(부수효과)가 없음. - 순수 함수 지향 - 우아한 비동기 처리
  • 22. Initializing on the SplashActivity

Notes de l'éditeur

  1. FindBugs, PMD, Error Prone, Checkstyles and Lint