Top

코어 데이터 [맥 OS X과 아이폰 개발자를 위한]

  • 원서명Core Data: Apple's API for Persisting Data on Mac OS X (ISBN 9781934356326)
  • 지은이마커스 자라
  • 옮긴이이동욱
  • ISBN : 9788960771581
  • 30,000원
  • 2010년 10월 29일 펴냄 (절판)
  • 페이퍼백 | 320쪽 | 185*235mm
  • 시리즈 : 모바일 프로그래밍

판매처

  • 현재 이 도서는 구매할 수 없습니다.

책 소개

맥 OS X과 아이폰 개발자를 위한 국내 첫 코어 데이터 서적. 데이터를 다루는 맥 OS 및 iOS 애플리케이션을 만드는 개발자라면 꼭 읽어야 할 필독서.


[ 소개 ]

이 책에서 다루는 큰 그림부터 세부적인 고급 기술까지 모두 읽고 나면, 자신도 모르게 코어 데이터 문외한에서 전문가로 도약할 수 있을 것이다.
- 스티브 스콧 (Scotty), 맥 디벨로퍼 네트워크

맥 OS X이나 아이폰을 대상으로 하는 코코아 애플리케이션에서 정보를 영구적으로 저장하려면 코어 데이터가 필요하다. 물론 코어데이터를 사용하지 않고 SQLite만으로 어렵사리 진행하거나, XML을 직접 생성하거나, 고유한 이진 형식을 만들어도 무방하다. 하지만 코어 데이터 API를 이용하면 시간과 에너지를 절약할 수 있다.

이 책에는 코어 데이터 기초부터 전문적인 설정에 이르는 다양한 내용을 담았다. 책을 따라 읽으며 맥 OS X이 제공하는 코어 데이터 API에 기반한 완전한 애플리케이션을 작성할 수 있다.

코어 데이터는 객체 그래프를 만들고, 데이터를 저장하는 작업을 쉽게 만들어 준다. 하지만 주의해야 할 수많은 함정 또한 도사리고 있다. 이 책은 버전 관리는 물론 퀵룩, 동기화 서비스, 스포트라이트와 통합하는 내용까지 많은 것을 보여준다. 성능을 어떻게 개선할지, 멀티스레드 환경에서는 어떻게 동작하는 지도 보게 될 것이다. 또한 데스크탑과 아이폰 모두에서 코어 데이터를 사용하는 방법도 알아본다.

이 책을 마칠 때쯤이면 제대로 동작하는 애플리케이션을 완성하고, 습득한 코어 데이터에 대한 전반적인 지식을 활용해 OS X과 어떻게 통합할지 결정할 수 있을 것이다.

또한 일상적이지 않은 상황에서 유용하게 사용할 수 있는 다양한 비법과, 예전에는 코어 데이터 API를 사용할 생각조차 하지 못했을 부분들도 알려준다. 아마 또 다른 필수 도구들로 자리매김 할 것이다.


[ 이 책에서 다루는 내용 ]

이 책에서는 코어 데이터를 활용하는 애플리케이션을 하나 만들어 보며, 코어 데이터를 구석구석 살펴본다. 애플리케이션 작성 초반에는 엄밀히 말해 코어 데이터에는 속하지 않지만 코어 데이터를 동작하게 하는 기술들도 몇 개 다룰 것이다. 이후에 코어 데이터를 심도 있게 살펴보면서 어떻게 코어 데이터가 OS X의 다른 기술과 상호작용하고 그 기술들에 적용되는지 알아본다.


[ 이 책의 구성 ]

1장 ‘들어가며’에서는 이 책에서 다루는 내용과 코어 데이터에 대한 개요를 전반적으로 살펴본다.

2장 ‘코어 데이터의 시작’에서는 데모 프로그램을 작성하면서 애플리케이션을 제대로 동작하게 하기 위해 거치는 모든 단계를 아주 간략하게 훑어본다.

3장 ‘코어 데이터와 바인딩’에서는 코어 데이터를 강력한 프레임워크로 만드는 핵심인 키 밸류 옵저빙(KVO, Key Value Observing)과 키 밸류 코딩(KVC, Key Value Coding)을 알아본다.

4장 ‘코어 데이터의 내부’에서는 코어 데이터의 주요 구성 요소들을 살펴본다.

