プログラミングを初めて学習するにはどの言語を選ぶべきか

プログラミング学習

プログラミングを初めて学習するにはどの言語を選ぶべきか

人によって異なる

人それぞれの目的に応じて選択する言語は異なります。

今回は言語を選択する上で考慮すべきことと、目的別に私のおすすめを紹介したいと思います。

目的・重要度・将来性・難易度で選ぶ

学習言語を選択する上で最も重要なのはその目的です。次に、目的に応じて現時点で重要度が高い言語、言い換えれば使用率が高い言語を選択すればいいと思います。ただし、現時点で使用率が高くても将来性が乏しく、それに取って代わる言語がほぼ特定できる場合はそちらにするべきです。最後に難易度ですが、初学者にはおすすめできない非常に難しい言語もありますのでそちらは避けた方が良いかと思います。これについても後で紹介します。

Webエンジニア以外にも興味があるならC#がおすすめ

まずは目的を明確にしましょう。いくつかのよくある目的別におすすめを紹介しますので、現時点で目的が明確でない方も自分に近い目的で選んでみてください。

Webエンジニアになりたいなら「JavaScript」

Web上のサービスを専門で提供する企業への就職、またはフリーランスとしてこれら企業の仕事を受注したい方はJavaScriptがおすすめ。

Webエンジニアとしては大きく分けてChrome等のブラウザ上の表示や入力といった比較的簡単な処理を行うフロントエンド、ブラウザと通信してデータの抽出や保存等の複雑な処理を行うバックエンドがありますが、どちらでも共通して使われる言語です。JavaScriptを使用しないWebシステムはまずありませんし、プログラミングの基礎的な部分も学習できますので、後々PHP、Ruby、Go等を習得する上でも無駄にはなりません。

必然的に、Webの必須要素であるHTML、CSSの基本も併せて学習できます。

ただし、JavaScriptの学習にあまり時間をかけることはおすすめできません。基本的なプログラミングが理解できたら、Go等の言語で本格的なバックエンドの学習をすることをおすすめします。

Webシステムのユーザーインターフェース(UI)を担当することになったなら「JavaScript」

現在は業務系システムもWebシステムであることが多いです。この場合、UIはWebエンジニアと同じくHTML、CSS、JavaScriptが必須なのでJavaScriptがおすすめ。

スマホアプリを作りたいなら「C#」

スマホアプリを作る場合、iPhone向けとAndroid向けで別々の開発言語が必要です。

iPhone専用の場合はSwift(スウィフト)を使用します。

Android専用の場合はKotlin(コトリン)を使用します。

この両方に対応する場合、できるだけ2つで共通したプログラムにしたいですよね。これができるのがC#(シーシャープ)です。Xamarin(ザマリン)という仕組みを使うのですが、プログラミングはC#で行います。また、スマホゲームやVR・AR・MRのプログラミングで使われているUnity(ユニティー)という仕組みでも主にC#を使用します。

これらのことからC#を学習することはスマホアプリ開発においては非常に有用です。また、C#は様々なWebシステムやWindows上のみならずLinux上で動作するプログラムも作成でき、様々な分野で利用できますのでおすすめです。

ただし、スマホアプリの場合Swift、Kotlinが全く不要になるわけではありません。実際にアプリを開発する上ではこれらが必要ですが、C#でプログラミングの基本を学習した後であれば比較的に苦労せず使用できると思います。

ゲームプログラマーになりたいならばまず「C#」

PlayStation4やSwitchではC++(シープラスプラス、シープラプラ、シープラ)が主に使用されています。これらのゲームソフト開発の求人ではC++の経験が必須となっています。

しかし、プログラミング初学者がC++から学習することはおすすめしません。C++は比較的古い言語であるため、より新しいC#等に比べて非常に難しいです。特に難しいのがポインターという概念とメモリ管理です。メモリ管理はあまり意識しなくてもとりあえずプログラムすることは可能なのですが、プログラムが複雑になっていくとメモリ管理が煩雑になり、この不備が原因で不具合を引き起こします。また、ポインターを避けてはC++でプログラミングはできません。これはオブジェクト指向プログラミングという概念と関連しているのですが、初学者がこのオブジェクト指向プログラミング、ポインターという概念を同時に理解して使用することはハードルが高く、挫折する原因となっています。

そこでおすすめするのが、まずはC#から学習することです。

