仮想サーファーの波乗り

仮想サーファーの日常

プログラミング・エンジニアのスキルアップ・ブログ運営などに関してよく書く雑記ブログ

【現役エンジニア解説】2020年に初心者が最初に学ぶべきプログラミング言語


f:id:virtual-surfer:20191211234904p:plain

「プログラミングを学んで、自分に向いているならエンジニアとして転職したいけど、最初に学ぶ言語ってどれがいいんだろう?」

「2020年にプログラミングを学び始めるなら、どの言語をどんな目的で学べばいいんだろう?」

と、最初のプログラミング言語って何がいいのか、悩んでしまいますよね。


ぼく自身も未経験からエンジニアに職種を変更する決断をしたとき、最初に学ぶべきプログラミング言語がわからなかったので、いろんな記事を読みあさった記憶があります。

今回は、2020年これからプログラミングを学び始めるならどの言語がオススメなのか、現役Webエンジニアとして働いている立場のぼくが「初心者の学習のしやすさ」と「求人・案件数の多さ」と「今後の需要が伸びる可能性」の観点から紹介していきます。


プログラミング初心者が最初に学ぶ言語の重要性

プログラミングを勉強する上で、なぜ最初に学ぶ言語選びをこだわる必要があるのか。

大きく3つの理由があります。

最初に学ぶプログラミング言語選びが重要な理由

  • プログラミング言語にはそれぞれ、特徴と学習難易度があり、初心者に向いている言語と向いていない言語がある。
  • プログラミング言語によって、募集されている求人や案件数の多さが異なり、プログラミングを使って仕事ができるチャンスが大きく変わってくる。
  • 数年前に人気だったプログラミング言語も数年後には使われなくなり、仕事が見つからなくなってしまう可能性がある。

プログラミング言語の特徴と学習難易度

プログラミング言語はほとんど利用されていないものも合わせると、世界で2000以上もの種類があると言われていて、プログラミング言語の一つ一つ特徴が異なります。

たとえば、Swiftという言語のようにiPhoneアプリのような特定のプラットフォーム上で動くアプリケーションを開発したいときに用いられることに特化している言語もあれば、JavaのようにAndroidアプリでもWebアプリケーションでも使うことができる汎用的なプログラミング言語もあります。

プログラミング言語の一つ一つでこのように得意なことがバラバラなので、初心者の方がその後どのようなエンジニアになりたいのか、どんなものを開発したいのかによって、最初に学ぶべき言語は変わってきます。


また、プログラミング言語には学習の難易度があり、初心者の方が難しい言語から入門すると挫折しやすくなってしまう危険があります。

f:id:virtual-surfer:20191201160214p:plain

たとえば、自転車に乗るのに慣れていてより速く移動したい人には車幅が狭くて軽量なクロスバイクやロードバイクが最適ですが、自転車に初めて乗る子供はまず補助輪ありでタイヤも太くコケにくい自転車から始めるべきですよね。


自転車の例と同じで、プログラミング言語の場合も初心者の方は、まずプログラミングを通して簡単なWebアプリケーションやスマホアプリを開発できるようになることが大事です。

一人でアプリケーションを開発できるようになり、「もっと効率的に処理できるプログラミング言語はないのかな?」と考えたタイミングで初めて、より難易度が高い新しい言語を学び始めればよいので。


求人・案件数の多さに大きな違いがある

次に、プログラミング言語によって、求人数や案件数が多い場合もあれば、全く募集がない言語もあることに注意が必要です。

たとえば、10年前にWebアプリケーションを開発する場合によく利用されていたPHPという言語も、2020年現在では募集されている求人が減少傾向にあり、これから学んでもPHPを利用してプログラミングができる職場自体が少ないので、転職もできないし応募対象となる案件も全然ない...。という状況になってしまいかねません。

2020年現在において、どのくらいの求人や案件数があるのかはもちろん大事なのですが、これからどのくらい求人数や案件数が増えていくのか?という観点も大事です。


プログラミング言語の今後の需要の伸び

最後に、そのプログラミング言語の今後数年間の需要の伸びがどうなっていくのかという観点も大事です。

