iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제52호 2022년 3월 27일
풍성한 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다.
맥 스튜디오와 함께 스튜디오 디스플레이 후기가 공개되고 있고, 벌써 Teardown 분해한 분들도 계시군요!
엄청난 성능을 자랑하는 것을 보면 가질 수 없지만 갖고 싶다는 상상을 하게 만드는 것 같습니다 ㅎㅎ 
제가 봤던 영상은 이거였습니다. 

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

한 가지 팁
이번호부터 새롭게 항목을 하나 추가했습니다. 새로운 무언가 한 가지 팁을 하나씩 공유드려볼게요
Xcode 13.3부터 xcdebug 라는 새로운 명령어가 추가됐습니다. Xcode 윈도우를 찾아서 디버깅을 시작하거나, 백그라운드 상태로 빌드만 할 수도 있는 것 같습니다. 다만 옵션을 넣어봐도 되는 걸 못 찾았습니다. 아직은 사용해본 사례도 거의 없는 것 같네요 ㅜㅜ 
어쩌면 이런 명령어로 가볍게 디버깅이 가능한 AppCode 같은 개발도구가 생길까 상상해봅니다 
주제/분류별 소식들
국/해외 소식들을 비슷한 주제들이 많아서, 다음과 같이 묶어서 정리합니다.
# 애플

> 스위프트 5.6 릴리스에 대한 공식 페이지에서 이번에 추가된 기능에 대해 짧게 소개하고 있습니다 Swift.org - Swift 5.6 Released!

> 이제 swift.org 홈페이지도 오픈소스로 관리한다고 합니다. SWWG 워크그룹에서 관리한다고 합니다 Swift.org - Swift.org Website is Now Open Source

> 스위프트 버그 관리를 JIRA에서 깃헙 이슈로 모두 옮긴다고 하네요. 앞으로는 깃헙만 보면 되겠네요 Swift bugs are moving to GitHub Issues and we need your help! - Announcements - Swift Forums

> 스위프트 5.5에 추가된 AsyncSequence 관련된 알고리즘만 새로운 오픈소스 저장소로 공개했습니다. Swift.org - Introducing Swift Async Algorithms | 깃헙 저장소 바로가기


# 하드웨어

> 스튜디오 디스플레이가 왜 별로인지 상세하게 설명하는 글입니다. 고정된 스탠드, 에너지 효율이 낮고, 1m 썬더볼트 USB-C 너무 짧다. 등등 매우 구체적인 사례들을 이야기 합니다 Apple’s Studio Display Hides Some Dirty Secrets | by Attila Vágó

The iOS 15.4 Update is Too Good to The Level it Couldn’t Get Any Better | by Nikhil Vemu


# 개발 문화
> 화면보는 시간(스크린 타임)을 줄이기 위해서 쉬는 시간동안 간단한 게임을 하도록 만든 스토리를 소개해줍니다. 5% 정도 감소했다고 하는데, 결국 게임을 한 게 아닌가 싶네요. 재밌게 읽었습니다 ㅎㅎ Stuck scrolling? We made reducing your screen time a Breeze | by Sabrina Jain

> 코드리뷰 피라미드라는 개념으로 코드리뷰 할 때 고려해야 할 사항들을 정리한 글이네요. The Code Review Pyramid - Gunnar Morling

# 스위프트
> 스위프트 에볼루션 사이트를 요약해서 보여주는 사이트가 생겼네요 01: Background History, Chris Lattner, 6 Proposals | Revue

> 객체지향 프로그래밍으로 클래스끼리 상속 관계 대신에 <프로토콜>을 추상 타입으로 활용해서 관심을 분리하고, 의존성을 주입하거나 모킹하기 위한 방식을 깔끔하게 설명해주는 글입니다 Abstract types and methods in Swift | Swift by Sundell

> Swift 5.6에 추가된 SE-355 - Exsitential any 활용에 대한 글입니다. some과 함께 불투명한 existential types를 다루기 편해진 것 같습니다. AnyObject, Any, and any: When to use which?

> Async/Await 와 함께 콜랙션을 비동기로 다루는 방법 AsyncSequence에 대한 정리입니다 AsyncSequence extensions | Warp your mobile development

