- Amazon.co.jp ・本 (352ページ)
- / ISBN・EAN: 9784774189673
作品紹介・あらすじ
ブラウザのレンダリングのしくみから計測と最適なチューニングまで、速さのための基礎知識と実践技術をあますことなく解説。
感想・レビュー・書評
-
本書は、SPA(Single Page Application)などの解説を含めつつ、ウエブパフォーマンスの向上に関しての解説書です。(2018/04)
・ブラウザのレンダリングエンジンの仕組み
・レンダリングの各フェーズごとの考え方
フォーマンスチューニング時に必要な考え方
パフォーマンス測定法
・チューニングテクニック
■レンダリングの仕組み
①リソースの読み込み Loading
②Javascriptの実行 Scripting
③レイアウト計算 Rendering
④レンダリング結果の描画 Painting
■各フェーズごとに考え方
①リソースの読み込み Loading
・読み込むリソースの大きさと数を減らす
・レンダリングをブロックする読み込みを減らす
・ブラウザとサーバ間の遅延を減らす
・ブラウザのキャッシュを活用する
②Javascriptの実行 Scripting
・Javascriptのボトルネックを特定する
・ガベージコレクションを避ける
・メモリーリークを防ぐ
・未使用のオブジェクトを解放する(WeakMap,WeakSet)
・複数のUIスレッドの衝突を回避する(Web Workers)
・JavaScriptの高速化(asm.js,SIMD.jp)
・高頻度で発火するイベントの抑制
・モバイル端末での、Click イベントの遅延の解消
など
③レイアウト計算 Rendering
・高速CSSセレクタの記述
・CSS設計規約BEMの活用
・利用していないCSSルールセットを減らす
・レイアウト処理の発生を防ぐ
④レンダリング結果の描画 Painting
・レンダリングの3つの処理 ①ペイント、②ライタライズ、③レイヤーの合成
・3つのイベントが不用意に発生しないように考慮する
・描画のオーバーヘッドを解析する
・GPUによって合成されるレイヤー
■チューニングテクニック
・高度なチューニング
バーチャルレンダリング
なめらかなアニメーション
Will-changeCSS プロパティによる最適化
CSS Containment で再レンダリングを最適化する
・認知的チューニング
ふるまいや、UIを変更することでユーザの体感速度を速くするというチューニング
インジゲーター
インタフェースプレビュー
処理がおわったようにふるまう
無限スクロール
投機的なリソースの先読み
Contents
謝辞
1. ウェブパフォーマンスとは何か
1-1. パフォーマンスを定義する
1-2. パフォーマンスの重要性
1-3. 新たに重要になった描画パフォーマンス
1-4. ハイブリッドアプリの存在
1-5. パフォーマンスチューニングの第一歩
1-6. 本書の概要
2. ブラウザのレンダリングの仕組み
2-1. なぜ仕組みから学ぶのか
2-2. 対象とするレンダリングエンジン
2-3. ブラウザのレンダリングの流れ
2-4. リソース読み込み - Loading
2-5. JavaScript実行 - Scripting
2-6. レイアウトツリー構築 - Rendering
2-7. レンダリング結果の描画 - Painting
2-8. 再レンダリング
3. チューニングの基礎
3-1. 闇雲なチューニングの害
3-2. 推測するな,計測せよ
3-3. 目指すべき指標を設定する
3-4. 計測する手段
3-5. Chrome DevToolsなど開発者向けツールによる計測
3-6. JavaScriptによる計測
3-7. パフォーマンス診断ツールを用いる
3-8. パフォーマンスの継続的監視
4. リソース読み込みのチューニング
4-1. リソース読み込みの流れ
4-2. HTML/CSS/JavaScriptを最小化する
4-3. 適切な画像形式を選択する
4-4. 画像ファイルを最適化する
4-5. CSSのimportを避ける
4-6. JavaScriptの同期的な読み込みを避ける
4-7. JavaScriptを非同期で読み込む
4-8. デバイスピクセル比ごとに読み込む画像を切り替える
4-9. CSSのメディアクエリを適切に指定する
4-10. CSSスプライトを使って複数の画像をまとめる
4-11. リソースを事前読み込みしておく
4-12. Gzip圧縮を有効にする
4-13. CDNを用いてリソースを配信する
4-14. ドメインシャーディング
4-15. リダイレクトしない
4-16. ブラウザのキャッシュを活用する
4-17. Service Workerの利用
4-18. HTTP/2の利用
5. JavaScript実行のチューニング
5-1. JavaScriptの実行モデル
5-2. JavaScriptのボトルネックを特定する
5-3. GCを避ける
5-4. メモリリークを防ぐ
5-5. WeakMapとWeakSet
5-6. Web Workersの利用
5-7. asm.jsによるJavaScript高速化
5-8. SIMD.jsの利用
5-9. 高頻度で発火するイベントの抑制
5-10. モバイル端末でのclickイベントの遅延をなくす
5-11. Passive Event Listenerでスクロールのパフォーマンスを改善する
5-12. setImmediate()の非同期実行
5-13. アイドル時処理を使う
5-14. ページ表示状態を確認する
5-15. 無駄なForced Synchronous Layoutを減らす
5-16. DocumentFragmentの追加
5-17. Intersection Observerで効率的に交差を検知する
5-18. canvas要素の2D Contextアニメーション
5-19. requestAnimationFrame()を活用する
5-20. JavaScriptからCSS Transitionを用いる
5-21. WebGL
6. レイアウトツリー構築のチューニング
6-1. レイアウトツリー構築の流れ
6-2. レイアウトツリー構築におけるパフォーマンスの計測
6-3. 高速なCSSセレクタの記述
6-4. BEMを用いる
6-5. CSSセレクタのマッチング処理を避ける
6-6. レイアウトを高速化する
6-7. レイアウトを避ける
6-8. DOMツリーから切り離して処理する
6-9. レイアウトを減らす非表示
6-10. img要素のサイズを固定する
7. レンダリング結果の描画のチューニング
7-1. レンダリング結果の描画の流れ
7-2. 再描画
7-3. CSSプロパティの変更が何を引き起こすのか?
7-4. レイヤーの生成条件
7-5. 描画のオーバーヘッドを解析する
7-6. GPUによって合成されるレイヤー
7-7. translateZハック
8. 高度なチューニング
8-1. 大量のDOM要素をあつかうバーチャルレンダリング
8-2. なめらかなアニメーション
8-3. will-changeCSSプロパティによる最適化
8-4. CSS Containmentで再レンダリングを最適化する
9. 認知的チューニング
9-1. インジケータを用いる
9-2. インターフェイスプレビューを用いる
9-3. 処理が終わったように振る舞う
9-4. 無限スクロールを用いる
9-5. 投機的なリソースの先読み
Appendix. SVGのパフォーマンス特性
A-1. アニメーションの方法について
A-2. JavaScriptでアニメーションを行う
ISBN:9784774189673
出版社:技術評論社
判型:A5
ページ数:352ページ
定価:2680円(本体)
発行年月日:2017年06月
発売日:2017年06月08日初版第1刷
発売日:2018年04月20日初版第2刷詳細をみるコメント0件をすべて表示 -
性能チューニングのためのノウハウもさることながら、ブラウザの挙動の説明が非常にわかりやすかった。また、性能計測のための機能やライブラリの使い方が載っているのも良かった。
-
ブラウザのレンダリングの仕組みの解説が非常に勉強になった。どのフェーズで何がボトルネックとなりそうか?という意識も持ちつつ、なるべく最初からパフォーマンス劣化を生じさせない実装を心がけていきたい。2017年発刊だか今でも参考にできる部分は多いと思う。
-
フロントエンドのパフォーマンスは何なのか、そしてパフォーマンスを上げるための
手法がまとめられています。2017年出版なので、手法の部分恐らく古くなっているものも多いですが、
ブラウザレンダリングの仕組みなどが細かく書かれていて発見も多く勉強になりました。 -
2017/07/13読了
-
ただのテクニックだけでなく、ブラウザやレンダリングの仕組みについても書かれていて、なぜそうなるか、なぜそうするとパフォーマンスが上がるのがよくわかった
-
ブラウザからhttpリクエストを出すから、ブラウザがサーバーからリスポンスを描画するまでの流れが理解できる。
キーワード
DOM,レンダリング -
web技術を少し知っているが、どのようにコードを書けばフロント技術(javascript / cssなど)が最適化されるのか、詳しく知らない人にはぜひおすすめの一冊。
フロントエンドをやっている人は読んで損はないです! -
↓利用状況はこちらから↓
https://mlib3.nit.ac.jp/webopac/BB00542367 -
webフロントエンドのパフォーマンスについてとても丁寧に書かれていて、必読の本だと思いました。この本に書かれた知識はHTML CSSコーダーをメインにやってる人には難しいかもしれませんが、全てを把握しておく必要はありませんし、知っておいて損はないと思います。