마이크로소프트웨어 잡지 2014년 8월호에 기고한 글입니다.

 

WWDC 2014 헬스킷과 홈킷으로 본 애플의 사물인터넷 전략

 

오월동주(吳越同舟)

오(吳)나라와 왕인 합려(闔閭)와 월(越)나라의 왕인 윤상(允常)은 서로 원수지간이었다. 그들의 원한 관계는 다음 세대까지 이어졌다. 윤상이 죽자 그의 아들 구천(句踐)이 오나라를 침략해 합려를 죽였고, 합려의 아들인 부차(夫差)는 구천을 굴복시켰다고 한다. 이들의 이야기는 손자병법孫子兵法)의 구지편(九地篇)에 기록되어 있다. “오나라 사람과 월나라 사람은 서로를 미워한다. 그러나 그들이 같은 배를 타고 가는데 바람을 만나면 왼손과 오른손이 협력하듯 서로 돕는다”라는 뜻이 담겨 있다.

————————————————————–

신제용 jeyong@gmail.com | LG전자 SW역량강화센터에 근무하고 있다. 사내 애자일 프랙티스 전파와 교육 업무를 맡고 있다. Go언어와 오픈소스 SW/HW에 관심이 많다.

————————————————————–

올해 WWDC에서 가장 기대를 모았던 것은 웨어러블 기기와 신형 아이폰이었다. 국내 많은 개발자들이 한껏 부푼 기대를 안고 새벽까지 뜬눈으로 WWDC 개막을 기다렸다. 그러나 WWDC에서 이에 대한 소개는 그 어디에서도 찾을 수 없었다. 이번 WWDC는 이런 측면에서 한껏 기대하던 이들에게 실망을 줬을지도 모른다. 실체가 없는 개념이나 기술이기에 그 의미 전달이 어려워 더 실망했던 건 아닐까 생각된다. 그러나 이번 WWDC에서는 무척이나 다양한 기술이 발표됐을 뿐 아니라 새로운 개발 언어인 스위프트(Swift)는 개발자에게 있어 깜작 선물이 아닐 수 없다.

 

iOS8
  • 사용 중인 앱을 빠져나오지 않아도 답장을 보낼 수 있는 알림센터
  • 맥과 동일한 검색 기능을 제공하는 스포트라이트
  • 애플 이외의 써드파티가 개발한 키보드도 지원
  • 헬스키
  • 홈킷
OS X 요세미티
  • 맥에서 전화 수신 가능
  • 맥에서 MMS/SSM을 수발신 가능
  • 맥에서 작업 중이던 문서를 아이패드에서 이어서 작업 가능(핸드오프)
  • 맥에서 아이폰의 핫스팟 구동(인스턴스 핫스팟)
  • 맥과 아이폰 간의 파일 전송(에어드롭)
기타
  • 새로운 프로그래밍 언어, 스위프트

<표 1> WWDC 2014의 주요 발표 내용

 

이 중에서도 최근 화두가 되고 있는 사물인터넷과 관련된 기술인 홈킷(HomeKit)과 헬스킷(HealthKit)을 중심으로 이야기할까 한다. 먼저 이해를 돕기 위한 가상 시나리오를 만나보자.

 

  • 서울 근교의 2층 단독주택에 살고 있는 김철수 씨.

10분이나 늦잠을 자 아침출근 준비를 서둘렀다. 현관을 나서는 찰나 안방 전등을 그대로 켜두고 나온 것이 생각났다. 가방에서 열쇠를 찾아 잠긴 현관문을 열고 급히 안방으로 뛰어 들어갔다. 예상대로 전등이 켜져 있었다. 전등을 끄고 다시 출근을 서두르는데 거실에 에어콘이 켜져 있는 것을 발견했다. 쇼파에 놓인 리모콘의 전원키를 눌러 에어콘을 껐다. 조금만 더 지체하면 정말 지각이다. 다시 현관으로 달려가는데 문득 욕실 전등도 켜져 있을지 모른다는 걱정이 들었다. 다시 욕실에 들어가서 불이 켜져 있는지 확인하면 지각할 것이 분명했다. 어쩔 수 없이 퇴근 후 확인하기로 마음 먹고 그대로 집을 나섰다.

