2019.11.16
컨퍼런스를 다니며 기억보단 기록을 하고자 합니다
안녕하세요 이번에는 DevFest Seoul에 이어 Pangyo에서 진행된 DevFest에 다녀왔습니다.
2019. 11. 15 (금) DevFest Pangyo 2019
판교 DevFest에서는 자유롭고 즐겁게 놀 수 있는 페스티벌인만큼
AI, Android, Web, Community 뿐만 아니라 개발자들이 함께 어우러져 즐길 수 있는 시간을 준비해주셨습니다.
이번 행사는 금요일 퇴근시간 이후에 진행되는 행사여서 퇴근 후 바로 판교로 출발하였습니다.😁 판교 카카오 오피스에 도착해서 티켓 확인 후 입장할 때 기념품을 받을 수 있었습니다. (안경닦이와 스티커! Fun Thing is Good!!)
그리고 이번 행사의 스폰서인 카카오에서는 장소 지원을 해주었고, 스푼 라디오와 강남언니에서도 기념품을 제공해주었습니다. 또 SNS 이벤트와 스푼에서 무려 이번에 완전 신상인 에어 팟 프로를 경품 추첨을 하는 등 다양하게 준비되어있었습니다. (에어 팟 프로는 살짝 기대했지만... 저 멀리..ㅠㅠ)
또한 다양한 음료와 맥주도 준비되어있으며, 서브웨이의 샌드위치도 많이 준비되어있었습니다.👍🏻👍🏻
제일 앞라인에 앉아 세션을 들을 수 있었습니다. 세션은 A트랙과 B 트랙을 나누어 진행되었으며, 제가 앉아 있는 쪽이 키노트와 A트랙이 진행되는 곳이고, 행사장 반을 기준으로 A트랙 반대편에서 B 트랙이 진행되었습니다. (저는 Android와 관련이 있는 A트랙에 참여하였습니다)
이제 제가 참여한 트랙에서 어떤 내용으로 행사가 진행되었는지 하나씩 알아보겠습니다.
● ML을 여행하는 안드로이드 히치하이커를 위한 안내서 - 안성용
사진을 찍어 ML을 적용하고 이미지 결과물을 만들어 저장하는 과정을 발표해주셨습니다.
사진을 찍기 위해서는 CameraX API를 사용해서 사진을 찍을 수 있고, 3rd-party lib를 이용해서 찍을 수도 있습니다.
해당 사진을 찍은 결과물은 아래와 같은 타입으로 반환하게 됩니다.
이런 데이터를 Bitmap형태로 변환하기 위해 Firebase의 VisionImage를 이용하여 쉽게 변환할 수 있습니다.
이제 ML을 적용하기 위해서 TensorflowLite를 사용하여 이미지를 Detection 하고 ML Kit을 이용하여 아래와 같은 결과를 얻을 수 있다고 합니다.
1. Take a photo
● from Camera
○ Camera1 API (API 21 미만)
○ Camera 2 API (API 21 이상)
○ CameraX API (API 21 이상, Alpha)
○ dependency : 'androidx.camera:camera-view:1.0.0-alpha03'
○ 3rd-party lib: 'com.otaliastudios:cameraview:2.4.0'
2. Use magic (ML)
● FirebaseVisionImage
○ dependency : 'com.google.firebase:firebase-ml-vision:24.0.0'
○ dependency : 'com.google.firebase:firebase-ml-model-interpreter:22.0.0'
3. Save a image
● Android Q부터는 저장소 정책이 변경되면서 Scoped Storage를 고려해주어야 합니다.
● Stetho의 후계자 Flipper 다루기 - 안세원
1. Flipper란?
● Facebook에서 만든 애플리케이션 동작 모니터링 도구
● 독립된 데스크탑 클라이언트를 이용해 모니터링 수행
● IOS와 안드로이드 지원
2. 기본 제공 플러그인
● 디바이스 플러그인
○ CrashReporter : Crash발생 시 OS의 알림으로 알려주고, Crash내역 표시
○ Logs : 로그 캣, 필터링도 가능
● 앱 플러그인
○ Databases : DB 조회, SQL 실행 가능
○ NetworkPlugin : OkHttp 네트워크 로깅
○ SharedPreferenceView : SharedPreference 조회
○ Layout : Acitivity 뷰 레이아웃 조회
3. 의존 관계 추가
'com.facebook.flipper:flipper:0.28.0'
'com.facebook.soloader:solader:0.8.0'
4. Application 설정
class MyApplication : Application() {
ovveride fun onCreate() {
super.onCreate()
SoLoader.init(this,flase)
if(FlipperUtils.shouldEnableFlipper(this)) {
val client = AndroidFlipperClinet.getInstance(this)
// plugin 추가
client.addPlugin(..)
client.start()
}
}
}
5. Stetho와 비교
구분 | Flipper | Stetho |
데스크탑 클라이언트 | 전용 애플리케이션 | Chrome브라우저의 Inspector 도구 |
지원 앱 플랫폼 | IOS/Android | Android |
플러그인 | 전용 애플리케이션에 GUI로 등록됨 | 커맨드라인 기반 |
6. 장/단점
● 장점
○ 커넥션이 더 안정적이다.
○ 웹에 끼워 맞추느라 어색했던 표현이 훨씬 자연스러워졌음
○ GUI 기반
● 단점
○ 별도 클라이언트를 설치해야 해서 번거로움
○ Stetho와 달리 앱과 클라이언트 양쪽에 플러그인을 개발해야 함
7. 이슈
● 일부 안드로이드 기종에서 플로그인 인식되지 않음.(삼성....)
● SoLoader가 문제를 일으킨다.
8. 마무리
● SoLoader가 문제가 될 환경이라면 위험하다.
● dumper plugin을 잘 쓰고 있다면 옮겨갈 필요가 있을까?
● Chrome Inspector의 연결 문제 때문에 짜증이 났다면 Flipper가 매력적이다
● GUI 기반 플러그인이 맘에 든다면 Flipper가 매력적이다.
● 최신 AndroidX 체크 - 노현석
1. Introduction AndroidX
Jetpack - 라이브러리, 도구, 가이드 등의 고품질 앱을 손쉽게 개발하기 위한 개발 지침
AndroidX - Android팀이 Jetpack 내에서 라이브러리를 개발, 테스트, 패키징, 버전 관리, 출시하는 데 사용하는 오픈소스 프로젝트
AndroidX는 Support 라이브러리와 마찬가지로 Android OS와 별도로 업데이트되며, Android 버전 전체에서 이전 버전과의 호환성을 제공합니다. AndroidX는 동일한 기능과 새로운 라이브러리를 제공하여 Support 라이브러리를 완전히 대체합니다. 또한 AndroidX에는 다음 기능이 포함되어 있습니다.
-
AndroidX의 모든 패키지는 androidx라는 문자열로 시작하는 일관된 네임스페이스에 있습니다. 지원 라이브러리 패키지는 해당하는 androidx.* 패키지에 매핑되었습니다. 모든 이전 클래스와 빌드 아티팩트를 새 클래스와 빌드 아티팩트에 완전히 매핑하려면 패키지 리팩터링 페이지를 참조하세요.
-
지원 라이브러리와 달리 AndroidX 패키지는 별도로 관리 및 업데이트됩니다. androidx 패키지는 버전 1.0.0부터 엄격한 Semantic Versioning을 사용합니다. AndroidX 라이브러리를 프로젝트에서 독립적으로 업데이트할 수 있습니다.
-
모든 새로운 지원 라이브러리 개발은 AndroidX 라이브러리에서 일어납니다. 여기에는 원래 지원 라이브러리 아티팩트 유지보수와 새로운 Jetpack 구성요소 도입이 포함됩니다.
Jetpack 구성요소는 AndroidX 라이브러리의 일부입니다. Jetpack 홈페이지에서 구성요소에 대해 자세히 알아보세요.
2. Android Components
● Fragment에서 onBackPressed
lateinit var dispatcher : OnBackPressedDispatcher
lateinit var callback: OnBackPressedCallback
override fun onAttach(context: Context) {
super.onAttach(context)
dispatcher = requireActivity().onBackPressedDispatcher
callback = dispatcher.addCallback(
//Lifecycle owner
this
) {
fragmentService.fragmentsCount--
//Called when user should be navigated back
callback.isEnabled = false
dispatcher.onBackPressed()
}
}
기존에는 Fragment에서 backpressed를 하기 위해서는 boilerplate code 많았습니다. 하지만 이제 OnbackPressedDispatcher로 처리할 수 있습니다. 더 자세한 정보는 해당 링크를 참조해주세요.
https://www.netguru.com/codestories/whats-new-in-fragments
https://developer.android.com/reference/androidx/activity/OnBackPressedDispatcher
● LiveData & ViewModel
AAC ViewModel의 초기화 변경사항이 있습니다.
'androidx.lifecycle:lifecycle-*:2.2.0-alpha03'부터 초기화 방식이 기존 ViewModelProviders.of()가 Deprecated 되고 ViewModelProvider(ViewModelStoreOwner) 방식으로 변경되었습니다. 자세한 정보는 https://developer.android.com/jetpack/androidx/releases/lifecycle에서 확인할 수 있습니다.
3. AndroidX in Android Dev Summit
● Jetpack Compse
● FragmentContatinerView
● Room
● Flow
● Coroutines
● CameraX
● Motion Editor
Dev Summit과 관련된 내용은 Android Developers Youtube에 올라와있으니 확인 보시면 좋을 것 같습니다.
● 함수 이어서 사용하는 방법으로 자바스크립트 게임 만들기 - 황병렬
● 잡초 제거 게임
https://js13kgames.com/entries/angle
● 테스리스 게임
https://afrontend.github.io/game/fp-tetris-game/
● 뱀 게임
https://afrontend.github.io/game/fp-snake-game/
● 블록게임
https://afrontend.github.io/game/fp-block-game/
● 커뮤니티에서의 다양성 - 하현주
●Rank-driven organization : 위계 조직
- 윗사람의 결정에 따라 최대한 빠르게 움직인다
● Role-diven organization : 역할 조직
- 각자가 자신의 역할에 따라 책임감을 가지고 의사 결정을 하고 업무를 수행한다.
역할 조직에서 이상적인 구성원은 항상 묻고 의견을 내고 제대로 의사결정을 하는,
잘못된 의사결정을 할 위험을 최소화하면서 일하는 사람이다. - 실리콘밸리를 그리다 중 -
"보이면"
"알게 되고"
"알면"
"이해하게 된다."
몇 자 안 되는 문장이었지만 너무 공감되는 말이었습니다.
요즘 그런 이야기를 종종 듣습니다. "그런 거 갈 시간에 다른 공부를 더해라"
저는 다르게 생각합니다. 제가 학부생 때는 이런 행사가 있는지 조차 몰랐습니다. 그리고 알고 있었다 한들 대부분의 행사가 수도권에서 열리는 만큼 지방에 있었던 저로써는 참석하기 까다로웠을 겁니다. 하지만 수도권으로 취업해 올라오면서 이런 행사가 있는 것을 알게 되었고, 새로운 기술들의 발표 현장에 참석하게 되면서 그만큼 새로운 것을 알게 되고, 공부하고 다른 개발자들이 어떻게 개발하는지 알게되고 많은 것을 얻을 수 있었습니다. 그리고 항상 이런 행사에 참여하면 커뮤니티의 중요성이 더욱 크게 다가옵니다.
서로 존중하고 이해하며, 정보를 공유하는 개발 문화가 더욱 퍼졌으면 좋겠습니다.
● 마치며
A트랙의 앞의 3개 세션은 기술과 관련된 내용을 주로 다루었다면, A트랙의 뒷 3개 세션은 커뮤니티와 관련된 내용을 주로 다루어 발표가 진행되었습니다. 좀 더 많은 것을 느낀 발표들이었고, 각자의 다양한 경험을 공유한다는 것에 큰 매력을 느껴 항상 이런 행사들을 찾아다니게 되는 것 같습니다. 앞으로도 다양한 행사에 참여하며 후기글을 올려 보도록 하겠습니다. 읽어 주셔서 감사합니다.😉
감사합니다.
❤️
Love YourSelf
'컨퍼런스' 카테고리의 다른 글
[컨퍼런스] Android Dev Summit 2019 EXTENDED SEOUL 참석후기 (2) | 2019.12.21 |
---|---|
[Hackathon] DODO 14회 참석 후기 (0) | 2019.09.28 |
[컨퍼런스] Android Studio Build Talk 후기 (0) | 2019.09.23 |
[컨퍼런스] 제3회 99콘<이력서> 후기 (1) | 2019.09.21 |
[컨퍼런스] 안드로이드 탐구영역 (0) | 2019.09.01 |