[회고] 면접으로 성장해서 네이버 웹툰 iOS 최종 합격, 입사까지
·
경험 회고/꾸준 회고
서론빙하기에 운이 좋게도 네이버 웹툰이라는 좋은 기업에 이직하게 되었습니다. 네이버 웹툰에는 총 세 번 지원했고, 세 번 모두 최종 면접까지 진행했습니다.면접 과정에서 현재 회사에서는 경험할 수 없었던 새로운 관점들을 얻을 수 있었습니다.대규모 기업에서 마주하는 고민들, 현재 직장에서 겪고 있던 어려움들을 해결할 수 있는 아이디어들을 배울 수 있었던 소중한 시간이었습니다. 입사를 일주일 앞둔 지금, 네이버 웹툰이나 iOS 개발자로의 취업 및 이직을 준비하는 분들에게 조금이라도 도움이 되었으면 하는 마음으로 제 경험을 정리해 보았습니다.궁금한 점이 있으시면 언제든 댓글로 남겨주세요. 또한 이전에도 비슷한 경험담을 작성한 적이 있으니, 관심이 있으시다면 함께 참고해 보시기 바랍니다.- https://jeon..
[iOS] UIProgressView에 숨겨진 애플의 디테일 - progress의 최소 width
·
iOS/개념 & 개발
UIProgressViewUIProgressView는 0~1 사이의 수치로 progress를 표현할때 사용하는 UIView입니다.개발자는 정확한 progress를 쉽게 표현하기 위해 UIProgressView를 사용할텐데요.UIProgressView에는 숨겨진 함정이 있습니다.바로 progress를 표현하는 최소 width가 정해져있다는 것입니다. progress 수치에 따른 width 비교0.5예를 들어, width가 100인 UIProgressView의 progress를 0.5로 설정하면 progress width는 50이 됩니다.progressView.progressTintColor = .cyanprogressView.frame = CGRect(x: 180, y: 300, width: 100, he..
[iOS/꾸준 회고] Swift Testing 및 테스트 작성에서 느낀 점
·
iOS/개념 & 개발
서론최근 테스트와 관련된 포스팅을 작성했습니다.테스트 코드 필요성과 테스트 쉬운 구조테스트 코드 작성과 구조 개선역할 분리와 객체 지향과 코드 개선그리고 작업을 진행하면서 꾸준히 테스트 코드를 작성하고 있어요.Swift Testing의 좋았던 점과 테스트 코드를 작성하면서 느낀 점을 공유해보고 싶어서 또 포스팅을 쓰러 왔어요 ㅎㅎ테스트 코드를 왜 작성하기로 결심했는지 등은 이전 포스팅을 참고해 주세요. Swift Testing제가 담당하는 앱은 글로벌 서비스라 최근에 최소지원버전을 iOS 15로 올렸을 만큼 최신화된 프로젝트는 아니에요.Swift Testing 처음 발표를 들었을 때는 "이번에도 나는 못 쓰지 않을까?" 생각이 있었어요.다행히 Swift Testing은 그런 걱정과 달리 편하게 사용할 ..
[iOS/꾸준 회고] 역할 분리와 객체 지향과 코드 개선
·
iOS/개념 & 개발
서론최근 제 코드를 어떻게 하면 더 나은 방향으로 개선할 수 있을지 많은 고민을 하고 있습니다.매 순간 마주하는 코드의 맥락과 작업 환경, 그리고 제가 처한 상황이 계속 변화하다 보니 명확한 해답을 찾기가 쉽지 않더라고요. 이런 고민들을 정리하면서 함께 나누고 싶어 이 글을 쓰게 되었습니다.특히 요즘은 객체지향적인 설계와 역할 분리에 대해 깊이 생각해보고 있는데요. 실제 업무에서 작성한 코드로 예시를 들면 좋겠지만, 회사 코드라는 특성상 공개하기 어려운 점이 아쉽네요.그래서 이번 글은 다소 추상적인 경험 공유가 될 것 같습니다만, 함께 이야기를 나누면서 서로의 생각을 공유할 수 있었으면 좋겠어요. 고민하게 된 계기역할 분리와 객체지향에 대해 고민하게 된 계기는 반복되는 보일러플레이트 코드였습니다.개발을 ..
[iOS/꾸준 회고] 테스트 코드 작성과 구조 개선
·
iOS/개념 & 개발
서론이전 포스팅에서 테스트 코드의 필요성을 느꼈다는 글을 적었습니다. [iOS/꾸준 회고]테스트 코드 필요성과 테스트 쉬운 구조서론최근 테스트 코드와 관련된 많은 깨달음을 얻었습니다.테스트 코드의 필요성과 테스트하기 좋은 구조란 무엇인지, 그리고 왜 MVC 패턴에서 테스트가 어려운지를 체감할 수 있었습니다. 테jeong9216.tistory.com이에 대한 최근 근황을 작성해보려고 합니다. 흐려지는 동기테스트 코드가 아니어도 이미 많은 업무를 처리하다 보니 테스트 코드를 작성하는 동기가 점점 흐려졌습니다. (외면하게 되었다는 게 맞겠네요... 🥲) 이 흐려지는 동기를 해결하기 위해 저는 테스트 코드 작성을 팀의 레벨로 올려서 진행했습니다.저희 회사는 1명이 프로젝트를 온전히 담당하는 구조라서 같은 프로..
[iOS/꾸준 회고] 테스트 코드 필요성과 테스트 쉬운 구조
·
iOS/개념 & 개발
서론최근 테스트 코드와 관련된 많은 깨달음을 얻었습니다.테스트 코드의 필요성과 테스트하기 좋은 구조란 무엇인지, 그리고 왜 MVC 패턴에서 테스트가 어려운지를 체감할 수 있었습니다. 테스트 코드 없이 앱 리뉴얼 하기최근 사내 앱의 UI 리뉴얼을 진행했습니다.기존 기능은 그대로 유지하면서 UI만 새롭게 구현하는 작업이었습니다. 이 과정에서 기존 동작 검증에 어려움을 느꼈습니다.기존 동작이 제대로 유지되는지 확인하기 위해서는 기존 앱과 리뉴얼된 앱을 일일이 실행하며 비교해야 했습니다.테스트 코드가 있었다면 딸깍 한 번으로 검증이 가능했을 텐데... 많이 아쉬웠습니다. 작업 시간뿐만 아니라 심리적인 부담도 상당했습니다."테스트 코드 없는 리팩토링은 도박과 같다"는 말이 있듯이 코드를 수정할 때마다 "이 수정이..
[Swift] SwiftUI로 느낀 Swift 기본기의 중요성
·
Swift/개념 & 응용
서론SwiftUI를 학습하면서 Swift 기본기의 중요성을 크게 느꼈습니다.SwiftUI는 구현이 매우 편리하지만, 학습 과정은 그만큼 쉽지 않다고 생각합니다.이번 포스팅에서는 View 프로토콜을 Swift 기반으로 단계적으로 이해해 나갔던 제 학습 과정을 공유하고자 합니다. 1단계: View 프로토콜 정의가장 먼저 공식문서가 말하는 View 프로토콜을 봅시다.@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)public protocol View { associatedtype Body : View @ViewBuilder var body: Self.Body { get }}View 프로토콜은 body computed 프로퍼티를 가지는 타입입니다..
[iOS/꾸준 회고] 클린 아키텍처의 원... 그리고 의도를 보는 시야
·
iOS/개념 & 개발
클린 아키텍처 원 그림과 사용자 관점의 불일치최근 흥미로운 대화를 나눴습니다."iOS 개발할 때 클린 아키텍처의 원과 사용자 관점이 잘 안 맞는 것 같지 않나요?" 소프트웨어 개발자라면 한 번쯤은 접해봤을 클린 아키텍처의 유명한 원형 다이어그램에 대한 이야기입니다.이 다이어그램에서는 네트워크 계층이 가장 바깥쪽에 위치하고, Presenter, Use Case, Domain 등이 안쪽에 배치되어 있습니다.하지만 실제 사용자 시나리오를 보면, 화면이 먼저 나타난 후 사용자 이벤트에 따라 네트워킹이 발생하는 것이 일반적입니다.즉, 사용자 관점에서는 네트워크보다 Presenter나 UseCase를 먼저 경험하게 되는 것이죠. 물론 이 다이어그램이 잘못되었다고 할 순 없습니다.이렇게 널리 알려진 데에는 분명한 이..
[Swift] flatMap이 deprecated가 된 이유 / compactMap의 등장
·
Swift/개념 & 응용
서론Swift 4.1에서 flatMap이 deprecated되고 compactMap으로 역할이 분리되었습니다.저는 한 가지 착각하고 있었습니다. "flatMap이 아예 사라지고 compactMap이 새로 생겼구나"라고 오해했는데요, flatMap은 여러 형태가 존재했고, flatMap 중 하나가 compactMap이 된거였습니다.이번 포스팅은 pointfree의 https://www.pointfree.co/episodes/ep10-a-tale-of-two-flat-maps 영상과 스크립트를 정리한 포스팅입니다. flatMap이 어떤 형태를 제공했었고, 어떤 메서드가 compactMap이 된 것인지 알아보겠습니다. flatMap의 세 가지 형태flatMap은 총 세 가지 형태로 제공됩니다.extension..
[iOS/꾸준 회고] UseCase 배워두길 잘했다
·
iOS/개념 & 개발
서론제 프로젝트에서는 대부분의 UseCase가 Repository와 ViewModel을 단순히 연결해 주는 역할만 하고 있었습니다. 예를 들면 다음과 같은 코드였죠.struct FetchBooksUseCase { func execute() async -> Something { await repository.fetchBooks() }}이런 구조 때문에 저는 종종 "과연 이 상황에 UseCase가 정말 필요할까?" 하는 의문을 가졌습니다. 하지만 최근 UseCase를 정의한 것이 매우 적절했다고 느낀 경험이 있었습니다.물론 이것이 엄청난 발견이나 깨달음은 아니었습니다. 다만, 인터넷에서 자주 언급되는 "UseCase를 사용해야 하는 이유"를 직접 체감하고 경험했다는 점에서 작은 감동을..
[iOS] UIPageViewController 크래시 해결 과정 (The number of view controllers provided (0) doesn't match the number required (2) for the requested transition)
·
iOS/개념 & 개발
UIPageViewController 크래시 분석UIPageViewController를 사용하는 앱에서 높은 비율로 크래시가 발생했습니다.The number of view controllers provided (0) doesn't match the number required (2) for the requested transitionThe number of view controllers provided (0) doesn't match the number required (1) for the requested transitionUIPageViewController에 제공하는 UIViewController의 개수를 제대로 컨트롤하고 있었기 때문에 원인을 파악하기 어려웠습니다. UIPageViewControl..
[Swift] DTO 매크로(Macros)로 CodingKeys 반복 패턴 제거하기
·
Swift/개념 & 응용
Swift Macros 사용 이유이전 포스팅(https://jeong9216.tistory.com/727)에서 Swift macros에 대해 소개했습니다.Swift macros는 코드 작성 시 발생하는 반복적인 패턴을 효과적으로 제거하는 데 큰 도움이 됩니다.여기서 주목할 점은 단순한 코드의 반복이 아닌, 코드만으로는 해결하기 어려운 '패턴의 반복'을 제거할 수 있다는 것입니다. 이는 Swift macros의 강력한 특징 중 하나입니다. 구체적인 예로, DTO(Data Transfer Object)에서 CodingKeys를 작성하는 패턴을 들 수 있습니다. 이러한 패턴은 일반적인 방법으로는 코드 레벨에서 반복을 제거하기 어렵습니다. 그러나 Swift macros를 활용하면 이러한 반복적인 패턴을 효과적으..
[Swift] WWDC23 - Expand on Swift macros
·
WWDC/Swift
매크로 지원의 필요성Swift는 보일러 플레이트 코드를 줄이기 위한 다양한 기능을 제공하지만, 이러한 기능들로도 해결되지 않는 경우가 발생할 수 있습니다.이때, 개발자가 Swift 컴파일러를 수정하는 방법도 있습니다. Swift가 오픈 소스로 제공되기 때문에 컴파일러 수정이 가능하긴 하지만, 이 방법은 복잡하고 유지보수가 어렵습니다.매크로를 활용하면 컴파일러를 수정할 필요 없이 패키지에 포함된 형태로 보일러플레이트를 제거할 수 있습니다.이는 개발자들이 원하는 기능을 쉽게 구현할 수 있도록 도와줍니다. 매크로는 명확해야 한다Swift 컴파일러는 #과 @ 기호를 매크로로 인식하여 확장성을 추가합니다.매크로는 두 가지 유형이 있습니다.독립형 매크로: 항상 # 기호로 시작합니다.첨부 매크로: 코드 선언부에 작성..
[꾸준 회고] SwiftUI 찍먹 후기 (feat. Boost SwiftUI 스터디)
·
경험 회고/꾸준 회고
Boost SwiftUI 스터디최근 SwiftUI 스터디를 시작했습니다.이름은 Boost SwiftUI 스터디! (사실 공식 이름 없음 ㅎ;)iOS 개발자 7명과 디자이너 1명이 함께하는 스터디입니다. (혹시 깃허브 레파지토리가 궁금하다면...? https://github.com/BoostSwiftUI/SwiftUI) SwiftUI Tutorial로 기초를 잡고, 디자이너와 피그마로 협업하여 다양한 UI 개발 경험을 쌓습니다.마지막으로 주 1회 WWDC 시청으로 딥 다이브를 하고 있습니다. 스터디를 시작한지 약 한 달이 지난 지금, SwiftUI와 관련된 생각이 조금씩 쌓여서 글까지 쓰게 되었습니다.참고로 저는 최소 지원 버전을 iOS 15로 설정하여 진행했습니다. 깊은 고민 없이도 만들기 쉽다.처음 이..
[iOS] Unit Test를 GitHub Actions로 자동화하며 겪은 에러 해결 과정
·
iOS/개념 & 개발
Unit Test 자동화GitHub Actions를 활용하면 Xcode에서 작성한 Unit Test를 자동으로 체크할 수 있습니다.PR을 생성할 때, push를 할 때 등의 액션이 발생하면 Unit Test를 수행하는 방식입니다.Test 편의성과 안정성을 동시에 챙길 수 있으므로 꼭 필요한 과정입니다.  GitHub Actions로 자동화하며 겪은 에러저는 GitHub 안에서 개인 프로젝트 사이클을 돌리고 싶었기 때문에 GitHub Actions를 선택하였는데요.쉽게 가능할 줄 알았지만, 많은 에러를 겪었습니다. 고군분투의 흔적 ;;결과론적인 이야기지만, 앞에서부터 차근차근 살펴봤다면 쉽게 해결했을 텐데... 반성합니다 🥲성공한 Workflow는 최하단에 있으니 최종 결과만 필요하시면 쭉 내리시면 됩니..
유정주
'ios' 태그의 글 목록