Saturday, August 22, 2009

iphone appli개발 대한 접근 전략

최근, 자꾸 옆에서 iphone 어플리케이션을 만들지 않겠느냐며 옆구리를 찌르는 사람이 있습니다.
솔직히, 작은 디스플레이를 가진 디바이스의 소프트웨어 개발은 까닭없이 끌리지 않아 지금껏 관심이 없었습니다. (아이폰도 가지고 있지 않구요. )

하지만, 제쪽도 개발이란 것이 너무나 웹 어플리케이션에 치우쳐져 있었기 때문에, Stand-Alone 어플리케이션의 개발이 그리워진 이유도 있고, Computer-Aid Study라면 iphone은 적당한 디바이스가 아닐까- 하는 생각도 있어, 가/부 를 대답하기까지 한달 정도 시간을 달라고 해서, 조금씩 보고 있습니다.
(만들어 보고 싶은 소프트웨어라면, 외국어 학습에 도움이 되는 소프트웨어를 만들어 보고 싶습니다. iphone에 음성인식기능이 있나요? "사까나"라고 말하면, 魚「さかな」:물고기 라고 나오는 어플리케이션이 있으면 좋을텐데.!)



우선 맥에서의 개발 경험이 거의 전무하기 때문에 가능한 한, 윈도우즈로 부터 시작하는 방법을 찾고 있었습니다. 이에 대한 전략(아직 시도하고 있지 않고, 이러한 방법으로 접근하면 될 것 같다라는)을 정리해보려 합니다.

1. Objective-C
Objective-C는 C의 확장문법입니다. NextStep사가 개발했습니다.

2. cocoa
코코아는 API이며, 즉 C 라이브러리입니다.

코코아는 Foundation 프레임웍과 Application Kit 프레임웍 두가지로 나눠집니다.

2.1 Foundation 프레임웍은 Objective-C클래스의 Base계층을 구현한 것입니다.
Objective-C의 문법을 구현한 것 이외에도 유틸리티 클래스와 메모리관리 규칙과 유니코드, 객체의 persistance등의 함께 제공합니다.
(정확하지는 않지만, VisualC의 MFC의 클래스들과 같은 것을 제공하는 것이라고 이해해도 좋을 것 같습니다.)
#import
에 해당하는 부분입니다.

NSArray, NSMutableArray,
NSDictionary, NSMustableDictionary,
NSSet, NSMutableSet, NSCountedSet
우선 정도를 익히고, 나머지는 습작 프로젝트를 통해 익혀나가면 좋을 것 같습니다.


2.2 Application Kit 프레임웍은 Foundation 프레임웍을 사용한 GUI class를 구현합니다.
#import
에 해당하는 부분입니다.

코드로 윈도우들을 만들고 다루는 방법.
Interface Builder로 디자인한 정보가 담긴 .nib파일 생성해 Outlet으로 연결해 정보를 다루는 방법.
(크로스플랫폼을 위해서라면 르네상스라는 GNUStep라이브러리를 이용하는 방법도 봐두면 좋을 것 같습니다.)
----

여기까지는 GNUStep을 사용하면 윈도우즈에서도 개발이 가능합니다.

그런데 맥에서는 Xcode라고하는 (이전의 이름은 Project Builder), MS의 Visual Studio와 같은 IDE가 있는데, 이 IDE는 Interface Builder를 사용하여 윈도우를 설정합니다.
Interface Builder는 Visual Studio의 윈도우 Designer와 비슷하다고 생각할 수 있습니다.
Interface Builder를 사용해서 디자인한 윈도우는 .nib (아마도 nextstep interface builder의 약자겠죠?)라는 binary파일로 저장해서 Xcode에서 이 파일과 링크해 어플리케이션을 build하는 것이 보통인 것 같습니다.

최근의 GNUStep에서도 Gorm을 통해서 nib파일을 읽고 쓸 수 있다고 합니다.
GnuStep은 또 .nib 파일은 맥에서만 사용되므로, 크로스플랫폼으로 사용가능한 xml포맷의 르네상스라는 것을 것을 소개,권장하고 있습니다.

----

여기까지 되었다면, 이제는 맥이 필요하게 될 것 같습니다.
이유로는, 윈도우즈용에서 작성한 소스가 맥에서 제대로 컴파일 되어 동작하는지를 검증하는 목적과
iphone SDK로 제공하는 특별한 api를 사용하기 위해서입니다.

아직 진행중인 탐색과정이며, 모르고 있는 툴, 사용해 보지 못한 툴도 너무 많습니다.
최적의 개발방법을 찾는데는, 아마 조금 더 걸릴 것 같습니다.

.

No comments: