
서비스의 완성도를 위해 몰입하는 Android 개발자
Email | [email protected]
Phone | 010-3334-4727
GitHub / Blog
넓은 시각으로 문제의 맥락과 근본 원인을 먼저 생각하며 해결책을 찾습니다.
회사와 팀의 목표를 위해 기술과 플랫폼은 물론 직무의 경계를 넘어 사고합니다.
Android 개발 철학
- Reactive | 데이터와 상태의 변화가 화면으로 일관되게 이어지도록 합니다.
- Kotlin Flow의 데이터 흐름과 구독 수명, 연산자의 전환과 취소 동작을 고려해 스트림을 설계합니다.
- SSOT | 같은 데이터를 여러 곳에서 따로 수정하지 않도록, 데이터별 기준 저장소와 갱신 책임을 명확히 합니다.
- Database | 앱 로컬 데이터베이스를 적극적으로 활용하여 화면 간 데이터 일관성을 유지합니다.
- Model | 책임과 역할, 데이터 범위가 명확한 도메인 모델을 설계합니다.
경력
액션파워
Android Developer
2026.01 - 현재
다글로 공식 앱 소개 / Google Play
다글로 공식 앱 소개 / Google Play
회의와 강의 및 인터뷰 기록을 업무와 학습에 활용하는 AI 노트테이커
공식 서비스 / Google Play
음성과 영상 및 문서를 텍스트로 정리하고 요약과 AI 질의응답으로 필요한 정보를 찾아 활용하는 서비스
주요 기능
- 녹음과 받아쓰기 | 회의와 강의의 음성 및 영상 파일을 검색하고 편집할 수 있는 텍스트로 변환
- AI 요약 | 긴 기록의 핵심 내용을 정리하고 원하는 템플릿으로 요약
- AI 채팅과 보드챗 | 다양한 AI 모델과 대화하고 내 기록을 바탕으로 질의응답
- 자료 활용 | YouTube 요약, PDF 분석, 문서 번역 등 업무와 학습 지원
📍담당 기능
1️⃣ 서비스 내 Workspace 도입
- Workspace를 구분하기 위한
workspaceId를 암시적인 전역 상태가 아닌 화면의 식별자로 설계
- 음성 녹음과 파일 업로드를 비롯한 AI 채팅 등 서비스 전체 기능에 대해 UI → Repository → Network 레이어를 거쳐
workspaceId를 명시적 전달 적용
- 전체 API 요청 헤더에
workspaceId를 적용
- Room의 데이터 저장 및 조회 구조를 워크스페이스 단위로 개편하여 로컬 데이터가 각 스페이스에 맞게 처리되도록 구현
- 워크스페이스 비활성화, 접근 불가능 등의 예외를 위한 전역 오버레이로 접근 제한 구현
- 설계 상세
2️⃣ 통화 녹음 자동 받아쓰기
- 통화 종료 → 녹음 파일 탐색 → 업로드 → 받아쓰기 요청으로 이어지는 생성된 통화 녹음에 대한 받아쓰기 요청 자동 처리 구현
- PhoneState를 활용하여 Room에 모든 통화 세션에 대한 시각 정보 저장
- 파일 탐색 WorkManager, 받아쓰기 요청 Workmanager로 Worker 책임에 따른 작업 분리
- 파일 기반 고유 작업으로 중복 받아쓰기 요청을 방지하기 위한 예외처리 적용
- Contact Picker를 활용해 별도의 연락처 접근 권한 없이 사용자가 선택한 연락처를 불러와 저장
- 구현 상세
3️⃣ Multi Model AI 채팅 유지보수
- GPT / Claude / Gemini / Perplexity / Grok 등의 AI 모델을 선택해 대화할 수 있는 AI 채팅 기능 유지보수
- Ktor SSE로 응답을 스트리밍 수신하고, 대화 ID와 응답 메시지를 비롯한 종료 및 오류 이벤트를 앱 내부 모델로 변환해 화면에 실시간 반영
- 응답 생성 중지와 재시도를 지원 및 플랜 부족(403)과 요청 한도 초과(429) 및 컨텍스트 한도 초과 등에 대한 예외 처리
- 모델별 파일 제한과 PDF 암호와 페이지 수를 검사해 업로드 가능 여부를 사전 판정
- 파일 크기와 확장자 및 MIME 타입과 이미지 해상도를 모델별 제한에 맞춰 검증
4️⃣ 커스텀 요약 템플릿 (기본 CRUD 구현)
- 사용자가 요약 지침을 직접 생성하고 조회하며 수정하거나 삭제하는 맞춤형 템플릿 기능 구현
- 사용자와 워크스페이스별 Room 캐시와 수정 및 삭제의 즉시 반영 및 실패 시 복구 처리
- 사용자와 워크스페이스 및 언어를 기준으로 템플릿과 카테고리를 저장하고 Flow로 관찰
- 수정 및 삭제 전 데이터를 보관해 서버 요청 실패 시 로컬 상태를 되돌리는 낙관적 업데이트 적용
- Remote Config로 템플릿 생성 가능 개수와 입력 길이 제한을 받아 기능 정책에 반영
- 템플릿 요약 요청 후 진행 상태를 Room에 저장하고 결과 조회로 갱신
- 사용자 Plan별 제공 가능 여부에 대한 분기 처리
- 기능 사용 시도 시 Credit이 부족한 경우 플랜을 안내하는 예외처리 적용
- 템플릿 요약 요청 후 Polling으로 처리 상태를 주기적으로 확인하고, 완료된 요약 결과를 화면에 반영
5️⃣ Glance를 활용한 홈 화면 위젯 구현 / Shortcut 구현
- 4×2 / 2×1 / 1×1 크기의 Glance 위젯으로 녹음과 AI 채팅 진입 경로 제공
- 딥링크 진입 시 선택한 워크스페이스 유지, 앱의 라우트 정의로 경로 일원화
- ActionCallback에서 클릭 이벤트 기록 후 기능 화면으로 이동
- WidgetDeepLinkProvider와 Hilt EntryPoint로 순환 의존 없이 앱 라우트 사용
📍리팩토링 기여
Untitled
📍기타 기여
- Android Playground | 프로덕트 팀이 Android 신기술을 직접 사용하고, 조작해볼 수 있는 데모 환경 구현
- Design System Catalog | 사내 디자인 시스템의 Compose 컴포넌트와 토큰을 직접 확인하는 카탈로그 앱
- Android Firebase Crashlytics <> Slack 연동 | Firebase 콘솔의 Slack 기본 연동을 설정해 팀의 크래시 알림 연결
프로젝트
프로젝트