GitHubでプログラムなどを公開してスターが付いて行くと嬉しいものですが、 増えていく様子などを見るとさらにやる気が増します。
そのへんのことが出来るいくつかのツールを紹介したいと思います。
StarTrack-js
スターの増加履歴をグラフ化などして可視化してくれるツールはいくつかあるみたいですが、 StarTrack-jsというのが数値の解析なども載せてくれるので良い感じでした。
複数のレポジトリを同時にグラフに載せることも可能で また下の方にはMax stars in one dayなどの情報を表にして表示してくれます。
rcmdnk のtop 3のレポジトリを見てみるとこんな感じ。
Ref: https://seladb.github.io/StarTrack-js/?u=rcmdnk&r=homebrew-file&u=rcmdnk&r=vim_ahk&u=rcmdnk&r=sentaku
sentakuで急に増えてるのはredditにさらしてみた際の現象。 (その割には大したことない反応ですが。。。)
Utility to make sentaku (selection, 選択(sentaku)) window with shell command. : commandline
ここ最近WindowsのどこでもVimをエミュレートするvim_ahkがいい感じで伸びてます。 同じ様なことをMacでやるrcmdnk/KE-complex_modifications の方は余り反応がなくて寂しいところですが。Forkじゃなくてちゃんと名前をつけた別レポジトリにしたほうが良いのかも。
と、そんな感じで自分でも楽しめますし、 今流行りのレポジトリのスターの増加の様子を見ると流行り廃りがなんとなくわかるかもしれません。
ちなみに3000を超えるスターをもつレポジトリから情報を取るにはAPIのアクセスリミットを超えてしまうため GitHubのアカウントが必要で、ユーザー名/パスワードを使用するかアクセストークンを入れる様求められます。 2段階認証をしているとユーザー名ではだめなのでアクセストークンを取得して入れる必要があります。 (New personal access tokenからPersonal tokensに関するScopeな何も選択しないまま作ったものでOK。)
ただ、10万スターを超える様な1 ものだと全部取得するのに見に行く回数が多すぎて
Error occured: In order to keep the API fast for everyone, pagination is limited for this resource. Check the rel=last link relation in the Link response header to see how far back you can traverse.
といったエラーが出てしまいました。
1万スターくらいのレポジトリだと表示することは出来ました。
Star history
別のものとしてはStar historyというものがあります。
Star history: https://timqian.com/star-history
こちらも複数のレポジトリの同時表示に対応しています。
StarTrack-jsに比べるとグラフの点が荒くなっていますがその分シンプルで見やすいグラフになっています。 また、StarTrack-jsに比べて取得する情報量が少ないので、 30万スター近いfreeCodeCamp もちゃんと表示することが出来ました。
なのでスター数が非常に多いレポジトリの様子を見たい時はこちらを使うと良いです。
あと、地味にこちらはレポジトリに入力がユーザー名/レポジトリ名が一緒で入力が楽です。 というのもStarTrack-jsの方はそれらが別れていてコピペしようとするとちょっと面倒なので。
get-profile-data-of-repo-stargazers
Pythonを使ったツールでスターしたユーザーの情報を取得します。
使うにはToken が必要で、 repo_stargazers.pyスクリプト内の
access_token = <FILL IN>
repo = "minimaxir/big-list-of-naughty-strings"
の部分のaccess_token
に取得したTokenを入れ、repo
を取得したいレポジトリに書き換えます。
出力はcsvファイルで
user_id,username,num_followers,num_following,num_repos,created_at,star_time
170039,chetmancini,24,68,31,2009-12-20 00:13:55,2015-08-10 11:29:04
2742842,MengJueM,10,29,81,2012-11-07 07:17:01,2015-08-10 20:44:51
154014,bummytime,25,36,5,2009-11-16 14:14:54,2015-08-10 14:12:59
...
といった具合に各ユーザーのスターを付けた時間やそのユーザーが持つレポジトリやフォロワーの数などを取得します。
READMEにはこれらを使ったグラフが載っていますがそれを作るのは各自で、ということなのでぱっと使うにはちょっと手間がかかります。
github_stargazers_map
GitHubでリポジトリにStarつけた人を雑に地図で表示した - くりにっき
こちらはRuby製でスターを付けたユーザーのLocation情報を取得してGoogleマップに表示する、というもの。
数年前にネタで作っった、というものらしいですが、使ってみたら結構面白かったです。 ただ、当時とGoogle MapのAPIの制限が変わったようでGoogle Maps API KEYを取得しないといけなくなっています。 Google Map APIは場所の名前から緯度経度を取得するのに使っているので それが取得できる他のものがあればそれを使っても良いのですが。
また、Locationに関して 自由に書けるのでホントの所在地、というわけでは必ずしもないですし、 場合によっては名前から場所が見つからないものもあったりしますが そういった場合はスキップするように変更しました。
取り敢えずその辺の処置をしたものがこちら。
こちらのFork版を使ってGitHubのアクセストークンとGoogle Maps API KEYを設定すれば 今でも使える様になります。
スクリプトを走らせると出てくるのはkmlファイルです。
マイマップ から新しい地図を作成し、左上の欄の中にあるインポートを押して作ったkmlファイルをインポートすれば Googleのマイマップにスターを付けてくれた人のマップが出来ます。
homebrew-fileとvim_ahk のマップを作ってみたのがこちら。 (2つのレポジトリのものが一緒になってるので各レポジトリを見たい場合には左上のボタンを押して出てくるものから不要なレポジトリのチェックを外してください。)