Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
謎解きサイトを Rails SPA で作って RubyKaigi で配布した話
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
kokuyouwind
December 19, 2025
Programming
95
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
謎解きサイトを Rails SPA で作って RubyKaigi で配布した話
「忘年LT大会~今年のドヤ!を発表しあおう~」の発表資料です。
https://leanertechnologies.connpass.com/event/376577/
kokuyouwind
December 19, 2025
More Decks by kokuyouwind
See All by kokuyouwind
疑似コードによるプロンプト記述、どのくらい正確に実行される?
kokuyouwind
0
590
ドメイン指定Cookieとサービス間共有Redisで作る認証基盤サービス
kokuyouwind
0
46
Do LLMs dream of Type Inference?
kokuyouwind
0
49
Let's use LLMs from Ruby 〜 Refine RBS types using LLM 〜
kokuyouwind
0
8.6k
APMをちゃんと使おうとしたら、いつのまにか独自gemを作っていた話
kokuyouwind
0
980
RBS meets LLMs - Type inference using LLM
kokuyouwind
0
1.1k
オンラインボードゲームを作りたい人生だった
kokuyouwind
0
710
1年間本番運用してわかった、スタートアップこそAWS Copilot CLIを使うべきNつの理由
kokuyouwind
2
12k
なるべく楽したいAWSセキュリティ
kokuyouwind
1
120
Other Decks in Programming
See All in Programming
Intent as Code
shoppingjaws
4
620
型解析で実現する Go の言語内 DSL / Conference に Go! タイムテーブルの歩き方 for Gophers
mazrean
0
140
RSSとCodexを使ってX投稿自動化してみた
ochtum
0
110
AIの中の人になってみる
htkym
0
170
Deep dive into the select statement (GopherCon UK)
jespino
0
170
デプロイ直後のレイテンシスパイクを調べたら、 Railsの仕様にたどり着いた
nhsykym
0
110
「AI時代、配布するPythonコードをどう守るか: 難読化の実験と判断軸」 #PyconJP2026
pkshadeck
PRO
2
180
Press start. Python's next generation.
willingc
PRO
3
320
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
660
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
690
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
150
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
110
Featured
See All Featured
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
310
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Making the Leap to Tech Lead
cromwellryan
135
10k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Why Our Code Smells
bkeepers
PRO
340
58k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Darren the Foodie - Storyboard
khoart
PRO
3
3.9k
Abbi's Birthday
coloredviolet
3
9.9k
Transcript
謎解きサイトを Rails SPA で作って RubyKaigi で配布した話 Leaner Technologies, Inc. 黒曜
(@kokuyouwind) 1
$ whoami 黒曜 / @kokuyouwind Leaner Technologies Inc. 所属 Rails
エンジニア・SRE 今はLeaner の認証基盤サービスを 作ってます 2
2025 年のドヤ! 3
Kaigi on Rails で認証基盤の話をした! https://kaigionrails.org/2025/schedule/#day2 4
https://gihyo.jp/magazine/SD/archive/2025/202511 Software Design に記事を寄稿した! 5
RubyKaigi でゲームナイトを開催! https://leanertechnologies.connpass.com/event/349031/ 6
個⼈的イチオシのドヤ! 7
RubyKaigi で⾃作謎解きを配布! 8
Cursor YOLO 使って1 時間くらいで Rails SPA に移植 当初LINE アプリで作ったが、 海外の⼈はLINE
使ってないと気づいた 9
https://escape-game-rubykaigi-2025.kokuyouwind.com/ デモ 10
実装 - 回答判定(Turbo Stream) class KeyController < ApplicationController CORRECT_ANSWERS =
[ " ほげ", # 0: 問題1, " ふが", # 1: 問題2 ] def update # 正解判定 key_id = params[:id].to_i is_correct = (params[:value] == CORRECT_ANSWERS[key_id]) if is_correct # 正解の場合のみsession に値を保存 session["key_#{key_id}_value"] = params[:value] else # 不正解の場合はflash.now に不正解フラグを設定 flash.now["key_#{key_id}_incorrect"] = true # 不正解でも⼊⼒値をリクエスト内で保持 @input_value = params[:value] end 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 render turbo_stream: [ turbo_stream.replace( "key_answer_form_#{key_id}", partial: "top/key_answer_form", locals: { index: key_id } ), turbo_stream.replace( "key_answers_table", partial: "top/key_answers_table" ) ] end end 1 2 3 4 5 6 7 8 9 10 11 12 13 11
実装 - カタカナ変換(Stimulus) // クロスワードの答え⼊⼒をカタカナに変換するコントローラー // app/javascript/controllers/key_input_controller.js export default class
extends Controller { static targets = ["incorrectIcon", "input", "form"] connect() { // コントローラーが接続された時の処理 // フォーム送信前にカタカナ変換を⾏う if (this.hasFormTarget) { this.formTarget.addEventListener( 'submit', this.handleSubmit.bind(this)) } } ... // 利⽤側ではdata: { key_input_target: "form" } を指定 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 12
ドヤポイント 謎解きの主題にイベントに因んだ題材を盛り込んだ Ruby ⾔語, RubyKaigi, 松⼭にまつわるもの リーナーの会社や主催イベントにまつわるもの AI を活かして⼿早くサイト化できた 知ってるけど使ったことのない技術を実例で試せた
Turbo Stream Stimulus 13
来年もなんかやるぞ!!! https://rubykaigi.org/2026/ 14
BuriKaigi も登壇するのでよろしくです https://fortee.jp/burikaigi-2026/proposal/59dc9edc-5d05-4ef4-a82c-39f37df4df5b 15