ケータイの端末ID・ユーザIDの取得についてまとめてみました(サンプルプログラム編)
    このエントリをはてなブックマークに登録

2008/9/9 火曜日 matsui Posted in au, DoCoMo, PHP, SoftBank No Comments »

昨日の記事に続き、本日も端末ID・ユーザIDの話です。

各種IDの基本的な取得の方法は、昨日すでにご紹介したので、より具体的なプログラムのサンプルをご紹介したいと思います。

IDの取得には、「PEAR::Net_UserAgent_Mobile」を使うのが簡単でオススメです。

→ PEAR Net_UserAgent_Mobile [pear.php.net]

 

まずはインストール方法からです。

・Windowsの場合:

> c:\php\pear install -f Net_UserAgent_Mobile

※「c:\phpはPHPをインストールした場所に合わせて適宜読み替えてください」
※「-f」オプションはベータ版のためインストールできないというエラーを回避するためのものです。

・Linux環境の場合:

# pear install -f Net_UserAgent_Mobile

レンタルサーバなどでインストールが出来ない場合は、上記本家サイトの「Download」からパッケージをダウンロードし、

「Net/UserAgent/Mobile.php」
「Net/UserAgent/Mobile/」

となるように設置しても動作します。(PEAR本体がインストールされてない場合はそちらのインストールも必要になります)

 

さて、インストールが完了したらプログラムを設置します。
サンプルプログラムは次の通りです。

// PEAR::Net_UserAgent_Mobileの読み込み
require_once('Net/UserAgent/Mobile.php');

// インスタンスの作成
$agent = Net_UserAgent_Mobile::factory();

は、既に実行済みと仮定します。

ドコモの場合

// 端末製造番号
$ser_no = $agent->getSerialNumber();

// FOMAカード製造番号
$card_no = $agent->getCardID();

// iモードIDを取得
$imode_id = $agent->getUID();

端末製造番号とFOMAカード製造番号は「utn認証」を、iモードIDは「guid=ON」を付けないと、値が取得できないことに注意してください。
(詳しくは昨日の記事を参照してください)

 

auの場合

// EZ番号(サブスクライバID)を取得
$ez_no = $agent->getUID();

 

ソフトバンクの場合

// 端末シリアル番号を取得
$ser_no = $agent->getSerialNumber();

// x-jphone-uidを取得
$j_uid = $agent->getUID();

 

これならどれも簡単に取得できますね。
メソッドの詳細が知りたい方は、本家のドキュメントページを参照するとよいでしょう。

→ PEAR Net_UserAgent_Mobile Documentation [pear.php.net]

 

なお、何かしらの理由でID取得の処理を一から実装し直さなくてはならないような場合は、上記のPEAR::Net_UserAgent_Mobileのソースの他にも、OpenPNE [openpne.jp] の簡単ログインの部分(webapp/lib/OpenPNE/KtaiID.php)のソースが参考になったりします。

 

関連:



ケータイの端末ID・ユーザIDの取得についてまとめてみました
    このエントリをはてなブックマークに登録

2008/9/8 月曜日 matsui Posted in au, DoCoMo, PHP, SoftBank 12 Comments »

ケータイサイトでは、端末ID・ユーザIDを取得する、という処理をよく行うことがあります。
ログインの度に、ユーザ名とパスワードを入力するというのは、ケータイの操作性の面からも現実的ではないためです。

今回はそんな各種IDの取得方法について、PHPを使った場合を例にとりまとめてみました。

※ここでは端末IDを「ケータイに振られた個体識別情報(製造番号など)」、ユーザIDを「契約に紐付くID」として解説しています。

 

ドコモ端末での取得方法

1. utnを使う

ドコモ端末ではutn属性を使うことによって、フォームやリンクから個体識別情報を取得することができます。
対応機種は、iモード対応HTML 3.0以降の機種(但しSO210i,SH251i,SH251iSを除く)で、現在使われているほとんどの端末に対応していると言ってよいでしょう。

<form action="sample.php" method="post" utn>
<input type="submit" name="submit">
</form>
<a href="sample.php" utn>

utnを使う場合、ケータイ端末側では、「携帯電話情報を送信しますか?」といった確認のダイアログが表示されます。


utn使用時に表示されるダイアログ

送信された端末IDは、ユーザエージェントから取得できます。

$agent = $_SERVER['HTTP_USER_AGENT'];

取得できるフォーマットの例は次の通りです。

FOMA

DoCoMo/2.0 P902i(c100;TB;W24H12;serXXXXXXXXXXXXXXX;iccxxxxxxxxxxxxxxxxxxxx)

・FOMA端末製造番号フォーマット
 → serXXXXXXXXXXXXXXX (ser + 15桁の英数字)
・FOMAカード個体識別子
 → iccxxxxxxxxxxxxxxxxxxxx (icc + 20桁の英数字)

