PRESENTATION

SESSION

torikago - Ruby::Boxで照らすモジュラモノリスの実行境界

packwerkやRails::Engineを使うと、Railsのモジュラモノリスに構造上の境界を作ることができます。依存関係を明確にし、「どこに影響が出るか分からずコードを触れない」といった大規模なコードベースの困りごとを減らすうえで、とても有効です。 一方で、実行時には共通のRuby VMを使っているため、定数参照、monkey patch、暗黙の結合といった問題は残ります。構造としては分かれていても、実行時に本当に境界が効いているのかは分かりにくいままです。 本発表では、Ruby 4の実験的機能Ruby::Boxを使って、moduleごとの実行境界を扱うgem torikagoを紹介します。torikagoでは、module間の呼び出し方を統一し、どのmoduleがどのPackage APIを参照してよいかをあらかじめ定義します。これによって、torikagoを使うことでmodule間依存に実行時の制約を設け、意図していない参照を防げるようにします。さらに、他のmoduleからは直接定数などを参照できないことや、moduleごとにmonkey patchや依存するgemのバージョンをモジュール内に閉じ込められます。 普段は見えにくいモジュラモノリスの実行時の境界を照らし、何が分けられて、何がまだ難しいのかを、実例とともに共有する発表です。

関西Ruby会議09 ©2026