主要プログラミング言語の将来性を考えてみた

      2017/09/06

気持ちよさそうに寝る猫

「PHP、Perlはオワコンってよく言われてるからRubyやPythonがいいのかなぁ?」
「Javaは言語仕様が古くてコードが冗長って言われてるけど、未だに使われてるよな?」
「関数型言語ってそろそろ学んだ方がいいのかなぁ?」

ネットでは「○○(言語名)はオワコン」みたいなことがよく言われていますが、そこで挙げられた言語は今もなお使われ続けています。よく非難されているのはJava、PHP、Perlですよね。

どれも未だ現役で、PHP、Javaに至っては求人数トップ2の言語です。

これらを踏まえて、主要プログラミング言語の将来性を考えてみます。

世界のプログラミング言語ランキング

2017/6のTIOBE Index(プログラミング言語のランキング)は以下のようになってます。

Jun 2017 Jun 2016 Change Programming Language Ratings Change
1 1 Java 14.493% -6.30%
2 2 C 6.848% -5.53%
3 3 C++ 5.723% -0.48%
4 4 Python 4.333% +0.43%
5 5 C# 3.530% -0.26%
6 9 Visual Basic .NET 3.111% +0.76%
7 7 JavaScript 3.025% +0.44%
8 6 PHP 2.774% -0.45%
9 8 Perl 2.309% -0.09%
10 12 Assembly language 2.252% +0.13%
11 10 Ruby 2.222% -0.11%
12 14 Swift 2.209% +0.38%
13 13 Delphi/Object Pascal 2.158% +0.22%
14 16 R 2.150% +0.61%
15 48 大幅↑ Go 2.044% +1.83%
16 11 大幅↓ Visual Basic 2.011% -0.24%
17 17 MATLAB 1.996% +0.55%
18 15 Objective-C 1.957% +0.25%
19 22 Scratch 1.710% +0.76%
20 18 PL/SQL 1.566% +0.22%

ここ数年で大きく動いたのはObjective-Cが下がってSwiftが上がったことです。あとは、Goですね。48位から15位まで上がっています。

それ以外の言語はじわじわと上がったり下がったりといった感じです。

Objective-CとSwiftはAppleの、Go言語はGoogleのゴリ推し言語なので、例外的なランク変動だと考えるとプログラミング言語の人気って急激に変わるものではないと考えられます。

ただ、Ratingには大きなポイントが現れています。

実はJavaがダントツ?

今までは大抵JavaとCが1位2位を争う感じだったんですが、ここに来て、Javaがダントツの1位(Raitingが14.493%)となっています。2位のC言語が6.848%なので、大分差がついてます。3位のC++とは5.723%と微差なので、数字的には「Java VS その他言語」といった状況であることが読み取れます。

海外と日本の違い

  • Pythonは海外で流行ってるのに日本ではRubyに人気を奪われたため流行っていない
  • Javaのフレームワークは日本では未だにStruts1が使われてるけど、海外ではSpringやPlay、Java EEに移っている

なんて話をよく聞きます。

まぁ、日本は日本なので必ずしも世界の潮流を追う必要はないですし、日本がこのような状況なのにも納得がいきます。

Rubyは文法が洗練されていて書いていて楽しいですし、業務システム開発では技術革新よりも安定した品質でシステムを開発・運用していくことの方が優先度が高いですからね。

Pythonについては日本でもAIブームによってユーザー数が爆増しそうなので状況は変わっていきそうです。

最近のプログラミング言語の進化の傾向

関数型言語化していく?

高階関数、クロージャ等の関数型言語の仕組みを取り入れる言語が増えてきています。

っと言ってもJavaScriptは元から持ってた仕組みなんですけどね。例えば高階関数は以下のようなものです。

calculate関数がoperationFunctionという関数を引数として受け取っている所がポイントです。これが高階関数です。

addという足し算する関数を渡すと足した結果が返ってきて、divideという割り算する関数を渡すと割った結果が返ってきます。

渡された関数を実行する前後でログ出力をしています。
この仕組みを使えば、計算の種類が増えてもログ出力のコードを何度も書かなくて済みます。

オブジェクト指向言語だと、Strategyパターンを使って同じようなことができますが、高階関数を使えば、関数だけで簡潔に実現できます。

Javaの場合、高階関数・クロージャはJava8(2014年)でようやく導入されました。C#では高階関数のことをデリゲートと言いますが、2005年に導入されています。この部分だけで見るとJavaはC#に比べて9年遅れた言語と言えます。

静的型言語の復権?

2000年から2010年くらいまでのトレンドは、

「Javaみたいな静的型言語ってコンパイルめんどいし、コードも冗長だからPHPやRubyみたいな動的なスクリプト言語の方がサクサク開発できて良いよね」

