Top

스위프트 3의 새로운 기능 [신속한 마이그레이션을 위한 기능별 안내서]

  • 원서명Swift 3 New Features (ISBN 9781786469632)
  • 지은이키이스 엘리엇(Keith Elliott)
  • 옮긴이김동호
  • ISBN : 9788960779655
  • 13,000원
  • 2017년 01월 17일 펴냄
  • 페이퍼백 | 180쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

요약

오브젝티브 C 또는 이전 버전의 스위프트로 개발된 프로젝트를 갖고 있는 개발자들이 자신의 프로젝트를 최신 버전으로 마이그레이션할 때 겪게 될 문제에 대한 설명과 해결책을 알려 준다. 스위프트에서 변경되거나 새로 도입된 사항의 핵심을 설명하며, 더 자세한 내용을 찾을 수 있는 리소스를 친절히 안내해 준다.

이 책에서 다루는 내용

■ 스위프트 2.2 프로젝트를 스위프트 3로 마이그레이션
■ 스위프트 패키지 관리자 이해
■ 오브젝티브 C에서 스위프트로 임포트할 때 코코아 라이브러리와 상호작용하는 방법
■ 스위프트 3의 새로운 함수와 연산자 소개
■ 스위프트 3에서 개선된 부동 소수점, 속성, 타입 작업 방법
■ 스위프트 API의 변경사항을 확인하고 오브젝티브 C 코드를 현재 API에서 다루는 방법
■ 스위프트 테스팅과 새로운 디버그 기능의 이해를 중심으로 새로운 기능 구현
■ 스위프트 3로 서버 사이드 애플리케이션 개발

이 책의 대상 독자

오브젝티브 C, 스위프트 2.x대 버전으로 개발프로젝트를 진행하고 있거나, 이미 완료된 프로젝트를 최신 버전으로 전환하고 싶은 개발자라면 이 책이 좋은 안내서가 될 것이다.

이 책의 구성

1장, ‘도대체 무슨 생각일까?’에서는 스위프트 3를 소개한다. 스위프트는 애플에게 중요한 언어며, 최근까지의 도입률은 놀랍다. 언어 변경 사항의 선택 방법과 커뮤니티에 기여하는 방법을 다룬다. 또한 Swift.org 사이트와 스위프트에서 발생한 모든 것을 저장하는 깃허브 페이지에 대해 다룬다.
2장, ‘신대륙 발견: 드디어 리눅스!’에서는 리눅스 머신에서 스위프트 애플리케이션을 개발하는 방법을 다룬다. 최근까지 스위프트는 맥에서만 개발할 수 있었지만, 스위프트 3는 리눅스 머신에서 스위프트 애플리케이션의 개발과 실행을 지원한다. 2장의 끝에서 맥과 리눅스 머신 양쪽에 개발 환경을 설치하는 방법을 다룬다. 또한 리눅스용 애플리케이션을 작성해본다.
3장, ‘스위프트 3로 마이그레이션’에서는 스위프트 마이그레이터를 사용해서 스위프트 2.2 프로젝트를 업그레이드하는 방법을 알려준다. 예제 프로젝트를 마이그레이터를 사용해 따라 해보고, 스위프트 프로젝트를 마이그레이션할 때 유용한 전략을 알아본다.
4장, ‘스위프트 핵심 변경에 대한 더 많은 궁금증’에서는 훌륭한 스위프트 API를 작성하기 위한 철학을 강조한다. 4장의 나머지 부분에서 오브젝티브 C와 C 코드를 스위프트 3로 가져와 스위프트 3에서 오브젝티브 C 기능을 사용하고 참조하는 언어의 개선된 부분을 다룬다.
5장, ‘함수와 연산자의 변화: 일 처리의 새로운 방법’에서는 함수 선언, 사용법에서 변화된 부분을 알아보고 더 나은 스위프트 코드로 바꾸는 방법을 검토한다. 또한 언어에서 제거된 몇 가지를 강조하고, 변화된 연산자에 대해 설명한다.
6장, ‘컬렉션과 클로저의 특별한 변화’에서는 스위프트 3에서 변경된 클로저와 컬렉션에 초점을 맞춘다. 컬렉션으로 작업하는 것을 더 재미있게 만들어줄 몇 가지 멋진 기능이 있다. 스위프트 2.2에서 클로저 생성을 혼란스럽게 만드는 부작용을 알아보고 스위프트 3에서 그것들을 어떻게 수정했는지 살펴본다.
7장, ‘타입의 발전된 변화’에서는 정기적으로 사용하지 않는 언어의 개선된 부분을 다룬다. 언세이프 포인터형과 타입 앨리어스, 부동 소수점 연산에 초점을 맞춘다.
8장, ‘파운데이션 프레임워크의 새로운 기능’에서는 새로운 Measurement와 유닛 API에 대해 알아본다. 이후에 measurement 과제를 처리하기 위한 준비를 더 잘하도록 개념 주입을 위해 남겨둔 몇 가지 예제를 사용한다.
9장, ‘엑스코드 서버와 LLDB 디버깅으로 코드 개선’에서는 엑스코드 서버의 지속적인 통합 능력과 테스트 작업 흐름을 향상시키기 위해 포함된 테스트 자동화 방법에 대해 다룬다. 후반부에서는 리눅스에서 코드를 디버깅하기 위한 LLDB 사용법을 설명한다.
10장, ‘서버에서의 스위프트 탐구’에서는 서버에서 스위프트를 실행하는 방법을 다룬다. 리눅스에서 스위프트가 실행되는 것은 매우 중요하고, 서버를 호스팅하고 실행하는 리눅스의 인기는 특별하다. 스위프트 3는 iOS, macOS, tvOS, watchOS용 애플리케이션을 만들기 위해 동일한 스위프트를 사용해 개발자들이 서버 사이드 애플리케이션을 개발할 수 있는 가능성을 열었다. 10장의 끝에서는 리눅스 박스에서 원활하게 실행되는 스위프트로 완벽하게 작성된 서버 사이드 앱을 갖게 될 것이다.

