Warning: The magic method InvisibleReCaptcha\MchLib\Plugin\MchBasePublicPlugin::__wakeup() must have public visibility in /home/c9138697/public_html/juncleit.com/wp-content/plugins/invisible-recaptcha/includes/plugin/MchBasePublicPlugin.php on line 37
現役エンジニアが厳選するプログラミング言語2選(2020年度版) | マサトッシュブログ

【厳選】現役ソフトウェア開発エンジニアがお薦めするコスパの良いプログラミング言語2選(2020年版)

エンジニアライフ

ども、マサトッシュです。

皆さんは、今、どのプログラミング言語が盛り上がっていると思いますか?
これからプログラミングを勉強しようと思っている初学者の方は、かなり気になるポイントではないかと思います。
特に、本気でソフトウェア開発者として就職もしくは転職したいと思っている方にとっては重要な選択肢になりそうですよね。

  • どのプログラミング言語を覚えれば役に立つのか
  • どのプログラミング言語を覚えれば転職に有利なのか
  • どのプログラミング言語を覚えれば稼げるのか

こんな事を感じている人もいるのではないでしょうか。
残念ながら、僕には「どの言語が稼げるのか」までは回答できませんが、少なくとも技術的なトレンドはチェックしているので、

  • 仕事で結構役に立つ
  • 少なくとも食べていくための技術としては知っておいて損はない
  • 注目度が高まっている=今後需要が高まる可能性がある

という観点から僕の意見をお伝えする事は出来ます。

この記事では2020年現時点で「これは使えるようになっておいたほうがいい」と思うプログラミング言語について、僕の考えを紹介したいと思います。

この記事を読むメリット

  • 今後、役に立ちそうなプログラミング言語がどれか分かる
  • その理由が分かる
  • 新しいプログラミング言語を習得するための効率的な学習の進め方が分かる

信頼度

  • 僕自身、数社を点々としてきた転職歴が多い現役のソフトウェア開発エンジニアで、多くの現場を経験しています。
  • 世界的にも有名なクラウドベンダーと協業している会社にいるので、今後どんな技術が必要になりそうかという動向が比較的つかみやすい環境にいます。

【厳選】現役エンジニアがお薦めするコスパの良いプログラミング言語2選(2020年版)

様々なプログラミング言語がある中で、これからソフトウェア開発を生業とするために覚えるプログラミング言語という事を考慮すると、やっぱりこの2つだよなーと思って「2選」にしました。

1位 JavaScript

よく、YoutubeやSNSで「どのプログラミング言語が推しか?」という動画や記事を見かけます。このJavaScriptという言語、実は1位ではない事が多いです。なぜ1位ではないのか、その理由は僕には分かりませんが、僕の主張はこれ一択です。理由はこの後説明します。

JavaScriptは、元々WEBブラウザ上で実行出来るインタープリタ型のプログラミング言語として開発されました。現在でもHTMLやCSSと一緒にWEBブラウザで動作するプログラミング言語として使われます。この言語の登場により、HTMLとCSSだけでは実現出来なかったインタラクティブなWEB画面を作ることが出来るようになりました。

今はJavaScript開発者の増加に伴い、様々なライブラリやフレームワーク、ランタイム環境が登場しています。このことにより、ネイティブクライアントアプリ、モバイルアプリも作ることができ、さらにサーバー側のプログラムさえもJavaScriptで組むことができるようになりました。

簡単に言うと、JavaScriptを実行するための様々な仕組みと、JavaScriptから利用出来る便利ツールがいっぱい増えた事で、Windows, Mac, iPhone, Android等、どこでも実行できて、そしてリッチで操作性の良いソフトウェアを、素早く開発できるようになったという事です。

JavaScriptがここまで進化するとは思っていませんでしたので、正直びっくりしてます。

JavaScriptは僕の会社でも必須の言語です。

推しの理由

