【PHPで作る】初めての携帯サイト構築

第2回 携帯キャリアと端末を判別する

この記事を読むのに必要な時間:およそ 2 分

携帯サイトはキャリア・端末ごとに仕様が異なることを説明してきました。そのため多くの場合,プログラムにより各キャリア・端末にあわせた方法で,出し分けを行っていく必要があります。携帯サイトを作る上でまず大切になるのが,アクセスしてきている携帯の,キャリアと端末を判別するところと言えるでしょう。その判別方法について見ていきたいと思います。

キャリアを判別する方法

まずキャリアの判別について見ていくことにしましょう。キャリアの判別には大きく2つの方法があります。

  1. ユーザーエージェントでキャリアを判別する方法
  2. IPアドレスでキャリアを判別する方法

このどちらかを使って判別をすることになります。

ユーザーエージェントで判別する方法

ユーザーエージェントの情報からアクセスしてきている携帯キャリアを判別する方法です。携帯端末はHTTPリクエストのユーザーエージェントにアクセス端末の情報を記述してきます。この情報を解析することでどのキャリアや端末がアクセスしてきているのかを確認することができます。

ドコモのユーザーエージェント例

DoCoMo/2.0 P905i(c100;TB;W20H13)

実際の情報を見るとなんとなく理解できる内容だと思います。docomoのP905iの端末がアクセスしてきているのは一目瞭然でしょう。このユーザーエージェントの情報を取得して解析することで,キャリアを判別することができます。

IPアドレスでキャリアを判別する方法

キャリアを判別する方法にはもう一つの方法があります。アクセス元のIPアドレスで判別する方法です。携帯からインターネットにアクセスする場合は,一度キャリアのゲートウェイを通り,その後インターネットを通じて各携帯サイトにつながります。

図1 携帯におけるインターネットの基本的な接続構成

図1 携帯におけるインターネットの基本的な接続構成

つまりアクセス元の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×携帯サイト デベロッパーズバイブル」(ソフトバンククリエイティブ)。家族のための携帯サイト「ファミリーモバイル」(http://www.fmob.jp)を立ち上げ現在に至る。

memokamihttp://memokami.com

コメント

コメントの記入