様々な種類の言語を一覧で紹介します2019/05/07プログラミング言語は現在、JavaやPHP、C++、JavaScriptなどのメジャーなものから、日本語プログラミング言語ひまわりなどのマイナーなものまで、全世界で数百種類の言語が存在します。どの言語を選ぶかは目的によって様々ですが、今回は「求人を中心にした需要」という視点と、「何が作れるか」という2つの視点からプログラミング言語を紹介していきます。言語によって将来性や需要、難易度も異なるため、最初に学習する言語を選ぶ時、何を軸に選択するかの参考になれば幸いです。需要で選ぶプログラミング言語やりたいことから選ぶプログラミング言語おまけ:難易度で選ぶ勉強するにはまずは初めてみよう!需要で選ぶプログラミング言語まずはプログラミング言語の需要について考えてみたいと思います。ここでは大きく「求人の多さ」「平均年収の高さ」「シェアの高さ」の3つの観点から見ていきたいと思います。求人の多さまずは大手求人サイトのデータを元に比較してみたいと思います。今回は大手3社より実際に検索した結果の求人数トップ10のデータを使用します。求人の多さはすなわち言語の需要の大きさであり、市場規模の大きさともいえます。Webから基幹システム、ゲーム、スマホアプリまで様々な分野で開発言語として採用されているJavaは、どの求人サイトでも需要が多く、突出しています。純粋に求人需要と市場規模の大きさだけで選択するのであれば、Javaは安定した言語といえます。続いてWeb開発に欠かせないPHPも根強い人気を持ち、Javaに続く求人数を保っています。PHPは世界トップシェアのCMSであるWordPressなどでも使われており、多くのウェブサイトに採用されているため、今後も需要は安定しているといえるでしょう。Railsも、急激な市場成長にエンジニアの数が追いつかないため、需要が伸びつつあります。サーバーサイド開発環境の充実によってWeb開発全般に活用されるようになったJavaScript、基幹システムやアプリ開発、高速処理が必要なWeb開発で人気のあるC#、C++を始めとしたC言語系も求人数は安定しています。逆にSwiftやGO、Kotlinといった新しい言語はまだ市場の規模が小さく、求人数も二桁のものが多いため、求人需要が大きいとはいえません。平均年収の高さ求人件数と平均年収は、必ずしも正比例するとは限りません。求人件数が少なくても、市場の需要にエンジニアの供給が追いついていない言語や習得が難しい言語は、平均して年収が高くなる傾向があります。株式会社ビズリーチが運営している求人検索エンジン「スタンバイ」で公開されている「プログラミング言語別年収ランキング2018」によると、2018年でもっとも平均年収が大きかったのはGoogleが設計したGO言語で、平均は600万円(最大提示年収1600万円)でした。参照元:ビズリーチ(https://www.bizreach.co.jp/pressroom/pressrelease/2018/0807.html)なおおなじくJavaプラットフォーム上で開発できるScalaも平均600万円(最大提示年収1300万円)、3位がAI開発で広く使用されているPythonで、平均575.1万円(最大提示年収は1499万円)でした。平均年収(万円)最大提示年収(万円)求人件数GO6001,6002,202Scala6001,3001,489Python575.11,4999,344Kotlin5751,200961TypeScript5751,200667R574.81,000220Ruby5501,20011,676Swift5501,2003,353Perl5251,2004,509C5251,0009,347参照元:求人検索エンジン「スタンバイ」調べ求人件数ではGOの2202件に対し、Pythonは9344件と圧倒的な求人需要を持っています。Pythonに関しては、昨今のAIブームもあって需要は多いが供給が足りていない可能性があります。GOやScalaに関しては、純粋に需要に対して共有が足りていない、といえるかもしれません。シェアの高さ次にエンジニアが学習、使用している言語のシェアを見ていきましょう。今回はスタックオーバーフローより2018年の集計結果を参考に見ていきたいと思います。参照元:スタックオーバーフロー(https://insights.stackoverflow.com/survey/2018#most-popular-technologies)プログラミング言語ではないですが、Web開発に欠かせないHTML、CSS、JavaScriptやSQLなどを含めると、シェアは以下の通りです。参照元:スタックオーバーフローJavaScriptWebコンテンツの様々な部分で活用されるほか、バックサイドでも使用され、幅広い開発分野で活用されているため、高いシェア率を持っています。汎用性の高さがそのままシェアにもつながっています。Languageの名の通り、本来マークアップ言語として開発されていましたが、HTML5の登場で高度な処理に対応したAPIを利用できるようになり、HTML4以前と比較するとより高度な機能を持ったWebアプリを開発、構築することができるようになりました。CSSWebサイトを装飾するだけでなく、JavaScriptとHTML5と組み合わせることで、動的なWebアプリを構築でるスタイルシート言語です。HTMLと合わせてWebブラウザでの表示の際、事実上必須となるためこちらも高いシェアになっています。SQLRDBMS(関係データベース管理システム)において、データの操作や定義を行うデータベース言語です。TypeはMySQLを使用しています。SQLにはいろいろなものがありますが、DBを扱ううえで使う場合が多いため高いシェアとなっています。JavaIT企業などで多く使われる傾向にあり、特に大規模システムにおける大きな需要と市場を持つオブジェクト指向言語です。Androidの開発でも使用するため高いシェアとなっているようです。Bash/ShellUnixのコマンド言語です。Unix上で様々な処理をするために使用します。開発に使用するサーバーを扱う際に使う頻度が高いものになります。Python汎用性が高く、人気の言語ですが、最近では特に機械学習やディープラーニングなどで脚光を浴びています。Pythonの詳細はこちらC#C言語系列のオブジェクト指向言語です。WebアプリからWindowsアプリまで幅広く開発できます。最近ではゲーム開発のために使うフレームワークUnityなどでも使われているため、高い順位となっています。PHPWebアプリ開発ではトップシェアともいえる汎用言語で、主にスクリプト言語として活用されることが多いです。メジャーなプロダクトにWordPressなどもあり、いまだに高い順位を維持しています。C++C言語系列のオブジェクト指向言語で、大規模システム開発に活用されています。世界的に見るとやはり需要に対して習得者が増えるため、Webアプリに寄りがちなのは否めませんが、一方JavaやC#といったアプリでも使える言語、PythonなどのAI系で使われることが多い言語なども上がってきているのが特徴的です。やりたいことから選ぶプログラミング言語ここまでは全体的な立ち位置からプログラミング言語を紹介してきました。実際言語を選択する際もっとも重要なのは「何を作るか」ではないでしょうか。ここからは「何が作れるか」という視点でプログラミング言語を紹介していきたいと思います。スマホアプリを作るスマホアプリを作る場合、ベースになるOSによって言語が異なります。Java、KotlinAndroidOS用のアプリを開発する時の定番はJava、さらに近年はKotlinというJavaベースの専用言語が開発されました。スマホの普及に合わせて需要は今後ますます拡大するため、JavaとKotlinはAndroid用アプリ開発では必修の言語といえるでしょう。アプリ作成に使えるサンプルソースも多く、参考になる入門書籍やWebサイトが多数あるため、簡単なアプリ作成から始めるには最適な言語ともいえます。EclipseとよばれるIBMが開発したIDE(統合開発環境)を使用して開発できるのが特徴です。SwiftiOS、MacOSを始めとするApple製品で使用できるアプリを作成するための言語です。コンパイラ言語ですが、インタプリンタとしてスクリプトを実行することもできます。Appleが開発した統合開発環境Xcodeを使用して開発するため、WindowsOS上では開発できません。Apple製OS用のアプリ開発に用いられていたObjective-CやC++に代わって開発された言語であり、まだ登場したばかりの新しい言語でもあります。2019年3月にはSwift5が発表され、Swiftのライブラリが今後すべてのMacOS、tvOS、watchOSのバージョンに含まれることになりました。これにより、以前に比べてアプリのビルドが容易になり、アプリサイズも縮小されることになりました。Webサイトを作るPHPPHPはWebで動的なコンテンツを作成する言語としては、現在もっともメジャーな言語です。DBとの連携能力が強く、スクリプト言語として扱いやすく高速なため、多くの動的コンテンツで使用されています。CMSとして世界シェア60%以上を占めるともいわれるWordPressもこの言語で記述されています。ほとんどのレンタルサーバーに標準でインストールされており、実行環境の準備に手間がかからない点も便利な言語です。Ruby開発当時大きなシェアを持っていたPerlに対抗して開発され、パール(真珠)に対してRuby(ルビー)と名付けられた日本産の言語です。最新のマニュアルや開発情報などすべて英語と同時に日本語でリリースされるため、日本人にとっては多くの言語の中でも情報を取得し、また習得しやすい言語の一つです。Railsの需要が大きく拡大しています。可読性を重視した構文構造になっており、すべてのデータ型がオブジェクトになっている純粋なオブジェクト指向言語であることが特徴です。楽しく学び、楽しく使うことを目的とした実用性の高い言語でもあります。JavaScriptWebアプリ開発において避けては通れない言語です。登場当初はHTMLで記述されたWebサイト上に簡単な動的表現をする程度にとどまっていましたが、現在はサーバーサイドJavaScript実行環境や各種のライブラリが充実したことにより、Web開発全般で活用されています。Nativeのように、モバイルアプリ開発も可能です。HTML、CSSと組み合わせることにより、よりインタラクティブなWebアプリが開発できるため、Webアプリ開発をするためには必須ともいえます。デスクトップアプリを作るC#Windows向けのデスクトップアプリの開発言語としては鉄板のメジャーな言語です。Framework上で動き、メモリ管理が得意な言語でもあります。そのため、大きめのアプリを開発するのにも活用されています。Webアプリの開発でも高速性を活かして使用されています。最近モバイルやブラウザのゲームアプリ開発で人気が上昇しているUnityは、C++をベースにエンジンが記述され、Unityscript(JavaScript)とC#、Booの3つのプログラミング言語に対応しているクロスプラットフォームゲームエンジンです。近年急激に市場が拡大しているAI開発・機械学習のプログラムを作るのであれば、PythonまたはRの二択になります。他の言語でも作成はできますが、業務レベルでの実用性ではライブラリの充実度を含め、この2つの言語に遠く及びません。PythonAIといえばPythonといえるほど、ディープラーニングの分野で脚光を浴びている言語です。汎用プログラミング言語として開発され、コードの高い可読性と書き安さが特徴です。本体は非常に小さく、様々なライブラリに対応することで豊富で膨大なツール群を抱え、目的に合わせてユーザーが環境と機能を拡張していくことができます。Pythonは多くのOSとハードウェアに対応しており、クロスプラットフォーム開発にも向いています。き型、関数型などの複数の形式でプログラムを記述することができます。開発当初からデータサイエンスや科学技術コンピューティングに用いるよう開発されているため、その点がディープラーニングの要件にマッチしたことにより、PythonはAI開発と機械学習で活用されるようになりました。R言語データ解析・統計プログラミングとして開発された言語であり、学術や研究の分野で活用されていました。設計開発の時点から統計解析言語として作られているため、データの分析や統計の解析に関して特化しており、他の言語と比較しても群を抜いて優秀な言語といえます。R言語もPythonと比較しても劣らない拡張機能やライブラリが充実しています。RStudioとよばれるIDEがあるため、導入のハードルが低く、機械学習向けパッケージを導入することで容易に機械学習環境を整えることができます。おまけ:難易度で選ぶ習得難易度の高い言語はどうしてもある程度のレベルに到達する前に挫折しそうになるものです。そこで、今回は「おまけ」として筆者の主観で難易度をリスト化してみました。難易度(筆者の主観)備考PHP低テキストエディタでも作業ができ、比較的容易にある程度の開発ができますが、DBを活用する場合SQLの知識も必要です。Ruby低テキストエディタで開発が可能で可読性が高く、日本語のヘルプが充実しているため、習得までは比較的容易です。簡単な記述はすぐに習得できますが、サーバーサイド開発まで踏み込むと習得が急激に難しくなります。GO低~中シンプルな構造を持っており、プログラミング入門者にうってつけの言語です。Java中ポピュラーな言語でサンプルコードも多くEclipseのようなIDEもありますが、業務レベルでの習得難易度はかなり高めです。開発環境はMacOS上に限られるため、ハードウェアの面で制約があります。Scala中JavaVM上で動作するハイブリッド言語なので、完全な初心者には少しハードルが高めです。可読性の高いコードとサンプルが多いものの、ディープラーニングのための統計処理には言語以外の知識も必要になります。C#中~高C言語系は一般的に業務レベルでの習得が難しく、C#も例外ではありません。統計プログラミング言語のため、習得の難易度は若干高めです。言語の難易度は人によって大きく変わります。これは一通りさわってきた筆者の体感ということで参考になれば幸いです。勉強するにはでは実際に、言語を学習する時に、どんな方法があるのでしょうか。何をどのように学びたいのか、どれくらいの熟練度を目指したいのかによっても、方法は大きく異なりますが、ここでは大きく、書籍、ウェブ、スクールの3つに分けて解説します。書籍で学ぶ入門からある程度の応用、熟練者向けの技術書まで様々な書籍があります。プログラミング経験がない人が初めて言語に触れる場合、環境構築から言語の構造や考え方、該当の言語を取り巻く環境や需要の解説、初歩的なプログラムコードのサンプル、応用まで体系が一本にまとまっているため、1冊入門書を購入して始めるのが良いでしょう。オライリー社の「はじめての~」シリーズはゼロから学べ、網羅的に書かれているためおすすめです。ウェブで学ぶオンラインにはプログラミング言語によって、言語の公式サイトを始めとして様々な情報サイトがあります。Kit(SDK=ソフトウェア開発キット)も配布されているため、まずは言語に触れてみたいという人はオンラインの初心者向け入門サイトを探してみるのが良いでしょう。サンプルになるソースコードを公開しているサイトも多く、ソースコード共有サイトともいえるGithubなども活用すると中級以上のスキルを身につけることができます。必要な情報を検索する力だけでなく、より高度な情報を調べる場合は英語力が必要になる場合があります。スクールに通うお金をかけて一定の期間で一気に習得するなら、プログラミングスクールに通うのも手軽でおすすめです。現在はオンラインスクールが多く、TechAcademyやCodecamp、TECH::CAMP、ドットインストール、Progate、Paizaなど様々な特徴のあるスクールが展開しています。言語によってはクラウド上に開発環境を持つスクールもあり、SDKの導入や開発環境の下準備が不要ですぐにコードに触れることができます。動画やチュートリアルが用意されているスクールも多く、項目に沿って学ぶことで、短時間で効率的に言語を習得することができます。スクールによっては入門向けの講座は無償で公開されていることもあるため、目的や自分の技術のレベルに合わせてスクールを選ぶ時に、いろいろと試すことができます。みよう!どの言語を選択するのか、選び方は様々です。言語によって得意な開発の分野や求人需要も異なり、関連する言語の系統も大きく変わります。需要の大きい言語を学んで収入アップやキャリアチェンジを目指すのか、作りたいものがあるから言語を選ぶのか、自分自身の目標をまずはどこに置くかが学習する言語を選ぶ大切なポイントといえます。プログラミング言語を一つ習得すると次の習得は格段に楽になるため、まずは一つ初めてみることが大切です。この記事を参考に是非、最初の言語を始めてみてください。コード4763)が運営しています。(JIPDEC)より「プライバシーマーク」の付与認定を受けています。