最短でエンジニアになって起業する独学勉強法

TwitterFacebookHatena
  • 公開:2021-8-10
  • 更新:2023-10-26
  • 文章量:4002
  • Python

TL;DR

今回はプログラミング独学法について完全公開しますが、その前に、最近話題になった「プログラミングスクールなんか行かなくていいからこれやれ」という記事が削除されていたので、思い出す範囲で概要を書いておきます。

独学勉強法の例

ざっくりと以下のようなことが書かれてあったと思います。

概要

  • Linux インストール
  • Python の本買ってきて読む
  • html/css/js の勉強
  • ブラウザで動くアプリを作る
  • LPIC ネットワーク系の本を読む
  • データベース
  • Web フレームワーク

他に、こういう記事もありました。

プログラミングスクールに通わず、プログラミングを学ぶ方法

ざっくり概要を書くと、以下のような感じ。

  • Progate をやる
  • 書籍を 1 冊やりきってみる
  • N 予備校を使う

私の独学方法

Python の場合だと、以下が Web アプリケーションを作るエンジニアになる独学方法だと思います。

  • 2 週間:Linux / SQL / Docker / Vim / Git / CI・CD の基本操作
  • 1 ヶ月:Python の基礎(以下の本)
  • 1 ヶ月:Django で何か作る(簡単な本、公式チュートリアル)

Python おすすめ本

私の見解としては「言語だけを習得しても実務で活かせないから意味はない。言語以外も網羅的に勉強する必要がある。幅広く学ぶには、調べながら何か作るのが最も効率的である。したがって、独学でエラーを繰り返しながら何か作ってみるのが最高の勉強になる」という感じです。

結局何が言いたいのかというと

  • エンジニアに必要な能力は能動性である

ということです。

「何か作る」と自分の成長を感じられるので、プログラミングが楽しくなるはずです。

バックエンドの学習方法

私の場合ですが、業務で必要なこともあって起業前に以下のようなことを、夕食後にスキマ時間(毎日 2 時間)を作って独学で勉強しました。私の仕事は経営であって、エンジニアでないので全く極めてはいませんが、実務で使える程度です。

  • PHP
  • Ruby
  • Swift
  • Python

10 年前に、始めてのプログラミングを勉強しました。言語は PHP だけで、フレームワークを使わず、掲示板とエンターテイメント系のサービスを公開しました。10 年前に作ったサービスは、現在も稼働していて毎月収入が発生してます。

PHP の独学時間は、2 週間です。

Ruby の独学時間は 2 ヶ月でしたが、Rails の中で Ruby を書く機会が少なかったのと、書いててあまり面白くなかった(直球ですいません)ので Python にシフトしました。これは好みですね。

バックエンド学習の流れ

  • 簡単な参考書を見る(じっくり見ない。流し見で 2 周)
  • 少し難易度の高い本を買って、写経する(ざっくり 3 周する)
  • 何か作る

この方法なら、無理なくできそうじゃないですか?

私の見解としては、コード以外の「日本語の解説」を理解する(精緻化)ことが大切だと思ってます。学習の目的はコードの暗記ではなくて、本質を理解していくことだからです。

近年、エンジニアが使うエディタは、コード補完、スニペット呼び出しツール、AI の補完など色々便利になってるので、コードの暗記に意味はありません。

権威性 チュートリアル

大学が配布しているチュートリアルは、日本語の使い方も美しいですし、非常に論理的に構成されています。背景となる知識がほとんどなかったとしても、文章がきちんと読めれば本質を理解できるように作られています。

東京大学と京都大学から、無料で Python 学習 PDF 版が配布されています。東大の方は Python だけに特化、京大の方は、プログラミングとはなんぞや?というところから始まります。

大学の資料だけでは情報不足ですが、初学者の人は十分だと思います。上述した Amazon のおすすめ本と並行読みすると、より理解が深まるでしょう。

ブラウザから Python を記述、実行できるColaboratoryを使って、試してみるといいでしょう。

Python PDF 版

東京大学 Python プログラミング入門

京都大学 プログラミング演習 Python 2021 年版 2021/10/20 更新

Python チュートリアル

Python プログラミング入門 — Python プログラミング入門 documentation

Python チュートリアル — Python 3.9.4 ドキュメント

ゼロからの Python 入門講座 - python.jp

Django

はじめての Django アプリ作成、その 1 | Django ドキュメント | Django

Django 入門 - Python 入門

