WooKoo Blog

물과 같이

ios 15

포카마켓 iOS 팀의 여정 (디버깅 및 검수) - EP02

안녕하세요포카마켓 iOS 팀에서 개발을하고 있는 WooKoo 입니다. 지금까지 포카마켓의 iOS 팀에서 어떤 식으로 디버깅 및 검수 QA 등을 진행하는지 이야기를 들려 드리고자합니다.이번 포스팅에서는 디버깅이란 단순히 버그를 수정해나아가는 과정을 넘어서, 문제를 조금 더 쉽게 발견하고, 잠재적인 이슈를 트래킹 할 수 있는 방법 등을 이야기 해보고자 합니다.  1. LookIn LookIn 이란 View 의 계층과 상태들을 요구사항과 맞는지 빠르게 확인 할 수 있는 중국산(?) 도구입니다. 개발 타겟의 앱에서 쉽게 UI 를 디자이너분들이 확인(간격, 크기 등) 할 수 있는 도구들은 없을까 고민하던 중에 발견했습니다.https://lookin.work/ https://lookin.work/ lookin.wo..

개발/개발 2024.10.16

포카마켓 iOS 팀의 여정(개발 전략 및 체계) - EP01

안녕하세요.포카마켓 iOS 팀에서 개발을하고 있는 WooKoo 입니다. 지금까지 포카마켓의 iOS 팀을 빌딩하면서 어떤 방식과 나름의 고민으로 개발 전략을 구성하게 되었는지 이야기를 들려드리고자 합니다.  2020년 03월 입사와 함께 아무 것도 존재하지않는 iOS 팀에 합류하게 되었습니다.Xcode 프로젝트 조차 없었기에 회사에 프로젝트를 개설하는 첫 창조주가 되었습니다. 보통은 작은 레거시 프로젝트라도 있기 마련인데 말이죠.. 1. 협업 충돌모든 프로젝트와 마찬가지로 제 컴퓨터의 로컬에만 존재했던 프로젝트였습니다. 초기에는 정말 많은 프로젝트 설정들이 변경되어야했습니다. 단순 Main Storyboard 를 info.plist 부터 날리는 것부터 권한 설정 및 기타 설정 등 팀원과의 깃 충돌은 어마무..

개발/개발 2024.10.14

[iOS] - Quick/Nimble 문서로 Unit Test 배우기 - 2

https://lazyowl.tistory.com/374 지난 1편에 이어서 바로 시작하겠습니다. Nimble Assertions 를 사용하여 테스트 더욱 간결하게 하기 XCTest 로 개발한 테스트 케이스가 실패 할 경우 어떻게 나타날까요? 이렇게만 뜰꺼에요 우리는 이왕 정보를 얻을거 좀 더 많은 정보를 얻으면 좋겠죠? 무언가를 실패했는데? 그래서 뭔데? 등등 왜 실패했는지 원인을 찾는데 많은 시간을 들여요. 그래서 실패 시 이렇게 메세지를 작성했었죠 여기서 nimble 의 힘이 나타납니다! expect(sillyMonkeys).to(contain(kiki)) 이렇게 expect(). to() 를 이용하면 메세지를 작성하지 않아도 알아서 알려줍니다. Quick Example 과 Example 그룹으로 ..

개발/개발 2023.02.14

[iOS] - Unit Test 기본 개념 공부하기

많은 개발자분들께서 테스트 코드를 작성이 중요하고 작성을 하고 있다는 것을 알게되었습니다. TDD 에 대하여 장단점을 논하면서 쓰자 쓰지말자 논쟁도 많았구요. 그러나 정말 중요한 것은 테스터블한 코드를 작성하는 것과 핵심 로직에 테스트 코드가 있다면 분명 없는 것보다 좋은 것은 분명한 진리인 것 같습니다. 뭐 불평불만하기 전에 테스트 코드 작성을 할 줄은 알아야 된다고 생각해서 공부를 해보려고하나 많이 어려운 분야인 것 같아요. 그래서 테스트 코드라는 것에 대한 기초 개념이나 입문에 필요한 내용 위주로 글을 작성해보려고합니다. 테스트 코드란 무엇일까요? 말 그대로 내가 개발한 코드에 대해서 의도대로 동작하는지 확인 할 수 있는 코드를 말합니다. 이로써 소프트웨어의 품질이나 안정성을 확인 할 수 있는 것이..

개발/개발 2022.11.18

[iOS] - Carthage 따라하기

