인터페이스 빌더 없이 하는 아이폰 리얼 프로그래밍
- 지은이박지성, 최경화
- ISBN : 9788960772472
- 30,000원
- 2011년 11월 22일 펴냄 (절판)
- 페이퍼백 | 488쪽 | 188*250mm
- 시리즈 : 모바일 프로그래밍
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
[ 소개 ]
Real Programming! 인터페이스 빌더 없이 하는 아이폰 애플리케이션 프로그래밍의 정석
이 책은 인터페이스 빌더를 전혀 사용하지 않고 UI 구성부터 비즈니스 로직, 데이터 통신 등을 개발할 수 있게 구성했습니다. 인터페이스 빌더를 사용하지 않는 아이폰 애플리케이션 프로그래밍의 정석을 익히고 싶은 분을 위한 책입니다. 또한 이 책은 프로그래밍에 관해 조금만 알아도, 혹은 아무런 지식이 없더라도 쉽게 예제와 함께 따라가며 실제적인 코딩이 가능하게 구성했습니다. 오브젝티브C 프로그래밍 언어에 대한 개념을 이미 습득했다면 이 책의 내용을 따라하기가 더욱 수월하겠지만, 잘 몰라도 쉽게 따라할 수 있는 책입니다.
[ 이 책에서 다루는 내용 ]
■ 테이블 뷰, 피커 뷰 등과 화면을 구성하는 클래스들을 인터페이스 빌더 없이 구성하는 방법
■ 이벤트 처리와 애니메이션 효과
■ 맵 뷰, 카메라 컨트롤, 포토 앨범 활용과 동영상 플레이, 메일 전송과 메일에 파일을 첨부하는 방법
■ 서버와 통신하는 방법과, 서버에서 수신한 데이터를 분석하고 활용하는 방법
■ NSUserDefault와 코어 데이터, SQLite를 이용해 애플리케이션에서 사용하는 데이터들의 저장과 이용 방법
■ PDF 파일을 이미지로 변환하는 방법, 쿼츠 코어를 이용한 페이지 표현 방법
■ 블루투스를 통한 근거리 통신 구현, 증강현실 구현 방법
[ 이 책의 특징 ]
■ 인터페이스 빌더를 전혀 사용하지 않고 UI를 구성할 수 있다.
■ 예제와 함께 따라가며 실제적인 코딩이 가능하게 구성했다.
■ 프로그래밍을 위해 필요한 클래스에 대한 정보만을 간추려 설명했다.
[ 이 책의 대상 독자 ]
아이폰 애플리케이션을 개발해보고 싶지만 프로그래밍 지식이 없는 사람, 간단한 프로그래밍 기술은 있지만 오브젝티브C 언어를 사용해본 경험이 없는 사람, 그리고 여러 가지 책을 사서 공부해봤지만 실제적으로 프로그래밍을 시작하려 할 때에 어려움을 겪는 사람, 마지막으로 인터페이스 빌더를 사용하지 않는 개발 방법을 접하고 싶은 사람을 위한 책이다. 애플리케이션을 개발하기 위해 필요한 모든 것을 이 책 한 권으로 얻을 수 있으므로 개념적인 이해가 아닌 실제적인 프로그래밍을 원하시는 개발자라면 누구에게나 좋은 책이 될 것이다.
[ 이 책의 구성 ]
1장 iOS SDK 시작하기 아이폰 애플리케이션 개발을 위해 필요한 것들과 준비 과정, 엑스코드(Xcode) 개발 툴의 사용 방법, 새로운 프로젝트 생성에 관한 내용을 다룬다.
2장 보여주는 클래스 화면을 구성하는 데 자주 사용되는 UIView, UILabel, UIImageView, UIScrollView 클래스에 대한 내용과 활용 방법을 다룬다.
3장 조작하는 클래스 애플리케이션을 조작하는 데 사용되는 UIButton, UISwitch, UITextField, UIWebView 클래스에 대해 알아보고 실제로 액션을 받아 애플리케이션을 동작시켜본다.
4장 테이블 뷰 리스트와 메뉴 등을 구성하기에 편리한 UITableView 클래스에 대해 알아보고, UITableView를 가장 흔히 사용하는 부분과 효율적으로 활용하는 방법을 알아본다.
5장 피커 뷰를 이용한 선택 여러 가지 목록에서 하나를 선택하기 편리하게 제공되는 UIPickerView와 날짜를 선택하는 데 사용하는 UIDatePicker에 대해 알아보고, 다양하게 피커를 구성하는 방법을 알아본다.
6장 클래스로 효과 주기 클래스들을 조합해 새로운 효과를 구성하는 방법을 알아본다. UIScrollView에 따라 동작하는 UIPageControl, UIButton, UIView를 이용해 나타내는 효과들을 알아본다.
7장 이벤트 처리와 애니메이션 UIAlertView를 이용해 알림 창을 나타내는 방법과 알림 창을 이용해 다른 기능과 연결시키는 방법을 다룬다. 애니메이션 효과를 이용해 뷰를 움직이는 효과를 줘 다이내믹한 조작을 연출한다.
8장 맵 뷰로 지도 표현 애플리케이션에서 지도를 이용하는 방법과 자체 제공되는 코어 데이터로 데이터베이스를 활용하는 방법을 다룬다.
9장 다양한 기능 활용 카메라 컨트롤, 포토 앨범 활용과 메일 전송, 동영상 플레이에 관한 부분들을 다룬다. 메일에 파일을 첨부하는 방법도 알아본다.
10장 네트워크 프로그래밍 서버와 통신하는 방법과 서버에서 수신한 데이터를 분석하고 활용하는 방법을 다룬다.
11장 데이터베이스 NSUserDefault와 코어 데이터, SQLite를 이용해 애플리케이션에서 사용하는 데이터들을 저장하고 이용하는 방법을 다룬다.
12장 앱스토어에 등록 애플 개발자 프로그램을 등록하는 방법과 아이폰으로 실제 테스트를 진행하는 방법, 완성된 애플리케이션을 앱스토어에 업로드하는 방법을 다룬다.
13장 PDF 파일 이용 아이폰에서 PDF 파일을 열어 이미지로 변환해 표현하거나 쿼츠 코어를 이용해 페이지를 표현하는 방법을 알아본다.
14장 고급 기능 사용 일반 애플리케이션에서 주로 사용되지 않는 고급 기술을 다룬다. 블루투스를 통해 근거리 통신을 구현하는 방법과 증강현실을 구현하는 방법을 간단히 소개한다.
15장 완성도 높이기 가로, 세로로 돌아가는 화면의 상태, 아이튠즈를 이용해 애플리케이션에 파일을 추가할 수 있게 하는 방법 등 간단하지만 세밀하게 애플리케이션의 완성도를 높여주는 다양한 요소를 알아본다.
부록 plist 항목과 엑스코드 단축키 주로 사용되는 plist의 항목과 엑스코드 툴의 단축키에 대한 자료를 수록했으므로 개발에 참고하면 좋다.
목차
목차
- 1장 iOS SDK 시작
- 1.1 준비하기
- 아이폰이란?
- 1.2 프로젝트 생성
- 다양한 프로젝트 템플릿
- 뷰 컨트롤러를 화면에 나타내기
- 1.3 엑스코드 사용하기
- 프로젝트 설정
- 행 번호 나타내기
- 오거나이저 실행
- 자동 완성 기능
- 1.1 준비하기
- 2장 보여주는 클래스
- 2.1 화면을 구성하는 UIView
- 2.2 텍스트를 표현하는 UILabel
- 2.3 이미지를 표현하는 UIImageView, UIImage
- 2.4 큰 화면을 스크롤하는 UIScrollView
- 2.5 정리
- 3장 조작하는 클래스
- 3.1 터치로 동작하는 UIButton
- 3.2 취사선택이 가능한 UISwitch
- 3.3 텍스트 입력이 가능한 UITextField
- 3.4 웹사이트 로드가 가능한 UIWebView
- 4장 테이블 뷰
- 4.1 테이블 뷰 관련 메소드와 프로퍼티
- 4.2 테이블 뷰를 이용한 리스트 표현과 페이지 이동
- 4.4 더 보기 기능
- 4.5 테이블 뷰 셀의 순서 바꾸기와 삭제
- 5장 피커 뷰를 이용한 선택
- 5.1 메소드와 프로퍼티
- 5.2 1단 피커
- 5.3 연관 피커
- 5.4 날짜와 시간 picker
- 6장 클래스로 효과 주기
- 6.1 버튼과 뷰를 이용한 탭 효과
- 6.2 페이지 컨트롤과 스크롤 뷰를 이용한 페이지 이동 효과
- 6.3 문자열의 길이에 따른 정렬
- 7장 이벤트 처리와 애니메이션
- 7.1 알림 창 이용
- 애플리케이션 실행
- 앱스토어로 연결
- 전화 걸기
- 7.2 움직이는 팝업 창 만들기
- 7.3 터치로 뷰 이동
- 터치 이벤트란?
- 터치로 이동
- 제각각 움직이는 뷰
- 7.1 알림 창 이용
- 8장 맵뷰로 지도 표현
- 8.1 맵 뷰의 메소드와 프로퍼티
- 8.2 지도에 현재 위치 표시
- 8.3 커스텀 핀을 꽂고 상세 정보 표현
- 9장 다양한 기능 활용
- 9.1 사진 촬영과 이용
- 9.2 메일 전송
- 메일 보내기
- 파일 첨부
- 9.3 동영상 플레이
- 10장 네트워크 프로그래밍
- 10.1 URL 요청과 URL 연결
- 10.2 JSON과 XML
- 10.3 UIWebView를 이용한 통신
- 10.4 서버의 데이터 이용
- 11장 데이터베이스
- 11.1 간편하게 쓰고 읽는 유저 디폴트
- 11.2 코어 데이터 이용
- 11.3 SQLite 사용
- 12장 앱스토어에 등록
- 12.1 개발자 프로그램 추가
- 12.2 아이폰을 이용한 테스트
- 인증서 생성
- 12.3 앱스토어에 업로드
- 13장 PDF 파일 이용
- 13.1 PDF 데이터를 이미지로 표현
- 13.2 쿼츠 코어로 PDF 페이지 표현
- 14장 고급 기능 사용
- 14.1 블루투스 사용
- 14.2 증강현실 구현
- 15장 완성도 높이기
- 15.1 현재 사용 중인 기기의 식별자 값
- 15.2 기기의 방향
- 15.3 네트워크 연결 상태 확인
- 15.4 애플리케이션의 이름 변경
- 15.5 하나의 프로젝트로 여러 개 설치
- 15.6 iOS 버전 인식
- 15.7 레티나 디스플레이 판별
- 15.8 아이튠즈로 애플리케이션에 파일 추가
- 15.9 상태 바 컨트롤
- 15.10 아이콘의 글로스 효과 컨트롤
관련 블로그 글
인터페이스 빌더 없이 하는 아이폰 리얼 프로그래밍
박지성, 최경화 지음 | 모바일 프로그래밍 시리즈
488쪽 | 30,000원 | ISBN 9788960772472 | 2011년 11월 22일 출간
YES24, 교보문고, 인터파크, 강컴, 알라딘, 반디앤루니스, 대교리브로
어느덧 아이폰이 우리나라에서 공식 출시된 지 지난 11월 말로 만 2년이 지났습니다. 아이폰이 국내 출시된 이후로 우리나라에는 천지개벽할 정도는 아니어도 참 많은 변화가 일어났습니다. 이는 전 세계 동시대적으로 일어난 사건은 아니었고, IT 강국이라 불리우는 나라로서는 사실 많이 뒤늦은 경험이었지요.
아이폰이라는 애플의 모바일 기기가 불러온 것 중 하나는 앱스토어를 통한 애플리케이션 개발과 출시를 들 수 있겠습니다. 기업이든 개인이든 누구나 애플 개발자 프로그램에 등록하고 만든 앱을 자유롭게 올림으로써 스스로 퍼블리셔의 역할까지 할 수 있게 된 것이죠. 물론 한편에서는 극단의 폐쇄성이라고 일컬어지는 애플이라는 큰 울타리 안에서 가능한 일이었지만 말입니다.
맥 컴퓨터, 오브젝티브C, 아이폰OS SDK 등 당시만 해도 흔히 접하기도 갖추기도 어려운 이런 낯선 환경 속에서도 애플의 아이폰 개발에 관한 열기가 뜨거울 수밖에 없었던 것은 어쩌면 애플에서 제공하는 엑스코드(Xcode)와 인터페이스 빌더(Interface Builder)라는 마당이 잘 갖춰졌기 때문인지도 모릅니다.
아이폰 SDK 베타 2 버전부터 제공된 아이폰용 인터페이스 빌더는 GUI도구를 써서 애플리케이션의 UI를 쉽게 제작할 수 있는 아주 유용한 툴입니다. 윈도우와 뷰, 뷰를 구성하는 요소를 배치하고 속성을 손쉽게 편집하는 기능을 제공하죠. 인터페이스 빌더의 역사는 1980년대 후반 넥스트스텝(NextSTEP) 시절로부터 거슬러 올라갑니다. 위키피디어에 따르면 팀 버너스 리가 넥스트 워크스테이션을 이용해 월드와이드웹을 개발할 때 쓰인 툴 중 하나가 바로 인터페이스 빌더였다고 하지요. 모두가 잘 아시다시피 인터페이스 빌더는 엑스코드4가 출시되면서 통합됐습니다.
손쉬운 인터페이스 빌더, 그러나 코드의 라이프사이클은? 유지보수는?
1990년대 후반에서 2000년대 초반 인터넷 붐과 함께 웹사이트 제작이 열풍이었습니다. 드림위버, 나모웹에디터, 손쉽게 메뉴를 딸깍딸깍 누르는 것만으로도 홈페이지를 뚝딱뚝딱 만드는 기능을 제공하면서 너도나도 홈페이지를 만들어 사이버 집을 꾸리는 게 유행이었죠. 지금 생각하면 얼마 되지 않은 시기인데 마치 강산은 열 번은 변한 느낌이 드네요.
이렇듯 간단한 웹 제작 도구로 만든 사이트, 막상 코드를 열어 유지보수를 하려 하면 골칫덩어리 자체였습니다. 유지보수는커녕 코드를 해석하기도 힘들고, 어디서부터 어디까지 손을 대야 할지 모를 정도였죠. 물론 지금은 어도비는 드림위버만으로도 웹표준은 물론 향후 HTML5까지도 완벽히 대응할 수 있는 툴로 널리 활용시키겠다는 포부가 크다는 이야기도 들립니다.
이것이 개인 프로젝트가 아닌 기업 프로젝트라면 이야기는 달라집니다. 기업 홈페이지나 모바일 애플리케이션은 많은 인원의 협업도 일어나며 담당자 교체도 수시로 일어납니다. 소스코드의 라이프사이클도 짧지 않으며, 주석만으로도 코드의 정체성과 역할을 충분히 전달해야 합니다. 한눈에 파악해서 언제 어디서나 누가 수정을 하고 향후 개선작업을 하더라도 손쉽게 작업할 수 있어야 합니다.
견고한 클린 코드, 유용한 레거시 관리를 위하여
이제는 인터페이스 빌더에 대한 의존도를 낮춰야 한다!
그야말로 아이폰 애플리케이션 개발의 유용한 레거시 관리를 위해 이젠 과감히 인터페이스 빌더를 버려야 한다고 이 책의 저자들은 이야기 합니다.
잠시 저자의 말을 들어볼까요.
아이폰 개발은 맥에서 엑스코드(Xcode)로 개발하는데, 화면을 구성하는 인터페이스 빌더라는 개발 툴을 제공합니다. 인터페이스 빌더를 이용하면 개발이 좀 더 쉬워집니다. 각 객체에 대해 필요한 델리게이트나 뷰 템플릿 등을 제공해주므로 코딩 시간도 줄고, 객체의 다양한 속성도 속성 창에서 손쉽게 찾아 설정하고, 좌표를 일일이 계산하지 않아도 되죠. 하지만 2인 이상이 개발을 진행하는 협업 프로젝트에서는 인터페이스 빌더라는 툴이 오히려 방해가 되기도 합니다.
가장 큰 단점은 개발 소스의 가독성이 떨어진다는 점입니다. 유지 보수 측면에서 소스의 가독성이 떨어진다는 점은 치명적일 수밖에 없는 노릇이지요. 때문에 중대형 프로젝트에서는 인터페이스 빌더의 사용을 지양하고 일명 막코딩으로 구현하기를 권장합니다.실례로 모 대기업의 애플리케이션을 개발할 당시 초기에는 인터페이스 빌더를 이용해 모든 화면을 구성했습니다. 하지만 초기에 기획하지 않았던 가로 모드에 대한 스펙이 추가되면서 문제가 드러나기 시작했습니다. 가로모드에 대한 부분을 고려하지 않고 개발했기 때문에 해당 스펙을 추가하기란 불가능했습니다. 때문에 무리를 해서라도 xib(인터페이스 빌더를 이용해 개발한 파일)를 모두 들어내고 코딩만으로 화면을 다시 개발했습니다. 결과적으로는 무진장 힘들었고 일정에 지연이 조금 있었지만, 이후 클라이언트의 새로운 요건을 수용하거나 유지 보수 측면에서는 아주 탁월한 선택이었습니다. 해당 기업에서는 저희들의 개발 방법론을 가이드로 작성해 이후 개발을 진행하는 업체들에 배포해 인터페이스 빌더 사용을 초기부터 배제합니다.
거의 모든 책과 예제들이 이 인터페이스 빌더를 이용한 개발 방법을 제시하고 설명합니다. 하지만 이 책에서는 인터페이스 빌더를 전혀 다루지 않습니다. 인터페이스 빌더를 이용해 개발하는 방법이 잘못된 방법이라고 말하고 싶지는 않습니다. 다만 코드만 보고 프로그램의 라이프 사이클을 읽을 수 없고 인터페이스 빌더를 왔다 갔다 해야 해서 여간 불편한 것이 아닙니다. 주석을 남길 수도 없지요.우리는 유지 보수를 위해 담당자들에게 인수인계라는 어렵고도 귀찮은 작업을 해야만 하기에 알아보기 쉽게 코딩을 해야만 하는 의무가 있습니다. 최대한 많은 주석을 작성해 소스에 대한 가독성을 높여 프로그램에 대한 이해도를 높이는 것이 바람직하다 할 수 있습니다. 때문에 가능하다면 인터페이스 빌더를 이용하지 않고 개발을 진행해 많은 주석을 남겨야 할 필요가 있는 것이죠.
- 대표저자 박지성 / 저자의 말 중에서
이만하면 이 책의 집필 의도는 충분히 전달되지 않았을까 싶습니다. 인터페이스 빌더는 충분히 유용한 개발도구이며, 예쁜 UI를 매우 빠르고 손쉽게 만드는 데는 더할 나위없는 도구입니다. 그러나 장기적인 안목으로 개발해야 하는 프로젝트가 있을 때는 인터페이스 빌더 없이 개발하는 방법도 반드시 알아야 합니다. 사수가 화살이 떨어지면 근처에 있는 나무라도 깎아 촉을 세우고 사냥을 해야 하지 않겠습니까. 연필 깎는 법은 모르고 매번 자동연필깎이에 연필을 깎아 쓴다면 정작 칼만 쥐어졌을 때는 손에 피가 나기 마련일 테니까요.
좀 더 쉬운 이해를 위해 한 가지 예를 들어보겠습니다.
아이폰 개발자라면 모두들 잘 아실 아주 초보적인 내용입니다.
저희 책 p43에 나오는 예제로서 3가지 뷰를 상하위 뷰로 나눠, 빨강, 파랑, 까망 오브젝트의 순서로 배열하는 코드를 설명합니다. 우선 결과물을 먼저 보시죠.
이를 인터페이스 빌더로 구현하는 그림은 아마 낯익으실 겁니다. 일단 우측하단의 Objects에서 UIView를 끌어다 화면에 올려놓고, 다음그림과 같이 우측상단의 네 번째 탭을 선택해 색상을 변경한 다음,
우측 상단의 다섯 번째 탭을 선택해 좌표와 크기를 미세하게 조정합니다.
말하자면, 이렇게 기존의 아이폰 애플리케이션 책이 인터페이스 빌더를 위주로 앱 개발 과정을 천편일률적으로 설명하는 반면, 우리 책에서는 3가지 UIView와 addSubView를 이용해 직접 하드코딩 하는 과정을 설명해드립니다. 책에서는 예제 2-1(43쪽)과 같이 코드만 보여드리지만 실제로 여러분이 엑스코드 환경에서 작업하는 그림은 다음과 같을 것입니다. 좀 머리가 아프신가요? ^^ 선택은 여러분의 몫입니다.
궁극의 아이폰 애플리케이션 하드코딩을 위한 입문서
이 책은 아이폰 애플리케이션 초급자가 덥썩 시작할 책은 아닐 수도 있습니다. 어느 정도 개발에 대한 개념이 잡힌 중급 개발자, 혹은 기초부터 차근차근 공부하고 싶은 개념찬 초급 개발자라면 쉽게 읽을 수 있도록 저자 두분은 상세한 길을 안내합니다. 박지성, 최경화 두 저자분은 실무에서 유수한 기업 애플리케이션을 개발한 분들로서 특히 박지성 님은 현대카드 애플리케이션의 핵심 로직을 개발한 분이기도 합니다. 또한 이 책의 전체적인 기획을 총괄한 (주)토리( www.toree.co.kr 대표:서상열)는 스마트 애플리케이션 서비스를 전문으로 개발하는 기업으로서, 여러 기업 고객과 솔루션을 개발하며 교육 사업도 펼치고 있습니다.
실전 현업 개발자들이 자신들의 경험을 담아 이야기하는 아이폰 애플리케이션 개발의 정석, 여러분도 이 책에서 느껴보시기를 바랍니다. 이 책은 이미 11월 말에 출간된 책으로서 YES24, 교보문고, 인터파크, 강컴, 알라딘, 반디앤루니스, 대교리브로를 비롯한 인터넷 서점이나 오프라인 서점에서 언제든지 바로 구매하실 수 있습니다. :)
여러분 모두 어떤 환경에서도 흔들리지 않는 견고한 코드의 달인으로서, 기초부터 탄탄한 실력을 갖춘 아이폰 개발자가 되시길 바랍니다!
크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.