2018 年 7 月 21 日 (土) に大阪 Ruby 会議 01 がはじめて開催されました。以前までは関西 Ruby 会議という名前で開催していましたが、より地域に密接した Ruby 会議にしようというということになり、ローカルな大阪 Ruby 会議として開催されました。
2019 年の大阪 Ruby 会議 02 から早 4 年。長かったコロナ禍を乗り越え、大阪 Ruby 会議を再開することができました。 心の底から笑い合える日がまた来ることを願って、今年のテーマは「Ruby で笑おう」としました。
第 3 回となる今回は大阪市中央区にあるハートンホテル心斎橋別館 松風ホール で開催しました。総勢 175 名 (運営スタッフ含む) の方にご参加いただきました。
チーフオーガナイザーの honeniq さんから大阪 Ruby 会議 03 の開催の挨拶がありました。今回の Ruby 会議のテーマとロゴについて発表してくださいました。
最近、悩まれていることとしてリッチな UI を求められることが多い、例えばモーダルもその一つです。そんな時に Hotwire というを使うと、簡単にモーダルを作ることに感動した、この感動を共有したいということで、かつて DHH は 15 分でブログを作りましたが、伊藤さんは Hotwire を使って 15 分でモーダルを作るライブコーディングを行われました。
最後の 「楽しいと勝手にスキルも上がる」 というお言葉がとくに印象的でした。Ruby はコードを書くだけでも楽しいが、コミュニティに参加することでさらに楽しいのは、Ruby の魅力のひとつだと思います。
Ruby の開発の 30 年間におけるハードウェアの変化について話し、その中でも特に大きな革新の一つとしてマルチコアプロセッサの登場がいかに影響を与えたか、という話から始まりました。
そこから GVL (Global VM Lock) の話題に移り、パフォーマンスへの影響について触れました。また、Python における GIL (Global Interpreter Lock) をオプション化する提案 PEP 703 にも言及しました。その上で、Ruby では I/O バウンドや Web アプリケーション、C 拡張との比較において、GVL の影響はそれほど大きな問題ではないという見解が示されました。
パーサーの話題は RubyKaigi 2023 以降さらに注目を集めており、今回もその流れを受けて、 Lrama というパーサージェネレータにコントリビュートする過程で学んだことが共有されました。パーサーやパーサージェネレータの基礎知識から丁寧に解説されており、それらの仕組みを理解する上で非常に参考になる内容だったと思います。
後半では、Lrama の Named References という機能を作る過程が概説され、その実装を通じて知った Lrama の内部構造についての解説へとつながる構成になっていました。聴衆が迷子にならないよう工夫された、非常に分かりやすい内容でした。
はてなさんの開発合宿では、参加者が複数のチームに分かれ、それぞれ異なるプログラミング言語を用いて同じお題の Web サービスを開発するという取り組みが行われました。この活動を通じて、各技術の特性の違いを見てみる、という趣旨のお話でした。
Rails を使ったチームでは、開発が非常に速く進んだものの、それは単に開発言語の性能差によるものではなく、事前にどれだけ素振り (経験や準備) ができているかが大きな要因である、という点が非常に印象的でした。この観点はとても興味深いと感じました。
この取り組みについては、はてなさんの開発者ブログでも紹介されています。ぜひこちらも読んでみると、合宿の雰囲気がより伝わるかと思います。
https://developer.hatenastaff.com/entry/2023/06/14/110000
Flaky なテストの解決策について、willnet さんが実際に取り組んだ事例を紹介されました。Flaky なテストは、テストの信頼性を損なうだけでなく、CI が通るまでの作業を滞らせる問題を引き起こします。そのため、Flaky なテストの解消は非常に重要だという話から始まりました。
具体的な事例として、Capybara の要素のクリックミスを防ぐための設定や、失敗したテストのログだけを出力するための gem の紹介、さらに E2E テスト失敗時にブラウザの挙動を動画で確認できる仕組みが紹介されました。どれも非常に具体的で、実践的な内容でした。
Ruby で電子工作を楽しむためのお話で、mruby や PicoRuby の紹介から始まりました。 R2P2 という PicoRuby で書かれたシェルシステム や PRK Firmware という DIY キーボード向けのファームウェアフレームワークなど、Ruby を使った電子工作に関連するツールやライブラリも紹介され、Ruby で楽しめる電子工作の情報が網羅的にまとめられていて、非常に参考になる内容でした。
また、PicoRuby のドキュメント整備はまだ十分に進んでいないそうですが、現在、新しいリファレンスマニュアルの計画が始動しているとのことです。今後の展開がとても楽しみです。
プログラミングでビジュアルを作る、ジェネラティブアートにも通じるクリエイティブコーディングについてのお話でした。RubyKaigi 2023 のロゴを使用した作品 をご覧になったことがある方もいらっしゃるのではないでしょうか。
クリエイティブコーディングの歴史や、Ruby でクリエイティブコーディングを楽しむためのツール、そして基本的な仕組みについて解説され、非常にわかりやすい内容でした。「役に立つことだけがプログラミングの意義ではない。気軽にプログラミングを楽しむのも良いのではないか。」というお言葉がとても印象的で、共感を覚えました。
Ruby 1.8 から現在に至るまでの Ruby の歴史を振り返り、その間に起きた変化や進化について話されました。 tDiary がキラーアプリだった時代、After Rails の時代、YARV の登場、光と闇の機能が追加された Ruby 2.0、エコシステムへの参加のきっかけとなった Ruby 2.4 …と、時系列に沿った形式で話が展開されました。
Ruby の歴史とともに歩んできた koic さん自身の体験や、その中で感じたことが綴られた内容は非常に興味深く、Ruby の魅力を koic さんの目線で追体験できる素晴らしいお話でした。
Neovim を活用した開発環境の構築について、最新のプラグインやプロトコルを解説していただきました。 特に、LSP (Language Server Protocol) や DAP (Debug Adapter Protocol) を効果的に利用する方法を、具体的な設定例を交えて説明されており、Neovim を使った効率的な開発環境構築のヒントが満載でした。
DEMO を見ると、非常に開発がしやすそうで、普段 VSCode を使っている著者も Neovim に移行したくなる気持ちになりました。
ruby.wasm で gem をロードする方法について、具体的な手法を解説していただきました。
アプローチとしては、Bundling を用いてスクリプトを 1 ファイルにまとめる方法を選択し、Kernel.caller_locations
を活用して Kernel.require
にモンキーパッチを当てることで、gem のロードを実現されていました。
DEMO では、ブラウザ上で Web Audio API を使用し、自作のシンセサイザーで演奏を披露され、大いに盛り上がりました。波形データも Ruby で生成しているとのことで、非常に興味深い内容でした。
コミュニティの価値や狙いを分析されており、その内容が非常に整理されていて、改めてコミュニティについて考えさせられるものでした。
コミュニティの価値はフェイズによって変わる。もし衰退しているのであれば、それはコミュニティの価値を見直すタイミングである。価値を変えられない場合、コミュニティを閉じるという選択肢もある。」という視点は非常に重要だと感じ、コミュニティの運営に携わる方々にとって参考となる内容でした。 Kyoto.rb を引き継いだ理由については後に Kyobashi.rb での発表での発表でも話されていて、そちらも合わせてご覧いただくと良いと思います。
過去に Shinosaka.rb にて、「プロダクトを運用しつつ、それを OSS として公開することで Rails の開発を楽しみながら OSS の敷居を下げられないか」という思いから、Tebukuro というイベントのチケット管理プロダクトを作成されたという話から始まりました。
その後、この Tebukuro を Hotwire を用いて作り直した際に得られた知見を共有していただきました。実際の使用経験に基づく良い点と悪い点が示されており、Hotwire をこれから導入しようと考えている方にとって非常に参考になる内容でした。
技術書典で Rails の本を出すためのノウハウを共有していただきました。親族総出で技術書を作られたというエピソードがとても素敵で、心温まる内容でした。 また、収支が公開されており、技術同人誌作りの費用感など、これから技術書を出してみたいと考えている方にとって非常に参考になる内容でした。
実際に執筆された「Rails のコードを読む」という本は、以下から電子版を購入できるようです。
https://techbookfest.org/product/mbD8MPYZsV0MU67LHfyhxJ?productVariantID=b68wv2YcHipWsKXQ1nrcSR
今回は公式の懇親会はありませんでしたが、二部として豪華景品をかけたじゃんけん大会や LT 大会が開催されました。 長丁場となりましたが、二部ではお酒を片手に楽しむ方も多く、双方向のコミュニケーションがさらに活発になり、非常に盛り上がった雰囲気でした。
RailsGirls のドキュメント翻訳について、その背景や翻訳の進め方、翻訳の成果などについて話されました。 2023 年の 4 月末には第一弾が反映されたとのことで、成果も着実に出されていて、非常に素晴らしい取り組みだと感じました。
デプロイ環境毎に作られてしまっていた、RAILS_ENV の統合についての取り組みについて話されました。 実際にどのように統合していったかを順を追って解説されており、非常に具体的でわかりやすい内容でした。
Ruby のブロックをコールバックとして扱う際に、その動作や複数スレッドで扱う場合の注意点について話されました。 途中でタイムアップとなってしまいましたが、非常に興味深く、最後まで聞きたくなる内容でした。
gem_rbs_collection に rbs の型を追加するパッチを送った際のお話でした。 その経験を通じて、より技術や Ruby に関心を持つようになったとのことで、とても素敵なエピソードでした。
slim を安全に扱うために実際にどのような対策を行ったかを解説しました。 主に業務の中で直面した問題に対して、gem を作って解決した話をしました。
著書である「コードレビューで学ぶ Ruby on Rails」の続編として本に書ききれなかったことを紹介されました。 has_many の dependent は正しく使い分けよう、create と create! の使い分けなどなど、具体的なコード例を元に解説されていました。
書籍は以下から購入できるようです。
https://techbookfest.org/product/50CLAnEpRNhFNKzgq1aK78?productVariantID=gmDHaevdhz4T3T4eiGjWHe
Rails チュートリアル に導入した AI サポート機能 を通して、そのフィードバックと考察されたことについて話されました。 こちらは LT 版での発表でしたが、RubyWorld Conference 2023 にて詳細な内容を発表されたとのことで以下からその様子をご覧いただけます。
https://www.youtube.com/watch?v=Mnhwe8Lf_W8&ab_channel=RubyWorldConference
株式会社アジャイルウェア 株式会社インゲージ 株式会社エイチーム 株式会社ナレッジラボ BouqueTec 株式会社 ポノス株式会社 リバティ・フィッシュ株式会社 株式会社 Ruby 開発
大阪市在住、新米 Ruby コミッタ。最近は怪談を聞きながらプログラミングするのが好き。
本記事の執筆にあたり、フォトグラファーとして大阪 Ruby 会議 03 の運営に参加いただいた @shutooike さんに写真を提供いただきました。ありがとうございました。