본문 바로가기
개발일기/Seminar

Google Developer Summit

by 유주원 2015. 5. 17.

Google Developer Summit이란 세미나에 다녀왔다.

사실 구글에서 이런 걸 한다는 것도 처음 알았다. (페북보고 우연히 신청한게 딱 당첨됨!)


장소는 구글캠퍼스서울이라고 이번에 새롭게 생긴 곳 같았는데, 아마 DCAMP랑 비슷한 역할을 하는 느낌??


일단 구글에서 진행하는 세미나라 엄청 기대하고 갔다.



9:30분 쯤에 도착하니 이미 개발자들이 한자리씩 차지하고 앉아 있었다. 

아마 다들 개인 앱 하나씩 가지고 있는 사람들이겠지? (왜냐하면 구글플레이에 자기 앱이 있는 사람만 신청할 수 있는 구조)



그나저나 구글캠퍼스서울 깔끔하고 좋다!!


간단한 소개 및 인사말이 끝나고, 바로 첫번째 세션이 진행되었다. 


Building for the Next Billion Users




첫 번째 세션에서는 어떻게 하면 앱을 좀 더 빠르고 효율적으로 개발할 수 있을까에 대한 내용이다.

구글에서는 지금 현재 Android One이라는 프로젝트를 진행하고 있는데, 이 프로젝트가 머냐하면 인터넷이 열악하거나 스마트폰 시장이 크게 형성되지 않은 나라를 타겟으로 하여 안드로이드 제품을 공급하는 프로젝트이다.

인터넷 시장이 열악하거나 IT 발달이 고수준이 아니기 때문에 최신 사양의 안드로이드 폰을 공급하는게 아닌 규격화된 일정 스펙의 안드로이드 폰을 공급한다.



'이걸 왜 설명하지??' 라는 생각이 자꾸 들었는데, 발표자 분이 이 Android one을 통해서 나머지 10억명의 안드로이드 유저가 사용할 디바이스 사양을 확인할 수 있다라는 말을 듣고 큰 깨달음을 얻게 되었다. (난 너무 시야가 좁음 ㅜ_ㅜ)

'근데 내가 한국이 아닌 세계를 무대로 한 앱을 만들 수가 있을까???' 


그래서 이제부터 본론인데, 이런 시장을 공략하기 위해서는 앱이 빠르고 효율적으로 동작해야 한다는 것이다. 그럼 과연 어떻게 해야 앱이 빠르고 효율적으로 동작할까?


1. 앱의 사이즈를 가능한 줄여야 한다. 


이머징 마켓의 경우 네트워크 데이터가 사용자에게 큰 영향을 끼친다. 가능한한 낮은 네트워크 데이터를 사용하도록 하는게 사용자의 참여를 더 이끌 것이다.

앱을 사용함에 있어 과도한 네트워크를 사용할 경우 사용자에게 옵션을 주는 것도 한 방법이다. 

(어떤 경우에만 네트워크를 사용하게 할지? 네트워크를 과다 사용했으면 알림을 줄 것인지 등등)

앱의 사이즈를 줄이기 위해 asset을 최적화 하거나, 필요없는 이미지나 오디오 파일등은 삭제한다. 또한 불필요한 코드 라이브러리는 삭제한다.

webp 이미지 포멧이라고 구글이 이번에 새롭게 만든 이미지 포멧이 있는데, 압축 효율이 상당히 좋다고 한다. 고정적인 이미지일 경우에는 webp로 이미지 변환을 한 후 사용하면 좋다고 한다.


모바일 데이터 효율적으로 사용하기

APK 사이즈 최적화 하기


2. 앱이 부드럽게 동작해야 한다.


사용자가 앱을 동작시켰을 때 최소 60 frame/s로는 동작해야 자연스러운 효과를 느낄 수 있다. 

또한 한 화면에 여러 뷰가 중복되어 있는 경우에는 성능이 낮아질 수 밖에 없다. 뷰 계층의 간소화를 해야 한다.

연산이 필요한 동작일 경우 ui 쓰레드에서 작업하지 말고 worker 쓰레드를 이용한다.

gc 작업은 최소화하고, 이미지 처리에는 picassa나 glide를 추천한다. picassa는 코드가 이쁘게 구현이 되어 있어서 몇 번 사용해본적은 있는데(chainnig 방식) glide는 처음 들어봤다. 한번 사용해 봐야겠다.

사용자가 버튼 등을 터치했을 때 터치 피드백이 반드시 들어가야 한다.(터치 피드백이란 사용자가 버튼을 눌렀는지 안눌렀는지를 알기 위한 버튼 효과 ex)버튼이 안으로 들어간다든지, 물결 무늬가 나타난다든지..)


60fps 유지하기


3. 앱의 메모리 사용을 줄여야 한다.


안드로이드에서는 메모리가 부족할 경우, 백그라운드로 돌고 있는 앱들을 종료시킨다. 그렇기 때문에 메모리 사용이 중요하다.

안드로이드에서 메모리 오버를 일으키는 가장 강력한 문제가 바로 백그라운드 서비스라고 할 수가 있다.