C#はC++と文法は似ていますし、どちらもオブジェクト指向プログラミングの行える言語です。そして、C#は比較的新しいこともあり、C++とは比較にならないほど簡単にプログラミングできます。C++の様な煩雑なメモリ管理は不要ですし、ポインターもありません。C#でオブジェクト指向プログラミングをまず学習してからC++を学習すると、ポインターの概念も理解しやすいと思いますし、メモリ管理等のC#と異なる部分のみ学習すればいいので段階的に進めることができます。また、Unityを使う場合にはC#が使われますし、ハードウェアが変われば将来的にC++が主力でなくなる可能性も大いにありますので、まずはC#で基本を学習しておきましょう。

分野は問わずプログラミングを仕事としたいなら「C#」

数年前までならばJavaが1番に名前があがっていたと思います。これはJavaのプログラムはWindows、Linux、MacのどのOSでも動作可能であることと、商用利用可能な開発環境が公式に無料で提供されていたことが大きいと思います。

しかし、この2つの優位性はどちらも薄れてきました。1つ目の、「どのOSでも動作可能」についてはここ数年でC#がそのような流れを加速させており、この点でのJavaの優位性は薄れてきました。2つ目の「商用利用可能な開発環境が公式に無料で提供されていた」についてですが、こちらについては問題が複雑なので詳しくは触れませんが、長期間に渡ってセキュリティアップデート等のサポートを公式に受けるためには有償となりました。Amazon等から独自に無償の長期サポート付き開発環境が提供されているため無償でJavaを使うこと自体は今も可能ですが、この変更は非常に混乱を招きましたしJavaのイメージが著しく悪化したと思います。C#は専用の開発環境があり、商用利用ではごく小規模を除き有償で比較的高価です。このため価格面でJavaの優位性が失われたわけではありませんが、私としてはC#にはその価格に見合った対価があると感じさせられました。

また、これらとは関係なく、C#の方がより新しい言語であり、様々な点でJavaよりも洗練されており優れています。開発環境も個人利用であれば無償で商用利用を含めて可能です。就職先でJavaが必要となったとしても、C#を学習してあれば比較的簡単にJavaも習得できます。

以上、色々と書きましたがC#がおすすめです。

家電やIoT等の機械を開発したいなら「C++」

組み込みソフトウェアと言われる分野になりますが、ここではC++、及びCが主力です。C#も使われるようになってきている様ですが、C++が圧倒的に多いかと思われます。希望の就職先があれば使用されている言語を調べ、それに合わせて学習言語を選択するべきかと思います。

プログラムを主として仕事としたいのであれば、組み込みソフトウェアの分野は合わないのではないかと思います。この分野は機械、すなわちハードウェアを作りたい方が目指すところですね。C++は非常に学習コストが高いので、どうしてもこの分野でプログラミングをしたいのであれば、覚悟を持って臨みましょう。個人的にはおすすめはしません。

AI開発やデータサイエンスの仕事がしたいなら「Python」

AIの開発はPythonでしょう。データサイエンスではこの他にRも選択肢としてあります。

近年、AIが盛んにPRされているのはこのPythonでディープラーニングの実装が比較的容易に可能になったためでしょう。ただ、映画等で出てくるような一般的にイメージされている何でもできるようなものとはかけ離れている気がしますが。暴走して人類に反乱を起こすとはとても思えません。

話をもどしましょう。結論を言うと、AI開発やデータサイエンスの仕事がしたいからという理由でいきなりPython、もっと言えばプログラミングを学習するべきではありません。次にその理由を述べますが、難しい言葉がたくさん出てきますので興味の無い方は読み飛ばしてください。

Python自体を学習することは、プログラミングの基礎は身に付きますし、それほど難しくもないので悪くはありません。しかし、AIの開発やデータサイエンスでは、機械学習、ディープラーニングの知識とそのための特別なプログラミングが必要です。実際、NumPyやTensorFlowに代表されるPythonの拡張機能(ライブラリ)が優れているんですよね。このライブラリのおかげでPythonがAI開発等に使用されているわけですが、このライブラリの使い方がわからなければPythonが使えても意味がないです。本格的にAI開発等をするのであれば、自分でディープラーニングのモデルを開発する必要があると思いますが、ディープラーニングに必要な線形代数をはじめとする数学的な知識やニューラルネットワークの知識等、プログラミング以前に学習すべきことが多くあります。あくまで、ディープラーニングの知識が十分にあればモデル開発のためのプログラミングは簡単にできるということなのです。

