Tech & Programming/모바일(Android, Flutter)

2018 GDG DevFest in 서울 참석 후기

소스코드 요리사 2018. 11. 11. 03:28

어제(18.11.10) 세종대학교 광개토관 컨벤션홀에서 GDG DevFest 서울이 있었습니다.

저는 GDG DevFest 행사 소식이 있자마자 서울 나들이 겸 다녀와야 겠다는 생각으로 미리 블라인드 티켓을 구매해놨었습니다. 

그래서, 어제 가을 나들이 겸 서울까지 겸사겸사 다녀왔습니다.


QR코드로 체크인을 하고, 굿즈를 받았습니다.

굿즈는 무릎담요 + DevFest 스티커 였고요. 사진을 찍었어야 했는데 정신없이 돌아본다고 사진을 깜빡했네요.


이번 시즌에는 요기요, 카카오페이, bank salad, cracker 채용 관련 부스가 있었습니다.

명함 이벤트를 모두 진행했는데, 당첨이 하나도 안되서 아쉽더군요.


아무튼, 각 부스를 돌아다니며 이벤트도 참여하고, 스티커를 모으다 보니 어느 덧 Keynote 시작 시간이었습니다.

아래 그림은 제가 세션 시작 전 제가 돌아다니면서 모은 스티커들 입니다.ㅎ

내가 모은 스티커



키노트 시간 사진 입니다. 

제가 부스 돌아다닌다고 조금 늦어서(?) 5분전에 착석 했는데, 이미 많은 사람들이 앉아있었습니다. 

그래서 저는 뒷쪽에 앉아서 키노트를 들었습니다.




키노트가 마치고, 세션시간 입니다. 

저는 이번 DevFest에서 ML과 Mobile 에 관심이 있었구요. 고민에 고민 끝에 저는 아래와 같이 세션을 선택해서 들었습니다.


이승민 님의 Data Uni-Directional Architecture in Android

양서연, 이채영 님의 4분이면 충분한 딥러닝 파킨스병 진단기 제작기

장인수 님의 Flutter 101 

김용준 님의 Android DataBinding for Modularization, ViewModel and Testing

정현지 님의 Android Oreo&Pie 업데이트하기





차주에 전체 발표자료가 올라온다고 하니 자세한 내용은 올라온 자료를 확인하시면 될 것 같고요.

저는 간단한 내용, 제가 메모한 자료 위주로 해서 정리해보도록 하겠습니다.

개인 메모를 옮겨 정리하는 거라 높임말이 아닌 평서문으로 적으니 양해부탁드립니다.


이승민 님의 Data Uni-Directional Architecture in Android

View에 영향을 주는 State 관리가 어려움 -> 비동기로 변화의 시점 예측이 어려움, State 변화가 여러곳에서 일어남

그래서 UDA가 필요함.


UDA?

    • 단방향 : View에 영향을 주는 Sate는 한방향으로만 수정가능
    • 동기 : 앞의 액션이 끝나지 않으면 뒤 액션을 실행하지 않음.
    • View와 State 분리 : Model은 State를 변화 시키고, View는 Sate만 참조


UDA 종류 : FLux, Redux, MVI


UDA를 통해 State 관리가 용이해진다.

여러 입력(다른화면, Service 등)으로 일어나는 Sate 변화를 한곳에서 쉽게 관리

State 변경지점이 명확해 디버깅이 쉬움


다양한 Input 으로 변화가 일어나는 복잡한 State에 사용.


발표자료 : http://bit.ly/DevFest-UDA

발표 시 사용 예제코드 : https://github.com/maryangmin/GDG-Flux-Redux-MVI



양서연, 이채영 님의 4분이면 충분한 딥러닝 파킨스병 진단기 제작기


파킨슨병을 진단하는 것은 까다로운 일임.

모음 발음을 이용한 머신러닝을 이용한 파킨슨 병 진단 (영어) -> 한국권에 사용할 수 없을까?? 라는 아이디어로 시작


<해결과제> 소규모 언어 데이터로 모델을 만들 수 없을까?  유사한 데이터만 있을 때 모델을 어떻게 만들까?


전이학습을 통한 데이터 증가(transfer learning ??) -> 유의미한 데이터인지 확인 (Optimal Brain Damage??)


음성데이터를 스팩트럼화하여, ML 알고리즘으로 판단. (GAN)


딥러닝된 모델을 실제로 쓰기위해서는 하드웨어화가 필요했음.

이채영님의 만남으로 양서연님의 ML 모델링을 라즈베리파이에 이식하게됨.


라즈베리파이에서 ML을 구현하는 방법

로컬 방식 : 사용자 목소리 -> Tenser flow lite 이용해서 로컬에서 ML 으로 판단

서버 방식 : 사용자 목소리 -> 서버로 전송 (재학습 가능) Flask, mango ...  Google ML cloud 등을 이용해서 판단


하드웨어는 라즈베리파이로, OS 는 안드로이드 Things 를 이용해 Input -> 분석 -> 출력함.


