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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
sai-lens
September 29, 2025
Technology
79
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
13
論文検索を日本語でできるアプリを作ってみた
sailen2
0
410
Ruby の統計ツールと Ruby on Rails で分析をしてみた
sailen2
3
120
JavaDo勉強会での学び実践
sailen2
0
95
Other Decks in Technology
See All in Technology
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
1.1k
やさしいA2A入門
minorun365
PRO
12
1.9k
気づかぬうちにセキュリティ負債を生むAPIキー運用
sgwrmctk
0
150
【2026年版】 ベクトル検索䛸 Embedding最前線
mocobeta
2
220
自律型AIエージェントは何を破壊するのか
kojira
0
160
LLMにもCAP定理があるという話
harukasakihara
0
380
AIの性能が向上しても未解決な組織の重大問題は何か?/An Unsolved Organizational Problem in the Age of AI
moriyuya
4
680
Claude Codeをどのように キャッチアップしているか
oikon48
13
8.2k
Claude Code の Sandbox 機能を Anthropic Sandbox Runtime(srt) で試そう!/lets-play-anthropic-sandbox-runtime
tomoki10
1
620
AIソロプレナー時代に2ヶ月で20人増員した事業創造会社の開発組織の話
miyatakoji
0
670
エラーバジェットのアラートのタイミングを考える.pdf
kairim0
0
150
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
2
130
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Amusing Abliteration
ianozsvald
1
200
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
The browser strikes back
jonoalderson
0
1.2k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
230
Site-Speed That Sticks
csswizardry
13
1.2k
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
360
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Crafting Experiences
bethany
1
180
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
250
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