안녕하세요 오늘은 iOS 앱 중에 Carthage라는 의존성 관리 도구가 있는데 이걸 사용해보려고해요 요즘은 SPM을 많이들 사용하실텐데 지원 안하는 라이브러리들이 있어서 Pod을 써볼까했지만 Carthage 경험이 없어서 이 참에 한번 해보려고합니다. 근데 cocoapod보다 약간 불편하다고 하더군요 ! 한번 해보면서 느껴보겠습니다. 1. Homebrew 설치! https://brew.sh/index_ko Homebrew The Missing Package Manager for macOS (or Linux). brew.sh 홈브루 설치해주시고! 2. Carthage 설치 >> brew install carthage 만약 오류가 나신다면 ? m1 맥북이 나오면서 홈브루 위치가 잘못설치되면 오류가 나는 경..

개발/개발 2022.08.20

[iOS] - Responder Chain

오늘은 Responder Chain 에 대해서 정리해보려고합니다. Responder에 대해서 먼저 알아야겠죠? Responder는 이벤트를 핸들링 및 이벤트에 반응 할 수 있는 객체입니다. UIResponder에서 상속된 클래스의 인스턴스들이죠 저희가 개발하면서 자주 사용하는 UIApplication, UIViewController, UIView(UIButton, UITextField 등) 모든 사용자가 이벤트를 발생시키는 것들은 responder 객체에 보냅니다. 예시를 하나 들어볼게요 한 화면에 뷰가 있고 그 안에 서브 뷰로 텍스트 필드가 있다고 가정합시다. 사용자가 텍스트필드를 탭하면 이에 반응하며 키보드가 올라오죠?? 가장 처음으로 이벤트가 발생한 텍스트 필드! 그것이 바로 first respon..

개발/개발 2022.08.04

[iOS] - iOS 에서 딥링크가 뭘까? (Firebase 기반으로)

딥링크란 무엇일까요 ??? 어떤 주소를 입력하면 해당 주소에따라 앱이 실행되거나 이동시키는 기능을 수행하는 것을 이야기합니다. 앱이 설치가 되어있으면 해당 화면으로 이동시키는데 만약 앱이 설치가 안되어있다면 앱 스토어로 이동 후 설치 후에 특정 화면으로 바로 이동시키도록 하는 것을 지연된 딥링크라고도 부르기도합니다. 딥링크는 방식에 따라 크게 3가지로 분류합니다. 1. URI Scheme 방식 : 앱에 URI Scheme를 등록하여 분석하여 특정 화면으로 이동 2. App Link : Android 도메인 주소를 이용한 딥링크 3. Universal Link : iOS 도메인 주소를 이용한 딥링크 오늘은 iOS Universal Link에 대해서 알아보도록 하겠습니다. 시작 전 URI Scheme 방식의..

개발/개발 2022.07.25

[iOS] - iOS 환경에서 의존성 주입(Dependency Injection) 알아보기

의존성 주입을 하면 좋은 점이 많다고 하길래 해당 내용을 iOS를 기준으로 공부해보도록 할 것 이다. 먼저 기본적으로 알아야할 개념들이 너무 많아서 전부 다룰 수 있을지 모르겠지만 천천히 정리해보도록 하겠다. 1. 의존성 주입 (Dependency Injection) 의존성 주입을 한 문장으로 정리하자면 외부에서 초기화해서 클래스 안에 할당해주는 것입니다. 2. 장점 (왜쓰는가?) 그럼 의존성 주입을 사용하면 뭐가 좋을까? 1. 재사용성이 높아짐 2. 테스트 용이 3. 코드 단순화 -> 결합도는 낮추면서 유연성과 확장성 향상 3. 그럼 의존성이 뭔지 주입이 뭔지 알아보자 의존성이란 Mobile 클래스를 Task클래스에서 사용하고 있으니까 의존성이 생기게 된다. 이처럼 어떠한 클래스에서 다른 클래스를 사..

개발/개발 2021.08.23

[iOS] - The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions (Rx 타입추론 에러)

The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions RX를 공부하면서 위 에러가 나왔다. 타입추론을 하기 어려워서 빌드를 할 수 없다는 것인데 나는 combineLatest 오퍼레이터와 map을 함께 사용하면서 발생했다. 이 옵저버를 변수에 넣고 map을 사용해보자. 즉 쪼개기를 잘 해보면 빌드 할 수 있다.

개발/개발 2021.07.22