Django Girls のチュートリアル

本の読み方

「どうしてそうなるのか?」「どういうロジックでそうなるのか?」を整理して理解するのは大切だとは思うのですが、中々先に進まなくて挫折してしまいそうになりませんか?私は学習が頓挫しないように以下の方法で対処しました。

  • 暗記しようとしない
  • 完璧に理解しようとしない
  • 難しい部分は印をつけておく(重要な箇所ではなく、分からなかった箇所にマーカーを引く)
  • 読むのがきつくなったら、違う本を読んだり、違う言語をやる

後々、しっかり読めるように「読む前の土台を作るために軽く 10 回読む」という気楽な気持ちで読みます。

参考になりそうな勉強法を引用します。

  • 10回読む。
  • 5回目までは、ただ読む(わかろうと思わず、ただ目を通すだけ)。
  • 6~7回目は重要な言葉、公式などに注意しながら読む。
  • 8~9回目は重要な言葉、公式などの説明がどこにあったか注意しながら読む。
  • 10回目に理解しようと思って読む。

参考:先手必勝法

情熱的に一気に読むんじゃなく、毎日 2 時間の勉強時間を作って、その間だけ機械的にやる。習慣に組み込んだほうが続きますよね。

フレームワーク

Ruby や Python を勉強した後。

会員登録サイトを作りたかったので、以下の 2 つを勉強しました。独学時間は、それぞれ 1 ヶ月くらい。

  • Rails
  • Django

結局、Django を採用しました。

Rails の方がコード量が少なくなるけど抽象的で、Django の方がコード量が増えるけど可読性が高まり分かりやすい印象。エラーがでた場合の対処も楽。暗記が好きなら Rails、Python のコードをバリバリ書きたいなら Django。

Django で、できること

  • 管理サイト
  • ユーザー認証(パーミッション、ユーザーセッション)
  • ログイン機能
  • マイグレーション機能
  • CRUD
  • セキュリティ対策(CSRF、XSS、パスワード暗号化)
  • 多言語翻訳
  • 地理空間データ

管理サイト(Django Admin)は、CRUD(追加・参照・変更・削除)を提供してくれます。その他、検索・フィルタ・ソート・ページネーション・一括操作・変更履歴・パスワード再設定などの機能があります。

Django を使うことで、Python の知識も活かせるし、何を書いているのか理解しやすいので、楽しみながらプログラミングできるのではないかと思います。

開発環境

プログラミング言語の勉強よりも、開発環境を整えることに時間を取られたりします。

  • Linux
  • git
  • Docker
  • AWS(IAM、EC2)
  • SQL

AWS Cloud9

統合開発環境の話になりますが、ブラウザのみでコーディングやデバッグができる AWS Cloud9 はおすすめです。

ターミナル、エディタ共有、リビジョン履歴、様々な言語に対応しておりコード補完も充実しています。追加のソフトウェアのインストール、git push の実行、シェルエクスペリエンス、遠隔ペアプロ、グループチャットも搭載。

データベースも簡単に作れて、様々な環境設定が不要なので、開発環境の準備にかかる時間を削減できます。また、言語ごとに環境を変更できるのは凄いですよね。

少し気になるのは、わずかに EC2 の料金がかかること。一ヶ月 20 日間、1 日 4 時間の IDE 実行で ワンコインくらい?Cloud9 を閉じてから 30 分経過すると自動的に休止させコストを抑えることができます。

料金 - AWS Cloud9 | AWS

ローカルなら、流行り廃りの無い Vim を覚えていれば問題ないかと思います。

補足

フロントエンドなら、専門家で無い限り、2 週間ほど MDN のサイトで、さっと独学すれば十分です。後は CDN を使う。

ウェブ開発を学ぶ | MDN

フロントエンド

  • JavaScript/React/Next.js
  • html/css/SCSS

  • デザイン(フォント、配色、レイアウト、タイポグラフィ)
  • ネットワーク
  • Adobe ソフト(Photoshop、Illustrator、XD、Premiere Pro)
  • UI、UX
  • ディレクション
  • マーケティング、アクセス解析、SEO
  • 営業、経営

プログラマーに必要な要素

  • 能動性
  • 日本語の文章を理解する

以下のように言い換えることもできます。

  • 自己解決能力
  • 読解力

以上、最短でエンジニアになって起業する独学勉強法でした。

最短でエンジニアになって起業する独学勉強法