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

 님을 위한 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다. 일요일 뉴스레터와 함께해요 👨‍👧‍👦
드디어 다음주에 WWDC 행사를 하는군요. 다들 공식 안내 메일을 받으셨겠지만, 벌써부터 기대가 됩니다. 밤을 세워서 라이브로 봐야할 지 고민이 되네요. 키노트 같이 보는 온라인 모임도 있던데, 레츠스위프트도 줌 미팅을 하나 열어볼까 합니다. 
그럼 지난 2주 동안 모인 소식들을 전해드립니다. 

누구나 함께하는 뉴스레터 저장소 👉
메일링 리스트 가입은 가입하기 링크 주변에 소개해주세요 🤩

🆕 WWDC 2020
이번 WWDC 2020은 애플 파크에 진행하지만 온라인으로 생중계되는 형식이라고 합니다. 키노트는 한국 시간으로 6월 23일 화요일 새벽 2시, 플랫폼 State of the Union 세션은 6월 23일 화요일 새벽 6시에 시작합니다. 

무엇보다 현장에 가야지만 참석할 수 있었던 1:1 개발자 Hands-on 랩도 예약제로 화상 미팅이 되려나 봅니다. 이 부분도 온라인으로 하는 장점이 되겠네요! 금주 6월 19일 금요일에는 새로워진 개발자 포럼으로 업데이트한다고 합니다. 

WWDC 2020를 앞두고 이런저런 루머가 많이 쏟아지고 있습니다. 아이패드 디자인과 유사한 신형 아이맥 루머도 있고, ARM 프로세서를 도입하는 맥이 나올꺼라는 소문도 있습니다. ARM 맥은 당장 출시는 아니고 개발자들에게 Fat Binary를 만들어서 스토어에 올릴 시간을 줄 것 같습니다. 2005년에 PowerPC에서 Intel 프로세서로 넘어갈 때와 비슷하지 않을까 예측하고 있습니다. 로제타를 기억하실 지 모르겠는데, macOS Catalyst가 있어서 UIKit을 권장하지는 않을까 싶기도 합니다. 

WWDC가 온라인으로 하다보니 참석 배지를 못 받는 게 아쉬워서 직접 디자인해서 킥스타터에 올린 사람이 있네요. 저도 하나 신청했습니다 🤟🏻

🇰🇷 국내 소식들
[WWDC 키노트 함께보기] 신청하세요
6월 23일 새벽 2시 키노트 함께보기에 신청하시면 1시쯤 줌 밋업 링크를 공유드리겠습니다. 기다리다 잠들수도 있으니까 같이 이런저런 얘기해요! 밋업 최대 인원은 선착순 100명으로 제한합니다. 

[노수진님 블로그] Xcode 트릭들 
try! swift 행사에 워크숍에 참석하고 나서, 유용하게 쓸 수 있는 트릭들을 정리해주셨습니다. Xcode가 숨겨진 기능들이 참 많은데, 그 중에서 가려운 부분을 살살 찾아주는 글입니다.
이미 개발하시면서 익숙한 내용이겠지만, 입문자들을 위한 한글 자료도 많아지면 좋은 것 같습니다. 
✈️ 해외 소식들

엉클 밥이 얘기하는 Clean 아키텍처를 구현하는 VIPER 형태에서 몇 가지 문제점을 해결하려고 VIP 구조를 고려해보자는 의견에서 시작합니다. 특히 Presenter 역할이 너무 커지는 경향이 있어서 그 부분을 개선해보고 있습니다. 
...라고 제목이 되어 있지만 조금 오버같기는 합니다 ㅎㅎ 검색 범위를 구체적으로 정하는 방법, 디버거 도구에서 브레이크 포인트를 활용하는 방법, Charles 를 소개하고 있습니다. 개인적으로는 Xcode 브레이크 포인트에 Debug Command를 활용하는 방법을 강추합니다. 그 밖에도 Visual Debugger 와 Debug Memory Graph 기능도 포함되면 좋겠네요. 이 부분은 블로그로 한 번 써봐야겠네요 :) 

저장소에 연결된 CI 도구가 아니라, GitHub에서 제공하는 Action으로 CI/CD 역할을 일부 대신할 수 있는 데 iOS 앱 아카이브하는 방법에 대해 설명한 자료입니다. 처음 보는 자료 같아서 공유합니다. 다만 GitHub Host 비용은 리눅스 10배라서 저렴하지 않군요! 

애니메이션을 구현하다보면 약간 중첩되거나 이전 애니메이션이 끝나면 다음 애니메이션이 이어지도록 구현할 때가 있습니다. 이렇게 꼬리물고 애니메이션을 구현할 때 KeyFrame 방식으로 바꿔보라는 설명을 해줍니다. 특히 타이밍을 짧게 해서 조금씩 중첩되는 애니메이션의 경우는 꼭 키프레임 방식이어야 합니다. 

 앱에 일부 기능을 동적으로 확장하기 위해서 이런저런 방식을 비교해줍니다. 예전에는 이런 경우 리젝 사유가 되기도 했는데, 크로스 플랫폼도 많아지고 요즘은 아주 쌔게(?) 리젝하지는 않는 것 같습니다. 물론 리뷰어마다 여전히 깐깐한 경우도 있습니다.  

정수 타입이나 문자열 타입처럼 리터럴 값을 선언하는 게 쉽도록 객체를 확장하는 방법을 소개합니다. 
리터럴 사용하는 방법이 간단해보이지만, 세부적으로 프로토콜은 모두 다르기 때문에 적절한 프로토콜을 선택해주는 게 필요합니다. 
var integer = 0 // ExpressibleByIntegerLiteral
var string = "Hello!" // ExpressibleByStringLiteral
var array = [0, 1, 2] // ExpressibleByArrayLiteral
var dictionary = ["Key": "Value"] // ExpressibleByDictionaryLiteral
var boolean = true // ExpressibleByBooleanLiteral
📌 기타

[기타 - 도구] Swift Package Index
iOS Dev Weekly 메일링 서비스를 운영하는 Dave Verwer가 기존 SPM 검색 엔진을 활용해서, 스위프트 패키지에 대한 정보를 모아놓은 인덱스 서비스를 오픈했네요. Vapor 4 기반으로 만들었다고 합니다. 

유명한 포인트프리 자료 중에서 테스트 기능을 강화해주는 오픈 소스입니다. 계층화된 뷰를 비교해주거나 Core Graphics Path도 비교할 수 있습니다. Any 타입으로 description만 비교할 수도 있고 스냅샷을 찍어서 이미지를 비교하기도 합니다. 테스트에 대한 사고의 틀을 열어줄 수 있습니다. 
🔜 홍보

국내에는 무료로 진행하는 iOS 교육 프로그램이 그렇게 많지 않아서 무척 아쉬운데요, 
네이버 커넥트 재단에서 진행하는 부스트캠프 2020에서 iOS 트랙을 모집하고 있습니다. 과정이 5개월 동안 하고 조금 길지만 온라인으로 진행한다고 합니다. 특히 다른 언어로 개발을 할 수 있지만, iOS 개발 경험이 없는 분들께 추천할 만 합니다. http://boostcamp.connect.or.kr
📲회사에서 iOS 개발자들에게 홍보하고 싶은 내용이 있으신가요? 
news@letswift.kr 로 언제든지 문의해주세요. 
레츠스위프트 뉴스레터
http://letswift.kr
수신거부 Unsubscribe