본문 바로가기

전체 글

(53)
[모듈화] 프로젝트에 모듈화를 진행하면서 현재 진행중인 프로젝트에 Tuist를 도입을 진행한 후 대규모적인 구조 개편을 진행 할 수 있는 환경이 프로젝트내에 만들어져 본격적으로 모듈화를 진행을 할 수 있게되었다. 모듈화를 진행하게된 이유는 현재 진행하고있는 프로젝트의 iOS 개발자들의 수도 늘어나게되고 앱이 점점 거대해짐에 따라 한번에 프로젝트 전체를 파악하기에는 큰 무리가 있고 개발을 진행할때 걸리는 제약들이 너무많아 전체적인 개발속도, 안정성등이 떨어져 이 해당부분을 보완하기위해 모듈화를 진행하게되었다. 처음부터 모듈화를 하지 않고 추후에 리팩토링을통해 모듈화가 진행된 이유는 처음에는 현재 프로젝트의 앱이 이렇게 큰 규모의 앱이 아니였고 iOS 개발자들의 수가 급격하게 늘어난것도 1년정도 되지않았기 때문에 모듈화의 필요성이 따로 없었다. 왼..
2022년 늦은 개발자 회고록 2022년 회고록 2022년을 보내고 쓰는 회고 올해 있었는지, 어떤 목표를 이뤘는지 내년에는 무슨 목표를 가질지를 적어놓을 필요를 느껴 회고를 적는다 1월 작년 8월 휙고라는 킥보드 공유 서비스를 운영하는 회사에 입사하여 회사 내부의 iOS 프로젝트를 동시에 진행하며 꾸준한 리팩토링을 통해 iOS 앱의 퀄리티를 향상 시키는 과정을 진행하였고 회사 내부의 DevOps 개발자와 CI / CD 관련하여 꾸준한 리서치와 공부를 통한 iOS CI / CD 환경을 구축하기 위해 노력했다. 2월 iOS CI / CD 환경을 구축한 뒤 실질적으로 iOS 프로젝트에서 원활한 CI / CD를 구축하기 위해 물리 Mac이 필요하다는 것을 인지하여 githubAction을 이용한 가상머신에서 CI / CD를 구축하는 것으로..
[Tuist] 회사 프로젝트에 Tuist 를 도입하고 난 후 주저리주저리 블로그에 글을 얼마만에 쓰는 건지 모르겠다 한동안 회사에 적응하고 회사에 Tuist를 도입하는 담당자가 되어서(내가 해보겠다고 지원했다) 무사히 마무리를 하고 그 도입기? 같은것을 간단하게 적어볼려고한다. iOS 프로젝트를 팀단위로 관리하고 있는조직이라면 다들 .xcodeproj의 깃 컨플릭으로 고생해본적 있을 것이다. 그래서 많은 iOS 개발자들이 이러한 불편한점을 개선하기위해 많은 기술들이 연구및 도입이 되고있었고 과거에는 XcodeGen 요즘은 한국에서 Tuist 라는 (민소네님이 적극적으로 홍보한) 프로젝트 관리 툴이 사용으로 .xcodeproj의 깃 컨플릭 을 해결한 팀들이 많다고 들었다. 나도 이번에 새로운 회사에 들어가 랜딩기간의 프로젝트 일환으로 특정기능들을 리팩토링하고, 특정페이지 전체를..
ReactorKit Pulse 분석 기존의 Reactor Kit 에서 state의 값을 사용하게 되면 모든 mutation에 반응하여 state 값이 트리거가 생기게 되고 해당 실행되게 된다. 그래서 의도하지않는 state에 따른 함수 실행을 막기위해 아래와 같이 .distinctUntilChanged() 을 사용하여 방지하였다. reactor.state.map { $0.overseasEmpty } .distinctUntilChanged() .filterNil() .bind(with: self, onNext: { owner, data in owner.myListPager.setEmptyView(index: FavoriteTabItem.overseaRoom.index) }).disposed(by: disposeBag) 매번 새롭게 코드..
Fastlane , Github Action 이용하기 이직을 준비하면서 새로운 프로젝트를 할 팀원들을 구하고 있었고 DDD라는 좋은 사이드프로젝트 동아리가 있어 iOS개발팀으로써 DDD사이드 프로젝트를 진행하게되었고 팀원과 이야기하여 서로의 요구를 만족하는 기술들을 찾던중 팀원과 나 둘다 CI / CD에 상당히 관심이 많아 작업을 진행하게 되었고 평소 Local or 물리맥에서만 진행했던 작업들을 GithubAction 을 통해 진행할려고하니 변경해야할 사항 찾아봐서 고쳐야할 사항들이 많아 많은 공부를 하게되었다. Fastlane이란? App을 빌드하고 앱스토어에 업로드하고 심사제출, 테스트빌드 업로드, 테스터 초대 등 번거롭고 오래 걸리는 작업들을 Fastlane을 통해서 자동화할 수 있습니다. 1. Fastlane 설치 brew install fastl..
우아한테크세미나 코드리뷰편을 보고 난 후 느낀점 이번에 새롭게 회사를 이직하게되면서 1인 개발이 아닌 팀단위 iOS 개발 프로젝트를 참여하게 될 예정이였기에 기존에 코드리뷰를 해본 경험이 적은 나는 새로운 팀에가서 빠르게 적응을 하기위해 코드리뷰에 대해 찾아보고 있었고 그러던 와중 우아한 테크 세미나에 코드리뷰편을 진행한다는 소식을 듣고 온라인으로 풀로 시청을 하며 코드리뷰에 자세히 알 수 있었다. 전체적인 내용을 적으면서 내가 느낀점을 적겠습니다. 좋은 설계를 유지해야 생산성을 만들 수 있다. 더보기 리팩토링 2판을 읽고있는데 해당책의 저자가 했던 말과 동일한 이야기를 시작으로 세미나가 시작이 되었다. 공학의 특성은? 공학 = 설계 + 빌드 설계 : 예측하기 어렵고 , 급여가 비싸고 창의적인 사람들이 필요 빌드 : 좀 더 예측하기 쉬움 설계와 빌드가..
Git Flow 협업하기 어제는 배달의민족 "코드리뷰"에 관한 세미나가 있어 시청하고 후기를 작성하느라 GitFlow를 공부만 하다가 멈췄다. 그럼 이제 실제로 더미 프로젝트를 만들어서 만들고 합치고 지지고 복고를 시작해볼려고한다. 자 우선 깃레포를 만들고 거기에 프로젝트를 넣어준다(이 부분은 너무 쉽기에 설명은 패스...) 그리고 바로 add , commit , push 하지 말고 .gitignore , .gitattributes 설정해주고 들어갑니다 gitignore에는 기본적으로 무시해야할것들을 추가해주기 위해 # Created by https://www.gitignore.io/api/xcode,swift,cocoapods # Edit at https://www.gitignore.io/?templates=xcode,swif..
팀단위 개발 준비하기 - Git Flow 이해 Vincent Driessen가 만든 Git으로 브랜치를 나눠 개발하는 방식 중 하나입니다. 특징은 5종류의 브랜치를 이용하여 저장소를 운영하게 됩니다. 5종류의 브랜치는 아래와 같습니다. Master(main) Release Develop Feature Hotfix 1. Master 가장 먼저 master 브랜치는 실제 제품으로 출시되고 운영되는 브랜치를 의미합니다. 여러 개발자들이 만든 기능을 합치고 테스트를 거쳐 이상이 없는지 확인합니다. 2. Release master 브랜치에 통합하기 전에 완성된 기능을 테스트 하는 브랜치를 의미합니다. 보통 제품으로 출시되기 전의 버전을 관리합니다. 3. Develop 여러 엔지니어들이 개발한 기능들을 통합해 놓은 브랜치를 의미합니다. 다음 버전을 대비하기 위..