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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
sai-lens
September 29, 2025
Technology
80
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
22
論文検索を日本語でできるアプリを作ってみた
sailen2
0
420
Ruby の統計ツールと Ruby on Rails で分析をしてみた
sailen2
3
120
JavaDo勉強会での学び実践
sailen2
0
98
Other Decks in Technology
See All in Technology
AWS Summit 2026で見えたSIerにとっての Amazon Quickの位置づけ
maf_0521
0
110
本当の”仕事”を手放せる未来が見えた
mu7889yoon
0
190
「ビジネスがわかるエンジニア」とは何か?
ryooob
0
350
現場のトークンマネジメント
dak2
1
200
Multi-Agent並列開発を 安全に回すための技術 / Technology for Safely Multi-Agent Parallel Development
tooppoo
0
220
AI Agentをシステムに組み込む前にゆるく向き合ってみる
hayama17
0
170
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
2
230
起点・思考・出力で分解する 〜PM業務の自動化設計〜
kazu_kichi_67
2
1.1k
AWS Security Hub CSPMの成功・失敗体験
cmusudakeisuke
0
590
2026-06-24_人とAIの責務分離に基づく開発プロセスの提案.pdf
takahiromatsui
0
250
AI 不只幫你寫 Code: 當專案從 300 暴增到 1500, 我們如何撐住 DevOps
appleboy
0
280
AI時代のコスト管理を考えよう〜明日から使える実践AWSノウハウ~
yoshimi0227
0
950
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
698
190k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
260
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
210
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
How to build a perfect <img>
jonoalderson
1
5.7k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
450
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
370
KATA
mclloyd
PRO
35
15k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Statistics for Hackers
jakevdp
799
230k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
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