프로그래밍 환경에서 툴(Tool)이 차지하는 비중은 상당하다. 얼마나 빠르고 쉽게 개발할 수 있는지에 대한 것이 툴에 달려있기 때문이다. 현대 프로그래밍은 많은 부분이 툴에 의존하는 경향이 이쓰며 툴과 프로그래밍 개발이 뗄 수 없는 관계에 들어섰다는 증거이기도 하다.
최근 프로그래밍 언어의 대부분은 개발 생산성 향상을 위해 여러 기능이 집약된 전용 개발 툴을 사용하거나 유명한 개발 툴에 플러그인 방식으로 사용할 수 있도록 컴포넌트를 제공한다. 이러한 도구들은 개발을 편하게 만들어주고 개발에 필요한 것들을 해결할 수 있도록 올인원 형식으로 구성되어 있어 여러 개의 툴을 사용할 필요가 없다.
하지만 과거에는 하나의 소프트웨어를 완성하기 위해 용도별로 여러 툴을 바꿔가며 사용하는 과정을 여러 번 반복해야 했다. 개발 과정이 진행되는 동안 소스 코딩과 컴파일, 실행, 디버깅을 위해 여러 관련 툴을 번갈아 사용해야 하다보니 번거롭고 이 과정에서 오류가 발생하는 경우가 생겨 개발 생산성이 낮아졌다. 하드웨어의 생산성을 소프트웨어의 발전 속도가 따라가지 못하게 되면서 소프트웨어의 위기 상황이 생기고 일르 극복하기 위해 소프트웨어 개발 생산성 향상에 대한 방법이 모색되기 시작했다
개발 생산성 향상을 위한 방법론적 시작은 소스 코드를 작성하는 편집기에서 컴파일러를 연동할 수 있는 단순한 기능을 제공하는 것이었다. 이 정도에 만족하는 사람도 있었지만 만족하지 못하는 사람도 많아 소스 코딩과 컴파일, 실행, 디버깅, 배포 환경 등 여러 가지 툴을 하나로 갖춘 통합 개발 도구의 필요이 높아져갔다.
이 과정에서 윈도우, 맥, 리눅스, iOS, 안드로이드 등 다양한 운영체제가 등장하면서 소프트웨어 개발 시 UI 작업을 쉽게 할 수 있는 도구까지 만들어졌고 시간이 흐르면서 이러한 그래픽 기반의 도구 역시 통합 개발 도구에 흡수되어 갔다. 이렇듯 다양한 툴들이 통합된 결과로 소스 코드 작성부터 디버깅, UI, 데이터 설계, 자동 완성 기능 등의 기능이 포함된 통합 개발 환경(Integrated Development Environment, IDE)이 탄생했다.
통합 개발 환경은 하나의 프로그램 안에서 개발과 관련된 모든 작업을 처리할 수 있도록 통합적으로 개발 환경을 제공해주는 툴로서, 개발 생산성을 극대화 할 수 있다는 장점이 있다. 현대 프로그래밍에서 통합 개발 환경이 소프트웨어 개발에 미치는 영향이 지대해져 이제는 통합 개발 환경 없이 단순히 SDK만으로 상용 소프트웨어를 만드는 것이 거의 불가능해졌다.
대중적이며 주류인 언어는 대부분 완성도 높은 IDE를 하나 이상 가지고 있다.
- 자바 플랫폼 계열- 이클립스 (Eclipse)
- MS 계열 - 비주얼 스튜디오 (Visual Studiio)
- Mac 계열 - 엑스코드 (Xcode)
.
.
.
Xcode는 Apple 플랫폼용 앱을 개발할 수 있도록 Apple에서 제공하는 IDE로, MacOS에서만 실행되는 애플리케이션이다.
Xcode는 C언어 기반의 표준 컴파일러인 GCC의 성능을 개선한 LLVM을 메인 컴파일러로 사용하며 Objective-C와 스위프트 모드 LLVM 컴파일러에 의해 컴파일된다.
Xcode가 공식적으로 지원하는 언어
C언어, C++, Objective-C, Swift, Java, Python, Ruby
(플러그인 사용 경우 C#, Peal 등의 언어도 지원 가능)
Xcode는 MacOS 시작과 함께 긴 역사를 가지고 있다. 그리고 MacOS의 전신이라고 할 수 있는 NeXTSTEP 운영체제 시절부터 이미 Xcode가 프로젝트 빌더(Project Builder)라는 이름으로 제공되고 있었기 때문에 애플과 함께 유구한 역사를 가지고 있는 IDE이다. 프로젝트 빌더가 Xcode로 이름이 바뀌고 제로링크, 분산 빌드 옵션, 코드 센스 인덱싱 등을 지원하기 시작하면서 MacOS의 공식 개발 환경이 되었다.
Xcode 3 버전부터 아이폰용 앱을 만들 수 있게 되었고, Xcode 4는 기존 버전에 비해 많은 면에서 변신이 일어났다. (ARC 기능 추가, Xcode 내부에 인터페이스 빌더 탑재) Xcode 4.2 버전에서는 앱스토어에서 Xcode를 직접 설치할 수 있게 되면서 단일 애플리케이션으로 완벽하게 통합됐다.
Xcode 5 버전은 iOS 7의 달라진 UI를 지원하기 위해 기존 버전의 UI를 호환성 있게 가져가는 데 주력하며 내장된 인터페이스 빌더에 많은 변화가 생겼다. 개별 UI 화면 단위로 하나씩 다루던 nib 파일 기반의 인터페이스 빌더가 스토리보드(storyboard) 파일 형식의 통합 인터페이스 빌더 위주로 대체되었다.
스토리 보드는 화면 인터페이스를 설계할 때 여러 화면을 하나의 스토리보드 파일에 모아 다루면서 화면 간의 연결 관계나 흐름을 쉽게 파악할 수 있도록 지원하는 형식으로 Xcode 4에서 공개되었지만 5버전에서 본격적으로 사용하기 시작됐다.
Xcode 6 버전은 실시간으로 스위프트 코드를 작성하고 결과를 확인할 수 있는 플레이그라운드가 추가되었고, Xcode 7 버전에서는 스위프트 2를 지원하며 MacOS X, iOS, WatchOS 앱을 모두 만들 수 있는 확장된 개발 환경을 제공한다.
2016년에 발표된 Xcode 8버전은 여러 단계로 스토리보드를 확대/축소하여 작업할 수 있게 되었고 스토리보드 축소 시 화면 UI에 대한 편집 작업이 허용되며 화면 설계 작업이 편리해졌다.
2017년에는 Swift 4,. iOS 11과 함께 Xcode 9 버전이 공개되었고, 이때 iOS 시뮬레이터가 드라마틱하게 변신했다. 이전 버전까지 시뮬레이터는 단순 화면 기능만 테스트할 수 있었지만 Xcode 9 버전부터 아이폰 형태를 그대로 본딴 모습으로 재탄생했으며 시뮬레이터의 크기를 조절할 수 있게 되었다. 뿐만 아니라 iPhone 외 watchOS, tvOS용 시뮬레이터도 동시에 실행하여 결과를 확인할 수 있다.
Xcode 9 버전에는 몇 가지 변화가 더 있는데 내비게이터 패널 내 깃허브 연동을 위한 소스 컨트롤 기능 추가, 오토 레이아웃 설정 시 화면상 변화를 즉각 확인할 수 있는 점, Swift 3 코드와의 호환성 유지를 위한 컴파일러 버전 설정 추가 등이 있다.
2018년에 발표된 Xcode 10 버전에는 라이브러리 영역이 사라지고 다크모드 지원이 시작됐다. 라이브러리 영역은 기존 인스펙터 창 아래 고정적으로 노출되었지만 팝업 레이어 창 형식으로 바뀌어 필요할 때 꺼내 사용할 수 있도록 바뀌었다.
해마다 버전이 업그레이드되면서 Xcode는 기능을 꾸준히 향상시켜 나가고 있다. 주의해야 할 점은 iOS 버전을 기준으로 개발 작업을 진행하기 위해 항상 최신 버전의 Xcode를 사용해야 한다는 점이다. 따라서 앱을 개발할 때에는 Xcode의 버전 업데이트 여부를 항상 신경써야 한다.
2024년 5월 15일 기준 Xcode 최신 버전 : 15.3
Xcode는 애플 전용 운영체제인 MacOS에서만 실행할 수 있다. 따라서 애플에서 출시한 맥북, 맥북 프로, 맥북 에어, 아이맥, 맥 미니, 맥 프로 중 하나가 필요하다. WindowsOS가 설치된 일반 PC에서는 Xcode를 사용할 수 없다.
Xcode의 정식 버전은 앱스토어에서 받을 수 있고, 베타 버전은 애플에서 제공하는 애플 개발자 사이트에서 받을 수 있다. 베타 버전은 정식 버전보다 앞선 최신 사항을 적용할 수 있는 장점이 있지만 안정화되지 않은 버전이기 때문에 개발 과정 중 알 수 없는 오류로 인해 Xcode가 다운될 수 있다. 따라서 가급적 안정된 버전인 정식 버전을 이용하는 것이 좋다.
정식 버전 설치 (AppStore)
https://apps.apple.com/kr/app/xcode/id497799835?mt=12
베타 버전 설치 (Apple Developer)
https://developer.apple.com/download/
구 버전으로 작성되어 있어 생략!
코코아 터치 SDK에는 iPhone, iPad, Apple Watch 등 모바일 디바이스에서 앱이 어떻게 작동하는지 미리 테스트할 수 있도록 앱 시뮬레이터가 포함되어 있다. 시뮬레이터를 통해 실제 기기 없이도 제작한 앱을 실행해볼 수 있도록 하는 가상의 디바이스이다.
앱 시뮬레이터는 최초에 iPhone, iPad 등 iOS 전용 가상 디바이스만 제공되었으나 다양한 코코아 터치 계열의 디바이스 제품이 출시됨에 따라 현재는 iOS, watchOS, tvOS 등 많은 시뮬레이터가 제공된다.
시뮬레이터는 가상의 기기지만, 실제와 거의 동일한 환경을 구현해주기 때문에 앱 실행, 터치, 확대, 축소,회전, 흔들기, 메모리 부족 등 실제 발생하는 대부분의 상황을 재현할 수 있다.
안드로이드 개발 환경도 시뮬레이터를 제공해주긴 하지만 아무리 사양이 좋은 컴퓨터에서 실행하더라도 반응 속도가 좋지 않기 때문에 불편하다는 단점이 있다. 그에 반해 애플 환경의 시뮬레이터는 제법 괜찮은 성능과 반응 속도를 제공하며 세부 버전별로 테스트도 가능하다.
하지만 시뮬레이터가 모든 기능을 다 지원하는 것은 아니다. 카메라, 가속도 센서, 자이로스코프 센서 등의 일부 센서는 사용할 수 없다. 3D Touch도 시뮬레이터 단독으로 사용할 수 없다. 이러한 항목의 테스트를 위해서는 실제 디바이스가 필요하다.
시뮬레이터는 항상 앱과 함께 실행되므로 현재 작성 중인 프로젝트의 소스 코드를 컴파일 하는 과정이 선행된다. 컴파일이 성공하면 앱 설치 파일 형식으로 빌드 후 자동으로 시뮬레이터가 부팅된다.
Xcode 7 버전 이후 자동 프로비저닝 기능이 추가되었다. 이 기능으로 테스트용 앱을 모바일 디바이스에 설치할 때 인증서를 따로 준비할 필요가 없어졌다. 앱 스토어에 개발자 계정을 넣으면 이를 바탕으로 앱을 디바이스에 설치하는데 필요한 인증서를 자동으로 생성하기 때문이다.
그러나 주의할 점이 있는데, 첫 째는 모바일 디바이스가 직접 케이블에 연결되어 있어야 한다는 점이다. 네트워크를 통해 앱을 다운받아 설치해보면 예전처럼 애플 개발자 라이선스를 이용해 그에 맞는 인증서 및 프로비저닝 파일을 생성해야 한다.
둘 째는 앱에 설치된 프로비저닝 파일의 유효 기간과 최대 생성 가능 개수다. 한 번 만들어진 앱용 프로비저닝 파일의 유효기간은 일주일이며 일주일이 지난 앱을 다시 빌드하여 실행하면 새로운 프로비저닝 파일이 생성된다. 한 번에 가지고 있을 수 있는 프로비저닝 파일의 개수는 최대 10개이기 때문에 앱 프로비저닝 파일의 유효 기간이 일주일이니 일주일에 10개의 앱을 만들어볼 수 있다는 것이다.
시뮬레이터라는 훌륭한 장비가 제공되지만 일부 특수 기능 구현을 위해, 혹은 앱 개발 최종 단계에서 실제 디바이스에 앱을 설치해 테스트하는 과정이 필요하다. 앱을 디바이스에 설치해서 테스트하기 위해서는 개발자 계정으로 등록된 애플 계정이 반드시 필요하다.
간혹 베타 버전의 Xcode가 새로운 iOS 버전을 미리 지원하는 경우 연결된 디바이스의 iOS 버전이 이보다 낮으면 앱을 설치하지 못하는 경우가 있다. 이때는 Deployment Info 영역을 찾아 앱의 빌드 대상 버전을 현재 디바이스에 맞춰 설정해야 한다.