애플 아이폰 SDK 발표

written by on March 13th, 2008 @ 05:08 AM

얼마 전 애플에서 아이폰 로드맵 발표가 있었는데, 개인적으로 흥미를 가진  내용이 많아 여기에 간단히 정리해보려고한다.

 

발표의 내용은 크게 두 가지다. 첫 번째는 블랙베리를 따라잡기 위한 Enterprise 솔루션 지원 강화, 두 번째는 아이폰 어플리케이션 개발 SDK의 제공이다.

 

1. Enterprise 지원 강화

Enterprise 지원 강화란 Push Email, Push Contacts, Push Address Book 등과 같은 기업내 정보서버의 정보들을 폰에서 쉽게 이용할 수 있는 기능들의 지원하게 된 것을 의미한다.

(참고로 Push Email이란 일반 Email 클라이언트가 주기적으로 서버에 접근해서 데이터를 polling 하는 것과 달리 서버에서 직접 (폰의) Email 클라이언트로 메일을 실시간으로 보내주는 것을 의미한다.)

 

아이폰에서는 이제 MS Exchange Server와 직접 연결 지원한다. 여기서 직접 연결이란, Exchange Server와 아이폰의 사이에 별도의 중계 서버가 없이 ActiveSync로 직접 연결된다는 것을 의미한다.

BlackBerry 의 경우에는 Exchange Server와 폰 사이에 MDS라고 하는 전용의 서버가 있어서 프로토콜 게이트웨이 또는 컨텐츠의 적절한 변환 등의 기능을 수행한다.

 

아이폰 방식의 장점은 중간에 거치는 서버가 없으므로 별도 비용이 없다는 것이고, 단점은 현재로서는 MS Exchange 서버만 지원된다는 것이다. 반면에 블랙베리의 경우 Domino 등 다른 서버들도 지원한다.

ScreenJot_Cropped_03-12-2008_19_22_34.jpg

 

 

아이폰은 현재 북미 스마트폰 시장에서 28%의 점유율을 차지하고 있는데, 41%로 선두를 지키고 있는 블랙베리에 비해 가장 부족한 부분이라고 지적받아온 Push Email 등의 기능을 지원하면서, 앞으로  선두 자리를 노리는 것이다.

 

새로 제공되는 기능 중 한 가지 재미있는 것은 Remote Wipe 라는 기능인데, 아이폰을 분실했을 때, 서버에 접속하여 해당 폰의 데이터를 지우고, Lock 시켜서 중요한 개인,기업의 데이터의 누출을 방지할 수 있다.

 

Phone SDK 공개


애플의 발표에 따르면 이번에 공개된 SDK에 포함된 API들과 개발 툴들은  애플의 내부 개발자들이 사용하는 것과 완전히 동일한 것이라고 한다. 

iPhone API 스텍

 

ScreenJot_Cropped_03-12-2008_19_24_28.jpg

 

iPhone 의 개발 API 스텍은 크게 네 개의 계층으로 이루어져 있는데, 아래부터 차례로 Core OS, Core Services, Media, Cocoa Touch로 구성된다.

 

Cocoa Touch

Cocoa Touch는 기존 맥 오에스의 UI 프레임워크인 Cocoa의 iPhone용 버전이며,  다음의 기능들을 제공한다.

 

  •  UI Framework (Windows, UI Controls)
  •  Accelerometer (x,y,z 세개의 축으로 아이폰의 공간 움직임 감지)
  • Multi-Touch interface
  • Built-in Camera
  • User's photo library

 

아래는 Accelerometer 를 이용하여 구현한 비행 전투 게임인데, 비행기의 조종을 아이폰 본체를 움직이는 것으로 구현하였다.

ScreenJot_Cropped_03-12-2008_19_09_26.jpg

 

 

Media

Media 계층은 오디오,비디오, 그래픽, 애니메이션 등의 구현을 위한 라이브러리다.

  • OpenGL (2D/3D Graph)
  • Core Animation
  • Core Audio
  • OpenAL (3D 사운드)
  • video/audio play (QuickTime based)

 

ScreenJot_Cropped_03-12-2008_19_14_40.jpg

 

Core Service

OS에서 제공하는 기본 라이브러리보다 더 편리하게 사용할 수 있는 수준의 상위 라이브러리들을 제공하며, 추가로 SQLite 의 DB 기능, 기지국 정보를 이용한 아이폰의 위치정보를 이용할 수 있는 라이브러리를 포함한다.

 

  • Access Address Book
  • Location of device
  • Network (socket, SSL, DNS, HTTP, FTP, Bonjour)
  • Security (Certificate, public/private keys)
  • SQLite
  • XML Library

 

Core OS

