WWDC17 참관 후기

시작하기 전에

안녕하세요. LINE에서 iOS 개발을 하고 있는 이태정, 허혁입니다. 저희는 지난 6월 5일부터 6월 9일까지 미국 산호세 컨벤션 센터에서 열렸던 WWDC17에 대해 전해드리려고 합니다. WWDC는 캘리포니아에서 매년 6월 Apple이 개최하는 개발자들을 위한 축제인데요. 팀 쿡의 키노트를 시작으로 Apple의 새로운 소프트웨어와 기술을 가장 먼저 경험할 수 있는 100여 개의 세션과 200여 개의 Labs가 5일 동안 이어집니다. 작년까지 샌프란시스코에서 열렸던 WWDC는 15년 만에 실리콘 밸리의 심장이자 Apple Infinite Loop, Apple Park가 위치한 쿠퍼티노에서 인접한 산호세에서 개최되었습니다. 또한 올해는 총 75개국에서 5,300명의 개발자가 참석했다고 합니다. 혁신의 아이콘인 Apple이 올해는 어떤 놀랄 만한 일들을 발표했는지 공유하고자 합니다.

WWDC17

Keynote

팀 쿡의 “Good morning!” 인사와 함께 시작된 키노트에서는 tvOS를 시작으로 watchOS, macOS, iOS에 추가된 새롭고 다양한 기능에 대한 소개가 이어졌습니다.

올해 WWDC의 가장 큰 화두는 AR(augmented reality)과 ML(machine learning)이었습니다. ARKit을 이용하여 iOS 기기에서 즐길 수 있는 증강 현실 경험을 손쉽게 구축할 수 있게 했다고 합니다. 또 다른 새로운 프레임워크인 Core ML은 머신 러닝 기능을 활용해 더 똑똑한 앱을 만들 수 있게 해줍니다. 어렵게만 느껴졌던 AR과 머신 러닝을 Apple의 프레임워크를 이용하여 보다 쉽게 구현할 수 있다고 하니 이를 LINE에 어떻게 접목시킬지 상상하는 것만으로도 즐거웠습니다.

새로운 macOS의 이름은 High Sierra입니다. macOS High Sierra는 APFS(Apple File System)을 채용하여 새로운 수준의 보안성과 빠른 반응성을 자랑하는 아키텍처를 갖게 되었습니다. 또한 4K 동영상의 인기가 점점 높아지는 가운데 macOS High Sierra도 HEVC(High Efficiency Video Coding)를 채택하여 동영상을 기존 대비 최대 40% 더 압축할 수 있게 되었습니다. 덕분에 친구에게 사진이나 동영상을 전송하는 시간이 좀 더 짧아지게 되었습니다. 그리고 GPU의 성능을 한층 끌어올려 줄 Metal 2도 발표했습니다.

iOS 11은 iPad를 위한 OS라고 해도 과언이 아닐 정도로 iPad를 위한 많은 기능들이 추가되었습니다. 이미 macOS 사용자라면 익숙한 Dock과 앱 간의 정보 이동을 보다 쉽게 할 수 있는 Drag and Drop 기능 추가로 멀티태스킹 기능이 한층 강화되어 iPad의 큰 화면을 더 효율적으로 사용할 수 있게 되었습니다. 필기체 인식, 문서 스캔 등의 Apple Pencil을 위한 기능도 강화되었습니다. 이외에도 잠금 화면, 컨트롤 센터, 앱스토어의 디자인 변경, 라이브 포토의 편집, 업그레이드된 Siri, 개인 간 결제가 가능한 Apple Pay 등의 기능이 추가되었습니다.

올해의 키노트에서는 새로운 하드웨어 라인업에 대한 소개도 있었는데요. 특히 12월에 출시될 가정용 스피커 HomePod의 발표가 눈에 띄었습니다. 오디오에 있어서는 다른 인공지능 스피커와는 달리 음향을 최적화했다고 소개하였습니다. 이외에도 iMac Pro, 10.5인치 모델이 추가된 iPad Pro, AR/VR(virtual reality) 콘텐츠를 개발하고 테스트할 수 있도록 도와주는 External Graphics Development Kit을 소개하였습니다.

