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
110
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
なぜuseEffectは悪者扱いされるのか 〜 useEffectを作ってみて〜
iwonder118
0
60
マフィアを目指そう※超健全
iwonder118
0
270
Tamagawa.dev #3 OP&ED
iwonder118
0
290
経験談から伝える! AIによって既に変わってしまった転職事情
iwonder118
7
3.9k
多摩川.dev #2 OP&ED
iwonder118
0
71
「積極的_無職のすすめ」ー U39
iwonder118
0
320
多摩川.dev OP&ED
iwonder118
0
400
今更RSCについてのお話 Full RSC vs RSC as Data Next.jsとTanStack Start比較
iwonder118
0
46
React Tokyo フェス 2026 の裏側
iwonder118
1
680
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
650
Color Theory Basics | Prateek | Gurzu
gurzu
1
500
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
560
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
550
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.5k
Being A Developer After 40
akosma
PRO
92
590k
Practical Orchestrator
shlominoach
192
12k
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
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月中旬から!