homehealkit2014_01

<그림 1> 애플 홈킷 로고

애플의 홈킷을 이용하면 누구나 한번쯤 겪었을 이런 상황을 더 이상 고민할 필요가 없다. 홈킷이 어떠한 기능을 제공하기 때문에 그런 것일까? 지금부터 소개할 홈킷의 기능을 이러한 가상의 시나리오 관점에서 바라보길 바란다. 홈킷이 어떠한 변화를 가져올지를 말이다.

홈킷은 애플의 모바일 운영체제인 iOS를 사용하는 아이폰, 아이패드를 이용해 집안에서 사용하는 장치들을 연결하고 제어하기 위한 프레임워크다. 즉 앱으로 가정의 기기를 검색하고 제어하기 위한 기술이다. 사용자는 여러 기기를 하나의 동작으로 묶을 수도 있고 애플의 음성인식 기술인 시리(Siri)로 명령을 내릴 수도 있다. 홈킷은 현재 iOS8 SDK와 Xcode6 베타에서 테스트 가능한데, 가을쯤 Xcode6 정식 버전이 나온 후에야 일반 개발자도 홈킷을 사용할 수 있을 전망이다.

홈킷은 새로운 기술인가?

새로운 기술이 아니다. 특히 전자제품 제조사들은 오래 전부터 스마트홈(Smart Home)이라는 콘셉트로 집안의 기기를 연결하고 제어하는 방법을 제안해 왔다. 스마트홈과 홈킷의 차이는 제조사 주도에서 플랫폼을 가진 SW 기업으로 기술 주도권이 바뀌었다는데 있다. 기존의 스마트홈은 제조사 간 입장 차이로 표준이 정립되지 않아 특정 제조사 제품으로 구성해야 가정 내 기기를 제어할 수 있다. 이미 충분히 실현 가능한 기술이 개발돼 있음에도 지금까지 콘셉트로만 접할 수 있었던 것도 이 때문이었다.

 

홈킷의 특징

지금부터는 홈킷의 주요 특징을 살펴보자.

 

  • 집안의 모든 전자제품

홈킷으로 집 안의 다양한 기기를 연결하고 제어할 수 있다. 이용 가능한 기기는 전등이나 스탠드와 같이 단순히 스위치를 켜고 끄는 기기는 물론 현관문, 온도 조절장치, 믹서기 등도 제어할 수 있다. 확장성을 고려해 앞으로 개발될 기기에 특별한 동작을 추가하고 이를 제어할 수도 있다.

homehealkit2014_02

<그림 2> 다양한 액세서리(Accessory)

 

  • 공통 데이터베이스

홈킷에서 기존 방식과 가장 두드러진 차이점은 공통 데이터베이스를 두고 다양한 앱이 여기에 접속할 수 있다는 것이다. 홈킷을 사용하는 경우 각 장치들의 정보가 공통 데이터베이스에 저장되고, 각 앱에서 동일한 인터페이스로 데이터베이스에 접근할 수 있다. 즉 홈킷을 지원하는 앱들은 자신만의 데이터베이스를 따로 구축할 필요가 없다. 물론 다른 앱들도 여기에 접근 가능하다. 이는 개발자의 공수를 상당히 줄여주는 이점이 있지만 홈킷이라는 플랫폼 생태계의 특성상 애플의 입김이 강하게 작용할 수밖에 없음을 의미하기도 한다.

homehealkit2014_03

<그림 3> 다양한 앱에서 접근 가능한 공통 데이터베이스

 

  • 음성 명령을 위한 시리

홈킷만 있다면 더 이상 기기를 찾기 위해 메뉴를 찾거나 문자로 검색할 필요가 없다. 각 기기마다 음성으로 ID를 부여할 수 있기 때문이다. 예컨대 ‘거실 전등’, ‘공부방 스탠드’처럼 각 기기에 이름을 지어줄 수 있다. 물론 각 장치의 동작도 음성으로 가능하다. “불을 꺼”처럼 그저 원하는 동작을 말하기만 하면 된다.

 

