iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제49호 2022년 2월 13일 (링크수정)
풍성한 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다! 
(일부 링크가 깨져서 다시 재전송했습니다 🙇🏻‍♂️)
벌써 레츠스위프트 뉴스레터를 시작한 지 2주년이 됐습니다. 2년만에 49호를 발행했네요. 앞으로도 응원해주세요! 

애플에서 앱 스토어 기준으로 공식적으로 측정한 iOS, iPadOS 점유율 정보가 있네요. 

https://developer.apple.com/kr/support/app-store/ 최근 4년 동안 판매된 iPhone 경우 iOS 15가 72%, iOS 14가 26% 그 이하가 2%라고 합니다. 전체 기기를 기준으로 보면 iOS 15는 63%, iOS 14는 30%, 그 이하가 7%로 바뀝니다. 올해말이면 iOS 13 이상으로 올릴 수 있을까요? 🤔


매월 둘째, 넷째주 일요일에 뉴스레터를 발행하고 있습니다. 
누구나 함께하는 뉴스레터 저장소 👉 만약 링크가 깨지는 경우는 저장소 이슈에서 확인하실 수 있습니다.
메일링 리스트 가입은 >가입하기 링크< 주변에 소개해주세요 🤩
주제/분류별 소식들
국/해외 소식들을 비슷한 주제들이 많아서, 다음과 같이 묶어서 정리합니다.
# 애플
> 개발자 사이트에서 예전부터 제공하던 테크노트가 새로운 형식으로 리뉴얼되었네요.
Apple Developer Documentation Technotes
> 앱 스토어에 표시되지 않지만 배포 가능한 옵션에 대한 안내입니다. 몇 년 전부터 엔터프라이즈 배포 기준을 더 높이면서 기업 대 기업 또는 학교에 대량 배포를 하는 경우도 앱 스토어를 통하도록 가이드하고 있습니다.
> 앱 내에서 계정 삭제를 지원해야 하는 가이드라인 적용 마감을 6월말까지 연장한다고 합니다. Deadline for in-app purchase and account deletion requirements extended - News
> 인앱 이벤트와 커스텀 제품 페이지 등을 지원하는 새로운 앱 스토어 커넥트 API가 공개되었습니다. New App Store Connect API capabilities now available - News
# 하드웨어
> 에어태그 악세서리가 엄청 많아지고 있다고 합니다. 한국에서는 법제도 덕분에 Find My + 지도가 안되서 낭패지만요 ㅜㅜ
> 애플이 블루투스 오디오 스펙 상향을 이끌고 있다는 얘기. 에어팟 프로에서 무손실 음원 지원 때문에 블루투스 이외에 다른 방식을 고려중이라는 루머까지 있긴 하네요.

# 일반
> 다양성 측면에서 점차 여성 엔지니어들이 많아지고, 어떤 지원이 필요한지 경험을 공유해주고 있습니다. How To Support Women in Tech. We face a battle to be seen, heard and… | by Kristi Perreault
> 70대 어르신이 iOS 앱 개발 공부하면서 겪은 좌절감을 쓴 글입니다. 댓글도 조금 뭉클하네요 Apparently You Can’t Teach an Old Dog SwiftUI and Xcode | by Anthony Lawrence
> 2FA 인증이 많아지면서 OTP 값을 입력하는 경우가 많은데, iOS 내부에 포함되어 있는 기능을 활용할 수 있다고 하네요. Apple’s (Hidden) Authenticator App | by Nikhil Vemu
> 앱 보안에 관련된 글입니다 iOS App Security — keeping apples worm-free | by Besar
> 5자리 단어 맞추기 Wordle이 엄청 인기를 끌고 있는데요, 뉴욕타임즈에 인수됐죠. 그 과정을 보고 소감을 정리한 글입니다. Six Lessons From the Success of Wordle | by Clive Thompson
> draw.io 로 스토리텔링이 가능한 다이어그램 그리는 방법이라고 합니다 Creating Story-telling interactive Diagrams with draw.io