Core OS는 기본적으로 맥 노트북이나 데스크탑 용 OS와 동일한 라이브러리들을 제공된다.

- Threading
- Networking
- File system
- Standard I/O

 

개발 환경

애플 SDK에는 앞에 소개한 라이브러리들 뿐 아니라, 개발 IDE나 아이폰 에뮬레이터, 성능 측정 툴들이 함께 포함되어 있다.

 

  • global/elements/devcenter/icon_xcode.png 코딩 및 컴파일을 위한 IDE인 Xcode
  • global/elements/devcenter/icon_iphonesimulator.png 테스트와 디버깅을 위한 iPhone Simulator
  • global/elements/devcenter/icon_instruments.png 시뮬레이터 또는 실제 디바이스에서 실행 성능 튜닝을 위한 Instruments
  • global/elements/devcenter/icon_interfacebuilder.pngGUI 개발을 위한 Interface Builder (다음 버전 SDK에 포함예정)

 

 

아래는 아이폰의 에뮬레이터 동작 모습

iphone/program/images/details_step1.png

 

JupiterResearch의 분석가인 Michael Gartenberg 는 애플의 이번 발표로 아이폰은 이제  S/W 플랫폼이 되었다고 평가하면서  발표이 후 4일 동안 SDK를 다운로드 해간 10만명 중 아주 일부만이 어플리케이션을 개발하여 공개한다고 해도,  6월까지는 상당한 양의 어플리케이션들이 나타날 것이라고 예상했다. 

 

애플에서는 SDK 와 함께 Apps Store 라고 하는 배포 프로그램도 발표했다. 이것은 음악이나 비디오를 배포하는 iTunes의 유사한 개념이라고 보면 된다. 즉 어플리케이션용 iTunes다.

 

SDK 로 어플리케이션을 개발한 개발자는 자신의 어플리케이션을 Apps Store를 통해 유료 또는 무료로 일반 사용자에게 직접 배포할 수 있다. 유료의 경우 가격의 30%는 애플에게, 70%는 개발자에게 돌아간다. 그런데, 개발자들이 Apps Store를 사용하려면 등록된 개발자여야 하는

데 여기에 99달러의 비용이 든다.

 

만약 활발한 개발들이 이루어진다면, 이를 통한 애플의 수익도 상당할 것으로 예상된다.

개발의 활성화를 위해서 애플은 발표 마지막의 깜짝 발표인 "One more thing"을 통해, 휼륭한 어플리케이션을 발굴하고 사업을 지원할 수 있는 1억달러(천억원) 규모의 iFund 가 운영될 것이라는 소식을 전했다.

 

지금까지 정리한 내용들을 종합해보면, 애플의 전략은 아이폰과 아이터치를  디바이스 레벨에서는 배타적으로 유지하여, 높은 단가로 팔아서  수익을 올리고, 어플리케이션 레벨에서는 S/W 플랫폼 제공하는 데에 따른 신규 수익을 창출하겠다는 것으로 보인다.

 

구글의 안드로이드가 개발의 완성도나 상용화 수준에서 아직 따르지 못하고 있는 현재 시점에서 애플의 이번 발표는, 스마트폰 시장에서의 주도권 확보를 위한 좋은 발판이 될 것으로 예상된다.

 

자! 개발자들이여 당장 SDK 다운받고,  Cocoa 책을 주문하자. 

 

 

블로거 컨퍼런스 참가

written by on March 5th, 2008 @ 05:01 AM

블로그란  자기 '표현'이다. 호모사피엔스(생각하는 인간) 이자 호모 로퀜스(언어적 인간)인 사람은 자신의 '생각'을 '언어'로 표현하고자 하는 강력한 욕구를 가지고 있다. 블로그는 기존의 웹 방식들에 비해서 이러한 욕구를 더 쉽고 효과적으로 달성시켜주는 도구인 것이다.

 

대한민국 블로거들을 대상으로 하는 컨퍼런스가 3월 16일 열린다고 한다.  많은 블로거들의 생각들을 글이 아닌 말로서 확인할 수 있는 좋은 기회가 될 것으로 기대한다. 블로그를 운영하는 사람이라면 "행사 페이지"에 트랙백을 보내어 신청할 수 있다고 한다.

 

 

Windows에 Rails 설치하기

written by on January 25th, 2008 @ 12:59 AM

나는 개발을 할 때 대부분  *nix 환경에서 하지만, 살다 보면 가끔 어쩔 수 없이 windows를 써야 할 경우도 있다.  이럴 때는 꼭 cygwin 을 설치해서 *nix 처럼 만들어 놓고 사용한다.

 

