言及 (2013-08-05)

概要: というのを作りました。


これは何?

  1. あるIPアドレスが
  2. 日本の携帯キャリアのIPアドレスかどうかを判定するための
  3. Go言語用のライブラリ

なぜ作ったか

  1. しばらく前から、Go言語で2ch互換掲示板作れないかと画策してた
  1. よろしい、次はIDだ! となって作業を開始した
  • しかしながらID生成のアルゴリズムがわからんとなった
  • で、これはゼロちゃんねるプラスのソースみて解決した
  • そしたら、モバイルキャリア判別とかあるけど、Go言語にそんなのない
  1. 以上の理由により、よろしい、ならば作成だ! となった
  • だいたいそんな感じ

使い方

package main

import (
"fmt"
"net"
checker "github.com/nyarlabo/go-cidr_mobilejp"
)

func main() {
docomoIP := net.ParseIP(`210.153.84.5`)
isMobile, carrier := checker.IsMobile(docomoIP)

fmt.Println(isMobile) // true
fmt.Println( carrier == checker.DOCOMO ) // true
}

細かいドキュメント等

小ネタ集

  1. ソースコード内のsource.goは、実はPerlスクリプトで生成してる
  • リポジトリ内のmksrc.plがソレ
  • 自分でIP範囲調べて云々は面倒なのでPerlで書いた。反省はしない(キリ
  • ちなみにスクレイパーにはWWW::MobileCarrierJP使ってる
  1. あとWWW::MobileCarrierJPのパッチをtokuhiromさんにpull-reqとかした
  • rt.cpan.orgでissue立てたらpatches welcome ;)と言われたので(ry
  • あと色々わからんことがあったけどなんとかなった
  • あと今回の件と関係ないlive testsがこけてたような気がするけど見てないふりしてる
  1. それとsource.goでは、IP Rangeをprecompileしてる
  • 最初は、func init()でIP RangeをParseするコードを書いてた
  • けどそれって初期化に時間かかるんじゃね?
  • → ということで生の構造体を生成するソースを書いた 詳しくは次を参照 → <https://github.com/nyarlabo/go-cidr_mobilejp/blob/master/source.go https://github.com/nyarlabo/go-cidr_mobilejp/blob/master/source.go>

とりあえず以上

よかったら使ってみてくらさい。

あんまり使い道思いつかんけど(w

#FIXME

nyarla が大体

Scrapbox でコメントや意見を書く