プログラミング独学!初心者は何から勉強していけばいいのか?おすすめの勉強法を紹介!

プログラミングっていう言葉なんてもはや当たり前になってきて、小学校でも必修化とかなんとかというこの頃。企業はどんどんITを使うようになって、プログラミングを学んでエンジニアになってみたいなあ・・・なんて思う人も中にはいるんじゃないかな?と思う。

そこで今回は初心者がこれからプログラミングを勉強するとしたら、どういった方法でやっていけばいいのか?っていうのを書いていきたい。あくまで個人的な感想みたいなところもあるけど、よかったら参考にしてみてくれ。

お前プログラミングできるのかよ?

プログラミングの勉強とかお前コード書けるのかよ?っていうところだけど、自分は正社員としてエンジニアをやった後にフリーランスのエンジニアとして案件をいくつか受けてきたっていう感じです。学生の頃企業で働いていたことも含めると5年ぐらいはプログラミングに関わっているということになる。といってもニートみたいな期間もかなりその中に含まれているな。

どんな言語使ってたの?

どんな言語使っていたのかと気になる人もいるだろうから自分が今まで業務でやってきた言語やライブラリとかを書いておくとする。

扱った言語
  • JavaScript
  • TypeScript
  • Ruby
  • Ruby on Rails
  • Go
  • PHP
  • Laravel
  • React
  • Nuxt.js(vue)
  • jQuery

言語やライブラリはこんな感じだろうか。こうしてみると割と広くやってきたような気もある。最初はRailsやってその後LaravelやってGoやって、その後VueだったりReactだったりっていう業務をやってきた。

自分はサーバーサイドよりフロントの方が好きみたいだ。フリーランスやってると案件ごとに色々変わってくるから色々知れて面白いよね。API作ったり、管理画面作ったり、ユーザーが使う画面作ったり色々作ったなあ。やった内容は無限に書くことになってしまうからここら辺でやめておく。

初心者におすすめのプログラミング独学勉強法

自分がこれからプログラミングを勉強していくとしたらどういった方法を取るか?っていうのを考えながら書いていきたい。あくまで個人的なものです。

プログラミングの勉強法だけど、いくつか項目があるから項目ごとに見ていきましょう。

プログラミングの勉強法
  • Progateでプログラミングを知る
  • 分からないところをすぐに聞ける環境を作る
  • ネット教材で学習する
  • オリジナルアプリを作る

この後それぞれを詳しく書いていきます。

Progateでプログラミングを知る

まずはプログラミングとやらを知るためにProgateに手をつける。ここでプログラミングってどんな感じなの?プログラミング自分嫌いじゃないかな?なんていうことを多少知りたい。Progateにはプログラミングのいろんな講座が用意されていて、ゲーム感覚で進めることができる。

 

Progateで学べるプログラミング

いろんなコースがあって最初はどれをやったらいいか迷うと思うけど、まずはHTML&CSS・・RubyやPHP、Pythonなどの言語を触れるといいです。

  • HTML・CSS
  • Ruby
  • PHP
  • Python

RubyとかPHPとか色々言語あってどれやればいいんだ?って迷うけど、Ruby・PHP・Pythonは結構似ているから、どれか一つ読めれば他の言語もある程度読めはすると思います。

Progateに自分が手をつけたのは確かプログラミングの勉強を始めてから割と経ってからだと思うけど、今見るとレベル106だった。

Progateのレベル

レベルあるのはゲームみたいで楽しいですよね。存分にやってこのレベルを超えてくれ

ただ正直がっつりProgateやりました!っていっても自分で何か作るっていうことは難しいと思う。やっぱりいろんなことを知らないといけなくて、そう甘くはない。

そんな何周もやるとかじゃなくて、プログラミングの感覚が分かって楽しいかも!ってなったらProgateはやめて他のスタイルで勉強するのがいいですよ。

プログラミングの分からないところをすぐに聞ける体制を作る

Progateなどでプログラミングに触れてみて、「あ、自分プログラミング好きかも!本格的にやりたい!」ってなったら用意するものがある。環境です

独学でのプログラミング学習の辛い点は何かエラーが起きてもそれを聞ける人がいないということです。プログラミングをしたことのある人なら分かるだろうけど、エラーは起きまくります。それらのエラーを初心者のうちから全部ひとりで調べて解決するっていうのは少々難易度が高いです。

プログラミングスクールを検討する

賛否両論あると思うけど、プログラミングスクールを使うっていうのが個人的にはおすすめ。自分も昔プログラミングスクールで勉強してそれからエンジニアになって・・・みたいな流れでした。

プログラミングスクールなら分からないところに当たったらすぐに人に聞けるっていう環境を手に入れることできる。最初なんて分からないのが当たり前だし、エラーで何時間も悩むっていうことはザラにあるはず。

侍エンジニアの記事にこんな結果が出ていますね。

挫折や行き詰まりを感じた理由

【挫折率90%】プログラミング学習に失敗する原因と正しい学習ステップ

実際不明点を聞けなくてうまく勉強を続けられず身につけられなかった・・・っていうことは独学だと普通に起きるはず。

