プログラミング初心者が短期でスキルを身につけるための学習法

## はじめに
初心者がこれからプログラミングの学習を始めようと思っても、

「初心者がプログラミングを学習するには何から始めればいいの？」
「プログラミング言語は何を選べばいいの？」
「効率のいい学習方法はあるの？」

など、悩みがつきないと思います。

今回は初心者でもプログラミングスキルを身につけるために、私が実践していた学習法について紹介していきます。

## 独学でプログラミングスキルを習得するまでに必要な時間は約1,000時間
初心者の場合、実務で通用するスキルを身につけるには、約1,000時間が目安となります。

毎日、2時間、4時間、8時間時間それぞれ学習した場合の習得期間は次のとおりです。

- 8時間：4ヶ月
- 4時間：8ヶ月
- 2時間：17ヶ月

当たり前ですが、毎日勉強に割ける時間が短いほど、プログラミングを習得する期間が長くなります。とくに忙しい社会人の場合は、「毎日2時間勉強に割くのも厳しい！」という方も多いのではないでしょうか？

しかし、注意点としてプログラミングの学習に時間かけすぎると、過去に勉強した内容を忘れてしまうこともあります……。

そうなると、再度学び直しをするはめに陥ったり、モチベーションが低下する恐れもあります。

そのため、可能なら短期間で学習することをおすすめします。とくに平日時間が取れない場合は週末にみっちり勉強するなどの努力も必要です。

## プログラミングの適性があるのか知っておこう

これからプログラミングの勉強をはじめようと思っても、自分にプログラマーとしての適性があるのか？わからない人もいると思います。

こちらのサイトではプログラマーとしての適性診断ができますので、興味があったら試してみてください。

