こんにちは、学生エンジニアのMasamichiです。2024年もついに始まってしまいました。今年はより一層プログラミングに励もうと思います。
さて、今回はプログラミング一年目の僕が大学に入学してからプログラミングを始めた2023年にした勉強の内容をざっくり振り返ります。
Python
基礎
プログラミングを始めて、最初の1ヶ月くらいは基礎を勉強していました。Pythonを選んだ理由は特になく、ただ「プログラミング言語」と調べて一番上にきた言語を始めただけです。この時は、「本堂俊介」さんのYouTube動画でPythonの講座をひたすらハンズオンしていました。この講座で一通りプログラミングに必要な知識を習得したイメージです。
また抜けている部分や、復習の意味も込めて以下の本もやりました。この本で基本的なアルゴリズムとデータ構造の考え方をマスターしました。Githubによる状態管理や応用的な内容が載ってはいましたが、前述のYouTube講座をしっかりやりこんでいたので、そこまで得れるものはなかったです。
Django
プログラミングを始めて2-3ヶ月くらいの頃は、Djangoを使ったWeb開発を勉強していました。技術選定の理由は、Pythonを勉強していてWeb開発をするためにフレームワークが必要だということを知り、Pythonで書けるものを探したらDjangoが一番有名だったため選択しました。教材は先ほどと同様に本堂さんのYouTube講座です。Djangoを実務レベルで使えるまで習得できるコースになっていて、細かいところまで説明されていて、とてもためになりました。
また、この頃はプログラミングに一番ハマっていたので、Django+jQueryで動的なWebサービスを作成したり、SQLインジェクションやJWTの発行更新、CSRF対策、XSS対策などをゴリゴリに独学していた記憶があります。使用した教材はChatGPTや以下のようなものです。
FastAPI
FastAPIはハッカソンでバックエンド開発を担当した時に始めて使用したフレームワークなのですが、 Djangoより軽量で高速かつよりPythonicにかけるので今ではこちらの方がよく使っている気がします。FastAPIに関してはこれといった教材は思いつきませんが、YouTubeやChatGPTなどをかなり活用して書けるようになりました。またUdemyで以下の講座を購入して理解を深めました。
JavaScript
基礎
JavaScriptは自分がインターンで使用する技術ということで勉強しました。PythonとSyntaxがかなり異なるので最初こそ苦戦しましたが、プログラミング自体に仕組み的な違いはないので完全に使えるようになりました(嘘)。この頃からあまり本を読むことがなくったため、具体的にこれをみて勉強した!みたいなものはほとんどなく、YouTubeやChatGPTがほとんどです。
一部原理的な内容を理解するために、以下の教材が大変役に立ちました。文句なしの名著だと思いますが、分厚すぎるのと入門書というタイトルは数学級にタイトル詐欺なのではないですか()。
Vue.js
これもインターンで使用する技術ということでキャッチアップしました。これ以前にReactも書いてみたのですが、Vue3に限っていうなら学習効率に全く差がないように思います。また開発効率は当然変わらないので、フロントで技術選定に困った時は要件より慣れているかで判断した方が良いのではないかと思っています。Vueも特別よんだ本はなくYouTubeとChatGPTに聞きまくったら書けるようになりました。よしぴー大先生ありがとうございます。
TypeScript
一応TypeScriptも勉強しました。個人開発やハッカソン程度ではわざわざ導入するメリットを感じなたったのと結局コンパイル後はJavaScriptであること、中途半端な型バリデーションという色々な懸念点が出てきて「使えるようになって方がいいんだろうなー」とは思いますが、コストに見合わない気もしていてあまり勉強する気力が湧かないです。こちらも大枠はYouTubeとChatGPT、ハンズオン的にUdemyで無料のTypeScript講座を受講しました。
コンピュータサイエンス
web技術
web技術の基本的な部分は、この本で勉強しました。可もなく不可もなくといった感じで、とりあえずWebがどういうものかを手っ取り早く学びたい人ならおすすめです。
しかし、具体的なwebの仕組みを理解するには至らず表面をなぞっただけになってしまったので、しっかり理解するために現在は以下の本でwebについて学習を進めています。
コード
綺麗なコードを書くという理屈を実践するために以下の本を参考にしました。個人的にクリアなコードを書く勉強はそこまで必要ないと思います。レガシーで汚いコードだったとしても、コンピュータ的に間違えていないから動いている訳なので、もちろんコードレビューに耐えれる程度で綺麗なコードを書く必要はあると思いますが、プログラミング力に全く関係ないスキルです。この本くらいの規則を守れればあとは勉強しなくても良いと思います。(2024/11/21追記: 必要です。勉強しましょう)
アーキテクチャ
まだ全然読了できていないのですが、絶賛読み進めています。クリーンなアーキテクチャの原則と理屈について詳細に書いてあります。読了していないので良書かわからないため、明細な言葉は書きません。現在チーム開発しているプロジェクトで導入途中なので実際に運用してみてまた記事にします。
データベース
データベースはMongoDBをはじめとる、色々なデータベースを1年間で勉強しました。データベースに限らず自分の勉強法は、必要なら使いながら覚えていくという方針で進んでいて、この分野に関しては特にそれが強かったと感じました。強いていうならYouTube動画をちょくちょく見ました。
その他
思想
先ほど紹介した「本堂俊介」さんは、現役フリーランスのエンジニアで僕が最も尊敬するエンジニアです。彼の思考は常識的ではなく、急成長するソフトウェア業界に飲まれない柔軟な発想ができる類を見ない思考力です。考え方こそ違えど、彼からかなり多くの処世術を学んでいてとても勉強になります。
終わりに
今回は、プログラミング1年目の2023年に勉強したことをざっくり振り返ってみました。この内容が少しでもプログラミング学習の参考になれば幸いです。2024年も頑張りましょう。