iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제79호 2023년 5월 14일
풍성한 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다. 
WWDC가 얼마남지 않아서 그런가 애플 공식 소식보다는 개발자 커뮤니티의 기대와 루머 소식이 더 많은 요즘입니다. 저도 4년만에 WWDC 현장에 다녀오게 될 것 같습니다. 하루만 오프라인으로 참석하지만 현장 소식도 함께 전해드리도록 준비하겠습니다. 
어서 마무리하고 젤다의 전설 : 왕국의 눈물 하러 가야겠습니다 🤣

매월 둘째, 넷째주 일요일에 뉴스레터를 발행하고 있습니다. 
누구나 함께하는 뉴스레터 저장소 👉 만약 링크가 깨지는 경우는 저장소 이슈에서 확인하실 수 있습니다.
메일링 리스트 가입은 >가입하기 링크< 주변에 소개해주세요 🤩

주제/분류별 소식들
국/해외 소식들을 비슷한 주제들이 많아서, 다음과 같이 묶어서 정리합니다.
# 애플

> 앱 스토어에 중소 개발자들 매출이 최근 2년간 더 늘어났다는 소식입니다. 물론 큰 회사들도 더 늘어나지 않았을까요? ㅎㅎ
App Store의 중소 개발사, 지난 2년간 매출 71% 증대

# 하드웨어

> 올해는 애플실리콘 기반 맥 프로가 나올 차례이고, 인텔에서 전환이 마무리됐다고 선언할 수 있을까요? 2023 Apple Mac Pro: A New Era for Professionals? | by Jakub Jirak

> AR/VR 헤드셋에 대한 관심도 높아지고 있는 시점입니다. 정말 나오는지는 아직도 모르겠네요. 기대가 크면 실망도 큰 법이지만 시장이 있는지 없는지도 잘 모르겠습니다 Apple’s AR/VR headset — 1st look at the AWESOME experience! | by David Lewis

> EU 제재로 아이폰 15부터는 USB-C 방식이라는 루머가 신빙성을 얻어가고 있습니다. 이번에 애플 MFi 인증을 받지 않은 USB-C 케이블에 대해서 기능 제한을 두지 말라는 권고가 나왔다고 하네요 The EU Warns Apple Against Its Rumored USB-C Limitations. | by Michael Swengel


# 일반

> 🇰🇷 해커뉴스가 업계 소식을 가장 빠르게 전달하면서 심도있는 토론까지 이뤄져서 많은 분들이 관심있으실 텐데요. 주로 영어권에서만 퍼지다보니 오히려 한글로 보려면 소식이 늦어지는 경우도 종종 있습니다. 예전에 WWDC나 레츠스위프트에서도 만나서 활동한 적이 있는 조성현님이 매일 올라온 소식을 AI 도구들을 활용해서 번역해서 공유해주는 서비스를 만드셨네요. 저도 매일 받아보고 있는데, 선언문에 나온 취지도 마음에 들고 빠르게 소식을 접할 수 있어서 좋습니다. 추천드려요! 해커뉴스 사이트 요약 서비스 - hn.cho.sh

> 스위프트는 아니고 Rust로 CLI 앱을 만드는 예제입니다. 그냥 흥미로워 보여서 호기심에 일고 가져와봤습니다 Building CLI Apps in Rust — What You Should Consider | by Dotan Nahum

> 2014년에 나온 "File in the Valley"라는 책에 애플의 시작과 관련된 내용이 일부 공개됐습니다. 저도 읽어보지 못한 책인데 조만간 구해서 읽어봐야겠습니다 Starting Apple | by The Pragmatic Programmers

> 새로운 코드베이스로 넘어가기 위한 팁과 트릭이라고 하네요. 막연하게 두려워 할 필요는 없겠죠! Tips and tricks for exploring a new codebase – Donny Wals

> 스위프트를 만들었던 크리스 래트너가 구글에서 나와서 정착한 곳은 fast.ai 라는 곳입니다. 얼마전 파이썬을 대체할 mojo 라는 언어를 공개했습니다. 이제 가는 곳마다 언어를 하나씩 만드는 느낌이네요 fast.ai - Mojo may be the biggest programming language advance in decades


