Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ruby4.0でリリースされるNameSpaceの機能を整理する
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
katakyo
November 20, 2025
1.8k
4
Share
Ruby4.0でリリースされるNameSpaceの機能を整理する
katakyo
November 20, 2025
More Decks by katakyo
See All by katakyo
Kaigi on RailsでKaigi Effectを得た話
katakyo
0
51
もう並列実行は怖くない ~コネクション枯渇解消のための実践的アプローチ~
katakyo
4
8.9k
Codex CLIに入門してみる
katakyo
0
53
Claude Codeを使いこなすための実践Tips集
katakyo
1
360
Ruby で始める自作 MCP サーバー入門
katakyo
0
360
マイベストのREST APIをGraphQLに置き換えた話
katakyo
0
200
ジュニアエンジニアから脱却するために業務以外で意識していること
katakyo
1
360
新卒エンジニアの半期の振り返り
katakyo
0
1.5k
Featured
See All Featured
How to Talk to Developers About Accessibility
jct
2
190
Optimizing for Happiness
mojombo
378
71k
The Language of Interfaces
destraynor
162
26k
How GitHub (no longer) Works
holman
316
150k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.4k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
54k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.7k
From π to Pie charts
rasagy
0
180
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
320
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.9k
Embracing the Ebb and Flow
colly
88
5k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Transcript
November 20, 2025 Ruby4.0でリリースされる NameSpaceの機能を整理する Kashiwa.rb @katakyo
アジェンダ 1 はじめに 2 NameSpaceとは 3 新機能「Ruby Box」について 4 まとめ
01 はじめに
Ruby Kaigi 2024にて
Matz「NameSpaceができたら Rubyのバージョンを 4.0にあげる かも」
Ruby 4.0が今年の12月にリリース予定
02 NameSpaceとは
そもそもNameSpaceがなぜ必要か
https://speakerdeck.com/tagomoris/namespace-what-and-why
現在のRubyのNameSpace Application GemA GemB GemC DB:Client(v2) RubyのデフォルトのNameSpaceは全て⼀つのNameSpace(Rubyのプロセスで)動作する
問題1: 名前の衝突 複数のライブラリが同じ名前を使っている場合、もちろん 競合する 同じ種類(クラスorモジュール)だった場合はお互いを上書 きし、異なる種類だった場合にはふたつめを読み込んだ時 点で例外となる
問題2: ライブラリのバージョンの衝突 Application GemA GemB GemC DB:Client(v2) GemC DB:Client(v3) 衝
突 Rubyではどうがんばっても特定ライブラリの複数バージョンを1プロセス内には共存させら れない。これは、アプリケーションが依存する複数のライブラリ(A, B)が同じライブラリ(C) に依存するが、しかしそれぞれバージョン制約が異なる、という状況を解決できない
問題3: ライブラリグローバルが衝突する ライブラリに設定をクラス変数を⽤いて実装されると全 体のプロセスに影響を及ぼす可能性がある
• ライブラリ間での名前の衝突を避けること • 意図しないクラス定義の共有などを避けること • 複数バージョンのgemを1つのプロセスからロードすること NameSpaceが解決したいこと Application GemA GemB
GemC DB:Client(v2) GemC DB:Client(v3) Application Application NameSpaceA NameSpaceB
03 新機能「Ruby Box」について
Ruby 4.0でRuby Boxという 名前でリリースされます
2つのBox Ruby BoxはRoot BoxとUser Boxの2つのBoxのタイプがある 1. Root Box Rubyプロセス内の単⼀のボックス。Rubyのすべての組み込みクラスとモ ジュールはルートボックス内で定義される
2: User Box ユーザーが作成したプログラムや、ユーザープログラムからロードされた ライブラリを実⾏するために使⽤する
設定方法 デフォルトでRuby Boxは有効化されていないた め、環境変数で設定する必要があります Rubyのプロセス起動時にこの環境変数を読み込 む必要があります(RUBY_BOXは1以外は無効)
基本的な使い方 User Boxを作る時はRuby::Boxのインスタン スを作成し、ファイルやモジュールをロード して定義したBoxを経由してアクセスする
ライブラリー間の異なるバージョンを安全に共存できる Gemの異なるバージョンが衝突する課題も Ruby Box経由でGemをloadすることで異 なるバージョンが衝突することなく実⾏す ることができます
モンキーパッチの隔離が可能になる モンキーパッチとは何か • 既存のクラスを後から変更する技術 • Rubyの柔軟性を⽰す例(Stringクラスに独⾃メソッド を追加など) Ruby::Boxによる隔離のメリット • Box内のモンキーパッチはBox内に閉じ込められる
アプリケーションの保守性にも貢献する 以下のような活⽤⽅法ができそうです • マイクロサービス的な分離: ◦ 1つのプロセス内で独⽴したサブシステムを構築 • Gemの安全な更新 ◦ ⼀部のNamespaceだけバージョンアップして影響を確認
• テストの分離 ◦ テスト⽤のモックが本番コードに漏れない
まだまだ課題もある 公式のドキュメントには以下のような問題があるようです • bundle install が失敗する可能性がある • require 'active_support' が失敗することがある
• root namespace での名前空間検出が誤動作することがある • パフォーマンスが悪化する可能性がある
04 まとめ
まとめ 1 Ruby4.0ではRuby::BoxというNameSpaceの機能がリリースされる 2 3 既存のライブラリのバージョンや名前、グローバルな値の衝突を防ぐこと ができる まだ課題はあるが、うまく活用すれば保守性が上がりそう
参考文献 公式ドキュメント: https://docs.ruby-lang.org/en/master/box_md.html 実装者のtagomoris⽒のブログ: https://tagomoris.hatenablog.com/entry/2023/05/15/174652 PullRequest: https://github.com/ruby/ruby/pull/13226
ご清聴ありがとうございました