プログラミング１年目の2023年に勉強した技術・書籍の振り返り

こんにちは、学生エンジニアのMasamichiです。2024年もついに始まってしまいました。今年はより一層プログラミングに励もうと思います。

さて、今回はプログラミング一年目の僕が大学に入学してからプログラミングを始めた2023年にした勉強の内容をざっくり振り返ります。

# Python
## 基礎
プログラミングを始めて、最初の1ヶ月くらいは基礎を勉強していました。Pythonを選んだ理由は特になく、ただ「プログラミング言語」と調べて一番上にきた言語を始めました。この時は、「本堂俊介」さんのYouTube動画でPythonの講座をひたすらハンズオンしていました。この講座で一通りプログラミングに必要な知識を習得しました。

https://youtube.com/playlist?list=PLuCS8p0T7ozKsbBUCjYpOYXxCGfiDJuuJ&si=CT2OFX21UyUlQAyF

また抜けている部分や、復習の意味も込めて以下の本もやりました。この本で基本的なアルゴリズムとデータ構造の考え方をマスターしました。応用的な内容が載ってはいましたが、前述のYouTube講座をしっかりやりこんでいたので、内容が被っている部分も多かった印象です。

https://www.amazon.co.jp/%E7%8B%AC%E5%AD%A6%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%BC-Python%E8%A8%80%E8%AA%9E%E3%81%AE%E5%9F%BA%E6%9C%AC%E3%81%8B%E3%82%89%E4%BB%95%E4%BA%8B%E3%81%AE%E3%82%84%E3%82%8A%E6%96%B9%E3%81%BE%E3%81%A7-%E3%82%B3%E3%83%BC%E3%83%AA%E3%83%BC%E3%83%BB%E3%82%A2%E3%83%AB%E3%82%BD%E3%83%95/dp/4822292274/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1KJ5PALSN3JRO&keywords=%E7%8B%AC%E5%AD%A6%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%BC&qid=1704532196&sprefix=%E7%8B%AC%E5%AD%A6%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%BC%2Caps%2C288&sr=8-1

## Django
プログラミングを始めて2-3ヶ月くらいの頃は、Djangoを使ったWeb開発を勉強していました。技術選定の理由は、Pythonを勉強していてWeb開発をするためにフレームワークが必要だということを知り、Pythonで書けるものを探した結果、Djangoが一番有名だったため選択しました。教材は先ほどと同様に本堂さんのYouTube講座です。Djangoを実務で使えるレベルまで理解することを目的としたもので、大変参考になりました。

https://www.youtube.com/playlist?list=PLuCS8p0T7ozK4Ne1e5eAVG2R5Gbs1naix

また、この頃はプログラミングに一番ハマった時期で、Django＋jQueryで動的なWebサービスを作成したり、SQLインジェクションやJWTのリフレッシュ、CSRF対策、XSS対策などバックエンドの基本的な知識を、がっつり独学していました。使用した教材はChatGPTや以下のようなものです。

https://www.amazon.co.jp/%E5%AE%9F%E8%B7%B5Django-Python%E3%81%AB%E3%82%88%E3%82%8B%E6%9C%AC%E6%A0%BCWeb%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E9%96%8B%E7%99%BA-%E8%8A%9D%E7%94%B0-%E5%B0%86-ebook/dp/B095BZPJYW/ref=sr_1_6?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1QX1J45YJ9S7I&keywords=django&qid=1704532831&sprefix=djang%2Caps%2C242&sr=8-6

## FastAPI
FastAPIはハッカソンでバックエンド開発を担当した時に始めて使用した、 Djangoより軽量で高速、かつよりPythonicにかけるというコンセプトで作られたモダンフレームワークの一つです。学習の際は、一つの教材を使ったわけではなく、YouTubeやChatGPTなどをかなり活用して書けるようになりました。またUdemyで以下の講座を購入して理解を深めました。

