最短・最安でWebエンジニアになる方法

# はじめに

私は新卒でプログラマーとして働き始めて、現在はそこそこ大きい SaaS の企業で働いています。友人に「エンジニアってどうなん？稼げる？おれでもなれるん？」と聞かれることがちょくちょくあるのでこの記事を書いてみました。完全未経験の友人へ **「一日でも早く」** 、**「なるべくお金をかけずに」**、**「Web エンジニアになる」** 方法を伝えるという形式でこの記事を書いていきます。

# 目指すゴール
前述の通り「一日でも早く」、「なるべくお金をかけずに」、「Web エンジニアになる」のがゴールです。最も求人数が多いバックエンドのエンジニアでの就職を目指します。そして、就職先のビジネスモデルは気にしません。つまり、受託開発やSES、自社プロダクトの有無などは気にしないということです。このように書くと「えー、SES とか受託開発は嫌だよー。かっこいい都心のオシャレなオフィスで自社開発のエンジニアになりたいんだけど......」という声が聞こえて来そうです。

この選択が学習方法にも関わってくるので、まず学習ロードマップから説明させてください。なぜ就職先のビジネスモデルについては気にしないのかは後述します。（どうしても気になるという方は後ろの方に書いた「自社開発企業のエンジニアになりたいんだけど？」を読んでください。）

# ロードマップ

「一日でも早く」、「なるべくお金をかけずに」をテーマとした学習ロードマップです。このロードマップに沿って進めることで、面接用のポートフォリオとして提出できる簡単な Web サービスを作るのがゴールです。

