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
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
740
Paper Plane
katiecoart
PRO
4
53k
Making Projects Easy
brettharned
120
6.8k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
520
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Building Applications with DynamoDB
mza
96
7.2k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
450
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
990
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
900
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月中旬から!