─質問1─

Ruby製サードパーティライブラリ、要はgemで、何が人気なのかってこと、手っ取り早く知りたいんですけど。

─回答1─

RubyGems.orgstatsページを見てください。

bestgem noshadow

─質問2─

えっ?これだけ?この辺は万年上位で固定でしょ。もうちょっと俺の知らないバラエティに富んだものに出会いたいんだけど。俺、Rails用ないし。

─回答2─

カテゴリー別ならThe Ruby Toolboxがあります。

bestgem noshadow

The Ruby Toolbox - Terminal Coloring

─質問3─

あんた、俺の質問ちゃんと聞いてるの?カテゴリー別なんて言ってないし。それに、ここのカテゴリーってなんか俺的に信用ないんだよね。取りこぼし多いっていうか..。俺のgem出てこないっていうか..。

─回答3─

GitHubのTrendingでここ最近の人気リポジトリが分かります。

bestgem noshadow

Trending Ruby repositories on GitHub this month

これをメールで定期的にもらうこともできます。

Subscribe to GitHub’s Explore Email

ターミナルで見たいならgemがあります。

git-trend というrubygemsを作りました - rochefort’s blog

─質問4─

まあ、これはこれでいいんだけどさ。でも俺、確か、gemって言ったよね、さっき?人気gemの再発見したいんだけど。

─回答4─

@xmisaoさんが作ったBestGems.orgがあります。約80,000個ある全gemの総合ダウンロードランキングが分かります。

bestgem noshadow

BestGems – Ruby Gems Download Ranking

BestGems.orgはオープンソースでもあります。

xmisao/bestgems.org

─質問5─

ほぅ。じゃあ50番目に人気のあるgemが何かとかわかるの?

─回答5─

bestgem noshadow

41-60 of all 79,598 gems

前日のダウンロード数(日別)のランキングも分かります。

Daily Download Ranking – Best Gems

総合ランキングと日別ランキングの差から最近の人気度を図るFeaturedというものもあります。

bestgem noshadow

Featured Gems Ranking – Best Gems

─質問6─

おー、これいいね。なんか、面白いgem見つけられるかも。

あれ、そう言えば、日毎のダウンロード数って、RubyGems.orgのAPIじゃ、取れなかったと思うんだけど。

─回答6─

BestGems.orgにおけるgemの個別ページでは、ダウンロード数やランキングの伸びをグラフで見ることができます。

bestgem noshadow

power_assert – BestGems

─質問7─

BestGems.orgは全gemについて日毎のダウンロード数、収集してるんだ。すごいな。そうすると、自分が作ったgemの成長過程をここで見ることもできる、ってわけだ。

いや、実は、自分の作ったgemのダウンロード数が気になっちゃって、ここのところ寝れなくってさ。勢いで、mygegegemsってgem作ったんだけど。あー、要はターミナルで自分のgemのダウンロード数見るやつ。

自分が公開しているgemの日々のダウンロード数が気になって寝られません。どうしたらいいでしょうか(Yawhoo知恵袋)

mygegegems

これ、一応前日からのダウンロード数の伸びが分かるようになってるんだけど、こんな感じで。

bestgem noshadow

で、これ、アクセスした日だけダウンロード数をYAMLファイルに記録するんだけど、アクセスしない日もあるしね..。YAMLにどこまでデータ溜めるんだって話もあるし。

BestGems.orgの収集したデータにアクセスするAPIでもあったら、捗るんだけどな…。

─回答7─

BestGems APIが公開されています。各gemについて、「総ダウンロード数」、「日別ダウンロード数」、「総合ランキング」および「日別ランキング」の各トレンド、つまりBestGems.org開設からの日毎のデータがJSONで取れます。

BestGems API v1 Specification · xmisao/bestgems.org Wiki

─質問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があります。

bestgems

melborne/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─

こちらになります。

bestgem noshadow

下から5番目…orz


(追記:2014-8-9) bestgems gemの仕様変更に伴い記述(コード)を変更しました。

  1. 実のところBestGems.orgのAPIはtwitter上での@xmisaoさんと僕とのやりとりで生まれたのでした。https://twitter.com/merborne/status/488681089586585600
  2. 今日はこれが言いたかった


blog comments powered by Disqus
ruby_pack8

100円〜で好評発売中!
M'ELBORNE BOOKS