mova

DoCoMo/1.0/P504i/c10/TB/ser***********

・製造番号
 → ser*********** (ser + 11桁の英数字)

FOMA端末製造番号と製造番号は、ケータイ端末にふられた(機種変更で変わる)番号であることに注意してください。

参考:
→ NTT docomo iモード対応HTMLタグ一覧 utn属性 [nttdocomo.co.jp]

 

2. iモードIDを使う

iモードIDは2008年3月31日から提供された、ドコモの新しいユーザ識別方法です。
契約ユーザごとに一意となる番号のため、機種変更があってもiモードIDは変わりません。
全てのiモード端末で利用でき、utnのように確認用のダイアログがでないことも特徴です。

URLに「guid=ON」というパラメータを付けると、拡張ヘッダにiモードIDが付く、という仕様です。
サーバ側からは次のように取得できます。

$imode_id = $_SERVER['HTTP_X_DCMGUID'];

ただし、この機能を利用するには、次のメニューから利用者が通知を許可している必要があります。(デフォルトは通知するとなっています)
iモードメニュー → お客様サポート → 各種設定 → iモードID通知設定

また仕様上、SSL通信時は利用できないことに注意してください。

参考:
→ ke-tai.org 本日提供が開始された「iモードID」機能を早速試してみました [ke-tai.org]
→ NTT docomo iモードセンタの各種情報 iモードIDについて [nttdocomo.co.jp]

 

他にも公式サイトで使われるNULLGWDOCOMO [itpro.nikkeibp.co.jp]方式もありますが、禁則事項に触れるのであまり詳しくは書けません。
公式サイト以外のいわゆる勝手サイトからは利用できないため、一般の開発者にはあまり関係がないでしょう。

 

au端末での取得方法

EZwebの場合はごくシンプルで、EZ番号(旧称サブスクライバID)を利用します。
こちらは契約ごとに振られる番号のため、機種変更があっても変わりません。
取得方法は次の通りです。

$ez_no = $_SERVER['HTTP_X_UP_SUBNO'];

EZ番号の形式:
01234567890123_xx.ezweb.ne.jp
([14桁の数値]_[2桁の英字].ezweb.ne.jp)

こちらもユーザ側で通知設定の可否を設定することができます。
au oneトップ → auお客様サポート → 申し込む/変更する → EZ番号通知設定

参考:
→ au EZfactory ユーザエージェント [au.kddi.com]

 

ソフトバンク端末での取得方法

1. 端末のシリアルを使う

ソフトバンク端末は、ユーザエージェントに端末ID(シリアル)が付加されています。
ただし、端末側のブラウザ設定メニュー(ソフトバンクのサイト内ではないことに注意)で、製造番号通知のON/OFFを切り替えることができます。
このIDは端末に振られた番号のため、機種変更に伴い変更になります。

例:

SoftBank/1.0/824T/TJ001/SNxxxxxxxxxxxxxxx Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1

形式:
SN012345678901234 (SN + 15桁の数字)

 

2. x-jphone-uidを使う

P型以降の端末では「x-jphone-uid」を使ってユーザIDを取得できます。
こちらは契約ごとのIDのため、機種変更があっても変わりません。

$uid = $_SERVER['HTTP_X_JPHONE_UID'];

形式:
16桁の英数字(大文字・小文字混在)

こちらは、ソフトバンクのメニューからID通知の可否を設定できます。
メニューリスト → MySoftBank → 各種変更手続き → ユーザID通知設定

参考:
→ ソフトバンク Mobile Creation ユーザエージェント一覧 [creation.mb.softbank.jp]

※追記
SSL利用時には上記IDが取得できないケースがあるようです。
詳しくはコメント欄をご覧ください。

 

 

なお、端末IDを利用したログインでは、端末が中古として流通し持ち主が変わった場合でも、ログインできてしまうという問題がありますので、注意が必要になります。

また、PCからアクセスできる環境では、IDの詐称もごく簡単に行えます。
IPアドレスから接続元を検証するなどの対応が必要になることにご注意ください。

 

この辺りのID取得処理は、「PEAR::Net_UserAgent_Mobile」などのライブラリを使うことで、より簡単に実装可能です。

すっかり長文になってしまったので、サンプルプログラムなどはまた後日掲載したいと思います。

※続きの記事を書きました → こちら

 

関連:



ドコモが2段階制のパケット定額プランを10月から開始
    このエントリをはてなブックマークに登録

2008/8/26 火曜日 matsui Posted in DoCoMo, ニュース No Comments »

ドコモが現在のパケット定額プランであるパケ・ホーダイ(4,095円)を、auのような2段階制の定額制サービスにするようです。
導入は10月からで、最低月額料金は1,029円となるようです。

