【2020年版】プログラミングを勉強する順番を考えてみた

Share on:

プログラマーである限り、ずっと勉強をし続けなければいけません。
このブログでは、プログラミング初心者が学ぶべき言語は PHP です、や【初心者向け】プログラミングを独学するのに向いている言語は?、といった初心者向けの勉強方法について解説しています。

今回はさらに、初心者を抜け出したジュニアエンジニアレベルの人が次にどのような技術を身につけていけばいいかを考えてみました。
僕自信がジュニアエンジニアレベルなので、これから僕がどんな勉強をしていこうかと考えたことによるものです。

AWS 周りのインフラを学ぶ

初心者が PHP を学んだとして、次に必要になる知識はインフラです。
インフラを仕事で直接触る機会はないかもしれませんが、セキュリティの知識はサーバサイドエンジニアであっても必須です。
コードが書けるだけでなく、コードをどのように動かすかまで知っておくためにインフラを勉強しましょう。

勉強するべきインフラのスキルは以下のとおりです。

  • AWS
  • Terraform
  • Docker
  • CircleCI

1 つずつ簡単に解説しますね。

AWS はインフラの基本

AWS はジュニアエンジニアで聞いたことのない人はいないでしょう。
ベンチャーに勤めている人なら触ったこともあるかもしれません。

AWS はインフラのほぼすべてを網羅しています。サーバ、データベース、ストレージといった基本的なところは抑えておきましょう。
インフラエンジニアになるなら、VPC をつかったネットワーク設計や LB、監視あたりもできるといいかもしれません。

Terraform

Terraform はインフラをコード化する技術です。
AWS でインフラ環境を構築するには、ブラウザ上でサーバを作成したり、ミドルウェアをインストールする必要がありますが、それだと今のインフラの状態を管理することが難しくなってしまいます。
インフラの情報をコードに残しておいて、コマンドを実行するだけで誰でも同じ環境が作れるのが Terraform の特徴です。

AWS だけできれば仕事はできると思いますが、インフラの保守コストを減らすためにもコードでの管理はできるようになっておくと、モダンなベンチャー企業などでは重宝されるでしょう。

Docker

Docker はインフラをコンテナ化する技術です。
コンテナというのは名前の通り倉庫みたいなイメージです。作った環境をコンテナに入れておけば、誰にでも同じ環境を届けることができます。
使われ方としては、ローカル環境で作ったインフラをコンテナ化して、全く同じように本番環境でも使うことです。

ローカルと本番を全く同じ環境にするために、Docker は使われます。

CircleCI

変更したコードを本番環境に反映させるデプロイを自動化してくれるものです。

Github にプッシュするだけで、CircleCI が動き、デプロイが完了します。その際にテストも動かして失敗したら戻すような動作も入れておくことで、最低限のセキュリティを担保しつつ、デプロイ作業を自動化することができます。

フロント周りを学ぶ

フロントエンドを学ぶなら、React+Redux がおすすめです。

僕は Laravel と相性が良い Vue をちょっと学んだのですが、今からフロントエンドを学ぶなら React をおすすめします。

Redux というのは、React のフレームワークみたいなものです。
なぜ React が良いかというと、求人数が多いことと、React Native というアプリ言語にも応用することができるからです。

React と Vue のどちらかで意見が分かれることが多いので、どちらも試してみて、好きな方を選んでもいいと思います。

サーバサイドの一歩先へ

エンジニアとしての単価を上げていきたいなら、たくさんの言語を扱えるだけではダメで、何か 1 つの言語を極めておくか、単価の高い言語を学ぶ必要があります。
今、サーバサイドで一番単価の高い言語は Golang です。
機械学習を学んでいるなら Python ですが、学習コストを考えると Golang がおすすめです。

Golang はマイクロサービスといって、小さなサービスを複数作って、それらをつなげる設計にされることが多く、小さなサービスをスケールしていくのに便利なのが、Kubernetes です。
Kubernetes と Golang を習得すれば、サーバサイドエンジニアとしての単価は確実に上がります。
ここまでできれば、ジュニアエンジニアを抜け出して、中級エンジニアになれます。

ReactNative でアプリ開発も手掛ける

先ほどおすすめした React を元にした言語です。
アプリ開発というと Swift とか Kotlin みたいなアプリ専用の言語を学ぶ必要がありましたが、React Native は React ができるエンジニアにとっては習得コストが低いです。
ただ、まだそんなに求人数が多くない技術なので、React をマスターしておけば問題ありません。優先度は高くないです。

どうしてもアプリを作りたい人は、Kotlin の方が需要がありそうですね。

まとめ

インフラ、フロント、サーバサイド、アプリをそれぞれ紹介しました。
これらを身につけると、フルスタックエンジニアになることができます。
どれか 1 つを極めてもいいですし、2 つ、3 つに絞ってもいいと思います。

2020 年はこれらの技術があればとりあえずは生き残っていけるかなと思いますので、みなさんもどの分野のどの知識から勉強していくか考えてみてください。