iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제54호 2022년 4월 24일
봄날처럼 포근한 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다.
애플 공식적인 소식들보다는 개발자 커뮤니티 자잘한 소식들이 많네요. 기술 블로그 하나 써보려고 했는데 날씨가 좋아서 못 썼다고 핑계를 남겨봅니다. 그나저나 거리두기가 낮아지면서 슬슬 오프라인 모임이 정상화되는 것 같습니다. 올해는 레츠스위프트 행사를 기획해볼 수 있을까요? 슬슬 행사 준비를 해보고 싶은 위원회 분들을 모집해봐야겠습니다 :) 

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

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

> 특별한 소식이라기보다는 올해 여름쯤 4나노 공정을 적용한 M2 칩으로 신형 맥북 에어가 나올 수 있다더라입니다 Apple’s New M2 Is Coming Soon | by Youssef Mohamed

> 조금 예전 글인데 라즈베리파이에서 스위프트 코딩을 하기 위한 과정을 설명합니다 SWIFT, RASPBERRYPI, BLUETOOTH — X — FILE PART 1 | by Andrea Finollo

> 벌써 iOS 15.5 두 번째 베타가 진행중이네요 iOS 15.5 Beta 2 is Out! — Here’s Why It’s A Very Important Update | by Nikhil Vemu


# 일반

> 맥에서 사용하기 좋은 5가지 다이나믹 배경화면을 추천해줍니다 Five beautiful non-Apple dynamic Wallpapers for macOS | by Patric Lee Atrott

> 개인적인 호기심으로 읽어본 글인데요, macOS에서 제공하는 기능이 당연하다고 느끼지 못하고 익숙하지 않으면 당연히 불편할 것 같네요 Goodbye to Mac OS | by Cobblestone Streaks

> 일반적인 페어 프로그래밍에 대해 소개하는 'Pair Programming Illuminated' 책의 일부를 소개합니다 Pair Programming Benefits: Two Heads Are Better than One | by PragPub

> 꽤 심각한 주제네요. 작게 시작해서 점진적으로 개선하는 방식에 대한 미신을 깨고, 때로는 과감하고 급격한 변화가 필요할 때도 있다고 역설하네요 The Myth of Small Incremental Improvements | by Everett Griffiths

> 몇 까지 토막 소식이 포함되어 있습니다. 눈에 띄는 건 iOSDevUI, SwiftLeeds, 360idev, SwiftConf 같은 유럽 컨퍼런스들이 여름 이후에 계획되고 있네요. iOS Code Review | Curated code improvement tips

> 25개국 이상의 iOS 개발자들 급여에 대한 정리글입니다. 범위가 엄청 넓어서 평균값이 어떤 의미가 있는지 잘 살펴보시길 바랍니다 iOS Developers Salary | by Techreviewer


# 스위프트

> 💎 Combine Publisher와 AsyncSequence를 비교해주는 글입니다. 저도 슬슬 프로젝트에 async/await를 적용해보고 있는데요 아직은 술술 써지지 않더라구요. Comparing use cases for async sequences and publishers – Donny Wals

> 💎 간단한 글인데, Swift ABI 안정과 Module 안정성에 대한 글입니다. 특히 모듈 버전에 맞춰서 빌드해야하는 경우는 Module 안정성을 고려하셔야 합니다 Swift ABI Stability and Module Stability | by Deepal

> 💎 weak self를 사용할 때 적용할 수 있는 3가지 법칙을 소개합니다. The Golden Rules of weak self | Chris Downie

> 프로퍼티 래퍼를 활용해서 Codable 예외처리를 안전하게 하는 방법입니다 Customizing Codable with Property Wrappers – The Swift Developer

> Async/Await 동시성 관련 기본 내용을 설명해주는 글입니다 Modern Concurrency in Swift. Basic Concepts | by Asya Tealdi

Top 7 Subtle Swift Features | Alex Dremov

Type placeholders in Swift | Swift by Sundell


# 설계 구조 : 패턴

> 💎 RxSwift + MVVM 구조로 개발한다고 항상 성공하는 건 아니겠죠. 처첨하게 실패했던 프로젝트 경험담을 알려줍니다 How to fail miserably with RxSwift + MVVM | by Jim Lai

> 위에 같은 분이 MVVM으로 하면서 답답했는지, 연속해서 비슷한 글을 쓰고 있네요. 같이 읽어보세요 Things a MVVM tech lead never told you about | by Jim Lai

> 💎 리스코프 치환 원식에 대해 비교적 상세하게 설명해주는 글입니다. SOLID전체를 설명하려다보면 축약되는 부분이 많은 데 이 글을 상세한 것 같습니다 SOLID Principles in Swift - Liskov Substitution Principle | Phil Yates

3 Different Techniques to Find Memory Leaks in iOS | by Vitor Ferraz Varela

SOLID Principles with Swift | by Damla Çim

Swift visitor design pattern - The.Swift.Dev.