저자/역자 소개

지은이의 말

스위프트 3의 출시와 함께 애플은 스위프트 도입을 확대하려 노력하고 있다. 이 책의 임무는 스위프트 3를 사용하는 신속하고 생산적인 신규 개발자 및 숙련된 개발자를 빠르게 확보하는 것이다. 이 책에서는 표준 라이브러리와 파운데이션에 소개된 주요 기능들을 살펴본다. 또한 스위프트 2.2 프로젝트를 스위프트 3으로 전환하고, 리눅스에서 스위프트로 개발하고 동작시키기 위한 방법도 설명한다.

지은이 소개

키이스 엘리엇(Keith Elliott)

통신, 부동산 투자은행과 자본시장을 두루 경험한 특별한 사업적, 기술적 경험을 가진 다재다능한 전문가다. 그의 업무는 아내가 요청한 할 일 목록과 같이 간단한 문제부터 외환 헤지, 금리파생 상품 같은 복잡한 문제들까지 해결책이 필요한 문제에서 시작된다. 기업가 정신을 강조하는 콜롬비아 비즈니스 스쿨에서 MBA를 마치고 조지아 공대에서 컴퓨터공학 학사 학위를 받았다.
그가 소유한 Gittie Labs는 기술 솔루션을 제공하는 스타트업들과 협업하고 있다. 그의 비전은 학생들에게 스타트업과 회사 생활에서 성공하는 데 필요한 실생활의 경험들을 준비시키는 일이다. Giitie Labs 웹사이트(www.gittie.com)의 블로그에서 관련 내용을 볼 수 있다.
밤과 주말에는 사랑스러운 아내와 오토바이를 타고, 풋볼을 보고, WWDC 영상을 계속해서 돌려보고, 가족들과 시간을 보내는 것을 즐긴다.

옮긴이의 말

