Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
極小Reactで描画を理解しながら追う
Search
iWonder118
September 11, 2026
71
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
極小Reactで描画を理解しながら追う
iWonder118
September 11, 2026
More Decks by iWonder118
See All by iWonder118
マフィアを目指そう※超健全
iwonder118
0
190
Tamagawa.dev #3 OP&ED
iwonder118
0
230
経験談から伝える! AIによって既に変わってしまった転職事情
iwonder118
7
3.7k
多摩川.dev #2 OP&ED
iwonder118
0
62
「積極的_無職のすすめ」ー U39
iwonder118
0
280
多摩川.dev OP&ED
iwonder118
0
360
今更RSCについてのお話 Full RSC vs RSC as Data Next.jsとTanStack Start比較
iwonder118
0
43
React Tokyo フェス 2026 の裏側
iwonder118
1
640
頑張ります!2026
iwonder118
0
92
Featured
See All Featured
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
520
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
3
4.3k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
490
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Typedesign – Prime Four
hannesfritz
42
3.2k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
500
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
670
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
280
エンジニアに許された特別な時間の終わり
watany
109
250k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
380
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Transcript
極小Reactで描画を理解しながら追う in React Tokyo #20 2026/09/11
自己紹介 河村 直樹(@iwonder118) 化粧品事業会社でWebエンジニアをしてます 東急多摩川駅でTamagawa.devというのをやってます React Tokyo運営、その他諸々カンファレンススタッフ
アジェンダ - これをやろうと思った背景 - React の描画をおさらい - 各セクションのお話 - デバックで追ってみる※出来たら
これをやろうと思った背景 フロントエンド &PHPカンファレンス北海道に行った
これをやろうと思った背景 JSXを作るセッションとソースコードリーディングのハンズオンに参加
これをやろうと思った背景 最近Vue.jsをやることになり Chibi Vueで入門
これをやろうと思った背景 Reactも意外と小さくできるのでは?
これをやろうと思った背景 実際にあった (Build your own React ) https://pomb.us/build-your-own-react/
これをやろうと思った背景 とはいえ量があったのでもっと小さく
これをやろうと思った背景 作るものの仕様 - TypeScriptで1ファイルかつ、 100行ほど - JSXから最終的に DOM操作で画面が更新されるまで (CSR) -
HooksはuseStateのみ - Fiberを簡略化 - 双方向リンクノードでなく、配列にて保持かつ、一気に描画処理 - className・onClickのみ対応 - 常にルートから全コンポーネントを再描画する
これをやろうと思った背景 仕様を元に AIといっしょに作業
これをやろうと思った背景 Flowじゃないの?
これをやろうと思った背景 ごめんなさい
これをやろうと思った背景 暖かく見守ってください
完成図
完成図
完成図
完成図
React の描画をおさらい JSXから描画されるまで - Trigger - 初回レンダリングまたは、setter(useState)からイベント発火 - Render -
コンポーネントをjsxからReactElementへの変換 - ReactElementからReactFiberへの変換 - Commit - ReactFiberから実際のDOM操作
各セクションのお話 Triggerフェーズ - 初回描画 - createRootのrender()をから描画処理が始まる - rootノードをrenderをする関数(createFiberFromElement)に渡す - 再描画
- Hooksのsetterで変化があった場合に描画処理が始まる - 今回はuseStateだけなのでset〇〇 - React本体であればcreateWorkInProgress関数
各セクションのお話 Renderフェーズ - 初回描画 - 受け取ったjsxをランタイムで評価してReactElementに変換 - ReactElementをReactFiberに変換する - 上記的に再帰的に繰り返す
- 再描画 - 受け取ったjsxをランタイムで評価してReactElementに変換 - ReactElementをReactFiberに変換する - 変換後のReactFiberを元に差分比較をする
各セクションのお話 JSX
各セクションのお話 JSX - 名前(タグ名、コンポーネント名)、属性、子要素をJavaScriptが評価でき る形で返す - 今回は属性がないのとReactElementオブジェクトで返す 以上!!
各セクションのお話 JSX - tsconfig.jsonで指定 - jsxの設定としてをreact-jsx - jsxIportSourceをnano-reactに設定 - これでvite側で実行時に評価
各セクションのお話 Commitフェーズ - 初回描画 - 作成したReactFiberを元にDOM操作をして描画をする - Commit後に差分比較用にReactFiberを保存する - 再描画
- 差分比較で出た差分をDOM操作をして再描画する - 差分のないDOMはそのまま利用する - Commit後に差分比較用にReactFiberを保存する
宣伝
宣伝
宣伝 チケット &ストア商品発売中 ‼
宣伝 スポンサーが足りないです チケットは9月中旬から!