Swift playground cover

Playground 100% 활용하기

Playground 100% 활용하기라는 주제로 지난 Swift Korea Meetup에서 발표된 내용입니다.


소개

Playground에 대해 얕고 다양하게 말씀드리려고 합니다. Xcode의 Playground를 많이 써보셨을 텐데요. DateFormatter부터 커스텀 컨트롤러를 만드는 것까지 간단하고 빠르게 확인할 수 있습니다. 특히 에디터에 코드를 적으면 오른쪽의 사이드바에서 바로 확인할 수 있다는 점이 아주 편리합니다. 작년에는 iPad 사용자들의 숙원이었던 Swift Playground가 출시돼서 사용할 수 있게 됐고, 아직은 불안전하지만 언젠가는 iPad에서 온전한 iPhone 앱 개발을 할 수 있다는 희망을 품을 수 있게 됐습니다.

여기서는 그동안 잘 몰랐던 Playground의 기능과 활용법을 중점으로 말씀드리겠습니다. 이후로는 편의상 MacOS에서 사용하는 Playground를 Xcode Playground, iPad에서 사용하는 Playground를 Swift Playground라고 부르겠습니다.

Xcode Playground 기본 사용법

이런 개발 뉴스를 더 만나보세요

Playground를 열어보면 왼쪽 코드 에디터에 코드를 넣을 수 있고 오른쪽 사이드바에서 프리뷰로 확인할 수 있습니다. 단계별로 확인하거나 버튼을 눌러서 그 값을 코드 사이에 넣어서 볼 수도 있습니다.

Playground 코드가 길어지면 Command + 0 단축키로 파일 내비게이터를 열고 소스 파일에서 별도의 Swift 파일을 볼 수도 있습니다.

이렇게 연 경우라면 public으로 꼭 선언해줘야 메인 파일에서 접근할 수 있습니다. 또한 Resources 폴더에는 JPG나 PNG 파일을 넣을 수 있는데 이 경우 이미지 리터럴로 옵셔널 처리 없이 바로 사용할 수 있고, 컬러 리터럴이나 Hex Color도 사용할 수 있습니다.

라이브뷰

사이드바에서 보는 뷰는 클릭이 안 되거나 애니메이션을 보기 좀 불편한데, 이 경우 라이브뷰를 사용하면 편합니다. 라이브뷰는 어시스텐트 에디터를 열어서 타임라인을 선택하면 오른쪽에 사이드바 대신 나타납니다.

사용을 위해서는 import PlaygroundSupport 추가가 필요하며 코드 맨 아래처럼 PlaygroundPage를 설정해줘야 합니다. 이렇게 사용하면 애니메이션과 클릭 같은 상호작용이 가능해집니다.

외부 라이브러리 테스트

기본적으로 Playground에서는 외부 라이브러리를 테스트할 수 없지만, 이를 가능하게 하는 커맨드라인 명령어가 있습니다.

gem install cocoapods-playgrounds
pod playgrounds Alamofire

먼저 gem으로 cocoapods-playgrounds를 다운로드하고 pod playgrounds 라이브러리명을 실행하면 Playground가 생성됩니다. 여러 개의 라이브러리를 넣고 싶으면 쉼표로 구분할 수 있습니다.

Cocoapods로 만든 프로젝트처럼 워크스페이스가 생기고 Playground가 포함된 프로젝트가 생기므로 import Alamofire 등의 형식으로 라이브러리를 불러올 수 있습니다. 단, 위 그림의 코드처럼 async 코드를 넣으면 Playground가 비동기 액션이 실행되기 전에 끝나버리므로 PlaygroundPage.current.needsIndefiniteExcution = true를 설정해주셔야 합니다.

마크다운

마크다운 형식으로 글을 작성한 후 맨 위의 메뉴에서 raw markup과 markup 전환을 선택하면 markup 형식의 문서를 볼 수 있습니다.

Swift Playground 기본 사용법

이제 iPad의 Swift Playground를 사용해보겠습니다. 실제 기기에서 동작하므로 Xcode Playground와는 다른 장단점이 있습니다. 먼저 라이브뷰를 기본으로 지원하고, 터치 상호작용도 좀 더 자연스러우며, 포토 라이브러리에서 바로 사진을 가져올 수도 있습니다.