> 여러 곳의 웹이나 서버에서 데이터를 가져와서 화면을 구성하는 경우 통합하는 MVVM 구조를 설명합니다. iOS: MVVM design for Screen having multiple web services/multiple sources of data | by Jageloo Yadav


# 뷰 프로그래밍 : SwiftUI

> 💎 SwiftUI도 무거워지면 버벅거릴 수 있습니다. SwiftUI 성능 개선을 위한 팁을 정리해줬네요. SwiftUI performance tips – martinmitrevski

> 💎 지난 뉴스레터에도 소개했던 Inject를 활용해서 특정한 뷰나 뷰 컨트롤러를 핫로딩하는 방법입니다 Hot-Reloading — Swift and SwiftUI | by Vikash Anand

> iOS 15에서 사라진 PresentationMode 환경 변수를 대체해서 Dismiss 시키는 방법에 대한 설명입니다 Dismissing SwiftUI Views

> 결론은 Kiggfisher와 Nuke로 다운로드받아서 캐싱하자는 얘기네요. 그만큼 검증되고 성숙한 라이브러리인 것은 동의합니다 Downloading and Caching images in SwiftUI - SwiftLee

Handling Multiple Sheets in SwiftUI | by Alessandro Manilii

Managing the Camera in SceneKit under SwiftUI | by Mark Lucking

MapType For Maps in SwiftUI | by DevTechie

NotSwiftUI Just Got Better — Know How to Use It to Create UI Components in iOS | by Jonathan Gamburg

SwiftUI not supported adjusting picker wheel value | by ILIA Pavlov

The missing manual to SwiftUI animations | by Oliver K. Ernst, Ph.D.

Using SwiftUI with Storyboard | by Dario Galiani

# 뷰 프로그래밍 : UIKit

> 💎 Dribbble 앱 스타일로 동작하는 UITabBar 구현하는 방법을 설명합니다 Design a Dribbble-like UITabBar in iOS App Using Swift 5 | by Margels

> 💎 UITableView 처럼 동작하는 뷰를 직접 만들어보는 과정을 설명합니다 Make All Your Swift UIKit Views a UITableView | by Steven Curtis

> 💎 컨테이너 뷰 컨트롤러로 root viewcontroller를 바꿔치기 하는 방법을 설명합니다 Swap root view controllers using a custom container view controller | by Thomas Asheim Smedmann

> 💎 앱 화면 디자인을 구현할 때 보여줘야 하는 부분을 최소한, 적절하게, 최대한 3가지 관점에서 어떻게 비교하는지 알려줍니다. 특히 Dynamic Type을 적용할 때 가장 작은 크기부터 큰 크기까지 고려해야 할 부분을 알려줍니다 Using Min-Mid-Max Principles for iOS Design | Swiftjective-C

> intrinsicContentSize 에 대한 깔끔한 소개글입니다 What is intrinsicContentSize Anyway? Swift Content Tips. | by Steven Curtis

> 뷰 기본 컴포넌트를 조합해서 커스텀 컴포넌트를 생성하는 과정을 쉽게 설명해줍니다. 이미 잘 알고 계신 분들은 패스하셔도 됩니다 Custom Components using View Code (iOS) | by Francisco Samuel da Silva Martins

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

> 🇰🇷 Core ML 스터디한 자료를 공유해주셨습니다. 일반적인 내용부터 Vision이나 NLP를 같이 활용해서 프로젝트에 적용하는 예시도 함께 설명해주셨습니다 Core ML 기초 - Applicable ML Tech Blog

> 💎 접근성을 고려한 커스텀 탭바를 구현하는 내용입니다 Building an Accessible Custom Tab Bar | Bas

> 💎 Core Data 영구저장소 내용을 iCloud에 보관하기 위해서 사용할 수 있는 NSPersistentCloudKitContainer 일반적인 내용입니다 General Findings About NSPersistentCloudKitContainer

> 💎 아이패드 스위프트 플레이그라운드에서 인앱 구매 가능한 앱 만드는 방법을 소개합니다. 점차 아이패드에서 앱을 만들기 쉬워질 것 같네요 How to create in-App Purchases in Apps made on iPad w/ Swift Playgrounds — 🐙 Cephalopod Studio

> 💎 매트릭키트를 활용해서 데이터를 수집하는 방법에 대한 소개입니다 Using MetricKit to monitor user data like launch times - SwiftLee

> 💎 웹과 함께쓰는 REST API와 다르게 gRPC 방식이 무엇이고 어떤 상황에 적합한 가 소개합니다 What is gRPC? Is it Better Than REST API? | by Ruby Valappil

How to Use GameplayKit in an Arcade iOS Game | by Oreste Leone

> 통합 로깅 시스템으로 데이터를 내보내는 과정을 설명합니다 Exporting data from Unified Logging System in Swift | Swift with Majid