Platforms State of the Union

WWDC에서 사람들의 주목을 제일 많이 받는 것이 키노트라면 개발자에게 제일 관심이 가는 것이 바로 두 번째 전체 세션인 Platforms State of the Union이라고 할 수 있습니다. 그해 WWDC에서 소개할 모든 내용에 대해 한 번에 전달하는 세션으로 Keynote에서는 다루지 않았던 내용에 대해 소개하였습니다. 이 세션을 바탕으로 자세한 세션들을 어떻게 들을 수 있을지 미리 가늠해볼 수 있는 중요한 세션입니다.

올해 주제는 Technology and Refinements입니다. 지금까지 내놓은 기술들을 개선하는 데 목표를 둔 듯한 주제였습니다. 또한 이번에는 iOS, macOS, watchOS, tvOS 순으로 여러 가지 새 기능들을 내놓아 소프트웨어 개발자들의 관심을 받을 수 있었습니다.

64-bits Requirement

2014년 10월, Apple이 iOS App Store에서 32비트 앱을 퇴출시키기로 한 이후로 이제는 macOS App Store에서도 32비트 앱은 퇴출됩니다. 2018년 1월, 새로 등록된 앱들부터 적용되어서 2018년 6월에는 모든 앱들과 업데이트되는 앱들에 적용됩니다. High Sierra는 32비트 앱을 지원하는 마지막 macOS가 됩니다.

Swift Playgrounds 1.5, 2

코딩 교육용 앱에 대한 니즈에 부응하기 위해 Apple이 내놓은 앱 ‘Swift Playgrounds’에 관한 세션입니다. Swift Playgrounds 1.5에서는 드론과 같은 여러 장비를 제어하는 것이 가능해졌고, 추가적으로 몇 가지 기능 개선도 이루어졌습니다. Swift 4와 함께 더 많은 부분이 변경되는 Swift Playgrounds 2도 2017년 가을에 출시됩니다.

Xcode 9

새로워진 Source Editor와 함께 더 강력해지고 빨라진 Xcode의 새 버전도 소개되었습니다. 한동안 제대로 동작하는지 의심스러웠던 리팩토링 기능도 완전히 새롭게 돌아왔습니다. 작년 Swift 3 공개 당시 Swift 2.3도 함께 발표됐었는데요. Swift 4도 동일한 2트랙 전략으로 Swift 3.2가 함께 발표되었습니다. 특히 스트링 처리가 빨라지고, emoji로 촉발된 string 사이즈 문제가 정리되었으며, Codable이라는 새로운 직렬화 기능이 추가었습니다.

LINE과 같이 Objective-C와 Swift가 섞여 있고 코드 양도 많은 거대 프로젝트에서는 빌드 시간도 큰 문제인데요. 이를 40% 빠르게 만들었다고 합니다. 빨라진 Indexer도 Indexing 시간을 35배 빠르게 만들어서, 허비되었던 많은 시간들을 아낄 수 있게 되었습니다. 빌딩 시스템은 아예 새로 만들었는데 구조 개선으로 실행 속도가 빨라졌다고 합니다. 그리고, 예상치 못하게 GitHub 통합이 추가되었습니다. GitHub을 사용하고 있는 LINE에서도 어떻게 연동이 되는지 사용해보고 곧바로 Labs에 질문을 했습니다. 또한 View Debugger나 Sanitizer와 같은 디버깅 분석도 발전되었습니다. CI(continuous integration)를 위한 Xcode Server는 이제는 아예 Xcode에 통합되었습니다. 시뮬레이터도 개선되었는데 여러 개의 시뮬레이터를 실행시킬 수 있고 사이즈도 편하게 조정할 수 있는 방식으로 변경되었습니다.

마지막으로 피날레는 wireless development였는데, 케이블 연결 없이 앱을 빌드해서 디바이스에서 실행할 수 있게 되었다는 점인데요. 이제 책상 위에 어지럽게 엉켜 있던 케이블들과 작별할 수 있게 되었습니다. 올해 WWDC에서 가장 공들인 업데이트였습니다.

