iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제51호 2022년 3월 13일
3월 애플 이벤트를 다들 보셨겠죠? 아이폰 SE와 아이패드 에어보다는 아무래로 맥 스튜디오가 눈에 띄는 것 같습니다. 개발자들도 사용해도 되는거 맞겠죠? 저는 22년전 Cube 와 Display Studio가 생각나서 더 갖고 싶다는 느낌이네요. 여러분들은 어떠신가요? 
풍성한 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다.

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

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

> 애플 이벤트 이후 Xcode 13.3 RC가 올라왔습니다. 릴리스 노트에 몇 가지가 눈에 띄는데요
13.3을 실행하기 위해서는 macOS 몬테레이가 필요합니다. 아직 업데이트 못한 분들은 당분간 못 올리실 듯 싶네요
아마도 M1 Max나 M1 Ultra를 활용하기 위해서 멀티 코어 지원하는 XCBuild 빌드 옵션이 생겼네요. 기본값은 꺼진거라 따로 켜야하네요
defaults write com.apple.dt.XCBuild EnableSwiftBuildSystemIntegration 1
Xcode 13.3 RC Release Notes | Apple Developer Documentation


> 기존에 SwiftUI 튜토리얼만 있던 iOS App Dev 튜토리얼 페이지가 얼마전 업데이트되면서 (사라졌던) UIKit 기본적인 튜토리얼 내용이 돌아왔습니다. iOS App Dev Tutorials | Apple Developer Documentation

> Apple, Major League Baseball과 함께 “Friday Night Baseball” 제공한다고 합니다. 애플 뉴스룸

> 구글 서머 오브 코드 행사에 대한 안내입니다 Swift to participate in GSoC 2022! - Announcements - Swift Forums


# 하드웨어
> 아직은 불편해서 애플 워치에서 지원하면 좋을 것 같은 10가지 기능을 소개하고 있습니다. 아직 제약사항이 많지만 점차 늘어나지 않을까 싶네요 10 Possible Features I Desperately Need On My Apple Watch | by Nikhil Vemu

> 누가 스튜디오 디스플레이가 필요할까요? 저에게 주면 잘 쓸 수 있을 것 같은데 말이죠 😅 Who is the Studio Display for? | by Akshay Gajria


# 일반

> 아주 드문 MDM 관련 글입니다. 국내에서도 맥이나 아이폰을 회사 장비로 지급하면서 MDM으로 관리하는 회사들이 많아지고 있습니다. All you need to know about Managed App Configuration for iOS | by Marco Eidinger

> 해외 Swift 관련 블로그, 튜토리얼, 비디오 등을 모아놓은 사이트입니다. 제가 뉴스레터 작업하면서 모아놓고 싶은 형태를 가장 잘 구현해주고 있네요. 한국어 자료가 없다는 게 좀 아쉽지만 검색도 되고, 카테고리 분류도 잘 되어 있습니다. 이것도 참고해서 레츠스위프트 앱을 준비해보겠습니다 Midnight Swift


# 스위프트

> 클로저와 핸들러에 대해서만 정리한 글입니다 Deep dive into Closures and completion handlers in Swift Language | by Azhman Zare

> 저는 잘 쓰게 되지는 않는 Dynamic Member Lookup 에 대한 소개 글입니다 Dynamic Member Lookup in Swift | by Batikan Sosun

> 여러 값이 들어있는 배열, 사전 같은 곳에서 기준에 따라 값들을 골라는 내는 방법들을 정리했네요. Filter in Swift — Best Practices | by Alessandro Manilii

How to use the #available attribute in Swift - SwiftLee

> os_signpost로 인스트루먼츠로 신호를 보내서 성능 측정하는 방법입니다 Optimization in Swift, part 1

> 의존성을 안정적인 것과 휘발적인 것으로 구분해서 다루는 방법을 비교하는 글이네요 Stable vs volatile-dependencies| by Abdullah Althobetey

> 프로토콜 사용법과 Type Eraser 처리를 위한 내용들을 잘 정리해주셨습니다. Swift Type Eraser Wrapper 패턴 이해하기 - Burt.K

> 이제 곧 Swift 5.6을 만날 시기가 다가오고 있습니다. Paul Hudson이 새로운 기능들을 정리해주었네요. some 키워드과 대비되는 개념으로 활용할 수 있는 any 키워드가 흥미롭네요! What’s new in Swift 5.6? – Hacking with Swift

