【PHPで作る】初めての携帯サイト構築
第2回 携帯キャリアと端末を判別する
携帯サイトはキャリア・端末ごとに仕様が異なることを説明してきました。そのため多くの場合,プログラムにより各キャリア・端末にあわせた方法で,出し分けを行っていく必要があります。携帯サイトを作る上でまず大切になるのが,アクセスしてきている携帯の,キャリアと端末を判別するところと言えるでしょう。その判別方法について見ていきたいと思います。
キャリアを判別する方法
まずキャリアの判別について見ていくことにしましょう。キャリアの判別には大きく2つの方法があります。
- ユーザーエージェントでキャリアを判別する方法
- IPアドレスでキャリアを判別する方法
このどちらかを使って判別をすることになります。
ユーザーエージェントで判別する方法
ユーザーエージェントの情報からアクセスしてきている携帯キャリアを判別する方法です。携帯端末はHTTPリクエストのユーザーエージェントにアクセス端末の情報を記述してきます。この情報を解析することでどのキャリアや端末がアクセスしてきているのかを確認することができます。
ドコモのユーザーエージェント例
DoCoMo/2.0 P905i(c100;TB;W20H13)
実際の情報を見るとなんとなく理解できる内容だと思います。docomoのP905iの端末がアクセスしてきているのは一目瞭然でしょう。このユーザーエージェントの情報を取得して解析することで,キャリアを判別することができます。
IPアドレスでキャリアを判別する方法
キャリアを判別する方法にはもう一つの方法があります。アクセス元のIPアドレスで判別する方法です。携帯からインターネットにアクセスする場合は,一度キャリアのゲートウェイを通り,その後インターネットを通じて各携帯サイトにつながります。
つまりアクセス元のIPアドレスは各キャリアのIPアドレスとなるため,IPアドレスとキャリアのマッピングデータがあれば,キャリアを判別することができます。
判別方法による違い
ユーザーエージェントとIPアドレスによるキャリア判別は,それぞれどういったメリット・デメリットがあるのでしょう。1つは,ユーザーエージェントは偽装が可能だということです。あくまでHTTPリクエストとして送られてきた情報であり,携帯ではなくPC上から不正に書き換えてアクセスすることができます。一方IPアドレスによる判別は,不正にキャリアのゲートウェイを使ってアクセスすることはできないため,より信頼できる判別データと言えるでしょう。つまり携帯以外の不正なデータや端末でアクセスされたくない場面では,IPアドレスによる判別のほうが向いていると言えます。一方IPアドレスによる判別は,IPアドレスとキャリアのマッピングデータを事前に用意し,定期的な更新をしていく必要があるので手間と運用をきちんと考えておく必要があります。
次にキャリアだけでなく,アクセスしてきている端末の情報を判別していく方法を見ていきましょう。
端末を判別する
次はアクセスしてきている端末を判別する方法です。キャリアの判別と同様,ユーザーエージェントに端末の情報は付記されてきます。ユーザーエージェントの取得方法は次の通りです。
PHPでユーザーエージェント情報を取得する
$_SERVER['HTTP_USER_AGENT']
このユーザーエージェントの情報を解析し端末情報を取得することになります。ただし各キャリアによってこのユーザーエージェントの表記は異なります。キャリアだけならともかく,端末やブラウザーバージョンレベルでも統一されていないため,情報は載っているにせよ,仕様を細かく理解しないと解析することができない状態です。
ユーザーエージェントの例
| キャリア | 端末 | ユーザーエージェント |
|---|---|---|
| docomo | F501i | DoCoMo/1.0/F501i |
| docomo | F900i | DoCoMo/2.0 F900i(c100;TB;W22H12;ser***;icc***) |
| au | A3011SA | UP.Browser/3.04-ST13 UP.Link/3.4.5.9 |
| au | W21SA | KDDI-SA31 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0 |
| SoftBank | J-T03 | J-PHONE/2.0/J-T03 |
| SoftBank | 910T | SoftBank/1.0/910T/TJ001/SN*** Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 |
このユーザーエージェントから適切にキャリアと端末を取り出してくれる便利なライブラリがPHPのPEARライブラリに用意されています。Net_UserAgent_Mobileです。
【PHPで作る】初めての携帯サイト構築
- 第6回 携帯サイトのテストをする
- 第5回 携帯サイトでセッションを取り扱う
- 第4回 絵文字を取り扱う
- 第3回 携帯サイトの文字コードに気をつける
- 第2回 携帯キャリアと端末を判別する
- 第1回 PCサイトと携帯サイトの違いを知る


