2017-10-05

ぶっちゃけ、日本で廃れているプログラミング言語ってなんなの?

背景


こんにちは、DAIです。ここ最近こんな記事を見かけまして、これって日本だとどうなんだろうなぁと思いました。

Pythonが2017年の覇権言語に - Rubyは12位に転落

IEEE Spectrumは18日、独自の指標によって決定した人気プログラミング言語のランキング「 The Top Programming Languages 2017」を発表しました( Neowin)。 ...

このプログラミング言語の人気ランキングは、世界規模のものが多いですが、日本の環境はどうなのでしょうか。ちなみにGoogleトレンドで、各言語の検索数を見てみるとWeb言語は、PHPが減少、Pythonが上昇しているみたいですね。







しかし、ガラパゴス日本ではそうとは限らないかもしれません。海外と日本の言語事情は異なることも予想されます。実際に日本人に注目されている言語の注目度を分析してみようと思います。


目的



  • 日本の各プログラミング言語の人気度と、最近のホットなテーマを解明
  • 時系列で人気上昇中の言語と、すたれている言語を特定


人気度の尺度


今回は、技術界隈で人気のあるはてなブックマークというサービスで、記事へのブックマーク数が高いものを取得し、言語ごとに比較することにします。ある言語で検索しているときの、はてなブックマークされている数の大きさ(平均値)を人気度として取り扱います。

比較する言語


- この記事を参考に言語を選択しました。
- 以下、言語とそのリリース日

言語 リリース
Perl 1987
Python 1991
PHP 1995
Ruby 1995
Java 1995
Javascript:1995年 1995
R 1996
Scala 2003
Go 2009
Swift 2014


プログラミング言語の人気 - Qiita

日本でプログラミング言語を勉強し,書く上でQiitaに触れる機会は多い. たくさんのご指摘を頂いたので記事を少し修正した.まず 人気=記事数 の方程式は確かに成立しないあくまでの学習の参考文献などが多く学びやすいなどの解釈で,プログラミング言語学習の参考にして欲しいと思う. 日本のトレンド言語ランキング ...


データソースと手段



  • 過去10年分のはてなブックマークの言語ごとの検索結果から取得(2007~2017)
  • Webスクレイピングを利用し、CSV変換、かつPandasでデータ操作し、データビジュアライゼーションを実施、くわしくは下記記事を参照
  • 取得したデータは、(1)記事名、(2)日付、(3)ブックマーク数
  • それぞれの年度ごとにブックマーク数の平均値を取得

データ取得にかんしては、こちらの記事をご参考に・・・

【Python】スクレイピング→データ収集→整形→分析までの流れを初心者向けにまとめておく ~Pythonに関するはてな記事を10年分スクレイピングし、Pythonトレンド分析を実際にやってみた~

この数年間、Pythonの人気が高まっています。 Googleトレンド によると、Pythonの検索流入数は、この10年間で2倍近くになりました。特にグラフから見ると、だいたい2015年ぐらいからPythonの検索数は増えている模様です。 さて、この数年間で、Pythonがどのような言語として扱われ、どう変化してきたののでしょうか。 ...


結果報告


Javascriptの人気度


フロントエンド・バックエンドフレームワークとして使われるJavascriptは、今でもかなり人気なようです。以下主な結果です

  • 過去10年間、人気は上がり続けている
  • 2017年でブックマーク数が多いのは、バックエンドよりフロントエンドよりの内容
  • 初心者向けの記事も多数


人気記事は、フロントエンドよりの初心者向け解説記事が多いようですね。

Out[15]:

title date bookmarks
2 まじな話をすると、N予備校のプログラミング入門コースやるのがオススメ... 2017/09/11 3592.0
67 2017年のフロントエンドエンジニアならこの程度は知ってて当然だよな? ... 2017/02/14 1292.0
78 Modern JavaScript概観、そしてElectronへ 2017/01/23 1285.0
23 10年遅れたJavaScriptの知識をざっくり10分でアップデートしよう - WPJ 2017/06/16 1160.0
45 JavaScript,jQueryの爆速コーディング、デバッグ方法論の勧め~実践向け... 2017/03/30 1114.0
62 JavaScript における文字コードと「文字数」の数え方 | blog.jxck.io 2017/03/02 704.0
10 JavaScriptフレームワーク選定の議論 - Qiita 2017/08/02 693.0
16 フロントエンド開発の基本知識(2017年夏) - Qiita 2017/07/11 684.0
33 いかにしてJavaScriptを教えるか - mizchi's blog 2017/05/04 677.0
17 2017年JavaScriptのテスト概論 | プログラミング | POSTD 2017/07/11 602.0



Pythonの人気度

  • 2015年から人気が急上昇
  • 2017年でブックマーク数が多いのは、スクレイピング・機械学習等のデータサイエンスよりの分野
  • 初心者向けの記事も多数





Out[16]:

