바 야흐로 모바일 플랫폼 전쟁이다. 넋 놓고 있던 기존의 시장 지배 사업자들은 애플의 무서운 추격과 어느 순간 탄탄한 모습으로 돌변한 개발자 에코시스템에 깜짝 놀라고 있다. 애플 아이폰의 무서운 기세 뒤에는 통합 개발환경인 Xcode와 탄탄한 개발 툴킷인 아이폰 SDK가 버티고 있다. 따라서 아이폰 애플리케이션 개발을 시작하길 원한다면 먼저 든든한 ‘빽(?)’을 알아볼 필요가 있지 않을까?

 

아 이폰에는 iPhone OS라는 모바일 운영체제가 탑재되어 있다. iPhone OS는 매킨토시 운영체제인 OS X에서 파생된 운영체제로 알려져 있다. OS X는 기존의 클래식 Mac OS의 뒤를 이어 NeXTSTEP 운영체제를 근간으로 새롭게 만들어진 OS이다.

 

아이폰 플랫폼과 아이폰 SDK

 

NeXTSTEP 운영체제가 UNIX 계열의 운영체제였기 때문에 OS X와 iPhone OS도 근간은 Unix와 많이 닮아 있다. iPhone OS는 모바일 환경과 터치 기반의 사용자 인터페이스 제공을 위해 <그림 1>과 같이 4개의 레이어로 구성되어 있다.

 

?src=

<그림 1> iPhone OS의 Layer

 

iPhone OS의 각 레이어는 애플리케이션이 아이폰 하드웨어와 유기적으로 움직일 수 있도록 해주며 운영체제의 다양한 요소들을 효과적으로 사용할 수 있도록 그 역할이 나뉘어져 있다. 최 하단에 위치한 Core OS와 바로 위에 위치한 Core Services 레이어는 파일 액세스, 네트워크 소켓, 로우레벨 데이터 타입, Bonjour 서비스 등 iPhone OS의 기초 인터페이스를 제공한다. 이 인터페이스들은 대부분 C 언어 기반으로 만들어져 있고 Core Foun dation이나 CFNetwork, SQLite, POSIX 스레드, UNIX 소켓 등과 같은 기술을 포함하고 있다.

 

상 위 2개의 레이어인 Cocoa Touch와 Media는 C와 Objective -C를 기반으로 만들어진 보다 심화된 인터페이스를 제공한다. Media 레이어는 2D와 3D 그래픽, 오디오, 비디오 등을 지원하기 위한 기반 기술들을 담고 있다. 애플리케이션을 개발하면서 자주 만나게 될 OpenGL ES, Quartz, Core Audio, Core Animation 등은 모두 Media 레이어에서 관장하는 기술들이다. Cocoa Touch는 Objective-C를 이용해 애플리케이션을 개발하면서 사용하게 되는 거의 대부분의 프레임워크를 포함하는 핵심 레이어이다. 아이폰 애플리케이션을 개발하기 위한 기본 프레임워크인 UIKit을 비롯해, 지도 애플리케이션 개발을 위한 MapKit, 아이폰 주소록 연계를 위한 Address Book UI Framework, 멀티태스킹을 지원하지 못하는 단점을 보완하기 위한 Apple Push Notification Service 등이 모두 Cocoa Touch 레이어에서 제공되는 기능들이다.

 

?src=

<그림 2> iPhone OS 아키텍처에서의 Cocoa Touch

 

iPhone OS는 이미 널리 알려진 것처럼 매킨토시 시스템에 사용되는 Mac OS X의 Subset 개념의 OS이다. OS X가 제공하는 엄청난 API와 프레임워크 중에서 모바일 환경에 적절한 것들을 추려내어 가볍게 움직일 수 있도록 최적화해 놓았다고 보면 될 것이다. 따라서 Mac OS X 환경에서 사용되던 Carbon 애플리케이션 환경이라든가 프린터에 대한 지원, QuickTime의 미지원 등은 iPhone OS에서는 찾아볼 수 없다. 또한 아이폰 SDK는 반드시 인텔 CPU를 사용하는 Mac OS X 10.5.7 이상 버전이 필요하며 SDK의 Stable Release인 3.1.3을 기준으로 다른 환경(타 OS, Mac OS X 10.5.7 이하 버전)에서의 구동은 다양한 시도들이 이어지고 있지만 공식적으로 지원하지 않는다고 보면 된다.

 

