こんにちは。
エンジニアのくるくるです。
最近では未経験からエンジニアになる人が増えてきました。
以前であれば、未経験からエンジニアになることは今ほど簡単ではなかったですし、そもそもエンジニアになりたがる人の数が今ほど多くありませんでした。
最近は、エンジニアの自由な働き方に憧れたり、フリーランスになれる可能性が高いということを理由に、エンジニアを目指す人も増えています。
確かに未経験エンジニアは増えてきていますが、エンジニアになろうと思って頑張ってみても途中で挫折してしまい、結局はエンジニアになれなかったという人も多いのが現状です。
これは本当にもったいないと個人的には思っています。
ちゃんとプログラミングの「学び方」を知っていれば、途中で挫折することはなく、かなりの確率でエンジニアとして就職することができるのに、「学び方」を知らないが故にエンジニアになれず散っていくのは本当にもったいないです。
最近はエンジニア就職を目指す人が増えてきたことで、プログラミングスクールの数も増えてきました。
もちろんお金に余裕があるのであればプログラミングスクールを利用することもありだと思います。
ですが、実際に数十万円という高額なお金を払わなくても、独学でエンジニアになることはできますし、また独学でエンジニアになった方が自分の行きたい企業にも行きやすいです。
プログラミングスクールにいくと、基本的にはそのプログラミングスクールと提携した会社に就職することになるのですが、そのような会社が必ずしもいい会社であるとは限りません。
自社サービスの開発や受託会社に就職したいと思っていても、SESに就職せざるを得なくなってしまいがちです。
(SESは、簡単にいうとエンジニアの派遣会社のようなもので、エンジニア業界では評判が非常に悪いです。基本的には自社開発の企業や受託会社に就職するのをおすすめします。)
そういう意味でも、スクールに通うよりはむしろ独学でプログラミングの勉強をしてエンジニアを目指した方がいいかなと個人的には思っています。
また、独学でプログラミングを学べば、自分自身で問題を解決する能力がつきます。
エンジニアという仕事は、日々何かしらの問題を解決する必要があるのですが、エンジニアになる段階で自走できるというのは非常に強みとなります。
(ここでいう問題解決は抽象的な話ではありません。エンジニアは日々バグやエラーなどの問題を解決するために必死に調べたりググったり頭を使ったりしながら格闘しています。笑)
プログラミングスクールに通わず、独学でエンジニアになることは非常におすすめですが、独学でエンジニアになろうと思っても、実際に何から始めたらいいのか、どこまでやればいいのか、プログラミング言語は何を選ぶべきなのか、などなど色々分からないことだらけだと思います。
そのような人のために、独学でプログラミングを学びエンジニアになるための全てをここに書いていきます。
できるだけ分かりやすく説明して行きますが、もし何か質問などがあれば気軽にコメント下さい。
(ちなみにこれを書こうと思ったのは、知り合いに「どうしたら独学でエンジニアになれるか」を聞かれたからです。その際に答えたことをより分かりやすく簡潔に書いていきます。)
エンジニアになるために身につけなければいけないこと
まず最初にエンジニアになるために最低限身につけておかないといけないことを整理していきます。
基本的には、ここで挙げていくことを身につければエンジニアになれます。
エンジニアになるために身につけないといけないことは、
・HTML + CSS
・Javascript
・サーバーサイドの言語1つ
の3つです。
初めてプログラミングを学ぶ人にとっては、これらの単語だけ見てもよく分からないと思うので、それぞれについて説明していきます。
まずエンジニアになりたいなら最初に身につけなくてはならないのがHTMLとCSSです。
これはWeb業界で働いている全てのエンジニアが身につけている知識です。
HTMLとCSSは別物ですが、切って離せるものではなく、基本的にセットで使うので、ここでも一緒に説明していきます。
Webサイトの構造や骨組みを作るのに使うのがHTMLです。
全てのWebサイトはHTMLを使ってその土台が作られています。
タイトル、見出し、本文、メニューなどなど、Webサイト上で目で見ることのできるほぼ全てはHTMLで書かれています。
これはWebアプリケーションやWebサービスを作る際にも必ず必要となってきます。
HTMLに関していえば、かなり簡単に学ぶことができます。
(それぞれの実際の独学方法・勉強方法については次の章で説明します。)
HTMLだけだと、何も色もなく、レイアウトも揃っていない状態です。
HTMLで作ったものにデザインを当てていくのがCSSです。
文字の色をつけたり、背景の色を変えたり、ボーダーラインをつけたり、文字の大きさを変えたり、などなど、Webサイトのデザインを整えるのがCSSです。
先ほどHTMLとCSSはセットで学ぶべきものと言いましたが、何となく理由はわかるのではないでしょうか。
既存のWebサイトは全てHTMLが使われていることは先ほども述べましたが、さらに全てのWebサイトは何かしらのデザインが適用されています。
それはもちろんCSSを用いて行われています。
ですので、先ほどは全てのWebサイトでHTMLが使われていると言いましたが、正確にいうと全てのWebサイトでHTMLとCSSが使われています。
なので、それらは同時に学ぶことが一般的です。
エンジニアになるにはまずHTMLとCSSを学ばなくては話になりません。
続いてですが、エンジニアが学ぶべき2つ目のことは「Javascript」です。
よくプログラミング言語の話題になると「Java」という単語を聞くことがあるかもしれませんが、JavaとJavascriptは別物なので混合しないように気をつけて下さい。
(Javaに関しては一旦忘れてください!笑)
Javascriptは、簡単にいうとWebサイトにちょっとした動きを加えるために使われるものです。
何かにカーソルを合わせたらそれが大きく拡大をされたり、もしくはWebページを開いたときにちょっとした動きをするサイトなどがあると思いますが、それらは全てJavascriptを使っています。
(分かりやすい具体例でなくてすみません。)
Javascriptは、エンジニアであれば一度は触ったことがある言語ですし、一度は仕事でも触ることになる言語です。
エンジニアになりたいのであれば、先ほど説明したHTMLとCSSに加えて、Javascriptについても学んでおく必要があります。
ただし、後からも説明しますが、Javascriptはそんなに頑張って勉強する必要はありません。
「少しだけ触れたことがある」程度で大丈夫です。
(Javascriptの詳しい勉強方法については後述します。)
HTML + CSS、そしてJavascriptときましたが、エンジニアになるためにはもう1つ学ぶべきものがあります。
それがサーバーサイド言語です。
まず具体的な言語名を挙げると、Ruby、PHP、Python、Java、Goなどが代表的なサーバーサイド言語です。
1つや2つぐらいは名前を聞いたことがあるかと思います。
先ほど紹介したHTML、CSS、JavascriptだけでWebサイトって作れるんじゃないの?と思うかもしれませんが、実はそれだけでは作れません。
会社のホームページやコーポレートサイトであればサーバーサイド言語を使わなくても作れるのですが、基本的なWebサービスはほぼ100%サーバーサイド言語が必要になってきます。
例えば、Twitterを例にとって考えると、見た目や動きの部分はHTML、CSS、Javascriptで作れますが、実際にツイートしたつぶやきを保存したり、保存されているつぶやきをデータベースから引っ張ってきたり、フォロー機能をつけたり、いいね機能をつけたりというのにはサーバーサイド言語が必要となります。
勘の良い方だったらもしかしたら気づいたかもしれませんが、データを保存しておいたり、保存したデータを利用したりしようとした時にサーバーサイド言語が必要になってきます。
FacebookにしろクックパッドにしろYoutubeにしろ、普段使うWebサービスは何かしらのデータを保存したりそれを利用したりしています。
ですので、多くのWebサービス、Webアプリケーションではサーバーサイド言語が必要となります。
エンジニアになるのであれば、HTML、CSS、Javascriptに加えてサーバーサイド言語を学ぶ必要があることも何となく理解できましたでしょうか。
もちろん、エンジニアの仕事は分業されていて、HTMLとCSSとJavascriptだけで仕事をしている人もいます。
このようなエンジニアを一般的にはフロントサイドエンジニア・フロントエンドエンジニアと言います。
フロントエンドエンジニアを目指したい人はサーバーサイド言語を学ぶ必要はないのではないかと思うかもしれません。しかしそれは間違っています。
未経験からエンジニアになる際に、会社側はやはりその人にプログラミング力があるのかどうかを知りたいと思いますが、サーバーサイドの言語を全く触ったことがない人はプログラミング力がないと判断される可能性が非常に高いです。
もちろんフロントエンドのJavascriptを極める場合は別ですが、Javascriptを極めるよりもサーバーサイドの言語をやる方が簡単ですし、またエンジニアになった後も比較的給料は高いです。
そういう意味でも、サーバーサイドの言語を1つ学んでおくのを強くおすすめします。
(どの言語を学ぶべきか、またそれをどのように独学すべきかについてはこの後に書いています。)
以上、HTML、CSS、Javascript、サーバーサイド言語といった知識がエンジニアになるために必要です。
それらをどのように独学していくのかについての説明の前に、まずはどのサーバーサイド言語を選ぶべきなのか、ということについて先に説明していきます。
どのプログラミング言語を選ぶべきか
どのサーバーサイド言語、プログラミング言語を選ぶべきかについてですが、これについてはあなたが何を目的とするかによって変わってきます。
ですが、結論から言うと、基本的には独学でエンジニアを目指すのであればRubyという言語を学ぶべきです。
サーバーサイド言語の一般的な選択肢としては、Ruby、Python、PHP、Javaがありますが、なぜ他の言語ではなくRubyなのかを説明していきます。
(そんなのどうでもいいから早く独学の進め方を知りたいという人はここは飛ばしてもらっても構わないです。)
独学でエンジニアを目指すのであれば、まずJavaを選ぶべきでないというのは、多くの現役エンジニアが同意すると思います。
Javaは他の言語に比べて習得するのが難しく、独学で学ぼうとすると挫折する可能性が高いです。
また、Javaを使っている企業はレガシー(時代遅れ)な企業が多く、普通の人が思い描くような自由なエンジニア像からはかけ離れています。
また、PHPですが、PHPを初心者の方・これからエンジニアになる方に積極的に勧める理由が正直見当たりません。
PHPの案件は比較的多いですが、PHPはかなり古くから活躍している言語である分、案件や企業によってレベルのばらつきが非常に大きいです。
PHPを使った企業に入れたとしても、かなり古いPHPやPHPのフレームワークを使っており、その結果かなり辛い思いをする可能性が高いです。
プログラミングを学んだことがない人はあまり想像がつかないかもしれませんが、エンジニアとして働くのであればできるだけ最新の技術を使っている企業に入った方が仕事が楽しいですし、さらに楽に働くことができます。
同じPHPを使っている企業でも、PHPの最新バージョンを使っている企業や、Laravelという最新のフレームワークを使っている企業であれば良いのですが、そうでない企業の方が圧倒的に多く、「はずれ」を引く可能性が高いのでおすすめはできません。
またPythonですが、Pythonは人工知能や機械学習の方面でも使われているプログラミング言語で、比較的人気があります。
もしどうしても機械学習の分野のエンジニアになりたいという強い思い・覚悟があるのであればPythonを選ぶべきだと思います。
しかし、初心者から機械学習や人工知能関連のエンジニアになることは相当難易度が高いです。
また日本国内では、Web系の企業でPythonを使っている企業はかなり少数です。
そういう意味で、Pythonを独学で勉強してエンジニアになるというのはかなり狭き門です。
(もしいつか機械学習やAI方面のエンジニアになりたいなと思っている場合は、まずRubyを学んでWebエンジニアになり、その後機械学習を使っている企業に転職するというのがおすすめです。これでしたらかなり現実的かと思います。)
ここまでなぜJava、PHP、Pythonを選ぶべきではないかということについて説明してきましたが、ここからはなぜRubyを選ぶべきなのかについて説明します。
まず、RubyはJavaに比べればかなり簡単に学べる言語です。(ただしこれに関してはPythonも同様です。)
初心者にとって、挫折してしまうことが最も危ないのですが、Rubyという言語は分かりやすく学びやすい言語なので、他の言語に比べると挫折する可能性が低いです。
また、これはPHPとの比較になるのですが、Rubyを使っている企業はモダンな会社が多く、最新の技術を使っている企業がほとんどです。
先ほども述べましたが、最新の技術を使っていた方がエンジニアは楽ができます。
(最新のものの方が使いやすく、効果も高いというのは何となく想像がつくかと思います。)
また、RubyはPythonに比べるとWeb系の企業で圧倒的に多く使われているので、就職先を探す際にも探しやすいといえます。
さらに、RubyはRuby on Railsというフレームワークが非常に有名で、Rubyを使う企業のほぼ100%がこのRuby on Railsというフレームワークを使っています。
これの何がいいかと言うと、Ruby on Railsという同一のフレームワークを多くの企業が使っているので、これさえ身につけてしまえば転職も非常に簡単にできます。
また、Rubyは日本人が発明したプログラミング言語で、日本語の情報も他の言語に比べると多いです。
英語でプログラミングを勉強するというのはかなり大変ですが、Rubyであれば日本語の情報だけでやっていけます。
この点もRubyを勧める理由の1つです。
以上がRubyを選ぶべき理由です。
もちろん何か強い思いがあってPythonをやりたい、PHPをやりたい、Javaをやりたい、というのであれば全然そちらでも問題はないと思いますが、もし特に何か強いこだわり等がないのであれば、とりあえずRubyを始めてみるのを心からおすすめします。
どのプロラミング言語を学ぶべきかについてかなり長く書いてしまいましたが、ここからいよいよ本題である独学の方法について説明していきます。
エンジニアになるための独学方法と順序
エンジニアになるための独学方法ですが、基本的には先ほど説明した、「エンジニアになるために身につけなければいけないこと」を1つずつやっていけば問題ありません。
それぞれについて実際にどのように勉強していくべきかを説明していきます。
まず最初に、HTMLとCSSを勉強していく必要があります。
最新なのはHTML5とCSS3ですので、もし本を使って勉強する場合にはHTML5とCSS3のものを選んでください。
個人的には、まずHTMLとCSSの基礎を学べる本を一冊勉強することをおすすめします。
「本当によくわかるHTML-CSSの教科書-シンプルで、デザインの良いサイトが必ず作れる」という本が初心者向けの本で、かなり説明が分かりやすいです。
全くプログラミングをしたことがないという人向けに書かれた本で、初めてプログラミングを勉強するのであればこの本から始めるのがおすすめです。
もしこれまでに少しでもHTML、CSSを触ったことがあるのであれば、この本はスルーしてもいいかなと思います。
本を一冊こなしたら、HTMLとCSSの基礎は身につきます。
HTMLとCSSはプログラミングの中でも比較的簡単な部分なので、そこまで時間をかける必要はありません。
本一冊で不安であれば、Progateというサービスを使って学ぶのがおすすめです。
最近プログラミングを勉強するとなると、Progateから始める人が多いです。
個人的にはまず本を一冊やってからProgateを使えば、さらに効率よく学べると思います。
Progateは月額課金で、毎月980円かかってしまうので、もしProgateを使うのであればできるだけ短い期間で集中して終わらせることをおすすめします。
実際に手を動かしながら学べるので、今までプログラミングを全く書いたことがないならおすすめです。
HTMLとCSSに関していえば、先ほど紹介した本を一冊こなし(不安だったら二周した方がいいかもしれません。)、ProgateのHTML・CSSコースをやれば十分すぎるかと思います。
プログラミングを学ぶ際に大事なのは、覚えることではありません。
暗記する必要は全くありません。
プロのエンジニアでも、暗記している人なんてほとんどいません。
いつでもググれますし、ググりながら仕事をするのがスタンダードです。
初心者でありがちなのが、全てを記憶しようとすることです。
これは本当に意味がないので、覚えようとはしなくて大丈夫です!
ああ、こうやって書けるんだな、と何となく印象に残っているだけで大丈夫です。
分からなければその都度調べればいいので、とにかく記憶することだけは避けてください。
少し話がそれてしまいましたが、とりあえずHTMLとCSSはこんな感じで学べば問題ありません。
HTMLとCSSを触った後はJavascriptです。
が、これに関してはHTML・CSSに比べると時間をかけすぎないほうがいいです。
大事なのはサーバーサイドのプログラミング言語(Ruby)で、Javascriptはおまけのようなものです。
独学でエンジニアになりたいのであれば、Javascriptは軽く触れる程度で深入りしないというのが大事になってきます。
Javascriptを軽く勉強するのにおすすめなのが『確かな力が身につくJavaScript「超」入門』という本です。
そのタイトルの名の通り、全くもって初めてJavascriptを勉強する人のために書かれた本です。
HTML・CSSの本同様、この本も初心者向けにかなり丁寧に分かりやすく説明が書かれています。
この一冊だけで本当に大丈夫なのか?と疑問に思うかもしれませんが、Javascriptに関してはこの後Rubyを学ぶ際にも少し触れますし、今の段階では本一冊をさらっとやるだけで大丈夫です。
HTML・CSS、そしてJavascriptに触れた後は、いよいよRubyです。
エンジニアになるためには、ここからが本番と言っても過言ではありません。
Rubyを学ぶと言っても、言語の全てを学ぶ必要はありません。
まず最初に心にとどめておいて欲しいのは、最終目標は「Ruby on Rails」というフレームワークを使えるようになることです。
Rubyという言語に詳しくなる必要はありません。
(エンジニアになった後に必然的に詳しくなっていきます。エンジニアになるまではそこまでやる必要がありません。)
とにかくRuby on Rails(よくRailsと略されます)を使えるようになることを目的としてください。
それを理解した上で、まずはRubyの基礎を軽く学びましょう。
本でしたら「たのしいRuby」という本が一番初心者向けの本です。
ただ、この本は楽しくはありません。笑
Rubyの基礎的なことがかなり網羅的に、かつ分かりやすく説明されています。
正直、最初の一冊目は苦痛かと思います。
何かを作るわけではなく、まずは基礎のみを学ぶ形だからです。
ここで投げ出してしまう人も一定数いるかと思いますが、この後に楽しい部分が待っているので、ここはグッとこらえて欲しいです。
また、本を読んでいて分からないなという部分や、ちょっとややこしいなあと思う部分があったら、そこは飛ばしてください。
そこで挫折するよりは、とりあえず飛ばして次に進んだほうが絶対にいいです。
また先ほども言いましたが、覚える必要は全くありません。
さらっと読み流すぞ、ぐらいの気持ちで大丈夫です。
Rubyの本を一冊読んだら、いよいよRuby on Railsの勉強を始めていきます。
Ruby on Railsに関しては、比較的多くの時間をかける必要があります。
Ruby on Railsの勉強については、JavascriptやRuby同様、初心者向けの本を一冊こなしましょう。
「Ruby on Rails5 超入門」という本がかなり分かりやすいです。
Ruby on RailsではMVCという概念がすごく重要になってくるのですが、この本ではそのあたりも分かりやすく説明がされています。
また、Ruby on Railsを学ぶ際には、読み流すのではなくちゃんと手を動かすことを意識したほうがいいです。
この本を一冊やれば問題ない、、と言いたいところですが、さすがにRuby on Railsはそこまで甘くありません。
「Ruby on Rails5 超入門」を終わらせたら、例のごとくProgateのRuby on Railsコースがおすすめです。
Progateはかなり人気がありますが、ここまで人気が出たのは間違いなくこのRuby on Railsのコースのおかげです。
ProgateのRuby on Railsのコースは本当に死ぬほど分かりやすいです。
多分、多くのプログラミングスクールはこのProgateのコースをある程度模倣して作っているかと思います。
それぐらい分かりやすくておすすめです。
ProgateのRuby on Railsのコースをやった後は、2パターンあります。
より基礎を固めたいのであれば、Ruby on Railsチュートリアルという、無料で公開されているチュートリアル教材をやるのをおすすめします。
これはセキュリティのこともしっかり学べますし、かなり実践的な内容です。
正直、Railsチュートリアルを終わらせれば、エンジニアになれる可能性はかなり高くなります。
多くのRubyエンジニアはこのチュートリアルを通っています。
ただ、難易度が比較的高く、途中で挫折する可能性もあります。
Railsチュートリアルは自動テストを書きながら進めていくのですが、初めてチュートリアルをやるなら自動テストの部分は全部無視したほうがいいです。
また、分からない部分がある場合には、悩みすぎずに飛ばして行ったほうが安全です。笑
Progateの後のもう1つの選択肢としては、この段階でオリジナルのWebアプリケーションを作ることです。
ちなみに、Progateの後にRailsチュートリアルをやった人に関しても、チュートリアルの後は必ず自分でオリジナルのWebアプリケーションを作りましょう。
オリジナルのWebアプリケーションを作れば、それを持ってエンジニア就活をすることが可能です。
オリジナルのWebアプリケーションがあれば、ほぼ100%エンジニアとして就職できます。
オリジナルのWebアプリケーションを作ると聞くとかなりハードルが高いように思われますが、そんなことはありません。
基本的には、ProgateやRailsチュートリアルで学んだことを生かして、似たようなものをテーマを変えて作ればOKです。
何か投稿ができて、それを編集ができて、一覧も見れて、ユーザー登録やログインもできればOKです。
これらはProgateやRailsチュートリアルで一度学ぶことなので、それを復習しながらやればできるかと思います。
ただし、本や教材をやるのと、オリジナルで自分でゼロから作るのはやはり難易度は違います。
色々詰まるところもあるかと思います。
その時は、とにかくエラー文をまず読み、それを理解してください。
基本的にエラー文に答えが書いてあります。
それでも分からない場合はググって解決しましょう。
大抵のことはググれば解決します。
エラー文を読み解く力やググって解決する力はエンジニアになってからも必ず必要となる力です。
初めのうちはなかなか大変ではあると思いますが、徐々に慣れてくるので最初は踏ん張りましょう。
オリジナルのWebサービスを作る際に、見た目部分にこだわる必要はありません。
最低限の見た目で大丈夫です。
Ruby on Railsを使って、ちゃんと機能が作られていれば就職という点では全く問題がありません。
ここまで来ればほぼ100%エンジニアになれます。
転職エージェントなどを使ってもいいですが、「Ruby on Rails 募集」などのキーワードで調べたら、いくつも企業が出てきます。
それらの中から気になる企業に応募すれば、少なくとも1つは受かると思います。
Rubyを使っている企業はいっぱいあるので、弾は何発でも打てます。
ここまでやっていれば間違いなく1発は当たります。
かなり長い説明になってしまいましたが、エンジニアになるために、どのようにプログラミングを独学すべきかが何となく分かってもらえたかと思います。
ここに書いてあることをちゃんとその順序で行えば、未経験からでもエンジニアになれます。
確かに簡単なことではありませんし、1ヶ月でどうにかなるものではありません。
ですが、3ヶ月ほどちゃんとした努力を続けられればエンジニアへの道はひらけてきます。
とにかく大事なのは、挫折をしないことです。
無理に覚えようとする必要はありませんし、もし分からない部分があればとりあえず飛ばして次に進めば問題ありません。
プログラミングを独学で勉強していく時は、とにかくこのことは常に頭にいれておきましょう。
もしここまで読んでプログラミングの勉強を独学で進めていく気になったら、ぜひ最初はHTMLとCSSの勉強から始めていきましょう。
Rubyエンジニアという職業は、かなり自由度が高いですし、フリーランスにもなりやすいです。
エンジニアになるためには努力が必要で、初めてのことも多くもしかしたら途中で辛くてやめたくなるかもしれませんが、そこをグッと堪えれば本当にエンジニアになれます。
この文章を読んだ人が、一人でも多くエンジニアになれることを祈っています。
ここで書かれた方法で順番にやっていけばきっとエンジニアになって自由を手に入れられます。
何だか宗教チックになってしまってしまいましたが(笑)、これは本当です。
とにかく挫折しないように、ということを心に留めて、ぜひこれからプログラミングを勉強していきましょう。
(もし何か分からないことや聞きたいことがあったりしたらぜひ質問してください。)