
드로이드 나이츠
올해도 여김 없이 한국에서 가장 큰 안드로이드 콘퍼런스 중 한 개인 드로이드 나이츠가 계최되어 이번에 다녀오게 되었습니다. 몇 년 동안 코엑스에서 진행했지만 이번에는 후원사가 줄어서 그런지 강남에 있는 과학기술컨벤션 센터에서 진행하게 되었다

상대적으로 협소한 장소로 변경된 만큼 트랙도 줄어들고 티켓수도 그만큼 줄어서 티켓 예매 시작한 지 몇 시간 만에 매진되어서 못 갈 뻔했지만 다행히도 올해 최대 스폰서인 Revenue Cat이 초대권을 주셔서 다녀올 수 있었습니다.
Revenue Cat은 개발자들이 더 많은 돈을 벌 수 있도록 도와주는 목적을 가지고 있어서 인앱 구매, 구독등 빠르게 도입할 수 있는 서비스를 제공하고 있습니다. 노션, 오픈 AI 등 유명한 기업들이 현재 사용 중이라고 하네요. 이번에 초대권을 주셔서 정말 감사합니다!

트랙 구성


2023, 2024년과는 다르게 이번에는 트랙 2개만 운영하고 이전과 동일하게 7개의 셰션을 운영을 했다.
수는 줄었지만 여전히 한국에서 안드로이드 최대 콘퍼런스 중 한 개다 보니 흥미로운 주제들이 몇 개 보여서 간단한 요약과 후기를 적어보겠습니다. 더 자세한 내용은 나중에 올라올 영상을 통해 확인해 주세요
1. ReadMoreTextView: 텍스트 '더 보기' 기능 구현하기
첫 번째로 들었던 세션은 더 보기 버튼을 텍스트 뒤에 구현하는 방법에 대한 내용을 들었다. 최근에 일하면서 비슷한 요구사항이 있어서 간단하게 Row로 처리했던 기억이 있어서 어떻게 하면 고도화를 진행할 수 있을지 궁금해서 해당 세션을 들었다.

