Slide 1

Slide 1 text

レンダリングを探訪する GMOペパボ 事業開発部 鹿児島エンジニアリングチーム yoshikouki

Slide 2

Slide 2 text

● 新規事業の開発業務にいくつかかかわる Alive Project / GMOレンシュ 等... ● 推しは Hono × Bun ● 前職は職員30名の介護保険施設で家族経営 ● 悩みは娘の寝相による睡眠妨害 吉本 康貴 よしこ GMOペパボ 株式会社 事業開発部 鹿児島エンジニアリングチーム

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

ブラウザ レンダリングエンジン JavaScript エンジン シェア Chrome Blink V8 65.72% Safari WebKit JavaScriptCore 18.22% Firefox Gecko SpiderMonkey 2.71% Edge, Opera 他 Blink V8 ~ 5.31% iOS 系ブラウザ WebKit JavaScriptCore 18.13% ? Mobile Browser Market Share Worldwide | Statcounter Global Stats iOS系ブラウザはiOS のシェアを表示

Slide 5

Slide 5 text

ブラウザ レンダリングエンジン JavaScript エンジン シェア Chrome Blink V8 65.72% Safari WebKit JavaScriptCore 18.22% Firefox Gecko SpiderMonkey 2.71% Edge, Opera 他 Blink V8 ~ 5.31% iOS 系ブラウザ WebKit JavaScriptCore 18.13% ? Mobile Browser Market Share Worldwide | Statcounter Global Stats iOS系ブラウザはiOS のシェアを表示

Slide 6

Slide 6 text

Paint Layout Style Parse ブ ラ ウ ザ レ ン ダ リ ン グ ?

Slide 7

Slide 7 text

Paint Layout Style ブ ラ ウ ザ レ ン ダ リ ン グ Parse RenderingNG | Chromium | Chrome for Developers

Slide 8

Slide 8 text

RenderingNG | Chromium | Chrome for Developers

Slide 9

Slide 9 text

レンダリングパイプライン RenderingNG architecture | Chromium | Chrome for Developers

Slide 10

Slide 10 text

レンダリングパイプライン RenderingNG architecture | Chromium | Chrome for Developers Stage ≒ レンダリングのタスク (またはそのコード)

Slide 11

Slide 11 text

レンダリングパイプライン RenderingNG architecture | Chromium | Chrome for Developers Stage ≒ レンダリングのタスク (またはそのコード) Artifacts ≒ 各ステージの入出力 (またはそのデータ構造)

Slide 12

Slide 12 text

レンダリングパイプライン RenderingNG architecture | Chromium | Chrome for Developers ステージは、どのスレッドや プロセスを実行するかを示すた めに、色で表記される。 場合によっては、ステージは状 況に応じて複数の場所で実行 されることがあり、そのため2つ の色を持つものもある。 Render process Main Thread Render process Compositors Thread Viz Process

Slide 13

Slide 13 text

RenderingNG | Chromium | Chrome for Developers Render process Main Thread Render process Compositors Thread Viz Process

Slide 14

Slide 14 text

RenderingNG | Chromium | Chrome for Developers Render process Main Thread Render process Compositors Thread Viz Process

Slide 15

Slide 15 text

RenderingNG | Chromium | Chrome for Developers Render process Main Thread Render process Compositors Thread Viz Process

Slide 16

Slide 16 text

RenderingNG architecture | Chromium | Chrome for Developers

Slide 17

Slide 17 text

Inside look at modern web browser (part 1) | Blog | Chrome for Developers n 1 1

Slide 18

Slide 18 text

Inside look at modern web browser (part 1) | Blog | Chrome for Developers n 1 1

Slide 19

Slide 19 text

Inside look at modern web browser (part 1) | Blog | Chrome for Developers n 1

Slide 20

Slide 20 text

n 1 1 RenderingNG | Chromium | Chrome for Developers

Slide 21

Slide 21 text

RenderingNG | Chromium | Chrome for Developers

Slide 22

Slide 22 text

n

Slide 23

Slide 23 text

MEMO ここで4分を越えていたら焦る

Slide 24

Slide 24 text

具体的なフロー

Slide 25

Slide 25 text

1. 開発者スクリプトが、 foo.com のレンダー処理で DOM を変更する。 2. Blink レンダラーがコンポジターに、レンダリングが必 要であることを伝える。 3. コンポジターが Vizに、レンダリングが必要であることを 伝えます。 4. Vizは、レンダリングの開始をコンポジターに通知しま す。 5. コンポジターは、開始信号を Blinkレンダラーに転送し ます。 6. メインスレッドのイベントループランナーがドキュメント のライフサイクルを実行します。 7. メインスレッドが結果をコンポジタースレッドに送る。 8. コンポジターイベントループランナーがコンポジティン グライフサイクルを実行する。 9. ラスタータスクはすべて Viz for rasterに送られます(こ れらのタスクは複数あることがよくあります)。 10. VizがGPU上でコンテンツをラスター処理します。 11. Vizがラスタータスクの完了を確認します。 注:Chromiumはラスタの完了を待たないことが多く、 その代わりに、ステップ 15が実行される前にラスタ タスクによって解決されなければならない sync tokenと呼ばれるものを使用します。 12. コンポジターフレームが Vizに送信されます。 13. Vizは、foo.comレンダー処理、 bar.com iframeレン ダー処理、およびブラウザ UI用のコンポジターフレー ムを集約します。 14. Vizが描画をスケジュールします。 15. Vizは、集約されたコンポジターフレームを画面に描画 します。 RenderingNG architecture を元に筆者が作図 DOM更新

Slide 26

Slide 26 text

1. 一連の入力イベント(マウス、タッチ またはキーボード) 2. 3. コンポジターはメインスレッドがそ のイベントを知る必要があるかどう かを判断します。 4. 5. メイン スレッドは、入力イベント リ スナー ※ を起動して、リスナーが イベントに対して preventDefault を 呼び出すかどうかを確認します。 ※ pointerdown、touchstar、 pointermove、touchmove、または wheel 6. 7. preventDefault が呼び出されてい ない場合、入力イベントはブラウザ プロセスに送り返されます。 8. ブラウザプロセスは、他の最近のイ ベントと組み合わせてスクロール ジェスチャに変換します。 9. 10. そこでスクロールが適用され、 baz.com レンダープロセスのコンポ ジタースレッドは、コンポジターイベ ントループでアニメーションをチック します。これにより、スクロールが 変更されます。 11. 12. 13. 14. 文字数の関係で改変しています スクロール

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

続きは Web で...

Slide 29

Slide 29 text

Thank you