って感じだったかと思います。

ところがここ数年は、

「やっぱ、JavaScriptにも型があった方がいいよね」

と静的型言語であるTypeScriptからJavaScriptへの変換(トランスパイル)する技術や、GoやScalaのような「静的型言語だけど、簡潔な書き方ができる言語」も生まれました。

トレンドが動的型言語に傾いていたのが、静的型言語へと揺り戻されているように感じられます。

それでは上記を踏まえて主要プログラミング言語の将来性を考えてみます。

Javaの将来性予想

おそらく、10年後も業務システム開発では一番使われてると思います。

Webサービスやゲームのバックエンドでは、少しずつ別の言語へとシフトしていくのではないかと思われます。

Javaのいい所は、他の言語に比べて処理速度が速いことです。と言ってもC言語に比べれば遅いわけですが、LL言語(Perl, PHP, Ruby, Python)に比べてずっと速いんです。

そのため、Webサービスやゲームのバックエンドで処理性能が求められるような高負荷システムでもJavaが使われてきましたが、LL言語の性能も改善が重ねられていますし、GoやScalaのようなJava以外で処理性能の高い言語が出てきたため、今後はこの分野でのJavaの利用が減っていくのではないかと考えられます。

ただ前述した通り、業務システム開発では技術革新よりも安定稼働が重要ですし、これまでにJavaで開発してきたコード資産も膨大なので、引き続きJavaが使われていくと思います。

Javaのもう一つの使われ方としてAndroidアプリ開発がありますが、こちらはGoogleとOracleとのJavaの特許・著作権紛争がどう決着するかによっては「Androidアプリ開発にJavaが使えない」なんでことも心配されています。

これについてrebuild.fmでは「GoogleはAppleのように開発者に負担を強いるようなことはしないだろうから、裁判で負けてもOracleにライセンス料を払ってAndroidでJavaはずっと使えるようにするんだろう。」という話がされてました。

2017年5月には、GoogleがKotlinをAndroid開発言語として正式にサポートすることを発表しました。KotlinはJava VMで動く言語です。Javaよりも文法が簡潔で生産性が高いとの評判です。案外このKotlinがJavaのシェアを奪っていくなんて展開もあるかもしれません。

PHPの将来性予想

今後もWebサービスやスマホアプリ・ゲームのバックエンドで使われ続けると思いますが、徐々にRubyにシェアを奪われていくのではないかと思います。

言語としてPHPよりもRubyの方が洗練されていると感じるからです。

ただ、ちょっとしたWebサービスをインスタントに作ってレンタルサーバで運用するようなケースではPHPの方が断然向いていると思います。それに、世界で最も使われているCMSであるWordPressがPHP製なので、今後も大きな需要があり続けることは明白です。

Rubyの将来性予想

徐々にPHPやJavaのシェアを奪っていくのではないかと思います。

そのためにはWindows上での動作レベルがUnix系OS上でのレベルに追いつく必要があります。Rubyの外部モジュールのいくつかはWindows上ではまともに動きません。

Javaエンジニアの多くはWindowsPC上でコードを書き、単体テストをしています。JavaエンジニアがRubyを使い始めた場合、WindowsPCで開発を行うはずです。その際にエラーが多発して、Rubyをまともに動かすにはMacPCかデスクトップLinuxを使うか、WindowsにLinux仮想環境を構築しなければならないと知ったら、「じゃあ、使わねーよ」となってしまうかもしれません。

…と思っていたのですが、Windows10でBash on Ubuntu on Windowsが導入され、Windows上でもLinux環境を手軽に使えるようになってきたので心配無用のようです。

とはいえ、最近は「やっぱ静的型があった方が良いよね」って流れがあるので、もしかしたら、ScalaやKotlin、Goにシェアを奪われていくなんてこともあるかもしれません。

C#の将来予想

今後もMicrosoft製品では使われていくであろうということと、UnityみたいなMono環境での利用が伸びる可能性があります。

Monoというのは.NETのオープンソース版で、これをゲームエンジンに応用したのがスマホアプリ開発でデファクトスタンダードとなりつつあるUnityです。

私もUnityをがっつりやってC#を初めて使ったのですが、C#はJavaに比べて簡潔に書ける工夫がなされていて、とても良い言語だと感じました。

JavaScriptの将来予想

TypeScript, Dart, CoffeeScriptのようなAltJS経由で書かれるようになり、JavaScriptを直接書くことは減ってくんじゃないかと言われてましたが、AltJS競争はどうやらTypeScriptが生き残りそうな模様です。

一方最新仕様のECMAScriptからブラウザで動作するバージョンのJavaScriptへトランスパイルするのも人気です。

