최근에 선풍적인 인기를 끌고있는 아이폰 어플리케이션을 만들기 위한
아이폰 개발자를 위한 실전 프로젝트 개발서입니다.
제목 그대로 Hello World와 같은 기초적인 코딩 부분부터 시작하는것이 아니고, 어느정도 프로그램 개발이 가능한 개발자에게 다양한 분야의 설명과 노하우, 팁 등을 설명하는 책입니다.
총 11명의 저자가 한분야씩을 맞아서 특정 항목에 대한 설명을 하는데,
저자들은 꽤 다양한분야에서 일을 하면서 아이폰 프로그램도 개발하시더군요.
그래픽, 메시지통신, 오디오 스트리밍, 디버깅, DB, 네트워크, 튜닝 등 다양한 분야를 망라하고 있습니다.
뭐 당연히 처음부터 봐야 할 필요도 없고,
한번 대충 흘터보신후에 자신과 관련된 부분을 위주로 보시면 될듯하고,
프로그램 개발시에 참고를 하시면 많은 도움이 될듯 합니다.
딱딱하게 이론만을 설명하는것도 아니고,
멋진 어플리케이션을 만들기 위한 설계, 구현에 대한 이야기와
필자들이 개발하면서 겪었던 애로사항이나 문제해결등에 대한 이야기도 참 도움이 많이 되면서 신선하게 다가오더군요.
개인적으로는 업무용 프로그램을 개발하기 때문에
SQLite와 SQL을 사용하지 않는 코어데이터 부분이 참 많은 도움이 되었고,
앞으로도 꽤 자주 들여다 보게 되지 않을까 싶더군요.
디버깅관련 분야도 아직은 많이 생소한 부분이였는데,
접근방법에 대한 이야기나, 메모리 깨짐 현상 등이 참 많은 도움이 되었고,
일반 프로그래밍 도서에 비해서 딱딱하지도 않으면서, 참 친근하고, 친절하게 느껴지는 책으로,
최근에 앱스토어에 프로그램을 공개해서 대박을내시는 분들이 많다고 하던데,
프로그램을 개발하실때 다양한 분야에서 도움을 받을수 있고,
개인적인 스킬면에서도 많은 도움을 받을듯한 멋진 책인듯 합니다.
<도서 정보> 제 목 : 아이폰 어드밴스드 프로젝트 iPhone Advanced
Projects : 아이폰 개발자를 위한 실전 프로젝트 개발서 (한빛미디어 모바일 시리즈-03) 저 자 : 요 아김 본도 등저/우 정은 역 출판사 : 한빛미디어 출판일 : 2010년
4월 책정보 : 468쪽 | 874g | 188*135mm ISBN-13 9788979147377 구매처
: 위드블로그 리뷰도서 구매일 : 2010/4/19 일 독 : 2010/4/26 재 독 :
정 리 :
<미디어 리뷰>
11개의 아이폰 실전 프로젝트를 통해 아이폰 고급
개발 기법과 노하우를 고스란히 전달하는 이 책은 프로젝트 진행 시 참고할 수 있는 고급 레퍼런스와 실전 프로젝트에서의 실행착오를 줄여주는 개발
과정을 수록하였다. 따라서 아이폰 실무 개발자 (Objective-C, Cocoa, OpenGL 습득자)와 프로젝트 수행을 위해 한 차원 높게
자기 개발을 하려는 개발자, 난항에 빠진 아이폰 프로젝트를 구해낼 기법을 찾고 있는 개발자들이 읽기에 적합하다.
생기 있는 게임을
만드는 파티클 시스템, 알림 메시지를 이용한 네트워크 게임 개발, 실시간 스트리밍 오디오 플레이어 개발, 상황에 따라 빠르게 대처하는 디버깅
도구와 기법, SQLite를 이용한 데이터-드리븐 앱 개발 등을 다루면서, 실제 앱을 만들면서 얻은 경험, 고급 정보가 잘 녹아있어, 이제
개발을 시작하는 사람들에게 완성도 높은 앱 개발 안내자의 역할도 동시에 한다.
저자: 요아김 본도(Joachim Bondo)
27년 경력의 소프트웨어 개발자로서 작은 소프트웨어 회사를 창업하고 운영하고 있다.
다양한 언어(BASIC, COMAL 80, Pascal, C, C++, 오브젝트-C, SQL, NewtonScript, PHP,
JavaScript, Bash 등)를 활용하고, (Mac OS 3-8, Newton OS, Palm OS, UNIX (FreeBSD, 맥 OS
X), Mac OS X Panther-Leopard, iPhone OS)에 대한 경험이 있고, 아이폰 게임인 Deep Green의 개발자다.
역자: 우정은
2003년 컴퓨터 공학과를 졸업하고 벨록스소프트에 입사하면서 임베디드 소프트웨어 분야에
발을 디디게 되었다. 그 후 LG전자 단말연구소를 거쳐, 현재는 썬 마이크로시스템즈(Sun Microsystems)에서 Java Licensee
Engineer로 근무하고 있다. 주로 자바 가상머신(virtual machine), 임베디드 디바이스에 탑재되는 자바 플랫폼과 관련된 일을
하였다. 아이폰의 매력에 빠져들면서 번역 및 개발을 취미로 삼게 된다.
아이폰 앱 개발은 반짝이는 아이디어를 빛의 속도로
구현해야 한다. 하지만, 개발 프로젝트 진행은 늘 도전의 연속! 문제는 도처에 도사리고 있으며 해결은 언제나 개발자의 몫이다. 이 책은 그런
경험을 가진 사람들의 이야기다. 무엇보다도 그들의 공유 정신이 빛난다. - 이창신(한국 유일 자바 프로젝트
커미터)
고급 아이폰 개발 기술에 대해 다루는 책이다. 11개
장은 실제 앱을 만들면서 얻은 경험, 고급 정보가 잘 녹아 있다. 경험 많은 아이폰 개발자에게 귀중한 자료가 될 뿐 아니라, 이제 개발을
시작하는 분들에게 완성도 높은 앱 개발 안내자가 될 것이다. - 신상호 (H2Soft 대표 신상호 / KB
iplustar 개발)
아이폰 앱을 개발만 해놓으면 다 잘될 것 같지만,
기술만으로는 아무것도 얻을 수 없다. 끊임없이 기획하고 시련과 즐거움을 견뎌내야 한다. 기술 이전에 경험을 느끼게 해주는 이 책은 무작정 잘 될
것이라는 막연한 기대감을 좀 더 현실적이고 설레는 희망으로 바꾸어 준다. - 유동근 (아이폰 & 아이팟
프로그래밍 저자)
<줄거리> 11개의 아이폰 실전 프로젝트를 통해 아이폰 고급 개발 기법과 노하우를 고스란히 전달한다.
-
프로젝트 진행 시 참고할 수 있는 고급 레퍼런스
- 실전 프로젝트에서의 실행착오를 줄여주는 개발 과정 수록
- 아이폰 실무 개발자
(Objective-C, Cocoa, OpenGL 습득자).
- 프로젝트 수행을 위해 한 차원 높게 자기 개발을 하려는 개발자.
-
난항에 빠진 아이폰 프로젝트를 구해낼 기법을 찾고 있는 개발자
- 생기 있는 게임을 만드는 파티클 시스템
- 알림 메시지를 이용한
네트워크 게임 개발
- 실시간 스트리밍 오디오 플레이어 개발
- 상황에 따라 빠르게 대처하는 디버깅 도구와 기법
-
SQLite를 이용한 데이터-드리븐 앱 개발
- 코어 데이터와 하드코어 디자인
- 코어 데이터와 Three20을 이용한 이메일 앱
개발
- 와이파이를 이용한 통신
- 반응속도 향상을 위한 팁과 트릭!
- 애플의 푸쉬 알림 서비스
- OpenGL ES를
이용한 살아있는 이미지 구현
<책속으로> 1장 파티클 시스템: 생각보다 쉽고 재미있다
1. 파티클로 게임에 생기를
불어 넣기
2. 아이폰에 맞는 파티클 시스템
예제 코드 살펴보기
게임의 기본 흐름
파티클 시스템의 해부
파티클
만들기!
퇴화된 삼각형
코드로 돌아가자
랜덤 숫자와 초기 조건
파티클의 분출
3. 파티클 시스템 트윅
포스가
파티클과 함께 하기를
4. 놀랍고 화려한 꿈의 파티클
보간법
색이 변하는 파티클
맺음말
2장 인터넷으로
하는 체스: Deep Green으로 즐기는 메시지 통신 게임
1. Deep Green은 이미 인기 있는 게임이다
2. 해야 할
일들
친구를 게임에 초대하기
초대 수락하기
체스 말 움직이기
알림 메시지 받기
3. 소중한 자산과도 같은
도구들
4. 이야기는 그만, 코딩의 시작!
도구들 설치하기
웹 서비스 코딩하기
디바이스에서의 작업
체스 말
움직이기
맺음말
3장 오디오 스트리밍: 코어 오디오 탐험
1. 여보게, 나는 음원을 재생할 수 있는
애플리케이션을 개발할 수 있다네…
2. MPMoviePlayerController: 참 쉽군요!
3. 더 나은 방법을
찾아서
시스템 사운드를 이용하는 방법
AVAudioPlayer: 베타 버전에는 없는 방법
4. 코어 오디오를 가지고 카우보이처럼
해결하는 방법
이제 절반까지 도달한 것일세: 오디오 큐 서비스
조금만 힘을 내면 목표 지점이다: 오디오 파일 스트림 서비스
5.
애플리케이션에 모든 것을 집어 넣자
한 가지 더
6. 실행!
7. 아이폰 3.0과 이후
작업
맺음말
4장 당장 버그를 때려잡자! 아이폰에서 디버깅하기
1. 전제 조건
2.
Objective-C vs C/C++
3. 당신이 코드를 작성하는 사이에
커스텀 Asserts
커스텀
로깅
#define 사용하기
4. 크래쉬!
테스터로부터 크래쉬 로그 받기
우리는 dSYM 파일들을 보관하고 있습니다
확실합니까?
크래쉬 로그를 심볼화하기
atos 사용하기
5. 재현이 어려운 크래쉬들을 재현하는
방법
스레드
시스템
레이스 컨디션
6. 디버깅의 과학적인 접근방법
가설을 세운다
가설을 위한 검증 절차
계획하기
가설을 증명하거나 혹은 부정하거나
크래쉬의 발생 확률 높이기
7. 콜 스택 정보를 갖고 있다. 그러나…
코드의
시작
메모리 깨짐이란 무엇인가?
메모리 깨짐 확인하기
메모리 문제 감지도구
변수값 보기
링크 맵
파일
맺음말
5장 잠깐 기다려봐!: SQLite로 데이터 기반 애플리케이션 만들기
1. 지름길로 가기 위해
절벽에서 점프하다(왜 이런 선택을 하게 되었는가)
2. 아이폰 앱 개발을 시작한 이유
3. 아이폰의 데이터 기반
애플리케이션
4. 액티브 레코드: 데이터에 접근하는 간단한 방법
5. C API를 감싸는 데이터베이스 랩퍼:
ISDatabase
예제 프로젝트 셋업
데이터베이스 생성과 초기화
데이터베이스에 연결하기
간단한 요청 생성
6. 고급
SQL
중복된 Create 구문 방지하기
파라미터 처리
리펙토링과 정리
여러 Statement 구문을 트랜잭션 단위로
그룹화하기
7. 간단한 액티브 레코드 레이어 작성: ISModel
데이터베이스 연결 유지하기
모델 객체: Grocery
아이템
Grocery들이 매핑되는 방법
저장
갱신
삭제
식료품 아이템 찾기
모든 것들을 한
자리에
8. 간단한 마이그레이션
9. 다른 구현 방법
맺음말
6장 코어 데이터와 하드코어 디자인
1. 코어 데이터의 역사?
손님은 왕이다
2. 첫 번째 코어 데이터 어플리케이션
첫째, 코드를 훔쳐라(음악이
아니라!)
모든 객체에 대한 뷰
첫 크래쉬거나 아니거나!
3. 아이폰 OS를 위한 코어 데이터 개발 설명서: 모델 마이그레이션
관리
간단하게 마이그레이션을 할 수 있다
새로운 개체 추가하기
4. 키-값 코딩을 사용하여 재사용이 가능한 객체
만들기
5. 원격 데이터베이스: 모든 것을 넷(Net)으로!
맺음말
7장 코어 데이터와 Three20을 이용한
애플리케이션 이메일 기능
1. 간단한 오프라인 SMTP 클라이언트
2. 사용자 인터페이스 만들기
Xcode
주물러보기
OfflineMailerAppDelegateh에 있는 인스턴스 변수 설정
UIApplication 델리게이트
초기화
3. 코어 데이터로 작업하기
코어 데이터 스택의 이해
Three20 추가하기
4. 사용자 인터페이스를 이용한
여행
5. DataManager로 최상위 레벨 데이터 관리하기
6. Three20와 TTMessageController에 대한
고찰
7. 메시지 작성과 전송
8. 코어 데이터 모델 만들기
9. 스레드 방식의 메시지 전송을 위한 SKPSMTPMessage
해킹
10. SKPSMTPMessage의 NSRunLoop 설정
11. 온라인 모드로 돌아가기
맺음말
8장
iTap은 네트워크 문제들을 어떻게 해결했을까?
1. iTap과 iTap 리시버
iTap
iTap 리시버
2.
iTap에 대한 아이디어는 어떻게 나오게 되었고 또 진화해 왔는가?
3. 주요 문제들
아이폰에는 물리적 버튼이 없다
서드-파티
어플리케이션은 USB나 블루투스를 사용할 수 없다
맥과 PC 모두 지원하기
컴퓨터와 디바이스 간의 사용자 친화적인 자동 검색
기능
4. 프로그래머가 바라본 아이폰의 와이파이 네트워킹
예제 코드에 관하여
소켓의 소개
소켓 생성
CFSocket을
이용한 네트워크 이벤트 처리
네트워크 설정값 얻어오기
네트워크 상의 모든 기기와의 통신
와이파이 사용 가능 여부
확인하기
파워 관리 규칙 준수
5. iTap의 네트워크 서브시스템
Bonjour를 사용할 것인가, 사용하지 않을
것인가
알림 메시지를 이용한 컴포넌트 간의 통신
직접 만든 자동검색 기능
맺음말
9장 반응성 향상을 위한 팁과
트릭
1. AAPLot으로 주식 가격에 대한 기록 도표 만들기
실행할 때마다 데이터 저장하기
Plists를 이용한 데이터
영구 저장
아이폰 어플리케이션 샌드박스에 데이터 저장하기
2. AAPlot에 임시 데이터 뿌리기
3. 여러 개의 주식 그래프
보여주기 : Stockplot
4. 동시 수행
NSOperation, NSOperationQueue 그리고
블록
Plausible Blocks 컴파일러 설치하고 프로젝트에 추가하기
StockPlot에서 블록, NSOperation,
NSOperationQueue 사용하기
5. 효율적으로 많은 양의 데이터 보여주기
UIScrollView
확대/축소
UIScrollView 확대/축소의 비밀
6. 확대/축소 후에 UIScrollView 해상도 재설정
7. 오프-스크린
컨텍스트에 그리기
8. 관찰, 팁 그리고 트릭
맺음말
10장 애플 푸쉬 알림 서비스를 이용하는 클라이언트
만들기애플의 푸쉬 알림 서비스를 파헤치다
1. 애플의 푸쉬 알림 서비스란 무엇인가?
2. 당신에게 필요한 것
3.
1단계: 클라이언트 생성
애플리케이션 델리게이트
수신되는 알림 메시지 처리
소리
빌드와 실행! 이런, 그렇게 빠르진
않군…
4. 2단계: 인증서 만들기
프로그램 포탈 과정 실습
포털로 돌아와서
코드 사이닝에 모바일 프로비저닝 파일
넣기
5. 3단계: 서버 설정
스크립트에 대한 고찰
서버 파일 내려 받기
6. 마무리 작업
클라이언트
연결하기
7. 추가 고려 사항/고급 주제
피드백 서버
SSL 서버 연결
개발 샌드박스에서 실제 제품으로 이동
개발
버전 vs 특별 배포 버전
모바일 프로비저닝 파일
디버깅
사용자 경험
오픈 소스 코드
제공되는 솔루션
맺음말
11장 생동감 있는 그래픽 효과를 만드는 OpenGL ES 기법OpenGL ES 기법
1.
시작
2. 1단계: OpenGL 라이팅
3. 환경 매핑으로 눈길을 돌리다
4. 구 환경 매핑 구현
5. 환경 매핑과 확산
텍스처의 결합
각 픽셀의 반사
아이폰 3GS