필요한 경우를 제외하고는 백그라운드 서비스를 사용하지 말자. 대신 인텐트 서비스를 권장한다.(인텐트 서비스란 어떤 메시지를 전달받으면 특정 액션을 수행하고 알아서 종료되는 서비스)

또한 안드로이드 스튜디오에 메모리 모니터라는 툴이 생겼는데 이를 통해 앱의 메모리 사용을 확인할 수 있다.

onTrimMemory()란 새로운 API를 통해서도 앱의 메모리 상태를 확인할 수 있다.


메모리 처리에 있어 관건이 하나가 더 있는데 바로 BITMAP 처리이다. 

BITMAP은 크기 그대로 앱에 표시하기 보다는 적절하게 이미지 처리를 거친 후 앱에 표시하는것이 메모리 절약에 효율적인데, 여기서는 glide를 추천하고 있다.(아마 google에서 미는 모양)


메모리를 효율적으로 관리하기

Glide


4. 배터리를 적게 써야 한다.


앱의 screen을 자주 키거나, network를 사용하면 배터리 소모가 많이 된다.

이를 위해서는 폴링 방식 보다는 pushing(GCM) 으로 앱을 키도록 유도하자. 폴링은 체크를 위해 일정 시간 매일 앱을 깨우기 때문에 배터리 소모가 심할 수 밖에 없다.

구지 폴링을 사용하고 싶다면, AlarmManager를 사용하고 inexact setting을 활성화 시키자.

inexact setting을 설정하면 정확한 시간에 폴링하는 것이 아니라 대략적인 시간을 잡은 후 그 시간대에 해당하는 모든 앱들을 폴링하기 때문에 한꺼번에 많은 앱들을 처리하고 다시 sleep 상태가 될 수 있다. 

네트워크 request를 보낼 때에는 작게 여러번 보내는 것보다는 한꺼번에 대량 pre-fetching 하는 게 더 효율적이다.


배터리를 낭비하지 않기


5. 안드로이드 sdk 도구를 활용하자


systrace, hierarchical viewer, gpu profiling, overdraw 등의 도구들이 안드로이드 sdk에 포함되어 있으니 이를 활용해서 앱을 분석하자.


안드로이드에 알맞은 앱 구조를 설계하기


29cm



첫 번째 세션에 대한 사례 발표로 29cm에서 자기들의 앱을 소개하였다.

29cm는 디자인이 우수하기로 유명한 앱이다.

이번에 업데이트를 하면서 아래와 같은 고려를 하였다고 설명했다.


- 이미지에 glide를 반영할 계획임

- GPU profiler를 사용해보니 GPU 사용이 엄청난걸 확인함. Invalidate함수를 매번 호출하는 방식이 아니라 애니메이션이 움직일때만 Invalidate를 호출하여 GPU 자원 소모를 줄임

- Overdraw Debugger를 사용해서 화면이 중복된 픽셀을 얼마나 가지고 있는지를 확인했고, 해당 레이아웃과 뷰 구조를 단순화 시킴.

- Hirarchy Viewer를 통해 레이아웃이 얼마나 효율적으로 구성되어 있는지를 확인. 하지만 실행속도가 느려서 거의 사용을 못했다고 한다. 속도가 문제라면 ViewServer란 것을 심어서 단말기에서 실행할 수도 있다고 하였다.


안드로이드 TV





안드로이드 TV API에 대한 설명이 이루어졌다. 안드로이드 TV 앱 개발을 함에 있어 중요한 요소로 3가지를 꼽았다.


- Casual : 사람들은 TV를 볼 때 머리 쓰는 것을 싫어한다. 최대한 Casual 하게 짜자.

- Cinematic : TV에서 빽빽한 글씨를 보고자 하는 사람은 많지가 않다. 이미지는 콘텐츠를 적극 활용하자.

Simple : 조작이 간편해야 한다.


안드로이드 TV 앱 개발에 있어 중요 특징들은 아래와 같다.


- 안드로이드 TV는 안드로이드 코드를 그대로 사용할 수가 있는 장점이 있다. 중요한 차이점은 해상도 차이라고 할 수가 있는데, TV 같은 경우에는 폰과는 다르게 해상도가 더 크다.

그래서 기존의 UX를 수정할 필요가 있는데, 구글에서는 Leanback Support library라고 해서 TV에 맞는 UX 기반 라이브러리를 제공해주고 있다.

근데 이렇게 동일한 library를 사용하면 모든 앱들이 비슷한 레이아웃을 가지는 게 아닌가?

구글에서는 TV 앱 같은 경우에는 참신한 UX 보다는 참신한 콘텐츠가 더 영향력을 끼친다고 보고 있기 때문에 획일화된 UX는 그렇게 큰 문제가 아니라고 말해주고 있다.


- 안드로이드 TV 앱에서는 recommendation 기능이라고 해서 앱을 자주 사용할 경우 안드로이드 TV의 홈 열 상에 자주 사용한 앱이 올라가게 된다.


