iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제67호 2022년 11월 13일
레츠스위프트 뉴스레터 이미지도 바뀌고, 풍성한 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다.
어제는 포항에서 열린 SyncSwift 행사에 다녀왔습니다. 오랜만에 발표도 듣고 지인들과 인사도 하고 아이디어를 얻을 수 있는 시간이었습니다. iOS와 스위프트를 사용하는 개발자 층이 더 젊고 더 넓어진 것을 확인할 수 있었습니다. 이제 다음 차례는 레츠스위프트 컨퍼런스군요!

매월 둘째, 넷째주 일요일에 뉴스레터를 발행하고 있습니다. 
누구나 함께하는 뉴스레터 저장소 👉 만약 링크가 깨지는 경우는 저장소 이슈에서 확인하실 수 있습니다.
메일링 리스트 가입은 >가입하기 링크< 주변에 소개해주세요 🤩
레츠스위프트 2022 컨퍼런스가 11월 30일에 양재 AT센터에서 열립니다.
공식 홈페이지가 열렸고, 티켓 구매는 festa에서 11월 16일 수요일 13시에 시작됩니다! 
주제/분류별 소식들
국/해외 소식들을 비슷한 주제들이 많아서, 다음과 같이 묶어서 정리합니다.
# 애플

> 11월에도 Ask Apple 행사를 하네요. 슬랙에서 주제별로 시간대를 정해서 애플 엔지니어들과 질의응답을 할 수 있습니다. 한국어로 하일라이트를 소개해주는 채널도 있습니다 Ask Apple의 새로운 한 주가 11월 14일에 시작됩니다 - 최신 뉴스 - Apple Developer

> 다이나믹 아일랜드에 대한 스포트라이트 기사가 올라왔네요! Spotlight on: The Dynamic Island - Discover - Apple Developer

> 앱 스토어에서 새로운 Today 탭과 제품 페이지에서 검색 광고를 노출할 수 있다고 합니다 이제 Apple Search Ads의 새로운 광고 배치를 App Store에서 사용할 수 있습니다 - 최신 뉴스 - Apple Developer

# 일반

> 💎 깃헙에서 PR을 보내는 방식이 오픈소스 문화에서 중요하지만, 그걸로 개발자들이 업무를 하는 것은 불충분한 커뮤니케이션과 업무 흐름 방해로 반대한다는 취지의 글입니다. 완벽하게 동의하기는 어렵지만 충분히 읽어볼 만한 것 같습니다 Stop doing pull requests | by PolarSquad

> 💎 Stable Diffusion 모델을 아이폰에서 사용하기 위해서 2기가로 최적화해서 앱을 만든 과정을 설명해주고 있습니다. 앱 스토어에서 Draw Things 앱을 받아보실 수 있다고 합니다 Stretch iPhone to its Limit, a 2GiB Model that can Draw Everything in Your Pocket

> 위에 글과 같이 읽어보면 좋을꺼 같습니다. Stable Diffusion을 아이폰 앱으로 만들었지만 배포하기 않기로 한 이유를 설명합니다 On Creating an On-Device Stable Diffusion App, & Deciding Not to Release It: Adventures in AI Ethics — 🐙 Cephalopod Studio

> 아이패드와 맥에 시작된 Stage Manager 기능에 대한 불평과 방어(?)입니다 A spirited defense of Apple's Stage Manager | Cult of Mac

> 16.2 베타에 포함된 Freeform 앱을 미리 살펴보고 소개하는 글이네요. 과연 협업 도구로 어떤 영향을 주게 될까요? Apple’s (New) Freeform App — What’s Inside? | by Nikhil Vemu

> 개인 기술블로그로 시작했던 Raywenderlich가 28명이 활동하는 기업으로 성장하고 Kodeco 라는 이름으로 변경되었습니다. "Code-ECHO" 발음에서 가져왔다고 하네요 Introducing Kodeco — the New raywenderlich.com | Kodeco, the new raywenderlich.com

> 매년 한 번씩은 이런 글을 보게되네요 😎 객체지향이 어려운 것은 동의하지만 대안이 DOD라는 점에는 동의하기 어렵네요. 댓글도 혼란스럽네요 Why OOP Is Bad | by Marcel Kulina

> iOS 16.2 Would be a Blockbuster — 7 Amazing Changes! | by Nikhil Vemu


# 스위프트

> 💎 이제 swift.org 홈페이지에서 Swift Evolution을 직접 볼 수 있습니다 Swift.org - Swift Evolution

> 💎 빅너드랜치 블로그에 스위프트 정규표현식에 대한 깊이 있는 내용이 올라왔네요 Swift Regex Deep Dive | Intro to Regular Expressions