하지만,  rails 개발까지 필요한 상황이 되면 문제가 좀 달라진다.  몇가지 필요한 설치 파일들이 cygwin 환경에서 돌지 않거나 느린 경우가 있는데, 대표적으로 Rmagick 이 그런 경우 중에 하나다.

 

그런데 최근 Windows 에 Rails 환경을 꾸밀 일이 있어 조사를 하다가, Brain Hogan 이라는 사람의 사이트를 발견했다. 이 사람은 windows에서 여러가지 설치 조합들을 시험해보고 성능등을 고려하여 최적의 방안을 계속 정리해서 올리고 있다.

 

 내용을 하나씩 들여다보면 그렇게 특별하거나 어려운 내용은 없다. 그렇지만 이런 가이드가 없으면 여러가지 시행착오들을 겪게 되어서 전체 개발환경을 갖추는데 생각보다 많은 시간이 들기 때문에 이러한 가이드는 상당히 유용하다.

 

이 글은 Brain Hogan의 가이드에 나오는 내용을 기초로 실제 환경을 구축한 경험을 정리하기 위한 것이다.

Hogan의 문서에 나오지 않지만,  설치를 진행하면서 겪었던 몇 가지 문제점들에 대한 해결 방법들을 추가로 정리했다.

 

 

참고 아래 글에서 각 인스톨 파일에 대해 '사이트'와 '다운로드' 링크가 있으며,  그 중 '다운로드' 링크는 글을 작성하는 시점의 버전을 링크하고 있으므로,  최신 버전을 원한다면 '사이트' 의 링크로 방문하여 확인 필요

 

Ruby One-Click Installer 설치


사이트: https://rubyforge.org/projects/rubyinstaller/
다운로드: https://rubyforge.org/frs/download.php/29263/ruby186-26.exe


ImageMagick 과 Rmagick


주의 반드시 Rmagick 과 ImaggeMagick 이 함께 묶여있는 'rmagick-win32' 패키지를 다운로드 받을 것


사이트: http://rmagick.rubyforge.org/
다운로드: http://rubyforge.org/frs/download.php/30125/RMagick-2.0.0-ImageMagick-6.3.7-8-Q8.zip

 

  1. 압축파일 해제
  2. image magick 설치파일 실행
  3. 압축 해제된 폴더에 포함된 gem 파일 설치
  4. gem install Rmagick-1.9.2-IM-6.2.4-6-win32.gem

 

(선택사항) 프록시 설정

프록시 서버 뒤에서 운용되는 PC인 경우,  rails gem 설치 과정을 위해서 CMD 창에서 프록시 설정이 필요함.

 

  1. 내컴퓨터 속성- 고급- 환경변수 - 시스템 변수 추가
    http_proxy=http://192.168.10.33:8080
  2. rubygems 업데이트
    gem update --system
  3. Rails 설치

    (최신 버전 설치)

    gem install rails
    (또는 특정 버전을 인스톨하려면)

    gem install rails --version '1.2.3'


mongrel 설치

 

  1. gem install mongrel 
    (win32 버전 선택 필요)
  2. mongrel-service 설치
    gem install mongrel-service
  3. 서비스로 등록
    mongrel_rails service::install -N myprj -c c:/myprj -p 4000 -e development

    ( -c 옵션에 지정하는 경로에는 / 사용)

  4. 서비스 수동 시작
    net start myprj
    주의 자동 시작하려면,  제어판-관리도구-서비스 에서 해당 서비스 자동시작으로 변경.

    mongrel.log 는 ruby.exe 가 있는 c:/ruby/bin 에 생성됨.

    주의 만약. 자동 실행에서 mongrel이 잘 시작되지 않으면, c:/ruby/bin/mongrel.log 내용 확인 필요. 만약 permission 문제라면, 제어판-관리도구-서비스의 해당 서비스 속성에서 '다음 사용자로 로그인'의 사용자를 '로컬시스템'에서 rails를 설치할 때 로그인했던 실제 사용자로 지정.

  5. 서비스 제거 

    mongrel_rails service::remove -N myprj


WAMP 설치(mysql 을 사용하는 경우)

 

사이트: http://www.wampserver.com/en/download.php
다운로드: http://sourceforge.net/project/downloading.php?groupname=wampserver&filename=WampServer2.0a.exe&use_mirror=nchc

 

설치 후, 제어판-관리도구-서비스 에서 'wampmysqld'의 속성에서 '수동실행'을 '자동'실행으로 변경해야 시스템 리부팅시 자동 실행됨.

 

만약, 별도 웹서버를 위해서 apache가 아닌  IIS를 사용한다면, wampapache 는 자동실행으로 하면 안된다.

 

 

기타 참고사항

IIS 설치

