미리보기
기본 정보
"견고한 아키텍처 설계를 통해 안정성과 확장성을 동시에 달성하는 iOS 개발자" 체계적인 아키텍처를 통해 신뢰할 수 있는 소프트웨어를 만듭니다. 아키텍처는 소프트웨어의 근간으로, 최소 단위의 기능들을 관심사에 따라 분리하고 이를 조합하여 복잡한 동작을 만들어내는 것이 유지보수와 개선에 효율적이라고 생각합니다. 이러한 생각은 실제 프로젝트에서 성과로 입증되었습니다. 안정성 측면에서는 엄격한 아키텍처 원칙에 따른 리팩토링으로 주요 화면의 크래시를 리팩토링 이전 2개월간 133건/40건에서 이후 4개월간 0건/0건으로 줄임으로써 DAU 400명 규모의 서비스 안정성을 확보했습니다.
기술 스택
Swift, UIKit, SwiftUI, MVVM
경력
주식회사러닝포인트
iOS 개발자 | 개발팀 | 재직 중
2024.05. ~ 재직 중 (10개월)
자사 비대면 러닝 플랫폼 앱 "랭킹마라톤" 유지보수 및 신규 기능 추가
기술 스택: Swift, UIKit, Swift Concurrency (async/await), Clean Architecture, MVVM-C
공통
View와 View Model간의 결합도를 낮추기 위해 반응형 프레임워크 Combine을 사용하여 데이터 바인딩
코드 가독성 및 작업 순서의 보장을 위해 Swift Concurrency(async/await)를 사용해 네트워킹 작업 진행
디자인 시스템 모듈 개발
반복적으로 사용되는 디자인 컴포넌트를 효율적으로 사용하기 위해 네임스페이스 형태로 개발
색상, 텍스트 등의 기본적인 정보를 입력하여 선언적으로 사용
UIKit Code-based UI에서 발생하는 보일러플레이트 평균 50% 감소
앱 UI 리뉴얼
유지보수 및 기능 추가의 용이함을 위해 View Controller에서 직접 API를 호출하던 부분을 Clean Architecture를 활용해 리팩토링
각각의 화면에 평균 3600여 줄의 코드를 역할에 따라 평균 600여 줄의 여러 파일로 분할함으로써 코드 가독성 향상
여러 화면에서 쓰이는 기능을 레이어로 분리 → 기능의 일관성 및 관리, 재사용의 용이함 확보
홈 랭킹 화면 리뉴얼
세그먼트마다 다른 종류의 랭킹 및 데이터를 표시하기 위해 Diffable Data Source 기반 Table View를 활용
홈 화면 리팩토링 이전 2개월간 크래시 발생 횟수 42회 → 리팩토링 이후 4개월간 0회
프로필 화면 리뉴얼
단일 소스를 활용해 활동 정보와 리포트, 두 가지 화면을 함께 표시하기 위해 Page View Controller와 Sticky Segment를 조합하여 사용
재사용 가능한 Chart 컴포넌트를 통해 해당 부분에서 발생하던 크래시 제거
프로필 화면 리팩토링 이전 2개월간 크래시 발생 횟수 143회 → 리팩토링 이후 전체 버전에서 4개월간 16회 / 리팩토링 이후 버전에서 0회
서드 파티 프레임워크 활용
AdMob을 활용한 광고 표출과 리워드 지급 기능 개발
네이버, 카카오, 구글, 애플 OAuth 인증 기능 개발
기업모드, 커뮤니티, 포인트 적립 및 목록 확인, 기프티콘 스토어 등의 기능 개발
목록 표출 화면의 경우 무한 스크롤과 Sticky Segment를 조합하여 개발
SK브로드밴드(주)
Future Talent | Media Tech CO
2023.07. ~ 2023.08. (2개월)
자사 앱 "모바일 B tv" 관련 기술 과제 수행
기술 스택: Swift, SwiftUI, UIKit, GraphQL, RxSwift, Combine
포스터 전시 화면 개발 과제 (SwiftUI, Combine, REST API)
iOS 14 이하의 초기 SwiftUI에서 Pull To Refresh 직접 구현
다수의 이미지를 사용하는 화면에서 메모리 효율성을 고려해 Lazy Grid를 활용해 화면 구현
GraphQL API를 활용한 채팅 앱 개발 과제 (SwiftUI, Combine, GraphQL)
GraphQL 형식의 요청을 보내기 위한 Parser 직접 구현
B tv 편성표 화면 개발 과제 (UIKit, RxSwift, REST API)
짧은 주기로 변화하는 데이터를 단일 데이터 소스를 활용해 반영하기 위하여, UIKit Modern Table View (Diffable Data Source)을 활용하여 편성표 목록 화면 구현
레이어 간의 결합도를 낮추고, 대규모 서비스를 염두한 구조로 디자인하기 위해 RxSwift와 Clean Architecture를 활용하여 도메인/프레젠테이션/데이터 레이어로 나누어 개발
편성표 관련 API 데이터의 생명 주기를 고려하여 호출부를 분리하고, 이를 통해 초기 로드 속도 약 40% 상승
프로젝트
Segno (세뇨)
네이버 커넥트재단 부스트캠프 웹 모바일 7기 iOS 5팀
2022.10. ~ 2022.12.
음악과 사진을 함께 저장해, 더욱 구체적으로 추억을 되살릴 수 있는 일기 서비스
기술 스택: Swift, ShazamKit, MusicKit, UIKit, MVVM-C, RxSwift, Clean Architecture
기여한 부분
팀장을 맡아 전체적인 프로젝트 개발 과정 관리
프로젝트 기술 선정 주도 및 전체적 설계 수행
각각의 역할에 집중하는 코드를 작성하고자 MVVM-C 패턴과 Clean Architecture 도입
음악 검색 및 재생 기능 구현
데이터베이스의 정확성을 보장하고자 ShazamKit과 MusicKit을 사용
isrc 프로퍼티를 통해, 검색해서 저장해둔 음악 데이터와 정확히 일치하는 음원 재생
매주 팀이 겪은 기술적 어려움을 칼럼으로 작성해 동료 교육생들에게 공유
5주차 Delegate to data stream - https://windy-crayfish-861.notion.site/12-10-Delegate-d7501be5476744f690e27c4e5efd2552
의의
Clean Architecture를 적용하여 유지보수와 기능 추가가 용이한 프로젝트 구현
RxSwift를 활용한 반응형 프로그래밍 경험 습득
협업의 흐름과 기간 설정 등, 개발 외적인 프로젝트 관리에 대한 경험 습득
https://www.youtube.com/watch?v=pH8ucljwNdM (전체 시연 영상)
https://github.com/boostcampwm-2022/iOS05-Segno (앱 레포지토리)
https://github.com/boostcampwm-2022/iOS05-Segno/wiki (프로젝트 위키 - 회의록 및 회고, 칼럼)
포트폴리오
교육
네이버 커넥트재단 부스트캠프 웹 모바일
사설 교육 | iOS 트랙
2022.07. ~ 2022.12. | 수료
연세대학교
대학교(학사) | 중어중문학과
2012.02. ~ 2020.08. | 졸업
분당중앙고등학교
고등학교 | 인문계열
2009.03. ~ 2012.02. | 졸업
대외활동
글또
기타
개발자 글쓰기 모임 글또 8기, 9기, 10기(2023 ~ 2025) 참여
개발 지식을 글로써 공유하는 요령을 얻고자 하는 수요에 의해 참여
기술 아티클의 소재를 찾는 과정에서 깊이 있는 기술적 고민의 요령 습득
기술 아티클의 검증 과정에서 정확한 레퍼런스를 찾는 요령 습득
기술 아티클 작성 과정에서 지식을 더 쉽게 전달하는 요령 습득
Tuist, Combine, async/await 포스트의 경우 조회수 1천회 초과 - 실제로 동료 개발자에게 도움이 되는 아티클 작성
다양한 개발자와의 교류를 통해 기술, 나아가 개발에 대한 넓은 시선 유지
내부적으로 이루어지는 여러 소모임 활동에 참여하여 긍정적 시너지를 냄으로써 기술적 역량을 지속적으로 증진
자격증
정보처리기사
한국산업인력공단
2024.06.
OPIc
IH (Intermediate High) | ACTFL
2024.03.