또한 수치를 입력하는 도구도 반원 모양의 다이얼 컨트롤을 제공하므로 좀 더 쉽게 설정할 수 있습니다.

키보드 위에 자동완성이 나타나는 것도 편리합니다. iPad Pro가 아니어서 스마트 키보드를 사용하지 못하더라도 키보드 위에 추가 기호가 나타나므로 드래그로 입력할 수 있습니다.

라이브러리

라이브러리를 설정하는 방법은 Xcode와 같지만 UIView이므로 UIAlertController, UIActivityViewController 등을 사용할 수 없습니다.

이런 경우 UIWindow를 생성해서 rootViewController로 설정한 다음 makeKeyAndVisible을 실행하고 라이브뷰에 window를 넣어줍니다.

이렇게 설정하면 버튼을 눌러서 Alert를 띄우거나 ImagePicker를 설정할 수도 있습니다. UIActivityViewController도 정상적으로 작동합니다.

Playground 성능 향상

iPad Pro가 거의 맥북에 필적하는 성능을 가지도 있지만, Playground는 매우 느리게 실행되므로 답답한 경우가 많습니다. 다행히 Playground Book을 사용해서 성능을 향상할 수 있습니다.

Playground book은 폴더 안에 여러 개의 페이지가 들어있는 형식인데, book을 사용하면 Manifest.plist에서 PlaygroundLoggingMode를 disable 할 수 있습니다. 이 항목 설정만으로 성능이 상당히 빨라집니다.

단, 디버깅할 수 있는 사이드바가 사라지므로 성능이 향상되는 대신 디버깅이 불가능해지며, Playground book은 iPad에서 바로 만들 수 없고 Mac에서 만들어서 iPad로 넣는 방법을 사용해야 합니다. 좀 더 편하게 활용하려면 만들어진 템플릿을 iPad로 넣고 복제해서 사용하거나, iCloud 동기화로 MacOS에서 iPad로 동기화하는 방법을 사용하는 것이 좋습니다.

Xcode Playground와 병행 활용

Xcode의 Playground와 iPad의 Playground는 차이점이 있으므로 약간의 처리가 필요합니다.

예를 들어 bundleIdentifier를 사용해서 MacOS인지 iOS인지 확인한 다음 뷰를 다르게 넣을 수 있습니다.

재미있는 사용 예시

왼쪽 그림처럼 floating 키보드를 순정 iOS의 Playground에서 사용할 수 있습니다. 또한, 오른쪽처럼 iMessage의 손글씨 모드를 Swift Playground에서 접근해서 라이브뷰에 띄울 수도 있습니다.

정리

이번 세션에서 소개한 Playground의 흥미로운 기능들이 개발자분들께 도움이 되길 바랍니다.


본 영상과 글은 Swift Korea Meetup의 비디오 스폰서인 Realm에서 제공합니다. 모바일 개발자가 더 나은 앱을 더 빠르게 만들도록 돕는 Realm 모바일 데이터베이스Realm 모바일 플랫폼을 통해 핵심 로직에 집중하고 개발 효율을 높여 보세요! 공식 문서에서 단 몇 분 만에 시작할 수 있습니다. 또한 Realm 홈페이지에서는 모바일 개발자를 위한 다양한 최신 기술 뉴스와 튜토리얼을 제공하고 있으니 즐겨찾기하고 자주 들러 주세요!

다음: Realm Swift를 사용하면 iOS 앱 모델 레이어를 효과적으로 작성할 수 있습니다.

General link arrow white

컨텐츠에 대하여

이 컨텐츠는 저자의 허가 하에 이곳에서 공유합니다.

구범모

2012년부터 iOS 개발을 시작한 iOS 개발자입니다. 취미로 사진을 시작하면서 사진 장비 덕질과 애플 장비 덕질을 동시에 하게돼 통장이 매우 곤란해하고 있습니다. 집에서 거북이 두 마리를 키웁니다. 🐢🐢

4 design patterns for a RESTless mobile integration »

close