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

プログラミングっていう言葉なんてもはや当たり前になってきて、小学校でも必修化とかなんとかというこの頃。企業はどんどん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にはプログラミングのいろんな講座が用意されていて、ゲーム感覚で進めることができる。

 

いろんなコースがあって最初はどれをやったらいいか迷うと思うけど、まずはHTML&CSS・・RubyやPHP、Pythonなどの言語を触れるといい。RubyとかPHPとか色々言語あってどれやればいいんだ?って迷うけど、Ruby・PHP・Pythonは結構似ていると思うから、どれか一つ読めれば他の言語もある程度読めはすると思う。

他のコースにGoとJavaScriptもあるけど、Goはちょっと違う感じがあるから個人的には最初はおすすめしない。JavaScriptもまあ似ているっちゃあ似ているけど、フロント興味あるってなったらやればいいと思うぞ(どうせ開発するとなったら使うしね)。Javaはよく知らない・・・

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

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

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

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

分からないところをすぐに聞ける体制を作る

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

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

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

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

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

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

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

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

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

TechAcademy [テックアカデミー]

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

MENTA等を使う

ぶっちゃけプログラミングスクールでなくても分からないところを聞ける環境を用意できればいいので、詳しい友達にお金払って見てもらうとかでもありだと思う(教材何使うんだ問題はあるけど)。ただ普通そういう人はいないから、お金を払って自分のメンターになってもらうっていうMENTAを使ってみるのもいいかもしれない。(使ったことはない)

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

ネット教材で学習する

ネット教材を使って学習するっていう手法もありますよね。色々あるけど個人的にはUdemyがおすすめ。オンラインの動画講座を買ってそれを見て学習するっていうスタイルなんだけど、講座もセールなら2000円ぐらいとかで買うことができるから良い。

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

ただUdemyはプログラミング知識のある講座が前提のものが多い気がします(エンジニアが別のスキルを身につけたりするのに使うようなものが多いかと)。

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

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

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

アプリでプログラミング学習をすることのできるアプリっていうのもあるからそういうのを使ってみるのもいいけど、うーん本格的に学ぶにはどうなんだろう・・・っていうのがあるからおすすめしない。

Udemy以外なら以下なんかがありますね。

何か気になる講座があったら見てみるといいでしょう。

プログラミング学習の前に知ること

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

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

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

スマホアプリ開発ならSwiftやKotlin、dartなどなど。WebアプリケーションならPHPやPython、JavaScriptなんかだね。スマホアプリ開発に関しては以下の記事で書いたから、どんな作り方があるのか知りたい人は参考にどうぞ。

それと以前友人がプログラミングを勉強し始めるとかなんとか言っていて、その時ふと書いた記事があるからこれからプログラミング始める人は読んでみるといいかもしれん。ノリで書いたから変なこと言ってるかもしれん。

人工知能開発はPythonがいいだろう

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

人工知能関連だとPythonでこういったこともやったりしたから参考に見てみるといいかもしれん。

Pythonを使った人工知能関連の本も多くて一昔前に有名になったこの本もPythonでしたね。

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
created by Rinker

一時期人工知能関連勉強しようと思って、いくつか本を買ったけどPythonを使ったもの多かった。今や当たり前のように人工知能作るならPythonみたいになっているから情報量もそりゃ多いか。

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

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

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

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

フロントエンドは画面の作成、バックエンドはデータベースと連携して加工したりといったことが主なやることになると思うからプログラミングを学びながら自分どっちの方が楽しいと感じるのかなあ・・・なんて考えてみるといいと思います。

自分はReactとかVueとかでフロント触っていたい感がある。

環境構築とデプロイには気をつけよう

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

  • 環境構築
  • デプロイ

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

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

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

プログラミングエディタは好きなものを使おう

何かコードを書く際にはエディタを使うと思うけど、エディタの種類はたくさんある。インストールして使うものからブラウザで使えるものまで色々あります。

ブラウザで使うことのできるエディタっていうのもあってこの記事ではそれらを紹介しているよ。環境構築が必要なくてサクッと試すことができるのがいいですね。

Macで使うことのできるエディタを紹介しているよ。Windowsでも開発できるけど、Mac使う人の方が多いんじゃないかなと思う。Macユーザーの人はお気に入りのエディタを見つけてくれ。

VSCodeがおすすめ!

エディタはSublimeTextやAtom、VSCodeあたりが有名だし情報も多いと思うから迷ったらその辺りを攻めてみるといいと思う。vimやemacsっていう選択肢もあるけど、慣れるのが大変だから最初は普通にエディタ使っておくのがいいと思う、使いやすいしね。

ちなみにpaiza.ioでもコードをブラウザで実行して試すことができるから、paizaを普段から使っているなら使うのもありですね。言語もいろんなものに対応している。

オリジナルアプリを作ろう

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

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

これらを考えて自分のイメージ通りに作っていくのはかなり至難の業だ。ちなみに画面のデザインを最初から考えたいなら個人開発なら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に上げとく

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

まとめ

ちょっとプログラミングを学ぶにはどう学んでいったらいいのか?っていうことを書いてみたけど、どうだろうね。もちろん個人の感想だから「全然ちげえよカスがっ!」って思う人もいると思う。

今回書いたことをまとめるとこんな感じか。

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

オリジナルアプリ作れるところまでいったらかなり自信になるんじゃないかなと思う。それまでもそれからも大変かもしれんけど笑

プログラミングで稼ごうとかプログラミングで副業しようみたいなことが言われるような世の中だけど、経験を積まないとおそらく君が想定しているような金額をまともに稼ぐことはできないし、副業でプログラミングなんて本業がエンジニアじゃないと稼ぐのなんてほとんど無理でしょう。

自分は時給5000円とかでやっていたりしたけど、振り返ってみるとかなり勉強したと思うし最初の数年は土日もかなりやっていたような気がする。といってもプログラミング自体が好きだったから苦痛ではない、時間はマジで溶けていくけどね。

プログラミング好きな人ならいいんじゃないだろうかエンジニアも。エンジニアは土日もコード書くような変態が多い気がするからそういう中で生きてみたいなら存分に勉強しような、面白いアプリ作ろうぜ。

 

そういえばChrome使っているなら、結構拡張機能開発者向けにも便利なものあるから使ってみると面白いかもよ。

おすすめの記事