Google Adsense Side (160x600)



Visual Studio 2015에서 Objective-C 컴파일하는 것에 대한 세션 썩은 사과

http://channel9.msdn.com/Events/Build/2015/3-610

마이크로소프트 빌드2015 컨퍼런스에서 발표된 것이죠.
세션이 공개되어 일단 대충 살펴보았습니다.

해당 프로젝트(islandwood)에 대한 이후 나오게 될 추가적인 정보를 얻으려면 아래 링크에 가서 등록을 하면 된답니다.


세션 초반은 컴파일러 개선에 대한 내용이고, 중반 이후가 iOS용으로 개발된 Objective-C 코드를 VS2015에서 컴파일하는 것에 대한 내용이었습니다.

역시 마법의 은총알? 
그런것은 존재하지 않는데...

아래 이미지들은 동영상을 캡쳐한 것인데 컨트롤도 같이 캡쳐되었기 때문에 재생이 가능할 것 처럼 보여도 안됩니다. 직접 보려면 맨 위에 링크를 타고 가서 보셔야 됩니다.

당연히 컴파일 타임에서 제어하기위한 전처리구문이 있습니다.
(#ifdef ISLANDWOOD)

사실 Cocoa의 헤더도 이런거 많으니 당연하게 기대되던 것입니다. 
실은 Cocoa에서도 WIN32 구문도 있거든요. 아마도 iTunes등 이식을 위한 것인 듯.

고유 기능을 런타임에서 접근하기 위한 카테고리도 추가되었습니다. 주로 윈도우 디바이스에 맞춰주는 초기화 정보를 보내거나 하는 것이겠죠.

이 정도야 모든 크로스 플랫폼은 물론 iOS에서 버전별 호환성에도 사용되는 것이니 당연히 기대하던 것이라고 할 수 있겠습니다.


조금 더 현실적인 내용은 위와 같더군요.

iOS API의 '일부 기능'을 지원한다: 당연히 모든 기능을 지원할 수는 없지만 현실적으로 충분한 수준의 지원을 한다고는 하고 있습니다. 현재 위에 나온 것과같이 게임을 위한 것들, UIKit과 CoreAnimation등 UI 상호작용과 렌더링을 위한 부분들, Foundation/CoreFoundation처럼 기반이 되는 기능들을 위주로 구현했다고 합니다. 그리고 노티피케이션이나 SNS, 인앱구매 같은 특정 플랫폼 전용 기능들은 그에 해당하는 윈도우 플랫폼, 윈도우 스토어 기능으로 이식되는 형태로 구현했다고 합니다. 대충 뭐 상당부분의 (주로 게임 위주) 어플리케이션은 이식이 가능하지 않을까 싶긴 합니다. 허나 하이레벨에서의 미디어에 대한 지원이라거나 각종 데이터 관리, 클라우드 기능등은 언급이 안되어 있기 때문에 실제로 얼마나 용이할지는 지금 단계에서는 알 수 없네요.

캔디 크러쉬 사가를 이식했다고 얘기하지만, 문제는 구현된 기능들 자체가 캔디 크러쉬 사가 이식에 특화된 것 같은 느낌(...)을 주고 있고, 캔디 크러쉬 사가같은 것이야 말로 빠진 특화 기능들을 이용하지 않을 수 있는 앱이므로 그걸 이식한 것만으로 굉장히 유용할 것이라는 생각은 별로 안듭니다.


API의 iOS 버전을 체크하지 않는다: iOS의 API들이 하나 뛸때마다 하도 많이 변화하기 때문에 현실적으로 바라기 어려운 부분이지만, 역시 추후 유지보수에서 애로사항이 꽃필수도 있는 부분으로 생각됩니다. 

많이 사용된 API들이 우선적으로 이식됨: 당연한 정책인데, 문제는 이 프로젝트 자체가 얼마나 더 지속되는냐에 달린 것 같군요.


개인적으로 몇몇 부분에서 필수적인 프레임워크는 이식되었다는 얘기가 없어서 좀 불안하네요.


역시 불안 요소들이 산재해 있는 것 같습니다.

첫째로 이런 식의 이식이 얼마나 가시적인 이익을 주는가인데...당장의 비용 절감은 있을 수 있겠죠. 그러나 사실 이식 용이성(비용 절감)보다 얼마나 기대되는 경제적인 가치가 있는가가 이식을 좌우할 것 같은데...일단 주로 캐주얼한 게임쪽이 이식을 많이 해 볼것 같습니다. 이런 이식으로 인한 유입으로 시장 자체가 얼마나 커지느냐가 관건이 되겠죠(허나 이미 iOS에서 잘 돌아가는 것들인데?).

둘째로 장기적인 전망이 있는가 인데...이게 더 문제일 것입니다. 이 프로젝트에 의존했다가 이 프로젝트가 엎어지기라도 한다면 어떻게 될까요? 위에 세션도 뉘앙스가 조금 그런것 같더라구요. 영구적인 프로젝트는 아니라는 식으로...프로젝트가 계속되면 더 많은 API가 이식될 것이라고...개발자나 개발사에 유지보수에 헬이 벌어져서(iOS 버전에 대한 대응이 없어) 이식으로 인한 비용절감을 시간이 갈수록 상회할 가능성도 있어보입니다.

셋째는 이런식으로 이식된 앱들의 문제인데, 일단 '이식'이므로 iOS보다 항상 뒤쳐진 상태에서 시작하게 된다는 것이 되겠죠. 100% 그냥 돌아가면 모르는데, 위에 언급된 대로 최소한의 손질은 하거나 다른 라이브러리를 사용하면 설정에서 어려움이 있을수도 있고 하므로 항상 부차적인 부분이 되지 메인이 아닐 것이기 때문에...물론 마이크로소프트 입장에서는 일단 시장이 커지면 자기들이 메인으로 격상될 수 있을것이라는 생각이겠죠.

마지막은 애플 개발자들의 성향인데, 현재 상대적으로 딱히 시장성도 없어보이는 시장에 코드 호환만 좀 된다고 자신의 깔끔한(?)코드에 희안한 것(wierdness?)을 덧붙이려 할지가 문제입니다. 오히려 그 시간에 Swift로 이식하는 것을 신경쓸 사람이 더 많을 것 같습니다. 이들은 절대 다수가 맥 환경인데 윈도우로 이전할지도 의문이구요. 물론 이것은 아주 애플 순혈 개발자들에 한정된 내용일 수도 있지만...이런 준비가 더 빨랐다면 효과가 있었을지도 모릅니다.


일단은 저도 메일링 리스트에 등록해 놓은 상황이고 추이를 지켜보고 실제 컴파일을 해 보고 다시 평가하도록 하겠습니다.