はじめに
私は法学部の人間で、プログラミングを始めてしばらく経ったものの、Webの仕組みや通信、OSの知識がまるでなかったのでまとめてインプットしてしまいたいと考えていました。2019年のGWは10連休で、ちょうど良い機会だったのでこれを利用しました。
また、本の良いところには、まとまった情報が載っていること、情報の正確性がある程度保証されていることがあります。プログラミングの勉強中、エラーが出たり分からないところに出会ったりした時にはその都度ググって対処していましたが、それは応急処置的なものに過ぎず、エラーの本質や自分の理解と向き合えていないこと、その情報が本当に正しいのか保証されていないこと、という危うさがあります。それを克服するためにも、本を読んでまとめてインプットしてしまいたいという思いがありました。
以下、読んだ本とその感想を簡単にまとめていきます。
Webを支える技術 -HTTP、URI、HTML、そしてREST
Webの仕組みを知れます。Railsを勉強し始めの時、GETメソッドとPOSTメソッドの違いを「データベースに変更を加えるのがPOST」とだけ覚えていました。この本を読めば、それらの違いを知り、その他のメソッドも知ることができます。また、ネットで調べ物をしているときにたまに出会う404や502といった数字が何を意味するのかを知ることができます。個人的には「リソース」という概念に触れたことが大きかったです。Webを理解しやすくなりました。
マスタリングTCP/IP 入門編 第5版
初めての個人開発をAWSでデプロイしようとしたとき、IPやHTTPが分からずにかなりつまずいたので読みました。通信技術は構造的なので、テキストのあっちこっちを行ったり来たりしながら読むことになり大変でしたが、基礎は身につくと思います。これを読めば、0.0.0.0/0と0.0.0.0/32の違いが分かるようになります。
GitHub実践入門 ~Pull Requestによる開発の変革
Gitによるコード管理はしていましたが、その仕組みは詳しく知らないまま使っていました。読んだ今では知らずに使うことと、仕組みを知って使うことの意識の差を実感しています。また、「GitHubなんて使って開発したら開発がぐちゃぐちゃになるだろ」と思っていた自分にとっては、実際の開発フローを知り、その有用性を恥ずかしい思いで知ることになりました。まだGitの詳しい仕組みを知らない方はぜひ読んでみてください。
ドラゴンクエストXを支える技術 ── 大規模オンラインRPGの舞台裏
ドラゴンクエストが好きなこと、チームでの開発がどんなものなのか全体感を見たかったことから読みました。ところどころ分からないところもありましたが、大規模で長期的な開発の全体感やゲーム開発に必要な仕組み、実装で苦労するポイントなどを知ることができます。これを読んだ後は、オンラインゲームにおけるどんな悪辣クレーマーでも運営に少しは優しくなれるんじゃないかと思います。
新しいLinuxの教科書
コマンドラインはprogateで一通りやったつもりでしたが、実際に使っていたのはlsとかcatコマンドくらいで、初めての個人開発をデプロイするときは他の方の記事を参考にしながら「sudo 〜〜〜〜」などのコマンドをコピペしていました。これを読めばそれらがどういう意味をもったコマンドだったのか知ることができますし、黒い画面をカタカタするので何よりエンジニアっぽくなれます。本の内容は、実際にコマンドを打ち込みながら進める形式なので理解しやすく身につきやすいと思います。
また、本書はシェルスクリプト(自分でコマンドが作れる!)についても書かれており、これを自分で書いてきちんと動作させることができれば、「コンピュータが俺を動かしてるんじゃない、俺がコンピュータを動かしてるんだ!」というルネサンスが起こります。
読み終わって変わったこと
読んでから1ヶ月くらい経ちました。まだ知らない分野の知識はあるものの、他の技術書を読んでいて分からない単語や知識が少なくなりました。これによって技術書を読み進める際の理解が楽になり、途中で詰まることも少なくなるので読むスピードも以前より速くなりました。
私のように文系出身でプログラミング始めたばかりの人はまとめて技術書を読んでしまうのもアリかもしれません。
今後読みたい本
上記の本を読む中でセキュリティへの関心が高まったのでそれ関連の本も読んでいきたいです。また、コンピューターを基礎付けるハードウェアの仕組みやコンピューターサイエンスの分野にも興味が湧きました。技術書は結構な値段がするので財布と相談しながら読んでいきます…
おわり
本はいろんな世界を見せて自分の興味を広げてくれます。オススメの本や面白かった本があれば教えてもらえると嬉しいです。