> 💎 스위프트 동시성에서 말해주지 않는 것들 5가지를 문제점과 해결책을 소개해줍니다. 좋은 도구일수록 적절하게 사용해야 하기 어려울 때가 있는 법이죠 Swift Concurrency – Things They Don’t Tell You

> 💎 Result Builder를 활용하는 방식에 대해 예제와 함께 설명해줍니다 Result builders in Swift explained with code examples - SwiftLee

> 💎 스위프트 동시성이 스레드를 다루는 방식을 소개하고, 스레드 폭발을 방지하기 위한 방법을 설명합니다 How Does Swift Concurrency Prevent Thread Explosion | by Lee Kah Seng

> DSL을 확장해서 문법적, 구문적, 의미적 #macro를 지정할 수 있는 방법을 제안했습니다 A possible vision for macros in Swift

> 여러 문자가 포함된 문장에서 단어를 다루는 방법에 대해 정리했네요. 여러 방법이 있겠지만 기본 제공하는 메소드를 충분히 활용해도 좋겠다는 취지입니다 Enumerating and Counting Text Components in Swift | by Gabriel Theodoropoulos

> 간단하게 스위프트 5.7에 추가된 내용들을 정리해주고 있습니다 What’s new in Swift 5.7? | Medium

> 스위프트 동시성에 대해 정리하는 시리즈 중에 액터에 관한 글입니다 Swift Concurrency Deep Dive - Actor | by Enebin


# 설계 구조 : 패턴

> 💎 데코레이터 패턴을 설명하기 위해서 슈퍼히어로 파워를 비유해서 설명합니다 Superhero powers with Decorators: Swift Edition | by No name

> 💎 Resolver를 만들었던 마이클 롱이 새로 만든 컨테이너 기반 의존성 관리도구 Factory를 활용해서 Functional Injection을 소개합니다 Functional Dependency Injection in Swift | by Michael Long

> 의존성 역전에 대해서 단지 인터페이스를 참조하는 것 이상으로 모듈 관점에서도 신경써야 한다는 글입니다. 설명 방향에 대해 공감하지만 결론과 과정이 살짝 아쉽네요 Dependency Inversion Principle Explained and How Tutorials Get It Wrong | by Giedrius Kristinaitis

> 예전에 저도 타이머에 대한 블로그를 작성한 적이 있는데, CADisplayLink를 이용해서 효과적인 타이머로 활용하는 방식입니다 Stop Using Swift Timers: Use CADisplayLink | by Steven Curtis

> 마이클 롱이 생각하는 소프트웨어 아키텍처 - 아키텍처 요구사항에 맞는 선택을 해야 하는데 그건 생략하고 미리 정해진 규격에 요구사항을 맞추는 상황을 지적하고 있습니다 Thoughts on Software Architecture | by Michael Long

> VIPER에서 프리젠터와 인터랙터의 책임에 대해 상세하게 설명해줍니다. 이런 관점의 글도 좋네요! iOS VIPER: Presenter x Interactor responsabilities in different situations | by Pedro Alvarez

> 위의 VIPER 글과 함께 사용할 디자인 패턴들을 정리해준 글입니다 (왜 필요한지보다는 이렇게 적용이 가능하다 정도입니다) iOS VIPER: The most suitable design patterns that come together | by Pedro Alvarez


# 뷰 프로그래밍 : SwiftUI

> 💎 Environment Object 혹은 UIView와 혼용해서 사용한다면 SwiftUI도 Retain 되는 경우들을 설명합니다 When does a SwiftUI Environment get retained? – Tiago Lopes

> 💎 SwiftUI에서는 애니메이션으로 다룰 수 있는 렌더링 가능한 것과 렌더링 불가능한 modifier가 있습니다. 애니메이션 할 때 고려해야 하는 상황을 설명해줍니다 When .animation animates more (or less) than it’s supposed to – Ole Begemann

> 💎 @ScaledMetric 프로퍼티 래퍼로 다이나믹 타입으로 크기가 변경될 때 여백을 다루는 방식을 설명합니다 ScaledMetric Property Wrapper | Sarunw

> 아폴로 GraphQL과 Realm을 활용해서 깃헙 API 연동하는 앱을 만드는 과정을 소개합니다 Apollo GraphQL + Realm in iOS Part -3 | by Ebubekir Sezer

> 제네릭한 SwiftUI 뷰를 조립해 가는 과정을 코드로 설명해주고 있습니다 Composable Generic SwiftUI View — Part 1 | by mein

> 앱과 디바이스 정보를 확인해서 표시하는 예제입니다 Fetching App and Device Info in SwiftUI | by DevTechie

