超速! Webページ速度改善ガイド
著
先日の3連休中にようやくという感じで、共著者の一人である佐藤さん、もといあほむさんからいただいた、『超速! Webページ速度改善ガイド(通称「超速本」)』を読み終えました。この書籍、先月6日に発売されたのですけど、その半年ほど前に同じ技術評論社から発売された『Webフロントエンド ハイパフォーマンス チューニング』と物理的なサイズも価格帯も(言わずもがなカバーしている内容も)似ていて、どう差別化したのかしら? という辺りを意識しながら読み進めました(真っ当な読み方でなくてすみません)。感想として、どちらか一冊を誰か(誰)に推奨すべしと迫られたなら、自分はこの超速本を選ぶでしょう。
理由としては完全に主観ですけど、超速本の方がより開発者目線で書かれているような気がしていて、そうであるが故により実践的に映ったからです。DevToolsのスクリーンショットをふんだんに織り交ぜつつ、書籍のタイトルにある速度改善をどう実現すべきか親切丁寧に解説されていたのが好印象でした。そもそも全体の構成が『Webフロントエンド〜』よりシンプルでとっつきやすいと感じており、第2章から第7章にかけてネットワーク処理、レンダリング処理、スクリプト処理のそれぞれについて「基礎知識」「調査と改善」が順序よく並んでいるのは、とても分かりやすいなと。
また個人的に超速本では、言葉遣いについて多く学ばせていただけたと思っていて、それは随所に出てくるサブリソース
という表現もそうだし、他に列挙するとp.98にある強い依存関係
、p.129の封じ込め
、p.165にある初期化コストは支払われます
、p.186の言語特性は避けて通れません
、p.208にあるそのほかの改善を台無しにしてしまう
、p.216の拡大、縮小に強いベクタデータ
といった言い回しから、「なるほどそう表現すれば良かったのか」みたいな気づきを得ました。
へぇ!!と驚かされたのが2箇所、まずp.128のtransform: translateZ(0)指定に言及した下りで
このハックはtransformプロパティの本来的な使用方法ではなく、あいまいな理解で濫用されてしまっているという背景を踏まえ、以前有効だったハックの一部にはブラウザ側で無効化されているものもあります。
という解説。これは具体的にどのブラウザなりどのバージョンで、みたいな情報があるとさらに嬉しかったです。そしてp.163の注6、使いすぎないに
は「使いすぎないように」の誤記だと思いますけど、
最近では、バックグラウンド待機中にはsetTimeout()やsetInterval()メソッドの実行優先度を下げてデバイスのリソースを使いすぎないに配慮しているブラウザもあります。
との注釈。こちらもやはり、どのプラットフォームにおけるどのブラウザが該当するのかとか、今後そういった配慮が広がりを見せてデファクトスタンダードになり得るのかなど、掘り下げていただけるとありがたかったなと。ついでにせっかくなので(謎)他に見つけた誤記を覚え書きしておくと、p.215の透過ついても
は「透過についても」の誤記と思われ、またp.217で使いやすいですが。
とある箇所は、句点ではなく読点が正しいように思います。
苦言......というわけではありませんけど、超速本で気になったこととして、まず1.6のNode.jsに関する節は本当にそこに必要なのかどうか。全体からしますと、やや唐突な印象かつ違和感を覚えました(巻末の付録にしてしまっても良かったのでは)。そしてp.38の符号化とか符号語のあたりが正直よくわかりませんでした。そこまで踏み込むなら、もう少し解説を厚くしていただけると個人的に助かったかもと。またp.43でアイコンをWebフォントとして使う手法
に言及がありますが、Webのパフォーマンスとアクセシビリティの連続性に思いを馳せ
ていらっしゃるあほむさんなら、その手法のアクセシビリティ的デメリット、リスクにも触れていただきたかったなと。