【300時間でやりきる!】Webエンジニアになるまでに学習すべきこと全部まとめました-基礎編

この記事ではプログラミングを全く知らない状態から「ある程度読める・ちょっと書ける」状態になることを目指します。Webエンジニアとしては超初心者ですが、最後まで完走すれば未経験エンジニアとしてポートフォリオサイト、ミニWebサービスを作り始める段階までいけます。それをもとにエンジニア転職をすれば、スクールに通うことなく無料でエンジニアになれます。

 

まずはじめにこの記事で紹介することは以下のとおりです。

話すこと
  • Webエンジニア(フロント、サーバー)になるためのステップ
  • どんなステップを踏めばいいのか
  • 各ステップにおいてなにをすればいいのか、どんな本を読めばいいのか
  • 独学において注意すべきこと、大事なことはなにか
  • 振り返って出来る/出来ない のチェックリスト

 

逆にこの記事では詳しく話さないことは以下のとおりです。

話さないこと
  • 細かいプログラミング言語、技術、仕様の話
  • Web制作スキルに関すること、デザイン関連など
  • お金をとって教材を公開すること

 

あくまでこの記事では「具体的になにをすればWebエンジニアになれるのか?スキルとして十分なのか?」のステップを解説するだけです。例えば、JavaScriptでXXはどうやるの?という細かい話まではしません。というかできません…。それをやると本10冊分くらいの分量になってしまいます。

 

各ステップにおいてやるべきこと、教材サービス(有料・無料)、本などを指定しています。もちろんそれ以外のものを独自にやることは問題ありませんが、それぞれでお話する「重要なこと、注意すべきこと」に気をつけてください。また、それぞれで何時間くらいかけるべきか?にも注意して進めてください。

 

最後に、この記事では広告・アフィリエイトは一切ありません。お金をいただいて教材を公開することもしておりません。もしよければブックマークして、1,2ヶ月間の勉強中に読み返すようにしてご利用ください。

 

覚えておいていただきたい「大事なこと」

this-is-point

最初に「3つの大事なこと」をお話しします。

一つは、「プログラミング」において大事なことです。それは一つの要素だけをプログラミングと捉えて集中しすぎないことです。プログラミングと一言に言っても様々な要素に分解できます。例えばWebサービスを開発するとしても、簡単なフロントエンドのマークアップ(HTMLやCSS)から、データをやりとりするサーバサイド(RubyやPHP)などもプログラミングです。さらに、それらのコードをコンパイルする技術、データベース、インフラなどもすべてプログラミングのうちです。最近はコードを書かなくてもクリックひとつでサーバー立てられる時代になりましたが….。とはいえ、最初のうちはしっかりと基礎を抑えつつ、一気通貫でできるところを目指しましょう。

 

続いて、「学習」において大事なこと。プログラミング学習はインプット2割:アウトプット8割で考えましょう。アウトプットの中にはコード模写も含みます。しかし、もっとも大事なことはコード、アプリケーションを公開することです。どんなにダメなコードでも構いません。ただの計算機アプリでもいいんです。コードとセットで公開していきましょう。たまにマサカリをなげられる(指摘をくらう)かもしれませんが、それも学習です。仕事を始めてから失敗するのではなく、早いうちに間違いでもいいのでたくさん経験しましょう!

 

最後に「エンジニアという仕事、就職活動」において大事なことです。これに関しては詳しく以下の記事でまとめているので、参考にしてください。

 

ズルい!と思われる未経験エンジニアの戦略

2019年6月3日

 

さて、早速やることをまとめます

space-image

この記事内でお話するポイントを以下にまとめます。いきなり読み始めてすべてを実行することは出来ないので、ブックマークするなり、スマホのホーム画面に追加するなどして読み返してください。

  • PCの仕組み:20時間
  • Webの仕組み:30時間
  • データベース(DB):5時間
  • SQL(基礎):20時間
  • セキュリティ(基礎):10時間
  • HTML,CSS(基礎〜応用):30時間
  • JavaScript(基礎):30時間
  • git, github:5時間
  • jQuery(基礎):20時間
  • React.js(基礎〜実践):30時間
  • Ruby(基礎):20時間
  • Ruby on Rails(基礎):50時間
  • アルゴリズム(基礎):10時間
  • エンジニアの仕事、大事なこと:1時間
  • かんたんに何か作って公開してみる:20時間

