酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

CFNetworkとDarwinの組み合わせからiPhoneとiOSの分布を調べる方法

過去は下記の通りCFNetworkとDarwinのバージョンの組み合わせからiPhoneとiOSのバージョンを特定することができました。2012年の時点ですでに特定が難しくなっています。Google AnalyticsやFirebase Analyticsなどユーザー動向を調べる方法が発達してきていますので、この方法でユーザーデバイスの動向を調べるのは避けましょう。

CFNetworkとDarwinの組み合わせからiPhoneとiOSの分布を調べる

feedtailor Inc.さまAppStair合同会社さまでiPhoneやiOSのバージョン別の分布図が公開されていました。

この分布図は、その時点でどれだけのユーザーが何のデバイスでどのバージョンのiOSを使っているかの指標にさせて頂いていました。ただ、iOS 6.0がリリースされてしまった10/30時点から見ると、最新の状態を反映していないデータとなってしまっています。

同じことを自分のところのサーバーのログからどうやって抽出したら良いのか調べたところ、UserAgentからデバイスとiOSバージョンを判定する方法がStackOverflowで紹介されていました。

Apacheのアクセスログには、User Agentが「CFNetwork/485.2 Darwin/10.3.1」のような形で残るのですが、ここからデバイスとiOSバージョン別の一覧表を作成することができるようです。

デバイス iOSバージョン ログ
iPod Touch 2G 3.1.3 CFNetwork/459 Darwin/10.0.0d3
iPod Touch 3G 4.0 CFNetwork/485.2 Darwin/10.3.1
iPhone 3GS 4.1 CFNetwork/485.10.2 Darwin/?
iPhone 3G 4.2.1 CFNetwork/485.12.7 Darwin/10.4.0
iPhone 4 4.3.2 CFNetwork/485.13.9 Darwin/?
iPod Touch 4G 4.3.5 CFNetwork/485.13.9 Darwin/11.0.0
iPhone 3GS 5.0 CFNetwork/548.0.3 Darwin/11.0.0
iPhone 4S 5.0.1 CFNetwork/548.0.4 Darwin/11.0.0
iPhone 4S 5.1 CFNetwork/548.1.4 Darwin/11.0.0
iPhone 4S 6.0-b3 CFNetwork/602 Darwin/13.0.0
iPhone 4S 6.0 CFNetwork/609 Darwin/13.0.0

追記 2012/10/13 22:22

でもよくよく考えてみると、iPhone 4もしくはiPhone 5で、iOS 6のデバイスも「CFNetwork/609 Darwin/13.0.0」になっているのではないだろうか疑惑が……