見出し画像

RubyKaigi 2024 in 沖縄🌺🏝️

はじめに

今回で自身2回目となる、Rubykaigiに参戦してきました!

前回は初めての参加で、知らない方だらけの環境に飛び込む感じでしたが、今回は会社の方々と参戦したので目的を持って参加することができました。

ちなみに弊社、ツクリンクはRubyKaigiのSilver Sponsorとして参加しております!

ノベルティのシールは弊社のデザイナーが作成したものなのですが、おかげさまで大好評で直ぐにノベルティエリアから無くなっていました🙌
(写真無くてごめんなさい)

参加した中で、心に残っているセッションをいくつか紹介します。


日程

2024/05/15-17
場所:那覇文化芸術劇場なはーと

https://rubykaigi.org/2024/

オープニング

「ハイサイ」の一言から始まったので、沖縄に来たな〜と言う感覚がより強く感じるオープニングでした。

Writing Weird Code

スピーカー:@tompng tomoya ishida さん

IRBのメンテナーで "irb --type-completor" を開発
TRICK 2022で金賞受賞

Qiitaの記事を発見したので私も試してみました

メソッドの補完
ブロックパラメータの補完

今まで補完の設定を切っていたのですが、ちょっと有効化してしばらく試してみます。

肝心の発表について。
発表スライド
ソースコード

普段Ruby on Railsを使用してWebアプリやJobの開発をすることが常ですが、Rubyを使ってアニメーションを作ったり、BMP画像にRubyのコードを埋め込んだりとかなり予想外なことをされていたのでかなり刺激を受けました。

なんとびっくり、以下のURLで表示される画像をRubyのコードとして実行できると言う!!

https://raw.githubusercontent.com/tompng/selftrick2024/main/floral/lily.rb.bmp

この画像、実はRubyコード

このセッションで学んだこと
遊び心も大切である

Let's use LLMs from Ruby 〜 Refine RBS types using LLM 〜

スピーカー:@kokuyouwind Shunsuke Mori (kokuyou)さん

RBSの型定義をLLMにやってもらうツールを作ったお話。

昨年からのLLMの進化

  • コーディング能力の向上

  • 値下げ

  • 扱える文章長の拡大

つい先日、ChatGPT-4oが発表されてLLMの進化(特に高速化)を体験したばかりでしたので、ホットな話題でした。

RBS Goose
https://github.com/kokuyouwind/rbs_goose

アーキテクチャの説明

RuboCop: LSP and Prism

スピーカー:@koic Koichi ITOさん

Rails8にLSPが入る可能性があるというお話。

Rubocop VSCode拡張機能でも --lsp オプションを入れることで使えるっぽい
→LSP使うと早くなるらしい!!

VSCodeでコード保存時に実行する時もストレスなくformat実行できるっぽいので、ちょっと入れてみます。

Turning CDN edge into a Rack web server with ruby.wasm

スピーカー:@remore Kay Sawadaさん

gem burnの紹介

WASI(WebAssembly System Interface)
What is CDN Edge?
→Fastly Networkを使用している

rubygemsもFastlyにホスティングされている(地味に知らなかった)

Demo
burnを使用してFastlyのCompute@Edgeで実際にRubyを動かす
sinatraを使用してWeb画面を表示

  • ロブスターのアスキーアート

  • 簡易ブログサービス

Railsはbuild errorになるっぽい

今後の挑戦 

  • 100MBのLimitがあるらしいので、それより大きなpackage sizeは今は使えない

  • パフォーマンスの問題

Using Ruby in the browser is wonderful.

スピーカー:@ledsun Shigeru Nakajimaさん

Rubyをブラウザで動かすと気持ちが良い!

What is ruby.wasm

  1. CRubyのバーチャルマシンをブラウザで動かす

  2. CRubyとJavaScriptの架け橋になる

Rubyをブラウザで動かしただけではできないことがある

  • ファイル操作

  • Timer, SleepなどのOS操作

そこを埋めるための架け橋になる

  • JS.global

    • JSを触るためのやつ

  • JS.eval

    • JSを実行するやつ

  • JS::Object

    • JSのオブジェクトをラップするRubyのクラス

どんなPRを送ったか?

Rubyのように使えるようにnewメソッドを定義した

  • JS.gloval[:URLSearchParams].new("?q=ruby.wasm") を実行するとJSのオブジェクトができる

後半パート

JSのフレームワークはたくさんある
たくさんある = 作るのが楽しい
(この発想好き)

Railsを参考に作ってみた

リポジトリ

まとめ

今回人生2回目のRubyKaigiでした!

前回は初めての環境でほぼ顔見知りもいない状況でセッションを見たりちょっとだけブースにお邪魔するくらいでしたが、今回はブログを拝見している企業のブースに行って質問したり、別のカンファレンスなどで知り合った方に挨拶しに行ったりと前より交流をメインに参加することができました!

セッションはとても勉強になりますが、リアルなカンファレンスだからこその交流も引き続き積極的に行うように心掛けます。

みなさんまたお会いしましょう!


この記事が気に入ったらサポートをしてみませんか?