오랫동안 아이폰 해킹 커뮤니티에 소속돼 있으며 사람들은 내게 아이폰 SDK에 대한 의견을 물어왔다. 이 책을 구매한 독자들에 대한 보답으로서 그에 대한 답을 들려 드리고자 한다. 간단히 요약하자면, 애플 아이폰 SDK는 보기 싫게 어지러진 것들을 깔끔하게 정리하는 매우 훌륭한 고수준 기능들을 포함한다. 아이폰 SDK라는 안락한 군집 속 깊은 곳에는 매우 비조직적이고 불완전하게 디자인된 프레임워크가 존재하기는 하나, 이렇듯 거친 기능조차 SDK가 없는 분야에 비해 매우 기능적이기도 하다. 아이폰 SDK는 품질과 기능이 뛰어난 앱스토어용 애플리케이션을 개발하기에 충분하다(그렇지 않았다면 이 책을 쓰지도 않았을 것이다). SDK가 제공하는 인터페이스는 훌륭한 소프트웨어를 디자인하는 대부분 개발자들에게는 유용하지만 대부분 사람들이 사용할 수 없는 기능에 관해서는 잘 알지 못한다. 오픈소스 진영에 발을 들여놓은 사람들에게 아이폰 SDK는 여전히 논쟁의 핵심이다.
아이폰 SDK를 둘러싼 정책에 익숙치 않은 사람들에게 간단히 설명하자면, 개발자 인터페이스에는 애플이 사용하는 인터페이스와 SDK에서 제공하는 인터페이스, 두 가지 세트가 있다. 둘 사이에는 중복되는 부분이 있지만 이미 내 책 『iPhone Open Application Development』(오라일리)에서 SDK에서는 볼 수 없는 많은 클래스와 프레임워크에 대해 저술한 바 있다. 책에 나온 내용 중 대부분은 SDK에서는 사용할 수 없기 때문에 아마 들어 본 적도 없을 것이다. 대부분 초기 아이폰 해킹 커뮤니티 회원은 아이폰 운영체제를 직접 해킹하는 방법을 찾아냈다. 심벌 테이블과 클래스를 덤프하고, 시행착오를 통한 실험을 몇 주에 걸쳐 직접 해봄으로써 우리는 결국 비공개 항목 등을 담아낸, 프레임워크들은 물론 아이폰 사용자 인터페이스 킷에 해당하는 전반적인 유전자지도를 완성했다. 개발자들이 오픈소스 툴체인으로 아이폰 소프트웨어를 개발할 때 사용하는 것이 바로 이런 저수준 API다. 이 같은 저수준 API를 써서 SDK에서는 허용하지 않는 작업을 수행해낸 애플 애플리케이션이 의외로 많다.
오픈소스 툴체인 개발자들이 제공하는 이들 저수준 API는 애플 SDK보다 더 나은 개발 프레임워크를 제공한다고 생각한다. 디바이스에 완전히 감춰진 대다수 프레임워크의 기능은 앱스토어 개발자들이 대부분 사용할 수 없게 돼있다. 꼭 그런 건 아니지만, 애플의 기존 애플리케이션에 잠재적인 경쟁 상대가 되는 애플리케이션은 개발할 수 없는 결과를 낳았다. 스크린 레이어에 원시 픽셀을 직접 렌더링하고 그래픽 가속기 사용을 포함하는 기능을 SDK 개발자들에게 제공하는 코어 서피스 프레임워크(Core Surface framework)를 엄격하게 제한하는 것은 가장 큰 위법 행위에 해당한다. 이 프레임워크를 활용하지 않고 2D 렌더링이 필요한 커스텀 영상 재생기, 비디오 녹화기, 공개 닌텐도 에뮬레이터 같은 고성능 2D 게임 애플리케이션의 성능 향상을 꾀하기란 여간 어려운 일이 아니다. 코어 서피스 프레임워크는 또한 성능척도를 갖는 플래시나 자바같은 애플리케이션 개발에 필요한 중요한 프레임워크다. SDK에 없는 API 집합은 아이튠즈 뮤직 인터페이스와 관련되어 있다. 이는 왜 네이트 트루(Nate True)가 만든 탭탭 레볼루션(Tap Tap Revolution)의 SDK 버전에서 개인 아이튠즈 라이브러리에 있는 노래를 가져올 수 없는지, 왜 싱크스텝(SynchStep) 같은 멋진 음악 애플리케이션이 앱스토어에는 없는지에 대한 이유기도 하다. 백그라운드 실행이나 상태 바 아이콘을 보여줄 수 있는 간단한 기능조차도 앱스토어의 제한된 API를 사용해야만 한다. 두말할 나위도 없이, 오픈소스 아이폰 컴파일러는 SDK로는 불가능한 작업들을 수행함으로써 아이폰 소프트웨어 시장에서 애플과 대적할 만한 경쟁상대로 부각됐다.
이런 일들의 이면에서, SDK는 오픈소스 진영은 결코 상상조차 할 수 없는 돈다발을 쥐어준다. 아이튠즈 사용자만큼의 거대한 고객에게서 얻을 수 있는 금전적인 이익을 상상해본 개발자들은 혐오스런 애플의 정책을 감내하기에 이른다. 앱스토어는 이처럼 기꺼이 독배를 마시려는 혁신가들에게 재정적인 보상을 안겨준다. 앱스토어가 제공하는 잠재적인 수익은 자신들의 애플리케이션이 조금씩 불구가 되어감에도 불구하고 공개 커뮤니티를 넘어서는 명확한 장점을 개발자들에게 부여한다. 독립적인 기술적 관점에서 오픈소스 컴파일러는 SDK 인터페이스와 사용할 때 주의가 필요한 저수준 비공개 인터페이스 중 어떤 것이든 사용해서 애플리케이션을 생성할 수 있다. 비공개, 문서화되지 않은 인터페이스를 개발 프로젝트로 쉽게 가져올 수 있다. 이 사실은 애플리케이션을 개발할 때 가능한 조합을 제시한다.
결국 앱스토어에 애플리케이션을 배포하고 싶다면 애플의 정책에 따라야 한다. 애플은 비공개 인터페이스나 프레임워크를 사용한 애플리케이션을 허용하지 않는다. 소문에 의하면 애플은 그들의 영역과 겹치는 기발한 애플리케이션을 거부하기도 하고 고유한 화면 밝기를 조절하려는 시도에 대해 신경질적이라고 한다. 여러분이 상업적인 개발자거나 기업에 납품할 소프트웨어를 설계한다면 실제로 가능한 경로는 단 한 가지뿐이며, 그것은 이 책에 나오는 인증받은 API를 사용하는 것이다. 그러나 이 책을 읽는 여러분이 오픈소스에 열광적인 지지자이고 자신의 코드를 좀 더 예술적으로 생각한다면 족쇄나 샌드박스 없이 만드는 애플리케이션 개발에 더 재미를 느끼게 될 것이다. 따라서 나는 여러분이 이 책에서 다룬 API 뿐만아니라 문서화되지 않은 수많은 API와 프레임워크도 공부해주길 바란다. 최초로 공개 컴파일러를 만들었고 온라인 커뮤니티 소프트웨어 아이폰 저장소를 운영 중인 오픈소스 커뮤니티 진영도 모든 기능을 잘 갖춘 멋진 애플리케이션이 더 많이 나오길 기대한다.
아이폰 개발 분야는 현재 분열의 고통을 겪고 있다. 양 진영은 모두 성장하고 있지만 양극화는 더 심각해지고 있다. 개발자들은 SDK에 존재하는 수많은 제약으로 인해 환멸을 느끼는 중이며, GPL 같은 인기있는 오픈소스 라이센스와 양립할 수 없다는 사실을 두고 논쟁을 하거나 애플이 아이폰을 오픈한다면 해킹은 사라질 거라고 단언한다.
나는 애플이 SDK에 대해 미심쩍고 독점적인 제한을 계속해서 강요하기보다는 아이폰 운영체제를 공개해주기를 진정으로 바란다. 아이폰이 역사상 가장 혁신적인 모바일 기기로 자리 잡고 있는 틈을 타 애플은 개발자와 소비자 모두에게 유해한 시장을 장악하려는 위험을 무릅쓰고 있다. 아이폰을 사서 쓰는 일이 총기 몇 자루를 구입하는 일보다 더 어렵다는 사실에서 애플의 통제에 대한 강한 욕망을 짐작할 수 있다. 이와 같은 완고한 태도 때문에 개발자들은 이 놀라운 모바일 플랫폼을 설계하는 데 큰 어려움을 겪었다.
나는 기기 제조사의 종잡을 수 없는 정책 때문에 명석한 개발자들의 창의성과 혁신이 영향을 받아서는 안 된다고 생각한다. 코드에는 개발자들이 표현하고자 하는 내용이 담긴다. 따라서 표현의 자유를 제재하는 검열을 강제한다면 애플 캠퍼스에서 기인하지 않은 혁신을 억압하는 것밖에는 되지 않는다.
그렇지만 여전히 나는 애플 제품에 경외심을 느끼고 그들의 혁신에 박수를 보낸다. SDK는 심사숙고의 산물일 뿐 아니라 애플의 오브젝티브C는 지금까지 내가 본 가장 우아한 개발자 중심의 언어 중 하나다. 애플은 멋진 제품을 만들어내는 능력이 있고 아이폰에 관한 거의 모든 것이 매우 훌륭하다. 애플이 다른 분야에서도 혁신을 누르지 않고 가장 창조적인 존재로 성공을 이어나가기만을 바랄 뿐이다. --- '저자 서문' 중에서
농담처럼 다음달 폰이라고 불리던 아이폰이 번역을 진행하던 중에 출시됐다. 그동안 소문도 무성했고, 기대도 많았지만 매해 스티브 잡스의 키노트에 한국이 제외됐을 때의 실망감을 생각하자면 열기가 식을 만도 하건만 막연한 기대감으로 아이폰을 기다렸던것 같다.
기다림은 현실이 됐다. 외국 블로그를 통해서나 봤던 일이 우리나라에도 벌어지고 있었다. 길에 줄지어 늘어선 사람들, 출시일을 기다리며 거리에서 밤을 새는 사람들, 아이폰 예약 전화선 불통 사태, 배송 중 개통과 같은 웃지 못할 에피소드를 남기며 최단기간 최다판매라는 기록으로 국내 이통 시장을 놀라게 했고 이통사 중심으로 폐쇄되어있던 한국시장에 변화를 불러일으켰다.
폐쇄적인 정책을 쓰는 애플이 폐쇄적인 한국시장을 눈뜨게 해줬다는 사실이 아이러니하기도 하다. 오래 전 인기 키워드였던 모바일, LBS 같은 단어들은 다시 뜨겁게 달아오르고 있다. 그리고 아이폰이 보여준 스마트폰의 우아한 수준은 사용자와, 국내외 제조사와 SW개발사, 서비스 제공업체 모두에게 긍정적인 효과를 주고 있다.
이 책은 입문서다. 아마도 아이폰 SDK를 다루는 번역 입문서 중에는 가장 마지막 책이 되지 않을까 생각한다. 예전 아이폰 해킹커뮤니티를 이끌던 저자의 애플 폐쇄정책에 대한 비난과 매력적인 아이폰에 대한 애정이 고스란히 표현된 책이다. 무엇을 할 수 있고 무엇을 할 수 없는지에 대한 설명들을 따라가면서 아이폰 SDK의 본 모습을 알 수 있고 더 공부해야 할 것들이 무엇인지를 알려주는 입문서로 충실한 역할을 하리라 생각한다.
아이폰은 사용자뿐만 아니라 개발자에게도 새로운 환경과 가능성을 열어줬다. 책에도 나오지만 입신양명과 일확천금을 꿈꾸는 수많은 개발자가 오늘도 아이폰 플랫폼의 문을 두드리고 있다. 이 책을 손에 쥔 여러분의 마음 한구석에도 비슷한 생각이 자리잡고 있을지도 모르겠다.
아이폰과 더불어 안드로이드 역시 이런 붐을 일으키는 다른 축이 되고 있다. 최근?는 삼성이 바다플랫폼을 공개했고 앱스토어에 대항하는 글로벌 이통사들의 연합소식도 들려온다. 어찌됐건 이런 사건들 덕분에 결국은 소프트웨어와 컨텐츠에 돈을 지불하고 구입하는 긍정적인 시장을 만드는 데 기여하고, 이는 바로 개발자들에게 노력한 만큼의 대가, 노력할 만한 비전을 심어주는 선순환 구조를 만들어낸다. 공부할 게 점점 많아지기는 하지만 다양한 플랫폼에서 다양한 경험을 했으면 하는 바람이다.
마무리 작업을 진행하는 동안 스티브잡스가 새로운 디바이스 아이패드iPad를 소개했고 그와 관련해 버전업된 베타버전의 SDK가 등록된 개발자들에게만 공개됐다. CoreText 프레임워크 추가와 기존 프레임워크에 추가된 메소드들로 약간의 변화가 있었지만 OS 버전이 바뀌고 기존의 문서화되지 않은 API의 공개수준이 아니라면 당분간 SDK 입문서류의 책들은 더 이상 큰 변화는 없을 거라는 생각이 든다.
부디 개발자들이 이 책을 읽고 아이폰 개발을 좀더 쉽게 이해하고 큰 결실을 맺는 계기가 되길 바란다.
--- '옮긴이의 말' 중에서