Ruby Box - Ruby 4.0の新実験的機能。ボックスの検出と決定の技術的課題。
Ruby 4.0で検討されているBoxing機能は、値型と参照型の統一的な扱いをもたらす実験的な試みです。ジェネリック型システムの基盤となり、メモリ効率とパフォーマンスのバランスを取ります。Cの構造体のようにスタックに配置できながら、Rubyのオブジェクト指向モデルとの互換性を保つ必要があります。この話では、Boxの検出アルゴリズムと最適化の意思決定プロセスについて掘り下げます。
- Value型とReference型の統一的な扱い方とその設計課題
- メモリレイアウトと最適化の判断基準
- Ruby 4.0のジェネリック実装に向けた基盤
PicoRubyベースのブラウザフレームワーク。フルスタックRuby。
PicoRubyはmrubyの軽量化版で、WebAssemblyにコンパイルしてブラウザで実行できます。Funicular は PicoRuby.WASM をベースにした Web フレームワークで、バックエンドもフロントエンドも Ruby で書けるフルスタック環境を提供します。従来の JavaScript フレームワークと異なり、Ruby の柔軟性をクライアント側でも活用でき、開発効率が大幅に向上します。ブラウザ内での Ruby 実行は数 MB のバイナリサイズで実現されます。
- PicoRuby.WASM によるフロントエンド開発の可能性
- フルスタック Ruby アプリケーションの構築方法
- ブラウザ環境での Ruby ランタイムの制約と最適化
テスト影響度分析エンジン。Datadog gem。年間15万時間のCI時間節約。
大規模プロジェクトでは、コード変更時にすべてのテストを実行するのは非常に時間がかかります。テスト影響度分析は、変更したコードに関連するテストのみを実行する技術です。Datadog Ruby gem は、実行時の動的解析を用いて、どのテストがどのコード部分に依存しているかをマッピングします。これにより、CI時間を大幅に削減でき、開発サイクルが高速化されます。
- 動的テスト依存関係グラフの構築と管理
- CI時間削減による開発効率の向上
- スケーラブルなテスト影響度分析の実装
dateライブラリのpure Ruby再実装への挑戦。
Ruby の date ライブラリは伝統的に C 拡張として実装されていますが、この話は pure Ruby による再実装を目指した取り組みです。暦の計算は複雑で、うるう年や月の日数、タイムゾーン変換などを正確に扱う必要があります。pure Ruby 実装によって、保守性と移植性が向上し、Ruby 処理系間での一貫性も実現できます。
- 暦計算ロジックの pure Ruby での実装戦略
- C 拡張から pure Ruby への移行による利点
- パフォーマンスと保守性のトレードオフ
PSLR(1)パーサー。Lramaでの実装。レキサーハックからの解放。
Ruby のパーサーは従来、複雑な文法規則をレキサー(字句解析器)内のハック的な処理で補補していました。PSLR(1) は Practical Scannerless LR(1) パーサーで、スキャナーレス設計により、パーサーとレキサーの相互作用を排除します。Lrama は Ruby の LR パーサージェネレータで、この複雑な文法をより宣言的に表現できます。レキサーハックからの脱却は、パーサーの保守性と拡張性を大幅に向上させます。
- PSLR(1)パーサーの設計思想とスキャナーレスアプローチ
- レキサーハックが引き起こしていた問題の具体例
- Lrama による新しいパーサー実装の利点
Ractor-Local GC。M:Nスレッディング。AIエージェントフレームワーク。
Ractor は Ruby 3.0 で導入された並列実行の仕組みで、各 Ractor は独立した GC(ガベージコレクション)を持つことができます。Ractor-Local GC により、複数の Ractor が同時に GC を実行でき、グローバルロック(GVL)の競合が減ります。M:N スレッディングモデルでは、複数のユーザースレッドが少数の OS スレッド上でスケジュールされ、軽量な並列実行が可能になります。AI エージェントフレームワークでは、数百万のエージェントを効率的に管理する必要があり、この技術が重要です。
- Ractor-Local GC の設計と実装
- M:N スレッディングモデルとスケジューリング
- AI エージェント管理での並列化の活用
test-unitのポータブルな並列テスト実行。Windows対応。
test-unit は Ruby の標準的なテストフレームワークで、単体テストの実行を支援します。複数のテストを並列実行することで、CI 時間を大幅に短縮できます。ただし、Windows と Unix/Linux でプロセス管理の方法が異なるため、ポータブルな実装は困難です。この話では、両プラットフォームで効率的に動作する並列テストランナーの設計と実装について説明します。
- テスト並列化の実装手法とプラットフォーム間の違い
- Windows と Unix での fork/spawn の使い分け
- テスト間の依存関係とリソース競合の管理
AI時代のRuboCop。MCPサーバー統合。
RuboCop は Ruby コードの品質チェックと自動修正を行う強力なリンティングツールです。Model Context Protocol (MCP) はクロード等の AI モデルが外部ツールと連携するためのプロトコルです。RuboCop を MCP サーバーとして統合することで、AI が開発中のコードを自動的にチェックし、改善提案を行えます。これは開発効率の大幅な向上と品質の統一的な維持をもたらします。
- MCP プロトコルの基本と AI ツール統合
- RuboCop 検査結果の構造化と AI への提示方法
- 自動修正と AI 提案のワークフロー
CRuby内蔵プロファイラー。外部プロファイリングの限界突破。
プロファイリングは Ruby アプリケーションのパフォーマンス瓶頸を特定するための重要な技術です。従来のプロファイラーは外部ツール(stackprof など)として実装されており、測定オーバーヘッドや GVL 挙動の複雑さにより、正確な計測が難しい場合があります。ext/profile は CRuby に組み込まれたネイティブプロファイラーで、VM 内部の深い情報にアクセスでき、より正確な性能測定が実現されます。
- 外部プロファイラーの限界と測定誤差の原因
- VM 内部情報を活用した正確なプロファイリング
- GVL が測定結果に与える影響とその補正
MRubyCS - pure C#によるmruby VM。Unity/ゲームスクリプティング。
mruby は C で実装された軽量 Ruby VM で、組み込み用途に使用されます。MRubyCS は mruby を C# で完全に再実装したプロジェクトで、Unity などの C# ベースのゲームエンジンで Ruby スクリプトを実行できます。C# の豊富なエコシステムとの相互運用性により、ゲーム開発の生産性が向上し、Ruby の柔軟な記述性を活用できます。
- mruby VM アーキテクチャの理解と C# での再実装
- C# ↔ Ruby 間の相互運用性の設計
- ゲーム開発でのスクリプト言語活用の実践例
優先度スケジューラー。I/Oバウンドスレッドの応答性改善。
Ruby 3.0 で導入されたファイバー(Fiber)ベースのスケジューラーは、非同期 I/O をより効率的に扱えます。スケジューラーが複数のタスク間の CPU 時間配分を制御し、I/O 待機中は他のタスクが実行されます。優先度ベースのスケジューリングにより、重要なタスクを優先でき、システム全体の応答性が向上します。
- ファイバーとスケジューラーの基本概念
- 優先度ベーススケジューリングの実装
- I/O 効率と CPU 使用率のバランス
Z80プロセッサ上のmruby VM実装。8ビットの世界。
Zilog Z80 は 1970 年代に開発された 8 ビットプロセッサで、レトロコンピュータや教育機器で今も使用されています。メモリは数 KB ~ MB 程度と極めて限定的です。mruby を Z80 上で実行するには、メモリ効率とパフォーマンスの最適化が必須です。この実装は、古いハードウェアでも動作するスクリプト言語環境を実現します。
- 8 ビットプロセッサの制約とプログラミングの工夫
- mruby VM の最小化と最適化戦略
- レガシーハードウェアの活用と教育的価値
Fastlyの新アプローチ。帯域幅推定の初期動作改善。Rubyでの分析。
インターネット接続の初期段階で利用可能な帯域幅を正確に推定することは、適応的ビットレート制御に重要です。Fastly は CDN サービスプロバイダーで、ユーザーへのコンテンツ配信を最適化しています。Ruby は、ネットワーク挙動の分析やアルゴリズム検証に用いられ、高速な帯域幅推定アルゴリズムの開発に寄与します。
- 初期帯域幅推定アルゴリズムの課題
- ネットワーク測定データの解析と処理
- Ruby による実験と検証のワークフロー
パーサーが直面する根本的問題。演算子の優先順位。
プログラミング言語のパーサーは、演算子の優先順位と結合性を正確に扱う必要があります。Ruby では複雑な演算子が多く、新しい演算子の追加や既存の優先順位ルールの維持は困難です。この話では、パーサー設計における演算子の扱い方の根本的な問題と、言語デザインの観点からの解決策について探ります。
- 演算子の優先順位と結合性の定義
- パーサーの複雑性と拡張性のトレードオフ
- 言語デザインの決定が与える長期的影響
strudel-rb。Rubyでアルゴリズミック音楽のライブコーディング。
ライブコーディングは、パフォーマンス中にコードをリアルタイムで編集・実行する表現手法です。strudel は Tidal Cycles からインスパイアされた Web ベースの音楽プログラミング環境で、strudel-rb はそれを Ruby で実装したものです。REPL インタラクションとシーケンサー連携により、即興音楽制作が可能になります。
- ライブコーディングの特性と実装課題
- 音声シーケンシングと REPL の統合
- リアルタイム性の確保とパフォーマンス最適化
マイコン用OS。複数PicoRuby VMの並行実行。Family mruby OS。
PicoRuby はマイコン(マイクロコントローラー)用の軽量 Ruby 実装です。複数の PicoRuby VM を同時実行するマルチタスクオペレーティングシステムとして機能し、複数のタスクが独立して実行されます。Family mruby OS は、このアーキテクチャを採用した実験的 OS で、IoT デバイスの複雑な処理を Ruby で記述できます。
- 複数 VM の並行実行とスケジューリング
- マイコン環境でのメモリ管理とリソース制御
- マルチタスク OS のための言語設計
ZJIT設計と実装。定数畳み込み、値番号付け、エスケープ解析。
YJIT は Shopify が開発した Ruby の JIT コンパイラで、Ruby 3.1 以降に統合されています。ZJIT はその後継で、より高度な最適化パスを導入しています。定数畳み込み(constant folding)では、実行時に定数式を計算します。値番号付け(value numbering)は、同じ値を持つ式を識別し、重複計算を排除します。エスケープ解析は、オブジェクトがスタックに留まるかヒープに逃げるかを判定し、メモリ配置を最適化します。
- JIT コンパイルの最適化パスの体系
- 定数畳み込み、値番号付けの実装戦略
- エスケープ解析とメモリ効率化
ブラウザ内インタラクティブRubyチュートリアル。Ruby Association Grant 2025。
gem ドキュメントは従来、静的な HTML で提供されていました。TutorialKit.rb は WebAssembly で Ruby コードをブラウザで直接実行でき、ドキュメント内のコード例をインタラクティブに試せます。Ruby Association Grant 2025 で支援され、gem 利用者の学習効率を大幅に向上させます。
- WebAssembly による Ruby ランタイムのブラウザ実行
- ドキュメント内コード実行の実装
- ユーザー体験向上とエラーハンドリング
「CRubyのぼうけんのしょ」。CRubyソースコード読解ガイド。
CRuby(Matz の Ruby)のソースコードを読むことは、Ruby 言語と実装の深い理解をもたらします。ただし、数十万行の C コードは初心者にとって圧倒的です。この話は、ソースコード読解への実践的なガイドで、どこから始め、どう進めるかを体系的に説明します。
- CRuby ソースコード構成の理解
- 効率的な読解戦略と重要な部分の特定
- 深い理解へのステップアップ
BigDecimal/BigMath。任意精度計算の改善。
Ruby の BigDecimal は任意精度の10進数型で、金融計算や科学計算で精度が重要な場合に使用されます。浮動小数点数(Float)では誤差が蓄積しますが、BigDecimal は精度を保証します。BigMath は三角関数や対数などの数学関数を BigDecimal で計算するモジュールです。パフォーマンスと精度のトレードオフを考慮した改善について説明されます。
- 固定小数点演算と浮動小数点演算の違い
- BigDecimal の内部表現と演算効率
- 任意精度数学ライブラリの最適化
Bundler 4のパフォーマンス改善。bundle installの高速化。
Bundler は Ruby のパッケージマネージャーで、Gemfile に指定した gem の依存関係を解決・インストールします。大規模プロジェクトでは `bundle install` に数分かかることもあり、開発効率の低下につながります。Bundler 4 では、依存関係解決アルゴリズムやキャッシング戦略を改善し、インストール時間を大幅に短縮しています。
- 依存関係解決アルゴリズムの改善
- ネットワークアクセスとキャッシングの最適化
- 並列ダウンロードとローカルストレージ活用
$20のmrubyシングルボードコンピュータ。ディスプレイ・キーボード付き。
手頃な価格のシングルボードコンピュータ(Raspberry Pi など)と小型ディスプレイ、キーボードを組み合わせることで、デスクトップのような使い勝手を持つ mruby 開発環境が実現されます。コスト効率と実用性を兼ね備え、教育や組み込み開発に最適です。この環境では、Ruby コードの作成・実行・デバッグをすべてそのデバイス上で行えます。
- シングルボードコンピュータの選定と統合
- mruby IDE としてのカスタマイズ
- リソース制約下での UX 設計
多様な Ruby トピックの 5 分スピーチ
ライトニングトークは、複数の発表者が 5 分程度の短時間で Ruby 関連のトピックについてプレゼンテーションする形式です。小さなアイデア、ツール、経験共有など、多様なコンテンツが迅速に提供されます。参加者は様々な視点から Ruby エコシステムを学べます。
- 多様な Ruby コミュニティの知見を一度に体験
- 自分の経験やアイデア発表の練習機会
- 短時間で複数のテーマをカバー
JRuby 10.1。Ruby 4互換。JVM上のRuby。
JRuby は Java Virtual Machine (JVM) 上で動作する Ruby 実装で、2006 年の初版から約 20 年の歴史を持ちます。Java のエコシステム(ライブラリ、フレームワーク)と Ruby の柔軟性を組み合わせることで、強力な開発環境を提供します。JRuby 10.1 は Ruby 4 との互換性を追求し、モダンな Ruby 機能をサポートしています。
- JRuby の歴史とアーキテクチャの進化
- Ruby 4 互換性の実装課題
- Java エコシステムとの相互運用性
ASTro - AST最適化フレームワーク。C生成。
Ruby のコンパイルパイプラインは、ソースコード → 字句解析 → 構文解析 → AST(抽象構文木) → バイトコード → VM 実行という流れです。ASTro はこのパイプラインで AST をより効率的に最適化するフレームワークです。最適化されたバイトコードを生成し、さらに C コード生成も行うことで、パフォーマンスが向上します。
- AST 最適化の種類と効果
- C コード生成による高速化戦略
- コンパイルパイプラインの設計と実装
Method-Ray gem。型注釈なしのNoMethodError防止。Rust実装。
Ruby はダックタイピングに基づいており、型注釈がない動的言語です。NoMethodError は、存在しないメソッドを呼び出そうとした時に発生する実行時エラーです。Method-Ray gem は、Rust で実装された高速メソッド存在チェック機構で、事前に呼び出し可能性を検証し、エラーを予防できます。型システムを導入しなくても、堅牢性が向上します。
- ダックタイピングの利点と課題
- メソッド存在チェックの実装戦略
- Rust による性能向上
Cygwin環境でのRubyパッケージメンテナンス。
Cygwin は Windows 上で UNIX/Linux 互換環境を提供するツールセットです。Ruby を Cygwin で実行するには、Windows と UNIX の差異を吸収する必要があります。ファイルパス、プロセス管理、ソケット操作など、多くの詳細について互換性を保つことは継続的な課題です。この話では、Cygwin Ruby パッケージのメンテナンス経験と工夫について共有されます。
- Windows/UNIX 互換性の課題と解決策
- Cygwin 環境特有のバグ対応
- 多プラットフォーム対応の運用知見
MMTk統合。Moving Immix。モジュラーGC。
ガベージコレクション(GC)はメモリ管理の中核で、Ruby のパフォーマンスに大きな影響を与えます。MMTk(Memory Management Toolkit)は、メモリ管理アルゴリズムをモジュール化し、再利用可能な形で提供するプロジェクトです。Moving Immix は、移動可能なオブジェクトヒープを持つ GC アルゴリズムで、メモリの断片化を削減し、効率を向上させます。
- 世代別 GC と動作原理
- MMTk フレームワークの利点
- Moving Immix アルゴリズムの実装と評価
mruby/edge - Pure RustのmrubyVM。Wasmバイナリ400KiB以下。エッジコンピューティング。
エッジコンピューティングは、クラウドの代わりにネットワークの端端(エッジ)でデータ処理を行う形態です。帯域幅とレイテンシーの削減が重要です。mruby/edge は、Rust で pure に実装された mruby VM で、WebAssembly にコンパイルすると 400KB 以下のバイナリサイズに収まり、エッジデバイスで実行できます。
- Pure Rust 実装の利点と課題
- バイナリサイズ最適化戦略
- エッジコンピューティングでの Ruby の活用
DJコントローラーをHIDとして活用。Ruby実装。
DJ コントローラーは音楽製作機器で、複数のフェーダー、ボタン、ノブを備えています。これらを Human Interface Device (HID) として認識し、Ruby でプログラム制御することで、ユニークなインタラクティブプログラミング環境を構築できます。単なるビブコーディング(雰囲気でのコーディング)ではなく、実用的な入出力インタフェースとして活用します。
- HID(Human Interface Device)の制御
- Ruby での USB デバイス通信
- パフォーマンスと実用性を兼ねたシステム設計
require-hooks gem。require/load呼び出しのインターセプト。
Ruby の `require` と `load` は、外部ファイルのコードを実行する基本的なメカニズムです。require-hooks gem を使うことで、これらの呼び出しをインターセプト(仲介)し、読み込む前後に処理を挿入できます。これにより、コード変換、モニタリング、セキュリティチェックなどが可能になり、Ruby の拡張性が大幅に向上します。
- require/load フック の実装メカニズム
- コード変換とメタプログラミングの活用
- パフォーマンスとセキュリティのバランス
Shopify BF2025。Falcon。2300万RPM。async Ruby。
ブラックフライデーは e コマース業界最大級のセールイベントで、通常の 10 倍以上のアクセス数が発生します。Falcon は高性能な非同期 HTTP サーバーで、Ruby で実装されながら、Node.js や Go と同等のパフォーマンスを発揮します。非同期 I/O と効率的なスケジューリングにより、限られたリソースで膨大なリクエストを処理できます。
- 非同期 Ruby プログラミングの実装
- 高スループットサーバーの設計と最適化
- 大規模負荷試験とスケーリング戦略
Ruby/WASMブラウザシンセサイザー。純正律。Web Audio API。
純正律は、周波数の単純な整数比に基づく音階で、よりクリアで自然な音をもたらします。Ruby/WASM をブラウザで実行し、Web Audio API と連携することで、ブラウザ内で直接 Ruby でシンセサイザーを実装できます。音響プログラミングと Web 技術の融合により、インタラクティブな音響体験が実現されます。
- 純正律の数学的基礎と音響特性
- Web Audio API との連携
- Ruby での実時間音響処理
FFI高速化。C拡張に匹敵するパフォーマンス。
FFI(Foreign Function Interface)は、Ruby から C ライブラリ関数を呼び出すための仕組みです。従来は C 拡張より遅いと見なされていましたが、最新の最適化により、C 拡張と同等のパフォーマンスが実現されました。型情報の活用やコンパイル時最適化が鍵となります。
- FFI の内部実装とボトルネック
- 型情報を活用した最適化
- C 拡張との性能比較
RBSパーサーの5倍性能退行の修正。C実装改善。
RBS(Ruby Signature)は Ruby の型注釈言語で、`.rbs` ファイルにメソッドシグネチャを記述します。RBS パーサーが 5 倍遅くなっていた問題が発見され、C 実装の改善により解決されました。パーサーの性能は IDE の応答性に直結するため、この改善は開発体験の大幅な向上につながります。
- パーサーの性能解析とボトルネック特定
- C 実装での最適化テクニック
- IDE 統合での性能の重要性
PicoRuby上のMQTTクライアント。メモリ制約下のネットワークプロトコル。
MQTT(Message Queuing Telemetry Transport)は、IoT デバイス向けの軽量なメッセージングプロトコルです。PicoRuby で MQTT クライアントを実装すると、マイコン上で直接クラウド連携ができます。メモリ制約下での効率的な実装が重要なポイントです。
- MQTT プロトコルの仕様と実装
- メモリ効率とネットワーク効率のバランス
- マイコンからクラウドへの通信
Ruby 4.0でSetがコアクラスに。RTypedDataのメモリ使用量削減。
Ruby では Set クラスは従来 stdlib に含まれていましたが、Ruby 4.0 でコアクラスに昇格します。コアクラス化により、更にパフォーマンスが重要になります。RTypedData を使用したメモリ効率の改善が実現されました。
- Set 実装とハッシュテーブルの設計
- RTypedData の活用
- コアクラスのメモリ効率最適化
Doom(1993)のRuby移植。BSPレンダラー。gem install doom。
Doom(1993)は伝説的な FPS ゲームで、その革新的な 3D グラフィックス技術(BSP ツリー)は今も学習価値があります。Ruby への移植は、言語の表現力と性能の可能性を示します。gem として配布される実験的プロジェクトです。
- BSP(Binary Space Partition)ツリーの仕組み
- 3D グラフィックス処理の最適化
- 大規模ゲームロジックの Ruby 実装
JSからRubyライブラリ呼び出し。Node.js/ブラウザ対応。
ruby.wasm により、Ruby コードをブラウザとサーバー(Node.js)両方で実行できます。Ruby ライブラリを Ruby として書き、JavaScript から直接呼び出すことで、フルスタック JavaScript/Ruby 開発が可能になります。
- ruby.wasm のバイディング機構
- JavaScript ↔ Ruby 間の相互運用性
- フルスタック development の新アプローチ
Karafka。Ractorプール。70%スループット向上。
Karafka は Ruby での Kafka コンシューマー実装フレームワークで、高スループットの分散メッセージングを扱います。Ractor を使用したスレッド調整パターンにより、並列処理の効率が向上し、スループットが 70% 改善されました。
- Ractor を使った並列メッセージ処理
- スレッドプーリングの設計パターン
- Kafka との統合と大規模データ処理
Ruby↔C++ツールチェーン。Rice, ffi-clang, ruby-bindgen。PyTorch/OpenCVバインディング。
Ruby から高性能な C++ ライブラリ(PyTorch、OpenCV など)を活用するには、効率的なバインディングが必要です。Rice は Ruby-C++ 相互運用を簡素化し、ffi-clang と ruby-bindgen は自動バインディング生成を支援します。これにより、機械学習やコンピュータビジョン処理が Ruby で手軽に実行できます。
- Ruby ↔ C++ バインディングの仕組み
- Rice ライブラリの活用
- 自動バインディング生成ツール
rrtrace。3D可視化(時間×スレッド×コールスタック)。GVL切替・GCの可視化。
rrtrace は Ruby の実行状況を 3 次元でリアルタイム可視化するツールです。時間軸、スレッド、コールスタック の 3 次元で、GVL スイッチと GC の影響を明確に表示します。パフォーマンス解析とボトルネック特定が直感的に可能になります。
- 3D トレース可視化の技術
- GVL とスレッド管理の理解
- GC による停止時間の測定と最適化
TypeProfでOptcarrot解析。実践的ワークフロー。
TypeProf は Ruby コードの型を自動的に推論するツールです。Optcarrot は Pac-Man クローンで Ruby パフォーマンス測定のベンチマークです。TypeProf で Optcarrot を解析することで、動的言語での型推論の課題と実践的なワークフローが明らかになります。
- 静的型推論の仕組みと限界
- 動的言語での型情報の活用
- 実践的なワークフロー設計
ZJITの副作用解析。文の最適化・並べ替え・削除。
ZJIT の最適化パスで重要なのは、副作用解析(side-effect analysis)です。メモリ読み書き、メソッド呼び出しなどの副作用を追跡し、安全に文を最適化・並べ替え・削除できるかを判定します。正確な副作用解析により、JIT コンパイラの最適化が安全かつ有効になります。
- 副作用解析の仕組み
- コンパイラ最適化の安全性確保
- 文の再配置と削除の判定
形式仕様からプロパティベーステスト生成。
形式仕様は、プログラムの動作を数学的に記述するものです。プロパティベーステストは、仕様の性質(property)を検証するテストです。形式仕様からプロパティベーステストを自動生成することで、テスト開発の効率と品質が大幅に向上します。
- 形式仕様の書き方と活用
- プロパティベーステストの設計
- 自動テスト生成の実装
RDoc→GFM移行。RBS統合。LLM対応ドキュメント。
Ruby のドキュメントツール RDoc は、Markdown(GFM)への移行を進めています。RBS(型シグネチャ)の統合により、型情報を含むドキュメントが自動生成されます。さらに LLM(大規模言語モデル)が活用しやすい構造化ドキュメント形式も検討されています。
- RDoc から GFM への移行
- RBS による型情報の統合
- LLM 友好的なドキュメント構造
monoruby(Rust実装Ruby)。JIT不変条件と脱最適化。
monoruby は Rust で実装された Ruby インタプリタで、JIT コンパイルと不変条件(invariant)の管理が重要です。JIT が生成するコードは、特定の仮定(クラス定義の不変性など)の下で最適化されています。仮定が破られた時は脱最適化(deoptimization)してインタプリタに戻ります。
- JIT 不変条件の種類と管理
- 脱最適化の仕組みと性能への影響
- Rust での実装における安全性
PRKキーボードファームウェアとR2P2の統合。
PRK Firmware は Ruby で書ける自作キーボードファームウェアで、マイコン上で直接 Ruby コードを実行できます。R2P2 は Raspberry Pi Pico 向けの PicoRuby 実装です。これらを統合することで、キーボード設定を Ruby で簡潔に記述できます。
- PRK Firmware のアーキテクチャ
- マイコン上の Ruby スクリプティング
- HID デバイスの実装
Ruby言語コミッターとのパネルディスカッション。
Ruby 言語の開発は、コア開発者たちの協力により進められています。このパネルでは、コミッターが Ruby の過去、現在、未来について語り、コミュニティからの質問に応答します。Ruby のビジョン、技術的課題、コミュニティへの期待などが議論されます。
- Ruby 開発の現状と課題
- Ruby 4.0 以降のロードマップ
- コミュニティとの関わり方
Ruby 4.0のopen_timeout。HEv2の影響。長年のバグ修正。
ソケットタイムアウトは、ネットワーク接続時のタイムアウト設定です。Ruby 4.0 で `open_timeout` の挙動が改善され、HEv2(Event.io)の影響も考慮されました。長年の懸案だったバグが修正され、ネットワーク処理の信頼性が向上します。
- ソケットタイムアウトの仕組みと課題
- HEv2 の影響と対応
- プラットフォーム間の互換性確保
LLMエージェントでRubyパフォーマンス改善。MCP活用。
大規模言語モデル(LLM)は、Ruby コードのパフォーマンス問題を自動的に分析・提案できます。Model Context Protocol (MCP) を活用することで、LLM がプロファイリングツール、コンパイラ、デバッガーなどの外部ツールにアクセスできます。これにより、自動的なパフォーマンス最適化が可能になります。
- LLM を使ったコード解析と提案
- MCP による ツール連携
- 自動最適化と人的介入のバランス
mruby/cマルチコア対応。Mutex、コア間タスク切替。
mruby/c はマイコン向けの軽量 Ruby VM で、マルチコアプロセッサの活用は新しい課題です。複数コア間でのタスク実行、相互排除ロック(Mutex)、メモリ同期などを効率的に実装することで、マイコンの並列処理能力を活用できます。
- マルチコア上でのタスクスケジューリング
- Mutex と同期プリミティブの実装
- メモリ一貫性の確保
ライトバリア検証GC。メモリ破損バグの動的検出。
ライトバリア(write barrier)は GC が新しいオブジェクト参照を検出するメカニズムです。ライトバリア検証 GC は、ライトバリアが正しく機能しているかを検証し、メモリ破損バグを動的に検出します。デバッグやテストに有用です。
- ライトバリアの仕組み
- GC 正確性の検証方法
- メモリバグの検出と診断
TracePointでメタプログラミングの動的解析。DSLのためのDSL。
TracePoint は Ruby のメタプログラミング機構で、メソッド定義、クラス定義などのイベントを監視できます。DSL(Domain Specific Language)の実装時に TracePoint を使用することで、DSL 自体が生成するコードを動的に解析・変換できます。これにより、より高度な DSL 設計が可能になります。
- TracePoint の活用と性能影響
- メタプログラミングの動的解析
- DSL 設計での高度なパターン
Pure Ruby Apache Arrow実装。Ruby Association Grant 2025。
Apache Arrow はカラム型データフォーマットで、高速なデータ処理を実現します。Pure Ruby での Apache Arrow 実装により、C 拡張に依存せず、Ruby のみで Arrow ファイルを読み書きできます。Ruby Association Grant 2025 により支援されています。
- Apache Arrow フォーマットの理解
- カラム型データ構造の実装
- Pure Ruby での高性能データ処理
Onigmo APIの公開。JIT対応Regexpエンジン。
Onigmo は Ruby が使用する正規表現エンジンで、複雑な文法を高速に処理します。Onigmo API の公開により、Ruby コミュニティが API を直接利用できるようになります。JIT コンパイラとの連携により、さらに高速化が実現されます。
- Onigmo エンジンの仕組み
- 正規表現の JIT コンパイル
- API の公開と活用
datadog gem近代化。Ruby 4時代のC API。
Ruby 2 時代に書かれた C 拡張を Ruby 4 で動作させるには、API の変更に対応する必要があります。Datadog Ruby gem は大規模な C 拡張で、GVL、メモリ管理、新しい API を活用した現代化を実現しています。
- Ruby 2 から 4 への API 変更
- GVL 対応の現代化
- C 拡張のメンテナンス戦略
Smalruby 3。Scratchブロック↔Rubyの双方向変換。
Smalruby は Ruby 学習向けのビジュアルプログラミング環境で、Scratch ブロックと Ruby コードを双方向で変換できます。Smalruby 3 では、この相互変換がより堅牢になり、初心者が Ruby への移行をスムーズに行えます。
- ビジュアルプログラミングと text コードの相互変換
- 初心者向け学習環境の設計
- プログラミング概念の段階的理解
自動化リリース。Sigstore。サプライチェーンセキュリティ。
Ruby のリリースプロセスが自動化され、Sigstore による暗号署名でセキュリティが強化されています。サプライチェーン全体のセキュリティを考慮し、Ruby ライブラリの信頼性を確保します。
- 自動化リリースのワークフロー
- Sigstore によるコード署名
- サプライチェーン攻撃への防御
Herb::Engine。構造認識型ERBレンダリング。差分更新。
Herb::Engine は HTML 構造を認識した ERB(Embedded Ruby)テンプレートエンジンで、差分更新により効率的なレンダリングを実現します。Web フレームワークのパフォーマンスを大幅に向上させます。
- HTML 構造の認識と解析
- 差分検出アルゴリズム
- リアクティブレンダリング
nesruby - NES上のRubyインタプリタ。The Ruby Catcher。
NES(Nintendo Entertainment System)は 1983 年のゲーム機で、8 ビット CPU、数 KB のメモリを搭載しています。nesruby はこの極めて限定的な環境で Ruby インタプリタを実行します。技術的な挑戦であると同時に、Ruby の軽量性と柔軟性を示すプロジェクトです。
- 8 ビット NES での Ruby 実行
- 極限でのメモリ最適化
- レトロコンピューティングと Ruby
Hash並列化。新しいロック機構。GVLより安全。
Ruby の Hash は内部ロックなしで非スレッドセーフです。新しいロック機構により、複数スレッド間での安全なアクセスが実現され、GVL より精密な制御が可能になります。
- Hash の並列化とロック機構
- GVL との比較
- スレッドセーフ性と性能のバランス
Rubydex。RubyLSP/Tapiocaで10倍高速化。
Rubydex は Ruby コード索引プロジェクトで、RubyLSP(言語サーバープロトコル)と Tapioca(RBS 生成ツール)の性能を 10 倍改善します。高速なコード検索と解析により、IDE の応答性が大幅に向上します。
- 全文索引とコード解析の最適化
- RubyLSP の性能改善
- IDE 統合での利点
ESP32上PicoRuby。WiFi/MQTT/TLS。AWS IoT Core接続。
ESP32 はマイコンで、WiFi とスレッドをサポートしています。PicoRuby 上で MQTT(メッセージング)と TLS(暗号化通信)を実装することで、AWS IoT Core などのクラウドサービスへの接続が実現されます。
- ESP32 での WiFi と通信
- MQTT クライアント実装
- TLS による安全な通信
ZJITのLightweight Frames。メソッドインライニング。YJIT→ZJIT移行。
ZJIT は Lightweight Frames テクニックにより、メソッド呼び出しオーバーヘッドを削減します。メソッドインライニングにより、呼び出し自体を排除できます。YJIT からの移行により、さらに高速化が実現されます。
- Lightweight Frames の仕組み
- メソッドインライニング
- JIT コンパイラの世代交代
Rubyバイトコード直接記述によるホットパス最適化。
Ruby のバイトコード仕様を理解し、直接バイトコードを記述することで、パフォーマンスクリティカルなホットパスを最適化できます。Ruby の柔軟性を活用した低レベル最適化です。
- Ruby バイトコード形式の理解
- ホットパス最適化の手法
- パフォーマンスとメンテナンス性のバランス
type-guessr。ダックタイピングの逆推論。LSPアドオン。
Ruby はダックタイピング言語ですが、使用パターンから型を逆推論することで、IDE の補完精度を向上させられます。type-guessr はこのヒューリスティック型推論を実装し、RubyLSP アドオンとして提供されます。
- ダックタイピングからの型推論
- ヒューリスティック手法
- IDE 補完の精度向上
Ruby創始者による閉幕基調講演。
Yukihiro 'Matz' Matsumoto は Ruby 言語の創始者で、RubyKaigi の最終日にはかならずキーノート講演を行います。Ruby の過去、現在、未来について、言語設計の哲学を交えて語られます。Ruby コミュニティにとって最も重要なスピーチです。
- Ruby 言語の設計哲学
- Ruby の現状と成果
- Ruby 4.0 以降への期待