- 사용자가 원하는 상품을 편리하게 검색해 주기 위해 voice searching을 지원하고 있으며, 앱 내의 존재하는 콘텐츠도 검색되기 위해서는 search provider를 직접 구현해서 검색 기능을 완성시켜줘야 한다.


- 구글 캐스트와의 호환이 가능하다.


게임 개발에 유용한 URL

- Android TV

- Play Game Services

- YouTube

- Google Cast SDK

- Flat Buffers

- 안드로이드 TV 앱 샘플

- 안드로이드 TV 앱 배포시 유의해야 할 체크 리스트


Firebase Overview





구글에서 이번에 인수했다고 했던가... 어쨌든 개발자의 백앤드 서버 개발 부담을 줄어주기 위해 백앤드 architecture를 제공해 준다. 실시간 database 입출력, 사용자 관리, filehosting 등의 기능을 제공하며 url은 아래와 같다.


http://firebase.com/tutorial


공짜가 아니란 점에서 별 사용성을 못느꼈다랄까?? 하지만 쓰면 편하긴 할 것 같다.


Launchpad



구글 Launchpad에 대한 소개도 이루어졌다. 구글 Launchpad란 구글에서 스타트업들을 지원하기 위해 제공해주는 멘토링 서비스를 말한다. Ux review라든지 멘토링 등을 제공해 준다고 한다. 

구글에서 이런 것도 제공해 주는지는 이번 세미나를 통해 처음 알았다.


구글 Launchpad


구글 Store 정책


구글 Store의 달라진 정책에 대한 소개가 이루어졌다.

가장 많은 이슈가 스팸 때문에 액이 삭제되는 경우가 많은데, 이는 구글에서 생각하는 스팸과 개발자가 생각하는 스팸이 다르기 때문이라고 한다.

구글에서는 어떠한 경우를 스팸이라고 생각하는지 한 번 알아보자.


- 앱 설명란에는 앱에 대한 설명과 간단한 규칙에 대한 설명만 있으면 된다. 앱 설명란에 다른 앱에 대한 홍보 문구 등이 있을 경우에는 삭제된다. 키워드에 대한 단순한 나열도 앱 마켓 등록에 삭제된다.

- 앱을 실행했을 때 앱이 아직 보이지 않은 상황에서 광고가 먼저 등장한다면 이는 위반 사항으로 간주한다.

- 앱 등급이 전체 이용가인데 성인 광고가 나타날 경우에는 위반으로 간주한다.

- 앱 알림 기능에 광고를 실어서 보낼 경우에도 위반으로 간주한다.

- 마지막으로 앱을 인수인계할 경우가 많은데, 계정을 직접 받을 경우에는 페널티도 똑같이 적용받는다고 한다. 그래서 계정을 받기보다는 애플리케이션 이전을 하는 편이 낫다.


발표자료



Deep Linking and App Indexing


구글 앱 인덱싱에 대한 설명이 이루어졌다.

사용자가 앱을 다운받았을지라도 실제 사용하지 않는 사용자가 많으며, 이런 잠재 사용자를 앱으로 다시 불러들이기 위해서는 구글 앱의 App Indexing과 Deep Linking 을 구현해야 한다고 설명하고 있다.

일단은 나를 포함하여 내 주변의 사람들이 구글 앱을 잘 사용하지 않기 때문에 해당 기능에 대한 필요성을 확인하지 못했다.

구글 앱이 많이 활성화 된다면 꼭 추가해야 될 기능이라고 생각한다.


AppIndexing 문서 자료

AppIndexing 샘플 코드



What AdMob Targeting Can do


이번 세션에서는 애드몹에서 와서 타겟팅 광고를 함으로써 어떤 걸 할 수 있을까에 대한 사례 발표라고 할 수 있겠다.

당연한 얘기지만 타겟팅을 하면 더 높은 수익을 낼 수가 있음은 절대적인 사실이다. 그리고 이건 몰랐었던 사실인데 핸드폰에 여성 관련 앱이 많이 깔려 있다면, 애드몹에서는 여성 관련 광고를 많이 띄워준다고 한다.(이욜~)

애드몹에서는 사용자 분석을 통하여 기존 구매 고객, 잠재 구매 고객, 비구매 고객으로 나눌 수가 있으며, 각각의 고객에 맞춰서 광고 화면을 띄워줌으로써 더 높은 수익을 기대할 수 있다고 한다.

현재 내가 하고 있는 서비스는 인앱 결제 부분이 없는 비구매 고객 요소만 가지고 있기 때문에 현재의 서비스에 애드몹 고객 분석 기능은 따로 생각하지 않았다. 


그리고 마지막으로 참여 사은품으로 받은 노트북 가방!! 역시 이런 세미나에서의 꽃은 경품 추천과 사은품이라고 할 수 있겠으나, 경품 추천은 따로 이루어지지 않았고, 사은품으로 노트북만 받았다. 

그리고 아래의 사진은 구글에서 제공한 점심 부페. 공짜 세미나에 밥까지 주는 세미나는 구글이 처음이었던 것 같다 ㅋ