パンうめぇ

園児ニアの日記帳

2021年読んだ(読んでいる)技術書紹介

本記事は琉大アドベントカレンダー 17日目の記事となります.

16日目のたゆさんのお酒美味しそうでしたね. 普段ハイボールしか飲まないので挑戦してみたい...

さて今回は,2021年読んだ(読んでいる)本について,技術書中心に紹介します.

Webを支える技術

Webアプリ全体としての基礎知識を得ることができる本です.

RESTful APIや,ステートレスといったよく聞く言葉を理解せずなんとなくWebアプリを作ってたので,きちんと理解したいと思い読み始めました.

Webの歴史からAPI設計のコツなど幅広いトピックを扱っており,浅く広くWebの全体像を見渡せると思います.

もしWeb系で働くのなら,目を通すことをお勧めします.

https://images-na.ssl-images-amazon.com/images/I/51OSBZvAxGL._SX351_BO1,204,203,200_.jpg

www.amazon.co.jp

オブジェクト指向でなぜつくるのか

「継承とかポリモーフィズムとかあるけど,結局なんでオブジェクト指向なん? 」と言う疑問に対し丁寧に解説してくれる本です.よくオブジェクト指向プログラミング(OOP)は現実のモノに例えられますが,作者はそれに否定的で開幕から面白いです.

大学の授業でOOPについては学びますが,当時ちゃんと説明できるか?と言われると全く自信がない状態でした.この本がわかりやすかった点は,OOP以前のプログラミング言語と比較しているところです.OOPが登場する前の構造化プログラミング利点と問題点を解説し,どのようにオブジェクト指向が生まれたのかについて述べています.この一連の流れで「なぜOOPなのか」がスッと入ってきました.またメモリの仕組み等,内部的な動きについても述べられており楽しめます.

そういえばつい前に継承が議論になってた気がしますが,個人的には可読性を下げるので微妙だと思います.

後半は関数型言語について解説されており,超分かりやすいです.読む前は「ウッ,関数型...」とアレルギー反応を引き起こしてましたが,初めて全体像を理解できました. PythonRubyでも関数型を意識するとコードが綺麗になるので,学ぶ利点は大きいのではないかと思います.ガッツリ時間とって勉強したいです.

https://images-na.ssl-images-amazon.com/images/I/51s3936d+kL._SX364_BO1,204,203,200_.jpg

オブジェクト指向でなぜつくるのか 第2版 | 平澤 章 |本 | 通販 | Amazon

JavaScriptPrimer

JavaScriptについて,全く知らない初心者向けに超丁寧に解説してくれます.書籍版もありますが,インターネッツで無料公開されています.

https://jsprimer.net

JavaScriptは進化が激しく,少し前のサイトだと全く役に立たないことがよくありますが,本サイトはECMAScript 2015以降をベースに定期更新されているので安心して学べると思います.

暗黙の型変換の項は,JSの恐ろしさを特に感じました.かなりあやふやな言語だと知り,型の重要性とTypeScriptが支持されている理由がなんとなくですが分かった気がします.

非同期処理はやはり難しいですが,最初Async Functionawaitを使わずPromiseで書くことから始めるので,中で何が起こっているのでイメージしやすかったです.

カオスでどこから手をつけていいのかわからないJSを学ぶ上で,最初にお勧めします.

https://images-na.ssl-images-amazon.com/images/I/51P+rWQKYdL._SX387_BO1,204,203,200_.jpg

www.amazon.co.jp

りあクト!TypeScript で始めるつらくない React 開発 第 3.1 版【Ⅰ. 言語・環境編】

React学びたいな〜と思ったときにおすすめされた本です.言語・環境編ではReactに深くは踏み込まず,React周辺の言語知識,例えば型や関数型言語,JSのエコシステムについての知見を得ることができます.

普段動的型付け言語で開発しているので,ジェネリクスや型ガードといった型を用いたテクニックについて学ぶことができたのは一番の収穫でした.これらの知識はReact, TypeScriptだけでなく,他言語にも応用が効くと考えています.

またJSの歴史,エコシステムも興味深い内容でした.JSは進化が早いので古い情報が溢れており,歴史的背景を学ぶことでググり方を知ることに繋がると思います.

上司と新人エンジニアの会話型形式で進んでいくのですが,主人公である新人エンジニアの質問が恐ろしく鋭いです.しばらく触っていると疑問に感じるだろう事を質問してくれるので,理解が深まります.

まだⅡ以降は読めていないので,React少し触ったのち,本格的な実践内容に踏み込もうと考えています.

https://booth.pximg.net/c/620x620/a6bb6149-3c80-4a32-af82-d43ef5505047/i/2368045/2ab8cb19-fd7a-4c3c-8bc8-f8b201393bfc_base_resized.jpg

booth.pm

Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂3版

AWSを用いてインフラについて実践的に学ぶことができます. 始めはAWS入門書として読み始めましたが,AWSの勉強というよりは,あくまでインフラ習得の実行環境として利用する感じでした.どちらかというとネットワークについて手を動かしながら学べる価値が大きいです.