5장 ‘버전 관리와 마이그레이션’에서는 애플리케이션을 사용자들에게 배포한 이후 내부의 데이터 모델을 바꾸는 방법을 알아본다.

6장 ‘성능 관리’에서는 4장에서 배운 주요 구성 요소들을 가지고 최대한 빠른 속도로 수행하는 방법을 알아본다.

7장 ‘스포트라이트, 퀵 룩, 코어 데이터’에서는 코어 데이터를 이용한 애플리케이션을 운영체제의 다른 부분과 통합하는 방법을 배운다.

8장 ‘동기화 서비스와 코어 데이터’에서는 여러 인스턴스로 동작하는 애플리케이션 내에서 데이터를 동기화하는 방법을 알아본다.

9장 ‘코어 데이터와 멀티스레딩’에서는 주어진 컴퓨팅 능력을 극대화하는 방법을 배운다.

10장 ‘코어 데이터와 아이폰’에서는 잠시 눈을 돌려 좀 더 쉽게 아이폰 개발을 위해 코어 데이터의 강력함과 유연함을 활용하는 방법을 알아본다.

11장 ‘분산 코어 데이터 비법’에서는 코어 데이터를 분산 환경에서 사용하기 위한 솔루션을 살펴본다.

12장 ‘동적 파라미터 비법’에서는 Simply Elegant Sales와 그 이전 초기 설계에서 몇 번 사용했던 비밀을 하나 공유한다. 이 비법을 이용해 NSUserDefault와 유사한 도큐먼트 레벨 프로퍼티 저장 시스템을 설계한다.

저자/역자 소개

[ 저자 서문 ]

9개월 동안의 작업을 마치고 이 책을 출간하게 되다니 믿어지지 않는다. 솔직히 말하자면 집필을 시작할 당시만 해도 두려움이 앞섰다. 코어 데이터라는 주제로 책 한 권을 모두 채우기란 불가능해 보였다. 하지만 지금에 와서 되돌아보면 크게 잘못된 생각이었다. 코어 데이터는 따로 떼어놓고 보면 꽤 작은 주제이지만, 크기가 작다는 것은 분명 코어 데이터의 장점이기도 하다. 그렇지만 OS X 전체를 놓고 보면 코어 데이터는 책 몇 권은 족히 쓸 수 있는 큰 주제다.

코어 데이터가 처음 소개됐을 때 나는 나중에 Simple Elegant Sales로 알려진 데스크탑 애플리케이션을 설계하고 있었다. 이 판매관리용 소프트웨어는 원래 사진작가인 아내의 사업을 위해 만들었다. 나는 아내가 여러 곳을 돌아다닐 때에도 노트북으로 쉽게 회계 업무를 처리하기를 바랐다. 그 소프트웨어를 처음 작성할 당시만 해도 오브젝티브C보다 자바에 훨씬 경험이 많았지만 OS X 애플리케이션의 완성도를 더욱 높이려면 사용자 인터페이스는 오브젝티브C와 코코아로 만들어야 한다는 사실을 깨달았다. 자바 UI로는 이런 완성도를 달성할 수 없었으나, 하이버네이트가 지닌 강력한 데이터베이스 기능과 관계 매핑 능력을 이용하기 위해 애플리케이션의 뒷단은 자바로 작성하기로 했다.