?src=

<화면 1> iPhone SDK 설치 파일 다운로드

 

iPhone SDK 설치 파일에는 개발자 도구인 Xcode와 iPhone SDK, 그리고 실제 디바이스에 포팅하기 전까지 사용할 iPhone Simulator가 같이 포함되어 있다.

 

아이폰 애플리케이션의 구조 - 번들의 이해

 

아 이폰 애플리케이션은 번들이라 불리는 디렉토리 구조를 가지고 있다. 앱스토어를 통해 다운로드된 애플리케이션이 아이폰에 설치되면, 개별 애플리케이션은 고유의 ID를 부여받게 되고 해당 ID로 만들어진 폴더 아래에 아래 명시한 번들 구성요소들(파일과 디렉토리들)이 위치하게 된다. 번들에 포함되는 파일과 디렉토리 구조는 다음과 같다.

 

MyApp (필수 / 실행 파일)
Icon.png (필수 / 아이폰 홈 스크린에 출력되는 57x57의 이미지)
Info.plist (정보 프로퍼티 리스트, 실행에 필요한 정보들이 담겨 있다)
Default.png (실행이 끝난 후 로드가 끝나기 전까지 기본적으로 보이는 이미지)
MainWindow.nib (애플리케이션이 기본적으로 사용하는 nib 파일)
Settings.bundle (설정 번들을 사용하는 경우 포함되는 번들)
Icon-Settings.png (설정 번들에 표시될 29x29 크기의 아이콘)
en.lproj (디렉토리 / 지역화)
Icon.png
MyImage.png

kr.lproj (디렉토리 / 지역화)
Icon.png
MyImage.png

 

몇 개의 디렉토리와 여러 개의 파일들이 애플리케이션 번들 안에 들어가 있으며 필수적인 파일들을 제외하면 애플리케이션의 필요에 따라 그 숫자는 가변적이 될 수 있다. 번들에 포함된 파일과 디렉토리를 그 목적과 특성에 따라 크게 구분해 보면 애플리케이션의 진입점이 되는① 실행 파일, 애플리케이션의 설정 정보를 담고 있는 ② Info.plist 파일, 다국어 지원을 위한 지역화 리소스와 애플리케이션의 아이콘, 뷰 구성 정보들이 담긴 ③ 리소스 파일 및 디렉토리로 나뉜다.

 

Info.plist 파일은 애플리케이션에 대한 설정 정보를 가지고 있는 파일이다. iPhone OS는 애플리케이션과 부속 파일들에 대한 정보를 얻기 위해 이 파일을 참조하는데, 홈 스크린에 표시되는 아이콘 하단의 애플리케이션 이름, 애플리케이션 고유의 ID (UTI), 버전정보, 최소 요구 운영체제 버전 등의 필수 정보를 가지고 있다. 그 외, 애플리케이션의 사용자 인터페이스와 관련된 몇 가지 옵션 설정에 대한 정보도 가지고 있으므로 번들에 포함된 파일들 중에서 가장 중요한 파일의 하나라고 할 수 있겠다.

 

?src=

<화면 2> 개발 중인애플리케이션의 폴더구조

 

아 이폰은 수십 개 국에 출시된 단말기이다. 그런 만큼 지역화(Localization)를 지원하기 위한 리소스 지원에 대한 부분도 번들에 정의되어 있다. 실행 파일과 Info.plist 파일 등이 위치하는 최상위 디렉토리에는 지역화가 필요 없는 공통 파일들이 위치한다. 지역화를 제공할 리소스는 해당 지역의 로케일 이름에 .lproj를 붙여서 디렉토리를 만들고 파일을 디렉토리 아래에 배치하면 된다.

