読者です 読者をやめる 読者になる 読者になる

オルトプラスエンジニアの日常をお伝えします!

GitHub Archiveで言語別データを抽出する

この記事は、Altplus Advent Calendar 2016 の記事です。
http://qiita.com/advent-calendar/2016/altplus

こんにちは、id:iandoです。初投稿です。

先日Github上の言語別データとして、ObjectiveC と Swift の比較を行ったときのことをこちらに記載します。

利用させていただいたサイトは GitHub Archive で、GitHubの公開リポジトリの情報をクロールして、データを記録し、解析用に提供しているプロジェクトになります。
ソースも公開されているようです。
https://github.com/igrigorik/githubarchive.org

GitHub Archive のデータは、BigQuery の public data としても公開されているので、そちらを利用させていただきました。 https://bigquery.cloud.google.com/table/githubarchive:day

言語別にリポジトリ数を抽出するために、language で group by します。

select language,count(*) from (
SELECT json_extract(payload,'$.forkee.language') as language
FROM (TABLE_DATE_RANGE([githubarchive:day.],
    TIMESTAMP('2016-01-01'),
    TIMESTAMP('2016-10-01')
  ))
) group by language;

抽出結果として、降順に表示すると以下のようになります(途中まで表示)。

language f0_
227808302
null 6615042
"JavaScript" 86492
"Java" 53886
"Python" 40443
"Ruby" 28494
"HTML" 23450
"PHP" 20727
"CSS" 14117
"Objective-C" 13465
"Shell" 13099
"C++" 12520
"C" 10746
"C#" 9687
"Go" 9492
"Swift" 7771

空文字列とnullが一番多くてあまり正確ではない点もありますが、相対的なある程度の比較にはなるかもしれないので、このやり方で時系列ごとにまとめてみると以下のようになりました。

f:id:iando:20161130194202p:plain

GitHub 上で公開されているデータを使って、利用率の高いプログラミン言語等の定期的なシェアや、他色々な分類で状況がわかるようなサービスが公開されていますが、GitHub Archive では BigQuery さえ使えれば簡単に自分の好みのカスタマイズ方法でデータが得られることがあるので、何か調査したいことがあればお勧めできます。