関西 Ruby 会議 08 参加レポート
こんにちは、simomu です。
2025年6月28日 に京都で開催された関西 Ruby 会議 08 に参加してきました。
いわゆる地域 Ruby 会議というもので、東京 Ruby 会議や松江 Ruby 会議など様々な地域で開催されています。
関西での地域 Ruby 会議は 2024 年に大阪 Ruby 会議 04 ありましたが、関西 Ruby 会議としては 2017 年以来の開催とのことです。
印象に残ったセッション
Witchcraft for Memory
RBS と Steep のメモリ使用量を削減した話でした。
RBS や、それを用いた Steep は大量のメモリを消費する状態だったらしく、LSP Server として Steep を複数エディタ毎に起動していると中規模 Rails アプリで数 GB のメモリを消費する状況だったとのこと。
前半は、これを解消するためにまず RBS 側のメモリ使用量の調査のためにメモリプロファイラ majo を作った話でした。
これまでも Ruby のメモリプロファイラは memory_profiler がありましたが、 majo では計測中で長生きしている Object = GC で一定回数生き残ったオブジェクトのメモリ使用状況を出すことでピーク時のメモリ使用量の情報を得られるようにしたとのことでした。
この gem によって RBS のメモリ使用状況を調査し、Hash の重複生成削除で 13% のメモリ使用量削減等の成果が出たのことです。
TracePoint API を利用して GC 実行開始をフックし一定回数生き残った Object の記録をしているとのことで、GC 実行中は GC を走らせてはいけないので C の構造体に情報を保持して結果表示時にはじめて Ruby Object にしている話が面白かったです。
後半は Steep 側のメモリ使用量削減の話で、プロセスのフォークの仕方を工夫することで CoW (Copy on Write) がうまく適用されるようにしてメモリ使用量を55%、4.1GB ほどのメモリ使用量を削減したとのことです。
普段あまり意識することのないプロセス間通信の話が興味深かったです。
「富岳」と研究者をRubyでつなぐ:シミュレーション管理ツールOACIS
シミュレーションや数値計算の実行・結果管理を行うことができる Ruby on Rails 製のツール OACIS の話でした。
Web サービスと言うよりも、手元で実行する GUI ソフトウェア的な扱いのツールで、富岳などの計算マシンに対してシミュレーションの実行、実行結果やパラメータの管理、結果の可視化まで行ってくれるとのことです。
このツールはあくまでシミュレーションの管理のためのツールで、実際にシミュレーションを行う環境・言語は C、C++、Fortran など様々なので、実際の実行はシェルスクリプトを動的に生成して実行しているとのことです。
「Ruby をシミュレーションに使うことは実行速度の関係であまりないが、Ruby の柔軟性と生産性が研究者とスパコンを繋いでくれる」というのがとてもいい話だなと思いました。
Rubyを使った10年の個人開発でやってきたこと
Annict の作者の方のセッションで、10年にわたる個人開発で得られた開発を継続していく知見やクラス設計に関する話でした。
今回の関西 Ruby 会議の他のセッションでも度々話題に上がった「自分が最初のユーザとして開発をする」が重要の話が出てきて、
この方が開発した Annict, Mewst, Wikino それぞれ「自分がほしい」と思ったものがきっかけになっているとのことでした。
特に Wikino の「Markdown で書ける Cosense(旧Scrapbox)が欲しい」はめちゃくちゃ共感できました。
また、クラス設計に関して、設計パターンを導入してもしっくりこなくてただ複雑になっただけになってしまうことに対して、
「パターンを利用する目的が漠然としていて、本質的に何が解決したかったのかを明確にしないままパターンの表面的な部分しか取り入れていなかった」というのがとても刺さる話でした。
感想
行ってみた感想としては、 Ruby や Ruby on Rails に関する知見の話ももちろん面白かったですが、それ以上に地域.rb のように近所にも Ruby を使っているエンジニアがいるというのを実感することができたのが良かったです。
私が新卒のときに同じ職場で Ruby on Rails を教えてくれた先輩と再会したり、そこから勉強会の主催者・参加者つながりでいろんな人と喋ることができたりと、意外な世間の狭さを実感した会でした。
これをきっかけに、普段はあまり参加したことのなかった近所の地域.rbにも参加してみようと思いました。
Discussion