iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제14호 2020년 8월 23일

 님을 위한 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다. 일요일 뉴스레터와 함께해요 👨‍👧‍👦
8월 시작과 함께 내리던 비는 그쳤는데, 요즘 너무 위험한 시기를 지나고 있습니다. 저도 인적이 드문 일요일 아침에 사무실에 들려서 짐을 좀 챙겨왔습니다. 이대로 얼마나 갖혀있어야 할까요 ㅜㅜ 지난 2주 동안 iOS14와 iPadOS, macOS, watchOS 등 다섯 번째 베타가  나왔고, 다른 소식들을 합쳐서 전해드립니다. 

누구나 함께하는 뉴스레터 저장소 👉
메일링 리스트 가입은 가입하기 링크 주변에 소개해주세요 🤩
⌘ 애플 소식
최근 애플 관련 소송이 몇 건 있었는데 그 중에 하나는 포트나이트를 서비스하고 있는 에픽 게임즈와 대결(?)이 이슈가 됐습니다. 포트나이트에 기존 인앱 구매와 함께 자체 아이템을 더 저렴하게 올렸던 것을 시작으로 퇴출, 개발자 계정 삭제, 소송 등으로 이어지고 있죠. 구글도 플레이 스토어 수수료를 30%로 올리려고 하고 있는 시점에 에픽 게임즈의 선전 포고를 응원하는 개발사들도 있을 겁니다. 

위 사진은 에픽 게임즈가 1984년 당시 빅브라더 IBM에 대항하는 애플 컴퓨터 광고를 페러디한 광고 영상입니다. 관련 기사 링크 | 광고 유투브 보기 이제는 IBM 대신 애플이 빅브라더가 된걸까요? 시총 2조원 최소 회사가 됐으니 그렇게 볼수도 있겠죠. 
심각하게 보도되지는 않았지만, Xcode 프로젝트에 포함되서 악성 코드를 배포하는 사례가 또 발견되었다는 소식이 있었습니다. 악성 코드가 설치되면 브라우저를 공격해서 사용자 데이터를 가로챈다고 하네요. 관련 기사는 여기
이와중에 애플이 배 모양 과일로고를 가진 prepear라는 작은 회사를 고소해서 또 이슈가 됐습니다. 물론 과거에 애플 스튜디오나 pear computer 라는 회사들과 소송을 했던 아픈 기억(?)도 있긴하지만이번 소송은 좀 너무한 게 아닌가 싶기도 합니다. 애플 법무팀이 열심히네요 😎

🇰🇷 국내 소식들
[뱅크샐러드 기술블로그] Banksalad Product Language를 소개합니다
뱅크샐러드 기술블로그에서 iOS 관련 내용을 올려주셨습니다. 실제 내용은 iOS 뿐만 아니라 뱅크샐러드 기획자, 디자니어와 앱 개발자들까지 모두가 제품을 동일하게 이해하기 위한 Product Language를 정의한 배경부터 개발 과정까지 설명하고 있습니다. 토스도 비슷한 시도가 있었고 레츠스위프트에서 발표도 해주셨었죠. 다양한 사례가 나오는 것은 매우 긍정적입니다. 

몇 달전에 영문으로 올라왔던 라인 iOS 앱 빌드 속도 개선에 대한 기술 블로그가 한글로 다시 올라왔습니다. 번역해달라고 요청했더니 진짜 해주셨네요. Bazel까지 써야하냐 이렇게 얘기하실 분도 계시겠지만, 20-30명 개발자가 하나의 제품에 기여하고 있고, 140만줄 소스 코드를 빌드하는 속도가 1시간씩 걸리는 것은 개발자들에게 힘겨운 일입니다. 회사에는 빌드 전용 장비가 있지만 요즘처럼 재택하는 경우에 로컬에서 빌드조차 못한다는 회사도 있습니다. 결국 핵심은 모듈화와 의존성 관리일텐데 레거시가 거대할 수록 모듈화를 하기 어려운 팀도 꽤 많습니다.

