ケータイの端末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」などのライブラリを使うことで、より簡単に実装可能です。

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

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

 

関連:




FlashLiteで作られた地図アプリ「YoMap」
    このエントリをはてなブックマークに登録

2008/9/5 金曜日 matsui Posted in Flash, 記事紹介・リンク | 2 Comments »

Yosuke Doiさんからのタレコミです。
(情報提供ありがとうございます)

FlashLiteで作られた携帯用地図アプリケーション「YoMap」のご紹介です。

→ 携帯用地図アプリケーション YoMap [yosukedoi.com]

 

このYoMapは携帯電話で自分の周りの地図をみたり、居場所を知らせるためのFlashアプリで、メールで他の人に自分の位置を教えることができます。


対応端末は、ドコモ、au、ソフトバンクのFlash Lite 2.0 以降に対応した機種とのことですが、今のところテストは手元のauでしか行えていないとのことです。

確かにドコモのP905iで試すと、「画面サイズが最大を超えました」といったエラーが出たり、auのW61CAではたまに画面が赤くなってしまったり(メモリ不足?)、まだ開発途中な面もあるようです。

掲載依頼のメールによると、知人以外からはフィードバックがもらえなくて寂しい思いをしているとのことですので、不具合を発見された方は、ぜひ報告してあげてください。

FlashLiteを使った地図はニーズがありそうですので、ソースコードなんかも公開されるとうれしいですね。

 

関連:




Firefoxでモバイル端末をシミュレートするアドオン「FireMobileSimulator」
    このエントリをはてなブックマークに登録

2008/9/4 木曜日 matsui Posted in 記事紹介・リンク | 3 Comments »

thorikawaさんからのタレコミです。
(情報提供ありがとうございます)

FireMobileSimulatorは、ドコモ、au、ソフトバンクの3キャリアに対応し、HTTPリクエストや絵文字表示などをシミュレートしてくれるFirefoxのアドオンです。

→ 遙かへのスピードランナー Firefoxでモバイル端末をシミュレートする独自アドオン「FireMobileSimulator」を公開します [d.hatena.ne.jp]

→ Firefox Add-ons FireMobileSimulator [addons.mozilla.org]

 

Firefoxでケータイ開発を行うには、「User Agent Switcher」や「Modify Headers」などを使う方法がありますが、設定や使い方が複雑だったりします。

この「FireMobileSimulator」を使えば、より手軽にPCからモバイルサイトのテストを行うことができるようです。

 

主な機能は次の通りです。(説明サイトより引用)

  • [全キャリア]UID送信
  • [DoCoMo]UTN送信
  • [DoCoMo]iモードID送信
  • [全キャリア]絵文字表示
    • DoCoMoのUnicode16進数値参照(例:$#xE70C;)
    • DoCoMoのSJISバイナリ
    • SoftBankのWebコード(ESC $ + SJISコード + SI の記載方法)
    • Auの<img localsrc=”iconno”>方式
  • [SoftBank]端末製造番号送信
  • [全キャリア]User-Agent偽装
  • [全キャリア]各種HTTPリクエストヘッダのシミュレート
  • 端末情報の追加・編集・削除機能
  • Content-type:text/vnd.wap.wmlとapplication/xhtml+xmlをtext/htmlに強制変換(FirefoxのXML整形式チェックによる表示エラーを回避するため)


利用時の画面イメージ。ソフトバンクをエミュレートしています。


設定ダイアログ

 

ケータイ用に特化されているだけあって、さすが機能が豊富です。
特にXMLの表示エラーチェックを回避できる機能は便利だと思います。

ケータイ開発者には必須のアドオンとなりそうな感じです。

 

関連:




第35回PHP勉強会で発表された「symfonyでモバイル開発なんてどうですか。」
    このエントリをはてなブックマークに登録

2008/9/3 水曜日 matsui Posted in 記事紹介・リンク | 3 Comments »

先日2008年8月31日に行われた、第35回PHP勉強会の中で、ゆどうふさんがフレームワークsymfonyを使ったモバイル向けサイト開発を解説した、「symfonyでモバイル開発なんてどうですか。」を発表されたようです。

イベントの概要はこちら。
→ 日本PHPユーザ会 Event Entry::第35回PHP勉強会 [events.php.gr.jp]

勉強会の内容はこちらがわかりやすいです。
→ maru.cc@はてな 第35回PHP勉強会に参加してきた [d.hatena.ne.jp]

 

発表の動画はこちらからご覧になれます。
→ 雑文発散 第35回PHP勉強会へ参加してきた [suzuki.tdiary.net]

発表に使われたスライドはこちらです。
→ handsOut.jp モバイル開発@symfony [handsout.jp]

 

前半はケータイの基礎知識的な部分を解説していますし、後半に関してもsymfonyに限らず、モバイル開発全般に使えるようなノウハウの紹介になっています。
これは役に立つのではないでしょうか。

発表者のゆどうふさん、並びに関係者の皆様、お疲れ様でした。

 

関連:




9/21に札幌でPHPの勉強会「第1回 LOCAL PHP部 (aka PHP北海道) のつどい」を行います
    このエントリをはてなブックマークに登録

2008/9/2 火曜日 matsui Posted in お知らせ | No Comments »

イベントの告知です。

2008年09月21日に札幌でPHPの勉強会を行おうと思います。

今回の内容は以下の通りです。

  • docTestについて(by bobchinさん)
  • 今後のLOCAL PHP部の活動を考える会

 

PHP勉強会ページのトップはこちらです。
→ LOCAL PHP部 aka PHP北海道 [php.local.gr.jp]

申し込みは日本PHPユーザ会のイベントページを利用させていただいています。
こちらの画面上部にある「Login」ボタンを押してログインし、参加申請を行ってください。
→ 日本PHPユーザ会 Event Entry [php.gr.jp]

 

会の名前が多少ややこしいことになっていますが、今回は北海道の技術系コミュニティ「LOCAL」の中で、PHP好きが集まって勉強会をしようということで、このようなPHP部という名前になっています。

誰でも参加できるただの勉強会となっていますので、PHPに興味のある方はお気軽に参加してみてください。

今回モバイル系の発表はありませんが、近いうちに何か話したいと思っています。
何か質問等がある方は、私を捕まえていただければ、わかる範囲で何なりとお答えしますので、ぜひ声をかけてみてください。

 

関連: