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 の使い方

#!/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 (偽)         

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)

1.70をリリース (2007/07/04)

1.69をリリース (2006/12/12)

1.68をリリース (2006/11/05)

1.67をリリース (2006/03/09)

1.66をリリース (2006/02/21)

1.65をリリース (2005/09/27)

1.64をリリース (2005/09/03)

1.62をリリース (2005/06/18)

1.60をリリース (2005/03/30)

1.59をリリース (2005/03/28)

1.56をリリース (2005/02/02)

1.55をリリース (2005/01/31) 【重要】

1.54をリリース (2005/01/26)

1.50をリリース (2004/12/22)

1.48をリリース (2004/09/28)

1.47をリリース (2004/09/28)

1.46をリリース (2004/09/28)

1.44をリリース (2004/07/26)

1.43をリリース (2004/07/06)

1.42をリリース (2004/03/16)

1.40をリリース (2004/02/13)

1.38をリリース (2003/10/27)

1.36をリリース (2003/09/17)

1.35をリリース (2003/08/17)

1.34をリリース (2003/08/01)

1.33をリリース (2003/07/16)

1.32をリリース (2003/06/10)

1.26をリリース (2003/04/16)

バグ修正の 1.19をリリース (2002/11/29)

{xhtml_native} 対応の 1.18をリリース (2002/11/28)

EZ機種名リスト更新ほかの 1.15をリリース (2002/11/04)

EZ 着ボイス QCP ファイル対応の 1.13 をリリース (2002/09/30)

着メロ対応の 1.12 をリリース (2002/05/07)

コメントはこちらへ by AjaxCom

その他のページへのリンク

このページへのトラックバック by AjaxTB

トラックバックURL:http://www.kawa.net/service/tb/ajaxtb.cgi/works/perl/phone/pnews.html

Kawa.netxp © Copyright 2006 Yusuke Kawasaki