> Observable 형태로 접근하다보니 예전 방식 KVO를 거의 안쓰는 것 같네요. KVO에 대한 소개글입니다 Build an iOS Application Using the Key-Value-Observer Pattern (KVO) | by Özgün Yildiz

Swift — 11 Useful Combine Operators You Need to Know | by Amisha I


# 서버사이드

> 간단한 프로젝트를 하면서 DB와 서버가 있으면 좋겠다 싶을 때 Vapor로 간단하게 만들어 볼 수 있는 정도를 소개하는 글입니다 Server-Side Swift With Vapor and Postgres | by Simona Ettari

# 개발 환경

> 🇰🇷 심사상태를 알림으로 받기 위해서, AppStore Conenct API로 업데이트 내역을 gist에 저장하고 슬랙에 알려주는 봇을 만드셨네요 iOS앱 심사상태를 쉽게 공유받을 수 있도록 appstore-status-bot 환경 설정하기 | Fernando 기술 블로그

> 🇰🇷 민소네님께서 Tuist로 환경 변수를 읽어서 Project를 생성하는 과정을 설명해주셨습니다 Tuist - ProcessInfo Environment 기반 프로젝트 생성

> 🇰🇷 의존성을 관리하기 위해서 Tuist를 활용한 방법을 소개해주고 계십니다 Tuist 로 외부 의존성 관리하기 | by Kanghoon

> Xcode나 시뮬레이터에 특정 메뉴 바로가기를 추가하는 방법이네요 Adding Custom Shortcuts To Xcode

> 간단한 팁이지만 XCTemplate을 활용해서 반복적으로 작성하는 코드를 템플릿으로 활용하는 내용입니다 Automate Repeated Code Blocks in Swift | by Tolga Taner

> 💎 Bazel을 활용해서 Xcode 대신에 빌드를 빠르게 처리하는 방법을 소개합니다 Building iOS apps faster using Bazel | by Anurag Ajwani

> 💎 앱 빌드 후에 코드 시그니처(인증서)를 넣으면 어떤 구조로 어떻게 바뀌는지 바이너리 수준에서 설명해줍니다. Demystifying iOS Code Signature | by teryx

> 💎 SPM 바이너리 의존성을 지원하는 Xcode 13.3 관련 내용입니다 Xcode 13.3 supports SPM binary dependency in private GitHub release | by Marco Eidinger

> Xcode에서 사용할 SwiftUI 템플릿을 생성하는 방법을 설명합니다. 반복해서 생성해야 하는 경우는 템플릿이 매우 유용하죠! Create your custom SwiftUI file template in Xcode

Debugging iOS features that require restarting the app in Xcode | iOS development on tanaschita.com

> 우버의 DI 도구 needle readme 한국어 버전입니다. 안드로이드에서 쓰는 Dagger와 비슷한 구조라고 합니다. 저도 써보지는 않았습니다 ElonPark/needle: Compile-time safe Swift dependency injection framework

> 앱 성능 개선을 위한 포인트를 알려주는 글입니다. 그 중에서 sentry.io 라는 처음들어본 분석도구도 소개하는데, 크래시 리포트도 해주지만 API 호출 성능도 분석해주네요 Improve Performance in Your iOS Applications — Part 1 | by Sneh Pandya

> 스위프트 포럼에 올라온 Swift Bundler 2.0 소개글입니다. Xcodeproj를 사용하지 않고 맥 앱을 다룰 수 있는 방법을 제안합니다 Swift Bundler: create macOS apps with SwiftPM instead of Xcodeproj's - Community Showcase - Swift Forums

Web Inspector on iOS devices and Simulators

Xcodegen vs. Tuist vs. Bazel — Comparing the 3 Tools to Supercharge Your iOS Projects | by Anurag Ajwani

iOS: Certificate pinning Part - 1 (Alamofire) | by lalit kant

iOS: Strategies to transition to Swift Package Manager | by Frédéric ADDA


# 테스트

> 🇰🇷 뱅크샐러드는 접근성을 설계부터 고려해서 개발하고 계신 걸로 알고 있습니다. 그래서 그런지 UI 테스트도 숨쉬듯이 하고 있으시다고 하네요 뱅크샐러드 iOS팀이 숨쉬듯이 테스트코드 짜는 방식 1편 - 통합 UI테스트 | 뱅크샐러드

> 💎 Xcode 13.3 에서 오동작을 개선한 Quick 5.0 버전을 릴리스 하면서 개발자가 그 과정을 소개한 내용입니다. Nimble도 곧 10.0이 된다고 하네요. Quick 5.0 released · Jesse Squires

> 💎 읽다보니 스위프트가 아니라 Objective-C를 활용해서 StoreKit을 테스트하는 SKTestSession를 분석한 내용입니다 Reimplementation of StoreKit Testing within our apps | Medium

> 💎 보안 관점에서 고려해서 테스트할 부분을 알려줍니다 The definitive iOS security testing checklist for developers | by Tom Colvin

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