> 의존성을 줄이도록 구현하는 방식에 대해 소개합니다 Code Coupling: Reducing Dependency in Your Code | by PragPub

> #if 같은 Preprocessor 구문을 활용하는 방법입니다 How to use Preprocessor Statement in Swift Project. Skills of high-paying iOS developers. | by KD Knowledge Diet

> 작은 문제는 작은 튜플로 해결해보자는 취지의 글입니다 Solving Small Problems with Small Tuples | Swiftjective-C

> Swift 5.6 과 5.7에 새로워진 내용들을 설명해주는 글입니다. 우리 스위프트가 달라졌어요. 느낌입니다 What’s New in Swift 5.6 and 5.7 | by Iosif Moldovan

> 늘 헷갈리는 모나드, 펑터에 대한 (기존 하스켈 글을 다시 쓴) 스위프트 관점에서 정리글입니다. 이 관점에서 한국어 자료를 한 번 정리해보고 싶네요 Monad, Functor and Applicatives in Swift | by Steven Curtis

> 의존성 역전과 의존성 주입을 구분해서 간단하게 설명해줍니다 Dependency Inversion vs. Dependency Injection | by Guy Erez

Swift Concurrency Task Management | by Fumito Nakazawa


# 설계 구조 : 패턴
> 스위프트 플레이그라운드에서 VIPER 확인하는 방법이네요. 얼마나 바쁘면 아이패드로 이렇게까지 해야 하나 싶기도 합니다 ㅎㅎ Easy VIPER Architecture on Playground for busy people | by Ulises Omar Prieto Dominguez

> 언제 코디내이터 패턴을 활용하면 좋은가 설명해줍니다 How useful is the coordinator pattern in an iOS application? | by Codecat

> 코어 데이터 기반 앱을 어떻게 더 추상화할 것인가 설명하고 있습니다. 자주 보는 클린 아키텍처나 그런 의도보다는 데이터를 어떻게 더 추상화할 것인가 촛점이 맞춰져 있습니다 Improve your architecture by abstract your code | by Iosif Moldovan

> 비교적 간단한 예제를 기반으로 쓴 앱 모듈화에 대한 글입니다. 개인적으로는 이 글에 나오는 정도 시각화를 도와주는 도구를 만들고 있습니다. 아직은 할 일이 많네요 Scalable Modular Architecture in iOS | by Tifo Audi Alif Putra

# 뷰 프로그래밍 : UIKit

> 예전 아이폰을 대상으로 성능 개선하기 위해서 색상 브랜딩이나 Off-Screen 렌더링 처리하는 방법을 소개합니다 Color Blending and Off-Screen Rendering in Swift | by Tolga Taner

Using Generics to simplify subclassing UIViewController’s view | by Code in Swift

> 새로운 KeyboardLayoutGuide 활용하는 방법입니다 Using the New KeyboardLayoutGuide API to move UITextField when the keyboard appears on iOS

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

> 클라이언트에서 SSL 인증서 관리하기 Client Certificate Handling on iOS | by Marco Eidinger

> 콤바일을 소개하는 글은 많았습니다만, 간결하고 전체적인 코드 동작과 함께 설명해줘서 이해가 잘 되는 글 같습니다.
최근에 해외 블로그도 이렇게 짧은 주제를 학습하고 요약하는 글이 많아진 것 같습니다. (아마도 교육 기관에서 학습하고 정리하는 듯한 느낌의 글들이 많아졌습니다) Combine in swift (publisher/subscriber/operator/subject) | by Nirajpaul Ios

> 코어 데이터 하위에서 저장을 담당하는 커스텀 스토어를 구현하는 과정을 상세하게 보여주네요. Core Data — Building a Custom Store | by Avi Tsadok

> 유니버설 링크로 Deep Link를 처리하는 방법입니다. Deep Link in iOS App by Universal Link | by Jimmy Chen

> 서버대신 로컬에서 Protobuf로 데이터 처리하는 방법에 대한 글입니다 Learning Protobuf for iOS Locally | by Elye

> Async/Await 기반으로 네트워크 계층 구현하기 Modern Networking Layers in iOS Using Async/Await | by Daniele Margutti

