はじめに
愛媛県松山市で開催されたRubyKaigi2025に参加してきました。その参加レポートです。
印象に残ったセッション
Ruby Taught Me About Encoding Under the Hood
@ima1zumiさんの登壇資料です。
初めに、文字コードは歴史的にどのような使い方をされ、どのような変化をしていったのかということを分かりやすく解説していました。 歴史的に調べたことがなかったので好奇心が刺激されました。
そこから、EBCDICに出会い、漢字の文字コードについて苦しめられ、🧑🧑🧒の不具合に遭遇し、そこからrubyにパッチを当てていくことになり...というような歩みをされていることが分かりました。
自分の周りにはそのような経験をされている方がいないので、驚きながら聞いていました。
🧑🧑🧒という文字コードをirbに貼り付けると余分なスペースが入ってしまい、そこが起因のエラーが発生してしまう。そこを深掘っていくことでrubyを深く知っていく過程を追体験できるような発表でかなり面白かったです。
登壇内容とはずれますが、個人的に気になったこととして、🧑🧑🧒などの絵文字ってスクリーンリーダーごとに読み上げ方が変わるのかと疑問に思いました。 Unicde Charactor Databaseに文字が当たっているらしいから、この文字を読み上げているのだろうか。深ぼってみようと思います。 https://www.unicode.org/Public/UNIDATA/UnicodeData.txt
Goodbye fat gem 2025
@ktouさんの登壇資料です。
概要
- fat gemとは、ビルド済みのバイナリを含んだgemのこと
- ネイティブ拡張があるgemはビルドが難しく、ユーザーがつまずきやすい
- fat gemならその問題を回避できるので、gemを使用するユーザーは使いやすい
- しかし、そのビルド作業に手間がかかり、gemのメンテナーが対応する状況
- 開発者の負担が大きく、このエコシステムのままだと辛い。
- ビルド環境の自動化が進めば、fat gemに頼らない未来(Goodbye)もあるかもしれない
所感
fat gemについては今まで知っておらず、それがあることで開発者がそんなに苦労してるなんて思っていなかったです。
「これが普通」だと思っていたのですが、それは誰かの頑張りの上に成り立ってたんだと改めて感じました。会場ではgemの開発に携わっている方々がいるので尚更です。
便利に使えるのは良いが、その負担が一部の人に偏ってるのは継続的な関係性なのか気になるところでした。 今すぐ自分に何ができるかはわからないけど、現状を知り、少しずつできることを増やしていけたらいいと感じました。
RuboCop: Modularity and AST Insights
@koicさんの登壇資料です。
概要
- CustomCopの実装で、以前はRubocopの内部構造(例:Inject)に依存する方法を用いていた
- しかしこの方法は公式に推奨されていないので、内部構図に密結合しないような方法を追加している
- よって今後はその方法を使用することを推奨している
- RuboCopでは構文解析の強化として、Prismの導入が進められている
所感
CustomCopを開発する際には、requireで読み込む方法ではなく、pluginsを使用すると良いことが分かりました。
また、自分なりの理解としては、現在はRuboCop自身にLSP機能を内包させるのではなく、Ruby LSPから適切に呼び出されるような仕組みを構築しようとしているフェーズにあるように見えました。
LSPとの連携が進めば、エディタでさらに使いやすくなるので今後の開発が楽しみです。 また、自分でもLSP周辺の実装についてもさらに理解を深めていきたいと思いました。
Ruby's Line Breaks
@spikeolafさんの登壇資料です。
概要
- Rubyにおける改行の扱いについて、原則と例外を交えて解説されていた
- そこから、Rubyの文法構造や、オートマトン、LRパーサーの概念について解説されていた
- 特に、lex stateの複雑さと、それがどのようにパーサーに影響するかが重点的に説明されていた
所感
lex stateがものすごい難しい。ということがわかりました。 それ以外は概念を理解するのに必死で分からなかったです...。去年もこんな感じだったなぁ。
Keeping Secrets: Lessons Learned From Securing GitHub
@lyninxさんと@Creasteryさんの登壇資料です。
概要
- バグバウンティプログラムを通じて、@Creastery さんによって脆弱性が報告された
- 脆弱性の内容としては、本番環境のコンテナ内にある環境変数にアクセスされる可能性があったとのこと
- sendメソッドの特性をうまく利用することで、意図しない形でENVの値を取得できてしまう実装が存在していたらしい
所感
設定情報(config)と機密情報(secrets)を明確に分けて管理すべきという指摘には、確かにそうだなと感じました。基本的にはRails Credentialsを使用するのが良いので、そこをちゃんとすることが大事だと思いました。
また、GitHubのような大規模サービスがRailsを使って構築されている実例を少し見られたのは、個人的に面白く感じました。 今回のケースを通して、セキュリティ対策に関する他のツールを知ることができました。
以下のような静的解析ツールは今後の開発にも役立ちそうなので、試してみたいと思います。
- Semgrep | Homepage
- opengrep/opengrep: 🔎 Static code analysis engine to find security issues in code.
- CodeQL
Analyzing Ruby Code in IRB
@tompngさんの登壇資料です。
概要
- IRBでは以下のような機能が実装されている
- 構文ハイライト(syntax highlight)
- プロンプト文字列の動的制御
- コードのネスト構造の解析
- etc...
- 上記にはRipper::Lexer が利用されているが、IRBに独自パーサーを実装することで機能を実現していた
- 現在はこの独自パーサーをPrismへ置き換える移行作業が進められており、改善を進めている
所感
スライドにコード例が多く、個人的には理解がすごく進んだと感じました。
普段はIRBを使用してRubyのコードを実行しているのですが、スライドで説明された機能について意識しながら使っていないので、改めて意識すると多くの機能が搭載されている複雑なツールだと感じました。
実際にどのように実装されているのか気になるので、構文ハイライトのコードを読んでいこうと思います。
RubyKaigiで感じたこと
今年でRubyKaigiへの参加は3回目になりますが、ようやく少しずつ内容が理解できるようになってきた気がしています。セッションを聞いていても、最近のトピックや業界の動きが前よりずっと身近に感じられるようになり、少しずつ自分の中に積み重なってきたものがあるのだと実感しました。
特に印象的だったのは、普段なかなか話す機会のないRubyのコミッターの方々と直接話せたことです。実際にRubyやgemを支えている方と顔を合わせて言葉を交わせる機会というのが貴重で、素晴らしい機会でした。
また、イベントを通して、Rubyという言語を軸に多くの人と出会い、何かしらの縁が生まれる場であることも改めて感じました。こうした技術イベントは、情報収集の場であると同時に、人と人とのつながりを構築するでもあるのだなと感じました。
普段使っているRubyやgem、周辺ツールは「誰かが作ってくれているもの」ではなく、試行錯誤をしながら改善され続けているものだということを肌で感じることができました。自分も何かしらの形で貢献していきたいという気持ちが湧いてきました。
また、Rubyを業務で使うようになってから、RubyKaigiが一段と楽しく感じられるようになりました。仕事と趣味がつながって、より深く技術と向き合える状態になってきているので、そこが自分のモチベーションになってきています。
来年のRubyKaigiに向けて
RubyKaigiを通して、学びや出会いがたくさんありました。 参加するだけでなく、次は何かしら自分も貢献したいと思っています。たとえば、バグ報告やドキュメントの整備、カンファレンスの運営の手伝い、あるいは自分自身でgemを開発してみることなど、関わり方はいろいろあるので、コミュニティに貢献していきたいです。
そのためにも、もっとRubyの理解を深めてイベントやセッションをより楽しめるようになりたいと感じています。知識が増えるほど、見える世界も変わってくると思うので、着実に学びを深めていきます。
まずはKANSAI RubyKaigiにCEPを出すところから始めてみようと思います。 また、英語で技術的なコミュニケーションを取れるようにしたいと思っています。海外の開発者ともスムーズにやりとりできれば、世界がもっと広がりRubyKaigiをもっと楽しめると思っています。
来年の自分が、今年よりも一歩踏み出しているような状態で来年のRubyKaigiに参加したいと思っています。
終わりに
登壇者の皆様、運営者の皆様、スポンサーの皆様方本当にありがとうございました。お祭りのようですごく楽しかったです!!
また、RubyKaigi2025に参加させてくださった会社の皆様方、本当にありがとうございました。