GA에서 android api level 당 세션 비율을 계산하는 북마크릿

Android 대시보드에서 볼 수 있는 것은 세계적인 점유율로, 이미 가동하고 있는 서비스로 minSdkVersion 를 반올림하는 등의 경우는 실제 그 서비스에서의 버전 마다의 점유율을 보고 싶은 곳.

그래서 GA에서 볼 수 있는 버전별 세션수의 비율을 계측하는 북마크릿을 만들어 보았습니다. 다음 스크립트를 북마크릿으로 등록하고
javascript:function toApiVersion(versionName) { switch (versionName) { case '2.3': case '2.3.1': case '2.3.2': return 9; case '4.0.0': case '4.0.1': case '4.0.2': return 14; case 'N': case 'NMR1': return 24; } var versionNum = parseFloat(versionName); switch (versionNum) { case 2.1: return 7; case 2.2: return 8; case 2.3: return 10; case 3.0: return 11; case 3.1: return 12; case 3.2: return 13; case 4.0: return 15; case 4.1: return 16; case 4.2: return 17; case 4.3: return 18; case 4.4: return 19; case 5.0: return 21; case 5.1: return 22; case 6.0: return 23; } return 0; } var tds = $.merge($('.ID-dimension-data10'), $('.ID-dimension-data-0')); var apiVersionMap = []; tds.each(function (_, td) { var apiVersion = toApiVersion(td.innerText); var sessions = $(td).siblings()[2].innerText; var sessionsRatio = /(\d+\.\d+)%/.exec(sessions)[1]; if (!apiVersionMap[apiVersion]) { apiVersionMap[apiVersion] = 0; } apiVersionMap[apiVersion] += +sessionsRatio; }); var acc = 0.0; for (var apiVersion = 7; apiVersion <= 24; apiVersion++) { if (apiVersionMap[apiVersion]) { acc += apiVersionMap[apiVersion]; console.log('apiVersion %d: %.02f (acc. %.02f)', apiVersion, apiVersionMap[apiVersion], acc); } }

GA 사이드 메뉴에서 Audience -> Devices and Network -> Devices를 엽니다.



게다가 Operating System -> Android 로 진행하면 버전의 내역을 볼 수 있으므로, 거기서 Show rows 를 100 정도로 해 이 북마크릿을 기동합니다.

그러면 dev console에 apiVersion 당 세션의 공유와 해당 버전까지의 누적 공유가 표시됩니다.

나의 취미의 앱이라고 예를 들면 이런 느낌이었습니다(2016/7/4 현재). acc. 가 누계 비율(%)입니다.
apiVersion 16: 0.54 (acc. 0.54)
apiVersion 17: 4.62 (acc. 5.16)
apiVersion 18: 0.88 (acc. 6.04)
apiVersion 19: 15.34 (acc. 21.38)
apiVersion 21: 39.03 (acc. 60.41)
apiVersion 22: 12.42 (acc. 72.83)
apiVersion 23: 27.17 (acc. 100)

세션 베이스이므로 실제의 단말의 상황과는 미묘하게 어긋남이 있을지도 모릅니다만, minSdkVersion 개정의 참고가 되는 것은 아닐까요.

bookmarklet의 원본 소스는 여기 :
function toApiVersion(versionName) {
    switch (versionName) {
        case '2.3':
        case '2.3.1':
        case '2.3.2':
            return 9;
        case '4.0.0':
        case '4.0.1':
        case '4.0.2':
            return 14;
        case 'N':
        case 'NMR1':
            return 24;
    }
    var versionNum = parseFloat(versionName);
    switch (versionNum) {
        case 2.1:
            return 7;
        case 2.2:
            return 8;
        case 2.3:
            return 10;
        case 3.0:
            return 11;
        case 3.1:
            return 12;
        case 3.2:
            return 13;
        case 4.0:
            return 15;
        case 4.1:
            return 16;
        case 4.2:
            return 17;
        case 4.3:
            return 18;
        case 4.4:
            return 19;
        case 5.0:
            return 21;
        case 5.1:
            return 22;
        case 6.0:
            return 23;
    }
    return 0;
}

var tds = $.merge($('.ID-dimension-data10'), $('.ID-dimension-data-0'));
var apiVersionMap = [];
tds.each(function (_, td) {
    var apiVersion = toApiVersion(td.innerText);
    var sessions = $(td).siblings()[2].innerText;
    var sessionsRatio = /(\d+\.\d+)%/.exec(sessions)[1];
    if (!apiVersionMap[apiVersion]) {
        apiVersionMap[apiVersion] = 0;
    }
    apiVersionMap[apiVersion] += +sessionsRatio;
});
var acc = 0.0;
for (var apiVersion = 7; apiVersion <= 24; apiVersion++) {
    if (apiVersionMap[apiVersion]) {
        acc += apiVersionMap[apiVersion];
        console.log('apiVersion %d: %.02f (acc. %.02f)', apiVersion, apiVersionMap[apiVersion], acc);
    }
}

또한 Chrome에서만 동작 확인하고 있습니다.

좋은 웹페이지 즐겨찾기