Ruby製サードパーティライブラリgemのトレンドを知るには「BestGems.org」がベスト
─質問1─
Ruby製サードパーティライブラリ、要は
gem
で、何が人気なのかってこと、手っ取り早く知りたいんですけど。
─回答1─
RubyGems.org
のstatsページを見てください。
─質問2─
えっ?これだけ?この辺は万年上位で固定でしょ。もうちょっと俺の知らないバラエティに富んだものに出会いたいんだけど。俺、Rails用ないし。
─回答2─
カテゴリー別なら
The Ruby Toolbox
があります。
─質問3─
あんた、俺の質問ちゃんと聞いてるの?カテゴリー別なんて言ってないし。それに、ここのカテゴリーってなんか俺的に信用ないんだよね。取りこぼし多いっていうか..。俺のgem出てこないっていうか..。
─回答3─
GitHub
のTrendingでここ最近の人気リポジトリが分かります。
これをメールで定期的にもらうこともできます。
ターミナルで見たいならgemがあります。
─質問4─
まあ、これはこれでいいんだけどさ。でも俺、確か、
gem
って言ったよね、さっき?人気gemの再発見したいんだけど。
─回答4─
@xmisaoさんが作ったBestGems.org
があります。約80,000個ある全gemの総合ダウンロードランキングが分かります。
BestGems.orgはオープンソースでもあります。
─質問5─
ほぅ。じゃあ50番目に人気のあるgemが何かとかわかるの?
─回答5─
前日のダウンロード数(日別)のランキングも分かります。
総合ランキングと日別ランキングの差から最近の人気度を図るFeatured
というものもあります。
─質問6─
おー、これいいね。なんか、面白いgem見つけられるかも。
あれ、そう言えば、日毎のダウンロード数って、RubyGems.orgのAPIじゃ、取れなかったと思うんだけど。
─回答6─
BestGems.orgにおけるgemの個別ページでは、ダウンロード数やランキングの伸びをグラフで見ることができます。
─質問7─
BestGems.orgは全gemについて日毎のダウンロード数、収集してるんだ。すごいな。そうすると、自分が作ったgemの成長過程をここで見ることもできる、ってわけだ。
いや、実は、自分の作ったgemのダウンロード数が気になっちゃって、ここのところ寝れなくってさ。勢いで、mygegegems
ってgem作ったんだけど。あー、要はターミナルで自分のgemのダウンロード数見るやつ。
これ、一応前日からのダウンロード数の伸びが分かるようになってるんだけど、こんな感じで。
で、これ、アクセスした日だけダウンロード数をYAMLファイルに記録するんだけど、アクセスしない日もあるしね..。YAMLにどこまでデータ溜めるんだって話もあるし。
BestGems.orgの収集したデータにアクセスするAPIでもあったら、捗るんだけどな…。
─回答7─
BestGems API
が公開されています。各gemについて、「総ダウンロード数」、「日別ダウンロード数」、「総合ランキング」および「日別ランキング」の各トレンド、つまりBestGems.org開設からの日毎のデータがJSONで取れます。
─質問8─
えっ?API、あるの1?
% curl http://bestgems.org/api/v1/gems/mygegegems/total_downloads.json
[{"date":"2014-08-07","total_downloads":583},{"date":"2014-08-06","total_downloads":569},{"date":"2014-08-05","total_downloads":569},{"date":"2014-08-04","total_downloads":563},{"date":"2014-08-03","total_downloads":557},{"date":"2014-08-02","total_downloads":550},{"date":"2014-08-01","total_downloads":544},{"date":"2014-07-31","total_downloads":542},{"date":"2014-07-30","total_downloads":534},{"date":"2014-07-29","total_downloads":489},{"date":"2014-07-28","total_downloads":466},{"date":"2014-07-27","total_downloads":444},{"date":"2014-07-26","total_downloads":441},{"date":"2014-07-25","total_downloads":441},{"date":"2014-07-24","total_downloads":428},{"date":"2014-07-23","total_downloads":359},{"date":"2014-07-22","total_downloads":326},{"date":"2014-07-21","total_downloads":326},{"date":"2014-07-20","total_downloads":312},{"date":"2014-07-19","total_downloads":303},{"date":"2014-07-18","total_downloads":303},{"date":"2014-07-17","total_downloads":303},{"date":"2014-07-16","total_downloads":301},{"date":"2014-07-15","total_downloads":255},{"date":"2014-07-14","total_downloads":202},{"date":"2014-07-13","total_downloads":141},{"date":"2014-07-12","total_downloads":6}]
おー、これはうれしい。
するってーと、だ。俺としてはこのデータを、Rubyのオブジェクトとして取り込めればいいんだな。まずは、ラッパークライアント書くか。
─回答8─
BestGems.org APIのRubyラッパーライブラリbestgems
があります。
こう使います。
require 'bestgems'
client = Bestgems.client
client.total_downloads(:rack) # => {"2014-08-08"=>48484297, "2014-08-07"=>48426620, "2014-08-06"=>48365953, "2014-08-05"=>48305390, "2014-08-04"=>48246069, "2014-08-03"=>48203248, ... }
client.daily_downloads(:rack) # => {"2014-08-08"=>57677, "2014-08-07"=>60667, "2014-08-06"=>60563, "2014-08-05"=>59321, "2014-08-04"=>42821, "2014-08-03"=>30640, ... }
client.total_ranking(:rack) # => {"2014-08-08"=>2, "2014-08-07"=>2, "2014-08-06"=>2, "2014-08-05"=>2, "2014-08-04"=>2, "2014-08-03"=>2, "2014-08-02"=>2, "2014-08-01"=>2, "2014-07-31"=>2, ... }
client.daily_ranking(:rack) # => {"2014-08-08"=>6, "2014-08-07"=>6, "2014-08-06"=>6, "2014-08-05"=>7, "2014-08-04"=>4, "2014-08-03"=>3, "2014-08-02"=>3, "2014-08-01"=>6, "2014-07-31"=>6, ... }
─質問9─
おー、こりゃ助かる。これ、誰が作ったの?
─回答9─
あなた様です2。
─質問10─
そうか、じゃあちょっと信用ならなぃ..。えっ?俺?…そうか、昨日書いたのか…。記憶力落ちたな。あーoctokit.rbのコードパクリちらちら見ながら、書いてたわ..。
まあ、それはいいとして、BesGems.orgの話に戻るんだけど、全gemのランキングが分かるっていったよね?そうすると、不人気の、つまり「ぺけ」のほうのgemも分かるってことだよね?「不人気gemベスト50」とか、ちょっと興味あるな…。それ、見せてみてよ..。
─回答10─
こちらになります。
下から5番目…orz
(追記:2014-8-9) bestgems gemの仕様変更に伴い記述(コード)を変更しました。
blog comments powered by Disqus