SlideShare a Scribd company logo
Session 1. 변화의 시대 :
앱 어떻게 개발할 것인가?
네이버 앱개발 l 신동길
변화의 시대
1. 무엇이 변했는가?
2. 앱의 구조
- Activity와 UI 구조
- Sub-Eventing
- Multi-processing
3. Design Achitecture 적용
- UI-Data 패턴(MVC, MVP, MVVM)
- State Pattern
- Pipe Filter Model
4. Multi-Packaging
5. 프레임워크 어떻게 활용할 것인가?
앱 어떻게 개발 할 것인가?
1.1 무엇이 변했는가?
Hardware
MultiCore
Large Memory
Big Display
Platform
Dalvik->JIT/ART
Many Strictions
다양한 프레임워크
Lottie,
RxJava, Retrofit
Glide, Picasso, OkHttp
..
1.2 결국 어떤 앱으로 가는가? …
좋은 앱은
1. BIG Sized
2. Multi-Core Processor
3. Multi-Featured
4. Multi-Media
환경에 효율적이어야 한다.
네이버 앱을 전면 개편해야 하는데 …
1.3 Java 가 클라이언트 환경에 적합한가?
Problem of Java
1. 상속과 오버라이드
2. 객체 내에 모두 선언해야하는 딱딱함
3. Listener 표현이 코드를 복잡하게 함
-BIG Size, 복잡한 GUI 환경에 자바가 적합하지는 않음
- 좀 더 간결한 코딩이 필요 (많은 기능이 필요)
1.4 Functional vs Objective Programming
Why Functional?
1. UI 코드를 방대함 이를 간결하게 표현할 수 있는 도구 필요
2. 코어 로직에 대한 간결한 표현 방식의 필요성
3. 많은 함수를 가진 큰 객체의 이벤트 처리의 효율성 제고 필요
2. 안드로이드 앱의 구조
2.1 UI 구조 - Activity, Window, Fragment, View
WindowManager
onCreate
onStart()
onResume()
onPause()
onStop()
onDestroy()
Window
DecorView
setContentView
2.2 Ui와 Navigation
Page Navigation
Activity로만 앱을 만드는 것이 효율적인가?
1) Activity-Activity(Activity Navigation)
2) Activity(PageFragements)-Activity
3) Activity(PageView-PageView)-Activity
2.3 Event Dispatching(Big SizeComponent)
Complicated Activity-View Hierachy
1) Many Events
2) Deep Depth of View
3) Avoiding of sub-classing
Need to route of Event
WebView, Activity
2.3 Event Dispatching Example(Activity)
필요성
1) Activity의 이벤트를 Child View나 비즈니스 로직에서 사용하는 경우가 많다
2) 함수를 만들고 Activity에서 함수들을 만들어야 함
3) LifeCycle, Permissions, onBackKeyPressed, onActivityResult등
2.3 Event Dispatching Example(EvActivity)
2.3 Event Dispatching Example
NestedScroll이 필요한 경우(with CoordinateLayout)
1) ScrollView내에 ListView와 같이 이중으로 스크롤이 일어나는 경우
2) 웹 브라우저의 주소창과 같이 상단 또는 하단 컨텐츠와 같이 스크롤 될때
3) WebView, ListView,ScrollView는 해당 기능이 없음
2.4 Multi Process(1)
멀티 프로세스가 필요한 경우
1) 메인과 구별되는 기능요소
2) 별도의 모듈(Dynamic Linked Library) 로드 하는 요소
3) 모듈의 크기가 큰 경우
4) 멀티 미디어와 같이 자원을 많이 소요하는 요소
5) 크래시 발생시 해당 모듈에서 전파되기를 원하지 않을 때
2.4 Multi Process(2)
멀티 프로세스 사용
1) 별도의 Activity, Service에 process 속성 지정
2) 프로세스마다 Application.onCreate()에서 초기화
3) Content Provider, Intent Bundle, Intent Broadcast 로 데이터 공유
2.4. MutiProcess(3)-Multi-Threading
Thread & Service
Service
IntentService
Thread
ThreadPool
AsyncTask
AsyncLoader
WorkManager
JobScheduler
JobManager
Coroutine
Priority
- Media Thread
- General Jobs
- Background Jobs, Logging
3.1 Architecture 적용
UI-Data Pattern
MV, MVC, MVP, MVVM
Event-Driven Pattern - State Model, Finite State Machine
1) State Model – 간단한 이벤트로 상태관리
2) FSM – 이벤트에 따른 상태변화와 동작 구조. 앱의 전체 동작관리
Media Processing Model
1) Piped Stream Model
2) Multiplexed Event Queue Model
3.2 MVC, MVP, MVVM
필요성 검토
 패턴은 통일된 인터페이스를 갖지만 코드의 량을 증가
 작은 부분에 과도하게 적용하면 배보다 배꼽이 더 큼
 협업 시에 레이어 구분을 위해서 사용은 좋은 예
 단순 구조에 적용은 신중해야 함
