【データから紐解く!】人気プログラミング言語を徹底比較!
人気のプログラミング言語を年収、求人などのデータを元にこれから何を学習したら良いのか比較してまとめています。初心者でこれから始める人、エンジニアとしてプログラミングを身に付けたいという人には間違いなく参考になる情報です。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
本稿は、Codementorのブログ記事を、Codementorより了解を得て日本語翻訳し掲載した記事になります。
科学、技術、工学および数学の素養がある人材に大きな需要があり、高い賃金が支払われているのは、とりたてて目新しいニュースではありません。米国におけるソフトウェア関連職種のオンライン求人数は2007年から2012年にかけて、他の求人に比べ3倍の速さで成長しています。
米国労働統計局は、2012年から2022年にかけてソフトウェア開発に関する求人は、22%増加すると見込んでいます。2014年5月時点のソフトウェアアプリケーション開発者の平均年収は95,510ドル(約965万円)となっています。
これからプログラミングを学ぼうと思っている初心者は、どの言語を学ぶべきか考えていることでしょう。
この記事では各プログラミング言語の給与、需要、そして将来性を比較する事によって、疑問への回答のヒントとなるはずです!
また、オンラインのプログラミングスクールTechAcademyでは、未経験でもプログラミングを習得することが出来ます。
目次
各プログラミング言語の現状
各プログラミング言語を比較する前に、比較対象となる各言語の現状を確認してみましょう。
動的プログラミング言語
学びやすく面白さもある為、一般的に、動的プログラミンング言語は初心者におすすめ出来る言語だと考えられています。コードを多用せず、ゼロからアプリケーションを構築可能で、難しいルールに従う必要がありません。
通常、動的プログラミング言語は最高層で使用されるので、細部の習得に多くの時間を費やす必要が無く、言語の概要の理解に時間を費やします。これも早期に結果を出したいと望むプログラミング初心者に人気の理由の一つです。
JavaScript
JavaScript(Javaとは別言語です)は、フロントエンドに必要クライアントな側の言語です。JavaScriptは全てのブラウザと相性が良く、しばしば「jQuery」の様なライブラリ、AngularJSやEmber.js、Reactなどのフロントエンドフレームワークを活用した双方向のウェブアプリケーションに使用されます。
JavaScriptは、Node.jsを活用したサーバー側の言語としても使用されます。Node.jsは比較的新しく、勢いのあるコミュニティです。
FacebookのReact NativeでJavaScriptを使用したネイティブモバイルアプリケーションを構築出来る他、phonegap等のフレームワークでJavaScriptを使用しハイブリッドモバイルアプリケーションも構築出来ます。
しかし、JavaScripは型の無い言語なのでミスを見つけて修正するのが難しい分、扱い難い言語としても知られています。マイクロソフトのTypeScriptやReactが使用するJSXなどの静的な型付きのバージョンも存在します。
Ruby
開発を面白く、かつ効率的にする為に開発されたRubyは、Ruby on Railsのフレームワークによって人気を博しました。
Ruby on Railsは、プログラミングの快適性を追求した、フルスタックのフレームワークです。Rubyは英語の様に解読でき、Railsは、共通タスクを容易にするツールを備えています。
Shopify、Bloomberg、HuluやSlideshareなどの人気サイトではバックエンド開発の大部分にRubyを使用しており、Ruby on Railsで構築されています。
Ruby/Rails開発のためのおすすめエディタ/IDEについても合わせてご覧ください。
Python
Pythonもまた初心者にお勧め出来る言語の一つであり、米国の一流大学で言語学習の導入段階において最も学ばれています。デスクトップアプリやWebアプリケーション等を構築する際に使用され、データマイニングに最適なツールを備えています。さらに、Pythonはコンピュータサイエンスやデータ解析、生物情報学等、アカデミックなコミュニティでも人気があります。
Google、 YouTube、 Pinterest、 Instagram、 Reddit、 BitTorrent、 Civilization IVなどはPythonで構築されてます。
国内でPythonを使ったWebサービスが少ない理由とはという記事も合わせてご覧ください。
PHP
PHPはサーバー側のスクリプト言語で、PHPのコードで何をするか概念化が容易な為、初心者向けの言語と考えられています。この言語はWeb向けに特化されているので、多くのWebサイトはPHPで構築されています。
Facebook、Wikipedia、Yahoo!、 Tumblr、 WordPress等はPHPで構築されています。
静的型付き言語
静的型付き言語で構築されたアプリケーションはより拡張性と安定性があり、保守性に優れている事で知られています。静的言語はタイピングのチェックによる機能が厳しく、エラーの抽出が容易である一方、プロトタイプの作成が可能な為、多くのコードを使用します。ゲームエンジン、モバイルアプリケーションや企業のバックエンドは一般的に静的型付き言語で構築されます。
Java
汎用性のある言語としてJavaは、Androidアプリ、デスクトップアプリやゲームに使用されます。また企業のバックエンドの開発にも使用されています。
さらに、ビッグデータの保存や加工に使用するフレームワークHadoopは、Javaをベースとしており、Yahoo、Facebook、 Amazon Web Servicesといった企業で採用されています。
C
C言語は、システムソフトウェアの共通言語として、しばしば使用されています。
Cは、本稿にて紹介するほぼ全てのプログラミング言語、とりわけObjective-Cと C++に影響を与えました。ですので、もしCの知見があれば他の一般的な言語の習得は難しく無いでしょう。
しかし、簡単なタスクを実行するのに複雑なコードを必要とする為、初めての言語として選んだ場合に初学者は苦労するかと思います。それでもCの知識はきっとプログラマーの助けになることは間違いないですが。
Objective-C / Swift (iOS開発向け)
Objective-Cは、C言語を基にした言語であり、静的ですが動的型付けも可能です。AppleのSwiftは、Objective-Cと互換性を持つ様に設計された静的言語ですが静的型付けによりエラーを起こし難くなっています。
Pythonに触発されたSwiftは、新参のプログラマーが習得しやすくObjective-Cに見られるいくつかの課題を解決する様に設計されています。
C++
C++は、C言語を基にした影響力のある言語です。システムソフトウェアのプログラミング用に設計されましたが、ゲームやゲームエンジン、デスクトップアプリ、モバイルアプリ、Webアプリにも使用されてきました。C++は迅速なので、Facebookもいくつかの高性能で高信頼性のあるシステムをこの言語で構築しています。
Adobe Systems、Amazon、Paypal、Chromeなどの多くのソフトウェアがC++で構築されています。Cの様に、一般的にC++は初学者に難しい言語と考えられているので、初めて学ぶ方はMeetups、またはC++Codementorで相談してみるのも良いでしょう。
C#
C#(C シャープ)はマイクロソフトWindowsのNET フレームワークの為に開発されました。
C#は、Web開発、ゲーム開発及びマイクロソフトの開発一般に使用されています。マイクロソフトは互換可能なクロスプラットフォームでは知られていませんでしたが、C#を他のプラットフォームへ移行させ、リナックス技術者により良い開発ツールを提供する目的で、Monoと呼ばれるオープンソースプロジェクトを発案しました。
最近では、C#をiOSやAndroid向けのネイティブモバイルアプリに使用できる様になりました。
SQL
SQL(SequelまたはStructured Query Language)は、データベースとコニュニケーションを行う問い合わせ用の言語です。
SQLはアプリケーションを構築する為には使用されませんが、リレーショナルデータベース管理システム(RDMS)を使用するアプリケーションのデータ管理に使用されます。
言語別求人のランキング
各プログラミング言語の概要を少しだけ紹介しました。
しかしながら、全ての言語に同じ需要があり、同等の給与が支払われる訳ではありません。もし言語習得の目的が就業であり、また言語習得がどんどん難しくなってきているという話にがっかりさせられたくないのであれば、次に紹介する内容が「どの言語を学ぶべきか」という問いに対するヒントになると思います。
indeed.comによる給与統計を基に、各プログラミング言語を9つの層に分割しています。
この結果、Swiftが一番多くの給与を得る事ができ、Java、Ruby、 Python,、C++とCもまた悪くない選択である事は明白でしょう。さらに、給与のみに焦点を当てた場合、JavaScript,、C#,、SQLおよびPHPは理想的な選択では無いでしょう。
平均給与は、需要(どの程度求人があるか)、供給(何人の開発者がその言語を使えるか)および経験などに影響されます。従い、結論を急ぐ前に他の要素もじっくり確認してみましょう。
求人のトレンド
以下は、プログラミング言語別の求人トレンド(indeed.comから抜粋)です。
C、SQL、JavaおよびJavaScriptには多くの求人があります。一方、C#、C++とPythonもまた需要のある言語です。
しかし、新興企業の職を得たいのであれば、indeed.comのトレンドはふさわしい指標ではないでしょう。
AngelListは新興企業による求人の為のサイトであり、ここの求人リストを基にプログラミング別の重要を確認できます。
JavaScriptの需要がある事が改めて確認できます。また新興企業ではJava、C、C++と C#よりPythonおよびRuby (on Rails)を欲している事が分かるでしょう。
言語別給与ランキング
次は、求人広告の内容から、潜在的にどの程度の賃金が得られるのかみてみましょう。このデータはgooroo.ioから抜粋しており、求人広告で提示された給与の平均値で積算しています。
Ruby、C++またはJavaを知っている技術者は、高い初任給を得られそうです。優秀なRubyとPythonの開発者は不足し、高い需要があるので、RubyとPythonは潜在的に最も高い給料を得られるでしょう。
JavaScriptは2015年4月時点で188,168ドル(約2000万円)も給料があったのに、今では124,oo0ドル(約1300万円)に減っていて、落ち込みが大きいです。
しかし、JavaScriptは特殊はケースです。以下で説明します。
特殊なケース:JavaScriptのフレームワーク
単純にJavaScriptを他の言語と比較するだけでは、どの程度稼げるのかを正確に予測する事はできません。
各プログラミング言語の概説で説明した通り、JavaScriptは様々に分類されます。フロントエンドのウェブサイトの開発を促進する為、多くのフレームワークが開発されてきました。したがって、JavaScriptやjQueryを知っているだけでは、JavaScriptのフレームワークを理解している技術者よりも稼げる可能性は少ないでしょう。
米国におけるJavaScriptのフレームワーク別の技術者の平均給料をみてみましょう。(React & Backboneはライブラリであり、フレームワークとはしていません。Node.jsは含んでいます。)
平均給与は悪くありません。
特に、Reactの展望は明るいです。もちろん、ここに記載されているのはあくまで参考であり、ineed.comでは平均給与105,000ドル以上とみています。これらの技術を学ぶにはJavaScriptを知る必要があり、逆にフレームワークを身につければJavaScriptをより有益なスキルにしていくはずです。
これらのフレームワーク技術者の需要を見てみましょう。
Node.jsはバックエンドの開発用なので、単にフロントエンドのフレームワークとなればAngularJSが需要という点では圧倒的です。フロントエンドのJavaScript技術者に関心があるのなら、AngularJSを学ぶと良いでしょう。
一方でReactは、比較的新しい技術なのでAngularJSの初期段階を同じような勢いで人気を得てきています。
まだ初期段階ですが、AngularJSよりも汎用性があり、ユーザーの使い勝手も良いので、これから需要はますます広がるでしょう。
プログラミングに関するサポート体制について
独学でプログラミング言語を学ぶ場合、他の技術者からサポートを受ける事が非常に重要な助けになると気づくでしょう。
サポートコニュニティの一員となる事は将来のあなたの技術者生活をより快適なものにします。
StackOverflow
StackOverflowは相互支援の場として世界中の技術者に使用されている最大のコミュニティであり、プログラミング言語がどの程度普及し、人気があるのか、また同時にそのコニュニティが言語習得に程度役に立つのか、を知る事ができます。
言語の人気
StackOverflowのフォロワーを根拠として、各言語の現時点の人気を確認できます。
すでにJavaとJavaScriptが技術者に大きな需要があることは確認しましたので、これらの言語が最も多くのフォロワーをもっている事は驚きに値しません。「JavaScript」は現在では「Java」を追い抜き、StackOverflowでもっとも多く使用されているタグです。
SQL、Ruby、それからSwiftのフォロワーは少ないですが、RubyはWebの開発に専ら使用されていて、Swiftは比較的新しい言語なので、これは当然の帰結かもしれません。
StackOverflowでの回答率
StackOverflowでは質問を「正確に」しなければならない、という暗黙のルールがあります。このことを頭に入れて各言語別の質問に対する回答を得られる確率を見てみましょう。
この情報に拠ると、C、SQL、それとC++関連では、質問に対し60%以上の回答を得ています。
CとC++は専門性が高く、質問者はプログラミング経験豊富なので、より正確に自分の質問を表現できるのではないか、と考える人もいるでしょう。一方で、SQLは物事を構築する為に使用されている訳ではありません。
注目に値するのはStackOverflowにおいて、PythonとRubyの技術者も回答に協力的である、という点です。前述の通りPythonとRubyは初心者に最も勧められる言語であるのですが、これ考慮しても、30日以内に60%の回答があるという事は驚きです。
一方で、広範に使用されているはずのPHPの回答率が最低です。これは、多くの人がPHPに関する質問をしていますが、回答はあまり得られていない、という事を意味します。
GitHub
開発に参加すると、出来る限り既存のソリューションを使用する事が最善だと気づくでしょう。既存のソリューションは、一般的にオープンソースから取得でき、GitHubはこれを取得する手法を提供します。ユーザーは自分の気に行ったプロジェクトに星印をつけます。あるプロジェクトに多くの星印がつくほど、そのプロジェクトは盛んになりませす。
以下はGitHubの人気プロジェクトの言語別分布です。
JavaScriptが最も人気のあるツールである事は細部を確認せずとも明らかです。JavaScriptは、フレームワークや技術の移り変わりにおいて、技術者が現状についていくのが困難と認識する程、変化の速い言語です。
加えて、Node.jsを除いては、JavaScriptはフロントエンドの開発に最も使用されています。従い、Ruby、Python、JavaおよびPHP等バックエンド向けの言語と直接競い合っている訳ではありません。JavaScriptが他の言語とこれだけ差がある、というのは驚くべき事では無いのです。
一方で、RubyとObjective-Cは開発の為にたくさんのツールとリソースがあります。興味深いのは、StackOverflowでの比較において、いずれの言語もJava程人気がある訳ではないですが、技術者はこれらの言語のオープンソースプロジェクトを有益と考えていることです。
言語別の総プロジェクト数を確認すると、特にObjective-Cにこの傾向が強い事が分かるでしょう。
また、CやC++のオープンソースプロジェクトのほとんどはCやC++の為ではなく、開発全般のツールにする為に書かれています(例えば、最も使用されているPythonの解釈プログラムはCPythonです。これはCで構築されています)。
各プログラミングの概説でお話しした通り、CとC++はシステムアプリケーション開発によく使われているので、GitHubのオープンソースプロジェクトもシステムツールの為だという事が良く分かるのではないでしょうか。
最後に、PHPは広範に使用されているにも関わらず、使用可能なリソースの数という点では遅れをとっています。C#に関しては、マイクロソフトが自前の多くのサービスでオープンソースを模索しているので、将来GitHubにおける価値は拡大するでしょう。
各プログラミング言語の将来性
将来、プログラミング言語はどの程度必要とされるでしょうか?
プログラミング言語の将来性は、「若い人材がどの程度その言語を採用するか」がその言語の人気やリソースの確保につながるので、多分にそれを使用するコミュニティの成長に依存します。では人々が学習の対象としてどの言語に関心があるかをみてみましょう。
Python、JavaScript、C#とSwiftは人々の関心を最も集めています。現在知られているトレンドを基にすると、次の様な各論を出せます。
JavaScript
JavaScriptは疑いの余地なく人気の言語となってきていて、特にバックエンドの開発に使用され、潜在的に(ReactNativeを介し)モバイルアプリケーションも構築可能です。
JavaScriptは更に多くのツールを取得し続け、かなり速いペースでアップデートされています。従って将来においても重要な言語であり続けるでしょう。
Ruby
スタートアップは「Ruby on Rails」を好みます。Airbnb、Twitch、Hulu等の多くの有名サイトはRailsで構築されており、Ruby技術者を必要とするでしょう。Railsは、習得し易いのでコーディング初心者にとって人気であり続けるでしょう。
一方、Node.jsの台頭は間違いなくRuby on Railsの人気に影響を及ぼします。GithubにおいてNode.jsはすでにRailsを追い抜いています。これは決してNode.jsがRailsを凌駕するという兆候ではありませんが、Railsも数年前にバックエンド開発でPythonの最大のウェブフレームワークDjangoに取ってかわり、Djangoより多くの人気を博した事は留めておくべきです。
更に、同一構造のアプリケーションという新たなトレンドもRailsの採用に影響するでしょう。この慣行はWebアプリケーションのパフォーマンスに影響すると言われています。
同一構造のアプリケーションはNode.jsのプラットフォーム上で動く事を要求されており、フロントエンドと同じくJavaScriptで構築されます。たった一つでもよく言語を熟知している(この場合はJavaScript)という事はアピールになるので、Rubyを新たに学ぶ人が少なくなる可能性があるでしょう。Googleの「Go」もまた新たに注目を集め始めているバックエンド言語です。
しかしながら、Railsは頻繁にアップデートされるので、しばらくは重要な言語であり続けるでしょう。特に開発者にとって豊富な利便性のあるツールがあり、コミュニティが存在するので、多少人気が衰えても、Rubyは活躍し続けるはずです。
Python
Pythonは、研究機関とデータサイエンティストに人気で、前述の通り、多くの初心者はPythonでコーディングを学びます。これはPythonが着実に普及しており、重要になってきている事を意味します。
PythonはJavaScripと同様に爆発的な人気を得ている訳でなないですが、データサイエンス分野では高い需要があり、力強く成長していくでしょう。
PHP
この数年間、バックエンドの開発トレンドはPHPから他の言語へ移行してきました。しかし、80%のWebサイトが依然としてPHPで構成されています。これはWeb用に設計された言語なので当然かもしれません。
しかしながら、初学者がどの言語を学ぶべきかグーグルで調べると、多くの技術者がPHPを薦めていないことが分かると思います。実際に、PHPは多く技術者から疎まれています。
PHPのコミュニティはPHPの正しいコーディングの仕方や新しい開発ツールを提供する事でPHPに関する悪評を取り除こうとしています。
Java
AndroidによりJavaは最も人気のある言語に押し上げられ、その安定性と拡張性から開発会社からもまた支持される事となりました。
ビッグデータ管理用のフレームワークとして(Scala)を使用するSparkと(他の言語をサポートする)Cassandraの台頭により、Hadoopはビッグデータ管理のフレームワークとしてどの程度人気を得続けるか予測が難しくなちました。
しかし、大企業が転換期にどのように行動するかを考慮すると、Hadoopが捨て去られる事はないでしょう。Javaはバックエンド開発において優れたツールを持っていて、企業の開発に不可欠なのです。
この様に、Javaは今後数年間は重要な言語の一つとして力を持ち続けるでしょう。
Objective-C/Swift
アップル(Apple)がSwiftをリリースし、Objective-Cが専らアップル(Apple)の製品に使用される様になると、Objective-Cの需要が無くなるとは誰も想像していません。アップル(Apple)の製品が使用される限りは数年間はObjective-Cは重要な言語で有り続けるでしょう。
iOS向けのオープンソースプロジェクトの大半は未だObjective-Cで書かれていますので、2017年現時点においても、学習する価値のある言語です。一般的にまったく概念を理解する事の出来ないものを学ぶのは効率的ではありません。従い、もしSwiftを知っているのならObjective-Cは習得しやすいでしょう(また逆もしかりです)。
C
Cは、他の言語と比べると極めて下位レベルで使用されますが、OS用の汎用言語でもあるので残り続けるでしょう。多くの開発ルールはCとリナックス、またはCで構築されています。
SQL
SQLは大抵のデータ管理者に習得されています。しかし、MongoDBやRedisの様なSQLを要しないサービス、またはHadoof、SparkとCassandraの様なSQLを必要としないプラットフォームの台頭によりSQLは勢いを失っていると考えられていました。
現状はそうではありません。かつてSQLを必要としなかったサービスまでがSQLを活用し始めたのです。
ビッグデータの台頭と管理の難しさから、SQLはかつてないほど必要とされています(それは求人トレンドからも分かるでしょう)。Googleは、BigQueryサービスをアップデートし、一つのテーブルに対し1秒間で100,000行を処理できる様にしました。BigQueryはSQLを使用しています。Sparkはバージョン1.3からSparl SQL Moduleを採用しています。
つまり、ビッグデータを管理する必要性から、SQLは再び重要な言語となったのです。SQLは単に普及しているというのみならず、暫くは重要な言語で有り続けるでしょう。
C++
(Rustに対してまでも)未だ性能と能力においてパワフルな言語と考えられており、C++は高性能を求められるシステム(例えばゲームエンジン)で重要な言語で有り続けるでしょう。最新の主要バージョン(C++14)は2017年にリリースされる見込みであり、未だ進化しています。
Rustが作るソフトウェアはC++が作る場合よりも脆弱性が少なくなることを目指しているので、将来的にはRustは一部のシステムプログラミングでC++と入れ替わるでしょう。
C#
マイクロソフトのプラットフォームに限定されていた事とクローズドソースであった事は過去にC#に有利に働きませんでした。しかし、Monoはこの問題の大部分を修正しました。(Monoは性能に問題がありましたが、最近のアップデートにより改善しました。)
C#で働いた技術者はC#を好きになる傾向があるので、この言語は、とても強いコミュニティを持っています。C#はUnity 3Dの主要言語であり、iOSやリナックス上で動くゲームエンジンにも使用されています。ゲームエンジンとしてのUnity 3Dの台頭は、C#の立ち位置を確固たるものにし、バーチャルリアリティアプリの開発を支えています。バーチャルリアリティは重要な技術なので、C#の未来は明るいでしょう。
補足として、C#は米国の外、例えば英国の企業での開発でも人気があります。マイクロソフトもC#をしばらくは活用し続けNETプラットフォームで重要な言語とするつもりでしょう。そして技術者が活用し易い様にアクセス可能なオープンソースの製品を積極的に打ち出すでしょう。
まとめ
プログラミング初心者がどの言語を学ぶべきか?
Web開発に関わるならばJavaScriptを学ばねばならないのは明らかです。バックエンドのウェブ開発をしたいのならSQLは必須でしょう。
データ関連のウェブサイトやデータサイエンスに関心があるのなら、Pythonが推奨されます。企業で働くのなら、Javaが必要です。システムの構築に関心がなく、単に労働機会が欲しいだけならSQLをおすすめします。(特に数学好きであれば)
TechAcademyでは初心者でもエンジニアになれるオンラインブートキャンプを開催しています。未経験でもこれからプログラミングを習得したいと思っている方は特にご覧ください!
また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。