번 들에 포함된 파일들 중 재미있는 것은 Default.png 파일이다. 많은 애플리케이션들이 로딩되는 동안 자신을 나타내는 데몬 이미지를 아이폰에 전체 화면으로 보여주고 있다. 비단 아이폰용 애플리케이션뿐만 아니라 윈도우 모바일, 일반 데스크톱에서 사용하는 애플리케이션도 로딩시에 나타나는 데몬 이미지가 있는 경우가 많다. 아이폰 애플리케이션 번들은 Default.png 파일에 데몬 이미지를 넣어두면 자동으로 윈도우와 사용자 인터페이스가 모두 로딩될 때까지 화면에 뿌려주도록 되어있다.

 

Xcode 통합 개발환경

 

아이폰뿐만 아니라 Mac OS X에서 동작하는 프로그램을 만들 때 사용되는 가장 대표적인 통합 개발환경(IDE)은 Xcode이다.

 

?src=

<화면 3> Xcode의 실행 화면

 

앞 서 설명한 것과 같이 Xcode는 iPhone SDK 설치 시 특별히 설정을 바꾸지 않는 이상 함께 설치되도록 되어 있다. Xcode는 Mac OS X와 마찬가지로 스티브 잡스가 애플을 떠나있는 동안 만들었던 회사 NeXT에서 개발했던 개발 도구에 근간을 두고 있다. 아이폰 애플리케이션 개발은 일반적으로 Xcode 개발 환경에서 Objective-C를 이용해서 이뤄진다(참고로 Xcode는 Objective-C뿐만 아니라 C, C++, Java, JavaScript 등 다양한 언어를 이용한 개발에 활용 가능).

 

아이폰의 샌드박스

아 이폰의 악의적인 애플리케이션으로부터 단말기의 정보를 보호하기 위해 개별 애플리케이션별로 샌드박스에 넣어 구동하는 방식을취하고 있다. 즉, 개발한 애플리케이션이 구동 중에 사용하는 모든 파일은 번들 안에 포함되어 아이폰 파일시스템에 동일한 디렉토리의 파일 및 하위 디렉토리, 그리고 그 부속 파일로 한정된다. 물론 아이폰 프레임워크가 제공하는 여러 가지 API를 통해 연락처라던가 특정한 경로에 저장되어 있는 데이터를 액세스할 수 있는 방법을 제공하고 있다.

 

