구글 IO 2016의 세션에서 등장한 Awareness API 내용에 대해서 정리해 보았습니다.
스마트폰 등장에 따른 생활 양식의 변화.
고품질 앱들은 이제 Location & Context에 관심을 갖게 되었습니다.
스마트폰이 등장하면서 생활 양식에는 많은 변화가 있었습니다. 책을 읽거나, TV를 보거나, 업무 보고서를 작성하는 등
세상의 많은 일들이 스마트폰으로 들어왔습니다. 그렇다보니 스마트폰을 통해서 사용자들의 여러가지 유저 데이터가 축적이 되기 시작했고,
동시에 스마트폰에 다양한 센서가 내장되면서 가속도라던가, 기울기, 위치, 중력 등 여러가지 현실에 있는 신호들을
센서 데이터로 변환할 수 있게 되었습니다.
유저 데이터, 그리고 센서 데이터. 이 두 가지를 조합해서, 저희는 애플리케이션 사용자들에게 주변 상황이나 위치 정보를 바탕으로 한
어떤 조금 더 특별한 경험을 선사할 수가 있게 되었습니다.
구글은 사용자의 Context를 이해하기 위해서 위치, 행동, 주변에 대한 API를 구현했습니다.
그래서 구글은 이렇게 위치 정보와 컨텍스트를 쉽게 사용할 수 있게 하기 위해서, 다음과 같이 몇가지 핵심 주제로 분류해서 거기에 맞는 API를 구현해 놓았습니다.
Location 의미 그대로 사용자가 어디 있는지 파악하기 위한 API입니다.
Fused Location : 사용자의 위치를 위도, 경도 형태로 알려주는 API 입니다. GPS 센서나 Wifi 정보, Cell center등의 정보를 가지고 사용자의 위치를 파악합니다. GPS 같은 경우, 건물 밖에서 정교하게 위치를 알려주지만, 건물 내부 등에서는 제대로 동작하지 않습니다. 이런 문제들을 해결하고 조금 더 정교하게 사용자 위치를 파악하기 위해서, 또는 배터리 소모 이슈 등을 해결하기 위해서 가속도 센서 등 스마트폰의 여러 센서 정보도 활용되어 있다고 합니다. 예를 들면, 사용자가 멈춰 있을 경우에는 계속 위치 센서로 배터리를 소모할 필요가 없겠죠? 이럴 경우 가속도 센서를 활용하게 됩니다.
Place API : 장소 등을 표현하거나 검색할 때 사용하는 API입니다. 오래전부터 존재했던 API 지만, 머신 러닝이 적용되는 등 API 내부는 계속해서 지능적으로, 사용자에게 도움이 되는 방향으로 발전하고 있습니다.
Geofencing : 어떤 특정 장소를 설정해 놓았을 때, 그 장소에 언제 방문했고, 얼마나 머물렀으며, 언제 그 장소에서 나왔는지 알 수 있게 해주는 API입니다.
Activity 의미 그대로 사용자가 무엇을 하고 있는지 파악하기 위한 API 입니다.
Activity Recognition API : 사용자의 활동을 알려줍니다. 이동수단에 타고 있는지, 걷고 있는지, 뛰고 있는지, 자전거를 타고 있는지 등을 알려 줍니다. 한 8개 정도의 Type이 있었던 것 같은데 다 기억나지는 않는군요. 각각의 Type일 확률이 얼마나 되는지 알려주게 됩니다.
Google Fit Platform : 운동 관련 API입니다. 구글 워치등 웨어러블 디바이스에서 활용되겠죠. 심박수라던가, 팔굽혀펴기를 한다던가 등의 정보를 알려줍니다. 실제로 활용해보지는 않았습니다만, 심박수의 경우 단순히 심박수만 알려주는게 아니라 심박수를 바탕으로 어느 정도의 스트레스를 받고 있는지 등, 좀 더 사용자 친화적으로 활용할 수 있다고 하네요.
Sersors API : 센서 API는 센서의 원시 데이터 값에 접근할 수 있도록 해줍니다. 예를 들어, Activity Recognition 이라던가, Fused Location API 라던가, 어떤 Context를 알게 해주는 것들은 결국 센서를 통해서 가능해집니다. 이런 센서 데이터들의 실제 값은 Sensors API를 통해서 알 수 있습니다.
Neaby 사물, 또는 디바이스 간의 연결 등을 캐치해서 사용자가 어디 근처에 있는지 알려줄 수 있는 API입니다. 이제는 정말 셀 수 없을 정도로 우리 주변에 수많은 장치가 널려 있습니다. 예를 들어 핸드폰, TV, 웨어러블 기기, 비콘 등등이 있겠죠. 이들 간의 어떤 정보 교환을 통해서 사용자의 경험을 더 극대화 시킬 수 있을 겁니다. 이를 위해서 구글이 이번에 공개한 API가 바로 NearBy API 입니다.
Nearby Notifications : 주변의 어떤 장치들이 있는지 알려주는 API입니다.
Nearby Messages : 주변 기기들과 메세지를 주고받을 수 있는 API 입니다.
Nearby Connections : 기기 간에 연결이 되었는지 아는 것과, 기기 간의 연결을 지속해야지만 어떠한 메세지도 주고 받을 수 있겠죠. 그것과 관련된 API입니다.
Nearby API의 경우 직접 사용해보지 않아서 설명 또한 부실하네요.
다양한 Context API, 흩어져 있는 퍼즐 조각들
지금까지 구글이 Context와 Location을 알기 위해서 구축해놓은, 또는 새롭게 구현한 9가지 API를 살펴 보았습니다.
그런데 생각을 해보면, 저희는 이런 API들을 각각 사용하지 않습니다.
예를 들어 구글 맵에 현재 내 위치를 표히사고, 동시에 목적지인 특정 장소에 도착했는지 알기를 원할 수가 있습니다.
이럴 경우 Fused Location API 와 Geofencing API 두 가지를 사용해야 합니다.
어쩌면 9개 API를 모두 조합해서 사용해야 될 수도 있습니다.
수 많은 API를 조합해서 사용한다는 것은, 쉽지 않은 일입니다.
문제는 이런 조합을 하는 것입니다. 운전했다는 것을 감지하는 것이 먼저냐, 방문해야 할 상점 Type이 먼저냐, 내 위치를 먼저 표시할 것이냐,
구현에 있어서 각각의 신호들을 적절히 혼합해서 사용할 수 있는 알고리즘을 구현해야 될 거고, 여기에는 많은 시간이 소요됩니다.
또한 위치라던가, 속도라던가 하는 신호는 아까 말씀드렸듯이 결국 센서 신호를 바탕으로 합니다.
이런 센서들은 잘못 사용될 경우, 아시다시피 배터리 낭비의 주범이 되고, 잘 구현하지 못할 시에는 최악의 경우 사용자들이 저희가 만든 어플을 삭제하게 될 수도 있습니다.
Awareness API
이런 문제들을 해결하고, 진짜로 저희 개발자들이 구현해야 할 사용자를 위한 기능들만을 구현하는데 집중할 수 있도록, 흩어진 API 퍼즐 조각들을 하나의 그림으로서 완성한게 Awareness API 입니다. 2편에서 살펴보겠습니다.