Period.
2022.01.03 - 2022.07.15
2023.07.03 - 2023.10.03
2023.12.27 - 2024.09.30
What I've done.
2023.12 - 2024.09
- iOS 앱테크 런칭
- 키보드에서 타자를 치고 포인트를 적립할 수 있는 앱테크를 런칭하였습니다.
- 앱테크로 전환을 준비하며 다양한 기능을 도입하기 위해 슈퍼앱의 역할로 전환함에 있어서 PureDI 및 Combine, OneWay 도입을 주도하였습니다.
- 웹 입력 깜빡임 완화 기능 제공
- 모두가 불가능하다고 말해왔던 iOS 키보드 익스텐션에 공통적으로 제공되는 문제였던 웹 환경에서의 입력시 깜빡임 이슈를 분석하고, 포기하지 않고 이를 해결할 방법을 적용 및 배포했습니다. (전 세계 최초)
전 후 비교사진 (왼쪽이 전, 오른쪽이 후)


- Combine 도입
- 기존의 레거시 코드를 제거하며, 뷰를 반응형에 맞도록 제작하였으며 추후 전환될 SwiftUI에 유연하게 대응할 수 있도록 코드를 작성했습니다.
- Keyboard Extension에 Pin&Flex Layout 도입
- Keyboard Extension에 Pin&Flex Layout 도입하여 키보드의 성능을 개선했으며, 안정성을 60% 초반에서 98~99%로 끌어올리는데 성공했습니다.
- 이 과정에서 FlexLayout 오픈소스에 기여할 수 있었습니다.
- 미디움 링크

