2014年 Webアプリケーションフレームワークトレンド（PHP / Java / Ruby / Python / Perl）

## はじめに

一昨日、FIFA15 でサイドバックが前線に放ったフィードが直接入って80m強の超ロングシュートとなって困惑しました。

さて、話は変わりますが、2014年12月時点の [TIOBE Programming Community Index](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html) によると、昨年と比較して最もランクアップしているプログラミング言語は、**Visual Basic** なんですね。

そんなプログラミング言語上位20位ですが、Webアプリケーションを構築するにあたって、どの言語を採用するかというのと同じく悩ましいのがどのフレームワークを採用するかということ。
フレームワークの選定基準はアプリケーションの要件はもちろんのこと、環境や開発者、その他にも様々な条件や制約を踏まえつつ、フレームワークの特性も踏まえて適切な選択をする必要があるものです。

そして、今年も各言語において様々なフレームワークにおいて動きがありました。人気の変動も同様です。
そこで、2014年の現時点でどういうフレームワークがあって、どういう動きなのかを少し整理してみたいと思います。

ここでは、Webアプリケーションのサーバーサイドにおいて特によく使われることの多い、

1. PHP
2. Java
3. Ruby
4. Python
5. Perl

これら5言語について、2014年時点のWebアプリケーションフレームワークを一覧にまとめてみます。

※ あくまで、どんなんがあるんだっけを整理する目的で深堀りすることが目的ではありません。
※ 上記の5言語の並びは Google 検索結果件数順の並びであり特に意味はありませんのであしからず。
※ Scala や Node や Go などその他の言語についてもまとめたかったですが多くなりすぎるのでこの5言語に絞りました。

## 言語別 Webアプリケーションフレームワーク一覧

**言語別に GitHub のスター数順に並べます。**

* "Google"の項目は「\${言語名} framework \${フレームワーク名}」で検索した結果件数です
* Latest Release は GitHub の /releases を基本的に参照しているため最新でない場合があります
* なお、下記のものは表から外しています
  * GitHub のスター数が100以下のもの
  * WEBアプリケーションフレームワークというよりCMS的な側面が強いもの
  * その他、情報が少なすぎたり現時点での選択肢として考えにくいもの

注）スマホとかだと見難いと思います。。

### PHP