# 스위프트
> 동시성을 이용한 명령어 도구 개발하기 Develop a command-line tool using Swift Concurrency | by Marco Eidinger
> AsyncParsableCommand로 비동기 명령어 도구 만들기 How to create asynchronous Swift Command-Line Tool with AsyncParsableCommand? | An Tran
> async/await를 다룰 때 메모리 관리 방법 Memory management when using async/await in Swift | Swift by Sundell
> 오토릴리스풀에 대한 소개 Autoreleasepool and swift | by Kristiina Rahkema
> 잘 알려지지 않은 스위프트 성능을 높이는 방법들. 이건 저도 잘 몰랐던 내용이네요 - 4 Lesser-Known Swift Features | by Pavel Plotnikov
> Double 대신에 Decimal을 써야 하는 경우를 소개합니다 When should you use Decimal instead of Double? · Jesse Squires
> 깔끔하게 생성자를 만들기 위해서 몇 가지 프로토콜을 소개합니다 Cleaner inits - ExpressibleBy...protocols
> 사용하지 않는 제네릭 타입이지만 컴파일러 타입 체크를 도와주는 방법을 제안합니다 Phantom Types in Swift. A Phantom type is just a generic type… | by Karthik Shiva
> Opaque 리턴타입 도입 이후에 매개변수로 넘길 수 있는 방법을 제안하고 있습니다 Opaque parameter types - Pitches - Swift Forums
> 헬로우월드의 복잡한 버전 만들기 - 모든 문제를 이렇게 해결해야 하는 것은 아니지만 필요한 경우가 있습니다 ‘Hello world!’ in Swift, Enterprise Edition | by Nikita Lazarev-Zubov

# 설계 구조 : 패턴
> 코디네이터를 활용해서 확장 가능한 앱 만들기 Re-thinking iOS Coordinators to Build Scalable Apps | by Leonid Kokhnovych
> 의존성이 많은 경우 Composition Root 패턴을 써봐라 Too Many Dependencies in iOS? Use the Composition Root Pattern | by Ethan Keiser
> 프로토타입 패턴에 대한 가이드 Guide to Prototype Pattern in Swift | by Eduardo Domene Junior
> 클린 아키텍처 방식으로 설계하기 How to Design in Clean Architecture Way
> 비대한 앱 델리게이트를 피하는 방법 Avoiding “Massive AppDelegates” in iOS | by Varga Zolt
> 앱 프로젝트에서 폴더/파일 관리하는 하는 방법 How to organise your project? Folder structure

# 뷰 프로그래밍 : UIKit
> 앱 테마 바꾸기 위한 준비 Theming Apps on iOS is Hard
> UIKit 다룰 때 알아두면 좋은 10가지 팁 10 little UIKit tips you should know - The.Swift.Dev.

# 프레임워크
다양한 프레임워크를 다루는 예제를 소개하는 글들입니다. 
> 스타워드 Tatooine를 AR로 만드는 과정입니다 Creating AR Tatooine from Star Wars with Swift and ARKit 5 | by Bruno Feres Villela
> 달력/날짜를 다룰 때 당연하다고 생각하지만 아닌 상황을 정리한 글입니다. 이 글을 보니 개인적으로 가장 충격받은 경험이 생각나네요. 어느 병원에 아프리카에서 온 외국인이 방문했는데 에티오피아 출신이라 생년월이 13월이더군요. 그래서 그 분 주민번호 때문에 접수할 때부터 약국까지 지나갈 때마다 병원 시스템이 다운되던 상황이 기억이 납니다. Your calendrical fallacy is thinking…
> 콤바인과 관련된 두 개 글입니다. 첫 글은 가벼운 글이고 아래 글이 좀 더 상세한 글입니다. Combine -101: Introduction to Basics & Terms | by Burcu K. Kutluay
> 정규표현식으로 특정 입력 조건을 검증한 예시입니다 Regex Text Validator in Swift | by Alessandro Manilii
> 콤바인을 이용해서 재사용 가능한 깔끔한 네트워크 라이브러리 만드는 과정입니다 Write a clean and Reusable Networking Layer using Combine framework and generics | by Kareem Mohammed
> 동기 방식 함수를 취소가능하도록 만들기 Synchronous functions can support cancellation too – Ole Begemann
> 파이어베이스 API 비동기로 다루기 Calling asynchronous Firebase APIs from Swift | by Peter Friese
> SceneKit으로 3D 화면 표시하기 How to add a 3D into an iOS app using SceneKit | by eturkina
> 아폴로 GraphQL 다루기 👾 Apollo Integration Fun on iOS. Why? | by Mubi Sadoon
> 노티피케이션 관련 총정리 iOS Push Notifications
> OAuth2 PKCE 방식으로 로그인 구현하기 Implement OAuth2 PKCE in Swift | by Marco Eidinger
> Codable 프로토콜을 CoreData 모델에 적용하기 CoreData with Codable | by Deepika Ramesh
> 코어데이터 옵셔널 때문에 크래시 났던 썰 Clash of the Optionals • The Atomic Birdhouse
> CoreFoundation 수준에서 TCP 스트림/프로토콜 다루기 Building a simple TCP chat for iOS using Swift
> 코어 이미지 필터 처리를 동시성으로 성능 개선하기 Handling Core Image Filter Processing With Concurrency in Swift | by Mark Lucking