3.4 Piped Filter Model
필요성
 실시간 미디어는 Source, Transform, Sink의 모델
 실시간 미디어 처리는 공통 모듈이 많음
 공통 모듈과 개별 기능 모듈의 인터페이스가 필요함
4 Multi Packaging
1. Big-sized, Multi-featured App packaging
1. Apk Extension(.obb)
- 100MB가 넘어 가는 경우 쪼개야 한다.
2. Another Apk
- 테마 팩, 웹엔진
3. App Bundle
4. Instant App
5. 다양한 Framework 어떻게 활용할 것인가?
Native Code 가 우선
- 기본은 역시 Native Code 가 우선
- 모든 것을 갖추고 있지 않다
- 딱 맞다면 사용할 수 있다. Rebase가 필요하므로 버전 변화를 트래킹
Closing l 프로그래밍은 암기과목이다
- 얼마나 많이 읽었느냐?
- 얼마나 많이 생각했느냐?
- 얼마나 많이 그려보았느냐?
- 얼마나 많이 타이핑 해 보았느냐?

More Related Content

What's hot

클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱
클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱
클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱
uEngine Solutions
 
객체지향프로그래밍 특강
객체지향프로그래밍 특강객체지향프로그래밍 특강
객체지향프로그래밍 특강
uEngine Solutions
 
세미나 Spring mybatis
세미나 Spring mybatis세미나 Spring mybatis
세미나 Spring mybatis
Somang Jeong
 
목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue
Gunhee Lee
 
Essencia 2017
Essencia 2017Essencia 2017
Essencia 2017
uEngine Solutions
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
중선 곽
 
Spring 4.x Web Application 살펴보기
Spring 4.x Web Application  살펴보기Spring 4.x Web Application  살펴보기
Spring 4.x Web Application 살펴보기
Ji Heon Kim
 
Angular2를 위한 컴포넌트 분석과 개발
Angular2를 위한 컴포넌트 분석과 개발Angular2를 위한 컴포넌트 분석과 개발
Angular2를 위한 컴포넌트 분석과 개발
Jin wook
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱
NAVER D2
 
Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발
Jay Park
 
iOS9 소개
iOS9 소개iOS9 소개
iOS9 소개
Jae Sung Park
 
모듈시스템과 webpack
모듈시스템과 webpack모듈시스템과 webpack
모듈시스템과 webpack
DataUs
 