たとえば、iPhoneアプリの開発初期にはObjective-Cというプログラミング言語が主流で開発に使われていましたが、2019年現在iPhoneアプリを開発するという案件でObjective-Cが選ばれることはほとんどありません。

このように、変化の早いIT業界においては、数年後にそのプログラミング言語を利用して仕事をすることができるのか?そのプログラミング言語を学ぶことで、他のプログラミング言語の学習にもつながる知識が得られるのか?という観点がとても重要になってきます。


以上、プログラミング言語選びには上記3つの観点が大事になってくるので、それらの観点で2020年にプログラミング言語を学び始める方にオススメの言語を紹介していきます。


最初に学び始めるべきプログラミング言語

それでは、「初心者の学習のしやすさ」と「求人数・案件の多さ(今後増えるか)」と「今後数年間そのプログラミング言語の需要は伸びていくのか」という3つの観点で、プログラミング初心者の方が最初に学ぶべきプログラミング言語を紹介していきます。

最初に、今回紹介する9つの言語に関して「学習のしやすさ」と「求人・案件の多さ(今後増えるか)」と「今後数年間そのプログラミング言語の需要は伸びていくのか」という面でざっくり比較した図を貼っておきました。

f:id:virtual-surfer:20191211221944p:plain

※ 本記事で利用しているデータは、いずれも2019年12月11日時点のデータとなります。


1位から順に詳細を見ていきましょう。


第1位 Web・機械学習・統計・IoT・ブロックチェーン開発何でもPython

f:id:virtual-surfer:20191211223057p:plain

学びやすさ ★★★★★
・QiitaのPythonカテゴリ記事:34,349記事
・UdemyのPython関連コース:2,479コース
求人・案件の多さ ★★★★☆
・Pythonの求人数(indeed):16,321件
・Pythonの案件数(レバテックフリーランス):511件
今後需要が伸びるか ★★★★★
・機械学習やIoT制御など、今後伸びる分野で利用できるライブラリが豊富なことから、今後数年は需要が伸びる可能性が高い。
・大学での研究や国内スタートアップでの利用が増えているが、大規模Webアプリケーション開発での成功事例が少なく、これからの伸び代に期待。

初心者の方が最初の言語として選ぶべき言語の第1位は、やはりPythonですね。


初めてプログラミングを学ぶ上で大事なこととして、「プログラムを書いて動かしてみてすぐに動作を確認できること」と「困った時に調べて独力で解決しやすいこと」があります。

Pythonはインタプリタ言語なのでコードを動かしてすぐに動作を確認できますし、チュートリアル動画や開発事例・エラー解決のドキュメントや記事が増えてきているので、初心者の方が学びやすい環境が次第に整ってきています。


Pythonを学ぶことで、Webアプリケーションを開発する仕事にも取り組むことができますし、マーケティングや統計が得意な方はデータ分析の仕事にも取り組みやすいです。

他にも、近年注目されている機械学習の領域や、IoTの制御、ブロックチェーンの開発でもPythonを利用して開発することができます。

こんな方にオススメ!

  • 小規模〜中規模ベンチャー企業でWebバックエンドエンジニアとして働きたい方
  • 機械学習エンジニアやデータサイエンティストとして働きたい方

特にWebバックエンドエンジニアとして働きたい方や、機械学習やデータサイエンティストとしてのキャリアを考えている方は、Pythonを最初の言語に選ぶとよいでしょう。


第2位 フロントエンドもバックエンドも開発できる高い汎用性JavaScript

f:id:virtual-surfer:20191211231627p:plain

学びやすさ ★★★★★
・QiitaのJavaScriptカテゴリ記事: 30,359記事
・UdemyのJavaScript関連コース:1,887コース
求人・案件の多さ ★★★★☆
・JavaScriptの求人数(indeed):20,010件
・JavaScriptの案件数(レバテックフリーランス):1,500件
今後需要が伸びるか ★★★★☆
・JavaScriptはどのWebサービスでもすでに利用されていることが多い言語なので、需要が今後急激に増えることはなさそう。
・JavaScriptのフレームワーク(React)が発展してスマホアプリの開発もできたりと、新しい技術への応用に伴って需要が伸びる可能性あり。

初心者の方が最初の言語として選ぶべき言語の第2位は、JavaScriptですね。


