勉強がてら、IPv4 アドレスからその所属国のカントリーコードを検索するためのGo言語用モジュールを作ってみました(上の画像は、そのモジュールのデモ用CLIのスクリーンショット)。
せっかく作ったので、需要は無視して無謀にも公開。
作った動機とか
IPアドレスの国判定なんていうのは、いろんな手段が提供されていまして、今さら作る必要もない気もしますが。
実際、わたしもアクセスログのチェックなどに、アメリカのMaxMind社が提供している無償利用可のジオロケーションデータベース GeoLite2 Free をずっと使っていました。
だいぶ前にダウンロードした(多分、5,6年以上前)のを、そのまま使っていました。IPアドレスの所属国って、そうそう変わるものじゃないだろうと高をくくっていたからですが、どうもそうじゃないらしい。
最近、なんか、おかしいなと思って、他のサービスを使って確認してみたら、手元のデータベースでは ドイツ と出るのに、よそでは ロシア だったり・・・。ダメじゃん。
じゃあ、新しいのをダウンロードすっかぁ、とMaxMind社のサイトを見てみたら、今でもフリーで使えるらしいのですが、なんだか手続きがめんどくさくなってる・・・。たりぃ。
なら、いっそ、自分で作ってしまえ、と(短絡)。
使い方・機能
使い方はグダグダと ccipv4: README に書きましたので、ご参照ください。
機能としては、基本的に IPv4 アドレスからカントリーコードを検索するだけ です(他にオマケ的なことも、ほんのちょっと、できますが)。
取り柄があるとしたら、使いながら新しいデータをダウンロードして古いのと切り替えられるようにしてある(つもり)ことかな。
必要なデータを全部メモリに読み込んだ状態で検索をかけているので、応答はさほど悪くないと思います。
ただ、その分、メモリを余計に食ってしまうという難点もあるのですが・・・。
などという、ふつつかモノですが、なにかの折にでもお試しいただければ幸いでございます。