title date bookmarks
36 PythonでWebスクレイピングする時の知見をまとめておく - Stimulator 2017/06/25 1831.0
87 初心者がPythonを覚える為の本の選び方を体系化してみた(2017版) - Lean... 2017/01/15 1336.0
48 ディープラーニング実践入門 〜 Kerasライブラリで画像認識をはじめよう... 2017/04/28 1026.0
1 Pythonを書き始める前に見るべきTips - Qiita 2017/09/28 973.0
8 pythonで小さなツールを作る時のtips - Qiita 2017/09/04 931.0
29 KING JIM ポメラDM200でEmacs、Vim、Ruby、Pythonが動くなんて素... 2017/07/15 879.0
74 Pythonをやるときに参考になりそうな情報 - のんびりSEの議事録 2017/02/16 815.0
55 Python: ソケットプログラミングのアーキテクチャパターン - CUBE SUGAR... 2017/03/29 749.0
33 100万倍速いプログラムを書く - Qiita 2017/07/07 546.0
73 金融データのPythonでの扱い方 - 今日も窓辺でプログラム 2017/02/19 532.0

 Rubyの人気度

  • 2011年をピークに、人気度は一定
  • 2017年度はWeb系のフレームワーク関係の記事が多い



Out[17]:

title date bookmarks
12 KING JIM ポメラDM200でEmacs、Vim、Ruby、Pythonが動くなんて素... 2017/07/15 879.0
18 Swift実践入門 〜 今からはじめるiOSアプリ開発! 基本文法を押さえて、... 2017/05/25 839.0
20 Ruby書いたことないけどRuby書いた人の講演に行った - みたぬメモ 2017/05/21 508.0
7 Rubyist Magazine - HanamiはRubyの救世主(メシア)となるか、愚か... 2017/08/27 404.0
10 Rubyの死?開発者はどの言語を学ぶべきか? 2017/08/10 388.0
2 Rubyのtrueとfalseの話 - Qiita 2017/09/27 387.0
23 Ruby on Railsチュートリアルを軸にしてWeb周辺技術を勉強した - drilld... 2017/05/13 282.0
11 Awesome Ruby : 素晴しい Ruby のライブラリ・ツール・フレームワーク・... 2017/07/24 276.0
33 インタビュー:Rubyコミッターの笹田氏がクックパッドへの入社を決めた... 2017/01/24 163.0
31 最近のruby-core (2017年1月) | Money Forward Enginee... 2017/02/01 134.0


R言語の人気度


  • 2010年ごろに爆発的に人気が出始める(おそらくビッグデータブームの到来?)
  • ここ最近は下火
  • 初心者向けのR入門記事が人気な模様


