전체 글

iOS 개발

[iOS 개발] TDD 정의 및 장단점

개발을 시작한 이래로 지겹게 들었던 TDD.. 오늘은 TDD가 무엇이고, TDD의 장단점에 대해서 살펴보겠다. TDD란? TDD란 테스트 주도 개발(Test Drvien Development)을 뜻한다. 소프트웨어를 개발하는 여러 방법론 중의 하나로써, 제품이 오류 없이 정상 작동하는지 확인하기 위해 모든 코드는 테스트를 거치게 된다. TDD에서는 제품의 기능 구현을 위한 코드와 별개로, 해당 기능이 정상적으로 움직이는지 검증하기 위한 테스트 코드를 작성한다. 테스트가 실패할 경우 테스트 통과를 위해 코드를 수정하고, 테스트가 성공할 경우 성공한 코드를 리팩토링하는 과정을 거친다. 이를 그림으로 표현하면 다음과 같다. 그렇다면 이 TDD의 장점이 무엇이길래 많은 곳에서 이를 활용하려고 하는것일까? 해당 ..

iOS 개발

[Git] commit template 만들기

개발자들간에 작업을 할 떼 커밋 컨벤션을 통일하기 위해서 작성 양식같은 것을 설정하곤 한다. 기능을 추가할 때는 feat, 버그를 수정할 때는 fix와 같은 타입을 쓰면서 작업을 하는데 간혹 이건 어떤 타입의 커밋이지..? 헷갈렸던 경험이 있다. 그럴때마다 작성해두었던 커밋 컨벤션 작성 양식 페이지를 들어가 찾아봐야만 했고, 이러한 방식이 그닥 효율적이지 않다고 느끼고 있던 찰나 commit template을 따로 설정할 수 있다는 사실을 알게 되었다. commit template을 작성하는 방법은 다음과 같다. commit template 생성 방법 (터미널 기준) 1. 터미널에서 .git이 있는 현재 프로젝트 폴더에 다음 명령어를 입력 vi .gitmessage.txt 2. .gitmessage.tx..

iOS 개발

[iOS개발] Fastlane Match 적용하기

iOS앱의 경우 배포 뿐만 아니라 개발 과정에서도 복잡한 인증이 필요하다. Xcode에다가 이 앱을 개발한다는 개발자 프로그램 인증서와 Profile을 등록해야 되고, Appstore Connect에 앱을 업로드할 때도 이러한 인증 과정이 필요하다. Fastlane을 사용하더라도 이 인증 과정은 진행해야 하는데, 크게 두 가지 방법이 있다고 한다. 1. Cert,Sigh를 이용하는 방법 2. Match를 이용하는 방법 Cert,Sigh는 유저가 특별히 따로 설정해줄 필요는 없고, 애플 계정을 제대로 입력해뒀고, 인증서를 로컬 Keychain에 넣어줬다면 알아서 인증을 진행해주는 방식이다. 심지어 로컬에 인증서가 따로 없더라도 Cert,Sigh가 알아서 인증서와 프로필을 다운받아 진행해준다고 한다. Mat..

iOS 개발

[iOS 개발] Fastlane 적용해보기

새로운 프로젝트에 적용해볼 것들을 회의하다가 팀원이 배포 자동화를 적용해본 적이 있냐는 질문을 했다. 아키텍처, 라이브러리에 대해서만 생각하다가 배포 자동화라는 말을 들으니 아직 내가 경험해보지 못한 것이 많다는 것을 깨달았고, 곧바로 이번 프로젝트에 적용 해보려 한다. (TDD도 언젠가는..) 물론 지금까지 개인, 회사 앱을 배포한 경험이 10번 정도 밖에 되지 않았긴 하지만 하나의 iOS 앱을 배포하기 위해서는 꽤나 번거로운 과정들이 있다는 것을 알고 있었다. 그리고 이러한 배포를 간단하게 시간을 절약하며 할 수 있는 방법인 Fastlane을 알게 되어 이를 적용해보려 한다. Fastlane이란? Fastlane은 ruby 기반 오픈소스 라이브러리로 Android, iOS 등 배포 과정의 모든 일련의..