# 설계 구조 : 패턴

> 민소네님이 사내에서 발표하신 "모듈화 시대 시작 with Tuist - 개발 관점의 변화" 자료를 공유해주셨습니다 iOS Modular Architecture with Tuist

> LINE에서 ABC Studio 팀에서 작성한 Fetcher 구현에 대한 기술 블로그입니다
간편하게 서버 데이터를 로딩하는 Fetcher, Swift로 구현하기 - LINE ENGINEERING

> SwiftUI 앱 구조를 정할 때 기준을 제시해주고 있습니다. 문제 정의, 성능과 호환성, 간결성, 뷰 조합, 테스트 가능성, 관심사 분리, 특정 뷰에 대한 테스트 등을 고려해보라고 합니다 SwiftUI: Choosing an Application Architecture | by Michael Long

Understanding the 5 SOLID Principles Using Swift | by Muhammed Celal TOK

# 뷰 프로그래밍 : SwiftUI

> 간단하지만 SwiftUI 캔버스를 사용할 때 CPU와 메모리 성능 최적화하는 과정을 보여주는 글입니다 Better performance with canvas in SwiftUI | Software Development Notes

Build a Rubik Cube Using SceneView and SwiftUI | by Mark Lucking

> 요즘 자료를 보다보면 이 분처럼 앱 개발을 시작하는 분들이 만들거나 부트캠프에서 학습하고 만든 자료가 무척 많아진 것을 느낍니다.
그게 나쁘다는 의미가 아니라 그만큼 개발 자료가 많아지지만, 가볍게 만드는 자료는 많아지면서도 다양하고 어려운 도전꺼리나 동작 원리를 알려주는 자료가 더 줄어드는 게 아쉽습니다. Card Flip Animation in SwiftUI | by Sarah

> 컬러 색상도 여러 Trait 상황에 맞춰서 동적으로 의미있는 컬러가 반영되야 하는 경우가 있습니다. 그것을 처리하기 위한 방법이네요 Dynamic and Semantic Colors - Four for One | Swiftjective-C

How To Change the Status Bar Color With SwiftUI on a Specific View | by Catalin Patrascu

> 쓸모없는(?) MMVM 대신에 SwiftUI에 추천하는 방법입니다 Implementing useless MVVM with SwiftUI | by Jim Lai

Loading Leaf Animation in SwiftUI | by Amit Palo

Multi Selector in SwiftUI | by Cihat Gündüz

> SQLite를 FMDB와 함께 SwiftUI 앱에서 활용하는 방법을 제안해주고 있습니다 SQLite on iOS: The MVVM Way | by Mattia Righetti

SceneKit Within SwiftUI | by Mark Lucking

Speech Synthesis: Text To Speech in SwiftUI | by DevTechie

> @SceneStorage를 활용해서 State 저장하고 복원하는 방법입니다 State restoration in SwiftUI | Swift with Majid

> SPM으로 모듈이 나눠져 있을 때 미리보기가 안되는 문제를 해결하는 팁입니다 SwiftPM + CoreData: Failing SwiftUI Previews? | by Cihat Gündüz

SwiftUI BarChart with Drag Gesture | by DevTechie

SwiftUI ZStack vs Overlay Modifier: Similarities and Differences | by Pedro Alvarez

SwiftUI under the Hood: Variadic Views - Moving parts

SwiftUI — Text Deep Dive Part 2 | by Alessandro Manilii

Using the ViewBuilder Attribute to Implement SwiftUI Views in Methods | by Gabriel Theodoropoulos

WebView in SwiftUI | by DevTechie

# 뷰 프로그래밍 : UIKit

🤭 이제 UIKit 관련 자료는 단 하나 뿐이네요!

> 인터액션과 트랜지션이 어떤 느낌이고 그것을 구현하는 방법을 정리한 글이네요. 단지 코드 구현만 있는게 아니라서 좋은 것 같습니다 High-end transitioning in iOS | by Dino Bozic

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

> From Combine to Async/Await | by Eduardo Domene Junior

Building a Custom Combine Operator for Exponential Backoff | Peter Friese

Encrypting Common Scenarios in Swift | by Tolga Taner

> 아폴로 GraphQL 쿼리를 다루는 방법입니다 Execute Apollo GraphQL Query in iOS | by Chandan