부지런하신 zedd님이 UILabel에서 새로운 LineBreakStrategy를 테스트해보셨다고 하네요. 바로바로 hangulWordPriority 라는 속성 이름만 보고 한글이 잘 될꺼라고 유추하셨다고 하네요. 실제 개발자 문서 링크는 여기서 확인하세요.
✈️ 해외 소식들

사소한 변화들을 하나씩 코드 수준에서 비교해줘서 깔끔합니다 :) 

여전히 탈옥은 앱 환경을 위협하고 있죠. iOS14에서 앱을 보호하기 위한 방법들을 소개하고 있습니다. 

[해외 - 베터프로그래밍] 테스트 관련 글들
이전에도 테스트 관련 내용을 소개해드렸는데 테스트 관련해서 몇 개를 같이 소개드립니다.
간단하게 DI 방식 소개와 함께 테스트 방법을 설명해주고 있습니다. 
구조적으로 테스트 가능한 코드를 작성하는 것도 중요한데, Mocking 모듈을 만들어서 테스트하는 방법을 솔명해줍니다. 

[해외 - 베터프로그래밍] iOS14에서 Location 관련 변경사항
CoreLocation에서 바뀐 내용들을 정리해주고 있습니다. 만약 CoreLocation을 사용하는 앱이라면 iOS14 출시하기 전에 대비할 수 있도록 도움이 되는 정보입니다. 

[해외 - 베터프로그래밍] SF Symbol2 변경사항
아이콘 개수도 1900개에서 2400개 수준으로 늘어나고 150개 정도는 컬러를 지원하는 SF Symbol2 변경 사항에 대해 정리한 글입니다. 특히 애플 로고가 생겼는데, 애플로 로그인하기 기능에서만 사용할 수 있다네요.

[해외 - 베터프로그래밍] 핫한 스위프트 extension 24개
내용에는 코드가 깔끔해지는 익스텐션이라고 소개하고 있습니다. 가볍게 살펴보고 적용하기 좋을 것 같네요.

조금 길고 복잡해보이지만 정리가 잘 되서 따라하기 어렵지 않을 것 같습니다. iOS 14와 macOS 11부터 유니터버설 XCFramwork 만들 상황이 좀 더 생길 것 같은데 대비해서 찜해놓아야 할 것 같습니다. 

[해외 블로그] CryptoKit 없이 iOS에서 간단하게 파일 암호화하는 방법
얼핏 봤을 때는 CryptoKit으로 암호화하는 줄 알았는데, 그게 아니라 하드웨어에 있는 The Secure Enclave 기능을 활용해서 파일을 보호하는 방법을 소개하고 있습니다. 

셀 설정을 한꺼번에 지정하는 ConfigurationState 방식에 대해 소개하고 있습니다. 아직 테이블뷰는 버린게 아닌가 봅니다!?

백그라운드 작업은 여전히 제약사항이 많아서 불편하죠. 백그라운드에서 앱을 갱신하기 위한 작업을 만들 수 있도록 알려줍니다. 

이 글은 비동기 패턴을 구현하기 위한 방법을 설명하는 두 번째 글입니다. 이전에 콜백 지옥을 Promise형태로 바꾸는 글이 있었나봅니다. Part1 바로가기이 글에서 소개하는 Promise 형태 오픈소스 라이브러리는 HydraAsyncPromiseKitGoogle/PromisesSwiftTask 등이 있습니다. SwiftNIO에 구현된 Future를 기반으로 Swift에 Promise와 async/await가 공식 지원되는 날이 오길 희망해봅니다. 
이런 생각을 해본 적 있었는데 진짜 만든 사람이 있군요 ㅎㅎ 
Xcode로 빌드한 전체 시간, 평균 시간, 일별 평균 시간 등을 보여주는 앱입니다. 오픈 소스로 되어 있어서 깃헙 저장소에서 다운로드 받아서 설치하면 된다고 합니다. 
📲회사에서 iOS 개발자들에게 홍보하고 싶은 내용이 있으신가요? 
news@letswift.kr 로 언제든지 문의해주세요. 
레츠스위프트 뉴스레터
http://letswift.kr
수신거부 Unsubscribe