본문 바로가기

블로그

LG CNS 기술블로그 DX Lounge에서 최신 IT 소식을 만나보세요!

IT Trend

애플 플랫폼과 개발도구의 핵심에는 오픈소스가 있다

2017.11.01

“어떤 사람들은 오픈소스에 문제가 있다고 생각합니다. 우리는 오픈소스가 아주 훌륭하다고 생각합니다. (Some people have a problem with open source. We think it is great.)”

2003년 한 발표장에서 나온 이야기입니다. 누가 이 말을 했을지 예상이 되시나요? 오픈소스 개발자? 리눅스 창시자? 정답은 다름 아닌 스티브 잡스입니다. 샌프란시스코에 열린 맥 월드 콘퍼런스에서 스티브 잡스 애플 설립자는 사파리 브라우저 설명을 하다가 위와 같은 이야기를 합니다. ‘Open Source’라고 쓰인 큼직한 글자를 발표자료로 보여주면서 말이죠.

스티븐 잡스가 이야기하는 Open Source
https://youtu.be/cMPQuv34vxQ?t=42s

애플과 오픈소스. 언뜻 보면 이 둘이 잘 어울리지 않을 수 있다고 생각할 수 있습니다. 애플의 기술들을 한번 떠올려볼까요? 상당수가 폐쇄성이라는 특징을 가집니다. 반대 진영에 있는 안드로이드와는 전혀 다른 정책이죠. 그러다 보니 애플은 폐쇄된 기술을 선호하고, 오픈소스 기술에 대해서는 적대적이지 않을까라는 추측을 할 수도 있습니다.

하지만 실상은 조금 다릅니다. 애플은 크고 작은 다양한 오픈소스 기술에 관여, 개발하고 있습니다. 위에서 언급한 스티브 잡스의 발언도 그런 애플의 방향을 잘 보여줍니다. 특히, 최근에는 많은 오픈소스 기술에 대해서 더욱 적극적으로 개발하고 외부에 홍보까지 하고 있습니다.