Drag and Drop

iOS 11에 추가된 Drag and Drop으로 사용자에게 새로운 UX를 제공할 수 있게 되었습니다. 처음과 다르게 Drag and Drop 관련 세션을 참석하고 난 결과, GestureRecognizer가 나왔을 때처럼 단순해 보이지만 실제로는 복잡한 기능을 깔끔한 API로 정리한 느낌을 받을 수 있었습니다. 아이폰 앱 내에서도 동작하기 때문에 LINE에서도 여러 곳에 활용할 수 있을 것 같아 많이 기대가 됩니다. 마치 Apple로부터 숙제를 받은 느낌으로 관련 세션들에 참석하였습니다.

UI Refinements

UI 영역에서는 large title display navigation bar와 dynamic types를 내놓았습니다. 다양해진 화면 크기에 적합한 방식으로 변경하고자 하는 것 같았습니다. 이전 버전의 iOS도 지원해야 하는 LINE에서는 어떻게 대응해야 할지 디자이너와 머리를 맞대고 고민을 하게 되었습니다.

Files App

iPad 전용 앱으로 생각했지만, iOS 용으로 출시된 Files App은 LINE에서도 연동을 한다면 앱에서 Microsoft Office 파일이나 PDF 파일의 문서를 쉽게 볼 수 있을 것 같아 사용자에게 좋은 경험을 줄 수 있을 것 같습니다.

What’s New iOS 11

이미지 한 장이 더 많은 것을 담을 수 있네요. iOS의 새로운 기능에 대해 예전보다는 많지 않은 숫자이지만, 기능은 더 강력한 것 같습니다.

iMessage

LINE message를 개발하는 입장이다 보니 항상 관심을 가지고 보게 되는 iMessage입니다. 이번에는 송금 기능이 추가되었는데 LINE에서도 충분히 참고할 수 있는 기능이라는 생각이 들었습니다.

SiriKit

LINE은 WWDC16 이후 Siri를 지원해왔습니다. 이번 업데이트로 Siri가 사용자의 관심분야와 의도를 더 자세하게 인지할 수 있어서 LINE에서도 Siri를 통해 이전보다 많은 정보를 참고할 수 있게 되었습니다.

Camera App

이제 카메라 앱에서도 직접 QR Code를 읽을 수 있고 이를 universal links를 통해서 앱을 열 수 있는데요. LINE은 QR Code 친구 추가도 지원하고 universal links도 지원하니 동작 여부만 확인해보면 될 것 같네요.

HEVC, HEIF

Apple에서는 새 OS를 통해 H.265인 HEVC(High Efficiency Video Coding)를 본격적으로 지원하기 시작합니다. ImageIO, Core Image, AVFoundation, PhotoKit에서도 오래된 JPEG를 대체하기 위해서 HEVC를 이용한 HEIF(High Efficiency Image File Format)를 지원합니다. 이미지와 동영상 사용이 많은 LINE에서도 도입을 검토해야 할 항목이네요.

Depth API

iPhone 7 Plus에서 지원하는, Portrait 촬영 시 사용하는 depth 기능을 API로 공개했습니다. AVCapture, AVDepthData, ImageIO, Core Image API를 통해서 접근할 수 있고, HEIF 포맷으로 저장했다가 다시 편집할 수 있도록 지원합니다. 커스텀 필터 적용 예를 보여줬는데 무언가를 적용해보고 싶은, 상상력을 자극하는 부분이었습니다.

Vision Framework

Machine learning framework인 CoreML을 기반으로 Vision Framework 기능들의 소개가 있었습니다. Face and Landmark Detection, Rectangle Detection, Text Detection, Barcode Detection, Object Tracking 등 다양한 기능을 제공합니다.

CoreML – Metal for Machine Learning

Accelerate framework와 MPS(Metal Performance Shaders)를 기반으로 Vision과 NLP(natural language processing)에서 사용하는 CoreML의 소개가 있었습니다. CPU와 GPU를 적절하게 섞어서 사용해 속도를 높이고 외부 open source machine learning framework를 지원해 편리하게 사용할 수 있습니다.

Metal 2

