はじめに
拙作のBestGems.orgはGemのダウンロード数を独自に集計しランキングするWebサービスだ。 BestGems.orgでは合計ダウンロード数と日別ダウンロード数の2つのランキングを公開していた。 本日、このBestGesm.orgに、人気上昇中の注目のGemをランキングする機能を追加した。
注目のgemの算出方法
注目のGemの基準は、合計ダウンロード数での順位と、日別ダウンロード数の順位の差分とした。 もし合計ダウンロード数の順位より日別ダウンロード数の順位が高いGemがあれば、それは人気上昇中のGemといえる。 逆に合計ダウンロード数の順位が日別ダウンロード数の順位より高ければ、それは人気が落ちているGemいえる。
例えば、この基準で算出した、本日の注目Gemランキング1位のspring-commands-testunitは、合計ダウンロード数は4,544回で19,307位だが、日別ダウンロード数は542回で897位であり、その順位の差分は18,410位分にもなる。 このGemは、ダウンロード数の傾向も以下のとおり急速な増加を示しており、今後もこのダウンロード数を維持すれば、人気のGemになると予想できる。 これは非常に極端なケースだが、このようなシンプルな方法でも、この結果は人気上昇中のGemを抽出できるという確かな手応えを感じさせる。
注目のGemランキングでは、日別ダウンロードランキング上位1000件のGemについて、合計ダウンロード数での順位の差分を調べ、差分が多い順でGemを順位付けしている。 上位1000件に対象を限定するのは、以前の調査で日別ダウンロードランキングの上位1.5%のGemが、全ダウンロード数の80%を占めていることがわかったからだ。 このことから上位1000件を分析するだけで、Gemのダウンロード傾向の大半をカバーできていると考えた。
Gemの順位の分布についての考察
ところで、この機能の実装にあたって、Gemの順位の分布について調べることになったので、その結果についても書いておこうと思う。
以下の散布図は、横軸に合計ダウンロード数の順位を、縦軸に日別ダウンロード数の順位をとり、全68,787個のGemをプロットしたものである。 日別ダウンロード数の順位に対してグラフが線状になっている箇所は、ダウンロード数が極めて少ないGemが大量に存在し、順位に空白があるから生じたものだ。 本来この散布図は、合計ダウンロード数と日別ダウンロード数の順位が近く、もっと直線に近い形になって良いはずだが、興味深いことに順位が異なるGemが全体的に幅広く分布していることがわかる。
全Gemが対象だといささか範囲が広すぎるので、範囲を縮小して散布図をもう少し詳しく見てみよう。 次の散布図は、注目のGemを順位付けする対象と同様に、日別ダウンロード数の順位を1000件に絞ったものだ。 日別ダウンロード数の順位に対し合計ダウンロード数の順位が特に低いGemは、散布図中の直線に乗らない点として表れており、これが注目のGemとして抽出すべきGemである。
更に表示範囲を絞ったのが次の散布図である。 日別ダウンロード数1000位以内かつ合計ダウンロード数1000位以内の範囲を切り取ったものだ。 この散布図も、やはり左下から右上に向かって直線状になっても良いはずだが、そうはなっていない。 実際にはこの散布図は扇型で、人気上昇中のGem、人気が落ちているGemが、それぞれ分散して存在することがわかる。 この分布であれば、順位の差分により注目のGemを抽出するのは、そこまで筋の悪い方法では無さそうだ。