[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy흥래 김
 
Google App Engine의 이해
Google App Engine의 이해Google App Engine의 이해
Google App Engine의 이해
Sun-Jin Jang
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
Jae Sung Park
 
Universal Rendering
Universal RenderingUniversal Rendering
Universal Rendering
Taegon Kim
 
정해균 포트폴리오
정해균 포트폴리오정해균 포트폴리오
정해균 포트폴리오
Haegyun Jung
 
현실적 PWA
현실적 PWA현실적 PWA
현실적 PWA
Jae Sung Park
 
01.모바일 프레임워크 이론
01.모바일 프레임워크 이론01.모바일 프레임워크 이론
01.모바일 프레임워크 이론
Hankyo
 
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해
중선 곽
 

What's hot (20)

클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱
클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱
클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱
 
객체지향프로그래밍 특강
객체지향프로그래밍 특강객체지향프로그래밍 특강
객체지향프로그래밍 특강
 
세미나 Spring mybatis
세미나 Spring mybatis세미나 Spring mybatis
세미나 Spring mybatis
 
목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue
 
Essencia 2017
Essencia 2017Essencia 2017
Essencia 2017
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
 
Spring 4.x Web Application 살펴보기
Spring 4.x Web Application  살펴보기Spring 4.x Web Application  살펴보기
Spring 4.x Web Application 살펴보기
 
Angular2를 위한 컴포넌트 분석과 개발
Angular2를 위한 컴포넌트 분석과 개발Angular2를 위한 컴포넌트 분석과 개발
Angular2를 위한 컴포넌트 분석과 개발
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱
 
Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발
 
iOS9 소개
iOS9 소개iOS9 소개
iOS9 소개
 
모듈시스템과 webpack
모듈시스템과 webpack모듈시스템과 webpack
모듈시스템과 webpack
 
[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy
 
Google App Engine의 이해
Google App Engine의 이해Google App Engine의 이해
Google App Engine의 이해
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
 
Universal Rendering
Universal RenderingUniversal Rendering
Universal Rendering
 
정해균 포트폴리오
정해균 포트폴리오정해균 포트폴리오
정해균 포트폴리오
 
현실적 PWA
현실적 PWA현실적 PWA
현실적 PWA
 
01.모바일 프레임워크 이론
01.모바일 프레임워크 이론01.모바일 프레임워크 이론
01.모바일 프레임워크 이론
 
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해
 

Similar to [21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?

Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3
uEngine Solutions
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
uEngine Solutions
 
꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가
VMware Tanzu Korea
 
Application Monitoring 신규 기능 소개 (서영일)
Application Monitoring 신규 기능 소개 (서영일)Application Monitoring 신규 기능 소개 (서영일)
Application Monitoring 신규 기능 소개 (서영일)
WhaTap Labs
 
기술적 변화를 이끌어가기
기술적 변화를 이끌어가기기술적 변화를 이끌어가기
기술적 변화를 이끌어가기
Jaewoo Ahn
 
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Sencha ExtJS를 활용한 Big Data Platform 개발 사례 Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
미래웹기술연구소 (MIRAE WEB)
 
[1B3]모바일 앱 크래시 네이버에서는 어떻게 수집하고 보여줄까요
[1B3]모바일 앱 크래시 네이버에서는 어떻게 수집하고 보여줄까요[1B3]모바일 앱 크래시 네이버에서는 어떻게 수집하고 보여줄까요
[1B3]모바일 앱 크래시 네이버에서는 어떻게 수집하고 보여줄까요
NAVER D2
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.
효근 박
 
WeAreDevelopers_micro_frontend_framework.pdf
WeAreDevelopers_micro_frontend_framework.pdfWeAreDevelopers_micro_frontend_framework.pdf
WeAreDevelopers_micro_frontend_framework.pdf
janeSim13
 
[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...
[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...
[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...
OpenStack Korea Community
 
[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개
HYUN-JOO LEE
 
Richslide for enterprise
Richslide for enterpriseRichslide for enterprise
Richslide for enterprise
Jun Gyun Bae
 
Better Scalable Flexible Soa Platform 0.8.0
Better Scalable Flexible Soa Platform 0.8.0Better Scalable Flexible Soa Platform 0.8.0
Better Scalable Flexible Soa Platform 0.8.0
Kidong Lee
 
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624uEngine Solutions
 
Mobile Application Development Platform "Morpheus"
Mobile Application Development Platform "Morpheus"Mobile Application Development Platform "Morpheus"
Mobile Application Development Platform "Morpheus"
태일본부장님(Uracle) 권
 
Spring one참석기 ksug
Spring one참석기 ksugSpring one참석기 ksug
Spring one참석기 ksug
Sanghyuk Jung
 
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
문기 박
 
소프트웨어설계론
소프트웨어설계론소프트웨어설계론
소프트웨어설계론
JeongDong Kim
 
Androidpn guide-0.5.0-ko
Androidpn guide-0.5.0-koAndroidpn guide-0.5.0-ko
Androidpn guide-0.5.0-ko
sandeepreddyp42
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은
jieun kim
 

Similar to [21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가? (20)

Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
 
꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가
 
Application Monitoring 신규 기능 소개 (서영일)
Application Monitoring 신규 기능 소개 (서영일)Application Monitoring 신규 기능 소개 (서영일)
Application Monitoring 신규 기능 소개 (서영일)
 
기술적 변화를 이끌어가기
기술적 변화를 이끌어가기기술적 변화를 이끌어가기
기술적 변화를 이끌어가기
 
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Sencha ExtJS를 활용한 Big Data Platform 개발 사례 Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
 
[1B3]모바일 앱 크래시 네이버에서는 어떻게 수집하고 보여줄까요
[1B3]모바일 앱 크래시 네이버에서는 어떻게 수집하고 보여줄까요[1B3]모바일 앱 크래시 네이버에서는 어떻게 수집하고 보여줄까요
[1B3]모바일 앱 크래시 네이버에서는 어떻게 수집하고 보여줄까요
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.
 
WeAreDevelopers_micro_frontend_framework.pdf
WeAreDevelopers_micro_frontend_framework.pdfWeAreDevelopers_micro_frontend_framework.pdf
WeAreDevelopers_micro_frontend_framework.pdf
 
[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...
[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...
[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...
 
[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개
 
Richslide for enterprise
Richslide for enterpriseRichslide for enterprise
Richslide for enterprise
 
Better Scalable Flexible Soa Platform 0.8.0
Better Scalable Flexible Soa Platform 0.8.0Better Scalable Flexible Soa Platform 0.8.0
Better Scalable Flexible Soa Platform 0.8.0
 
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
 
Mobile Application Development Platform "Morpheus"
Mobile Application Development Platform "Morpheus"Mobile Application Development Platform "Morpheus"
Mobile Application Development Platform "Morpheus"
 
Spring one참석기 ksug
Spring one참석기 ksugSpring one참석기 ksug
Spring one참석기 ksug
 
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
 
소프트웨어설계론
소프트웨어설계론소프트웨어설계론
소프트웨어설계론
 
Androidpn guide-0.5.0-ko
Androidpn guide-0.5.0-koAndroidpn guide-0.5.0-ko
Androidpn guide-0.5.0-ko
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은
 

More from NAVER Engineering

React vac pattern
React vac patternReact vac pattern
React vac pattern
NAVER Engineering
 
디자인 시스템에 직방 ZUIX
디자인 시스템에 직방 ZUIX디자인 시스템에 직방 ZUIX
디자인 시스템에 직방 ZUIX
NAVER Engineering
 
진화하는 디자인 시스템(걸음마 편)
진화하는 디자인 시스템(걸음마 편)진화하는 디자인 시스템(걸음마 편)
진화하는 디자인 시스템(걸음마 편)
NAVER Engineering
 
서비스 운영을 위한 디자인시스템 프로젝트
서비스 운영을 위한 디자인시스템 프로젝트서비스 운영을 위한 디자인시스템 프로젝트
서비스 운영을 위한 디자인시스템 프로젝트
NAVER Engineering
 
BPL(Banksalad Product Language) 무야호
BPL(Banksalad Product Language) 무야호BPL(Banksalad Product Language) 무야호
BPL(Banksalad Product Language) 무야호
NAVER Engineering
 
이번 생에 디자인 시스템은 처음이라
이번 생에 디자인 시스템은 처음이라이번 생에 디자인 시스템은 처음이라
이번 생에 디자인 시스템은 처음이라
NAVER Engineering
 
날고 있는 여러 비행기 넘나 들며 정비하기
날고 있는 여러 비행기 넘나 들며 정비하기날고 있는 여러 비행기 넘나 들며 정비하기
날고 있는 여러 비행기 넘나 들며 정비하기
NAVER Engineering
 
쏘카프레임 구축 배경과 과정
 쏘카프레임 구축 배경과 과정 쏘카프레임 구축 배경과 과정
쏘카프레임 구축 배경과 과정
NAVER Engineering
 
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기
NAVER Engineering
 
200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)
200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)
200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)
NAVER Engineering
 
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
NAVER Engineering
 
200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기
200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기
200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기
NAVER Engineering
 
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
NAVER Engineering
 
200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출
200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출
200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출
NAVER Engineering
 
200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우
200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우
200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우
NAVER Engineering
 
200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...
200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...
200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...
NAVER Engineering
 
200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법
200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법
200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법
NAVER Engineering
 
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
NAVER Engineering
 
200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기
200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기
200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기
NAVER Engineering
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
NAVER Engineering
 

More from NAVER Engineering (20)

React vac pattern
React vac patternReact vac pattern
React vac pattern
 
디자인 시스템에 직방 ZUIX
디자인 시스템에 직방 ZUIX디자인 시스템에 직방 ZUIX
디자인 시스템에 직방 ZUIX
 
진화하는 디자인 시스템(걸음마 편)
진화하는 디자인 시스템(걸음마 편)진화하는 디자인 시스템(걸음마 편)
진화하는 디자인 시스템(걸음마 편)
 
서비스 운영을 위한 디자인시스템 프로젝트
서비스 운영을 위한 디자인시스템 프로젝트서비스 운영을 위한 디자인시스템 프로젝트
서비스 운영을 위한 디자인시스템 프로젝트
 
BPL(Banksalad Product Language) 무야호
BPL(Banksalad Product Language) 무야호BPL(Banksalad Product Language) 무야호
BPL(Banksalad Product Language) 무야호
 
이번 생에 디자인 시스템은 처음이라
이번 생에 디자인 시스템은 처음이라이번 생에 디자인 시스템은 처음이라
이번 생에 디자인 시스템은 처음이라
 
날고 있는 여러 비행기 넘나 들며 정비하기
날고 있는 여러 비행기 넘나 들며 정비하기날고 있는 여러 비행기 넘나 들며 정비하기
날고 있는 여러 비행기 넘나 들며 정비하기
 
쏘카프레임 구축 배경과 과정
 쏘카프레임 구축 배경과 과정 쏘카프레임 구축 배경과 과정
쏘카프레임 구축 배경과 과정
 
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기
 
200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)
200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)
200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)
 
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
 
200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기
200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기
200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기
 
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
 
200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출
200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출
200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출
 
200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우
200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우
200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우
 
200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...
200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...
200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...
 
200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법
200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법
200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법
 
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
 
200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기
200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기
200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
 

[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?

  • 1.
  • 2. Session 1. 변화의 시대 : 앱 어떻게 개발할 것인가? 네이버 앱개발 l 신동길
  • 3. 변화의 시대 1. 무엇이 변했는가? 2. 앱의 구조 - Activity와 UI 구조 - Sub-Eventing - Multi-processing 3. Design Achitecture 적용 - UI-Data 패턴(MVC, MVP, MVVM) - State Pattern - Pipe Filter Model 4. Multi-Packaging 5. 프레임워크 어떻게 활용할 것인가? 앱 어떻게 개발 할 것인가?
  • 4. 1.1 무엇이 변했는가? Hardware MultiCore Large Memory Big Display Platform Dalvik->JIT/ART Many Strictions 다양한 프레임워크 Lottie, RxJava, Retrofit Glide, Picasso, OkHttp ..
  • 5. 1.2 결국 어떤 앱으로 가는가? … 좋은 앱은 1. BIG Sized 2. Multi-Core Processor 3. Multi-Featured 4. Multi-Media 환경에 효율적이어야 한다. 네이버 앱을 전면 개편해야 하는데 …
  • 6. 1.3 Java 가 클라이언트 환경에 적합한가? Problem of Java 1. 상속과 오버라이드 2. 객체 내에 모두 선언해야하는 딱딱함 3. Listener 표현이 코드를 복잡하게 함 -BIG Size, 복잡한 GUI 환경에 자바가 적합하지는 않음 - 좀 더 간결한 코딩이 필요 (많은 기능이 필요)
  • 7. 1.4 Functional vs Objective Programming Why Functional? 1. UI 코드를 방대함 이를 간결하게 표현할 수 있는 도구 필요 2. 코어 로직에 대한 간결한 표현 방식의 필요성 3. 많은 함수를 가진 큰 객체의 이벤트 처리의 효율성 제고 필요
  • 9. 2.1 UI 구조 - Activity, Window, Fragment, View WindowManager onCreate onStart() onResume() onPause() onStop() onDestroy() Window DecorView setContentView
  • 10. 2.2 Ui와 Navigation Page Navigation Activity로만 앱을 만드는 것이 효율적인가? 1) Activity-Activity(Activity Navigation) 2) Activity(PageFragements)-Activity 3) Activity(PageView-PageView)-Activity
  • 11. 2.3 Event Dispatching(Big SizeComponent) Complicated Activity-View Hierachy 1) Many Events 2) Deep Depth of View 3) Avoiding of sub-classing Need to route of Event WebView, Activity
  • 12. 2.3 Event Dispatching Example(Activity) 필요성 1) Activity의 이벤트를 Child View나 비즈니스 로직에서 사용하는 경우가 많다 2) 함수를 만들고 Activity에서 함수들을 만들어야 함 3) LifeCycle, Permissions, onBackKeyPressed, onActivityResult등
  • 13. 2.3 Event Dispatching Example(EvActivity)
  • 14. 2.3 Event Dispatching Example NestedScroll이 필요한 경우(with CoordinateLayout) 1) ScrollView내에 ListView와 같이 이중으로 스크롤이 일어나는 경우 2) 웹 브라우저의 주소창과 같이 상단 또는 하단 컨텐츠와 같이 스크롤 될때 3) WebView, ListView,ScrollView는 해당 기능이 없음
  • 15. 2.4 Multi Process(1) 멀티 프로세스가 필요한 경우 1) 메인과 구별되는 기능요소 2) 별도의 모듈(Dynamic Linked Library) 로드 하는 요소 3) 모듈의 크기가 큰 경우 4) 멀티 미디어와 같이 자원을 많이 소요하는 요소 5) 크래시 발생시 해당 모듈에서 전파되기를 원하지 않을 때
  • 16. 2.4 Multi Process(2) 멀티 프로세스 사용 1) 별도의 Activity, Service에 process 속성 지정 2) 프로세스마다 Application.onCreate()에서 초기화 3) Content Provider, Intent Bundle, Intent Broadcast 로 데이터 공유
  • 17. 2.4. MutiProcess(3)-Multi-Threading Thread & Service Service IntentService Thread ThreadPool AsyncTask AsyncLoader WorkManager JobScheduler JobManager Coroutine Priority - Media Thread - General Jobs - Background Jobs, Logging
  • 18. 3.1 Architecture 적용 UI-Data Pattern MV, MVC, MVP, MVVM Event-Driven Pattern - State Model, Finite State Machine 1) State Model – 간단한 이벤트로 상태관리 2) FSM – 이벤트에 따른 상태변화와 동작 구조. 앱의 전체 동작관리 Media Processing Model 1) Piped Stream Model 2) Multiplexed Event Queue Model
  • 19. 3.2 MVC, MVP, MVVM 필요성 검토  패턴은 통일된 인터페이스를 갖지만 코드의 량을 증가  작은 부분에 과도하게 적용하면 배보다 배꼽이 더 큼  협업 시에 레이어 구분을 위해서 사용은 좋은 예  단순 구조에 적용은 신중해야 함
  • 20. 3.4 Piped Filter Model 필요성  실시간 미디어는 Source, Transform, Sink의 모델  실시간 미디어 처리는 공통 모듈이 많음  공통 모듈과 개별 기능 모듈의 인터페이스가 필요함
  • 21. 4 Multi Packaging 1. Big-sized, Multi-featured App packaging 1. Apk Extension(.obb) - 100MB가 넘어 가는 경우 쪼개야 한다. 2. Another Apk - 테마 팩, 웹엔진 3. App Bundle 4. Instant App
  • 22. 5. 다양한 Framework 어떻게 활용할 것인가? Native Code 가 우선 - 기본은 역시 Native Code 가 우선 - 모든 것을 갖추고 있지 않다 - 딱 맞다면 사용할 수 있다. Rebase가 필요하므로 버전 변화를 트래킹
  • 23. Closing l 프로그래밍은 암기과목이다 - 얼마나 많이 읽었느냐? - 얼마나 많이 생각했느냐? - 얼마나 많이 그려보았느냐? - 얼마나 많이 타이핑 해 보았느냐?