Day 2
Leveraging Falcon and Rails for Real-Time Interactivity
Samuel Williams さんの非同期に関する発表です。 具体的にはAsyncやFalconの話です。 GitHub - socketry/flappy-bird を動かす話です。
動くソースコードが公開されています。
git clone git@github.com:socketry/flappy-bird.git cd flappy-bird bundle bin/rails db:migrate bin/rails s
Falcon X Rails でWebSocketを使ったアプリケーションのサンプルとして丁度良さそうです。 ソースコードを見るとこんな感じでとてもシンプルです。
require 'async/websocket/adapters/rails' class GameController < ApplicationController RESOLVER = Live::Resolver.allow(FlappyView) def index @view = FlappyView.new end skip_before_action :verify_authenticity_token, only: :live def live self.response = Async::WebSocket::Adapters::Rails.open(request) do |connection| Live::Page.new(RESOLVER).run(connection) end end end
Async::WebSocket::Adapters::Railsは、Async::WebSocketというWebSocketのためのgemの一部のようです。
Live::Page
は Live gemの機能のようです。
細かい機能はよくわかりません。
以前faye-websocketを使って、WebSocket通信をする sinatraアプリケーションを作ったことがあります。 アプリケーション開発者視点でどういう点が違うのか気になっています。
まだActionCableのパッチが本家に入っていないとかで、Ruby on Railsの完全対応はもう少し掛かるようです。
Does Ruby Parser dream of highly expressive grammar?
I published slides of my #rubykaigi talk. "Does Ruby Parser dream of highly expressive grammar?" (Day2 11:30-12:00 #rubykaigiB) Thank you for your attention!! https://t.co/8hih3sbVoT
— Yudai TAKADA / ydah (@ydah_) May 16, 2024
ydah_
さんの発表です。
正直、パーサー周りはよくわかりません。
細かい感想が言えません。
が、ydah_
さんの熱い思いが伝わる良い発表でした。
「よくわからんけど、なんかすごい」のがRubyKaigiっぽくて良かったです。
このステージの照明がかっこいいです。
lanch
ydah_
さんの発表後の流れで、パーサー陣営とお昼を食べに行きました。スピーカーとコミッターばかりの濃いやつです。
ydah_
さんの発表がRubyKaigiぽくて良かったという話をしました。
RubyGems on ruby.wasm
我らが kateinoigakuun さんの発表です。 僕的にベストトークです。
ruby.wasmでmastdonを動かす、だいぶ意味がわからないデモがみれました。 gemが動くし、C拡張も動くんですよ。 ここまでは、直近のコミットから推測できていました。 ブラウザでmastdonが動くってことは、外部からHTTPリクエストを受け付けられるのです。 不思議です。 どうもServiceWorkerをつかってHTTPリクエストをフックしているぽかったです。
C拡張を動かすには、C拡張のビルドの仕組みにも変更が必要だったようです。 Feature #20345: Add `--target-rbconfig` option to mkmf - Ruby master - Ruby Issue Tracking System で対応しています。 仕組みとしてはRubyとC拡張を両方WebAssemblyにコンパイルしたうえで、 WebAssemblyバイナリ上でC拡張の関数ポインタの場所を良い感じに調整して RubyからC拡張の関数を参照できるようにしているみたいです。 みたいです・・・っていうか、全然よくわかっていなくて、 雰囲気で書いています。
また、Futureの話が熱いです。 ロードマップの図にサイズの図が熱いです。
Rubyインタプリタのサイズが小さくなることを明確なゴールにしているのがすごく良いんですよ。 セッション後に質問したら、めっちゃ小ちゃくなるには年単位の時間が掛かりそうとのことでした。
個人的な予想では、ruby.wasmをつかったRuby in browserが流行るかは、インタプリタのサイズよりキラーアプリの有無が鍵だと思っています。RubyにとってのRuby on Railsみたいなやつです。 商売として取り組むには、新しい技術に挑戦するリスクをとる見返りがほしいですよね。
インタプリタサイズの縮小が実現する頃までには、キラーアプリか、キラーアプリを作れる土壌を用意しないといけないなー、と思っています。 そういうのもあって僕の発表では、フレームワークっていうわかりやすい飛び道具を打ってみました。
参考: RubyKaigi 2024 で学んだこと・社員として参加する理由 にruby.wasm関連の感想があって面白いです。
RuboCop: LSP and Prism
最高にかっこいいkoicさんです。
自主休憩
三日目には自分の発表があるので、スケジュールをタイトにしたくありませんでした。 ここで体力温存がてら、お土産を買いに行きました。 なはーとの国際通りに近い立地が最高です。
pockeさんが食べてて美味しそうだったので、ブルーシールでチョコミントを食べました。
Lightning Talks
Visualize the internal state of ruby processes in Real-Time
hogelogさん
自作のmetorics_monitor gemの紹介です。
The Frontend Rubyist
largo さん
https://koans.idogawa.com/ と https://rubygems.org/gems/jsg の紹介です。
ruby.wasm仲間です。 一緒に盛り上げて行きましょう。
Enjoy Creative Coding with Ruby
chobishibaさん
ps5.js のラッパーのp5rbを使ったクリエイティブコーディングの紹介です。 p5.rb Editor を使っているのでこちらもruby.wasm仲間でした。
参考: p5.rbでのコーディングあそびをはじめました|bash note
Rearchitect Ripper
金子さんすごすぎる。 通常セション、LT、Commiter and the worldの三連投です。
The Journey of rubocop-daemon into RuboCop
fothe さん
rubocop-daemonというrubocop用のサードパーティーのgemを作っていたら、 突然rubocop本家に取り込まれたそうです。 夢のある良い話です。
The test code generator using static analysis and LLM
mikiko_bridge さん
omochiの紹介です。 テストがないコードを探してきて、 LLMでテストコードを生成するgemだそうです。 便利そうです。
Contributing to the Ruby Parser
S-H-GAMELINKS さん 記憶がありません。
Improved REXML XML parsing performance using StringScanner
naitoh さん
Ruby製のXMLパーサーREXML を速くした話です。 regexp を string scannerに置き換えたら5%くらいの高速化したそうです。 YJIの効きが良くなったそうです。 メモリ使用量が減ったからのようです。
Hotspot on Coverage
shia さん
ISCON用にホットスポットを探す akainaa | RubyGems.org | your community gem host を作って役に立てた話です。 本来はテストの薄いところを探すためのカバレッジレポートを、実行回数の多いホットスポットを探すためにつかう話です。 逆転の発想がかっこいいです。
ハイライト範囲をかっこよくするためにprismつかっているそうです。 結果のわかりやすいUIにこだわっているところもかっこいいです。
Drive Your Code: Building an RC Car by Writing Only Ruby
hachi さん
picorubyを使った電子工作で作ったラジコンカーの紹介です。 物理的に動く物が作れるの良いですね。
An anthropological view of the Ruby community
英語がちょっと難しかったです。 というか力尽きて寝てました。
dinner
株式会社ラグザイアはプラチナスポンサーをやっていてブースを出しています。
夜はブース運営をしてくれてる会社のメンバーと焼鳥屋さんに飲みに行きました。