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

      2016/12/29

気持ちよさそうに寝る猫

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

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

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

そんな状況を踏まえて、主要プログラミング言語の将来性を考えてみたいと思います。

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

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

Dec 2016 Dec 2015 Change Programming Language Ratings Change
1 1 Java 17.856% -3.12%
2 2 C 8.726% -7.73%
3 3 C++ 5.335% -0.61%
4 4 Python 4.239% -0.19%
5 7 Visual Basic .NET 3.302% +0.91%
6 5 C# 3.171% -0.94%
7 6 PHP 2.919% +0.13%
8 8 JavaScript 2.862% +0.50%
9 11 Assembly language 2.539% +0.61%
10 9 Perl 2.338% +0.13%
11 15 大幅↑ Objective-C 2.325% +0.97%
12 10 Ruby 2.147% +0.09%
13 14 Swift 2.134% +0.73%
14 12 Visual Basic 1.967% +0.31%
15 13 Delphi/Object Pascal 1.950% +0.31%
16 50 大幅↑ Go 1.939% +1.74%
17 18 R 1.826% +0.70%
18 16 MATLAB 1.818% +0.65%
19 24 大幅↑ Groovy 1.786% +1.01%
20 19 PL/SQL 1.495% +0.39%

このランキング時々見てるんですけど、急激にランキングが入れ替わったりは少ないんです。大抵JavaかCが1位2位を争う感じでRatingも3位のC++から一気に下がって5.3%ですから、「Java、C言語」とその他って感じのようです。

ここ数年で大きく動いたのはObjective-Cが下がってSwiftが上がったことだと思います(今はまたObjective-Cが盛り返してきたみたいですが)。それ以外の言語はじわじわと上がったり下がったりといった感じです。

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

海外と日本の違い

「Pythonは海外で流行ってるのに日本ではRubyに人気を奪われたため流行っていない」

「Javaのフレームワークは日本では未だにStruts1が使われてるけど、海外ではSpringやPlay、JSFに移ってる」

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

グローバル化と言っても完全に均質化するわけではないですし、そうなってしまっては面白くありません。

自分的にはPythonよりRubyが好きですし、業務システム開発をやってた身としてはStruts1が未だに使われているのも納得がいきます。業務システム開発の分野は技術革新にかなり保守的ですからね。

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

関数型言語化していく?

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

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

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

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

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

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

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

静的型言語の復権?

2000年から2010年くらいまでのトレンドは「Javaみたいな静的型言語ってコンパイルめんどいし、コードも冗長だからPHPやRubyの方がサクサク開発出来て良いよね」って感じだったかと思います。

ところがここ数年は「JavaScriptにも型があった方がいいよね」とTypeScriptやECMAScriptからJavaScriptへと変換(トランスパイル)するAltJSの人気が出たり、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が使えない」なんでこともありうると思います。もしそうなったら、新たに、どの言語が採用されるのかは楽しみですよね。Goなのか、JavaScriptなのか、AppleのSwiftみたく新言語が発表されるのか等。

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

なんにせよ、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を使わなければならないと知ったら、「じゃあ、使わねーよ」となってしまうかもしれません。

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

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

C#の将来予想

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

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

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

JavaScriptの将来予想

TypeScript, Dart, CoffeeScriptのようなAltJS経由で書かれるようになり、JavaScriptを直接書くことは減ってくんじゃないかと言われてましたが、今はECMAScriptからJavaScriptへトランスパイルするという流れに収束しているようです。

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

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

古いブラウザーがなくなり、ECMAScriptを直接書けるようになったら開発者としては嬉しいんですけどね。

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

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

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

IOが発生する所を全てコールバック関数で結果を受け取らなければならないので、コールバックがネストしていって、いわゆるコールバック地獄ってやつです。

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

現在はyield構文が導入されてコールバック地獄はなくなったようですが、やっぱり普通に同期IOの書き方が出来たほうが簡単なので、node.jsがサーバーサイドのメインストリームになることはないとおもいます。

好きなプログラミング言語を仕事にしよう!

私は就職してから10年くらいJavaを使っていましたが、段々とプログラミングが楽しくなくなっていました。

