【勉強記録】エンジニアに向けての勉強を始めて2.5か月がたちました

# はじめに
こんにちは、私は未経験からソフトウェアエンジニアを目指して勉強しているものです。
本日は独学で勉強を始めて2.5か月たったので振り返りも含めて何をしてきたかを記事にしたいと思います。
わたしと同様の境遇の方の励みや参考になれば幸いです。

# 何をやってきたか。
まずは勉強した言語や技術、またその他自分の知識向上につながる行動について何をしたかを箇条書きで記載します
* `SQL`とデータベース
* `Git`と`GitHub`の基礎
* `Linux`の基礎
* `Ruby`の基礎
* `Notion`を使用して勉強記録を付け始めた
* `Qiita`のブログ投稿を始めた
* `QiitaCLI`を利用して`GitHub`に`push`や`pullrequest`,`コメント`することを始めた
* Boise State University で英語を習い始めた(2024の10月~12月)
* YoutubeとInstagramのアプリを消して無意識的に無駄な時間を割かないようにしている

こう見るとインプット意外にもアウトプットを意識した行動ができたなと思います。
いや、こんなの2か月の勉強量にしては少なすぎ！俺はもっとやったぜ！ってかたはどれくらいやったかコメントいただけると
勉強の参考にしたいと思います。
かなり律するようには意識していますが、まだまだ甘いところがあるので厳しいフィードバックもありがたいです

ではさっそく簡単ではありますが、勉強方法や詳細について書いていきます

### `SQL`とデータベース
私は`SQL`の基本を`Progate`を使用して勉強し、`SQL`とそれのもととなっているデータベースを学ぶために「おうちで学べるデータベースのきほん 第二版」という書籍を使用して勉強しました。ニックさんという方が書かれた本で、初心者でもとても分かりやすくデータベースの概要から学ぶことができるのでおすすめです。
実はアメリカにいまして、書籍を購入することが日本にいる時よりも大変なのですべてKindleを使用して勉強しています。
`Javascript`までは動画で勉強していたのに、ここからは書籍中心の勉強になります。
なぜかというと、私が勉強する上で何事も重要視しているのは「全体概要をつかむこと」です。
動画でも`SQL`の解説動画(すべて英語)はあったのですが、データベースの全体概要を理解したいのと、英語だと難しい概念のところまで理解する能力はまだ私にはありませんので、本がベストであると考えました。

以前に「図解からまるわかりWeb技術の仕組み」の書籍でWeb3層やデータベースのことについて、サラッと勉強して前提知識があったのですんなり理解できていたところもあると思います。
簡単で構わないので、データベース単体で学ぶよりは、Webアプリを作成して利用してもらう一連の流れのうちどの地点でデータベースが使われているかを意識しながら勉強するだけで吸収率が違うと思うのでおススメです
※本来はWebアプリに関係するプロトコルやTCP/IP,DNS等も知ったうえで理解した方がデータベースの位置づけが明確になり、これから学ぶフレームワークの役割も理解しながら学ぶことができると思います。

### `Git`と`GitHub`の基礎
`Ruby`をのぞいたら、2か月の中でこれが一番重要なのではないかと思っています。
というのも、これは書籍ベースと現役エンジニアから聞いた話ベースですが、日々の作業で当たり前のように`Git`と`GitHub`を使うようです。
わたしもどちらとも触ったことがなくて、そもそも`Git`と`GitHub`の違いについてもあまりよくわかっていなかったです。
これは調べれば出てきますが、正直ぱっと来なかったので実際に学んだ方が早いと思います。
`Git`を学ぶために、ProgateでGitのなんとなくの使い方を勉強しました。
コードに慣れておくという意味でProgateはとても素晴らしいのですが、どういう場面になぜこれを使うのかほかの似ているコードとの使い分けは？といったことが書いてないのでこれだけで一人前とはいかないと思います。
次に「いちばんやさしいGit&GitHubの教本」という書籍で勉強しました。
もしKidleを使用して勉強するなら、本書は固定レイアウト方式というタイプを採用しているためとても勉強しずらいですｗ

固定レイアウト式はマーカー、コメントができない、書いてある文章のコピーができません。

それを踏まえてもこの書籍は`Git`と`GitHub`の入門書としてとてもいい書籍です。
Progateでなんとなくやる`add`や`commit`,`push`や`pull`など言葉の説明でなく図を使って自分の立ち位置を明確にしてくれるので、コードの意図を図と一緒に覚えることができます。
実際に`GitHub`アカウントを使って作業するので、実践に近づいたなって感じがします。
しかし、あくまでも入門書。`Git`と`GitHub`についてはこれからもう少し勉強しようと思います。
もしおすすめ書籍があれば教えてください

### `Linux`の基礎
もうだいぶ慣れましたが、これの勉強はだいぶ苦労しました。
というのも覚えることが多すぎてすべては覚えきれないなって感じです。
`Linux`ができるようになると、`CLI`操作への抵抗がほぼなくなります。
あと、`Git`使うなら最低限知っておいた方がコマンドがいくつかあるのと、後々`AWS`や`Docker`あたりで使うようです
勉強で使った書籍は「ゼロから分かる Linuxコマンド200本ノック」です。
著者はUdemyでも似たような動画を出しており、説明はとても分かりやすいですので初心者に優しい教材です
`Linux`でシェルスクリプトというものをやるのですが、`Qitta CLI`で作成したファイルの名前を日付順に変える際に使用したので
自動化するには知らないとならぬ技術だと思います