# 스위프트

> 💎 미래에 대체될 Foundation 프레임워크 소스가 깃헙에 선공개됐습니다. 완성본이 아니라 일부 타입들만 구현되어 있고 앞으로 Objective-C 런타임이나 기존 CoreFoundation C함수들과 분리된 구현이 늘어날 예정이라고 합니다. 한 가지 우려는 여전히 애플 플랫폼이 아닌 경우 구현체가 없는 경우도 많은데 과연 얼마나 완성도를 높일 것인가 궁금합니다 Swift.org - Foundation Package Preview Now Available

> 💎 같은 프로토콜이더라도 여러 번 채택하거나 여러 타깃에서 중복해서 채택한 경우에 발생하는 문제에 대한 글입니다. 모듈화가 되어 있더라도, 여러 명이 동시에 개발할 경우 충분히 발생할 수 있는 상황입니다. Double Protocol Conformance | Teabyte

> 💎 흔히 보는 동시성 설명이 아니고 난이도가 꽤 있는 글입니다. SIL로 풀어서 MainActor를 지정했을 때 어떻게 동잘하는 지 설명해줍니다. 다른 방식으로 비슷하게 구현할 때 SIL 크기가 달라지는 지도 포함합니다 Async/Await and MainActor Strategies | by Michael Long

> 스위프트 5.8부터 적용된 weak self 캡처 리스트 방식에서 self를 생략해서 사용하는 짧은 예제입니다 Implicit self for weak self captures – Augmented Code

> 짧고 명료한 글이네요. 모든 문제 해결을 꼭 의존성 주입으로만 해야 하는 건 아니죠. 기존에 더 잘할 수 있는 방법이 있다면 그것도 고려해봐야 하지 않을까요 Stop Using Dependency Injection for your iOS Project | by Steven Curtis

> 스위프트 에볼루션에 3월+4월에 올란 내용 요약입니다. AsyncStream에 대한 것과 SPM Macro와 관련된 내용이 눈에 띄네요 Swift Evolution Monthly: March + April ‘23 | by Cihat Gündüz

> Mirror API를 활용하는 reflection 방식에 대한 예시입니다. 테스트에서도 일부 활용할 수 있겠죠 Using Swift Reflection

> 도메인 값과 동작을 스위프트 언어와 타입으로 표현하기 위한 DSL 선언하는 방법을 상세하게 설명합니다. 특히 UseCase를 선언하는 방식이 인상적이네요 Using Swift’s Types as Domain-Specific Languages | by Manuel Meyer

> debugPrint를 확장해서 속성을 표 형태로 출력해주는 방식을 제안합니다. 이거 좋은데요? ㅎㅎ Using TabularData to Dump Model Data | Swiftjective-C

> MainActor usage in Swift explained to dispatch to the main thread

> On Apple’s Guidance for StateObject Initialization | Swiftjective-C

> The Power of Tasks in Swift: Concurrency Made Easy | by Steven Curtis


# 설계 구조 : 패턴

> 💎 여러 모듈로 나눠져 있는 경우 내비게이션까지 다루기 위해서 사용한 의존성 컨테이너 방식을 설명합니다 Managing Navigation Between Multiple Modules in an iOS App Using Dependency Injection Containers | by Batikan Sosun

> ELM 구조라고 해서 설명하다보니 모델 값의 변화를 didSet 이나 Property Observer로 다루기 위해 msg를 만드는 방식을 설명합니다. Elm architecture in iOS | by Jim Lai

> 모듈화 과정에서 생산성을 높인 사례를 공유합니다. 세부적인 내용은 중간에 다른 글로 연결되어 있으니까 같이 읽어보시면 좋겠네요 Improving iOS developer productivity and SwiftUI adoption at Rappi | by Pablo Cornejo

> 싱글톤 패턴의 장단점을 비교하는 글입니다 Singleton Pattern In Swift | by Alessandro Manilii

> UI 구조는 유행을 따르는 패션과 비슷하다. RxSwift를 쓴다고 미래의 기술을 적용한 것은 아니다 Uh oh, you picked the wrong UI architecture


