読者です 読者をやめる 読者になる 読者になる

uamobile 0.2を考える(1)

Python Mobile

先日、Terapyon氏uamobileをDISられたので、ってわけでもないど、ケータイについて何も分からない状態で書き始めてそろそろ2年なので、いろいろ抜本的に変更したい。

is_crawler

クローラーかどうかを判定するメソッドは絶対に必要。

>>> device.is_crawler()

キャリアのIPアドレスを得る

とりあえず、uamobile.cidrというモジュールを作ってみて、

>>> cidr.get_ip_addrs('docomo')
[('210.153.84.0', 24), ('210.136.161.0', 24), ('210.153.86.0', 24), ('124.146.174.0', 24), ('124.146.175.0', 24)]

のような感じにしてみた。モジュール名は悩むところだけど、ここは重要なところではなく、次のis_bogusメソッドが重要。

is_bogus??

uamobile自身かライブラリ使用者がキャリアのIPアドレスを与えたならば、その情報とWSGI環境変数をもとに、本当にケータイキャリアからのアクセスかどうかを検証できる。なので、

>>> ua = detect(environ)
>>> ua.is_docomo()
True
>>> ua.is_bogus()
True

のようなメソッドは当然あるべきだ。上の例では、docomoのUserAgentを名乗っているけど、IPアドレスは正等ではないというケース。

問題はメソッド名。候補は、

  • is_bogus
  • is_valid
  • is_valid_ip
  • is_genuine
  • is_genuine_client
  • seems_docomo
  • maybe_docomo

最後の二つの場合には、いままでのis_docomo/is_ezweb/is_softbankといったメソッドの返す値が変わる可能性があるのでナシだろうなぁ。


まだまだ変更したい点は続く。