挫折率約90%とかいうけど、分からないところを聞けずに学習をやめてしまった人間の屍が見える気がする。そういった屍にならないためにはやはりそれを解消できる環境があった方がいい。

例えばこれはTechAcademyだけど、15~23時でチャットサポートしてくれる。

TechAcademyのチャットサポート

TechAcademy [テックアカデミー]

どのプログラミングスクールでもこういった体制は取られていると思うけど、そこは色々見比べてみるといいでしょう。分からなくなってしまってそれ以降進めなかった・・・なんてことがないようにこういうサポートがあるのは非常に便利

料金が気になったら今はサブスク型で選べば安いプログラミングスクールもあるから、そういったところを見てみるといいです。ただ質問ができないようなところはやめておくことをおすすめします。

MENTA等を使う

プログラミングスクールでなくても分からないところを聞ける環境を用意できればいいので、自分で学習を進められるのであれば詳しい友達にお金払って見てもらうとかでもありです(教材何使うんだ問題はあるけど)。

ただ普通そういう人はいないから、お金を払って自分のメンターになってもらうっていうMENTAを使ってみるのもいいかもしれない。

MENTA

ただプログラミングスクールほど、聞きたいことがあってもぽんぽん質問してすぐに回答が返ってくるっていうことはないだろうからなんとも言えないところ。こういうサービス使うとスクールよりも安く済むと思うからそこは良いよね。

ただプログラミングスクールのように学習教材はこちらで用意しないといけないから、体系的に学習したいならプログラミングスクールが良いですね。

プログラミング独学時の学習サイト

プログラミングを学習することのできるサイトは色々あるけど個人的にはUdemyがおすすめ。オンラインの動画講座を買ってそれを見て学習するっていうスタイルなんだけど、講座もセールなら2000円ぐらいとかで買うことができるから良い。

Udemyのプログラミング検索結果

セールしていない時は2万とかなるからその時は買わないのがいいです。セール頻繁にやってるからその時に書いましょう。

初心者向けの講座もあるからそう行ったものを狙って使っていくのがいいですね。

Udemyで「プログラミング 初心者」で検索した結果

Udemy見たら自分41講座買っていた模様。

Udemyで買った講座

Udemy結構良い感じの多いから、気になったのあったらセール中に買ってたりしちゃったんですよね。完了率みると大体掴めてきたらこれは動画見るのやめていますね笑

以下の記事でプログラミング学習におすすめのサイトを紹介しているから良かったら参考にしてみてください。

プログラミング学習を進めたらオリジナルアプリを作ろう

Progateでプログラミングがどんなものか分かった、それからさらに教材やスクールで学んだ。そうなったら次にやることはオリジナルアプリの作成だ。オリジナルアプリの作成は今までやった学習とは違って自分で考えてコードを書いていかないといけないからなかなか難易度が高い

  • どんな画面構成にするのか
  • どんな機能をつけるのか

これらを考えて自分のイメージ通りに作っていくのはかなり至難の業だ。ちなみに画面のデザインを最初から考えたいなら個人開発ならAdobeXDを使ってみるのがおすすめです。

AdobeXDの画面

画面デザインをさくさく作ることができるし、どんな画面遷移になるのかも確認できる。webアプリでもスマホアプリでも作る場合には最初にざっくり作っておくと画面デザインに作る時に悩まずに済むでしょう。

それと機能も最初にある程度洗い出しておいた方が良いかと思います。GithubのReadmeにリストでまとめておくのでもいいし、タスク管理のアプリ使ってまとめておくのでもいいしね。

それに加えて開発する際に検討しないといけない項目も出てくる。

開発の際に考えないといけない項目
  • Gitの操作に慣れないとなあ・・・
  • GitHub使うかあ・・・
  • データベース何にしようかなあ・・・
  • CI使おうかなあ・・・
  • 本番環境はどうするのか・・・

この辺りは無限に出てくると思うけど、できる範囲で頑張ろう。

ここまでできたら最高

この段階では今まで使ったことはないだろうけど、環境はDockerで作って、CIはGithubActionsかCircleCI辺りを使うのが良いと思う。

Dockerで開発環境があるって今や当たり前だから、もしエンジニアとして働くならDockerは触っておいて欲しい・・・(サーバーサイドなら尚更、フロントなら別にいいかなという感じだ)

個人的にここまでできたら最高だなあ・・・っていうのを一応ザッと書いておく。(Web版だけど)

  • Dockerで開発環境を作る
  • 何かしらの言語(PHPかRubyかPython + JavaScript)でアプリを作る
  • デプロイは楽にPaasを使う(本当はAWSやGCPでDocker環境で動かすのが良いなあ)
  • CircleCIやGithubActionsでbuildとlintとdeployを行う
  • Gitでバージョン管理
  • Githubに上げとく

とはいえこれは少々無理がありますね、アプリを作るのだけでかなり大変なはずだから、とにかく人に見せられるぐらいのアプリを作れたらいいよね。その他はおいおい学んでいきましょう。

