携帯サイトはキャリア・
キャリアを判別する方法
まずキャリアの判別について見ていくことにしましょう。キャリアの判別には大きく2つの方法があります。
- ユーザーエージェントでキャリアを判別する方法
- IPアドレスでキャリアを判別する方法
このどちらかを使って判別をすることになります。
ユーザーエージェントで判別する方法
ユーザーエージェントの情報からアクセスしてきている携帯キャリアを判別する方法です。携帯端末はHTTPリクエストのユーザーエージェントにアクセス端末の情報を記述してきます。この情報を解析することでどのキャリアや端末がアクセスしてきているのかを確認することができます。
DoCoMo/2.0 P905i(c100;TB;W20H13)
実際の情報を見るとなんとなく理解できる内容だと思います。docomoのP905iの端末がアクセスしてきているのは一目瞭然でしょう。このユーザーエージェントの情報を取得して解析することで、
IPアドレスでキャリアを判別する方法
キャリアを判別する方法にはもう一つの方法があります。アクセス元のIPアドレスで判別する方法です。携帯からインターネットにアクセスする場合は、

つまりアクセス元のIPアドレスは各キャリアのIPアドレスとなるため、
判別方法による違い
ユーザーエージェントとIPアドレスによるキャリア判別は、
次にキャリアだけでなく、
端末を判別する
次はアクセスしてきている端末を判別する方法です。キャリアの判別と同様、
$_SERVER['HTTP_USER_AGENT']
このユーザーエージェントの情報を解析し端末情報を取得することになります。ただし各キャリアによってこのユーザーエージェントの表記は異なります。キャリアだけならともかく、
キャリア | 端末 | ユーザーエージェント |
---|---|---|
docomo | F501i | DoCoMo/ |
docomo | F900i | DoCoMo/ |
au | A3011SA | UP. |
au | W21SA | KDDI-SA31 UP. |
SoftBank | J-T03 | J-PHONE/ |
SoftBank | 910T | SoftBank/ |
このユーザーエージェントから適切にキャリアと端末を取り出してくれる便利なライブラリがPHPのPEARライブラリに用意されています。Net_
Net_UserAgent_Mobile
「Net_
# pear install Net_UserAgent_Mobile-beta
Net_
では実際にキャリアと端末の情報を取得するプログラムを書いてみましょう。
<?php
// Net_UserAgent_Mobile
require_once('Net/UserAgent/Mobile.php');
// Net_UserAgent_Mobileをインスタンス化する
$agent = Net_UserAgent_Mobile::singleton();
// キャリアをチェックする
if ($agent->isDoCoMo()) {
// docomo
$carrier = 'docomo';
} else if ($agent->isEZweb()) {
// au
$carrier = 'au';
} else if ($agent->isSoftBank()) {
// SoftBank / Vodafone / J-PHONE
$carrier = 'softbank';
} else {
// 携帯以外の場合
}
// 機種名をチェックする
$model = $agent->getModel();
echo '[キャリア]' . $carrier;
echo '[機種]:' . $model;
}
?>
これでキャリアと端末の情報が取得できました。1つ気をつけることは、
またNet_
今回は携帯サイト開発のコアとなるキャリアと機種判別について説明してきました。次回は携帯サイトを作る上で気をつけるべき文字コードの取り扱いについて見ていきたいと思います。