# 접근성
접근성 관련 자료를 카테고리 분리해봤습니다. VoiceOver에 대한 내용이 정리가 잘 되어 있습니다.

# 개발 환경
좋은 사례가 될 것 같습니다. 더불어 채용도 하고 있다고 하시네요^^
> RxSwift를 XCFramework 기반으로 연동하기 Integrating RxSwift as XCFramework with CocoaPods
> 앱 실행 시간을 줄이기 위한 팁 Reduce iOS App Launch Time | by Pavlos Simas
> Gojek 앱 빌드 시간을 50% 줄인 사례 Reducing Our Build Time By 50% | by Sanju Naik
> 깃헙 페이지에 스위프트 라이브러리 문서 호스팅하기 Hosting your Swift Library Docs on Github Pages – Rhonabwy
> 스위프트 5.6에 포함될 SPM 확장 기능에 대한 소개입니다. 이제 SPM 모듈 빌드 시점에 플러그인을 넣어서 pre-compile 같은 도구를 사용할 수 있습니다. 관련 기능은 SE-0303입니다. An early look at Swift extensible build tools 
> iOS 개발자 관점에서 멀티 플랫폼 프로젝트 개발하기 Development of a Multiplatform project from iOS Engineer’s perspective | by Oleksandr Masliukivskyi
> 로그에 컬러 코드를 지정하는 도구와 방법 Colorizing Xcode Logs to Improve Log Tracing | by Furkan Kaplan

# 테스트
> iOS TDD 사례를 쉽게 설명해주고 있습니다 Test Driven Development: Simple Flow Object in iOS | by Tifo Audi Alif Putra
> Lyft 일반적인 테스트 관련 시리즈 글인데 iOS가 아니더라도 읽어볼 만 합니다 Scaling productivity on microservices at Lyft (Part 4) | by Ben Radler
> 유니티 게임을 개발자 계정 없이 테스트하는 방법입니다 How to Test Unity Games on an iOS Device Without a Developer Account | by Sergio Ortiz

# 도구/오픈소스 
> 애플 프레임워크에 내장된 로컬라이즈 리소스를 언어별/프레임워크별로 검색할 수 있습니다 Apple Localization Terms Glossary
> 앱 바이너리 사이즈를 분석하는 도구 Bloaty Profiling binary size on iOS using Bloaty | Asif’s Blog
> 인터넷 연결성 확인해주는 OpenCombine Detecting Internet Connectivity using OpenCombine | by Ross Butler
> 패키지 의존성 분석을 도와주는 SwiftDependencyChecker | by Kristiina Rahkema
> 이메일 검증을 도와주는 라이브러이 Introducing SwiftEmailValidator | by Dave Poirier
> 특정 메모리를 지정해서 훔쳐볼 수 있는 도구 iOS Lightweight Hooking Library | by Said Al Mujaini

# 디자인 
> 영감을 주는 앱 개발 App Development Inspiration #113 | #112 | #111
> 영감을 주는 앱 디자인 App Design Inspiration #43 | #42
📲회사에서 iOS 개발자들에게 홍보하고 싶은 내용이 있으신가요? 
news@letswift.kr 로 언제든지 문의해주세요. 
레츠스위프트 뉴스레터
http://letswift.kr
수신거부 Unsubscribe