- [プログラマー無料適性チェック](https://www.progra-master.com/hk/aptitude_step1.php)
- [3分で力試し！エンジニアやプログラマーの適性がわかる『CABテスト』](https://docoic.com/2560)

ただし、適性診断はあくまで目安ですので、診断の結果適性がなかったとしても、あきらめることはないと思います。

私も適性はないですが、それでも10年以上続けられていますので。

## プログラミングでやりたいこと、作りたいことを決めよう

プログラミング言語はたくさんの種類があります。プログラミング言語によっては作れるもの、作れないものがあります。

そのため、何を作りたいか？を最初に決めておいて、その分野の開発ができるプログラミング言語を選ぶ必要があります。

プログラマーの仕事は、以下のように多種多様です。

- Webサイト構築、Webアプリ作成：JavaScript/PHP/Ruby
- Windows用アプリ作成：Visual Basic/Java/Python
- Mac・iPhoneアプリ作成：Swift
- Androidアプリ作成：Java/Kotlin
- AI（人工知能）開発：Python
- 組み込み系開発：C/C++
- 業務システム：Java

また、働き方や契約形態によっても学びたい言語は変わってきます。

- 転職して正社員エンジニアとして安定した働き方をしたい
- フリーランスとしてノマド的な働き方をしたい
- オリジナルのサービス・アプリを開発したい

プログラミング言語選びで後悔しないためにも、まずはこのようにどんなモノが作りたいか、どんな働き方をしたいかを決めておきます。

その上で、それが実現できる言語を選ぶことが大切です。

## プログラミングを習得するのに必要なスキル
作りたいものが決まったら、そのためにはどんなプログラミング言語やスキルを学べばいいのかを調べておきましょう。

たとえば、Webサイトの構築などの仕事をしたい場合は、次のスキルが必要です。

- プログラミング言語：Ruby or PHP とJavaScript
- マークアップ言語：HTML・CSS
- フレームワーク：Ruby on Rails、Laravelなど
- データベース：MySQL、PostgreSQL
- 開発環境・ツール：Git、AWS、Herokuなど
- Webサーバーの知識
- セキュリティの知識

だいたいサービスやアプリを開発する場合は、プログラミング言語のみではなく付随してさまざまなスキルを覚えなければいけません。

やりたいことを実現するにはどんなスキルが必要なのか、あらかじめ調査しておきましょう。

ただし、最初から全て覚える必要はなく、学習の過程や実務で並行して覚えることもあるので、今の段階では必要以上に難しく考えることはありません。

## 学習サービスで基礎を学ぶ
いよいよプログラミングの学習を始めていくわけですが、学習方法を間違えると余計に時間がかかったり、再び学び直す羽目になってしまいますので注意が必要です。

おすすめの学習法は、次のとおりです。

- 学習サービスでプログラムに慣れる
- 書籍で詳しく勉強する
- ポートフォリオ、オリジナルのサービスを作る

まずはWebブラウザ上で手軽に学べる学習サービスで、プログラムの動かし方に慣れていきましょう。

おすすめの学習サービスは以下になります。

- [Progate](https://prog-8.com/)
- [paizaラーニング](https://paiza.jp/works)
- [ドットインストール](https://dotinstall.com/)

無料の範囲でも基本は理解できるので、ぜひ登録しておきましょう。

## 書籍でじっくり学ぶ

動画サービスである程度基本を理解したら、書籍でより詳しく学ぶことをおすすめします。

書籍で学ぶメリットは次のとおり。

- 動画サービスより詳しく解説している
- アプリ作成の手順を1から学べる
- 学習後も辞書代わりに使える

ただし書籍で勉強する際の注意点としては、最初から最後までしっかり覚えようとしないこと。

全て覚えようとすると膨大な時間がかかって、いつまでも学習が終わらない可能性があります。まずは、1冊流しで読み通すくらいの勢いで進めたほうが良いと思います。

プログラミング初心者向けの書籍については、次の記事で解説していますのでぜひ参考にしてください。

[プログラミング初心者向け。これだけは読んでおくべきおすすめ本7冊](https://www.furikatu.com/recommended-programming-books/)

## オリジナルポートフォリオを作成する
基礎学習が終わったら、ポートフォリオを作成してみることをおすすめします。

ポートフォリオとは作品集のようなもので、デザイナーやエンジニアがポートフォリオサイトやGitなどで、自分の作品やオリジナルサービスを紹介しています。

以下のようにポートフォリオ作成には大きなメリットがあるので、学習の仕上げとして、ぜひ作っておきましょう。

■ポートフォリオのメリット
- 就職・転職の際にアピールできる
- ポートフォリオを作る過程で応用力が身につく

## 初心者がプログラミングの学習で挫折する2つの原因
### エラーが解決できない
プログラミングは独学で学習すると挫折しやすいと言われています。プログラミングを独学で学習した場合の挫折率は9割と言われているくらいで、ほとんどの方が挫折しています。

挫折する理由として最も大きいのが、エラーが解決できないで先に進めないということが挙げられます。

プログラムは最初から意図した通りに動くことはまれで、だいたいは何かしらのエラーが発生します。そして、プログラマーはそのエラーを一つずつつぶしてプログラムを完成させます。

しかし、初心者の場合はなかなかエラーが解決できずにそのまま挫折する可能性が高いです。

そのため、調べてもエラーが解決できない場合は、Q＆Aサイトを活用することをおすすめします。

エンジニア向けのQ＆Aサイトとしては、以下がおすすめです。

- [teratail](https://teratail.com/)
- [stack overflow](https://ja.stackoverflow.com/)

### モチベーションが続かない
最初に紹介したように、プログラミングスキルを習得するには個人差はありますが、約1000時間必要です。

これだけ膨大な時間を勉強に費やすので、モチベーションが続かなくてあきらめてしまうことはよくあります。

そのため、いかにモチベーションを持続させるかが大切になってきます。

長期間ずるずると勉強していると、本来の目的も忘れ惰性で続けてしまいがちです。そうなるとモチベーションが下がる → そのうち勉強をサボる日が多くなる → いつのまにか勉強をあきらめていた……。なんてパターンもありえます。

モチベーションを持続するコツは次のとおり。

- 学習する期間を設定する
- キャリアビジョンを明確にする
- 習慣化する

最低でもこの3つは意識しておきましょう。

可能なら、短期間で学習を終わらせることが大切です。

## 最短でプログラミングを学びたいなら
「やっぱり独学でプログラミングを勉強する自信が無い…」
「途中で挫折しそう…」

という方は、プログラミングスクールで学習することをおすすめします。

オンライン完結のスクールも多くネットとPCがあれば学べるので、独学に自信がない場合はスクールも検討してみてください。

■スクールのメリット
- わからないことは質問してすぐ解決できる
- キャリアサポート（就職や転職、独立）もしてくれる

[オンラインで学べる！プログラミングスクールおすすめ15選](https://www.furikatu.com/tenshoku-programming-school/)