homehealkit2014_04

<그림 4> 시리를 이용한 접근

 

  • 원격 제어

외출을 한 상황에서도 손쉽게 집안의 기기를 제어할 수 있다. WWDC 2014에서 구체적인 모습이 드러나지 않았지만 다양한 매체들은 애플TV가 집안의 허브 역할을 담당하여 원격 접속과 제어가 이를 통해 이루어질 것으로 보고 있다. 원격 접속 모델에 대해 애플이 구상하고 있는 전략이 조만간 드러나지 않을까 생각된다.

homehealkit2014_05

<그림 5> 아이폰을 이용한 원격 제어

 

홈킷 관련 용어의 이해

홈킷의 개념을 설명하는 데 자주 쓰이는 용어들이 있다. 이 용어에 대한 이해가 부족하면 홈킷의 구성과 동작을 이해하기 어렵다. 그러므로 홈킷과 관련된 용어의 뜻을 정확히 이해하고 넘어가자.

 

homehealkit2014_06

<그림 6> 각 객체 간 연결

 

 

용어 관련 클래스 기능 기타
홈 매니저((HomeManager) HMHome Manager 1개 이상의 홈을 관리하는 역할을 한다. 홈의 추가, 삭제를 통해 홈 리스트를 만든다. 각 홈에 변경이 있을 경우 추적하는 역할도 수행한다.
홈(Home) HMHome 룸과 액세서리가 홈에 포함될 수 있다. 이름을 부여해 시리로 접근 가능하다. 예: 상도동 아파트
룸(Room) HMRoom 액세서리가 룸에 포함될 수 있다. 홈처럼 이름을 부여하면 시리에서 접근할 수 있다. 예: 안방
액세서리(Accessory) HMAccessory 실제 물리 기기에 대응되는 개념이다. 하나의 룸에 할당되며 장치의 상태에 접근할 수 있다. 물론 홈처럼 이름을 지정해 시리로 접근할 수 있다. 예: 침대 스탠드
서비스(Service) 각 액세서리, ㄱ 기기가 가지는 하나의 기능을 뜻한다. 해당 서빗는 다양한 캐릭터리스틱을 포함하고 있으며, 시리로 접근 가능하다. 예: 전등 상태변경
서비스그룹(ServiceGroup) HMServiceGroup 1개 이상의 서비스를 임의의 그룹으로 묶는다. 하나의 서비스는 여러 서비스그룹에 포함될 수 있다. 예: 야간전등
캐릭터리스틱(Characteristic) 서비스의 인자로 사용돼 액세서리와 상호작용한다. 상호작용의 결과를 처리하기 위해 완료 시 처리할 핸들러를 이용한다. 읽기쓰기에 대한 권한이 설정돼 있다. 예: 전등 상태 변경의 인자로 ‘On’
(Zone) HMZone 1개 이상의 룸을 임의의 그룹으로 묶는다. 하나 룸은 여러 존에 포함될 수 있으며 시리로 제어 가능하다. 예: 2층
액션셋(ActionSet) 함께 실행할 여러 액션을 묶는다. 묶인 액션들 사이에는 실행 순서를 정할 수 없다는 점에 주의하자. 예: 밤
트리거(Trigger) HMTimerTrigger 액션셋을 실행하는데 특정 날짜나 반복 패턴을 지정할 수 있다. 백그라운드로 실행된다. 예: 집을 비우는 경우 특정 시간예: 전등이 켜지거나 꺼지게 설정

<표 2> 홈킷 관련 용어

 

  • 초기 설정 시나리오

홈과 룸 그리고 액세서리를 설정하는 표준 순서는 다음과 같다.

 

① 홈 생성

①-1 홈에 이름을 짓는다(예 : 상도동 아파트).

② 룸을 홈에 추가

②-1 룸에 이름을 짓는다(예 : 큰방).

③ 엑세서리 추가

③-1 집안에 있는 액세서리, 즉 장치들을 브라우저로 검색한다.

③-2 검색한 액서서리를 홈에 추가한다.

③-3 액세서리에 이름을 짓는다(예 : 침대 스탠드).

③-4 이 액세서리를 특정 룸에 할당한다.

 

homehealkit2014_07

<그림 7> 설정을 완료한 구성도

 

  • 홈킷 테스트

홈킷용 앱을 개발하고 테스트하기 위해서는 반드시 다양한 액세서리를 반드시 구입해야 할까? 이 경우 테스트 진행에 많은 비용과 시간이 소요될 것이다. 이에 Xcode에서는 <그림 8>처럼 액세서리 동작을 시뮬레이션할 수 있는 환경을 제공한다.

 

homehealkit2014_08

<그림 8> 홈킷 액세서리 시뮬레이터

 

헬스킷

만약 “요즘 몸은 좀 어떠세요?”라는 질문을 받는다면 “최근 3개월간 혈압은 평균 121/82정도고요. 혈당은 90mg/dl, 잠은 평균 6시간 정도 자는 것을 봤을 때 좋은 것 같아요”라고 답하는 날이 가까운 미래에 오지 않을까? 웨어러블 기기 중 현재 가장 널리 활용되고 있는 분야가 건강과 운동이다. 단순하게는 몸무게, 심박, 수면 양과 질 등의 측정기기를 비롯해 만보기처럼 소요 칼로리를 측정하는 기기도 쉽게 접할 수 있다. 건강에 대한 관심이 높은 만큼 향후에도 이와 관련된 분야가 인기를 끌 것으로 보인다.

homehealkit2014_09

<그림 9> 건강이나 운동과 관련된 앱

 

건강 관련 웨어러블 기기를 판매하는 제조사들은 기기의 사용성을 높여주는 앱을 함께 제공한다. 혹은 해당 기기의 판매를 확산하기 위해 SW 프레임워크를 제공해 자사의 플랫폼 중심의 생태계 구축을 꾀하고 있다. 전자에 해당하는 앱들은 자신의 데이터베이스를 구축해 사용자에게 정보를 보여주므로 다른 앱에서 이 정보에 접근하기가 쉽지 않다. 각 앱에서 사용하는 데이터베이스는 자신만의 데이터베이스 형식을 따르기 때문이다. 이러한 문제를 해결하기 위한 것이 바로 헬스킷이다.

 

헬스킷이란?

헬스킷은 iOS에서 휘스트니스나 건강과 관련된 데이터를 수집 저장하는 앱을 위한 프레임워크다. 이를 이용할 경우 헬스킷이 기본으로 제공하는 데이터베이스에 수집한 데이터를 저장하고 읽어올 수 있다. iOS에서 제공하는 공통 데이터베이스에 건강과 관련된 체중이나 키와 같은 신체정보를 비롯해 기기의 센서로부터 측정된 심박수, 혈압, 혈당 등을 다양한 앱과 공유할 수 있다. 기존의 헬스 앱 개발사가 애플의 헬스킷을 이용하고자 한다면 각각의 앱이 별도로 생성하고 유지관리했던 데이터베이스를 헬스킷 데이터베이스로 대체하면된다. 헬스킷 생태계에 기존 개발사들의 참여를 유도하기 위해 애플은 헬스킷 데이터베이스에 데이터를 넣고 빼는 것을 쉽게 할 수 있는 다양한 기능 및 처리를 제공하고 있다.

 

  • 헬스앱(Health App)

iOS8에 기본 탑재된 헬스앱의 경우 건강 및 피트니스 정보를 대시보드 형태로 읽기 쉽게 제공한다. iOS 내에 있는 건강 및 피트니스와 관련된 모든 정보를 한 곳에서 확인할 수 있는 창구역할을 하는 것이다.

homehealkit2014_10homehealkit2014_11

<그림 10> 헬스앱의 대시보드(좌)와 건강 관련 데이터(우)

 

homehealkit2014_12

<그림 11> 응급 카드(Emergency Card)>


길을 가다가 쓰러져 있는 사람을 발견했다고 가정하자. 응급 조치가 필요한 상황이다. 이 사람의 정보를 얻기 위해 지금은 지갑을 찾겠지만, 앞으로는 아이폰을 통해 이 사람이 누구인지 그리고 혈액형과 알레르기에 대한 정보는 물론 응급상황 시 주치의와 바로 연결할 수도 있다. 응급 상황 시 빠른 대처로 귀중한 목숨을 구하는 사례들이 늘어날 것이다. 물론 아이폰에 잠금이 걸려 있는 경우 이런 정보를 확인하기 어려울 것이다. 이러한 현실적인 문제점을 해결하기 위해 잠금화면에서도 이러한 응급 정보는 확인할 수 있도록 지원한다.

  • 데이터 입력 및 표시 지원

휘트니스나 건강 앱을 직접 개발할 때 가장 시간이 많이 걸리고 테스트가 필요한 부분 중 하나가 단위와 관련된 부분이다. 각 국가별로 사용하는 단위가 다르고 같은 단위일지라도 의미가 다른 경우도 있다. 가장 기본이 되는 단위로는 무게, 길이, 부피 등이다. 이렇게 자주 사용되는 단위와 관련된 처리는 헬스킷의 HKUnit 클래스가 담당한다. 단위를 표시할 경우 다양한 단위로 변환이 가능해야 한다. 예컨대 무게 단위인 g으로 입력받은 값을 필요에 따라 kg으로 표시하는 식이다. 이러한 단위 변환 작업은 HKQuantity 클래스가 제공한다.

g과 kg 혹은 pound는 모두 무게를 나타내는 단위로 상호 호환된다. kg과 kcal는 어떠할까? 이 두 단위는 더하거나 빼기가 불가능한 단위다. HKQuantity는 두 단위가 서로 호환 가능한 단위인지를 확인하는 기능을 제공한다. 만약 호환되지 않을 경우 예외가 발생된다.

homehealkit2014_13

<그림 12> 다양한 HKObjectType

 

통화나 날짜도 지역마다 표기법에 차이가 있다. 이를 지원하는 것이 Formatter다. 이미 iOS에서는 NSNumberFormatter, NSDateFormatter 등을 제공한 만큼 익숙할 것이다. 헬스킷과 관려해서는 NSMassFormatter, NSLengthFormatter, NSEnergyFormatter가 제공된다. 이전에는 앱 개발자가 신경써야 했던 부분을 헬스킷이나 iOS 차원에서 제공하므로 로컬라이제이션에 들어가는 수고를 덜고 앱을 빠르게 개발할 수 있다.

 

  • 통계 지원

단순히 소모 칼로리, 심박, 혈압, 혈당 등을 측정하는 것이 의미가 있을까? 데이터가 의미를 가지기 위해서는 해석이 필요하다. 측정한 값이 정상 수치인지 아니면 치료나 상담이 필요한지를 분석할 수 있는 능력이 필요하다. 또 하루 단위가 아니라 몇 달의 데이터를 모아 어떤 추이를 보이는지 확인하고 또 앞으로 어떻게 될 지를 예측하는 것도 중요하다. 데이터의 추이를 한 눈에 쉽게 보여줄 방법이 시각화 요소인 그래프를 이용하는 것이다. 헬스킷은 해석을 위한 통계 지원을 위해 HKStatistics 클래스를 제공한다. 이 클래스는 합, 최대, 최소, 평균 등과 같은 통계와 관련된 계산을 지원한다.

homehealkit2014_14

<그림 13> 헬스킷을 이용한 걸음수 추이 보여주는 앱

 

  • 보안

개인의 건강과 관련된 정보는 비밀이 보장돼야 한다. 개인의 허가 없이 외부에 노출될 경우 법적인 문제를 야기할 수 있다. 특히 헬스킷에서는 모든 앱에서 접근 가능한 공통 데이터베이스를 이용하므로 다양한 앱에서 데이터베이스에 접근할 수 있다. 따라서 각 건강 정보 객체별로 읽기와 쓰기 권한을 부여해 민감한 정보의 경우 접근을 제한해야 한다.

 

homehealkit2014_15

<그림 14> 각 정보별 보안 설정

 

  • 저장과 공유

헬스킷은 앱 개발 시 공통 데이터베이스에 쉽게 접근할 수 있는 방법을 제공한다. 가장 기본적인 클래스로는 HKHealthStore, HKQuery, HKObserverQuery가 있다.

 

  • HKHealthStore : 헬스킷의 공통 데이터베이스와의 연결을 담당한다. 생년월일, 혈액형, 성별의 경우 직접 제공해준다.
  • HKQuery : 일반 데이터베이스의 쿼리와 같은 역할을 한다. 헬스킷이 제공하는 공통 데이터베이스에 저장된 데이터를 이 쿼리를 통해 얻을 수 있다. 쿼리 사용 시 정렬, 기간, 개수 등의 옵션을 이용할 수 있다.
  • HKObserverQuery : 헬스킷이 제공하는 데이터베이스에서 특정 값의 변화를 감시하는 역할을 한다. 변경이 일어나는 경우 update handler를 호출한다. 이외에도 닻(Anchor)이라는 개념을 이용한 HKAnchoredObjectQuery를 제공하며 다양한 활용이 가능하다고 설명하고 있다.

 

마무리

사물인터넷 기기를 직접 개발할 경우 초기 안드로이드와 iOS 지원을 두고 고민하게 된다. 국내의 경우 안드로이드 기기의 점유율이 과반을 훨씬 넘는 만큼 iOS 지원을 고려조차 하지 않는 경우가 늘고 있다. 그러나 집안의 장치를 제어하거나 건강, 피트니스 관련 시장은 미국, 일본, 유럽 중심으로 형성되고 있으며, 이들 시장에서 iOS 지원은 필수적이다.

홈오토메이션 분야에서 애플의 경쟁자인 구글은 무엇을 준비했을까? 홈킷의 경쟁자를 꼽으라면 Nest API를 꼽을 수 있다. Google IO 2014에서 Nest로 집안에 있는 갖가지 장치들을 연결하고 제어할 수 있는 기술을 선보였기 때문이다. 또 헬스킷에 대응하는 기술로서 구글은 구글 핏(Google Fit)을 발표했다. 구글 핏은 안드로이드 휘트니스 앱을 개발할 때는 반드시 사용해야 하는 플랫폼이 될 것이다.

 

애플과 구글이 마치 약속이나 한 것처럼 비슷한 행동을 보여주는 것은 서두에 언급한 오월동주라는 말처럼 양 사가 서로 경쟁관계에 있다. 하지만 사물인터넷 시장 성장을 어느 한쪽의 힘만으로 이끌기는 역부족이다. 경쟁관계지만 이 시장을 견인하기 위해서는 이 두 기업은 상호 협력할 수 밖에 없다.

이제는 한 쪽의 플랫폼이 승리하기 위한 경쟁에서 탈피해 유사한 콘셉트를 제시함으로써 개발자의 혼돈을 최소화해 개발자들이 양쪽 플랫폼 모두를 지원하도록 돕는 형국이다.

 

참고자료

  1. http://developer.apple.com/homekit/  HomeKit 홈페이지
  2. http://developer.apple.com/healthkit/ HealthKit 홈페이지
  3. http://www.apple.com/ios/ios8/health/ iOS Health 홈페이지
  4. http://mfi.apple.com/MFiWeb/enroll.action MFi 프로그램
  5. http://developers.google.com/fit/ Google Fit 홈페이지
  6. http://techcrunch.com/2014/06/25/google-fit-warms-up/ Google FIt 정보
  7. http://www.youtube.com/watch?v=xTjejvnBJfU 휘트니스 iPhone 5s 광고
  8. http://developer.apple.com/swift/ 애플의 새로운 개발언어 Swift 홈페이지


[잡지] WWDC 2014 헬스킷과 홈킷으로 본 애플의 사물인터넷 전략

답글 남기기