プログラミングを2年間独学

今回はボクが未経験から独学でエンジニアになるまでのロードマップをご紹介しようと思います。あくまでボクのやり方となりますが未経験でエンジニアを目指している、あなたの参考に少しでも慣ればいいなと思ってます。
今回はタイトルにもある通り、ボクがエンジニアになるまでのロードマップを皆様にご紹介します。
かなり間が空いてしまいましたが、実はこの企画自体は2回目となります。
今回の記事をより楽しむために初めてこのサイトに訪れた方は前回の記事を読んでもらうと、よりリアルを感じてもらえると思います。
では簡単にボクについて自己紹介をします。(前回しているので簡単にしますね)
自己紹介
2020年からプログラミングの学習を独学で始め、長い時を経てようやく今年の1月からエンジニアとなりました。
現在はサーバーサイドエンジニアとして働いてまして、Gitでのソースコード管理やJavaでの開発、デプロイツールを使ってリリース作業などを行なってます。

少し前の自分は実はエンジニアではなく会社員として本サイトを運営している情況でした。
このサイトを立ち上げ始めて当初はHTMLもろくに理解しておらず、PCの使い方もよくわかっていなかったエンジニアとは程遠い人間でした。
今回の記事では、エンジニアを目指している方に向けて
- ここまでどのように学習をしたか
- なにを学習したのか
- そしてどうなったのか
この3点についてリアルをご紹介します。

それでは早速行ってみよう!
学習の方法
以前にも紹介しましたが、ボクは通勤時間で学習をし、たまに休みを使ってガッツリ学習を進めるスタイルでした。
基本的な学習サイトや参考資料などは前回の記事で紹介した通りなので、細かい部分が気になる方は以前お記事をご覧ください。
最近だとスマホでWebから情報を仕入れる以外に、資格所得をするための参考書とchatGPTを利用した学習をすることでさらに理解を深めいています。

ざっくりとですが下記の手段となります。
- YouTube
- オンラインスクール(無料)
- 技術的なサイト
- 学習サイト
- 資格取得の参考書
- chatGPT
- (会社でのイベント)
※会社でのイベントに関してはエンジニアになってからです。参考にならないと思いますが、就職してしまえば高いレベルで学べる場はいくらでも転がってます。

行動あるのみ!まずはやってみよう!
学習した内容
ここからは具体的な学習した技術の内容をご紹介します。
全てを紹介することはできないので、下記の3つのポイントに絞って簡単い紹介しますね。
- 学習した言語の順番
- それぞれ学習した内容
- 学習する時のポイント
学習した言語の順番

どんな順番で学習したの?
ボクが学習した言語についてですが、ざっくり紹介すると下記順番となります。
- HTML
- CSS
- JavaScript
- Sass/Scss
- Pug
- TypeScript
- SQL
- Java
- PHP
- ShellScript
よくあるパターンで、まずはHTMLから学習を始める方法をボクはとりました。
ポイントとしてはそれぞれの言語にて、成果物を決めてから学習を始めている点です。
闇雲に学習をすると、学習内容が具体的に何に役立つのかわからなくなってしまい、そのうち学習が苦痛となってしまう場合があります。

またこれらの知識を理解する際に、周辺知識も必要となるため細かく分解していくと、とんでもない量の知識を得ることができると思います。
ボクの場合ですがJavaの学習をして以降、プログラミングの知識を網羅的に理解することができ、以降の他言語学習はかなりハードルが下がった印象です。

