もっとも使われているgem 1-20位の日本在住コントリビューターを集計してみた

[Libraries.io Open Data](https://libraries.io/data)から **もっとも利用されているgem** の上位20位を取得し、その中で日本在住のコントリビューターが何人いるか調べてみた。



もっとも利用されているgemの上位20位までは下記の通り。

```
+------------------+--------------------------+------------------------+-------------------------------+----------------------------------------+-----------------------------------------------+
| left(`Name`, 50) | Dependent Projects Count | Repository Stars Count | Repository Contributors Count | left(`Repository Name with Owner`, 50) | left(`Repository URL`, 50)                    |
+------------------+--------------------------+------------------------+-------------------------------+----------------------------------------+-----------------------------------------------+
| rake             | 74892                    | 1627                   | 164                           | ruby/rake                              | https://github.com/ruby/rake                  |
| bundler          | 67413                    | 4762                   | 628                           | bundler/bundler                        | https://github.com/bundler/bundler            |
| rspec            | 55095                    | 2559                   | 21                            | rspec/rspec                            | https://github.com/rspec/rspec                |
| pry              | 12848                    | 5426                   | 157                           | pry/pry                                | https://github.com/pry/pry                    |
| rails            | 12290                    | 44743                  | 2647                          | rails/rails                            | https://github.com/rails/rails                |
| activesupport    | 11998                    | 44743                  | 2647                          | rails/rails                            | https://github.com/rails/rails                |
| minitest         | 11740                    | 2703                   | 2                             | seattlerb/minitest                     | https://github.com/seattlerb/minitest         |
| simplecov        | 10864                    | 3883                   | 162                           | colszowka/simplecov                    | https://github.com/colszowka/simplecov        |
| sqlite3          | 8694                     | 526                    | 55                            | sparklemotion/sqlite3-ruby             | https://github.com/sparklemotion/sqlite3-ruby |
| rubocop          | 8480                     | 10493                  | 601                           | rubocop-hq/rubocop                     | https://github.com/rubocop-hq/rubocop         |
| json             | 7829                     | 548                    | 65                            | flori/json                             | https://github.com/flori/json                 |
| nokogiri         | 7452                     | 5328                   | 168                           | sparklemotion/nokogiri                 | https://github.com/sparklemotion/nokogiri     |
| webmock          | 7166                     | 3238                   | 196                           | bblimke/webmock                        | https://github.com/bblimke/webmock            |
| yard             | 6601                     | 1542                   | 117                           | lsegal/yard                            | https://github.com/lsegal/yard                |
| jeweler          | 6501                     | 1482                   | 73                            | technicalpickles/jeweler               | https://github.com/technicalpickles/jeweler   |
| thor             | 5845                     | 4434                   | 173                           | erikhuda/thor                          | https://github.com/erikhuda/thor              |
| activerecord     | 5503                     | 44743                  | 2647                          | rails/rails                            | https://github.com/rails/rails                |
| rdoc             | 4971                     | 568                    | 78                            | ruby/rdoc                              | https://github.com/ruby/rdoc                  |
| rspec-rails      | 4499                     | 4152                   | 284                           | rspec/rspec-rails                      | https://github.com/rspec/rspec-rails          |
| guard-rspec      | 4428                     | 1171                   | 91                            | guard/guard-rspec                      | https://github.com/guard/guard-rspec          |
+------------------+--------------------------+------------------------+-------------------------------+----------------------------------------+-----------------------------------------------+
```

## 注意点

GitHub APIの仕様上、コントリビューターの人数がとても多いリポジトリについては全員分は取得できないようです。ただし、コントリビューター数の降順でソートされているため、上位の貢献者は正しく集計できています。

## rake

rubygemsに含まれており、正確なコントリビューター数が分からないためスキップ。

## bundler

rubygemsに含まれており、正確なコントリビューター数が分からないためスキップ。

## rspec (rspec/rspec-core)

※rspecはさらに分割されているため、代表してrspec-coreを集計しました。

rspec-coreのコントリビューター 274人のうち、日本在住の方は16名でした。そのうち上位5名は下記の通りです。

**yujinakayama (Yuji Nakayama)** 55 contributions
<img src="https://avatars0.githubusercontent.com/u/83656?v=4" width="50">
**moro (MOROHASHI Kyosuke)** 5 contributions
<img src="https://avatars1.githubusercontent.com/u/3419?v=4" width="50">
**JuanitoFatas (Juanito Fatas)** 2 contributions
<img src="https://avatars1.githubusercontent.com/u/1000669?v=4" width="50">
**walf443 (Keiji, Yoshimi)** 2 contributions
<img src="https://avatars1.githubusercontent.com/u/2655?v=4" width="50">
**yui-knk (Yuichiro Kaneko)** 2 contributions
<img src="https://avatars0.githubusercontent.com/u/5356517?v=4" width="50">

## pry (pry/pry)

pryのコントリビューター 158人のうち、日本在住の方は8名でした。そのうち上位5名は下記の通りです。

**yui-knk (Yuichiro Kaneko)** 62 contributions
<img src="https://avatars0.githubusercontent.com/u/5356517?v=4" width="50">
**amatsuda (Akira Matsuda)** 3 contributions
<img src="https://avatars0.githubusercontent.com/u/11493?v=4" width="50">
**tricknotes (Ryunosuke Sato)** 2 contributions
<img src="https://avatars2.githubusercontent.com/u/290782?v=4" width="50">
**mtsmfm (Fumiaki MATSUSHIMA)** 1 contributions
<img src="https://avatars0.githubusercontent.com/u/1796864?v=4" width="50">
**eagletmt (Kohei Suzuki)** 1 contributions
<img src="https://avatars2.githubusercontent.com/u/69755?v=4" width="50">


## rails

多すぎて時間がかかるためスキップ。

## activesupport

多すぎて時間がかかるためスキップ。

## minitest (seattlerb/minitest)

メインコミッタがコードを書き直してコミットしており、正確なコントリビューター数が分からないためスキップ。

## simplecov (colszowka/simplecov)

simplecovのコントリビューター 167人のうち、日本在住の方は18名でした。そのうち上位5名は下記の通りです。

**amatsuda (Akira Matsuda)** 46 contributions
<img src="https://avatars0.githubusercontent.com/u/11493?v=4" width="50">
**yui-knk (Yuichiro Kaneko)** 4 contributions
<img src="https://avatars0.githubusercontent.com/u/5356517?v=4" width="50">
**ryu39 (ryu39)** 3 contributions
<img src="https://avatars3.githubusercontent.com/u/3458295?v=4" width="50">
**hanazuki (Kasumi Hanazuki)** 2 contributions
<img src="https://avatars2.githubusercontent.com/u/1135690?v=4" width="50">
**yujinakayama (Yuji Nakayama)** 2 contributions
<img src="https://avatars0.githubusercontent.com/u/83656?v=4" width="50">

## sqlite3 (sparklemotion/sqlite3-ruby)

sqlite3のコントリビューター 54人のうち、日本在住の方は4名でした。

**gazayas (Gabriel Zayas)** 14 contributions
<img src="https://avatars1.githubusercontent.com/u/10546292?v=4" width="50">
**nobu (Nobuyoshi Nakada)** 4 contributions
<img src="https://avatars0.githubusercontent.com/u/16700?v=4" width="50">
**yahonda (Yasuo Honda)** 2 contributions
<img src="https://avatars3.githubusercontent.com/u/73684?v=4" width="50">
**kamipo (Ryuta Kamizono)** 1 contributions
<img src="https://avatars0.githubusercontent.com/u/12642?v=4" width="50">

## rubocop (rubocop-hq/rubocop)

rubocopのコントリビューター 416人のうち、日本在住の方は30名でした。そのうち上位5名は下記の通りです。

**koic (Koichi ITO)** 693 contributions
<img src="https://avatars3.githubusercontent.com/u/13203?v=4" width="50">
**yujinakayama (Yuji Nakayama)** 363 contributions
<img src="https://avatars0.githubusercontent.com/u/83656?v=4" width="50">
**pocke (Masataka Pocke Kuwabara)** 271 contributions
<img src="https://avatars0.githubusercontent.com/u/4361134?v=4" width="50">
**hoshinotsuyoshi (hoshino tsuyoshi)** 39 contributions
<img src="https://avatars2.githubusercontent.com/u/1394049?v=4" width="50">
**wata727 (Kazuma Watanabe)** 28 contributions
<img src="https://avatars3.githubusercontent.com/u/9624059?v=4" width="50">

## json

rubygemsに含まれており、正確なコントリビューター数が分からないためスキップ。

## nokogiri (sparklemotion/nokogiri)

nokogiriのコントリビューター 167人のうち、日本在住の方は16名でした。そのうち上位5名は下記の通りです。

**knu (Akinori MUSHA)** 253 contributions
<img src="https://avatars2.githubusercontent.com/u/10236?v=4" width="50">
**nobu (Nobuyoshi Nakada)** 25 contributions
<img src="https://avatars0.githubusercontent.com/u/16700?v=4" width="50">
**kou (Sutou Kouhei)** 4 contributions
<img src="https://avatars3.githubusercontent.com/u/27350?v=4" width="50">
**iwadon (IWATSUKI Hiroyuki)** 3 contributions
<img src="https://avatars0.githubusercontent.com/u/20000?v=4" width="50">
**eitoball (Eito Katagiri)** 2 contributions
<img src="https://avatars0.githubusercontent.com/u/34205?v=4" width="50">

## webmock (bblimke/webmock)

webmockのコントリビューター 189人のうち、日本在住の方は9名でした。そのうち上位5名は下記の通りです。

**koic (Koichi ITO)** 7 contributions
<img src="https://avatars3.githubusercontent.com/u/13203?v=4" width="50">
**hsbt (Hiroshi SHIBATA)** 4 contributions
<img src="https://avatars1.githubusercontent.com/u/12301?v=4" width="50">
**uiur (Kazato Sugimoto)** 3 contributions
<img src="https://avatars2.githubusercontent.com/u/116057?v=4" width="50">
**taiki45 (Taiki Ono)** 3 contributions
<img src="https://avatars1.githubusercontent.com/u/1460043?v=4" width="50">
**rochefort (rochefort)** 3 contributions
<img src="https://avatars3.githubusercontent.com/u/121045?v=4" width="50">

## yard (lsegal/yard)

yardのコントリビューター 112人のうち、日本在住の方は13名でした。そのうち上位5名は下記の通りです。

**kou (Sutou Kouhei)** 40 contributions
<img src="https://avatars3.githubusercontent.com/u/27350?v=4" width="50">
**amatsuda (Akira Matsuda)** 12 contributions
<img src="https://avatars0.githubusercontent.com/u/11493?v=4" width="50">
**koic (Koichi ITO)** 2 contributions
<img src="https://avatars3.githubusercontent.com/u/13203?v=4" width="50">
**tomoasleep (Tomoya Chiba)** 2 contributions
<img src="https://avatars3.githubusercontent.com/u/1477130?v=4" width="50">
**toshimaru (Toshimaru)** 2 contributions
<img src="https://avatars0.githubusercontent.com/u/803398?v=4" width="50">

## jeweler (technicalpickles/jeweler)

jewelerのコントリビューター 67人のうち、日本在住の方は2名でした。

**muratayusuke (Yusuke Murata)** 35 contributions
<img src="https://avatars1.githubusercontent.com/u/614378?v=4" width="50">
**amatsuda (Akira Matsuda)** 1 contributions
<img src="https://avatars0.githubusercontent.com/u/11493?v=4" width="50">

## thor (erikhuda/thor)

thorのコントリビューター 165人のうち、日本在住の方は14名でした。そのうち上位5名は下記の通りです。

**takkanm (Mitsutaka Mimura)** 4 contributions
<img src="https://avatars2.githubusercontent.com/u/43500?v=4" width="50">
**akm (Takeshi Akima)** 4 contributions
<img src="https://avatars2.githubusercontent.com/u/18912?v=4" width="50">
**koic (Koichi ITO)** 2 contributions
<img src="https://avatars3.githubusercontent.com/u/13203?v=4" width="50">
**hsbt (Hiroshi SHIBATA)** 2 contributions
<img src="https://avatars1.githubusercontent.com/u/12301?v=4" width="50">
**amatsuda (Akira Matsuda)** 1 contributions
<img src="https://avatars0.githubusercontent.com/u/11493?v=4" width="50">

## activerecord

多すぎて時間がかかるためスキップ。

## rdoc

rubygemsに含まれており、正確なコントリビューター数が分からないためスキップ。

## rspec-rails (rspec/rspec-rails)

rspec-railsのコントリビューター 290人のうち、日本在住の方は20名でした。そのうち上位5名は下記の通りです。

**yujinakayama (Yuji Nakayama)** 25 contributions
<img src="https://avatars0.githubusercontent.com/u/83656?v=4" width="50">
**takashi (Takashi Nakagawa)** 4 contributions
<img src="https://avatars1.githubusercontent.com/u/1506738?v=4" width="50">
**okuramasafumi (OKURA Masafumi)** 3 contributions
<img src="https://avatars0.githubusercontent.com/u/1012014?v=4" width="50">
**hasimo (Tohru Hashimoto )** 2 contributions
<img src="https://avatars2.githubusercontent.com/u/26832?v=4" width="50">
**ta1kt0me ()** 2 contributions
<img src="https://avatars1.githubusercontent.com/u/1412864?v=4" width="50">

## guard-rspec (guard/guard-rspec)

guard-rspecのコントリビューター 83人のうち、日本在住の方は7名でした。そのうち上位5名は下記の通りです。

**yujinakayama (Yuji Nakayama)** 3 contributions
<img src="https://avatars0.githubusercontent.com/u/83656?v=4" width="50">
**chocoby (Kenta Okamoto)** 2 contributions
<img src="https://avatars1.githubusercontent.com/u/85665?v=4" width="50">
**pocke (Masataka Pocke Kuwabara)** 1 contributions
<img src="https://avatars0.githubusercontent.com/u/4361134?v=4" width="50">
**odaillyjp (Suguru Odai)** 1 contributions
<img src="https://avatars1.githubusercontent.com/u/1294999?v=4" width="50">
**y310 (Yusuke Mito)** 1 contributions
<img src="https://avatars1.githubusercontent.com/u/188655?v=4" width="50">

## 付録

もっとも使われているgemの集計に使ったSQL

```
select left(`Name`, 50), `Dependent Projects Count`, `Repository Stars Count`, `Repository Contributors Count`, left(`Repository Name with Owner`, 50), left(`Repository URL`, 50)
from projects
order by cast(`Dependent Projects Count` as unsigned) desc
limit 20;
```

集計に使ったRubyコード

```
require 'octokit'

regexp = /日本|japan|北海道|hokkaido|青森|aomori|岩手|iwate|宮城|miyagi|秋田|akita|山形|yamagata|福島|fukushima|茨城|ibaraki|栃木|tochigi|群馬|gunma|埼玉|saitama|千葉|chiba|東京|tokyo|神奈川|kanagawa|新潟|niigata|富山|toyama|石川|ishikawa|福井|fukui|山梨|yamanashi|長野|nagano|岐阜|gifu|静岡|shizuoka|愛知|aichi|三重|mie|滋賀|shiga|京都|kyoto|大阪|osaka|兵庫|hyogo|奈良|nara|和歌山|wakayama|鳥取|tottori|島根|shimane|岡山|okayama|広島|hiroshima|山口|yamaguchi|徳島|tokushima|香川|kagawa|愛媛|ehime|高知|kochi|福岡|fukuoka|佐賀|saga|長崎|nagasaki|熊本|kumamoto|大分|oita|宮崎|miyazaki|鹿児島|kagoshima|沖縄|okinawa/
client = Octokit::Client.new(access_token: 'TOKEN')

repo = 'pry/pry'
members = client.contributors(repo); members.size
users = members.map { |member| client.user member.login }; users.size
japanese = users.select do |user|
  user.location.to_s.downcase.match? regexp
end; japanese.size

japanese.take(5).map do |user|
  member = members.find { |member| member.login == user.login }
  <<~MD
    **#{user.login} (#{user.name})** #{member.contributions} contributions
    <img src="#{user.avatar_url}" width="50">
  MD
end.each { |str| puts str };
```