# 뷰 프로그래밍 : SwiftUI

> 💎 애니메이션 요소와 속성에 대해 상세한 설명입니다 Demystifying SwiftUI Animation | Better Programming

> AR 시계를 만드는 과정을 SOLID 원칙을 지켜가면서 구현하는 샘플입니다. 특정 앱을 이렇게 만드는 과정을 설명하는 게 흥미롭네요 Building an AR Clock using SwiftUI and SOLID Design Principles | by Leon Smith

> SwiftUI 와 GraphQL 예제인데, SwiftUI 뷰 코드에서 모든 것을 다 처리하는 게 과정 장점인가 모르겠습니다 GraphQL and SwiftUI: A Dynamic Duo for the App-tastic Adventures | by Di Nerd

> SwiftUI 코드를 응집도 높게 다루는 방법을 간단하게 설명합니다. 다만 너무 간단해서 이게 전부인가 싶긴 하네요 High Cohesion SwiftUI Code. It’s important | by Steven Curtis

> View 화면을 그대로 image나 PDF로 내보내는 경우 사용할 수 있는 ImageRenderer 입니다 ImageRenderer in SwiftUI | Swift with Majid

> SwiftUI 프로젝트에서 영구 저장소를 다루는 래퍼들을 살펴보는 글입니다 Understanding SwiftUI persistency wrappers through their procedural alternative | by Nunzio Ricci

> 맥용 윈도우 창을 다루는 방법을 설명합니다 Window Management With SwiftUI 4 | by Cihat Gündüz

> Mastering Safe Area in SwiftUI | fatbobman

> Parallax header effect in SwiftUI using CoordinateSpace

> Skip typing your login credentials manually with Xcode breakpoints | Danijela

> Speedrun Design: Heart Rate Zone View in SwiftUI - David Smith, Independent iOS Developer

> State Injection Mechanism | Medium

> SwiftUI Lists: Displaying Dynamic Data | by Tech Savvy Scribe

> SwiftUI View Life Cycle | by Garrett Barker

> The power of overlays in SwiftUI | Swift with Majid

# 뷰 프로그래밍 : UIKit

> Combine을 설명하는 자료가 SwiftUI 중심으로 되어 있는 게 많은데, 이 글은 UIKit 으로 다루는 방식을 소개합니다 Combine with UIKit: Taking Small Steps Forward | by Daniel James

> 앞에 UIKit과 Combine을 다루는 글과 같이 읽어보세요 Integrating Combine with UIKit. A Tutorial for iOS Developers | by Diego Jimenez

> 요즘 흔치 않은 UIKit 기반 뷰 콤포넌트 만드는 설명입니다 Stepper component design using UIBezierPath with Swift | by Oğuzhan Kertmen

# 프레임워크
다양한 프레임워크를 다루는 예제를 소개하는 글들입니다. 

> 💎 유니버설 링크를 다루기 위한 내용들을 설명합니다 Universal Links implementation on iOS - SwiftLee

> 💎 질의응답 식으로 설명을 풀어나가는 코어 데이터 관련 자료입니다. 파트가 1,2로 나눠져 있네요 Ask Apple 2022 Q&A Related on Core Data (Part 1) | ITNEXT

> tvOS 앱과 iOS 앱을 서로 연결하는 방식에 대해 설명합니다 Attempting to connect a tvOS app to an iOS app with DeviceDiscoveryUI

> OpenAI DALL-E API를 연동하는 간단한 예제입니다. 워낙 API가 단순해서 그냥 호출하고 비동기로 기다렸다가 image로 저장하면 됩니다 How to Integrate DALL-E Image Generator from OpenAI into Your iOS Application in Swift | by Diego Jimenez

> 이거 저도 뉴스레터 도구에서 사용하는 데 문장 중에 언어를 판단하는 방법입니다 How to detect the language of a text with the Natural Language framework in Swift

> 앞에 코어 데이터 질의응답 글과 함께 보시면 좋은 코어 데이터 스택에 대한 설명입니다 Mastering Core Data Stack | fatbobman

