Stack Overflow のタグから、どのフレームワークについてよく質問されているのかプログラミング言語ごとに分析してみた

（この記事は [地平線に行く](https://yujisoftware.hatenablog.com/entry/2019/09/14/233900) とのマルチポストです）

Stack Overflow の質問には、その内容を示すタグが付与されています。

このタグ、よく見ると「言語」+ 「フレームワークやライブラリの名称」という構成が多いです。
つまり、これを分析すれば、**言語ごとに質問の多い（つまり、よく使われている、人気がある）フレームワークやライブラリが何か**分かるのではないでしょうか。

そこで今回は、[kaggle で公開されていた Stack Overflow Data](https://www.kaggle.com/stackoverflow/stackoverflow) [^data][^license]をもとに、質問に付与されたタグの出現回数を言語ごと×1年ごとに集計し、ランキングを算出しました。

より詳細なデータは [こちら](https://www.kaggle.com/yujisoftware/tag-trends-by-language-for-stack-overflow/notebook?scriptVersionId=20582598)。

[^data]: 本稿執筆時では最終更新日時が 2019-03-21 (バージョン3)でした。
[^license]: Stack Overflow の全データは、CC BY-SA 3.0 で公開されています。

# 解析結果

それぞれの言語ごとに、簡単な概要と解析結果（年度ごとのタグ出現回数ランキング）をまとめました。

## Java

* Spring Boot が登場[^spring-boot]と同時に急上昇
* ORM マッパは依然 Hibernate が上位
* Swing の順位が低下すると入れ替えに、Java FX が上昇

[^spring-boot]: 2014年4月1日にバージョン 1.0 が GA

|タグ|2018|2017|2016|2015|2014|2013|2012|2011|2010|2009|
|:--|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
|[android](https://stackoverflow.com/questions/tagged/java+android)|1|1|1|1|1|1|1|1|1|20|
|[spring](https://stackoverflow.com/questions/tagged/java+spring)|2|2|2|2|3|4|4|4|4|4|
|[spring-boot](https://stackoverflow.com/questions/tagged/java+spring-boot)|3|3|13|33|145|1567|10490|8932|6891|4822|
|[hibernate](https://stackoverflow.com/questions/tagged/java+hibernate)|4|4|4|6|6|6|5|5|3|2|
|[maven](https://stackoverflow.com/questions/tagged/java+maven)|5|5|7|7|7|12|15|22|87|498|
|[arrays](https://stackoverflow.com/questions/tagged/java+arrays)|6|6|5|5|5|5|11|12|24|26|
|[json](https://stackoverflow.com/questions/tagged/java+json)|7|8|8|8|12|11|18|28|59|174|
|[javafx](https://stackoverflow.com/questions/tagged/java+javafx)|8|13|14|19|29|72|160|595|422|295|
|[eclipse](https://stackoverflow.com/questions/tagged/java+eclipse)|9|9|6|4|4|3|3|3|5|3|
|[swing](https://stackoverflow.com/questions/tagged/java+swing)|10|7|3|3|2|2|2|2|2|1|


## Go

* 基本的な言語仕様に関するタグが多い
* Docker や MongoDB といったモダンな技術の組合わせが多い
* ORM マッパーは [GORM](https://github.com/jinzhu/gorm) が人気

|タグ|2018|2017|2016|2015|2014|2013|2012|2011|2010|2009|
|:--|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
|[json](https://stackoverflow.com/questions/tagged/go+json)|1|1|1|1|1|2|7|20|19|16|
|[struct](https://stackoverflow.com/questions/tagged/go+struct)|2|2|3|3|3|9|4|45|9|92|
|[http](https://stackoverflow.com/questions/tagged/go+http)|3|3|2|4|4|3|7|2|44|92|
|[goroutine](https://stackoverflow.com/questions/tagged/go+goroutine)|4|4|6|6|5|4|14|3|2|1|
|[docker](https://stackoverflow.com/questions/tagged/go+docker)|5|6|16|33|48|173|567|283|130|92|
|[mongodb](https://stackoverflow.com/questions/tagged/go+mongodb)|6|7|5|7|8|23|23|82|130|92|
|[slice](https://stackoverflow.com/questions/tagged/go+slice)|7|5|7|5|19|7|18|10|19|92|
|[concurrency](https://stackoverflow.com/questions/tagged/go+concurrency)|8|9|10|10|7|5|2|5|44|7|
|[arrays](https://stackoverflow.com/questions/tagged/go+arrays)|9|9|8|7|16|17|23|13|2|92|
|[go-gorm](https://stackoverflow.com/questions/tagged/go+go-gorm)|10|19|27|47|163|858|567|283|130|92|

## Python

* 2016 年に Python3.x が Python-2.7 を上回った
  * Python 3.0 が2008年登場ということを考えるとかなり遅い
* 機械学習や計算ライブラリの質問が多言語に比べ多い
* Django (Webアプリケーションライブラリ) が一貫して上位にいる

|タグ|2018|2017|2016|2015|2014|2013|2012|2011|2010|2009|
|:--|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
|[python-3.x](https://stackoverflow.com/questions/tagged/python+python-3.x)|1|1|3|4|5|4|6|7|18|21|
|[pandas](https://stackoverflow.com/questions/tagged/python+pandas)|2|2|2|3|4|6|20|1055|4807|3368|
|[django](https://stackoverflow.com/questions/tagged/python+django)|3|3|1|1|1|1|1|1|1|1|
|[numpy](https://stackoverflow.com/questions/tagged/python+numpy)|4|5|5|5|3|3|2|4|6|16|
|[tensorflow](https://stackoverflow.com/questions/tagged/python+tensorflow)|5|9|18|251|9023|5310|7081|6103|4807|3368|
|[dataframe](https://stackoverflow.com/questions/tagged/python+dataframe)|6|6|9|23|55|93|251|2258|2827|3368|
|[python-2.7](https://stackoverflow.com/questions/tagged/python+python-2.7)|7|4|4|2|2|2|4|78|314|850|
|[matplotlib](https://stackoverflow.com/questions/tagged/python+matplotlib)|8|7|7|7|7|8|8|8|21|54|
|[list](https://stackoverflow.com/questions/tagged/python+list)|9|8|6|6|6|5|3|3|4|3|
|[flask](https://stackoverflow.com/questions/tagged/python+flask)|10|14|11|10|11|13|12|74|259|3368|

## PHP

* Laravel タグが急上昇
* 全体的に Web 関連のタグがとても多い
* Codeigniter が10年間安定した順位を保っている

|タグ|2018|2017|2016|2015|2014|2013|2012|2011|2010|2009|
|:--|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
|[laravel](https://stackoverflow.com/questions/tagged/python+laravel)|1|2|4|6|9|19|195|3248|5129|3341|
|[mysql](https://stackoverflow.com/questions/tagged/python+mysql)|2|1|1|1|1|1|1|1|1|1|
|[javascript](https://stackoverflow.com/questions/tagged/python+javascript)|3|3|2|2|2|2|2|2|2|2|
|[wordpress](https://stackoverflow.com/questions/tagged/python+wordpress)|4|6|6|5|7|8|9|11|10|19|
|[html](https://stackoverflow.com/questions/tagged/python+html)|5|4|3|3|3|3|4|4|3|3|
|[jquery](https://stackoverflow.com/questions/tagged/python+jquery)|6|5|5|4|4|4|3|3|4|6|
|[ajax](https://stackoverflow.com/questions/tagged/python+ajax)|7|8|8|8|8|6|6|6|8|8|
|[arrays](https://stackoverflow.com/questions/tagged/python+arrays)|8|7|7|7|6|5|5|5|5|7|
|[codeigniter](https://stackoverflow.com/questions/tagged/python+codeigniter)|9|9|9|9|10|9|7|7|9|16|
|[sql](https://stackoverflow.com/questions/tagged/python+sql)|10|13|12|12|5|7|8|9|11|9|

## Ruby

* Ruby on rails が各バージョンごとにランクイン[^rails]
* テストフレームワーク (RSpec) やパッケージ管理 (RubyGems) が入っているのが特徴的
* 他言語と異なり、MySQL より PostgreSQL の方が上位

[^rails]: バージョンアップしないの…？

|タグ|2018|2017|2016|2015|2014|2013|2012|2011|2010|2009|
|:--|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
|[ruby-on-rails](https://stackoverflow.com/questions/tagged/ruby+ruby-on-rails)|1|1|1|1|1|1|1|1|1|1|
|[ruby-on-rails-5](https://stackoverflow.com/questions/tagged/ruby+ruby-on-rails-5)|2|3|13|635|3910|3822|3612|3206|2469|1702|
|[rubygems](https://stackoverflow.com/questions/tagged/ruby+rubygems)|3|6|5|15|16|11|8|3|2|3|
|[ruby-on-rails-4](https://stackoverflow.com/questions/tagged/ruby+ruby-on-rails-4)|4|2|2|2|2|3|1218|1307|1284|908|
|[activerecord](https://stackoverflow.com/questions/tagged/ruby+activerecord)|5|5|4|5|6|5|3|4|3|2|
|[rspec](https://stackoverflow.com/questions/tagged/ruby+rspec)|6|7|3|6|4|4|5|7|9|15|
|[arrays](https://stackoverflow.com/questions/tagged/ruby+arrays)|7|4|6|4|5|7|10|9|7|5|
|[javascript](https://stackoverflow.com/questions/tagged/ruby+javascript)|8|9|8|8|9|16|16|14|15|25|
|[postgresql](https://stackoverflow.com/questions/tagged/ruby+postgresql)|9|11|12|13|15|24|34|63|88|132|
|[ruby-on-rails-3](https://stackoverflow.com/questions/tagged/ruby+ruby-on-rails-3)|10|8|7|3|3|2|2|2|4|588|

## JavaScript

* ライブラリは jQuery, React.js, Angurlar の順にランクイン
* Node.js は毎年順位が上がってきている
* Ajax が下がってきている（当たり前に使えるようになった？）

|タグ|2018|2017|2016|2015|2014|2013|2012|2011|2010|2009|
|:--|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
|[jquery](https://stackoverflow.com/questions/tagged/javascript+jquery)|1|1|1|1|1|1|1|1|1|1|
|[html](https://stackoverflow.com/questions/tagged/javascript+html)|2|2|2|2|2|2|2|2|2|2|
|[reactjs](https://stackoverflow.com/questions/tagged/javascript+reactjs)|3|6|9|15|111|942|7551|6176|4367|2899|
|[node.js](https://stackoverflow.com/questions/tagged/javascript+node.js)|4|4|5|6|7|9|9|15|48|491|
|[css](https://stackoverflow.com/questions/tagged/javascript+css)|5|3|4|4|3|3|4|4|5|5|
|[angular](https://stackoverflow.com/questions/tagged/javascript+angular)|6|11|13|239|6645|8935|7551|6176|4367|2899|
|[php](https://stackoverflow.com/questions/tagged/javascript+php)|7|7|6|5|5|4|3|3|3|6|
|[arrays](https://stackoverflow.com/questions/tagged/javascript+arrays)|8|9|10|10|10|12|17|17|19|21|
|[ajax](https://stackoverflow.com/questions/tagged/javascript+ajax)|9|8|7|7|6|5|5|5|4|3|
|[typescript](https://stackoverflow.com/questions/tagged/javascript+typescript)|10|12|17|71|134|158|256|6176|4367|2899|

## SQL

* SQL Server が予想外の1位
  * T-SQL [^tsql]も7位につけているところを見ると、意外と使われているっぽい
* Oracle も安定して上位
* 言語仕様に関するものでは Join がランクイン

[^tsql]: SQL Server で使用する、SQLを手続型に拡張した言語

|タグ|2018|2017|2016|2015|2014|2013|2012|2011|2010|2009|
|:--|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
|[sql-server](https://stackoverflow.com/questions/tagged/sql+sql-server)|1|1|1|1|2|2|2|2|1|1|
|[mysql](https://stackoverflow.com/questions/tagged/sql+mysql)|2|2|2|2|1|1|1|1|2|2|
|[oracle](https://stackoverflow.com/questions/tagged/sql+oracle)|3|3|3|3|4|4|5|7|6|5|
|[postgresql](https://stackoverflow.com/questions/tagged/sql+postgresql)|4|4|6|6|8|9|9|11|10|17|
|[php](https://stackoverflow.com/questions/tagged/sql+php)|5|5|4|4|3|3|4|4|9|8|
|[database](https://stackoverflow.com/questions/tagged/sql+database)|6|6|5|5|6|6|6|6|5|6|
|[tsql](https://stackoverflow.com/questions/tagged/sql+tsql)|7|7|7|8|9|8|7|5|3|3|
|[c#](https://stackoverflow.com/questions/tagged/sql+c#)|8|8|8|7|5|7|8|8|7|7|
|[java](https://stackoverflow.com/questions/tagged/sql+java)|9|11|10|10|10|10|11|13|17|20|
|[join](https://stackoverflow.com/questions/tagged/sql+join)|10|10|11|11|11|11|10|12|12|13|

# おわりに

当然の結果にだったものもあれば意外な結果だったものも多数あるのではないでしょうか。
元データの方では、上位30位まで見れますので興味があれば合わせてご覧ください。
[Tag trends by language for Stack Overflow | Kaggle](https://www.kaggle.com/yujisoftware/tag-trends-by-language-for-stack-overflow/notebook?scriptVersionId=20582598)