미리보기
기본 정보

안녕하세요. iOS 개발자 김지민입니다. 저는 개발의 최우선 가치를 사용자 경험에 두고 있습니다. 기능 하나하나가 사용자에게 긍정적인 변화를 가져오는 것을 확인할 때 가장 큰 보람을 느낍니다. 이를 위해 사용자 피드백과 데이터를 기반으로 지속적으로 개선해 나가는 것을 중요하게 생각합니다. 또한, 효율적인 팀 작업을 위해 반복적인 작업을 줄이고 생산성을 높이는 방법을 항상 고민합니다. 공용 UI 컴포넌트와 모듈화를 통해 작업 속도를 향상시키는 데 기여합니다. 협업을 매우 중요하게 여기며, 문제를 독자적으로 해결하는 것보다는 팀원들과의 원활한 소통과 협력을 통해 더 나은 결과를 도출하고자 합니다. 서로의 의견을 존중하고, 기술 도입이나 변경이 필요할 때는 PoC를 통해 팀원들을 설득하며, 이를 바탕으로 최선의 결정을 내리는 것을 목표로 합니다.
기술 스택
Swift, SwiftUI, uikit, Firebase, analytics, combine, iOS
경력
쓰리알이노베이션주식회사
iOS 개발자 | 개발팀 | 재직 중
2024.07. ~ 재직 중 (10개월)
포커스팡 iPad
선생님을 위한 오프라인 면대면 수업운영 서비스
[주요 업무]
포커스팡 iPadOS 앱 개발
[기술 스택]
Swift, UIKit, SwiftUI, Async/Await, Combine
Firebase, NotificationCenter, UserDefaults, WKWebView
Starscream, Socket.IO, UDP Broadcast, CallKit
Broadcast upload Extension, MediaSoup, Multipeer Connectivity
[수행역할 및 주요 성과]
WKWebView를 이용한 웹뷰 구현
WKScriptMessageHandler 및 evaluateJavaScript를 통해 웹과 양방향 통신
WebSocket을 이용한 실시간 양방향 실시간 통신
Starscream 및 Socket.IO library 사용
Broadcast Upload Extension을 이용한 화면캡쳐
50MB 이하의 메모리 사용량
MediaSoup library 를 이용한 SFU 방식의 WebRTC 구현
Multipeer Connectivity 를 이용한 iOS p2p 데이터 공유
Safari Extension 및 FamilyControls 를 이용한 수업중 웹/앱 제어기능 구현
서울시 전체 초중고등학교 디벗 아이패드 디바이스에 납품
2만대 이상 디바이스 배포 완료
닥터사이먼
주의집중, 학습과 마음 건강 케어 서비스
[주요 업무]
닥터사이먼 센서데이터 수집
[기술 스택]
Swift, ARKit, Custom Keyboard Extension
[수행역할 및 주요 성과]
터치, 펜슬, 트랙패드 등 사용자 인터랙션 데이터 수집
키보드 데이터 수집을 위한 Custom Keyboard 제작
한글, 영어, 특수문자 입력데이터 수집
ARKit 을 이용한 아이트래킹 구현
메일전송 서버
[기술 스택]
JavaScript, NodeJS, Express, Firebase Functions, nodemailer
[수행역할 및 주요 성과]
NodeJS 및 Express 기반 메일전송 서버 제작
계정발급 후 메일전송 프로세스 자동화
비밀번호 변경 프로세스 개선
기존 관리자 수동초기화 방식 -> 이메일 인증방식 변경
최대 하루 이상 걸리던 요청 처리 시간 30초로 단축
아이엠랩
iOS 개발자 | 개발팀
2022.09. ~ 2024.03. (1년 7개월)
ZEPL / 2022.10 ~ 2024.03
비대면 재활치료 운동 프로그램 앱
[주요 업무]
ZEPL iOS 앱 신규개발
프로젝트 시작부터 릴리즈 8회까지 전체 개발 참여 (기여도 90%)
[기술 스택]
Swift, SwiftUI, UIKit, SnapKit, Async/Await, Combine
Firebase, MLKit, AVFoundation, FileManager
NotificationCenter, UNUserNotification, UserDefaults
OAuth, WKWebView, GA4, CocoaPods
[수행역할 및 주요 성과]
AI 모델을 이용한 카메라로 사용자 pose 트래킹 및 운동인식 알고리즘 개발
MLKit을 이용한 모션인식 기능구현
추론된 pose결과값 파싱해 실시간 포즈 UI 및 운동인식 구현
Instruments으로 메모리 사용량 분석 및 약 30%의 메모리 사용량 개선
인식결과 튀는현상을 잡기위해 low-pass filter 적용
UI 80% 이상 SwiftUI로 개발
UI 개발속도 50%가량 향상
기존 UIKit으로 제작된 UI같은경우 SwiftUI로 마이그레이션
UIKit 으로 제작된 UI는 SnapKit 사용
디자이너랑 상의해 디자인시스템 기반 컴포넌트 제작
MVVM 패턴 적용
view와 로직이 분리돼 UI 수정 및 기능추가에 유연하게 대응할 수 있었음
1:1 채팅기능 및 FAQ기능 설계 및 개발
WKWebView를 이용한 웹뷰 구현
WKScriptMessageHandler를 통해 웹과 통신
Async/Await 을 사용한 비동기 코드 작성
closure 방식에 비해 가독성 증가
GA4를 사용한 앱 사용성 트래킹
명지병원 임상실험 진행 및 지속적인 커뮤니케이션을 통한 요구사항 반영
CPR add-on kit Instructor / 2024.03
CPR 교육 강사용 앱
[기술 스택]
Swift, UIKit, UIGraphicsPDFContext, GA4
[주요 업무]
CPR 결과공유 PDF 페이지 제작
[수행역할 및 주요 성과]
CPR 결과공유 PDF 페이지 제작
여러가지 형태의 차트, 그래프, 표 UI 개발
Localization(언어) 대응
GA4를 사용한 앱 사용성 트래킹
기타 버그사항 수정 및 기획변경내용 반영
AIMCare / 2022.09 ~ 2022.10
비대면 의료진료 서비스 앱
[주요 업무]
AIMCare iOS 환자, 의사용 앱 기능개발
[기술 스택]
Swift, UIKit, storyboard, agora, Firebase, AVFoundation, CocoaPods
[수행역할 및 주요 성과]
storyboard 및 코드베이스 AutoLayout 구현
원격진료 문진표 작성 및 진료기록 구현
커스텀 카메라 UI
video trim 기능 구현
이미지 크롭기능 구현
rPPG 를 이용한 심박수 측정기능 구현
MLKit을 활용한 얼굴 인식 및 측정부위 자동 감지
2022 규제자유특구 챌린지 최우수상 수상
프로젝트
그날 그시간
개인
2022.08. ~ 2022.09.
시간단위로 일상을 기록하는 다이어리 앱
[주요 업무]
그날 그시간 앱 기획 및 개발
[기술 스택]
Swift, UIKit, NoStoryboard, SnapKit, Combine, CoreDate
CloudKit, UICollectionViewCompositionalLayout, Calendar, SPM
[수행역할 및 주요 성과]
앱스토어 앱 다운로드 횟수 2.37천회
CoreData를 사용한 로컬스토리지 CRUD 구현
시간, 하루 기록 데이터 영구 저장 및 관리
CloudKit을 사용한 데이터 백업 및 동기화
다중 기기 간 데이터 일관성 ㅇ유지
SnapKit 및 UICollectionViewCompositionalLayout을 사용한 UI 작업
storyboard 및 UICollectionViewFlowLayout에 비해 UI작업속도 향상 및 가독성 증가
프로젝트 링크
앱스토어
Marvel Characters
개인
2024.07. ~ 2024.07.
마블 캐릭터 검색과 즐겨찾기 기능을 제공
[주요 업무]
Marvel Character 앱 개발 및 테스트
[기술 스택]
Swift, UIKit, NoStoryboard, SnapKit, Async/Await
CoreData, UICollectionViewCompositionalLayout, SPM, XCTest
[수행역할 및 주요 성과]
네트워크 통신을 통한 마블 캐릭터 받아오기
받아온 마블 캐릭터 즐겨찾기 기능 (CoreData 사용)
Event-Driven 을 위한 반응형 프레임워크 제작
XCTest를 사용한 비즈니스로직 Unit Test
프로젝트 링크
개발문서
Photos
개인
2024.07. ~ 2024.07.
아이폰 사진앱 클론
[주요 업무]
아이폰 사진앱 클론코딩
[기술 스택]
Swift, SwiftUI, UIKit, PhotoKit, Combine, AVFoundation, CoreImage, SnapKit
[수행역할 및 주요 성과]
보관함
사진 선택, 및 삭제, 공유, 복사, 복제, 앨범에 추가 기능
앨범
앨범별 사진 모아보기 및 앨범추가 기능
사진편집
사진 필터, 조절 기능
동영상 편집
동영상 필터, 조절, trim 기능
프로젝트 링크
개발문서
우리(인스타그램 클론)
개인
2024.03. ~ 진행 중
인스타그램 클론에 커뮤니티 그룹기능을 추가한 앱
[주요 업무]
우리 앱 기획 및 개발
[기술 스택]
Swift, SwiftUI, UIKit, Async/Await, Combine, PhotoKit, Firebase, CloudFunctions, URLSession, RestAPI
[수행역할 및 주요 성과]
CloudFunctions을 이용한 RestAPI 제작
Photos Framework를 이용한 커스텀 앨범 UI
RestAPI를 이용한 개시물 CRUD 기능 구현
프로필 편집 기능
원티드 프리온보딩 과제
원티드 프리온보딩
2022.08. ~ 2022.08.
VoiceRecorder
음성녹음 앱
[기술 스택]
Swift, UIKit, NoStoryboard, AudioEngine
[수행역할]
AudioEngine을 이용한 음성녹음 및 Cutoff Frequency
실시간 음성 파형 UI
Firebase Storage 음성데이터 업로드, 다운로드, 삭제 구현
프로젝트 링크
CustomKeyboard
CustomKeyboard로 한글입력이 가능한 앱
[기술 스택]
Swift, UIKit, Custom Keyboard Extension
[수행역할]
queue 자료구조를 이용한 한글입력 알고리즘 개발
ex) input ㄱㅣㅁㅈㅣㅁㅣㄴ 일때 output 김지민
Keyboard Extension 구현
제작된 키보드를 앱 외부에서도 사용할 수 있음
프로젝트 링크
Picterest
랜덤이미지를 불러와 로컬스토리지에 저장, 삭제하는 앱
[기술 스택]
Swift, UIKit, CoreDate, Combine, URLSession, UICollectionViewLayout, NSCache
[수행역할]
UICollectionViewLayout을 사용한 커스텀 CollectionView Layout 제작
CoreData를 사용한 로컬스토리지 데이터 저장 및 삭제
NSCache를 사용한 이미지 캐싱
프로젝트 링크
추가 학습 및 관심 기술
TCA, ReactorKit 같은 단방향 데이터 플로우 아키텍처
주로 MVVM 아키텍처를 사용해왔으나 데이터 추적 어려움, 과도하게 커지는 ViewModel 와 같은 문제점을 겪으며 단방향 플로우 아키텍처에 대해서 관심을 가지게 됐습니다
아직 실제 프로젝트에서 UDF 아키텍처를 적용해본 경험은 없으나 구상중인 사이드프로젝트에서 사용해볼 계획입니다
Event-Driven
개발을 처음 공부할때부터 객체간의 데이터 공유 및 비동기상황에서의 이벤트 핸들링 방법에 고민이 많았습니다. 이러한 고민을 해결하기 위해 Delegate, NotificationCenter, Combine, Swift Concurrency 등을 적극적으로 활용해왔으며, 각각의 장단점을 파악하여 적절한 상황에 적용해왔습니다.
특히 Combine 같은 반응형 프레임워크의 기본적인 기능을 직접 구현해본 경험이 있으며, 이를 통해 비동기 데이터 흐름이 어떻게 동작하는지 이해하게 됐습니다. 이러한 경험 덕분에 RxSwift를 사용하더라도 빠르게 적응할 자신이 있습니다
SwiftUI
SwiftUI는 확실히 UI 그리는 속도를 비약적으로 빠르게 해줍니다. 하지만 아직 UIKit 에 비해서 지원하는 기능이 적으며 UI가 복잡해질수록 직관성이 떨어지는 느낌을 받았습니다. 따라서 상황에 따라 UIKit, SwiftUI 를 같이 사용하는게 좋다고 생각했고 SwiftUI랑 UIKit 을 유기적으로 사용하는것에 대해 관심이 큽니다. SwiftUI도 결국은 UIKit을 추상화한 것이기 때문에 유연하게 합치는게 가능하다고 생각합니다.
일례로 TabView로 감싸져 있는 SwiftUI View 에서 HalfModal 을 사용해야 할 일이 있었습니다. 처음에는 ZStack 을 이용해서 구현을 시도했으나 HalfModal 위에 Tab이 위치하는 문제가 존재했습니다. 그래서 View 를 extension 해서 UIKit 의 present(_:animated:completion:) 메서드를 사용할 수 있도록 하여 해결했던 경험이 있습니다.
포트폴리오
교육
인하공업전문대학교(휴학)
대학교(전문학사) | 전기공학과
2021.03. ~ 현재 | 재학 중
자기소개
iOS 개발자로서, 저는 사용자 경험을 최우선 가치로 삼고 있습니다. 단순히 기능을 구현하는 것을 넘어, 사용자가 앱을 통해 긍정적인 변화를 경험하는 것을 목표로 합니다. 이를 위해 사용자의 피드백을 적극적으로 반영하고, 데이터를 기반으로 지속적인 개선을 이어가고 있습니다.
개발 과정에서는 효율성과 협업을 중요하게 생각합니다. 반복적인 작업을 줄이고 생산성을 높이기 위해 공용 UI 컴포넌트와 모듈화를 활용하며, 팀원들과의 원활한 소통을 통해 최적의 해결책을 도출하고자 합니다. 또한, 새로운 기술 도입이나 변경이 필요할 경우 PoC(Proof of Concept)를 통해 실효성을 검증하고, 이를 바탕으로 합리적인 결정을 내리는 것을 원칙으로 삼고 있습니다.
문제를 해결하는 과정에서 주어진 정보가 부족하더라도 적극적으로 탐색하고 실현 가능한 솔루션을 빠르게 구축하는 것을 강점으로 생각합니다. 빠르게 프로토타입을 개발하고, 핵심 기능을 우선적으로 구현하여 프로젝트의 진행 속도를 높이는 방식으로 업무를 수행합니다.
저는 끊임없이 성장하는 개발자가 되기 위해 컴퓨터 공학적 기반 지식과 최신 기술을 학습하며, 코드의 유지보수성과 확장성을 고려한 개발을 지향합니다. 앞으로도 더 나은 iOS 앱을 개발하기 위해 노력하며, 사용자에게 가치를 제공하는 개발자가 되겠습니다.