iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제55호 2022년 5월 8일
WWDC 2022 일정이 한 달 정도 남았네요! 그래서 그런지 하드웨어 루머나 공식 소식은 별로 없고 개발자 커뮤니티 소식이 더 많은 것 같습니다. 올해는 첫날 키노트와 플랫폼 소식을 함께 보기 위해 애플 파크로 초대하는 행사도 있다고 합니다. 올해는 또 어떤 소식들이 나올지 벌써부터 궁금해집니다.
풍성한 iOS / Swift 관련 소식을 모은 뉴스레터를 시작해보겠습니다!

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

주제/분류별 소식들
국/해외 소식들을 비슷한 주제들이 많아서, 다음과 같이 묶어서 정리합니다.
# 애플
> 💎 포항에 개소한 애플 개발자 아카데미 관련 소식이네요. 아쉽게도 공식적으로 내부를 구경(?)할 수는 없다고 하네요😢 Apple, 포항시에 개소한 Apple Developer Academy를 통해 일자리 창출 - Apple (KR)

> 비밀번호(암호) 없이 로그인할 수 있는 FIDO 표준과 W3C 지원을 확대한다는 소식입니다 Apple, Google 및 Microsoft와 함께 FIDO 표준 지원 확대 - Apple (KR)

Clarifying criteria & new timing extension for App Store Improvements process - Latest News - Apple Developer

> 5월 4일 포스데이를 기념해서 은하계 저편의 특수 효과와 사운드를 소개하는 영상과 자료가 공개됐습니다. Mac으로 머나먼 은하계 저편의 사운드 발견하기 - Apple (KR)

> 애플 개발자 문서 중에서 기술 노트가 최근에 다시 업데이트되고 있습니다. 그 중에서도 코드 인증과 관련된 프로비저닝 프로파일, 해시, 요구사항 등이 시리즈로 올라왔습니다 TN3125: Inside Code Signing: Provisioning Profiles | Apple Developer Documentation


# 일반

> 💎 시리한테 시키면 좋은 팁 10가지라네요. 시리야 뉴스레터 정리해서 보내줘~ 하는 그 날이 오면 좋겠네요 10 Absolutely Useful Siri Tricks You Probably Haven’t Tried Yet | by Nikhil Vemu

> 💎 2013년 1월에 발행했던 잡지에 로버트 마틴이 기고했던 함수형 프로그래밍에 관한 글을 다시 소개하네요 Functional Programming Basics: What’s It All About? | by PragPub

> 💎 자신의 삶에서 지표를 찾아서 데이터베이스에 넣고 시각화하는 프로젝트를 하는 분입니다 How I put my whole life into a single database · Felix Krause

> 💎 의존성의 감춰진 비용들을 솔직하게 설명하고 있습니다. 뭐 의존성이 꼭 나쁜게 아니지만 비용 관점에서도 관리가 필요하다는 점에 동의합니다 The Hidden Costs of Your Dependencies | Jason Zurita

> 💎 2010 D8 컨퍼런스에서 스티브 잡스가 했던 이야기와 함께 애플이 개인 정보를 다루는 관점을 설명합니다 “What is Privacy?” — As Explained By Steve Jobs in 2010 | by Nikhil Vemu

> 2014년에 자기 아이들을 위해서 만들었던 네이티브 앱을 2022년에 크로스 플랫폼 웹앱으로 만든 과정을 소개합니다. 심지어 크래시도 줄었다고 합니다! ㅎㅎ I replaced my native iOS app with a cross platform web app and no-one noticed | by Chris Nielsen

> Python 분야 소식이긴 합니다만, PyCon US 2022에서 발표된 HTML에서 파이썬 코드를 작성할 수 있는 PyScript 관련 내용입니다 PyScript: Python in the browser | by Sophia Yang

> 저도 Alfred 매니아인데요, 여기서 소개한 워크플로우 팁을 써먹어 봐야겠습니다 Top 4 Alfred workflows for 2022 | by Decoded Bytes


