Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHPでWebブラウザのレンダリングエンジンを実装する

 PHPでWebブラウザのレンダリングエンジンを実装する

昨今のWebアプリ開発において、Webブラウザは切っても切れない存在です。このWebブラウザには、HTMLとCSSからテキストや画像を描画する「レンダリングエンジン」が含まれています。

これがどのような仕組みで動いているのか、その裏側についてはご存知でしょうか?

このトークでは、超ミニマムな簡易レンダリングエンジンをPHPで実装することで、レンダリングエンジンの大まかな仕組みの理解を目指します。また今回のトークで用いた、サンプルコードを他言語で再実装する勉強法も合わせてご紹介します。

このトークを聞き、レンダリングエンジンの裏側を垣間見ることで、Webアプリ開発におけるブラウザからの新たな視点を獲得できるでしょう。

More Decks by ディップ株式会社

Other Decks in Technology

Transcript

  1. Before html状態 41 html要素をDocumentノードの下に作成 これも下記英文のように仕様が決まっている > Create an element for

    the token (中略), > with the Document as the intended parent. https://html.spec.whatwg.org/multipage/parsing.html#the-before-html-insertion -mode
  2. 構築された Layout Treeの例 それぞれのNodeが - 位置情報 (XY座標) - スタイル -

    サイズ など画面表示に必要な情報を持つ。 (display: noneなど)非表示の要素は、 Treeから除外 57
  3. ビジョン “Labor force solution company” ⼈材サービスとDXサービスの提供を通して、労働市場における諸課題を解決し、 誰もが働く喜びと幸せを感じられる社会の実現を⽬指します。 × DX事業 Digital

    labor force solution バイトコミュニケーションアプリ『バイトルトーク』や、 機能を絞ったシンプルなSaaS型の『コボット』を通じて、 職場環境やコミュニケーション課題を解決 しています。 ⼈材サービス事業 Human work force solution ユーザーファーストな独自機能を搭載した、 求人情報・人材紹介サービスの提供を通じて、 ユーザーの就業課題 を解決しています。 ディップ株式会社とは 64
  4. Appendix - https://gihyo.jp/book/2024/978-4-297-14546-0 - https://browser.engineering/index.html - https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.html - https://developer.chrome.com/docs/chromium/renderingng-architecture ?hl=ja

    - https://www.chromium.org/developers/design-documents/ - https://developer.chrome.com/blog/inside-browser-part3?hl=ja - https://html.spec.whatwg.org/multipage/ - https://dom.spec.whatwg.org/ - https://developer.mozilla.org/ja/docs/Web 67