Webアプリケーションを開発する上で、ボタンをクリックした時の制御など画面の処理は必須で、JavaScriptのフレームワーク(AngularかReactかVue.js)が用いられることが多いです。

その開発を主に行うフロントエンドエンジニアの需要は高い一方で、フロントエンドエンジニアの数自体がまだまだ不足しているのか、どの会社も採用に苦労している印象です。

f:id:virtual-surfer:20191211234522p:plain

フロントエンドエンジニアとして働けるようになるためには、まずはJavaScriptの基礎を学び、つぎにTypeScriptで型の基本を学び、JavaScriptのフレームワークいずれかを使えるようになりたいですね。

JavaScriptのフレームワークの一つであるReactを学び、その次にReact Nativeも学んでスマホアプリ開発もできるようになると、スキルとキャリアの幅も一気に広がります。

こんな方にオススメ!

  • Webフロントエンドエンジニアとして働きたい方
  • Webデザインやユーザー体験の向上に関心が強い方


第3位 初心者でもWebアプリケーション開発を楽しく学べるRuby

f:id:virtual-surfer:20191211223314p:plain

学びやすさ ★★★★★
・QiitaのRubyカテゴリ記事:24,553記事
・UdemyのRuby関連コース:222コース
求人・案件の多さ ★★★☆☆
・Rubyの求人数(indeed):11,552件
・Rubyの案件数(レバテックフリーランス):578件
今後需要が伸びるか ★★★☆☆
・Rubyの求人はかわらず多いが、バックエンド言語として採用されるケースが近年減少している印象。
・利用用途がWebアプリケーション開発がメインで、今後市場規模の拡大が見込まれる技術領域での利用が想定されない。

初心者の方が最初の言語として選ぶべき言語の第3位は、Rubyですね。


Rubyは、その作者であるまつもとゆきひろ(@yukihiro_matz)さんもおっしゃっている通り、プログラミングの楽しさと実用性を特徴として持っているバックエンドで用いられるプログラミング言語です。

Ruby on RailsというRubyのフレームワークを利用することで、Webアプリケーションを開発する場合に必須になる機能のひな形を簡単に用意してくれることや、Rubyの学習教材が記事や技術書など数多くあること、多くの企業での実例があることから初心者の方でも学びやすい言語になっています。

スタートアップから大手ベンチャー企業まで規模に関わらず様々な企業で採用されている言語なので、案件数・求人数も多めですね。


プログラミング初心者の方の学習のしやすさと、求人や案件数の多さという面では申し分ないのですが、将来的に需要が伸びるかという点ではあまり期待できないのではないかと感じています。

利用シーンがWebアプリケーションでしかないこと、高負荷・大規模サービスでのパフォーマンスが求められる処理に向いていない面もあることなどから、数年前に比べると人気がやや停滞気味の印象です。

とはいえ、2020年においても新しく学んで仕事を探すうえでは、他の言語に比べて圧倒的に仕事を見つけやすいです。

プログラミング初心者の方には断然オススメの言語ですね。

こんな方にオススメ!

  • Webバックエンドエンジニアとして働きたい方
  • 楽しくプログラミング言語を学びたい方
  • Webアプリケーションを速く作り上げたい方


第4位 WebもAndroidアプリ開発も。安定の案件の多さJava/Kotlin

f:id:virtual-surfer:20191211223654p:plain

学びやすさ ★★★☆☆
・QiitaのJavaカテゴリ記事:13,578記事(+ Kotlin:3,148記事)
・UdemyのJava関連コース:1,692コース (+ Kotlin:184コース)
求人・案件の多さ ★★★★★
・indeedでの求人数:46,078件(+ Kotlin:2,586件)
・レバテックフリーランスでの案件数:1,651件 (+ Kotlin:173件)
今後需要が伸びるか ★★★★☆
・Javaの案件は一定数あり、Javaと相互互換性のあるKotlinの需要が伸びてきている。
・Web開発、Androidアプリ開発、ハードウェア制御など、様々な用途で利用でき、今後も需要は一定数増え続けそう。

初心者の方が最初の言語として選ぶべき言語の第4位は、Javaですね。