# 스위프트

> 💎 Swift 3과 4에서 클래스 강한 참조와 약한 참조 레퍼런스 카운트 동작 방식에 대한 설명입니다. 포인터를 자세히 살펴보기 때문에 조금 어렵지만 차분히 읽어볼 만 합니다 A deep dive into Swift reference counting | by Denil Chungath

> 💎 개인적으로 async/await 와 관련된 내용 중에서 가장 궁금한 부분이 AsyncSequence 부분입니다. 예제 코드와 함께 잘 설명해주고 있네요 AsyncSequence explained with Code Examples - SwiftLee

> 💎 AsyncSequence와 함께 AsyncStream에 대해 소개하는 글입니다. 같이 읽어보세요 AsyncThrowingStream and AsyncStream explained with code examples

> 💎 AttributedString과 유니코드를 다룰 주의할 점을 알려줍니다. 특히 Codable을 지원하기 때문에 JSON으로 저장하면 어떻게 잘못될 수 있는가 설명합니다 AttributedString’s Codable format and what it has to do with Unicode – Ole Begemann

> 💎 빌드 과정을 개선하기 위한 코딩 스타일 몇 가지 팁을 소개합니다 Improve Build Efficiency. Using good coding practices | Swift

> 💎 공식 서버사이드 워킹그룹 SSWG 2021년 동안 진행한 내용을 정리해놓았네요 Swift.org - SSWG 2021 Annual Update

> Double과 Int를 비교해주는 자료입니다. 간단하지만 꼭 필요한 관점이네요 Double vs. Int — Why Double can store a larger number if they’re both 64-bit? Accuracy? (BONUS: CGFloat) — Swift | by Javid Poornasir

> String.Index 출력 형식을 개선하자는 제안입니다 Improving String.Index's printed descriptions - Evolution / Pitches - Swift Forums

> Info.plist에 공개키를 지정할 수 있는 방법이 추가됐지만, Safari 처럼 별도 프로세스로 동작하는 경우는 처리가 안된다고 하네요 Info.plist based Certificate Pinning on iOS | by Marco Eidinger

> async/await를 보다보면 하위에 숨겨진 기능이 바로 continuation 입니다. 조만간 이것과 관련된 기술 블로그를 하나 써보려고 준비중입니다 ㅎㅎ The difference between checked and unsafe continuations in Swift – Donny Wals

> 포럼에 올라온 Swift로 Python VM을 구현하는 개인 프로젝트를 하는 분의 글입니다. 구름 입력기 개발자분께서 벌써 기여를 하셨네요 Violet - Python VM written in Swift - Community Showcase - Swift Forums

> if문을 사용하지 않고 고차 함수를 사용하는 방식을 설명합니다 What for is for? What if no if? | by Maksym Teslia

> .enumerated() 구현 부분을 보면 O(1)으로 동작한다는 아주 간단한 내용입니다 Why is .enumerated() a O(1) time operation? — iOS / Swift | by Javid Poornasir

> 가상 메모리 페이지와 풋프린트 동작 방식에 대한 간단한 설명입니다 Writing effective Swift code understanding how the memory works in iOS | by Davide Senatore

> Weak Self를 사용할 때 3가지 규칙을 소개합니다 Weak Self -- Closure Rules of Thumb • Christian Tietze

Your Swift Classes Should Be Final | by Steven Curtis


# 설계 구조 : 패턴

> 💎 Medium 앱의 구조를 개선한 과정이네요. 특히 Model과 Feature를 서로 다른 모듈 패키지로 분리한 점이 흥미롭습니다 Evolution of the Medium iOS app architecture | by Thomas Ricouard

> 💎 Doordash, Evernote 앱 구조, Dropbox 사진 동기화 등 여러 회사의 모바일 시스템 관련 내용을 모아놓은 깃헙 문서입니다 Mobile Systems Design · GitHub