日本はもとより、世界中で開発者が増加しており、その分、技術情報も豊富なので学びやすいです。インターネットが普及し始めた1995年前後の頃から今まで言語仕様に改良がくわえられてきており、今もまだ更新され続けている老舗のプログラミング言語です。

分からないことはグーグル先生に聞けばいっぱい情報が検索出来ますし、書店に行けばどれを選べばよいか分からないほど色々な本が出版されています。
これだけの情報があふれている状況なので、これからJavaScriptを習得する人にとって「こんなことがやりたい」という情報を得ることには苦労しない言語だと思います。

大手IT企業でもJavaScriptを使ったプロジェクトは多数あるでしょう。
特にWEBの世界でソフトウェア開発エンジニアとして仕事をするためには必須の言語だと断言出来ます。

初心者にはハードルが高い部分も

結構ガンガンに推しポイントを書いてきましたが、実は初心者にはかなりハードルが高い部分が何層もあったりします。
でもどのプログラミング言語でも乗り越えなければならない高いハードルは存在します。
とりわけJavaScriptでは以下のポイントがハードルになりそうです。

  • 変数スコープ
  • クラス
  • 非同期関数

恐らく、これらを乗り越えると、その先へ進む道は大きく開けます。

2位 Java

このプログラミング言語もJavaScriptと同じぐらいの歴史があります。
僕が全盛期(w)にメインで使っていた言語です。
JavaScriptと名前が似ていますが、言語仕様が全く異なります。

Javaの素晴らしいところは、とにかくベースとなる言語仕様が明確でとっつきやすいというところです。
最近の言語では、変数型チェックが曖昧だったり、発生する例外を厳格に定義しなくても良かったりするので、初心者が作ったプログラムではランタイムエラーが頻発する傾向があります。

「ランタイムエラー」とは、実行段階になってからでないと発生しないエラーのことです。プログラムから実行ファイルを作成する事を「コンパイルする」と言いますが、コンパイルの段階ではランタイムエラーは検知できません。

それに比べて、Javaでは厳格に定義しないとコンパイル時にエラーとなります。このため不具合の入り込む余地が比較的小さくなります。

この記事を書いた後で念のため確認したのですが、Java10からは曖昧な型宣言が出来るようになってました。。この言語を開発したジェームス君の設計思想はどこへ行ってしまったのか。。。

上記で説明した「コンパイラ」がかなり強力で、エラーメッセージも他の言語と比べて分かりやすく記述されており、原因やエラー箇所の特定がとても容易です。

このあたりも、初心者にはお薦めのポイントです。

JavaScriptは最近になって様々な環境やデバイスで実行できるようになってきましたが、Javaは元々様々な環境やデバイスで実行する事を想定して設計された言語です。「Write One, Run Anywhere」というジェームス君の言語設計思想により、1つのプログラムがPCだけではなく、様々なハードウェアで実行できるようなアーキテクチャになっています。インターネット黎明期からネットワークを通じてデータやオブジェクト自体をネットワークでやり取りして処理を分散する事も可能でした。

今でも人気のある言語です。

推しの理由

サーバー側のプログラム開発においては需要が大きく、かなり前から開発者が不足しているという声がありますので、大きなプロジェクトにかかわることが出来るチャンスは大いにあると思います。

無償の開発環境も豊富にあり、標準ライブラリもかなり秀逸です。それに加え、オープンソースでも優秀なフレームワークやライブラリが充実しており「やりたいことは何でもできる」環境をそろえることが出来ます。

GUI開発などの需要は低い

ただし、グラフィカルユーザーインタフェース(GUI)が必要なクライアントプログラムはJavaScriptに任せたほうがいいかもってぐらいマイナーです。
JavaでGUIが必要なクライアントプログラムを開発する案件自体ほぼないと思います。
最近はモバイル環境とPC環境のどちらでも動くクラスプラットフォームだったり、XRのようなリッチな画面だったりと、クライアント側の技術がものすごく重要になっていますが、「Javaで行くぜー!」って話を聞いたことがありませんw

