😀
Qiitaの言語別記事数・フォロワー数ランキングをシェル芸で作る
今回はGithubのシンタックスハイライト対応言語一覧[1]を使って,
- Qiitaでの言語別記事数とタグフォロワー数CSVを作成(2020年03月14日時点)
- ソートしランキングにする
ことを考える.
結果
- 列名:
ランク,言語,記事数,フォロワー数
- 全体の結果は[ここ]
- 以下に示すのは結果を
head
したもの
[ここ]: https://gist.github.com/eggplants/8b78a265e71337df58a8461a16e9a3f5
- 以下に示すのは結果を
[2]
記事数Top10articleRank10.csv
ランク,言語,記事数,フォロワー数
001,Python,38538,71962
002,JavaScript,32653,72158
003,Ruby,26104,40486
004,PHP,19102,44786
005,Java,14326,47284
006,CSS,7329,46345
007,Cpp,7123,30398
008,HTML,6518,55321
009,Objective-C,4030,19990
010,Scala,3094,12501
[3]
読者数Top10followRank10.csv
ランク,言語,記事数,フォロワー数
001,JavaScript,32653,72158
002,Python,38538,71962
003,HTML,6518,55321
004,Java,14326,47284
005,CSS,7329,46345
006,PHP,19102,44786
007,Ruby,26104,40486
008,Cpp,7123,30398
009,C#,3042,26228
010,Objective-C,4030,19990
手段
2パートです.
CSV作成パート
qiitaLangCSV
$ curl -s "https://raw.githubusercontent.com/github/linguist/master/lib/linguist/languages.yml" |
egrep -o '^[^\ \#][^:]+' | sed '1d;y/+/p/'| while read i
do echo "$i,$(
curl -s "https://qiita.com/tags/${i,,}" |
tr -d \\n | grep -oPm1 '(?<=<span class="tsi-Stats_count">)\d+'
)" | tr \\n ,;echo
done | sed 's/\([0-9]\),$/\1/g' > result
ランキング作成パート
- もし数値が同じであればもうひとつの数値で比較する
makeRank
$ head=ランク,言語,記事数,フォロワー数
$ (echo $head;sort -t, -rnk2 -rnk3 result | nl -nrz -s, -w3 | head) > articleRank10.csv
$ (echo $head;sort -t, -rnk3 -rnk2 result | nl -nrz -s, -w3 | head) > followRank10.csv
ちなみに
- タグがない言語は全545言語中40%の218言語
Terminal
$ cat result | tee >(wc -l) >(grep -c ",,") 1>/dev/null | nl -nln
1 218
2 545
$ cat result | tee >(wc -l) >(grep -c ",,") 1>/dev/null |
tr \\n / | sed 's/^/scale=1;/;s/.$/*100\n/' | bc
40.0
- タグはあるが記事もフォロワーもいない言語は15言語
Terminal
$ grep ",0,0" result
CSON,0,0
CWeb,0,0
Cool,0,0
Eiffel,0,0
Fancy,0,0
Harbour,0,0
Jison,0,0
Jolie,0,0
Nit,0,0
Nu,0,0
Raku,0,0
STON,0,0
Tea,0,0
UrWeb,0,0
XC,0,0
$ grep -c ",0,0" result
15
- タグはあり記事もあるがフォロワーがいない言語は64言語
Terminal
$ grep -P '(?<!,0),0$' result | head
ABNF,1,0
APL,27,0
ASN.1,5,0
ApacheConf,1,0
Batchfile,2,0
Befunge,1,0
CLIPS,2,0
COLLADA,5,0
Chapel,2,0
Cycript,2,0
$ grep -cP '(?<!,0),0$' result
64
- タグはあり記事はないがフォロワーがいる言語は0言語
Terminal
$ grep -P ',0,[^0]+$' result
$ grep -cP ',0,[^0]+$' result
0
- タグがあり記事もフォロワーもいる言語は248言語
Terminal
$ grep -vP ',0?(,|$)' result | head
4D,5,3
ABAP,46,34
ANTLR,12,7
ASP,43,14
ATS,35,2
ActionScript,249,247
Ada,27,10
Agda,29,18
Alloy,59,26
AngelScript,5,1
$ grep -vPc ',0?(,|$)' result
248
Discussion