> 💎 SwiftUI에서도 진정한(?) MVC 구조가 필요하다는 주장입니다. ViewController 프로토콜을 사용해서 구조화를 설명합니다 Model View Controller for SwiftUI | The Always Right Institute

> 팩토리와 빌더 패턴을 비교해서 설명해줍니다 Software Design Patterns: Factories Are Not Builders | by Leonardo Santos

> 우버 앱 시스템 전체 구조를 설명해주는 글입니다. 앱 내부를 구성하는 요소보다는 전체 시스템을 이해하는 데 도움이 될 것 같습니다 System Design of Uber App — Uber System Architecture | by Anu Upadhyay


# 뷰 프로그래밍 : SwiftUI

> 💎 몇 가지 오픈소스를 활용했지만, WYSIWYG 드로잉 앱을 만드는 과정을 설명합니다 Develop a WYSIWYG drawing app with SwiftUI | by nicole

> 근거가 있다기보다는 취향에 맞지 않아서 쓰지 말자는 글이지만 솔직한 글이네요 3 Reasons Why I don’t like using SwiftUI | by ohdarling

Bringing platform-specific types together in SwiftUI | Daniel Saidi

> SceneKit 시리즈 중에 이번에는 폴리곤으로 지형을 표시하는 방법을 설명합니다 Build a Mesh Using Custom Geometry in SceneKit Under SwiftUI | by Mark Lucking

> TCA 방식으로 뽀모도로 타이머 맥 앱을 만드는 과정을 설명합니다. TCA로 간단한 프로젝트를 시작할 때 참고자료로 적당할 것 같습니다 Created a simple Mac app using TCA | by Yoki

> 다시 표시할 수 있는 내비게이션 흐름을 구현할 때 고민을 정리한 글입니다 Flow Navigation With SwiftUI (Revisited) | by Nick McConnell

> 요즘 대부분 앱들은 Settings.bundle을 잘 안쓰는 추세인데, 설정 앱에서 특정한 조건을 가지는 분석 모드를 추가하는 방법입니다. How to add a Diagnostic Mode using Settings.bundle and SwiftUI

> SwiftUI 뷰와 모델을 서로 다른 패키지로 분리하는 과정을 설명합니다 Moving SwiftUI Views and Models Into Separate Swift Packages | by Rob Sturgeon

> 꿀렁꿀렁 움직이는 모핑 애니메이션을 구현하는 방법입니다 SwiftUI Advanced Animation: Morphing Shapes | Better Programming

> SwiftUI를 배우는 사람들을 위해서 간단한 샘플 코드를 모아놓는 저장소를 폴 허드슨이 시작했다고 합니다 twostraws/simple-swiftui: A collection of small SwiftUI sample projects.

Custom Geometry in SceneKit Under SwiftUI | by Mark Lucking

Disable animations on a specific view in SwiftUI using transactions

MultiSheets done right in SwiftUI | by Martin Lukacs

SwiftUI Pro Tips 4-6 | by Ryan Jennings

UIKit Custom Annotation with Callout in SwiftUI | by DevTechie


# 뷰 프로그래밍 : UIKit

> 💎 셀을 생성하는 다양한 방법을 정리해서 디자인 시스템을 구성했네요. 디자인 시점부터 고려한 여러 제약사항이 다양하게 반영된 셀을 만들기 위한 노력이 돋보입니다 Cells creation in iOS | by Timur Shafigullin

> 💎 Scene Delegate를 다루는 여러 가지 상황을 소개하면서 외부 화면을 다루는 방법도 알려줍니다. 아직까지 SwiftUI로는 외부 화면을 다룰 방법이 없다네요 iOS Scene Delegates and External Screens

> SwiftUI 와 UIKit 객체 사이에 이벤트를 전달하는 이런저런 방식을 소개합니다 Send Events from SwiftUI to UIKit and Vice Versa | Swiftjective-C