といっても、これは最先端の開発をしている企業での話であって、多くの企業ではJavaScriptを直接書くパターンが多いんじゃないかと思います。

というのも、JavaScriptはそこまで生産性の低い言語ではないと思うんです。割と簡潔な記述ができるし、ちょっとしたものをささっと早く作るのに向いてると思います。

それにトランスパイルするのって意外と時間かかってめんどくさいですからね。

なんにせよ、ブラウザで動く唯一の言語なので需要が一番安泰な言語だとも言えます。

一方、node.jsのようなサーバーサイドでの利用はどうかというと、爆発的に伸びそうではありませんが、使わていくと思います。

node.jsは趣味でリアルタイムブラウザすごろくゲームを作った際に使ったのですが、正直しんどかったです。

IOが発生する度にコールバック関数で結果を受け取らなければならないので、コールバックがネストしていって、いわゆるコールバック地獄になってしまいます。Promiseなどのコールバックのネストを抑える技術もありますが、それでもふつうの同期IOに比べてプログラムが複雑になってしまいます。

node.jsをしばらくやった後、PHPに戻ったら、「同期IOのプログラミングってなんて楽なんだぁ!」と感動しましたからねw

ですから、node.jsがサーバーサイドのメインストリームになることは難しいんじゃないかとおもいます。

そんなわけで、プログラミング言語の将来性について、自分が使った経験や聞いた話、技術の流行などから、予想してみました。参考にしてもらえたら、うれしいです!

プログラミング初心者におすすめのサービス
1. 講師から対面で学びたい派なら

プログラマカレッジをおすすめします。ProEngineerという転職エージェントが運営しているプログラミングスクールです。20代限定なんですが、無料で受講できて、修了後、就職支援もしてくれるんです。最高過ぎですよ、これ!!就職の紹介料を企業からもらえるのでスクールを無料にできるんでしょうね。すばらしいシステムだと思います!

30代以上の方には

プログラマカレッジは20代限定なので30代以上の方にはWebCamp Proをおすすめします。受講料の返金保証がついているし、毎日11時〜23時まで通い放題なのでとてもいいと思います!

2. 自宅で学びたい派なら

「就職保証付き」オンライン就職予備校をおすすめします。Javaエンジニアコースでは就職保証がついているのでプログラマーとして就職したい方にはぴったりです。Javaエンジニアの求人ってめっちゃ多いし、求められる技術レベルもそこまで高くないのでちゃんとした教育プログラムなら就職保証できるだろうなとJavaエンジニア経験者の私も思います。

3. つまづいた時に質問したくなったら

プログラマー専用の質問サイトteratailをおすすめします。 つまづいた時にteratrailで質問すれば教えてもらえます。

これらのサービスを活用すれば、全くの初心者からでもプログラミングをばっちり出来るようになると思います!レッツトライです!

エージェントを使った方が転職活動は楽です

東京・大阪近郊のイケてるIT企業に転職したい人には『レバテックキャリア』

 東京・大阪近郊のエンジニア経験者向け転職サービスです。

このサービスを運営しているレバレジーズという会社はシステム開発もやっているので、現場の仕事をよくわかってくれてますし、ヒカ☆ラボというIT系の勉強会なども主催していたりteratailというプログラマー専用の質問サイトを運営してて好感が持てます。求人案件もWebやスマホの面白い仕事が多いのでいいと思います。

ホームページを見ると分かるんですが、若くて美人の担当者が多いのもナイスなんです!私の場合(たぶんあなたも)、担当者が美人だと転職活動のモチベーションめちゃ上がりますからね笑

エンジニア未経験の方や地方在住の方にはワークポートというエージェントをおすすめします。

エンジニア未経験の方や地方在住の方には『ワークポート』

全国の求人を扱っていて、しかもITエンジニア未経験の人にも転職支援をしてくれるエージェントです。

未経験の人はサポート対象外のエージェントが多い中、ワークポートは未経験者を支援し転職を成功させています。

未経験の方こそエージェントから職務経歴書の作り方や面接の仕方のレクチャーを受けた方がずっとうまくいきます。

『派遣社員』なら正社員とフリーランスの『良いとこ取り』!

  • 「フリーランスになりたいけど、確定申告とかめんどくさいな」
  • 「定時帰りできる職場や、時短勤務がしたい」

という方には派遣社員がおすすめです。

派遣ってネガティブなイメージありますが、ITエンジニアの派遣社員なら

  • 時給が高く、給料も悪くない
  • やりたい仕事を選べる
  • 確定申告不要(派遣会社がやってくれる)
  • 厚生年金、健康保険も派遣会社が入ってくれる

ので、正社員とフリーランスのいいとこ取りな、とてもいい選択なんです。

 - 技術