この順番だとJavaを頂点に、徐々に難易度が上がっていくイメージです!
それぞれ学習した内容
HTML
- 基本的なマークアップ方法
- SEOに関連するタグの使い方
HTMLとは主にWEBページなどを表示する時に利用されているマークアップ言語です。
このページもHTMLでブラウザに表示されています。
PCをお使いの方はブラウザを開いた状態で『F12』を押すことでどんなものか確認することができるので試してみてください。
※マックの人はできないかもしれないです。ご容赦ください、、
CSS
- bootstrap4
- bootstrap5
- postcss
CSSはWEBページのデザインをする言語です。
もしCSSを使わないとこのサイトもたっだの白紙に文字が表示されているだけになってしまいます。
現代では見た目は非常に重視されているので、欠かせない分野ですね。
JacaScript
- Vue.js
- anime.js
- node.js
- webpack
- PWA
- その他沢山あるライブラリの利用方法
- jest(ユニットテスト)
ブラウザで動作するスクリプト言語です。
最も多くのWEBページで利用されていて、さまざまな便利なライブラリが用意されている世界的にも人気な言語です。
サイトのメニューバーや非動機通信(Googleマップで使われてたりしてる)が可能で、よくサイトの表現をリッチすることができるとも言われています。
Sass/Scss
- bootstrap5
- 基本的な使い方
先ほど紹介したCSSの親戚のような存在でコンパイルが必要なメタ言語になります。
ScssとSassはコンパイルするとCSSになるため、cssのフレームワークを利用すると大体必要な知識となります。
関数やif分を使った条件分岐を利用することができるためcssと比べて、効率的にスタイリングを進めることができます。
Pug
- Pugを利用したSSG
- よく利用するHTMLのテンプレ化
こちらはHTMLのメタ言語で、コンパイルするとHTNLになります。
HTMLをそのまま書くのと違い、for文やif文、あらかじめ作っておいたテンプレートを継承するなど多彩な機能があり、効率的にマークアップをすることができます。
TypeScript
- 型の理解
- クラスの理解
- モジュールの理解
- コンパイルの理解
- デコレーターの理解
マイクロソフトが開発した静的な型を扱うプログラミング言語で、コンパイルするとJavaScriptになります。
JacaScriptでは利用できなかった、アクセス装飾子を使用したクラス構文、デコレーターの利用、コードをモジュールごとに分けて管理できるなど、
Javaライクな書き方をすることができるようになった言語です。
Java
- インターフェイスの理解
- 抽象クラスの理解
- 型安全のありがたさを知る
- クラスの継承の理解
- ジェネリクスの理解
- SpringBoot
- Spring Framework
- JAP
- JPQL
- Spring Batch
- JavaFX
- tomcat(サーブレット)
- MyBatis
プログラミング言語では昔から人気の言語で、今でも数多くのプロジェクトが世界的でJavaを利用しています。
個人的な意見ですが、とりあえずJavaが書ければ日本のIT業界でやっていけそうな気になることができるほど色々なシステムで使われています。
SQL
- DBの基本的なCURD操作
- SQLコマンドの理解
SQLはDBのデータを操作する時に使う言語です。
基本的にデータを扱うシステムの多くがSQLを使ってデータの保存や読み込みを行なっているので、学習しておいて損はないと思います。
DB
- PostgreSQL
- Oracle
- MySQL
DB(データベース)に関してはどれか1つ学習するとかなり理解が深まると思います。
SQLを利用してデータを管理することができます。
もしこだわりがなければMySQLがお勧めです。
PHP
- Slim4
- Laravel
- セッションの理解
サーバーサイドで動作する言語で、多くのWebサービスで利用されています。
有名どころだとWordPressがPHPで構築されております。
プログラムの中に生のHTMLを記述できることが特徴で、直感的にプログラムを組むことができます。
ShellScript
- Linuxコマンドの理解
- シェルを利用したジョブの作成
コマンドをファイルにまとて記述し、一気に実行することができます。
プログラミング言語というよりは、コマンド操作に近いイメージです。
あらかじめファイルに書いておいたコマンドを実行できるので、大量のファイルを操作するときやルーティンなどを実行することができます。
学習した結果
一通り学習をしてみて、最終的には1人でwebアプリの構築をしたり、APIを作成したり、GUIアプリを作成したりなど色々なことができるようになりました。
はじめからできたことではなく、自らの努力の結果なしえたことだと思っています。
また成果物としてアプリが出来上がる瞬間はなんとも言えない達成感で満たされます。

実際これがたまらなくて続けていたのかも
初めのうちは何を作るべきなのか、どうしたら実現できるのか、なにもわかりませんでした。

でもできるまで原因の調査をしたり、技術的な学習をすることで、プログラミングでぶち当たる問題を解決する力を身につけることができました。
個人的にはこの『解決する力』が独学をして一番の収穫だと思っています。
今後学習しようと考えてること
ここまで学習を進めてきたボクですが、今のところお仕事をする上で特に困ることなく過ごせています。

今後自分の可能性を広げるためにも、下記のような言語学習もしていきたいと思っています。
- C言語
- Python
- GO
- Ruby
- C++
- C#
ここまできても趣味の領域から大きく外れることなく学習をできているので、正直自分でもびっくりです。

挑戦あるのみ!
まとめ

いかがでしたか?
今回はだいぶ間が空いてしまいましたっが、『プログラミング独学』についての記事でした。
正直ボクの場合は少々学習期間が長かったかもしれないなと実際に働いてみて感じました。
※いい意味で一生懸命勉強したことで、研修など必要なく即戦力になれました。

なぜそう思ったかというと、やはり独学よりも現場で働きながら技術に触れつつ独学を進めた方が遥かに効率的だからです。
エンジニアとなるとなぜか技術的な要求レベルが高く感じてしまいますが、実際はそこまですごい高いわけではありません。
多くの場合あなたの技術よりも、今後のエンジニアとして成長ができるかのポテンシャルをみられることでしょう。
というわけで今回はここまでになります。

読んでくれてありがとな!