GPU 가속 라이브러리인 Metal이 버전 2로 업그레이드되었습니다. Apple API에서도 Metal을 이용해서 GPU를 활용하고 있다는데요. GPU-driven Rendering 방식으로 오버헤드를 제거함으로써 성능을 올렸다고 합니다. 또한 iOS와 macOS 간 API 형태를 맞추는 등 정제된 부분들이 많이 있었습니다.

VR

Apple은 세션 발표를 통해 이렇게 강력해진 Metal 2를 이용한 VR 개발을 강조했습니다. Stream VR를 지원하고 Unreal Engine과 Unity를 지원합니다. 특히 External GPU Support를 지원하는데요. 개발자를 위해 eGPU Developer Kit를 판매한다고 합니다. Apple 제품은 최초 출시 때가 제일 가격이 매력적이죠. 한 세트 구입하고 싶었습니다.

ARKit

Metal 2를 이용한 또 하나의 use case로 ARKit를 내놓았습니다. 지원 단말기는 제한적이기는 해도 visual-inertial odometry이나 scene understanding처럼 편리한 기능을 제공합니다. 이 기능을 이용해서 어떻게 사용자에게 편리한 경험을 줄 수 있을지 고민이 되는 시간이었습니다.

무엇이든 물어보세요! Labs

세션을 듣다보면 여러 가지 궁금증이 생기기 마련입니다. 평소에 개발할 때 해결하지 못했던 궁금증도 쌓이게 마련이죠. 이럴 때 찾아가는 곳이 바로 Labs인데요. 행사장 한편에 마련되어 있는 Labs는 Apple의 엔지니어와 직접 질의응답을 할 수 있는 공간입니다. 저희도 WWDC에 참가하기 전에 평소 궁금했던 점을 모아서 Labs를 방문했습니다. 문의했던 내용 중에 몇 가지를 소개하겠습니다.

  • 새로운 Xcode 9에 GitHub가 연동되었지만 SSH 주소를 사용할 때 custom port를 사용할 수 없는 문제가 있었습니다. Xcode Lab에서 운 좋게 GitHub 관련 세션을 발표했던 엔지니어에게 직접 질문을 할 수 있었습니다. Apple은 이미 이 문제를 알고 있었고, 추후 업데이트를 통해 개선할 예정이라고 합니다. 이번 WWDC17에서 Cocoa Lab에 이유와 해법을 문의해 본 결과, 버그였다는 대답과 iOS 11에서는 완전히 수정되었다는 답변을 받을 수 있었습니다.
  • 또 하나 UIApplicationDelegate.application(_:didFailToRegisterForRemoteNotificationsWithError:)라는 API가 있는데 Apple 엔지니어에게 언제 호출되는지 문의를 한 결과 자신도 내용은 알고 있는 API이지만 한 번도 호출되는 것을 본 적은 없다는 이야기를 해주었습니다.
  • 이번에 iTunes Connect에 새로이 도입될 Phased Release에 대해 궁금한 점이 있어서 관련 lab에 방문했었습니다. 이미 많은 사람들이 같은 주제로 문의하기 위해 방문해있었고, 자연스레 그룹토론과 같은 형태로 진행되었는데요. 주요 질문으로는 좀 더 세밀하게 Phased Release의 비율을 조절할 수 있는지, 그리고 특정 유저층을 선정하여 Phased Release를 진행할 수 있는지였습니다. 아쉽게도 현재로서는 모두 지원하지 않지만, 비슷한 의견을 많이 받았다면서 앞으로의 개선에 반영하겠다는 이야기를 들을 수 있었습니다.

Labs라는 자리를 통해 Apple의 엔지니어와 기술에 대해 심도있는 대화를 나눌 수 있는 좋은 기회가 있었습니다. 바로 해결하기 어려운 문제는 Apple 버그 리포트를 통해 이슈를 등록하여 전달하였고, 추가되었으면 하는 기능에 대해 엔지니어에게 제안도 했습니다. Labs는 주제별로 시간이 정해져 있고 굉장히 오래 기다려야 하는 경우도 많으므로 관심 있는 주제가 있다면 미리 확인하고 찾아가시길 바랍니다.

