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
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
23
論文検索を日本語でできるアプリを作ってみた
sailen2
0
430
Ruby の統計ツールと Ruby on Rails で分析をしてみた
sailen2
3
120
JavaDo勉強会での学び実践
sailen2
0
100
Other Decks in Technology
See All in Technology
【Claude Code】鹿野さんに聞く 私の推しの並行開発環境 大公開 / claude-code-parallel-2026-07-15
tonkotsuboy_com
8
3.8k
デジタル・デザイン:次の50年を描く「進化する青写真」
y150saya
0
840
テスト設計の本質を改めて考えてみる~生成AIを活用する時代だからこそ、作ったテストの説明性を高めよう~
yamasaki696
1
440
貴方はどのエンジニアリングを磨くのか
hatyibei
0
110
しくみを学んで使いこなそう GitHub Copilot app
torumakabe
1
140
型は壁、Rustでもバグを直すな、表現できなくせよ
nwiizo
12
1.9k
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.4k
AWS Summit の片隅で、体育座りしながらコミュニティがにぎわう理由を考えた
k_adachi_01
2
370
生成AIの活用/high_school2026
okana2ki
0
120
End-to-Endで考える信頼性 —LINEアプリにおけるクライアント開発×SRE連携の実践
maruloop
4
3.8k
キャリアの中で本を作る / Making a Book During Your Career
ak1210
0
130
CSに"SLO"は要らない、経営層に"99.9%"は伝わらない - SREを全社に"翻訳"する3原則
cscengineer
PRO
1
4.2k
Featured
See All Featured
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
750
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
290
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
190
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
260
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
670
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
290
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