Kawa.netxp
[Perl] phone.pl 携帯電話キャリア自動判別ライブラリ
phone.plは、携帯電話用の Perl CGI プログラムに
アクセスしてきているブラウザ情報から、
携帯電話キャリアや細かな機種情報を自動判別するためのライブラリです。
phone.plの1ファイルだけで済むため、簡単に導入できます。
レンタルサーバ・ホスティングサーバなど、
root 権限を使用できなかったり
CPAN からのモジュールインストールのできない環境でも、利用できます。
機種情報は、phone_info 関数の返り値のハッシュから
プロパティとして読み出してください。
ダウンロードはこちら:
phone.20071223.zip
ZIP
開発中ソースはこちら:
http://svn.coderepos.org/share/lang/perl/misc/phone/
SVN
最近は、phone.pl の新機能追加はやっていませんが、
携帯電話リストの更新などは続けています。
CodeRepos 上でのアップデート参加者募集中です♪
require "phone.pl";
my $phone = &phone_info();
print "Content-Type: text/html\n";
print "NTT DoCoMo mobile phone.\n" if ( $phone->{type} eq "docomo" );
『use lib ディレクティブで指定した @INC なディレクトリに
phone.plをアップロードしておく』のが正しい使い方ですが、
この説明では分かり難いですね。
より簡単な使い方としては、
『.cgi と同じディレクトリにphone.plをそのままアップロードする』だけでもOKです。
なお、このphone.plと似た用途のCPANモジュールとしては、
HTTP::MobileAgentがあります。
こちらはメソッド呼び出しで機種情報を取り出す仕組みで、
モジュール化により拡張性も高いようです。
使ってないので分からないけど。
phone.pl の使い方
- マニュアルはこちら:
phone.html
POD
- サーバ上の CGI と同じディレクトリ(か@INC のディレクトリ)に
phone.pl をアップロードしてください。
CGI から phone.pl を呼び出して、得られたハッシュを用いて
機種情報の判別に利用します。
- 携帯キャリアを判別した Location: 飛ばし CGI
(2002/11/04追記: au の新機種は i-mode 用コンテンツで OK)
(2004/11/27追記: 互換のため SoftBank は "jphone" として判別)
#!/usr/bin/perl
require "phone.pl";
my $phone = &phone_info();
if ( $phone->{type} eq "docomo" ) {
print "Location: http://domain.name/docomo.html\n\n";
} elsif ( $phone->{type} eq "ezweb" ) {
if ( $phone->{hdml_native} ) {
print "Location: http://domain.name/ezweb.hdml\n\n";
} else {
print "Location: http://domain.name/docomo.html\n\n";
}
} elsif ( $phone->{type} eq "jphone" ) {
print "Location: http://domain.name/vodafone.html\n\n";
} else {
print "Location: http://domain.name/pc.html\n\n";
}
print "機種名: $phone->{name}<BR>\n";
if ( $phone->{image_jpeg} ) {
print '<img src="title.jpg">'; # JPEG対応機種のみ
} else {
print '<img src="title.gif">'; # JPEG対応機種以外
}
- もうちょっと詳しく、画面サイズやキャッシュ容量でも場合分けする例
my $img;
if ( $phone->{qvga} && $phone->{cache} >= 12000 ) {
$img = "image-240x180.jpg"; # QVGA液晶かつキャッシュ容量12KB以上のみ
} elsif ( $phone->{image_jpeg} && $phone->{width} >= 160 ) {
$img = "image-160x120.jpg"; # JPEG対応かつ横幅160ピクセル以上
} elsif ( $phone->{image_jpeg} ) {
$img = "image-120x090.jpg"; # JPEG対応機種のみ
} elsif ( $phone->{image_png} ) {
$img = "image-096x072.png"; # PNG対応機種のみ(SoftBank・EZ旧機種)
} else {
$img = "image-096x072.gif"; # その他(NTT DoCoMo 旧機種)
}
printf( '<img src="%s">', $img );
キャリア判別まとめ
下記のキャリア判別用プロパティの他にも、多数のプロパティがあります。
対応機種 |
{type}の値 |
追加の判別条件 |
HTML |
HDML |
GIF |
PNG |
JPEG |
補足 |
NTT DoCoMo PDC |
"docomo" |
{docomo_pdc}が真 |
○ | × |
○ | × | ○ |
|
NTT DoCoMo FOMA |
{docomo_foma}が真 |
○ | × |
○ | × | ○ |
|
NTT DoCoMo PHS |
{docomo_phs}が真 |
○ | × |
○ | × | × |
|
au・TU-KA XHTML機種 |
"ezweb" |
{xhtml_native}が真 |
○ | × |
○ | ○ | ○ |
|
au・TU-KA HDML機種 |
{hdml_native}が真 |
△ | ○ |
× | ○ | × |
|
SoftBank 2G携帯 |
"jphone" |
{vodafone_2g}が真 |
○ | × |
× | ○ | ○ |
|
SoftBank 3G携帯 |
{vodafone_3g}が真 |
○ | ? |
○ | ○ | ○ |
|
PC |
undef (偽) |
|
| | | | | |
- 上記に JPEG が ○ と書いてあっても、古い機種では JPEG 画像を表示できない場合があります。
必ず $phone->{image_jpeg} で判別するようにしてください。
-
上記には入れていませんが、{ezweb_mono} が真であれば、
au・TU-KA のごく古い HDML 白黒液晶機種と判別できます。
この場合、画像は BMP 形式のみとなります。
しかし、今では利用者シェアが0.1%を割って、また新規契約も停止されています。
キャッシュ容量も 1.4KB 制限と厳しいので、動作対象外したいですねぇ。。。
- その他、phone.pl の不具合情報や、ご意見・ご要望をお待ちしております。
SoftBank 3G携帯対応について
バージョン1.52以前のphone.plは、
2004年以降発売の
SoftBank の 3G 携帯に対応していません。
古い phone.pl をご利用のサイトでは、
新バージョン 1.55 以降に更新する必要があります。
お手数ですが、よろしくお願いいたします。
≪更新手順例≫
phone.pl の最新バージョンを
こちらからダウンロード
していただき、
サーバ上の phone.pl ファイルと交換するだけです。
旧バージョンとの大きな利用上の相違点はありませんが、念のため、
ご利用中の旧バージョンのバックアップを別のファイル名で残した上、
新しいバージョンを上書きアップロードすることをお勧めいたします。
phone.pl ニュース(更新情報)
ここでは phone.pl の
更新情報をご案内しています。
1.71をリリース (2007/12/23)
- au 新機種(W55T/INFOBAR 2他)に対応しました。
1.70をリリース (2007/07/04)
- au 新機種(W53SA/Sweets cute他)に対応しました。
1.69をリリース
(2006/12/12)
- au 新機種(DRAPE/W47T/W44S/E03CA)に対応しました。
⇒一覧
- au の $HTTP_X_UP_DEVCAP_MULTIMEDIA の先頭文字は16進数らしいので、
A〜F にも対応しました。
(Thanks to みずのきどり)
- Vodafone の
ウェブコンテンツヴューア
の $HTTP_USER_AGENT は J-EMULATOR/〜 なので、対応しました。
$HTTP_X_EMULATOR_MSNAME にスキンの機種名が入っているので、
従来も判別自体はできていたかと思われます。
1.68をリリース
(2006/11/05)
- au 新機種(W42K〜W44K)に対応しました。
⇒一覧
- Vodafone →
SoftBank
のブランド名変更に対応しました。
(判別名は j-phone のままです)
1.67をリリース
(2006/03/09)
- au 新機種(neon)に対応しました。
-
KDDI-PT78、
UP.Browser/3.04-KCTE、
UP.Browser/3.2.9.1-UPG1ってどの機種でしょうか?
もしご存知の方いらっしゃいましたら、
教えてください。
UPG1 は、UP.SDK のようなシュミレータ系のコードでしょうか?
1.66をリリース
(2006/02/21)
- au 新機種(W41K/Sweets pure等)に対応しました。
1.65をリリース
(2005/09/27)
- au 新機種(A5511T/A5512CA等)に対応しました。
(Thanks to 飯島さん)
1.64をリリース
(2005/09/03)
- ドコモ SO213iS の液晶サイズ判別を修正しました。
(Thanks to 古淵さん)
- ドコモ SH851i に対応しました。(FOMA・QVGA端末)
- au 新機種(W32SA/G'zOne TYPE-R等)に対応しました。
1.62をリリース
(2005/06/18)
- au 新機種(Sweets/A1404S)に対応しました。
- ドコモ/ボーダフォン/au の動画対応機種判別機能を追加しました。
ドコモ/ボーダフォンでも、XHTML 対応機種判別機能を有効にしました。
今後はスタイルシートを使ったページが増えてくるのでしょうか。
(Thanks to MIZUNOTOMOAKI)
1.60をリリース
(2005/03/30)
- 1.59 におけるW31K・W31Sの機種名判定が誤っていたので修正しました。
- マニュアルを更新しました。
1.59をリリース
(2005/03/28)
- au・TU-KA 新機種に対応(W31SA/W31K/W31S/PENCK/TT51)
1.56をリリース
(2005/02/02)
1.55をリリース
(2005/01/31) 【重要】
- Vodafone バージョン判定処理バグ修正を行いました。
先週リリースの 1.54は、Vodafone のバージョン判定処理にバグがありました。
- $phone->{disable_post} ... POST 送信を利用できるか
- $phone->{image_jpeg} ... JPEG を表示できるか
- $phone->{cache} ... キャッシュ容量
に影響が出ていました。(対象は Vodafone 2G 携帯のみ)
新バージョン 1.55 への更新をお願いいたします。
- 今回から .tar.gz 形式に加えて、.lzh 形式での公開を始めました。
1.54をリリース
(2005/01/26)
- ドコモ700iシリーズ対応
- Vodafone キャッシュ容量判定変更、W21CA対応
- Vodafone V902SH他、新3G携帯対応
- Vodafone の新3G携帯は、ついに HTTP_USER_AGENT が
J-PHONE/4.3/V602SH/〜 でなく Vodfone/1.0/V902SH/〜 のように
Vodafone 表記に変わりました! phone.pl をご利用のサイトでは、
Vodafone の新3G携帯に対応するため、phone.pl を更新
する必要があります。
1.50をリリース
(2004/12/22)
- iモードシュミレータI (ver7.0)は、16ビットフォントとみなして、
画面ピクセル数の横幅・高さに換算
- iモードシュミレータIIは、QVGA固定とみなす
1.48をリリース
(2004/09/28)
- EZweb の動画対応機種を自動判別。
$phone->{ezmovie} が真なら EZムービー対応
$phone->{movie_amc} が真なら .amc 形式に対応
$phone->{movie_3g2} が真なら .3g2 形式に対応(3GPP2)
1.47をリリース
(2004/09/28)
- iモードHTMLシミュレータIIをQVGA機種として判別
1.46をリリース
(2004/09/28)
- au/TU-KA 新機種対応(A5504T、A1305SA他)
1.44をリリース
(2004/07/26)
- docomo の QVGA 対応機種の一覧を更新。
$phone->{qvga} が真なら、QVGA 対応機種となります。
1.43をリリース
(2004/07/06)
- docomoの機種のディスプレイサイズ取得の機能を追加しました。
全キャリアのディスプレイサイズが取得できます。
(Thanks to MIZUNOTOMOAKI)
- Google AdSense を入れてみました。
1.42をリリース
(2004/03/16)
- DoCoMo 拡張絵文字非対応機種の判別に対応しました。(docomo_std_emoji)
ドコモ機種において、{docomo_std_emoji} が真の場合は
標準絵文字のみ対応の機種で、拡張絵文字に対応しないと判別できます。
偽の場合、拡張絵文字にも対応しています。
⇒ドコモ絵文字の詳細
ドコモの今後の機種では、全て拡張絵文字に対応しています。
- au/TU-KA 新機種のデバイスタイプに対応しました(A5405SA他)
1.40をリリース
(2004/02/13)
- DoCoMo 新機種対応 (F900i ...)
- au 新機種対応 (W11K ...)
1.38をリリース
(2003/10/27)
- DoCoMo JPEG 判別対応(image_jpeg)
- au 機種名変更(A5307ST⇒INFOBAR)
- DoCoMo 着ボイス非対応機種判別(docomo_voice)
1.36をリリース
(2003/09/17)
-
au 新機種対応
(A5307ST/A5501T/W11H)
1.35をリリース
(2003/08/17)
-
au 新機種対応(A1401K/A1303SA)
au 小容量白黒機種自動判別追加(ezweb_mono)
au 地域会社自動判別追加 (ezweb_area)
DoCoMo 種別追加 (docomo_foma docomo_pdc docomo_phs)
1.34をリリース
(2003/08/01)
- au 新機種対応しました(A5303H-II/A1304T/TT31)
1.33をリリース
(2003/07/16)
- NTTドコモ4階調機種の自動判別バグ修正(今ごろ?)
- JフォンがVodafoneになって、メールアドレスも変更になるそうですね。
既存機種は今後も {type} = "jphone" のままにすると思うけど、
またはVodafoneの第3世代携帯の {type} = "vodafone" 変更にすべきか、
または互換性を考えると "jphone" にすべきかな。
例えば、端末が GIF 表示対応なら新タイプ "vodafone" を追加して、
GIF 表示非対応(PNG/JPEGのみ対応)なら "jphone" のままにしよう、とか。
検討中。
1.32をリリース
(2003/06/10)
- au の最新機種 TK23 / A5402S / A5401CA / A5306ST / A5305K の
機種名自動判別に対応しています。
- DDI Pocket の AirH" Phone の最新機種 AH-J3001V / AH-J3002V の
機種名自動判別に対応しています。
(AH-J3001V / AH-J3002Vは区別できません)
新しい {type} 変数を追加しました。『ahphone』になります。
- 現在の {type} 一覧: ahphone / astel / docomo / ezweb / jphone / lmode / pdx / 空(PC)
1.26をリリース
(2003/04/16)
- au の最新機種 A1301S / A1302SA / TK31 / TS31 の機種名自動判別に対応しています。
バグ修正の 1.19をリリース
(2002/11/29)
- 昨日リリースした 1.18 には
{hdml_native}・{xhtml_native} の判定にバグがありました。
修正バージョンを 1.19 としてリリースしました。
昨日DLされた方はご迷惑をおかけして、ご迷惑をおかけしてすみません。
m(..)m
1.17 以前には問題はありません。1.18 のみの問題です。
{xhtml_native} 対応の 1.18をリリース
(2002/11/28)
- J-HONE のステーション非対応機種は
<FORM METHOD="POST"> に対応していません。
変数 {disable_post} で判定できるようにしました。
変わりに <FORM METHOD="GET"> を使います。
- EZ の機種名リストを更新しました。
A5303H・A5302CA・TT22 に対応しています。
また、{hdml_native} の逆となる {xhtml_native} を追加しました。
3000・5000系の i-mode 互換機種を判定できます。
また、au より現在販売されている機種では、
{xhtml_native} が真の場合は GPS 搭載です。(eznavigation)
EZ機種名リスト更新ほかの 1.15をリリース
(2002/11/04)
- EZの自動判別処理の正規表現を改良しました。
Openwave SDK 1.1 も ezweb 機種として認識します。
- EZで古い HDML 機種か
新しい XHTML 機種かを
判別する変数 {hdml_native} を追加しました。
変数 {hdml_native} が真なら HDML ネイティブ機種(300/400/1000番台)で、
偽なら XHTML ネイティブ機種(3000/5000番台〜)です。
新旧どちらの機種もEZセンタによる自動変換で HDML・XHTML のどちらも利用できますが
互換性が完全ではないので、ネイティブの言語を使うべきです。
{type} が "ezweb" でも {hdml_native} が偽な機種は、
HDML コンテンツでなくて i-mode 用コンテンツを出力するのがお勧め。
- EZの機種名リストを
最新版に更新しました。
(A3015SA=SA22等)
EZ 着ボイス QCP ファイル対応の 1.13 をリリース
(2002/09/30)
- EZの着ボイスファイル形式 .qcp の自動判別に対応しました。
変数 {audio_qcp} が真ならば .qcp 対応機種となります。
- EZのキャリア判別で HDML 使用を停止し、HTTP_USER_AGENT のみを使用しています。
従来は環境変数 HTTP_ACCEPT に hdml が含まれていれば、EZと判別していました。
今後はi・Jと同じく、HTTP_USER_AGENT で判別することになります。
- EZの機種名リストを
最新版に更新しました。
着メロ対応の 1.12 をリリース
(2002/05/07)
- 対応機種を増やしました。
・NTT DoCoMo FOMA の機種名 $phone->{name} 等に対応しました。
・J-PHONE のバージョン番号 $phone->{ver} が外れてました。(バグ)
・EZ の C5000/A3000/C3000シリーズの機種名 $phone->{name} 等に対応しました。
・EZ の新機種も販売されている機種名が取り出せるようにしました。
- JPEG 表示対応機種の自動判別に対応しました。(実験公開中)
$phone->{image_jpeg}
値が真なら JPEG 表示対応機種となります。
- 着メロ対応機種/非対応機種の自動判別に対応しました。(実験公開中)
$phone->{audio_mld} ← NTT DoCoMo の .mld 形式
$phone->{audio_mmf} ← J-PHONE&EZ の .mmf 形式(SMAF)
$phone->{audio_pmd} ← EZ の .pmd 形式
値が真なら、着メロ対応機種となります。
その他のページへのリンク
トラックバックURL:http://www.kawa.net/service/tb/ajaxtb.cgi/works/perl/phone/pnews.html
Kawa.netxp
© Copyright 2006 Yusuke Kawasaki