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
Serverlessしかなかったので、ブラウザに働いてもらいました
Search
tanahiro2010
July 22, 2026
Programming
37
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Serverlessしかなかったので、ブラウザに働いてもらいました
https://serverlesslt.connpass.com/event/397581/
ここで登壇したやつ
tanahiro2010
July 22, 2026
More Decks by tanahiro2010
See All by tanahiro2010
React Hooksを使いこなせ! ――初心者でも簡単。ポートフォリオ開発で実践するReact講座.pdf
tanahiro2010
0
12
SQLインジェクション ――攻撃の仕組みから対策まで
tanahiro2010
0
33
初心者でも簡単理解。Github講座
tanahiro2010
0
14
LLM AgentでTRPGを動かしたら、Agentの地獄を(多分)全部見た
tanahiro2010
1
120
だから僕はMarpを使う ――Bokuchiのすゝめ
tanahiro2010
1
17
私にとって便利なもの。個人開発LT
tanahiro2010
2
200
仕様交渉で信頼を積む方法、あるいは積んでしまった話
tanahiro2010
1
21
残念、8割は画像でした
tanahiro2010
0
29
ゴミ捨てLINE通知SaaSを作ろうとしたら気づいたらCron SaaS作ってた話
tanahiro2010
1
55
Other Decks in Programming
See All in Programming
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
140
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
170
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
150
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
280
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
230
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
120
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
180
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
120
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
270
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
110
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
100
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
210
Featured
See All Featured
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
370
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
Leo the Paperboy
mayatellez
8
1.9k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The Cost Of JavaScript in 2023
addyosmani
55
10k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
430
Game over? The fight for quality and originality in the time of robots
wayneb77
1
230
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
190
Embracing the Ebb and Flow
colly
88
5.1k
Faster Mobile Websites
deanohume
310
32k
How to Talk to Developers About Accessibility
jct
2
430
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Transcript
Serverlessしかなかったので、ブラウザに働いても らいました PoWでランキングを守ってみた話 Serverless LT 1
自己紹介 田中博悠 / tanahiro2010 三田学園高等学校 1年生 TypeScript / Ruby Web
/ CLI 個人開発 OSSに少し貢献 小説も書く 2
皆さん 自分の謎のこだわりと 環境制限のせいで 暴走したこと、ありますか? 3
僕はあります ランキングを作りたかっただけなんです 4
作ったもの 「なんでも問題集」 匿名で問題を投げるサイト 技術 採用 Frontend Next.js Database Neon(PostgreSQL) Hosting
Vercel 全部サーバーレス 5
機能は素朴 誰でも匿名で 問題を作って投げる場所 問題の作成 公開 解く ランキング 力を入れたのは、解く場所とランキング つまり今回の本題。 6
問題 解かれた数ランキングを作りたい ぶっちゃけ、素直に増やすと死ぬ POST /solve 解いた扱い → while(true) fetch連打 →
ランキング終了 数字が壊れる APIだけだと弱い 7
どうする? ログイン? CAPTCHA? Turnstile? Rate Limit? どれも重い 8
サーバーレスの縛り 重い処理は無理 CPU時間が怖い DB直撃も怖い 課金も怖い でもログインは嫌 9
現実はもっと泥 起動待ちに怯える 権限設定で詰む ログ追跡がつらい 課金グラフを見る 夜中に眉間が寄る 10
結論 ブラウザに働かせる 11
以前Discord Botで PoWを書いた記憶が蘇った。 PoWで殴る 12
全体の流れ Browser お題を取る → PoW計算 nonce探し → Verify 結果を投げる →
Server検証 一瞬で見る → ランキング更 新 通れば加算 13
Challenge取得 GET /api/works/:id/challenges 返すもの prefix token(JWT) 端末で難易度を変える PC スマホ 14
検証 POST /api/works/:id/challenges/:challengeId 送信 nonce / token → サーバーで検証 条件だけ見る
→ ランキング更新 成功だけ反映 15
完璧? UA偽装 Bot突破 端末判定は雑 本気の攻撃は無理 でも、今回の狙いは 大量送信のコストを上げる ここだけ。 もちろん穴はある 16
PoWを書きたかった 実は…… これが理由の半分くらい。 個人開発だからこそ 「面白そう」 で突っ込めるのが最高。 17
サーバーレスだから 「できない」 ではなく どう実現する? 18
ご清聴ありがとうございました GitHub・質問などぜひ 19