||Name|Latest Release|Google|GitHub Star|StackOverflow|Qiita|
|--:|:--|:--|--:|--:|--:|--:|
|1|[Laravel](http://laravel.com/)|2014/12/11 - v4.2.12|536,000|[13,529](https://github.com/laravel/laravel)|[15,065](http://stackoverflow.com/questions/tagged/laravel)|[192](http://qiita.com/tags/laravel)|
|2|[Symfony](http://symfony.com/)|2014/12/03 - v2.6.1|676,000|[9,376](https://github.com/symfony/symfony)|[25,628](http://stackoverflow.com/questions/tagged/symfony2)|[13](http://qiita.com/tags/symfony)|
|3|[CodeIgniter](http://www.codeigniter.com/)|2014/06/06 - v2.2.0|761,000|[8,762](https://github.com/bcit-ci/CodeIgniter)|[32,924](http://stackoverflow.com/questions/tagged/codeigniter)|[38](http://qiita.com/tags/codeigniter)|
|4|[CakePHP](http://cakephp.org/)|2014/12/09 - v2.5.7|764,000|[5,360](https://github.com/cakephp/cakephp)|[21,521](http://stackoverflow.com/questions/tagged/cakephp)|[299](http://qiita.com/tags/cakephp)|
|5|[Zend Framework](http://framework.zend.com/)|2014/09/17 - v2.3.3|996,000|[4,952](https://github.com/zendframework/zf2)|[182,024](http://stackoverflow.com/questions/tagged/zend-framework)|[40](http://qiita.com/tags/zf2)|
|6|[Phalcon](http://phalconphp.com/ja/)|2014/10/28 - v1.3.4|64,500|[4,664](https://github.com/phalcon/cphalcon)|[708](http://stackoverflow.com/questions/tagged/phalcon)|[70](http://qiita.com/tags/phalcon)|
|7|[Slim](http://www.slimframework.com/)|2014/12/10 - v2.5.0|173,000|[4,289](https://github.com/codeguy/Slim)|[560](http://stackoverflow.com/questions/tagged/slim)|0|
|8|[Yii](http://www.yiiframework.com/)|2014/12/08 - v2.0.1|532,000|[4,182](https://github.com/yiisoft/yii)|[11,992](http://stackoverflow.com/questions/tagged/yii)|[65](http://qiita.com/tags/yii)|
|9|[Silex](http://silex.sensiolabs.org/)|2014/09/26 - v1.2.2|64,300|[2,455](https://github.com/silexphp/Silex)|[588](http://stackoverflow.com/questions/tagged/silex)|[5](http://qiita.com/tags/silex)|
|10|[KohanaPHP](http://kohanaframework.org/)|2014/12/11 - v3.3.3.1|120,000|[1,408](https://github.com/kohana/kohana)|[2,034](http://stackoverflow.com/questions/tagged/kohana)|0|
|11|[FuelPHP](http://www.fuelphp.com/)|2014/07/13 - v1.7.2|1,470,000|[1,356](https://github.com/fuel/fuel)|[381](http://stackoverflow.com/questions/tagged/fuelphp)|[192](http://qiita.com/tags/fuelphp)|
|12|[Yaf](http://yafdev.com/)|2014/10/22 - v2.3.3|57,600|[1,250](https://github.com/laruence/php-yaf)|[36](http://stackoverflow.com/questions/tagged/yaf)|0|
|13|[Nette Framework](http://nette.org/)|2014/11/16 - v2.2.6|64,200|[915](https://github.com/nette/nette)|[15](http://stackoverflow.com/questions/tagged/nette)|0|
|14|[Flight](http://flightphp.com/)|2014/11/06 - v1.2.9|787,000|[905](https://github.com/mikecao/flight)|0|0|
|15|[Limonade](http://limonade-php.github.io/)|2010/11/27 - v0.5.1|18,000|[606](https://github.com/sofadesign/limonade)|0|0|
|16|[PHPixie](http://en.wikipedia.org/wiki/PHPixie)|2013/04/24 - v2.1|4,090|[251](https://github.com/dracony/PHPixie)|[2](http://stackoverflow.com/questions/tagged/phpixie)|0|
|17|[Bullet](http://bulletphp.com/)|2014/10/23 - v1.4.2|181,000|[227](https://github.com/vlucas/bulletphp)|0|0|

```title:上記以外の&nbsp;PHP&nbsp;Webアプリケーションフレームワーク
Lithium / MicroMVC / ColaPHP / Aura / Simple MVC Framework / Rain Framework / Ethna
Agavi / PRADO / DooPHP / PopPHP / pinoco / Deano / OrePHP / ...etc
```

### Java

||Name|Latest Release|Google|GitHub Star|StackOverflow|Qiita|
|--:|:--|:--|--:|--:|--:|--:|
|1|[Play Framework](https://www.playframework.com/)|2014/12/03 - v2.3.7|20,000,000|[5,577](https://github.com/playframework/playframework)|[8,517](http://stackoverflow.com/questions/tagged/playframework)|[94](http://qiita.com/tags/play)|
|2|[Spring Framework](http://spring.io/)|2014/09/04 - v4.1.0|11,400,000|[4,654](https://github.com/spring-projects/spring-framework)|[55,740](http://stackoverflow.com/questions/tagged/spring)|[65](http://qiita.com/tags/spring)|
|3|[Dropwizard](http://dropwizard.io/)|2014/04/04 - v0.7.0|33,200|[2,640](https://github.com/dropwizard/dropwizard)|[366](http://stackoverflow.com/questions/tagged/dropwizard)|[13](http://qiita.com/tags/dropwizard)|
|4|[Ninja Framework](http://www.ninjaframework.org/)|2014/12/01 - v4.0.2|394,000|[587](https://github.com/ninjaframework/ninja)|[4](http://stackoverflow.com/questions/tagged/ninjaframework)|0|
|5|[Apache Wicket](http://wicket.apache.org/)|2014/11/09 - v6.18.0|369,000|[246](https://github.com/apache/wicket)|[2,493](http://stackoverflow.com/questions/tagged/wicket)|[17](http://qiita.com/tags/wicket)|
|6|[ZK](http://www.zkoss.org/)|2014/12/10 - v7.0.4|271,000|[141](https://github.com/zkoss/zk)|[708](http://stackoverflow.com/questions/tagged/zk)|[1](http://qiita.com/tags/zk)|
|7|[Apache Struts](http://struts.apache.org/)|2014/12/07 - v2.3.20|2,930,000|[104](https://github.com/apache/struts)|[3,319](http://stackoverflow.com/questions/tagged/struts)|[13](http://qiita.com/tags/struts)|

```title:上記以外の&nbsp;Java&nbsp;Webアプリケーションフレームワーク
Stripes Framework / JavaServer Faces / Tapestry / ...etc
```

### Ruby

||Name|Latest Release|Google|GitHub Star|StackOverflow|Qiita|
|--:|:--|:--|--:|--:|--:|--:|
|1|[Ruby on Rails](http://rubyonrails.org/)|2014/11/20 - v4.1.7.1|1,490,000|[24,304](https://github.com/rails/rails)|[187,252](http://stackoverflow.com/questions/tagged/ruby-on-rails)|[3,189](http://qiita.com/tags/rails)|
|2|[Sinatra](http://www.sinatrarb.com/)|2014/04/09 - v1.4.5|275,000|[6,493](https://github.com/sinatra/sinatra)|[3,778](http://stackoverflow.com/questions/tagged/sinatra)|[140](http://qiita.com/tags/sinatra)|
|3|[Padrino](http://www.padrinorb.com/)|2014/10/20 - v0.12.4|31,800|[2,335](https://github.com/padrino/padrino-framework)|[296](http://stackoverflow.com/questions/tagged/padrino)|[47](http://qiita.com/tags/padrino)|

### Python

||Name|Latest Release|Google|GitHub Star|StackOverflow|Qiita|
|--:|:--|:--|--:|--:|--:|--:|
|1|[Django](https://www.djangoproject.com/)|2014/10/23 - v1.7.1|569,000|[12,232](https://github.com/django/django)|[86,283](http://stackoverflow.com/questions/tagged/django)|[179](http://qiita.com/tags/django)|
|2|[Flask](http://flask.pocoo.org/)|2013/06/14 - v0.10.1|349,000|[11,905](https://github.com/mitsuhiko/flask)|[6,202](http://stackoverflow.com/questions/tagged/flask)|[41](http://qiita.com/tags/flask)|
|3|[Tornado](http://www.tornadoweb.org/en/stable/)|2014/09/11 - v4.0.2|273,000|[8,245](https://github.com/tornadoweb/tornado)|[1,714](http://stackoverflow.com/questions/tagged/tornado)|[9](http://qiita.com/tags/tornado)|
|4|[Bottle](http://bottlepy.org/docs/dev/index.html)|2014/04/30 - v0.12.7|298,000|[2,675](https://github.com/bottlepy/bottle)|[723](http://stackoverflow.com/questions/tagged/bottle)|[8](http://qiita.com/tags/bottle)|
|5|[Pyramid](http://www.pylonsproject.org/projects/pyramid/about)|2014/11/10 - v1.5.2|343,000|[1,555](https://github.com/Pylons/pyramid)|[1,421](http://stackoverflow.com/questions/tagged/pyramid)|[16](http://qiita.com/tags/pyramid)|
|6|[web2py](http://www.web2py.com/)|2014/09/15 - v2.9.10|126,000|[742](https://github.com/web2py/web2py/)|[1,236](http://stackoverflow.com/questions/tagged/web2py)|[4](http://qiita.com/tags/web2py)|
|7|[Pylons](http://www.pylonshq.com/)|2012/08/14 - v1.0.1|158,000|[145](https://github.com/Pylons/pylons)|[792](http://stackoverflow.com/questions/tagged/pylons)|0|

```title:上記以外の&nbsp;Python&nbsp;Webアプリケーションフレームワーク
TurboGears / Cherrypy / Zope / Kay / webapp / ...etc
```

### Perl

||Name|Latest Release|Google|GitHub Star|StackOverflow|Qiita|
|--:|:--|:--|--:|--:|--:|--:|
|1|[Mojolicios](http://mojolicio.us/)|2014/12/13 - v5.69|65,500|[1,369](https://github.com/kraih/mojo)|[240](http://stackoverflow.com/questions/tagged/mojolicious)|[59](http://qiita.com/tags/mojolicious)|
|2|[Dancer](http://perldancer.org/)|2014/11/27 - v1.3133|98,300|[719](https://github.com/PerlDancer/Dancer)|[149](http://stackoverflow.com/questions/tagged/dancer)|0|
|3|[Catalyst](http://www.catalystframework.org/)|2014/12/04 - v5.90079_003|370,000|[180](https://github.com/perl-catalyst/catalyst-runtime)|[403](http://stackoverflow.com/questions/tagged/catalyst)|[1](http://qiita.com/tags/catalyst)|
|4|[Amon2](http://amon.64p.org/)|2014/12/15 - v6.11|17,500|[127](https://github.com/tokuhirom/Amon)|0|[1](http://qiita.com/tags/amon2)|

```title:上記以外の&nbsp;Perl&nbsp;Webアプリケーションフレームワーク
Sledge / Ark / ...etc
```

## まとめ

まとめてみると初めて耳にする名前のものも結構ありました。（特に PHP のいくつか）

しかしこうしてみると、乱立ぶりに改めて驚かされますね。
そしてほとんどが非常に活発に更新し続けていることがわかります。

今回は、GitHub のスター数で並べてみて、StackOverflow や Qiita の投稿数も添えてみましたが、
意外とこんな感じなんだなーという発見も。もっと色々な軸を加えてみても面白い発見があるかもですね。

Laravel 勢いあるなーとか、PHP は種類多いし、結構な分散具合だなーとか。
Ruby は Merb も止まってるし、Rails が依然独走状態だなとか、Python 意外と Django と Flask がスター数は同じくらいなんだなとか。とかとか。

国内と海外でも大きく傾向が異なるのも面白いですね。
2015年の年末に改めて比較してみるとまた今年とは違った勢力図になっていたりするかもしれないですね。では！