Javaは、2000年から2010年ごろまでWebアプリケーション開発をする上で最有力候補として選択されることが多く、Androidアプリケーションの開発需要が高まって以降もJavaによるAndroidアプリの開発が可能となって利用用途が広がり、2019年現在でも多くの企業で利用されているプログラミング言語です。

PythonやRubyと比較すると環境構築(プログラミングを実行可能な状態に準備すること)が大変なことや、大規模アプリケーションを開発しても負債となりにくいような設計(オブジェクト指向や静的型付けなど)が重視されていることから、プログラミング初心者の方にとってはとっつきづらい概念も多く、挫折しやすい言語かもしれません。

しかし、Javaの案件や求人数が多いこと、Javaを学ぶことでKotlinやScalaといった採用企業が増えているプログラミング言語の学習もしやすくなること、オブジェクト指向や静的型付け言語のような大規模サービス開発時に役立つ知識を学べることからも、Webエンジニアとしてしっかりと地力をつけて長く活躍したいという方にはオススメの言語ですね。


今後も一定期間、Java/Kotlinの開発需要は伸び続けるのではないかと考えられます。

JavaでのWebアプリケーション開発の案件は引き続きありますし、スマホアプリケーションの開発も需要があります。

また、Java言語と相互互換性のあるAndroidアプリ開発で利用されることの多いKotlinや、Javaと同じ環境で動き大規模・高トラフィックな処理をさばくことが得意なScalaという言語が、プロダクトのバックエンド言語として採用されるケースが増えてきています。

こんな方にオススメ!

  • Webバックエンドエンジニアとして働きたい方
  • 大規模サービスやAndroidアプリケーションの開発をしたい方
  • 長期的に運用されるサービスを開発する力をつけたい方


第5位 Windowsアプリ、ゲーム開発やVR開発まで幅広く活躍するC#

f:id:virtual-surfer:20191211224023p:plain

学びやすさ ★★★☆☆
・QiitaのC#カテゴリ記事:8,489記事
・UdemyのC#関連コース:2,389コース
求人・案件の多さ ★★★★☆
・C#求人数(indeed):22,098件
・C#案件数(レバテックフリーランス):459件
今後需要が伸びるか ★★★★☆
・VRアプリやゲーム開発に利用されるUnityを利用するときにC#を使うことが多く、今後のVR市場の伸びに伴って需要も伸びる可能性がある。

初心者の方が最初の言語として選ぶべき言語の第5位は、C#ですね。


C#は、コンピュータの初期のころから利用されていたC言語がベースになっていて、Windowsでのアプリケーション開発や、Unityというゲーム開発によく用いられるプラットフォームでも採用されている言語です。

オンライン動画学習サイトのUdemyで用意されているUnityとC#を使ったプログラミング学習コースなどでは、シューティングゲームや簡単なVRゲームを開発しながらプログラミングを学べるなど、初心者の方でも体感的にプログラミングを理解できる環境が整っています。


ゲーム開発はもちろん、VR市場の伸びに伴ってVRアプリケーション開発の需要が伸びてきているので、今後もC#をつかった開発の需要は伸びていくと考えられます。

こんな方にオススメ!

  • ゲーム開発・VR開発エンジニアとして働きたい方
  • 個人でゲームを作ってみたいという方


第6位 iPhoneアプリを開発するならコレ一択Swift

f:id:virtual-surfer:20191211224448p:plain

学びやすさ ★★★☆☆
・QiitaのSwiftカテゴリ記事:13,088記事
・UdemyのSwift関連コース:743コース
求人・案件の多さ ★★★☆☆
・Swiftの求人数(indeed):4194件(+ Kotlin:2,586件)
・Swiftの案件数(レバテックフリーランス):304件
今後需要が伸びるか ★★★☆☆
・iPhone向けのスマホアプリ開発メインの言語なので今後のiPhoneの伸びに左右されるが、日本のiPhoneシェアがAndroidを抑えて急増する可能性は低そう。

初心者の方が最初の言語として選ぶべき言語の第6位は、Swiftですね。


Swiftは、iPhoneアプリを開発するために特化したプログラミング言語です。

これからスマホアプリ開発を学習しようとされている方でiPhoneを普段使っているという方は、iPhoneアプリを開発して動作確認をしやすいので、Swiftを学びやすいでしょう。