아이폰 한국 출시와 함께 에이콘을 통해 출간됐던 『아이폰 SDK 애플리케이션 개발』(2010)을 번역한 지 8년이 지났다. 수많은 인디 개발자들과 대형 개발 업체들이 뛰어들면서 사용자에게 앱이 선택된다는 건 모래에서 바늘 찾는 일이 될 정도로 앱스토어 시장은 팽창했다. 하지만 여전히 들리는 누군가의 성공 스토리는 개발자들에게 이 시장이 충분히 매력적으로 보이는 이유일 것이다.
무르익은 시장 환경과 대조적으로 개발 환경은 여전히 폐쇄적이고 배우기가 쉽지 않다. 초보자들이 배우기에 문법은 무척 생소하며 어렵고, 30년의 역사를 가진 오브젝티브 C는 다른 언어들이 도입하는 최신 프로그래밍 패러다임을 수용하는데 한계가 있었다. 그에 따라 애플은 개발자 생태계를 자사의 제품만큼이나 매력적으로 만들 필요가 있었고, 2014년 WWDC를 통해 스위프트를 소개했다. 다들 애플이 내놓은 새로운 언어를 신비롭게, 혹은 열광적으로 바라보았다. 게다가 오픈소스라니……
스위프트는 빠른 속도로 발전하는 언어기 때문에 이전 버전의 프로젝트를 최신 버전의 스위프트로 바꾸는 데 시행착오가 필요하다. 오브젝티브 C, 스위프트 2.x, 이제 스위프트 3까지 나와 혼란을 가중시키고 있는 상황이다. 이 책이 모든 것을 커버하지는 않지만, 적어도 이런 변화의 시기에 무엇을 하면 되는지 빠르게 살펴볼 수 있을 것이다. 이 책은 무엇이 바뀌었고, 왜 그렇게 바뀌었는지, 스위프트 개발자 커뮤니티의 어떤 제안들을 더 살펴보면 되는지를 알려주는 안내서다.

옮긴이 소개

김동호

PC 통신 시절부터 인터넷으로 전환되는 시점까지 개발자로서 패러다임의 흥망성쇠를 겪으면서 10년이 넘는 시간을 보냈다. 돌아보니 C부터 시작해 인기있던 스크립트 언어들까지 참으로 넓고도 얄팍한 삶을 살아왔다는 생각도 든다. 지금은 개발자로서의 시간을 보내고 있지는 않지만 아이폰이라는 출중한 장난감을 만나 혹시 대박의 기회가 생기지 않을까 하는 생각에 계속 곁눈질을 하던 비범한 직장인이었다. 현재는 여전히 곁눈질만 하고 있는 나태한 직장인으로 변이 중이다. 개발 환경은 점점 편해지고, 툴의 생산성은 점점 높아져감에 혹시나 하면서 말이다.

목차

