미리보기
기본 정보

코드의 가독성과 유지보수성에 큰 중요성을 두며, 디자인 패턴과 효율적인 개발을 좋아하는 개발자
포트폴리오
프로젝트
SecureMarshmallow
대덕소프트웨어마이스터고등학교
2023.06. ~ 2023.08.
프로젝트 목적
- 공격자가 애플리케이션을 어떻게 공격하는지 이해하고, 개발자가 이를 어떻게 방어할 수 있는지에 대한 연구하는 프로젝트
주요 업무 및 상세역할
- 프로젝트 관리자로서 방법론 전환과 팀 협력의 중요성을 깨달음
- 프로젝트에서 유일한 공격 수단인 탈옥된 기기에서의 Frida를 이용한 공격을 차단
- LLDB를 활용한 디버깅 기법을 통해서 프로젝트 내에서의 에러 검출을 하는 역할을 담당
- 탈옥된 기기를 사용하여 Frida로 앱의 UI를 강제 변경하는 작업을 구현
- 캡처 금지 기능과 스크린샷 추적 기능을 구현
- 앱 위장 아이콘 기능 구현
사용 언어 및 개발환경
- Swift, IOSSecuritySuite, Snpkit, Then, RxSwift
느낀점
- MVP 아키텍처를 처음 접하며 낯설었지만, 핵심을 이해하며 개발 속도와 과정의 체계성이 향상되었고, MVP의 개념과 장점을 직접 경험했습니다.
- iOS 보안 적용 과정에서 탈옥 감지, 코드 난독화, 캐시 삭제 등 다양한 보안 기법을 경험했습니다. 직접 탈옥 시도와 Frida 사용으로 앱 접근 방법을 탐색하며 공격자와 방어자의 시점에서 다양한 상황을 고민했습니다. 특히, 탈옥 차단 라이브러리 사용과 기밀 또는 위장 앱 개발을 통해 사용자 보안을 강화하는 방법을 모색했습니다.
- iOS 보안 적용 과정에서 탈옥 감지, 코드 난독화, 캐시 삭제 등 다양한 보안 기법을 경험했습니다. 직접 탈옥 시도와 Frida 사용으로 앱 접근 방법을 탐색하며 공격자와 방어자의 시점에서 다양한 상황을 고민했습니다. 특히, 탈옥 차단 라이브러리 사용과 위장 앱 개발을 통해 앱 내의 보안 강화에 대해서 공부해보았습니다.
SecureMarshmallow 자세히 보기
Today
대덕소프트웨어마이스터고등학교
2023.05. ~ 2023.07.
프로젝트 목적
- 아이패드를 활용하여 손쉽게 인생 네컷 및 폴라로이드 사진을 만들고 꾸미고 보정할 수 있는 프로젝트
주요 업무 및 상세역할
- 사진을 찍고 인생네컷과 폴라로이드 기능을 구현
- 사용자가 인생네컷 또는 폴라로이드에 스티커를 추가, 조정, 삭제하는 기능 구현
- 사용자는 제공된 포즈에 맞게 사진을 찍고, 화면 전환, 확대/축소가 가능합니다. 카메라가 아래를 향할 때 경고가 나타나며, 화면 터치로 사진 촬영과 n초 후 자동 촬영 설정이 가능한 기능 구현
사용 언어 및 개발환경
- Swift, Snpkit, Then, RxSwift, XCameraKit, AVFoundation
느낀점
- 복잡한 사진 관련 코드를 처음으로 깊게 다루며 코드 관리의 어려움을 겪었습니다. 이 경험으로 누구나 쉽게 카메라 코드를 사용할 수 있는 XCameraKit를 개발하는 계기가 되었습니다
- 부스 운영을 통해서 사용자와 기업의 피드백을 바탕으로 단시간 내 기능 추가와 프레임 작업 등을 통해 사용자 니즈를 파악하는 중요성을 깨달았습니다.
- 단시간 프로젝트로 코드의 질과 아키텍처를 신경쓰지 않고 기능구현만을 목표로 코드를 구성하면서 코드의 질과 적합한 아키텍처의 중요성을 깊게 이해하게 되었습니다.
Today 자세히 보기
LookMonster
개인
2023.08. ~ 2023.11.
프로젝트 목적
- 사용자의 개성을 찾아주고 트렌디한 쇼핑 앱을 개발하는 프로젝트
주요 업무 및 상세역할
- 프로젝트 내에서 RIBs 아키텍처 전용 Tuist 모듈을 설계를 담당
- 프로젝트 관리의 편의성을 높이기 위해, 쉘스크립트를 사용한 명령어로 RIB 생성을 확장성 있게 구현
- Demo 앱을 이용해 앱 내 기능을 단위별로 효율적으로 나누어 테스트를 구현
사용 언어 및 개발환경
- Swift, RIBs, Then, RxSwift, RxCocoa
느낀점
- 복잡한 구조 설계와 적합한 아키텍처의 적용, 그리고 효율적인 코드 작성 방법에 대해 깊이 탐구하는 것이 주요 목표였습니다. 이 과정에서 모듈을 세밀히 분리하고, 각 모듈이 단일 책임 원칙(SRP)을 준수하도록 하며, 응집도를 높이고 결합도를 낮추는 방향으로 프로젝트를 전개했습니다.
- 모듈화와 단일 책임 원칙을 적용하여 프로젝트 관리와 유지 보수를 개선하려 했으나, 이 방식이 때로는 복잡성을 증가시키고 개발 과정에서 혼란을 주는 경우도 있음을 알게 되었습니다. 작은 단위의 기능을 과도하게 분리하는 것이 반드시 이점만을 가져오지 않는다는 교훈을 얻었습니다. 그럼에도 불구하고, 모듈 분리를 통해 의존성의 명확화, 빠른 컴파일 시간, 메모리 성능 개선, 그리고 Tuist를 이용한 빌드 설정의 용이함과 같은 명확한 장점들을 경험할 수 있었습니다.
- 아키텍처 설계와 모듈 분리에서 균형과 적절한 세분화가 얼마나 중요한지 깊이 이해하게 되었습니다. 프로젝트의 성공이 기술적인 측면뿐만 아니라, 설계 원칙을 어떻게 적용하고 조정하는지에도 크게 의존한다는 사실을 몸소 느낄 수 있었습니다.
LookMonster 자세히 보기
Maeumgajim
대덕소프트웨어마이스터고등학교
2023.09. ~ 진행 중
프로젝트 목적
- 운동 숏폼 시청, 루틴, 운동 방법 등을 제공하는 종합 헬스 애플리케이션
주요 업무 및 상세역할
- 프로젝트의 시작부터 배포까지, 저는 14명으로 구성된 팀의프로젝트 매니저(PM)로서 역할을 수행했습니다.
- 정보구조화 설계와 에자엘(Agile) 방법론 도입을 통해 프로젝트의 효율성을 높였으며, 매주 진행 상황을 점검하고 팀원들과 정기적으로 소통하며 팀을 관리하는 역할을 담당했습니다.
- 마음가짐 프로젝트의 구조를 설계하였으면 모듈 분활 작업 및 의존성 분리 작업을 맡았습니다.
- 토큰 매니저 또는 클린 아키텍처, 피클, Logger 모듈 등등을 설계하고 작업하는 작업을 했습니다.
- 헬스 관련 라이브러리 MindGymKit을 유지보수하고 마음가짐 전용 테스트 툴 Mango를 개발 및 유지보수 하였습니다.
사용 언어 및 개발환경
- Swift, SnapshotTesting, Snpkit, Then, RxSwift, Mango, KakaoSDK, MindGymKit, kingfisher, RxMoya, Swinject, RxFlow, GoogleLogin
느낀점
- 프로젝트 관리자로서 경험을 통해 깨달은 중요한 점은 팀원 간의 소통과 개발 프로세스의 중요성입니다. 인원이 많아지면서 소통의 어려움과 불만이 생겼고, 특정 분야의 지연으로 프로젝트 이탈 위기에 직면하기도 했습니다. 이를 해결하기 위해 지연된 분야에는 추가 개발 기간을 주고, 다른 분야는 리펙토링을 진행해 팀워크의 조화를 이끌어냈습니다. 또한, 장기 프로젝트로 인한 팀원들의 피로를 관리하고, 인원 부족 문제에는 부분 웹뷰 도입과 단위 배포 전략으로 대응했습니다. 이 과정에서 팀원 간의 소통 강화와 유연한 개발 프로세스 조정의 중요성을 더욱 깊이 깨달았습니다.
- MVVM 아키텍처와 Tuist를 이용한 구조 설계를 경험했습니다. 슈퍼앱 개발 과정에서 코드의 질을 유지하기 위해 클린 아키텍처를 적용하고, 서버 통신 코드를 최적화했습니다. 또한, 개발한 Logger로 앱 내 에러 추적과 성능 개선을 진행했습니다. RxFlow와 코디네이터 패턴을 도입하고, 유닛 및 UI 테스트를 위해 Mango 라이브러리와 MindGymKit을 개발했습니다. 스냅샷 테스트와 XCameraKit을 활용한 카메라 기능 구현, 데모앱을 통한 빌드 시간 단축 등 다양한 기술을 적용했습니다. 마지막으로, 데브옵스와 협업하여 Tuist 배포, xcode cloud를 통한 배포, 타겟 관리, Pickle의 우선순위 큐 알고리즘 적용 등을 경험했습니다.
Maeumgajim 자세히 보기
Shalo
개인
2024.04. ~ 2024.04.
프로젝트 목적
- 누구나 쉽게 만들어보는 영상편집 애플리케이션
주요 업무 및 상세역할
- 영상 내의 필터 씌우는 기능 구현
- 밝기, 노출, 톤 및 색상 대비, 기울기 조정 및 재생 속도 조절 기능 구현
- 영상을 내보내는 기능 구현
- 영상을 공유 기능 구현
사용 언어 및 개발환경
- Swift, Snpkit, Then
느낀점
- 프로젝트를 진행하면서 느낀 것은 라이브러리를 최소한으로 사용하고 순수 UIKit에 기능으로 개발을 하는 것이 목표였습니다. 개발을 진행하면서 UIKit의 새로운 문법을 공부할 수 있는 계기가 되었으며 10-200룰을 적용해보면서 함수는 10줄 내의 클래스는 200줄내의 작업으로 줄여보는 경험을 해보았습니다.
- StackView를 활용한 코드의 장점에 대해서 파악하는 계기가 되었습니다.
- 프로젝트를 진행해보면서 RxSwift를 사용하지 않고 비동기 작업을 구현하는 것에 대해 공부해 볼 수 있었습니다.
- 다국어 지원을 경험해볼 수 있었습니다.
Shalo 자세히 보기
밤이 되었습니다!?
개인
2024.04. ~ 2024.04.
프로젝트 목적
- 소켓 통신 기술을 적용한 마피아 게임
주요 업무 및 상세역할
- 소켓 IO를 사용해서 메세지 기능을 구현
- 게임 시작시 플레이어에게 직업을 부여하는 기능을 구현
- 밤이 되었을 때 마피아와 의사, 경찰이 스킬을 쓸 수 있도록 구현
- 초보자를 위한 부분적인 단어들의 뜻을 볼 수 있도록 구현
사용 언어 및 개발환경
- Swift, Snpkit, Then, Socket.iO
느낀점
- 소켓을 통해 데이터를 수신하는 과정이 한번의 연결로 별도의 요청 없이도 지속적으로 연결되어 있는 점이 흥미로웠습니다
- 특정 시간에 스킬을 사용하거나 투표를 할 수 있는 기능을 구현하면서 소켓 통신에 대한 이해도를 높였습니다.
- 추후에는 룸이라는 개념을 살려서 하나의 채팅이 아닌 방을 만들어보는 기능을 구현해볼 계획입니다.
밤이 되었습니다!? 자세히 보기
기술 스택
Swift, RxSwift, iOS, swift-ios, swift-package-manager, mvp, MVVM, MVC
대외활동
KWDC 컨퍼런스 참여
코엑스
KWDC에서 iOS의 신기술을 이해하고 학습할 수 있는 시간을 가지기 위해서 KWDC에 참여했습니다.
- SwiftData에 대해서 학습하였습니다.
- 다른 나라의 언어를 지원하기 위해서는 어떻게 해야할지 배울 수 있었습니다.
- 카카오톡의 모듈 구조를 공부해볼 수 있는 좋은 경험이 되었습니다.
원티드 프리온보딩 iOS
원티드
야곰님과 함께 좋은 코드가 무엇인지 알 수 있고 디자인 시스템을 고민해보는 온라인 강의에 참여했습니다
느낀점
- SOLID에 대해 다시 한번 생각해보는 계기가 되었습니다.
- 상속이 중요한 것일까? 어떤 상속이 좋은 것일까? 생각해보게 되었으며 OOP에 대해서 다시 돌아보았습니다.
- 디자인 시스템의 중요성에 대해서 공부하고 전에 공부한 GoF를 다시 공부해보았습니다.
2022AppJam
개인
2022 AppJam 해커톤에 참가했습니다.
자격증
정보처리기능사
한국산업인력공단
2021.10.