- Multi Thread 운용능력
- iOS 키보드 Extension 내에서 한정된 자원을 효율적으로 활용 및 성능을 개선하기 위해 Modern Concurrency 및 GCD를 활용한 Thread 운용과 Thread Safe하게 코드를 작성한 경험이 있습니다.
- Swift Concurrency & OneWay 도입
- Swift Concurrency를 Alamofire와 함께 도입하며, 이를 유연하게 사용하게 해줄 네트워킹 추상화를 사용했습니다.
- Concurrency를 보다 깔끔하게 사용하기 위해 MVI 아키텍쳐인 OneWay를 같이 도입하여 View와 ViewModel의 역할을 나누었으며, PureDI를 같이 사용함으로써 테스트 가능한 환경을 구축하는데 기여했습니다.
- PureDI 도입 & Storyboard 코드 제거
- TDD를 도입하기 위해 테스트환경을 유연하게 구축하기 위해서 protocol을 이용한 PureDI 서비스 컨테이너를 설계하고, 이를 도입하기 위해 Storyboard 코드들을 제거하는 작업을 진행하였습니다.
- 키보드 자동완성 기능 제공
- UITextChecker를 통한 키보드 자동완성 기능 제작 및 배포에 기여하였습니다.
- BaseViewController 도입
- BaseViewController를 도입하여 뷰 간의 클래스 규격화를 진행하고, 코드 스타일을 전반적으로 점검했습니다.
- AirBridge 도입 & 딥링크 로직 정리
- 기존의 이슈가 많던 Firebase dynamic link를 대체할 Airbridge를 도입하였으며, 링크 스키마를 통한 딥링크 & 디퍼드 딥링크 로직을 정리하였습니다.
- 키보드 아스키아트 기능
- 키보드에서 아스키아트를 보낼 수 있는 기능 제작 및 배포에 기여하였습니다.
- CI/CD 파이프라인 유지보수
- 도입했었던 CI/CD의 파이프라인을 유지보수 및 환경 최신화 & 최적화를 진행하였습니다.
- 빌드 캐싱 적용을 통해 빌드 속도를 20% 개선하였습니다.
- Realm 의존성 제거
- 키보드에서 사용하기에 너무 무거운 Realm 라이브러리 의존성을 제거하여 앱 용량을 줄이고 및 키보드 퍼포먼스 개선을 하였습니다.
- SPM으로 라이브러리 이관 작업
- 추후 Tuist를 도입하기 위해 라이브러리들을 SPM으로 이관하는 작업을 진행하였습니다.
- 그 외 버그 수정 및 유지보수
2023.07 - 2023.10
- 나만의 테마 기능 런칭
- 2주라는 한정된 기간동안 직접 사진을 넣어 커스텀 키보드를 만들 수 있는 나만의 테마 기능을 구현, 런칭하였습니다.
- 50MB라는 키보드의 한정적인 메모리 요구조건을 충족하기 위하여, 이미지 다운스케일링 기능을 사용하였습니다.
- 썸네일 기능을 제공하기 위하여 이미지 합성 기능을 사용하였습니다.
- Gif를 최적화 할 수 있는 기술을 공부 및 사용하였습니다.
- 터치 영역 보정
- 기존에 설정되어 있던 터치영역을 hitArea의 시각화를 통해 잘못된 부분을 검증하고, 기존 의도한대로 터치 영역을 작동시키기 위해 뷰 간의 간격을 재조정했습니다.
- CI/CD 파이프라인 구축
- 오류로 인해 동작하지 않던 Fastlane과 Circle CI를 통한 배포 파이프라인 자동화를 다시 정상적으로 작동하도록 구축하였습니다.
- RxSwift 코드 제거 및 Combine으로의 이전
- 기존 사용하였던 RxSwift를 시대의 흐름에 맞추어 Swift Concurrency와 Combine으로의 일부 변환 작업을 수행하였습니다.
2022.01 - 2022.07
- Firebase를 통한 iOS 앱 관리
- 앱의 충전소로 들어가면 충돌이 발생하는 현상이 Firebase Crashlytics 를 통해 감지되었고, 어느 정도의 규모의 사용자가 똑같은 문제를 겪는지 파악하여 우선순위를 높여 빠르게 수정할 수 있었습니다.
- API가 불리는 지점이 layoutSubviews()에 잘못 지정되어 있었고, 이를 적절한 라이프 사이클에 맞춰 업데이트 되도록 변경하여 해결하였습니다.
- 유저의 다양한 event들을 Firebase를 통해 수집하고, 이에 관한 데이터들을 추가된 기능들에 대한 데이터 검증으로 사용할 수 있도록 작업하였습니다.
- Remote Config를 통해 앱 심사를 거치지 않고도 설문 폼 링크 변경과 버전 제어를 통한 앱 강제 업데이트 유도와 같은 작업이 진행될 수 있도록 작업하였습니다.
- 선물하기 / 조르기 기능 추가
- 키보드 상품의 구매 전환율을 높이기 위해 디자인 가이드라인에 따라 신규기능 개발을 진행했습니다.
- 출시 이후 판매건의 34%가 선물하기/조르기를 통해 판매되었습니다. (출시 후 2주)
- Firebase의 Dynamic Links를 활용하여 구현을 완료하였습니다.
- RxSwift 이관 작업
- 기존에 존재하던 레거시 코드들을 일부 영역에서 Rx를 통한 리액티브 프로그래밍 전환 및 적용을 진행하였습니다.
- 한 페이지에 너무 많은 비동기 이벤트가 동시다발적으로 관리되고 있었고, 이를 RxSwift를 사용하여 조금 더 깔끔하게 정리할 수 있었습니다.
- 키보드 최적화
- 기존 배열 검색을 통하여 구현되어 있던 라이브 테마의 키워드 반응기능을 해쉬를 이용하여 인덱싱 속도를 개선하였고, 그에 따라 반응속도를 높일 수 있었습니다.
- UI를 그리는 방식을 AutoLayout에서 PinLayout & FlexLayout으로 일부 전환하여, 메인 스레드만 사용하여 로딩하던 기존의 UI 방식과는 다르게 멀티 스레드를 일부 활용할 수 있게 개선함으로써 키보드 로딩 속도를 상승시켰습니다.
- 테마 무료사용 기능 추가
- 기존 인기가 높은 테마를 사용하기 위해서는 무조건적으로 구매를 진행해야 했습니다. 결제라는 높은 허들때문에 활성화 유저 수가 감소한다고 생각했고, 허들을 낮추기 위해 구글 Admob을 앱에 추가하여 광고를 통한 테마 무료체험 사용 기능을 추가하였습니다.
- 랭킹 시스템 추가
- 무료사용과 구매 전환율을 높이기 위해 랭킹 시스템을 앱에 추가하였습니다.
- 랭킹 페이지를 접속한 유저와 접속하지 않은 유저를 구분하였을 때 무료사용은 약 5.5배, 구매는 약 2배까지 증가시킬 수 있었습니다
- NUX 개선 업데이트
- 사용자의 이탈률을 낮추기 위해 기존 앱의 NUX 플로우를 개선하였습니다.
- 전체적인 이탈률을 낮추지는 못했지만, 테마 구매까지 이루어지는 전환율을 3%에서 10~15%로 높였으며, 키보드 활성화 후 메인화면에 도달하는 전환율을 약 8% 상승시킬 수 있었습니다.
- 컨플릭트를 방지하기 위해 스토리보드로 이루어진 기존 레거시 코드를 일부 덜어내고 코드 베이스 UI로 이전하는 작업을 진행하였습니다.
- 키보드 이모티콘 기능 추가
- 기존에 판매되던 키보드 테마 상품 중 키워드에 반응하는 라이브 테마의 가치를 올리기 위해 다운로드 되었던 라이브 테마들의 이모티콘을 활용할 수 있는 기능을 추가하였습니다.
- 기존의 라이브테마는 해당 테마를 적용했을 때에만 사용할 수 있었지만 다른 테마를 사용하는 중이더라도 가지고 있는 테마의 모든 스티커를 골라 사용할 수 있도록 업데이트 하였습니다.
- 모든 스티커(사진)을 그대로 키보드에 표시하게 된다면 iOS 키보드의 30MB 메모리 제한에 걸려 키보드가 종료되는 문제가 있었습니다.
- 콜렉션 뷰를 스크롤 할 때마다 메모리가 심각한 수준으로 올라가게 되었고, 불가능하다고 생각되어 진행되지 않았던 기능을 이미지 다운프로세싱 처리와 gif의 프레임 로딩 관리와 같은 아이디어를 통해 메모리 부족으로 인하여 불가능하다고 여겨졌던 스티커 기능을 추가하였습니다.
- iOS 앱 전체 유지보수
- 인수인계를 통해 기존 프로젝트의 구조를 이해하고, 추가적인 기능 개발 및 유지보수를 담당하였습니다.
- 내부테스트를 통해 QA를 진행 및 배포까지 담당하였습니다.