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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
tanahiro2010
July 22, 2026
Programming
67
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
東京で唐揚げを食べたら北海道の地理にたどり着いた件
tanahiro2010
0
12
Googleが発表した新Web標準ドラフト――WebMCP。実際どうなの? IO Extendedで実装・登壇して分かったこと
tanahiro2010
0
80
PHPの命名規則、結局camelCaseとsnake_caseどっちなんだ
tanahiro2010
0
25
Q. 底辺作家でも流行に乗れば舞えますか? A. はい。分析ランキング分析AIを使えば
tanahiro2010
1
63
OSSコミュニティがくれた「人との繋がり」
tanahiro2010
2
440
React Hooksを使いこなせ! ――初心者でも簡単。ポートフォリオ開発で実践するReact講座.pdf
tanahiro2010
0
21
SQLインジェクション ――攻撃の仕組みから対策まで
tanahiro2010
0
54
初心者でも簡単理解。Github講座
tanahiro2010
0
30
LLM AgentでTRPGを動かしたら、Agentの地獄を(多分)全部見た
tanahiro2010
1
150
Other Decks in Programming
See All in Programming
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
480
MySQLとPostgreSQLって何が違うの?
akagami
0
150
AIエージェント時代のコードレビューを設計する
nogu66
5
1.4k
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
190
高専、大学編入、そして未踏へ〜プロダクト開発とキャリアの歩み - Technical College, University Transfer, and On to “Mitou” / My Journey in Product Development and Career
pkmiya
0
130
Can LLMs Replicate 4 Years of Compose Migration? Exploring the boundaries of automation with 279 XML files from a real product
makun
0
120
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
130
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
750
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
340
不幸な GC
chencmd
0
860
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.9k
ALB ログから Trace を気合で繋げる技術
fohte
7
840
Featured
See All Featured
Amusing Abliteration
ianozsvald
1
280
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
810
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Speed Design
sergeychernyshev
33
2.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Exploring anti-patterns in Rails
aemeredith
3
490
Scaling GitHub
holman
464
140k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
A Soul's Torment
seathinner
7
3.5k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
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