Xcode 를 처음 실행하면 통합환경 사용에 대한 환영 메시지와 개발에 도움이 될 만한 몇 가지 링크가 담긴 화면이 나타난다. 마이크로소프트의 MSDN과 마찬가지로 애플에서도 개발자 지원을 위한 사이트를 운영하고 있는데, 상당히 방대한 분량의 문서들이 체계적으로 잘 정리되어 있어 많은 도움을 받을 수 있다(http://developer.apple.com/iphone/). 다만 아직까지 한글로 제공되는 콘텐츠가 없다는 점은 감안하길 바란다.

 

?src=

<화면 4> 프로젝트 템플릿

 

다 른 통합 개발환경과 마찬가지로 File 메뉴에서 New Project를 선택하면 새로운 프로젝트를 생성할 수 있다. 화면 좌측에 iPhone OS와 Mac OS X로 나누어 개발 형태를 선택할 수 있도록 되어 있다. iPhone OS의 Application을 선택하면 우측에 프로젝트 템플릿이 나열된다. 애플리케이션의 UI에 맞게 사전 정의된 템플릿을 사용해도 괜찮지만 일반적으로 Window-based Application이나 View-based Application을 선택해 개발을 시작하면 크게 무리가 없을 것이다.

 

아 이폰 애플리케이션 개발은 뷰(View)와 뷰 컨트롤러(View Controller)만 제대로 이해하면 반 이상은 끝났다고 볼 수 있다. 기본적인 뷰와 뷰 컨트롤러만 잘 활용해도 많은 아이디어를 애플리케이션으로 손쉽게 녹여낼 수 있다(여기서 뷰라는 것은 Win dows 환경의 개발에서 사용되는 Control에 가까운 개념이다. 뷰 컨트롤러는 뷰의 집합체로서 사용자 인터페이스의 중심 단위가 된다). Window-based Application과 View-based Application 모두 뷰를 기반으로 개발하기 위한 템플릿이다. 다만 차이점은 기본적으로 View가 등록되어 있느냐 아니냐일 뿐이다.

 

?src=

<화면 5> 프로젝트 창

 

템 플릿을 선택하고 프로젝트 이름, 생성 경로 등을 정하면 기본적으로 필요한 파일들이 생성되는 과정을 거쳐 프로젝트 창이 화면이 나타난다. Xcode는 Visual Studio나 이클립스와 같은 여타의 통합 개발환경과 크게 다르지 않은 화면 구성을 가지고 있다. 프로젝트 창 상단에는 타깃 단말의 버전 지정, 빌드 관련 아이콘 등이 위치하고 있다.

 

좌 측에는 프로젝트에 사용되고 있는 파일들과 함께 빌드 시 발생한 오류, 경고, 형상관리 시스템 연계를 위한 그룹 등이 위치하고 있다. 화면 우측은 상/하 두개의 섹션으로 나뉘어 있는데, 상단에는 좌측에서 선택한 그룹의 상세 목록이 보이고 하단에는 상단에서 선택된 항목의 내용을 편집할 수 있는 편집기가 출력되는 것을 알 수 있다. 상세 목록에는 에러나 경고가 발생한 현황을 확인할 수 있고 형상관리 도구에 연결된 경우 형상에 대한 상태 정보 등이 표시된다.

 

프 로젝트 창 자체는 프레임에 둘러싸인 구조를 가지고 있기 때문에 편집을 위한 용도로 쓰기에는 조금 답답하다. 그러나 다른 개발도구와는 다르게 편집하고자 하는 파일을 별도의 창으로 꺼내서 편집할 수 있는 방법이 제공된다. 파일 목록에서 편집하고자 하는 파일을 더블 클릭하면 별도의 편집창이 열린다. 편집창은 코드 예약어와 사용자 변수 등을 쉽게 알아볼 수 있도록 정리되어 제공되며 자동완성 기능과 같은 인텔리센스 기능을 제공하고 있다. Objective-C를 이용해 개발하는 경우 헤더(*.h)와 소스 코드(*.m)를 분리해 개발하는 패턴이 사용되는데, 단축키나 편집창 상단의 전환 버튼을 이용해 두 파일을 오가면서 편집할 수 있다.

 

?src=

<화면 6> 인터페이스 빌더

 

애 플리케이션의 화면 구성을 위해 사용되는 도구가 인터페이스 빌더(Interface Builder)이다. 뷰와 뷰 컨트롤러를 배치해 사용자 인터페이스를 구성할 수 있으며, 구성 요소들의 속성 값 편집을 통해 다양한 화면 구성을 할 수 있다. 인터페이스 빌더는 4개의 작은 창으로 다시 구분된다.

문 서창은 작업 중인 XIB(화면의 구성 정보를 담고 있는 파일) 파일에 포함된 모든 구성요소를 계층 구조로 보여준다. XIB의 구성요소는 크게 실제 UI 구성에 관여하는 Interface 객체와 콘텐츠의 연계, 이벤트 핸들링 등과 밀접한 관계를 가지고 있는 PlaceHolder 객체로 구분된다. 애플리케이션의 UI를 구성하면서 추가되는 뷰 혹은 뷰 컨트롤러는 문서창에서 그 순서와 계층구조를 만들어 줄 수 있다.

 

?src=?src=

<화면 7> 도움말(Developer Documentation)과 조사 도우미(Research Assistant)

 

라 이브러리 창은 XIB 파일에 사용될 객체와 리소스를 가지고 있다. 창 상단에 위치한 모드 선택 버튼을 이용해 어떠한 유형의 라이브러리를 조회할 것인지 정할 수 있다. 계층 구조의 패널에서 항목을 선택하면 항목 하위에 속한 구성요소들이 디스플레이된다. 구성요소를 XIB 문서에 추가하기 위해서 구성요소를 Drag & Drop 방식으로 문서 창에 가져다 놓거나 뷰 디자인 창에 가져다 놓으면 간단하게 객체를 추가할 수 있다.

 

인 스펙터 창은 선택된 객체의 다양한 속성을 보여주는 것이다. 객체가 제공하는 다양한 속성을 효과적으로 제어하기 위해 인스펙터 창은 탭 구조를 채택하고 있다. 각각의 탭은 그룹 지어진 다양한 속성을 조회 및 설정할 수 있도록 되어 있다. 크기 조절 탭에서는 아이폰이 중력센서를 이용해 가로 세로 모드를 전환할 때 각각의 객체가 어떠한 가이드를 통해 자동으로 화면에 맞춰질 것인지 지정할 수 있다. 인터페이스 빌더에서 만든 UI 구성요소들이 뒷단의 코드와 어떻게 상호 작용할 것인지는 아이덴티티 탭에서 IBAction과 IBOutlet을 추가함으로써 가능하다. IBAction과 IBOutlet은 인터페이스 빌더를 통해 추가할 수도 있지만 개발 스타일에 따라 헤더파일(*.h)에 지정하는 방법을 사용할 수도 있다.

 

문 서 창의 구성요소나 뷰 디자인 윈도우의 구성요소에서 마우스 오른쪽 버튼을 누르면 까만색 배경의 연결 패널 창이 출력된다. 연결 패널 창은 객체와 객체를 연결하거나 이벤트와 액션을 연결하는 데 사용된다. 앞서 인스펙터 창 또는 헤더 파일에서 지정한 Outlet이나 이벤트 핸들러, 델리게이트를 서로 연결해 줄 수 있다.

 

마 이크로소프트가 MSDN이라는 걸출한 개발 레퍼런스를 바탕으로 개발자들을 지원하며 십수년 간 데스크톱 시장을 장악할 수 있는 탄탄한 에코 시스템을 만들었던 것들 다들 기억하고 있을 것이다. 애플 역시 개발자 에코 시스템을 만드는 데 노력을 아끼지 않고 있다. 웹을 통해 제공되는 다양한 개발 레퍼런스를 Xcode에서 편리하게 열람하고 참조할 수 있는 도구를 준비해 놓은 것이 바로 그것이다.

 

Xcode 에서는 개발자 레퍼런스를 크게 두 가지 방법으로 활용할 수 있다. 첫 번째는 일반적인 도움말 형태를 이용하는 방법이다. Xcode의 메뉴 중 Help > Documentation을 선택하면 도움말을 체계적으로 조회할 수 있는 창이 나타난다. 화면 상단에는 도움말의 검색 범위를 지정할 수 있는 여러 가지 옵션이 제공되고 있다. 앞서 이야기 했듯이 Xcode는 Objective-C만을 위한 개발 도구가 아니다. 검색 옵션에 언어 옵션이 있는 것은 이 때문이다. 당연하겠지만 검색어를 입력해 필요한 기술 문서를 쿼리하는 기능도 제공하고 있다. 애플리케이션 개발을 진행하다 보면 자주 찾는 API나 레퍼런스가 생기게 마련이다. Documentation 기능은 즐겨찾기 기능을 제공해 화면 왼쪽의 레퍼런스 계층구조 하단에서 그 내용을 확인할 수 있다.

 

Xcode 가 제공하는 두 번째 도움말 기능은 조사 도우미다. Documentation은 개발 문서 전체를 검색하고 스펙에 대한 모든 내용을 열람할 수 있어 처음 개발을 시작하는 사람들이나 보다 상세한 파라미터, 사용법 등을 찾을 때 유용하다. 하지만 한참 개발이 진행되는 도중에는 API의 사용법이나 파라미터의 종류 등을 간단하게 조회할 수 있는 기능이 제공되면 생산성 향상에 훨씬 도움이 될 수 있을 것이다. 조사 도우미가 바로 그런 역할을 해주는데, 편집창을 통해 코드 작성 및 리뷰를 진행하는 동안 동적으로 이 같은 정보를 디스플레이 해주는 도구이다.

 

?src=

아 이폰 시뮬레이터는 아이폰 OS를 가상화해 Ad-Hoc 배포 방식으로 빌드를 테스트할 수 있게 해주는 중요한 도구이다. 멀티 터치나 가로 세로 모드의 전환은 물론이고 간단한 제스처까지 시뮬레이션해 주기 때문에 최종 테스트 이전의 개발 단계에서 아주 유용하다. 물론 실제 단말기에서 구동하는 것과 시뮬레이터에서 구동하는 것은 분명 차이가 있다. 개발 단계에서는 시뮬레이터만으로도 충분하겠지만 앱스토어에 애플리케이션을 배포하고 상용화하기 전에는 반드시 실물 장비에 애플리케이션을 배포해 테스트해야 한다는 것은 굳이 말할 필요가 없을 것 같다.

 

Xcode vs. Visual Studio vs. Eclipse

 

지 난 2월 스페인에서 개최된 Mobile World Congress(MWC) 행사에서 그동안 모바일 OS 시장에서 소외되어 가던 마이크로소프트가 윈도우 폰 7을 들고 나와 화제가 되었다. 많은 전문가들은 애플의 아이폰과 구글의 안드로이드, 그리고 마이크로소프트의 윈도우 폰이 2010년 전 세계 스마트폰 시장의 패권을 차지하기 위해 자웅을 겨룰 것으로 예상하고 있다. 뜬금없이 MWC 이야기를 꺼낸 이유는, 모바일 운영체제 시장을 놓고 다투는 세 기업의 플랫폼에 따라 서로 다른 개발도구를 이용하고 있기 때문이다. 개발도구마다 저마다의 특성이 있고, 그 특성에 따라 개발자들의 호불호가 극명하게 갈리는 것이 이쪽 분야의 생리다.

 

Visual Studio는 윈도우 모바일을 탑재한 단말에서 구동되는 애플리케이션의 개발을 위한 최적의 도구이다. Embedded VC++가 Visual Studio 2005부터 완전 통합되면서 마이크로소프트 모바일 플랫폼 개발을 위한 필수 도구가 되었다.


Visual Studio는 Visual SourceSafe와 같은 형상관리 도구 연계가 편리하고 2005 버전부터 도입된 Team System을 통해 협업 및 공동 프로젝트의 관리를 효과적으로 진행할 수 있다. 자동 완성, 파라미터 정보 등을 보여주는 인텔리센스는 Visual Studio 6.0에서 소개된 이래 지속적으로 제공되고 있으며 많은 개발 도구들이 벤치마킹하는 기능이기도 하다.

 

근 래에는 이클립스 재단에서 발표하는 오픈소스 IDE인 Eclipse가 자바 개발의 필수 도구로 자리 잡았다. Eclipse는 오픈소스인 만큼 다양하고 강력한 플러그인을 통해 개발자가 입맛에 맞는 환경을 만들 수 있는 유연한 구조를 가지고 있다.


최 근에 아이폰의 독주에 제동을 걸 수 있는 차기 주자로 구글의 안드로이드 플랫폼이 주목을 받고 있다. 안드로이드 플랫폼에서 구동되는 애플리케이션 개발을 하고자 한다면 Eclipse를 사용해야만 한다. 안드로이드 SDK가 Eclipse와 연계되어 개발을 위한 통합환경을 제공해 주기 때문이다.

 

공 교롭게 모바일 시장에서 자웅을 겨루는 대표적인 플랫폼 세 가지를 위한 개발도구가 서로 완전히 다르다. C 언어가 우수한지 C#이 우수한지를 비교하는 것이 큰 의미가 없는 것과 마찬가지로 개발도구에 대한 비교도 전혀 다른 환경이기 때문에 의미가 없을지도 모르겠다. 하지만 개발자의 입장에서 손에 익은 도구에서 그렇지 못한 도구로 넘어가야 하는 다양한 의사결정이 필요한 요즘, 간단하게나마 도구들의 차이를 살펴보는 것은 의미가 있을 것 같다.

 

Xcode 는 서로 분리된 여러 개의 창을 이용해 개발을 진행할 수 있다. GUI 구성에 사용되는 인터페이스 빌더 역시 별개의 창에서 구동되는 방식이다. 2대 이상의 모니터를 사용하며 개발??해야 하는 경우, 인터페이스 빌더의 개별 창들이 뒤섞이면 작업을 진행하다 실수하기 쉬운 문제점이 있다. 인터페이스 빌더에서 여러 객체를 뷰 디자인 창으로 끌어다 놓는 과정과 그 안에서 객체들이 서로 상하 관계를 만들고 영역을 차지하는 과정은 상당히 미려하다. 이렇게 구성한 객체들은 철저하게 코드와 분리되어 MVC 모델에 익숙한 사람들에게 더 없이 편리한 개발 환경이라 할 수 있을 것 같다. 무엇보다 Xcode를 이용한 아이폰 애플리케이션 개발의 장점은 기본적으로 제공되는 객체들이 모바일 환경에 적합하게 만들어져 있다는 것이다. 기본 객체들만 사용해서도 얼마든지 멋진 모바일 애플리케이션을 만들 수 있다는 것은 정말 큰 매력이다.

 

?src=

<화면 9> Visual Studio의 Form 구성

 

Visual Studio는 윈도우 모바일 애플리케이션 개발도 일반적인 윈도우 환경에서의 WinForm 개발과 크게 구분 짓지 않고 있다. 제공되는 컨트롤들을 Form에 배치하고 이벤트 핸들러를 연결하는 것은 모바일 기기에서 돌아가는 프로그램을 전혀 개발해 보지 않았다 할지라도 얼마든지 쉽게 개발할 수 있는 기회를 제공하는 것이라 하겠다. 그러나 제공되는 컨트롤들은 모바일 기기, 특히 터치스크린을 사용하는 기기에서 손으로 사용하기에 쉽지 않은 게 사실이다. 윈도우 모바일 플랫폼을 사용하는 기기들이 정전식(C-Type) 터치스크린이 아닌 감압식(R-Type) 터치스크린을 사용하는 것에서 시작되었다는 것이 문제라면 문제일 것이다. WinForm 환경에서 볼 수 있었던 컨트롤들에서 추려내고 기능을 축소한 컨트롤들이 모바일 컨트롤 셋으로 구성되어 있어, 사용성이 편리하거나 입맛에 맞는 GUI 구성을 하려면 써드 파티 컨트롤을 구매하거나 커스텀 컨트롤을 만들어서 개발해야 하는 단점이 있다.

 

?src=

<화면 10> Eclipse GUI 구성

 

Eclipse 에서 안드로이드 SDK를 설치한 환경이면 Activity에 대한 GUI 구성을 할 수 있는 도구가 제공된다. 하지만 Xcode나 Visual Studio가 제공하는 편리하고 직관적인 GUI 도구가 아닌, XML을 편집하며 UI를 구성해야 하는 불편함이 있다. 아직까지 안드로이드 애플리케이션의 GUI를 다른 도구가 제공해 주는 정도로 편리하게 개발하는 것은 조금 무리가 있는 것 같다. 하지만 실버라이트(SilverLight)나 WPF와 같은 기술을 이용해 XAML 파일을 만드는 경우에도 역시 GUI 도구만으로 만든다기보다는 Layout에 대한 배치만 한 상태에서 태그와 속성을 편집하는 방식으로 작업을 많이 한다는 것을 생각하면 단점이라고만 하기엔 조금 무리가 있다.


애 플이 아이폰 애플리케이션 개발을 위해 제공하는 Xcode는 다양한 통합 개발환경 중 가장 모바일 애플리케이션을 개발하기 위한 고민을 많이 한 도구가 아닐까 싶다. iPhone OS라는 모바일 플랫폼 자체가 사용자 경험이나 편의성에 대한 많은 고민 끝에 나왔다는 것과 맞물려 개발자의 입장에서도 가장 눈이 갈 수밖에 없을 것이다.

 

참고자료
1. http://developer.apple.com/iphone
2. http://en.wikipedia.org/wiki/IPhone_OS
3. http://en.wikipedia.org/wiki/Nextstep
4. http://www.eclipse.org
5. http://msdn.microsoft.com

 

 

필자소개

 

노승헌 ds1dbx@gmail.com, http://onde mand.tistory.com|인생은 한편의 센티멘털 러브스토리라 생각하고 있는 대한민국의 평범한 개발자. 올 가을 태어날 둘째와의 첫 만남을 어떻게 추억으로 만들까 하는 생각에 요즘 깊은 고민에 빠져있다.

 

출처 : 한국 마이크로 소프트웨어 [2010년 3월호]

제공 : DB포탈사이트 DBguide.net

출처:http://chansol.thoth.kr/?mid=blog&document_srl=1350652