本当に初心者にJavaScriptがおすすめなのか

私は全般的にC#をおすすめしていますが、プログラミング学習に関する動画や記事ではよくJavaScriptがおすすめされていますね。たいていは需要(求人数)が高いことと比較的難易度が低いことが理由とされています。

果たしてこれは本当なのでしょうか?

1点目の求人数が多いことは確かだと思います。フリーランス向けではWebのフロントエンドの求人がほとんどであることから、JavaScriptの需要が高いということだと思います。ただし、これらは単価が低いことがほとんどでしょう。仮に私が仕事を依頼する立場でフリーランスに広く求人を出すとすれば、単純作業に近いことをとにかく短期間で安く済ませたい時ではないでしょうか。いくら需要があっても難易度が低く供給も多いものでは低単価の仕事しかできずに苦労すると思います。

2点目の難易度ですが、確かに言語としての難易度は低いと思います。覚えることもそれほどなくプログラミングできるようになると思います。jQuery等の拡張機能(ライブラリ)の使い方を学習すればより簡単に少し複雑なこともできます。しかし、複雑になっていくとプログラムがエラーして動かないということが必ず発生してきます。これはプログラムに不備、いわゆるバグがある状態です。このバグを取り除く作業をデバッグと言いますが、プログラミングではこの作業が重要であり、大変な部分でもあります。私がJavaScriptをあまりおすすめしない理由の1つにこのデバッグがしづらい点があります。ブラウザの機能で確認してデバッグすることができますが、C#やJavaを経験している私からしてみると非常に貧弱な環境です。

これらのことから私はJavaScriptをおすすめしません。どうしてもフロントエンド専門のWebエンジニアとして仕事をしたいということであればHTML、CSS、JavaScriptの3つ以外はほぼ不要なのでJavaScriptを選択することになりますが。

エンジニアとして幅広い知識を得たいならC#

これに対してC#は、求人数も少なく、難易度も高いということで初心者におすすめしていない記事を良く見かけます。

求人数については広く一般に求人を出すような簡単な仕事では使われていないことが大きな理由だと思います。

難易度については確かにJavaScriptに比べれば覚えることは多いです。ただ、全てのことを覚える必要はないですし、必要なことから徐々に覚えていけばいいのであまり問題にならないと思います。それよりも、徐々に高度なことにステップアップしていけるので非常に幅広い知識をつけられます。C#でもWebシステムは作れますし、実際に企業で使われるような複雑なWebシステムもあります。また、C#の開発では専用の開発ソフト「Visual Studio」を使用しますが、このソフトが非常に強力です。デバッグもしやすいですし、プログラミングを手助けする機能も非常に豊富で使いやすいです。C#はコード量が多いから嫌だという人もいますが、Visual Studio を使えば、煩わしいコードは自動で補完してもらえるので実際に自分で記述するのはそれほど多くなりません。また、スペルミス等の単純な原因のバグが発生しにくいです。

C#以外の言語では、最近は「Visual Studio Code」という良く似た名前の優秀なソフトがあり、以前に比べてプログラミングがしやすくなってきてはいます。しかし、こちらは様々な拡張機能を自分で選択してインストールする必要がありますし、機能的にも Visual Studio にはかないません。

唯一、C#のデメリットとしては Visual Studio が基本的に有償である点です。ただし、今は個人利用に限り無償の Visual Studio Community が使用できます。個人であれば商用利用も可能で、有償版のVisual Studio Professionalと同等の機能が利用できます。ですので、個人学習目的ではデメリットもありません。

Visual Studio の宣伝のようになってしまいましたが、これは今まで私が色々な言語で開発を経験して感じたことです。ちなみに、Visual Studio Code も色々と便利で今も使っていますよ。

将来的に本格的なプログラミングをしたいのであれば、まずC#から始めることをおすすめします。

小学校プログラミング教育必修化プログラミング教育が小学校で必修化されるけど大丈夫?前のページ

プログラミング学習で絶対に意識すべきポイントは【自分で調べ・考える】次のページプログラミング学習で重要な意識

ピックアップ

  1. 4Kディスプレイで作業効率UP #3
  2. 4kdisplay for video

最近の記事

  1. recommended pc
  2. おすすめ動画配信サービス3選
  3. 4kdisplay for video
  4. オブジェクト指向の基本概念
  5. basic-knowledge-of-web-app
PAGE TOP