Storyboards x Xibs x ViewCode: Which one is better? | by Pedro Alvarez


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

> 💎 진동과 모션으로 피드백을 주는 햅틱 관련 API들을 소개합니다 Developer Guide about Haptics on Apple Platforms | by Marco Eidinger

> 💎 UIImage를 코어 데이터에 바이너리로 저장하는 과정을 설명합니다 Storing Data in Core Data: UIImage | by Steven Curtis

> 스위프트 플레이그라운드에서 메탈 API를 사용하는 방법을 소개합니다 Using Metal in Swift Playgrounds 4 | by E Skils

> iOS 앱 크래시가 발생하는 이유를 간단하게 정리해준 글입니다. 메모리 사용과 접근이 가장 많을텐데 짧게 해결 방법도 제안해주고 있습니다 Common iOS crash reasons | by Srijan Bhatia

> 얼마전에 오픈소스로 소개한 async swift altorithm 프레임워크를 활용하는 방법에 대한 소개글입니다 Look at Swift Async Algorithms | Alex Dremov

> 색상을 사용할 때도 색에 이름을 붙이자는 의견입니다 Name Your Colors! | Khanlou

How to center align cells in UICollectionViewCompositionalLayout | by Thongchai Kolyutsakul

Using new Swift Async Algorithms package to close the gap on Combine | John O


# 서버 사이드

> Point-Free에서 서버 사이드 뿐만 아니라 iOS에서도 사용할 수 있는 오픈소스를 공개했습니다 Open Sourcing URLRouting and VaporRouting

> 애플 개발자 아카데미에서 공부하면서 서버 사이드에서 스위프트를 활용하기 위해서 필요한 개념들을 정리한 내용이네요 Read this before learning Server Side Swift | by Diego Castro


# 개발 환경

> 🇰🇷 민소네님께서 미리보기가 제한적이라서 Hot Reload를 도와주는 Inject 라이브러리를 소개합니다 DemoApp과 Inject의 Hot Reload를 이용해서 빠른 개발하기

> 💎 앱 스토어를 통해서 다른 기업에 B2B로 커스텀 앱을 배포하는 과정을 설명해줍니다. 애플은 엔터프라이즈 개발자 프로그램 가입 조건을 다시 강화하면서 bussiness.apple.com을 통해서 B2B 배포를 강조하고 있습니다 Deploying apps to Apple’s B2B App Store. | by Rohit Mondal

> 💎 깃헙 액션에 대해 상세하게 설명해준 글입니다. 저도 놓쳤던 부분까지 개념을 전체적으로 설명해줘서 좋았습니다 Github Actions— Everything You Need to Know to Get Started | by Ahmed Besbes

> DocC로 문서를 작성하고, Documentation Catalog를 활용해서 생성하는 과정을 설명합니다 Building multi-platform documentation with DocC | Daniel Saidi

> M1 Mac에 Azure를 셀프-호스팅으로 구축한 사례를 공유해줍니다 Run Azure Self-hosted macOS Agents on Apple M1 Mac | by Soumya Mahunt

> 앱 스토어에 배포하기 전에 준비할 것들 Stuff to implement before you launch on App Store | Filip Němeček

Your guide to Danger Swift on CI | by Pranav Kasetti


# 테스트
> 🇰🇷 뱅크샐러드 개발팀의 두 번째 화면 단위 통합 테스트 이야기입니다 숨쉬듯이 테스트코드 짜는 방식 2편 - 화면 단위 통합 테스트 | 뱅크샐러드

> 💎 테스트 가능한 의존성을 가지도록 모델링하는 방법을 설명합니다 Modeling Testable Dependencies in iOS Codebases | by Eduardo Sanches Bocato

> XCTests로 메모리 누수를 방지하는 방법을 소개합니다 Preventing Memory Leaks using XCTests | by Maciej Krolikowski


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