300時間なんて長いよ!!と思われるかもしれません。スクールならこれらの項目を100~200時間で終わらせるかもしれませんが、その分お金がかかります。だいたい30万円くらいかかるかもしれません。でもその差分の100時間を30万円で買うかどうか?です。1時間あたり3,000円ですね。もしそれだけの余裕がないのであれば、独学でやりきるという方法も悪くないと思っています。

 

もしかしたら既に学習をしていたり、仕事をされている方にとっては当たり前!というところもあるかもしれません。そういう方は各ステップを飛ばしていただいて構いません。

 

あくまで最低限!ということに注意

プログラミングを完璧に学習するということは不可能です。日々新しい技術やライブラリが生まれています。いくら年長者でも知らないことがありますし、若い人の方がエンジニアとして成果を出すケースは多くあります。なので、ここでは最低限走り始められる程度のことをお話します。

 

PCの仕組み

WebエンジニアなのにPCの仕組み関係あるの?と思われる方もいるかもしれませんが、基礎中の基礎なので知っておかないと恥ずかしい知識です。具体的には、PCはどうやって成り立っているのか?という話です。ひいてはスマートフォンも同じような仕組みです。これを知っておかないと、開発環境の構築にも一苦労しますし、バグの原因特定もできないということになりかねません。

 

超入門として全体像をさっと理解するのであれば以下の記事がおすすめです。

入門【保存版】超初心者向けにパソコンの仕組みと選び方を丁寧に説明してみます。

 

詳しく知るのであれば以下の日経の記事が詳しいですね!

入門PCの仕組み全解説

 

このセクションの目標

PCがどうやって動いているのか?を一通り人に説明できるようになる

 

普段使うPCですが、意外と知らないことが多いものですよね。でも調べてみるととても合理的で、かつたくさんの技術・要素によって支えられていることが理解できます。プログラミング学習中の人でも基礎知識としてここは改めて勉強してみましょう。

 

Webの仕組み

続いてはWebの話です。ここはPC以上に広く、かつコーディングにも大きく影響するのでしっかりと勉強しましょう。Webとざっくりくくっていますが、細かく分けると以下の通りです。

 

  • どのようにWebページが表示されるのか?
  • TCP/IPとは
  • HTTPとは
  • DNSとは
  • URLとは
  • クッキー、セッション

などなど…

 

項目をあげるときりがありませんが、大まかに言えば私たちが普段触れるインターネットのコンテンツ、その表示に関するすべてがWebを構成する技術になります。さきほどのPCはそれらを表示、利用するにあたって必要な土台、ハードウェアなのに対して、Webは通信の話になります。このあたりを理解することで、Webアプリケーションの開発、テスト、デバッグ、セキュリティの基礎の学習に役立ちます。

 

体系的に理解するには一冊本をまずは読みましょう。そして、学習を進めるうちに頻出する言葉、技術を追って理解していくのが効率的です。おすすめ本はこちらです。

入門Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

 

このセクションの目標

Web上のコンテンツが表示され、処理されるにあたって必要な技術、要素の概要を理解する。また、それを人に説明できるようになる。

 

データベース(DB)

次はデータベース(DB)の話です。データベースってなんとなくわかりますよね?いわゆるデータを貯めておくところなのですが、じゃあそれが具体的に何なのか?を理解することは意外と難しいです。私たちが一般的にデータベースと呼んでいるものにも複数の種類があります。一般的なのはRDBMSといわれるもので、Excelのようなイメージのデーターベースです。他には、階層型DBやネットワーク型DB、さらにNoSQLなどがあります。

 

人により色々方法はありますが、初めはMySQL、MariaDBあたりを基礎として学んでいくのがいいと思います。Web系の会社の場合、実際にこれらを現場で使うケースが多いです。特にデータベースを操作するSQLという言語を勉強するのにも最適です。

 

ここでは何を学ぶのか、それはデータベースってなに?ということです。いきなりSQLを勉強するのでもいいのですが、SQLをつかいこなすために必要な概念、知識がたくさんあるので、まずはデータベースの基礎から理解しましょう。

 

ここに関しては以下のQiitaの記事が体系的にまとめられているのでオススメです!

