携帯のユーザーエージェント判定。willcomではまる
今、WebSigエコ&ピースでお手伝いしているホームレス総合相談ネットワークでホームレス、特にネットカフェなどで寝泊りをされている方達をターゲットにしたご相談フォームを設置しました。
しかし、このフォーム、携帯対応していなくて、かつターゲットユーザ(ホームレスの方達ですね)は携帯利用が多いということで、携帯用にCHTMLやXHTML-Conpactで作ったフォームを作ることにしました。そこで、必要なのが携帯のユーザーエージェント判定。つまりは、「携帯でアクセスしてきてんの?してないの?」という判定です。ご相談フォームがアクセスされた際に、アクセス元が携帯かそうじゃないか(たぶんPCと判断)を調べて、携帯だったら携帯用フォームに飛ばして利用いただくわけです。
つーことで、昨夜ユーザーエージェント判定のライブラリをちま×2探してみました。フォームはPerlで実装されているので、Perlのライブラリを探してみたところ、見つけたのが二つのライブラリ。
HTTP::MobileAgent
http://search.cpan.org/~kurihara/HTTP-MobileAgent-0.26/lib/HTTP/MobileAgent.pm
[Perl] phone.pl 携帯電話キャリア自動判別ライブラリ
http://www.kawa.net/works/perl/phone/pnews.html
どちらも最近までメンテされているし、3G携帯にも対応しているみたいだから、使いやすさでphone.plかなぁと思ったんですが、phone.plはwillcomに対応してないっ!んじゃ、HTTP::MobileAgentはどうかというと、これもはっきりしない。
Willcomの端末について質問です。
http://q.hatena.ne.jp/1168318511
Perl の判定モジュールを参考にする限り UserAgent に DDIPocket もしくは WILLCOM の文字が含まれるようです。
ここでのPerlの判定モジュールとはつまりHTTP::MobileAgentなんですが、HTTP::MobileAgentのHTTP::MobileAgent::AirHPhoneがソースを見ると、
$ua =~ m!^Mozilla/3\.0\((WILLCOM|DDIPOCKET);(.*)\)! or $self->no_match;
という判定をしている。ので、HTTP::MobileAgent::AirHPhoneでwillcomeも携帯判定できそうだが、
willcome=AirHということでよろしいのか?たぶん、いいんでしょうね。
http://journal.mycom.co.jp/news/2005/02/02/009.html
自分が単に常識知らずなだけなんだけど、どうしてこう携帯端末の界隈ってのはややこしいことに
なっているのか。j×もV、Sと気まぐれに変更していくしさー。泣くぞ?
でもHTTP::MobileAgent::AirHPhoneでいけるならいいんじゃねと思うと、willcomeの場合、
http://www.willcom-inc.com/ja/lineup/spec/voice/index.html
で確認すると、Opera/NetFront/IE、それにケータイ向け閲覧用ブラウザCompact NetFrontが
搭載されている場合があり、機種によって搭載ブラウザが違う。
Compact NetFrontの場合は携帯と判定するのが妥当なんだろうし。。。
とすると、willcomはUserAgentでWILLCOMかDDIPOCKETが入っているかだけ判定しても、
機種によってPC判定すべきだったり、携帯判定すべきだったりするってことになるんだろうか?・・・orz
機種をいちいち判定してなんてやってたら保守がえらく大変になってしまうよ。
まぁ、あれですな。次善の策として、willcomeの判定に完璧を期すよりも、HTTP::MobileAgent::AirHPhoneで
true判定が出たら、もう一括で全部携帯扱いしちゃって携帯用フォームに飛ばし、
携帯用フォームはCHTMLやXHTML-ConpactでPCブラウザでも表示、利用可能なフォームにしておくのが
よさげですな。このフォームは見た目よりも使えることが重要なわけだし。
はぁー、ややこしい。