新年が開け(訳注:本記事のオリジナルは2017年1月に掲載された)、自分のスキルやキャリア選択を見直す人も多いでしょう。「学ぶのに最良の言語」に関する統計のソースがたくさんありますので、それから紹介しましょう。
スタック・オーバーフローの開発者調査
2016年、スタック・オーバーフローは開発者調査を173カ国の5万6000人を超える開発者を対象に実施しました。
- もっとも使われている技術
- JavaScript:55.4%
- SQL:49.1%
- Java:36.3%
- C#:30.9%
- PHP:25.9%
- Python:24.9%
- C++:19.4%
- AngularJS:17.9%(JavaScriptフレームワーク)
- Node.js:17.2%(サーバーサイドのJavaScript)
- C:15.5%
- もっとも好きな技術
- Rust:79.1%
- Swift:72.1%
- F#:70.7%
- Scala:69.4%
- Go:68.7%
- Clojure:66.7%
- React:66.0%
- Haskell:64.7%
- Python:62.5%
- C#:62.0%
- もっとも恐ろしい技術
- Visual Basic:79.5%
- WordPress:74.3%
- Matlab:72.8%
- Sharepoint:72.1%
- CoffeeScript:71.0%
- LAMP:68.7%(Linux、Apache、MySQL、PHP)
- Cordova:66.9%
- Salesforce:65.4%
- Perl:61.3%
- SQL:60.3%
- 開発者が学びたいと考えている技術
- Android:15.8%
- Node.js:14.8%
- AngularJS:13.4%
- Python:13.3%
- JavaScript:11.9%
- React:9.2%
- Swift:8.7%
- MongoDB:8.1%
- Arduino/Raspberry Pi:8.0%
- C++:8.0%
スタック・オーバーフローにおける人気の技術
さらに、スタック・オーバーフローでは質問、回答、投票の統計情報を整理し、人気技術ランキングを作成しています。
- JavaScript:16.6%
- Java:14.7%
- Android:11.5%
- Python:11.4%
- C#:11.1%
- PHP:8.6%
- jQuery:6.7%
- C++:6.6%
- HTML:6.6%
- iOS:6.3%
PYPL PopularitYの調査
PYPL PopularitYはGoogleトレンドのデータからどのプログラミング言語の言語チュートリアルがよくオンライン検索されているかを調べています。
- Java:23.1%
- Python:14.4%
- PHP:9.7%
- C#:8.4%
- JavaScript:7.7%
- C:7.1%
- C++:7.0%
- Objective—C:4.4%
- R:3.4%
- Swift:3.0%
TIOBE Index 2017年1月の調査
TIOBE Indexは検索エンジンの検索結果を利用して言語を評価し、ランキングをパーセンテージで表示しています。
- Java:17.3%
- C:9.3%
- C++:6.3%
- C#:4.0%
- Python:3.5%
- VisualBasic.NET:3.0%
- JavaScript:2.9%
- Perl:2.7%
- アセンブリ言語:2.7%
- PHP:2.6%
2016年にもっともランキングが上がったのが第13位Goで、ランキング外から2.3%まで跳ね上がりました。Javaは4.19%下がりましたが、それでもCのスコアのほぼ2倍になっています。
これらの調査から分かることは?
あまり多くのことは分かりませんが、結果は興味深いものです。しかし、結果はときとして矛盾し、データ収集方法にも限りがあります。
- 検索エンジンの検索結果をもとにすると、古く、問題点が多いまたは普及しているプログラミング言語がランキング上位に来る傾向がある。VisualBasicがJavaScriptよりも上位に入ると思う人はほとんどいなかったはずだ
- オンライン調査の対象は一部のカスタマーに限定されている。スタック・オーバーフローは人気のプログラミング言語やフレームワークに関する問題に遭遇したことのある、一定以上のプログラミングの知識を持つ開発者が対象だ
- 過去の使用パターンが必ずしも未来のトレンドの指標になるわけではない。Node.jsは十数年前は存在しなかったし、1990年代半ばはPerlやCがサーバーサイド開発において現実的な選択肢だった
たとえば、すべての調査でJavaのほうがPHPより上位に入っています。Javaはしばしば教育用に採用され、コマンドライン、デスクトップ、ネイティブのAndroidアプリ開発に利用されています。しかし、WordPressはWebサイトの27.3%で使われており、PHPで書かれています。PHPはWebサーバーの82.4%で利用されており、それに比べてJavaはわずか2.7%です。
PHPはWeb用に開発され、一般的なプラットホームとして広く採用されています。Javaでも問題ないのですが、Web開発でキャリアを積んでいきたいなら、PHPを学ぶことをおすすめします。きっとそのほうが良いでしょう。住んでいる場所や勤め先、業種、仕事内容にもよりますが。
調査結果がすべて正しいわけではないので、自分でも調べたほうがよいかもしれません…。
自分以外の開発者の意見
これまで何年にもわたり「最良のプログラミング言語」に関する記事を執筆し、多くのコメントをもらいました。人それぞれに意見があり、それは非常に良いことだと思います。しかし、間違った意見を言う人もいます。
すべての言語に精通している開発者はいません。いくつかのプログラミング言語について知識を持っている人もいますが、言語の選択において公平な意見を言える人はいません。開発者がどのプログラミング言語を選択し日々利用するにしても、選択は好みの問題になります。開発者は自分の選択が正しいと言い張ります。というのは、自分の選択が間違っているとなると、使用言語をほかに変更する必要があるからです。
ほかの開発者は自分の経験から学んだ教訓を教えてくれます。有益な情報ですが、同じプログラミング言語を好む人ばかりとは限りません。逆に考えて、特定の言語またはフレームワークを使用させられている開発者の意見を聞いてください。大多数の人がその言語を嫌っているはずです。ほかの誰がが決めたことに従う必要はないのです。
調査結果またはほかの人の意見に頼れないのであれば、どうすればよいのでしょうか?
「最良のプログラミング言語」はない
普通乗用車の運転を学んだら、その知識はバス、トラック、トラクターの運転に応用できます。同様に、ほとんどのコンピュータ言語は入力、出力、変数、ループ、条件分岐、関数を使います。1つのプログラミング言語の基本を学んでからほかの言語を学ぶと、非常に楽です。ただし、文法は多くの場合異なります。
「不適当な」言語は選択できませんが、開発に関する知識はすべて役立ちます。iOSのゲーム開発にCOBOLを選ぶのはおそらく最適な選択とは言えませんが、すぐに実用的ではないと気付いてほかの役立つ言語について学ぶことになるはずです。
学習プロセスでもっとも難しいのは、学習を始めることですね…。
適切な質問をしているか?
ある程度プログラミング経験のある人は、どこで自分がつまずいているか分かります。以下のような場合、どの知識が乏しいかはっきりしているので、次に進むべき道が分かります。
- スプレッドシートのデータを手動操作するのに時間がかかりすぎている場合、マクロ言語を学ぶと良い
- Webサイトを構築していてレイアウトを思い通りに作成できない場合、CSSに関する知識を深めるのが次のステップだ
- サーバアプリケーションの開発でデータを蓄積する必要がある場合、SQL、またはNoSQLの代替手段を学ぶことが適切だ
「どのプログラミング言語を学ぶべきですか?」と尋ねる人はおそらく、これからソフトウェア産業の門をたたこうとしている人です。同じぐらいあいまいな質問例をあげると「どのような服を着ればいいですか?」となります。年齢、ジェンダー、体型、好み、嗜好、国、その地域の天気、習慣、ドレスコード、どのような場面に着ていくかなどが分からなければこの質問に答えられる人はいません。以下の事情を分からない状態で、学ぶプログラミング言語を提案するのは不可能です。
- 本当にプログラミングに興味があるか
- 解決したい問題はなにか
- どのようなハードウェアやシステムが利用可能か
- どれくらい学ぶ時間と機会があるか
- そして、これまでの要素と関連したすべての不確定要素
プログラミングの経験も積まずに、いきなりプロの開発者としてのキャリアを歩むことを決心する人はいません。開発に本当に興味があるなら、小さなプロジェクトを選び、プログラミング言語を選択し、チュートリアルをいくつか閲覧してから次の段階へ進んでください。SitePointにある次のようなコースから始めることをおすすめします。数はそれほどありません。
- はじめてのWebサイト構築:HTML & CSS
- JavaScript入門(Webクライアントとサーバーサイド開発)
- PHPおよびMySQL Web開発入門(Webサーバーサイド開発)
- Ruby入門(Webサーバーサイド開発)
- Python入門(Pythonプログラミング入門)
- Swift入門 (ネイティブiOS開発)
学習を継続する
状況が異なるため、ほかの開発者の意見は参考にならないと書きましたが、初歩的なWeb開発を学習する人に向けて少しだけアドバイスさせてください。
- 普段フロントエンド開発に携わっているなら、バックエンドのコーディングにトライするとよい。PHP、Node.js、Rubyまたは興味の湧くプログラミング言語であればどの言語でもかまわない。そのあとでSQLのスキルを習得する
- 普段バックエンド開発に携わっているなら、HTML、CSS、JavaScriptを学習する。Web APIやJSONなどのデータ形式を学ぶのも有益だ
フレームワークは重要ではありません! プログラミング言語の基本を学んでください。開発コミュニティの意見がそのときどきで移り変わっても、自分で習得した知識は変わらない非常に貴重な財産になります。
フルスタック開発者になりたいと考えているわけではないかもしれませんが、これらの知識は少なくとも、ほかの人の仕事を理解し、プロジェクトをより良いものにするのに生かせます。
学習の成功を祈ります。学習を先延ばしにしないでください。記事を読むのをやめるなら、さあコーディングを始めましょう!
(原文:What’s the Best Programming Language to Learn in 2017?)
[翻訳:中村文也/編集:Livit]