入門【新人教育 資料】SQLへの道 〜DB編〜

 

少しハードルが高いですが、データベースをゼロから作ることもデータベースを理解するのに最適な方法の一つです。また、自分で環境を作ってみるのもいい勉強になりますね。

 

このセクションの目標
  • データベースとはなにか?を人に説明できるようになる
  • データベースの種類を5つ以上違いを含めて説明できるようになる

 

SQL(基礎)

 

データベースの概要を理解したところで、続いてはそれを操作するSQLという言語について学習しましょう。Excelを少しでも触ったことがある方は馴染みやすいかもしれません。例えば、都道府県と人口が入力されたデータベースから、人口が100万人以上の都道府県を取り出す、という操作をするようなイメージです。

 

SQLは他のプログラミング言語以上に直感的に書き、読むことができるので文法の習得は比較的簡単です。しかし、新しい文法が出てきていたり、また巨大なデータベースに対して操作する場合に、「重すぎる処理」をかけてパフォーマンスが悪くなることがあります。そうなるとアプリケーションが落ちたりすることにもつながります。そうしたリスクがあるので、より簡潔に、より効率的なクエリがかけるようになりましょう。

 

SQLの基礎と実践演習は以下の本を一冊読めば十分です。

入門スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)

 

ちなみにRuby on RailsはSQLを発行することができます。つまり、SQLを書かなくても、Rubyの言語でデータを操作すると、それがSQLに変換されて実際にDBに対して操作をかけます。どんなSQLになるか、はログ(処理の流れ、履歴)をみることで確認できますが、SQLの文法を理解しないと中身を本当の意味で理解はできません。Ruby on Railsがかけても、SQLが分からないということにならないように!

 

このセクションの目標
  • SQLの基礎文法を一通り覚えて、使えるようになる
  • 課題本の演習問題を全て解いておく

 

セキュリティ(基礎)

プログラミング基礎としてはこれが最後になります。セキュリティは初心者が見落としがちな分野です。もちろんこれを知らなくてもコードをかけますし、アプリケーションをリリースできます。しかし、知らないあまりに脆弱性のある製品をリリースしてしまうリスクがあります。

 

近年のフレームワーク(Ruby on Railsなど)は初歩的な脆弱性をカバーしてくれるようになっていますが、それでも何も知らずに書いていると思わぬ落とし穴があります。こうしたセキュリティの問題は初心者だけでなく、FacebookやGoogle、Amazonなど巨大Tech企業でさえ頻発する問題です。仕事でそうした大失敗をしないように、はじめのうちにセキュリティの基礎を理解しておきましょう。そして、これを知っておくことで、他の未経験エンジニアと差をつけられる重要なポイントです。

 

少し古いですが、セキュリティに関しては以下の書籍を一冊呼んでおけば基礎は十分です。あとは、実際にコードを書く中で気を付けて都度勉強しておきましょう。

入門図解入門よくわかる最新情報セキュリティの基本と仕組み

 

セキュリティは未経験エンジニア転職でも重要とお話しましたが、実際にポートフォリオを作る中でセキュリティを意識して作業を分けるととても効果的です。

 

このセクションの目標
  • 一般的なセキュリティホールについて理解する
  • セキュリティ対策としてどんなことに気をつければよいのかを理解する

 

まとめ

ここまでが基礎編です。PC、通信、データベース、セキュリティについてみてきました。ここまでプログラミング言語は一切触れていません。それでも、エンジニアとして働くにあたってはとても重要なことがたくさん含まれています。

 

エンジニアとして重要なことはどれだけたくさんの言語ができるか?ではありません。どれだけ技術に精通しているか?が大事です。つまり、どれだけコーディングができても、その基礎を理解していないといつか破綻するときがきます。中級者でも陥りがちなポイントや、セキュリティホールなどを早いうちから知っておきましょう。そうすることで学習も格段に効率的になります。

 

続いてのフロントエンド編はこちらからご参照ください!

【300時間でやりきる!】Webエンジニアになるまでに学習すべきこと全部まとめました-フロントエンド編

2019年9月28日

 

 

 

人気記事【2019年最新版】Twitterで評価の高いスクール5選

 

人気記事【未経験あり】いまWEBエンジニアに人気転職サイト4選