목차
  • 1장, 도대체 무슨 생각일까?
    • 스위프트 3에 대한 애플의 목표
    • 오픈소스 스위프트
    • 스위프트에 기여
    • 스위프트 발전 과정
    • 스위프트 3의 승인된 제안 개요
    • 요약

  • 2장, 신대륙 발견: 드디어 리눅스!
    • 스위프트 다운로드
    • 맥용 스위프트 3
    • 리눅스용 스위프트 3
    • REPL 사용
    • 스위프트 패키지 관리자
    • 첫 번째 스위프트 프로그램
    • 요약

  • 3장, 스위프트 3으로 마이그레이션
    • 프로젝트 마이그레이션 방법
      • 옵션 1: 스위프트 3으로 마이그레이션
      • 옵션 2: 스위프트 2.3으로 마이그레이션
    • 사전 계획
    • 스위프트 마이그레이션 도구로 마이그레이션
      • 문제 해결을 위한 빠른 전략
    • 요약

  • 4장, 스위프트 핵심 변경에 대한 더 많은 궁금증
    • 그랜드 리네이밍
      • 스위프트 3에서 오브젝티브C 코드 참조
      • getter,setter 속성으로 오브젝티브C 셀렉터 참조[SE-0064]
        • 오브젝티브C 키 경로 참조[SE-0062]
    • 스위프트 3에 오브젝티브C 및 C API에서 코드 가져오기
      • 스위프트 타입으로 오브젝티브C 상수 가져오기[SE-0033]
        • 구조체로 가져오기
        • 열거형으로 가져오기
      • 오브젝티브C 경량 제네릭 가져오기[SE-0057]
      • 멤버로 가져오기[SE-0044]
        • 이니셜라이저 정의
        • 게터와 세터 생성
        • 메소드 추가
        • 정적 변수 생성
    • 요약

  • 5장, 함수와 연산자의 변화: 일 처리의 새로운 방법
    • 함수 선언의 변화
      • 일관성 있는 매개변수 레이블링[SE-0046]
        • 선언 시 커링 함수 구문 제거[SE0002]
      • 기본적으로 미사용 결과에 대한 경고[SE-0047]
        • 함수 매개변수 목록에서 var 제거[SE-0003]
        • ++, -- 연산자 제거[SE-0004]
        • C 스타일 반복문 제거[SE-0007]
        • 함수에서 암시적인 튜플 스플랫 제거[SE-0029]
        • 타입 지정 시 조정된 inout 선언[SE-0031]
        • 속성 인수에 대해 등호를 콜론으로 변환[SE-0040]
        • 괄호가 필요한 함수 인수 구문 표준화[SE-0066]
        • 기본 매개변수의 순서 강제[SE-0060]
        • 오브젝티브C를 위한 선택적 요구 사항 만들기[SE-0070]
    • 요약

  • 6장, 컬렉션과 클로저의 특별한 변화
    • 컬렉션과 시퀀스 타입의 변경
      • 선택적 시퀀스를 위한 지연 FlatMap[SE-0008]
      • 시퀀스에 first(where:) 메소드 추가[SE-0032]
      • sequence(first: next:)와 sequence(state: next:) 추가[SE-0094]
    • 새로운 collections,indices 모델[SE-0065]
      • 컬렉션 프로토콜 소개
      • 컬렉션 프로토콜 따르기
      • 새로운 범위와 연관 인덱스 타입
    • 짧은 시사점
    • 스위프트 3 클로저 변화
      • @noescape 클로저의 inout 캡처 제한[SE-0035]
      • 해결
      • 기본으로 비이스케이핑 클로저 만들기[SE-0103]
    • 요약

  • 7장, 타입의 발전된 변화
    • Unmanaged, UnsafePointer의 변화
      • UnsafePointer 사용을 위한 Unmanaged 변경[SE-0017]
      • Optional을 사용한 명시적 UnsafePointer 만들기[SE-0055]
      • UnsafeRawPointer 추가[SE-0107]
    • 타입 별칭과 프로토콜 변화
      • 제네릭 타입 별칭[SE-0048]
      • 프로토콜에서의 타입 별칭과 프로토콜 확장[SE-0092]
    • 부동소수점 변화
      • 향상된 부동소수점 프로토콜[SE-0067]
      • 부동소수점 프로토콜의 새로운 반올림 함수[SE-0113]
    • 요약

  • 8장, 파운데이션 프레임워크의 새로운 기능
    • 가변성과 파운데이션 값 타입
    • 값 타입과 참조 타입
    • 중첩 열거형
    • 강력한 문자열 열거형
    • 클래스 속성
    • 안전한 값 타입 접근
    • Measurement와 Unit
      • Measurement
      • Unit과 Dimension
      • 사용자 정의 유닛
      • 사용자 정의 Dimension 타입
      • 변환 함수
      • measurements 포매팅
    • 요약

  • 9장, 엑스코드 서버와 LLDB 디버깅으로 코드 개선
    • 엑스코드 서버의 지속적인 통합 개요
      • 봇 기능
      • 봇 모니터링과 관리
    • 엑스코드 서버 설정
      • 엑스코드 서버에 저장소 추가
      • 봇 설정
    • 통합 실행 관리와 모니터링
    • LLDB로 디버깅
      • LLDB 명령어 구문
    • 중단점 관리
      • 중단점 생성
      • 중단점 나열
      • 중단점 수정
      • 중단점 활성/비활성화
      • 중단점 삭제
      • 명령어 별칭
    • 요약

  • 10장, 서버에서의 스위프트 탐구
    • IBM 스위프트 패키지 카탈로그
    • 서버 프로젝트 소개
      • 프로젝트 설명과 의존성
      • 환경과 프로젝트 설정
        • Vapor 프레임워크
        • 라우팅
        • 뷰 생성
        • 공개 리소스
        • shop view 정의
        • 슬랙 통합
        • 사용자 정의 통합 만들기
        • 슬랙에 게시할 서버 업데이트
    • 요약

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안