過去は下記の通り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」になっているのではないだろうか疑惑が……