アメリカに本部を置く、電気・情報工学分野の学術研究団体であるIEEEが2019年の人気開発言語ランキングを発表しました。
これによると、1位Python、2位Java、3位C、4位C++となっています。
開発言語の種類が増えている今、ランキング上位のプログラミング言語はどのようなものなのか解説したいと思います。
Contents
一番人気のPythonはどんな言語?
Pythonは今最も人気急上昇中のスクリプト言語です。 人気の要因は、機械学習(AI)の分野でよく使用されることと、初心者でも比較的簡単にプログラムが作成できるためと言われています。
Pythonには数学や機械学習といった学術系の機能が多く備わっており、 PyTorchやTensorflow、Kerasといった機械学習フレームワークはPythonに対応しています。昨今の機械学習(AI)ブームにより、Pythonの人気は確固たるものとなりました。
ほかにも、5位のR、8位のMatlabも算術系の言語となっており、 機械学習を支えるデータサイエンティストの右腕として活躍しています。
また、YouTube, Instagram, Dropboxなどの有名なサイトでもWebアプリケーション技術にPythonを使用しており、今後あらゆる場面で使われることが多くなっていくと思われます。
「落ち目」と言われながら復活したJava
2位のJavaは、長年人気プログラミング言語の上位にいるコンパイラ言語です。
人気の理由は、JVM(Java仮想マシン)というJavaのプログラムを動かすソフトウェアが「マルチプラットフォーム」を実現しているという点にあります。
Javaが出てくる前のプログラミング言語は、ビルドした環境と実行環境を合わせなければ動きませんでした。Windowsのソフトですと、32bit版と64bit版があったり、対応するOSのバージョンが限られていたりしたことを覚えていらっしゃる方もいるかもしれません。Javaは実行時に、自分で仮想マシンを立ち上げてその環境で実行されているので、単一のパッケージですべての実行環境に対応できるのです。
Javaが登場した1995年当時はコンピュータのスペックが低く、仮想マシンを立ち上げるための負担が大きく動作が遅かったのですが、その後PCが普及するにつれてどんどんCPUやメモリの性能が上がり、2000年代に入るとJavaを利用した開発が一般的になってきました。
VB.NETやC#が使用する.NETフレームワークがWindows専用ということを考えると、 LinuxやUnixでもOSを問わずに動作するJavaは選択しやすい言語だったと言えるでしょう。
Javaが主に使われているのはWebアプリケーションとモバイルアプリケーションです。フィーチャーフォン向けアプリケーションはJavaで開発されていたものが多く、現在でも AndroidのアプリケーションプラットフォームがJavaで開発できます。
しかし、Javaは2018年にはそれまで上位を保っていたランキングで4位となり、「落ち目なのでは?」と言われていました。
そこからまた2位に復活した理由は後述したいと思います。
根強い人気、C/C++
3位、4位は、50年近い歴史があるC言語と、その派生言語であるC++というコンパイル言語です。
IT業界は、常に最新の技術を取り入れている一方で、昔からあるシステムを使い続けるために、古いプログラミング言語を扱うプロジェクトも根強く残っています。
もちろん、ランキングの上位に来ているのはそれだけの理由ではありません。
特に、C++はDirectXやOpenGLを直接扱うことに長けていることから、 ゲーム機などのスペックをフルに活用するために採用されることが多い言語です。
限られたメモリを極限まで活用し、高速かつ軽量な動作が可能なC/C++は、特に組み込み、IoTの分野において、この先も一定のシェアを獲得すると思われます。
その他の人気言語
その他の人気言語も簡単に紹介します。
(5位のR、8位のMatlabはPythonのところで説明したため省きます)
JavaScript
JavaScriptは、主にブラウザで動作することを目的としたスクリプト言語です。Webブラウザ上での表示に関わる部分ではJavaScriptが必要不可欠となっています。
JavaScriptはJavaの名を冠していますが全くの無関係で、 言語的な互換性も一切ありませんが、Javaで開発されたWebアプリケーションには、表示部分でJavaScriptが一緒に使われているケースが多いです。また、サーバーサイドとしてNode.jsというプラットフォームも作られており、あらゆる場面で使われることが多いため、上位を長年キープしています。
C#
C++の派生言語で、Microsoft社が展開している.NETのファミリーとして公開したコンパイル言語です。 そのため、 Windows専用というイメージが先行しがちでしたが、主にモバイル向けゲームのプラットフォームであるUnityに採用されていることから、 継続して高い人気を誇っています。
Swift
Apple製品の開発向けにApple社が公開したコンパイル言語です。 言語としてはオープン化していますが、 ほぼiOSアプリ開発向けに特化した言語となっています。範囲が狭いにも関わらずランキング9位に入っているということは、 iOSアプリケーションの重要性がとても高いということの証明にもなります。
Go
Google社によって2009年に公開された比較的新しい言語です。C言語に則ったコンパイル言語で高速に動作しながら、 モダンなコーディングスタイルでの記述ができることから、 一部のユーザーから強い人気を誇っています。
Javaが復活した理由
Javaが4位から2位に復活した理由を考えたとき、
「何故一時は落ち目になりかかったのか」
を考えなければなりません。それは「Javaの有償化問題」が発端でした。
Javaの「有償化」
2018年に、Oracle社はJavaのサポート方針の変更を発表しました。 ものすごく簡単に言うと、Javaの古いバージョンを商用利用する場合は、有償サポート契約をしろというものです。
Javaで作られたアプリケーションは古いバージョンが使えなくなると、約半年ごとに発生するバージョンアップに対応するために動作確認だけではなく追加開発が必要になる可能性があります。稼働しているシステムに半年ごとの見直しを行うのは現実的ではないため、Javaアプリケーションを使用している各企業は、どちらかの選択を強いられることになりました。
・有償サポート契約をしてOracle Javaを使う
・無償で使用できるOpenJDKに移行する
これによりJava離れが起こると懸念され、2018年には人気が4位まで落ちたのです。しかし、ふたを開けてみると、大きな状況の変化はありませんでした。
何故でしょうか。
大手企業が引き続きJavaのシステムを使用
勘定系システムを扱う大手企業は、大型コンピュータを用いた旧来のシステムから新システムに移行する際、多くがJavaを採用しています。その理由はシステムに組み込んでいる勘定系パッケージソフトの多くがJavaを使用していることと、Oracle社のサポートを受けられるということです。
Javaの権利は主にOracle社が持っており、Oracle社は世界トップシェアのデータベースを持っています。データベースとセットでサポートを受けられるというメリットが大きいのです。
同じくWeb系で長期のサポートが存在する言語といえば、 他にはMicrosoft社の.NETくらいでしたが、以前はWindows Serverでしか動作せず、 選択肢の幅が少ない、ライセンス料が高いなどの理由から敬遠されてきました。
大手企業にとっては、システムの変更により動かなくなってしまうリスクを考えると、お金がかかっても長期サポートを受けられる方が良いのです。
Javaの優位性
Javaがサポート有償化で大きくシェアを落とさなかったというだけではなく、Javaには他の言語が追い付いていない優位性があるため「まだまだJavaは使われ続けるだろう」 と再認識されたことが、順位が上がった要因に挙げられるでしょう。
○生産性の高いフレームワーク
Javaは開発案件が多いため、生産性を上げるためのフレームワークが多く提供されています。
2010年代にはStrutsやSeasar2といったフレームワークが登場し、 生産性の高い開発が可能となりました。2019年現在ではSpring Frameworkの人気が高く、 今でも継続的なバージョンアップが提供されています。
特に、SpringはWebだけでなくバッチの開発をするための機能も備わっており、 Springだけで基幹系システムが完結するとまで言われています。
○ 日本語での技術情報が豊富
Javaに限らず大抵の言語は、英語で公開されているものが多いです。
つまり、基本仕様などの一次情報は英語の資料を見なければわかりませんし、何か問題があったときに調べても、英語の情報しかないということがよくあるのです。しかしJavaは日本で扱っているITエンジニアが多く、日本語での技術情報が多く共有されています。その分問題解決により早く近づけるというメリットがあります。
○ 汎用性の高さ
やはりJava最大の特長である「マルチプラットフォーム」により、汎用性の高さは他の追随を許しません。JavaでAndroidからお堅い金融系システムまで網羅しているというのは、この先も代わりとなる言語はなかなか出てこないのではないかと思われます。
おわりに
人気プログラミング言語を見ると、新しく勢いがあるもの、昔から長く使われているものなど様々です。
それぞれ特徴や使われているシステムに違いがあるので、単純に比較はできませんが、シェアの高い言語の方がより多くのシステムに携われる可能性があると思います。
将来の可能性を考えつつ、新しいプログラミング言語を学習してみるのも良いのではないでしょうか。