Sunflat のブログ

ソフトウェア開発についての話題が多いかも

auのUserAgentから、機種情報を判断する

携帯向けWebサイトでは、端末がFlash Liteのどのバージョンに対応しているかや、Javaアプリに対応しているかどうかによって、内容を変えたい場合が多い。

この場合、リクエストヘッダのUserAgent(HTTP_USER_AGENT)を見て、端末の種類を判断するのが一般的だ。

auの場合、機種名に対応した「デバイスID」という形式で端末の種類が渡されるので、このデバイスIDからFlash Liteのバージョンやオープンアプリ(Javaアプリ)の対応状況を判断すれば良い。

例: "CA37"の部分がデバイスID

KDDI-CA37 UP.Browser/6.2.0.5 (GUI) MMP/2.0


KDDIのWebサイトを見ると、以下の場所で情報が公開されている。


というわけで、これらのWebページを解析して、デバイスIDと機種情報を対応づけるツールを作ってみた。

結果は以下の通り。(デバイスIDを"|"でつなげて表記。正規表現になっている)


Flash非対応(ほぼ絶滅している):

CA13|CA14|CA21|CA22|CA23|CA24|CA25|CA26|DN11|HI13|HI14|HI21|HI23|HI24|HI31|HI32|KC13|KC14|KC15|KC21|KC22|KC23|KC24|KC25|KC26|KC31|MA13|MA21|PT21|PT22|PT23|SA21|SA22|SA24|SA25|SA26|SA27|SA28|SN12|SN13|SN14|SN15|SN16|SN17|SN21|SN22|SN23|SN24|SN25|SN26|SN27|SN28|SN29|ST11|ST12|ST13|ST14|ST21|ST22|ST23|SY12|SY13|SY14|SY15|TS13|TS14|TS21|TS22|TS23|TS24|TS25|TS26|TS27|TS28|TS29

Flash Lite 1.1 対応機種:

CA27|CA28|CA31|CA32|CA33|CA34|CA36|HI33|HI34|HI35|HI36|HI37|KC27|KC28|KC32|KC33|KC34|KC35|KC36|SA29|SA2A|SA31|SA32|SA33|SA34|SA35|SA36|SA37|SH31|SN31|SN32|SN33|SN34|SN35|SN36|ST24|ST25|ST26|ST27|ST28|ST29|ST2A|TS2A|TS2B|TS2C|TS31|TS32|TS33|TS34|TS35|TS36|TS37

Flash Lite 2.0 対応機種(現時点で):

CA35|CA37|CA38|CA39|CA3A|HI38|HI39|HI3A|HI3B|HI3C|KC29|KC2A|KC37|KC38|KC39|KC3A|KC3B|KC3D|KC3E|MA31|MA32|MA33|PT33|SA38|SA39|SA3A|SA3B|SA3C|SH32|SH33|SH34|SN37|SN38|SN39|SN3A|SN3B|SN3C|SN3D|SN3E|ST2C|ST2D|ST31|ST32|ST33|ST34|TS2D|TS2E|TS38|TS39|TS3A|TS3B|TS3C|TS3D|TS3E|TS3G|TS3H|TS3I

オープンアプリ 対応機種(現時点で):

CA37|CA38|CA39|CA3A|HI39|HI3A|HI3B|HI3C|KC3B|KC3D|MA32|MA33|PT33|SA39|SA3A|SA3B|SA3C|SH34|SN39|SN3A|SN3B|SN3C|SN3D|SN3E|ST32|ST33|ST34|TS3D|TS3E|TS3G|TS3H|TS3I

Flash Lite 2.0 対応だが、オープンアプリに非対応な機種:

CA35|HI38|KC29|KC2A|KC37|KC38|KC39|KC3A|KC3E|MA31|SA38|SH32|SH33|SN37|SN38|ST2C|ST2D|ST31|TS2D|TS2E|TS38|TS39|TS3A|TS3B|TS3C


ちなみに、サンフラットGAMESにアクセスしているau端末の中での比率は、こんな感じ。(プレビュー数ベース。昨日1日分のアクセスログより)

1年前の比率(id:sunflat:20070403:p1)と比べると、オープンアプリ(OAP1)やFlash Lite 2(FL2.0)の端末がかなり普及してるのが分かる。


今後発売される機種はほぼオープンアプリに対応しそうな感じなので、オープンアプリ対応機種を判断したい場合は、「Flash Lite 1.1 対応機種」または「Flash Lite 2.0 対応だが、オープンアプリに非対応な機種」に当てはまらなければ、オープンアプリ対応と見なすのが、変更が少なくて良さそう。(Flash非対応機種はほぼ絶滅しているので無視)


せっかくなので、解析プログラムのソースも置いておきます。(Java使用, MIT License)
http://www.sunflat.net/files/kddiinfo.zip