プログラミングの独学に必要なもの

プログラミング学習を進めるうえで必要になってくるものもありますよね。エディタやターミナルなどは必須だし開発するとなると他にもいくつか欲しいものがあります。

プログラミング学習を進める上で必要なもの
  • エディタ
  • ターミナル
  • DBのGUIツール
  • 開発用のChrome拡張機能
  • ・・・

いくつかのツールやアプリを使って開発していくことになると思います。以下の記事でプログラミング学習を進めるうえであったら良さそうなツールを書いているのでよかったら参考にしてみてください。

プログラミング初心者が学習の前に知ること

学習を進める前に知っておいたほうがいいことをここでは少し書いていきます。

スマホアプリとWebアプリどちらを作りたいのか?

プログラミングといっても、使う言語によって作れるものが変わってきますよね。大きく分けてスマホアプリを作りたいのか、Webアプリケーションを作りたいのか?とかです。

  • スマホアプリ開発
  • Webアプリケーション開発

どちらをやりたいかによって扱う言語が変わるから、学習を始める前や最中に君がどちらをやりたいのかを考えておこう。

スマホアプリ開発ならSwiftやKotlin、dartなどなど。WebアプリケーションならPHPやPython、JavaScriptなんかだね。

プログラミング言語
  • スマホアプリ開発・・・Swift/Kotlin/Dartなど
  • Webアプリケーション開発・・・PHP/Python/JavaScript/Rubyなど

スマホアプリ開発に関しては以下の記事で書いたから、どんな作り方があるのか知りたい人は参考にどうぞ。

人工知能開発はPython

ちょっと変わったもので人工知能データ分析といった類をプログラミングでやりたい!っていう場合もありますね。こういう場合はPythonやRを使うことが多いから、その辺りを勉強するのがいいでしょう。

以下の記事で人工知能開発の勉強法を書いたのでよかったら参考にしてみてください。

フロントエンド・バックエンドを知る

世の中の企業ではフロントエンド・バックエンドで区切って開発しているところも多いんじゃないかと思う。どっちもいじる場合もあるけど、フロントはフロントの人、バックエンドはバックエンドの人で開発するスタイル。それもアプリケーションは画面と裏側の処理で分けられるからですね。

フロントエンドとバックエンド

Webアプリ開発とは?入門者がゼロから開発するための知識と学習手順まとめ

RailやLaravelなどフレームワークを使えばそこまで意識はしないかもしれないけど、フロントからAPIを叩いてアプリケーションを動かすっていうパターンが多いからそういう時にはフロントとバックを意識しますよね。

フロントエンドとバックエンド
  • フロントエンド・・・画面の作成等
  • バックエンド・・・データベースと連携してデータを加工等

プログラミングを学びながら自分どっちの方が楽しいと感じるのかなあ・・・なんて考えてみるといいと思います。

環境構築とデプロイは躓くポイント

プログラミングの概念や実装で詰まるところも多いけど、プログラミング学習で一番詰まるのが個人的には以下の2つなんじゃないかと思う。

  • 環境構築
  • デプロイ

プログラミング始めたばかりの環境構築は結構鬼門で何度もエラーに遭遇して、やっとのこと環境を構築できるっていうパターンもあると思う。環境構築を突破できないとコードを書くところまでいけないからここはなんとか突破したい。

そしてもう一つがデプロイだけど、開発環境ではうまくいっていたものがデプロイ先ではうまく動かなかったりそもそもデプロイ方法が難解だったりして結構死ねる。

だけどせっかく作ったものはネットに、全世界に公開してやろうではないか。自分の作ったものを誰かが見て使うって悪くないかもしれないよ。

学習したものはアウトプットしよう

独学して学んだものはどこかに書き留めておくといいです。それが自分のやったことのある種証明になりますからね、誰かに説明するつもりで書くと自分の理解も深まりますよ。

アウトプット媒体
  • ブログ
  • Qiita
  • Zenn

アウトプットする媒体はいくつかあるけど、自分のおすすめはブログです。Qiitaなどでは書いた記事に対して技術的なコメントが来ることがあるけど、マジレスされるとメンタルがやられる可能性があります。そういった可能性が少ないブログがおすすめ。

プログラミング独学のまとめ

ちょっとプログラミングを学ぶにはどう学んでいったらいいのか?っていうことを書いてみたけど、どうだろうね。今回書いたことをまとめるとこんな感じです。

まとめ
  1. Progateなんかでプログラミングを知る
  2. 本格的に学びたかったらスクールを使うのがおすすめ(すぐ聞ける環境を作る)
  3. オリジナルアプリを作ろう

オリジナルアプリ作れるところまでいったらかなり自信になるんじゃないかなと思います。こういう機能欲しいなあーって思ってそれを自分で実装できることは最初はイメージできないかもしれないけど、一歩ずつ進んでいけばできるようになっている自分がいます。

プログラミング学習は1人でやるのは正直大変だと思うし、時間もかかるけど自分で何か作れるっていう感覚は結構良いものです。コード書いていきましょう。