미리보기
기본 정보
안드로이드 개발자로서, 비동기 처리의 변화와 발전을 직접 경험했습니다. 초기에는 AsyncTask로 비동기 작업을 처리했지만, RxJava를 도입하며 더 간결한 코드와 뛰어난 가독성을 익혔습니다. 이후, Coroutine과 Flow를 적용해 보다 효율적이고 유지보수하기 쉬운 코드를 작성하며, 모든 프로젝트에 클린 아키텍처를 도입했습니다. 새로운 기술을 적극 수용하고 이를 통해 더 나은 결과를 만들어내는 것에 항상 열정을 가지고 있습니다.
기술 스택
Android, Java, Kotlin, Flutter, iOS
프로젝트
가상 e-Amusement Application
개인
2024.07. ~ 진행 중
프로젝트 개요:
앱 기능: 이 앱은 코나미사의 아케이드 게임에 사용하는 e-Amusement PASS 카드를 스마트폰에서 가상으로 에뮬레이션하여, 실제 카드를 들고 다닐 필요를 없앱니다.
주요 기술: NFC(HCE-F), Jetpack Compose, MVVM.
기술적 타협: 원칙적으로 ViewModel은 Android 플랫폼에 의존하지 않아야 하지만, NFC 기능을 사용하기 위해
Context
를 View로부터 주입받는 구조를 선택했습니다. 이 부분이 기술적으로 아쉽지만 불가피한 선택이었습니다.현재 상태: 지속적으로 개발을 진행 중입니다.
배운 점:
기존의 XML 기반 UI 개발은 XML과 코드 간의 Databinding 과정이 복잡했으나, Flutter나 SwiftUI와 같은 선언형 UI 방식인 Jetpack Compose를 사용하면서 UI를 코드에서 직접 선언할 수 있어 개발이 훨씬 수월해졌습니다. 가독성도 크게 개선되었습니다.
Coinminer
개인
2022.07. ~ 2022.09.
프로젝트 개요:
앱 기능: 이 앱은 이더리움 채굴 풀의 현황을 모바일로 확인할 수 있도록 데이터를 파싱하여 표시해주는 애플리케이션입니다.
주요 기술: Flutter, 채굴 풀 데이터 파싱, 블록체인.
개발 배경: 이더리움이 POS로 전환되기 전에 GPU 기반 채굴을 진행한 경험이 있으며, 채굴 풀 현황을 모바일로 확인할 수 있는 앱이 없어서 이를 개발하게 되었습니다.
현재 상태: Flutter를 이용해 모바일 앱으로 채굴 풀 데이터를 시각적으로 제공하는 기능을 구현하였습니다.
배운 점:
Flutter를 처음 도입하여 개발을 진행하면서 다양한 UI 구성과 네트워크 데이터 처리 방법에 대해 학습할 수 있었습니다.
블록체인 기술의 발전 과정 중 POW에서 POS로의 전환을 직접 경험하며, 채굴 풀 데이터를 분석하는 방법에 대한 이해를 높였습니다.
프로젝트 코드: GitHub Repository
Passcode - 패스워드 저장 애플리케이션
개인
2021.01. ~ 2021.03.
프로젝트 개요:
앱 기능: 이 앱은 개인 계정 및 패스워드를 암호화된 데이터베이스에 안전하게 저장하는 애플리케이션입니다.
주요 기술: Kotlin, Room.
기술적 고려사항: 애플리케이션의 특성상, 패스워드를 원문 그대로 저장하지 않고 암호화하여 저장해야 했습니다. 또한 메모리 내에서 패스워드 원문이 유출되지 않도록 보안에 많은 신경을 썼습니다.
현재 상태: RSA 암호화 방식을 적용하여 패스워드를 안전하게 저장하는 기능을 구현하였으며, 지속적인 보안 개선을 목표로 하고 있습니다.
배운 점:
패스워드와 같은 중요한 개인정보를 처리하는 과정에서 앱 보안의 중요성을 깊이 이해하게 되었습니다.
RSA 암호화 방식에 대해 공부하면서, 암호화된 데이터를 안전하게 저장하는 방법을 익혔습니다. 또한, "안드로이드 앱의 Persistent data를 제대로 암호화해 보자! (1/2)"와 같은 자료를 참고하며 개발을 진행했습니다.
참고:
안드로이드 앱의 Persistent data를 제대로 암호화해 보자! (1/2)
여행 관련 애플리케이션 리뉴얼
개인
2018.07. ~ 2018.09.
프로젝트 개요:
앱 기능: 이 앱은 저렴한 항공권을 조건에 맞게 검색하여 결과를 보여주는 여행 관련 애플리케이션입니다.
주요 기술: RxJava2, Retrofit2, ViewPager, Glide, AirCalendar.
기술적 도전: 외주 프로젝트였기 때문에 디자인이 이미 정해져 있었고, 그 디자인에 맞춰 프로그래밍하면서 다양한 어려움을 해결했습니다.
특징적인 작업: AirCalendar라는 오픈소스 달력 라이브러리를 수정하여, CustomView를 클라이언트 요구에 맞게 구현했습니다. 또한, ViewPager를 이용해 각 지역에 맞는 특가 항공권을 표시했으며, 이미지 로딩에는 Glide 라이브러리를 활용했습니다. Glide는 타 라이브러리보다 무겁지만 확장성과 이미지 로드 성능 면에서 더 나은 선택이라고 판단했습니다.
배운 점:
클라이언트의 요구에 맞춘 복잡한 UI를 구성하는 다양한 방법을 외주 프로젝트를 통해 알게 되었습니다.
디자이너와의 협업을 위해 Zeplin을 사용하여 원활한 소통을 이루었습니다.
Kok!
개인
2018.10. ~ 2018.11.
프로젝트 개요:
앱 기능: 특정 장소에 사용자가 방문했다는 흔적을 남기고, 이를 통해 다른 사용자와 소통할 수 있는 SNS 앱입니다.
주요 기술: Android, Java, Kotlin, Node.js(백엔드), MongoDB, Retrofit2(GET 통신), Glide(이미지 처리).
기억에 남는 작업: Node.js 서버를 작성하면서 이미지 저장 기능을 구현한 것이 가장 기억에 남습니다. 이전에 시도해보지 않았던 분야였지만, YouTube 영상 등을 참고하며 끝까지 시도하였고, 결국 기능 구현에 성공하였습니다.
배운 점:
새로운 기술 영역에 도전하며 이미지 저장 처리와 서버 구현에 대한 지식을 쌓았습니다.
프론트엔드와 백엔드의 상호작용을 깊이 이해하게 되었습니다.
반려견 관리 앱 개발
개인
2018.07. ~ 2018.08.
프로젝트 개요:
앱 기능: 이 애플리케이션은 애견인을 위한 앱으로, 사료 자동 배급, 원적외선 원격 제어, 애견과의 통화, 원격으로 음악 재생, 사료 자동 구매 등의 기능을 제공합니다.
주요 기술: Kotlin, Java, Retrofit2(서버 통신).
역할 및 기여: 전체 코드의 약 45%를 담당하였으며, 서버 구현 일부, 레이아웃 및 UI 디자인, 그리고 날씨 정보를 가져오는 기능을 구현했습니다.
배운 점:
애플리케이션의 서버와의 통신을 위해 Retrofit2를 사용하면서 안드로이드 네트워크 통신에 대해 더 깊이 이해하게 되었습니다.
공동 개발 프로젝트에서 다양한 기능을 통합하고 조율하는 경험을 쌓았습니다.
네이버 안드로이드 부스트코스 과정 수료
네이버 커넥트재단
2018.06. ~ 2018.07.
프로젝트 개요:
프로젝트 단계: 이 프로젝트는 1단계부터 8단계로 이루어져 있으며, 영화 상세 화면, 한줄평 화면, 영화 목록을 만드는 작업을 포함한 영화 관련 애플리케이션 개발 프로젝트입니다.
초기 사용 기술: Sqlite, RecyclerView, Volley, Fragment, ViewPager.
리팩토링 후 사용 기술: DataBinding, Retrofit2, Room, Coroutine, Kotlin, Dagger-Hilt.
배운 점:
안드로이드 신입 개발자에게 필수적인 Activity, Fragment, RecyclerView, Java 등을 속성으로 배울 수 있는 좋은 기회였습니다.
프로젝트 진행 시기 전후로 안드로이드 개발 패러다임이 많이 변하면서, 리팩토링을 통해 소스코드를 최신 방식으로 업데이트하는 과정에서 많은 것을 배웠습니다.
Volley 대신 Retrofit2를 사용하여 더 나은 확장성을 확보하였고, Room을 사용하여 체계적인 데이터 저장 방식을 도입했습니다.
비동기 처리를 위해 Coroutine을 사용하고, DI를 위해 Dagger-Hilt를 도입하는 등 최신 안드로이드 개발 방식을 적용하였습니다.
포트폴리오
교육
평생교육진흥원
대학교(학사) | 컴퓨터공학과
2020.02. ~ 2024.08. | 졸업
자격증
정보처리기능사
취득 | 한국산업인력공단
2011.09.
외국어
영어
비즈니스 회화 가능