最近読んだ本の感想2
前の感想記事から1ヶ月経って、読んだ本が貯まってきたので復習を兼ねてまたまとめておく。
読んだ本一覧
技術系
- アカマイ 知られざるインターネットの巨人
- 詳解HTTP/2
- WEB+DB PRESS Vol.119
- 特集1 フロントエンド脱レガシー
- 特集2 インフラ障害対応演習
- Software Design 2018年8月号
- 第1特集 スマホゲームはなぜ動く?
- 個人開発をはじめよう!クリエイター25人の実践エピソード
- Modern Perl 4th edition
- におうコードの問題集 ソフトウェア設計に立ち向かう編
その他
アカマイ 知られざるインターネットの巨人
インターネット通信量の約3割を取り仕切っていると言われるアカマイ社のCDNを実現する仕組みとビジネス構造を紹介している。
以下の記事を書く際にabemaがアカマイのCNDサーバからストリーミング配信をしていたため、気になって購入。
HLSのHTTPヘッダを見る - dorapon2000’s diary
アカマイとそのビジネス構造について知れたのは興味深かったが、それよりもインターネットの構造について知れたのがよかった。管理するネットワーク規模が大きいとなぜビジネス的に有利なのか、雰囲気はわかるが具体的な部分を知りたかった。この本ではインターネット中のデータの流れからお金の流れを説明してくれている。CDNもどのように実現しているのかわかっていなかったが、DNSのCNAMEを利用していることもわかった。また、通信事業会社ではないのに同等のネットワークを持っているGoogle・Amazonといったビッグテックの立ち位置もわかった。2015年の話なので現在だと事情が変わっているかも知れないが、とてもおもしろかった。
詳解HTTP/2
2018年時点での、HTTP/1.1とTCPの問題点とそこから生まれたHTTP/2の仕様を網羅的に説明している。また、HTTP/3についても触れている。
- 作者:Barry Pollard
- 発売日: 2020/06/15
- メディア: Kindle版
読んだ第一の感想はHTTP/2がすごいTCPと似てるということ。L4でしていた制御をL7に持ってきた感じがあった。
- TCPではコネクション単位で管理するが、HTTP/2ではストリーム単位で管理する
- TCPの受信ウィンドウ(rwnd)と似た仕組みが、HTTP/2でWINDOW_UPDATEフレームとして存在する
- TCPではRSTフラグでコネクションを強制終了できるが、HTTP/2でRST_STREAMフレームとして存在する
- TCPではDSCP値で優先制御できる仕組みがあるが、HTTP/2でもフロー制御として存在する
HTTP/2の特徴の1つのサーバープッシュはメリットがない割にリスクが高いと言及されていたが、実際にChromeではサポート廃止が検討されてる*1。先見の明あり。
HTTP/2を使うからと言って必ずしもHTTP/1.1より性能が良くなるわけでもないこともわかった。特にパケットロスについて1.1より性能が落ちがちというのは覚えておかないといけない。
WEB+DB PRESS Vol.119
- 特集1 フロントエンド脱レガシー
- 特集2 インフラ障害対応演習
- 発売日: 2020/10/24
- メディア: Kindle版
インフラ障害対応演習の特集で、障害対応は属人化しやすいから予めチームで演習をするとよいというアドバイスが記憶に残った。障害対応はだいたい緊急なので、一番慣れている人ばかりが毎回担当をして、それ以外の人にノウハウがたまらない。なるほどと思った。
サイボウズさんの脱レガシーの特集も実践的なアドバイスが盛りだくさんだった。一番の学びはテスティングトロフィーでフロントエンドのユニットテストを書きすぎてはいけないということ。記事には細かく書かれていないが、どうやらユーザーが実際にする操作のテスト(結合テスト)を増やすほう効率がよいということらしい*2。
Software Design 2018年8月号
スマホゲームがどのように実装・運用されているかを実際のゲームを例に紹介されていた。
本棚に眠っていた一冊。こちらは実際にスマホゲームを作る上で現実の開発者がなにを考えているのか知れたのが学びになった。以下は特に印象に残った部分。
- 通信を減らすために一部のマスタデータをクライアントに保存してしまう
- KPI用のログをDBではなくAmazon S3に保存し、Amazon Athenaで集計する
- JSONの代わりにMessagePackを用いる
個人開発をはじめよう!クリエイター25人の実践エピソード
個人開発の上で学んだ技術やマネタイズの方法、マーケティングの方法、モチベーションの保ち方などが25人もの人によって紹介されている。
個人開発をはじめよう!クリエイター25人の実践エピソード (技術の泉シリーズ(NextPublishing))
- 発売日: 2020/04/03
- メディア: Kindle版
どの話もためになった。未経験者が3ヶ月でそれなりのサービスを作ったり、1ヶ月でマネタイズまでできるサービスを作ってしまったりなど刺激をもらった。
個人的に気に入っているのはドヤ駆動開発とビルド&ゾンビ開発。ドヤ駆動開発は身近な人がほしいと言ったサービスを1日でつくりドヤることでモチベーションを保つ方法。ビルド&ゾンビは、必要最低限のデザインと機能、リリース後に改変作業がでないような設計でサービスをリリースして、運用後のモチベーションの維持問題を回避するというもの。自分もモチベーションが続かず断念した開発があるので、こういう話は重宝する。
Modern Perl 4th edition
Perl 5.22時点でのなういPerlの書き方とその注意点を紹介してくれている。Perlの思想から基本文法、テスト、Mooseと一通り抑えている。英語。
おすすめされた本。以前Perl Best Practiceを読んだが、内容が少し古いのと、一度Perlを体系的に抑えたかったというのもあって新しくこちらも読んだ。そして、読んでよかった。細かい仕様を理解していないとバグを作りかねない。特にautovivificationは大変ややこしい。これについては自分でも挙動を確認して記事にした。
Perlのautovivificationをいろいろ実験 - dorapon2000’s diary
eachなんかも便利に思えたがそんなこともなかった*3。バグを作らないこと以外に、Perlは様々なコードの書き方があるため、他の人のコードを読むためにも網羅的に理解しておくことは大切。
におうコードの問題集 ソフトウェア設計に立ち向かう編
開発負債になりそうな設計の見つけ方をSOLID原則からとてもわかりやすく紐解いてくれる。
以前、ドメイン駆動設計入門を読んだが、別の視点からも設計を考えたいと思い購入(ドメイン駆動設計もSOLIDなので別の視点と言えないかも知れないが)。悪い/良いでクラス図と一緒に説明してもらえるため、大変わかりやすかった。タイトルにあるように、におうポイントも教えてくれるため、もし自分のコードがにおえばSOLIDに反しているということになる。SOLIDの原則は覚えては忘れてで、今回もあぁはいはいあれねで説明はできないので、こうやって集中的に学べてよかった。
本はどう読むか
文学の教授で読書家の方の本に対する姿勢のエッセイ。なんと1972年の本なのに現在でも評価が高い。
息抜き枠兼、50年も前のエッセイが今でも評価が高いことに興味が出て購入。エピソードは古いが内容は今でも充分通用すると思った。もちろん、本との出会いが一期一会であった当時とインターネットが生活インフラになっている現代は状況が違う。だが、読書よりメディア(当時はテレビやラジオ)の方が知識の獲得が受動的になり、自分で考える機会を失うというのは今でも言われていること。むしろ、それが50年前から言われてたことに驚く。個人的に響いたのは、本の感想を書くことは、労力を使うが内容の取捨選択と考察を伴うため内容の理解につながるということ。実際に、著者は学生のレポート課題を感想文にしていた。こうして感想記事を書いているのもこの本に影響を受けてのことだった。
お金2.0 新しい経済のルールと生き方
価値主義や有機的システムなどを使い、著者が資本主義を代替する新しい経済の考え方を提案する。
プライムリーディングで無料になる前から気になっていた本。これからは資本主義から情報や影響力、共感などを軸にした価値主義へ移行していくと訴えている。価値はお金に転換可能なため、価値主義は資本主義を包含していると言われて、一理あると思った。例えば、フォロワーが多い人が広告をつぶやけば、影響力をいつでもお金に変えることができるし、逆にお金のやり取りなしに社会を動かすこともできる。価値主義ではお金も影響力も1つの媒体になっている。個人的に、この本は「ソーシャルメディアの生態系」「予想通りに不合理」「消費者は4回評価する。だからファンが大切。だから刹那的なインフルエンサー起用は意味が薄いというお話。」らへんの話をいい感じにまとめているのではないかと思った。
*1:https://asnokaze.hatenablog.com/entry/2020/11/13/001110
*2:https://qiita.com/taneba/items/48db2ad9cf10ad644908
*3:https://developer.hatenastaff.com/entry/2016/04/01/104031#each-%E3%81%AF%E4%B8%AD%E6%96%AD%E3%81%97%E3%81%9F%E6%99%82%E4%B8%AD%E6%96%AD%E3%81%97%E3%81%9F%E6%99%82%E7%82%B9%E3%81%AE%E7%8A%B6%E6%85%8B%E3%81%8C%E6%AE%8B%E3%82%8A%E7%B6%9A%E3%81%91%E3%82%8B