> UI 테스트 과정에서 iOS 컨트롤 센터에서 설정을 바꾸는 방법을 설명합니다 How To Change Any iOS Setting in Control Centre During a UI Test | by Rob Sturgeon

> @StateObject 초기화를 수동으로 지정하는 방식에 대한 설명입니다. StateObject initializer | Sarunw

> Build a 3D Editor in SwiftUI and SceneKit | by Mark Lucking

> Presenting Sheets: Item, or a Boolean Binding? | Swiftjective-C

> SwiftUI Multi-line Text Fields

> SwiftUI in iOS 16 | by Raynelle Alphonso

# 뷰 프로그래밍 : UIKit

> 💎 제약없이 뷰를 복제해서 복잡하게 배치해서 다루는 방법을 상세하게 설명합니다 Unrestricted View Replication - Bryce Pauken

> 콜랙션뷰에서 Compositional Layout을 활용하는 방식을 잘 정리했네요 The Power of UICollectionView Compositional Layout | Swift

> 읽다보니 신선한 관점이다 싶었는데, 싱가포르로 이직하신 Shawn의 글이군요! UI 프로그래밍을 하는데 스토리보드가 더 효율적이라는 글입니다 Why did we change our iOS rule to allow using Storyboard? | by Shawn Baek


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

> JWT (JSON Web Token) 인증 토큰을 받아서 관리하는 네트워크 프레임워크 활용하는 방식을 정리했네요 Build an iOS Networking App With Automated JWT Authorization | by Lev Baklanov

> ArgumentParser를 활용해서 명령어 도구를 만드는 과정을 소개합니다 Create a Swifty Command-Line Tool With ArgumentParser | by David Piper

> GCD 기본 기능들을 시리즈로 정리하고 있는 글입니다 GCD Primitives in Depth Part 1 | by Alex Shchukin

> 위젯과 워치킷 익스텐션에서 iOS 앱과 파일을 공유하기 위해서 그룹 컨테이너를 활용해는 방식을 소개합니다. Share files between your iOS app, Widget and WatchKit extensions


# 개발 환경

> 💎 이제 VS Code에서도 스위프트 익스텐션으로 작업할 수 있습니다. 그 중에서도 잘 알려지지 않은 기능들을 소개합니다 VS Code Swift extension lesser known features - Optical Aberration

> 문자열 로컬라이즈 작업할 때 엑센트가 있는 가짜언어 표시 확인을 하는 팁입니다 Check localizable strings with the accented pseudolanguage in Xcode

> 깃헙 액션을 이용해서 iOS 빌드와 배포 자동화를 구축한 과정을 설명합니다 Creating a lane of our own for iOS automation | by Whatnot Engineering

> 이제 Xcode는 다운로드보다 받아서 압축풀고 설치하는 시간이 더 오래걸리는 상황이죠. 용량이 없을 때 시뮬레이터를 관리하는 방법입니다 Managing Xcode Downloads • furbo.org

> Xcode 디버거 로그를 줄이는 팁입니다 Reducing Xcode debugger logs | @samwize

> Xcode 도구가 지원해주지 못하는 부분에 있지만, 성공적인 리팩터링 방식에 대한 고찰을 설명합니다. 역시 정규식을 활용해서라도 바꿀껀 바꿔야죠! Refactoring Swift: Best Practices to succeed

> iOS 앱을 빌드할 때 Xcode가 하는 일을 가볍게 설명해주는 글입니다 Xcode build process works in swift iOS app project | CodeX

> Xreviews라는 앱 스토어 관리를 위한 무료 앱입니다 Xreviews for Mac | App Store app review manager

# 테스트

> 💎 2014년 켄트 벡의 TDD 글을 PragPub에서 다시 공유해줬습니다. TDD를 하느냐 안하느냐보다 더 중요한 가치에 대해 설명해줍니다 When TDD Doesn’t Matter: What Do You Value? | by PragPub

> 패키지 내에 있는 비동기 함수를 테스트하기 위해 타임아웃을 고려해서 테스트하는 방법을 설명합니다 Handling never finishing async functions in Swift package tests – Augmented Code

> 앱 런치 시간 개선에 대해 최신 기준으로 분석하는 방법들을 소개합니다 Improve App Launch Time 2022 Edition | @samwize


> iOS 앱 보안성을 확인하기 위한 체크리스트라고 합니다 iOS App Security Cheatsheet | by Felipe Ferrari

# 도구/오픈소스 
> 포인트프리에서 동시성을 개선하기 위해 시간 정보를 다루는 swift-clocks 오픈소스를 공개했습니다. 저장소는 여기 소개글은 Open Sourcing swift-clocks

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