Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
React Tokyoのハンズオンに飛び込んでみた話
Search
sai-lens
September 29, 2025
Technology
82
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
React Tokyoのハンズオンに飛び込んでみた話
sai-lens
September 29, 2025
More Decks by sai-lens
See All by sai-lens
非エンジニアが院内での業務のために個人開発をした
sailen2
1
26
論文検索を日本語でできるアプリを作ってみた
sailen2
0
430
Ruby の統計ツールと Ruby on Rails で分析をしてみた
sailen2
3
120
JavaDo勉強会での学び実践
sailen2
0
100
Other Decks in Technology
See All in Technology
シンガポールで登壇してきます
yama3133
0
340
AI時代のYAGNI:「爆速で無駄になった機能」からの学び / 20260720 Naoki Takahashi
shift_evolve
PRO
3
510
探索・可視化・自動化を一本化 Amazon Quickでデータ活用スピードを上げる方法
koheiyoshikawa
0
160
Alphaモジュール使っていいのかい!?いけないのかい!?どっちなんだいっ!?
watany
1
320
Type-safe IaC for Dart
coborinai
0
180
Network Firewallやっていき!
news_it_enj
0
250
10年目を迎えた「ABEMA」がどのように AI 活用を推進して、AI 駆動開発にシフトしているのか / How ABEMA, entering its 10th year, is promoting the use of AI and shifting toward AI-driven development
miyukki
0
360
20260720_クラウド女子会×PyLadiesTokyoコラボ Amazon Bedrock ハンズオン用資料
yuuka51
1
110
SREとQA 二人三脚で進めるSLO運用/sre-qa-slo
sugitak
0
1.2k
Making sense of Google’s agentic dev tools
glaforge
1
300
Amazon Quick 入門!
ysuzuki
2
120
AmplifyHostingConstructからSSRフレームワークのためのホスティング設計を考察する/amplify-hosting-construct
fossamagna
1
280
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
420
Between Models and Reality
mayunak
4
380
From π to Pie charts
rasagy
0
240
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.4k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Agile that works and the tools we love
rasmusluckow
331
22k
The Pragmatic Product Professional
lauravandoore
37
7.4k
How to make the Groovebox
asonas
2
2.3k
How to Ace a Technical Interview
jacobian
281
24k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.8k
It's Worth the Effort
3n
188
29k
Transcript
React Tokyoのハンズオンに 飛び込んでみた話 さい/sai-lens 2025.9.28 / AkarengaLT vol.37 1
名前:さい フロント初心者 React興味あり React Tokyo ハンズオン (札幌開催)に参加 自己紹介 2
開催日: 9/7(日) 会場: エアウォーターの森 講師: Daishi Katoさん Teruhisa さん 参加者:
少人数(私+3人) フレームワーク作者から直接 学べる貴重な場! イベント概要 3
これまでのReactの課題 React Server Componentとはそもそもなにか フレームワークであるNext.jsとWakuの比較 「RSCで何を解決したかったのか」を知る 座学で学んだこと 4
状態管理 Server / Client Components 動的 / 静的レンダリング 学習法(PodcastやNotebookLMの活用) 学習の視点が広がった!
ディスカッションテーマ 5
Wakuを使って在庫管理アプリを作成 作者本人から直接サポート 初学者でもコードを書きながら理解できた ハンズオン 6
在庫一覧 新規登録フォーム 削除ボタン サーバーでデータ管理、クライアントで操作 という役割 分担を体験 アプリの全体像 7
1. 在庫を追加 → JSONが更新される 2. 一覧が最新に反映される 3. 削除 → 即座に反映
フロントエンドとバックエンドの役割分担が腑に落ちた! 動作デモ 8
import "/styles/globals.css"; import InventoryList from "../components/InventoryList"; import NewItemForm from "../components/NewItemForm";
import { readItems } from "../lib/items"; export default async function HomePage() { const items = await readItems(); return ( <main className="grid"> <InventoryList items={items} /> <NewItemForm /> </main> ); } export const getConfig = async () => ({ render: "dynamic" } as const); コード紹介(1/4) src/pages/index.tsx 9
import { addItemServer, readItems, deleteItemServer, type Item } from "../../lib/items";
. . if (req.method === "GET") { const items = await readItems(); return new Response(JSON.stringify(items), { headers: { "content-type": "application/json" }; if (req.method === "POST") {...}; return new Response(JSON.stringify(await addItemServer(item)), { headers: { "content-type": "application/json" } }); } if (req.method === "DELETE") {...}; return new Response(JSON.stringify(await deleteItemServer(id)), { headers: { "content-type": "application/json" } }); } . . コード紹介(2/4)データの窓口となる api/items.ts 10
export async function readItems() { ... } export async function
addItemServer(item) { ... } export async function deleteItemServer(id) { ... } コード紹介(3/4)サーバーでデータを扱う lib/items.ts 11
'use client'; export default function NewItemForm() { const onAdd =
async () => { await fetch("/api/items", { method: "POST", body: ... }); location.reload(); }; return <button onClick={onAdd}>追加</button>; } クライアントは「受付窓口」 コード紹介(4/4)クライアントのフォーム NewItemForm.tsx 12
RSCの機能 と フレームワーク(WakuやNext.js)の機能 を切り分け て理解することが大事 「わからない」を抱えたままでも手を動かすと理解が深 まる 学んだこと 13
フレームワーク作者から直接学べた貴重な機会 在庫管理アプリを通して RSCの役割分担 を体感 勉強会やハンズオンに飛び込むこと自体が学びのきっか けになる まとめ 14
結論 「わからない・できない」を恐れずに 勉強会やハンズオンに飛び込もう! 15