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

その手の平は尻もつかめるさ

ギジュツ的な事をメーンで書く予定です

metacpan で誰がモジュールに++したかを手っ取り早く見れるサービス作った

その名も Module++。ダサい!
http://module-pp.moznion.net/


さて metacpan にはモジュールに++できる *1 機能があって、
これがいい感じに便利なんですが (なぜならモジュールを評価する際の判断基準の1つになるから)、
残念なことに「誰が++したか」を知るためにはAPIを叩かなければなりません。

この「誰が++したか情報」を持ってくる為にはまず API を1回叩いて、
「そのモジュールに++したユーザーの一覧」を引っ張ってきます *2
このユーザーの一覧に含まれているユーザーの ID 情報はハッシュ化されているので、
更にユーザーの数ぶんだけ API を叩いて、ハッシュ化された情報から
実際の ID をひいてくる必要があります。
難しい処理では無いんですが、書いてみると地味に面倒くさい。

この「誰が++したか」という情報は、僕は重要だと思っていて *3
出来る事なら気軽にアクセスしたいので、今回このようなサービスを作った次第です。


工夫という程の工夫ではありませんが、
ユーザーの数ぶんだけ API を叩いて、ハッシュから ID をひいてくるクエリを
毎回毎回 metacpan に投げるのは結構厳しいので、
(顰蹙を買いそうだったのと、metacpan はレスポンスタイムが若干長いという理由から)
この結果は自前の DB にキャッシュするようにしています。
なので、誰かが一度でも検索したことのあるモジュールだったら若干反応が早いはずです。


当初、Module++ が出来た時は「Web1.0 の再来じゃ!!!!」って感じのデザインだったんですが、
それを哀れに思ったのか @ さんがデザインを当てて下すったのでなんか良い感じになりました。


なお、コードは以下です。ご意見ご感想プルリクエスト等お待ちしております。
https://github.com/moznion/ModulePlusPlus

*1:つまりは「いいね」を付ける

*2:ちなみにこの時のユーザーの一覧は配列の配列として返ってくる

*3:あの人が++してるなら信用できそう! みたいな事がままある