【初心者必見】プログラミング学習方法

※本記事は、完全な私見であるためあくまでも参考程度に考えていただければと思います。

## 本記事の対象者
- プログラミング学習を始めたばかりの人または始めようと思っている人
- どうやってプログラミング学習をしたらいいのかわからない人

## 学習手順
1. 学習の目標(ゴール)を決める
1. ゴールを達成するために必要なプログラミング言語を調べる
1. 2で調べた必要なプログラミング言語を学習できるオンライン無料教材で基礎を学習する
1. プログラミング言語の環境構築を行う
1. プログラミング言語を使って色々遊んでみる
1. 有料教材で学習を深める
1. いざ開発！

以下順番に詳細の説明をいたします。

## 1.学習の目標(ゴール)を決める
今この記事を読んでいるあなたはきっとプログラミングの学習をこれからしようと思っているけどどうやったらいいのかわからない、もしくはプログラミングの学習を始めてみたばかりだけど本当にこれでいいのかと思っている方ではないでしょうか？
かくいう私も2022年2月頃からプログラミング学習を初めたのですが、最初は似たような気持ちでした。そんなあなたに質問です。

<strong>なぜあなたはプログラミングを学習したいのですか？</strong>

この質問に対しては、人によってさまざまな答えがあると思います。
- 勤めている会社がブラックなので、プログラミングができるようになって転職したい
- エンジニアって年収が高いと聞いたからエンジニアになって年収UPしたい
- プログラミングができるようになって自分でゲームを作ってみたい
- 将来企業を考えていて、そのためにプログラミングの知識が欲しい
等々...

プログラミングを学習したい理由、プログラミングを習得した上で達成したい目標(ゴール)は何でも良いと思います。大事なことは目標(ゴール)を具体的にイメージしておくことです。

例えば、プログラミングができるようになって転職したいあなたは、どんな会社でなんのサービスを作ってみたいですか？
これを最初の時点でイメージしておくことは、次のステップ2を考えるために非常に重要です。
なぜならプログラミング学習は範囲が膨大でその全てを学ぶのは不可能だからです。

## 2. ゴールを達成するために必要なプログラミング言語を調べる
ステップ1で目標が明確になったら、その目標を達成するために学ぶ必要がある技術を調べてみましょう。

入りたい企業が明確な方　→　その企業の求人情報を見るとそこに必要な技術の記載があるはずです。
Androidアプリを制作したい方　→　Kotlin、Java、React Native、Flutter ...etc
iOSアプリを制作したい方　→　Swift、React Native、Flutter ...etc
WEBサービスを制作したい方　→　JavaScript、Python、Ruby、PHP　...etc
AIエンジニアになりたい方　→　Python、R　...etc

もうお調べになった方はおわかりになるかと思いますが、上記は必要な技術のほんの一部です。例えばWEBサービスを制作したい方であれば、上記記載のプログラミング言語に加えてHTML、CSS、JavaScript、SQLなどの知識が必要になるかと思います。

この必要になる技術を大きく2つに分類してください。コア技術と周辺技術です。
この分類をするためにもあなたのステップ1で明確にしたあなたの目標が重要になります。

WEBサービスを制作したい方でも、フロントエンド(ユーザーの目につく部分のこと)をメインで開発をしたいのか、それともバックエンド(ユーザーの目につかない部分のこと)を開発したいのかなど具体的に何が目標なのかでコア技術と周辺技術が異なるからです。

例えばWEBサービスのバックエンドエンジニアになりたいのであれば、コア技術はJavaScript(バックエンド)、Python、Ruby、PHPなどのプログラミング言語で周辺技術としてHTML、CSS、JavaScript(フロントエンド)、SQLなどがあります。

ここから学習を進めるためには深堀が必要です。コア技術を一つに絞ってください。
入りたい企業があるのであれば、その企業で使われている言語。ただ個人で開発したいということであれば、日本で人気の言語を選びましょう。

少々長くなりましたが、ここまで来たら次のステップです。

## 3.2で調べた必要なプログラミング言語を学習できるオンライン無料教材で基礎を学習する
ステップ2で絞ったコア技術の学習をしてみましょう。いきなりスクールに入って勉強するぞ！ではなくまずはオンライン無料教材で学習を始めてみてください。

参考までにいくつかの技術の筆者おすすめサイトをお教えします。
※無料で学習できる範囲が限られているものもありますが、ここでは無料で学習できる範囲だけで十分です。

