2월 공개를 약속했던 애플 아이폰의 SDK가 마침내 3월 7일 발표가 되었습니다. 아이폰이 갖고 있는 경제적 , 문화적인 영향력때문에 많은 사람들이  iPhone SDK를 기다려왔고 마침내 실체를 드러냈습니다. SDK의 총 크기가 2G가 넘는 것을 보면 애플에서 많은 것을 준비해 왔다는 것을 알 수 있었습니다. 스티븐 잡스가 주도한 SDK 발표를 보면 아이폰이 미국 스마트폰 시장에서 28% , 모바일 브라우져 시장에서 사파리가 71%를 차지하고 있다고 합니다. 이번에 SDK 발표 이후 더욱 생태계 확장이 가속화를 확신하는 것 같습니다.

Mac OS 10.5(레오파트)상에서만 설치 및 운영이 되고 , Object C 프로그래밍을 해야 하는 것 등 몇가지 부담을 제외하고는  iPhone 의 거의 모든 기능과 하드웨어를 활용할 수 있어 보입니다. 보다 자세한 것은 실제 테스트를 해 봐야 겠지만 공개한 자료와 라이브러리를 보면 GPS 정보에서 부터 혁신적인 Touch Screen 인터페이스 등 거의 모든 아이폰을 Feature를 이용하여 모바일 애플리케이션의 개발이 가능해 보입니다.

전체적으로 SDK는 크게 개발 도구와 개발 라이브러리로 구성되어 있습니다. 개발 도구는  크게 개발->테스팅->배포(아이튠) 라는 프로덕트 라이프 사이클을 지원하고 있습니다 -XCode 개발 환경, iphone simulator 테스트 환경, instruments 성능 개선 환경, interface builder. 개발 후 애플을 통해서만 합법적인 애플릿케이션의 배포가 가능합니다. 아이폰을 중심으로 한 생태계를 애플이 주도하겠다는 것을 분명히 한 셈이죠. 물론, 비합법적인 시장이 이후 더욱 활성화될 것은 분명합니다. 

사용자 삽입 이미지

SDK의 라이브러리는 크게 4개의 계층으로 구성되어 있습니다 - Core OS, Core Services, Media, Cocoa Touch. 

사용자 삽입 이미지

간략히 살펴보면 Core OS는 말 그대로 아이폰 운영체제의 커널입니다.  POSIX 쓰레드 , BSD 소켓, 파일 I/O, 메모리 관리 등 기본 유닉스의 베이직 커널을 사용하고 있습니다.
Core OS의 상단부에 위치한 Core Services는 3개의 프레임웍과 2개의 주요 라이브러리로 구성되어 있습니다. XML 처리를 위한 라이브러리로 libxml2와 libxslt와 정보관리를 위한 sqllite를 제공하고 있습니다. sqllite의 경우 모바일 상에서 오프라인  기능 지원을 위한 표준 으로 자리잡아 가고 있는 것 같습니다^-^.  또한 3개의 프레임웍으로 보안, 네트웍 , 코아 프레임웍을 제공하고 있습니다.

Core 계층들외에 Media 계층에서는 그래픽과 오디오를 다루기 위한 라이브러리를 제공합니다. 그래픽 렌더링 라이브러리로는 기존 맥에서의 그래픽 엔진인 Quartz 과  OpenGL 의 Embedded System 버전인 OpenGL ES 그리고 Animation 기능을 제공합니다.  아이폰에서 이미지 확대,축소 등 강력한 효과가 모두  OpenGL을 통해서 구현되는 것입니다. 그리고 오디오 라이브러리로  OpenAL 과  애플 레오파트에 새롭게 추가된 Audio Toolbox 라이브러와 기존의 Core Audio가 아이폰에서도 지원되고 있습니다.

마지막으로 가장 상단에 위치한 Cocoa Touch는 아이폰의 UI를  처리하는 데 4개의 프레임웍으로 구성되어 있습니다 - UIKit Framework , Addressbook Framework , Addressbook UI Framework , Core Location Framework.  이 들 프레임웍을 이용하면 멀티 터치 등이 가능한 애플릿케이션을 만들고 이를 아이폰 애플릿케이션에 통합할 수 있습니다.

개인적으로는 자바 플랫폼이 함게 탑재되었으면 하는 바램이었는데 포함되어 있지않아 무척 아쉬웠습니다. 더불어 아쉬운 점으로는 확장성에 대한 고려가 없어 보인다는 점 입니다. 하드웨어의 확장과 이에 따른 소프트웨어 확장이 함께 가능하다면 보다 풍부한 상상력이 가능하지 않을까 싶습니다. 가령, 기존 네이트 드라이브의 외장형  GPS를 아이폰에 연결한 후 인터넷의 맵 정보를 활용한 다양한 Location Service가 가능하지 않을까요? 물론 해킹을 통해 이미 이러한 것을 구현하고 있지만요! 아마 스티븐 잡스가 있는 한 이러한 확장성은 쉽지 않아 보이긴 합니다. 

Posted by 박재현
,