Tuist

[Tuist] - Tuist를 활용한 모듈화

새로운 프로젝트를 시작하면서 Tuist를 도입해 모듈화를 진행하게 되었다. 우선, 완성된 모듈 구조는 다음과 같다. 다른 프로젝트의 tuist graph는 거미줄처럼 모듈들이 여러개가 존재하는데, 그에 반해 아직 초기라 그런지 조금 초라하긴 하다.. 생각보다 tuist를 구성하는 일이 쉽지 않아서 하루죙일 삽질했던 것 같다. 일단 각 모듈의 역할은 다음과 같이 정의했다. App 제품으로 나가는 애플리케이션을 관리하는 프로젝트로, AppDelegate, SceneDelegate, Push Notification, Widget 등을 다루고, 앱 시작시 어떤 기능으로 시작할지, 그리고 값 초기화, 설정 초기화 등을 처리하는 프로젝트입니다. Features DesignSystem, Service 모듈에 의존해 ..

Tuist

Tuist 사용법 및 에러 모음

Tuist 사용법 1. 프로젝트 클론 2. tuist 설치 - 터미널에 curl -Ls | bash 입력 3. tuist clean 명령어 입력 4. tuist fetch 명령어 입력 5. tuist generate 명령어 입력 → 이후에 tuist edit할 경우 3,4,5 과정 수행 (정확히 말하면 345를 항상 모두 수행할 필요는 없는걸로 아는데 자세한 내용은 구글에서 검색하시길..) Carthage was not found in the environment. 에러 tuist fetch 시 다음과 같은 에러 발생. 이 경우 cartage가 설치되어 있지 않은 상태이기 때문에 brew install carthage 명령어를 통해 carthage를 설치해주면 된다. tuist fetch 명령어 실행 시..

회고

[회고] - 신입 iOS 개발자 4개월차 회고

회사에 입사하고 어느덧 4개월이라는 시간이 흘렀다 원래 회사가 운영중인 웹뷰 서비스를 네이티브 앱으로 전환하기 위해서 회사에 입사했지만.. 일단 결론부터 말하면 아직까지도 해당 작업을 진행하고 있지 않다. 아마 이번달부터 기획이 나오기 시작한다던데 하반기에는 죽음의 기간이 아닐까 싶다..(다른 프로젝트도 같이 진행해야 되서..) 그렇다면 4개월동안 멍 때리고 있었냐? 라고 하면 그건 또 어느정도 부정하고 싶다..ㅎ 일단 입사하고 1개월 동안 회사 분위기 적응 및 부족한 지식 습득의 시간을 가졌다면 그 뒤로 1개월 동안은 세미나를 진행하며 시간을 보냈다. 이 기간동안 나보다 6개월 가량 빨리 입사하신 iOS 개발자 분과 같이 클린 아키텍처, 모듈화에 관한 세미나를 준비할 수 있는 좋은 기회를 갖게 되었는데..

iOS 개발/UIKit

[UIKit] custom TextField 만들기

기존에 SwiftUI를 활용해서 만들었던 택배조회 서비스를 UIKit으로 개발하는 작업을 간간히 하고 있다. 기존 기획에는 다음과 같은 TextField가 존재했었다 화면을 보면 선택되지 않았을 시에는 border가 없다가 텍스트필드가 선택되는 경우 보라색이, 에러가 발생했을 경우(가령, 이메일 형식 아님) border 색과 placeholer 텍스트이 변하고, 텍스트 필드가 흔들리는 애니메이션을 추가하려고 했다. 그러나 SwiftUI를 활용할 당시에는 이 모든 기능을 개발하는데 어려움을 겪어서(지금 하면 할 수 있을 것 같기도..) 포기했었는데, 이번에 UIKit으로 개발하면서 해당 기능을 custom textfield를 통해 구현했다. 전체적인 로직은 다음과 같고, shaking과 같은 함수나 해당 ..

bamtorii
bamtori