お薦めの根拠

トレンドを確認する時によく用いられるのがStack OverflowというQAサイト。正式に人気度調査結果を公表しています。

Programming, Scripting, and Markup Languages

様々な調査結果を見ることができます。
この結果から今後の動向を予測できるデータを見ることが出来ます。

現時点では圧倒的にJavaScriptですが、この情報から今後のトレンドも見えてきます。
それがPythonです。

番外:Python

Stack Overflowに掲載されている情報で重要なことは、人気のある言語とより多くのサラリーがもらえる言語が異なるという事です。

JavaScriptは依然として最も人気のある言語に選ばれていますが、サラリーの面ではそれほど高くなく、今後多くのサラリーを手にすることが出来ると思われるのはPythonでした。

その理由として、Pythonは現在AIや機械学習といった分野でかなり大きな人気を誇っているためだと思われます。今後AIや機械学習の技術を利用したソフトウェアや製品開発のスキルはIT業界では必須になっていくと思われますが、昨今の驚くべき技術進歩に比べてエンジニアの育成が大きく遅れているため、今後力を入れていくべき分野だと思います。

Python自体は言語のハードルは低いので今すぐに始めても良いかもしれませんが、初心者が機械学習やAIという分野に手を出すのはあまりにも早すぎる気がしてなりません。根気よく続けられる人であればいいですが、途中で挫折する人が続出するのが目に見えますw

ただ、今後確実に需要が増えていくだろうなと誰もが思っていると思うので、「これから十分時間を使って勉強していくぜ!」という気持ちでPython+機械学習/AIを勉強する事をお薦めします。

個人的には、Pythonという言語に着目するよりも、機械学習/AIの効果的な利用方法に着目したほうが良いと思います。ぶっちゃけ、他の言語でも機械学習/AIを利用したシステムは開発できるので。

こんなPythonですが、今回番外とした理由は、単純に僕の周りでPythonを使った案件を見たことが無いからです。
恐らく、あるところにはあるんでしょうけど、少なくとも僕のところに「Pythonできます!」って人が来ても、今は宝の持ち腐れになるし、雇って他のプログラミング言語を教えるよりも最初から必要なスキルを持っている人を雇ったほうが効率的ですねw

効率的な習得方法

それでは、この記事でお薦めしてきた言語をどのように習得していくのか、簡単にロードマップをご紹介します。

ここに記載する内容は、別の記事で詳しく順を追って説明しますので、ここでは流れだけをご紹介します。

手順1.簡単なプログラムを作って実行してみる

この過程で重要なことは、プログラムの作り方だけではなく、プログラムを作るために必要な環境を準備して使い方もセットで覚えるという事です。
例えば、必要な環境を準備するためにツールをインストールしたり、ツールの使い方を理解する事であったり、プログラムの実行方法を理解する事だったり、「プログラムを作る」という事以外にやるべき事がかなりあるという事が分かると思います。
それらを知る事はとても重要な第一歩なんです。

そして、なんでもいいので、簡単なプログラムを作ります。
プログラムというものは、基本的に「データの入力」、「処理」、「データの出力」という3つのプロセスから構成されているという事です(これ、メッチャ重要な事なので初学者の方はしっかりと覚えておいてください)。これを実現できるのであればどのような内容でもいいので、まずは1つプログラムを作ります

これを含めて「簡単なプログラムを作って実行する」というところまで一気に進めましょう。

手順2.様々な技術領域のプログラムに発展させる

準備ができたら、新しい技術領域で必要となる処理を加えながら、プログラムを発展させていきます。

例えば、2つの数の足し算を行い結果を表示するというプログラムを作ったとします。

最初のプログラムは、2つの数値を直接プログラムに書いて、その処理結果を画面に表示するものとします。

次のステップとしては、計算処理は変えずに、2つの数値をキー入力にしてみたり、ファイルから読み込むようにしてみたりします。

