미리보기
기본 정보

안녕하세요. 문제 해결에 적극적이며 꼼꼼한 성격을 지닌 김응철입니다. 타 분야의 다양한 사람들과 장기 프로젝트를 오랫동안 진행해왔습니다. 팀원들과 원활하게 협업하는 방법을 알고, 문제 해결에 적극적이며 자기주도적으로 커뮤니케이션을 하려 노력하고 있습니다.
경력
퀄리타스반도체
프로 | SW | 재직 중
2024.08. ~ 재직 중 (7개월)
사내 반도체 회로설계 개발자들을 위한 인하우스 프로그램을 개발했습니다.
(React.js, Typescript, SQL, Python, SQLAlchemy, Alembic, PyQt)
1)
Python 백엔드 개발자와 사내 회로설계 HW 개발자과의 협업 및
비동기 처리와 REST API를 이용한 프론트엔드 개발
보안이 철저한 네트워크 망에서 자체 CI/CD를 구축하여 배포 시간 약 60% 감소
2)
Python SQLAlchemy를 이용해 SQL의 테이블을 ORM형태로 추상화
Alembic을 통해 SQL 버전관리 마이그레이션
PyQt를 이용해 .exe 실행파일로 전사에 프로그램 배포
프로젝트
편행 v2.0
사이드 프로젝트
2024.01. ~ 2024.05.
편의점 행사 정보는 어디서?
편의점 할인 행사를 알고 싶지만, 일일이 편의점 사이트를 찾아 알아보기 귀찮을 때.
한 눈에 여러 편의점 행사 정보를 확인할 수 있는 앱입니다.
SwiftUI와 Combine을 주력으로 사용했습니다.
GitHub | Figma
내용
코드를 각 기능에 맞게 분리하여 Swift Package로 자체 모듈 라이브러리를 구축했습니다.
기존 코드를 복사하여 붙여 넣는 작업을 최소화 할 수 있었습니다.프로젝트 규모를 고려해서 View-ViewModel 단방향 Data Flow를 구축했습니다.
View에서trigger(_:)
로 Input을 전달하고 State값을 Output으로 사용했습니다.
ViewModel은 protocol로 처리하여 View와 DIP원칙을 지킬 수 있었습니다.네트워킹을 다루는 Service 레이러를 분리했습니다.
각 기능의 명확성과 이슈가 발생할 시 해당 레이어에 디버깅을 집중할 수 있었습니다.
URLProtocol을 사용하여 백엔드 API가 구현되어있지 않아도 Mock JSON을 파싱해 UI를 구현할 수 있었습니다.Gitmoji를 이용해 잘 지켜지지 않는 컨벤션을 통일시키고 GitHub가 아름다워졌습니다.
트러블 슈팅 & 테크 블로그
Custom XCode Configuration Flag 추가하여 디버그 프로세스 최적화
프로젝트 개발 이슈를 효율적으로 관리하려는 여정URLProtocol을 이용해 Mock 데이터로 서버 의존도 줄이는 과정
서버 없이도, 서버가 있는 것처럼 개발 진행하고 싶은 고민SwiftUI에서 ViewModel을 ObservableObject를 채택하면서 DIP를 지키는 방법
외부 라이브러리를 지양하고 Clean Architecture를 위한 고군분투GitHub Actions로 CI를 구축하여 SwiftFormat 테스트하기
CI를 통해 각 개발자 코드의 일관성을 유지하고 품질을 유지
페이버
사이드 프로젝트
2023.01. ~ 2023.07.
페이버는 주고받은 선물을 기록하는 앱입니다.
선물에 대한 정보와 그 날의 감정을 보관할 수 있습니다.
잊기 쉬운 지인들의 특별한 기념일을 등록하면 리마인더 알림을 보내드립니다.
UIKit, RxSwift, RxFlow, Moya, ReactorKit을 주력으로 사용했습니다.
GitHub | Figma
내용
MVVM 패턴을 사용하여 ViewController에는 화면 구성 코드만 담고,
ViewModel(Reactor)에게는 비즈니스 로직과 데이터 가공 코드를 담았습니다.
비즈니스 로직 테스트에서 UI Component의 Dependency를 없앨 수 있어 Unit Test에 용이했습니다.Navigation Controller로 대표되는 화면 전환 로직들을 Coordinator Pattern에 전임하여 재사용성을 높였습니다.
그리고 데이터 전달, 의존성 주입 등의 로직을 비즈니스 로직에서 분리했습니다.
대표적으로 사용되는 Delegate 패턴을 Rx로 대체하기 위해 RxFlow를 도입했습니다.ViewModel마다 의존성 주입 문제의 번거로움을 덜 수 있는 ReactorKit을 도입했습니다.
Action -> Mutate -> State의 단방향 스트림을 통해 자연스러운 코딩 컨벤션 통일을 이룰 수 있었습니다.한 번 불러온 서버 데이터를 로컬 RealmDB에 저장하여
로딩 화면 대신 콘텐츠를 보여주는 전용 Fetcher를 구현했습니다.
덕분에 사용자는 지루한 로딩 인디케이터를 그만 볼 수 있게 되었습니다.
트러블 슈팅 & 테크 블로그
서버 데이터를 로컬DB에 저장하여, 로딩 중에 콘텐츠 표시하기
지루한 로딩 화면, 오프라인 환경에서도 사용자 경험을 높이기 위한 여정RxDataSource의 다중 섹션을 사용할 때 ReloadData 문제와 해결방법
봉착한 RxDataSource의 한계, 그리고 새로운 DiffableDataSourceDiffable DataSource ReactorKit으로 복잡한 UI 관리하기
고도화된 화면 구성에 대해, 더 효율적인 UI 관리를 위한 노력RxFlow로 Coordinator 고급스럽게 사용하기
기존 고전적인 Coordinator를 Reactive하게 사용하여 RxSwift와 동화하기 위한 노력
편행 v1.0
사이드 프로젝트
2022.09. ~ 2023.02.
한 눈에 여러 편의점의 행사 정보를 확인 할 수 있는 서비스
RxSwift, ReactorKit, Coordinator
한 일
- Git hooks로 커밋 시 자동으로 코드 컨벤션을 검사하도록 설정, 결과적으로 코드 리뷰 시간을 절약하고 코드 품질을 일관되게 유지함
- Xcode Template을 이용하여 표준화된 코드 스니펫을 재사용함으로써 새로운 Scene 개발에 소요되는 시간 20% 감소
- TestFlight를 통해 테스터를 모집하고 실시간으로 사용자 피드백을 수집하여, 사용자 경험을 중심으로 한 주요 기능 개선안을 도출함
- 공개 후 앱의 성장 로드맵을 작성하고 실행함으로써, 를 3개월 내 평균 70% 를 유지
테크 블로그
- MVVM과 Coordinator Pattern 함께 사용하기 Feat. ReactorKIt
- 화면 전환 코드를 분리하여 VC를 단일 책임으로 만드려는 노력
아이돔
인천대학교
2022.08. ~ 2023.08.
인천대학교 학생들을 위한 기숙사 룸메이트 매칭 및 커뮤니티 서비스
RxSwift, ReactorKit, FCM, DeepLink, OAuth
한 일
- MVVM 아키텍처를 채택하여 컴포넌트들의 재사용성을 높이고 유지보수 시간 약 30% 감소
- FCMFirebase Cloud Messaging을 이용하여 커뮤니티 댓글 실시간 알림을 구현
- 외부 링크 클릭시 앱의 특정 페이지로 바로 이동할 수 있는 DeepLink 구현
- 대규모 프로젝트를 iOS 1인 개발로 3-4개월만에 안정된 앱 출시
교육
인천대학교
대학교(학사) | 신소재공학
2018.03. ~ 2024.08. | 졸업
대외활동
인천대학교 어플리케이션 및 서비스 개발 동아리, 앱센터 iOS 파트장
인천대학교 정보전산원
- 파트장으로서 새로운 iOS 팀원들을 선별하고 프로젝트를 위해 매주 스터디를 기획
- 서버, 안드로이드, iOS, 디자이너, 웹 파트가 모여 스터디를 진행하고 프로젝트를 진행
- 개발부터 배포까지 자세한 과정을 배웠습니다.
- 다른 파트와의 협업 능력을 극대화할 수 있었습니다.
앨런 Swift 마스터 스쿨 부트캠프 17기
기타
- Swift에 대한 내부적인 메커니즘에 이해
- Swift 문법의 메모리 구조를 CS를 이해
- 어플리케이션이 구체적으로 어떻게 동작하는지 학습
자격증
컴퓨터활용능력
1급 | 대한상공회의소
2021.07.