애플은 해마다 ‘세계 개발자 컨퍼런스(WWDC)’ 행사를 개최하고 애플의 전략과 새로운 기술을 공개한다. 대개WWDC에선 새로운 운영체제와 아이폰·아이패드 같은 새 하드웨어 제품들이 주목을 받지만, 2014년에는 조금 달랐다. 애플이 직접 개발한 프로그래밍 언어 ‘스위프트(Swift)’가 공개돼 화제를 모았기 때문이다. iOS 응용프로그램(앱)을 개발할 때 주로 이용하는 이 언어는 행사 당일은 물론, 1년 뒤 오픈소스 언어로 전환되면서 다시 한번 많은 사람들의 관심을 받았다. 애플이 독자적으로 만든 프로그래밍 언어는 어떤 모습일까? 애플은 스위프트로 무엇을 얻으려는 걸까?
스위프트는 iOS와 OS X 운영체제에 최적화된 프로그래밍 언어다. 과거 iOS나 OS X 앱을 개발하기 위해선 ‘오브젝티브 C’라는 언어를 이용해야 했다. 기존 C언어에 ‘오브젝티브(Objective, 객체지향)’의 성격을 섞은 언어였다. 오브젝티브 C(Objective-C)는 1980년대에 공개된 언어로, 스텝스톤(Stepstone)이라는 소프트웨어 기업 소속 연구원들이 개발했다. 오브젝티브 C는 스티브 잡스가 애플을 나와 설립했던 또 다른 기업인 넥스트(NeXT)에서 적극적으로 이용하면서 인기가 높아졌다. 넥스트 소속 개발자들은 오브젝티브 C와 관련된 런타임, 컴파일러, 빌더 등 개발도구를 직접 개발하면서 그 효용성을 높였다. 그 뒤 넥스트는 애플과 합병됐고, 애플은 맥용OS를 만들면서 넥스트가 만들었던 오브젝티브 C 기반 개발 환경도 함께 가져갔다. 시간이 지나면서 애플의 주요 개발도구인 ‘엑스코드(Xcode)’, ‘코코아API’ 등이 오브젝티브 C 기반으로 만들어졌고, 오브젝티브 C는 iOS와 OS X 개발자의 주류 언어로 자리잡았다.
스위프트는 오브젝티브 C에서 C언어의 특성을 줄이고 객체지향 언어의 성격을 강화한 언어다. 애플은 보도자료를 통해 “오브젝티브 C 언어를 이용할 때 흔히 발생하는 에러를 줄일 수 있도록 설계됐으며 좀 더 안정성을 높일 수 있을 것”이라며 “직관적이고 배우기 쉬운 언어”라고 스위프트를 소개했다.
스위프트는 최근에 나온 언어답게 오브젝티브 C와 C언어의 아쉬운 점을 보완했다. 예컨대 스위프트는 개발자가 의도한 규범이나 가정을 좀 더 명료하게 표현할 수 있다. 이를 위해 스위프트에선 자료형을 엄격히 제한하고 있으며, ‘옵셔널(Optionals)’이라는 개념을 통해 ‘nil’을 할당할 수 있는 자료형과 그렇지 못한 자료형을 구분하고 있다.
스위프트는 또한 코드 안에서 다루는 타입의 값이 명확히 드러나는 ‘타입 세이프 언어’를 추구한다. 그래서 컴파일할 때 타입을 미리 검사해 관련 오류를 최소화했다. 오브젝티브 C에선 쉽게 구현할 수 없었던 튜플(Tuple), 문자열 삽입, 제네릭(Generic), 연산자 함수도 스위프트에선 지원된다. 애플은 스위프트의 성능이 높다는 점도 꾸준히 강조하고 있으며, 기존 오브젝티브 C 기반 앱보다 스위프트 앱의 성능이 최대 2.6배 높아진다는 결과도 발표했다.
새로운 언어를 개발하는 건 쉽지 않은 일이다. 개발자들에게 사랑받는 언어가 되기까지는 오랜 시간이 필요하다. 많은 수고가 필요함에도 애플은 왜 직접 프로그래밍 언어를 개발했을까? 이에 대해 애플은 상세한 동기를 밝히진 않았지만 몇 가지 추정은 가능하다.
일단 개발 생태계를 확보하는 전략으로 풀이할 수 있다. 이제 애플, 구글 등은 하드웨어만으로 수익을 내지 않는다. 수많은 개발자와 함께 앱 개발 생태계를 만들고, 그로 인한 부가가치를 창출하고 있다. 이러한 생태계를 보다 적극적으로 지원하기 위해 애플은 좋은 프로그래밍 언어와 프레임워크를 기업 차원에서 직접 지원하려는 것으로 보인다. 애플은 최근 스위프트를 iOS와 OS X 뿐만 아니라 애플와치 운영체제인 ‘와치OS(watchOS)’, 그리고 애플TV를 위한 운영체제 ‘TVOS’에 가장 적합한 언어라고 강조하고 있다. 이를 통해 애플은 하드웨어에서 사용할 수 있는 양질의 콘텐츠를 앱 생태계에서 끌어올려는 것으로 보인다.
다음으로, 새로운 시대에 필요한 기능을 예전 언어로 구현하기 힘들기 때문이다. C, 자바, 오브젝티브 C등 기존에 많이 사용된 언어들은 10~30년 전에 개발된 언어들이다. 과거에는 모바일 기기도 없었고, 수많은 사용자들이 스마트 기기와 웹사이트에 몰리지도 않았다. 이미지, 동영상 등 사용자가 소비하는 콘텐츠도 과거와 많이 달라졌다. 최근엔 새로운 기능과 현대 시대에 맞는 프로그래밍 방식을 언어 차원에서는 지원하는 경우가 늘고 있다. 이러한 언어를 ‘모던 프로그래밍 언어’라고 부른다. 스위프트를 비롯해 구글이 만든 ‘고(Go)’, 모질라재단이 만든 ‘러스트(Rust)’, 젯브레인이 만든 ‘코틀린(Kotlin)’ 등이 대표적인 모던 프로그래밍 언어다.
크레이그 페더리기(Craig Federighi) 애플 소프트웨어 엔지니어링부 시니어 부사장이 2015년 12월 <더넥스트웹>과 인터뷰한 내용을 살펴보면, 애플이 스위프트로 얻고자 하는 바를 엿볼 수 있다. 그는 “개발자들이 사용하는 주 언어가 스위프트가 됐으면 좋겠다”라며 “스위프트를 처음 개발할 때 모바일 앱부터 클라우드까지 어디서든 쓰일 수 있는 언어가 될 수 있도록 신경썼다”라고 말했다. 그는“스위프트는 향후 20년간 쓰일 주류 언어가 될 것”이라고 기대하기도 했다.
새로운 언어가 등장했다고 해서 모든 개발자가 기존 언어를 곧바로 버리는 것은 아니다. 아직 스위프트가 오브젝티브 C를 대체했다고 말할 순 없다. 많은 고객을 위해 만든 서비스는 안정성이 수반돼야 한다. 하지만 대부분 신생 프로그래밍 언어는 초반에 많은 피드백을 받으면서 기능이 자주 개선되고, 개발자 입장에서 새로운 업데이트가 기존 시스템과 충돌하진 않는지 일일이 점검해야 한다.
그런 만큼 새로운 언어는 성숙기를 거친 뒤에야 사용자가 본격적으로 늘어나기 시작한다. 여기에 관련 예제나 보조 기술이나 개발 도구 등도 따라줘야 많은 개발자들에게 퍼질 수 있다. 어찌보면 새로운 언어가 가지고 있는 숙명이기도 하다. 따라서 당분간 과도기 성격으로 소규모 프로젝트나 스타트업에서 스위프트를 실험적으로 사용할 가능성이 높다. 애플 역시 “애플은 오브젝티브 C를 버리지 않았으며, 스위프트에서 통합해서 이용할 수 있도록 지원할 것”이라고 강조한다. 현재 스위프트로 개발된 대표 iOS 앱은 ‘링크드인’, ‘리프트’, ‘야후 웨더’, ‘칸아카데미’ 등이다.
이제 2년차에 접어드는 신생 언어지만, 많은 개발자들이 스위프트에 관심을 보이는 것은 사실이다. 스위프트가 발표된 뒤 한국에서는 자원봉사자들이 빠르게 모여 스위프트 공식 문서를 직접 번역하기도 했다. 프로그래밍 인기 순위를 전문적으로 책정하는 ‘레드몬크’나 해외 개발자 커뮤니티 ‘스택오버플로우’에서는 스위프트를 ‘가장 빨리 성장하고 있는 프로그래밍 언어’라고 소개하며 성장 가능성을 높게 평가했다.
애플은 2015년 12월3일, 스위프트를 오픈소스 언어로 전환하고 관련 소스코드를 깃허브에 올렸다. 언어에 대한 명세 뿐만 아니라 누가 어떤 기능을 고치고 수정했는지에 대한 정보와 라이브러리, 컴파일러, 디버거, 패키지 매니저 등 다양한 소스코드가 함께 공개됐다. 스위프트에 관련한 실무적인 일은 크리스 라트너(Chris Lattner) 애플 엔지니어를 비롯한 소프트웨어 엔지니어팀이 주도하고 있다. 크리스 라트너는 ‘로우레벨가상머신(LLVM :Low Level Virtual Machine)’과 ‘클랭(clang)’을 개발한 인물로 유명하다. 그는 2005년부터 애플에 합류했으며, 2010년부터 스위프트 언어의 기본 구조를 세우고 프로젝트를 주도하기 시작했다.
현재 깃허브에 공개된 ‘스위프트 기여자 명단’ 파일을 보면 스위프트에 기술을 제공한 사람은 200명이 넘으며, 이 가운데 애플의 공식 e메일 계정(@apple.com)을 가진 인물은 76명이다. 다시 말해 70여명의 애플 직원이 스위프트 기술 개발에 직·간접적으로 참여했다는 뜻이다. 이 가운데 1천번 넘게 커밋(commit)을 한 개발자도 8명 정도로, 모두 애플 직원이다. 특히 핵심 기여자들은 LLVM이나 컴파일러 엔지니어 전문가들이다.
스위프트에 대한 관심이 커지자 기업용 스위프트 기술에 투자하는 기업들도 등장하고 있다. 현재 가장 눈에 띄는 곳은 IBM이다. IBM은 스위프트 이전부터 모바일 전략을 가속화하기 위해 애플과 파트너십을 맺고 기업용iOS 앱을 적극적으로 만들고 있다. 스위프트가 2015년 오픈소스 언어로 변환되자마자 IBM은 스위프트 테스트 도구인 ‘스위프트 샌드박스‘를 공개해 누구나 스위프트 코드를 무료로 테스트할 수 있게 지원했다. 2016년에는 스위프트 서버 기술 ‘키투라’와 스위프트 관련 패키지 정보를 한눈에 볼 수 있는 ‘스위프트 카탈로그’도 내놓았고, 스위프트 개발도구 ‘스위프트 런타임’을 블루믹스에 추가하기도 했다. 마이클 길픽스(Michael Gilfix) IBM모바일퍼스트관리팀 부사장은 “새로운 앱은 새로운 언어로 만들어야 한다”라며 “스위프트는 배우기 쉽고, 안정적이고, 빠르기 때문에 차세대 엔터프라이즈 모바일 앱을 만들기에 좋은 핵심 요소를 가지고 있다”라고 말했다.
캐나다 IT 기업인 퍼펙트리소프트는 스위프트의 서버용 프레임워크 ‘퍼펙트’를 만들어 공개했다. 퍼펙트리소프트는 “엔터프라이즈 환경에서 스위프트를 이용하려면 좋은 서버단 프레임워크가 필요하다고 생각했다”라며 개발 동기를 밝혔다. 퍼펙트는 서비스 앞단(프론트엔드)과 뒷단(백엔드)을 한 언어로 구축할 수 있다는 점에서 ‘노드JS’와 비교되기도 한다. 스위프트가 오픈소스 프로젝트로 진행되는 것처럼 퍼펙트 역시 오픈소스 프레임워크다.
퍼펙트와 비교되는 기술로는 ‘엑시스’가 있다. 엑시스는 미국 위스콘신대학교 컴퓨터과학과 박사과정 학생들이 2015년에 만든 기술이다. 스위프트가 오픈소스로 전환된 이후, 엑시스는 스위프트 뒷단 서비스를 클릭 몇 번으로 만들 수 있는 기술을 공개했다.