SNS 관련 기능들이 있는 앱에서 자주 볼 수 있지만 아직은 플랫폼상에서 지원이 안되다 보니 라이브러리의 도움을 받을 수밖에 없다. 하지만 흔히 사용되는 라이브러리 두 개가 있지만 한쪽은 텍스트를 업데이트하는 타이밍이 안 맞아서 깜빡이는 현상이 있고 한쪽은 아직 이모지 지원을 안 하다 보니 직접 구현을 했다고 합니다.
xml은 TextPaint의 Textmeasurer 그리고 컴포즈는 1.3 이상에서 지원되는 Textmeasurer를 사용해 더 보기 버튼을 보여줄 공간을 남겨두고 텍스트 한 개로 보여주는 방식을 구현을 했다. 이 세션을 듣고 나서 어떻게 고도화를 해야 할지 감은 잡았지만 짧은 시간 탓에 코드를 더 봐야겠다는 생각이 들었다
2. Benchmark와 BaselineProfile을 사용해 LazyColumn 스크롤 성능 개선
작업한 화면에서 성능은 어떨지 궁금하여 Benchmark를 짜본 적이 있는데 더 자세하게 알기 위해 해당 세션을 들었다.
해당 세션에서는 아래의 내용을 담고 있었다:
- 안드로이드 컴파일 단계 설명을 통해 벤치마크 측정 옵션을 설명
- 벤치마크를 통해 이미지 로딩을 개선
- 커스텀 UI 구현체를 통한 최적화
- 람다를 통한 리컴포지션 최적화
비록 제목에 있는 Benchmark 때문에 자세하게 벤치마크를 진행하는 방법에 대해 알 수 있다고 생각하여 들었지만, 벤치마크 보단 최적화에 집중을 하고 있으셔서 원하는 것은 못 얻었지만 컴포즈 최적화에 대한 생각을 더 넒힐 수 있었습니다.
3. 제미나이와 함께 안드로이드 공부하기
다음은 최근 인공지능이 여기저기 사용되고 있다 보니 이를 공부에도 적용하고 싶은 생각이 있어서 해당 세션을 들었다
이 세션에서는 주로 제미나이가 포함되어 있는 다양한 툴을 소개하며 어떻게 사용할 수 있는지 설명을 했다
- 문서 학습을 통해 할루시네이션을 최소화: https://notebooklm.google/
- Firebase Studio or Android studio에 추가된 제미나이를 통해 프로젝트 분석
이를 통해 아래에 있는 이점들을 가져갈 수 있을 것 같습니다
- 개념에 대한 더 깊은 이해 가능
- 코드 분석 과정이 더 효율적이고 쉬워짐
- 실험 단계까지 동기부여가 됨
- 영어 번역, 커밋 메시지 작성 등 부가적인 도움 가능
4. Android에서 실현 가능한 모든 AI
해당 세션도 지난번과 동일하게 AI를 더 활용하고 싶은 생각 때문에 듣게 되었습니다
3번째 세션과 다르게 이번 세션에서는 주로 온 디바이스 AI같이 안드로이드 앱에서 사용할 수 있는 AI들을 소개했습니다
- 온 디바이스 AI의 장점
- 적용 방법 등등
5. 컴포즈 스냅숏 내부원리 찍어먹기
컴포즈 내부에서 상태를 관리할 때 SnapShot이라는 기능을 사용하고 있는데 내용이 어렵다 보니 이번 세션을 듣게 되었습니다
이번 세션에서는 주로 아래의 내용을 다뤘습니다:
- MVCC: 스냅숏은 데이터베이스의 특정 시점 데이터 상태를 복사하여 저장하는 기술과 유사합니다
- Snapshot 시스템은 Git 브랜치 시스템과 유사하게 작동
- StateRecord와 값 조회
- Snapshot 규칙
- Compose와 Snapshot의 연결
6. 다양한 스크롤 뷰에서의 영상 재생
피드가 있는 서비스에서 영상을 보여주고 싶을 때 제대로 관리를 안 한다면 영상 잔상, 버벅거림, 화면 밖 재생 등의 이슈들이 발생할 수 있다 보니 이번 세션을 듣게 되었습니다
이번 세션에서는 주로:
- 영상 렌더링 방식: SurfaceView, TextureView 개념
- 메모리 및 인스턴스 관리 디자인 패턴: 다양한 디자인 패턴을 통해 메모리를 효율적으로 관리
- 플레이어 상태 및 기능 관리: Exoplayer의 개수를 관리하여 플레이어의 상태를 관리
- 영상 재생 컨트롤: 다양한 스크롤 뷰에서 어떤 영상을 재생시키고 어떤 영상은 멈출지 관리
비록 해당 세션에서는 조건을 지정하여 어떤 상황에서는 어떤 영상을 플레이할지 정해져 있는 방식이라 다양한 상황을 고려하기 힘들고 메모리 관리를 Exoplayer가 아닌 직접 구현하셨지만. 많은 인사이트를 얻을 수 있었습니다
7. Bytecode Manipulation을 통해 생산성 높이기
보일러 플레이트를 줄이기 위해 다양한 시도를 해봤는데 더 좋은 방법으로 생산성을 높이기 위해 해당 세션을 들었다
기존에는 아래 같은 방법을 썼지만 개발자가 어떤 방법들이 있는지 미리 알고 있어야 하는 불편한 점들이 있었다:
- 함수 정의 및 호출
- 공통 유틸 객체 활용
- 확장 함수 정의
여기서 사용할 수 있는 방법이 바이트코드 조작이다.
이미 컴파일된 클래스 파일(바이트코드)을 대상으로 코드를 삽입하거나 변형을 할 수 있다 보니 있다 보니 기존 코드를 수정하지 않아도 원하는 요구사항을 해당되는 코드에 적용할 수 있다 보니 잘 쓴다면 정말로 유용한 기술이 될 것 같았다
단지 해당 기술을 적용할 때는 이것들도 고려해야 한다:
- 디버깅이 어려움
- AGP나 코틀린 버전 변경 시 코드 재작성 필요
- 사용 목적과 범위에 대한 신중한 판단 필요
최종 후기
이번이 드로이드 나이츠 두 번째 참가인데 확실히 많은 것을 알아갈 수 있었던 것 같다.
단지 이번에 아쉬웠던 점은 후원사가 적어져서 그런지 굿즈의 수나 부스 운영이 많이 줄어서 기존에 있던 재미 포인트가 많이 줄었다.
심지어 항상 주던 드로이드 나이츠 티셔츠를 이번에는 아예 제공이 안된 점이 아쉬웠다
그래도 안드로이드에만 집중하는 콘퍼런스는 많지 않다 보니 식션을 넓이기 위해 참가를 해보는 것도 추천드립니다.
끝
'후기' 카테고리의 다른 글
| 2024 당근 안드로이드 윈터테크 후기 (5) | 2024.03.12 |
|---|