https://www.udemy.com/share/105LYM3@2sPO4MKsiVPRjWq8Y48FeHshWrgI8Khldlg-pOYufJRzF9BjvawPKGI4Hg7eS_rT/

# JavaScript
## 基礎
JavaScriptはインターンで必要であったためキャッチアップしました。PythonとSyntaxがかなり異なるので最初こそ苦戦しましたが、同じスクリプト言語なので、流儀はにて短気でキャッチアップできました。この頃からあまり本を読むことがなくったため、具体的にこれをみて勉強した！みたいなものはほとんどなく、YouTubeやChatGPTがほとんどです。

(2025年追記: 2024年以降は割とメジャーな学習スタイルになってきましたね！)

https://www.udemy.com/share/10730C3@JG3vK9IsZSR9xhAPUY1MzR9Lac_9ipOSM8MsIUmZLeK51bzxDT5diiy20JSJyjP_/

一部原理的な内容を理解するために、以下の教材が大変役に立ちました。自分の元勤務先の人が書いたらしく、社内でも推薦図書として有名でした。JSについて網羅されており、ECMAScriptの挙動についてもかなり記載が多く勉強になりました。

https://www.amazon.co.jp/JavaScript-Primer-%E8%BF%B7%E3%82%8F%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%E3%81%AE%E5%85%A5%E9%96%80%E6%9B%B8-azu/dp/4048930737/ref=sr_1_1?crid=1EMDYKDSLI405&keywords=javascript+primer&qid=1704533551&sprefix=javasc%2Caps%2C239&sr=8-1

## Vue.js
これもインターンで使用する技術ということでキャッチアップしました。これ以前にReactも書いてみたのですが、Vue3に限っていうなら学習効率にそこまで差がないように思います。~~また開発効率は当然変わらないので、フロントで技術選定に困った時は要件より慣れているかで判断した方が良いのではないかと思っています。~~(Reactの方がオススメです。) Vueも特別よんだ本はなくYouTubeとChatGPTに聞きまくったら書けるようになりました。よしぴー大先生ありがとうございます。

https://youtu.be/wy3hqhDPztQ?si=OS4J36WfmgSRTHW3

## TypeScript
一応TypeScriptも勉強しました。~~個人開発やハッカソン程度ではわざわざ導入するメリットを感じなたったのと結局コンパイル後はJavaScriptであること、中途半端な型バリデーションという色々な懸念点が出てきて「使えるようになって方がいいんだろうなー」とは思いますが、コストに見合わない気もしていてあまり勉強する気力が湧かないです。~~(2025/04/20追記: 素晴らしい言語です。ぜひ勉強してみてください。自分も2024年で一番勉強しました。)
こちらも大枠はYouTubeとChatGPT、ハンズオン的にUdemyで無料のTypeScript講座を受講しました。

https://www.udemy.com/share/103kcy3@_3lvjII6yYgpw0q2lz3Z_5smWE_M5vVrmkxe99sGQFDbw3UyYPG-aV4wyPLdFxde/

# コンピュータサイエンス
## web技術
web技術の基本的な部分は、この本で勉強しました。可もなく、不可もなくといった感じで、とりあえずWebがどういうものかを手っ取り早く学びたい人ならおすすめです。

https://www.amazon.co.jp/%E5%9B%B3%E8%A7%A3%E5%8D%B3%E6%88%A6%E5%8A%9B-Web%E6%8A%80%E8%A1%93%E3%81%8C%E3%81%93%E3%82%8C1%E5%86%8A%E3%81%A7%E3%81%97%E3%81%A3%E3%81%8B%E3%82%8A%E3%82%8F%E3%81%8B%E3%82%8B%E6%95%99%E7%A7%91%E6%9B%B8-%E9%B6%B4%E9%95%B7-%E9%8E%AE%E4%B8%80/dp/4297123096/ref=sr_1_7?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=38B0BQ8OHDZDD&keywords=web%E6%8A%80%E8%A1%93&qid=1704534630&sprefix=web%E3%81%8E%E3%81%98%E3%82%85t%2Caps%2C236&sr=8-7