별도, 파일 다운로드 서버등의 용도로  웹서버가 필요하거나, ftp가 필요한 경우, wamp의 아파치를 사용할 수도 있겠지만, 여기서는 IIS를 사용한다.

 

IIS가 이미 설치되어 있지 않은 경우, 아래와 같이 설치(XP 설치 디스크 필요)


제어판 - 프로그램 추가 제거  - 윈도우즈 구성요소 추가 제거 - 인터넷 정보 서비스(IIS) 선택
(FTP 서버도 필요하다면)  "자세히" 버튼을  선택해서 FTP 서버 설치 옵션 선택

 

 

IIS와 Mongrel의 연동

나의 경우에는 굳이 IIS와 연동할 필요는 없어서 해보지 않았는데, 자세한 방법은 Brain Hogan 의 문서에 잘 나오니  참고하면 될 듯하다.

 

 

설치 후 동작에 대한 소감

설치를 마치고 실제 rails 프로젝트를 돌려보니 아주 빠르지는 않지만,  기본적인 개발 환경으로서는 전혀 부족함이 없다.

mongrel, 파일 다운로드 서비스를 위한 IIS 웹 서버,  mysql 서버, FTP 서버가 모두 동작하고 있다는 점을 고려하면 더욱 만족스럽다.

 

참고로 이번 설치에 사용한 PC의 사양은  Intel Core2 Duo CPU 2.0GHz, 2GB Ram 이다.

 

 

 

 

[책] Desiging the obvious

written by on January 23rd, 2008 @ 09:14 AM

Designing the Obvious: A Common Sense Approach to Web Application Design

저자  Robert Hoekman Jr.

 

개요

Getting Real  번역을 마무리 하던 즈음에 읽기 시작한 책인데. 우연인지  요즘 시대의 필연인지 책에서 주장하는 내용 중에 Getting Real 과 비슷한 부분이 꽤 많다.

 

전체 내용을 간단히 요약해보자면,  더 많은 기능 보다  더 적은(꼭 필요한) 기능이  더 낫고, 심플하면서도 직관적으로 사용자들의 입장에서 디자인하라는 것이다. 당연한 말이다. 그러니 책 제목도 "명백한 디자인" 아니겠나.

 

이 책의 장점은, 웹 서비스 개발 및 운용에 대한 전반적인 내용을 다루는 Getting Real 과 달리,  디자인 과 UI만을 다루는 책답게 다양하고 유익한 실제 사례들을 들면서 구체적이고 상세한 설명을 해준다는 것이다.

 

몇 가지 내용을 소개하면,

 

초보자도 즉시 중급 사용자 처럼 사용할 수 있는 디자인

회원 가입 화면을 예를 들면, 사용자가 해당 필드를 입력하고 난 후에 즉시 적절한 체크와 피드백을 하라고 충고한다.

즉, 사용자가 각 필드의 입력을 하고 다음 필드로 이동할 때, 즉시 가능한 체크를 하고 문제가 없으면 필드 우측에 초록색 체크를 표시하고 문제가 있으면 붉은색 X표를 표시하는 식이다.

 

예를 들면, 사용자가 password 와 password confirm 을 입력하고 다른 필드로 이동하는 순간에 두 군데의 입력 내용을 비교하고 문제가 있으면 X표 등을 표시할 수 있겠다.

 

또, 아직 데이터가 없는 페이지에서 적절한 안내 메시지를 추가하라는 등의 충고는 Getting Real에서 익히 보던 내용이다.

 

 

사용자의 Mental Model 에 맞추어라

어떤 서비스를 개발할 때, 개발자들은 전체 기능들을 구조적으로 파악하려고 하며, 코드 자체의 논리적 완결성을 위해서 추가해야할 기능이나 옵션들에 집착한다. 하지만 사실 중요한 것은 사용자가 보는 관점이다.

사용자 입장에서 더 중요한 기능, 사용자 입장에서 우선적으로 필요한 기능들을 먼저 개발해야 하며, 비록 구현의 관점에서 필요하다고 생각되더라도 사용자 관점에 중요도가 낮거나 불필요한 기능을 과감히 제거하거나 최소화 하는 것을 고려해야한다.

 

추천 사이트와 책

 이 책에는 여러가지 휼륭한 사이트들과 책들이 소개되어 있는데, 특히 37Signals 의 서비스들이 수시로 등장한다.

그 중에서도 나는 특히 Skobee 의 디자인이 참 좋은 것 같다. 심플하면서도 명료한 컬러 배치 그리고 친절하고 알기 쉬운 메시지들이 특징이다.

 

또, 반드시 읽어야 할 책으로 추천한 Desinging Interface 도 꼭 읽어봐야겠다.

 

<< 이전 글

Options:

Size

Colors