[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로 설정하여 진행했습니다. 깊은 고민 없이도 만들기 쉽다.처음 이..
[일주일 회고] SwiftUI 스터디 시작과 유지보수 개선, 그리고 WWDC 학습
·
경험 회고/꾸준 회고
회고 요약 feat. GPTSwiftUI 기초 학습과 다양한 UI 구현 목표, 적극적인 7명의 멤버와 함께 시작.유지보수와 개선에 중점을 둔 한 주. QA 티켓 감소와 기획자들에게 도움이 되는 선행 배포라는 긍정적인 경험을 얻음.SwiftUI 학습을 본격적으로 시작, WWDC 영상을 주 1회 시청하며 공식 개념 학습. 한 일SwiftUI 스터디 시작!SwiftUI 스터디를 시작했습니다.SwiftUI의 기초를 학습하고, 다양한 UI를 SwiftUI로 구현하는 것이 목표예요. SwiftUI Tutorial과 WWDC로 기초를 학습하고, Mobbin을 참고해서 다양한 화면을 구현해 볼 예정이에요.하다 보니 7명이나 모였는데, 한 분 한 분 모두 적극적이신 분이라 너무 기대됩니다. (아직 아이스 브레이킹만 함 ..
[일주일 회고] 5월 4주 차 (16일 ~ 24일)
·
경험 회고/꾸준 회고
한 일 (16일 ~ 21일)새로운 기술 도전잘한 점새로운 기술에 도전했습니다.Tuist를 이용한 모듈화와 FlexLayout + PinLayout 중 고민하였고,FlexLayout + PinLayout을 이용해 UI 성능을 개선하기로 결정했습니다.현재 저의 개발 환경은 혼자 + 크기가 작음 이기 때문입니다.특히 혼자 개발하는 환경에서 모듈화가 크게 의미가 없다고 생각했습니다.결국 저에게 좀 더 가깝게 다가오고 흥미가 있던 FlexLayout과 PinLayout에 도전했습니다.(+ 최근 자주 보고 있는 당근 테크 블로그에서도 봐서 더 친근하게 느껴졌어요 ㅋㅋ) 개인 프로젝트 뿐만 아니라 현업에서도 새로운 기술에 도전하고 있어요.이번 주는 새로운 기술 도전을 크게 한 일주일이라고 생각이 드네요 :) 아쉬운 ..
[일주일 회고] 5월 3주 차 (9일 ~ 17일)
·
경험 회고/꾸준 회고
한 일 (9일 ~ 15일)파이어베이스 로그인 연동잘한 점공식 문서의 중요성을 깨달은 과정이었습니다.애플 로그인과 파이어베이스 인증을 연동하는 과정에서 파이어베이스의 친절한 공식 문서에 놀랐습니다.공식 문서만 봐도 모든 기능을 구현할 수 있었어요.평소 iOS 개발을 할 때도 공식 문서의 중요성을 상기하면서 개발하는데요,이번 개발 과정에서 공식 문서를 가장 처음 봤고, 공식 문서만으로 기능을 구현했다는 점이 뿌듯했습니다. 아쉬운 점로그인의 테스트가 미흡했습니다.ViewModel 테스트에서 로그인이 성공했는지, 실패했는지 여부만 테스트했어요.네트워크가 없는 인증 테스트가 과연 의미가 있는 것인지 고민이 되었기 때문입니다.Storage와 Repository의 테스트 방법에 대한 고민도 더 필요하다고 느껴졌어요...
[일주일 회고] 5월 2주 차 (2일 ~ 10일) + 감사한 글쓰기 모임
·
경험 회고/꾸준 회고
한 일 (2일 ~ 7일)홈 화면 카테고리, 도전기록 리스트 표시잘한 점리스트를 표시할 때 CompositionalLayout Enum을 정의하여 작성했어요. (관련 PR)CompositionalLayout은 item, group, section이 필요하고, 각 요소에 각각의 속성을 설정해야 합니다.기존에는 각 속성들을 모두 파라미터로 전달받아서 메서드가 비대하다는 문제가 있었습니다.이를 개선하기 위해 고민했고, 각 요소를 구조체로 정의하면 객체의 역할과 의미가 명확해지고 편의성도 챙길 수 있었습니다.기존 코드에서 불편한 점을 느끼고 개선했다는 점에서 moti 2.0의 목표를 조금씩 이루고 있는 거 같아 기분이 좋네요. 아쉬운 점코드가 아직 만족스러울 정도로 깔끔하진 않은 거 같아요.예를 들어,let it..
[일주일 회고] 5월 1주 차 (4월 25일 ~ 5월 3일)
·
경험 회고/꾸준 회고
한 일 (4월 25일 ~ 4월 30일)Unit Test 자동화내용테스트는 moti 2.0의 주요 목표 중 하나입니다.따라서 Unit Test 자동화도 꼭 적용하고 싶었고, 깃허브 액션으로 자동화를 성공했습니다.PR이 생성될 때, develop에 push할 때 Unit Test를 자동으로 수행합니다. 잘한 점Unit Test를 적용하면서 여러 시행착오가 있었습니다.이런 시행착오 속에서 Unit Test 자동화를 포기하지 않은 점이 뿌듯하네요.이 뿌듯함이 moti 2.0을 진행하면서 꾸준한 테스트를 이끌 원동력이 되지 않을까 싶습니다. 또, 이 과정을 포스팅으로도 남겼습니다. (보러 가기)옛날에는 문제가 생겼을 때 자연스럽게 기술 포스팅으로 이어졌는데,최근에는 의식적으로 신경을 써야한다는 걸 깨달았습니다.사..
[iOS] Unit Test를 GitHub Actions로 자동화하며 겪은 에러 해결 과정
·
iOS/개념 & 개발
Unit Test 자동화GitHub Actions를 활용하면 Xcode에서 작성한 Unit Test를 자동으로 체크할 수 있습니다.PR을 생성할 때, push를 할 때 등의 액션이 발생하면 Unit Test를 수행하는 방식입니다.Test 편의성과 안정성을 동시에 챙길 수 있으므로 꼭 필요한 과정입니다.  GitHub Actions로 자동화하며 겪은 에러저는 GitHub 안에서 개인 프로젝트 사이클을 돌리고 싶었기 때문에 GitHub Actions를 선택하였는데요.쉽게 가능할 줄 알았지만, 많은 에러를 겪었습니다. 고군분투의 흔적 ;;결과론적인 이야기지만, 앞에서부터 차근차근 살펴봤다면 쉽게 해결했을 텐데... 반성합니다 🥲성공한 Workflow는 최하단에 있으니 최종 결과만 필요하시면 쭉 내리시면 됩니..
[일주일 회고] 4월 4주 차 (22일 ~ 26일)
·
경험 회고/꾸준 회고
한 일 (22일 ~ 24일)moti 2.0 개발 시작내용일이 바쁘다는 핑계로 미뤘던 moti 리팩토링을 시작했습니다. (Github Repository)지금까지 느낀 moti의 문제점과 저의 문제점을 개선하는 게 가장 큰 목표이고,주요 개선 사항은  1. 서버를 Firebase로 변경한다.  2. 테스트를 적극 연습한다.입니다.  잘한 점1.시작을 했다는 게 가장 잘한 거 같아요.시작으로 반을 채웠으니, 나머지 반도 열심히 채우겠습니다. 2.프로젝트의 목표를 명확히 정하고 글로 정리했습니다. (보러가기)해야 하는 것과 하지 말아야 할 것으로 나누어 적었더니 제가 이 프로젝트로 무엇을 이루고 싶은지 명확해졌어요.시간과 열정은 무한하지 않으니 효율적이고 알차게 다루려고 합니다..
유정주
'분류 전체보기' 카테고리의 글 목록 (2 Page)