プログラミング言語の人気の『浮き沈みの法則』を考えてみた
「今後伸びそうな言語ってどういう言語だろう?」
どうせ学ぶなら、今後伸びていく言語を選びたいものです。
といっても、何が流行るかはその時になってみないと分かりません。
「いえ、ある程度は予測できます、過去の歴史を見ていけば!」
そんなわけで今回は過去20年程度のプログラミング言語の浮き沈みの法則を考えてみます。
Contents
PCソフトの開発でVisual Basic6が流行った時代(1995年〜2000年代前半)
私がプログラミングを始めたのは1998年、情報処理の専門学校ででした。
当時授業で教えていたのは主に、
- Visual C++6(VCと略す)
- Visual Basic6(VBと略す)
でした。HTMLやJavaScriptもちょろっとはやっていましたが、メインはC++とVBだったんです。
当時はWindowsのソフト開発の需要が高かったので、このようなカリキュラムになっていたのでしょう。
C++でWindowsのアプリケーションを作ろうとすると、ウィンドウを一つ表示してラベルにHello Worldと表示するだけで1000行以上のコードが必要でした。
それに対してVBならば、コードを一行も書かなくても開発ツールでラベルをドラッグアンドドロップするだけで、同じものが作れたんです。
ですから、業務アプリケーション開発の分野ではVBでクライアントアプリを作って、サーバー側をC++で作るようなシステムが流行りました。
ということで一つ目の法則です。
法則1:生産性の高い言語が普及する
Webアプリケーション開発でJava, PHPが流行った時代(2000年代前半〜後半)
VBの時代には、開発したソフトウェアをPCに一台一台インストールしていしましたが、インターネットの普及によりWeb技術が発展したことで、業務アプリケーションもWebで構築しようという流れになりました。
Webアプリケーションならばブラウザさえあれば、ソフトウェアのインストールが不要となります。これは大きなメリットです。ソフトウェアのバージョンアップ時にもWebアプリならば何もする必要がなくて非常に便利です。
業務系Webアプリケーション開発で一番使われたのはJavaでした。Javaは元々ブラウザ上で動くちょっとしたゲーム等を開発する為のアプレットという技術が中心でしたが、Webのサーバーサイドを実装する技術(Servlet, JSP, JDBC)の誕生によって、Webアプリケーション開発の分野で花開きました。
コンシューマ向けWebサービスの分野ではPHPが流行しました。Yahoo JapanやFacebook等の世界有数のインターネットサービスで採用される等、Web開発の中心技術となりました。
法則2:ソフトウェア形態の転換(PCインストール型→Web)によって新たな言語の需要が生まれる
Web2.0でJavaScript(Ajax)が流行った時代(2000年代中盤〜2010年代前半)
Web2.0という言葉が流行った時代がありましたよね。
Web1.0ではHTML等の専門知識のある人だけがWebサイトで情報発信していたのに対して、Web2.0ではブログやSNSが生まれて、Webの専門知識がない人も情報発信できるようになりました。
またGoogleマップによってJavaScriptが見直されて、AjaxというリッチなWebの操作性を生み出す技術が生まれました。
それまでのJavaScriptはちょっとした入力チェックくらいにしか使われていませんでしたが、GoogleMapのような画期的なアプリケーションがリリースされた結果JavaScriptの可能性が大きく見直されることとなりました。
法則3:キラーアプリケーションの登場によって下火だった技術がブレイクすることがある
この法則はPythonが2010年代後半で大ブレイクしたのにも当てはまります。
AIの技術的ブレイクスルー(ディープラーニング)とCPU・GPUの高性能化によるAIが現実的に活用できる状況になりました。そのタイミングでPythonはAI、機械学習の分野で豊富なツール・ライブラリを備えていたため大ブレイクしました。
スマホアプリ開発でObjective-C, Swift(iOS), Java, Kotlin(Android) , C#(Unity)が流行ってる現在(2010年代前半〜)
初期のiPhoneが発表された頃は、「話題にはなったけど、そんなに普及しないんじゃないかなぁ」などと高をくくっていました。が、その後あっという間に普及して、現在はWebサイトのアクセス数もスマホからが半分以上になっています。
スマホアプリの分野ではLINEのようなチャットアプリが大人気となりメールにとって代わる存在となりました。
スマホゲームの分野ではパズルアンドドラゴンやモンスターストライクが大ヒットしてスマホゲームバブルが起きました。その後、ポケモンGoでAR時代幕開けかと言われています。
法則4:新しいデバイスが流行るとそこで動くソフトウェアを開発できるプログラミング言語が流行る
iPhoneやiPadのようなiOS上で動かすネイティブアプリを開発するプログラミング言語はObjective-Cだけでした。Objective-CはC言語をベースにしていますが、文法が独特過ぎて、非常にとっつきにくく修得が難しい言語です。
しかし、iOSアプリのネィティブAPIを直接使えるのはObjective-Cだけでしたので、爆発的に普及しました。現在はAppleが新たに開発した新言語Swiftを使ってiOSアプリを開発できるようになりました。
SwiftはObjective-Cと違ってとても一般的な文法をしていて修得しやすい言語になっています。
法則5:とっつきにくい言語でも、それしか開発手段がなければ流行る
今後、流行る言語を予想すると?
ここまでで見出した法則に基づいて予想できることは、新たなデバイスの普及によって、その開発言語が流行ることです。
今後新たに流行りそうなデバイスとしては、
- Apple Watch
- Android Wear
- Google Glass
等のウェアブル端末があります。これらのデバイスで動作するアプリケーションはスマホアプリと同じ言語で開発できるので、
- Apple WatchならSwift, Objective-C
- Android Wear・Google GlassならKotlin, Java
で開発できます。これだと、新たに流行る言語ってことにはなりませんね。
新し目の言語としてはGoやScala、Node.jsがありますが、これらの言語でしか開発できないアプリケーションというものがないので、爆発的に普及するということは考えにくいです。
流行ってから始めるでもOK
私は2014年にC#とUnityを独学してスマホゲームエンジニアに転身できました。2014年はUnityがすっかり流行ってる状態でしたが、そこから初めても十分職を得られましたし、ある程度流行ってから始めたほうが学習するための書籍やWebサイトも出そろっていて効率よく学べます。
言語を学ぶのに一番手っ取り早い方法は、仕事で使うことです。独学である程度基本を学んだら、入れる会社はたくさんあります。
私の場合、Javaのサーバーサイドのエンジニアを長い間やってきたので、
「このままずっと、一生Javaやってくのかなぁ…」
と思っていたんですが、C#とUnityを独学してゲームのクライアントサイドエンジニアに転身できた経験によって、エンジニアとしての可能性が広がりました。今後も何度でも新しい言語・技術にチャレンジできるメンタリティになったんです!
使いたい言語が今いる会社では使えないという方は転職活動を始めてみることをおすすめします。転職活動するといろいろな会社や仕事があることを知れて、視野が広がってエンジニアとしての可能性を拡張してくれるはずです!