## フロントエンド基礎
まずはフロントエンドの基礎を学びましょう。フロントエンドは書いたコードがそのまま画面に反映されるのではじめの一歩として取り組みやすいと思います。はじめの一歩としておすすめなのが  [Progate（プロゲート）](https://prog-8.com/)です。

### なぜ Progate？

プログラミング学習にちょっと興味を持った人なら誰でも知ってそうな学習サービス Progate（プロゲート）。非常にわかりやすいイラストの解説があり、ブラウザでプログラミングをすることができます。月額約 1,500 円で始めることができます。

私が思う Progate の最大の良さは、**コードを書かないと先に進めないこと**です。本や動画サービスの場合は一方的に情報を受け取るので理解が甘くても先に進むことができてしまいます。しかし、Progate の場合はコードを書いて問題をクリアしないと先に進めません。そのため強制的にコードを書くことになります。これがとっても良いことなんです！しかも Progate は説明用の教材がとてもわかりやすいので、もし学習に詰まっても教材を読み返したりヒントを表示することで、大抵の人は問題なく課題を進めることができます。

こんなに素晴らしい学習サービスが月額たったの 1,500 円ほどなので使わない手はないですね！

### Progate の HTML / CSS / JavaScript から始める
ちょっと Progate の説明が長くなってしまいました。Progate でまずやってほしいのが HTML, CSS, JavaScript です。HTML → CSS → JavaScript の順で進めてください。これらは見た目を操作するための言語なので取り組みやすいと思います。Progate の HTML, CSS, JavaScript をやるだけで、簡単なホームページくらいは作れるようになります。

ちなみに Progate は半年プラン（1,290円/月）と年間プラン（990円/月）があるのですが、初歩的な内容を半年もやることはないので少々高くなりますが月額プランで OK です。その方がトータルで安く済むので。


## バックエンド基礎

フロントエンドの学習が一通りできたら、次にやるのはバックエンドです。バックエンドとは目に見えることのないサーバーやデータベースなどの操作をするための仕組みなどを指します。バックエンドの言語を学ぶことで、データベースを使った開発ができるようになり、より複雑なシステムを作れるようになります。

### Progate の Java / SQL / Command Line

バックエンドでも最初にやるのは Progate です。やる講座は 3 つでJava, SQL, Command Line です。
バックエンドの言語は Ruby や PHP などたくさんあって選ぶのが難しいですが、一日でも早く Web エンジニアになるため、求人数の多い Java を選びました。Java は静的型付け言語でオブジェクト指向を取り入れたプログラミング言語です。Java は誰でも知っているインターネットのサービスから官公庁系のシステムなど幅広く使われています。

SQL と Command Line はバックエンドエンジニアに必須の知識です。バックエンドの言語としてどれを選んだとしても必要になります。SQL と Command Line の基礎は Java のオブジェクト指向と比べると簡単なので Progate でさくっとやってしまいましょう。Java の勉強に疲れた息抜きとしてやってもいいかもしれませんね。

### スッキリわかるJava入門（基本は読むだけ）

Java を学んだ人で知らない人はいないくらい有名な「[スッキリわかるJava入門](https://amzn.asia/d/14sLQ2t)」。一部 Progate の内容と重なるのですが継承や多態性（ポリモーフィズム）などオブジェクト指向をより詳しく知ることができます。この本は読んで理解すれば OK です。

この本には実践編などの続編があるのですが、余力のある人だけ読めば OK です。Progate と スッキリわかるJava入門を読めば基礎は身につくので、ネットでわからないことを検索する基礎は完成されているからです。

### 後悔しないためのSpring Boot 入門書：Spring 解体新書

次にやるのは「[後悔しないためのSpring Boot 入門書：Spring 解体新書](https://amzn.asia/d/6wlnyc0)」という本（kindle）です。
Spring Boot は Web アプリケーションの開発をサポートする Java ベースのフレームワークです。Spring Boot を使うことで効率的に Web アプリケーションを開発することができます。Spring は Java で Web アプリケーション開発する場合のデファクトスタンダードといってよいほど広く使われています。

「[後悔しないためのSpring Boot 入門書：Spring 解体新書](https://amzn.asia/d/6wlnyc0)」は Spring 初心者にとって非常に良い本です！「これまで学んできた内容はこの本に取り組むための基礎知識だった」といっても過言ではありません。「後悔しないためのSpring Boot 入門書：Spring 解体新書」では Spring Boot の基礎知識を Web サービスを作りながら学ぶことができます。そのため、フレームワークの学習とポートフォリオの作成を兼ねることができます。（この本をもとに機能追加をしたり、別のシステムを作るきっかけになります。）

この本では会員管理システムのようなものを作ります。ユーザー名やメールアドレスを管理するためのシステムです。また、ログイン機能も実装するので本格的なシステム開発を体験できます。完成したらシステムの動作を画面収録して、面接官へ見せられるようにしましょう。（余力があれば AWS などのサービスを使ってインターネットに公開できるといいのですが...... 基本的には面接官はどんな形式であれ応募者の作品を見てくれるはずです。AWS については後ろの方で述べています。）

フレームワークの学習は今までの内容と比べると難易度がぐっと高くなります。今までは難なく出来て人もここで詰まってしまうことが多くなるはずです。しかし、「ここで詰まるのは当然だ」「みんなが通る道だ」と言い聞かせて、じっくり進めてみるとよいでしょう。

そして今（2024/03/09）だけかもしれないのですが、「[後悔しないためのSpring Boot 入門書：Spring 解体新書](https://amzn.asia/d/6wlnyc0)」は kindle unlimited で無料で読めます。プログラミングの学習をするときに書籍だと使いづらいので、kindle 版で購入するとよいでしょう。kindle で教材を読みつつ、Eclipse などのエディタを別のモニターで開くと快適に学習を進めることができます。kindle unlimited は技術系の書籍が無料で読めることが多いので加入をおすすめします！

# よくある質問

## 自社開発企業のエンジニアになりたいんだけど？

冒頭の質問も兼ねて回答します。「一日でも早く」「Web エンジニアになる」のを目指すのであれば、受託開発、SES の企業も選択肢に入れた方が良いと思ったためです。
自社開発、自社でプロダクトを持った企業で働きたい気持ちはよくわかります。モダンな技術を使っているでしょうし、パソコンも Mac を使ってそうですよね。開発スタイルもウォーターフォールじゃなくてアジャイルなはずです。
ですが、あえて受託開発、SES の企業も選択肢に入れた方が良いと述べた理由は、**「実務経験あり」という称号を得ることができる**からです。

まず何よりも貴重なのは実務経験そのものです。本番環境で動くシステムに触ること、コードを読むこと、開発に加わることで一気にレベルアップすることができます。今までひとりでコードを書いてきて自分ではそれなりのシステムを組めたと思っていた人も、初めて目の当たりにする実運用されているシステムのコードの量に圧倒されるはずです。受託開発、SES、自社開発などのビジネスモデルに関係なく、開発未経験の人は本番環境のコードに触れることで一気にレベルアップできます。

そして「実務経験あり」という称号は今後のキャリアを築くうえで有効です。SES や受託開発の中でもいろんな企業があります。SES、受託開発ならばすべてブラック企業というわけではありません。仮に最初のキャリアは過酷な労働環境だったとしても、コードを書いた実務経験が 1 年でもあれば、ぐっと転職がしやすくなります。

また、Web エンジニアとして就職したものの、「自分はプログラマーとして何十年もやっていけないな......」と思う人もいるでしょう。そんな人でも、エンジニアを経験しておくとかなり多くの選択肢がうまれます。IT 企業で働くのはプログラマーだけがすべてではなく、技術系の職種はたくさん存在します。たとえば少し営業よりの SE であったり、IT 企業のソリューション営業、自社開発企業でのテクニカルサポート、カスタマーサクセスなどです。

未経験から自社開発の企業に就職できればそれはとっても素晴らしいことです。しかし、そのためには前述のロードマップの倍ほど学習しないといけないでしょう。学習時間が伸びるほどモチベーションを保つのが大変だったり、挫折する確率が高くなります。そのため、一日でも早くエンジニアになる方法を提案してみました。

## なんで Java ？ Ruby とか Python の方がいいの？

一つ前の質問と同じく、この質問に対しても「一日でも早く」「Web エンジニアになる」のを目指すため、という回答になります。

自社開発の企業への就職を目指す人の中で Ruby を勉強している人が結構いるのではないでしょうか。自社開発の企業への就職を目指すのであれば正しい選択だと思います。しかし、前述の通り、未経験から自社開発の企業へ就職するのは難易度が高いです。それを承知で目指したいという方はぜひ頑張ってみると良いと思います！

Python は近年人気が高い言語ですが、Java や Ruby、PHP と比べると、バックエンドとしてはあまり採用されていません。データサイエンティストになりたい、人工知能系の開発をしたいという人にはおすすめします。


## Git とか AWS は勉強しなくていいの？

余力があればやったほうがよいでしょう。
ですが今回ゴールに掲げているのは「一日でも早く」、「なるべくお金をかけずに」、「Web エンジニアになる」方法です。受託開発や SES の企業の場合はそこまでやらなくても採用してくれる可能性があるはずです。

Git については完成したコードをアップロードしておくくらいだったらすぐにできるのでやってみるといいでしょう。面接でコードを見せることができるのはとても良いことです。

AWS などのインフラについては、バックエンドエンジニアとして未経験で就職してすぐに任せされる、ということはあまりない気がします。インフラでミスを起こしてしまうとサービスが止まったりなど被害が大きいためです。まずはリリース作業を手伝うところから徐々に任されたりするはずです。そのため、就職して必要になりそうな段階になったら勉強すればよいと思います。

## どれくらい学習時間は必要？
それぞれの教材に学習時間を書くか悩んだのですがあえて書きませんでした。理由は、プログラミングの学習時間には個人差があるためです。このロードマップ全部をこなす時間をあえて書くのであれば、適正がある人なら 1.5 ヶ月ほど、平均的な人なら 3 ヶ月前後、じっくりこなしたい人は半年もあれば十分かと思います。

私は大学で情報系寄りの学部だったのですが、プログラミングの好き嫌いはけっこうはっきり分かれるような気がしました。理系の学生でもプログラミングが嫌いな人はけっこういました。

しかし、プログラマーはものすごく選ばれた人だけがなるプロ野球選手や大学教授のような職業ではありません。ゆっくり自分のペースで楽しみながら勉強をすすめていくのがいいんじゃないかなと思います。どんな分野でも学習の最初の段階では苦しいものです。少しずつできることが増えていって、気づけばプログラミング言語を扱えるようになります。この段階になると「プログラミングの楽しさ」みたいなのが徐々にわかってくるはずです。私の場合、卒論という強制的にコードを書く機会をきっかけにプログラミングが好きになりました。

# おわりに
気づけば結構な量になってしまいました......

自分なりに完全未経験の友人へ **「一日でも早く」**、**「なるべくお金をかけずに」**、 **「Web エンジニアになる」** 方法を伝えるなら、というテーマで書いてみました。感想や「もっとここ詳しく知りたい！」といったことがあればコメントしてくれると嬉しいです。現在プログラミング勉強中の方からの質問とかもウェルカムです！（答えられるかはわかりませんが笑）