【プログラミング勉強】完全無料のプログラミング習得ロードマップ【JavaScript】

私は大学3年生（2023年時点）で[Matcher株式会社](https://matcher.jp)のエンジニアインターンをさせて頂いております。

この記事では、**完全独学・費用を一切かけずにエンジニアになりたい**という方向けに書きました。「**プログラミングってよく聞くけど、何から始めればいいの？**」という気持ちを少しでも解決する手立てになれればと思っております。

# どのプログラミング言語を学ぶのが最適か
プログラミング言語を選定することが一番難しく感じる方も多いと思います。Python, JavaScript, Ruby, C++…挙げていけばマイナーな言語も含めてキリがないと思います。ではどの言語を勉強すればいいのか…

完全に私の主観ですが、結論**どれでもいい**です。理由は、一つでも言語をマスターすることができれば、他の言語でもほとんど融通が効くことが多いからです。大事なことは一つの言語を完璧に身につけることが大切だと思います。

どれでもいいと申したのですが、記事を書く上で一つの言語に絞ってロードマップ的なことを書いていきたいので、今回は**JavaScript**という言語を学ぶロードマップで行こうと思います。実際に私自身もJavaScriptから学び始めましたが、JavaScriptをマスターした後は、それよりも短期間でRubyやPythonもある程度習得し、扱えるようになりました。というわけで、ここからはJavaScript習得のロードマップを私主観で記述していきます。

# JavaScript習得ロードマップ

### JavaScriptとは
JavaScriptは、**Web開発において使われる言語**です。JavaScriptには有名なフレームワーク、ReactやVueというものがあります。みなさんがよく利用しているであろうアプリケーション「Instagram」や「Netflix」などのUI部分で使用されています。また、GAS(Google App Script)と言われる、いわゆるGmailを自動で送信する機能の開発、社内で使用するGoogle スプレッドシートの拡張開発等ができるGoogleのサービスでは、JavaScriptの構文で開発を行います。このようなJavaScriptの高い活用実績が主な理由で今回は選定しました。**通常、JavaScriptはウェブブラウザ上でしか動かすことができない**のですが、Node.jsというJavaScript実行環境ローカルPCに用いることで、サーバーサイドの開発も行えるようなった歴史的背景があります。参照先は以下に記しました。ぜひご覧ください。

https://jsprimer.net/basic/introduction/

https://qiita.com/non_cal/items/a8fee0b7ad96e67713eb

### 勉強方法
>
>冒頭でもお伝えしましたが、インターネット上にはたくさんの学習サービスが提供されています。その中には有料サービスも含まれています。無論、有料サービスを使うことを否定しているわけではなく、むしろ経済的に余裕があったり自己投資をしっかりとできる方は有料サービスを利用した方が断然おすすめです。ですが、今回は私が実際に行ってきた方法をお伝えしようと考えているため、必然的にすべて無料サービスの紹介となります。つまり、私はケチっぽく、一切お金を使わずに勉強していました。（笑）

結論から申しますと、私が使用していたサービスはこの[サイト][link]になります。

https://www.freecodecamp.org/

[link]: https://www.freecodecamp.org

上記[サイト][link]は標準で英語になっていますが、設定で日本語にすることができます。
ここではハンズオン形式（手を動かしながら学ぶ形式）になっており、身につきやすい学習形式となっております。JavaScript以外にも、**HTMLとCSSの基礎**、**データベースやPythonでのデータ解析**など、さまざまな講座を受けることができます。

実際にサイトに訪れてみます。
[freecodecamp][link]のトップページに訪れるとGet started(it's free)と書いてあるボタンがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3509214/8ce54b6f-f1da-f8c8-ac11-95dc2758e3d5.png)


押すとページが遷移し、おそらくアカウント作成のページが表示されます。メールアドレスでアカウントを作成（無料）し、サイトのトップに移るとさまざまな講座が一覧で表示されています。右上の donate と表示されている右隣のボタンを押すと言語設定をすることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3509214/d3c4bee2-e818-bfd6-5c4e-dc661301f3a2.png)

上から２番目にJavaScriptの講座が用意されています。その講座に移ると、たくさんのJavaScriptコースが一覧で表示されます。このコースを全て受講してください。期間はおよそ**２ヶ月から３ヶ月ほどかかる**と思います。プログラミングの感覚を掴むことや、JavaScriptの特性を理解することに時間がかかると思います。ですが、この講座をすべて終える頃には、JavaScriptの基礎をマスターしていると思います。

私もまだまだ未熟ですが、プログラミングの勉強を進める上で大切なことは**ググること**だと思います。
例えば、上記の講座を進めていくと、
あれ、あのメソッドってどうやって使うんだっけ？
配列？オブジェクト？どういうものだっけ…
と、忘れてしまうことが多々あると思います。それを調べることも、プログラミングを勉強することに入ると思います。開発を始めると、コーディングをするよりも調べている時間のほうが多くなるので、プログラミングを勉強しながら調べる癖をつけておくと良いと思います。

## プログラミングコンテスト（Paiza, AtCoder）

プログラミングの基礎をある程度学ぶことができたら、次はアウトプットです！
私は主にプログラミングの問題を提供しているサービスを利用していました。今回は私が普段から使用しているサービスを誠に勝手ながら紹介させていただきます。

### Paiza
https://paiza.jp/

本サービスは、エンジニア向けの就活や学習サービスとなります。その中で提供されているプログラミング学習サービス、**Paizaラーニング**では、たくさんのプログラミングの問題を解くことができるほかに、スキルチェックと呼ばれる、1度しか受けることができない問題に挑戦し、その結果によってPaizaランクを上げることができます。ランクが上がっていくと企業からスカウトが来ることもあります！
私は本サービスを非常によく使用させていただいております。就活支援の面でも使わせていただいてますが、何より問題集やスキルチェックに挑戦できるといったところが非常に魅力的です。ぜひ、勉強を一通りすることができたらこちらのサービスを使用して問題集やスキルチェックに挑戦してみてください！

### AtCoder
https://atcoder.jp/home

こちらも先ほどと同じサービスとなっておりますが、より豊富な問題集が揃っています。何よりもPaizaとの相違点として、毎週土曜に**プログラミングコンテスト**が開催されることです！（~~私はまだ参加したことないのですが…~~）
このコンテストは、様々な企業（トヨタ、東京海上日動、freee…）が主催のコンテストが開催され、スコアが一番高かった方には優勝賞金や、その他豪華特典がいただけるイベントが開催されます。このコンテストはリアルタイム、要は毎週土曜に開催される指定の時間に参加する必要があります。ですが、コンテスト期間（大体土曜～日曜あたりまで）が終わった後でも、開催されたコンテストで出題された問題は過去問としていつでも挑戦することが可能です！このコンテストで出題された問題が非常に有用なものばかりで、結構難しいです。修行するのに素晴らしい問題がたくさん揃っています。ぜひこちらのサービスも使用してみてください！


## 最後に
ここまで読んて頂きありがとうございます。有益な記事ではありませんが、これをみて少しでもプログラミング勉強の後押しができたら幸いです。