ハイパフォーマンス ブラウザネットワーキング、読むべき本だった

Twitterで「なんかやばそうな本が出るぞ!!!」みたいな事を言っていたら、それが偶然拾われて、献本して頂く流れになりました。オライリーさん、ありがとうございます。

とりあえずざっと全体を流し読みした(と言っても3時間弱は読んだ)ので、書評っぽいことを書いておく。

読むべき人間

以下に該当する人間に対しては必読に値する本だと思う。

  • HTTPを扱うアプリケーション*1のアーキテクチャを設計する人間
  • Webサーバ等のHTTPに関連するインフラを担当する人間
  • HTTP 2.0、WebSocket、Server-Sent Events、WebRTCのプロトコルについて日本語の文書が読みたい人間

普通に技術的な読み物としても面白い内容なので、Webの世界に近いエンジニアからネットワークを扱う組み込みエンジニアまで、軽く読んでおいて損はないと思う。ただし、読むにあたり最低限のネットワークの知識(OSI参照モデルとかそのあたり)は要求されるので、そのあたりの知識がない人間には読むのはつらいかなぁという感じがする。

個人的には、読書会をやると楽しそうな本だと思った。

内容について

とりあえず目次を。詳細な目次については オライリーのページを参照して欲しいのだが、この内容で380ページである。

I部 ネットワークの基礎
 1章 レイテンシ・帯域幅入門
 2章 TCPの構成要素
 3章 UDPの構成要素
 4章 TLS

II部 ワイヤレスネットワークのパフォーマンス
 5章 ワイヤレスネットワーク入門
 6章 WiFi
 7章 モバイルネットワーク
 8章 モバイルネットワークの最適化

III部 HTTP
 9章 HTTPの歴史
 10章 Webパフォーマンス入門
 11章 HTTP 1.x
 12章 HTTP 2.0
 13章 アプリケーション配信最適化

IV部 ブラウザAPIとプロトコル
 14章 ブラウザネットワーク入門
 15章 XMLHttpRequest
 16章 Server-Sent Events
 17章 WebSocket
 18章 WebRTC

読む前は「えっ、こんなに広範なトピックを扱って、なんでこんな薄いの…?」と多少の心配はあった。しかし、実際に読んでみると「ネットワークのプロトコル及びパフォーマンスのみに話題を絞る」「チューニング方法については一般論のみ(具体的なチューニングツールの紹介はない)」という内容になっているため、非常にわかりやすく、かつシンプルにまとまったのだなぁと感じた。

全体の流れ

まず、冒頭で「スピードこそユーザエクスペリエンス!!」「Webのネットワークにおけるスピードとはレイテンシの改善である!!!(現在の数Mbps程度の回線速度が一般化している状況下において)」という旨の内容が書かれており、クーガーさんの事が思い出され本書の取り扱う問題点の明確化を行っている。その上で以下のような順序で解説が行われている。

  1. 物理層からトランスポート層(TCP, UDP)+TLSまでのプロトコル及び「何で遅くなるの」の解説
  2. ワイヤレス/モバイルネットワーク(WiFi, 3G, 4G等)の解説から「通信遅いし通信するとバッテリーも浪費するがどうするか?」まで
  3. HTTP 1.xのプロトコル解説及びチューニングポイント
  4. HTTP 2.0のプロトコル解説及びHTTP1.x時代とのチューニングポイントの差異
  5. XMLHttpRequest、Server-Sent Service、WebSocket、WebRTCのプロトコル解説および使い分け
内容についての雑感

低レイヤーの話については「なんとなく内容は認識しているが、いきなり説明しろと言われても説明できない」ものが簡潔にまとめられており、他人に説明するときに便利だなーと思った。

また、Server-Sent ServiceプロトコルとWebRTCプロトコルの解説を初めて見たので、勉強になった。そもそもServer-Sent Serviceについては、本書で初めて知ったので、それだけでも結構な収穫だったと思う。

まとめ

良書っぽいので買いましょう。

*1:Webブラウザ、デスクトップ、モバイル等、全て該当