최근 취업을 하게 되어 블로그건 개인 플젝이건 건들일 시간이 없었다...
일단 회사에서 주어진 업무는 앱을 완전히 인수인계 받기 전에 firebase에 대한 조사(?) 및 어플에 기능을 심는 것이었는데(일단 로아랑
에 테스트 해봄)
어플에 심는 것 자체는 어렵지 않았다 firebase 프로젝트를 만들고 필요한 pod을 설치해서 로그를 보내기만 하는 아주 간단한 과정이었다
import FirebaseAnalytics
private func sendLogingEvent(_ userInfo: UserInfo) {
switch storage.mainUser.value?.name {
case "최지근":
FirebaseAnalytics.Analytics.logEvent("search_user_info_최지근",
parameters: ["class": userInfo.mainInfo.class,
"server": userInfo.mainInfo.server])
case "최두기":
FirebaseAnalytics.Analytics.logEvent("main_character_최두기",
parameters: ["class": userInfo.mainInfo.class,
"server": userInfo.mainInfo.server])
default:
FirebaseAnalytics.Analytics.logEvent("search_user_info_unknown",
parameters: ["class": userInfo.mainInfo.class,
"server": userInfo.mainInfo.server])
}
}
userInfo를 매개변수로 받는 sendLogingEvent가 호출되면 대표캐릭터가 누구인지에 따라 검색된 캐릭터의 정보가 로그로 전송되는 것이다
즉, 대표 캐릭터가 "최지근" 일때, "search_user_info_최지근"이라는 이벤트로 전송되며 파라미터로 현재 검색된 캐릭터의 클래스와 서버 정보가 전송된다
이다
그럼 나는 대표캐릭터가 최지근일 경우 가장 많이 검색된 캐릭터의 클래스와 서버 정보를 데이터로 볼 수 있을 줄 알았다
결론적으로 전송된 데이터들을 볼 수는 있으나 매우매우매우 큰 문제는 이벤트는 정상적으로 데이터로 쌓이나 파라미터로 전달한 상세정보는 30분 뒤면 휘발
된다는 것이다
그니까 대표캐릭터가 최지근인 사람의 검색 횟수는 이벤트이기 때문에 계속해서 볼 수 있지만 그 검색된 정보들의 통계는 보지 못한다는 것...
firebase analytics기능을 사용하면 사용자 행동기반으로 자동으로 연령, 지역, 성별 등의 정보를 수집하는 것 같다 (내가 아무 설정을 해주지 않아도 이런 필터가 있어서 걸 수 있는 걸 보면?)
이 정보를 사용하면 특정 이벤트에 대한 연령, 지역, 성별 분포를 확인 가능하다
단, 반대의 경우는 어렵다
(ex. '대표캐릭터가 최지근인 사람들의 연령 분포도'는 확인이 가능하지만
'20대 사용자들의 대표 캐릭터 중 최지근이 얼마나 많은 비율을 차지하는지'는 가능은 하겠다만 이벤트를 일일이 찾아 수작업으로 정리를 하는 외에는 방법이 없어 보인다)
즉, 이 방법도 데이터 수집에는 한계가 있다
기존 방식대로 매개변수를 전송할 때는 30분 뒤면 매개변수에 대한 정보는 휘발 되었지만 맞춤 매개변수
를 이용하면 휘발되지 않는 매개변수를 보낼 수 있다 단! 한 개만...
이벤트 하나당 한가지의 매개변수만 전송이 가능한데 거기다가 이벤트는 50개 까지 밖에 설정을 못한다
예를들어서 '20대 유저들이 가장 많이 검색하는 캐릭터 명, 클래스, 서버명'을 알고 싶다면
이런 식으로 세개의 이벤트를 보내서 확인을 해야한다
즉, 이 방법 또한 이벤트 개수 제한도 있고 1번보다는 낫겠지만 결국에 수기로 데이터화 해야한다
BigQuery
에 연동을 하면 처음에 사용한 방식 대로 이벤드 - 여러개의 파라미터 를 전송하면 BigQuery에 저장이 되며 SQL로 교집합을 찾아내거나 하는 것 같은데 기본적인 문법만 알아도 사용을 할 수 있어 보인다
그래서 가장 최선의 방법은 이 방법으로 확인이 되고 있으며 이 부분에 대해서는 추 후 작성할 예정
Firebase analytics에 대해 앱 분석 툴이다 라고만 알고 있었지 정확히 어떻게 사용하며 어떤 정보까지 수집할 수 있는지는 몰랐는데 사용방법은 그리 어렵지 않다는 것을 알았고 swift외 적으로도 필요한 지식이 있다는 것을 깨달았으며 다른 개발자분들한테 물어봐도 기본적인 SQL정도는 알고 있어야 협업하기에 편하다는 의견으로 보아 조만간 이 내용에 대해서도 알아봐야겠다