しかし、具体的なwebの仕組みを理解するには至らず表面をなぞっただけになってしまったので、しっかり理解するために現在は以下の本でwebについて学習を進めています。

https://www.amazon.co.jp/Web%E3%82%92%E6%94%AF%E3%81%88%E3%82%8B%E6%8A%80%E8%A1%93-HTTP%E3%80%81URI%E3%80%81HTML%E3%80%81%E3%81%9D%E3%81%97%E3%81%A6REST-WEB-PRESS-plus/dp/4774142042/ref=sr_1_6?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=38B0BQ8OHDZDD&keywords=web%E6%8A%80%E8%A1%93&qid=1704534630&sprefix=web%E3%81%8E%E3%81%98%E3%82%85t%2Caps%2C236&sr=8-6

## コード
綺麗なコードを書くという理屈を実践するために以下の本を参考にしました。~~個人的にクリアなコードを書く勉強はそこまで必要ないと思います。レガシーで汚いコードだったとしても、コンピュータ的に間違えていないから動いている訳なので、もちろんコードレビューに耐えれる程度で綺麗なコードを書く必要はあると思いますが、プログラミング力に全く関係ないスキルです。この本くらいの規則を守れればあとは勉強しなくても良いと思います~~。(2024/11/21追記: 必要です。勉強しましょう)

https://www.amazon.co.jp/%E3%83%AA%E3%83%BC%E3%83%80%E3%83%96%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89-%E2%80%95%E3%82%88%E3%82%8A%E8%89%AF%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9B%B8%E3%81%8F%E3%81%9F%E3%82%81%E3%81%AE%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%A7%E5%AE%9F%E8%B7%B5%E7%9A%84%E3%81%AA%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF-Theory-practice-Boswell/dp/4873115655/ref=sr_1_1?crid=WZN0RSAGVJA7&keywords=%E3%83%AA%E3%83%BC%E3%83%80%E3%83%96%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89&qid=1704534867&sprefix=%E3%83%AA%E3%83%BC%E3%83%80%E3%83%96%E3%83%AB%2Caps%2C264&sr=8-1

## アーキテクチャ
まだ全然読了できていないのですが、絶賛読み進めています。クリーンアーキテクチャの原則と理屈について詳細に書いてあります。読了していないので良書かわからないため、明細な言葉は書きません。現在チーム開発しているプロジェクトで導入途中なので実際に運用してみてまた記事にします。

https://www.amazon.co.jp/Clean-Architecture-%E9%81%94%E4%BA%BA%E3%81%AB%E5%AD%A6%E3%81%B6%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%AE%E6%A7%8B%E9%80%A0%E3%81%A8%E8%A8%AD%E8%A8%88-%E3%82%A2%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%89%E3%83%AF%E3%83%B3%E3%82%B4-%EF%BC%B2%EF%BD%8F%EF%BD%82%EF%BD%85%EF%BD%92%EF%BD%94-%EF%BC%A3%EF%BC%8E%EF%BC%AD%EF%BD%81%EF%BD%92%EF%BD%94%EF%BD%89%EF%BD%8E-ebook/dp/B07FSBHS2V/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=J8NTXU6HOA8A&keywords=%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3&qid=1704535075&sprefix=%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%2Caps%2C235&sr=8-1

## データベース
データベースはMongoDBをはじめとる、色々なデータベースを１年間で勉強しました。データベースに限らず自分の勉強法は、必要なら使いながら覚えていくという方針で進んでいて、この分野に関しては特にそれが強かったと感じました。強いていうならYouTube動画をちょくちょく見ました。

https://www.youtube.com/@MongoDB

https://youtu.be/-fW2X7fh7Yg?si=EDrb5jn1KnKot3Mr



# 終わりに
今回は、プログラミング１年目の2023年に勉強したことをざっくり振り返ってみました。この内容が少しでもプログラミング学習の参考になれば幸いです。2024年も頑張りましょう。