안드로이드 개발자로서 잘하는 개발자가 되기 위해선 무엇이 필요할까?

체워도 체워도 언제나 고민이다.

 

우연히 찾게된 안드로이드 개발자 로드맵 PPT이다.

네이버 테크 콘서트에서 발표한 내용을 담은 PPT였다.

더 검색해보니 영상도 찾을 수 있었다.

 

영상을 보면서 나오는 내용들 대부분은 접하거나 공부한 내용이다.

하지만 부족한 부분도 있고 공부했다 해도 완벽하게 설명할 수 있는가 하면 아니다.

 

안드로이드 개발자로서 튼튼한 기본기를 가지고

이를 바탕으로 더 많은 것을 할 수 있는 개발자가 되기를 바란다.

 

발표한 내용을 바탕으로 포스팅을 정리해보려 한다.

 

 

PPT

https://www.slideshare.net/NaverEngineering/techcon-2019-mobile-android3

 

[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵

NAVER WEBTOON | Son App Tech | 안중환 안드로이드개발자로드맵

www.slideshare.net

 

영상

https://tv.naver.com/v/9329737/list/486582

 

TECH CONCERT: MOBILE 2019 - 안드로이드 개발자 로드맵

NAVER Engineering | 내용 네이버 안드로이드 개발자 3년차가 되는 과정에서 졸업생은 무엇을 준비하고, 어떤 걸 공부해야 하는지 키워드와 노하우를 공유합니다.

tv.naver.com

 

 


기본기

 

CS(Computer Science)

DB + OS + Network + Algorithm + Data Structures

 

개발자라면 너무 당연히 접해본 것들이다.

대학교에서 공부했고 취업을 하기 위해 공부했고

실무를 하면서도 계속 부족하다고 느끼는 기본 중의 기본이다.

 

 

T자형 인재

DB + OS + Network + Algorithm + Data Structures + Git

Framework + Programming Language

 

Git을 사용하지 않는 회사는 거의 없다라고 생각한다.

Git까지 공부하고 나면 어떤 언어로 어떤 것을 개발할지 확장해 공부한다.

 

 

 

 


키워드

 

안드로이드 개발자로 정했다.

그렇다면 관련 키워드는 어디에서 나올까?

 

GoogleIO : 매년 구글의 기술을 설명하는 컨퍼런스

Android Dev Summit : 개발에 관해 집중적으로 발표하는 컨퍼런스

 

위의 컨퍼런스들을 통해 새로운 키워드들이 등장한다.

뒤늦게 대세가 된 후 접하기 보단 더 빠르게 기술에 대해 인지할 수 있다.

 

 

Android Developers Youtube : 컨퍼런스 발표 동영상이 올라와 있다.

https://www.youtube.com/user/androiddevelopers/videos

 

Android Developers

Welcome to the official Android Developers YouTube channel. Get the latest Android news, best practices, live videos, demonstrations, tutorials, and more. Su...

www.youtube.com

 

위의 컨퍼런스 외에 한국에서 진행하는 컨퍼런스들도 있다.

드로이드 나이츠, 코틀린 나이트, GoogleIO in Seoul, if kakao, Naver Deview

 

항상 관심을 가지고 참석해보도록 하자.

 

 

 

 

그 외에 사이트로

 

Android Weekly : 메일을 통해 안드로이드 뉴스를 전달해준다.

https://androidweekly.net/

 

Android Weekly - Free weekly Android & Kotlin development newsletter

Android Weekly is a free newsletter that helps you to stay cutting-edge with your Android Development.

androidweekly.net

 

 

 

 


안드로이드

 

개발을 하다보면 구글링이 필수가 된다.

 

하지만 구글링으로 나오지 않을 수도 있고 잘못된 정보를 다루고 있을 수 도 있다.

그렇기 때문에 공식 문서부터 찾아보는 방법을 권한다.

 

 

새로운 API를 접할 때

1. Android Developer 검색

2. Android Developer Medium, Blog 검색

3. CodePath Android Cliffnotes 검색

4. 구글링

 

 

Android Developer : 최신 정보는 영어로 먼저 나오기 때문에 영어로 보길 권장한다.

 - Android Studio / User Guide

 - Jetpack

 - Kotlin

 - Docs / Guides, References, Samples

https://developer.android.com/

 

Android 개발자  |  Android Developers

Android 앱 개발자를 위한 공식 사이트입니다. Android SDK 도구 및 API 문서를 제공합니다.

developer.android.com

 

Android Developer Medium

https://medium.com/androiddevelopers

 

Android Developers – Medium

The official Android Developers publication on Medium.

medium.com

 

Android Developer Blog

https://android-developers.googleblog.com/

 

Android Developers Blog

 

android-developers.googleblog.com

 

Google Codelabs : 코드베이스로 익혀나가고 싶다면...

https://codelabs.developers.google.com/

 

Google Codelabs

Google Developers Codelabs provide a guided, tutorial, hands-on coding experience. Most codelabs will step you through the process of building a small application, or adding a new feature to an existing application. They cover a wide range of topics such a

codelabs.developers.google.com

 

CodePath Android Cliffnotes : 사용법, 꿀팁, 관련 오픈소스

https://guides.codepath.com/android

 

Home | CodePath Android Cliffnotes

CodePath Android Cliffnotes Welcome to the open-source CodePath Android Cliffnotes! Our goal is to become the central crowdsourced resource for complete and up-to-date practical Android developer guides for any topic. Just take me to the notes! We have And

guides.codepath.com

 

 

기본적인 내용

4대 컴포넌트 : Activities, Services, BroadcaseReceivers, ContentProviders

Jetpack : Fragment, ConstraintLayout, ViewPager, RecyclerView...

Inflater

View

 

Inflate, View

 - XML -> Inflate -> 화면을 객체 형태로 만듬

 - 비용이 있는 동작

 - Layout Inspector로 만든 화면 보기 

 - 화면은 모두 View로 되어있다.

 - 화면은 View의 트리구조형태이며 전위 순회하며 깊이우선탐색하여 처리해나아간다.

 - 렌더링 : measure > layout > draw

 - Fragment 역시 View : 즉 Fragment보다 View를 재활용 단위로 가져가는 것이 좋다.

   View를 사용하면 xml에 넣거나 동적생성하여 재활성이 좋아진다.

 

 

 

 


비동기

  안드로이드의 꽃!   

 

 

비동기관련 기술들

 - Thread

 - Executor

 - CompletableFuture(java8, sdk>=24)

 - AsyncTask

 - Loader

 - WorkManager

 - Rx

 - Coroutine

 

AndroidDeveloper의 비동기 관련 내용

https://developer.android.com/

 

Docs - Core topics - Activities - Processes and app lifecycle

 - foreground process

 - visible process

 - service process

 - cached process

Docs - Core topics - Background tasks - Sending operations to multiple threads - Communicate with the UI thread

 - UI Thread 의 정의와 통신하는 방법

 - Handler, Looper, MessageQueue

Docs - Besr Practice - Processes and Threads Overview

 - Thread 기본 사용법

 

 

Callback에 대한 이해

 - Runnable 왜 있을까?

 - subroutines, lamda, expressions, blocks, function pointers...

 

concurrency vs parallelism

 

synchronous vs asynchronous

 

blocking vs non-blocking

 

Java Concurrent

 

#synchronized #volatile #atomic #semaphore #ReentrantLock #LockFree #FalseSharing #ForkJoinPoll #Executor #BlockingQueue #CountDownLatch #Future ...

 

 

Thread, MessageQueue, Handler, Looper에 대한 이해

#Consumer-Producer Patter #MainThread #UiThread #MessageQueue #Handler #MainLooper #Looper #HandlerThread

https://academy.realm.io/kr/posts/android-thread-looper-handler/

 

안드로이드 백그라운드 잘 다루기 Thread, Looper, Handler

안드로이드 백그라운드 잘 다루기 Thread, Looper, Handler

academy.realm.io

 

 

위에 내용을 이해하고 Rx, Coroutine을 사용하자

 

 

 

정확한 타이밍에 실행이 보장되길 원한다면

  : Foreground Service

특정 조건을 걸고 실행이 보장되길 원한다면

  : JobScheduler, JobDispatcher, AlarmManager, BroadcastReceivers

 

 

WorkManager in Jetpack

 - 기존의 파편화된 백그라운드 처리를 하나로 모아서 실행 

 

 

 

 


성능 최적화

 

초당 60프레임 : 프레임당 16ms

한 프레임에 16ms보다 더 오래 걸리는 경우 프레임 드랍이 발생

 

프레임 드랍이 발생한다면

 - MainThread -> WorkerThread

 - UI 업데이트가 순차적으로 진행될 수 있도록 조절

 - CPU -> GPU

 - GPU에 안그려도 되는 부분을 알려준다

 

#ViewHierarchy #DoubleLayoutTaxation #Async #Overdraw #AnimationProperty #Cache #Clipping #ObjectPool #HardwareAcceleration #VSYNC

 

 

발표에서 보여주고자 하는 동영상이 어디있는지 모르겠지만

같은 내용을 다루는 듯 하다.

https://www.youtube.com/watch?time_continue=8&v=qk5F6Bxqhr4&feature=emb_title

 

 

 


안드로이드 프레임워크

 

우리가 사용하는 부분은 Application Framework까지이다.

 

NDK 개발시에는 필수로 더 로우레벨까지 공부해야 한다.

 

 

Android Open Source Project

 - Cofigure / RUNTIME : 컴파일러 관련 내용

#.class #.dex #Dalvik #ART #D8 #R8 #AOT #JIT

 - Develop / GRAPHICS : 화면 렌더링 관련 내용

#SurfaceView #TextureView #BufferQueue, #SurfaceFlinger, #Surface, #Canvas, #SurfaceHolder 

 - Develop / ARCHITECTURE : IPC 관련 내용

#HAL #Context #Parcel # BinderIPC #SystemServices #MediaServer #SystemServer

https://source.android.com/ 

 

Android 오픈소스 프로젝트  |  Android Open Source Project

Android는 세계를 하나로 묶어줍니다. 오픈소스 Android 운영체제를 사용하여 강력한 기기를 만드세요.

source.android.com

 

 


언어

 

Kotlin이 인기가 많다.

Kotlin을 하려면 Java도 알아야 한다.

함수형 프로그래밍을 사용하기에는 Java보다는 Kotlin을 사용하는 것이 났다.

 

 

프로그래밍 패러다임

 - 기능에 따라 프로그래밍 언어를 분류하는 방법. 언어는 여러 패러다임으로 분류 할 수 있다.

 - 프로그래밍 관점을 갖게 해 주고, 결정하는 역할

 - 서로 다른 프로그래밍 언어는 서로 다른 프로그래밍 패러다임을 지원

 - 새로운 것을 가능하게도 하지만 어떤 기법을 금지 함

 

#StructuredProgramming #Object-OrientedProgramming #FunctionalProgramming #ReactiveProgramming
#FunctionalReactiveProgramming #Modular Programming

 

 

 

Kotlin과 Java는 객체지향프로그래밍, 함수형 프로그래밍패러다임을 가지고 있다. 

 

 

객체지향프로그래밍

 

#OOP #클래스 #객체 #메시지 #추상화 #캡슐화 #상속 #구성 #다형성 #S.O.L.I.D

 

 

디자인 패턴

 

SourceMaking

https://sourcemaking.com/

 

Design Patterns and Refactoring

Design Patterns and Refactoring articles and guides. Design Patterns video tutorials for newbies. Simple descriptions and full source code examples in Java, C++, C#, PHP and Delphi.

sourcemaking.com

 

 

 

함수형프로그래밍

 - 클래스가 아닌 함수가 재활용 단위

 - 함수는 1급 객체

 

#람다 #클로저 #순수함수 #고차함수 #lazy #커링 #재귀 #메모이제이션 #모나드

 

 

 


Best Practice

 

클린 아키텍처

클린 코드

리팩토링

 

굉장히 유명한 책들이다.

하지만 많은 학습이 전제되지 않은 상태에서는 의미가 없을 수 있다.

 

그러니 우선 이것만 해보자!

 - 함수는 한가지 일만 한다.

 - SRP : 클래스는 하나의 책임만 가진다.

 - 상속 대신 구성

 

 

드로이드 나이츠에서 발표한 Clean Arhcitecture

(몇년전 발표. 첫 드로이드 나이츠로 기억하고 있다.)

https://academy.realm.io/kr/posts/clean-architecture-in-android/

 

안드로이드에 Clean Architecture 적용하기

안드로이드 앱을 만들면서 두 번의 대규모 업데이트를 배경으로 코드가 계속 바뀌었고, 이런 변화하는 코드에 잘 대응할 수 있는 Clean Architecture에 대해 고민한 경험에 대해 공유하고자 합니다.

academy.realm.io

 


TODO

키워드 수집

기록해라 : 블로그, Git과 같은 것들로 기록해라

 

테스트

 - 유닛테스트를 작성해보자

 - 좋은 구조로 가는 지름길이 되기도 한다.

 - CI

 

#TDD #BDD #Junit #Dummy #Stub #Spy #Fake #Mock #Mockito #PowerMock #Robolectric #CI #Jenkins #TestCoverage #Jacoco

 

 

 

위에 내용들을  완벽 하게 익혀다고 생각한다면

다양한 기술들을 공부해 스펙트럼을 넓혀보자!

 

 

 

 

 

'Android > Common' 카테고리의 다른 글

수명주기; Lifecycle  (0) 2020.06.22
비동기  (0) 2020.05.14
안드로이드 프로젝트 루틴  (0) 2020.02.20

+ Recent posts