> ETags를 활용해서 네트워크 트래픽을 줄이는 방법에 대한 소개입니다. 다만 이 부분은 국내 서버들 상황에서는 조심해야 할 수도 있습니다. K사 경우 ETags 값을 보고 패킷을 막아버리는 장비도 있었습니다 Reduce your iOS apps network traffic with ETags using URLSession or Moya | by Thorsten Stark

> 콤바인으로 처리할 때 어떤 스레드가 클로저를 sink하는 지 찾아보는 과정을 정리했네요 Swift and Combine: Which thread runs my sink closure?

> 앱 템플릿 생성한 이후에 Core Data를 사용하고 싶을 때 작업 흐름을 정리해주셨네요. 그리고보니 이 분 한국에 계신 것 같은데 영문 블로그만 작성하시는 것 같네요. What if I want to integrate CoreData later? | by KD Knowledge Diet

> iCloud 기능을 절대 쓰면 안되는 이유에 대해 강력하게 주장하는 글입니다. 애플 관계자들이 싫어할 만한 글이네요. 근데 읽어보면 얼마나 불편했을까 싶은 부분들이긴 합니다. 이런 강제사항 때문에 앱 스토어 외부에서 배포하는 앱들도 꽤 있죠 Why iOS Developers Should Never Use iCloud in Their Apps | by Georg von der Howen

FormatStyle Deep Dive · Ampersand Softworks

Type Enforced UserDefaults | by Dave Poirier

 
# 개발 환경

> 매스프레소 - 콴다 iOS개발팀에서 깃헙 액션을 이용한 iOS 배포 파이프라인 자동화에 대해 상세하게 소개해주셨습니다. 좋은 기술 자료 공유 응원합니다! GitHub Actions를 이용한 iOS 배포 파이프라인 자동화 구축하기 | by Stat

> Xcode 확장 플러그인 중에 몇 가지를 소개하고 있습니다. UML 그려주는 도구, 저장할 때마다 Swift Format을 다시 맞춰주는 도구 등이 눈에 띄네요 5 Useful Xcode Extensions to Make Work Easier | by Farhan Tanvir

> 예전 뉴스레터에 소개했던 일본 개발자가 만든 Kintsugi 를 사용해서 Xcode 프로젝트 파일 Git 충돌을 해결하는 과정에 대한 글입니다 Automating git conflict resolution in the Xcode project file with Kintsugi | Medium

> git 훅(hook)을 활용해서 커밋하기 직전에 SwiftLint를 실행하거나 스크립트로 가벼운 실수를 찾아내도록 도와주는 방법을 소개합니다 Easier Code Review With Pre-Commit Hooks

> iOS 시뮬레이터를 효과적으로 다루기 위해서 simctl 같은 명령을 활용하는 방법을 소개합니다 Become an iOS Simulator Master-Part 1 | by Batikan Sosun

> 스위프트 코드 가독성을 높이기 위한 SwiftLint 적용하는 방법이네요 Improving Swift Code Readability With SwiftLint | by Anurag Ajwani

> SwiftLee가 만든 RocketSim - Xcode 시뮬레이터 생산성 도구에 대한 소개입니다. 무료로 받을 수 있지만, 구독 모델입니다 RocketSim 7.0: Enhance your iOS Simulator - SwiftLee

> 여전히 팀에 누가 새로 들어오거나 인증서 갱신할 때마다 한 바탕 소동을 겪기도 하죠. 코드 인증, 프로비저닝 프로파일 관련된 개념 정리네요. 좀 더 사례랑 같이 소개했으면 하는 아쉬움이 있네요. iOS Code Signing and provisioning profiles | Medium

Working with custom xcconfigs and Cocoapods | by Nikhil Vinod

Build an iOS framework for distribution with Bazel | by Bodnar Dan

Converting an App to use Swift Package Manager | by Chris Thomas

Format On Save — Xcode / Swift | by Johannes Z.

Generating Xcodeproj’s with Tuist | by Anurag Ajwani


# 테스트
> 코어 블루투스 관련 기능을 개발하면서 TDD로 개발하는 흐름을 보여줍니다 TDD with CoreBluetooth | by Islom Babaev
📲회사에서 iOS 개발자들에게 홍보하고 싶은 내용이 있으신가요? 
news@letswift.kr 로 언제든지 문의해주세요. 
레츠스위프트 뉴스레터
http://letswift.kr
수신거부 Unsubscribe