iPhone OS Overview wkoh+apple2008/03/07 12:04
애플에서 2008년 3월 6일 iphone 에 관련된 software roadmap에 대해서 발표했다.
이와 동시에 개발자를 위한 SDK의 발표과 개발관련 자료를 배포했는데, iPhone OS 에 관련된 overview 가 있어서 이렇게 올려놓는다.
iPhone OS Overview
iPhone OS 는 운영체제와 iPhone 과 iPod touch 디바이스에서 네이티브하게 응용프로그램들을 동작하게 하는 기술들을 포함합니다. 이는 공통된 전통(?)과 mac os x 와 많은 하부 기술들을 공유함하지만, iPhone OS 는 사용자의 요구가 분명히 다른, 모바일 환경의 요구를 충족하도록 설계되었습니다. 존재하는 Mac OS X 개발자들은 많은 친근한 기술들을 착을 수 있지만, 그들 역시 오직 iPhone OS 에서만 가능한 Multi-touch 인터페이스, 가속도계 (accelerometer) 지원등의 기술도 찾을 수 있을 것입니다.
more..
iPhone SDK는 iPhone OS 를 위한 응용을 개발하고, 테스트하고, 수행하고, 디버그하고, 튜닝하는데 칠요로하는 코드, 정보, 도구를 포함하고 있습니다. Xcode 도구는 iPhone OS 를 위한 개발을 지원하기위해서 업데이트되었습니다. 기본적인 작성, 컴파일, 그리고 작성한 코드를 위한 디버깅 환경을 제공하는 것뿐 아니라, Xcode는 당신의 로컬 매킨토쉬 컴퓨터에서 기본적인 iPhone OS 환경을 흉내내는 플랫폼인 iPhone 시뮬레이터에서 응용프로그램을 수행시킬 수 있습니다.
본 문서에서는 iPhone OS에서 나타나는 기본적인 특징들에 대해서 높은 수준의 오버뷰를 제공하여, 독자가 플랫폼에 익술할 수 있도록 도울 것입니다. 사용자는 iPhone Dev Center에서 다른 분서를 통해서 빠르게 배우고, iPhone 응용프로그램을 만드는데 기본 프로세스를 이해할 수 있도록 도울 것입니다. 독자는 이러한 본서들을 통해서 iPhone OS 를 위한 배움의 길을 안내하는데 사용해야 합니다.
iPhone OS Technology Layers
iPhone OS에서는, 하부의 시스템 구조와 많은 기술들이 Mac OS X 에서의 기술들과 유사합니다. iPhone OS의 커널은 Mac OS X에서 발견할 수 있는 기본적으로 같은 Mach 커널의 변종에 기반을 두고 있습니다. 이러한 커널위에는 플랫폼 상에서 응ㅇ요프로그램을 구현하는데 사용되는 서비스들의 레이어가 있습니다.
그림 1. iPhone OS 기술 레이어
그림 1은 이러한 레이어들의 고수준 오버뷰를 나타냅니다. 이러한 레이어링은 당신이 코드를 작성할때 선택을 할 수 있게 합니다. 예를 들어, Core OS와 COre Services 레이어들은 iPhone OS의 필수적인 인터페이스 (파일을 접근하는데 사용하는 인터페이스, low-level 데이터 타입들, 봉쥬르 서비스들, 네트워크 소켓 등등)를 포함하고 있습니다. 이러한 인터페이스들은 대부분 C 기반이고, Core Foundation, CFNetwork, SQLite, 그리고 POSIX 쓰레드로의 접근와 UNIX 소켓들과 같은 기술들을 포함하고 있습니다.
개발자가 상위레이어로 움직이려면, C 기반과 Objective-C 기반의 인터페이스를 혼용하여 사용하는 더욱 고급 기술들을 찾을 수 있습니다. 예를 들어, 미디어 레이어는 2D와 3D 드로잉, 오디오, 그리고 비디오를 기원하는데 사용되는 기본적인 기술을 포함하고 있습니다. 본 레이어는 C기반의 기술인 OpenGL ES, Quartx, 그리고 Core Audio를 포함하고 있습니다. 이는 역시 진보한 Objective-C기반의 에니메이션 엔진인 Core Animation를 포함하고 있습니다.
Cocoa Touch 레이어에서는 대부분의 기술들이 Objective-C를 이용합니다. 이 레이어의 프레임워크에서는 작성하는 응용에서 사용되는 기본적인 인프라를 제공합니다. 예를 들어, Foundation 프레임워크는 콜렉션, 파일 관리, 네트워크 오페레이션, 그리고 그이상을 위해서 객체지향적 접근을 지원합니다. UIKit 프레임워크는 개발자의 응용프로그램을 위한 시각적인 인프라를 제공하는데 이는 윈도, 뷰, 컨트롤 그리고이러한 객체들을 관리하는 컴트롤러를 포함합니다. 이 레벨의 다른 프레임워크들은 사용자의 Contact 와 Photo 정보에 접근하는 방법을 제공하고, 디바이스의 다른하드웨어 특징과 가속계등에 접근하는 방법을 제공합니다.
어떤 새로운 프로젝트를 시작하던지, 시작 지점은 Cocoa Touch 레이어이고, UIKit 프레임워크는 부분적으로 사용될 수 있습니다. 추가적인 기술을 사용하기로 결정했을 때에는, 보다 고수준의 레이어에 존재하는 프레임워크에서 시작하여 필요에 따라서 낮은 레이어의 프레임워크들로 내려오는 것을 추천합니다. 보다 높은 수준에 존재하는 프레임워크들은 작성해야하는 파트에 대해서 적은 노력으로 표준화된 시스템 행위 (behavior)를 지원하기 쉽게 만들어져 있습니다. 개발자가 보다 저수준의 프레임워크들로 내려가야만 할 때는 고수준에서 제공하지않는 custom behavior를 구현해야할 때입니다.
더 자세한 내용은 iPhone OS Programming Guide 를 참조하세요.
iPhone OS를 위한 코드 작성하기
iPhone SDK는 iPhone OS에서 네이티브하게 동작하는 그래픽을 지향한 응용들의 개발을 지원합니다. 작성한 응용프로그램은 사용자워 홈 스크린에 존재합니다 (물론 Photos, Weather, 그리고 CLock과 같은 다른 시스템 응용프로그램들과 함께..). 작성한 프로그램이 수행되고 나면 kernel과 소수의 저수준 대몬들을 제외하고, 작성한 응용프로그램만이 시스템 상에서 수행되게 됩니다. 수행되는 동안, 당신의 응용프로그램은 전제 스크린을 차지하고 사용자의 개입에 포커싱하게 됩니다. 사용자가 홈 버튼을 누르면, 작성한 응용프로그램은 나가게 되고 시스템은 다시 Home 화면을 보여줍니다. 개발자 자신의 시스템을 구축하는 것이 좋은데 왜냐하면 이는 개발자에게 하부 시스템 자원들에 대한 완전한 접근을 허용하기 때문입니다. 개발자는 개발자의 코드를 수행하는 가속계, 카메라, 그리고 그래픽하드웨어와 같은 내장된 하드웨어의 잇점을 이용할 수 있습니다.
iPhone 와 iPod touch 디바이스들이 사용자와 상호작용하는 방식이 Mac OS X와의 사용자 상호작용와 다름으로 인해서, 개발하는 응용프로그램의 설계하는 방법 역시 달라져야 합니다. iPhone 응용은 컨텐츠를 표시하기 위한 다큐먼트 윈도를 분리한다는 개념 자체가 없습니다. 대신, 모든 응용프로그램의 데이터들은 하나의 윈도우에 표현됩니다. 이는 새로운 뷰와 개발자로 하여금 작성된 응용프로그램의 데이터가 잘 조직화되어 제공되도록 제어하는 것을 유도합니다. 추가적으로 많은 표준화된 뷰와 컨트롤은 그들의 Mac OS X 상대와 다르게 움직일 수 있습니다. 대부분의 이러한 변화는 투명해야하나, 일부는 개발자로 하여금 데이터를 조직화하고 표현하는 방법에 대한 재고를 요구하기도 합니다. iPhone OS에서의 event-handling model은 전통적인 데스트탑 응용프로그램으로부터 현격한 이탈을 보여줍니다. 전통적으로 마우스와 키보드 이밴트에 의존하는 것 대신에, iPhone OS는 Touch 이벤트에 대한 아이디어를 도입했습니다. Touch event는 언제든지 하나 혹은 그이상의 추가적인 touch 이벤트들과 복합되어 나타날 수 있습니다. Touch들은 아이템들을 선택하거나 끄는 것과 같은, 컨텐트를 가지고 간단한 인터액션하는 것을 인식하는데 사용될 수 있고, 혹은 swipes 혹은 pinch-open 과 pinch-close 제스츄어들과 같은 복잡한 제스츄어와 언터액션들을 인식하는데 사용될 수 있습니다.
작성하는 응용프로그램의 기본적인 구조에 대한 고려를 넘어서, 개발자는 사용자가 어떻게 실제로 응용프로그램을 사용할까에 대해서 생각할 필요가 있습니다. iPhone 응용프로그램들은 깨끗하고, 순간적으로 사용자가 무었을 필요로하는지에 대해서 집중해야만 합니다. 기억하십시요. 즉각적인 사용을 원하는 사용자는 정보를 빨리 얻기를 원하고 화면에 다수의 레이어를 이용해서 파해칠만한 시간적 여유를 가지고 있지 않다는 것을요. 게임이나 다른 재미난 응용들을 위해서는, 사용자는 역시 어떠헥 사용자들이 당신의 응용프로그램과 상호작용할지와 적절하게 카메라와 가속계와 같은 기술적 잇점을 적용할지를 고려해야만 합니다.
개발을 사작하는 데 있어서, 처음으로 사용하길 원하는 프레임워크는 Foundation 과 UIKit 프레임워크들입니다. 이러한 프레임워크들은 모든 iPhone 응용프로그램들을 위한 중요한 서비스들을 제공합니다. 개발자가 개발자의 응용프로그램을 가다듦에 따라서, 시스템에 존재하는 다른 프레임워크들이 제공하는 서비스들을 연구해야 합니다. 각각 프레임워크에 대한 문서들은 해당 프레임워크를 어떻게 사용하는지에 대한 더맣은 정보를 제공하게 됩니다.
Foundation 과 UIKit 프레임워크들에 대한 정보를 위해서 Foundation Framework Reference 와 UIKit Framework Reference 를 살펴보시기 바랍니다.
Where to Start
iPhone OS에서 동작하는 간단한 응용프로그램을 만드는 것은 Xcode 에서 제공하는 내장된 프로젝트 템플릿을 이용하면 비교적 간단합니다. 하지만 의미있는 무언가를 하면서 멋지게 보이는 응용프로그램을 만들기 위해서는 제공되는 문서들을 읽어보는 것이 필요합니다. 적어도, 응용프로그램을 만드는 도구와 프로세스를 조사할 수 있는 iPhone Dev Center에 있는 다른 오리엔테이션 문서들을 읽어보길 바랍니다.
만약 iPhone OS 와 Mac OS X 에 대해서 처음 접하는 사람이라면 iPhone OS의 기본 디자인 패턴과 컨벤션을 이해하는 것이 플랫폼을 위한 코드를 작성하는데 중요합니다. 응용프로그램들은 프레임워크에서 제공하는 파워의 잇점을 살렸을 때 최적화되어 돌아갑니다. 만약 기본 프레임워크 비헤비어간과한 상태에서 개발을 하려 한다면, 응용프로그램을 짜는데 있어서 간단한 디자인 패턴을 사용하도록 배우는 것보다 더욱 어려워질 수 있습니다. 모든 iPhone 개발자가 알아야하는 기본적인 정보는 Cocoa Fundamentals Guide 에 있습니다. 이 문서는 Objective-C의 기본과 프로그래밍 컨벤션들 그리고 UIKit 와 많은 다른 시스템 프레임워크에서 사용되는 디자인 패턴을 담고 있습니다.
한번 기본 컨벤션들을 이해하고 응용프로그램을 작성해보았다면 더욱 자세한 개발 프로세스를 위해서 iPhone OS Programming Guide 를 참조할 수 있습니다. 이 책은 중요한 개념과 태스크 기반의 정보를 iPhone 응용프로그램을 작성하는 입장에서 제공하고 있습니다. 그리고 어떻게 사용자 인터페이스를 표시하고, 이벤트들을 다루고, 중요한 iPhone 의 특징의 잇점을 살리는지에 대한 예제를 포함하고 있습니다.
iPhone OS Programming Guide 에 추가하여 가용한 샘플코드를 볼 수 있습니다. iPhone OS는 실 세계 응용프로그램을 작성하기 위한 가능한 기술들을 어떻게 사용하는지를 보여주는 몇개의 완전한 샘플들과 같이 제공되고 있습니다. 개발자는 이러한 샘플을 이용해서 자신의 응용프로그램에 대한 시작지점으로 삼을 수 있고, 특정한 특징을 어떻게 이용할 수 있는지에 대해서 살펴볼 수 있을 것입니다.
이올린에 북마크하기