> iOS 13부터 크래시 리포트와 함께 일부 지표를 받아볼 수 있는 MetricKit에 대한 설명입니다 MetricKit: A boon for iOS framework developers to get Crash Logs | by Vipul Arvind

> 네트워크 연결성을 확인하기 위한 여러 접근 방식을 설명합니다 Optimizing your app for Network Reachability - SwiftLee

> 잠금 화면에서도 재생 화면을 경험할 수 있도록 처리하는 예제 코드입니다 Rock Your App’s Playback Experience with Now Playing in iOS | by Mayank Kumar Gupta

> 앱에 '이런 기능 추가해주세요' 뭔가 간단하게 받고 싶을 때 Supabase라는 서비스를 활용한 사례를 공유합니다 Spinning Up a Feature Request Screen with Supabase | Swiftjective-C

> Developer guide on App Clips for iOS


# 접근성

>🇰🇷 (글을 자주 쓰시지만) 오랜만에 소개하는 민소네님 블로그네요. AXSnapShot 방식을 활용해서 UIKit 접근성 요소를 쉽게 확인하는 방식을 제안합니다. Preview를 이용해 UIKit 화면의 접근성 요소 확인하기 - 민소네

# 개발 환경

> 💎 에어비앤비 팀에서 AWS에서 iOS용 CI 인프라를 최적화한 사례를 공유했습니다 Flexible Continuous Integration for iOS | The Airbnb Tech Blog

> fastlane을 만든 Felix Krause가 앱을 어디서 누구와 사용하는지 맥락을 판단하는 Context SDK 라는 새로운 도구를 소개하는 글입니다. 아직 공식 런칭은 아니고 contextsdk.com 이라는 사이트에서 signup을 받고 있네요. Context SDK - Introducing the most intelligent way to know how and when to monetize your user · Felix Krause

> 미디엄 유료글이지만 Xcode 확장 도구에서 ChatGPT를 연결해서 주석 추가하는 예제입니다. 저도 확장도구 만들면서 놓쳤던 부분에서 아이디어가 떠오르네요 How To Integrate ChatGPT To Create XCode Source Editor Extensions | by Diego Jimenez

> 제목 그대로 Xcode Cloud에서 앱 출시 예약을 하는 방법입니다 Scheduling app releases with Xcode Cloud

# 테스트

> 🇰🇷 원티트에서 전체 팀 테스트 문화를 소개해주셨습니다. 스쿼드/팀 구성원 모두가 참여하는 테스트 세션이라니 흥미롭습니다 원티드랩 전체 팀 테스트 문화 | by Seunghoon Lee

> ViewModel이 아니더라도 SwiftUI 단위테스트를 하는 방법을 소개합니다. 결국 테스트 가능한 모델을 어떻게 분리하느냐 그게 관건인 것 같습니다 SwiftUI unit test without MVVM. What if there’s no view | by Jim Lai

# 도구/오픈소스 

> 💎 왕성한 활동을 보여주는 일본 개발자 기시가와 가쓰미상이 만든 Swift Playground 웹 사이트입니다. 특이한 점은 최신 snapshot까지 써볼 수 있다는 점입니다 SwiftFiddle - Swift Online Playground

> 프로젝트 문자열을 뽑아서 다국어로 만들 수 있도록 도와주는 SwiftGen 도구입니다 SwiftGen — How to neatly get rid of magic strings in iOS projects | by Mobile

> 비동기로 뷰를 표시하는 프레임워크 Queryable 저장소 SwiftedMind/Queryable: Asynchronous view presentations in SwiftUI

> 2023년 1분기까지 인기있는 저장소 10개를 소개합니다 Top 10 Best Open Source Projects on GitHub 2023 | by Open Data Analytics

> 작은 단위로 상태 관리를 도와주는 라이브러리입니다 bangerang/swift-atoms: Atoms is a powerful and flexible atomic state management library for Swift


# 디자인 
📲회사에서 iOS 개발자들에게 홍보하고 싶은 내용이 있으신가요? 
news@letswift.kr 로 언제든지 문의해주세요. 
레츠스위프트 뉴스레터
http://letswift.kr
수신거부 Unsubscribe