日本では、iPhoneの方がAndroidのシェアよりも高いことから、iPhoneアプリを先にリリースして、人気が出てきたらAndroidアプリもリリースするという方針で開発を進めるベンチャー企業が多い印象があります。

その意味でも、iPhoneアプリの開発ができるエンジニアは重宝されやすく、求人は一定数あるのでSwiftを学ぶことで仕事は獲得しやすいでしょう。


今後の需要としては、求人が伸びていくという見込みは薄く、一定の需要が続くのではないかと考えられます。

iPhoneのシェアがAndroidのシェアに比べて世界的に高いことからも、世界的にAndroidアプリの開発の方が重視されるという見込みはあっても、逆のパターンでiPhoneのアプリのシェアが急に伸びて求人が増加していくことは考えづらいです。

こんな方にオススメ!

  • スマホアプリ開発エンジニアとして働きたい方
  • iPhoneアプリを開発したい方


第7位 WordPressでWebサイト制作やECサイト構築PHP

f:id:virtual-surfer:20191211231344p:plain

学びやすさ ★★★★☆
・QiitaのPHPカテゴリ記事:17,995記事
・UdemyのPHP関連コース:1,154コース
求人・案件の多さ ★★★★☆
・PHPの求人数(indeed):33,260件
・PHPの案件数(レバテックフリーランス):1,257件
今後需要が伸びるか ★★☆☆☆
・2010年代前半にECサイトの開発や、WordPressのテンプレート開発に用いられていたが、近年はPHPで開発したアプリケーションをGo言語やRubyで書き換える会社が増えてきている印象。

初心者の方が最初の言語として選ぶべき言語の第7位は、PHPですね。


PHPは、2010年から2015年ごろまでECサイトの開発や、WordPressを利用した簡単なWebサイトの開発に利用されることが多く、その延長線上で今でも多くのアプリケーションで用いられているバックエンド開発用の言語です。

ドキュメントや実装例の記事も多く、どんな書き方をしてもある程度動いてくれるので初心者の方でも動作を確認して理解しやすいです。


しかし逆に、どんな書き方でも動くということが裏目に出て、大規模なWebアプリケーションを開発するときには、デメリットになりやすい面もあります。

1つのファイルに多くの処理を書いて複数のファイルで処理が重複してしまって、修正を加える必要が出たときに多くの箇所を修正する必要が出たり、バグが発生している箇所を特定するのが難しかったりと、アプリケーションの規模拡大に伴って開発が徐々につらくなってくるなど。


上に書いたような背景もあり、初期のWebアプリケーションでもPHPが利用されることは減ってきているように感じますし、今後も需要が伸びていくことは考えにくいという印象です。

とはいえ、今すでにPHPで構築されているアプリケーションや、WebサイトをWordPressで作成・運用していく案件など、一定数のPHP開発案件はあるので、学んでおいて損はないでしょう。

こんな方にオススメ!

  • WordPressを使って簡単なWebサイト・ブログを作りたい方
  • まず動くものを作れるようになりたい方


第8位 高負荷・並列処理が得意な人気上昇中バックエンド言語Go

f:id:virtual-surfer:20191211231213p:plain

学びやすさ ★★☆☆☆
・QiitaのGoカテゴリ記事:7,614記事
・UdemyのGo関連コース:1,293コース
求人・案件の多さ ★★★☆☆
・Goの求人数(indeed):12,860件
・Goの案件数(レバテックフリーランス):199件
今後需要が伸びるか ★★★★☆
・大規模、高トラフィックな処理をさばく必要があるアプリケーションで利用されることが多く、多くのベンチャー企業で採用事例が生まれてきている印象。 ・今後も需要は一定数伸びていくが、Go言語で開発できるエンジニアの数は少なくて需要過多になっていくのではないか。

初心者の方が最初の言語として選ぶべき言語の第8位は、Go言語ですね。


Go言語は、Googleが2009年にリリースしたバックエンド開発用のオープンソース言語で、近年Web自社開発系のベンチャー企業を中心に利用事例が増えてきています。