→ NTTドコモ 報道発表資料 新パケット定額サービス「パケ・ホーダイ ダブル」および「Biz・ホーダイ ダブル」の提供を開始 [nttdocomo.co.jp]

→ ITmedia +D Mobile ドコモ、2段階制パケット定額プランを10月導入 – 月額最低1029円から [itmedia.co.jp]

→ ケータイWatch ドコモ、段階制のパケット定額サービス「パケ・ホーダイ ダブル」 [impress.co.jp]

 

テスト機を複数確保しなくてはならないケータイコンテンツ開発者にとっては、今回のプラン導入はうれしいですね。

パケットを上限まで使った金額は、新しい「パケ・ホーダイ ダブル」プランでは4,410円と、以前の「パケ・ホーダイ」の4,095円に比べて若干あがっていますので、実質的な値上げとも言えなくもないですが、案件の無い月は殆ど使わなかったりすることも多いので、トータルでは安くなる場合が多いと思います。

このプランのおかげで、検証用ドコモ端末の導入も、他キャリア並みの価格になりそうです。

 

追記:
ソフトバンクが追従して値下げしたようです。

→ ソフトバンクモバイル株式会社 プレスリリース NTTドコモ新サービス発表を受け、「パケット定額フル」を改定 [softbankmobile.co.jp]

 

関連:



ドコモのCSSをインラインに埋め込んでくれるPHPライブラリ「toInlineCSSDoCoMo」
    このエントリをはてなブックマークに登録

2008/7/9 水曜日 matsui Posted in DoCoMo 5 Comments »

ケータイ向けサイトを作っていく上で一番問題となるのが、ドコモ端末が外部CSSファイル読み込みや、styleタグでの内部参照に対応していないことです。

PerlではHTML::DoCoMoCSS [hatena.ne.jp] というライブラリがあり、かねがね羨ましく思っており、いつか移植したいなと思っていたりしたのですが、ついにPHPでもこの問題を解決してくれるライブラリが登場しました。

これは素晴らしすぎます。

→ Asial blog DoCoMo向けにCSS指定をインラインに埋め込むPHPライブラリ「toInlineCSSDoCoMo」作りました [asial.co.jp]

→ ゆどうふログ 勘違いのないようにtoInlineCSSDoCoMoの仕様について言っとくか [hatena.ne.jp]

 

oInlineCSSDoCoMo.phpは、基本的にはid:tokuhiromさんの作った上記のHTML::DoCoMoCSSをPHP用にリライトしたもので、それに若干の機能追加をしています。

とのことですので、基本的には上記Perlのライブラリを踏襲したつくりとなっているようです。

動作環境としてはPHP5.1以上とのことで、残念ながら4系で動いているサイトには使えないようです。

 

インストールは簡単で、

# pear install HTML_CSS

で、必要なPEARライブラリをインストールして、ダウンロードしたファイルを展開するだけです。
中に入っている「sample.php」にアクセスすれば、サンプルが表示されると思います。

使い方も簡単で、表示させたいHTMLの内容を取得して、toInlineCSSDoCoMoに渡してやるだけでOKのようです。

<?php
require_once '../lib/toInlineCSSDoCoMo.php';

$document = file_get_contents('sample.html');
try {
  echo toInlineCSSDoCoMo::getInstance()->setBaseDir('./')->apply($document);
} catch (RuntimeException $e) {
  var_dump($e);
} catch (Exception $e) {
  var_dump($e->getMessage());
}
?>

 

これでケータイサイトのHTML作成が相当楽になりますね。

早速、自分のサイトにも適用して試してみたいと思います。
ただ、テンプレートシステムにSmartyを使っているので、サンプルのままでは行かない感じです。
この辺りもまとまりましたら、また記事にしたいと思います。

 

関連:



ドコモ公式サイトに絵文字変換対応表が公開されています
    このエントリをはてなブックマークに登録

2008/7/2 水曜日 matsui Posted in DoCoMo No Comments »

なんと本ブログ読者の方から、初のネタ提供がありました。
本名のようですので名前は伏せさせていただきますが、本当にありがとうございました。

※ケータイ関係で面白いネタがありましたら、こちらから教えていただけると助かります。(可能な限りお返事させていただきます)

 

ドコモの公式サイト内に、ドコモ絵文字から他社キャリアへの絵文字変換表が公開されているとのことです。

→ NTT docomo 絵文字変換機能 絵文字変換対応表 [nttdocomo.co.jp]

 

ドコモの絵文字をベースに、「au」「ソフトバンク」「ディズニー・モバイル」「イー・モバイル」の4つへの変換表が記載されています。

変換表はHTML形式だけではなく、PDFでも公開されていますので、ダウンロードしたり印刷したりすることもできるようです。

絵文字の変換ライブラリ等を作成する際には、絵文字の数が少ないドコモを基準とすることが多いでしょうから、この変換表は利用しやすいかもしれませんね。

 

関連: