tokuhiromさんがIRCで、
Nokia6820/2.0 (4.83) Profile/MIDP-1.0 Configuration/CLDC-1.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)
みたいなモバイル用のgooglebotがくるんだけど、これがH::MAではis_non_mobileになっちゃうというのを聞いたので、それをis_non_mobileじゃなくす実装をした。それと同時に以前Kamikuraさんから要望として来ていた
J-Phone/5.0/J-SH03 (compatible; Mozilla 4.0; MSIE 5.5; YahooSeeker)
という、キャリアの名前が「J-PHONE」じゃなくて「J-Phone」になってる微妙なYahooSeekerもモバイルとして認識するように実装しました。
まだCPANには上げてませんが、ここからダウンロードできます。
ていうか、この対応はかなりad hocな対応なので今後こんなヘンテコなUAのbotが増えたら、その都度対応しなきゃならないなんてめんどくさすぎる。
そこで対応策をいくつか考えてみた。
- 案1
H::MA::BotみたいなのつくってBot関連はすべて隠蔽。そんで、基本的にはH::MA::{DoCoMo,EZweb,Vodafone}として振舞うけどis_botがtrueになるみたいな実装。
- 案2
IRCで宮川さんが言ってたけど、そもそもH::MAのキャリア毎に扱うのやめて、H::MAのクラスのオブジェクトにして全部メソットやプロパティで扱う。つまり、キャリアを意識しないクラス構造にするみたいな実装
- 案3
とりあえず、is_non_mobileじゃなければいいんだから、is_non_mobile内でこれはモバイルだよっていう判定関数を作って、それにガシガシ正規表現を追加していく(追加できる機構にする)
- 案4
ごりごり対応していく。
とりあえず考えたのはこんくらいです。
どれにしようかはもう少し考えてみますが、とりいそぎは今の実装で数日中にCPANにアップする予定です。