title date bookmarks
36 Rを使えるようになるための10のこと - Issei’s Analysis ~おとうさん... 2011/09/17 611.0
39 第1回 Rは統計解析のブッシュナイフだ - 実践! Rで学ぶ統計解析の基礎 ... 2010/07/21 579.0
10 R vs Python:データ解析を比較 | プログラミング | POSTD 2015/10/28 509.0
35 Rが使えるフリをするための14の知識: ニュースの社会科学的な裏側 2012/02/04 466.0
5 R言語徹底解説を読む (1) ようこそRプログラミング - 僕らはRを愛しすぎ... 2016/07/10 398.0
14 A/B テストで施策の効果を検証!エンジニアのための R 入門 - クックパ... 2015/05/08 319.0
13 統計を始めたい人に僕がPythonよりRを勧める理由 - 蛍光ペンの交差点[... 2015/06/11 314.0
29 はてなブックマーク記事のレコメンドシステムを作成 Pythonによるはて... 2013/07/07 309.0
28 非エンジニアにもオススメ。数学が苦手な統計初心者がR言語を触ってみる... 2013/07/19 303.0
31 R統計解析入門: 統計解析 テクニカルデータプレゼンテーション  梶山... 2013/05/02 268.0


PHPの人気度

  • 2012年をピークに、人気低下中
  • 2017年度はウェブ開発系の記事が多数
  • PHPディスリの記事が増えてきている・・・?



Out[18]:

title date bookmarks
1 休日個人開発で学ぶテストコード! 画像に“集中線”を合成するツールを... 2017/08/22 472.0
2 PHPでデータベースに接続するときのまとめ - Qiita 2017/07/15 350.0
8 PHP - 【PHP】作成したメールフォームに脆弱性がないか、アドバイスもら... 2017/04/09 282.0
3 グーペのPHPバージョンを5.2から7.1にアップグレードしました - ペパボ... 2017/06/22 196.0
5 PHPができても他言語の学習には役に立たない理由を考えてみた。 - Qiita 2017/05/08 96.0
10 Trello のクローンを PHP で作りました - Qiita 2017/01/25 90.0
6 速習PHP最速マスター、初心者に優しい実用的で本よりも濃い内容にしてみ... 2017/04/22 73.0
11 PHPの中身をgdbで観察できるようなDockerイメージを作りました - hnwの... 2017/01/14 68.0
9 PHP CS Fixer v2 でもっと快適PHPライフ - Flog Splash 2017/03/31 61.0
7 $PHP = 💩; – Fuzz – Medium 2017/04/13 58.0


 Perlの人気度

  • 2013年をピークに人気低下中
  • 2017年には、Perl関係の記事で50ブックマークを超えたのは3記事のみ



Out[19]:

title date bookmarks
2 Perlで人工知能プログラミングを行うAI::MXNetの出来が凄そうだ - Perl... 2017/07/13 106.0
1 googleのエンジニアが書いたPerlの入門記事を紹介してほしいと依頼され... 2017/07/18 94.0
3 Perlが30倍速くなるかもしれないSPVMの開発版をリリースしました。 - Pe... 2017/06/20 91.0


Javaの人気度


  • まだ比較的人気かなぁ






Scalaの人気度

  • 2011年度に初めて姿を現し、それ以降人気上昇中
  • 2017年度には5記事しか存在しない
  • 初心者向け記事が存在するので、一部のプログラミング上級者が利用している?




Out[20]:

title date bookmarks
1 Scalaに関する誤解と事実を語る - kmizuの日記 2017/05/06 344.0
4 TwitterはScalaを捨ててません(少なくとも現在は) - kmizuの日記 2017/03/22 193.0
3 Scala入門としてCLIツールを作り、Scala.js, React, ScalaCSSで... 2017/04/07 86.0
2 Dottyによる変更点と使い方 - 水底 2017/04/30 55.0
5 PythonでScalaのようなlambda式を書いてみた。 - ABEJA Tech Blog 2017/01/19 50.0


Go言語の人気度

  • 2010年に現れ、2013年ごろから人気上昇中
  • 2017年の時点では、初心者向け記事はそんなにはやっていない



Out[21]:

title date bookmarks
12 Raspberry PiとGo言語でミニトマトの栽培環境を監視してLINE Botで通知... 2017/07/14 604.0
50 なぜGo言語(golang)はよい言語なのか・Goでプログラムを書くべきなのか 2017/01/16 602.0
28 Go言語のリアルタイムGC 理論と実践 | プログラミング | POSTD 2017/04/27 407.0
26 Big Sky :: ログイン認証をマイクロサービス化する「loginsrv」 2017/06/02 371.0
10 A Tour of Goを終えたあなたにおすすめのGoを勉強するためのリソース - ... 2017/07/21 310.0
49 Big Sky :: golang オフィシャル謹製のパッケージ依存解決ツール「dep」 2017/01/25 308.0
27 GolangでSlack Interactive Messageを使ったBotを書く - M... 2017/05/23 306.0
4 PHP, Python, Golang を NGINX Unit で動かしてみた - /va... 2017/09/08 282.0
3 Go にジェネリクスがなくても構わない人たちに対する批判について - met... 2017/09/19 261.0
37 Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017... 2017/03/27 232.0


Swift

  • 2014年に言語がリリースされたので、観測されるのは2014年から
  • ブックマーク数は上昇中
  • 入門系の記事が存在する




Out[22]:

title date bookmarks
5 Swift実践入門 〜 今からはじめるiOSアプリ開発! 基本文法を押さえて、... 2017/05/25 876.0
14 「Google丸投げ」でiOSアプリ開発が恐ろしくラクになる!Firebaseの使い... 2017/02/01 657.0
17 Swiftのエラー4分類が素晴らしすぎるのでみんなに知ってほしい - Qiita 2017/01/14 490.0
15 大規模アプリケーションのリファクタリング - Instagramのフィードを書... 2017/01/19 291.0
2 CotEditor を Swift に移行する - Qiita 2017/07/23 275.0
3 2017年の夏、Swiftをどうやって学ぶか - Hatena Developer Blog 2017/06/22 107.0
4 Swiftの開発者が、わずか6ヶ月でTeslaを去る | TechCrunch Japan 2017/06/21 102.0
8 新しいアプリを作るときによく使うSwift Extension集 - VASILY DEVE... 2017/03/07 75.0
12 Swift 3 マイグレーション - クックパッド開発者ブログ 2017/02/03 73.0
6 体系的なSwift言語学習 - Qiita 2017/05/10 72.0


まとめ


というわけで、途中は説明が面倒くさくなってしまい、はしょりましたが、ざっとこんな感じになりました。
  • 20世紀に開発された言語で、いまだ人気が上昇しているのはPython(1991)、Javascript(1995)
  • それ以外でも、Java(1995),Ruby(1995)あたりはまだ人気
  • PHP(1995)、Perl(1987)は死にかけ

これらのデータをもとに、人気度・新しさで2軸のマトリックスにわけたものがこちらです。


20世紀末に作られてからずっと人気があるのはPython・Java・Javascriptみたいです。Scala、Go,Swiftはこれからどうなるんでしょうか。気になるところです。ちなみにCobolのブックマーク記事を探したところありませんでした。


とりあえずミーハーな私は、Python、Java、Rubyあたりを勉強しておきます。

注目の投稿

 PythonのTweepyを利用して、Twitter APIを利用している。 その中で、ハマったポイントをメモしておく。 まず、Searchに関して。 Twitter検索は、クライアントアプリ側では、全期間の検索が可能になっている。 一方で、APIを利用する際は、過去1週間しか...