2023年度Rubyアソシエーション開発助成金成果報告

2023年度に採択されたプロジェクトの応募者による最終報告書及びメンターによる報告書を掲載致します。

Namespace on read

プロジェクト概要

Rubyに、通常のグローバルな階層化名前空間をもつモジュール等のライブラリを、読み込み時に規定した仮想的なトップレベル名前空間に読み込む機能を追加することを目的としてパッチ開発を行う。
この名前空間に読み込まれたライブラリはグローバルな名前空間とは独立した存在となるため、名前衝突の回避、共有されたモジュール・クラスの操作・変更に関する競合の回避、ならびに将来的にはアプリケーションが依存するライブラリ間でのバージョン競合の回避の実現を可能にすると期待している。

応募者名

田籠 聡 (tagomoris)

最終報告書

最終報告書

メンター報告書

メンター報告書

socketライブラリへのHappy Eyeballs Version 2 (RFC8305)の導入

プロジェクト概要

Rubyのsocketライブラリにおいて、リモートサーバと接続したクライアントソケットを返すメソッドが用意されている。これらには、以下の二つの課題がある。
(1) アドレス解決の段階において: DNSサーバに対してアドレスファミリごとに同期的に問い合わせを行い、すべてのアドレスが解決できるまで動作を停止する
(2) 接続試行の段階において: IPアドレスが宛先ホストに接続しようとして時間がかかっている間、プログラムが停止し、他の解決済みIPアドレスで接続試行できない
RFC8305ではこうした課題について、(1)に対してはアドレスファミリごとのDNSクエリ送信を非同期的に行うこと、 (2)に対しては解決済みのIPアドレスを利用して順次接続試行を行うことによって解消し、より良い接続性を担保するHappy Eyeballs Version2アルゴリズムを規定している。
このプロジェクトでは、RubyのsocketライブラリにHappy Eyeballs Version 2を導入することにより、上記の課題の解決を目指す。

応募者名

塩井 美咲

最終報告書

最終報告書

メンター報告書

メンター報告書

Ruby のパフォーマンスプロファイリングの改善

プロジェクト概要

このプロジェクトでは、Rubyプログラムのプロファイラを新たに開発する。パフォーマンスの高いプログラムを記述するにあたって計測は非常に重要であり、ここでプロファイラは大きな役割を果たす。
より実用的な分析の一助となるよう、すぐれたビジュアライズ機能をもち、プロファイル対象となるプログラムや Rubyインタプリタとの統合を通して、より詳細な情報を出力できるプロファイラを実装することを目指す。
あわせて、実装に関する知見の構築・公開や、既存のプロファイラの改善活動にも取り組む。

応募者名

有友 大輔 (osyoyu)

最終報告書

最終報告書

メンター報告書

メンター報告書

Ruby Playground for CRuby Developer

プロジェクト概要

プログラミング言語開発におけるディスカッションでは、実際に処理系を動かして実験する場面が多い。特に新しい構文やメソッドの提案などでは、実装を動かすことでエッジケースや新たな視点が得られることがある。一方で提案段階の実装を動かすためには、手元で変更を適用したビルドを作るといった一手間が発生する。
本プロジェクトはRuby開発者向けの手軽なプレイグラウンドを用意することで、Ruby開発における議論を活性化させることを目的とする。

応募者名

齋藤 優太

最終報告書

最終報告書

メンター報告書

メンター報告書

CRuby 用 Processing Gem の、本家 Processing との互換性向上に向けた取り組み

プロジェクト概要

クリエイティブコーディングの世界では Processing や p5.js のようなフレームワークが広く利用されています。
これらを利用することで、グラフィックスと視覚的な表現を駆使したアートやインタラクティブなアプリケーションを簡単に作成することができます。

このプロジェクトではその Processing/p5.js の API と互換性のある CRuby 向けの Processing Gem をゼロから開発しており、現在 Processing の主要な機能の約7割から8割を実装済みとしています。
本取り組みは、その残りの未実装となっている機能を開発し、Ruby プログラマーが広く知られた Processing API を使用してグラフィックスプログラミングを行えるよう支援するものです。

応募者名

tokujiros

最終報告書

最終報告書

メンター報告書

メンター報告書