インフラ周りは基本情報や授業で知識だけ入れてましたが,いまいち理解できてるか怪しかったので,実践的かつ体型的に学べたことに満足しています.ネットワーク構築を低コストで体験できるのはクラウドの良さですね.従来は物理サーバー等を準備するのにコストがかかると思うので,コスパ🙆‍♂️です.

サクサク進んだので,ネットワークの全体像やAWSのイメージを掴みたい人におすすめです.本のまま進めても上手くいかないこともありますが,ちゃんと調べれば解決しますし,そこで理解が深まると思います.

注意点として,演習が終わった後はちゃんとインスタンスやNATの設定周りを削除しないと学生には痛い額を請求されます.筆者は翌月数千円取られました.

https://images-na.ssl-images-amazon.com/images/I/71fV1UCcOwL.jpg

www.amazon.co.jp

ピープルウェア(Doing)

まだ半分(第II部)までしか読んでいませんが,紹介します.技術書というより,マネジメントの名著です.エンジニアリングマネージャー向けですが,エンジニアだけでなくIT会社で働く全員が読んだ方がいいんじゃないかと思います.

まだ学生ですが,エンジニアとして感じていることが明文化されており,かなり共感できます. 初版が30年前,というのが信じられないほど今に通用する内容だと思います. ソフトウェア開発も結局は人の問題に行き着くことを強く感じさせられます.

読んだ中で印象に残ったこととして

  • ソフトウェア開発の失敗の多くは,技術的というより,社会学的なもの.

  • プロジェクトメンバーを結束させる能力ある人は,普通に仕事をする人の二人分の価値がある。

  • 手を動かしてない時間,仕事以外の時間の重要性.超人的な力が必要な仕事ほど,チームメンバーの交流が必要不可欠となる.メンバー全員で夕飯を共にすることは絶対に必要.

  • 早くヤレとせかされれば、雑な仕事をするだけで、質の高い仕事はしない。

  • 生活を犠牲に残業をさせるとワーカホリックに落ちいる.仕事より大切なもの(家族や若さ)を犠牲にしていると気づいた時,その人はいなくなる.そこまでして優秀な人を辞めさせて,本当の意味の生産性とはなにか.

  • オフィス投資の重要性.オフィス環境の良し悪しがプログラマーの生産性に大きく影響する.エンジニアが集中しやすい環境の作り方.開放型オフィスの問題点など.

などが挙げられます.オフィス環境については,自宅最強だと思いました.エンジニアが出社したがらない理由がわかる.

→ 追記(2021/12/19): 第Ⅳ部では,チームメンバーを物理的に引き離すことの弊害が述べられています.雑談が減ることで起こる結束力の低下は,大きな弊害だと思います.そこら辺リモートでどう担保するかは難しい問題ですね.

現時点で感動しているので,社会人が読んだらヤバそう.

https://images-na.ssl-images-amazon.com/images/I/51CFepapBZL._SX337_BO1,204,203,200_.jpg

www.amazon.co.jp

理科系の作文技術

技術書ではないですが,論文を書くことになる(書いている)皆さんにお勧めの本です.理科系のレポート,論文の書き方を記した本となります.

理科系の文章は文学とは異なり,わかりやすさが最優先されます.すっきりと筋の通った文章を書くための文章構造や,記述順番について述べられています.

個人的には,

  • 日本語は曖昧なので,できるだけ言い切ることで説得力を持たせる.
  • 修飾語を生やしすぎるとわかりずらくなるので,一文は簡潔に書くことを意識する.
  • 受動態はわかりずらいので,できるだけ避ける.

がすぐ使えて,実用性が高いと思いました.

またスキルの話ではないですが,以下の言葉は心強く感じました.

自分自身が直接にことに当たりものに当たって得た情報――なまの情報――,またそれについての自分自身の考えに重点をおくべきである.これらは,たとえ不備であり未熟・浅薄であったとしても,オリジナリティーという無比の強味をもっている

主張そのものに価値があるので,人前に出してみるスタンスを大事にしよう...

https://images-na.ssl-images-amazon.com/images/I/31818M220JL._SX298_BO1,204,203,200_.jpg

www.amazon.co.jp

まとめ

JSはカオスで面白いな〜と感じました.特にエコシステム.タイムライン見てるとJSの技術でよく盛り上がってるので,話に追いつけるようなりたい所存です. また,普段動的型付け言語を書いてて考えなかったことを多く学べました.やはりは面白いと感じるので,TypeScriptと相性のいいReactを重点的に学び,開発を通して血肉にしたいです.

今年は一ヶ月に一冊読むという目標を掲げていました(技術以外の知識本含め).月によって達成できないこともありましたが,計12冊読了しており,年単位ではギリギリ達成できてよかったです. 登校時に20分読書が結構よかった.

全体として初学者向けの書を漁っていましたが,しばらく続けようと思います. 個人的に興味がある関数型言語や,仕事でも使いそうなGolang,JS,リファクタリングやテストについて読む予定です. おすすめあれば教えてください!

明日はIsseiさんです.お楽しみに!

scrapbox.io