안드로이드 Thing으로 개발환경을 구축해서 Tenserflow 로 ML 앱을 만드는 것까지 설명함.


모바일이 아닌 라즈베리파이로 하드웨어를 선택한 이유 : 

실제 파킨스병에 걸린 환자들에게 맞는 전용 하드웨어를 만들고 싶었음.

네트워크를 비롯한 복잡한 환경은 필요없음. 전용 하드웨어, UI 등을 구현하기 위함.


소스 : https://github.com/deeplearning-hardware-project/parkinson-project



ML에 대한 배경지식이 너무 없어서 알아듣지 못한 부분이 너무 많음.

고3이 이러한 연구를 하고 있다는 것이 신선한 자극이었음. 

많은 청중들이 같은 마음이었을 것으로 판단됨. 내가 들은 세션들 중 가장 Q&A가 많았음.



장인수 님의 Flutter 101 

플로터와 네이티브 엑티비티의 비교하며 발표를 진행하심.


플로터의 장점

1. 높은 생산성 : 머터리얼 디자인, i-os 디자인 제공 분기로 디바이스에 맞는 디자인 가능

2. 퍼포먼스가 좋음. 브릿지가 없음

3. 네이티브 엑티비티보다 커뮤니티의 규모는 작은 편이나 1년이라는 언어 생성기간을 감안하면 크게 성장하고 있음.

4. 스타일 형태를 위젯에 인라인으로 작성해야함. 리엑티브처럼 분리하여, 여러 위젯에 적용할 수 없음.


플로터는 모든 것이 위젯으로 되어 있음.

위젯은 stateless, stateful 위젯으로 나뉨.

stateless 위젯은 값이 변경되도 view 갱신이 되지 않음. 1번만 그려짐

stateful 위젯은 값이 변경되면 view 갱신이 됨.


간략한 데모



김용준 님의 Android DataBinding for Modularization, ViewModel and Testing

안드로이드 Component 뿐만 아니라 비지니스 레이어, 도메인 레이어도 중요함.

두 레이어를 잘 구성하고, 다루면 i-os 로 넘어가도 잘 적응 할 수 있음. 컴포넌트만 배우면 된다고 생각함.


하지만, 안드로이드를 개발하다보면 Component 단과 두 레이어단이 섞이게 되어 있음.

그래서, 프리젠터를 사용하다보면 재사용성-모듈화가 어려움.


어떻게 하면 프리젠터를 비지니스단에 가깝게 할 수 있을까?

비지니스단에 가까우면 자연스레 모듈화-쉬운 테스트를 할 수 있지 않을까?


-> 데이터 바인딩!!


데이터 바인딩 하는 방법을 예제 소스를 통해 설명 : 추후 자료를 통해 확인 필요


안드로이드 공식문서의 데이터 바인딩을 한번 읽어보고, 다음 개발 때 적용해봐야겠다.



정현지 님의 Android Oreo&Pie 업데이트하기

오레오, 파이에서 변경된 부분을 정리 + 예제와 함께 설명함.

메모하기엔 양이 많아 발표 자료가 올라오면 그걸 다시 봐야겠다고 생각하고, 세션 발표에 집중함.




※ 2018 DevFest 홈페이지 :  https://devfest-seoul18.gdg.kr/




맺음말

#1. 대구에는 이런 대형(?) 개발자 행사가 없다는 것이 너무 아쉽다.

사실 티켓값 뿐만 아니라 식대 + 교통비 + 오고 가는 시간을 하면 매번 참석하는 것은 부담스럽다.

차선책이 GDG 부산 참여? 정도다. 대구 경북 가까운 곳에 GDG 행사 뿐만 아니라 다른 많은 개발 행사들이 있었으면 좋겠다.


IT 관련 업계에서 일 하다보면 수도권의 이런 컨퍼런스와 개발자 네트워크들이 부러울때가 많다.



#2. 공부!! 공부!! 공부!! 

     RX와 코틀린 공부 좀 해야겠다. 예제코드들의 많은 부분이 코틀린으로 되어 있더라.

     근데, ML도 공부하고 싶고...아키텍처도 공부해야할 것 같고...

     아무튼 공부가 아주 많이 필요하다.



#3. 다음 사이드 프로젝트 진행 때는 MVP, MVVM 아키텍처, 데이터 바인딩, UDA 등 배운 것들을 활용해서 개발해보고 싶다.



#4. 진로의 고민, 블로그라 내 고민들을 모두 적을 수는 없지만...

     메인이 IT 서비스가 아닌 제조업 전산실에서 운영업무를 주로 하다보니 성장에 한계가 있는 것 같다. 

     개발자로서의 커리어에도 별로 큰 도움이 안되는 것 같다.

     정말 진짜 개발자, 그러니까 오늘 참여한 개발자들과 경쟁해서 승산이 있을 실력이 될 자신감/가능성은 있는가 싶기도 하고..

     KTX 타고 내려오는데 많은 생각이 들었다.