- [freeCodeCamp(外部リンク↗)](https://www.freecodecamp.org/learn/?messages=success%5B0%5D%3Dflash.signin-success)
学べる技術：HTML、CSS、JavaScript、Python(機械学習)など

- [Progate(外部リンク↗)](https://prog-8.com/)
学べる技術：HTML、CSS、JavaScript、Ruby、PHP、Java、Python、SQL、Go、など

- [Coursera(外部リンク↗)](https://www.codecademy.com/)
学べる技術：HTML、CSS、JavaScript、Python、Java、C#、C++、PHP、Ruby、Rなど

これらの無料教材を利用してまずはコア技術を40時間ほど(あくまでも目安)学習してみてください。40時間は結構長い時間かと思いますがそんなにここでは根を詰めて学習する必要はないです。とにかく楽しみながら勉強してみてください。

※プログラミング学習をやってみようと思ってここまでやったけど今のところ全然楽しい、わくわくするといった感情を抱かなかったあなたは、もしかするとプログラミング学習、エンジニアには向いていないかもしれないです。つまんないこと、嫌なことに長い時間を費やすよりももっと違う楽しいことをやった方が良いと私は思います。

一方、ここまでで楽しい、あるいはプログラミングしている自分にわくわくするといったことを思ったあなたは、本格的にプログラミング学習に入っていきましょう！

## 4.プログラミング言語の環境構築を行う
ステップ3では完全オンライン完結で学習をしていたと思います。ここからは本格的に自分のパソコンに開発環境を作ってプログラミングをしてみましょう。用意するものは下記2つです。詳しくは自分で検索してみましょう。

- テキストエディタ
Visual Studio Code(よくVS Code(ブイエスコード)と略して言われます)をおすすめします。

- プログラミング言語
ステップ2で絞ったコア技術のプログラミング言語をインストールします。「OS名　プログラミング言語　インストール」(例→「Windows Python インストール」)で検索すれば大体やり方が見つかると思います。

私は最初プログラミング言語のインストールがうまくいかずかなり時間がかかりました。ここで中々うまくいかずに諦めてしまう人も多いです。そういう人は、非常に勿体ないと思います。プログラミングの本質は環境構築ではなくプログラムを書くことです。ステップ3の学習であなたは楽しいと思いましたよね？わくわくしましたよね？環境構築は一度できてしまえば、永遠ではないですがしばらくはまたやり直すということはないです(学習をしている最中は特にめったにないです。)。
今少しだけ頑張ればあとはまた楽しいプログラミングが、今度はオンラインではなく自分のパソコンでできます。もうちょっと頑張ってみましょう。

最初に検索でヒットした記事を参考してダメだったら、2つ目の記事を参考にしてみる。
一度参考してみてうまくいかなかった記事をもう一度試してみる。
うまくいかない部分をTwitterでつぶやいて助けを求めてみる。あるいはここにコメントを残していただいても構いません。
とにかくここは踏ん張りましょう！環境構築に成功した方はおめでとうございます！

## 5. プログラミング言語を使って色々遊んでみる
ステップ3でプログラミング言語の簡単な構文を学習したと思います。まずはその簡単な構文を自分のパソコンで動かしてみましょう手順は下記の通りです。

1. Visual Studio Codeを開く
1. 新しいファイルを作成し、「hello.プログラミング言語ごとの拡張子」(例：Pythonであれば"hello.py")と名前を付けてデスクトップに保存してください。
1. ステップ3で学習した簡単な構文をファイルに記述して上書き保存をしてください。おそらくHello Worldと出力するプログラムや簡単な四則演算をするプログラムを学習したかと思いますので、そのプログラムをそのまま書いてみてください。
1. 最後に3で作成したプログラムが正常に動作するかを実行してみましょう。「プログラミング言語　実行方法」と検索するプログラムの実行方法がわかると思います。

私は学習始めてここまで来たときは少し感動しました。Hello Worldを出力したり、簡単な四則演算をする以外にも色々検索して試してみてください。個人的にはYoutubeで「Ruby 入門」のようにプラグラミング言語＋入門で検索してその動画を見ながら真似してプログラムを書いてみるということをおすすめします。たまたま見た動画が難しかったらそれは飛ばしてOKです。もっと簡単なやつを探しましょう！

## 6. 有料教材で学習を深める
これまでは完全に無料で学習してきました。完全に無料で学習し続けるということも無理ではないと思いますが、結構厳しいと思います。ここからは少しばかりお金をかけて学習していきましょう。

ここではシチュエーション別におすすめの学習方法をお教えします。

| シチュエーション |  資金的余裕  |  学習方法  |
| ---- | ---- | ---- |
|  独学では難しいと思った方  |  あり  |  プログラミングスクール  |
|  〃  |  なし  |  MENTA  |
|  独学でいけると思った方  |  あり、なし  |  有料オンライン教材(サブスクサービス)  |

学習方法を決めたらとりあえずそれを頑張ってみてください！途中でちょっと違うと思ったら学習方法を変えてもいいと思います。ここではコア技術だけではなく、周辺技術も含めてステップ1の目標を達成するために必要な技術を一通り学習します。

学習中も常に目標を念頭に置きましょう。大事なことは目標達成に必要のないことは学習しないことです。
プログラミング学習はその範囲が多岐に渡ります。目標達成に必要のないことまで学習をしていては遠回りになるだけです。とにかく目標達成に向けて努力あるのみです。

## 7.いざ開発！
目標達成に向けて開発をしましょう！
転職、就職、副業が目標の人は、ポートフォリオの作成。作りたいものがあってそれを作ることが目標の人は作りたいものの実現。高度なものが作れなくてもしょうがないです。
まずは理想から離れるかもしれませんが、シンプルなものを一旦作りましょう。そしてそれを段々をブラッシュアップさせていきましょう。

## おわりに
開発に終わりはありませんが、一通りステップ7までできたら挑戦するのみです。企業に応募するなり、副業の営業をかけるなり、個人開発でサービスをローンチするなりJust do itです。

こんな偉そうなことを書いておりますが、私は現在ステップ6の開発の真っ最中です。
最後までこの記事を読んでくださったあなたは、プログラミング学習に関するお困りごとを抱えていることと推察しますが私もまだまだな身です。逆に言うとプログラミング学習をこれから始めようとしているあなたと非常に近しい立場にいると思います。もしご質問などありましたらできる限りお答えいたしますので、ぜひコメントいただければと思います。

執筆：2022年7月29日(金)