バックエンドエンジニアになりたい!
未経験からバックエンドエンジニアまでの学習ロードマップを教えてほしい。
という方向けの記事になります!
記事執筆者:オザック
バックエンドエンジニア歴9年以上、年収1000万のエンジニア、オザックです!
某有名R社に勤めていた過去があり、副業を含めて関わってきたプロジェクトは20以上。
書ける言語はGo、PHP、Python、TypeScript、JavaScript、C++などで、
AWS SAAも持っていてインフラもやっています。
今回は10年程度の現役バックエンドエンジニアとして、
これまでの学習ロードマップから 未経験からどのように成長していくのが最善なのかを紹介していきます。
この記事を読むと
「バックエンドエンジニアでどういう学習をすればよいのかわからない」
という状態から
「バックエンドエンジニアまでの道筋が見える」
という状態になります。
未経験者や駆け出しエンジニア、中級者を目指していてバックエンドを志している方は是非最後まで読んでいってください!(2~3分程度で終わります)
目次
- 1 【結論】バックエンドエンジニアの学習ロードマップ
- 2 バックエンドエンジニアとは何をするの?実際の業務や必要な知識を解説
- 3 【タイプ別】バックエンドエンジニアの学習ロードマップ
- 4 未経験はバックエンドエンジニアとフロントエンドエンジニアどっちが良い?
- 5 インフラも出来るとバックエンドエンジニアとして幅が広がりテックリードが出来る
- 6 バックエンドエンジニアの学習ロードマップまとめ
【結論】バックエンドエンジニアの学習ロードマップ
学習ロードマップ
- 未経験者はまず学びやすいプログラミング言語を選ぶ
- その言語についてUdemy講座などで独学で勉強する or メンターを見つける or スクールに通う
- その後企業に就職して実務で技術力を磨く
- バックエンドは知識の幅が広いので、続いてWeb開発における様々な領域を吸収していく(DBやクラス設計、Webの仕組み、API、セキュリティ、インフラなど)
- インフラも出来るとテックリードも出来るようになっていく
バックエンドは知識の幅が広いです。
まずは比較的学びやすいプログラミング言語から学び、徐々にスキルの幅を広げていくのが挫折しないコツです!
また勉強時間に決まりはないですが基本的には1日30分は勉強することをおすすめします!
これから順番に説明していくので、バックエンドエンジニアになりたいと思っている方は読むことをおすすめします!
バックエンドエンジニアで副業をしたい方はこちら
バックエンドエンジニアとは何をするの?実際の業務や必要な知識を解説
バックエンドエンジニアの業務
バックエンドというと、バックエンドのプログラミング言語でWeb開発をすると思っている方も多いと思いますが、他にも様々な業務があります。
バックエンドの構成要素は次の3つ
- Webサーバ
- アプリケーションサーバ
- DBサーバ
になります!
バックエンドの業務
- API開発
- フロントエンドとのつなぎ込み(場合によってはフロントエンドが担当する)
- データベースの作成・保守・運用
- デプロイのための自動化
- (プロジェクトによっては)サーバ管理
などになります。
(細かい部分は省略しています)
なのでただプログラミングで実装をするだけではないです!
業務内容に関してはこちらの記事が詳しくです
未経験におすすめのバックエンドのプログラミング言語3つ
バックエンドをやるならおすすめのプログラミング言語は以下の3つになります!
- PHP
- Ruby
- Python
理由は学習が他のプログラミング言語と比べると比較的簡単だからです!
詳しくはそれぞれこちらの記事が参考になります!
バックエンドエンジニアに必要な知識
という疑問に答えていきます。
ズバリ
もはや多すぎてよくわからないですね。。。
大きく分けると
バックエンドの知識要素
- インターネットの知識
- OS関連の知識
- Gitやコードホスティングサービスの知識
- API、プログラミング言語の知識
- キャッシュやWebセキュリティの知識
- データベースの知識
- Webサーバやキャッシュなどインフラ面の知識
- プログラミングのアーキテクチャの知識
- CI/CDの知識
が必要だと言っています。
インターネットの知識
インターネットの知識とは
- HTTPプロトコルとは?
- DNSって何?
- ドメインって何?
- ブラウザってどうやって動いてるの?
- 色々なサイトが表示される仕組みは?
などになります。
これらはWebの基本的な内容になるので、未経験者でもググって勉強しておくと良いです!
OS関連の知識
OS関連の知識は
- どうやってプログラムは動いているの?
- CPUってどうやって割り当てられるの?
- メモリ管理ってどうやってOSはやってるの?
- I/Oとは?
などの内容になります。
これらはコンピュータサイエンスの知識になります。
未経験者はプログラミングを学んで、ある程度Web開発ができるようになった後に知識として学んでいくという順番で大丈夫です!
Gitやコードホスティングサービスの知識
Gitとはコードをバージョニングするためのソフトウェアです。
Git管理したコードをコードを管理するホスティングサービスにアップロードすることで様々なメリットがあります。
ホスティングサービスで有名なのにGitHubなどがあります。
Gitはバックエンド関係なくソフトウェアエンジニアであれば必ず必須の知識になります。
初心者でも必ず使うので勉強しましょう!
API、プログラミング言語の知識
APIとは?
APIとはApplicationProgramingInterface(アプリケーションプログラミングインターフェース)の略で、
アプリにアクセスするための入り口となるプログラムのことです。
例えばバックエンドAPIとはバックエンドのアプリにアクセスするためのプログラムということになります。
またプログラミング言語とは
- Go
- PHP
- Ruby
など言語ごとに様々な特徴を持ったプログラムを開発するための言語です。
APIはこのプログラミング言語を駆使して開発するため、APIの知識やプログラミング言語の知識は必須となります。
またAPIを開発するに当たり
などの知識も必要になってきます。
Web開発ではAPIの知識は必須なので、プログラミングと一緒に学んでいきましょう!
キャッシュやWebセキュリティの知識
キャッシュとはユーザに早く画面を表示するために、一度取得したデータを保存しておき、ユーザが次にアクセスしたときに素早く表示できるようにする方法です。
キャッシュサーバの仕組み
キャッシュには
- ブラウザキャッシュ
- NoSQLで高速にDBアクセスをするキャッシュ
などいくつか種類があります。
初心者の場合は必須の知識ではないですが仕組みは知っておくとよくです。
データベースの知識
データベースはユーザの情報や、Webサービスで使う情報などを保存しておくサーバになります。
データベースは殆どのWebサービスやアプリで使うので必須の知識です!
Webサーバなどインフラ面の知識
WebサーバとはWebページを表示するためにブラウザにデータを渡すサーバになります。
Webページが表示される仕組みとWenサーバの関係
そのWebサーバを構築・保守・運用したりするための知識は必要です。
参考
ただ大きい会社だとインフラエンジニアが担う領域でもあります。
プログラミングのアーキテクチャの知識
プログラミングというのは開発して終わりではなく、
多くのWebサービスは継続的に新規機能やバグ修正などを繰り返してサービスが大きくなっていくため、
開発したコードの保守性を上げるというのが重要になってきます。
その保守性を保つためにアーキテクチャというのを考え開発していく必要があります。
こちらは必須と言うわけではなく、知識があるとテックリードなどエンジニアとして立場が上の人になれます。
CI/CDの知識
開発した新機能などをリリースするときにWebサーバへコードをアップロードをする必要があります。
そのアップロードを自動化すると効率が良いので、殆どのプロジェクトではアップロードのフローは自動化されています。
その自動化することをCI/CD(Continuous Integration/Continuous Delivery)といい、日本語では継続的インテグレーション/継続的デリバリーと言われます。
多くの場合、CI/CDの構築をバックエンドエンジニアが行い、
有名なCI/CDにはCircleCIやGitHub Actionsなどがあります。
バックエンドエンドエンジニアとインフラエンジニアの違い
今バックエンド知識について説明していて、
と思っている方もいると思うので、ここで簡単に説明しておきます。
フロントエンド | ユーザが直接見える、触る部分の開発をする業務 |
バックエンド | ユーザの情報やWebアプリのデータなどを保存したり、フロントに渡したりする業務 |
インフラ | Webページが閲覧されたときにデータを返すWebサーバというサーバを管理する業務 |
です。
インフラは主にサーバ管理で余りコードを書くことは多くありません。その点バックエンドエンジニアは基本的にはバックエンドのコードを書くのが主な業務で、その関連でインフラやたまにフロントエンドも実装するというような事があります。
詳しくはこちらの記事も参考になります
バックエンドとインフラエンジニアの違いは?未経験はどっちを選ぶべきか?
フロントエンドとバックエンドの違いは?業務内容から将来性まで解説
バックエンドエンジニアはインフラも出来ないといけない?
またバックエンドの必要な知識を説明していて
と思った方もいると思ったので、ここで説明します。
但しバックエンドエンジニアは多くの場合インフラと接する事が業務で多いです。
(知らないと出来ない業務も多々あります)
なのでインフラの知識を身に着けておいたほうが圧倒的に良いですし年収も勿論上がります。
またテックリードやシニアエンジニアレベルになるには、まずインフラの知識がないとなることは難しいでしょう。
初心者のうちは良いですが、エンジニア歴を積み重ねていくごとにインフラの知識も徐々に身につけていくことをおすすめします!
【タイプ別】バックエンドエンジニアの学習ロードマップ
ではここでタイプ別にバックエンドエンジニアの学習ロードマップについて説明します!
バックエンドエンジニアのタイプについて
スキルごとにエンジニアを区分する方針にしました。
クラス区分 | 歴 | 内容 |
ビギナークラス | 未経験からプログラミングスクールで勉強した人 |
|
ジュニアクラス | エンジニア歴1~3年程度相当 |
|
シニアクラス | エンジニア歴6年以上相当 |
|
テックリード | チームリーダー相当 |
|
※スマホでは横スクロールできます
これを元に今回は未経験者の方、ビギナークラスとシニアクラスのエンジニアについてのロードマップを紹介します。
未経験からビギナーエンジニアクラスになるための勉強ロードマップ
まずは初心者でも学びやすいプログラミング言語を一つ選び、学んでいきましょう。
参考
プログラミング言語一つ出来ると、自然と他の言語でも記法や仕様が違うだけで格段に学びやすくなります。
初心者におすすめの言語は
がおすすめです!
おすすめの理由
- 日本の企業で多く使われている
- 日本人で使っている人が多いため日本語のドキュメントが多く、エラー解決に詰まりづらい
- 動的型付け言語なので書きやすい
といった点です。
PHPのおすすめ理由に関しては詳しくはこちらの記事が参考になります
なのでまずはPHPかRubyのどちらかを決めて勉強してきましょう!
未経験者でPHP、Ruby、Pythonの詳しい勉強方法はこちらの記事がとても参考になります
【経験談】バックエンドエンジニアになれる勉強法とスクールを解説
ビギナーエンジニアクラス(未経験から初心者になるまで)の勉強ロードマップ
まずビギナークラスは「未経験からプログラミングスクールで勉強した人」です。
スキル的には
- for、if文、classや関数が作成できる
- フレームワーク(RubyOnRailsなど)は一度使っていて、簡単なプロダクトを作ったことがある(独学でもOK)
というレベルです。
これらの人はまず更にレベルを上げたい場合は就職して企業に入ることを目指すのが良いです!
企業に就職する利点
- 他のエンジニアからコードレビューでコードの保守性を考えた実装を学べること
- 個人で作るよりも企業で開発しているサービスの方がユーザ数が多いので、開発で学べる事が多い
- チーム開発を学べる(Gitや開発フローなど)
また同時に次はクラス設計と、API開発についてを学んでいくと良いです!
API開発の基礎知識がちゃんと理解できているか?
プログラミングスクールや独学どちらでも良いですが、API開発の基礎知識がないと最低限のバックエンド開発は難しいです。
- HTTPとは?
- Cookieとは?どういう時に使う?
- 認証で使われるフローのOAuth2.0とは?
- CORSってなに?
- for, if文は書けて、class, 関数は作れるか?
- フレームワークは使えるか?(一つのフレームワークだけで問題ない)
- MVCってなに?
という部分をちゃんと人に説明できるように、実装できるように学びましょう。
勉強する場合はこちらの動画で勉強するのが良いです!
3600円と比較的安く評価もかなり高いです!
30日間ほぼ100%返金保証
API開発を理解した次のステップはクラス設計を学ぶ
上記のAPI開発の知識はわかりますという方は次にクラス設計を学び保守性を担保するコードを書けるように勉強していくと良いです!
クラス設計がわかると
- 保守性の高いコードが書けるようになる
- コードレビューで指摘が減る
- プロジェクトのコードの全体のアーキテクチャが理解できるようになる
という利点があります。
クラス設計についてはこの本で設計の基礎を学ぶのが良いです
おすすめポイントは
- テストしやすいコードが書ける
- オブジェクト指向プログラミングが身につく
という点です。
クラス設計の勉強は難しい?独学で出来ない場合はメンターをつけると安価で学べる
クラス設計というのはなかなか簡単に学べるものではありません。
というのも概念的な内容を理解し、それを具体的な実装に落とし込めるようにするという2段階の勉強が必要なため、
また必ず正解があるというわけではないため、実践を通して徐々にクラス設計の知識が深まっていくからです。
内定者複数人排出!クラス設計(Clean, DDD)を学んで初心者脱却!
今までの受講生にはクラス設計以外にも
- データベース設計
- Dockerの運用、Dockerfileの書き方
- インフラのIaC化(Terraform)
なども合わせて教えていて、
僕が知っている知識であれば柔軟に教えています。
ジュニアエンジニアクラス(エンジニア歴2〜3年程度)の勉強ロードマップ
ジュニアクラスはある程度実装に慣れて、既存のコード改修や小さな新規機能の追加は一人でも出来るようになっているはずです。
次に勉強することとしてはクラス設計、データベースやインフラ(クラウド)を勉強していくと良いです。
クラス設計は先程のビギナークラスでも紹介しました、こちらの本で学ぶと良いです!
データベースはスキーマ設計を学ぶと良い
バックエンド開発をしているとデータベースを変更やテーブルを新規作成するのは頻繁に起こります。
なのでジュニアクラスのエンジニアは何度もデータベースを触ったことあると思いますが、
ちゃんとしたスキーマ(テーブル)設計を学んでいる人は少ないと思います。
今後更にシニアクラス、テックリードなどを目指そうとするとスキーマ設計は必須になります。
ここで一度学んでおくことをおすすめします!
僕自身もこれでスキーマ設計を学びましたが、名著なのでまずはこの本で学ぶことをおすすめします!
また合わせてPostgresというRDBで有名なsoudaiさんの
こちらの本も勉強すると良いです!
インフラ(クラウド)はAWSを学ぼう
またジュニアクラスは次のステップとしてインフラ面を学んでいくと良いです!
今まではよくわからなかった
- Docker
- デプロイの方法(CI/CD)
- インフラ構築
- ログやアラートの通知
などがわかるようになり、更にキャリアの幅が一層広がっていきます。
特にクラウドを学ぶなら一番使われていて、且つクラウドの中では使い方が一番わかり易いAWSを学ぶことをおすすめします!
AWSを学ぶなら手っ取り早いのがAWS SAAの資格の勉強をすることです。
資格と言ってもAWS SAAの問題はより実践的な問題になるので、資格の勉強は実際のプロジェクト現場で活きてきます。
AWS SAAの勉強方法はこちらの記事がとても参考になります
【1日たった1時間】AWS SAAは難しい?一発合格の勉強方法
ジュニアクラスはフリーランスエンジニアという道もある
ジュニアクラスのエンジニアは昨今フリーランスになるケースも増えています。
フリーランスのメリットは
- 給与が増える
- 自分の好きな開発体制(言語や会社の規模)を選びやすい
- 自由時間が増え、自由に勉強できる
というのがあります。
もちろんデメリットもあるので詳しくはこちらを参考にすると良いです。
20代でフリーランスエンジニアになるメリット・デメリットと年収
副業をすると格段にスキルアップにつながるからおすすめ
なのでジュニアクラスは副業をすると良いです!
副業はとてもスキルアップに繋がり、僕自身も20以上のプロジェクトで副業をしたことがあります。
副業のメリットは
- 本業では触れないツールを使える経験ができる
- 他の会社のコードに触れることで勉強できる
- また別の会社のエンジニアにコードレビューがもらえる
- スタートアップの副業は0->1の経験が出来て楽しいし、学びになる
です。
副業はエージェントを経由すると安全で簡単に見つかるので、詳しくはこちらを参考にしてください
【経験談】ITプロパートナーズの評判はダメ?副業エンジニア解説
未経験はバックエンドエンジニアとフロントエンドエンジニアどっちが良い?
結論から言うとどちらでも良いです!
ユーザが触る画面作りが好きな場合はフロントエンドをやればよいし、
裏側知りたいなと思う方はバックエンドをやると良いです!
ただバックエンドは未経験者の場合はイメージできない場合が多いともうので敬遠されがちですが、
テックリードやCTOなど重役ポジションは殆どの場合バックエンドの方が担います。
なのでそういったメリット・デメリットを考慮した上で決断すると良いです。
インフラも出来るとバックエンドエンジニアとして幅が広がりテックリードが出来る
キャリアの特徴としてはバックエンドは立場上、テックリードやCTOになるケースが多いです。
理由としてはサービスのボトルネックとなるインフラ障害が起きても対応出来たり、全体のシステムのことを知っている人というとバックエンドになるからです。
ここにある通り、バックエンドはプロダクトの根幹を担う業務になってくるため、自然と重役のポジションはバックエンドが担うケースが大半です。
なのでそういったポジションを目指したい人はバックエンドを学び、且つインフラも学ぶことをおすすめします!
バックエンドエンジニアで副業をしたい方はこちら
バックエンドエンジニアの学習ロードマップまとめ
学習ロードマップまとめ
- 未経験者はまず学びやすいプログラミング言語を選ぶ
- その言語についてUdemy講座などで独学で勉強する
- その後企業に就職して実務で技術力を磨く
- バックエンドは知識の幅が広いので、Web開発における様々な領域を吸収していく(DBやクラス設計、Webの仕組み、API、セキュリティ、インフラなど)
- インフラも出来るとテックリードも出来るようになっていく
今後エンジニアの需要はどんどん増えていくので、今エンジニアになるのは良い判断だと思います!
早くエンジニアとしての最初の一歩を歩き始めましょう!
バックエンドエンジニアのポートフォリオ例3選!未経験から転職も