もしくは計算結果を画面に表示するのではなく、ファイルに出力するようにしてみます。

その時は出力先ファイル名はプログラムに直接書いてもいいですが、その発展形として出力するファイル名はプログラム実行時に指定できるようにしたり、あらかじめ準備しておいたファイルから読み込んでみたりします。

ファイル入出力処理ではエラー処理も考えなければならないので、エラー処理を入れてみます。

どのようなエラーが発生するのかを検討し、エラーが発生したらその内容が分かるようなメッセージを画面に表示します。

エラーが発生した場合、画面ではなくメールでエラー内容を通知してみます。

とかとか。。

1つのプログラムを作ったら、まずはそれを大きく変えることなく、新しい技術領域の処理を付け加えていきます。その途中で必要に応じて処理の内容を変更し、拡張していきながら言語仕様を少しづつ勉強していくのが良いと思います。

ここまで、僕がお勧めするプログラミング言語の習得方法の大まかな流れを説明しました。より具体的な習得方法は別の記事で1つ1つ解説しようと思いますので、それまで少し僕に時間をください。

情報ソース

習得するプログラミング言語を決め、効率的な習得方法が理解できたら、具体的に始めていきましょう。
そのためには学習するためのネタ(情報ソース)が必要ですね。
以下にご紹介します。

No.1 入門者向けの書籍

僕なら超薄い入門者向けの書籍からスタートします。
そしてチャッチャと終わらせて、次のステップに移っていきます。
出来れば以下のような内容が記載されている超薄くて安価な入門書から始めるのが理想だと思います。

  • 現在の主な用途
  • 開発するための準備の手順
  • プログラミングの初めの一歩
  • 代表的な言語仕様
  • その言語を使用するとどんな事が出来るのかの全体俯瞰図
  • 代表的な目的/目標に向けて次に何をすればよいかの提案
  • Appendixとして、言語の歴史

市販の書籍はどうしても諸般の事情により「入門者向け」と言いつつも200ページ前後がほとんどです。初学者からすると、知りたい事以外の事が多く書かれている高価な書籍を買わざるを得ない状況になる可能性があります。
正直、最初はそんなページ数の本はいらないというのが僕の持論です。
僕の場合、どんな言語で、どんなことに適しているのか、自分がやりたい事が出来るのか、といった事についてまずは知りたいと思います。
そのうえで、「よし!これは面白そうだし、今後覚えておいてよさそうだからこれで行こう!」と決めたら、本格的に分厚く網羅的に解説されている本を買い、一度読んだら後は辞書替わりにして必要な時に読めるようにしておきたいと思ってます。

僕はboothという同人誌販売サイトで販売されている電子書籍に期待しています。同人誌なので質はしっかり確認する必要がありますが、格安のわりには秀逸な書籍があるので探してみてはいかがでしょうか。

プログラミング言語の入門書って、マニュアルの言葉を変えただけのような書籍が本当に多いので、なんとかならないかなといつも感じています。いつの日か、「僕ならこんな本があると嬉しいな」という本を書いてみたいと思っています。

No.2 インターネット上のコミュニティ

もし英語の読み書きができるのであれば、インターネット上のプログラミング言語をホストしているサイトを確認してみてください。
恐らく「Get start」のようなところで、「Hello World」のような初歩の初歩が紹介されていると思います。

プログラミング言語をホストしているサイトでは、日本語のサイトよりも早く、正確で、かつ多くの情報を得ることが出来る可能性がかなり上がりますので、僕としてもかなりお薦めです。

もしくは「Stack Overflow」のようなQAサイトを活用する事をお薦めします。

英語って、本当に重要ですよw。

英語がスラスラ読めるスキルがあるだけで、有益な情報の流入量をハンパなく大きくすることが出来るようになります。最近では技術進歩が速すぎて、日本語訳のスピードが間に合わないため、英語のままになっている情報はかなり多いです。