### `Ruby`の基礎
`Ruby`はこれから`Ruby on rails`を勉強する予定なので、基礎言語として勉強しています
最初のとっかかりとしてProgate、その後書籍で「ゼロから分かる Ruby超入門」を使用して勉強しました。
イメージ図があって見やすい感じですが、肝心の詳しい説明が少なかったため自分で調べることがとても多かったです(そのおかげでアウトプットがたくさんできた)
私は今までプログラミング言語を`Fortran`,`Javascript`,`Ruby`とやりましたが、書いた順番で複雑でした。
特に`Fortran`は大学の時(civil Engineerの学位をもってます)に構造計算をする際に使いました。
歴史的にも`Ruby`のほうが新しいので、私がやった言語の中ではとっかかりやすい言語でした。
これから`Ruby`および`rails`マスターになれるよう勉強を継続していきます

### `Notion`を使用して勉強記録を付け始めた
これはほんとにおすすめです。
といっても勉強記録を付け始めたのは9/26とかなのでまだ1か月たってませんがｗ
`Notion`で表を作って以下の項目を作るといい感じの記録表ができます
* 日付
* 曜日
* 勉強時間(時間)
* 累計勉強時間
* スクリーンタイム
* 勉強計画(前日に書く)
* 目標勉強時間
* 実施内容
* 何か気づきがあれば
といった上記の項目を入れています。実施内容のところとか勉強以外のことも書いて日々の記録的な感じで使ってます。
そうすると、この勉強記録の心理的な使用ハードルが下がるのでおすすめです。
勉強記録とかしんどいと思っても、なんだかんだでtodoリスト作ってるのではないですか？
上記の勉強リストの中にtodoを入れ込むだけで勉強記録もtodoも一緒に記録するようになるので必然的に勉強の記録をし始めます
スクリーンタイムについては、最近スマホを最低限しか見なくなったので(Youtube,instgram,Facebook,Xのアプリを削除)項目からなくすか悩み中です

### `Qiita`のブログ投稿を始めた
これも勉強記録と同じくらいに始めました。
最初は独学初心者がわからないことを共有しても、そんな効果ないのではと思っていたのですが独学初心者だからこと教わるというより自分で考えて勉強しているので気づくことも結構あるのでは？些細なことでもほかの未経験からエンジニア目指している人の力になれるのでは？独学だとインプット中心になるが言い合うトップとのチャンスではと思うようになりブログを始めました。
もともとnoteというブログサービスでアメリカ生活について上げていたので文章を書くこと自体好きでした。

実はお恥ずかしながら最近知ったのですがQiitaにもコメント機能があり、その分野に詳しい方がフィードバックのコメントを頂けていることに気づきました…
独学のわたしにとってはこういった気づきを頂ける貴重な方々がいると思えるとより一層勉強とアウトプットを頑張ろうと思いました。
これを見ている現役エンジニアの方、これからの投稿にコメントいただけると新たな学びにつながりますし、それを見た経験の浅い私のような人を助けることにもつながるのでコメントいただけると嬉しいです。

### `QiitaCLI`を利用して`GitHub`に`push`や`pullrequest`,`コメント`することを始めた
`Git`の勉強を終わって気づいたことは「`Git`使う機会ないと操作忘れてしまうのでは？」と思うようになりました。
また`Qiita`で記事を毎回投稿する際に、「`GitHub`で記事を管理する」みたいなボタンがあったので気になってはいました。
`Git`を使いたい未経験のあなたへ、`Qiita`を始めて`QiitaCLI`を使おう。
`Git`と簡単な`UNIX`のコマンドさえわかればそこまで難しくないと思います。

### Boise State University で英語を習い始めた(2024の10月~12月)
これはエンジニアの勉強と直接的に関係なのですが、語学力をつけるために`Boise State University`という大学に行き始めました
期間は2か月間と比較的短めですが、さっそく成長がありました。
住んでいるアパートメントの管理人と問題なくコミュニケーションをとれて、相手の言ってることもほぼ100％わかりました。
やはり、英語力をあげるためにはアメリカに来てしまうのが早いなと身をもって体感した瞬間でした。
10/6から毎日投稿をしているので、それに影響は多少出るかもしれませんが甘いこと言わずに自分を追い込んで頑張りたいと思います

### YoutubeとInstagramのアプリを消して無意識的に無駄な時間を割かないようにしている
スクリーンタイムでも触れましたが、Line以外のSNSをスマホから削除しました。
楽しいことはまったくなし？というわけではなく、Youtubeは家のテレビのみ、そのほかのSNSはPCで見るようにしています
スマホだと時間が解けていくようになくなるのですが、画面が大きいと没頭しずらくなり早期に抜け出すことができます。
もし、自分の時間をどうしても作りたいという方はこの方法おすすめです。


# まとめ
いかがだったでしょうか。独学なので誰かと比べることはできませんがこんな感じで勉強を進めています。
同様に未経験から勉強を始めている方がいればコメントいただけると励みになります。
こんな感じで楽しみながら勉強を進めています。ブログ投稿も引き続きしていくのでよろしくお願いします。