そんな時、趣味でPHPを使ってみたら楽しくて、別の言語に移ることへの抵抗がなくなり、node.js、Ruby、C#と様々な言語を使うようになりました。

仕事も思い切って変えて、Unity(C#)でスマホゲームの開発をするエンジニアに転身しました。

そしたらプログラミングの楽しさを取り戻せたんです。

「最近仕事が面白くないなぁ」という方は、使いたいプログラミング言語を使える会社に思い切って転職するのも良いと思います!

毎日の仕事が新鮮で楽しくなるし、スキルもそっちの方が絶対伸びると思います。

転職はやってみると思ってたより簡単!

私自身3回ほど転職してるんですが、思ってたより簡単で、転職エージェントを使ったらあっという間でした。

エージェントが応募先候補の選出から、面接の日程調整までやってくれるので、こちらから動かなくても半分くらい自動的に進む感じで楽でした。しかも今は好景気で売り手市場なので転職するのにちょうど良い時期です。

レバテックキャリアっていうエージェントがおすすめです。

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

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

なので、レバテックキャリアのホームページ見てみてください。「ホントだ、美人じゃん♪」ってきっと思うはずです笑

地方在住や、エンジニア未経験の人にも使える転職エージェントがある!

レバテックキャリアは東京・大阪近郊のエンジニア経験者向けサービスなので、地方在住の方や、エンジニアの仕事が未経験の方には、DODAがおすすめです。

未経験の人はサポート対象外のエージェントが多いんですけど、DODAは未経験者の転職も支援してくれます。以前エンジニア未経験の友達にDODAを教えてあげた所、ちゃんと登録できて未経験可の求人を紹介してもらえました。未経験の人こそエージェントから職務経歴書の作り方や面接の仕方のレクチャーを受けた方がずっとうまくいくと思います。

DODAは全国に拠点があるので地方在住の方もご利用いただけます。

人脈がなくてもフリーランスになれる!

フリーランスになりたい方にはギークスジョブがおすすめです。人脈がなくてもギークスジョブに登録するだけで案件を紹介してもらえます。案件の希望(どんな技術を使っているか、残業が少ないこと)等も聞いてくれるので、やりたい仕事が出来ます。対象地域は東京・大阪・名古屋・福岡近郊です。

「派遣社員」なら正社員とフリーランスのいいどこ取り!

フリーランスになりたいけど、確定申告とかめんどくさいなという方には派遣社員がおすすめです。派遣ってネガティブなイメージありますが、ITエンジニアの派遣社員ならやりたい仕事を選べて、給料も悪くないですし、確定申告や年金、健康保険も派遣会社が入ってくれるのでいいと思います。私の先輩でフリーランスになった後、派遣社員になった人がいるんですが「自由かつ煩わしい手続きがなくて最高」って言ってました!パーソルテクノロジースタッフに登録するだけで簡単に派遣社員になれます。

私(やまろう)への相談メールも募集中

転職や仕事術、勉強法等について質問や相談がありましたら、以下のメールフォームからぜひご連絡ください。
経験者から見れば簡単に解決できる相談って多いのでお気軽にどうぞ!こう書いてもなかなかメールくれる人って少ないのでホント気軽にメールしてくれると嬉しいです。

メールアドレス (必須)

相談内容

たまに間違ったメールアドレスを入力されていて返信できない場合があります。一週間経っても返信がない場合、メールアドレスを確認の上、再度送信をお願いします。

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

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

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

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

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

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

エンジニア未経験の方や地方在住の方には『DODA』

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

未経験の人はサポート対象外のエージェントが多い中、DODAは未経験者を支援し転職を成功させています。未経験の方こそエージェントから職務経歴書の作り方や面接の仕方のレクチャーを受けた方がずっとうまくいきます。

フリーランスになりたい人には『ギークスジョブ』

フリーランスエンジニアになるには人脈が必要と思われがちですが、ギークスジョブに登録して希望条件を伝えれば、自分に合った案件を紹介してもらえるんですよ!思ってるより全然簡単にフリーランスってなれるもんなんです。

東京・大阪・名古屋・福岡の案件を紹介してもらえます。

 - 技術