l 애플 그리고 오픈소스(출처: https://youtu.be/cMPQuv34vxQ?t=49s)

좀 더 자세히 살펴보겠습니다. 애플에게 오픈소스는 어떤 존재일까요? 공식 홈페이지에 가면 그 힌트가 있습니다.

“오픈소스 소프트웨어는 애플 플랫폼과 도구의 핵심이고, 애플은 많은 양의 소스코드를 출시하고, 코드 기여를 계속하고 있습니다. (Open source software is at the heart of Apple platforms and developer tools, and Apple continues to contribute and release significant quantities of open source code.)

애플 오픈소스 홈페이지
https://developer.apple.com/opensource/

애플은 단순히 노트북, 스마트폰을 개발하고 판매하는 하드웨어 기업이 아닙니다. 애플은 제품 내에 사용하고 있는 다양한 소프트웨어를 직접 개발하고 있는데요. 여기에 애플은 앱스토어라는 생태계를 구축하고, 애플 플랫폼 위에서는 누구나 앱이나 프로그램을 개발할 수 있게 지원하고 있습니다. 바로 이 플랫폼과 개발 도구에는 다양한 오픈소스 기술들이 활용되고 있다는 뜻입니다.

다르게 해석하자면 iOS나 Mac OS, watchOS, tvOS 위에 돌아가는 앱을 만들고 싶은 분이 있다면 어느 정도 오픈소스 기술의 지식을 가지고 있으면 좋겠다는 말이기도 합니다. 아래는 애플의 대표 오픈 소스 기술입니다.

스위프트(Swift) 언어

가장 인기 있는 애플의 오픈소스를 꼽자면, 스위프트를 빼놓을 수 없습니다. 스위프트는 애플이 만든 프로그래밍 언어입니다. 최근 2~3년 사이, 모던 프로그래밍 언어라는 개념의 기술이 마구 등장하고 있는데요. 이로써 기업, 커뮤니티 등에서는 최근 개발 환경을 반영하고, 자신들이 원하는 기능과 특징을 담은 프로그래밍을 언어를 설계하고 발표하고 있습니다. 스위프트 역시 여기 속합니다. iOS 앱 개발자가 앱을 만들려면 애플의 개발 도구인 Xcode라는 개발 도구를 이용해야 합니다.

이때 반드시 배워야 할 것이 바로 오브젝티브C 였습니다. 오브젝트C는 C언어에 ‘오브젝티브(Objective, 객체지향)’의 성격을 섞은 언어입니다. 1980년대에 처음 공개됐으며, 스텝스톤이라는 소프트웨어 기업 소속 연구원들이 개발했습니다. 이후 스티브 잡스가 애플에서 해고된 후 만든 회사, 넥스트(NeXT)에서 오브젝티브C를 이용했는데요.

여러 뒷단 기술도 함께 지원되면서 오브젝티브C의 인기가 높아졌다고 합니다. 하지만 훌륭한 오브젝티브C 언어에도 아쉬운 부분은 존재했습니다. 그리고 2014년 애플은 C언어의 특성을 줄이고 객체지향 언어의 성격을 강화한 언어 스위프트를 애플의 차세대 언어로 공개합니다.

l 스위프트 출처: https://developer.apple.com/swift/)

애플이 2014년 6월 배포한 보도자료1에 따르면 “스위프트는 오브젝티브C 언어를 이용할 때 흔히 발생하는 에러를 줄일 수 있도록 설계됐으며 좀 더 안정성을 높일 수 있을 것”이라며 “직관적이고 배우기 쉬운 언어”라고 설명하고 있습니다. 2015년 12월에는 스위프트 2.0버전을 공개하고, 이를 오픈소스 언어로 전화하겠다고 발표했습니다. 2

크레이그 페데리(Craig Federigh) 애플 소프트웨어 엔지니어링부 시니어 부사장은 2015년 12월 <더넥스트웹>과 인터뷰를 하면서 애플이 스위프트에 얼마나 공을 들였는지 밝히기도 했는데요.3 그는 “개발자들이 사용하는 주 언어가 스위프트가 됐으면 좋겠다”라며 “스위프트를 처음 개발할 때 모바일 앱부터 클라우드까지 어디서든 쓰일 수 있는 언어가 될 수 있도록 신경 썼다”라고 설명했습니다. 또한, 스위프트는 향후 20년간 쓰일 주류 언어가 될 것이라고 기대하기도 했습니다.

스위프트가 오픈소스 언어로 전환되면서 그 인기는 더욱 높아지고 있습니다. 애플 직원뿐만 아니라 외부 개발자도 스위프트 내부 개발 과정을 살펴보고 문제점 개선도 함께 할 수 있었기 때문입니다. 2015년 개발자 커뮤니티인 스택 오버플로우가 진행한 설문조사에서 스위프트는 ‘가장 사랑받는 언어’ 1위로 뽑히기도 했고요.4 2016년에는 2위로 선정됩니다.5 2017년에는 조금 더 밀려 4위로 뽑혔다고 합니다. 6하지만 배우기 쉽고 최근 트렌드를 잘 반영한 언어라 여전히 많은 iOS 개발자들이 스위프트를 배우고 있다고 하네요.

스위프트 홈페이지
https://developer.apple.com/swift/

리서치키트와 케어키트

스위프트를 시작으로 애플은 개발자 도구를 오픈소스 형태로 하나, 둘 공개하기 시작했습니다. 대표적으로 리서치키트와 케어키트가 있습니다. 리서치키트는 오픈소스 프레임워크로 의료 연구 관련 앱을 만들 때 활용할 수 있습니다. 예를 들어, 리서치키트 안에 들어있는 기술로 기기의 움직임, 화면 터치 결과 값, 위치 정보, 심장 박동수, 목소리 등의 데이터를 쉽게 받을 수 있습니다.

이러한 데이터로 의학 연구원은 기억력을 시험하거나 특정 운동을 요구할 수 있죠. 또한, 설문조사나 서약서 등을 받기 위한 모바일 앱을 만들 때도 이 리서치키트를 활용할 수 있다고 합니다.

리서치키트 링크
http://researchkit.org/
케어키트 링크
http://carekit.org/

리서치키트가 연구원이나 학자를 위한 기술이었다면, 케어키트는 의사나 치료사들을 위한 기술입니다. 예를 들어, 약 복용량을 데이터로 기록한다거나, 수면시간, 통증 정도 등을 기록해 모니터링 하는 앱을 개발할 수 있다고 합니다. 이런 기능은 보안, 시각화 기술들을 전부 구현해야 하는데요. 케어키트를 이용하면 이를 더욱 쉽게 넣어 앱을 만들 수 있다고 합니다. 이미 파트너십을 맺은 다양한 대학 병원과 의료 기관들이 제공하는 서비스도 연계해서 이용할 수 있다고 합니다.

l 케어키트를 활용한 앱 개발 예시 (출처: https://www.apple.com/researchkit/)

웹킷

웹킷은 오픈소스 웹 브라우저 엔진입니다. 애플의 웹 브라우저인 사파리에 웹킷이 활용됐습니다. 웹킷은 원래 KHTML 라는 오픈소스 기술을 기반으로 만들어졌다고 하는데요. 애플이 기능을 조금 수정해 웹킷을 개발했으며, 2005년 공식적으로 오픈소스로 전환했습니다. 현재는 애플뿐만 아니라 구글, 어도비 등도 함께 웹킷을 개발하고 있습니다.

실제로 구글은 웹킷 기술을 활용해 크롬 브라우저를 개발하곤 했는데요. 현재는 웹킷을 빼고 독자적인 오픈소스 엔진 기술인 ‘블링크’을 넣어 개발된 상태입니다. 아마존 킨들, 블랙베리 스마트폰에 있는 웹 브라우저도 웹킷을 활용해 개발했다고 하네요.

웹킷
https://webkit.org/

다윈 그리고 iOS과 맥 OS 커널

2000년대 초반 애플의 개발자 행사에서는 ‘애플의 오픈소스(Open Source at Apple)’주제의 발표를 하나씩 볼 수 있었습니다. 여기서 꼭 빠지지 않는 것이 바로 ‘다윈 프로젝트’에 대한 설명인데요. 다윈은 애플이 개발한 오픈소스 유닉스 운영 시스템입니다. 2000년에 처음 공개했으며, 소스코드 상당수는 스티브 잡스의 이전 회사 넥스트에서 개발한 기술에서 가져왔습니다.

애플의 오픈소스(Open Sourece at Apple)
https://www.youtube.com/watch?v=vN9dAxsNCFI

다윈 기술은 이후 맥 OS 기술의 근간이 됐으며, iOS, watchOS, tvOS에도 활용이 됐습니다. 오픈소스 기술이긴 하지만 그 안에 있는 모든 기술이 공개된 건 아닙니다. 라이브러리, 드라이버, 유닉스 계열 명령 등과 관련된 기술이 주로 공개됐으며, 코코아나 카본 프레임워크가 같은 윗단에 있는 기술은 여전히 외부에서 볼 수 없습니다. 2017년 10월에는 이와 관련된 흥미로운 발표도 있었는데요. iOS와 macOS의 ARM 프로세서용 커널을 오픈소스로 공개했다는 소식입니다.

현재 해당 기술을 애플의 깃허브 계정에서 볼 수 있습니다. 테크크런치는 이 소식을 보도하면서7 “애플이 개발자들의 반응을 살펴보기 위해 ARM 칩에 최적화된 커널을 공개한 것일 수 있다.”라고 추측하기도 했습니다.

애플의 깃허브 계정
https://github.com/apple/darwin-xnu
다윈 프로젝트 링크
https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/OSX_Technology_Overview/SystemTechnology/SystemTechnology.html
애플 전체 오픈소스 기술 링크
https://developer.apple.com/opensource/

글 | 이지현 | 블로터 기자

[관련 글 보기]

  • 미국은 왜 오픈소스 정부를 꿈꾸는가?
  • 3대 오픈소스 IDE, 그들은 왜 오픈소스가 되었나?
  • 오픈소스 개발자의 단짝 친구 깃(Git) 그리고 깃허브(GitHub)
  • 게임 속에 깊게 파고든 오픈소스 기술
  • ‘페이스북은 필요한 기술을 직접 만든다’ 오픈소스로!
  • 왜 마이크로소프트는 오픈소스 기술을 내놓았을까?
  • 애플 플랫폼과 개발도구의 핵심에는 오픈소스가 있다
  • https://www.apple.com/newsroom/2014/06/02Apple-Releases-iOS-8-SDK-With-Over-4-000-New-APIs/ [본문으로]
  • https://developer.apple.com/swift/blog/?id=34 [본문으로]
  • https://thenextweb.com/apple/2015/12/03/qa-apples-craig-federighi-talks-open-source-swift-objective-c-and-the-next-20-years-of-development/ [본문으로]
  • https://insights.stackoverflow.com/survey/2015#tech-super [본문으로]
  • https://insights.stackoverflow.com/survey/2016#technology-most-loved-dreaded-and-wanted [본문으로]
  • https://insights.stackoverflow.com/survey/2017#most-loved-dreaded-and-wanted [본문으로]
  • https://techcrunch.com/2017/10/01/apple-open-sourced-the-kernel-of-ios-and-macos-for-arm-processors/ [본문으로]

챗봇과 대화를 할 수 있어요