皆さん、英語も頑張りましょう!

No.3 【最速の方法】経験者からのアドバイス

もし、周りに経験者もしくは既に活躍している人がる場合、経験者に時間をもらって自分が作成したプログラムを添削してもらったりアドバイスしてもらうのが最速です。

もう一回言います、これが最速ですw

理由は簡単です。経験者というのは、複数の書籍を読まないと得られないような複合的な知識だったり、インターネットでかなり時間をかけて調べないと得られないような多くの知識を持っており、それらを惜しみなく提示してくれる可能性が高いからです。

誰かを頼る前に「自分で調べる」という事はとても重要です。

何も調べることなくいきなり質問攻めにするような事はしないほうが無難です。そして聞くときには「釣った魚をもらう」のではなく、「魚の釣り方を教わる」という事が重要です。

たまに、自分で調べるという事を極端に重要視しすぎて「自分で調べられないような奴はカスだ」みたいな事を言ってくる人がたまーにいます。経験者はみんな優しいのでそのようなことを言ってくる人はあまりいないと思いますが、もしそのような人がいたら、その人には聞かないようにしましょうw

ただし条件があります。学校で勉強した程度であったり、本で独学して少しプログラムを「作った」経験がある程度の人はNGです。少なくとも3年以上、その言語を使って実務でプログラムを開発した経験をお持ちの方にお願いするのがお勧めです。

その理由は、経験が少ない方からのアドバイスは的確ではない場合が多いからです。もしくは一緒に悩んでしまいます。

気軽に相談できる実務経験のあるエンジニアが近くにいるというのは結構な幸運だと思います。彼らも忙しいはずなので、もし相談する場合は手土産を忘れずにw
相談相手が近くにいない場合は、本+インターネットで頑張ってみましょう。自分で解決できたという経験はとても重要なモチベーションになり、今後同じようなことにつまづいたときに、自分で解決したときの経験が生きてくると思います。そしてその時は経験豊富な上級者として、初学者を助けてあげてほしいと思います。

No.4 プログラミングスクール

経験者が近くにおらず、でもどうしても経験者からのアドバイスが必要な場合、最近ではプログラミングスクールが多数登場していますので活用する事を検討してみても良いのではないでしょうか。

ただし、それほどお金をかけなくても、学べることは沢山あるというのが僕の持論です。
なので、すぐに飛びつくのではなく、きちんと吟味して、「本当に今の自分にはスクールが必要」と思ったのであればやってみる価値はあるかもしれません。

数あるプログラミングスクールの中でも、「テックキャンプ」というオンラインスクールは、かなり良心的な条件があり、「就職まであっせんし、もし就職できなかった場合は全額返金保証」があるようです。
メンター制度もあり、結構熱心に対応してくれるという評判は聞いたことがあります。

まとめ

以上、「僕推し」のプログラミング言語についてご紹介いたしました。
これは僕の独断と偏見でまとめたもので、この記事を執筆した時点の内容です。

最後に、もう一つだけ重要なポイントをご紹介して終わりにします。
それは、プログラミング言語はあくまでもソフトウェア開発のための1つの手段だという事です。
趣味でソフトウェアを作りたいのであれば、「それでは楽しみましょう!」で括れます。
もし、あなたがプロのソフトウェア開発者を目指すのであれば、プログラミング言語でソフトウェアを作るという事は1つの基本的なタスクであり、あなたが成長するにつれて、ソフトウェアを作る以外の重要なタスクと、そのタスクに関連して必要となる、ソフトウェア開発エンジニアとして重要な別のスキルを求められます。

まずはプログラミング言語を勉強し、慣れてきたら、より重要なスキルを習得して、大きな案件に参画できるよう頑張ってみてください。

プログラミング言語以外に重要なタスクやスキルについては別の記事に書きたいと思います。

日本のIT業界をもっともっと元気にしていきましょう!

コメント

タイトルとURLをコピーしました