公式ドキュメントとチュートリアルも用意されていて、Go言語での開発事例や実装例の記事も増えてきているので学習コストは下がってきていますが、プログラミング初心者の方にとっては理解するのがが比較的難しい言語の一つでもあります。

PythonやRubyのようにプログラムを書いてすぐに動作を確認することも難しく、「フレームワークを利用してすぐに動くWebアプリケーションを開発できる!」という訳でもないので。

しかし、Go言語をバックエンドの開発言語として採用するプロダクトは、大量トラフィックを短かい時間で処理するという高負荷・並列処理が求められるプロダクトなことが多く、そのような要件が求められる会社は事業の利益率も高い傾向にあるのか、そもそもGo言語を書けるエンジニアがいなさすぎるのか、案件や求人の単価は高くなっています。


多くのベンチャー企業で採用され始めていることから、今後の需要も伸びていく見込みがあり、大規模・高負荷サービスの開発に取り組みたいという方は学ぶとよい言語でしょう。

こんな方にオススメ!

  • Webバックエンドエンジニアとして働きたい方
  • 高負荷・大規模サービスの開発をしたい方


第9位 クロスプラットフォームでスマホアプリ開発できるFlutter

f:id:virtual-surfer:20191211231122p:plain

学びやすさ ★★☆☆☆
・QiitaのFlutterカテゴリ記事:1,109記事
・UdemyのFlutter関連コース:135コース
求人・案件の多さ ★☆☆☆☆
・Flutterの求人数(indeed):99件
・Flutterの案件数(レバテックフリーランス):1件
今後需要が伸びるか ★★★☆☆
・iPhoneとAndroidどちらのスマホアプリも一つのプログラミング言語で開発できるクロスプラットフォーム言語です。国内でも少しずつ導入事例を耳にするようになってきています。

初心者の方が最初の言語として選ぶべき言語の第9位は、Flutterですね。


Flutter(フラッター)は、AndroidアプリとiPhoneアプリのどちらの開発にも用いられる言語で、Googleによって開発されたオープンソースのモバイルアプリケーションフレームワークです。

まだまだ世界的にも日本国内でも開発事例が少ない言語の一つで、ドキュメントや学習の参考になる記事や技術書が少ないという点で学習コストも高いですが、徐々に国内でも開発事例が生まれてきており、Flutterを用いたスマホアプリ開発の案件も少しずつ生まれている状況にあります。


「Flutterを学べば、今すぐ仕事が取り放題!」ということはありませんが、今後2,3年で開発案件が増えてくることを予想して、いまのうちから学習しておくとよいプログラミング言語の一つでしょう。

こんな方にオススメ!

  • スマホアプリ開発エンジニアとして働きたい方
  • iPhoneアプリもAndroidアプリも開発したい方
  • まだ日本でもその技術に詳しいエンジニアが少ない技術を学んでおきたい方


まとめ

以上、2020年に初心者が最初に学ぶべきプログラミング言語9個でした。

比較的簡単に学べる言語から学習難易度が高いものまで、求人の募集の多少も含めて紹介していきましたが、いかがでしたでしょうか。

これからプログラミング言語を学ぶ方の参考になる部分があったなら嬉しいです!


これからプログラミングを始めようと思っている方は、作ってみたいのがスマホアプリなのかWebサービスなのかゲームなのか何を作りたいのかをまずは決めて、それを作るためにはどのプログラミング言語がいいかな!と考えるのが一番考えやすいと思います。

この記事ではいろいろ書いてきましたが、プログラミング言語どれがいいかはその人次第な部分も大きいです。結局は自分のモチベーションが上がるかどうか、書いていて楽しいと感じるかどうかによって、プログラミングの学習効果は大きく変わってくるので。

そして当然のことながら、実際に手を動かしてプログラミングに取り組んでみるまで、プログラミングが楽しいかどうか、どの言語が自分に向いているかは分かりません。


この記事を読んだら次にやること

  • まずは、プログラミング言語どれでもいいので、1時間くらい取り組んでみましょう。
  • 1時間くらい取り組んでみて、楽しいなと思ったら続ける。楽しくなかったらやめる。


具体的な学習の進め方に関しては、こちらの記事も参考にしてみてください。

www.virtual-surfer.com

では。