WWDC를 참가하는 개발자를 위한 안내서

천리 길도 WWDC 앱부터

WWDC에 당첨되었다면 가장 먼저 해야 할 일은 앱스토어에서 WWDC 앱을 다운로드하는 것입니다. WWDC 앱을 통해 세션 스케줄, 지도, 각종 공지사항 및 이벤트 소식을 받을 수 있고, 세션이 끝난 이후에는 다시 보기도 가능합니다. 키노트를 제외한 대부분의 세션은 키노트가 끝나기 전까지 발표되지 않습니다. 그래서 스케줄이 발표되기 전에 올해는 어떤 세션이 있을지 예상해보는 것도 재밌었습니다.

어서 와- 산호세는 처음이지? Check-In

WWDC의 시작은 월요일이지만 체크인은 전날인 일요일 오전 9시부터 가능합니다. 월요일의 체크인은 오전 7시부터이니 혹시라도 키노트를 앞자리에서 보기 위해 새벽부터 대기하실 예정이라면 전날 미리 체크인을 해두셔야 한다는 점 잊지마세요!

체크인할 때 Apple 스태프의 격렬한 환영과 함께 행사 내내 소지하여야 하는 카드와 성인 인증을 위한 팔찌를 받을 수 있었습니다. 이번 행사에서는 연도가 크게 쓰여 있던 기존의 재켓이 아닌 멋있는 리바이스 데님 재켓과 국가 핀 + 랜덤 핀 6종을 선물로 주었습니다. 또한 이번 행사 기간 동안 여러 곳에서 불시에 다양한 핀을 나눠주는 이벤트가 있어서 모으는 재미가 쏠쏠했습니다.

일찍 일어나는 개발자가 앞자리를 사수한다. 키노트 대기

키노트를 앞자리에서 보기 위해 새벽 4시에 호텔을 나섰는데도 이미 많은 개발자들이 줄을 서 있었습니다. 간단한 소지품 검사 후 행사 스태프의 환호와 박수를 받으며 행사장 건물로 입장했습니다. 행사장에 입장하자마자 모두들 좋은 자리를 맡기 위해 바삐 움직이기 시작하는데요. 너무 자리를 고르다 보면 정작 자리를 모두 뺏겨버리는 불상사가 생길 수 있으니 적당한 선에서 자리를 빠르게 선점하는 것이 좋습니다.

잠시 쉬었다 가셔도 좋습니다. 휴식 공간과 Company store

긴 세션에 몸도 마음도 머리도 지쳤다면 행사장 곳곳에 마련된 휴식 공간에서 바닥난 체력을 회복할 수 있습니다. 올해는 산호세 컨벤션 센터 전체를 사용했던 만큼 휴식 공간의 규모도 매우 컸는데요. 푹신한 소파와 beta 버전을 빠르게 설치할 수 있는 hub 테이블이 넉넉히 마련되어 언제든지 사용할 수 있었습니다. 또한 간식 시간에는 커피와 과자, 과일 등을 제공해주어서 틈틈이 허기진 배를 달랠 수 있었습니다.

휴식 공간 한편에 Company store도 마련되어 있었는데요. Apple 로고가 새겨진 티셔츠, 재켓, 볼펜 등의 상품을 구매할 수 있었습니다. 혹시라도 다음 세션까지 시간이 남는다면 꼭 둘러보세요!

마치며

각국에서 모인 5,000여 명의 개발자들이 Apple 생태계 안에서 오직 개발에 대해서만 생각할 수 있었던 꿈같은 일주일이었습니다. 행사에 참여한 모두가 기술에 대해 적극적으로 토론하고 진지하게 탐구하는 모습에 큰 자극을 받았고, Apple이 내년에는 또 어떤 새로운 기술을 발표할지 기대가 되었습니다. LINE에서도 많은 개발자들이 세션과 샘플 코드를 참고하여 여러 가지 시도를 하고 있는데요. 빠른 시일 내에 멋지고 신선한 기능으로 사용자에게 놀라움을 선사해 드릴 수 있도록 노력하겠습니다!

출처 및 레퍼런스