Good Start with Combine (Part 1) | by Angelo E. Saber

> iOS 15 사파리에 맞춰서 웹 사이트를 만드는 방법에 대한 소개입니다 How to Make Your Website Adaptable to iOS 15 Safari’s Design | by Amol Kumar

Reinvent the wheel by disassembling and combining the library-Document Scanner | by MLBoy

> 앱 클립과 위젯까지 앱의 인증 상태를 공유하는 방법입니다 Share authentication state across your apps, App Clips and Widgets (iOS) | by Thomas Asheim Smedmann

> 멀티 파트 폼데이터로 비디오를 전송해야 하는 경우에 대한 사용 설명입니다 Upload videos to server as a Multipart-form data

Use Reality Composer to your advantage | by George Barmpas

# 개발 환경

> GitHub Action 자료는 많았는데, GitLab Runner와 Fastlane 관련 자료는 처음 본 것 같네요 CD Experiments: GitLab (Runner) + Fastlane + SwiftLint | by Andrey Lesovoy

CD pipeline with GitHub Actions and Fastlane | by SwapNighot

Continuous Delivery of iOS applications using Fastlane | by Sumit Kumar

> Xcode Scheme에 따라서 다른 아이콘과 이름이 보이도록 설정하는 팁입니다. How To Set Different App Icons and Name Using Xcode Scheme | by Kelvin Tan

How to use xcassets for alternative icons | by Gianpiero Spinelli

> Xcode 프로젝트 파일과 폴더를 핵심 Core와 기능 Features 단위로 구분하는 방법을 제안합니다 Organizing large Xcode project into “Core” and “Features” folders | by Thongchai Kolyutsakul

> 작년 글입니다만, 맥에서 일렉트론 앱을 배포할 때 고통을 이야기합니다 The pain of publishing Electron apps on macOS | by Fora Soft

> 크래시가 난 것을 확인하기 위해서 필요한 디버그 심볼 dSYM 파일에 대한 설명입니다 What are dSYM files and why are they needed by Crashlytics and others

> 스위프트 패키지 매니저에 대해서 전반적으로 소개하고 설명하는 글입니다 What is Swift Package Manager? | by Mohamed Amer

# 테스트

> UI 계층은 사용자 입력과 화면 출력이 있어서 테스트하기 어렵다고 하죠. 그럴 때 접근선 경험을 스냅샷으로 찍어서 비교할 수 있다면 테스트 하기 쉬워집니다. 류성두님이 그 어려운 것을 쉽게 도와주는 라이브러리를 만들어주셨네요. 저장소 e-sung/AXSnapshot

> 비동기로 코어 데이터 동작을 테스트하는 방법에 대해 소개합니다. 코어데이터 시작은 쉽지만 트러블슈팅이 꽤 어려운 데 테스트라도 쉬워지면 도움이 되겠네요 Async Core Data Testing

> 아이패드 플레이그라운드에서 테스트를 도와주는 라이브러리입니다 Losiowaty/PlaygroundTester: PlaygroundTester enables you to easily run tests for your iPad Playgrounds 4 project.

> Charles로 네트워크 요청과 응답을 분석하고 테스트하는 방법입니다 Manipulating networking requests and responses with Charles | iOS development on tanaschita.com
같은 블로그에 2월에 Charles 설정에 대한 가이드 문서도 같이 읽어보세요 Quick guide on Charles Proxy for iOS development | on tanaschita.com

> 테스트 더블에 대한 예제와 소개글입니다 Test Doubles by example in Swift | by Peña Fernando

> 일반적인 소프트웨어 테스트의 7가지 원칙을 소개합니다 The 7 principles of software testing | by Lady Bug

UserDefaults Unit testing in iOS | by Gagan Vishal

> XCTNSPredicateExpectation이 왜 느리고 어떻게 대체할 수 있는지 설명해줍니다 XCTNSPredicateExpectation is slow, and what to do about it | mokacoding

# 디자인 
> 영감을 주는 앱 디자인 App Design Inspiration 47 | UI UX Design Company

> 영감을 주는 앱 디자인 App Design Inspiration 48 | Phone App Design Company

> 영감을 주는 앱 개발 App Development Inspiration 116 | Hybrid Mobile Company

> 영감을 주는 앱 개발 App Development Inspiration 117 | Best Mobile Company

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