프로젝트를 반쯤 마쳤을 때 Atomic Bird(http://www.atomicbird.com)의 톰 해링턴을 만났다. 그는 애플리케이션의 백엔드에는 코어 데이터가 자바보다 적합할 수도 있다며 코어 데이터를 살펴보길 권했다. 당시에는 OS X의 타이거 버전이 나오지 않은 상태였고 코어 데이터는 여전히 개발자만 사용할 수 있었다. 난 딱 하루 사용해보고 바로 계획 단계로 되돌아가 전체 프로젝트를 다시 시작했다. 코어 데이터는 이전에 작업하던 것보다 훨씬 진보된 것이었다.

그날 이후 코어 데이터에 매료돼 많은 것을 빠르게 배워나갔다. 이 책은 바로 나의 모든 경험의 부산물인 셈이다.


[ 저자 소개 ]

마커스 자라(Marcus S. Zarra)
자라 스튜디오를 운영하고 있으며 seSales와 iWeb Buddy를 만들었다. 코코아 개발 전반을 다루는 유명 블로그 Cocoa is My Girlfriend의 공동 저자이기도 하다.


[ 옮긴이의 말 ]

각종 맥 장비와 iOS 기기가 세상에 남긴 흔적을 일일이 설명하기에는 때늦은 감이 있습니다. 애플을 생소해하던 이들도 이제 모이면 애플에 대해 이야기합니다. 언제부터인가 개발자에게 "아이폰/안드로이드의 세계에 뛰어들어야 하는가?"라는 질문이 흔한 고민이 됐습니다.

애플의 성공만큼이나 유례없이 많은 맥/아이폰 서적이 출간됐습니다. 하지만 입문 이후의 단계를 다루는 서적은 더 풍성해야 하지 않을까 욕심을 부려 봅니다. 그런 의미에서 맥/아이폰 프로그래밍 분야에서 좀 더 심도 깊고 새로운 코어 데이터 관련 서적이 세상의 빛을 보게 되어 기쁩니다.

코어 데이터는 독립 애플리케이션이 영구 저장소에 정보를 저장하는 작업을 고수준에서 간단 명료하게 처리할 수 있도록 도와줍니다. 구체적으로 말하면 데이터 모델의 속성과 연관을 내용으로 하는 객체 그래프를 XML이나 SQLite 저장소에 쉽게 저장하게 해줍니다. 코어 데이터가 제시하는 기능을 사용하다 보면 간단하면서 세련된 기능에 빠져들게 됩니다. 이 책은 코어 데이터의 기본적인 내용은 물론, 경험을 통해서만 알 수 있는 내용까지도 풍성하게 다루고 있습니다.

하지만 코어 데이터는 맥 개발 입문자를 대상으로 하는 서적은 아닙니다. 코어 데이터를 중점적으로 다루기에 엑스코드를 이용한 OS X 애플리케이션 개발에 익숙하다고 가정하고 진행되며, 작성해야 할 코드를 내용만 설명하고 넘어가기도 합니다. 물론 제공되는 예제 소스를 이용하면 해당 내용을 확인할 수 있지만, 어느 정도 기본적인 지식은 있어야 수월하게 진행할 수 있습니다.

2장을 중심으로 큰 그림을 그리기 위한 실습이 진행되는데, 책 전체에 영향을 미치는 초반 도입부인만큼 초반에는 설명이 빠진 부분을 보충해 어느 정도 책을 따라하면 예제가 완성될 정도로 구성했습니다. 하지만 저자가 아닌 역자로서 모든 장에 원서에 없는 내용을 추가하기에는 한계가 있었습니다. 나머지 부분에서는 원서의 내용을 살려 쉽게 전달하는 쪽으로 초점을 맞추었습니다.

출간 즈음이 되니 아쉬움이 많이 남습니다. 역자로서 적지 않은 시간 노력을 했습니다만, 충분한지 확신이 서지 않습니다. 부족함과 한계가 또 하나의 흔적이 되어 곳곳에 남아 있을지도 모르겠으나, 코어 데이터 분야의 첫 서적으로서 맥과 아이폰 프로그래밍을 공부하고 현업에서 다양한 애플리케이션을 만드는 개발자들에게 작으나마 가이드가 되길 바랍니다.


[ 옮긴이 소개 ]

이동욱
연세대학교 사회환경시스템공학부 도시공학과를 졸업하고, 2003년 LG CNS에 입사해 7년째 근무하고 있다. 회사에서는 SI 프로젝트 개발 및 기술 교육 전임 강사 등의 업무를 거쳐, 현재 사내 배치 프레임워크 개발에 주도적으로 참여하고 있다.
초등학교 때부터 애플 II로 컴퓨터 프로그래밍을 배우기 시작해 지금은 물론 앞으로도 계속 개발자 세상에서 희로애락을 느낄 생각이다. 개발자들이 전문가로 거듭나고 또 인정받는 IT 생태계를 꿈꾸며 아직은 미약한 자신의 역할을 찾는 중이다.
기술적으로는 맥/iOS 기기 개발에 사용되는 오브젝티브C 뿐만 아니라, 자바는 물론 비교적 최근에 만들어진 하이브리드 언어인 스칼라 등 각종 언어에 관심이 많으며, 최근에는 구글 그룹스를 통해 스칼라 사용자 모임(/scala-korea)을 개설하기도 했다.
원래 지식은 서로 만나고 그 경계와 구분은 인간이 만들었다는 변명으로 자신의 산만함을 감춰보지만, 특히나 요즘은 하고 싶은 것과 해야 할 것에 둘러싸여 어지러움에 비명을 지를 때가 많다.

목차

목차
  • 1장 들어가며
    • 1.1 코어 데이터란 무엇인가?
    • 1.2 이 책에서 다루는 내용
    • 1.3 감사의 글
  • 2장 코어 데이터의 시작
    • 2.1 예제 애플리케이션
    • 2.2 예제 애플리케이션 디자인
    • 2.3 숙련된 독자
    • 2.4 엑스코드 프로젝트 시작
    • 2.5 데이터 모델 만들기
    • 2.6 컨트롤러 계층 작성
    • 2.7 사용자 인터페이스 만들기
    • 2.8 약간의 코드 추가
  • 3장 코어 데이터와 바인딩
    • 3.1 키 밸류 코딩
    • 3.2 키 밸류 옵저빙
    • 3.3 코코아 바인딩과 코어 데이터
    • 3.4 KVC, KVO와 코어 데이터를 사용하는 기타 UI 요소
  • 4장 코어 데이터의 내부
    • 4.1 NSManagedObject
    • 4.2 NSFetchRequest
    • 4.3 NSSortDescriptor
    • 4.4 NSManagedObjectContext
    • 4.5 NSManagedObjectModel
    • 4.6 NSPersistentStoreCoordinator
    • 4.7 조회 요청 프로퍼티
    • 4.8 정리
  • 5장 버전 관리와 마이그레이션
    • 5.1 마이그레이션 작업 전 코드 정비
    • 5.2 간단한 마이그레이션
    • 5.3 코어 데이터 버전 관리의 기초
    • 5.4 더 복잡한 마이그레이션
    • 5.5 자동 데이터 마이그레이션
    • 5.6 수동 데이터 마이그레이션
    • 5.7 점진적 데이터 마이그레이션
    • 5.8 팁과 트릭
  • 6장 성능 관리
    • 6.1 영구 저장 공간의 형태
    • 6.2 데이터 모델 최적화
    • 6.3 가져오기
    • 6.4 폴트 상태
    • 6.5 접근 방식
  • 7장 스포트라이트, 퀵 룩, 코어 데이터
    • 7.1 스포트라이트 통합
    • 7.2 퀵 룩과 통합
    • 7.3 한군데 모으기
    • 7.4 심화 학습
  • 8장 동기화 서비스와 코어 데이터
    • 8.1 동기화 서비스의 기초
    • 8.2 데이터 모델 업데이트
    • 8.3 동기화 스키마 만들기
    • 8.4 클라이언트 설명 파일 작성
    • 8.5 NSPersistentStoreCoordinator 수정
    • 8.6 동기화 도우미 작성
    • 8.7 싱크로스펙터
    • 8.8 정리
  • 9장 코어 데이터와 멀티스레딩
    • 9.1 코어 데이터가 멀티스레드 환경에 안전하지 않은 이유
    • 9.2 여러 개의 컨텍스트 만들기
    • 9.3 레시피 내보내기
    • 9.4 레시피 가져오기
    • 9.5 재귀 복사
    • 9.6 정리
  • 10장 코어 데이터와 아이폰
    • 10.1 비슷한 점과 다른 점
    • 10.2 메모리 관리
    • 10.3 데이터 변경 통지
    • 10.4 아이폰용 레시피 애플리케이션
    • 10.5 정리
  • 11장 분산 코어 데이터 비법
    • 11.1 서버 작성
    • 11.2 클라이언트 작성
    • 11.3 네트워크 관련 코드 테스트
    • 11.4 정리
  • 12장 동적 파라미터 비법
    • 12.1 엑스코드 예제 프로젝트 만들기
    • 12.2 DocumentPreferences 객체

도서 오류 신고

도서 오류 신고

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

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

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

정오표

정오표

66페이지 그림 3.7

Model Key Path 값 비움

Display Name: predicate -> Recipe

Predicate Format: keyPath contains $value -> name contains[c]
$value