phone.pl - 携帯電話からの環境変数を解析し、ハッシュへの参照を返す
【携帯キャリアを判別した Location 飛ばし】
require "phone.pl"; my $phone = &phone_info();
if ( $phone->{type} eq "docomo" ) { print "Location: http://domain.name/docomo/index.html\n\n"; } elsif ( $phone->{type} eq "jphone" ) { print "Location: http://domain.name/softbank/index.html\n\n"; } elsif ( $phone->{type} eq "ezweb" ) { print "Location: http://domain.name/au/index.html\n\n"; } else { print "Location: http://domain.name/pc/index.html\n\n"; }
携帯電話からのアクセスを受け付けるCGI向けに、携帯電話に関する環境変数を 解析して、使いやすい形のハッシュを作成し、その参照を返します。 ここでは、以下の手順でハッシュを取得するものとします。
require "phone.pl"; my $phone = &phone_info();
携帯電話会社の判別には、type プロパティを利用します。
$phone->{type} ⇒ 携帯電話会社(キャリア)
携帯3キャリアの type プロパティの値は以下のようになります。
"docomo" ⇒ NTT DoCoMo "jphone" ⇒ SoftBank "ezweb" ⇒ au・TU-KA "" ⇒ PC(値は空です)
過去の phone.pl との互換のため、SoftBank は ``jphone'' と判別します。 type プロパティ以外に参照できる値は、以下の通りです。
<端末情報系> $phone->{name} ⇒ 携帯機種名(商品名など) $phone->{code} ⇒ 携帯機種名(製品コードなど) $phone->{color} ⇒ カラー表示対応(カラー=真、白黒=偽) $phone->{ver} ⇒ バージョン情報 $phone->{cache} ⇒ キャッシュ容量(バイト単位) $phone->{qvga} ⇒ QVGA液晶搭載機種(QVGA=真) $phone->{width} ⇒ ディスプレイサイズ横幅(ピクセル単位) $phone->{height} ⇒ ディスプレイサイズ縦幅(ピクセル単位)
以下のプロパティは、対応機種であれば真となります。(ezmovieを除く)
<画像表示系> $phone->{image_jpeg} ⇒ JPEG画像 $phone->{image_png} ⇒ PNG画像 $phone->{image_gif} ⇒ GIF画像 $phone->{image_bmp} ⇒ BMP画像
<音声再生系> $phone->{audio_mmf} ⇒ 着メロ .mmf (SMAF) $phone->{audio_pmd} ⇒ 着メロ .pmd $phone->{audio_smd} ⇒ 着メロ .smd $phone->{audio_mld} ⇒ 着メロ .mld $phone->{audio_qcp} ⇒ 着ボイス .qcp (EZ)
<動画再生系> $phone->{movie_amc} ⇒ EZムービー AMC(.amc) $phone->{movie_3g2} ⇒ EZムービー 3GPP2(.3g2)
<NTT DoCoMo専用> $phone->{docomo_foma} ⇒ NTT DoCoMo FOMA端末 $phone->{docomo_pdc} ⇒ NTT DoCoMo PDC端末
<SoftBank専用> $phone->{vodafone_2g} ⇒ SoftBank PDC端末 $phone->{vodafone_3g} ⇒ SoftBank 3G端末 $phone->{disable_post} ⇒ method="post" 使用不可
<au 専用> $phone->{ezweb_mono} ⇒ au 白黒HDML端末(C300系。1.4KB) $phone->{hdml_native} ⇒ au HDML端末(C300〜A10xx系) $phone->{xhtml_native} ⇒ au XHTML端末(A110x系〜、WIN) $phone->{ezmovie} ⇒ EZムービー対応状況(0〜9)
機種によっては、ディスプレイサイズやキャッシュ容量などを正確に 取得できない場合もあります。(その場合は値は偽となります) また、制限がありますが UID(携帯端末固有記号)を取得できます。
$phone->{uid} ⇒ UID(携帯端末固有記号)
ただし、iモード機では公式サイトのドメイン下でのみ取得可能、 SoftBank 機では、公式サイトの pid・sid 利用時のみ取得可能、 au 機種では、公式/勝手サイト問わず取得可能です。 なお、UIDは詐称可能のため、より厳密に固体判別を行うためには GWセンタIPアドレスによるアクセス制限の併用が必要です。
phone.pl はご自由にお使いください。 ご意見・バグ情報などお待ちしております。
Version 1.01 (2000/05/11) 最初のバージョン Version 1.02 (2000/05/12) ezWeb 商品名変換対応、DoCoMo バグフィックス Version 1.03 (2001/02/19) DoCoMo 機種名は i まで付ける Version 1.04 (2001/04/05) DoCoMo 最新機種対応、アステル対応 Version 1.10 (2002/03/25) au 最新機種対応、ファイルタイプ実験対応 Version 1.11 (2002/04/26) DoCoMo 着メロ機種判別対応 Version 1.12 (2002/05/07) DoCoMo FOMA、au 新機種、TK11・C313K 着メロ対応 Version 1.13 (2002/09/30) au 新機種、audio/vnd.qcelp 着メロ対応 Version 1.14 (2002/10/08) au 自動判別方式改良 Version 1.15 (2002/11/04) au 新機種対応(SA22→A3015SA) Version 1.17 (2002/11/27) au 新機種対応(A5303H/A5302CA/TT22) Version 1.18 (2002/11/28) hdml_native/xhtml_native/disable_post Version 1.19 (2002/11/28) hdml_native/xhtml_native 修正 Version 1.20 (2002/12/06) au 新機種対応(A1101S/TK21/TK22)、TK03 はMMF対応 Version 1.21 (2003/04/16) au 新機種対応(A1301S/A1302SA/TK31/TS31) Version 1.22 (2003/04/17) au 新機種対応(TK23/A5402ST)。A5402ST は推測 Version 1.30 (2003/05/02) uid 取得可能(制限あり) Version 1.32 (2003/06/10) DDI Pocket AirH" Phone対応(AH-J3001V/AH-J3002V) au 新機種対応(A5402S/A5401CA/A5306ST/A5305K) (A5402ST は誤りで、正しくは A5306ST でした) Version 1.33 (2003/07/01) DOCOMO_GLAY バグ修正(今頃?) Version 1.34 (2003/08/01) au 新機種対応(A5303H-II/A1304T/TT31) Version 1.35 (2003/08/17) au 新機種対応(A1401K/A1303SA) au 小容量白黒機種自動判別追加(ezweb_mono) au 地域会社自動判別追加 (ezweb_area) DoCoMo (docomo_foma docomo_pdc docomo_phs)追加 Version 1.36 (2003/09/17) au 新機種対応 (A5307ST/A5501T/W11H) Version 1.37 (2003/10/23) DoCoMo JPEG 判別対応(image_jpeg) au 機種名変更(A5307ST⇒INFOBAR) Version 1.38 (2003/10/26) DoCoMo 着ボイス非対応機種判別(docomo_voice) Version 1.39 (2004/02/06) DoCoMo 900i シリーズ対応 Version 1.40 (2004/02/13) au/TU-KA 新機種対応(W11K他) Version 1.41 (2004/03/08) DoCoMo 拡張絵文字非対応機種判別(docomo_std_emoji) Version 1.42 (2004/03/16) au/TU-KA 新機種対応(A5405SA他) Version 1.43 (2004/06/29) DoCoMo ディスプレイサイズ判別追加 (3キャリア全て取得可能:width:height) au/TU-KA 新機種対応(A5506T他) Version 1.44 (2004/07/26) DoCoMo QVGA 新機種対応(F880iES他) Version 1.45 (2004/09/17) DOCOMO_QVGA 更新 Version 1.46 (2004/09/28) au/TU-KA 新機種対応(A5504T、A1305SA他) Version 1.47 (2004/10/19) iモードHTMLシミュレータIIもQVGA対応 Version 1.48 (2004/11/09) EZムービー ezmovie、movie_amc、movie_3g2 Version 1.49 (2004/12/01) QVGA機種の横幅は240ピクセル、EZ新機種対応 Version 1.50 (2004/12/22) iモードHTMLシミュレータ7.0は16ビットフォント換算 Version 1.51 (2005/01/05) ドコモ700iシリーズ対応 Version 1.52 (2005/01/17) Vodafone キャッシュ容量判定変更、W21CA対応 Version 1.53 (2005/01/26) Vodafone V902SH他、新3G携帯対応 Version 1.54 (2005/01/26) Vodafone 702MO 対応(MOT-V980) Version 1.55 (2005/01/31) Vodafone バージョン番号判定バグ修正 Version 1.56 (2005/02/02) Vodafone 3G携帯は 300KBキャッシュとみなす Version 1.57 (2005/02/18) au 新機種対応(W31SA) Version 1.58 (2005/03/22) au/TU-KA 新機種対応(PENCK/TT51) Version 1.59 (2005/03/28) au 新機種対応(W31K/W31S) Version 1.60 (2005/03/30) au 判別バグ修正(W31K/W31S)、POD更新 Version 1.61 (2005/06/04) au 新機種対応(Sweets) Version 1.62 (2005/06/18) 動画対応機種判別(Thanks to MIZUNOTOMOAKI) Version 1.63 (2005/06/20) movie_3g2 判別条件修正 Version 1.64 (2005/09/03) SO213iS 判別修正、SH851i 対応、au 新機種対応 Version 1.65 (2005/09/27) au 新機種対応(Thanks to IIJIMA) Version 1.66 (2006/02/21) au 新機種対応(W41K/Sweets pure他) Version 1.67 (2006/03/10) au 新機種対応(neon) Version 1.68 (2006/11/05) SoftBank 対応/au 新機種対応 Version 1.69 (2006/12/12) HTTP_X_UP_DEVCAP_MULTIMEDIA 16進数対応 Version 1.70 (2007/07/04) au 新機種対応(W53SA/Sweets cute他) Version 1.71 (2007/12/23) au 新機種対応(W55T/INFOBAR 2他)
http://www.kawa.net/works/perl/phone/pnews.html http://www.nttdocomo.co.jp/service/imode/make/content/spec/index.html http://www.au.kddi.com/ezfactory/tec/spec/4_4.html http://developers.softbankmobile.co.jp/dp/tool_dl/web/useragent.php
Copyright 2000-2007 Kawasaki Yusuke <u-suke [at] kawa.net>