2. Xcode란?
Xcode는 앞으로 우리가 인터넷 브라우저만큼이나 자유자재로 다루어야 할 툴로서, iOS와 macOS용 앱을 개발할 수 있도록 애플에서 제공하는 IDE이다. ‘엑스코드’라고 읽으며, 맥북 등 애플 컴퓨터의 운영체제인 맥 OS에서만 실행되는 애플리케이션이다. 우리는 이 Xcode를 이용하여 오브젝티브-C나 스위프트를 작성하고, 애플리케이션을 개발한다.
일반적으로 C 기반의 코드를 컴파일할 때 많이 사용되는 GCC라는 컴파일러가 있는데, Xcode는 GCC의 성능을 더욱 개선한 LLVM을 메인 컴파일러로 사용한다. 오브젝티브-C나 스위프트 코드 모두 실행 파일로 만들어질 때에는 LLVM 컴파일러에 의해 컴파일된다. Xcode가 공식적으로 지원하는 언어에는 C, C++, 오브젝티브-C, 스위프트, 자바, 파이썬, 루비 등이 있으며, 플러그인을 사용하면 파스칼, C#, 펄 등의 언어도 지원 가능하다.
Xcode는 무척 방대한 역사를 자랑하는 애플리케이션이다. Xcode의 시작은 맥 OS의 시작과 거의 일치하는데, 맥 OS가 시작된 해가 2003년도이므로, Xcode는 11년 정도의 역사를 가지고 있다. 이것만으로도 충분히 오래되었다고 할 수 있지만, 따지고 보면 맥 OS의 전신이라고 할 수 있는 NeXTSTEP 운영체제 시절부터 Xcode는 이미 프로젝트 빌더(Project Builder)라는 이름으로 제공되고 있었기 때문에 이를 감안한다면 Xcode는 1988년에 출시된, 무료 26년의 유구한 역사를 가지는 IDE가 되는 셈이다.
프로젝트 빌더가 Xcode로 이름이 바뀌고 제로링크, 분산 빌드 옵션, 코드 센스 인덱싱 등을 지원하기 시작하면서, Xcode는 명실상부하게 맥 OS의 공식 개발환경이 되었다. 이 과정에서 과거 카본 기반으로 작성되었던 SDK의 API들이 모두 오브젝티브-C 언어와 코코아 프레임워크(Cocoa Framework)로 재작성되기도 했다. 그 이후로 시간이 흐르면서 카본 프레임워크의 위치를 코코아 프레임워크가 잠식해 나갔다(현재는 코코아 프레임워크와, 아룰 가번욿 iOS나 watchOSㄹㄹ 지원하는 코코아 터치 프레임워크를 스위프트 언어로 재작성하는 작업이 다시 이루어졌다).
Xcode에서 아이폰용 앱을 만들 수 있게 된 것은 Xcode 3 버전부터이다. 예전부터 맥 OS를 써왔던 사람이라면 경험해보았을 OS X Leopard의 출시와 함께 공개되었다(맥북이나 아이맥 등 데스크톱용 애플 기기의 운영체제에는 버전에 따른 별칭이 있는데, Leopard는 10.5버전에 붙은 이름이다). 이때 애플의 메인 컴파일러인 LLVM도 함께 덧붙여졌다.
Xcode 4는 기존 버전에 비해 굉장히 많은 면에서 변신이 일어났다. 현재의 Xcode 외형과 비슷한 모습을 가지게 된 것도 Xcode 4부터이며, 기존에는 별도의 독립 애플리케이션 형태였던 인터페이스 빌더가 이 버전부터 Xcode 내부에 모듈 형태로 탑재됨에 따라 Xcode 하나만으로 앱을 개발할 수 있게 되었다. 동시에, 객체의 참조 카운팅을 컴파일러에서 스스로 처리하는 ARC 기능이 추가되기도 하였다.
Xcode 4.2버전에서 Xcode는 완벽하게 단일 애플리케이션으로 통합되었다. 이전에는 앱스토어에서 Xcode를 직접 내려받는 것이 아니라 Xcode 설치 프로그램을 내려받은 후 이를 실행하면 Xcode를 내려받는 방식이었지만, 이 버전부터 Xcode를 직접 내려받게 되었다. 사용자는 애플리케이션을 내려받은 후 실행하면 끝이다. 설치에 있어서도 조금 더 간편해진 셈이다. 이를 통해 비로소 Xcode는 하나의 완전한 앱 개발 환경을 구성할 수 있게 되었다.
iOS 7의 발표와 함께 공대된 Xcode 5는 iOS 7의 달라진 UI를 지원하기 위해 기존 버전의 UI를 호환성 있게 가져가는 데에 주력했다. 내장된 인터페이스 빌더에 많은 변화가 있었는데, 개발 UI 화면 단위로 하나씩만을 다루던 nib 파일 기반의 인터페이스 빌더가 스토리보드(storyboard) 파일 형식의 통합 인터페이스 빌더 위주로 대체된 것이 가장 큰 이슈라고 할 수 있다. 스토리보드 형식은 화면 인터페이스를 설계할 때 여러 개의 화면을 하나의 스토리보드 파일에 모아 다룸으로써 화면 간의 연결 관계나 흐름을 쉽게 파악할 수 있도록 지원하는 형식으로, Xcode 4 버전부터 공개되었지만 본격적으로 사용하게 된 것은 Xcode 5 버전부터이다.
이후 스위프트와 함께 공개된 Xcode 6은 외견상 큰 변화는 없었다. 하지만 Xcode가 스위프트를 지원하기 시작하면서 실시간으로 스위프트 코드를 작성하고 결과를 확인할 수 있도록 해주는 플레이그라운드가 추가된 점은 특기할 만한 사항이다.
다음 해인 2015년에 발표된 Xcode 7은 스위프트 2를 지원할 뿐만 아니라, 맥 OS X, iOS, watchOS용 앱을 모두 만들 수 있는 더욱 확장된 개발 환경을 제공했다. 전체적인 외관이 조금 더 다듬어졌고, 세련된 UI를 가지게 된 것은 말할 필요도 없다.
2016년에 발표된 Xcode 8에서 외관상 뚜렷한 변화는 없었다. 하지만 Xcode 7에서 스토리보드의 확대 축소가 제한적이었던 것과 달리 Xocde 8에서는 여러 단계로 스토리보드를 축소 또는 확대해서 작업할 수 있게 되었다. 또한 스토리보드 축소 시 화면 UI에 대한 편집 작업이 허용되지 않았던 과거 버전에서 발전하여 화면이 축소된 상태에서도 필요한 UI 편집 작업을 얼마든지 수행할 수 있게 됨으로써 화면 설계 작업이 훨씬 편리해졌다. 개인적으로 이같은 스토리보드와 기능 변화가 제일 달콤하게 느껴지는 부분이다.
2017년에는 Swift 4, iOS 11의 발표에 맞추어 Xocde 9이 공개되었다. 이 버전 역시 Xcode의 외관상 변화는 크지 않지만, 대신 함께 제공되는 iOS 시뮬레이터가 드라마틱하게 변신했다는 점을 주목할 만하다. 이전 버전까지의 시뮬레이터는 단순히 화면과 기능만 테스트할 수 있는 밋밋한 일반 창 형태에 불과했던 것이, Xcode 9에서는 아이폰 형태를 그대로 본딴 모습으로 재탄생했을 뿐만 아니라 이전 버전에서는 단축키로 해결해야만 했던 홈버튼도 부활했다. 게다가 이제는 임의대로 시뮬레이터 크기를 늘리고 줄일 수도 있게 되었다. 뿐만 아니라, iPhone 외에 watchOS, tvOS용 시뮬레이터도 동시에 실행하여 결과를 확인할 수 있게 되었다.
이외에도 Xcode 9에서 생긴 몇 가지 변화를 꼽아본다면 깃허브 연동을 위한 소스 컨트롤 기능이 내비게이터 패널에 추가되었다는 점, 오토 레이아웃 설정 시 화면상의 변화를 바로바로 확인 할 수 있게 되었다는 점, 오토 레이아웃 설정 시 화면상의 변화를 바로바로 확인 할 수 있게 되었다는 점, Swift 3 코드의 호환성 유지를 위한 컴파일러 버전 설정이 추가되었다는 점 등을 들 수 있을 것 같다. 전체적으로 Xcode 9은 Swift 3와 Swift 4 버전간의 호환성을 유지하는 데에 주력한 면이 크다.
이처럼 해마다 버전이 업그레이드되면서 Xcode는 그 형태를 다양하게 바꾸어나가고 있다. 주의할 것은, 최신 iOS 버전을 기준으로 개발 작업을 진행하기 위해서는 항상 최신 벚번의 Xcode를 사용해야 한다는 점이다. 일부 IDE의 경우 최신 버전의 언어 문법을 사용하기 위해서는 플러그인 정도만 추가해주기도 하지만, Xcode는 새 버저의 전체 업데이트를 통해서만 최신 iOS를 지원하는 앱을 제작할 수 있다. 따라서 앱을 개발할 때에는 Xcode의 버전 업데이트 여부를 항상 신경 써야 한다(사실 방법이 있지만 나중에 소개하도록 한다).
스위프트 언어를 지원하기 시작하는 Xcode 버전은 6부터지만 여기서 다루는 스위프트 4 문법은 Xcode 9 버전부터 지원한다. 앱스토어를 통해 Xcode 정식 버전을 설치하는 방법과 개발자 사이트를 통해 베타 버전을 설치하는 방법 모두를 알아보자.
Leave a comment